Привет. У меня SLES 11 и репозиторий home:linux4humans:qt5.6. Одна из зависимостей Qt 5 - libxcb 1.5 (параметр сборки -qt-xcb - это не о том, это xcb-util), поэтому пришлось обновить системный xorg-x11-libxcb-devel с 1.1 до 1.5. Всё норм, всё пашет.
Только вот юзеры жалуются. Это же не очевидно что, после подключения моего репозитория, надо сначала XCB обновить из него, и только потом устанавливать libqt5. Люди сразу ставят libqt5, а системный libxcb остаётся старый. И это, конечно же, не работает.
Вопрос: как лучше сделать: прописать в зависимостях libQt5Gui - XCB >= 1.5? Или статически слинковать?
Попробовал статически слинковать.
%build
echo yes | ./configure $platform \
Вот между этими строчками впендюрил такую конструкцию:
# build static libxcb
%if 0%{?sles_version} && 0%{?suse_version} == 1110
cp %{SOURCE4} .
tar xf libxcb-1.5.tar.bz2
mkdir libxcb-static
cd libxcb-1.5
./configure --prefix=/var/tmp/libqt5-qtbase-5.6.1-build/qtbase-opensource-src-5.6.1/libxcb-static --enable-static --disable-shared
make
make install
cd -
rm -rf libxcb-1.5
%endif
А ./configure дополнил параметрами:
%if 0%{?sles_version} && 0%{?suse_version} == 1110
-I /var/tmp/libqt5-qtbase-5.6.1-build/qtbase-opensource-src-5.6.1/libxcb-static/include \
-L /var/tmp/libqt5-qtbase-5.6.1-build/qtbase-opensource-src-5.6.1/libxcb-static/lib \
%endif
Сначала делал просто ./libxcb-static и ../libxcb-static, но configure ругался «хочу абсолютный путь». На время отладки, пока сделал так.
Ура! Всё собралось! Теперь будет один пакет libqt5... Думал я, пока не запустились пост-инсталл скрипты:
[ 1021s] found trace of $RPM_BUILD_ROOT or $RPM_BUILD_DIR
[ 1021s] in installed .la file /var/tmp/libqt5-qtbase-5.6.1-build/qtbase-opensource-src-5.6.1/libxcb-static/lib/libxcb-res.la
[ 1021s] found trace of $RPM_BUILD_ROOT or $RPM_BUILD_DIR
[ 1021s] in installed .la file /var/tmp/libqt5-qtbase-5.6.1-build/qtbase-opensource-src-5.6.1/libxcb-static/lib/libxcb-render.la
... и далее 15 строк
Это что же получается? Статические либы вообще нельзя использовать при сборке RPM-пакета - только динамические?