Mercurial and Git clients can push and pull from this alias URL to interact with this repository. You can change to which repository an alias points by going to the Aliases link on the project page.
#!/usr/bin/env python## This is the mercurial setup script.## 'python setup.py install', or# 'python setup.py --help' for more optionsimportsysifnothasattr(sys,'version_info')orsys.version_info<(2,3,0,'final'):raiseSystemExit("Mercurial requires python 2.3 or later.")# Solaris Python packaging brain damagetry:importhashlibsha=hashlib.sha1()except:try:importshaexcept:raiseSystemExit("Couldn't import standard hashlib (incomplete Python install).")try:importzlibexcept:raiseSystemExit("Couldn't import standard zlib (incomplete Python install).")importos,timeimportshutilimporttempfilefromdistutils.coreimportsetup,Extensionfromdistutils.distimportDistributionfromdistutils.command.install_dataimportinstall_datafromdistutils.command.buildimportbuildfromdistutils.command.build_pyimportbuild_pyfromdistutils.spawnimportspawn,find_executablefromdistutils.ccompilerimportnew_compilerextra={}scripts=['hg']ifos.name=='nt':scripts.append('contrib/win32/hg.bat')# simplified version of distutils.ccompiler.CCompiler.has_function# that actually removes its temporary files.defhas_function(cc,funcname):tmpdir=tempfile.mkdtemp(prefix='hg-install-')devnull=oldstderr=Nonetry:try:fname=os.path.join(tmpdir,'funcname.c')f=open(fname,'w')f.write('int main(void) {\n')f.write(' %s();\n'%funcname)f.write('}\n')f.close()# Redirect stderr to /dev/null to hide any error messages# from the compiler.# This will have to be changed if we ever have to check# for a function on Windows.devnull=open('/dev/null','w')oldstderr=os.dup(sys.stderr.fileno())os.dup2(devnull.fileno(),sys.stderr.fileno())objects=cc.compile([fname])cc.link_executable(objects,os.path.join(tmpdir,"a.out"))except:returnFalsereturnTruefinally:ifoldstderrisnotNone:os.dup2(oldstderr,sys.stderr.fileno())ifdevnullisnotNone:devnull.close()shutil.rmtree(tmpdir)# py2exe needs to be installed to worktry:importpy2exe# Help py2exe to find win32com.shelltry:importmodulefinderimportwin32comforpinwin32com.__path__[1:]:# Take the path to win32comextmodulefinder.AddPackagePath("win32com",p)pn="win32com.shell"__import__(pn)m=sys.modules[pn]forpinm.__path__[1:]:modulefinder.AddPackagePath(pn,p)exceptImportError:passextra['console']=['hg','hgtk']exceptImportError:passtry:frommercurial.__version__importversionexceptImportError:version='unknown'classinstall_package_data(install_data):deffinalize_options(self):self.set_undefined_options('install',('install_lib','install_dir'))install_data.finalize_options(self)classbuild_mo(build):description="build translations (.mo files)"defrun(self):ifnotfind_executable('msgfmt'):self.warn("could not find msgfmt executable, no translations ""will be built")returnpodir='i18n'ifnotos.path.isdir(podir):self.warn("could not find %s/ directory"%podir)returnjoin=os.path.joinforpoinos.listdir(podir):ifnotpo.endswith('.po'):continuepofile=join(podir,po) modir = join('locale', po[:-3], 'LC_MESSAGES')
for mf in ('hg.mo', 'tortoisehg.mo'):
mofile = join(modir, mf)
- if not os.path.exist(mofile):
+ if not os.path.exists(mofile):
continue
cmd = ['msgfmt', '-v', '-o', mofile, pofile]
if sys.platform != 'sunos5':
# msgfmt on Solaris does not know about -ccmd.append('-c')self.mkpath(modir)self.make_file([pofile],mofile,spawn,(cmd,))self.distribution.data_files.append((join('mercurial',modir),[mofile]))build.sub_commands.append(('build_mo',None))Distribution.pure=0Distribution.global_options.append(('pure',None,"use pure (slow) Python ""code instead of C extensions"))classhg_build_py(build_py):deffinalize_options(self):build_py.finalize_options(self)ifself.distribution.pure:ifself.py_modulesisNone:self.py_modules=[]forextinself.distribution.ext_modules:ifext.name.startswith("mercurial."):self.py_modules.append("mercurial.pure.%s"%ext.name[10:])self.distribution.ext_modules=[]deffind_modules(self):modules=build_py.find_modules(self)formoduleinmodules:ifmodule[0]=="mercurial.pure":ifmodule[1]!="__init__":yield("mercurial",module[1],module[2])else:yieldmodulecmdclass={'install_data':install_package_data,'build_mo':build_mo,'build_py':hg_build_py}ext_modules=[Extension('mercurial.base85',['mercurial/base85.c']),Extension('mercurial.bdiff',['mercurial/bdiff.c']),Extension('mercurial.diffhelpers',['mercurial/diffhelpers.c']),Extension('mercurial.mpatch',['mercurial/mpatch.c']),Extension('mercurial.parsers',['mercurial/parsers.c']),]packages=['mercurial','mercurial.hgweb','hgext','hgext.convert','hgext.highlight','hgext.zeroconf','hggtk','thgutil']try:importmsvcrtext_modules.append(Extension('mercurial.osutil',['mercurial/osutil.c']))exceptImportError:passtry:importposixext_modules.append(Extension('mercurial.osutil',['mercurial/osutil.c']))ifsys.platform=='linux2'andos.uname()[2]>'2.6':# The inotify extension is only usable with Linux 2.6 kernels.# You also need a reasonably recent C library.cc=new_compiler()ifhas_function(cc,'inotify_add_watch'):ext_modules.append(Extension('hgext.inotify.linux._inotify',['hgext/inotify/linux/_inotify.c']))packages.extend(['hgext.inotify','hgext.inotify.linux'])exceptImportError:passdatafiles=[]forrootin('templates','i18n'):fordir,dirs,filesinos.walk(root):datafiles.append((os.path.join('mercurial',dir),[os.path.join(dir,file_)forfile_infiles]))setup(name='mercurial',version=version,author='Matt Mackall',author_email='mpm@selenic.com',url='http://selenic.com/mercurial',description='Scalable distributed SCM',license='GNU GPL',scripts=scripts,packages=packages,ext_modules=ext_modules,data_files=datafiles,cmdclass=cmdclass,options=dict(bdist_mpkg=dict(zipdist=True,license='COPYING',readme='contrib/macosx/Readme.html',welcome='contrib/macosx/Welcome.html')),**extra)
Attach a Trello Card
Add a tag
Your session has expired
You are no longer logged in. Please log in and try your request again.
Filter RSS Feed
This RSS feed URL allows you to see the contents of your current filter using any feed reader.
This link includes a special authentication token. If you share the URL with anyone else, they can see this RSS feed's activity. You can disable these tokens when needed.
Your current filter is unsaved; changing it won't affect this RSS feed.