You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(15) |
Oct
(31) |
Nov
(38) |
Dec
(21) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(46) |
Feb
(2) |
Mar
(10) |
Apr
(13) |
May
(2) |
Jun
(14) |
Jul
(28) |
Aug
(3) |
Sep
(7) |
Oct
(8) |
Nov
(8) |
Dec
(11) |
2005 |
Jan
|
Feb
|
Mar
|
Apr
(42) |
May
(1) |
Jun
(8) |
Jul
(4) |
Aug
(18) |
Sep
(38) |
Oct
(10) |
Nov
|
Dec
(7) |
2006 |
Jan
|
Feb
(8) |
Mar
(9) |
Apr
|
May
|
Jun
(6) |
Jul
(6) |
Aug
|
Sep
|
Oct
|
Nov
(12) |
Dec
(8) |
2007 |
Jan
(3) |
Feb
|
Mar
(9) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(5) |
Oct
|
Nov
|
Dec
|
2008 |
Jan
|
Feb
(4) |
Mar
(2) |
Apr
(17) |
May
(16) |
Jun
(2) |
Jul
|
Aug
(3) |
Sep
(1) |
Oct
|
Nov
(11) |
Dec
(1) |
2009 |
Jan
|
Feb
|
Mar
|
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2010 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
2012 |
Jan
(1) |
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(2) |
2013 |
Jan
(14) |
Feb
(14) |
Mar
|
Apr
|
May
(3) |
Jun
(10) |
Jul
(2) |
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(10) |
Jun
|
Jul
|
Aug
|
Sep
(9) |
Oct
(8) |
Nov
|
Dec
|
2017 |
Jan
(3) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(4) |
Sep
|
Oct
|
Nov
|
Dec
|
From: <th...@us...> - 2003-10-01 19:53:31
|
Update of /cvsroot/py2exe/py2exe/sandbox/samples In directory sc8-pr-cvs1:/tmp/cvs-serv29925 Added Files: test_wx.py setup.py hello.py MyService.py .cvsignore Log Message: Add samples. --- NEW FILE: test_wx.py --- import sys print "PATH", sys.path from wxPython.wx import * class MyApp(wxApp): def OnInit(self): frame = wxFrame(NULL, -1, "Hello from wxPython") frame.Show(true) self.SetTopWindow(frame) return true app = MyApp(0) app.MainLoop() --- NEW FILE: setup.py --- from distutils.core import setup import py2exe test_wx_console = dict( script = "test_wx.py", dest_base = "test_wx_console") setup( zipfile = "lib/shared.zip", service = ["MyService"], com_server = ["win32com.servers.interp"], console = ["hello.py", test_wx_console], windows = ["test_wx.py"] ) --- NEW FILE: hello.py --- import sys print sys.path, sys.executable print "Hello from py2exe" --- NEW FILE: MyService.py --- # # A sample service to be 'compiled' into an exe-file with py2exe. # # See also # setup.py - the distutils' setup script # setup.cfg - the distutils' config file for this # README.txt - detailed usage notes # # A minimal service, doing nothing else than # - write 'start' and 'stop' entries into the NT event log # - when started, waits to be stopped again. # import win32serviceutil import win32service import win32event import win32evtlogutil class MyService(win32serviceutil.ServiceFramework): _svc_name_ = "MyService" _svc_display_name_ = "My Service" _svc_deps_ = ["EventLog"] def __init__(self, args): import sys # The exe-file has messages for the Event Log Viewer. # Register the exe-file as event source. # # Probably it would be better if this is done at installation time, # so that it also could be removed if the service is uninstalled. # Unfortunately it cannot be done in the 'if __name__ == "__main__"' # block below, because the 'frozen' exe-file does not run this code. # win32evtlogutil.AddSourceToRegistry(self._svc_display_name_, sys.executable, "Application") win32serviceutil.ServiceFramework.__init__(self, args) self.hWaitStop = win32event.CreateEvent(None, 0, 0, None) def SvcStop(self): self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) win32event.SetEvent(self.hWaitStop) def SvcDoRun(self): import servicemanager # Write a 'started' event to the event log... win32evtlogutil.ReportEvent(self._svc_display_name_, servicemanager.PYS_SERVICE_STARTED, 0, # category servicemanager.EVENTLOG_INFORMATION_TYPE, (self._svc_name_, '')) # wait for beeing stopped... win32event.WaitForSingleObject(self.hWaitStop, win32event.INFINITE) # and write a 'stopped' event to the event log. win32evtlogutil.ReportEvent(self._svc_display_name_, servicemanager.PYS_SERVICE_STOPPED, 0, # category servicemanager.EVENTLOG_INFORMATION_TYPE, (self._svc_name_, '')) if __name__ == '__main__': # Note that this code will not be run in the 'frozen' exe-file!!! win32serviceutil.HandleCommandLine(MyService) --- NEW FILE: .cvsignore --- *.pyc *.pyo dist build |
From: <th...@us...> - 2003-10-01 19:49:05
|
Update of /cvsroot/py2exe/py2exe/sandbox/samples In directory sc8-pr-cvs1:/tmp/cvs-serv28822/samples Log Message: Directory /cvsroot/py2exe/py2exe/sandbox/samples added to the repository |
From: <th...@us...> - 2003-10-01 19:25:26
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe In directory sc8-pr-cvs1:/tmp/cvs-serv23146 Modified Files: build_exe.py Log Message: Remove the ext_mapping stuff, it isn't needed anymore. Index: build_exe.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/build_exe.py,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** build_exe.py 26 Sep 2003 16:04:51 -0000 1.30 --- build_exe.py 1 Oct 2003 19:25:23 -0000 1.31 *************** *** 111,115 **** ] ! boolean_options = ['unbuffered'] def initialize_options (self): --- 111,115 ---- ] ! boolean_options = ['unbuffered', 'optimize'] def initialize_options (self): *************** *** 122,129 **** self.dll_excludes = None self.typelibs = None - self.ext_mapping = {} def finalize_options (self): - self.optimize = int(self.optimize) self.excludes = fancy_split(self.excludes) self.includes = fancy_split(self.includes) --- 122,127 ---- *************** *** 481,495 **** ##XXX alldlls.remove(self.get_exe_stub(use_runw)) - for dll in alldlls: - if dll in dlls: - continue - fname, ext = os.path.splitext(os.path.basename(dll)) - try: - result = imp.find_module(fname, pypath) - except ImportError: - pass - else: - self.ext_mapping[fname] = (os.path.basename(dll), result[2]) - return alldlls, warnings # find_dependend_dlls() --- 479,482 ---- |
From: <th...@us...> - 2003-10-01 19:21:29
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe In directory sc8-pr-cvs1:/tmp/cvs-serv22281 Modified Files: __init__.py Log Message: Version 0.5.0a1, defined in only one place. Index: __init__.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/__init__.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** __init__.py 19 Sep 2003 19:40:16 -0000 1.4 --- __init__.py 1 Oct 2003 19:21:23 -0000 1.5 *************** *** 1,7 **** """ ! py2exe - build windows executables from Python scripts ! TODO: This text will be displayed when 'help("py2exe")' is entered at the python prompt. ! Write up a description of the options py2exe understands, for easy reference. """ # py2exe/__init__.py --- 1,47 ---- """ ! builds windows executables from Python scripts ! New keywords for distutils' setup function specify what to build: ! ! console ! list of scripts to convert into console exes ! ! windows ! list of scripts to convert into gui exes ! ! service ! list of module names containing win32 service classes ! ! com_server ! list of module names containing com server classes ! ! zipfile ! name of shared zipfile to generate, may specify a subdirectory, ! defaults to 'library.zip' ! ! ! py2exe options, to be specified in the options keyword to the setup function: ! ! unbuffered - if true, use unbuffered binary stdout and stderr ! optimize - string or int (0, 1, or 2) ! includes - string containing a list of module names to include ! excludes - string containing a list of module names to exclude ! packages - string containing a list of packages to include ! dll_excludes - string containing a list of dlls to exclude ! dist_dir - directory where to build the final files ! typelibs - list of gen_py generated typelibs to include (XXX more text needed) ! ! Items in the console, windows, service or com_server list can also be ! a dictionaries to further customize the build process. The following ! optional keys in the dictionary are recognized: ! ! dest_base - directory and basename for the executable ! if a directory is contained, must be the same for all targets ! create_exe (COM) - boolean, if false, don't build a server exe ! create_dll (COM) - boolean, if false, don't build a server dll ! modules (SERVICE, COM) - list of module names (required) ! script (EXE) - list of python scripts (required) ! bitmap_resources - list of 2-tuples (id, pathname) ! icon_resources - list of 2-tuples (id, pathname) """ # py2exe/__init__.py *************** *** 16,36 **** # ! import distutils.dist, distutils.core, distutils.command, build_exe, sys ! _KEYWORDS = "com_server service windows console zipfile".split() class Distribution(distutils.dist.Distribution): def __init__(self, attrs): ! self.com_server = [] # com-servers to build ! self.service = [] # services to build ! self.windows = [] # gui apps to build ! self.console = [] # console apps to build ! self.zipfile = "library.zip" # zipfile containing the python modules needed by the above ! ! for name in _KEYWORDS: ! if attrs.has_key(name): ! setattr(self, name, attrs[name]) ! del attrs[name] distutils.dist.Distribution.__init__(self, attrs) --- 56,71 ---- # ! __version__ = "0.5.0a1" ! import distutils.dist, distutils.core, distutils.command, build_exe, sys class Distribution(distutils.dist.Distribution): def __init__(self, attrs): ! self.com_server = attrs.pop("com_server", []) ! self.service = attrs.pop("com_server", []) ! self.windows = attrs.pop("com_server", []) ! self.console = attrs.pop("com_server", []) ! self.zipfile = attrs.pop("zipfile", "library.zip") distutils.dist.Distribution.__init__(self, attrs) |
From: <th...@us...> - 2003-10-01 19:21:21
|
Update of /cvsroot/py2exe/py2exe/sandbox In directory sc8-pr-cvs1:/tmp/cvs-serv22263 Modified Files: setup.py Log Message: Version 0.5.0a1, defined in only one place. Index: setup.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/setup.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** setup.py 1 Oct 2003 18:34:02 -0000 1.4 --- setup.py 1 Oct 2003 19:21:18 -0000 1.5 *************** *** 27,31 **** """ ! __version__ = "0.5" # $Id$ --- 27,31 ---- """ ! from py2exe import __version__ # $Id$ |
From: <th...@us...> - 2003-10-01 18:34:06
|
Update of /cvsroot/py2exe/py2exe/sandbox In directory sc8-pr-cvs1:/tmp/cvs-serv12671 Modified Files: setup.py Log Message: Change the build dir for the win32all libs when these are built from the setup script. Index: setup.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/setup.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** setup.py 29 Aug 2003 12:40:38 -0000 1.3 --- setup.py 1 Oct 2003 18:34:02 -0000 1.4 *************** *** 316,320 **** def _get_build_dirs(source_root_name): ret = {} ! if _check_build_dir(ret, "win32", source_root_name, "build/temp.win32-%s" % sys.winver): pass elif _check_build_dir(ret, "win32", source_root_name, "win32/build"): --- 316,320 ---- def _get_build_dirs(source_root_name): ret = {} ! if _check_build_dir(ret, "win32", source_root_name, "build/temp.win32-%s/Release" % sys.winver): pass elif _check_build_dir(ret, "win32", source_root_name, "win32/build"): |
From: <th...@us...> - 2003-09-26 17:19:29
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe In directory sc8-pr-cvs1:/tmp/cvs-serv8947 Modified Files: build_exe.py Log Message: More modules to exclude on windows. Don't complain about the missing servicemanager module if building a service. Fix the dlls_in_exedir variable. Index: build_exe.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/build_exe.py,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** build_exe.py 25 Sep 2003 20:21:12 -0000 1.29 --- build_exe.py 26 Sep 2003 16:04:51 -0000 1.30 *************** *** 594,604 **** if sys.platform == "win32": self.excludes += ["os2", "posix", "dos", "mac", "macfs", "macfsn", ! "macpath", "MACFS", "pwd", "MacOS", "macostools", "EasyDialogs", "termios", "TERMIOS", "java.lang", "org.python.core", "riscos", "riscosenviron", "riscospath", "ce", ! "os.path" ] # special dlls which must be copied to the exe_dir, not the lib_dir names = "python pywintypes pythoncom".split() --- 594,613 ---- if sys.platform == "win32": self.excludes += ["os2", "posix", "dos", "mac", "macfs", "macfsn", ! "macpath", "grp", "MACFS", "pwd", "MacOS", "macostools", "EasyDialogs", "termios", "TERMIOS", "java.lang", "org.python.core", "riscos", "riscosenviron", "riscospath", "ce", ! "os.path", ! "Carbon.Folder", "Carbon.Folders", ] + # If services are built, do not complain that servicemanager is missing. + # It is a builtin module in run_service.exe! + # + # XXX Is it better to exclude it here, or to remove it + # from the missing list afterwards? + if self.distribution.service: + self.excludes.append("servicemanager") + # special dlls which must be copied to the exe_dir, not the lib_dir names = "python pywintypes pythoncom".split() *************** *** 607,611 **** if is_debug_build: names = ["%s_d" % name for name in names] ! self.dlls_in_exedir = ["%s.dll" for name in names] else: raise DistutilsError, "Platform %s not yet implemented" % sys.platform --- 616,620 ---- if is_debug_build: names = ["%s_d" % name for name in names] ! self.dlls_in_exedir = ["%s.dll" % name for name in names] else: raise DistutilsError, "Platform %s not yet implemented" % sys.platform |
From: <th...@us...> - 2003-09-25 19:39:30
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe In directory sc8-pr-cvs1:/tmp/cvs-serv7458 Modified Files: build_exe.py Log Message: Make the FileSet class interface compatible to the 2.3 sets.Set class. Index: build_exe.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/build_exe.py,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** build_exe.py 25 Sep 2003 19:09:51 -0000 1.26 --- build_exe.py 25 Sep 2003 19:39:27 -0000 1.27 *************** *** 700,707 **** class FileSet: # A case insensitive but case preserving set of files ! def __init__(self, *args): self._dict = {} ! for arg in args: ! self.add(arg) def __repr__(self): --- 700,708 ---- class FileSet: # A case insensitive but case preserving set of files ! def __init__(self, iterable=None): self._dict = {} ! if iterable is not None: ! for arg in iterable: ! self.add(arg) def __repr__(self): *************** *** 714,718 **** del self._dict[fname.upper()] ! def contains(self, fname): return fname.upper() in self._dict.keys() --- 715,719 ---- del self._dict[fname.upper()] ! def __contains__(self, fname): return fname.upper() in self._dict.keys() *************** *** 724,727 **** --- 725,733 ---- return len(self._dict) + def copy(self): + res = FileSet() + res._dict.update(self._dict) + return res + # class FileSet() *************** *** 729,738 **** import py2exe_util warnings = FileSet() ! images = FileSet(*images) dependents = FileSet() while images: ! for image in images: images.remove(image) ! if not dependents.contains(image): dependents.add(image) abs_image = os.path.abspath(image) --- 735,744 ---- import py2exe_util warnings = FileSet() ! images = FileSet(images) dependents = FileSet() while images: ! for image in images.copy(): images.remove(image) ! if not image in dependents: dependents.add(image) abs_image = os.path.abspath(image) *************** *** 740,745 **** for result in py2exe_util.depends(image, loadpath).items(): dll, uses_import_module = result ! if not images.contains(dll) \ ! and not dependents.contains(dll) \ and not os.path.basename(dll).lower() in excluded_dlls \ and not isSystemDLL(dll): --- 746,751 ---- for result in py2exe_util.depends(image, loadpath).items(): dll, uses_import_module = result ! if not dll in images \ ! and not dll in dependents \ and not os.path.basename(dll).lower() in excluded_dlls \ and not isSystemDLL(dll): |
From: <th...@us...> - 2003-09-25 19:09:55
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe In directory sc8-pr-cvs1:/tmp/cvs-serv32253 Modified Files: build_exe.py Log Message: Remove todo comments which are no longer true (I hope). Remove the items() method from out FileSet class, it is badly named and not needed. Index: build_exe.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/build_exe.py,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** build_exe.py 25 Sep 2003 19:05:32 -0000 1.25 --- build_exe.py 25 Sep 2003 19:09:51 -0000 1.26 *************** *** 8,34 **** # for com servers ? - ################################################################ - # Non-Bugs - What works? - # - # Can build simple console programs - # A trivial wxPython program - # gui programs without console - - ################################################################ - # Bugs: - # - # win32com.client.Dispatch programs fail with: - - ##Traceback (most recent call last): - ## File "<string>", line 16, in ? - ## File "win32com\client\__init__.pyc", line 12, in ? - ## File "win32com\client\gencache.pyc", line 528, in ? - ## File "win32com\client\gencache.pyc", line 44, in __init__ - ## File "win32com\client\gencache.pyc", line 515, in Rebuild - ## File "win32com\client\gencache.pyc", line 49, in _SaveDicts - ## File "win32com\client\gencache.pyc", line 96, in GetGeneratePath - ##IOError: [Errno 2] No such file or directory: - # '...\\test\\dist\\application.zip\\win32com\\gen_py\\__init__.py' - from distutils.core import Command from distutils.spawn import spawn --- 8,11 ---- *************** *** 293,297 **** print "*** copy dlls ***" ! for dll in dlls.items(): base = os.path.basename(dll) if base.lower() == python_dll: --- 270,274 ---- print "*** copy dlls ***" ! for dll in dlls: base = os.path.basename(dll) if base.lower() == python_dll: *************** *** 746,752 **** def __len__(self): return len(self._dict) - - def items(self): - return self._dict.values() # class FileSet() --- 723,726 ---- |
From: <th...@us...> - 2003-09-25 19:05:35
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe In directory sc8-pr-cvs1:/tmp/cvs-serv31275 Modified Files: build_exe.py Log Message: Move the code to find dlls into a separate method. Index: build_exe.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/build_exe.py,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** build_exe.py 25 Sep 2003 15:20:19 -0000 1.24 --- build_exe.py 25 Sep 2003 19:05:32 -0000 1.25 *************** *** 210,219 **** self.copy_file(dict_dat, genpy_dir) self.find_needed_modules(mf, required_files, required_modules) py_files, extensions = self.parse_mf_results(mf) self.plat_finalize(mf.modules, py_files, extensions) ! self.create_binaries(py_files, extensions) if mf.any_missing(): --- 210,225 ---- self.copy_file(dict_dat, genpy_dir) + print "*** searching for required modules ***" self.find_needed_modules(mf, required_files, required_modules) + print "*** parsing results ***" py_files, extensions = self.parse_mf_results(mf) self.plat_finalize(mf.modules, py_files, extensions) ! print "*** finding dlls needed ***" ! dlls = self.find_dlls(extensions) ! ! print "*** create binaries ***" ! self.create_binaries(py_files, extensions, dlls) if mf.any_missing(): *************** *** 221,224 **** --- 227,246 ---- print mf.any_missing() + + def find_dlls(self, extensions): + dlls = [item.__file__ for item in extensions] + ## extra_path = ["."] # XXX + extra_path = [] + dlls, unfriendly_dlls = self.find_dependend_dlls(0, dlls, + extra_path + sys.path, + self.dll_excludes) + # dlls contains the path names of all dlls we need. + # If a dll uses a function PyImport_ImportModule (or what was it?), + # it's name is additionally in unfriendly_dlls. + for item in extensions: + if item.__file__ in dlls: + dlls.remove(item.__file__) + return dlls + def create_directories(self): bdist_base = self.get_finalized_command('bdist').bdist_base *************** *** 238,242 **** self.mkpath(self.lib_dir) ! def create_binaries(self, py_files, extensions): dist = self.distribution --- 260,264 ---- self.mkpath(self.lib_dir) ! def create_binaries(self, py_files, extensions, dlls): dist = self.distribution *************** *** 264,267 **** --- 286,290 ---- self.copy_file(src, dst) + # create the shared zipfile containing all Python modules archive_name = os.path.join(self.lib_dir, os.path.basename(dist.zipfile)) *************** *** 269,287 **** verbose=self.verbose, dry_run=self.dry_run) - # find and copy binary dependencies - dlls = [item.__file__ for item in extensions] - - ## extra_path = ["."] # XXX - extra_path = [] - dlls, unfriendly_dlls = self.find_dependend_dlls(0, dlls, - extra_path + sys.path, - self.dll_excludes) - - for item in extensions: - if item.__file__ in dlls: - dlls.remove(item.__file__) - print "*** copy dlls ***" ! for dll in dlls.items() + unfriendly_dlls.items(): base = os.path.basename(dll) if base.lower() == python_dll: --- 292,297 ---- verbose=self.verbose, dry_run=self.dry_run) print "*** copy dlls ***" ! for dll in dlls.items(): base = os.path.basename(dll) if base.lower() == python_dll: |
From: <th...@us...> - 2003-09-25 15:20:23
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe In directory sc8-pr-cvs1:/tmp/cvs-serv29679 Modified Files: build_exe.py Log Message: More refactoring, and one real change. pywintypesXX.dll and pythoncomXX.dll are now copied into the target exe directory. While I'm not sure that this is really sufficient for COM, it's far better than before. They would not be found in the lib directory for inproc COM servers at least. Still when a (possibly conflicting) Python and win32all installation is on the same machine, the wrong dlls are loaded. See comment in the code. Index: build_exe.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/build_exe.py,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** build_exe.py 25 Sep 2003 12:35:32 -0000 1.23 --- build_exe.py 25 Sep 2003 15:20:19 -0000 1.24 *************** *** 170,239 **** def run(self): ! # refactor, refactor, refactor! ! abspath=os.path.abspath ! bdist_base = self.get_finalized_command('bdist').bdist_base ! self.bdist_dir = os.path.join(bdist_base, 'winexe') ! ! self.collect_dir = abspath(os.path.join(self.bdist_dir, "collect")) ! self.mkpath(self.collect_dir) ! self.temp_dir = abspath(os.path.join(self.bdist_dir, "temp")) ! self.dist_dir = abspath(self.dist_dir) ! self.mkpath(self.temp_dir) ! self.mkpath(self.dist_dir) ! ! self.lib_dir = os.path.join(self.dist_dir, ! os.path.dirname(self.distribution.zipfile)) ! self.mkpath(self.lib_dir) ! self.plat_prepare() ! if 1: ! # XXX separate method? ! dist = self.distribution ! ! # Convert our args into target objects. ! dist.com_server = FixupTargets(dist.com_server, "modules") ! dist.service = FixupTargets(dist.service, "modules") ! dist.windows = FixupTargets(dist.windows, "script") ! dist.console = FixupTargets(dist.console, "script") ! ! # make sure all targets use the same directory, this is ! # also the directory where the pythonXX.dll must reside ! import sets ! paths = sets.Set() ! for target in dist.com_server + dist.service \ ! + dist.windows + dist.console: ! paths.add(os.path.dirname(target.get_dest_base())) ! ! if len(paths) > 1: ! raise DistutilsOptionError, \ ! "all targets must use the same directory: %s" % \ ! [p for p in paths] ! if paths: ! exe_dir = paths.pop() # the only element ! if os.path.isabs(exe_dir): ! raise DistutilsOptionError, \ ! "exe directory must be relative: %s" % exe_dir ! self.exe_dir = os.path.join(self.dist_dir, exe_dir) ! self.mkpath(self.exe_dir) ! else: ! # Do we allow to specify no targets? ! # We can at least build a zipfile... ! self.exe_dir = self.lib_dir ! # XXX end of separate method ! # all of these contain module names ! required_modules = [] ! for target in dist.com_server: ! required_modules.extend(target.modules) ! for target in dist.service: ! required_modules.extend(target.modules) ! # and these contains file names ! required_files = [] ! for target in dist.windows: ! required_files.append(target.script) ! for target in dist.console: ! required_files.append(target.script) self.includes.append("zlib") # needed for zipimport --- 170,189 ---- def run(self): ! self.create_directories() self.plat_prepare() + self.fixup_distribution() ! dist = self.distribution ! # all of these contain module names ! required_modules = [] ! for target in dist.com_server + dist.service: ! required_modules.extend(target.modules) ! # and these contains file names ! required_files = [target.script ! for target in dist.windows + dist.console] ! ################ ! # refactor, refactor, refactor! self.includes.append("zlib") # needed for zipimport *************** *** 263,267 **** --- 213,244 ---- py_files, extensions = self.parse_mf_results(mf) + self.plat_finalize(mf.modules, py_files, extensions) + + self.create_binaries(py_files, extensions) + + if mf.any_missing(): + print "The following modules appear to be missing" + print mf.any_missing() + + def create_directories(self): + bdist_base = self.get_finalized_command('bdist').bdist_base + self.bdist_dir = os.path.join(bdist_base, 'winexe') + + self.collect_dir = os.path.abspath(os.path.join(self.bdist_dir, "collect")) + self.mkpath(self.collect_dir) + + self.temp_dir = os.path.abspath(os.path.join(self.bdist_dir, "temp")) + self.mkpath(self.temp_dir) + + self.dist_dir = os.path.abspath(self.dist_dir) + self.mkpath(self.dist_dir) + self.lib_dir = os.path.join(self.dist_dir, + os.path.dirname(self.distribution.zipfile)) + self.mkpath(self.lib_dir) + + def create_binaries(self, py_files, extensions): + dist = self.distribution + # byte compile the python modules into the target directory print "*** byte compile python files ***" *************** *** 333,343 **** for target in dist.com_server: if getattr(target, "create_exe", True): self.build_comserver(target, "run_w.exe", arcname) if getattr(target, "create_dll", True): self.build_comserver(target, "run_dll.dll", arcname) ! if mf.any_missing(): ! print "The following modules appear to be missing" ! print mf.any_missing() def get_boot_script(self, boot_type): --- 310,352 ---- for target in dist.com_server: if getattr(target, "create_exe", True): + # XXX Mark: Hm, should there be an option to build a + # console version for debugging, or is the regular + # debug support in win32com sufficient? self.build_comserver(target, "run_w.exe", arcname) if getattr(target, "create_dll", True): self.build_comserver(target, "run_dll.dll", arcname) ! def fixup_distribution(self): ! dist = self.distribution ! ! # Convert our args into target objects. ! dist.com_server = FixupTargets(dist.com_server, "modules") ! dist.service = FixupTargets(dist.service, "modules") ! dist.windows = FixupTargets(dist.windows, "script") ! dist.console = FixupTargets(dist.console, "script") ! ! # make sure all targets use the same directory, this is ! # also the directory where the pythonXX.dll must reside ! import sets ! paths = sets.Set() ! for target in dist.com_server + dist.service \ ! + dist.windows + dist.console: ! paths.add(os.path.dirname(target.get_dest_base())) ! ! if len(paths) > 1: ! raise DistutilsOptionError, \ ! "all targets must use the same directory: %s" % \ ! [p for p in paths] ! if paths: ! exe_dir = paths.pop() # the only element ! if os.path.isabs(exe_dir): ! raise DistutilsOptionError, \ ! "exe directory must be relative: %s" % exe_dir ! self.exe_dir = os.path.join(self.dist_dir, exe_dir) ! self.mkpath(self.exe_dir) ! else: ! # Do we allow to specify no targets? ! # We can at least build a zipfile... ! self.exe_dir = self.lib_dir def get_boot_script(self, boot_type): *************** *** 548,553 **** ("Don't know how to handle '%s'" % repr(src)) - self.plat_finalize(mf.modules, py_files, extensions) - return py_files, extensions --- 557,560 ---- *************** *** 556,566 **** # file lists if sys.platform == "win32": ! from modulefinder import Module if "pythoncom" in modules.keys(): import pythoncom ! extensions.append(Module("pythoncom", pythoncom.__file__)) if "pywintypes" in modules.keys(): import pywintypes ! extensions.append(Module("pywintypes", pywintypes.__file__)) else: raise DistutilsError, "Platform %s not yet implemented" % sys.platform --- 563,592 ---- # file lists if sys.platform == "win32": ! # For inproc com to work, the PythonCOMXX.dll and ! # PyWinTypesXX.dll must be in the same directory as the ! # com server dll. I guess. ! # Or must they be on the PATH? At least they cannot be in ! # the lib_dir. ! # ! # Starting an inproc com server with oleview, and listing ! # the loaded dlls with sysinternals ProcessExplorer shows ! # that PyWinTypes is loaded from the dll server's ! # directory, but pythoncom is loaded from the system ! # directory. At least when there is a python installation ! # with win32all! ! # ! # XXX Currently, at least PyWinTypesXX.dll is also found ! # as binary dependency, so it is copied twice. Does no harm, ! # but not so nice. if "pythoncom" in modules.keys(): import pythoncom ! src = pythoncom.__file__ ! dst = os.path.join(self.exe_dir, os.path.basename(src)) ! self.copy_file(src, dst) if "pywintypes" in modules.keys(): import pywintypes ! src = pywintypes.__file__ ! dst = os.path.join(self.exe_dir, os.path.basename(src)) ! self.copy_file(src, dst) else: raise DistutilsError, "Platform %s not yet implemented" % sys.platform |
From: <th...@us...> - 2003-09-25 12:35:36
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe In directory sc8-pr-cvs1:/tmp/cvs-serv26630 Modified Files: build_exe.py Log Message: Make sure all exe targets' dest_base specify the same relative directory, and copy the python dll into this directory. Index: build_exe.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/build_exe.py,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** build_exe.py 25 Sep 2003 10:46:33 -0000 1.22 --- build_exe.py 25 Sep 2003 12:35:32 -0000 1.23 *************** *** 197,200 **** --- 197,226 ---- dist.windows = FixupTargets(dist.windows, "script") dist.console = FixupTargets(dist.console, "script") + + # make sure all targets use the same directory, this is + # also the directory where the pythonXX.dll must reside + import sets + paths = sets.Set() + for target in dist.com_server + dist.service \ + + dist.windows + dist.console: + paths.add(os.path.dirname(target.get_dest_base())) + + if len(paths) > 1: + raise DistutilsOptionError, \ + "all targets must use the same directory: %s" % \ + [p for p in paths] + if paths: + exe_dir = paths.pop() # the only element + if os.path.isabs(exe_dir): + raise DistutilsOptionError, \ + "exe directory must be relative: %s" % exe_dir + self.exe_dir = os.path.join(self.dist_dir, exe_dir) + self.mkpath(self.exe_dir) + else: + # Do we allow to specify no targets? + # We can at least build a zipfile... + self.exe_dir = self.lib_dir + # XXX end of separate method + # all of these contain module names required_modules = [] *************** *** 281,292 **** print "*** copy dlls ***" for dll in dlls.items() + unfriendly_dlls.items(): ! if os.path.basename(dll).lower() == python_dll: ! # The pythonxx.dll itself cannot be in the lib ! # directory, because it will not be found by the ! # executables. Save the path for later, so that ! # build_executable can copy it. ! self.python_dll = dll else: ! dst = os.path.join(self.lib_dir, os.path.basename(dll)) self.copy_file(dll, dst) --- 307,317 ---- print "*** copy dlls ***" for dll in dlls.items() + unfriendly_dlls.items(): ! base = os.path.basename(dll) ! if base.lower() == python_dll: ! # The python dll itself cannot be in the lib ! # directory, it must go into the exe directory. ! dst = os.path.join(self.exe_dir, base) else: ! dst = os.path.join(self.lib_dir, base) self.copy_file(dll, dst) *************** *** 394,404 **** # The user may specify a sub-directory for the exe - that's fine, we # just specify the parent directory for the .zip - from distutils.dir_util import mkpath - mkpath(os.path.dirname(exe_path)) - # copy the python dll, it is needed in the same directory - self.copy_file(self.python_dll, - os.path.join(os.path.dirname(exe_path), - os.path.basename(self.python_dll))) - parent_levels = len(os.path.normpath(exe_base).split(os.sep))-1 lib_leaf = self.lib_dir[len(self.dist_dir)+1:] --- 419,422 ---- |
From: <th...@us...> - 2003-09-25 10:46:37
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe In directory sc8-pr-cvs1:/tmp/cvs-serv8280 Modified Files: build_exe.py Log Message: be a little bit less verbose... Index: build_exe.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/build_exe.py,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** build_exe.py 25 Sep 2003 10:42:32 -0000 1.21 --- build_exe.py 25 Sep 2003 10:46:33 -0000 1.22 *************** *** 563,568 **** # and what about dry_run? if self.verbose: ! print "creating loader stub for extension '%s' as '%s'" % \ ! (item.__name__, pathname) fname = os.path.basename(item.__file__) --- 563,567 ---- # and what about dry_run? if self.verbose: ! print "creating python loader for extension '%s'" % item.__name__ fname = os.path.basename(item.__file__) |
From: <th...@us...> - 2003-09-25 10:42:37
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe In directory sc8-pr-cvs1:/tmp/cvs-serv7787 Modified Files: build_exe.py Log Message: Remove the "lib_dir" option. It is now derived from the dirname if the distribution's zipfile. Index: build_exe.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/build_exe.py,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** build_exe.py 25 Sep 2003 10:04:03 -0000 1.20 --- build_exe.py 25 Sep 2003 10:42:32 -0000 1.21 *************** *** 152,156 **** self.packages = None self.dist_dir = None - self.lib_dir = None self.dll_excludes = None self.typelibs = None --- 152,155 ---- *************** *** 180,186 **** self.temp_dir = abspath(os.path.join(self.bdist_dir, "temp")) self.dist_dir = abspath(self.dist_dir) - self.lib_dir = os.path.join(self.dist_dir, self.lib_dir or '') self.mkpath(self.temp_dir) self.mkpath(self.dist_dir) self.mkpath(self.lib_dir) --- 179,187 ---- self.temp_dir = abspath(os.path.join(self.bdist_dir, "temp")) self.dist_dir = abspath(self.dist_dir) self.mkpath(self.temp_dir) self.mkpath(self.dist_dir) + + self.lib_dir = os.path.join(self.dist_dir, + os.path.dirname(self.distribution.zipfile)) self.mkpath(self.lib_dir) *************** *** 260,264 **** self.copy_file(src, dst) ! archive_name = os.path.join(self.lib_dir, dist.zipfile) arcname = self.make_lib_archive(archive_name, base_dir=self.collect_dir, verbose=self.verbose, dry_run=self.dry_run) --- 261,266 ---- self.copy_file(src, dst) ! archive_name = os.path.join(self.lib_dir, ! os.path.basename(dist.zipfile)) arcname = self.make_lib_archive(archive_name, base_dir=self.collect_dir, verbose=self.verbose, dry_run=self.dry_run) |
From: <th...@us...> - 2003-09-25 10:04:08
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe In directory sc8-pr-cvs1:/tmp/cvs-serv2229 Modified Files: build_exe.py Log Message: Fix a typo in the Target class. Rename the local variable triple into _triple, so that it doesn't show up in pydoc. Index: build_exe.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/build_exe.py,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** build_exe.py 22 Sep 2003 01:42:38 -0000 1.19 --- build_exe.py 25 Sep 2003 10:04:03 -0000 1.20 *************** *** 49,54 **** RT_BITMAP=2 ! _c_suffixes = [triple[0] for triple in imp.get_suffixes() ! if triple[2] == imp.C_EXTENSION] def imp_find_module(name): --- 49,54 ---- RT_BITMAP=2 ! _c_suffixes = [_triple[0] for _triple in imp.get_suffixes() ! if _triple[2] == imp.C_EXTENSION] def imp_find_module(name): *************** *** 114,118 **** if type(target_def) in types.StringTypes : # Create a default target object, with the string as the attribute ! target = Target(**{default_attribute: target}) else: if not target_def.has_key(default_attribute): --- 114,118 ---- if type(target_def) in types.StringTypes : # Create a default target object, with the string as the attribute ! target = Target(**{default_attribute: target_def}) else: if not target_def.has_key(default_attribute): |
From: <mha...@us...> - 2003-09-22 01:42:43
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe In directory sc8-pr-cvs1:/tmp/cvs-serv29318 Modified Files: build_exe.py Log Message: Our custom options are now passed in via the normal distutils 'options' mechanism. Target objects are now assumed to be a dict, rather than either a dict or class. Index: build_exe.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/build_exe.py,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** build_exe.py 19 Sep 2003 19:45:00 -0000 1.18 --- build_exe.py 22 Sep 2003 01:42:38 -0000 1.19 *************** *** 111,124 **** return targets ret = [] ! for target in targets: ! if type(target) in types.StringTypes : # Create a default target object, with the string as the attribute target = Target(**{default_attribute: target}) else: ! d = getattr(target, "__dict__", target) ! if not d.has_key(default_attribute): raise DistutilsOptionError, \ ! "This target class requires an attribute '%s'" % default_attribute ! target = Target(**d) target.validate() ret.append(target) --- 111,123 ---- return targets ret = [] ! for target_def in targets: ! if type(target_def) in types.StringTypes : # Create a default target object, with the string as the attribute target = Target(**{default_attribute: target}) else: ! if not target_def.has_key(default_attribute): raise DistutilsOptionError, \ ! "This target requires a '%s' definition" % default_attribute ! target = Target(**target_def) target.validate() ret.append(target) *************** *** 147,169 **** def initialize_options (self): ! # hack in extra options - if the main setup script defines an object ! # py2exe_options, default some extra options from that. ! try: ! extra_options = __import__('__main__').py2exe_options ! # if class/instance etc, get the dics. ! extra_options = getattr(extra_options, "__dict__", extra_options) ! except (ImportError, AttributeError): ! extra_options = {} ! ! self.unbuffered = extra_options.get("unbuffered", 0) ! self.optimize = extra_options.get("optimize", 0) ! self.includes = extra_options.get("includes") ! self.excludes = extra_options.get("excludes") ! self.packages = extra_options.get("packages") ! self.dist_dir = extra_options.get("dist_dir") ! self.lib_dir = extra_options.get("lib_dir") ! self.dll_excludes = extra_options.get("dll_excludes", []) ! self.ext_mapping = extra_options.get("ext_mapping", {}) ! self.typelibs = extra_options.get("typelibs", []) def finalize_options (self): --- 146,159 ---- def initialize_options (self): ! self.unbuffered = 0 ! self.optimize = 0 ! self.includes = None ! self.excludes = None ! self.packages = None ! self.dist_dir = None ! self.lib_dir = None ! self.dll_excludes = None ! self.typelibs = None ! self.ext_mapping = {} def finalize_options (self): *************** *** 178,182 **** self.set_undefined_options('bdist', ('dist_dir', 'dist_dir')) ! def run(self): --- 168,172 ---- self.set_undefined_options('bdist', ('dist_dir', 'dist_dir')) ! self.dll_excludes = fancy_split(self.dll_excludes) def run(self): |
From: <mha...@us...> - 2003-09-19 19:55:31
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe In directory sc8-pr-cvs1:/tmp/cvs-serv2784/py2exe Modified Files: build_exe.py Log Message: Use modulefinder to locate a package before trying imp. This is needed so the sub-package 'win32com.gen_py' is located and processed. Index: build_exe.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/build_exe.py,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** build_exe.py 16 Sep 2003 08:50:52 -0000 1.16 --- build_exe.py 19 Sep 2003 03:59:14 -0000 1.17 *************** *** 606,619 **** if '__init__.py' in names: arg.append(dirname) ! # Very weird... ! # Find path of package ! # XXX - MarkH isn't sure what is particularly weird here, but note ! # that mf.modules[f] appears to work for packages ModuleFinder ! # has seen a reference to. ! try: ! path = imp_find_module(f)[1] ! except ImportError: ! self.warn("No package named %s" % f) ! continue packages = [] --- 606,623 ---- if '__init__.py' in names: arg.append(dirname) ! # If modulefinder has seen a reference to the package, then ! # we prefer to believe that (imp_find_module doesn't seem to locate ! # sub-packages) ! if f in mf.modules: ! path = mf.modules[f].__path__[0] ! else: ! # Very weird... ! # Find path of package ! # has seen a reference to. ! try: ! path = imp_find_module(f)[1] ! except ImportError: ! self.warn("No package named %s" % f) ! continue packages = [] |
From: <th...@us...> - 2003-09-19 19:45:04
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe In directory sc8-pr-cvs1:/tmp/cvs-serv1847 Modified Files: build_exe.py Log Message: make_lib_archive no longer appends a .zip extension, this allows other extensions for the archive as well. Make make_lib_archive a method of the py2exe class, to allow overriding in a subclass. It also allows the compression to be set - default is still uncompressed. The python dll cannot be copied in the same way as other dlls, it must be in the directory of the executable(s) to be build. Index: build_exe.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/build_exe.py,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** build_exe.py 19 Sep 2003 03:59:14 -0000 1.17 --- build_exe.py 19 Sep 2003 19:45:00 -0000 1.18 *************** *** 36,43 **** --- 36,49 ---- import sys, os, imp, types import marshal + import zipfile import _sre # any module known to be a .pyd is_debug_build = _sre.__file__.find("_d")>=0 + if is_debug_build: + python_dll = "python%d%d_d.dll" % sys.version_info[:2] + else: + python_dll = "python%d%d.dll" % sys.version_info[:2] + # resource constants RT_BITMAP=2 *************** *** 265,273 **** archive_name = os.path.join(self.lib_dir, dist.zipfile) ! # make_archive appends ".zip", but we already have it. ! if os.path.splitext(archive_name)[1]==".zip": ! archive_name = os.path.splitext(archive_name)[0] ! arcname = make_lib_archive(archive_name, self.collect_dir, ! self.verbose, self.dry_run) # find and copy binary dependencies --- 271,276 ---- archive_name = os.path.join(self.lib_dir, dist.zipfile) ! arcname = self.make_lib_archive(archive_name, base_dir=self.collect_dir, ! verbose=self.verbose, dry_run=self.dry_run) # find and copy binary dependencies *************** *** 286,290 **** print "*** copy dlls ***" for dll in dlls.items() + unfriendly_dlls.items(): ! dst = os.path.join(self.lib_dir, os.path.basename(dll)) self.copy_file(dll, dst) --- 289,300 ---- print "*** copy dlls ***" for dll in dlls.items() + unfriendly_dlls.items(): ! if os.path.basename(dll).lower() == python_dll: ! # The pythonxx.dll itself cannot be in the lib ! # directory, because it will not be found by the ! # executables. Save the path for later, so that ! # build_executable can copy it. ! self.python_dll = dll ! else: ! dst = os.path.join(self.lib_dir, os.path.basename(dll)) self.copy_file(dll, dst) *************** *** 394,397 **** --- 404,411 ---- from distutils.dir_util import mkpath mkpath(os.path.dirname(exe_path)) + # copy the python dll, it is needed in the same directory + self.copy_file(self.python_dll, + os.path.join(os.path.dirname(exe_path), + os.path.basename(self.python_dll))) parent_levels = len(os.path.normpath(exe_base).split(os.sep))-1 *************** *** 612,618 **** path = mf.modules[f].__path__[0] else: - # Very weird... # Find path of package - # has seen a reference to. try: path = imp_find_module(f)[1] --- 626,630 ---- *************** *** 636,639 **** --- 648,677 ---- return mf + def make_lib_archive(self, zip_filename, base_dir, verbose=0, + dry_run=0, compression=zipfile.ZIP_STORED): + # Like distutils "make_archive", except we can specify the + # compression to use - default is ZIP_STORED to keep the + # runtime performance up. + # Also, we don't append '.zip' to the filename. + from distutils.dir_util import mkpath + mkpath(os.path.dirname(zip_filename), dry_run=dry_run) + def visit (z, dirname, names): + for name in names: + path = os.path.normpath(os.path.join(dirname, name)) + if os.path.isfile(path): + z.write(path, path) + + if not dry_run: + z = zipfile.ZipFile(zip_filename, "w", + compression=compression) + save_cwd = os.getcwd() + os.chdir(base_dir) + os.path.walk('', visit, z) + os.chdir(save_cwd) + z.close() + + return zip_filename + + ################################################################ *************** *** 786,813 **** (file.__file__, dfile) # byte_compile() - - # Like "make_archive", except we use ZIP_STORED to keep the perf of - # the runtime up - def make_lib_archive(base_name, base_dir, verbose=0, dry_run=0): - from distutils.dir_util import mkpath - import zipfile - zip_filename = base_name + ".zip" - mkpath(os.path.dirname(zip_filename), dry_run=dry_run) - def visit (z, dirname, names): - for name in names: - path = os.path.normpath(os.path.join(dirname, name)) - if os.path.isfile(path): - z.write(path, path) - - if not dry_run: - z = zipfile.ZipFile(zip_filename, "w", - compression=zipfile.ZIP_STORED) - save_cwd = os.getcwd() - os.chdir(base_dir) - os.path.walk('', visit, z) - os.chdir(save_cwd) - z.close() - - return zip_filename # win32com makepy helper. --- 824,827 ---- |
From: <th...@us...> - 2003-09-19 19:40:22
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe In directory sc8-pr-cvs1:/tmp/cvs-serv32089 Modified Files: __init__.py Log Message: Add a todo for a nice docstring, this could be used for a reference listing the options. Explain some of the magic done by 'import py2exe'. The zipfile name containing the module library defaults to 'library.zip', and must include the extension. Index: __init__.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/__init__.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** __init__.py 25 Aug 2003 16:34:26 -0000 1.3 --- __init__.py 19 Sep 2003 19:40:16 -0000 1.4 *************** *** 1,26 **** import distutils.dist, distutils.core, distutils.command, build_exe, sys ! _KEYWORDS = "com_server service windows console".split() class Distribution(distutils.dist.Distribution): def __init__(self, attrs): ! self.com_server = None ! self.service = None ! self.windows = None ! self.console = None for name in _KEYWORDS: ! val = attrs.get(name, None) ! setattr(self, name, val or []) ! if val is not None: del attrs[name] - self.zipfile = attrs.get("zipfile", "library") - try: - del attrs["zipfile"] - except KeyError: - pass - distutils.dist.Distribution.__init__(self, attrs) --- 1,37 ---- + """ + py2exe - build windows executables from Python scripts + + TODO: This text will be displayed when 'help("py2exe")' is entered at the python prompt. + Write up a description of the options py2exe understands, for easy reference. + """ + # py2exe/__init__.py + + # 'import py2exe' imports this package, and two magic things happen: + # + # - the 'py2exe.build_exe' submodule is imported and installed as + # 'distutils.commands.py2exe' command + # + # - the default distutils Distribution class is replaced by the + # special one contained in this module. + # + import distutils.dist, distutils.core, distutils.command, build_exe, sys ! _KEYWORDS = "com_server service windows console zipfile".split() class Distribution(distutils.dist.Distribution): def __init__(self, attrs): ! self.com_server = [] # com-servers to build ! self.service = [] # services to build ! self.windows = [] # gui apps to build ! self.console = [] # console apps to build ! self.zipfile = "library.zip" # zipfile containing the python modules needed by the above for name in _KEYWORDS: ! if attrs.has_key(name): ! setattr(self, name, attrs[name]) del attrs[name] distutils.dist.Distribution.__init__(self, attrs) *************** *** 30,32 **** sys.modules['distutils.command.py2exe'] = build_exe - --- 41,42 ---- |
From: <th...@us...> - 2003-09-18 20:20:07
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe/resources In directory sc8-pr-cvs1:/tmp/cvs-serv18764 Modified Files: VersionInfo.py Log Message: Remove a 2.3 warning, but mostly this checkin is to test the brand new py2exe-checkins mailing list. Index: VersionInfo.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/resources/VersionInfo.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** VersionInfo.py 29 Aug 2003 12:30:52 -0000 1.1 --- VersionInfo.py 18 Sep 2003 20:19:57 -0000 1.2 *************** *** 26,29 **** --- 26,33 ---- # # $Log$ + # Revision 1.2 2003/09/18 20:19:57 theller + # Remove a 2.3 warning, but mostly this checkin is to test the brand new + # py2exe-checkins mailing list. + # # Revision 1.1 2003/08/29 12:30:52 mhammond # New py2exe now uses the old resource functions :) *************** *** 71,75 **** class VS_FIXEDFILEINFO: ! dwSignature = 0xFEEF04BD dwStrucVersion = 0x00010000 dwFileVersionMS = 0x00010000 --- 75,79 ---- class VS_FIXEDFILEINFO: ! dwSignature = 0xFEEF04BDL dwStrucVersion = 0x00010000 dwFileVersionMS = 0x00010000 |
From: Thomas H. <th...@py...> - 2003-09-18 20:09:00
|
just to make sure the list works. |