I am in a hurry so going to have to go soon. You really do need: --with-universal-archs=all
when building Python else it doesn't build 64-bit, but Python configure script is broken when specifying 'all' or '64-bit'. Being Christmas, not sure when I will get too look at this. It does mention this error in: http://bugs.python.org/issue1099 but that seems to be for when debugging being enabled. I'll have to revise what the so called voodoo is for build a framework build on MacOS X is. :-( Graham 2009/12/24 Graham Dumpleton <[email protected]>: > Scratch that. Something is indeed amiss. > > I had to use --disable-framework because else you got: > > grumpy:mod_wsgi-4.X-2 grahamd$ sudo /usr/sbin/apachectl -t > httpd: Syntax error on line 118 of /private/etc/apache2/httpd.conf: > Cannot load /usr/libexec/apache2/mod_wsgi.so into server: > dlopen(/usr/libexec/apache2/mod_wsgi.so, 10): Symbol not found: > _PyBool_Type\n Referenced from: /usr/libexec/apache2/mod_wsgi.so\n > Expected in: flat namespace\n in /usr/libexec/apache2/mod_wsgi.so > > If you use --disable-framework, although it runs you have: > > grumpy:mod_wsgi-4.X-2 grahamd$ otool -L .libs/mod_wsgi.so > .libs/mod_wsgi.so: > /System/Library/Frameworks/Python.framework/Versions/2.6/Python > (compatibility version 2.6.0, current version 2.6.1) > /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current > version 125.0.0) > > Right now have no idea what they have broken. > > Graham > > 2009/12/24 Graham Dumpleton <[email protected]>: >> Okay, do the following. >> >> 1. Trash the whole unpacked Python source directory and start from new >> tar ball extract. That or run 'make distclean'. >> >> 2. Make sure using /usr/bin/gcc. >> >> grumpy:Python-2.6.2 grahamd$ which cc >> /usr/bin/cc >> grumpy:Python-2.6.2 grahamd$ which gcc >> /usr/bin/gcc >> >> If not, take any MacPorts or Homebrew directories out of PATH which >> have alternate gcc installation. >> >> 3. Run configure for Python as: >> >> ./configure --prefix=/usr/local/python-2.6.4 >> --enable-framework=/usr/local/python-2.6.4/frameworks >> --enable-universalsdk=/ MACOSX_DEPLOYMENT_TARGET=10.5 >> >> That is, get rid of --with-universal-archs=all completely. You still >> need MACOSX_DEPLOYMENT_TARGET=10.5. >> >> 4. Do the make and make install. >> >> 5. Build mod_wsgi using --with-python option and the --disable-framework >> option. >> >> grumpy:mod_wsgi-4.X-2 grahamd$ ./configure >> --with-python=/usr/local/python-2.6.4/bin/python --disable-framework >> checking for apxs2... no >> checking for apxs... /usr/sbin/apxs >> checking Apache version... 2.2.13 >> configure: creating ./config.status >> config.status: creating Makefile >> grumpy:mod_wsgi-4.X-2 grahamd$ make >> /usr/sbin/apxs -c >> -I/usr/local/python-2.6.4/frameworks/Python.framework/Versions/2.6/include/python2.6 >> -DNDEBUG -Wc,'-arch x86_64' -Wc,'-arch i386' -Wc,'-arch ppc7400' >> mod_wsgi.c >> -L/usr/local/python-2.6.4/frameworks/Python.framework/Versions/2.6/lib >> -L/usr/local/python-2.6.4/frameworks/Python.framework/Versions/2.6/lib/python2.6/config >> -arch x86_64 -arch i386 -arch ppc7400 -lpython2.6 -ldl >> /usr/share/apr-1/build-1/libtool --silent --mode=compile gcc >> -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -I/usr/local/include >> -I/usr/include/apache2 -I/usr/include/apr-1 -I/usr/include/apr-1 >> -arch x86_64 -arch i386 -arch ppc7400 >> -I/usr/local/python-2.6.4/frameworks/Python.framework/Versions/2.6/include/python2.6 >> -DNDEBUG -c -o mod_wsgi.lo mod_wsgi.c && touch mod_wsgi.slo >> /usr/share/apr-1/build-1/libtool --silent --mode=link gcc -o >> mod_wsgi.la -rpath /usr/libexec/apache2 -module -avoid-version >> mod_wsgi.lo >> -L/usr/local/python-2.6.4/frameworks/Python.framework/Versions/2.6/lib >> -L/usr/local/python-2.6.4/frameworks/Python.framework/Versions/2.6/lib/python2.6/config >> -arch x86_64 -arch i386 -arch ppc7400 -lpython2.6 -ldl >> warning: no debug symbols in executable (-arch x86_64) >> warning: no debug symbols in executable (-arch i386) >> warning: no debug symbols in executable (-arch ppc7400) >> grumpy:mod_wsgi-4.X-2 grahamd$ make >> make: Nothing to be done for `all'. >> grumpy:mod_wsgi-4.X-2 grahamd$ sudo make install >> /usr/sbin/apxs -i -S LIBEXECDIR=/usr/libexec/apache2 -n 'mod_wsgi' >> mod_wsgi.la >> /usr/share/httpd/build/instdso.sh >> SH_LIBTOOL='/usr/share/apr-1/build-1/libtool' mod_wsgi.la >> /usr/libexec/apache2 >> /usr/share/apr-1/build-1/libtool --mode=install cp mod_wsgi.la >> /usr/libexec/apache2/ >> cp .libs/mod_wsgi.so /usr/libexec/apache2/mod_wsgi.so >> cp .libs/mod_wsgi.lai /usr/libexec/apache2/mod_wsgi.la >> cp .libs/mod_wsgi.a /usr/libexec/apache2/mod_wsgi.a >> chmod 644 /usr/libexec/apache2/mod_wsgi.a >> ranlib /usr/libexec/apache2/mod_wsgi.a >> ---------------------------------------------------------------------- >> Libraries have been installed in: >> /usr/libexec/apache2 >> >> If you ever happen to want to link against installed libraries >> in a given directory, LIBDIR, you must either use libtool, and >> specify the full pathname of the library, or use the `-LLIBDIR' >> flag during linking and do at least one of the following: >> - add LIBDIR to the `DYLD_LIBRARY_PATH' environment variable >> during execution >> >> See any operating system documentation about shared libraries for >> more information, such as the ld(1) and ld.so(8) manual pages. >> ---------------------------------------------------------------------- >> chmod 755 /usr/libexec/apache2/mod_wsgi.so >> grumpy:mod_wsgi-4.X-2 grahamd$ sudo /usr/sbin/apachectl stop >> grumpy:mod_wsgi-4.X-2 grahamd$ sudo /usr/sbin/apachectl -t >> Warning: DocumentRoot [/usr/docs/dummy-host.example.com] does not exist >> Warning: DocumentRoot [/usr/docs/dummy-host2.example.com] does not exist >> Syntax OK >> grumpy:mod_wsgi-4.X-2 grahamd$ sudo /usr/sbin/apachectl start >> >> >> That works for me. >> >> Graham >> >> 2009/12/24 Graham Dumpleton <[email protected]>: >>> Try dropping the MACOSX_DEPLOYMENT_TARGET option completely. When I >>> built 2.6.2 on Snow Leopard, I used: >>> >>> ./configure --prefix=/usr/local/python-2.6.2 >>> --enable-framework=/usr/local/python-2.6.2/frameworks >>> --enable-universalsdk=/ --with-universal-archs=all >>> >>> I'll get down 2.6.4 and see what happens when I try and built it. >>> >>> Graham >>> >>> 2009/12/24 Adam Wolf <[email protected]>: >>>> I've been bashing my head against the wall trying to get 2.6.4 >>>> installed form source. >>>> >>>> First, --with-universal-archs=all doesn't work on Snow Leopard: >>>> >>>> http://bugs.python.org/issue6245 >>>> >>>> Roland mentions only adding the "intel" and "3-way" options for 2.7 >>>> and 3.1 but it seems to be available in my 2.6.4 configure script. So >>>> running it with >>>> >>>> --with-universal-archs=intel >>>> >>>> gets past the wchar_t size error, but now I get: >>>> >>>> ... >>>> configure: creating ./config.status >>>> config.status: error: cannot find input file: Mac/Makefile.in >>>> ... >>>> >>>> In fact, just ./configure gives me the same error. >>>> >>>> My /Mac directory is completely empty so I'm thinking its a bug in >>>> python's configure script. I seem to be the only person in the world >>>> who has had this problem. >>>> >>>> Could using the Mac Installer Disc Image work? Otherwise I'll open a >>>> bug with the python guys if you don't have any other ideas. >>>> >>>> Thanks >>>> >>>> Adam >>>> >>>> On Dec 23, 4:47 pm, Graham Dumpleton <[email protected]> >>>> wrote: >>>>> 2009/12/24 Adam Wolf <[email protected]>: >>>>> >>>>> > Ok, I'll give that a shot now (Apple's 2.6.1 with Homebrew's >>>>> > postgresql was not compatible with psycopg2). >>>>> >>>>> > I'm using 10.6 so shouldn't it be: >>>>> >>>>> > --enable-universalsdk=/ MACOSX_DEPLOYMENT_TARGET=10.6 >>>>> >>>>> Not necessarily. That says what the oldest version of MacOS X is that >>>>> you want to support with that installation. So, no harm in leaving it >>>>> as 10.5 and not sure you would get any benefit in saying to target >>>>> 10.6. >>>>> >>>>> Graham >>>>> >>>>> >>>>> >>>>> > ? >>>>> >>>>> > Thanks >>>>> >>>>> > On Dec 23, 4:11 pm, Graham Dumpleton <[email protected]> >>>>> > wrote: >>>>> >> Can you install Python 2.6.4 from source code yourself. >>>>> >>>>> >> You will need to have XCode installed. >>>>> >>>>> >> Use 'configure' arguments to Python as documented in: >>>>> >>>>> >> ./configure --prefix=/usr/local/python-2.6.4 \ >>>>> >> --enable-framework=/usr/local/python-2.6.4/frameworks \ >>>>> >> --enable-universalsdk=/ MACOSX_DEPLOYMENT_TARGET=10.5 \ >>>>> >> --with-universal-archs=all >>>>> >>>>> >> This will install stuff under /usr/local/python-2.6.4 and >>>>> >> /Applications/Python 2.6. >>>>> >>>>> >> When you build mod_wsgi then use: >>>>> >>>>> >> ./configure --with-python=/usr/local/python-2.6.4/bin/python >>>>> >>>>> >> You obviously will need to install Python wrappers for PostgreSQL and >>>>> >> other Python packages with that /usr/local/python2.6 installation. >>>>> >>>>> >> Graham >>>>> >>>>> >> 2009/12/24 Adam Wolf <[email protected]>: >>>>> >>>>> >> > Graham- >>>>> >>>>> >> > The version of Python 2.6.1 as supplied by Apple is incompatible with >>>>> >> > the postgres DB adapter psycopg2. A workaround is running: >>>>> >>>>> >> > defaults write com.apple.versioner.python Prefer-32-Bit -bool yes >>>>> >>>>> >> > to force python to run in 32 bit mode. >>>>> >>>>> >> > This solved the problem while using the python development server. >>>>> >> > However, when I went to set up a production environment using >>>>> >> > mod_wsgi, psycopg2 started to throw the same error as before: >>>>> >>>>> >> > Symbol not found: _PQbackendPID >>>>> >>>>> >> > I imagine that mod_wsgi running in 64-bit mode is forcing python back >>>>> >> > into 64-bit mode also, which causes psycopg2 to fail. Perhaps I could >>>>> >> > force mod_wsgi to run in 32-bit mode also... but that kinda sucks. >>>>> >>>>> >> > Then I found this: >>>>> >>>>> >> >http://benkreeger.com/personal/conquering-symbol-not-found-_pqbackendpid >>>>> >>>>> >> > which advised using Homebrew to install python and postgresql to >>>>> >> > resolve the issue. This did resolve the issue on the django >>>>> >> > development server in 64-bit mode. However, upon review of this >>>>> >> > advice >>>>> >> > I don't see why it is necessary to use the Homebrew python >>>>> >> > installation. >>>>> >>>>> >> > I'll give it a shot with Apple's 2.6.1 now... >>>>> >>>>> >> > On Dec 23, 3:11 pm, Graham Dumpleton <[email protected]> >>>>> >> > wrote: >>>>> >> >> 2009/12/24 Adam Wolf <[email protected]>: >>>>> >>>>> >> >> > Graham- >>>>> >>>>> >> >> > CONFIG_ARGS= '--prefix=/usr/local/Cellar/python/2.6.4' 'CC=/ >>>>> >> >> > Developer/usr/llvm-gcc-4.2/bin/llvm-gcc-4.2' 'CFLAGS=-O4 >>>>> >> >> > -march=core2 - >>>>> >> >> > mmmx -msse4.1 -w -pipe' >>>>> >> >> > 'LDFLAGS=-L/usr/local/Cellar/readline/6.0/lib' >>>>> >> >> > 'CPPFLAGS=-I/usr/local/Cellar/readline/6.0/include' >>>>> >>>>> >> >> > This is a python installation made by the new mac package >>>>> >> >> > management >>>>> >> >> > script Homebrew. I'm following this advice: >>>>> >>>>> >> >> Which is not installed as a framework install, nor even as a dylib >>>>> >> >> install. This possibly makes it unusable for embedding such as with >>>>> >> >> Apache/mod_wsgi as it only provides a static library and under >>>>> >> >> MacOS X >>>>> >> >> it may not be possible to link them into dynamically loadable >>>>> >> >> objects. >>>>> >>>>> >> >> Is there a specific reason why you cannot just use Python 2.6.1 as >>>>> >> >> supplied by Apple? What changes are there in 2.6.2-2.6.4 that you >>>>> >> >> cannot do without? >>>>> >>>>> >> >> Graham >>>>> >>>>> >> >> >http://benkreeger.com/personal/conquering-symbol-not-found-_pqbackendpid >>>>> >>>>> >> >> > to solve the problem described there. The alternative is to force >>>>> >> >> > everything, including mod_wsgi, to run in 32-bit mode which is not >>>>> >> >> > preferable to me. >>>>> >>>>> >> >> > Archimedes:config awolf$ ls -las >>>>> >> >> > /usr/local/Cellar/python/2.6.4/lib >>>>> >> >> > total 8376 >>>>> >> >> > 0 drwxr-xr-x 4 root wheel 136 Dec 19 18:33 . >>>>> >> >> > 0 drwxr-xr-x 8 root wheel 272 Dec 19 18:33 .. >>>>> >> >> > 8376 -r--r--r-- 2 root wheel 4285288 Dec 19 18:33 >>>>> >> >> > libpython2.6.a >>>>> >> >> > 0 drwxr-xr-x 631 root wheel 21454 Dec 19 18:33 python2.6 >>>>> >> >> > Archimedes:config awolf$ ls -las >>>>> >> >> > /usr/local/Cellar/python/2.6.4/lib/ >>>>> >> >> > python2.6/config >>>>> >> >> > total 8576 >>>>> >> >> > 0 drwxr-xr-x 12 root wheel 408 Dec 19 18:33 . >>>>> >> >> > 0 drwxr-xr-x 631 root wheel 21454 Dec 19 18:33 .. >>>>> >> >> > 88 -rw-r--r-- 1 root wheel 42950 Dec 19 18:33 Makefile >>>>> >> >> > 40 -rw-r--r-- 1 root wheel 18265 Dec 19 18:33 Setup >>>>> >> >> > 8 -rw-r--r-- 1 root wheel 368 Dec 19 18:33 Setup.config >>>>> >> >> > 8 -rw-r--r-- 1 root wheel 41 Dec 19 18:33 Setup.local >>>>> >> >> > 8 -rw-r--r-- 1 root wheel 2077 Dec 19 18:33 config.c >>>>> >> >> > 8 -rw-r--r-- 1 root wheel 1457 Dec 19 18:33 config.c.in >>>>> >> >> > 16 -rwxr-xr-x 1 root wheel 7122 Dec 19 18:33 install-sh >>>>> >> >> > 8376 -r--r--r-- 2 root wheel 4285288 Dec 19 18:33 >>>>> >> >> > libpython2.6.a >>>>> >> >> > 16 -rwxr-xr-x 1 root wheel 7431 Dec 19 18:33 makesetup >>>>> >> >> > 8 -rw-r--r-- 1 root wheel 2060 Dec 19 18:33 python.o >>>>> >> >> > Archimedes:config awolf$ file /usr/local/Cellar/python/2.6.4/lib/ >>>>> >> >> > python2.6/config/libpython* >>>>> >> >> > /usr/local/Cellar/python/2.6.4/lib/python2.6/config/libpython2.6.a: >>>>> >> >> > current ar archive random library >>>>> >>>>> >> >> > Thanks, >>>>> >>>>> >> >> > -Adam >>>>> >>>>> >> >> > On Dec 22, 7:54 pm, Graham Dumpleton <[email protected]> >>>>> >> >> > wrote: >>>>> >> >> >> 2009/12/23 Adam Wolf <[email protected]>: >>>>> >>>>> >> >> >> > Hello, >>>>> >>>>> >> >> >> > I'm trying to run mod_wsgi 3.1 under Apache 2.2.14 using a >>>>> >> >> >> > non-default >>>>> >> >> >> > python installation on Mac OS X 10.6. >>>>> >>>>> >> >> >> > After downloading the mod_wsgi source I run: >>>>> >>>>> >> >> >> > sudo apachectl -k stop >>>>> >>>>> >> >> >> > then >>>>> >>>>> >> >> >> > ./configure >>>>> >> >> >> > --with-python=/usr/local/Cellar/python/2.6.4/bin/python >>>>> >> >> >> > make >>>>> >> >> >> > sudo make install >>>>> >>>>> >> >> >> > I then start up apache again >>>>> >>>>> >> >> >> > sudo apachectl -k start >>>>> >> >> >> > When I cat /var/log/httpd/error_log I see: >>>>> >> >> >> > [Mon Dec 21 12:27:26 2009] [warn] mod_wsgi: Compiled for >>>>> >> >> >> > Python/2.6.4. >>>>> >> >> >> > [Mon Dec 21 12:27:26 2009] [warn] mod_wsgi: Runtime using >>>>> >> >> >> > Python/ >>>>> >> >> >> > 2.6.1. >>>>> >> >> >> > [Mon Dec 21 12:27:26 2009] [notice] Apache/2.2.14 (Unix) DAV/2 >>>>> >> >> >> > mod_wsgi/3.1 Python/2.6.1 configured -- resuming normal >>>>> >> >> >> > operations >>>>> >>>>> >> >> >> > When I run otool -L mod_wsgi.so is see: >>>>> >>>>> >> >> >> > mod_wsgi.so: >>>>> >> >> >> > /System/Library/Frameworks/Python.framework/Versions/2.6/Python >>>>> >> >> >> > (compatibility version 2.6.0, current version 2.6.1) >>>>> >> >> >> > /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, >>>>> >> >> >> > current >>>>> >> >> >> > version 125.0.0) >>>>> >>>>> >> >> >> > It linking with the system framework- not the one I installed >>>>> >> >> >> > in /usr/ >>>>> >> >> >> > local using Homebrew. >>>>> >>>>> >> >> >> > Upon Graham's advice at StackOverflow >>>>> >> >> >> > (http://stackoverflow.com/ >>>>> >> >> >> > questions/1942462/modwsgi-on-snow-leopard-python-version-mismatch) >>>>> >> >> >> > I >>>>> >> >> >> > tried cleaning my build and then running the configure script >>>>> >> >> >> > with -- >>>>> >> >> >> > disable-framework >>>>> >>>>> >> >> >> > ./configure >>>>> >> >> >> > --with-python=/usr/local/Cellar/python/2.6.4/bin/python -- >>>>> >> >> >> > disable-framework >>>>> >>>>> >> >> >> > This gave me the same results. >>>>> >>>>> >> >> >> > Here is the output of one such build attempt: >>>>> >>>>> >> >> >> > Archimedes:~ awolf$ sudo rm /opt/apache2/modules/mod_wsgi.so >>>>> >> >> >> > Password: >>>>> >> >> >> > Archimedes:~ awolf$ cd ~/Downloads/mod_wsgi-3.1 >>>>> >> >> >> > Archimedes:mod_wsgi-3.1 awolf$ rm -rf build >>>>> >> >> >> > Archimedes:mod_wsgi-3.1 awolf$ make distclean >>>>> >> >> >> > rm -rf .libs >>>>> >> >> >> > rm -f mod_wsgi.o mod_wsgi.la mod_wsgi.lo mod_wsgi.slo >>>>> >> >> >> > mod_wsgi.loT >>>>> >> >> >> > rm -f config.log config.status >>>>> >> >> >> > rm -rf autom4te.cache >>>>> >> >> >> > rm -f Makefile Makefile.in >>>>> >> >> >> > Archimedes:mod_wsgi-3.1 awolf$ ./configure >>>>> >> >> >> > --with-python=/usr/local/ >>>>> >> >> >> > Cellar/python/2.6.4/bin/python --disable-framework >>>>> >> >> >> > checking for apxs2... no >>>>> >> >> >> > checking for apxs... /opt/apache2/bin/apxs >>>>> >> >> >> > checking Apache version... 2.2.14 >>>>> >> >> >> > configure: creating ./config.status >>>>> >> >> >> > config.status: creating Makefile >>>>> >> >> >> > Archimedes:mod_wsgi-3.1 awolf$ make >>>>> >> >> >> > /opt/apache2/bin/apxs -c >>>>> >> >> >> > -I/usr/local/Cellar/python/2.6.4/include/ >>>>> >> >> >> > python2.6 -DNDEBUG -Wc,'-arch x86_64' mod_wsgi.c >>>>> >> >> >> > -L/usr/local/Cellar/ >>>>> >> >> >> > python/2.6.4/lib >>>>> >> >> >> > -L/usr/local/Cellar/python/2.6.4/lib/python2.6/ >>>>> >> >> >> > config -arch x86_64 -lpython2.6 -ldl >>>>> >>>>> >> >> >> That this is using: >>>>> >>>>> >> >> >> -L/usr/local/Cellar/python/2.6.4/lib >>>>> >> >> >> -L/usr/local/Cellar/python/2.6.4/lib/python2.6/config -lpython2.6 >>>>> >>>>> >> >> >> indicates --enable-framework did what it was mean't to. Ie., >>>>> >> >> >> switch >>>>> >> >> >> from using -F/-framework to -L/-l. >>>>> >>>>> >> >> >> Can you look in: >>>>> >>>>> >> >> >> -L/usr/local/Cellar/python/2.6.4/lib/python2.6/config/Makefile >>>>> >>>>> >> >> >> and post the value of the CONFIG_ARGS variable. >>>>> >>>>> >> >> >> Is this Python installation one you installed from source, or is >>>>> >> >> >> it a >>>>> >> >> >> binary package from somewhere else such as MacPorts? MacPorts >>>>> >> >> >> give so >>>>> >> >> >> much grief. >>>>> >>>>> >> >> >> While you at it, what do you get for: >>>>> >>>>> >> >> >> ls -las /usr/local/Cellar/python/2.6.4/lib >>>>> >> >> >> ls -las /usr/local/Cellar/python/2.6.4/lib/python2.6/config >>>>> >>>>> >> >> >> file >>>>> >> >> >> /usr/local/Cellar/python/2.6.4/lib/python2.6/config/libpython* >>>>> >>>>> >> >> >> Graham >>>>> >>>>> >> >> >> > /Library/Webserver/build/libtool --silent --mode=compile gcc >>>>> >> >> >> > -prefer- >>>>> >> >> >> > pic -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -no-cpp-precomp >>>>> >> >> >> > -g -O2 - >>>>> >> >> >> > I/opt/apache2/include -I/opt/apache2/include -I/opt/apache2/ >>>>> >> >> >> > include -arch x86_64 -I/usr/local/Cellar/python/2.6.4/include/ >>>>> >>>>> ... >>>>> >>>>> read more » >>>> >>>> -- >>>> >>>> You received this message because you are subscribed to the Google Groups >>>> "modwsgi" group. >>>> To post to this group, send email to [email protected]. >>>> To unsubscribe from this group, send email to >>>> [email protected]. >>>> For more options, visit this group at >>>> http://groups.google.com/group/modwsgi?hl=en. >>>> >>>> >>>> >>> >> > -- You received this message because you are subscribed to the Google Groups "modwsgi" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/modwsgi?hl=en.
