[issue8089] 2.6/3.1 32-bit/64-bit universal builds always run in 64-bit on 10.6

Tom Loredo report at bugs.python.org
Mon Mar 15 05:23:50 CET 2010


Tom Loredo <loredo at astro.cornell.edu> added the comment:

Attempted to build 2.6.5rc2 on Mac Pro (2006), OS 10.6.2, following instructions in Mac/README:

./configure --prefix=/usr/local/tmp --enable-framework --with-universal-archs=intel --enable-universalsdk=/

Results of "make test" are as expected from past experience (but what architecture is being tested?):

332 tests OK.
2 tests failed:
    test_asynchat test_smtplib
32 tests skipped:
    test_al test_bsddb test_bsddb3 test_cd test_cl test_codecmaps_cn
    test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr
    test_codecmaps_tw test_curses test_dl test_epoll test_gl
    test_imageop test_imgfile test_largefile test_linuxaudiodev
    test_normalization test_ossaudiodev test_pep277 test_py3kwarn
    test_smtpnet test_socketserver test_startfile test_sunaudiodev
    test_timeout test_urllib2net test_urllibnet test_winreg
    test_winsound test_zipfile64
1 skip unexpected on darwin:
    test_dl

Notably, test_tcl passes without incident.

Running the following within the installation directory runs the 64-bit pre-installation executable (judging by sys.maxint):

$ DYLD_FRAMEWORK_PATH=`pwd`: python.exe

Thus I presume it is the 64-bit version being run by "make test".

The installed IDLE still has the Tk new window freeze issue; sys.maxint indicates it's the 32-bit version that is running when launcing IDLE.  I have a setup.py patch that will detect a 32-bit 10.6 installation and link against Apple's Tcl/Tk-8.4 compatibility version if the user hasn't
installed their own Tcl/Tk frameworks, but it's an ugly hack and I'm not sure this is desirable; we should probably just encourage installing newer Tcl/Tk.  The hack does produce a working 32-bit IDLE, however.

Running "python" on the command line runs the 32-bit version; is this intended?  I think the default behavior for universal builds should be documented in the Mac/README, or at some location pointed to in the README.

I still see no way to access the two architectures.  My ./configure installs command line executables in /usr/local/tmp/bin, a non-existing directory before the install.  After installation, its contents are:

idle@             pydoc2.6@         python2.6@        pythonw2.6@
idle2.6@          python@           python2.6-config@ smtpd.py@
pydoc@            python-config@    pythonw@          smtpd2.6.py@

I was expecting something along the lines of python-32 and/or python-64 to be here; what is the intended mechanism for accessing the two architectures?

$ arch -i386 python
gives me the (default) 32-bit version.

$ arch -x86_64 python
arch: posix_spawnp: python: Bad CPU type in executable

Whereas before with a universal install like this I was getting a 64-bit default and no way to access 32-bit (IIRC), now I appear to be in the reverse scenario.

Is there an error in my build process, or is there still an installation bug for dual-architecture Intel installs?

----------
nosy: +tloredo
type:  -> behavior
versions: +Python 2.6 -Python 3.1

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue8089>
_______________________________________


More information about the Python-bugs-list mailing list