Вопросы по OBS

Так получилось, что один из собираемых пакетов предоставляет пакет, уже имеющийся в системе.
Из за чего имею следующую ошибку:
unresolvabel: have choice for fam-devel needed by libkde4-devel

Как это можно обойти/исправить? :slight_smile:

Ваш пакет предоставляет fam-devel?
Тогда можно в настройках пакета отключить Use for Build Flag.

Вот спасибо :slight_smile:
Хотя не смог проверить, ибо уже удалил пакет. Пакет был gamin.

Дело в том, что vacuum не будет работать без этой библиотеки. она нужна не только для плагинов.
Разработчики посоветовали собрать с помощью cmake. Собрал, но ошибка так и осталась; к ней добавился варнинг

vacuum-im.i586: W: shlib-policy-missing-suffix
Your package containing shared libraries does not end in a digit and should
probably be split.

Попробовал выделить эту либу в отдельный пакет - получилось еще хуже

vacuum-im-libvacuumutils.i586: E: shlib-policy-name-error (Badness: 10000) libvacuumutils1_7
Your package contains a single shared library but is not named after its
SONAME.

vacuum-im-libvacuumutils.i586: E: library-without-ldconfig-postun (Badness: 300) /usr/lib/libvacuumutils.so.1.7.0
This package contains a library and provides no %postun scriptlet containing a
call to ldconfig.

vacuum-im-libvacuumutils.i586: E: library-without-ldconfig-postin (Badness: 300) /usr/lib/libvacuumutils.so.1.7.0
This package contains a library and provides no %post scriptlet containing a
call to ldconfig.

vacuum-im.i586: W: explicit-lib-dependency libvacuumutils
You must let rpm find the library dependencies by itself. Do not put unneeded
explicit Requires: tags.

vacuum-im-libvacuumutils.i586: E: devel-file-in-non-devel-package (Badness: 50) /usr/lib/libvacuumutils.so
A development file (usually source code) is located in a non-devel package. If
you want to include source code in your package, be sure to create a
development package.

Дело в том, что vacuum не будет работать без этой библиотеки. она нужна не только для плагинов.

Правильно. Она автоматически пропишется в зависимости к основному пакету.

W: shlib-policy-missing-suffix
E: shlib-policy-name-error

Пакет должен называться libvacuumutils1.
Packaging/Shared Libraries - openSUSE

E: library-without-ldconfig-postun
E: library-without-ldconfig-postin

%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
для пакета с библиотекой.

E: devel-file-in-non-devel-package (Badness: 50) /usr/lib/libvacuumutils.so

Про это уже писал. Если нет devel-пакета, то удаляется в секции %install.
%{__rm} -f %{buildroot}%{_libdir}/libvacuumutils.so

И опять же:
qmake CONFIG+=debug — зачем?

RPMLINT report:

libvacuumutils1-7-0.i586: E: shlib-policy-name-error (Badness: 10000) libvacuumutils1_7
Your package contains a single shared library but is not named after its
SONAME.

для libvacuumutils1 таже ошибка

Думаю должно получится что-то вида libvacuumutils1-1.7.0

Попробуй просто в спеке вместо Name: libvacuumutils
Написать Name:libvacuumutils1

Не претендую на самое правильное решение но мне когда то давно помогло.

Увидел в чём затык. Там, оказывается, два файла вместо трёх. На мой взгляд, разработчик неправильно сделал.

Должно быть три файла библиотеки, две ссылки и бинарник:
libvacuumutils1 -> libvacuumutils1.7 -> libvacuumutils1.7.0.
vacuum-im должен линковаться с libvacuumutils1.

В итоге, правильное название будет libvacuumutils1_7.

Немного подправил. Сильно не углублялся. Теперь собирается devel-пакет, как и нужно.

spec.diff

Index: vacuum-im.spec
===================================================================
--- vacuum-im.spec     (revision 8b10a94ae7a9dcba9ca48197b712b96c) 
+++ vacuum-im.spec     (working copy) 
@@ -1,16 +1,16 @@
-#    
-# spec file for package vacuum-im (Version 1.0.2+git patches)    
-#    
+#
+# spec file for package vacuum-im (Version 1.0.2+git patches)
+#
 # Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
-# Copyright Andrey Karepin <egdfree@opensuse.org> 
-#    
-# All modifications and additions to the file contributed by third parties    
-# remain the property of their copyright owners, unless otherwise agreed    
-# upon. The license for this file, and modifications and additions to the    
-# file, is the same license as for the pristine package itself (unless the    
-# license for the pristine package is not an Open Source License, in which    
-# case the license is the MIT License). An "Open Source License" is a    
-# license that conforms to the Open Source Definition (Version 1.9)    
+# Copyright Andrey Karepin <egdfree@opensuse.org>
+#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 #
 
@@ -18,33 +18,43 @@
 %define rbuild r1451
 
 Name: %{sname}-im
-Summary: Crossplatform Jabber client written on Qt
+Summary: Crossplatform Jabber Client Written on Qt
 Version: 1.0.2+%{rbuild}
 Release: 1
 %if 0%{?suse_version} < 1120
 BuildRoot:  %{_tmppath}/%{name}-%{version}-build
 %endif
 License: GPLv3
-Group: Productivity/Networking/Instant Messenger 
+Group: Productivity/Networking/Instant Messenger
 Source: %name-%rbuild.tar.bz2
 Patch0: fix-debug.patch
 Url: http://www.vacuum-im.org/
-%if 0%{?suse_version} >= 1130
 BuildRequires: cmake >= 2.8
-%endif
 BuildRequires: libqt4-devel libQtWebKit-devel openssl-devel
 BuildRequires: update-desktop-files fdupes
 
 %description
-The core program is just a plugin loader - all functionality is made available via plugins. This enforces modularity and ensures well defined component interaction via interfaces.
+The core program is just a plugin loader - all functionality is made
+available via plugins. This enforces modularity and ensures well defined
+component interaction via interfaces.
 
-%package -n libvacuumutils1-7-0
-Summary:  Shared library libvacuumutils for Vacuum-IM
+%package -n libvacuumutils1_7
+Summary:  Shared Library libvacuumutils for Vacuum-IM
 License:  GPLv3
-Group:    Productivity/Networking/Instant Messenger
+Group:    System/Libraries
 
-%description -n libvacuumutils1-7-0
+%description -n libvacuumutils1_7
 This package includes shared libraris needed to work Vacuum-IM program.
+
+%package devel
+Summary:  Development Files for Vacuum-IM
+License:  GPLv3
+Group:    Development/Libraries/C and C++
+Requires: %{name} = %{version}
+Requires: libvacuumutils1_7 = %{version}
+
+%description devel
+This package includes files needed to develop Vacuum-IM modules.
 
 %prep
 %setup -q -n %name-%rbuild
@@ -61,20 +71,15 @@
 rm -rf ./resources/emoticons/kolobok*
 
 %build
-uname -m
-%if 0%{?suse_version} < 1130
-qmake INSTALL_PREFIX=%{_prefix} INSTALL_LIB_DIR=%{_lib} SVN_REVISION=%{rbuild} -recursive vacuum.pro
-%elseif
-cmake . -DCMAKE_BUILD_TYPE=Release -DINSTALL_SDK=0 -DCMAKE_INSTALL_PREFIX=%{_prefix} -DINSTALL_LIB_DIR=%{_lib}
-%endif
+%{__mkdir} build
+cd build
+cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%{_prefix} -DINSTALL_LIB_DIR=%{_lib}
 %{__make} %{?_smp_mflags}
 
 %install
-%if 0%{?suse_version} < 1130
-make install INSTALL_ROOT=%{buildroot}
-%elseif
-DESTDIR=%{buildroot} make install
-%endif
+pushd build
+%{make_install}
+popd
 %{__install} -D -m644 resources/menuicons/shared/mainwindowlogo128.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/%{name}.png
 %{__install} -D -m644 resources/menuicons/shared/mainwindowlogo96.png %{buildroot}%{_datadir}/icons/hicolor/96x96/apps/%{name}.png
 %{__install} -D -m644 resources/menuicons/shared/mainwindowlogo64.png %{buildroot}%{_datadir}/icons/hicolor/64x64/apps/%{name}.png
@@ -89,25 +94,19 @@
 %suse_update_desktop_file -c %{name} "Vacuum-IM" "Jabber Client" %{name} %{name}.png Network InstantMessaging
 #fix: Installed (but unpackaged) file(s) found
 rm -rf %{buildroot}%{_datadir}/doc
-#fix: E: devel-file-in-non-devel-package (Badness: 50)
-%{__rm} -f %{buildroot}%{_libdir}/libvacuumutils.so
 
 %fdupes %{buildroot}%{_datadir}
 
-%post -p /sbin/ldconfig
+%post -n libvacuumutils1_7 -p /sbin/ldconfig
 
-%post -n libvacuumutils1-7-0 -p /sbin/ldconfig
-
-%postun -p /sbin/ldconfig
-
-%postun -n libvacuumutils1-7-0 -p /sbin/ldconfig
+%postun -n libvacuumutils1_7 -p /sbin/ldconfig
 
 %clean
 rm -rf %{buildroot}
 
 %files
 %defattr(-,root,root)
-%doc README AUTHORS INSTALL CHANGELOG COPYING
+%doc README AUTHORS CHANGELOG COPYING
 %{_bindir}/%name
 %dir %{_libdir}/%{sname}
 %dir %{_libdir}/%{sname}/plugins
@@ -124,8 +123,13 @@
 %{_datadir}/applications/%{name}.desktop
 %{_datadir}/pixmaps/%{name}.png
 
-%files -n libvacuumutils1-7-0
+%files -n libvacuumutils1_7
 %defattr(-,root,root)
-%{_libdir}/libvacuumutils.so*
+%{_libdir}/libvacuumutils.so.*
 
-%changelog
\ No newline at end of file
+%files devel
+%defattr(-,root,root)
+%{_libdir}/libvacuumutils.so
+%{_includedir}/%{sname}
+
+%changelog


Поправка.
В %package devel не нужна строка
Requires: %{name} = %{version}

Спасибо!
За небольшими правками по части зависимостей 11.2 все собралось.

Я смотрю, qmake так и не устанавливает *.h? Поэтому ошибка с 11.2. Дурацкая ситуация.

И в %package devel зависимость от библиотеки надо оставить.
Requires: %{libname} = %{version}

не ставится и разработчики не спешат, что-то делать. я думаю либо брать из buildroot заголовки, либо вообще отказаться от сборки для 11.2.

еще раз спасибо :slight_smile:

Надо в свойства проекта добивить строчку:

Prefer:<имя пакета, который следует предпочитать в случае если есть выбор>

Посоветуйте как правильно назвать пакет, собираю пакет с плагином для pidgin, добавляющий протокол mail.ru. Собираю добавить один из репозиториев, кстати правильно ли я понимаю что пакету самое место в GNOME:App?
Ну и собственно главый вопрос, как правильно назвать пакет?
В апстриме проект называется mrim-prpl, но это всего лишь плагин, судя по имеющимся в репозитории пакетам для sipe или facebookchat, Пакет стоит назвать либо pidgin-mrim либо вообще libpurple-mrim так как по идеи он добавляет функционал к библиотеки libpurple, а не самому pidgin-у, по идеи в другие меседжеры использующие эту библиотеку протокол тоже должен добавляться, правда с Telepathy это не так.

В ALT линукс он например называется pidgin-plugin-mrim

Ну назови как в Альте, название хорошее.

пакету самое место в GNOME:App?
Да.

как правильно назвать пакет?
По аналогии с имеющимися — pidgin-mrim.

Спасибо, за придание уверенности в своих действия :slight_smile:

Собираю пакет в OBS, и по логам ещё до начала собственно сборки происходит ошибка:

installing gtk2-devel-2.18.9-0.4.1
installing wxGTK-gl-2.8.8.1-1.36
installing wxGTK-devel-2.8.8.1-1.36
removing nis flags from //etc/nsswitch.conf...
now finalizing build dir...
Starting SuSEconfig, the SuSE Configuration Tool...
Running in full featured mode.
Reading /etc/sysconfig and updating the system...
Executing /sbin/conf.d/SuSEconfig.glib2...
Executing /sbin/conf.d/SuSEconfig.groff...
Executing /sbin/conf.d/SuSEconfig.gtk2...
Executing /sbin/conf.d/SuSEconfig.permissions...
Finished.
**chown: invalid user: `UNKNOWN'**
-----------------------------------------------------------------

Есть соображения как от этого избавиться?

svalx wrote:

> CHOWN: INVALID USER: `UNKNOWN’
>
Это ни на что не влияет.
Там ещё можно увидеть:
FATAL: Module kqemu not found.
FATAL: Module ext2 not found.
и кучу других ужасов. :wink:

Не обращайте внимания.

Собираю пакет с зависимостями от wxWidgets. Для %{?suse_version} >=1140
линковаться не хочет ни в какую… Вот отрывок из spec-файла:
Code:

%if 0%{?suse_version} >= 1140
BuildRequires: wxWidgets-wxcontainer-devel
%define _use_internal_dependency_generator 0
%define __find_requires %wx_requires
Requires: wxWidgets
%else
BuildRequires: wxGTK-devel
Requires: wxGTK
%endif
BuildRequires: gcc-c++ update-desktop-files

BuildRoot: %{_tmppath}/%{name}-%{version}-root

Для SLE (на wxGTK) пакет собирается нормально, и самое интересное, что
способом ./configure && make && make install на 12.1 программа успешно
собирается. А вот в OBS на хочет:
Code:

g++ -mwindows -s -L/usr/lib/wx-2.8-wxcontainer -pthread
-Wl,-rpath,/usr/lib/wx-2.8-wxcontainer
-Wl,-rpath,/usr/lib/wx-2.8-wxcontainer -lwx_gtk2u_richtext-2.8
-lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8
-lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8
-lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8 -ldl
-o./Release/AMDOverdriveCtrl ./src/CFanSpeedPanel.o ./src/Color.o
…/src/COvdrSettingsPanel.o ./src/BezierMath.o ./src/CColorTempPanel.o
…/src/CTaskBarIcon.o ./src/CFanControlPanel.o ./src/CMonitorPanel.o
…/src/CSettingsPanel.o ./src/adl.o ./src/CAuthorPanel.o
…/src/CAppProfilePanel.o ./src/gui.o ./src/CPowertunePanel.o
…/src/main.o ./src/CInfoPanel.o -o Release/AMDOverdriveCtrl
./src/CFanSpeedPanel.o: In function
CFanSpeedPanel::mFanSpeedSliderOnScroll(wxScrollEvent&)': CFanSpeedPanel.cpp:(.text+0x76): undefined reference to wxString::Format(wchar_t const*, …)’
./src/CFanSpeedPanel.o: In function
CFanSpeedPanel::mFanSpeedPlusClick(wxCommandEvent&)': CFanSpeedPanel.cpp:(.text+0x144): undefined reference to wxString::Format(wchar_t const*, …)’



./src/CInfoPanel.o:(.rodata._ZTV10CInfoPanel[vtable for
CInfoPanel]+0x2c0): undefined reference to
wxEvtHandler::DoGetClientObject() const' ./src/CInfoPanel.o:(.rodata._ZTV10CInfoPanel[vtable for CInfoPanel]+0x2c4): undefined reference to wxEvtHandler::DoSetClientData(void*)’
./src/CInfoPanel.o:(.rodata._ZTV10CInfoPanel[vtable for
CInfoPanel]+0x2c8): undefined reference to
wxEvtHandler::DoGetClientData() const' ./src/CInfoPanel.o:(.rodata._ZTV10CInfoPanel[vtable for CInfoPanel]+0x2cc): undefined reference to wxTimer::Start(int, bool)’
./src/CInfoPanel.o:(.rodata._ZTV10CInfoPanel[vtable for
CInfoPanel]+0x2d0): undefined reference to `wxTimer::Stop()’
collect2: ld returned 1 exit status
make: *** [Release/AMDOverdriveCtrl] Error 1
error: Bad exit status from /var/tmp/rpm-tmp.LJKEpP (%build)

RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.LJKEpP (%build)

На wxWidgets-devel тоже не собирается, там уже ошибка компиляции,
wxWidgets-ansi-devel не подходит - используется юникод. Добавлял в
BuilRequires пакеты libwx__ - не помогает.
Посоветуйте что-нибудь пожалуйста…