setuptools patch

James Mills prologic at shortcircuit.net.au
Sat Oct 27 08:28:33 UTC 2007


On Fri, Oct 26, 2007 at 09:48:47AM -0700, Bryan O'Sullivan wrote:
> I'm sorry, but this remains unacceptable.
>
> I applied the patch and tried a build and install in the same way as before 
> the patch was applied, and now I have the following in my path:
>
> /usr/lib64/python2.5/site-packages/mercurial-b654e57741d8-py2.5-linux-x86_64.egg
>
> Now I have to find some .pth file somewhere and manually edit it to get rid 
> of the reference to this.  I'm somewhat annoyed that you ignored my 
> previous requests to ensure that this wasn't the default behaviour.

I'm sorry. Would the following be acceptable ?

<patch>
# HG changeset patch
# User James Mills
# Date 1193473612 -36000
# Node ID ee6d54ad5d07768cb33dd9df39a70d26ace2a0ef
# Parent  3b204881f95927d1522484e67dbd9f947c46ba29
[mq]: setuptools.patch

diff --git a/.hgignore b/.hgignore
--- a/.hgignore
+++ b/.hgignore
@@ -16,6 +16,7 @@ build
 build
 contrib/hgsh/hgsh
 dist
+mercurial.egg-info
 doc/*.[0-9]
 doc/*.[0-9].gendoc.txt
 doc/*.[0-9].{x,ht}ml
diff --git a/setup_extended.py b/setup_extended.py
new file mode 100644
--- /dev/null
+++ b/setup_extended.py
@@ -0,0 +1,97 @@
+#!/usr/bin/env python
+#
+# This is the mercurial setup script.
+#
+# 'python setup.py install', or
+# 'python setup.py --help' for more options
+
+import sys
+if not hasattr(sys, 'version_info') or sys.version_info < (2, 3, 0, 'final'):
+    raise SystemExit, "Mercurial requires python 2.3 or later."
+
+import os
+
+extra = {}
+
+try:
+	from setuptools import setup, Extension
+	extra["entry_points"] = """
+[console_scripts]
+hg = mercurial.dispatch:run
+"""
+except ImportError:
+	from distutils.core import setup, Extension
+
+from distutils.command.install_data import install_data
+
+import mercurial.version
+
+
+# py2exe needs to be installed to work
+try:
+    import py2exe
+
+    # Help py2exe to find win32com.shell
+    try:
+        import modulefinder
+        import win32com
+        for p in win32com.__path__[1:]: # Take the path to win32comext
+            modulefinder.AddPackagePath("win32com", p)
+        pn = "win32com.shell"
+        __import__(pn)
+        m = sys.modules[pn]
+        for p in m.__path__[1:]:
+            modulefinder.AddPackagePath(pn, p)
+    except ImportError:
+        pass
+
+    extra['console'] = ['hg']
+
+except ImportError:
+    pass
+
+# specify version string, otherwise 'hg identify' will be used:
+version = ''
+
+class install_package_data(install_data):
+    def finalize_options(self):
+        self.set_undefined_options('install',
+                                   ('install_lib', 'install_dir'))
+        install_data.finalize_options(self)
+
+mercurial.version.remember_version(version)
+cmdclass = {'install_data': install_package_data}
+
+ext_modules=[
+    Extension('mercurial.mpatch', ['mercurial/mpatch.c']),
+    Extension('mercurial.bdiff', ['mercurial/bdiff.c']),
+    Extension('mercurial.base85', ['mercurial/base85.c']),
+    Extension('mercurial.diffhelpers', ['mercurial/diffhelpers.c'])
+    ]
+
+try:
+    import posix
+    ext_modules.append(Extension('mercurial.osutil', ['mercurial/osutil.c']))
+except ImportError:
+    pass
+
+setup(name='mercurial',
+      version=mercurial.version.get_version(),
+      author='Matt Mackall',
+      author_email='mpm at selenic.com',
+      url='http://selenic.com/mercurial',
+      description='Scalable distributed SCM',
+      license='GNU GPL',
+      packages=['mercurial', 'mercurial.hgweb', 'hgext', 'hgext.convert'],
+      ext_modules=ext_modules,
+      data_files=[(os.path.join('mercurial', root),
+                   [os.path.join(root, file_) for file_ in files])
+                  for root, dirs, files in os.walk('templates')],
+      cmdclass=cmdclass,
+      scripts=['hg', 'hgmerge'],
+      options=dict(py2exe=dict(packages=['hgext']),
+                   bdist_mpkg=dict(zipdist=True,
+                                   license='COPYING',
+                                   readme='contrib/macosx/Readme.html',
+                                   welcome='contrib/macosx/Welcome.html')),
+      **extra)
</patch>

cheers
James

-- 
--
-"Problems are Solved by Method"
-
- James Mills <prologic at shortcircuit.net.au>
- HomePage: http://shortcircuit.net.au/~prologic/
- IRC: irc://shortcircuit.net.au#se

Please avoid sending me Word or PowerPoint attachments.
See http://www.gnu.org/philosophy/no-word-attachments.html



More information about the Mercurial-devel mailing list