devel@ where you _can_ ask
 help / color / mirror / Atom feed
* 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