[cig-commits] r5245 - in cs/merlin/branches/v1: merlin/command merlin.egg-info

leif at geodynamics.org leif at geodynamics.org
Fri Nov 10 19:24:19 PST 2006


Author: leif
Date: 2006-11-10 19:24:18 -0800 (Fri, 10 Nov 2006)
New Revision: 5245

Added:
   cs/merlin/branches/v1/merlin/command/egg_flags.py
Modified:
   cs/merlin/branches/v1/merlin.egg-info/SOURCES.txt
   cs/merlin/branches/v1/merlin.egg-info/entry_points.txt
   cs/merlin/branches/v1/merlin/command/__init__.py
Log:
Added 'egg_flags' command to replace the Autoconf macro
CIT_PYTHON_EGG_FLAGS.  This may only be temporary, however:
I'm considering turning the Pythia egg into a ZIP file egg,
which would require extracting its header files in the build
directory instead.


Modified: cs/merlin/branches/v1/merlin/command/__init__.py
===================================================================
--- cs/merlin/branches/v1/merlin/command/__init__.py	2006-11-11 03:16:36 UTC (rev 5244)
+++ cs/merlin/branches/v1/merlin/command/__init__.py	2006-11-11 03:24:18 UTC (rev 5245)
@@ -3,7 +3,7 @@
     'easy_install', 'egg_info', 'install', 'install_lib', 'rotate', 'saveopts',
     'sdist', 'setopt', 'test', 'upload', 'install_egg_info', 'install_scripts',
     'register',
-    'install_deps', 'sdist_egg',
+    'install_deps', 'sdist_egg', 'egg_flags',
 ]
 
 import sys

Added: cs/merlin/branches/v1/merlin/command/egg_flags.py
===================================================================
--- cs/merlin/branches/v1/merlin/command/egg_flags.py	2006-11-11 03:16:36 UTC (rev 5244)
+++ cs/merlin/branches/v1/merlin/command/egg_flags.py	2006-11-11 03:24:18 UTC (rev 5245)
@@ -0,0 +1,88 @@
+
+
+from merlin import Command
+#from merlin.command.easy_install import easy_install
+
+
+class egg_flags(Command):
+
+    """Command to get egg-related build flags."""
+
+    description = "pring egg-related build flags"
+
+    user_options = [
+    ]
+
+
+    def initialize_options(self): pass
+
+
+    def finalize_options(self):
+        import os
+        from merlin import Distribution, PathMetadata, normalize_path
+
+        ei = self.get_finalized_command("egg_info")
+        if ei.broken_egg_info:
+            raise DistutilsError(
+            "Please rename %r to %r before using 'egg_flags'"
+            % (ei.egg_info, ei.broken_egg_info)
+            )
+        self.args = [ei.egg_name]       
+        #easy_install.finalize_options(self)
+        self.egg_base = ei.egg_base
+        self.egg_path = os.path.abspath(ei.egg_base)
+        # Make a distribution for the package's source
+        self.dist = Distribution(
+            normalize_path(self.egg_path),
+            PathMetadata(self.egg_path, os.path.abspath(ei.egg_info)),
+            project_name = ei.egg_name
+        )
+
+
+    def run(self):
+
+        from merlin import WorkingSet
+
+        import sys
+        from ConfigParser import ConfigParser, NoOptionError
+        from StringIO import StringIO
+
+        flags = dict(
+            CFLAGS = [],
+            CPPFLAGS = [],
+            LDFLAGS = [],
+            )
+
+        requirements = [self.dist.as_requirement()]
+        working_set = WorkingSet()
+
+        deps = working_set.resolve(requirements)
+        deps.reverse()
+        dependencies = []
+        processed = {}
+        for dist in deps:
+            if dist in processed:
+                continue
+            dependencies.insert(0, dist)
+            processed[dist] = True
+        for dist in dependencies:
+            if dist.has_metadata('config.cfg'):
+                parser = ConfigParser({'location': dist.location})
+                config = dist.get_metadata('config.cfg')
+                fp = StringIO(config)
+                parser.readfp(fp, 'config.cfg')
+                for k,v in flags.iteritems():
+                    try:
+                        v.append(parser.get('flags', k))
+                    except NoOptionError:
+                        pass
+
+        stream = open("egg-flags.sh", "w")
+        for k,v in flags.iteritems():
+            print >> stream, 'PYTHON_EGG_%s="%s"' % (k, ' '.join(v))
+        stream.close()
+
+        return
+
+
+# end of file

Modified: cs/merlin/branches/v1/merlin.egg-info/SOURCES.txt
===================================================================
--- cs/merlin/branches/v1/merlin.egg-info/SOURCES.txt	2006-11-11 03:16:36 UTC (rev 5244)
+++ cs/merlin/branches/v1/merlin.egg-info/SOURCES.txt	2006-11-11 03:24:18 UTC (rev 5245)
@@ -40,6 +40,7 @@
 merlin/command/develop.py
 merlin/command/easy_install.py
 merlin/command/egg_info.py
+merlin/command/flags.py
 merlin/command/install.py
 merlin/command/install_deps.py
 merlin/command/install_egg_info.py

Modified: cs/merlin/branches/v1/merlin.egg-info/entry_points.txt
===================================================================
--- cs/merlin/branches/v1/merlin.egg-info/entry_points.txt	2006-11-11 03:16:36 UTC (rev 5244)
+++ cs/merlin/branches/v1/merlin.egg-info/entry_points.txt	2006-11-11 03:24:18 UTC (rev 5245)
@@ -28,26 +28,27 @@
 
 [merlin.distutils.commands]
 bdist_rpm = merlin.command.bdist_rpm:bdist_rpm
+saveopts = merlin.command.saveopts:saveopts
+sdist = merlin.command.sdist:sdist
+sdist_egg = merlin.command.sdist_egg:sdist_egg
+build_ext = merlin.command.build_ext:build_ext
+develop = merlin.command.develop:develop
+build_py = merlin.command.build_py:build_py
+test = merlin.command.test:test
+install_scripts = merlin.command.install_scripts:install_scripts
+setopt = merlin.command.setopt:setopt
+egg_flags = merlin.command.egg_flags:egg_flags
+install_egg_info = merlin.command.install_egg_info:install_egg_info
 install_deps = merlin.command.install_deps:install_deps
 rotate = merlin.command.rotate:rotate
-develop = merlin.command.develop:develop
-setopt = merlin.command.setopt:setopt
-build_py = merlin.command.build_py:build_py
-saveopts = merlin.command.saveopts:saveopts
 egg_info = merlin.command.egg_info:egg_info
 register = merlin.command.register:register
 upload = merlin.command.upload:upload
-install_egg_info = merlin.command.install_egg_info:install_egg_info
 alias = merlin.command.alias:alias
 easy_install = merlin.command.easy_install:easy_install
-install_scripts = merlin.command.install_scripts:install_scripts
-sdist_egg = merlin.command.sdist_egg:sdist_egg
 bdist_egg = merlin.command.bdist_egg:bdist_egg
 install = merlin.command.install:install
-test = merlin.command.test:test
 install_lib = merlin.command.install_lib:install_lib
-build_ext = merlin.command.build_ext:build_ext
-sdist = merlin.command.sdist:sdist
 
 [console_scripts]
 merlin = merlin:main



More information about the cig-commits mailing list