I've used py2app for many years and have really appreciated how it makes it
so easy to distribute my app. I'm now running into problems and would
appreciate suggestions for how to debug. My setup:
-- Snow Leopard
-- 32-bit Python 2.7 from python.org
-- py2app 6.3
-- only external package is wxPython 2.8.12.0 (32-bit, Carbon, unicode)
The changes from my last successful use of py2app six months ago are (1)
moving from python 2.6 to python 2.7; (2) upgrading to latest py2app (don't
know what I had before but I think it was at least a couple years old); and
(3) changes to my python code that should not be significant.
When I do
python setup.mac.py py2app
everything seems to operate fine. Stuff gets copied to build dir, creates
app bundle, stripping, etc... (Tried this both with and without -A).
When I run out of the dist dir:
$ ./dist/OpenSTV.app/Contents/MacOS/OpenSTV
I get
Bus error
with a dump.
I don't know where to begin debugging this and would greatly appreciate
pointers. My setup.mac.py is copied below and also the dump that OS X
provides. Note that my setup is a little complicated because I use
__import__ and have to explicitly list the stuff that is being imported that
way.
Jeff
==== setup.mac.py ====
import sys
import os
import glob
import shutil
import pkgutil
from setuptools import setup
from openstv.version import v as OpenSTV_version
# Remove the build and dist folders
shutil.rmtree("build", ignore_errors=True)
shutil.rmtree("dist", ignore_errors=True)
# generic arguments for setup()
name = "OpenSTV"
description = "Implements the single transferable vote, instant runoff "\
"voting, and several other voting systems."
author = "Jeff O'Neill"
author_email = "[email protected]"
url = "http://www.openstv.org"
license = "OpenSTV EULA"
packages = ["openstv",
"openstv.MethodPlugins",
"openstv.LoaderPlugins",
"openstv.ReportPlugins"]
data_files = [ ("", ["openstv/Help.html",
"openstv/License.html"]),
("Icons",
["openstv/Icons/pie.ico",
"openstv/Icons/blt.ico",
"openstv/Icons/splash.png"]) ]
# Get list of plugins because they won't be automatically included
includes = []
pluginPackageNames = ["openstv.MethodPlugins", "openstv.LoaderPlugins",
"openstv.ReportPlugins"]
for x in pluginPackageNames:
package = __import__(x, fromlist="dummy")
ppath = package.__path__
pname = package.__name__ + "."
for importer, modname, ispkg in pkgutil.iter_modules(ppath, pname):
includes.append(modname)
if sys.platform == "darwin":
#
# Usage: ./setup.py
#
# py2app options
plist = {
"CFBundleDocumentTypes":
[{"CFBundleTypeName": "OpenSTV ballot file",
"CFBundleTypeIconFile": "blt.icns",
"CFBundleTypeExtensions": ["blt", "txt"],
"CFBundleTypeRole": "Viewer"}]
}
py2app_options = dict(
includes = includes,
plist = plist,
iconfile = 'openstv/Icons/pie.icns',
no_strip = 0,
)
setup(name = name,
script_name = 'setup.py',
script_args = ['py2app'],
version = OpenSTV_version,
description = description,
author = author,
author_email = author_email,
url = url,
license = license,
packages = packages,
data_files = data_files,
options = dict(py2app = py2app_options),
scripts = ['openstv/OpenSTV.py'],
app = ['openstv/OpenSTV.py'],
setup_requires = ["py2app"],
)
os.system("hdiutil create -ov -imagekey zlib-level=9 -srcfolder
dist/OpenSTV.app dist/OpenSTV.dmg")
==== Dump ====
Process: OpenSTV [1299]
Path:
/Users/joneill/OpenSTV/OpenSTV/dist/OpenSTV.app/Contents/MacOS/OpenSTV
Identifier: OpenSTV
Version: ??? (???)
Code Type: X86 (Native)
Parent Process: bash [466]
Date/Time: 2011-06-05 21:15:26.454 -0400
OS Version: Mac OS X 10.6.7 (10J869)
Report Version: 6
Interval Since Last Report: 1290371 sec
Crashes Since Last Report: 17
Per-App Crashes Since Last Report: 16
Anonymous UUID: 4449D1E2-549A-4752-9ACA-F453FB09A892
Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000000000000
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Application Specific Information:
objc_msgSend() selector name: copy
Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 libobjc.A.dylib 0x953caedb objc_msgSend + 27
1 com.apple.CoreFoundation 0x9387f8ee cacheBundleInfo + 190
2 com.apple.CoreFoundation 0x9387f82d _CFAppVersionCheckLessThan
+ 157
3 com.apple.CoreFoundation 0x93879704 __CFInitialize + 2004
4 dyld 0x8fe0ee40
ImageLoaderMachO::doImageInit(ImageLoader::LinkContext const&) + 154
5 dyld 0x8fe0ee74
ImageLoaderMachO::doInitialization(ImageLoader::LinkContext const&) + 30
6 dyld 0x8fe0d31e
ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&,
unsigned int) + 246
7 dyld 0x8fe0d3d1
ImageLoader::runInitializers(ImageLoader::LinkContext const&) + 61
8 dyld 0x8fe0200b
dyld::runInitializers(ImageLoader*) + 34
9 dyld 0x8fe0b299 dlopen + 558
10 libSystem.B.dylib 0x94128848 dlopen + 66
11 ...thonmac.unspecified.OpenSTV 0x00005a9f main + 63
12 ...thonmac.unspecified.OpenSTV 0x000017e2 start + 258
13 ...thonmac.unspecified.OpenSTV 0x00001709 start + 41
Thread 0 crashed with X86 Thread State (32-bit):
eax: 0x00103bc0 ebx: 0x93880964 ecx: 0x918f3858 edx: 0x001012f0
edi: 0x00000000 esi: 0x00103bc0 ebp: 0xbfffefe8 esp: 0xbfffef94
ss: 0x0000001f efl: 0x00010206 eip: 0x953caedb cs: 0x00000017
ds: 0x0000001f es: 0x0000001f fs: 0x00000000 gs: 0x00000037
cr2: 0x00000000
Binary Images:
0x1000 - 0x6ff7 +org.pythonmac.unspecified.OpenSTV (
1,
9,
0
) ((
1,
9,
0
)) <62637566-0890-030C-A884-540872ADC1F3>
/Users/joneill/OpenSTV/OpenSTV/dist/OpenSTV.app/Contents/MacOS/OpenSTV
0x8fe00000 - 0x8fe4162b dyld 132.1 (???)
<A4F6ADCC-6448-37B4-ED6C-ABB2CD06F448> /usr/lib/dyld
0x9236a000 - 0x92378fe7 libz.1.dylib 1.2.3 (compatibility 1.0.0)
<3CE8AA79-F077-F1B0-A039-9103A4A02E92> /usr/lib/libz.1.dylib
0x93877000 - 0x939f2fe7 com.apple.CoreFoundation 6.6.4 (550.42)
<C78D5079-663E-9734-7AFA-6CE79A0539F1>
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
0x93e1b000 - 0x93e61ff7 libauto.dylib ??? (???)
<29422A70-87CF-10E2-CE59-FEE1234CFAAE> /usr/lib/libauto.dylib
0x94121000 - 0x942c8ff7 libSystem.B.dylib 125.2.10 (compatibility 1.0.0)
<ADF8138B-2384-2FC0-CCBF-C4721B53568A> /usr/lib/libSystem.B.dylib
0x94fe6000 - 0x94fe9fe7 libmathCommon.A.dylib 315.0.0 (compatibility 1.0.0)
<1622A54F-1A98-2CBE-B6A4-2122981A500E> /usr/lib/system/libmathCommon.A.dylib
0x953c5000 - 0x95472fe7 libobjc.A.dylib 227.0.0 (compatibility 1.0.0)
<DF8E4CFA-3719-3415-0BF1-E8C5E561C3B1> /usr/lib/libobjc.A.dylib
0x97cc9000 - 0x97d33fe7 libstdc++.6.dylib 7.9.0 (compatibility 7.0.0)
<411D87F4-B7E1-44EB-F201-F8B4F9227213> /usr/lib/libstdc++.6.dylib
0x990fa000 - 0x9927cfe7 libicucore.A.dylib 40.0.0 (compatibility 1.0.0)
<D375C1CF-C88D-C5F6-3C49-CD429023FBAC> /usr/lib/libicucore.A.dylib
0xffff0000 - 0xffff1fff libSystem.B.dylib ??? (???)
<ADF8138B-2384-2FC0-CCBF-C4721B53568A> /usr/lib/libSystem.B.dylib
_________________________________________________________
OpenSTV -- Software for ranked-choice and preferential voting systems
http://www.OpenSTV.org
_______________________________________________
Pythonmac-SIG maillist - [email protected]
http://mail.python.org/mailman/listinfo/pythonmac-sig
unsubscribe: http://mail.python.org/mailman/options/Pythonmac-SIG