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-28 12:38:05
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe In directory sc8-pr-cvs1:/tmp/cvs-serv2715 Modified Files: build_exe.py Log Message: Reenable Tkinter support. Index: build_exe.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/build_exe.py,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** build_exe.py 28 Oct 2003 11:48:13 -0000 1.37 --- build_exe.py 28 Oct 2003 12:36:06 -0000 1.38 *************** *** 563,570 **** ## } - # XXX Tkinter magic. Move into self.run() ? tcl_src_dir = tcl_dst_dir = None if "Tkinter" in mf.modules.keys(): ! pass # XXX # Retrieve modules from modulefinder --- 563,581 ---- ## } tcl_src_dir = tcl_dst_dir = None if "Tkinter" in mf.modules.keys(): ! import Tkinter ! import _tkinter ! tk = _tkinter.create() ! tcl_dir = tk.call("info", "library") ! tcl_src_dir = os.path.split(tcl_dir)[0] ! tcl_dst_dir = os.path.join(self.lib_dir, "tcl") ! ! self.announce("Copying TCL files from %s..." % tcl_src_dir) ! self.copy_tree(os.path.join(tcl_src_dir, "tcl%s" % _tkinter.TCL_VERSION), ! os.path.join(tcl_dst_dir, "tcl%s" % _tkinter.TCL_VERSION)) ! self.copy_tree(os.path.join(tcl_src_dir, "tk%s" % _tkinter.TK_VERSION), ! os.path.join(tcl_dst_dir, "tk%s" % _tkinter.TK_VERSION)) ! del tk, _tkinter, Tkinter # Retrieve modules from modulefinder |
From: <th...@us...> - 2003-10-28 11:51:25
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe In directory sc8-pr-cvs1:/tmp/cvs-serv27714 Modified Files: build_exe.py Log Message: The special casing of zlib can be removed. py2exe arranges that both the shared zipfile *and* the directory it lives in are on sys.path. Maybe it would be nicer if only the zipfile were required on sys.path, but the pythoncom and pywintypes dlls would not be found then. The plus is that even compressed shared zipfiles can now be imported without any special casing of the zlib extension. Move the 'self.includes.append("warnings")' line into the plat_prepare() method where it belongs. Add a comment about a possible improvement. Index: build_exe.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/build_exe.py,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** build_exe.py 28 Oct 2003 11:26:12 -0000 1.36 --- build_exe.py 28 Oct 2003 11:48:13 -0000 1.37 *************** *** 157,168 **** for target in dist.windows + dist.console] - ################ - # refactor, refactor, refactor! - - # XXX zlib is only needed for zipimport from compressed archives (?) - self.includes.append("zlib") # needed for zipimport - self.includes.append("warnings") # needed by Python itself - ## self.packages.append("encodings") - from modulefinder import ModuleFinder, ReplacePackage ReplacePackage("_xmlplus", "xml") --- 157,160 ---- *************** *** 619,632 **** def create_loader(self, item): - # Extension modules can not be loaded from zipfiles. - # So we create a small Python stub to be included in the zipfile, - # which will then load the extension from the file system. - # Without a need for the extensions directory to be in sys.path! - # - # For zlib there must be NO stub, otherwise zipimport wouldn't - # work correctly! - if item.__name__ == "zlib": - return - # Hm, how to avoid needless recreation of this file? pathname = os.path.join(self.temp_dir, "%s.py" % item.__name__) --- 611,614 ---- *************** *** 645,650 **** --- 627,637 ---- def plat_prepare(self): + self.includes.append("warnings") # needed by Python itself + ## self.packages.append("encodings") + # update the self.excludes list to exclude platform specific # modules + # XXX IMO it would be better to not add these to the excludes list, + # but instead filter them out *after* modulefinder has run. if sys.platform == "win32": self.excludes += ["os2", "posix", "dos", "mac", "macfs", "macfsn", |
From: <th...@us...> - 2003-10-28 11:33:34
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe In directory sc8-pr-cvs1:/tmp/cvs-serv24019 Modified Files: build_exe.py Log Message: Remove the warnings when a wxPython program is built. Various wxPython modules create additional builtin modules, modulefinder knows nothing about them. Various get_xxx_template() methods (which can be overridden in a subclass) returning the .exe or .dll template to use. Index: build_exe.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/build_exe.py,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** build_exe.py 28 Oct 2003 09:29:21 -0000 1.35 --- build_exe.py 28 Oct 2003 11:26:12 -0000 1.36 *************** *** 197,204 **** --- 197,246 ---- self.create_binaries(py_files, extensions, dlls) + self.fix_badmodules(mf) + if mf.any_missing(): print "The following modules appear to be missing" print mf.any_missing() + def fix_badmodules(self, mf): + # This dictionary maps additional builtin module names to the + # module that creates them. + # For example, 'wxPython.misc' creates a builtin module named + # 'miscc'. + builtins = {"clip_dndc": "wxPython.clip_dnd", + "cmndlgsc": "wxPython.cmndlgs", + "controls2c": "wxPython.controls2", + "controlsc": "wxPython.controls", + "eventsc": "wxPython.events", + "filesysc": "wxPython.filesys", + "fontsc": "wxPython.fonts", + "framesc": "wxPython.frames", + "gdic": "wxPython.gdi", + "imagec": "wxPython.image", + "mdic": "wxPython.mdi", + "misc2c": "wxPython.misc2", + "miscc": "wxPython.misc", + "printfwc": "wxPython.printfw", + "sizersc": "wxPython.sizers", + "stattoolc": "wxPython.stattool", + "streamsc": "wxPython.streams", + "utilsc": "wxPython.utils", + "windows2c": "wxPython.windows2", + "windows3c": "wxPython.windows3", + "windowsc": "wxPython.windows", + } + + # Somewhat hackish: change modulefinder's badmodules dictionary in place. + bad = mf.badmodules + # mf.badmodules is a dictionary mapping unfound module names + # to another dictionary, the keys of this are the module names + # importing the unknown module. For the 'miscc' module + # mentioned above, it looks like this: + # mf.badmodules["miscc"] = { "wxPython.miscc": 1 } + for name in mf.any_missing(): + mod = builtins.get(name, None) + if mod is not None: + if mod in bad[name] and bad[name] == {mod: 1}: + del bad[name] def find_dlls(self, extensions): *************** *** 296,318 **** # build the executables for target in dist.console: ! dst = self.build_executable(target, "run.exe", arcname, target.script) all_files.append(dst) for target in dist.windows: ! dst = self.build_executable(target, "run_w.exe", arcname, target.script) all_files.append(dst) for target in dist.service: ! # Note: we may want to give the user the option of using run_w.exe ! dst = self.build_service(target, "run.exe", arcname) all_files.append(dst) 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? ! dst = self.build_comserver(target, "run_w.exe", arcname) all_files.append(dst) if getattr(target, "create_dll", True): ! dst = self.build_comserver(target, "run_dll.dll", arcname) all_files.append(dst) --- 338,361 ---- # build the executables for target in dist.console: ! dst = self.build_executable(target, self.get_console_template(), ! arcname, target.script) all_files.append(dst) for target in dist.windows: ! dst = self.build_executable(target, self.get_windows_template(), ! arcname, target.script) all_files.append(dst) for target in dist.service: ! dst = self.build_service(target, self.get_service_template(), ! arcname) all_files.append(dst) for target in dist.com_server: if getattr(target, "create_exe", True): ! dst = self.build_comserver(target, self.get_comexe_template(), ! arcname) all_files.append(dst) if getattr(target, "create_dll", True): ! dst = self.build_comserver(target, self.get_comdll_template(), ! arcname) all_files.append(dst) *************** *** 321,324 **** --- 364,383 ---- ## assert name.startswith(self.dist_dir) ## print "*", name[len(self.dist_dir)+1:] + + # for user convenience, let subclasses override the templates to use + def get_console_template(self): + return is_debug_build and "run_d.exe" or "run.exe" + + def get_windows_template(self): + return is_debug_build and "run_w_d.exe" or "run_w.exe" + + def get_service_template(self): + return is_debug_build and "run_d.exe" or "run.exe" + + def get_comexe_template(self): + return is_debug_build and "run_w_d.exe" or "run_w.exe" + + def get_comdll_template(self): + return is_debug_build and "run_dll_d.dll" or "run_dll.dll" def fixup_distribution(self): |
From: <th...@us...> - 2003-10-28 09:44:29
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe/samples In directory sc8-pr-cvs1:/tmp/cvs-serv6702 Modified Files: setup.py Log Message: Specify an exclude list - early bound com pulls in a lot of unneeded stuff. Index: setup.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/samples/setup.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** setup.py 8 Oct 2003 15:55:36 -0000 1.2 --- setup.py 28 Oct 2003 09:38:55 -0000 1.3 *************** *** 10,16 **** dest_base = "test_wx_console") setup( options = {"py2exe": {"typelibs": ! [('{565783C6-CB41-11D1-8B02-00600806D9B6}', 0, 1, 2)]}}, zipfile = "lib/shared.zip", service = ["MyService"], --- 10,19 ---- dest_base = "test_wx_console") + excludes = ["pywin", "pywin.debugger", "pywin.debugger.dbgcon", "pywin.dialogs"] + setup( options = {"py2exe": {"typelibs": ! [('{565783C6-CB41-11D1-8B02-00600806D9B6}', 0, 1, 2)], ! "excludes": excludes}}, zipfile = "lib/shared.zip", service = ["MyService"], |
From: <th...@us...> - 2003-10-28 09:39:00
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe In directory sc8-pr-cvs1:/tmp/cvs-serv5185 Modified Files: build_exe.py Log Message: fancy_split now also accepts sequences other than strings (list, tuples). This allows to use lists or tuples in the py2exe includes, excludes, packages, and exclude_dlls options. Index: build_exe.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/build_exe.py,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -d -r1.34 -r1.35 *** build_exe.py 28 Oct 2003 08:34:30 -0000 1.34 --- build_exe.py 28 Oct 2003 09:29:21 -0000 1.35 *************** *** 35,41 **** def fancy_split(str, sep=","): # a split which also strips whitespace from the items ! if not str: return [] ! return [item.strip() for item in str.split(sep)] LOADER = """ --- 35,44 ---- 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 LOADER = """ |
From: <th...@us...> - 2003-10-28 09:05:21
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe In directory sc8-pr-cvs1:/tmp/cvs-serv1619 Modified Files: __init__.py Log Message: Reformulate the 'docs'. Index: __init__.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/__init__.py,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** __init__.py 28 Oct 2003 08:35:24 -0000 1.7 --- __init__.py 28 Oct 2003 09:02:59 -0000 1.8 *************** *** 33,45 **** 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) --- 33,45 ---- Items in the console, windows, service or com_server list can also be ! dictionaries to further customize the build process. The following ! keys in the dictionary are recognized, most are optional: + modules (SERVICE, COM) - list of module names (required) + script (EXE) - list of python scripts (required) 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 bitmap_resources - list of 2-tuples (id, pathname) icon_resources - list of 2-tuples (id, pathname) |
From: <th...@us...> - 2003-10-28 09:04:23
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe/samples In directory sc8-pr-cvs1:/tmp/cvs-serv1482 Modified Files: test_wmi.py Log Message: Work around a small problem in win32all build 161. Index: test_wmi.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/samples/test_wmi.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** test_wmi.py 8 Oct 2003 15:55:36 -0000 1.1 --- test_wmi.py 28 Oct 2003 09:02:02 -0000 1.2 *************** *** 1,4 **** --- 1,7 ---- import wmi # Tim Golden's wmi module. + # Workaround for a bug in win32all 161, see Mark Hammond's download page: + import win32com.client.util + computer = wmi.WMI() |
From: <th...@us...> - 2003-10-28 09:02:27
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe/samples In directory sc8-pr-cvs1:/tmp/cvs-serv1241 Modified Files: MyService.py Log Message: Fix the event logging. As Mark explains, the event source can be any string, but we shouldn't be too special in the sample, and use _svc_name_. This also avoids the need to call AddSourceToRegistry (and overwriting the source already added by servicemanager.pyd). Index: MyService.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/samples/MyService.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** MyService.py 1 Oct 2003 19:59:07 -0000 1.1 --- MyService.py 28 Oct 2003 09:00:34 -0000 1.2 *************** *** 21,36 **** _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) --- 21,24 ---- *************** *** 43,47 **** import servicemanager # Write a 'started' event to the event log... ! win32evtlogutil.ReportEvent(self._svc_display_name_, servicemanager.PYS_SERVICE_STARTED, 0, # category --- 31,35 ---- import servicemanager # Write a 'started' event to the event log... ! win32evtlogutil.ReportEvent(self._svc_name_, servicemanager.PYS_SERVICE_STARTED, 0, # category *************** *** 53,57 **** # and write a 'stopped' event to the event log. ! win32evtlogutil.ReportEvent(self._svc_display_name_, servicemanager.PYS_SERVICE_STOPPED, 0, # category --- 41,45 ---- # and write a 'stopped' event to the event log. ! win32evtlogutil.ReportEvent(self._svc_name_, servicemanager.PYS_SERVICE_STOPPED, 0, # category |
From: Thomas H. <th...@py...> - 2003-10-28 08:57:04
|
"Mark Hammond" <mha...@sk...> writes: >> pythoncomxy.dll and pywintypesxy.dll are not required to live in the >> exe-dir, they have to go now in the lib_dir. Thanks to Kenny Pit for >> observing this! > > Ironically, this is true only because we no longer need to link against > pywintypes. Ironic as win32all only just started releasing pywintypes.lib > for py2exe's benefit ;) Yes, and this is great. Thomas |
From: Mark H. <mha...@sk...> - 2003-10-28 08:41:38
|
> pythoncomxy.dll and pywintypesxy.dll are not required to live in the > exe-dir, they have to go now in the lib_dir. Thanks to Kenny Pit for > observing this! Ironically, this is true only because we no longer need to link against pywintypes. Ironic as win32all only just started releasing pywintypes.lib for py2exe's benefit ;) Mark. |
From: <th...@us...> - 2003-10-28 08:36:07
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe In directory sc8-pr-cvs1:/tmp/cvs-serv29784 Modified Files: __init__.py Log Message: Version number is now 0.5.0a3. Index: __init__.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/__init__.py,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** __init__.py 8 Oct 2003 11:49:34 -0000 1.6 --- __init__.py 28 Oct 2003 08:35:24 -0000 1.7 *************** *** 56,60 **** # ! __version__ = "0.5.0a2" import distutils.dist, distutils.core, distutils.command, build_exe, sys --- 56,60 ---- # ! __version__ = "0.5.0a3" import distutils.dist, distutils.core, distutils.command, build_exe, sys |
From: <th...@us...> - 2003-10-28 08:35:22
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe In directory sc8-pr-cvs1:/tmp/cvs-serv29548 Modified Files: build_exe.py Log Message: pythoncomxy.dll and pywintypesxy.dll are not required to live in the exe-dir, they have to go now in the lib_dir. Thanks to Kenny Pit for observing this! Index: build_exe.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/build_exe.py,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -d -r1.33 -r1.34 *** build_exe.py 16 Oct 2003 07:52:52 -0000 1.33 --- build_exe.py 28 Oct 2003 08:34:30 -0000 1.34 *************** *** 545,560 **** # 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 and win32all ! # installation. if "pythoncom" in modules.keys(): import pythoncom --- 545,550 ---- # file lists if sys.platform == "win32": ! # pythoncom and pywintypes are imported via LoadLibrary calls, ! # help py2exe to include the dlls: if "pythoncom" in modules.keys(): import pythoncom *************** *** 606,615 **** ] # special dlls which must be copied to the exe_dir, not the lib_dir - names = "python pywintypes pythoncom".split() - names = ["%s%d%d" % (name, sys.version_info[0], sys.version_info[1]) - for name in names] 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 --- 596,604 ---- ] # special dlls which must be copied to the exe_dir, not the lib_dir if is_debug_build: ! name = "python%d%d_d.dll" % (sys.version_info[0], sys.version_info[1]) ! else: ! name = "python%d%d.dll" % (sys.version_info[0], sys.version_info[1]) ! self.dlls_in_exedir = [name] else: raise DistutilsError, "Platform %s not yet implemented" % sys.platform |
From: <mha...@us...> - 2003-10-16 07:55:32
|
Update of /cvsroot/py2exe/py2exe/sandbox/source In directory sc8-pr-cvs1:/tmp/cvs-serv28162/source Removed Files: PythonService.cpp run_svc.c Log Message: Restructure the way services are hosted. Drop any service specific executables, and move all logic to the service boot script. --- PythonService.cpp DELETED --- --- run_svc.c DELETED --- |
From: <mha...@us...> - 2003-10-16 07:55:25
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe In directory sc8-pr-cvs1:/tmp/cvs-serv28162/py2exe Modified Files: boot_service.py build_exe.py Log Message: Restructure the way services are hosted. Drop any service specific executables, and move all logic to the service boot script. Index: boot_service.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/boot_service.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** boot_service.py 16 Sep 2003 08:50:52 -0000 1.3 --- boot_service.py 16 Oct 2003 07:52:52 -0000 1.4 *************** *** 1,15 **** # boot_service.py import sys # We assume that py2exe has magically set service_module_names # to the module names that expose the services we host. ! service_modules = [] try: for name in service_module_names: ! __import__(name) ! service_modules.append(sys.modules[name]) except NameError: print "This script is designed to be run from inside py2exe" sys.exit(1) - del name ! # nothing more to do! --- 1,52 ---- # boot_service.py import sys + import os + import servicemanager + import win32serviceutil # We assume that py2exe has magically set service_module_names # to the module names that expose the services we host. ! service_klasses = [] try: for name in service_module_names: ! mod = __import__(name) ! for ob in mod.__dict__.values(): ! if hasattr(ob, "_svc_name_"): ! service_klasses.append(ob) except NameError: print "This script is designed to be run from inside py2exe" sys.exit(1) ! if not service_klasses: ! raise RuntimeError, "No service classes found" ! ! # Event source records come from servicemanager ! evtsrc_dll = os.path.abspath(servicemanager.__file__) ! ! # Tell the Python servicemanager what classes we host. ! if len(service_klasses)==1: ! k = service_klasses[0] ! # One service - make the event name the same as the service. ! servicemanager.Initialize(k._svc_name_, evtsrc_dll) ! # And the class that hosts it. ! servicemanager.PrepareToHostSingle(k) ! else: ! # Multiple services (NOTE - this hasn't been tested!) ! # Use the base name of the exe as the event source ! servicemanager.Initialize(os.path.basename(sys.executable), evtsrc_dll) ! for k in service_klasses: ! servicemanager.PrepareToHostMultiple(k._svc_name_, k) ! ! # Simulate the old py2exe command line handling (to some extent) ! # This could do with some re-thought, although it still isn't clear to ! # MarkH that win32serviceutil command line options are appropriate here. ! if len(sys.argv)>1 and sys.argv[1]=="-install": ! for k in service_klasses: ! svc_display_name = getattr(k, "_svc_display_name_", k._svc_name_) ! win32serviceutil.InstallService(None, k._svc_name_, svc_display_name, ! exeName = sys.executable) ! elif len(sys.argv)>1 and sys.argv[1]=="-remove": ! for k in service_klasses: ! win32serviceutil.RemoveService(k._svc_name_) ! else: ! print "Connecting to the Service Control Manager" ! servicemanager.StartServiceCtrlDispatcher() Index: build_exe.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/build_exe.py,v retrieving revision 1.32 retrieving revision 1.33 diff -C2 -d -r1.32 -r1.33 *** build_exe.py 8 Oct 2003 11:54:14 -0000 1.32 --- build_exe.py 16 Oct 2003 07:52:52 -0000 1.33 *************** *** 299,303 **** all_files.append(dst) for target in dist.service: ! dst = self.build_service(target, "run_svc.exe", arcname) all_files.append(dst) --- 299,304 ---- all_files.append(dst) for target in dist.service: ! # Note: we may want to give the user the option of using run_w.exe ! dst = self.build_service(target, "run.exe", arcname) all_files.append(dst) *************** *** 394,418 **** vars = {"service_module_names" : target.modules} boot = self.get_boot_script("service") ! exe_path = self.build_executable(target, template, arcname, boot, vars) ! ! # and the service specific resources. ! from resources.StringTables import StringTable, RT_STRING ! # resource id in the EXE of the serviceclass, ! # see source/PythonService.cpp ! RESOURCE_SERVICE_NAME = 1016 ! ! st = StringTable() ! klass_name, svc_name, svc_display_name, svc_deps = \ ! self.get_service_names(module_name) ! st.add_string(RESOURCE_SERVICE_NAME, ! "%s.%s" % (module_name, klass_name)) ! st.add_string(RESOURCE_SERVICE_NAME+1, svc_name) ! st.add_string(RESOURCE_SERVICE_NAME+2, svc_display_name) ! # XXX service probably won't have a | in them? ! st.add_string(RESOURCE_SERVICE_NAME+3, "|".join(svc_deps)) ! for id, data in st.binary(): ! add_resource(exe_path, data, RT_STRING, id, 0) ! ! return exe_path def build_executable(self, target, template, arcname, script, vars={}): --- 395,399 ---- vars = {"service_module_names" : target.modules} boot = self.get_boot_script("service") ! return self.build_executable(target, template, arcname, boot, vars) def build_executable(self, target, template, arcname, script, vars={}): *************** *** 624,635 **** "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() --- 605,608 ---- |
From: <mha...@us...> - 2003-10-16 07:55:25
|
Update of /cvsroot/py2exe/py2exe/sandbox In directory sc8-pr-cvs1:/tmp/cvs-serv28162 Modified Files: setup.py Log Message: Restructure the way services are hosted. Drop any service specific executables, and move all logic to the service boot script. Index: setup.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/setup.py,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** setup.py 1 Oct 2003 20:17:13 -0000 1.7 --- setup.py 16 Oct 2003 07:52:52 -0000 1.8 *************** *** 300,376 **** ) - - msg = """PYWIN32DIR invalid. - - To build py2exe from source and be able to build services, you must - download and build Mark Hammond's pywin32 source code - from http://starship.python.net/crew/mhammond, and set - the PYWIN32DIR variable to point to this directory - - py2exe will be configured without Windows Service support - """ - def _check_build_dir(map, key, source_root_name, child): - check = os.path.join(source_root_name, child) - if os.path.isdir(check): - map[key] = check - return True - return False - - 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"): - pass - # todo: add com etc maybe? - return ret - - PYWIN32DIR = os.environ.get("PYWIN32DIR", os.path.abspath(r"\pywin32")) - build_dirs = _get_build_dirs(PYWIN32DIR) - if not build_dirs.has_key("win32"): - # Check dev studio build running in place - # win32api.__file__: 'prefix\\pywin32\\win32\\Build\\win32api.pyd' - # PYWIN32DIR -> 'prefix\\pywin32' - try: - import win32api - except ImportError: - raise RuntimeError, msg - - PYWIN32DIR = os.path.dirname(os.path.dirname(os.path.dirname(win32api.__file__))) - build_dirs = _get_build_dirs(PYWIN32DIR) - - if not build_dirs.has_key("win32"): - print "*" * 75 - print msg - print "py2exe will be unable to build a service" - print "*" * 75 - run_svc = None - else: - pywintypes_lib = os.path.join(build_dirs["win32"], "pywintypes.lib") - if not os.path.isfile(pywintypes_lib): - raise RuntimeError, msg - - run_svc = Interpreter("py2exe.run_svc", - ["source/PythonService.cpp", - "source/run_svc.c", "source/start.c", - PYWIN32DIR + "/win32/src/PythonServiceMessages.mc" - ], - include_dirs=["source/zlib", - PYWIN32DIR + "/win32/src"], - libraries=["user32", "advapi32", - "oleaut32", "ole32", "shell32"], - library_dirs=["source/zlib/static32", - build_dirs["win32"]], - define_macros=[("ZLIB_DLL", None), - ("_WINDOWS", None), - ("BUILD_FREEZE", None), - ("BUILD_PY2EXE", None), - ("WIN32", None), - ("__WIN32__", None), - ("NDEBUG", None), - ("STRICT", None) - ] - ) - ##run_dll = Interpreter("py2exe.run_dll", ## ["source/run_dll.c", "source/start.c", "source/icon.rc"], --- 300,303 ---- *************** *** 384,389 **** interpreters = [run, run_w, run_dll] - if run_svc: - interpreters.append(run_svc) setup(name="py2exe", --- 311,314 ---- |
From: Mark H. <mha...@sk...> - 2003-10-13 03:30:59
|
> Reformatted some code from Mark to my own style <wink>. ... > *************** > *** 208,232 **** > rc = PyRun_SimpleString(buffer); > if (rc == 0) { > ! /* load the code objects to execute */ ... > --- 213,237 ---- > rc = PyRun_SimpleString(buffer); > if (rc == 0) { > ! /* load the code objects to execute */ ... Oh - I didn't realize mixing of tabs and spaces was *intentional* <wink> Mark. |
From: <th...@us...> - 2003-10-10 19:23:57
|
Update of /cvsroot/py2exe/py2exe/sandbox/source In directory sc8-pr-cvs1:/tmp/cvs-serv25849 Modified Files: start.c Log Message: Clean up the use of env vars. Now, the built exe shouldn't depend on any of the standard Python environment variables anymore at the start. The exe can, howevere, set PYTHONINSPECT, and an interactive interpreter will be run when the script finishes. Also, there's a PY2EXEVERBOSE variable which corresponds to the PYTHONVERBOSE Python variable. Reformatted some code from Mark to my own style <wink>. Index: start.c =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/source/start.c,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** start.c 16 Sep 2003 08:29:04 -0000 1.8 --- start.c 10 Oct 2003 19:23:50 -0000 1.9 *************** *** 135,143 **** _putenv ("PYTHONSTARTUP="); _putenv ("PYTHONOPTIMIZE="); ! if (getenv("PY2EXEVERBOSE")) _putenv ("PYTHONVERBOSE=1"); else ! _putenv ("PYTHONVERBOSE"); if (p_script_info->unbuffered) --- 135,145 ---- _putenv ("PYTHONSTARTUP="); _putenv ("PYTHONOPTIMIZE="); + _putenv ("PYTHONDEBUG="); + _putenv("PYTHONINSPECT="); ! if (getenv("PY2EXEVERBOSE")) _putenv ("PYTHONVERBOSE=1"); else ! _putenv ("PYTHONVERBOSE="); if (p_script_info->unbuffered) *************** *** 145,150 **** else _putenv ("PYTHONUNBUFFERED="); - - _putenv ("PYTHONDEBUG="); } --- 147,150 ---- *************** *** 152,157 **** Py_OptimizeFlag = p_script_info->optimize; - // Py_VerboseFlag = p_script_info->verbose; - /* XXX Is this correct? For the dll server code? */ /* And we should probably change all the above code if Python is already --- 152,155 ---- *************** *** 164,175 **** /* cause python to calculate the path */ Py_GetPath(); ! /* Set sys.frozen so apps that care can tell. Custom environments may */ ! /* set this later to a 'better' value (eg, COM dlls get 'dll') */ ! PySys_SetObject("frozen", Py_True); /* clean up the environment so that os.system and os.popen processes can run python the normal way */ ! _putenv( "PYTHONPATH=" ); ! _putenv ("PYTHONUNBUFFERED="); ! return 0; } --- 162,175 ---- /* cause python to calculate the path */ Py_GetPath(); ! /* Set sys.frozen so apps that care can tell. Custom environments may */ ! /* set this later to a 'better' value (eg, COM dlls get 'dll') */ ! PySys_SetObject("frozen", Py_True); /* clean up the environment so that os.system and os.popen processes can run python the normal way */ ! /* Hm, actually it would be better to set them to values saved before ! changing them ;-) */ ! _putenv("PYTHONPATH="); ! _putenv("PYTHONUNBUFFERED="); ! _putenv("PYTHONVERBOSE="); return 0; } *************** *** 182,185 **** --- 182,190 ---- void fini(void) { + /* The standard Python 2.3 does also allow this: Set PYTHONINSPECT + in the script and examine it afterwards + */ + if (getenv("PYTHONINSPECT") && Py_FdIsInteractive(stdin, "<stdin>")) + PyRun_InteractiveLoop(stdin, "<stdin>"); /* Clean up */ Py_Finalize(); *************** *** 208,232 **** rc = PyRun_SimpleString(buffer); if (rc == 0) { ! /* load the code objects to execute */ ! PyObject *m=NULL, *d=NULL, *seq=NULL; ! /* We execute then in the context of '__main__' */ ! m = PyImport_AddModule("__main__"); ! if (m) d = PyModule_GetDict(m); ! if (d) seq = PyMarshal_ReadObjectFromString(pScript, numScriptBytes); ! if (seq) { ! int i, max = PySequence_Length(seq); ! for (i=0;i<max;i++) { ! PyObject *sub = PySequence_GetItem(seq, i); ! if (sub && PyCode_Check(sub)) { ! PyObject *discard = PyEval_EvalCode((PyCodeObject *)sub, ! d, d); ! if (!discard) ! PyErr_Print(); ! Py_XDECREF(discard); ! /* keep going even if we fail */ ! } ! Py_XDECREF(sub); ! } } } return rc; --- 213,237 ---- rc = PyRun_SimpleString(buffer); if (rc == 0) { ! /* load the code objects to execute */ ! PyObject *m=NULL, *d=NULL, *seq=NULL; ! /* We execute then in the context of '__main__' */ ! m = PyImport_AddModule("__main__"); ! if (m) d = PyModule_GetDict(m); ! if (d) seq = PyMarshal_ReadObjectFromString(pScript, numScriptBytes); ! if (seq) { ! int i, max = PySequence_Length(seq); ! for (i=0;i<max;i++) { ! PyObject *sub = PySequence_GetItem(seq, i); ! if (sub && PyCode_Check(sub)) { ! PyObject *discard = PyEval_EvalCode((PyCodeObject *)sub, ! d, d); ! if (!discard) ! PyErr_Print(); ! Py_XDECREF(discard); ! /* keep going even if we fail */ } + Py_XDECREF(sub); + } + } } return rc; |
From: <th...@us...> - 2003-10-08 15:55:41
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe/samples In directory sc8-pr-cvs1:/tmp/cvs-serv18893 Modified Files: setup.py Added Files: test_wmi.py Log Message: Add an early bound COM client example. --- NEW FILE: test_wmi.py --- import wmi # Tim Golden's wmi module. computer = wmi.WMI() for item in computer.Win32_Process()[:2]: print item Index: setup.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/samples/setup.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** setup.py 1 Oct 2003 19:59:07 -0000 1.1 --- setup.py 8 Oct 2003 15:55:36 -0000 1.2 *************** *** 2,5 **** --- 2,9 ---- import py2exe + test_wmi = dict( + script = "test_wmi.py", + ) + test_wx_console = dict( script = "test_wx.py", *************** *** 7,14 **** setup( zipfile = "lib/shared.zip", service = ["MyService"], com_server = ["win32com.servers.interp"], ! console = ["hello.py", test_wx_console], ! windows = ["test_wx.py"] ) --- 11,20 ---- setup( + options = {"py2exe": {"typelibs": + [('{565783C6-CB41-11D1-8B02-00600806D9B6}', 0, 1, 2)]}}, zipfile = "lib/shared.zip", service = ["MyService"], com_server = ["win32com.servers.interp"], ! console = ["hello.py", test_wx_console, test_wmi], ! windows = ["test_wx.py"], ) |
From: <th...@us...> - 2003-10-08 11:54:17
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe In directory sc8-pr-cvs1:/tmp/cvs-serv9873 Modified Files: build_exe.py Log Message: Remove the unbuffered global option. Collect all files copied to the dist-dir into a list. Add a typelib target attribute, this allows to add a tlb file as a resource into the executable. Make dry-run work better. Index: build_exe.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/build_exe.py,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** build_exe.py 1 Oct 2003 19:25:23 -0000 1.31 --- build_exe.py 8 Oct 2003 11:54:14 -0000 1.32 *************** *** 1,2 **** --- 1,6 ---- + # Todo: + # + # Make 'unbuffered' a per-target option + from distutils.core import Command from distutils.spawn import spawn *************** *** 100,105 **** "optimization level: -O1 for \"python -O\", " "-O2 for \"python -OO\", and -O0 to disable [default: -O0]"), ! ('unbuffered', 'u', ! "unbuffered binary stdout and stderr"), ("excludes=", 'e', --- 104,109 ---- "optimization level: -O1 for \"python -O\", " "-O2 for \"python -OO\", and -O0 to disable [default: -O0]"), ! ('dist-dir=', 'd', ! "directory to put final built distributions in (default is dist)"), ("excludes=", 'e', *************** *** 153,156 **** --- 157,161 ---- # refactor, refactor, refactor! + # XXX zlib is only needed for zipimport from compressed archives (?) self.includes.append("zlib") # needed for zipimport self.includes.append("warnings") # needed by Python itself *************** *** 238,241 **** --- 243,248 ---- dry_run=self.dry_run) + all_files = [] + print "*** copy extensions ***" # copy the extensions to the target directory *************** *** 254,257 **** --- 261,265 ---- dst = os.path.join(self.lib_dir, os.path.basename(item.__file__)) self.copy_file(src, dst) + all_files.append(dst) # create the shared zipfile containing all Python modules *************** *** 260,263 **** --- 268,272 ---- arcname = self.make_lib_archive(archive_name, base_dir=self.collect_dir, verbose=self.verbose, dry_run=self.dry_run) + all_files.append(arcname) print "*** copy dlls ***" *************** *** 271,274 **** --- 280,284 ---- dst = os.path.join(self.lib_dir, base) self.copy_file(dll, dst) + all_files.append(dst) if self.distribution.has_data_files(): *************** *** 279,289 **** install_data.run() # build the executables for target in dist.console: ! self.build_executable(target, "run.exe", arcname, target.script) for target in dist.windows: ! self.build_executable(target, "run_w.exe", arcname, target.script) for target in dist.service: ! self.build_service(target, "run_svc.exe", arcname) for target in dist.com_server: --- 289,304 ---- install_data.run() + all_files.extend(install_data.get_outputs()) + # build the executables for target in dist.console: ! dst = self.build_executable(target, "run.exe", arcname, target.script) ! all_files.append(dst) for target in dist.windows: ! dst = self.build_executable(target, "run_w.exe", arcname, target.script) ! all_files.append(dst) for target in dist.service: ! dst = self.build_service(target, "run_svc.exe", arcname) ! all_files.append(dst) for target in dist.com_server: *************** *** 292,298 **** # 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): --- 307,320 ---- # console version for debugging, or is the regular # debug support in win32com sufficient? ! dst = self.build_comserver(target, "run_w.exe", arcname) ! all_files.append(dst) if getattr(target, "create_dll", True): ! dst = self.build_comserver(target, "run_dll.dll", arcname) ! all_files.append(dst) ! ! # XXX debug code! ! ## for name in all_files: ! ## assert name.startswith(self.dist_dir) ! ## print "*", name[len(self.dist_dir)+1:] def fixup_distribution(self): *************** *** 345,349 **** boot = self.get_boot_script("com_servers") # and build it ! self.build_executable(target, template, arcname, boot, vars) def get_service_names(self, module_name): --- 367,371 ---- boot = self.get_boot_script("com_servers") # and build it ! return self.build_executable(target, template, arcname, boot, vars) def get_service_names(self, module_name): *************** *** 392,395 **** --- 414,419 ---- add_resource(exe_path, data, RT_STRING, id, 0) + return exe_path + def build_executable(self, target, template, arcname, script, vars={}): # Build an executable for the target *************** *** 442,446 **** script_bytes = si + code_bytes + '\000\000' self.announce("add script resource, %d bytes" % len(script_bytes)) ! add_resource(exe_path, script_bytes, "PYTHONSCRIPT", 1, 0) # Handle all resources specified by the target bitmap_resources = getattr(target, "bitmap_resources", []) --- 466,471 ---- script_bytes = si + code_bytes + '\000\000' self.announce("add script resource, %d bytes" % len(script_bytes)) ! if not self.dry_run: ! add_resource(exe_path, script_bytes, "PYTHONSCRIPT", 1, 0) # Handle all resources specified by the target bitmap_resources = getattr(target, "bitmap_resources", []) *************** *** 448,455 **** bmp_data = open(bmp_filename, "rb").read() # skip the 14 byte bitmap header. ! add_resource(exe_path, bmp_data[14:], RT_BITMAP, bmp_id, False) icon_resources = getattr(target, "icon_resources", []) for ico_id, ico_filename in icon_resources: ! add_icon(exe_path, ico_filename, ico_id) return exe_path --- 473,488 ---- bmp_data = open(bmp_filename, "rb").read() # skip the 14 byte bitmap header. ! if not self.dry_run: ! add_resource(exe_path, bmp_data[14:], RT_BITMAP, bmp_id, False) icon_resources = getattr(target, "icon_resources", []) for ico_id, ico_filename in icon_resources: ! if not self.dry_run: ! add_icon(exe_path, ico_filename, ico_id) ! ! typelib = getattr(target, "typelib", None) ! if typelib is not None: ! data = open(typelib, "rb").read() ! add_resource(exe_path, data, "TYPELIB", 1, False) ! return exe_path *************** *** 573,576 **** --- 606,611 ---- if not self.dry_run: open(pathname, "w").write(source) + else: + return from modulefinder import Module return Module(item.__name__, pathname) |
From: <th...@us...> - 2003-10-08 11:49:38
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe In directory sc8-pr-cvs1:/tmp/cvs-serv9137 Modified Files: __init__.py Log Message: Bump version number. Index: __init__.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/py2exe/__init__.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** __init__.py 1 Oct 2003 19:21:23 -0000 1.5 --- __init__.py 8 Oct 2003 11:49:34 -0000 1.6 *************** *** 56,60 **** # ! __version__ = "0.5.0a1" import distutils.dist, distutils.core, distutils.command, build_exe, sys --- 56,60 ---- # ! __version__ = "0.5.0a2" import distutils.dist, distutils.core, distutils.command, build_exe, sys |
From: <th...@us...> - 2003-10-01 20:17:17
|
Update of /cvsroot/py2exe/py2exe/sandbox In directory sc8-pr-cvs1:/tmp/cvs-serv2289 Modified Files: setup.py Log Message: Only compatible with 2.3. Index: setup.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/setup.py,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** setup.py 1 Oct 2003 20:00:43 -0000 1.6 --- setup.py 1 Oct 2003 20:17:13 -0000 1.7 *************** *** 39,42 **** --- 39,45 ---- from distutils.errors import * + if sys.version_info < (2, 3): + raise DistutilsError, "This package requires Python 2.3 or later" + class Interpreter(Extension): def __init__(self, *args, **kw): |
From: <th...@us...> - 2003-10-01 20:00:47
|
Update of /cvsroot/py2exe/py2exe/sandbox In directory sc8-pr-cvs1:/tmp/cvs-serv31529 Modified Files: setup.py Log Message: The samples are treated as a py2exe.samples package for easy installation, although they aren't a package. This gives us a warning when installing py2exe ;-( Index: setup.py =================================================================== RCS file: /cvsroot/py2exe/py2exe/sandbox/setup.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** setup.py 1 Oct 2003 19:21:18 -0000 1.5 --- setup.py 1 Oct 2003 20:00:43 -0000 1.6 *************** *** 404,408 **** ], interpreters = interpreters, ! packages=['py2exe', 'py2exe.resources'], ) --- 404,409 ---- ], interpreters = interpreters, ! packages=['py2exe', 'py2exe.resources', ! 'py2exe.samples'], # not really a package! ) |
From: <th...@us...> - 2003-10-01 19:59:10
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe/samples In directory sc8-pr-cvs1:/tmp/cvs-serv31127 Added Files: test_wx.py setup.py hello.py MyService.py .cvsignore Log Message: Samples are in the py2exe/samples directory. --- 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:58:25
|
Update of /cvsroot/py2exe/py2exe/sandbox/py2exe/samples In directory sc8-pr-cvs1:/tmp/cvs-serv30949/samples Log Message: Directory /cvsroot/py2exe/py2exe/sandbox/py2exe/samples added to the repository |
From: <th...@us...> - 2003-10-01 19:58:13
|
Update of /cvsroot/py2exe/py2exe/sandbox/samples In directory sc8-pr-cvs1:/tmp/cvs-serv30893 Removed Files: test_wx.py setup.py hello.py MyService.py .cvsignore Log Message: Damn. The samples are in the wrong directory. --- test_wx.py DELETED --- --- setup.py DELETED --- --- hello.py DELETED --- --- MyService.py DELETED --- --- .cvsignore DELETED --- |