[devel] Выборка из 20 недособранных пакетов (buildreq-src).
Igor Vlasenko
vlasenko на imath.kiev.ua
Пт Мар 18 00:14:17 MSK 2016
Уважаемые коллеги,
не успел следующую часть по buildreq-src,
поэтому публикую результаты эксперимента
по поиску надособранных пакетов с помощью buildreq-src.
Скандал дня желтой прессы:
chromium в ALTLinux, по видимому, собран без поддержки gif
В выборке:
cabextract force @everybody
cairo-dock-plugins antohami @everybody
callweaver @nobody
centerim oddity @qa @everybody
cfengine stanv @everybody
cfitsio zerg
chromium cas @everybody
c-icap-modules cas @everybody
cinnamon-control-center cow @everybody
codeblocks dk
conserver stanv @qa
crimson-fields george @qa
crossfire eugvv @qa @everybody
crossfire-client eugvv @qa @everybody
crrcsim mike @everybody
cryptmount pauli
cryptsetup naf shaba
csync boyarsh @everybody
cvsgraph force @everybody
Выборка получена путем прогона пакетов c*.src.rpm через buildreq-src.
cd /ALT/Sisyphus/files/SRPMS
rpm -i c*.src.rpm
cd ~/RPM/SPECS
for i in *.spec; do buildreq-src --force -bp $i; echo; done 2>&1| tee log
63% - без нареканий
buildreq-src: c2050.spec already contains all found dependencies
32% - с дополнением BR:, но, как правило, безвредным.
5% - были выявлены проблемы.
Проблем может быть и больше, но там, где BR: слишком лаконичные
и оптимизированные, buildreq-src выдавал большие простыни,
и я в них глубоко не вникал.
Поэтому 5% это то, что я пробежался по верхам и затем проверил,
глянув в исходники.
Детали по выборке:
cabextract:
# BEGIN SourceDeps(oneline):
BuildRequires: libmspack-devel
# END SourceDeps(oneline)
некритическое замечание:
cabextract может линковаться со внешней libmspack, но линкуется
статически с копией libmspack, которую таскает с собой.
cairo-dock-plugins:
Сама программа buildreq-src плохо справилась с работой.
cairo-dock-plugins использует CMake, а плагин CMake для SourceAnalyzer
еще в разработке, и в нем еще нет поддержки переменных.
Поэтому ряд зависимостей, спрятанных в переменных, программа не у
видела, поэтому и поругалась:
INFO: SourceAnalyzer: nothing in pkg-config provides ${DBUSMENU_GTK_MODULE}.
INFO: SourceAnalyzer: nothing in pkg-config provides ${INDICATOR_APPLET_MODULE}.
INFO: SourceAnalyzer: nothing in pkg-config provides ${TERMINAL_MODULE}.
INFO: SourceAnalyzer: nothing in pkg-config provides ${GMENU_MODULE}.
INFO: SourceAnalyzer: nothing in pkg-config provides ${DBUSMENU_MODULE}.
INFO: SourceAnalyzer: nothing in pkg-config provides ${IDO_MODULE}.
INFO: SourceAnalyzer: nothing in pkg-config provides thunar-vfs-1.
INFO: SourceAnalyzer: nothing in pkg-config provides ${WEBKIT_MODULE}.
SourceAnalyzer: some deps weren't found. Is DistroMap database outdated?
Однако и в выданной простыне
# BEGIN SourceDeps(oneline):
BuildRequires: /usr/bin/msgfmt /usr/bin/python /usr/bin/python2 /usr/bin/python3 /usr/bin/valac kdelibs libqt4-devel pkgconfig(gio-2.0) pkgconfig(glib-2.0) pkgconfig(glib-sharp-2.0) pkgconfig(gnome-vfs-2.0) pkgconfig(gobject-2.0) pkgconfig(libgnomeui-2.0) pkgconfig(ndesk-dbus-1.0) pkgconfig(ndesk-dbus-glib-1.0) pkgconfig(x11) pkgconfig(zeitgeist-1.0) pkgconfig(zeitgeist-2.0)
# END SourceDeps(oneline)
Видно, что пакету явно не хватает BuildRequires: pkgconfig(zeitgeist-2.0)
что подтверждает лог сборки.
-- checking for module 'zeitgeist-2.0'
-- package 'zeitgeist-2.0' not found
-- Could not find 'zeitgeist-2.0'; trying with an old version 'zeitgeist-1.0'...
-- checking for module 'zeitgeist-1.0'
-- package 'zeitgeist-1.0' not found
-- Could not find libzeitgeist; Cairo-Dock won't be built with Zeitgeist support
Там, в логе сборки, видно, что из зависимостей, которые спрятаны в
переменные, многих тоже не хватает.
callweaver:
# BEGIN SourceDeps(oneline):
BuildRequires: /usr/bin/nspr-config /usr/sbin/groupadd ElectricFence libOpenSP-devel libbluez-devel libcurl-devel libdb4.8-devel libjs-devel libldap-devel libmISDN libmemcache-devel libncurses-devel libnet-snmp-devel libnewt-devel libogg-devel libpq5.8-devel libpri-devel libsrtp-devel libtonezone-dahdi-devel perl-CGI perl-DBD-mysql perl-DBI perl-Net-Jabber perl-base perl-devel pkgconfig(alsa) pkgconfig(loudmouth-1.0)
# END SourceDeps(oneline)
простыня, глубоко не вник, но похоже, как минимум с libmemcache-devel надо дособрать.
centerim:
# BEGIN SourceDeps(oneline):
BuildRequires: gcc-c++ libXScrnSaver-devel libfribidi-devel libotr-devel libotr2-devel nss_compat_ossl-devel perl(File/Spec/Functions.pm) perl(Time/Local.pm) perl(Time/ParseDate.pm) pkgconfig(nss)
# END SourceDeps(oneline)
Посмотрел
rpmquery --requires -p centerim-4.22.10-alt2.x86_64.rpm G Xss - пусто.
а с libXScrnSaver-devel стоило бы собрать.
cfengine:
# BEGIN SourceDeps(oneline):
BuildRequires: /usr/bin/getconf libgd2-devel libgraphviz-devel libgraphviz-frozen-devel libldap-devel libmongoc0-devel libpq5.8-devel libtokyocabinet-devel libvirt-devel perl(getopts.pl) postgresql9.5-devel qdbm-devel
# END SourceDeps(oneline)
В спеке написано --without-graphviz,
а вот отсутствие в BR: libtokyocabinet-devel
и других DB существенно -- пакет недособран, часть его возможностей не активирована.
cfitsio:
# BEGIN SourceDeps(oneline):
BuildRequires: /usr/bin/gfortran bzlib-devel
# END SourceDeps(oneline)
/usr/bin/gfortran по сути избыточный - в спеке уже есть gcc-fortran,
но gcc-fortran (предоставляется не одним пакетом, а многими,
это библиотеку сбило с толку)
а вот отсутствие bzlib-devel по существу --
cfitsio с удовольствием слинковался бы с -lbz, да никто ему не дал.
chromium:
Большая простыня
# BEGIN SourceDeps(oneline):
BuildRequires: /usr/bin/go /usr/bin/llvm-config /usr/bin/python /usr/bin/valgrind boost-program_options-devel fontconfig-devel libGL-devel libGLU-devel libfreetype-devel libgif-devel libglibmm-devel libgperftools-devel libgtest-devel libtrilinos10-devel perl-JSON perl-Math-BigInt perl-Pod-Usage perl-Statistics-Descriptive perl-Statistics-Distributions perl-Tie-File perl-base perl-devel pkgconfig(lua) rpm-build-perl rpm-build-python swig texinfo
# END SourceDeps(oneline)
Глубоко не разбирался, но очень подозрительно было отсутствие libgif-devel.
$ rpmquery --requires -p chromium-48.0.2564.116-alt1.x86_64.rpm G gif
пусто.
Порылся в исходниках -- libgif-devel нужна используемой внутри skia, см.
chromium/src/third_party/skia/cmake/CMakeLists.txt
Выглядит как баг --- показывает ли chromium gif?
c-icap-modules:
# BEGIN SourceDeps(oneline):
BuildRequires: bzlib-devel
# END SourceDeps(oneline)
опять хотело бы слинковался с -lbz, да никто не дал.
cinnamon-control-center:
# BEGIN SourceDeps(oneline):
BuildRequires: libXxf86misc-devel pkgconfig(NetworkManager) pkgconfig(gdk-pixbuf-2.0) xorg-kbproto-devel
# END SourceDeps(oneline)
libXxf86misc-devel здесь похоже пропущено зря,
судя по configure.ac cinnamon-control-center линковаться
с libXxf86misc хочет. соответственно
пакет недособран, какая-то часть его возможностей не активирована.
codeblocks:
# BEGIN SourceDeps(oneline):
BuildRequires: boost-devel-headers bzlib-devel imake libXt-devel pkgconfig(fontconfig) pkgconfig(glib-2.0) swig xorg-cf-files zlib-devel
# END SourceDeps(oneline)
Бросается в глаза bzlib-devel.
и действительно, пакет недособран, опять нет bz2
conserver:
# BEGIN SourceDeps(oneline):
BuildRequires: libpam0-devel libsocket-devel libwrap-devel
# END SourceDeps(oneline)
Здесь libsocket-devel, как и выше, мусорный артефакт,
а вот с libpam0-devel пакет явно стоило слинковать.
по поводу libwrap-devel - линковать с ней можно,
возможно, стоило бы тоже слинковать.
crimson-fields:
# BEGIN SourceDeps(oneline):
BuildRequires: /usr/bin/xmllint /usr/bin/xsltproc libSDL_net-devel zlib-devel
# END SourceDeps(oneline)
Сетку потеряли (libSDL_net-devel)
crossfire:
SourceAnalyzer: some deps weren't found. Is DistroMap database outdated?
# BEGIN SourceDeps(oneline):
BuildRequires: libcheck-devel libcurl-devel perl-base
# END SourceDeps(oneline)
libcheck-devel для тестов, надо бы добавить.
configure: WARNING: Check not found; cannot run unit tests!
а libcurl-devel явно пропущен - недолинковка - баг.
crossfire-client:
# BEGIN SourceDeps(oneline):
BuildRequires: /usr/bin/perl libGL-devel libGLU-devel libXt-devel libalsa-devel libfreeglut-devel zlib-devel
# END SourceDeps(oneline)
нет libalsa-devel -- в спеке стоит --disable-alsa что выглядит
10летней давности протухшим архаизмом,
и учитывая выхлоп configure
Using OSS sound system
configure: Will build sound server? yes (OSS)
явно баг, надо менять на Alsa
crrcsim:
# BEGIN SourceDeps(oneline):
BuildRequires: libcgal-devel
# END SourceDeps(oneline)
crrcsim ищет libcgal-devel, но не находит... надо добавить.
cryptmount:
# BEGIN SourceDeps(oneline):
BuildRequires: /usr/bin/doxygen libudev-devel pkgconfig(libcryptsetup)
# END SourceDeps(oneline)
doxygen для (пере)генерации документации, что можно проигнорировать,
а вот libudev-devel и pkgconfig(libcryptsetup) там по сути,
какая-то часть функциональности утеряна.
cryptsetup:
# BEGIN SourceDeps(oneline):
BuildRequires: libnettle-devel pkgconfig(nss) pkgconfig(openssl) pkgconfig(pwquality)
# END SourceDeps(oneline)
libnettle-devel pkgconfig(nss) pkgconfig(openssl) -- альтернативные
backends, в пакете вместо них выбран gcrypt, а вот pwquality (проверку
качества паролей) можно было бы и добавить.
csync:
# BEGIN SourceDeps(oneline):
BuildRequires: /usr/bin/doxygen perl(Carp/Assert.pm) perl(HTTP/DAV.pm) pkgconfig(check)
# END SourceDeps(oneline)
мелочь, а тесты отключены [pkgconfig(check)].
cvsgraph:
# BEGIN SourceDeps(oneline):
BuildRequires: libjpeg-devel libpng-devel zlib-devel
# END SourceDeps(oneline)
нужны. Как же он graph нарисует без поддержки png?
недособран.
--
I V
Подробная информация о списке рассылки Devel