Bug 36325 - Паразитные зависимости
Summary: Паразитные зависимости
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: rpm-build-ruby (show other bugs)
Version: unstable
Hardware: all Linux
: P3 blocker
Assignee: majioa@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks: 36362
  Show dependency tree
 
Reported: 2019-03-21 09:55 MSK by Sergey V Turchin
Modified: 2019-04-03 15:55 MSK (History)
16 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sergey V Turchin 2019-03-21 09:55:22 MSK
При сборке у меня стали в разных пакетах появляться новые зависимости на несуществующий пакет вида: пакет pkg-devel хочет pkg.

Достаточно просто пересобрать пакет без изменений http://git.altlinux.org/tasks/225168/logs/events.1.1.log

Приходится городить http://git.altlinux.org/people/zerg/packages/?p=kde5-libkdcraw.git;a=commitdiff;h=913ab4fcb2a35c35569d7030f1a6ba42446bf852
А сколько таких зависимостей напихалось незаметно -- хз.
Comment 1 Sergey V Turchin 2019-03-21 10:43:39 MSK
В общем, у меня вся сборка встала. :-(
Comment 2 Ivan A. Melnikov 2019-03-21 11:08:00 MSK
http://git.altlinux.org/tasks/225168/build/100/x86_64/log :

> Ruby requires detection for qt5-webkit-devel
> Require calculation results:
> qt5-webkit = 5.212.0-alt10
> ruby(2.5.0)
Comment 3 Ivan A. Melnikov 2019-03-21 11:12:07 MSK
Да, это rpm-build-ruby.

http://git.altlinux.org/gears/r/rpm-build-ruby.git?p=rpm-build-ruby.git;a=blob;f=ruby.req;h=d42e0650609f572c95cd2e43659f15819496e775;hb=c691655fd8cc63d061aa904e696e4341b868654f#l83

> def pkgname
>     ENV['RPM_SUBPACKAGE_NAME'].gsub(/(-doc|-devel)$/, '')
> end
Comment 4 AEN 2019-03-21 11:17:31 MSK
(В ответ на комментарий №3)
> Да, это rpm-build-ruby.
> 

nbr с сегодняшнего дня в отпуске на неделю.
Comment 5 Ivan A. Melnikov 2019-03-21 11:33:09 MSK
(In reply to comment #4)
> (В ответ на комментарий №3)
> > Да, это rpm-build-ruby.
> > 
> 
> nbr с сегодняшнего дня в отпуске на неделю.

Автор этого волшебного скрипта, похоже, всё таки Pavel Skrylev <majioa@altlinux.org>:

http://git.altlinux.org/gears/r/rpm-build-ruby.git?p=rpm-build-ruby.git;a=commit;h=8380213a8681d72a342d569e97e44a28af734393

Похоже, любой пакет, в сборочный чрут которого попадает rpm-build-ruby, получает зависимость на ruby(2.5.0) и такой вот pkgname:

> ENV['RPM_SUBPACKAGE_NAME'].gsub(/(-doc|-devel)$/, '')

Вообще любой. В числе невинно пострадавших, например, libwebkit2gtk и perl-prelude.
Comment 6 Малъ Скрылевъ 2019-03-21 11:38:57 MSK
> Похоже, любой пакет, в сборочный чрут которого попадает rpm-build-ruby,
> получает зависимость на ruby(2.5.0) и такой вот pkgname:
> 
> > ENV['RPM_SUBPACKAGE_NAME'].gsub(/(-doc|-devel)$/, '')
> 

Не в любой, а тот, который был оформлен как руби и тот, который содержит исполняемые библиотеки (.so), которые собственно и крепятся к ruby.

а зачем в нерубишных пакетах rpm-build-ruby?
Comment 7 Anton Farygin 2019-03-21 11:43:56 MSK
2ldv: эту проблему надо решать каким-то другим способом, например включив автору сего чудного пакета жёсткий ревью всех его изменений.

Павел, вы не делаете разницы между ruby и не-ruby в своём rpm-build-ruby. Мало ли зачем прилетит rpm-build-ruby в систему - причин может быть множество и одна из них - сборка пакетов на ruby. НО зачем при этом ломать зависимости других, не имеющих отношения к ruby пакетов ?
Comment 8 Малъ Скрылевъ 2019-03-21 11:46:51 MSK
(In reply to comment #7)
> 2ldv: эту проблему надо решать каким-то другим способом, например включив
> автору сего чудного пакета жёсткий ревью всех его изменений.
> 
> Павел, вы не делаете разницы между ruby и не-ruby в своём rpm-build-ruby. Мало
> ли зачем прилетит rpm-build-ruby в систему - причин может быть множество и одна
> из них - сборка пакетов на ruby. НО зачем при этом ломать зависимости других,
> не имеющих отношения к ruby пакетов ?

Антон, вы за языком следите иногда или нет?)

У меня в рубишных пакетах все норм, зачем вставлять в нерубишные пакеты rpm-build-ruby мне не известно по сю пору.
Comment 9 Anton Farygin 2019-03-21 11:50:55 MSK
Павел, ну сделайте тогда так, что бы rpm-build-ruby нельзя было поставить в систему, в которой он не нужен.

Не забудьте только при этом о существовании пакетов, в которых есть код как на ruby, так и на других языках программирования.
Comment 10 Sergey V Turchin 2019-03-21 11:54:47 MSK
(В ответ на комментарий №6)
> а зачем в нерубишных пакетах rpm-build-ruby?
Например, есть src-пакет pkg, из которого собираются pkg-ruby-scripts, libpkg и pkg-devel, при этом бинарного пакета pkg нет.
Comment 11 Sergey V Turchin 2019-03-21 11:56:28 MSK
(В ответ на комментарий №8)
> зачем вставлять в нерубишные пакеты rpm-build-ruby мне не известно по сю пору.
Это не важно. Ваш пакет не должен никому мешать даже при сборке на локальной системе с всегда установленным rpm-build-ruby.
Comment 12 Ivan A. Melnikov 2019-03-21 12:23:44 MSK
(In reply to comment #6)
> > Похоже, любой пакет, в сборочный чрут которого попадает rpm-build-ruby,
> > получает зависимость на ruby(2.5.0) и такой вот pkgname:
> > 
> > > ENV['RPM_SUBPACKAGE_NAME'].gsub(/(-doc|-devel)$/, '')
> > 
> 
> Не в любой, а тот, который был оформлен как руби и тот, который содержит
> исполняемые библиотеки (.so), которые собственно и крепятся к ruby.

Действительно, я погорячился. Зависимость на ruby(<version>) получает любой пакет, в сборочной среде которого есть rpm-build-ruby, а в пакете -- хоть один файл с расширением `.so`.

Павел, я прошу Вас признать баг и сообщить, какие шаги будут предприняты для его исправления. Также сообщите, если Вам нужна помощь. Спасибо.
Comment 13 Ivan Zakharyaschev 2019-03-21 13:01:44 MSK
(In reply to comment #12)
> (In reply to comment #6)
> > > Похоже, любой пакет, в сборочный чрут которого попадает rpm-build-ruby,
> > > получает зависимость на ruby(2.5.0) и такой вот pkgname:
> > > 
> > > > ENV['RPM_SUBPACKAGE_NAME'].gsub(/(-doc|-devel)$/, '')
> > > 
> > 
> > Не в любой, а тот, который был оформлен как руби и тот, который содержит
> > исполняемые библиотеки (.so), которые собственно и крепятся к ruby.
> 
> Действительно, я погорячился. Зависимость на ruby(<version>) получает любой
> пакет, в сборочной среде которого есть rpm-build-ruby, а в пакете -- хоть один
> файл с расширением `.so`.
> 
> Павел, я прошу Вас признать баг и сообщить, какие шаги будут предприняты для
> его исправления. Также сообщите, если Вам нужна помощь. Спасибо.

Для сравнения пример python3.req.files http://git.altlinux.org/gears/r/rpm-build-python3.git?p=rpm-build-python3.git;a=blob;f=rpm-build-python3/python3.req.files;h=662da46a519d6dcab1dfa3f165f029f7e072a996;hb=HEAD#l47

Рассматриваются только *.so в особых питоновских путях:

	is_python3_path "$f" ||
		continue
	case "$t" in
		# shortcut for possible python3 extensions
		*ELF*" shared object"*)
		        echo "$f"
			continue ;;
	esac
Comment 14 Sergey V Turchin 2019-03-21 13:08:19 MSK
(В ответ на комментарий №13)
> Рассматриваются только *.so в особых питоновских путях:
Так же это всё равно не повод ставить зависимость на отсутствующий пакет.
Comment 15 Dmitry V. Levin 2019-03-21 13:34:49 MSK
(In reply to comment #12)
> (In reply to comment #6)
> > > Похоже, любой пакет, в сборочный чрут которого попадает rpm-build-ruby,
> > > получает зависимость на ruby(2.5.0) и такой вот pkgname:
> > > 
> > > > ENV['RPM_SUBPACKAGE_NAME'].gsub(/(-doc|-devel)$/, '')
> > > 
> > 
> > Не в любой, а тот, который был оформлен как руби и тот, который содержит
> > исполняемые библиотеки (.so), которые собственно и крепятся к ruby.
> 
> Действительно, я погорячился. Зависимость на ruby(<version>) получает любой
> пакет, в сборочной среде которого есть rpm-build-ruby, а в пакете -- хоть один
> файл с расширением `.so`.
> 
> Павел, я прошу Вас признать баг и сообщить, какие шаги будут предприняты для
> его исправления. Также сообщите, если Вам нужна помощь. Спасибо.

Павел, исправьте это, пожалуйста, незамедлительно. Спасибо.
Comment 16 Малъ Скрылевъ 2019-03-21 23:54:10 MSK
Если в пакете нет надобности в сборке руинов, мягко говоря, добавлять туда его сборочный пакет неумно. Это касается и пакета qt5-webkit, который у меня заняв хешерницу на весь день успешно собрался и без оного пакета.

Что касается пакета rpm-build-ruby, так если он добавлен, то он думает, что нужно сопроводителю как-то анализировать файлы на предмет руби зависимостей. Хотя сегодняшнею сборкою rpm-build-ruby я и поправил это автодобавление. Однако, я все ещё считаю, что сопроводителям, не следует добвалять абы что в свои сборочные зависимости, хотя бы потому, что это добавляет мусора, которого во множестве спеков и сборок и так предостаточно.

Но в ближайшее время я вообще выпилю из него анализ пакетов не имеющих отношение к руби подсистеме, почти целиком переписав определялку рубинозависимых пакетов.
Comment 17 Dmitry V. Levin 2019-03-22 00:06:17 MSK
Добавлять в пакет A-devel зависимость на несуществующий пакет A неправильно в любом случае, вне зависимости от ruby.
Поскольку у вас нет возможности узнать, существует ли пакет A, то не добавляйте такую зависимость.
Вы, наверное, не хотите, чтобы я резал пакет rpm-build-ruby скальпелем, поэтому, пожалуйста, сделайте это самостоятельно.
Comment 18 Dmitry V. Levin 2019-03-22 00:25:45 MSK
На данный момент попадание пакета rpm-build-ruby в сборочную среду нижеперечисленных исходных пакетов приводит к добавлению паразитной зависимости на несуществующие пакеты:

ImageMagick
allegro4.4
bro
cal3d
clamav
googletest
hiredis
icu
itpp
kde4-python
kf5-kconfigwidgets
kf5-kiconthemes
kf5-kjs
kf5-kjsembed
libcangjie
libevent2.1
libfltk13
libgcrypt
libgloox
libgphoto2
libjemalloc2
libpcap
libpng16
libredblack
librtmidi
libsixel
mariadb
mnogosearch
mono
oniguruma
opencdk
openssl1.1
pcre
perl
pympi
qt5-base
qt5-declarative
qt5-webengine
qt5-xmlpatterns
rasqal
scorep
smokegen
torque
unixODBC
wayland

Например, при пересборке пакета pcre у пакета libpcre-devel появляется зависимость на несуществующий пакет libpcre.
Comment 19 Repository Robot 2019-03-22 00:49:24 MSK
rpm-build-ruby-1:1.0.0-alt4 -> sisyphus:

Thu Mar 21 2019 Dmitry V. Levin <ldv@altlinux> 1:1.0.0-alt4
- NMU.
- Removed injection of parasite dependencies (closes: #36325).
Comment 20 Anton Farygin 2019-03-22 07:27:11 MSK
У ImageMagick, кстати, нет прямой сборочной зависимости на rpm-build-ruby.
Да и 
$ curl -s http://git.altlinux.org/beehive/logs/Sisyphus-x86_64/latest/success/ImageMagick-6.9.10.33-alt1|grep -i ruby

Ничего не показывает. 
Но зависимость на rpm-build-ruby есть у libruby-devel.
Comment 21 Dmitry V. Levin 2019-03-22 07:37:28 MSK
(In reply to comment #20)
> У ImageMagick, кстати, нет прямой сборочной зависимости на rpm-build-ruby.

Это хорошо.  У pcre тоже нет.
Я просто привёл (неполный) список исходных пакетов, которые получили бы анметы, если бы rpm-build-ruby попал к ним в сборочную среду.

По результатам последней тестовой пересборки rpm-build-ruby попадал в сборочную среду следующих пакетов, не считая *ruby* и gem-*:

$ echo rpm-build-ruby | join -11 -22 -o2.1 - /beehive/stats/Sisyphus-x86_64/ufb-2 |grep -Ev '^gem-|ruby'
alexandria
asciidoctor
calligra
chef
chef-zero
erubis
fluentd
flvtool2
fog
foreman
geos
github2spec
gwyddion
kde4-amarok
kde4webdev
kde5-kaddressbook
kde5-libkdcraw
kf5-plasma-framework
libcaca
libdmtx
libprelude
libstfl0
libwebkitgtk4
maruku
mustache
nokogiri-gemspec
obexftp
ohai
opennebula
opennebula-context
pcs
perl-Devel-Cover
puma
puppet
puppetdb
puppetserver
qt4-webkit
qt5-webkit
rake-compiler
rdiscount
redcloth
rhc
ronn
sdoc
sprockets
swig
taskjuggler
thor
unicorn
userblocker
vim
voodoo
weechat
xapian-bindings
Comment 22 Anton Farygin 2019-03-22 07:44:14 MSK
Из этого списка надо получить список пакетов, собранных после появления нового rpm-build-ruby в репозитории и отправить их на простую пересборку.

Но лучше, конечно, пересмотреть список сборочных зависимостей этих пакетов. наверняка в ряде случаев данная зависимость является паразитной и её удаление не приведёт к ошибкам сборки.
Comment 23 Alexey Shabalin 2019-04-03 15:55:09 MSK
(В ответ на комментарий №21)
> (In reply to comment #20)
> > У ImageMagick, кстати, нет прямой сборочной зависимости на rpm-build-ruby.
> 
> Это хорошо.  У pcre тоже нет.
> Я просто привёл (неполный) список исходных пакетов, которые получили бы анметы,
> если бы rpm-build-ruby попал к ним в сборочную среду.
> 
> По результатам последней тестовой пересборки rpm-build-ruby попадал в сборочную
> среду следующих пакетов, не считая *ruby* и gem-*:

На самом деле уже попало в сизиф, например libwebkitgtk4.
Можно ли вычислить это в сизифе и отправить на пересборку?