Mercurial > hg > mercurial-crew-with-dirclash
view setup.py @ 4230:c93562fb12cc
Fix handling of paths when run outside the repo.
The main problem was that dirstate.getcwd() returned just "",
which was interpreted as "we're at the repo root". It now returns
an absolute path.
The util.pathto function was also changed to deal with the "cwd is
an absolute path" case.
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Fri, 16 Mar 2007 00:22:58 -0300 |
parents | c22251414b46 |
children | 79e5a6e7c451 |
line wrap: on
line source
#!/usr/bin/env python # # This is the mercurial setup script. # # './setup.py install', or # './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 from distutils.core import setup, Extension from distutils.command.install_data import install_data # mercurial.packagescan must be the first mercurial module imported import mercurial.packagescan 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 # Due to the use of demandload py2exe is not finding the modules. # packagescan.getmodules creates a list of modules included in # the mercurial package plus dependant modules. from py2exe.build_exe import py2exe as build_exe class py2exe_for_demandload(build_exe): """ overwrites the py2exe command class for getting the build directory and for setting the 'includes' option.""" def initialize_options(self): self.build_lib = None build_exe.initialize_options(self) def finalize_options(self): # Get the build directory, ie. where to search for modules. self.set_undefined_options('build', ('build_lib', 'build_lib')) # Sets the 'includes' option with the list of needed modules if not self.includes: self.includes = [] else: self.includes = self.includes.split(',') mercurial.packagescan.scan(self.build_lib, 'mercurial') mercurial.packagescan.scan(self.build_lib, 'mercurial.hgweb') mercurial.packagescan.scan(self.build_lib, 'hgext') self.includes += mercurial.packagescan.getmodules() build_exe.finalize_options(self) except ImportError: py2exe_for_demandload = None # 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} py2exe_opts = {} if py2exe_for_demandload is not None: cmdclass['py2exe'] = py2exe_for_demandload py2exe_opts['console'] = ['hg'] setup(name='mercurial', version=mercurial.version.get_version(), author='Matt Mackall', author_email='mpm@selenic.com', url='http://selenic.com/mercurial', description='Scalable distributed SCM', license='GNU GPL', packages=['mercurial', 'mercurial.hgweb', 'hgext'], ext_modules=[Extension('mercurial.mpatch', ['mercurial/mpatch.c']), Extension('mercurial.bdiff', ['mercurial/bdiff.c']), Extension('mercurial.base85', ['mercurial/base85.c'])], 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(bdist_mpkg=dict(zipdist=True, license='COPYING', readme='contrib/macosx/Readme.html', welcome='contrib/macosx/Welcome.html')), **py2exe_opts)