Add a feature to support specifying an additional search directory for
packages. (Mark Hammond) Folded some long lines.
This commit is contained in:
parent
ce5988b3d9
commit
e35c60156b
|
@ -28,6 +28,11 @@ Options:
|
|||
|
||||
-m: Additional arguments are module names instead of filenames.
|
||||
|
||||
-a package=dir: Additional directories to be added to the package's
|
||||
__path__. Used to simulate directories added by the
|
||||
package at runtime (eg, by OpenGL and win32com).
|
||||
More than one -a option may be given for each package.
|
||||
|
||||
-l file: Pass the file to the linker (windows only)
|
||||
|
||||
-d: Debugging mode for the module finder.
|
||||
|
@ -92,7 +97,7 @@ def main():
|
|||
exec_prefix = None # settable with -P option
|
||||
extensions = []
|
||||
exclude = [] # settable with -x option
|
||||
addn_link = [] # settable with -l, but only honored under Windows.
|
||||
addn_link = [] # settable with -l, but only honored under Windows.
|
||||
path = sys.path[:]
|
||||
modargs = 0
|
||||
debug = 1
|
||||
|
@ -100,7 +105,8 @@ def main():
|
|||
win = sys.platform[:3] == 'win'
|
||||
|
||||
# default the exclude list for each platform
|
||||
# if win: exclude = exclude + ['dos', 'dospath', 'mac', 'macpath', 'MACFS', 'posix', 'os2']
|
||||
## if win: exclude = exclude + [
|
||||
## 'dos', 'dospath', 'mac', 'macpath', 'MACFS', 'posix', 'os2']
|
||||
|
||||
# modules that are imported by the Python runtime
|
||||
implicits = ["site", "exceptions"]
|
||||
|
@ -111,10 +117,11 @@ def main():
|
|||
target = 'a.out' # normally derived from script name
|
||||
makefile = 'Makefile'
|
||||
subsystem = 'console'
|
||||
if win: extensions_c = 'frozen_extensions.c'
|
||||
|
||||
# parse command line
|
||||
try:
|
||||
opts, args = getopt.getopt(sys.argv[1:], 'de:hmo:p:P:qs:wx:l:')
|
||||
opts, args = getopt.getopt(sys.argv[1:], 'a:de:hmo:p:P:qs:wx:l:')
|
||||
except getopt.error, msg:
|
||||
usage('getopt error: ' + str(msg))
|
||||
|
||||
|
@ -147,6 +154,8 @@ def main():
|
|||
exclude.append(a)
|
||||
if o == '-l':
|
||||
addn_link.append(a)
|
||||
if o == '-a':
|
||||
apply(modulefinder.AddPackagePath, tuple(string.split(a,"=", 2)))
|
||||
|
||||
# default prefix and exec_prefix
|
||||
if not exec_prefix:
|
||||
|
@ -169,7 +178,8 @@ def main():
|
|||
config_c_in = os.path.join(prefix, 'Modules', 'config.c.in')
|
||||
frozenmain_c = os.path.join(prefix, 'Python', 'frozenmain.c')
|
||||
makefile_in = os.path.join(exec_prefix, 'Modules', 'Makefile')
|
||||
if win: frozendllmain_c = os.path.join(exec_prefix, 'Pc\\frozen_dllmain.c')
|
||||
if win:
|
||||
frozendllmain_c = os.path.join(exec_prefix, 'Pc\\frozen_dllmain.c')
|
||||
else:
|
||||
binlib = os.path.join(exec_prefix,
|
||||
'lib', 'python%s' % version, 'config')
|
||||
|
@ -250,6 +260,7 @@ def main():
|
|||
config_c = os.path.join(odir, config_c)
|
||||
target = os.path.join(odir, target)
|
||||
makefile = os.path.join(odir, makefile)
|
||||
if win: extensions_c = os.path.join(odir, extensions_c)
|
||||
|
||||
# Handle special entry point requirements
|
||||
# (on Windows, some frozen programs do not use __main__, but
|
||||
|
@ -260,7 +271,8 @@ def main():
|
|||
if win:
|
||||
import winmakemakefile
|
||||
try:
|
||||
custom_entry_point, python_entry_is_main = winmakemakefile. get_custom_entry_point(subsystem)
|
||||
custom_entry_point, python_entry_is_main = \
|
||||
winmakemakefile.get_custom_entry_point(subsystem)
|
||||
except ValueError, why:
|
||||
usage(why)
|
||||
|
||||
|
@ -337,7 +349,7 @@ def main():
|
|||
|
||||
# search for unknown modules in extensions directories (not on Windows)
|
||||
addfiles = []
|
||||
addmoddefns = [] # Windows list of modules.
|
||||
frozen_extensions = [] # Windows list of modules.
|
||||
if unknown or (not win and builtins):
|
||||
if not win:
|
||||
addfiles, addmods = \
|
||||
|
@ -352,16 +364,10 @@ def main():
|
|||
import checkextensions_win32
|
||||
# Get a list of CExtension instances, each describing a module
|
||||
# (including its source files)
|
||||
addmoddefns = checkextensions_win32.checkextensions(unknown, extensions)
|
||||
maindefn = checkextensions_win32.CExtension( '__main__',
|
||||
[frozenmain_c, os.path.basename(frozen_c),frozendllmain_c])
|
||||
|
||||
for mod in addmoddefns:
|
||||
frozen_extensions = checkextensions_win32.checkextensions(
|
||||
unknown, extensions)
|
||||
for mod in frozen_extensions:
|
||||
unknown.remove(mod.name)
|
||||
builtins.append(mod.name)
|
||||
|
||||
addmoddefns.append( maindefn )
|
||||
|
||||
|
||||
# report unknown modules
|
||||
if unknown:
|
||||
|
@ -371,12 +377,19 @@ def main():
|
|||
# windows gets different treatment
|
||||
if win:
|
||||
# Taking a shortcut here...
|
||||
import winmakemakefile
|
||||
import winmakemakefile, checkextensions_win32
|
||||
checkextensions_win32.write_extension_table(extensions_c,
|
||||
frozen_extensions)
|
||||
# Create a module definition for the bootstrap C code.
|
||||
xtras = [frozenmain_c, os.path.basename(frozen_c),
|
||||
frozendllmain_c, extensions_c]
|
||||
maindefn = checkextensions_win32.CExtension( '__main__', xtras )
|
||||
frozen_extensions.append( maindefn )
|
||||
outfp = open(makefile, 'w')
|
||||
try:
|
||||
winmakemakefile.makemakefile(outfp,
|
||||
locals(),
|
||||
addmoddefns,
|
||||
frozen_extensions,
|
||||
os.path.basename(target))
|
||||
finally:
|
||||
outfp.close()
|
||||
|
|
Loading…
Reference in New Issue