Проблема сборки Python в Mac OS 10.6 / Snow Leopard - PullRequest
3 голосов
/ 06 февраля 2010

Я столкнулся с проблемой сборки для Python 2.6.4 на Snow Leopard.

  • Mac OS X 10,6
  • Yonah CPU, 32-бит
  • GCC-4.2.1

Обновление I

Решено путем удаления всех нестандартных включений и библиотек из CFLAGS (там было uuid/uuid.h там ...). Тем не менее, он скомпилировал несмотря на ошибку, описанную ниже, с /usr/include/hfs/hfs_format.h:765 горячей точкой. Для любопытных или находчивых, рассматриваемый исходный файл:

$ 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;
...

Я оставляю вопрос открытым, так как сборка выдавала слишком много предупреждений и эту ошибку и все еще немного меня удивляет ...

Обновление II

Чтобы избавиться от предупреждений относительно цели развертывания, я отредактировал Makefile перед компиляцией:

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

Оригинальный вопрос

При попытке собрать Python 2.6.4 из исходного кода я сталкиваюсь с ошибкой:

$ 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’

Кажется, корень в Python/mactoolboxglue.c. Советы приветствуются!


Также я получаю много предупреждений такого рода:

/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 ]

4 голосов
/ 06 февраля 2010

Попробуйте добавить --universal-archs=32-bit к аргументам configure.

РЕДАКТИРОВАТЬ: Вам также может потребоваться установить переменную среды MACOSX_DEPLOYMENT_TARGET=10.6 и явно использовать 10.6 SDK:

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

Есть еще некоторые проблемы с настройкой при сборке Python на 10.6. Если вы снова используете каталог сборки, убедитесь, что вы очистили все кэшированные файлы, которые могли остаться после предыдущих запусков configure.

Кстати, если вам просто нужна 32-битная версия, вы могли бы использовать установщик 2.6.4 OS X из python.org .

1 голос
/ 06 февраля 2010

Кажется, что вы не единственный, кто сталкивается с этой ошибкой:

Не уверен, имеет ли это ту же самую основную причину:

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

Прокрутите вниз до конца комментарии, которые, кажется, указывают на положительный результат. (повторяется здесь для удобства):

... // Цитата из trac.macports.org:

"попробуйте переименовать, переместить или удалить /opt/local/include/uuid/uuid.h" ... // конец цитаты

...