r405 - in branches/rewrite: . src

Otavio Salvador partial-mirror-devel@lists.alioth.debian.org
Mon, 13 Dec 2004 08:51:10 -0700


Author: otavio
Date: Mon Dec 13 08:51:10 2004
New Revision: 405

Modified:
   branches/rewrite/   (props changed)
   branches/rewrite/src/Config.py
   branches/rewrite/src/PackageList.py
Log:
 r559@nurf:  otavio | 2004-12-13T15:44:51.353196Z
 Add include-from and exclude-from filter support. This can be used for debian-cd tasks too.


Modified: branches/rewrite/src/Config.py
==============================================================================
--- branches/rewrite/src/Config.py	(original)
+++ branches/rewrite/src/Config.py	Mon Dec 13 08:51:10 2004
@@ -17,6 +17,7 @@
 # $Id$
 
 import logging
+import os.path
 import ConfigParser
 import sys
 
@@ -67,7 +68,9 @@
     _allowed_in_filter_field = [
         'subsection',
         'priority',
-        'name'
+        'name',
+        'include-from',
+        'exclude-from'
         ]
     _name = ""
 
@@ -104,6 +107,11 @@
                     if key not in self._allowed_in_filter_field:
                         logging.debug("[%s] is not a filter field (found in option [%s] in section [%s])." % (key, option, self.section))
                         raise InvalidOption(self.section, option)
+                    if key in ('include-from', 'exclude-from'):
+                        if not os.path.exists(val):
+                            logging.debug("[%s] doesn't exists (found in option [%s] in section [%s])." % (val, option, self.section))
+                            print("Fatal error: [%s] doesn't exists. Check your [%s] option in [%s] section." % (val, option, self.section))
+                            sys.exit(1)
                     ret[key] = val
                 return ret
         else:
@@ -194,8 +202,6 @@
         'get_provides',
         'get_sources',
         'get_packages',
-	'include_from_task',
-	'exclude_from_task',
 	'resolve_deps_using',
         ]
 

Modified: branches/rewrite/src/PackageList.py
==============================================================================
--- branches/rewrite/src/PackageList.py	(original)
+++ branches/rewrite/src/PackageList.py	Mon Dec 13 08:51:10 2004
@@ -17,6 +17,7 @@
 # $Id$
 
 import re
+import os
 import apt_pkg
 
 class PackageAlreadyExists(Exception):
@@ -159,6 +160,24 @@
         packages = PackageList()
         
         for (item, value) in condition.items():
+            # Handle tasks files
+            if item in ("include-from", "exclude-from"):
+                print "Processing task (%s): %s" % (item, value)
+                # FIXME: Need handle by arch
+                raw = os.popen("cpp -I %s -DARCH_i386 %s | grep -v \'^$\|^#.*$\' | tr \'\n\' \' \'"
+                               % (os.path.dirname(value), value), 'r' ).readlines()[0].split()
+
+                for p in raw:
+                    pkg = self._name.get(p, None)
+                    if item == 'include-from':
+                        if pkg and pkg['Package'] not in packages: packages.add(pkg)
+                    else:
+                        if pkg['Package'] in packages: packages.remove(pkg)
+                
+                # Process new item
+                continue
+            
+            # Handle catalog
             if item == "subsection":
                 d = self._subsection
             elif item == "priority":