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

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



22.09.2012 15:05, Andrey Rahmatullin пишет:
> On Sat, Sep 22, 2012 at 09:02:10AM +0400, "Артём Н." wrote:
>>>>>>> Надо только в Build-Depends указать libsox-dev. Вручную указывать в Depends
>>>>>>> библиотеки потенциально опасно.
>>>>>> Чем?
>>>>> Возможностью написать туда не то.
>>>> Например, что?
>>> Туда можно написать что угодно.
>> В том смысле, что при неверных сборочных зависимостях пакет просто не соберётся,
>> а при неверных установочных, он может установиться только у автора?
> К чему вы это? Исходная мысль была о том, что не надо пытаться написать
> руками то, что автомат сделает лучше.
Ясно.

>>>>> Какой ещё dh_installdirs?
>>>>> ...
>>>>> Какой ещё dh_autoclean?
>>>> Вы издеваетесь? По ним man есть. 
>>> Это не я издеваюсь, это вы тупите.
>> Ну так просветите, раз вы такой умный. Или постоянно говорить недомолвками
>> входит в ваш имидж?
> Вы процитировали два куска кода и упомянули в связи с ними две тулзы, одну
> из которых вы написали неправильно, а вторая никакого отношения к
> процитированным кускам не имеет.
Понял: я снова что-то перепутал (видимо, maint-guide читал невнимательно).
dh_install_dirs вызывается в цели binary?

>>>> 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, а другой, ещё больший, прочитал его доку и решил,
> что она применима для любых пакетов вообще, что и написал в своей.
Хм... Меня вы тоже идиотом считаете?

>> Его содержимое включается в переменные с опциями сборки автоматически?
> Нет, разумеется. Читайте:
> http://www.debian.org/doc/debian-policy/ch-source.html#s-debianrules-options
Тьфу, блин. Надо будет прочитать Policy полностью.
Так всё-таки, если я хочу их использовать, я должен всегда обрабатывать их
самостоятельно, как в примере, или есть автоматические подстановки (например,
для GNU системы сборки)?

>>>> Любопытно, разве scons не должен брать два последних параметра из окружения?
>>> Нет конечно, scons полностью и сознательно игнорирует окружение. Это тоже
>>> "фича".
>> С целью? o.O
> Чтобы не зависеть от окружения.
В чём смысл?

>>>> Но в http://wiki.debian.org/Hardening написано, что: "Debhelper (since
>>>> 9.20120417, only with compat=9 and dh_auto* commands!) and cdbs (since 0.4.110)
>>>> automatically append CPPFLAGS to CFLAGS and CXXFLAGS. The following workaround
>>>> is not necessary anymore if the package uses debhelper (compat=9, dh_auto*) or
>>>> cdbs (packages might require a new upload though). "
>>> Вы правда понимаете, о чём этот абзац?
>> Ну, вроде бы. Debhelper у меня в зависимостях >= 9...
> Не понимаете, значит.
Прочитал и въехал.
Для debhelper >= 9 Не нужно делать это:
"CFLAGS+=$(CPPFLAGS)
CXXFLAGS+=$(CPPFLAGS)"

Так?

>>>> Короче, как сделать, чтобы было правильно?
>>>> С флагами мне не очень понятно, запутался.
>>> В ситуации, когда содержимое флагов надо всё равно передавать в сборочную
>>> систему вручную, необходимо и достаточно спросить значения флагов у
>>> dpkg-buildflags и правильно их передать куда надо.
>> Т.е., нужно:
>> "$(shell dpkg-buildflags --get CPPFLAGS)"?
>> Почему переменные с флагами не устанавливаются автоматически?
> Что значит не устанавливаются?
Почему они не включаются в make файл. Но уже не важно. Я сделал так:
`DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk

CFLAGS+=$(HARDENING_CFLAGS)
LDFLAGS+=$(HARDENING_LDFLAGS)
CFLAGS += -Wextra`

Кстати, внезапно:
`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 .
Проблема решилась расстановкой пробелов внутри кавычек вокруг опций.

Затем, снова:
`scons DESTDIR=/home/artiom/Desktop/voice/rhvoice-0.3/debian/rhvoice install
scons: Reading SConscript files ...
Mkdir("build/linux2")
Checking whether the C compiler worksno
The C compiler is not working
make[1]: *** [override_dh_auto_install] Ошибка 1
make[1]: Leaving directory `/home/artiom/Desktop/voice/rhvoice-0.3'
make: *** [binary] Ошибка 2
dpkg-buildpackage: ошибка: fakeroot debian/rules binary возвратил код ошибки 2`

И т.п. Написал авторше, может и ответит.

Передал опции сборки для scons install, и всё собралось. Lintian не ругается.
Спасибо. :-)


P.S.:
Нормально, что hardening-check пишет 'Immediate binding: no, not found!' ?

"build/linux2/bin/RHVoice:
 Position Independent Executable: no, normal executable!
 Stack protected: yes
 Fortify Source functions: yes (some protected functions found)
 Read-only relocations: yes
 Immediate binding: no, not found!
build/linux2/bin/RHVoice-client:
 Position Independent Executable: no, normal executable!
 Stack protected: yes
 Fortify Source functions: yes (some protected functions found)
 Read-only relocations: yes
 Immediate binding: no, not found!"


Reply to: