Bug 31417

Summary: perl-devel содержит компоненты, используемые в обычных пакетах
Product: Sisyphus Reporter: Sergey Y. Afonin <asy>
Component: perlAssignee: viy <viy>
Status: NEW --- QA Contact:
Severity: minor    
Priority: P3 CC: at, crux, lav, viy
Version: unstable   
Hardware: all   
OS: Linux   
Bug Depends on: 49929, 49930, 49933, 49934, 49935, 49936, 49928, 49931    
Bug Blocks: 34065    

Description Sergey Y. Afonin 2015-10-29 20:33:04 MSK
perl-devel содержит компоненты, используемые в обычных пакетах. В следствие этого perl-devel попадает в системы где не предполагается держать ПО для разработки чего-либо.

Из bug 31133:
=====
Comment #3 From viy 2015-10-29 18:25:41 (-) [reply]
Там политика,
в каком то году помню perl перераспилили в Федоре на модули,
и из perl их начали пинать, что это уже не перл, переименовывайте, а то
лицензию нарушает.
вроде, пришлось потом откатывать.

Comment #5 From viy 2015-10-29 19:40:55 (-) [reply]

сорри, сейчас загружен,
если проблема актуальная, то пингните после обновления java,
посмотрим, что в других дистрибутивах
=====

По поводу актуальности не знаю, что сказать, но выглядит как-то не очень. Если убрать perl-devel будет не сложно, это будет не плохо, как мне думается.
Comment 1 Sergey Y. Afonin 2015-10-29 20:33:58 MSK
*** Bug 31133 has been marked as a duplicate of this bug. ***
Comment 2 Sergey Y. Afonin 2015-10-29 20:35:28 MSK
*** Bug 31365 has been marked as a duplicate of this bug. ***
Comment 3 Sergey Y. Afonin 2015-10-29 20:36:30 MSK
*** Bug 30683 has been marked as a duplicate of this bug. ***
Comment 4 Vladimir Lettiev 2015-10-29 22:38:50 MSK
perl-devel определённо содержит только компоненты, которые нужны при разработке. Во-первых это модули для тестирования Test::* и сборки ExtUtils::MakeMaker, потом отладчик, утилиты и наконец заголовочные файлы для сборки xs.

Поэтому надо рассматривать каждый пакет, который содержит зависимость на perl-devel, откуда там возникла эта зависимость. Например, Mojolicious это не просто библиотека для веб-приложений, а целый фреймворк для создания веб-приложений, включая тестирование, т.е. по сути инструмент разработки. Модуль Test::Mojo, основан на Test::More и предназначен для создания тестов к веб-приложению. Т.о. Mojolicious вероятно стоит распилить на части: часть модулей как библиотека, а часть как инструмент для разработки. В этом случае зависимость на perl-devel перейдёт на второй подпакет.

С другой стороны perl-devel не так уж и страшен - 4.5 Мб на диске. Стоит ли заморачиваться с его распилом на субкомпоненты?
Comment 5 Vitaly Lipatov 2021-08-18 00:02:18 MSK
Пока мне видится, что проблема не в perl-devel, а в остальных пакетах. Посмотрю на примере:

 $ sudo -- rpm -ev perl-devel
error: Failed dependencies:
	perl(AutoSplit.pm) is needed by (installed) perl-Module-Build-0.4231-alt1.noarch
	perl(B/Deparse.pm) is needed by (installed) perl-YAML-LibYAML-1:0.83-alt1.x86_64
	perl(Dumpvalue.pm) is needed by (installed) hwinfo-utils-21.23-alt1.1.x86_64
	perl(Dumpvalue.pm) is needed by (installed) perl-CPAN-2.28-alt1.noarch
	perl(ExtUtils/Install.pm) >= 0.300 is needed by (installed) perl-Module-Build-0.4231-alt1.noarch
	perl(ExtUtils/Installed.pm) is needed by (installed) perl-Module-Build-0.4231-alt1.noarch
	perl(ExtUtils/Installed.pm) is needed by (installed) perl-inc-latest-0.500-alt2.noarch
	perl(ExtUtils/MakeMaker.pm) is needed by (installed) perl-IPC-Cmd-1.04-alt1.noarch
	perl(ExtUtils/MakeMaker.pm) >= 6.360 is needed by (installed) perl-CPAN-Reporter-1.2018-alt2_3.noarch
	perl(ExtUtils/MakeMaker.pm) is needed by (installed) perl-inc-latest-0.500-alt2.noarch
	perl(ExtUtils/MakeMaker.pm) is needed by (installed) perl-CPAN-2.28-alt1.noarch
	perl(ExtUtils/Manifest.pm) >= 1.540 is needed by (installed) perl-Module-Build-0.4231-alt1.noarch
	perl(ExtUtils/Manifest.pm) is needed by (installed) perl-CPAN-2.28-alt1.noarch
	perl(ExtUtils/Mkbootstrap.pm) is needed by (installed) perl-Module-Build-0.4231-alt1.noarch
	perl(ExtUtils/Mksymlists.pm) is needed by (installed) perl-ExtUtils-CBuilder-0.280236-alt1.noarch
	perl(Pod/Html.pm) is needed by (installed) perl-Module-Build-0.4231-alt1.noarch
	perl(TAP/Harness/Env.pm) is needed by (installed) perl-Module-Build-0.4231-alt1.noarch
	perl(Test/Builder.pm) is needed by (installed) perl-Test-Fatal-0.016-alt1.noarch
	perl(Test/Harness.pm) is needed by (installed) perl-Module-Build-0.4231-alt1.noarch
	perl(Test/More.pm) >= 0.960 is needed by (installed) perl-Specio-0.47-alt1.noarch
	perl(diagnostics.pm) is needed by (installed) evolution-data-server-3.40.3-alt1.x86_64
	perl(diagnostics.pm) is needed by (installed) mysqltuner-1.7.2-alt1.noarch
 $ sudo -- apt-get remove perl-devel
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Следующие пакеты будут УДАЛЕНЫ:
  abiword clamtk evolution-data-server frozen-bubble frozen-bubble-data gscan2pdf hwinfo-utils mysqltuner
Comment 6 Vitaly Lipatov 2021-08-18 00:46:06 MSK
error: Failed dependencies:
	perl(Test/Fatal.pm) is needed by (installed) perl-Specio-0.47-alt1.noarch



 $ sudo -- rpm -ev perl-Module-Build
error: Failed dependencies:
	perl(Module/Build.pm) is needed by (installed) perl-Alien-SDL-1.446-alt1.noarch
	perl(Module/Build.pm) is needed by (installed) perl-SDL-2.548-alt2.x86_64

Модули собираемые через Module::Build, содержат сгенерированный конфиг для него
ConfigData.pm

Если он используется в дальнейшем для сборки чего-либо с этим модулем, то простейший вариант это убрать генерируемую им зависимость на perl(Module/Build.pm).


Игорь, вы не могли бы посмотреть предложенные мной изменения и высказать своё мнение?
perl-Specio.git=0.47-alt2
http://git.altlinux.org/tasks/283234/

perl-IO-Async.git=0.78-alt2
http://git.altlinux.org/tasks/283235/

perl-Net-BitTorrent-0.052-alt4
http://git.altlinux.org/tasks/283236/
Comment 7 Vitaly Lipatov 2021-08-18 00:57:54 MSK
(Ответ для Vitaly Lipatov на комментарий #6)
... 
> Игорь, вы не могли бы посмотреть предложенные мной изменения и высказать
> своё мнение?
> perl-Specio.git=0.47-alt2
> http://git.altlinux.org/tasks/283234/
> 
> perl-IO-Async.git=0.78-alt2
> http://git.altlinux.org/tasks/283235/
> 
> perl-Net-BitTorrent-0.052-alt4
> http://git.altlinux.org/tasks/283236/

Я по ошибке использовал не тот макрос, так что реально из пакета такая конструкция зависимость не убирает:
%add_findreq_skiplist perl(Module/Build.pm)

Тут должен был быть путь к файлу, зависимости от которого нам не нужны: /usr/share/perl5/Alien/SDL/ConfigData.pm

Указанные сборки пакетов только концепт. Нужно обсудить, стоит ли и возможно ли
ли добавить управление пропускаемыми зависимостями, как это сделано для python в add_python3_req_skip
Comment 8 viy 2021-08-18 14:19:25 MSK
Спасибо, что исследовали данную проблему и еще раз привлекли внимание к ней.

1. Я согласен с Виталием, что проблема в основном не в perl-devel, а в остальных пакетах.

> Игорь, вы не могли бы посмотреть предложенные мной изменения и высказать своё мнение?
2.Спасибо большое, единственно, по поводу удаления модулей из пакета -
удаление слишком радикальный шаг. Я бы советовал выносить в отдельный подпакет.
Ведь кроме Сизифа есть и autoimports. По счастью, для тех изменений в autoimports unmetов тоже не появилось.

3. Единого решения нет, надо смотреть на группы пакетов. Где-то отдельно паковать тесты и другой devel. 
Для ConfigData.pm лучше использовать %add_findreq-skiplist */ConfigData.pm
и т. д.

4. Завести белый список пакетов из класса devel
серый список, где зависимость честная и надо думать над перераспилом perl-devel
и черный список пакетов, которые нужно править.
Comment 9 Vitaly Lipatov 2021-08-18 15:42:00 MSK
(Ответ для viy на комментарий #8)
> Спасибо, что исследовали данную проблему и еще раз привлекли внимание к ней.
> 
> 1. Я согласен с Виталием, что проблема в основном не в perl-devel, а в
> остальных пакетах.
> 
> > Игорь, вы не могли бы посмотреть предложенные мной изменения и высказать своё мнение?
> 2.Спасибо большое, единственно, по поводу удаления модулей из пакета -
> удаление слишком радикальный шаг. Я бы советовал выносить в отдельный
> подпакет.
> Ведь кроме Сизифа есть и autoimports. По счастью, для тех изменений в
> autoimports unmetов тоже не появилось.
Удаление не очень радикальный шаг, если что-то упаковано по ошибке. Историю с упаковкой бессмысленных тестов мы уже проходили на python. В подавляющем большинстве пакетов они не используются. 
Поэтому я считаю, что не стоит по умолчанию плодить подпакеты test. Удаление-то не радикальное, как только будет сигнал, что тест нужен, его легко упаковать.

Лишнюю зависимость на Test::More в Specio попробую решить мирным путём:
https://github.com/houseabsolute/Specio/pull/19

> 
> 3. Единого решения нет, надо смотреть на группы пакетов. Где-то отдельно
> паковать тесты и другой devel. 
> Для ConfigData.pm лучше использовать %add_findreq-skiplist */ConfigData.pm
> и т. д.
Хорошо, сделал так. Тут важно сформировать политику, понимая, зачем этот ConfigData применяется.

> 4. Завести белый список пакетов из класса devel
> серый список, где зависимость честная и надо думать над перераспилом
> perl-devel
> и черный список пакетов, которые нужно править.
У меня пока критерий простой — прикладные программы на perl не должны вытягивать devel-пакеты.
Comment 10 Vitaly Lipatov 2021-08-21 19:30:32 MSK
(Ответ для viy на комментарий #8)
...
> 2.Спасибо большое, единственно, по поводу удаления модулей из пакета -
> удаление слишком радикальный шаг. Я бы советовал выносить в отдельный
> подпакет.
> Ведь кроме Сизифа есть и autoimports. По счастью, для тех изменений в
> autoimports unmetов тоже не появилось.
В Сизифе сломалась сборка двух пакетов. Один хотел удалённые тесты, и я их вернул в perl-IO-Async-tests.
В другом была пропущена требуемая ему зависимость perl-Test-Failure, которая ранее неявно вытягивалась с perl-IO-Async.

Отправил
283550 PENDING #2 sisyphus perl-Promises.git=1.04-alt2
283549 TESTED #3 [test-only] sisyphus perl-IO-Async.git=0.79-alt2 perl-Net-Async-CassandraCQL.git=0.12-alt2
Comment 11 viy 2021-08-22 04:32:51 MSK
Благодарю
Comment 12 Vitaly Lipatov 2021-08-22 13:08:10 MSK
(Ответ для viy на комментарий #11)
> Благодарю

Если я сделаю что-то не так, обязательно пишите, я ещё только учусь.
Comment 13 Vitaly Lipatov 2024-04-06 02:52:45 MSK
Отправил
344512 EPERM #3 sisyphus perl.git=5.38.2-alt0.2

+%files diagnostics
+       %_bindir/splain
+       %privlib/diagnostics.pm
+%dir   %privlib/pod
+# perldiag.pod is NOT a doc; it used by diagnostics.pm
+%doc   %privlib/pod/perldiag.pod
+
 %changelog
+* Sat Apr 06 2024 Vitaly Lipatov <lav@altlinux.ru> 1:5.38.2-alt0.2
+- split diagnostics to perl-diagnostics subpackage (see #31417)

Это позволяет убрать зависимость на perl-devel от
$ epm wd "perl(diagnostics.pm)"
 $ apt-cache whatdepends perl(diagnostics.pm)
  perl-Geo-Coordinates-Transform-0.10-altsisyphus+308125.100.1.1@1665250672
  mysqltuner-1.7.2-alt1@1495729619
  kpcli-3.8.1-altsisyphus+313490.100.1.1@1673744538
  evolution-data-server-3.52.0-altsisyphus+343025.400.4.2@1710847449
Comment 14 Vitaly Lipatov 2024-04-06 03:25:50 MSK
Выбрал из прямых пользователей пакета perl-devel следующие пакеты (не являющиеся модулями perl):
  shutter-0.99.4-altsisyphus+316757.300.3.1@1678897642
  public-inbox-1.9.0.1113.g84874a85-altsisyphus+337109.100.1.1@1703346700
  opm-core-2.3-alt2@1471371439
  imapsync-2.229-altsisyphus+311125.100.1.1@1670063286
  rex-1.14.3-altsisyphus+327441.100.1.1@1692360611
  os-autoinst-4.6-altsisyphus+337224.100.3.2@1703597558
  swig-data-4.1.1-alt8:sisyphus+339194.200.2.1@1706442289
  hwinfo-utils-21.23-alt1.sisyphus+332823.100.1.1@1698332069
Comment 15 Vitaly Lipatov 2024-04-06 03:49:13 MSK
(Ответ для Vitaly Lipatov на комментарий #14)
> Выбрал из прямых пользователей пакета perl-devel следующие пакеты (не
> являющиеся модулями perl):
>   shutter-0.99.4-altsisyphus+316757.300.3.1@1678897642
https://bugzilla.altlinux.org/49928

>   public-inbox-1.9.0.1113.g84874a85-altsisyphus+337109.100.1.1@1703346700
perl(Test/More.pm) is needed by (installed) public-inbox-1.9.0.1113.g84874a85-alt1.noarch

>   opm-core-2.3-alt2@1471371439
perl(Test/More.pm) is needed by (installed) opm-core-2.3-alt2.noarch

>   imapsync-2.229-altsisyphus+311125.100.1.1@1670063286
perl(Test/More.pm) is needed by (installed) imapsync-2.229-alt1.noarch

>   rex-1.14.3-altsisyphus+327441.100.1.1@1692360611
perl(Test/Builder/Module.pm) is needed by (installed) rex-1.14.3-alt2.noarch

>   swig-data-4.1.1-alt8:sisyphus+339194.200.2.1@1706442289
perl(ExtUtils/MakeMaker.pm) is needed by (installed) swig-data-1:4.1.1-alt8.noarch

>   hwinfo-utils-21.23-alt1.sisyphus+332823.100.1.1@1698332069
perl(Dumpvalue.pm) is needed by (installed) hwinfo-utils-21.23-alt1.3.x86_64