On Sat, Sep 22, 2012 at 04:40:23PM +0400, "Артём Н." wrote: > >>>>>> scons prefix=/usr sysconfdir=/etc FLAGS="$(DEB_BUILD_OPTIONS)" > >>>>>> LINKFLAGS="$(LDFLAGS)" CCFLAGS="$(CPPFLAGS) $(CFLAGS)" > >>>>> В общем случае зависит от SConstruct, но зачем вы туда передаёте > >>>>> DEB_BUILD_OPTIONS? > >>>> На всякий случай... > >>>> Где-то я прочитал: "If you want to pass custom additonal options to configure, > >>>> you can set up the DEB_BUILD_OPTIONS environment variable." > >>> Нашлось > >>> http://www.cyberciti.biz/faq/rebuilding-ubuntu-debian-linux-binary-package/ > >>> и http://www.mplayerhq.hu/DOCS/HTML/zh_CN/linux.html > >>> Судя по всему, один идиот неправильно использовал DEB_BUILD_OPTIONS в > >>> своём пакете mplayer, а другой, ещё больший, прочитал его доку и решил, > >>> что она применима для любых пакетов вообще, что и написал в своей. > >> Хм... Меня вы тоже идиотом считаете? > > Нет, пока вы не станете прочитанную в плохих левых хауту дезинформацию > > рассказывать другим. > Хм... Но они-то верили, что делают правильно... Наверное... Проблема апстрима mplayer (ну, одна из) в том, что они использовали для своих целей переменную, имеющую другое назначение (параллельно, как видно из их debian/rules, сломав использование её по назначению). Проблема автора доки с cyberciti.biz в том, что он попытался оформить свои действия по пересборке mplayer как доку по пересборке чего угодно, в процессе скопипастив доку от mplayer. Там в комментариях даже есть люди, которые ему поверили и пытались пересобрать так что-то другое. > >>>> Его содержимое включается в переменные с опциями сборки автоматически? > >>> Нет, разумеется. Читайте: > >>> http://www.debian.org/doc/debian-policy/ch-source.html#s-debianrules-options > >> Тьфу, блин. Надо будет прочитать Policy полностью. > >> Так всё-таки, если я хочу их использовать, я должен всегда обрабатывать их > >> самостоятельно, как в примере, или есть автоматические подстановки (например, > >> для GNU системы сборки)? > > Кого их? > Опции в DEB_BUILD_OPTIONS, очевидно... Если вы используете только dh(1) - не надо. В иных случаях по-разному. И в любом случае к системе сборки это прямого отношения не имеет. > >>>>>> Любопытно, разве scons не должен брать два последних параметра из окружения? > >>>>> Нет конечно, scons полностью и сознательно игнорирует окружение. Это тоже > >>>>> "фича". > >>>> С целью? o.O > >>> Чтобы не зависеть от окружения. > >> В чём смысл? > > SCons does not automatically propagate the external environment used to > > execute 'scons' to the commands used to build target files. This is so > > that builds will be guaranteed repeatable regardless of the environment > > variables set at the time scons is invoked. > Ээээ... Они полагают, что пользователь, который собирает программу, будет не в > состоянии сам контролировать свои переменные окружения? А вы когда последний раз сбрасывали окружение при сборке чего-либо? > >>>>>> Короче, как сделать, чтобы было правильно? > >>>>>> С флагами мне не очень понятно, запутался. > >>>>> В ситуации, когда содержимое флагов надо всё равно передавать в сборочную > >>>>> систему вручную, необходимо и достаточно спросить значения флагов у > >>>>> dpkg-buildflags и правильно их передать куда надо. > >>>> Т.е., нужно: > >>>> "$(shell dpkg-buildflags --get CPPFLAGS)"? > >>>> Почему переменные с флагами не устанавливаются автоматически? > >>> Что значит не устанавливаются? > >> Почему они не включаются в make файл. > > Какой ещё файл? > В rules, в смысле. Туда вообще ничего не включается кроме того, что вы туда напишете. > >> Кстати, внезапно: > >> `gcc -o build/linux2/configure_tests/conftest_0.o -c -O2-D_FORTIFY_SOURCE=2 -g > >> -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security > >> -DPACKAGE=\"rhvoice\" -DVERSION=\"0.3\" -I. -Is$ > >> cc1: error: argument to '-O' should be a non-negative integer > >> scons: Configure: n` > >> > >> scons действительно создаёт configure.log. > >> Проблема оказалась здесь: -O2-D_FORTIFY_SOURCE=2 . > >> Проблема решилась расстановкой пробелов внутри кавычек вокруг опций. > > Скорее это склеивание в SConstruct кривое. > Ясно. Я написал, может посмотрит, исправит. Кстати, я заметил ещё такую штуку: > `gcc -o build/linux2/configure_tests/conftest_0.o -c -O2 -D_FORTIFY_SOURCE=2 -g > -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security > -D_FORTIFY_SOURCE=2 -Wextra -DPACKAGE=\"rhv\ > oice\" -DVERSION=\"0.3\" -I. -Isrc/include > build/linux2/configure_tests/conftest_0.c` > > Опции -O2 - повторяются два раза, как и установка _FORTIFY_SOURCE. > Это где-то у меня ошибка, связанная с дублированием опций? Понятия не имею. Читайте Sconstruct. > >> P.S.: > >> Нормально, что hardening-check пишет 'Immediate binding: no, not found!' ? > > Вы его не заказывали, а по дефолту оно выключено. man dpkg-buildflags > Ясно. > Кстати, а hardening (например, проверка стека) сильно влияет на производительность? stackprotector - вряд ли заметно, pie - да на i386, остальное скорее вообще никак. -- WBR, wRAR
Attachment:
signature.asc
Description: Digital signature