[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