[cig-commits] r5213 - in cs/merlin/trunk: . merlin merlin/command

leif at geodynamics.org leif at geodynamics.org
Wed Nov 8 19:10:06 PST 2006


Author: leif
Date: 2006-11-08 19:10:06 -0800 (Wed, 08 Nov 2006)
New Revision: 5213

Added:
   cs/merlin/trunk/merlin/distutils.cfg
Modified:
   cs/merlin/trunk/merlin/__init__.py
   cs/merlin/trunk/merlin/command/easy_install.py
   cs/merlin/trunk/merlin/dist.py
   cs/merlin/trunk/setup.py
Log:
Call addsitedir() in generated scripts so that users don't
have to monkey with PYTHONPATH.  This is implemented in a
quick-and-dirty fashion at present; it will probably have
to be extended to be recursive/transitive across the
dependency graph.

Install under HOME by default.  Isn't that what users want
99% of the time?  At least, I know that *I* almost never
install as 'root'.  (To heck with the Unix/sysadmin
mindset...)


Modified: cs/merlin/trunk/merlin/__init__.py
===================================================================
--- cs/merlin/trunk/merlin/__init__.py	2006-11-09 01:40:17 UTC (rev 5212)
+++ cs/merlin/trunk/merlin/__init__.py	2006-11-09 03:10:06 UTC (rev 5213)
@@ -39,8 +39,20 @@
         out = [item for item in out if not fnmatchcase(item,pat)]
     return out
 
+
 setup = distutils.core.setup
-    
+
+# NYI: Why wasn't this done instead?
+def xsetup(**attrs):
+    klass = attrs.get('distclass')
+    if klass:
+        del attrs['distclass']
+    else:
+        from dist import Distribution
+        klass = Distribution
+    return distutils.core.setup(**attrs)
+
+
 _Command = _get_unpatched(_Command)
 
 class Command(_Command):

Modified: cs/merlin/trunk/merlin/command/easy_install.py
===================================================================
--- cs/merlin/trunk/merlin/command/easy_install.py	2006-11-09 01:40:17 UTC (rev 5212)
+++ cs/merlin/trunk/merlin/command/easy_install.py	2006-11-09 03:10:06 UTC (rev 5213)
@@ -573,7 +573,7 @@
 
     def install_wrapper_scripts(self, dist):
         if not self.exclude_scripts:
-            for args in get_script_args(dist):
+            for args in get_script_args(dist, self.pth_file):
                 self.write_script(*args)
 
 
@@ -734,7 +734,7 @@
             f.close()
         script_dir = os.path.join(egg_info,'scripts')
         self.delete_blockers(   # delete entry-point scripts to avoid duping
-            [os.path.join(script_dir,args[0]) for args in get_script_args(dist)]
+            [os.path.join(script_dir,args[0]) for args in get_script_args(dist, self.pth_file)]
         )
         # Build .egg file from tmpdir
         bdist_egg.make_zipfile(
@@ -1481,15 +1481,22 @@
     return False    # Not any Python I can recognize
 
 
-def get_script_args(dist, executable=sys_executable):
+def get_script_args(dist, pth_file, executable=sys_executable):
     """Yield write_script() argument tuples for a distribution's entrypoints"""
     spec = str(dist.as_requirement())
     header = get_script_header("", executable)
+    maybeaddsitedir = ""
+    if pth_file:
+        sitedir = pth_file.basedir
+        maybeaddsitedir = ("import site\n"
+                           "site.addsitedir(%(sitedir)r)\n"
+                           % locals())
     for group in 'console_scripts', 'gui_scripts':
         for name,ep in dist.get_entry_map(group).items():
             script_text = (
                 "# EASY-INSTALL-ENTRY-SCRIPT: %(spec)r,%(group)r,%(name)r\n"
                 "__requires__ = %(spec)r\n"
+                "%(maybeaddsitedir)s"
                 "import sys\n"
                 "from merlin import load_entry_point\n"
                 "\n"

Modified: cs/merlin/trunk/merlin/dist.py
===================================================================
--- cs/merlin/trunk/merlin/dist.py	2006-11-09 01:40:17 UTC (rev 5212)
+++ cs/merlin/trunk/merlin/dist.py	2006-11-09 03:10:06 UTC (rev 5213)
@@ -9,6 +9,7 @@
 from distutils.errors import DistutilsSetupError
 import merlin, distutils.core, distutils.dist, distutils.cmd
 import os
+import sys
 
 def _get_unpatched(cls):
     """Protect against re-patching the distutils if reloaded
@@ -631,6 +632,23 @@
                 name = name[:-6]
             yield name
 
+
+    def find_config_files(self):
+
+        filenames = _Distribution.find_config_files(self)
+        
+        # Where to look for the merlin config file
+        merlin_dir = os.path.dirname(sys.modules['merlin'].__file__)
+
+        # Look for the system config file
+        merlin_file = os.path.join(merlin_dir, "distutils.cfg")
+        if os.path.isfile(merlin_file):
+            filenames.append(merlin_file)
+
+        return filenames
+
+
+
 # Install it throughout the distutils
 for module in distutils.dist, distutils.core, distutils.cmd:
     module.Distribution = Distribution

Added: cs/merlin/trunk/merlin/distutils.cfg
===================================================================
--- cs/merlin/trunk/merlin/distutils.cfg	2006-11-09 01:40:17 UTC (rev 5212)
+++ cs/merlin/trunk/merlin/distutils.cfg	2006-11-09 03:10:06 UTC (rev 5213)
@@ -0,0 +1,5 @@
+
+[install]
+install_lib = ~/.merlin/lib/python$py_version_short
+install_scripts = ~/bin
+

Modified: cs/merlin/trunk/setup.py
===================================================================
--- cs/merlin/trunk/setup.py	2006-11-09 01:40:17 UTC (rev 5212)
+++ cs/merlin/trunk/setup.py	2006-11-09 03:10:06 UTC (rev 5213)
@@ -35,7 +35,7 @@
     url = 'http://www.geodynamics.org/cig/software/packages/pythia/',
     test_suite = 'merlin.tests',
     packages = find_packages(),
-    package_data = {'merlin':['*.exe']},
+    package_data = {'merlin':['*.exe', '*.cfg']},
 
     py_modules = ['site'],
 



More information about the cig-commits mailing list