views:

831

answers:

2

I'm encountering a build problem for Python 2.6.4 on Snow Leopard.

  • Mac OS X 10.6
  • Yonah CPU, 32-bit
  • gcc-4.2.1

Update I

Solved by removing all non-standard includes and libraries from CFLAGS (there happened to be a uuid/uuid.h in there ...). Still, it compiled despite the error describe below, with /usr/include/hfs/hfs_format.h:765 being a hot spot. For the curious or resourceful, the source file in question:

$ cat /usr/include/hfs/hfs_format.h
...
748 #include <uuid/uuid.h>
749 
750 /* JournalInfoBlock - Structure that describes where our journal lives */
751 
752 // the original size of the reserved field in the JournalInfoBlock was
753 // 32*sizeof(u_int32_t).  To keep the total size of the structure the 
754 // same we subtract the size of new fields (currently: ext_jnl_uuid and
755 // machine_uuid).  If you add additional fields, place them before the
756 // reserved field and subtract their size in this macro.
757 //
758 #define JIB_RESERVED_SIZE  ((32*sizeof(u_int32_t)) - sizeof(uuid_string_t) - 48)
759 
760 struct JournalInfoBlock {
761         u_int32_t       flags;
762         u_int32_t       device_signature[8]; // signature used to locate device.
763         u_int64_t       offset;        // byte offset to the journal on the device
764         u_int64_t       size;          // size in bytes of the journal
765         uuid_string_t   ext_jnl_uuid;
766         char            machine_serial_num[48];
767         char            reserved[JIB_RESERVED_SIZE];
768 } __attribute__((aligned(2), packed));
769 typedef struct JournalInfoBlock JournalInfoBlock;
...

I'm leaving the question open, since the build yielded too much warnings and this error and still puzzles me a bit ...

Update II

To get rid of the warnings regarding the deployment target, I edited the Makefile before compilation:

$ cat Makefile
...
126 MACOSX_DEPLOYMENT_TARGET=10.3 # => 10.6
...

Original Question

When trying to build Python 2.6.4 from source, I run into an error:

$ uname -v
$ Darwin Kernel Version 10.2.0: Tue Nov  3 10:37:10 PST 2009; \
    root:xnu-1486.2.11~1/RELEASE_I386

$ cd ~/src/Python-2.6.4
$ ./configure --enable-universalsdk=/ --prefix=$HOME
checking for --with-universal-archs... 32-bit
...
checking machine type as reported by uname -m... i386
...
checking for OSX 10.5 SDK or later... no   // <- But I have XCode + the SDKs installed?
...

$ make
...

...
/usr/include/hfs/hfs_format.h:765: error: \
    expected specifier-qualifier-list before ‘uuid_string_t’

It seems to root in Python/mactoolboxglue.c. Hints welcome!


Also I get a lot of warnings of these kinds:

/usr/include/AvailabilityMacros.h:108:14: warning: #warning Building for \
Intel with Mac OS X Deployment Target < 10.4 is invalid.
gcc -c -arch ppc -arch i386 -isysroot /  -fno-strict-aliasing -DNDEBUG -g \
-fwrapv -O3 -Wall -Wstrict-prototypes  -I. -IInclude -I./Include  \
-DPy_BUILD_CORE -o Objects/structseq.o  Objects/structseq.c
In file included from /usr/include/architecture/i386/math.h:626,
             from /usr/include/math.h:28,
             from Include/pyport.h:235,
             from Include/Python.h:58,
             from Objects/structseq.c:4:
+2  A: 

Try adding --universal-archs=32-bit to the configure arguments.

EDIT: You may also need to set environment variable MACOSX_DEPLOYMENT_TARGET=10.6 and explicitly use the 10.6 SDK:

export MACOSX_DEPLOYMENT_TARGET=10.6
./configure --universal-archs=32-bit --enable-universalsdk=/Developer/SDKs/MacOSX10.6.sdk ...

There are still some configure issues with building Python on 10.6. If you re-use the build directory, make sure you clean out all of the cached files that previous runs of configure may have left behind.

BTW, if you just need a 32-bit version, you could use the 2.6.4 OS X installer from python.org.

Ned Deily
configure: error: unrecognized option: --dep-target=10.6 // however I found the MACOSX_DEPLOYMENT_TARGET=10.3 setting in the Makefile; changed it, and the output looks much nicer now; thanks again!
chang
Sorry, I posted in haste. --dep-target is an argument to the installer build script, not configure. Yes, setting the environment variable before calling configure is the right thing to do. Fixing the answer.
Ned Deily
+1  A: 

It seems that you aren't the only one running into this error:

Not sure if this has the same root cause :

http://trac.macports.org/ticket/21282

Scroll down to the end comments,which seem to indicate a positive outcome. (repeated here for convenience):

...//Quote from trac.macports.org:

"try to rename, move or delete /opt/local/include/uuid/uuid.h" ...//End Quote

monojohnny
I don't use macports, but I'll read through the thread (again ;), thanks ...
chang