Quoting Alexander Shikoff <[email protected]>:
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
Кхм.
На момент написания патча для
http://www.freebsd.org/cgi/query-pr.cgi?pr=161494&cat=ports ( на
который ссылается mva@ в followup к 174525 ) у меня не было под рукой
системы с WITH_CLANG_IS_CC для тестирования, так что патч вполне
возможно и не полон.
С другой стороны, предложенное дополнение к патчу фактически
означает, что эта проверка отключена во FreeBSD вне зависимости от
используемого компилятора.
Но данный способ всего лишь workaround проблемы с clang.
После исправления патча и пересборки python27, команда
python2.7-config --clibs
стала выдавать корректную строку, без -OPT:Olevel=0.
--
MINO-RIPE