LINUX.ORG.RU
решено ФорумAdmin

openSUSE. Локальная пересбрка src.rpm. Выбора тред :)

 , , , ,


0

1

Всю дорогу возвращаю крайнюю плоть ffmpeg’у и прочей мультимедии в openSUSE путем пересборки их src.rpm с опциями полной сборки. И все-то было хорошо, мои волосы были.

Но недавно переехал на Tumbleweed, и по-старинке начал собирать в виртуалке локально посредством их тулзы build. А оно как давай говорить, что у него есть выбор. И при этом на опцию build –arch x86_64 не реагирует. Хотя при указании build –arch i686 - опция работает как надо (т.е. не мечется в муках выбора какой пакет использовать)

expanding package dependencies...
[    5s] expansion error
[    5s]   have choice for pkgconfig(atk) needed by gtk2-devel: atk-devel atk-devel-32bit
[    5s]   have choice for pkgconfig(cairo) needed by gtk2-devel: cairo-devel cairo-devel-32bit
[    5s]   have choice for pkgconfig(gdk-pixbuf-2.0) needed by gtk2-devel: gdk-pixbuf-devel gdk-pixbuf-devel-32bit
[    5s]   have choice for pkgconfig(gio-2.0) needed by gtk2-devel: glib2-devel glib2-devel-32bit
[    5s]   have choice for pkgconfig(pango) needed by gtk2-devel: pango-devel pango-devel-32bit
[    5s]   have choice for pkgconfig(pangocairo) needed by gtk2-devel: pango-devel pango-devel-32bit
[    5s]   have choice for pkgconfig(pangoft2) needed by gtk2-devel: pango-devel pango-devel-32bit
[    5s]   have choice for coreutils needed by rpm-build: coreutils coreutils-single
[    5s]   have choice for coreutils needed by build-compare: coreutils coreutils-single
[    5s]   have choice for coreutils needed by systemd-rpm-macros: coreutils coreutils-single
[    5s]   have choice for coreutils needed by linux-glibc-devel: coreutils coreutils-single

Как бы заставить не видеть 32bit пакеты-то?

★★★★

Ответ на: комментарий от littlechris

Так как-раз причина локальной пересборки в том, чтобы не использовать эту вася-репу. У них src.rpm для ffmpeg одинаковый даже вроде с офрепой. Просто для полной сборки в офрепе еще нет зависимостей некоторых.

Хотелось бы выяснить для начала баг ли это. А если нет, вопрос остается - как объяснить, что мне не нужны 32bit либы. Сваливают все в одну репу, а люди потом мучаются :(

gutaper ★★★★ ()
Ответ на: комментарий от littlechris

Это понятно. Раньше даже писали, что они обмазываются bcond’ом в спеках, чтобы пользователи сами могли собрать полноценный пакет, если захотят.

Сейчас речь не об этом, а том, что build видит в репе 2 версии пакета - 64 и 32 битную и предлагает мне выбрать между ними. Можно добавлять из командной строки через -X флаг, можно поправить конфг, используемый build, вписав туда Prefer:

Но это все работает со штучными пакетами. И по мере того, как раскрывается дерево зависимостей приходится добавять все больше и больше пакетов вручную, указывая, что 32 битные не нужны. В Leap такого не было. И так как в OBS все работает с теми же репами, то явно это как-то сделать можно.

Вопрос в том - как.

gutaper ★★★★ ()

Походу никак:

Expansion errors

If you get something like

expansion error have choice for inet-daemon needed by imap: inetd xinetd

for a package, then you have two options:

    the quick fix is to add one of the above packages (inetd or xinetd) to your BuildRequires
    another way to fix this is to set a preference in you project config with : osc meta -e prjconf <Project> and add the line: Prefer: xinetd
    the long term fix is to write a mail to opensuse-buildservice mailinglist and ask to add one of the files to the .dsc file of the repository, so other packages with the same problem can be fixed automatically.
gutaper ★★★★ ()

Такому же задроту на заметку: достаточно взять prjconf для Factory, обозвать его, к примеру, tumbleweed.conf и положить в удобное место. Запускать build со своими параметрами, добавив –configdir /path/kuda/polozhili/config –dist tumbleweed

И вуаля. Снова все работает.

gutaper ★★★★ ()