[newbies] [join] Проверка корректности пакетирования

Andrey Savchenko bircoph на altlinux.org
Вт Фев 16 18:20:37 MSK 2021


Добрый день!

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
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 833 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel-newbies/attachments/20210216/9fd5d8f5/attachment.bin>


Подробная информация о списке рассылки devel-newbies