* Re: [newbies] [join] Проверка корректности пакетирования
@ 2021-01-29 2:01 ` Andrey Savchenko
0 siblings, 1 reply; 7+ messages in thread
From: Andrey Savchenko @ 2021-01-29 2:01 UTC (permalink / raw)
To: Николай
Бурыкин
Cc: devel-newbies
[-- Attachment #1: Type: text/plain, Size: 1947 bytes --]
Доброго времени суток!
On Wed, 27 Jan 2021 15:24:56 +0300 Николай Бурыкин wrote:
> Добрый день!
> Попробовал дописать init-скрипт для пакета. Работоспособности вроде
> достиг (проверял в стартерките Xfce с SysV), но в правильности написания
> не уверен.
В целом выглядит хорошо. Я бы посоветовал общий код по проверке
конфига в start() и stop() куда-нибудь в checkconfig() засунуть.
Пример можно посмотреть в init для sshd или unbound.
> Немного завис с попытками изменить в спеке %make_build на scons. Не
> совсем понятно как с его использованием построить структуру аналогичную
> %make_build PRODUCT_PREFIX=/ PRODUCT_BIN_PREFIX=%_usr
> Пробую провести компиляцию с такой конструкцией:
> scons -j%__nprocs PREFIX=/ BIN_PREFIX=%_usr
> Компиляция проходит успешно, пакет собирается и устанавливается в ВМ,
> однако при попытке запуска сервера командой freelan
> --security.passphrase "test_pass" служба не может найти конфигурацию, и
> ищет ее по странному пути ..RPM/BUILD...
scons не понимает {BIN_,}PREFIX — это переменные, используемые
внутри Makefile пакета. Следует испольовать {bin_,}prefix= как это
делается в Makefile. Например:
scons %_smp_mflags --mode=release apps prefix=/ bin_prefix=%_usr --upnp=yes --mongoose=no
Best regards,
Andrew Savchenko
[-- Attachment #2: Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [newbies] [join] Проверка корректности пакетирования
@ 2021-02-08 12:38 ` Michael Shigorin
2021-02-08 20:26 ` Andrey Savchenko
1 sibling, 1 reply; 7+ messages in thread
From: Michael Shigorin @ 2021-02-08 12:38 UTC (permalink / raw)
To: devel-newbies; +Cc: Andrey Savchenko
On Mon, Feb 08, 2021 at 03:27:07PM +0300, Николай Бурыкин wrote:
> Попытался собрать еще один пакет. https://github.com/burykinne/edbrowse.
> В полуручном режиме собрать в итоге удалось. Но автоматизированной
> сборки добиться не получилось.
> Столкнулся с тем, что в сборочной среде не находился модуль pcre.h, хотя
> в BuildRequires libpcre-devel есть.
> Решил вопрос зайдя в hsh-shell с правами псевдорута и сделав
> # ln -s /usr/include/pcre/pcre.h /usr/include/pcre.h
Я бы проверил на эффективность
%add_optflags -I%_includedir/pcre
...а вообще научить бы их пользоваться pkgconfig, что ли...
> И правильно ли я понимаю, что строку
> sed -i 's/TidyStyleTags/TidyPreTags/' src/html-tidy.c
> лучше оформить как патч?
Зависит. Сам так порой делаю, но патч в случае изменения
контекста хотя бы отвалится (что и морока, и сигнал).
--
---- WBR, Michael Shigorin / http://altlinux.org
------ http://opennet.ru / http://anna-news.info
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [newbies] [join] Проверка корректности пакетирования
2021-02-08 12:38 ` Michael Shigorin
@ 2021-02-08 20:26 ` Andrey Savchenko
2021-02-09 7:27 ` Michael Shigorin
0 siblings, 1 reply; 7+ messages in thread
From: Andrey Savchenko @ 2021-02-08 20:26 UTC (permalink / raw)
To: devel@ where you _can_ ask
[-- Attachment #1: Type: text/plain, Size: 3320 bytes --]
On Mon, 8 Feb 2021 15:38:43 +0300 Michael Shigorin wrote:
> On Mon, Feb 08, 2021 at 03:27:07PM +0300, Николай Бурыкин wrote:
> > Попытался собрать еще один пакет. https://github.com/burykinne/edbrowse.
> > В полуручном режиме собрать в итоге удалось. Но автоматизированной
> > сборки добиться не получилось.
> > Столкнулся с тем, что в сборочной среде не находился модуль pcre.h, хотя
> > в BuildRequires libpcre-devel есть.
> > Решил вопрос зайдя в hsh-shell с правами псевдорута и сделав
> > # ln -s /usr/include/pcre/pcre.h /usr/include/pcre.h
>
> Я бы проверил на эффективность
>
> %add_optflags -I%_includedir/pcre
Поддерживаю.
> ...а вообще научить бы их пользоваться pkgconfig, что ли...
>
> > И правильно ли я понимаю, что строку
> > sed -i 's/TidyStyleTags/TidyPreTags/' src/html-tidy.c
> > лучше оформить как патч?
>
> Зависит. Сам так порой делаю, но патч в случае изменения
> контекста хотя бы отвалится (что и морока, и сигнал).
Здесь дело вкуса мейнтенера, безусловно. Я обычно делаю так (это
не жесткие правила, но общие критерии разделения):
1) Если нужно наложить несколько (т.е. немного) патчей или патчи
берутся в виде файлов с патчами из внешнего источника, то использую
патчи.
2) Когда патчей очень много, или используются разные источники, где
доступны гиты репозиториев — я использую ветки гита и патчи
хранятся в виде коммитов в тематических ветках. Это сильно
облегчает обновление таких пакетов, т.к. можно сделать git rebase
или cherry-pick без головной боли с правкой или обновлением каждого
патча по отдельности.
3) sed или awk использую когда нужно:
3.1) сделать одну и ту же замену в большом количестве файлов
(например, массово поправить CFLAGS во всем Makefile);
3.2) сделать подстановку, зависящую от параметра (переменной)
в spec. Например, sed 's/%name_%version/%name-%version/' version.h
Миша правильно сказал, что sed — обоюдоострый меч: этот способ
проще автоматизировать при обновлениях, чем файлы с патчами, но он
может внезапно выстрелить в ногу, сработав не там где нужно.
Best regards,
Andrew Savchenko
[-- Attachment #2: Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [newbies] [join] Проверка корректности пакетирования
2021-02-08 20:26 ` Andrey Savchenko
@ 2021-02-09 7:27 ` Michael Shigorin
2021-02-09 9:49 ` Andrey Savchenko
0 siblings, 1 reply; 7+ messages in thread
From: Michael Shigorin @ 2021-02-09 7:27 UTC (permalink / raw)
To: devel-newbies
On Mon, Feb 08, 2021 at 11:26:23PM +0300, Andrey Savchenko wrote:
> > Зависит. Сам так порой делаю, но патч в случае изменения
> > контекста хотя бы отвалится (что и морока, и сигнал).
> Миша правильно сказал, что sed — обоюдоострый меч: этот способ
> проще автоматизировать при обновлениях, чем файлы с патчами, но он
> может внезапно выстрелить в ногу, сработав не там где нужно.
apt-get install fortunes-ALT
%
Свойство патчей "отваливаться в случае изменений" - это важное преимущество,
а вовсе не недостаток, как полагают многие.
-- ldv in devel@
%
--
---- WBR, Michael Shigorin / http://altlinux.org
------ http://opennet.ru / http://anna-news.info
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [newbies] [join] Проверка корректности пакетирования
2021-02-09 7:27 ` Michael Shigorin
@ 2021-02-09 9:49 ` Andrey Savchenko
0 siblings, 0 replies; 7+ messages in thread
From: Andrey Savchenko @ 2021-02-09 9:49 UTC (permalink / raw)
To: devel@ where you _can_ ask
[-- Attachment #1: Type: text/plain, Size: 1365 bytes --]
On Tue, 9 Feb 2021 10:27:14 +0300 Michael Shigorin wrote:
> On Mon, Feb 08, 2021 at 11:26:23PM +0300, Andrey Savchenko wrote:
> > > Зависит. Сам так порой делаю, но патч в случае изменения
> > > контекста хотя бы отвалится (что и морока, и сигнал).
> > Миша правильно сказал, что sed — обоюдоострый меч: этот способ
> > проще автоматизировать при обновлениях, чем файлы с патчами, но он
> > может внезапно выстрелить в ногу, сработав не там где нужно.
>
> apt-get install fortunes-ALT
>
> %
> Свойство патчей "отваливаться в случае изменений" - это важное преимущество,
> а вовсе не недостаток, как полагают многие.
> -- ldv in devel@
> %
Зависит от обстоятельств. Бывает, что да, полезно, ловит проблемы.
А бывает, что сверху строчка, которая всё время меняется, на
патченый код не влияет, а diff всё время ломает.
Best regards,
Andrew Savchenko
[-- Attachment #2: Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [newbies] [join] Проверка корректности пакетирования
@ 2021-02-16 15:20 ` Andrey Savchenko
0 siblings, 1 reply; 7+ messages in thread
From: Andrey Savchenko @ 2021-02-16 15:20 UTC (permalink / raw)
To: devel@ where you _can_ ask
Cc: Николай
Бурыкин
[-- Attachment #1: Type: text/plain, Size: 5505 bytes --]
Добрый день!
On Mon, 15 Feb 2021 14:05:16 +0300 Николай Бурыкин wrote:
> Добрый день.
> Решил проблемы, мешающие сборке. Поправил заголовочные файлы в исходном
> коде.
> Все исправления оформил в патч.
> Сейчас наверное нужна только оценка спека, с точки зрения корректности
> написания.
> В этот раз делал с оглядкой на
> https://www.altlinux.org/ALT_Packaging_HOWTO, но всё равно мог что-то
> пропустить.
> Если не будет проблем, тогда потихоньку буду переходить к плановой
> сборке Fleet.
Речь про https://github.com/burykinne/edbrowse , верно?
1) Поправка по лицензии:
- License: GPL and MPL
+ License: GPL-1.0+
Поясню по чему так. Случай сложный, на самом деле.
Давайте посмотрим файл COPYING:
This program is copyright (C) Karl Dahlke, 2000-2014.
It is made available by the author under the terms of the GNU General Public
License (GPL), as articulated by the Free Software Foundation.
http://www.fsf.org/licensing/licenses/gpl.html
It may be used for any purpose, and redistributed,
provided this copyright notice is included.
This program uses libcurl.so for http/ftp access.
This is released under the Mozilla public license (mpl).
I didn't change any of the source; I merely link to these libraries.
However, if you wish to release a version of edbrowse with these shared
libraries included,
or a statically linked executable, you will need to specify both gpl and mpl.
Первая часть говорит просто GPL без указания версии и даёт ссылку.
Пройдём по ней, пункт 14, параграф 2:
If the Program does not specify a version number of the GNU General Public
License, you may choose any version ever published by the Free Software Foundation.
В Альте следует указывать одну из лицензий из /usr/share/license*.
В данном случае подходит GPL1.0+ — т.е. любая из существующих
версий GPL.
Вторая часть про линковку с libcurl. Во-первых, эта часть применима
только для статической линковки (а у edbrowse динамическая) или при
совместном распространении с libcurl.so (в Вашем пакете её нет, её
исходников тоже нет, используется системная версия). Во-вторых,
у libcurl поменялась лицензия и комментарий автора edbrowse устарел.
Там сейчас MITX:
$ rpm -qi libcurl | grep License
License : MITX
Текст можно посмотреть в /usr/share/license/MITX. С ней можно без
дополнительных ограничений линковать GPL софт.
2) Лучше пользоваться готовыми макросами, поэтому:
- cmake .
+ %cmake_insource
Хотя я бы предпочёл out-of-source build, тогда будет:
%build
%cmake
%cmake_build
%install
%cmakeinstall_std
Обратите внимание, что дополнительные аргументы %cmakeinstall_std
не нужны, т.е spec упрощается.
3) Ещё при таком подходе обнаружились неупакованные файлы:
warning: Installed (but unpackaged) file(s) found:
/usr/share/doc/edbrowse/sample.ebrc
/usr/share/doc/edbrowse/sample_fr.ebrc
/usr/share/doc/edbrowse/sample_it.ebrc
/usr/share/doc/edbrowse/usersguide.html
/usr/share/doc/edbrowse/usersguide_fr.html
/usr/share/man/man1/edbrowse.1.xz
Думаю, что man нужно паковать всегда, html-документацию —
в отдельный подпакет doc, *.ebrc — в examples (или в doc,
если считаете частью документации). Можно ещё заморочится
и разложить fr и it в doc-fr и doc-it (или examples-it);
но это дело вкуса.
Ещё есть проблема, что пакет доки в ставит в /usr/share/doc/edbrowse,
а нужно в /usr/share/doc/edbrowse-3.7.7. Это можно исправить в %prep
через sed примерно так (не проверял):
sed -i "s|/usr/share/doc/edbrowse|/usr/share/doc/edbrowse-%version|" CMakeLists.txt
4) Устанавливать файл COPYING не нужно, т.к. текст лицензии уже есть
в системе и лицензия указана в rpm пакета. Обычно текст лицензий
вместе с пакетами устанавливать не нужно. Исключение — когда лицензия
требует обязательной упаковки или установки своего текста вместе
с пакетом (это не тот случай, но в будущем такое может быть).
Best regards,
Andrew Savchenko
[-- Attachment #2: Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [newbies] [join] Проверка корректности пакетирования
@ 2021-02-19 23:32 ` Andrey Savchenko
0 siblings, 0 replies; 7+ messages in thread
From: Andrey Savchenko @ 2021-02-19 23:32 UTC (permalink / raw)
To: devel@ where you _can_ ask
[-- Attachment #1: Type: text/plain, Size: 2762 bytes --]
Добрый вечер!
On Tue, 16 Feb 2021 21:19:22 +0300 Николай Бурыкин wrote:
> > Речь про https://github.com/burykinne/edbrowse , верно?
> Да, речь о нём.
> > 1) Поправка по лицензии:
> > - License: GPL and MPL
> > + License: GPL-1.0+
> Это я недоработал. Исправлю. Надо будет вникнуть в тонкости
> лицензирования свободного ПО.
На самом деле в Сизифе навалом пакетов, где не вполне корректно или
полно указаны лицензии, так что слишком сильно заморачиваться на
эту тему не следует, но желательно по-возможности корректно
указывать.
В данном меня случае насторожило, что GPL и MPL без указания версии
были — такая ситуация необычна, что послужило индикатором того, что
что-то не так.
Вообще, мир лицензий и их взаимодействие друг с другом — не такая
уж простая тема. Пару лет назад я делал в Калуге доклад на эту
тему, что может послужить неплохо вводной:
http://0x1.tv/
Уязвимости_в_лицензиях_СПО_(Андрей_Савченко,_OSSDEVCONF-2018)
> > 2) Лучше пользоваться готовыми макросами, поэтому:
> > - cmake .
> > + %cmake_insource
> Была мысль, что моя конструкция с "cmake ." неуместна, и так оно и
> оказалось. Вроде и сверялся по Предопределённым макросам
> <https://www.altlinux.org/Spec/%D0%9F%D1%80%D0%B5%D0%B4%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D1%81%D1%8B>,
> а всё равно нужный умудрился не заметить. Буду практиковаться, ошибка
> досадная и её можно было избежать.
Кроме wiki есть ещё два полезных источника:
1) rpmbuild --showrc, далее grep/less по вкусу
2) git://git.altlinux.org/people/specbot/public/specs.git
Здесь все спеки Альта, обновляется автоматически, спасибо vt.
Очень полезно когда нужно посмотреть «а как другие это делают».
Best regards,
Andrew Savchenko
[-- Attachment #2: Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-02-19 23:32 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-29 2:01 ` [newbies] [join] Проверка корректности пакетирования Andrey Savchenko
2021-02-08 12:38 ` Michael Shigorin
2021-02-08 20:26 ` Andrey Savchenko
2021-02-09 7:27 ` Michael Shigorin
2021-02-09 9:49 ` Andrey Savchenko
2021-02-16 15:20 ` Andrey Savchenko
2021-02-19 23:32 ` Andrey Savchenko
devel@ where you _can_ ask
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel-newbies/0 devel-newbies/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel-newbies devel-newbies/ http://lore.altlinux.org/devel-newbies \
devel-newbies@lists.altlinux.org devel-newbies@lists.altlinux.ru devel-newbies@lists.altlinux.com
public-inbox-index devel-newbies
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel-newbies
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git