diff --git a/setup.py b/setup.py --- a/setup.py +++ b/setup.py @@ -1240,8 +1240,20 @@ extra = {} +py2exepackages = [ + 'hgdemandimport', + 'hgext', + 'email', + # implicitly imported per module policy + # (cffi wouldn't be used as a frozen exe) + 'mercurial.cext', + #'mercurial.cffi', + 'mercurial.pure', +] + if issetuptools: extra['python_requires'] = supportedpy + if py2exeloaded: extra['console'] = [ {'script':'hg', @@ -1252,6 +1264,34 @@ # put dlls in sub directory so that they won't pollute PATH extra['zipfile'] = 'lib/library.zip' + try: + import dulwich + dulwich.__version__ + py2exepackages.append('dulwich') + except ImportError: + pass + + try: + import keyring + keyring.util + py2exepackages.append('keyring') + except ImportError: + pass + + try: + import pygments + pygments.__version__ + py2exepackages.append('pygments') + except ImportError: + pass + + try: + import pywintypes + pywintypes.TRUE + py2exepackages.append('pywintypes') + except ImportError: + pass + if os.name == 'nt': # Windows binary file versions for exe/dll files must have the # form W.X.Y.Z, where W,X,Y,Z are numbers in the range 0..65535 @@ -1331,16 +1371,7 @@ distclass=hgdist, options={ 'py2exe': { - 'packages': [ - 'hgdemandimport', - 'hgext', - 'email', - # implicitly imported per module policy - # (cffi wouldn't be used as a frozen exe) - 'mercurial.cext', - #'mercurial.cffi', - 'mercurial.pure', - ], + 'packages': py2exepackages, }, 'bdist_mpkg': { 'zipdist': False,