On Wed, Jul 31, 2013 at 03:13:59PM +0300, Sergey V. Dyatko wrote: > ну, ради интереса, попробуй его пересобрать, не clang`ом, поможет ли это
Так, приколы продолжаются. Выставил WITH_GCC=yes для editors/libreoffice. Начинаю собирать, отваливается на этапе configure: # cd /usr/ports/editors/libreoffice # make clean && make [...] checking Python.h usability... no checking Python.h presence... no checking for Python.h... no configure: error: Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables. ===> Script "configure" failed unexpectedly. Please report the problem to [email protected] [maintainer] and attach the "/usr/ports/editors/libreoffice/work/libreoffice-4.0.4.2/config.log" including the output of the failure of your make command. Also, it might be a good idea to provide an overview of all packages installed on your system (e.g. a /usr/local/sbin/pkg-static info -g -Ea). *** Error code 1 Stop. make: stopped in /usr/ports/editors/libreoffice *** Error code 1 Stop. make: stopped in /usr/ports/editors/libreoffice Смотрю config.log: configure:21136: checking Python.h usability configure:21136: gcc46 -c -O2 -pipe -march=pentium4 -Wl,-rpath=/usr/local/lib/gcc46 -DLDAP_DEPRECATED -fno-strict-aliasing -I/usr/local/include -I/usr/local/include/python2.7 -I/usr/local/include/python2.7 -fno-strict-aliasing -OPT:Olimit=0 -O2 -pipe -march=pentium4 -fno-strict-aliasing -DNDEBUG -O2 -pipe -march=pentium4 -fno-strict-aliasing -I/usr/local/include/pth conftest.c >&5 cc1: error: argument to '-O' should be a non-negative integer Ищу, откуда в списке опций берется -OPT:Olimit=0. # /usr/local/bin/python2.7-config --cflags -I/usr/local/include/python2.7 -I/usr/local/include/python2.7 -fno-strict-aliasing -OPT:Olimit=0 -O2 -pipe -march=pentium4 -fno-strict-aliasing -DNDEBUG -O2 -pipe -march=pentium4 -fno-strict-aliasing -I/usr/local/include/pth Оказалось, известный баг : www.freebsd.org/cgi/query-pr.cgi?pr=ports/174525 Предложенный там патч стал некорректно отрабатывать с тех пор, как бинарники /usr/bin/cc и /usr/bin/clang стали одним и тем же. Дальнейшие изыскания показали, что clang некорректно обрабатывает опцию -O: # clang -OPT:Olevel=0 -c conftest.c || echo $? error: invalid integral value 'PT:Olevel=0' in '-OPT:Olevel=0' error: invalid integral value 'PT:Olevel=0' in '-OPT:Olevel=0' 1 - не работает # clang -O2 -OPT:Olevel=0 -c conftest.c || echo $? error: invalid integral value 'PT:Olevel=0' in '-OPT:Olevel=0' error: invalid integral value 'PT:Olevel=0' in '-OPT:Olevel=0' 1 - не работает # clang -OPT:Olevel=0 -O2 -c conftest.c && echo $? - работает, хотя не должно. Чтобы не натыкаться на проблемы при сборке портов, которые зависят от Python, компилятором GCC, необходимо исправить патч в lang/python27/files/patch-configure, а именно добавить проверку "$CC" = cc: --- configure.orig 2013-01-14 13:38:53.000000000 +0000 +++ configure 2013-01-14 13:39:14.000000000 +0000 @@ -5642,8 +5642,8 @@ BASECFLAGS="$BASECFLAGS $ac_arch_flags" fi -# disable check for icc since it seems to pass, but generates a warning -if test "$CC" = icc +# disable check for icc and clang since it seems to pass, but generates a warning +if test "$CC" = icc -o "$CC" = clang -o "$CC" = cc then ac_cv_opt_olimit_ok=no fi Но данный способ всего лишь workaround проблемы с clang. После исправления патча и пересборки python27, команда python2.7-config --clibs стала выдавать корректную строку, без -OPT:Olevel=0. -- MINO-RIPE
