commit:     4f2ad629e4802598878f5bc674462de23fcea51b
Author:     Slawek Lis <slis <AT> gentoo <DOT> org>
AuthorDate: Mon Mar 24 07:14:57 2014 +0000
Commit:     Slawek Lis <slis <AT> gentoo <DOT> org>
CommitDate: Mon Mar 24 07:14:57 2014 +0000
URL:        
http://git.overlays.gentoo.org/gitweb/?p=proj/gentoolkit.git;a=commit;h=4f2ad629

parsing revdep config refactor, added environment config read (as sugggested 
here: https://bugs.gentoo.org/show_bug.cgi?id=504654#c28)

---
 pym/gentoolkit/revdep_rebuild/settings.py | 33 ++++++++++++++++++++-----------
 1 file changed, 21 insertions(+), 12 deletions(-)

diff --git a/pym/gentoolkit/revdep_rebuild/settings.py 
b/pym/gentoolkit/revdep_rebuild/settings.py
index 057147c..7909aa6 100644
--- a/pym/gentoolkit/revdep_rebuild/settings.py
+++ b/pym/gentoolkit/revdep_rebuild/settings.py
@@ -130,13 +130,24 @@ def parse_options():
        return settings
 
 
+def _parse_dirs_to_set(dir_str):
+       '''Changes space-delimited directory list into set with them
+       '''
+       _ret = set()
+       for search in dir_str.split():
+               if search == '-*':
+                       break
+               _ret.update(glob.glob(search))
+       return _ret
+
+
 def parse_revdep_config(revdep_confdir):
        ''' Parses all files under and returns
                tuple of: (masked_dirs, masked_files, search_dirs)'''
 
-       search_dirs = set()
-       masked_dirs = set()
-       masked_files = set()
+       search_dirs = os.environ.get('SEARCH_DIRS', '')
+       masked_dirs = os.environ.get('SEARCH_DIRS_MASK', '')
+       masked_files = os.environ.get('LD_LIBRARY_MASK', '')
 
        for _file in os.listdir(revdep_confdir):
                for line in open(os.path.join(revdep_confdir, _file)):
@@ -145,22 +156,20 @@ def parse_revdep_config(revdep_confdir):
                        if not line.startswith('#'):
                                match = 
re.match('LD_LIBRARY_MASK=\\"([^"]+)\\"', line)
                                if match is not None:
-                                       masks = match.group(1).split(' ')
-                                       masked_files.update(masks)
+                                       masked_files += ' ' + match.group(1)
                                        continue
                                match = 
re.match('SEARCH_DIRS_MASK=\\"([^"]+)\\"', line)
                                if match is not None:
-                                       searches = match.group(1).split(' ')
-                                       for search in searches:
-                                               
masked_dirs.update(glob.glob(search))
+                                       masked_dirs += ' ' + match.group(1)
                                        continue
                                match = re.match('SEARCH_DIRS=\\"([^"]+)\\"', 
line)
                                if match is not None:
-                                       searches = match.group(1).split()
-                                       for search in searches:
-                                               
search_dirs.update(glob.glob(search))
+                                       search_dirs += ' ' + match.group(1)
                                        continue
 
-       print (masked_dirs, masked_files, search_dirs)
+       masked_files = set(masked_files.split(' '))
+       masked_dirs = _parse_dirs_to_set(masked_dirs)
+       search_dirs = _parse_dirs_to_set(search_dirs)
+
        return (masked_dirs, masked_files, search_dirs)
 

Reply via email to