[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Вопросы по созданию пакета.



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


Reply to: