1. Source: %name-%version-%release.tar.gz
2. Requires: sound_handler ca-certificates
BuildRequires: gcc-c++ libX11-devel libXScrnSaver-devel libXext-devel libaspell-devel libqca2-devel
Requires: libqt4-core >= %{get_version libqt4-core} sox qca2-ossl qca2-gnupg
3. ./configure \
--prefix=%prefix \
--bindir=%_bindir \
--datadir=%_datadir \
--qtdir=%_qt4dir \
4. qmake-qt4 -makefile -unix gmailnotifyplugin.pro
qmake-qt4 -makefile -unix juickplugin.pro
qmake-qt4 -makefile -unix screenshotplugin.pro
qmake-qt4 -makefile -unix translateplugin.pro
5. mkdir -p %buildroot%_libdir/psi/plugins
install -Dm644 %_builddir/%name-%version-%release/lang/psi-ru/psi_ru.qm %buildroot%_datadir/psi/psi_ru.qm
install -Dm644 %_builddir/%name-%version-%release/lang/psi-ru/qt/qt_ru.qm %buildroot%_datadir/psi/qt_ru.qm
6. %defattr(0644,root,root,0755)
7. %_datadir/applications/psi.desktop
8. - experemental
Прекрасный спек. Некоторые замечания:
1. Не имеет смысла обзывать тарбол включая %release. Ведь %release - это работа с одной и той же версией исходников, только подход к снаряду очередной - типа в спеке что-то подправлено, патч добавлен и т.д.
2. Requires проставляются вручную только в том случае, если сборщик автоматом не добавляет эти зависимости в пакет. Такое может случиться разве что если софтина использует эти пакеты неявно, либо не линкуется с ними. Либо в случае, если нужно указать конкретное ограничение версии, типа >=. BuildRequires тоже вручную отслеживать не нужно, натравите на спек скрипт
buildreq -bi из пакета
rpm-utils. Он проведет сборку игнорируя сборочные зависимости спека и проставит все сам автоматом. Опять же, править руками его результат имеет смысл если он туда добавил явно лишнего (так бывает, к примеру в SMPlayer он туда почему-то цепляет пару очень явно ненужных зависимостей), либо опять же - чтоб указать ограничение версии.
3. Попробуйте запускать не
./configure, а
%configure - там перечисленные переменные будут переданы автоматически. Также вызывает сомнение надобность указания
--qt-dir. Хотя да, иногда приходится делать именно такой вызов, если скрипт configure написан криво.
4. Это излишне сложный вызов qmake. Более того, при его вызове нужно передавать еще и ключи компилятора, иначе при сборке для 32-битных архитектур параметр --target будет ложным. Замените на такую конструкцию:
qmake-qt4[3] "QMAKE_CFLAGS+=%optflags" "QMAKE_CXXFLAGS+=%optflags" bla-bla.pro
И сравните с компиляцией без этих ключей - Вы увидите как при сборке компилятору передаются параметры архитектуры процессора. Но это только для 32-битных дистров, на 64-битных разницы нет.
5. Если выражение
install -Dm644 заменить на
install -Dp -m 0644 - отпадет надобность в
mkdir - путь назначения будет создан автоматически.
6. Это не нужно вообще, исключение - указание специфичных, нестандартных прав на каталоги и файлы. К примеру, для сервисов, которые работают от каких-то специальных юзеров.
7.
%_desktopdir/psi.desktop - так короче ;)
8.
experemental -
experimental. А вообще-то - натравливайте после изменения версии и релиза сборки на спек скрипт
add_changelog из все того же пакета
rpm-utils - он сделает красивую заготовку для чейнчлога. И обычно пишут не
experimental а что-то вроде
experimental build for ALT Linux, либо, если это уже можно выдавать на гора -
initial build for ALT Linux, хотя, конечно, жестких требований нет. Главное - чтоб запись в чейнчлоге освещала что именно произошло с пакетом.