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":