Commit 00a0b97d authored by Just van Rossum's avatar Just van Rossum

Reworked --strip option: it will now look at _any_ file that's marked

executable in the bundle. Therefore got rid of the "binaries" attribute.
parent 4735b234
...@@ -363,7 +363,7 @@ class AppBuilder(BundleBuilder): ...@@ -363,7 +363,7 @@ class AppBuilder(BundleBuilder):
# Include these packages. # Include these packages.
includePackages = [] includePackages = []
# Strip binaries. # Strip binaries from debug info.
strip = 0 strip = 0
# Found Python modules: [(name, codeobject, ispkg), ...] # Found Python modules: [(name, codeobject, ispkg), ...]
...@@ -373,9 +373,6 @@ class AppBuilder(BundleBuilder): ...@@ -373,9 +373,6 @@ class AppBuilder(BundleBuilder):
missingModules = [] missingModules = []
maybeMissingModules = [] maybeMissingModules = []
# List of all binaries (executables or shared libs), for stripping purposes
binaries = []
def setup(self): def setup(self):
if self.standalone and self.mainprogram is None: if self.standalone and self.mainprogram is None:
raise BundleBuilderError, ("must specify 'mainprogram' when " raise BundleBuilderError, ("must specify 'mainprogram' when "
...@@ -425,7 +422,6 @@ class AppBuilder(BundleBuilder): ...@@ -425,7 +422,6 @@ class AppBuilder(BundleBuilder):
execpath = pathjoin(self.execdir, execname) execpath = pathjoin(self.execdir, execname)
if not self.symlink_exec: if not self.symlink_exec:
self.files.append((self.executable, execpath)) self.files.append((self.executable, execpath))
self.binaries.append(execpath)
self.execpath = execpath self.execpath = execpath
if self.mainprogram is not None: if self.mainprogram is not None:
...@@ -502,8 +498,6 @@ class AppBuilder(BundleBuilder): ...@@ -502,8 +498,6 @@ class AppBuilder(BundleBuilder):
for item in PYTHONFRAMEWORKGOODIES: for item in PYTHONFRAMEWORKGOODIES:
src = pathjoin(frameworkpath, item) src = pathjoin(frameworkpath, item)
dst = pathjoin(destbase, item) dst = pathjoin(destbase, item)
if item == "Python":
self.binaries.append(dst)
self.files.append((src, dst)) self.files.append((src, dst))
def addPythonModules(self): def addPythonModules(self):
...@@ -546,12 +540,30 @@ class AppBuilder(BundleBuilder): ...@@ -546,12 +540,30 @@ class AppBuilder(BundleBuilder):
self.message("Error: can't strip binaries: no strip program at " self.message("Error: can't strip binaries: no strip program at "
"%s" % STRIP_EXEC, 0) "%s" % STRIP_EXEC, 0)
else: else:
import stat
self.message("Stripping binaries", 1) self.message("Stripping binaries", 1)
for relpath in self.binaries: def walk(top):
self.message("Stripping %s" % relpath, 2) for name in os.listdir(top):
abspath = pathjoin(self.bundlepath, relpath) path = pathjoin(top, name)
if not os.path.islink(abspath): if os.path.islink(path):
rv = os.system("%s -S \"%s\"" % (STRIP_EXEC, abspath)) continue
if os.path.isdir(path):
walk(path)
else:
mod = os.stat(path)[stat.ST_MODE]
if not (mod & 0100):
continue
relpath = path[len(self.bundlepath):]
self.message("Stripping %s" % relpath, 2)
inf, outf = os.popen4("%s -S \"%s\"" %
(STRIP_EXEC, path))
output = outf.read().strip()
if output:
# usually not a real problem, like when we're
# trying to strip a script
self.message("Problem stripping %s:" % relpath, 3)
self.message(output, 3)
walk(self.bundlepath)
def findDependencies(self): def findDependencies(self):
self.message("Finding module dependencies", 1) self.message("Finding module dependencies", 1)
...@@ -598,7 +610,6 @@ class AppBuilder(BundleBuilder): ...@@ -598,7 +610,6 @@ class AppBuilder(BundleBuilder):
dstpath = name.split(".")[:-1] + [filename] dstpath = name.split(".")[:-1] + [filename]
dstpath = pathjoin("Contents", "Resources", *dstpath) dstpath = pathjoin("Contents", "Resources", *dstpath)
self.files.append((path, dstpath)) self.files.append((path, dstpath))
self.binaries.append(dstpath)
if mod.__code__ is not None: if mod.__code__ is not None:
ispkg = mod.__path__ is not None ispkg = mod.__path__ is not None
if not USE_ZIPIMPORT or name != "site": if not USE_ZIPIMPORT or name != "site":
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment