Summary: | perl-devel содержит компоненты, используемые в обычных пакетах | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Sergey Y. Afonin <asy> |
Component: | perl | Assignee: | 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
*** Bug 31133 has been marked as a duplicate of this bug. *** *** Bug 31365 has been marked as a duplicate of this bug. *** *** Bug 30683 has been marked as a duplicate of this bug. *** perl-devel определённо содержит только компоненты, которые нужны при разработке. Во-первых это модули для тестирования Test::* и сборки ExtUtils::MakeMaker, потом отладчик, утилиты и наконец заголовочные файлы для сборки xs. Поэтому надо рассматривать каждый пакет, который содержит зависимость на perl-devel, откуда там возникла эта зависимость. Например, Mojolicious это не просто библиотека для веб-приложений, а целый фреймворк для создания веб-приложений, включая тестирование, т.е. по сути инструмент разработки. Модуль Test::Mojo, основан на Test::More и предназначен для создания тестов к веб-приложению. Т.о. Mojolicious вероятно стоит распилить на части: часть модулей как библиотека, а часть как инструмент для разработки. В этом случае зависимость на perl-devel перейдёт на второй подпакет. С другой стороны perl-devel не так уж и страшен - 4.5 Мб на диске. Стоит ли заморачиваться с его распилом на субкомпоненты? Пока мне видится, что проблема не в 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 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/ (Ответ для 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 Спасибо, что исследовали данную проблему и еще раз привлекли внимание к ней.
1. Я согласен с Виталием, что проблема в основном не в perl-devel, а в остальных пакетах.
> Игорь, вы не могли бы посмотреть предложенные мной изменения и высказать своё мнение?
2.Спасибо большое, единственно, по поводу удаления модулей из пакета -
удаление слишком радикальный шаг. Я бы советовал выносить в отдельный подпакет.
Ведь кроме Сизифа есть и autoimports. По счастью, для тех изменений в autoimports unmetов тоже не появилось.
3. Единого решения нет, надо смотреть на группы пакетов. Где-то отдельно паковать тесты и другой devel.
Для ConfigData.pm лучше использовать %add_findreq-skiplist */ConfigData.pm
и т. д.
4. Завести белый список пакетов из класса devel
серый список, где зависимость честная и надо думать над перераспилом perl-devel
и черный список пакетов, которые нужно править.
(Ответ для 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-пакеты. (Ответ для 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 Благодарю (Ответ для viy на комментарий #11) > Благодарю Если я сделаю что-то не так, обязательно пишите, я ещё только учусь. Отправил 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 Выбрал из прямых пользователей пакета 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 (Ответ для 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 |