[X2Go-Commits] pyhoca-gui.git - build-59a18b6e3b5d3f1dd8f07f26433d37fe5984a57d (branch) updated: 0.4.0.1-6-geea34d1

X2Go dev team git-admin at x2go.org
Tue Aug 27 13:22:59 CEST 2013


The branch, build-59a18b6e3b5d3f1dd8f07f26433d37fe5984a57d has been updated
       via  eea34d1e7db596e3ed69f9c9965d6b7f52deba93 (commit)
      from  fecb8d6798efb1b1c4c6ad693bd1b5dfb2bb73a2 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 debian/changelog |    1 +
 setup.py         |  148 +++++++++++++++++++++++++++++++++++++++++++++---------
 2 files changed, 125 insertions(+), 24 deletions(-)

The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index a0cfec1..78a607d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -4,6 +4,7 @@ pyhoca-gui (0.4.0.2-0~x2go1) UNRELEASED; urgency=low
     - Make PyHoca-GUI aware of the Cinnamon desktop shell.
     - Make sure that there is no KeyException when checking/unchecking the
       restoreexports item in the shared folders menu.
+    - MS Windows: use bbfreeze to freeze the Win32 version of PyHoca-GUI.
 
  -- Mike Gabriel <mike.gabriel at das-netzwerkteam.de>  Wed, 13 Feb 2013 12:51:24 +0100
 
diff --git a/setup.py b/setup.py
index eabb468..01b0e24 100755
--- a/setup.py
+++ b/setup.py
@@ -35,12 +35,23 @@ URL = 'http://www.x2go.org'
 LIBRARY_ZIP = r"lib\shardlib.zip"
 
 from setuptools import setup, find_packages
-from distutils.core import setup
+from distutils.core import setup, Command
 import platform
 
+base = None
+executables = []
 if platform.system() == 'Windows':
+    default_win32exe_freezer = 'bbfreeze'
     NSIS_COMPILE = os.path.join(os.environ['ProgramFiles'], 'NSIS', 'makensis.exe')
-    from py2exe.build_exe import py2exe
+    if 'build_with_py2exe' in (sys.argv[1], 'build_with_{freezer}'.format(freezer=default_win32exe_freezer)):
+        from py2exe.build_exe import py2exe
+        Freezer = object
+    elif 'build_with_bbfreeze' in (sys.argv[1], 'build_with_{freezer}'.format(freezer=default_win32exe_freezer)):
+        from bbfreeze import Freezer
+        py2exe = object
+    else:
+        py2exe = object
+        Freezer = object
     import os, os.path
     import subprocess
     sys.path.append(os.path.normpath('../pyhoca-contrib/mswin/ms-vc-runtime'))
@@ -48,6 +59,7 @@ if platform.system() == 'Windows':
 elif platform.system() == 'Linux':
     from DistUtilsExtra.command import *
     py2exe = object
+    Freezer = object
 
 from glob import glob
 import shutil
@@ -108,27 +120,33 @@ class NSISScript(object):
             raise RuntimeError("NSIS compilation return code: %d" % retcode)
 
 
-class build_installer(py2exe):
+class build_installer(object):
 
-    # This class first builds the exe file(s), then creates an NSIS installer
-    # that runs your program from a temporary directory.
+    # This class first invokes building the the exe file(s) and then creates an NSIS
+    # installer
+    def __init__(self, dist_dir):
+        self.dist_dir = dist_dir
+
+    def do_build_exe(self):
+        # replace this method with the freezer's build_exe logic
+        pass
 
     def run(self):
 
+        # clean up dist_dir
         shutil.rmtree(self.dist_dir, ignore_errors=True)
+        # and recreate a clean one afterwards
+        os.makedirs(self.dist_dir)
 
-        # First, let py2exe do it's work.
-        py2exe.run(self)
-
-        lib_dir = self.lib_dir
-        dist_dir = self.dist_dir
+        # First, build the exe file
+        self.do_build_exe()
 
         # Create the installer, using the files py2exe has created.
         script = NSISScript(
                             PROGRAM_NAME,
                             PROGRAM_DESC,
                             PROGRAM_VERSION,
-                            dist_dir,
+                            self.dist_dir,
                             os.path.normpath(PROGRAM_ICON)
                            )
         print "*** creating the NSIS setup script***"
@@ -136,6 +154,75 @@ class build_installer(py2exe):
         print "*** compiling the NSIS setup script***"
         script.compile()
 
+
+class build_installer_py2exe(build_installer, py2exe):
+
+    def __init__(self, *args, **kwargs):
+        py2exe.__init__(self, *args, **kwargs)
+        build_installer.__init__(dist_dir=self.dist_dir)
+
+    def do_build_exe(self):
+
+        # First, let py2exe do it's work.
+        py2exe.run(self)
+
+class build_installer_bbfreeze(build_installer, Freezer, Command):
+
+    user_options = [
+        ('dist-dir=', 'd',
+         "directory to put final built distributions in (default is dist)"),
+
+        ("excludes=", 'e',
+         "comma-separated list of modules to exclude"),
+        ("includes=", 'i',
+         "comma-separated list of modules to include"),
+    ]
+
+    def __init__(self, *args, **kwargs):
+        Command.__init__(self, *args)
+        build_installer.__init__(self, dist_dir=self.dist_dir)
+
+    def initialize_options(self):
+        self.includes = []
+        self.excludes = []
+        self.packages = []
+        self.compressed = False
+        self.dist_dir = None
+
+    def finalize_options(self):
+        self.includes = fancy_split(self.includes)
+        self.excludes = fancy_split(self.excludes)
+        self.compressed = False
+        if self.dist_dir is None:
+            self.dist_dir = 'dist'
+        self.dist_dir = os.path.abspath(os.path.join(os.getcwd(), self.dist_dir))
+        if not os.path.exists(self.dist_dir):
+            os.makedirs(self.dist_dir)
+
+    def do_build_exe(self):
+        Freezer.__init__(self, self.dist_dir,
+            includes=self.includes,
+            excludes=self.excludes,
+        )
+        self.addScript("pyhoca-gui")
+        Freezer.__call__(self)
+        if self.distribution.has_data_files():
+            print "*** copy data files ***"
+            install_data = self.reinitialize_command('install_data')
+            install_data.install_dir = self.dist_dir
+            install_data.ensure_finalized()
+            install_data.run()
+
+def fancy_split(str, sep=","):
+    # a split which also strips whitespace from the items
+    # passing a list or tuple will return it unchanged
+    if str is None:
+        return []
+    if hasattr(str, "split"):
+        return [item.strip() for item in str.split(sep)]
+    return str
+
+
 if platform.system() == 'Windows':
 
     dll_data_files = [("Microsoft.VC90.CRT", glob(r'..\\pyhoca-contrib\\mswin\\ms-vc-runtime\\*.*'))]
@@ -159,9 +246,11 @@ if platform.system() == 'Windows':
 
     cmd_class.update(
         {
-            "build_exe": build_installer,
+            "build_with_py2exe": build_installer_py2exe,
+            "build_with_bbfreeze": build_installer_bbfreeze,
         }
     )
+    cmd_class.update({ 'build_exe': cmd_class['build_with_{freezer}'.format(freezer=default_win32exe_freezer)] })
 
 elif platform.system() == 'Linux':
     cmd_class.update(
@@ -187,6 +276,27 @@ elif platform.system() == 'Linux':
                       manpage_files
     )
 
+if platform.system() == 'Windows':
+    cmd_options={
+        'py2exe': {
+            'includes': ['greenlet', 'gevent.core', 'gevent.ares', 'gevent._semaphore', 'gevent._util', ],
+            'compressed': 1,
+            'optimize': 2,
+        },
+        'build_with_py2exe': {
+            'includes': ['greenlet', 'gevent.core', 'gevent.ares', 'gevent._semaphore', 'gevent._util', ],
+            'compressed': 1,
+            'optimize': 2,
+        },
+        'build_with_bbfreeze': {
+            'includes': ['greenlet', 'gevent.core', 'gevent.ares', 'gevent._semaphore', 'gevent._util', ],
+            'excludes': ['MSVCR90.dll', 'MSVCP90.dll', ],
+        }
+    }
+    cmd_options.update({ 'build_exe': cmd_options['build_with_{freezer}'.format(freezer=default_win32exe_freezer)] })
+else:
+    cmd_options={}
+
 setup(
     name = PROGRAM_NAME,
     version = PROGRAM_VERSION,
@@ -208,16 +318,6 @@ setup(
     ],
     data_files=data_files,
     zipfile = LIBRARY_ZIP,
-    options={
-        'py2exe': {
-            'includes': ['greenlet', 'gevent.core', ],
-            'compressed': 1,
-            'optimize': 2,
-        },
-        'build_exe': {
-            'includes': ['greenlet', 'gevent.core', ],
-            'compressed': 1,
-            'optimize': 2,
-        }
-    }
+    executables = executables,
+    options=cmd_options,
 )


hooks/post-receive
-- 
pyhoca-gui.git (Python X2Go Client (wxPython GUI))

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "pyhoca-gui.git" (Python X2Go Client (wxPython GUI)).




More information about the x2go-commits mailing list