| Summary: | detect when new packages require new versions of libraries | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | Ivan Zakharyaschev <imz> |
| Component: | rpm-build | Assignee: | placeholder <placeholder> |
| Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
| Severity: | enhancement | ||
| Priority: | P2 | CC: | arseny, glebfm, imz, ldv, mike, placeholder, vt |
| Version: | unstable | ||
| Hardware: | all | ||
| OS: | Linux | ||
| Bug Depends on: | 22383 | ||
| Bug Blocks: | 14603, 15515, 15520, 15573, 15700, 15702, 15708, 15720, 15944, 16004, 16005, 16006, 16007, 16008, 18279, 18319, 18654, 21991, 22308, 23679, 23681, 23683, 25814, 28380, 28382 | ||
|
Description
Ivan Zakharyaschev
2008-03-25 19:55:09 MSK
У меня была такая идея -- отслеживать, начиная с какой версии появился опредленный символ. Но полный дамп символов сизиф занимает... $ du sym def 574M sym 359M def $ Этот дамп можно сделать с помощью /usr/bin/rpmelfsym на предмет посмотреть что уже есть на эту тему. Ну и тут ещё проблема в том что генерация репозитария становится инкрементальной -- то есть нельзя это перегенерить с нуля. А также символы могут не только добавляться, но и удаляться. (In reply to comment #1) > Ну и тут ещё проблема в том что генерация репозитария становится инкрементальной > -- то есть нельзя это перегенерить с нуля. Ну если на это посмотреть не как на автообнаружение зависимостей, а как на автоматическое тестирование (частичной обновляемости) Сизифа со старого состояния -- то это не такая проблема. Оно может автоматически слать багрепорты и предлагать добавить зависимость (или самостоятельно добавлять). Тогда в формулировке есть зависимость от старого состояния Сизифа, поэтому обвинить в невоспроизводимости с нуля нельзя. А польза была бы. (In reply to comment #1) > А также символы могут не только > добавляться, но и удаляться. Да, представил себе сценарий: собрали новую библиотеку, в ней пропал символ, используемый программами, кто-то поставил себе эту новую библиотеку, старые программы перестали работать. Это, получается, конфликт новой библиотеки с некоторыми старыми программами, от неё зависящими. Такое даже не очень понятно, куда писать -- не в библиотеку же. Но зато это не такая тяжёлая ситуация для пользователя: если программа перестала работать, её (можно сообразить, что) надо попытаться обновить. Искать библиотеку, которую надо обновить при новой программе, (как в поводе для этого обсуждения) гораздо неприятнее. В принципе, в этой ситуации с пропавшими из библиотеки символами помочь пользователю старых программ никак нельзя, он сам должен думать, когда обновляет библиотеку. А в ситуации с появившимися символами можно: он ставит программу, и у него должно автоматически поставиться всё, что ей нужно. (In reply to comment #3) > В принципе, в этой ситуации с пропавшими из библиотеки символами помочь > пользователю старых программ никак нельзя, он сам должен думать, когда обновляет > библиотеку. А Сизифу поможет пересборка в таком случае. Ещё случаи в копилку примеров: https://bugzilla.altlinux.org/show_bug.cgi?id=15515 , https://bugzilla.altlinux.org/show_bug.cgi?id=15520 . (here, "bug blocks ..." == "this feature would have solved those problems") Вариант реализации: при попадании в Сизиф новой версии библиотеки сравнивать её ABI со старым ABI и требовать, чтобы различия были "версионированы" (иначе не пропускать). Так прежде чем пакету попасть в Сизиф, версии должны будут быть добавлены в него, а после попадания -- проблемы с воспроизводимостью сборки не будет (всё уже в нём указано). (Это, правда, уже не совсем дело rpm-build.) I made a search for some of the cases of undefined symbols admitted by APT on my system:
First, find the affected programs:
$ sudo ldd -r {,/usr}/{s,}bin/* 2>&1 >/dev/null | fgrep -v SUNW | fgrep undef | sed -e 's|.*(\(.*\)).*|\1|' | sort -u
/usr/bin/abiword
/usr/bin/gedit
/usr/bin/gimmage
/usr/bin/gmplayer
/usr/bin/gnome-system-monitor
/usr/bin/gnome-text-editor
/usr/bin/inkscape
/usr/bin/inkview
/usr/bin/lzop
/usr/bin/mencoder
/usr/bin/mplayer
/usr/bin/seahorse
/usr/bin/seahorse-agent
/usr/bin/seahorse-daemon
/usr/bin/seahorse-preferences
/usr/bin/seahorse-tool
/usr/bin/skipstone-bin
/usr/bin/xpcd
/usr/sbin/avahi-daemon
$
Then try to fix them by upgrading the affected programs:
$ sudo ldd -r {,/usr}/{s,}bin/* 2>&1 >/dev/null | fgrep -v SUNW | fgrep undef | sed -e 's|.*(\(.*\)).*|\1|' | sort -u | xargs sudo apt-get install
Reading Package Lists... Done
Building Dependency Tree... Done
Selecting abiword for '/usr/bin/abiword'
abiword is already the newest version.
Selecting gedit for '/usr/bin/gedit'
Selecting gimmage for '/usr/bin/gimmage'
Selecting mplayer-gui for '/usr/bin/gmplayer'
mplayer-gui is already the newest version.
Selecting gnome-system-monitor for '/usr/bin/gnome-system-monitor'
Selecting gedit for '/usr/bin/gnome-text-editor'
Selecting inkscape for '/usr/bin/inkscape'
Selecting inkscape-viewer for '/usr/bin/inkview'
Selecting lzop for '/usr/bin/lzop'
Selecting mencoder for '/usr/bin/mencoder'
Selecting mplayer for '/usr/bin/mplayer'
mplayer is already the newest version.
Selecting seahorse for '/usr/bin/seahorse'
Selecting seahorse-agent for '/usr/bin/seahorse-agent'
Selecting seahorse-agent for '/usr/bin/seahorse-daemon'
Selecting seahorse for '/usr/bin/seahorse-preferences'
Selecting seahorse for '/usr/bin/seahorse-tool'
Selecting skipstone for '/usr/bin/skipstone-bin'
skipstone is already the newest version.
Selecting xpcd for '/usr/bin/xpcd'
xpcd is already the newest version.
Selecting avahi-daemon for '/usr/sbin/avahi-daemon'
The following extra packages will be installed:
avahi avahi-autoipd avahi-daemon avahi-dnsconfd avahi-tools gedit gedit-plugins-seahorse gimmage gnome-applets-seahorse gnome-system-monitor
inkscape inkscape-viewer libavahi libavahi-devel libavahi-glib libavahi-glib-devel libavahi-qt3 libavahi-qt4 libavahi-ui libseahorse lzop mencoder
seahorse seahorse-agent
The following packages will be upgraded
avahi avahi-autoipd avahi-daemon avahi-dnsconfd avahi-tools gedit gedit-plugins-seahorse gimmage gnome-applets-seahorse gnome-system-monitor
inkscape inkscape-viewer libavahi libavahi-devel libavahi-glib libavahi-glib-devel libavahi-qt3 libavahi-qt4 libavahi-ui libseahorse lzop mencoder
seahorse seahorse-agent
24 upgraded, 0 newly installed, 0 removed and 1487 not upgraded.
Need to get 15,1MB/39,6MB of archives.
After unpacking 10,8MB of additional disk space will be used.
Do you want to continue? [Y/n] Abort.
$
Check that there are no unsupported packages in the list (that they are present in Sisyphus). The non-upgradble ones have to be looked at:
$ apt-cache showpkg abiword mplayer-gui mplayer skipstone xpcd | fgrep -4 Package:
Package: abiword
Versions:
2.6.3-alt1(/var/lib/apt/lists/ftp.altlinux.org_pub_distributions_ALTLinux_Sisyphus_i586_base_pkglist.classic)(/var/lib/apt/lists/ftp.linux.kiev.ua_pub_Linux_ALT_Sisyphus_i586_base_pkglist.classic)(/var/lib/rpm/Packages)
Reverse Depends:
--
Provides:
2.6.3-alt1 - abiword
Reverse Provides:
abiword 2.6.3-alt1
Package: mplayer-gui
Versions:
1.0-alt35.26470.1(/var/lib/apt/lists/ftp.altlinux.org_pub_distributions_ALTLinux_Sisyphus_i586_base_pkglist.classic)(/var/lib/apt/lists/ftp.linux.kiev.ua_pub_Linux_ALT_Sisyphus_i586_base_pkglist.classic)(/var/lib/rpm/Packages)
Reverse Depends:
--
Provides:
1.0-alt35.26470.1 - mplayer-gui MPlayer-gui gmplayer
Reverse Provides:
mplayer-gui 1.0-alt35.26470.1
Package: mplayer
Versions:
1.0-alt35.26470.1(/var/lib/apt/lists/ftp.altlinux.org_pub_distributions_ALTLinux_Sisyphus_i586_base_pkglist.classic)(/var/lib/apt/lists/ftp.linux.kiev.ua_pub_Linux_ALT_Sisyphus_i586_base_pkglist.classic)(/var/lib/rpm/Packages)
Reverse Depends:
--
Provides:
1.0-alt35.26470.1 - /usr/bin/mplayer mplayer MPlayer
Reverse Provides:
mplayer 1.0-alt35.26470.1
Package: skipstone
Versions:
1.0.0-alt2(/var/lib/apt/lists/ftp.altlinux.org_pub_distributions_ALTLinux_Sisyphus_i586_base_pkglist.classic)(/var/lib/apt/lists/ftp.linux.kiev.ua_pub_Linux_ALT_Sisyphus_i586_base_pkglist.classic)(/var/lib/rpm/Packages)
Reverse Depends:
--
Provides:
1.0.0-alt2 - skipstone
Reverse Provides:
skipstone 1.0.0-alt2
Package: xpcd
Versions:
2.08-ipl13mdk(/var/lib/rpm/Packages)
Reverse Depends:
$
So, only xpcd is outdated:
$ sudo rpm -e xpcd
$
Now, I finally perform the upgrade:
$ sudo ldd -r {,/usr}/{s,}bin/* 2>&1 >/dev/null | fgrep -v SUNW | fgrep undef | sed -e 's|.*(\(.*\)).*|\1|' | sort -u | xargs sudo apt-get --yes install
<...>
Done.
$
Now, I check whether any packages with problems have remained:
$ sudo ldd -r {,/usr}/{s,}bin/* 2>&1 >/dev/null | fgrep -v SUNW | fgrep undef | sed -e 's|.*(\(.*\)).*|\1|' | sort -u | xargs rpm -qf | sort -u
abiword-2.6.3-alt1
avahi-daemon-0.6.22-alt6
gedit-2.22.3-alt1
gimmage-0.2.3-alt3
gnome-system-monitor-2.22.2-alt1
inkscape-0.46-alt2
inkscape-viewer-0.46-alt2
mencoder-1.0-alt35.26470.1
mplayer-1.0-alt35.26470.1
mplayer-gui-1.0-alt35.26470.1
seahorse-2.22.2-alt1
seahorse-agent-2.22.2-alt1
skipstone-1.0.0-alt2
$
These packages have to fix their dependencies on libraries (make them more strict, requiring the new versions of libraries).
Here are the corresponding bugreports: (In reply to comment #8) > $ sudo ldd -r {,/usr}/{s,}bin/* 2>&1 >/dev/null | fgrep -v SUNW | fgrep undef | sed -e 's|.*(\(.*\)).*|\1|' | sort -u | xargs rpm -qf | > sort -u > abiword-2.6.3-alt1 https://bugzilla.altlinux.org/show_bug.cgi?id=15944 > avahi-daemon-0.6.22-alt6 https://bugzilla.altlinux.org/show_bug.cgi?id=16004 > gedit-2.22.3-alt1 https://bugzilla.altlinux.org/show_bug.cgi?id=15573 > gimmage-0.2.3-alt3 https://bugzilla.altlinux.org/show_bug.cgi?id=16005 > gnome-system-monitor-2.22.2-alt1 https://bugzilla.altlinux.org/show_bug.cgi?id=15520 > inkscape-0.46-alt2 > inkscape-viewer-0.46-alt2 https://bugzilla.altlinux.org/show_bug.cgi?id=16006 > mencoder-1.0-alt35.26470.1 https://bugzilla.altlinux.org/show_bug.cgi?id=16007 > mplayer-1.0-alt35.26470.1 > mplayer-gui-1.0-alt35.26470.1 https://bugzilla.altlinux.org/show_bug.cgi?id=16008 > seahorse-2.22.2-alt1 > seahorse-agent-2.22.2-alt1 https://bugzilla.altlinux.org/show_bug.cgi?id=15720 > skipstone-1.0.0-alt2 Not a bug. Simply /usr/bin/skipstone-bin shouldn't be in the PATH -- https://bugzilla.altlinux.org/show_bug.cgi?id=16009 . > $ > > These packages have to fix their dependencies on libraries (make them more strict, requiring the new versions of libraries). > at@ с тех пор были продуманы и реализованы set versions и соответствующие provides/requires; см. тж. http://ftp.linux.kiev.ua/pub/conference/peers/protva/2010/trubezh2010.pdf (с. 63) Большое спасибо всем решавшим проблему с зависимостями на символы в Сизифе! и за сообщения об этом здесь в комментариях спасибо! Пока что, бывает, случаются такие проблемы в ветках репозитория более старых; например, при попытке делать обновления в p5 -- https://bugzilla.altlinux.org/show_bug.cgi?id=25814 . Не знаю, достойны ли такие неприятности внимания и особого решения там... |