From cd6ef521f930578763ae043a4bc43281bba3bf0e Mon Sep 17 00:00:00 2001 From: Brian Dolbec <dol...@gentoo.org> Date: Sat, 6 Dec 2014 14:54:36 -0800 Subject: [PATCH 2/2] portage/sync/controller.py: Make a per-repo postsync.d subdir
This then runs per-repo postsync hooks only on scripts in the per-repo subdir. This also maintains compatibility with existing scripts in the postsync.d dir or other sub-directories. --- pym/portage/sync/controller.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/pym/portage/sync/controller.py b/pym/portage/sync/controller.py index 21aa7a7..c9ae5b4 100644 --- a/pym/portage/sync/controller.py +++ b/pym/portage/sync/controller.py @@ -88,15 +88,15 @@ class SyncManager(object): self.module_controller = portage.sync.module_controller self.module_names = self.module_controller.module_names - postsync_dir = os.path.join(self.settings["PORTAGE_CONFIGROOT"], + self.postsync_dir = os.path.join(self.settings["PORTAGE_CONFIGROOT"], portage.USER_CONFIG_PATH, "postsync.d") - hooks = [] - for root, dirs, names in os.walk(postsync_dir, topdown=True): + hooks = {} + for root, dirs, names in os.walk(self.postsync_dir, topdown=True): #print("root:", root, "dirs:", dirs, "names:", names) for name in names: filepath = os.path.join(root, name) if os.access(filepath, os.X_OK): - hooks.append((filepath, name)) + hooks[filepath] = name else: writemsg_level(" %s postsync.d hook: '%s' is not executable\n" % (warn("*"), _unicode_decode(name),), level=logging.WARN, noiselevel=2) @@ -159,7 +159,11 @@ class SyncManager(object): def perform_post_sync_hook(self, reponame, dosyncuri='', repolocation=''): succeeded = os.EX_OK - for filepath, hook in self.hooks: + if reponame: + hooks = [(f,self.hooks[f]) for f in sorted(self.hooks) if 'per-repo' in f] + else: + hooks = [(f,self.hooks[f]) for f in sorted(self.hooks) if 'per-repo' not in f] + for filepath, hook in hooks: writemsg_level("Spawning post_sync hook: %s\n" % (_unicode_decode(hook)), level=logging.ERROR, noiselevel=4) -- 2.1.2 -- Brian Dolbec <dolsen>