[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