On 15/8/11 5:20 PM, Ned Deily wrote:
In article<4e49b196.7050...@gmail.com>,
  "precipice.development"<precipice.developm...@gmail.com>  wrote:
ImportError:
dlopen(/Users/jph/Public/hello.app/Contents/Resources/lib/python2.7/lib-dynloa
d/_mysql.so,
2): Symbol not found: _strnlen
8/15/11 4:30:08 PM
[0x0-0x2e02e].org.pythonmac.unspecified.hello[716]      Referenced from:
/Users/jph/Public/hello.app/Contents/MacOS/../Frameworks/libmysqlclient_r.16.d
ylib

Background
Did a Hello World type test app on Lion.  Used py2app to bundle it into
an OSX app.  Works fine.  Copied over to a fresh install of Snow Leopard
10.6.8 and works fine.  Bundle is standalone.

Now, added MySQLdb and made a database connection on Lion - works as
expected - result returned from simple query. MySQL database is on a
third machine.  Now copied bundle over to Snow Leopard machine (again a
fresh install) and received the following error:

8/15/11 4:30:08 PM
[0x0-0x2e02e].org.pythonmac.unspecified.hello[716]    Traceback (most
recent call last):
8/15/11 4:30:08 PM
[0x0-0x2e02e].org.pythonmac.unspecified.hello[716]      File
"/Users/jph/Public/hello.app/Contents/Resources/__boot__.py", line 57,
in<module>
8/15/11 4:30:08 PM
[0x0-0x2e02e].org.pythonmac.unspecified.hello[716]        _run('hello.py')
8/15/11 4:30:08 PM
[0x0-0x2e02e].org.pythonmac.unspecified.hello[716]      File
"/Users/jph/Public/hello.app/Contents/Resources/__boot__.py", line 54,
in _run
8/15/11 4:30:08 PM
[0x0-0x2e02e].org.pythonmac.unspecified.hello[716]        execfile(path,
globals(), globals())
8/15/11 4:30:08 PM
[0x0-0x2e02e].org.pythonmac.unspecified.hello[716]      File
"/Users/jph/Public/hello.app/Contents/Resources/hello.py", line 9, in
<module>
8/15/11 4:30:08 PM
[0x0-0x2e02e].org.pythonmac.unspecified.hello[716]        import MySQLdb
8/15/11 4:30:08 PM
[0x0-0x2e02e].org.pythonmac.unspecified.hello[716]      File
"MySQLdb/__init__.pyc", line 19, in<module>
8/15/11 4:30:08 PM
[0x0-0x2e02e].org.pythonmac.unspecified.hello[716]    ImportError:
dlopen(/Users/jph/Public/hello.app/Contents/Resources/lib/python2.7/lib-dynloa
d/_mysql.so,
2): Symbol not found: _strnlen
8/15/11 4:30:08 PM
[0x0-0x2e02e].org.pythonmac.unspecified.hello[716]      Referenced from:
/Users/jph/Public/hello.app/Contents/MacOS/../Frameworks/libmysqlclient_r.16.d
ylib
8/15/11 4:30:08 PM
[0x0-0x2e02e].org.pythonmac.unspecified.hello[716]      Expected in:
/usr/lib/libSystem.B.dylib
8/15/11 4:30:08 PM
[0x0-0x2e02e].org.pythonmac.unspecified.hello[716]     in
/Users/jph/Public/hello.app/Contents/MacOS/../Frameworks/libmysqlclient_r.16.d
ylib
8/15/11 4:30:09 PM    hello[716]    hello Error
8/15/11 4:30:10 PM    com.apple.launchd.peruser.501[102]
([0x0-0x2e02e].org.pythonmac.unspecified.hello[716]) Exited with exit
code: 255

The key line seems to be ImportError:
dlopen(/Users/jph/Public/hello.app/Contents/Resources/lib/python2.7/lib-dynloa
d/_mysql.so,
2): Symbol not found: _strnlen
8/15/11 4:30:08 PM
[0x0-0x2e02e].org.pythonmac.unspecified.hello[716]      Referenced from:
/Users/jph/Public/hello.app/Contents/MacOS/../Frameworks/libmysqlclient_r.16.d
ylib

Python on Lion is from MacPorts.

Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:05)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on
darwin
Type "help", "copyright", "credits" or "license" for more information.

/opt/local/bin/python: Mach-O 64-bit executable x86_64

MySQLdb is also from MacPorts

mysql5/mysql/libmysqlclient.16.dylib: Mach-O 64-bit dynamically linked
shared library x86_64
mysql5/mysql/libmysqlclient_r.16.dylib: Mach-O 64-bit dynamically linked
shared library x86_64
Py2App script

setup.py
from setuptools import setup

setup(
              app = ['hello.py'],
              options = {
                              'py2app': {
                                          'argv_emulation': 0,
                                          #'plist': {
                                                    #plist'LSPrefersPPC':
False,
                                          #},
                                          'includes': ['PySide.QtCore',
'PySide.QtGui', 'PySide.QtWebKit', 'PySide.QtNetwork', 'MySQLdb'],
                                          'site_packages': 1
                                        }
                      },
                      data_files = ['copying.txt'],
                      setup_requires = ['py2app'],
                      )

Does anyone have any ideas of how to correct this.
On 10.7, did you build all of the installed MacPorts MySQL packages with
MACOSX_DEPLOYMENT_TARGET=10.6 and the 10.6 SDK? (I'm not sure how well
that is supported with MacPorts.)  It's always dicey building something
on release n (10.7 in this case) and using it on release n-1 (10.6)
unless you use the appropriate SDK and deployment target.   It is
generally safe to do the reverse, though: build on 10.6 to deploy on
10.7.

I went ahead and added the following to macports.conf in order to for the target to 10.6

macosx_deployment_target 10.6
sdkroot /Developer/SDKs/MacOSX10.6.sdk


Unfortunately, I got a compilation error in qt

:info:build kernel/qt_cocoa_helpers_mac.mm:1523: warning: invalid receiver type ‘void *’
:info:build make[2]: *** [.obj/debug-shared/qt_cocoa_helpers_mac.o] Error 1
:info:build make[2]: *** Waiting for unfinished jobs....
:info:build make[2]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_aqua_qt4-mac/qt4-mac/work/ qt-everywhere-opensource-src-4.7.3/src/gui'
:info:build make[1]: *** [debug-all] Error 2
:info:build make[1]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_aqua_qt4-mac/qt4-mac/work/ qt-everywhere-opensource-src-4.7.3/src/gui'
:info:build make: *** [sub-gui-all-ordered] Error 2
:info:build make: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_aqua_qt4-mac/qt4-mac/work/qt- everywhere-opensource-src-4.7.3' :info:build shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_aqua_qt4-mac/qt4-mac/work/qt- everywhere-opensource-src-4.7.3" && /usr/bin/make -j4 -w all " returned error 2 :error:build Target org.macports.build returned: shell command failed (see log for details)
:debug:build Backtrace: shell command failed (see log for details)
while executing
"command_exec build"
(procedure "portbuild::build_main" line 8)
invoked from within
"$procedure $targetname"
:info:build Warning: the following items did not execute (for qt4-mac): org.macports.activate org.macports.build org.macports.destroot org.macports.install
:error:build Failed to install qt4-mac
:notice:build Log for qt4-mac is at: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_aqua_qt4-mac/qt4-mac/main.log

Looks like reverting back may be the only option for now.

Thanks for your help.
_______________________________________________
Pythonmac-SIG maillist  -  Pythonmac-SIG@python.org
http://mail.python.org/mailman/listinfo/pythonmac-sig
unsubscribe: http://mail.python.org/mailman/options/Pythonmac-SIG

Reply via email to