aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2018-09-20 13:35:42 -0700
committerZac Medico <zmedico@gentoo.org>2018-09-22 01:23:14 -0700
commit4ff4e4200b984a88109b10de9e82b20451751aee (patch)
treee94950be36108e50ca30dbe58f2d540db6c814c2 /repoman/lib/repoman/actions.py
parentecompress: Run compression in parallel (diff)
downloadportage-4ff4e4200b984a88109b10de9e82b20451751aee.tar.gz
portage-4ff4e4200b984a88109b10de9e82b20451751aee.tar.bz2
portage-4ff4e4200b984a88109b10de9e82b20451751aee.zip
repoman: regen thick manifest after copyright update (bug 656698)
Bug: https://bugs.gentoo.org/656698
Diffstat (limited to 'repoman/lib/repoman/actions.py')
-rw-r--r--repoman/lib/repoman/actions.py40
1 files changed, 39 insertions, 1 deletions
diff --git a/repoman/lib/repoman/actions.py b/repoman/lib/repoman/actions.py
index 8e23322c8..9fe5f722e 100644
--- a/repoman/lib/repoman/actions.py
+++ b/repoman/lib/repoman/actions.py
@@ -151,10 +151,17 @@ the whole commit message to abort.
# Update copyright for new and changed files
year = time.strftime('%Y', time.gmtime())
+ updated_copyright = []
for fn in chain(mynew, mychanged):
if fn.endswith('.diff') or fn.endswith('.patch'):
continue
- update_copyright(fn, year, pretend=self.options.pretend)
+ if update_copyright(fn, year, pretend=self.options.pretend):
+ updated_copyright.append(fn)
+
+ if updated_copyright and not (
+ self.options.pretend or self.repo_settings.repo_config.thin_manifest):
+ for cp in sorted(self._vcs_files_to_cps(iter(updated_copyright))):
+ self._manifest_gen(cp)
myupdates, broken_changelog_manifests = self.changelogs(
myupdates, mymanifests, myremoved, mychanged, myautoadd,
@@ -230,6 +237,37 @@ the whole commit message to abort.
"\"If everyone were like you, I'd be out of business!\"\n")
return
+ def _vcs_files_to_cps(self, vcs_file_iter):
+ """
+ Iterate over the given modified file paths returned from the vcs,
+ and return a frozenset containing category/pn strings for each
+ modified package.
+
+ @param vcs_file_iter: file paths from vcs module
+ @type iter
+ @rtype: frozenset
+ @return: category/pn strings for each package.
+ """
+ return vcs_files_to_cps(
+ vcs_file_iter,
+ self.repo_settings.repodir,
+ self.scanner.repolevel,
+ self.scanner.reposplit,
+ self.scanner.categories)
+
+ def _manifest_gen(self, cp):
+ """
+ Generate manifest for a cp.
+
+ @param cp: category/pn string
+ @type str
+ @rtype: bool
+ @return: True if successful, False otherwise
+ """
+ self.repoman_settings["O"] = os.path.join(self.repo_settings.repodir, cp)
+ return not digestgen(
+ mysettings=self.repoman_settings,
+ myportdb=self.repo_settings.portdb)
def _suggest(self):
print()