From 2866c2d4bba983cd34930b246bc32bf76d1d4100 Mon Sep 17 00:00:00 2001 From: pin Date: Wed, 26 May 2010 15:53:24 +0000 Subject: [PATCH] =?utf8?q?On=20commence=20=C3=A0=20mettre=20les=20donn?= =?utf8?q?=C3=A9es=20dans=20l'exe.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.cri.ensmp.fr/svn/minwii/trunk@193 fe552daf-6dbe-4428-90eb-1537e0879342 --- setup_win_exe.py | 71 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 60 insertions(+), 11 deletions(-) diff --git a/setup_win_exe.py b/setup_win_exe.py index 2a9b4e7..55050ab 100755 --- a/setup_win_exe.py +++ b/setup_win_exe.py @@ -26,16 +26,65 @@ def isSystemDLL(pathname): return origIsSystemDLL(pathname) py2exe.build_exe.isSystemDLL = isSystemDLL - -class pygame2exe(py2exe.build_exe.py2exe): #This hack make sure that pygame default font is copied: no need to modify code for specifying default font - def copy_extensions(self, extensions): - #Get pygame default font - pygamedir = os.path.split(pygame.base.__file__)[0] - pygame_default_font = os.path.join(pygamedir, pygame.font.get_default_font()) - - #Add font to list of extension to be copied - extensions.append(Module("pygame.font", pygame_default_font)) +def findPguThemesDir() : + import pgu.gui.theme + theme_file = pgu.gui.theme.__file__ + dnames = [] + dnames.append(os.path.join(os.path.dirname(theme_file),"..","..","data","themes")) + + #if the package is installed, and the package is installed + #in /usr/lib/python2.3/site-packages/pgu/ + #or c:\python23\lib\site-packages\pgu\ + #the data is in ... lib/../share/ ... + dnames.append(os.path.join(os.path.dirname(theme_file),"..","..","..","..","share","pgu","themes")) + dnames.append(os.path.join(os.path.dirname(theme_file),"..","..","..","..","..","share","pgu","themes")) + dnames.append(os.path.join(os.path.dirname(theme_file),"..","..","share","pgu","themes")) + for dname in dnames: + if os.path.isdir(dname): + return dname + raise IOError('pgu themes folder not found') + + +class MinWii2exe(py2exe.build_exe.py2exe) : + def copy_extensions(self, extensions) : py2exe.build_exe.py2exe.copy_extensions(self, extensions) + + self.copyDataFiles('src/minwii/fonts', 'minwii/fonts') + self.copyDataFiles('src/minwii/soundfonts', 'minwii/soundfonts') + self.copyDataFiles('src/minwii/widgets/data', 'minwii/widgets/data') + self.copyDataFiles(findPguThemesDir(), 'data/themes') + + def copyDataFiles(self, src, dest) : + src = src.replace('/', os.path.sep) + reldest = dest.replace('/', os.path.sep) + dest = os.path.join(self.collect_dir, reldest) + + if not os.path.exists(dest) : + self.mkpath(dest) + + for path, dirs, files in os.walk(src) : + if '.svn' in path : continue + relpath = path[len(src)+1:] + if not os.path.exists(os.path.join(dest, relpath)) : + self.mkpath(os.path.join(dest, relpath)) + + for file in files : + s = os.path.join(path, file) + d = os.path.join(dest, relpath, file) + self.copy_file(s, d) + print os.path.join(reldest, relpath, file) + self.compiled_files.append(os.path.join(reldest, relpath, file)) + + +#class pygame2exe(py2exe.build_exe.py2exe): #This hack make sure that pygame default font is copied: no need to modify code for specifying default font +# def copy_extensions(self, extensions): +# #Get pygame default font +# pygamedir = os.path.split(pygame.base.__file__)[0] +# pygame_default_font = os.path.join(pygamedir, pygame.font.get_default_font()) +# +# #Add font to list of extension to be copied +# extensions.append(Module("pygame.font", pygame_default_font)) +# py2exe.build_exe.py2exe.copy_extensions(self, extensions) class BuildExe: def __init__(self): @@ -98,7 +147,7 @@ class BuildExe: setup( - cmdclass = {'py2exe': pygame2exe}, + cmdclass = {'py2exe': MinWii2exe}, version = self.project_version, description = self.project_description, name = self.project_name, @@ -116,7 +165,7 @@ class BuildExe: console = [self.script], options = {'py2exe': {#'optimize': 2, 'bundle_files': 1, - #'compressed': True, + 'compressed': True, 'excludes': self.exclude_modules, 'packages': self.extra_modules, 'dll_excludes': self.exclude_dll} -- 2.20.1