I am having a problem building the latest 2.9.3.1 wxPython version. I
am the lead developer of the project relax which is a specialised
scientific software package. It has an optional GUI based on the
wxWidgets framework (http://www.nmr-relax.com/screenshots.html). I
would like provide the software as a Mac application via the py2app
building process, and for this I have a custom Python 2.7.2 Framework
build and installed in my home directory. To add wxPython to this
framework, I have build the package with:
This is obviously from within the wxPython directory. At the bottom
of this message is the full output of the build process (well, the
second time around so that only the relevant messages are shown). The
key is that the directory lib/wx/-osx_cocoa-unicode-2.9 is created,
but later on the directory lib/wx/osx_cocoa-unicode-2.9 is being
searched for and not found causing the build/installation process to
fail. Would anyone know how to fix the build scripts to make this
work?
Cheers,
Edward
P. S. Here is the full output:
$ ~/bin/python2.7 build-wxpython.py --build_dir=../bld --mac_framework
--osx_cocoa --prefix=$HOME --unicode --install
old_options = set(['--prefix=/Users/edward', '--mac_framework', '--
install', '--osx_cocoa', '--build_dir=../bld', '--unicode'])
sys.argv = ['--build_dir=../bld', '--mac_framework', '--osx_cocoa', '--
prefix=/Users/edward', '--unicode', '--install']
wxWidgets directory is: /Users/edward/src/wxPython-src-2.9.3.1
wxWidgets build options: ['--wxpython', '--jobs=1', '--prefix=/Users/
edward', '--unicode', '--no_config', '--osx_cocoa', '--installdir=',
'--install', '--mac_framework', '--mac_framework_prefix=/Library/
Frameworks', '--builddir=/Users/edward/src/wxPython-src-2.9.3.1/bld/
cocoa']
Configure options: ['--enable-unicode', '--with-osx_cocoa', '--with-
opengl', '--enable-sound', '--enable-graphics_ctx', '--enable-
mediactrl', '--enable-display', '--enable-geometry', '--enable-
debug_flag', '--enable-optimise', '--disable-debugreport', '--enable-
uiactionsim', '--enable-monolithic', '--with-macosx-sdk=/Developer/
SDKs/MacOSX10.5.sdk', '--prefix=/Library/Frameworks/
wxOSXCocoa.framework/Versions/2.9.3', '--enable-universal_binary']
/usr/bin/make
make --jobs=1
(if test -f utils/wxrc/Makefile ; then cd utils/wxrc && make all ; fi)
make[1]: Nothing to be done for `all'.
/usr/bin/make
make install
mkdir -p /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/lib
cp -fp /Users/edward/src/wxPython-src-2.9.3.1/bld/cocoa/lib/
libwx_osx_cocoau-2.9-.dylib /Library/Frameworks/wxOSXCocoa.framework/
Versions/2.9.3/lib
cp -fp /Users/edward/src/wxPython-src-2.9.3.1/bld/cocoa/lib/
libwx_osx_cocoau-2.9.3.0.0.dylib /Library/Frameworks/
wxOSXCocoa.framework/Versions/2.9.3/lib
(cd /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/lib ; rm -
f libwx_osx_cocoau-2.9-.dylib libwx_osx_cocoau-2.9.3.dylib; ln -s
libwx_osx_cocoau-2.9.3.0.0.dylib libwx_osx_cocoau-2.9.3.dylib; ln -s
libwx_osx_cocoau-2.9.3.dylib libwx_osx_cocoau-2.9-.dylib)
mkdir -p /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/lib
cp -fp /Users/edward/src/wxPython-src-2.9.3.1/bld/cocoa/lib/
libwx_osx_cocoau_gl-2.9-.dylib /Library/Frameworks/
wxOSXCocoa.framework/Versions/2.9.3/lib
cp -fp /Users/edward/src/wxPython-src-2.9.3.1/bld/cocoa/lib/
libwx_osx_cocoau_gl-2.9.3.0.0.dylib /Library/Frameworks/
wxOSXCocoa.framework/Versions/2.9.3/lib
(cd /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/lib ; rm -
f libwx_osx_cocoau_gl-2.9-.dylib libwx_osx_cocoau_gl-2.9.3.dylib; ln -
s libwx_osx_cocoau_gl-2.9.3.0.0.dylib libwx_osx_cocoau_gl-2.9.3.dylib;
ln -s libwx_osx_cocoau_gl-2.9.3.dylib libwx_osx_cocoau_gl-2.9-.dylib)
(if test -f utils/wxrc/Makefile ; then cd utils/wxrc && make all ; fi)
make[1]: Nothing to be done for `all'.
(if test -f utils/wxrc/Makefile ; then cd utils/wxrc && make install ;
fi)
mkdir -p /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/bin
cp -fp wxrc /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/
bin
rm -f /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/bin/
wxrc /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/bin/
wxrc-2.9
cp -fp wxrc /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/
bin
mv -f /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/bin/
wxrc /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/bin/
wxrc-2.9
(cd /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/bin && ln -
s wxrc-2.9 wxrc)
mkdir -p /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/bin
mkdir -p /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/lib/
wx/config
cp -fp lib/wx/config/-osx_cocoa-unicode-2.9 /Library/Frameworks/
wxOSXCocoa.framework/Versions/2.9.3/lib/wx/config
(cd /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/bin && rm -
f wx-config && ln -s /Library/Frameworks/wxOSXCocoa.framework/Versions/
2.9.3/lib/wx/config/-osx_cocoa-unicode-2.9 wx-config)
mkdir -p /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/share/
locale
for l in ca cs da de el es fi fr hu id it ja nl pl ru sl sv tr uk zh
zh_CN zh_TW ; do \
mkdir -p /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/
share/locale/$l ; \
mkdir -p /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/
share/locale/$l/LC_MESSAGES ; \
if test -f /Users/edward/src/wxPython-src-2.9.3.1/locale/$l.mo ; then
\
cp -fp /Users/edward/src/wxPython-src-2.9.3.1/locale/$l.mo /Library/
Frameworks/wxOSXCocoa.framework/Versions/2.9.3/share/locale/$l/
LC_MESSAGES/wxstd.mo ; \
fi ; \
done
mkdir -p /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/share/
locale
for l in it ; do \
mkdir -p /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/
share/locale/$l ; \
mkdir -p /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/
share/locale/$l/LC_MESSAGES ; \
if test -f /Users/edward/src/wxPython-src-2.9.3.1/locale/msw/$l.mo ;
then \
cp -fp /Users/edward/src/wxPython-src-2.9.3.1/locale/msw/$l.mo /
Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/share/locale/$l/
LC_MESSAGES/wxmsw.mo ; \
fi ; \
done
mkdir -p /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/share/
aclocal
(cd /Users/edward/src/wxPython-src-2.9.3.1 ; cp -fp wxwin.m4 /Library/
Frameworks/wxOSXCocoa.framework/Versions/2.9.3/share/aclocal)
mkdir -p /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/share/
bakefile/presets
(cd /Users/edward/src/wxPython-src-2.9.3.1/build/bakefiles/wxpresets/
presets ; cp -fp wx.bkl wx_unix.bkl wx_win32.bkl wx_xrc.bkl
wx_presets.py /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/
share/bakefile/presets)
mkdir -p /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/lib/
wx/include/-osx_cocoa-unicode-2.9/wx
for f in setup.h ; do \
if test ! -d /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/
lib/wx/include/-osx_cocoa-unicode-2.9/wx/`dirname $f` ; then \
mkdir -p /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/lib/
wx/include/-osx_cocoa-unicode-2.9/wx/`dirname $f`; \
fi; \
cp -fp ./lib/wx/include/-osx_cocoa-unicode-2.9/wx/$f /Library/
Frameworks/wxOSXCocoa.framework/Versions/2.9.3/lib/wx/include/-
osx_cocoa-unicode-2.9/wx/$f; \
done
mkdir -p /Library/Frameworks/wxOSXCocoa.framework/Versions/2.9.3/
include/wx-2.9
for f in wx/afterstd.h wx/any.h wx/anystr.h wx/app.h wx/apptrait.h wx/
archive.h wx/arrimpl.cpp wx/arrstr.h wx/atomic.h wx/base64.h wx/
beforestd.h wx/buffer.h wx/build.h wx/chartype.h wx/checkeddelete.h wx/
chkconf.h wx/clntdata.h wx/cmdargs.h wx/cmdline.h wx/confbase.h wx/
config.h wx/convauto.h wx/containr.h wx/cpp.h wx/crt.h wx/datetime.h
wx/datstrm.h wx/dde.h wx/debug.h wx/defs.h wx/dir.h wx/dlimpexp.h wx/
dlist.h wx/dynarray.h wx/dynlib.h wx/dynload.h wx/encconv.h wx/event.h
wx/eventfilter.h wx/evtloop.h wx/except.h wx/features.h wx/flags.h wx/
ffile.h wx/file.h wx/fileconf.h wx/filefn.h wx/filename.h wx/filesys.h
wx/fontenc.h wx/fontmap.h wx/fs_arc.h wx/fs_filter.h wx/fs_mem.h wx/
fs_zip.h wx/hash.h wx/hashmap.h wx/hashset.h wx/html/forcelnk.h wx/
iconloc.h wx/init.h wx/intl.h wx/iosfwrap.h wx/ioswrap.h wx/ipc.h wx/
ipcbase.h wx/kbdstate.h wx/language.h wx/link.h wx/list.h wx/
listimpl.cpp wx/log.h wx/longlong.h wx/math.h wx/memconf.h wx/memory.h
wx/memtext.h wx/mimetype.h wx/module.h wx/mousestate.h wx/msgout.h wx/
msgqueue.h wx/mstream.h wx/numformatter.h wx/object.h wx/platform.h wx/
platinfo.h wx/power.h wx/process.h wx/ptr_scpd.h wx/ptr_shrd.h wx/
recguard.h wx/regex.h wx/rtti.h wx/scopedarray.h wx/scopedptr.h wx/
scopeguard.h wx/sharedptr.h wx/snglinst.h wx/sstream.h wx/stack.h wx/
stackwalk.h wx/stdpaths.h wx/stdstream.h wx/stockitem.h wx/stopwatch.h
wx/strconv.h wx/stream.h wx/string.h wx/stringimpl.h wx/stringops.h wx/
strvararg.h wx/sysopt.h wx/tarstrm.h wx/textbuf.h wx/textfile.h wx/
thread.h wx/thrimpl.cpp wx/time.h wx/timer.h wx/tls.h wx/tokenzr.h wx/
tracker.h wx/translation.h wx/txtstrm.h wx/typeinfo.h wx/types.h wx/
unichar.h wx/uri.h wx/ustring.h wx/utils.h wx/variant.h wx/vector.h wx/
version.h wx/versioninfo.h wx/volume.h wx/weakref.h wx/wfstream.h wx/
wx.h wx/wxchar.h wx/wxcrt.h wx/wxcrtbase.h wx/wxcrtvararg.h wx/
wxprec.h wx/xlocale.h wx/xti.h wx/xti2.h wx/xtistrm.h wx/xtictor.h wx/
xtihandler.h wx/xtiprop.h wx/xtitypes.h wx/zipstrm.h wx/zstream.h wx/
meta/convertible.h wx/meta/if.h wx/meta/implicitconversion.h wx/meta/
int2type.h wx/meta/movable.h wx/meta/pod.h wx/fswatcher.h wx/generic/
fswatcher.h wx/osx/core/cfdataref.h wx/osx/core/cfref.h wx/osx/core/
cfstring.h wx/osx/core/hid.h wx/osx/core/private.h wx/osx/core/
stdpaths.h wx/osx/core/private/strconv_cf.h wx/unix/app.h wx/unix/
apptbase.h wx/unix/apptrait.h wx/unix/chkconf.h wx/unix/evtloop.h wx/
unix/evtloopsrc.h
>> I am having a problem building the latest 2.9.3.1 wxPython version. I >> am the lead developer of the project relax which is a specialised >> scientific software package. It has an optional GUI based on the >> wxWidgets framework (http://www.nmr-relax.com/screenshots.html). I >> would like provide the software as a Mac application via the py2app >> building process, and for this I have a custom Python 2.7.2 Framework >> build and installed in my home directory. To add wxPython to this >> framework, I have build the package with:
>> This is obviously from within the wxPython directory. At the bottom >> of this message is the full output of the build process (well, the >> second time around so that only the relevant messages are shown). The >> key is that the directory lib/wx/-osx_cocoa-unicode-2.9 is created, >> but later on the directory lib/wx/osx_cocoa-unicode-2.9 is being >> searched for and not found causing the build/installation process to >> fail. Would anyone know how to fix the build scripts to make this >> work?
> Try it without the --mac-framework flag. That was experimental and never > really finished. The release builds are still being done without building a > framework.
How is it possible to have a custom Python+wxPython framework if this flag is broken? I worked out that the compilation problem was on line 550 of the wxPython-src-2.9.3.1/build/tools/build-wxwidgets.py script whereby the line:
text = file('lib/wx/config/%s' % configname).read()
should be:
text = file('lib/wx/config/-%s' % configname).read()
With this, the wxPython framework now builds successfully and is used alongside the Python framework. However if I run the GUI, I now have other issues:
$ ~/bin/python2.7 relax -g Trace/BPT trap $
and I see a window which says "Python quit unexpectedly".
>>> I am having a problem building the latest 2.9.3.1 wxPython version. I >>> am the lead developer of the project relax which is a specialised >>> scientific software package. It has an optional GUI based on the >>> wxWidgets framework (http://www.nmr-relax.com/screenshots.html). I >>> would like provide the software as a Mac application via the py2app >>> building process, and for this I have a custom Python 2.7.2 Framework >>> build and installed in my home directory. To add wxPython to this >>> framework, I have build the package with:
>>> This is obviously from within the wxPython directory. At the bottom >>> of this message is the full output of the build process (well, the >>> second time around so that only the relevant messages are shown). The >>> key is that the directory lib/wx/-osx_cocoa-unicode-2.9 is created, >>> but later on the directory lib/wx/osx_cocoa-unicode-2.9 is being >>> searched for and not found causing the build/installation process to >>> fail. Would anyone know how to fix the build scripts to make this >>> work?
>> Try it without the --mac-framework flag. That was experimental and never >> really finished. The release builds are still being done without building a >> framework.
> How is it possible to have a custom Python+wxPython framework if this > flag is broken?
Python needs to be a framework, but the extension modules and other libraries it loads do not need to be. Apple imposes a lot of constraints about the stricture and content of a framework, and it has been a little tricky so far to get wxWidgets to fit into that entirely.
However it does work fine with wxWidgets built as a normal shared/dynamic library. You can use DYLD_LIBRARY_PATH to control where the dynamic libs are loaded from, or use install_name_tool to change where the wxPython extension modules look for them (and build-wxpython.py should do that for you IIRC.)
> I worked out that the compilation problem was on line > 550 of the wxPython-src-2.9.3.1/build/tools/build-wxwidgets.py script > whereby the line:
> text = file('lib/wx/config/%s' % configname).read()
> should be:
> text = file('lib/wx/config/-%s' % configname).read()
Actually, the leading hyphen should not be there at all, so I expect that the problem may be in wxWidgets' configure script when the framework flag is used, or perhaps something else that is happening early in the make install process. But either way I would try it without the framework flag and just let wxWidgets install normally to $PREFIX/lib.
>>>> I am having a problem building the latest 2.9.3.1 wxPython version. I >>>> am the lead developer of the project relax which is a specialised >>>> scientific software package. It has an optional GUI based on the >>>> wxWidgets framework (http://www.nmr-relax.com/screenshots.html). I >>>> would like provide the software as a Mac application via the py2app >>>> building process, and for this I have a custom Python 2.7.2 Framework >>>> build and installed in my home directory. To add wxPython to this >>>> framework, I have build the package with:
>>>> This is obviously from within the wxPython directory. At the bottom >>>> of this message is the full output of the build process (well, the >>>> second time around so that only the relevant messages are shown). The >>>> key is that the directory lib/wx/-osx_cocoa-unicode-2.9 is created, >>>> but later on the directory lib/wx/osx_cocoa-unicode-2.9 is being >>>> searched for and not found causing the build/installation process to >>>> fail. Would anyone know how to fix the build scripts to make this >>>> work?
>>> Try it without the --mac-framework flag. That was experimental and never >>> really finished. The release builds are still being done without >>> building a >>> framework.
>> How is it possible to have a custom Python+wxPython framework if this >> flag is broken?
> Python needs to be a framework, but the extension modules and other > libraries it loads do not need to be. Apple imposes a lot of constraints > about the stricture and content of a framework, and it has been a little > tricky so far to get wxWidgets to fit into that entirely.
> However it does work fine with wxWidgets built as a normal shared/dynamic > library. You can use DYLD_LIBRARY_PATH to control where the dynamic libs > are loaded from, or use install_name_tool to change where the wxPython > extension modules look for them (and build-wxpython.py should do that for > you IIRC.)
>> I worked out that the compilation problem was on line >> 550 of the wxPython-src-2.9.3.1/build/tools/build-wxwidgets.py script >> whereby the line:
>> text = file('lib/wx/config/%s' % configname).read()
>> should be:
>> text = file('lib/wx/config/-%s' % configname).read()
> Actually, the leading hyphen should not be there at all, so I expect that > the problem may be in wxWidgets' configure script when the framework flag is > used, or perhaps something else that is happening early in the make install > process. But either way I would try it without the framework flag and just > let wxWidgets install normally to $PREFIX/lib.