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: | 28382, 14603, 15515, 15520, 15573, 15700, 15702, 15708, 15720, 15944, 16004, 16005, 16006, 16007, 16008, 18279, 18319, 18654, 21991, 22308, 23679, 23681, 23683, 25814, 28380 |
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 . Не знаю, достойны ли такие неприятности внимания и особого решения там... |