SVN: zpkgtools/trunk/zpkg allow enabling collection of dependencies from the configuration file

"Fred L. Drake, Jr." <[email protected]>
Newsgroups gmane.comp.web.zope.public-cvs
Message-ID <[email protected]>
Log message for revision 37746:
  allow enabling collection of dependencies from the configuration file

Changed:
  U   zpkgtools/trunk/zpkgsetup/package.py
  U   zpkgtools/trunk/zpkgsetup/setup.py
  U   zpkgtools/trunk/zpkgtools/app.py
  U   zpkgtools/trunk/zpkgtools/config.py
  U   zpkgtools/trunk/zpkgtools/tests/test_config.py

-=-
Modified: zpkgtools/trunk/zpkgsetup/package.py
===================================================================
--- zpkgtools/trunk/zpkgsetup/package.py	2005-08-05 19:54:01 UTC (rev 37745)
+++ zpkgtools/trunk/zpkgsetup/package.py	2005-08-05 20:39:09 UTC (rev 37746)
@@ -75,6 +75,17 @@
 PACKAGE_CONF = "SETUP.cfg"
 
 
+class Header(object):
+    """Information about a header file and the package that provides it."""
+
+    def __init__(self, package, path):
+        self.package = package
+        self.path = path
+
+    def __repr__(self):
+        return "<Header(%r, %r)>" % (self.package, self.path)
+
+
 def loadPackageInfo(pkgname, directory, reldir):
     """Load package information for a Python package.
 
@@ -93,6 +104,8 @@
     pkginfo = read_package_info(directory, reldir)
     pkginfo.extensions = [create_extension(ext, pkgname, reldir)
                           for ext in pkginfo.extension]
+    pkginfo.package_headers = [Header(pkgname, path)
+                               for path in pkginfo.header]
     return pkginfo
 
 

Modified: zpkgtools/trunk/zpkgsetup/setup.py
===================================================================
--- zpkgtools/trunk/zpkgsetup/setup.py	2005-08-05 19:54:01 UTC (rev 37745)
+++ zpkgtools/trunk/zpkgsetup/setup.py	2005-08-05 20:39:09 UTC (rev 37746)
@@ -66,6 +66,7 @@
         self.packages = []
         self.package_data = {}
         self.package_dir = {}
+        self.package_headers = []
         self.ext_modules = []
         self.scripts = []
         self.platforms = None
@@ -223,6 +224,7 @@
                 self.add_package_file(pkgname, posixpath.join(reldir, fn))
 
     def scan_basic(self, pkginfo):
+        self.package_headers.extend(pkginfo.package_headers)
         self.scripts.extend(pkginfo.script)
         if pkginfo.data_files:
             if self.data_files:

Modified: zpkgtools/trunk/zpkgtools/app.py
===================================================================
--- zpkgtools/trunk/zpkgtools/app.py	2005-08-05 19:54:01 UTC (rev 37745)
+++ zpkgtools/trunk/zpkgtools/app.py	2005-08-05 20:39:09 UTC (rev 37746)
@@ -78,6 +78,8 @@
             cf.loadPath(path)
         cf.finalize()
         self.locations = cf.locations
+        if cf.collect_dependencies:
+            self.options.collect = True
 
         # XXX Hack: This should be part of BuilderApplication
         if options.include_support_code is None:

Modified: zpkgtools/trunk/zpkgtools/config.py
===================================================================
--- zpkgtools/trunk/zpkgtools/config.py	2005-08-05 19:54:01 UTC (rev 37745)
+++ zpkgtools/trunk/zpkgtools/config.py	2005-08-05 20:39:09 UTC (rev 37746)
@@ -51,6 +51,7 @@
 SCHEMA = cfgparser.Schema(
     ({"resource-map": non_empty_string,
       "include-support-code": boolean,
+      "collect-dependencies": boolean,
       }, [], None),
     )
 
@@ -69,6 +70,7 @@
 
     def __init__(self):
         """Initialize a new `Configuration` object."""
+        self.collect_dependencies = False
         self.location_maps = []
         self.locations = locationmap.LocationMap()
         self.include_support_code = True
@@ -113,11 +115,18 @@
         for value in cf.resource_map:
             value = urlparse.urljoin(base, value)
             self.location_maps.append(value)
+        # include-support-code
         if len(cf.include_support_code) > 1:
             raise cfgparser.ConfigurationError(
                 "include-support-code can be specified at most once")
         if cf.include_support_code:
             self.include_support_code = cf.include_support_code[0]
+        # collect-dependencies
+        if len(cf.collect_dependencies) > 1:
+            raise cfgparser.ConfigurationError(
+                "include-support-code can be specified at most once")
+        if cf.collect_dependencies:
+            self.collect_dependencies = cf.collect_dependencies[0]
 
 
 def defaultConfigurationPath():

Modified: zpkgtools/trunk/zpkgtools/tests/test_config.py
===================================================================
--- zpkgtools/trunk/zpkgtools/tests/test_config.py	2005-08-05 19:54:01 UTC (rev 37745)
+++ zpkgtools/trunk/zpkgtools/tests/test_config.py	2005-08-05 20:39:09 UTC (rev 37746)
@@ -39,6 +39,7 @@
     def test_constructor(self):
         cf = config.Configuration()
         self.assert_(cf.include_support_code)
+        self.assert_(not cf.collect_dependencies)
         self.assertEqual(len(cf.locations), 0)
         self.assertEqual(len(cf.location_maps), 0)
 
@@ -60,6 +61,11 @@
         self.assertRaises(cfgparser.ConfigurationError,
                           self.load_text, "resource-map \n")
 
+        # collect-dependencies too many times
+        self.assertRaises(cfgparser.ConfigurationError,
+                          self.load_text, ("collect-dependencies false\n"
+                                           "collect-dependencies false\n"))
+
         # include-support-code too many times
         self.assertRaises(cfgparser.ConfigurationError,
                           self.load_text, ("include-support-code false\n"

_______________________________________________
Zope-CVS maillist  -  [email protected]
http://mail.zope.org/mailman/listinfo/zope-cvs

Zope CVS instructions: http://dev.zope.org/CVS
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.