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