setup.py
changeset 41851 ed35057421ae
parent 41850 d80d48928eb1
child 41852 db3098d02a6d
--- a/setup.py	Sun Mar 03 10:31:23 2019 -0800
+++ b/setup.py	Sun Mar 03 15:46:26 2019 -0800
@@ -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,