Hi Andi. I've tried again to make PyLucene on intel OS X 10.4.7. Here's what I did:
1. Download sources for gcc-4.0.2 2. Patch these with http://gcc.gnu.org/ml/java/2006-05/msg00151.html 3. Build and install gcc-4.0.2 4. Try to build PyLucene with the following Makefile block # Mac OS X (Darwin with gcj 4.0.2 and libgcj dynamically linked) PREFIX=/usr/local PREFIX_FRAMEWORKS=/Library/Frameworks PREFIX_PYTHON=$(PREFIX_FRAMEWORKS)/Python.framework/Versions/$(PYTHON_VER) GCJ_HOME=/usr/local/gcc-4.0.2 GCJ_LIBDIR=$(GCJ_HOME)/lib GCJ_STATIC=0 LIB_INSTALL=libgcj.6.dylib libstdc++.6.dylib libgcc_s.1.0.dylib DB=$(PYLUCENE)/db-$(DB_VER) PREFIX_DB=/usr/local/BerkeleyDB.$(DB_LIB_VER) ANT=ant PYTHON=$(PREFIX_PYTHON)/bin/python I still get this error: /usr/local/gcc-4.0.2/bin/g++ -c -o release/lucene.o -O2 -DPYLUCENE_VER="\"2.0.0-2\"" -DLUCENE_VER="\"2.0.0-434148\"" -D_WITH_DB_DIRECTORY=1 -DDB_LIB_VER="\"4.4\"" -DDB_VER=44 -I/usr/local/BerkeleyDB.4.4/include -I/Users/terry/s/svn/PyLucene/trunk/db-4.4.20 -I/Users/terry/s/svn/PyLucene/trunk/db-4.4.20/build_unix -Ilucene-java-2.0.0-434148/build/classes/java -Ilucene-java-2.0.0-434148/build/contrib/highlighter/classes/java -Ilucene-java-2.0.0-434148/build/contrib/snowball/classes/java -Ilucene-java-2.0.0-434148/build/contrib/analyzers/classes/java -Ilucene-java-2.0.0-434148/build/contrib/regex/classes/java -Irelease/classes -Ilucene-java-2.0.0-434148/build/contrib/db/bdb/classes/java -I/Library/Frameworks/Python.framework/Versions/2.4/Headers -I/usr/local/gcc-4.0.2/include lucene.cpp /usr/local/BerkeleyDB.4.4/include/db.h:1376: error: 'u_int' does not name a type /usr/local/BerkeleyDB.4.4/include/db.h:1742: error: 'u_int' does not name a type /usr/local/BerkeleyDB.4.4/include/db.h:1930: error: 'u_int' does not name a type /usr/local/BerkeleyDB.4.4/include/db.h:1931: error: 'u_int' does not name a type /usr/local/BerkeleyDB.4.4/include/db.h:1951: error: 'u_int' does not name a type /usr/local/BerkeleyDB.4.4/include/db.h:2016: error: 'u_int' does not name a type /usr/local/BerkeleyDB.4.4/include/db.h:2063: error: ISO C++ forbids declaration of 'u_long' with no type /usr/local/BerkeleyDB.4.4/include/db.h:2063: error: expected ';' before '*' token /usr/local/BerkeleyDB.4.4/include/db.h:2399: error: expected primary-expression before 'int' make: *** [release/lucene.o] Error 1 To try to make sure there's no problem with the DB header files, I then rebuild DB 4.4.20 with gcc-4.0.2: 5. rm -fr /usr/local/BerkeleyDB4.4 6. Reconfigure DB: ../dist/configure CC=/usr/local/gcc-4.0.2/bin/gcc \ CXX=/usr/local/gcc-4.0.2/bin/g++ \ {CXX,}CPP=/usr/local/gcc-4.0.2/bin/cpp and install the result. 7. Remove & re-checkout PyLucene svn trunk 8. Uncomment gcc-4.0.2 block in the PyLucene Makefile 9. make all And I wind up with the same /usr/local/BerkeleyDB.4.4/include/db.h error as above. u_int is defined in /usr/include/sys/types.h, but it's wrapped: #ifndef _POSIX_C_SOURCE typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; #ifndef _U_LONG typedef unsigned long u_long; #define _U_LONG #endif typedef unsigned short ushort; /* Sys V compatibility */ typedef unsigned int uint; /* Sys V compatibility */ #endif So somehow by the time db.h comes to include <sys/types.h>, _POSIX_C_SOURCE is defined and those typedefs don't happen. If you have any hints, I'm happy to dig more. Else I guess I'll take the easier route - install PyLucene from binaries and back off on my other stuff to use DB 4.3.29 (which I think you're saying I can do, despite this "If you downloaded a pre-compiled PyLucene-db- binary, that version is Berkeley DB 4.3.28." in the README of the PyLucene binary tarball). I.e., I'll install 4.3.29 and reinstall python bsddb (which may hurt, for reasons I'll omit here). Thanks again, Terry _______________________________________________ pylucene-dev mailing list [email protected] http://lists.osafoundation.org/mailman/listinfo/pylucene-dev
