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

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



18.09.2012 02:31, Andrey Rahmatullin пишет:
> On Mon, Sep 17, 2012 at 10:13:32PM +0400, "Артём Н." wrote:
>>>>> Надо только в Build-Depends указать libsox-dev. Вручную указывать в Depends
>>>>> библиотеки потенциально опасно.
>>>> Чем?
>>> Возможностью написать туда не то.
>> Например, что?
> Туда можно написать что угодно.
В том смысле, что при неверных сборочных зависимостях пакет просто не соберётся,
а при неверных установочных, он может установиться только у автора?

>>>> dh_auto_build нужен не только для autotools?
>>> Не только. Для scons, впрочем, он не нужен и не работает.
>> А для чего, кроме autotools оно используется (любопытно, для общего развития)?
> ls /usr/share/perl5/Debian/Debhelper/Buildsystem
Понятно.

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

> К чему вы вообще упомянули dh_installdirs?
Вроде бы, без dh_installdirs у меня не создавались каталоги. Возможно, что я
вначале заменил цель install, а не override_dh_auto_install, а потом просто забыл.

>>> Сборочная система, вероятно, игнорирует флаги, выставленные
>>> dpkg-buildflags (ну т.е. ясен пень она их игнорирует, вы же их не передали
>>> в scons).
>> Хм...
>> Нужно передавать так:
>> ?
>> 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."
Его содержимое включается в переменные с опциями сборки автоматически?

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

>> К тому же, в случае использования флагов, компиляция сваливается...
>> <<scons prefix=/usr sysconfdir=/etc FLAGS="" LINKFLAGS="-Wl,-z,relro  -fPIE -pie
>>  -Wl,-z,relro  -Wl,-z,now " CCFLAGS="-D_FORTIFY_SOURCE=2 -g -O2
>> -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security
>> -fPIE  -fstack-protector --param ssp-buffer-size=4  -D_FORTIFY_SOURCE=2
>> -Wformat -Wformat-security -Werror=format-security "
>> scons: Reading SConscript files ...
>> Mkdir("build/linux2")
>> Checking whether the C compiler worksno
>> The C compiler is not working
>> make[1]: *** [override_dh_auto_build] Ошибка 1
>> make[1]: Leaving directory `/home/artiom/Desktop/voice/rhvoice-0.3'
>> make: *** [build] Ошибка 2
>> dpkg-buildpackage: ошибка: debian/rules build возвратил код ошибки 2>>
> Читайте лог scons, если таковой есть.
Пока что не видел. Поищу, но сомневаюсь... :-(

>> И ещё... Мне приходится делать так, чтобы получать переменные:
>> <<include /usr/share/hardening-includes/hardening.make
>>
>> DESTDIR=$(CURDIR)/debian/rhvoice
>>
>> CPPFLAGS:=$(shell dpkg-buildflags --get CPPFLAGS)
>> CFLAGS:=$(shell dpkg-buildflags --get CFLAGS)
>> CXXFLAGS:=$(shell dpkg-buildflags --get CXXFLAGS)
>> LDFLAGS:=$(shell dpkg-buildflags --get LDFLAGS)
>>
>> CFLAGS+=$(HARDENING_CFLAGS)
>> LDFLAGS+=$(HARDENING_LDFLAGS)>>
> Это вы где такое взяли? hardening-includes не нужен при использовании
> dpkg-buildflags.
Понятно. HARDENING_*FLAGS тоже добавляется к CXXFLAGS автоматически?

>> Но в 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... Я предположил, что он
просто устанавливает переменные окружения (а configure и make читают их оттуда),
а scons с окружением работает (я не разбирался в scons подробно)...
При использовании GNU сборки, опции сборки передаются к make через командную
строку или через окружение?

>> Короче, как сделать, чтобы было правильно?
>> С флагами мне не очень понятно, запутался.
> В ситуации, когда содержимое флагов надо всё равно передавать в сборочную
> систему вручную, необходимо и достаточно спросить значения флагов у
> dpkg-buildflags и правильно их передать куда надо.
Т.е., нужно:
"$(shell dpkg-buildflags --get CPPFLAGS)"?
Почему переменные с флагами не устанавливаются автоматически?


Reply to: