Сборка RPM

blua
Сообщения: 23
Зарегистрирован: 24 дек 2014, 22:19
Operating system: ROSA Desktop Fresh

Сборка RPM

Сообщение blua » 25 дек 2014, 20:55

Сразу скажу, что я новичок на линукс, но читал о нем.
Идея научится собирать rpm пакеты. Почитал инструкции на этот счет тут: http://wiki.rosalab.ru/ru/index.php/%D0 ... %D1%8B_RPM
попробовал на нескольких программах из репозитория, вроде собрались. Решил собрать свою с нуля из исходников и феил...
Программа: https://code.google.com/p/linuxtuner/

По инструкции надо начать с файла спецификации и он у меня получился такой:

Код: Выделить всё

Name:	 mountmanager
Version: 0.2.6
Release: lop1

Summary:	Manager mount devices.
License:	GPLv2+
Group:		Archiving/Other
Url:		https://code.google.com/p/linuxtuner/
Source0:	%{name}-%{version}.tar.gz

BuildRequires:	libqt4-devel
BuildRequires:	libqt4-core
BuildRequires:	libqt4-gui
BuildRequires:	libqt4-dbus
BuildRequires:	libqt4-xml

Requires:	qt4
Provides:	mountmanager

%description
The basic functionalities of MountManager are:

Mount and unmount partitions (ext3/2, ntfs, swap, fat, reiserfs, iso9660, udf, ...)
Show all logical and physical disks
Change config file /etc/fstab
Descriptions of options and other settings of mounting
Restoration system
Images mounting and unmounting (Nrg, Mdf , Ccd, Bin , etc)
Udev rules creation
Disk wizard
Etc... Plugins are supported and there is good English and Russian documentations to help develop new plugins.


%prep
%setup -q

%build
%configure
%make

%install
%makeinstall

%files

Как видите %files не заполнен. В инструкции написано чтоб его заполнить нужно сделать предварительную симуляцию установки командой: rpmbuild -bi
Но на стадии сборки мне выдаются ошибки:

Код: Выделить всё

[lop@host-15 SPECS]$ rpmbuild -bi mountmanager.spec
Выполняется(%prep): /bin/sh -e /tmp/.private/lop/rpm-tmp.60207
+ umask 022
+ /bin/mkdir -p /usr/src/RPM/BUILD
+ cd /usr/src/RPM/BUILD
+ cd /usr/src/RPM/BUILD
+ rm -rf mountmanager-0.2.6
+ echo 'Source #0 (mountmanager-0.2.6.tar.gz):'
Source #0 (mountmanager-0.2.6.tar.gz):
+ /bin/tar -xf -
+ /bin/gzip -dc /usr/src/RPM/SOURCES/mountmanager-0.2.6.tar.gz
+ cd mountmanager-0.2.6
+ /bin/chmod -c -Rf u+rwX,go-w .
+ exit 0
Выполняется(%build): /bin/sh -e /tmp/.private/lop/rpm-tmp.20374
+ umask 022
+ /bin/mkdir -p /usr/src/RPM/BUILD
+ cd /usr/src/RPM/BUILD
+ cd mountmanager-0.2.6
+ CFLAGS='-pipe -Wall -g -O2'
+ export CFLAGS
+ CXXFLAGS='-pipe -Wall -g -O2'
+ export CXXFLAGS
+ FFLAGS='-pipe -Wall -g -O2'
+ export FFLAGS
+ '[' -n '' ']'
++ printf %s '-pipe -Wall -g -O2'
++ sed -r 's/(^|[[:space:]]+)-[^m][^[:space:]]*//g'
+ ASFLAGS=
+ export ASFLAGS
+ export lt_cv_deplibs_check_method=pass_all
+ lt_cv_deplibs_check_method=pass_all
+ xargs -rn1 install -pm755 -- /usr/share/gnu-config/config.sub /usr/share/gnu-config/config.guess
+ sort -u
+ xargs -ri find '{}' -type f '(' -name config.sub -or -name config.guess ')' -printf '%h/\n'
+ xargs -ri dirname -- '{}'
+ readlink -e -- ./configure
+ ./configure --build= --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/lib --localstatedir=/var/lib --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --disable-dependency-tracking --without-included-gettext
!---------------------------------------------------------!
! Thank you for installing of MountManager program!       !
!              Mounting in Linux is easy!                 !
!---------------------------------------------------------!
Unrecognized option: --build=x86_64-ros-linux

  Usage: ./configure [options]

  Available options:
   --help                      Print this message
   --clean                     Clean results of configuring and quit
   --prefix=<prefix>           Set prefix (default: /usr)
   --datadir=<dir>             Set data dir (default: /usr/share
   --qmake=<name>              Set qmake executable
   --include_path=<path>       Set include path (default: /usr/include)
   --lib_path=<path>           Set lib path (default: /usr/lib)

ошибка: Неверный код возврата из /tmp/.private/lop/rpm-tmp.20374 (%build)


Ошибки сборки пакетов:
    Неверный код возврата из /tmp/.private/lop/rpm-tmp.20374 (%build)
[lop@host-15 SPECS]$ 
Unrecognized option: --build=x86_64-ros-linux
Не понимаю почему ему не нравится моя архитектура. Проц. Интел х64 и ос х64.
Думал может программа только на 32х, выставлял сборку в i586 и в файле спец., прописывал, но результат тот же.
Ошибки сборки пакетов:
Неверный код возврата из /tmp/.private/lop/rpm-tmp.20374 (%build)

Тут вообще безобразие. В инете много информации о такой ошибке, но найденное не помогло. Я не знаю точно, но догадываюсь, что нужно прописать путь. Пробовал делать это в спец., с помощью BuildRoot , результат не менялся. Может нужны еще какие-то пути задать?
Последний раз редактировалось blua 25 дек 2014, 22:18, всего редактировалось 1 раз.
ALT Linux

Аватара пользователя
ДроноваЮ
Сообщения: 2636
Зарегистрирован: 01 июн 2011, 13:11
Operating system: Ubuntu/ROSA
Откуда: Москва

Re: Сборка RPM

Сообщение ДроноваЮ » 25 дек 2014, 21:14

Только RPM, а не pmr. Поправила заголовок.

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 26 дек 2014, 08:42

blua писал(а):Unrecognized option: --build=x86_64-ros-linux
Не понимаю почему ему не нравится моя архитектура. Проц. Интел х64 и ос х64.
А, ну тут дело не в архитектуре, а в опции --build=. Дело в том, что макрос %configure предназначен для использования с проектами на autotools, а в данном случае используется самописный скрипт (обёртка вокруг qmake) с именем configure, который по опциям лишь частично совместим с autotools. А на несовместимые опции ругается вместо того, чтобы просто проигнорировать.

Так что %configure надо заменить на ./configure (т.е. вместо макроса оставить просто команду). И возможно, что ещё надо указать значение --lib_path, чтобы учитывалась архитектура системы.

Код: Выделить всё

./configure --lib_path=%{_libdir}
Остальные значения сборки вроде и по умолчанию правильные.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

blua
Сообщения: 23
Зарегистрирован: 24 дек 2014, 22:19
Operating system: ROSA Desktop Fresh

Re: Сборка RPM

Сообщение blua » 26 дек 2014, 11:15

ДроноваЮ писал(а):Только RPM, а не pmr. Поправила заголовок.
Да, извиняюсь. :D
Pulfer писал(а):
blua писал(а):Unrecognized option: --build=x86_64-ros-linux
Не понимаю почему ему не нравится моя архитектура. Проц. Интел х64 и ос х64.
А, ну тут дело не в архитектуре, а в опции --build=. Дело в том, что макрос %configure предназначен для использования с проектами на autotools, а в данном случае используется самописный скрипт (обёртка вокруг qmake) с именем configure, который по опциям лишь частично совместим с autotools. А на несовместимые опции ругается вместо того, чтобы просто проигнорировать.

Так что %configure надо заменить на ./configure (т.е. вместо макроса оставить просто команду). И возможно, что ещё надо указать значение --lib_path, чтобы учитывалась архитектура системы.

Код: Выделить всё

./configure --lib_path=%{_libdir}
Остальные значения сборки вроде и по умолчанию правильные.
Так ./configure я пробовал, все равно ругается, но со значением --lib_path=%{_libdir} ошибка пропала.
Но осталась:
Неверный код возврата из /tmp/.private/lop/rpm-tmp.20374 (%build)
Что такое код возврата? :oops:
ALT Linux

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 26 дек 2014, 11:28

blua писал(а):Так ./configure я пробовал, все равно ругается, но со значением --lib_path=%{_libdir} ошибка пропала.
Но осталась:
Неверный код возврата из /tmp/.private/lop/rpm-tmp.20374 (%build)
Что такое код возврата? :oops:
Хмм, думаю, что в данном случае лучше даже не вникать в то, что такое код возврата в теории. На практике сообщение означает, что в блоке %build какая-то из команд завершилась с ошибкой. В прошлый раз ошибкой было "Unrecognized option", а сейчас надо снова смотреть на лог сборки, чтобы понять, что именно не так.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

blua
Сообщения: 23
Зарегистрирован: 24 дек 2014, 22:19
Operating system: ROSA Desktop Fresh

Re: Сборка RPM

Сообщение blua » 26 дек 2014, 12:57

Pulfer писал(а):
blua писал(а):Так ./configure я пробовал, все равно ругается, но со значением --lib_path=%{_libdir} ошибка пропала.
Но осталась:
Неверный код возврата из /tmp/.private/lop/rpm-tmp.20374 (%build)
Что такое код возврата? :oops:
Хмм, думаю, что в данном случае лучше даже не вникать в то, что такое код возврата в теории. На практике сообщение означает, что в блоке %build какая-то из команд завершилась с ошибкой. В прошлый раз ошибкой было "Unrecognized option", а сейчас надо снова смотреть на лог сборки, чтобы понять, что именно не так.
Оказалось неверный адрес пакета cmd.
urpmf нашел его в составе другого пакета. Потом исправил адрес в файле конфига в архиве с программой и все собралось. Щас список для %files делаю, если все получится спецификацию с поправками выложу. Мне в принципе эта программа не нужна, просто для эксперимента взял. Но она вроде не плохая, вдруг кому понадобится.

Вы не сердитесь, но я задам тупой вопрос. :oops:
хотел справку посмотреть ./configure, а мне в ответ:

[lop@lop-pookT rpm]$ man ./configure
man: ./configure: Нет такого файла или каталога
Нет справочной страницы для ./configure

Команда: ./configure --help
Вообще не найдена. Где и как можно посмотреть описание ./configure?
ALT Linux

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 26 дек 2014, 14:31

blua писал(а):Вы не сердитесь, но я задам тупой вопрос. :oops:
хотел справку посмотреть ./configure, а мне в ответ:
Да не, вопрос не тупой, нормальный. :)

Команда man работает только для части команд/программ. Для некоторых программ авторы не потрудились написать man-страницу, поэтому документацию по ним надо искать в и-нете, на странице разработчиков программы. Либо попробовать запустить команду с опцией --help. Хотя и в этих случаях может не быть документации, тут всё зависит от конкретной программы.

В данном случае configure - это просто скрипт сборки, man-страницы для него не предусмотрено, да и просто нет смысла. Команда ./configure --help должна вывести справку, но есть нюанс - запускать её надо в том же каталоге, где лежит скрипт configure. Либо вместо ./ указать полный путь к скрипту (./ - означает текущий каталог).
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

blua
Сообщения: 23
Зарегистрирован: 24 дек 2014, 22:19
Operating system: ROSA Desktop Fresh

Re: Сборка RPM

Сообщение blua » 31 дек 2014, 17:54

Добавил патч и исходник, немного переделал spec, он у меня теперь такой:

Код: Выделить всё

Name: mountmanager
Version: 0.2.6
Release: lop1

Summary: Manager mount devices
License: GPLv2+
Group: Archiving/Other
Url: https://code.google.com/p/linuxtuner/
Source0: http://linuxtuner.googlecode.com/files/mountmanager-0.2.6.tar.gz
Source1: mountmanager.desktop
Patch0: %name-config-destination.patc

Requires: hal

BuildRequires: libqt4-devel
BuildRequires: libqt4-core
BuildRequires: libqt4-gui
BuildRequires: libqt4-dbus
BuildRequires: libqt4-xml
BuildRequires: gcc-c++
BuildRequires: qt4-devel

%description
The basic functionalities of MountManager are:

Mount and unmount partitions (ext3/2, ntfs, swap, fat, reiserfs, iso9660, udf, ...)
Show all logical and physical disks
Change config file /etc/fstab
Descriptions of options and other settings of mounting
Restoration system
Images mounting and unmounting (Nrg, Mdf , Ccd, Bin , etc)
Udev rules creation
Disk wizard
Etc... Plugins are supported and there is good English and Russian documentations to help develop new plugins.

%prep
%setup
%patch0 -p1

%build
./configure --lib_path=%_libdir --prefix=/usr/src/RPM/tmp/
%make

%install
%makeinstall_std

%files
%defattr
%doc license readme.en readme.ru
%doc %_datadir/doc/MountManager/*
%_bindir/mmanager
%_bindir/mm
%_libdir/mountmanager/plugins/libdocumentationpanel.so
%_libdir/mountmanager/plugins/libfstabpreview.so
%_libdir/mountmanager/plugins/libimagesmounting.so
%_libdir/mountmanager/plugins/libsharesmount.so
%_libdir/mountmanager/plugins/libtips.so
%_libdir/mountmanager/trans/br.qm
%_libdir/mountmanager/trans/docpanel_ru.qm
%_libdir/mountmanager/trans/es.qm
%_libdir/mountmanager/trans/imagesmount_ru.qm
%_libdir/mountmanager/trans/pl.qm
%_libdir/mountmanager/trans/previewpanel_ru.qm
%_libdir/mountmanager/trans/pt.qm
%_libdir/mountmanager/trans/ru.qm
%_libdir/mountmanager/trans/sharesmount_ru.qm
%_libdir/mountmanager/trans/tips_ru.qm
%_libdir/mountmanager/trans/tr.qm
%_datadir/applications/mountmanager-kde.desktop
%_datadir/applications/mountmanager-gtk.desktop
%_datadir/icons/mm.png
%_mandir/man1/mm.1*
%_mandir/man1/%name.1*
%_datadir/%name/*
Запускаю rpmbuild -ba mountmanager.spec и прерывает говоря что:

Код: Выделить всё

 
+---------------------------------------------------------------------+
|               OK. Type make install to install.                   |
+---------------------------------------------------------------------+
make: Leaving directory `/usr/src/RPM/BUILD/mountmanager-0.2.6'
+ exit 0
Выполняется(%install): /bin/sh -e /tmp/.private/lop/rpm-tmp.70578
+ umask 022
+ /bin/mkdir -p /usr/src/RPM/BUILD
+ cd /usr/src/RPM/BUILD
+ /bin/chmod -Rf u+rwX -- /tmp/.private/lop/mountmanager-buildroot
+ :
+ /bin/rm -rf -- /tmp/.private/lop/mountmanager-buildroot
+ cd mountmanager-0.2.6
+ make 'INSTALL=/bin/install -p' install DESTDIR=/tmp/.private/lop/mountmanager-buildroot
make: Entering directory `/usr/src/RPM/BUILD/mountmanager-0.2.6'
install -d /usr/src/RPM/tmp//share/mountmanager
install -d /usr/src/RPM/tmp//share/mountmanager/options
install -d /usr/src/RPM/tmp//share/mountmanager/icons
install -d /usr/src/RPM/tmp//share/mountmanager/images
install -d /usr/src/RPM/tmp//share/doc/MountManager
install -d /usr/src/RPM/tmp//bin
install -d /usr/src/RPM/tmp//lib/mountmanager/trans
install -d /usr/src/RPM/tmp//share/man/man1
install -d /usr/src/RPM/tmp//lib/mountmanager/plugins
install -m 755 mm /usr/src/RPM/tmp//bin/mmanager
install -m 644 options/* /usr/src/RPM/tmp//share/mountmanager/options/
install -m 644 resources/icons/* /usr/src/RPM/tmp//share/mountmanager/icons/
install -m 644 resources/images/* /usr/src/RPM/tmp//share/mountmanager/images/
install -m 644 trans/*.qm /usr/src/RPM/tmp//lib/mountmanager/trans/
cp -R doc/* /usr/src/RPM/tmp//share/doc/MountManager/
cp -R mans/* /usr/src/RPM/tmp//share/man/man1/
for dir in "ImagesMounting" "FstabPreview" "DocumentationPanel" "Tips" "SharesMount"; do \
        cd plugins/$dir; \
        cp -f translations/*.qm /usr/src/RPM/tmp//lib/mountmanager/trans/; \
        for file in `ls *.so`; do \
                cp $file /usr/src/RPM/tmp//lib/mountmanager/plugins/; \
        done; \
        cd ../../; \
done
install -m 755 mountmanager /usr/src/RPM/tmp//bin/
install -d /usr/src/RPM/tmp//share/icons
install -d /usr/src/RPM/tmp//share/applications
install -m 644 resources/desktop/mm.png /usr/src/RPM/tmp//share/icons
install -m 644 resources/desktop/mountmanager-gtk.desktop /usr/src/RPM/tmp//share/applications/
install -m 644 resources/desktop/mountmanager-kde.desktop /usr/src/RPM/tmp//share/applications/
+---------------------------------------------------------------------+
|               OK. Start the program by typing mm                  |
+---------------------------------------------------------------------+
make: Leaving directory `/usr/src/RPM/BUILD/mountmanager-0.2.6'
line 26: cd: /tmp/.private/lop/mountmanager-buildroot: No such file or directory
ошибка: Неверный код возврата из /tmp/.private/lop/rpm-tmp.70578 (%install)


Ошибки сборки пакетов:
    Неверный код возврата из /tmp/.private/lop/rpm-tmp.70578 (%install)
cd: /tmp/.private/lop/mountmanager-buildroot: No such file or directory
Да такой папки нет и он должен ее создавать, но... Я пробовал сам ее делать, но она удаляется вовремя сборки.
Пробовал в спец файле прописывать buildroot, почему-то игнорирует путь.
Вот там повыше:
install DESTDIR=/tmp/.private/lop/mountmanager-buildroot
Такое чувство, что если этот путь изменить проблема решится ( наверное :D ). Поскольку это для меня первый опыт я не знаю где поменять.
================
Всех с наступающим 2015 :Yahoo!:
ALT Linux

Аватара пользователя
VictorR2007
Сообщения: 5848
Зарегистрирован: 12 сен 2011, 13:00
Operating system: ROSA 2016.1
Откуда: Северодвинск

Re: Сборка RPM

Сообщение VictorR2007 » 18 апр 2015, 19:47

Пробовал собирать пакет cantanta на qt5.
Если просто установит значение

Код: Выделить всё

 %define	with_qt5	1
то ошибка сборки.

Аватара пользователя
VictorR2007
Сообщения: 5848
Зарегистрирован: 12 сен 2011, 13:00
Operating system: ROSA 2016.1
Откуда: Северодвинск

Re: Сборка RPM

Сообщение VictorR2007 » 19 апр 2015, 12:01

VictorR2007 писал(а):Пробовал собирать пакет cantanta на qt5.
Если просто установит значение

Код: Выделить всё

 %define	with_qt5	1
то ошибка сборки.
Разобрался.
Всё нормально собирается.

Аватара пользователя
Ukropchik
Сообщения: 127
Зарегистрирован: 07 авг 2014, 01:12
Operating system: Rosa and Elementary

Re: Сборка RPM

Сообщение Ukropchik » 28 июн 2015, 17:54

Всем привет. Написал игру на Python и выложил исходники (https://github.com/RastaDill/Logika/tree/master/Source) в группу Росы. Далее мне предложили собрать rpm пакет что-бы проще было другим посмотреть. В ходе сборки возникли некоторые вопросы. Вот мой spec файл:

Код: Выделить всё

Summary:        Logic game
Name:           Logika
Version:        1.0.0
Release:        1
License:        GNU/GPL v.3
URL:            https://github.com/RastaDill/Logika
Group:          Games/Puzzles

Source0:        logika.py
Source1:        game.py
Source2:        basic.py

Requires:       python
Requires:       pygame

%description
This is logical game written on python and pygame

%prep 
%setup -q

%build 
%configure 
%make

%install
%makeinstall

%files
%doc README(RUS) README(ENG) COPYING 
%{_datadir}/Logika/font
%{_datadir}/Logika/image
%{_datadir}/Logika/sound
Правильно ли я добавил исходники или их нужно было в архивировать в tar? Правильно ли указал соответсвующие данные в разделе %{_datadir}?

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 28 июн 2015, 18:20

Ukropchik писал(а):Правильно ли я добавил исходники или их нужно было в архивировать в tar?
Лучше всего на гитхабе делать тэги для версий, а в спеке указывать исходники в виде tar-файла. Но в текущем виде в качестве исключения можно делать, если файлов с исходными текстами очень мало, а никакого апстрима для них нет.
Ukropchik писал(а):Правильно ли указал соответсвующие данные в разделе %{_datadir}?
Можно пару мест чуть улучшить. В поле License прописать GPLv3+, т.к. этот вариант используется наиболее часто для обозначения 3-й версии GPL в спеках. И в секции %files указать, что сам каталог %{_datadir}/Logika/ принадлежит данному пакету со всем его содержимым:

Код: Выделить всё

License:        GPLv3+
...
%dir %{_datadir}/Logika/
%{_datadir}/Logika/*
Но это скорее эстетические мелочи.

Важно тут другое.

%configure используется для запуска скрипта configure из дерева исходников. В данном случае такого скрипта нет, так что и макрос в спеке указывать не надо.

%make используется для запуска команды make. В данном случае нет файла Makefile, так что этот макрос тоже не нужен. Как и %makeinstall.

Скорее надо сделать так:

Код: Выделить всё

%build
# nothing to build

%install
mkdir -p %{buildroot}%{_datadir}/Logika
cp * %{buildroot}%{_datadir}/Logika/
Но т.к. игра запускается файлом logika.py из каталога /usr/share/Logika, надо ещё создать для него в %install-секции wrapper-скрипт, который устанавливать в /usr/bin. Что-то типа

Код: Выделить всё

cat<<EOF>%{buildroot}%{_bindir}/logika
#!/bin/bash

cd %{_datadir}/Logika
python logika.py
EOF
chmod 0755 %{buildroot}%{_bindir}/logika
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

Аватара пользователя
Ukropchik
Сообщения: 127
Зарегистрирован: 07 авг 2014, 01:12
Operating system: Rosa and Elementary

Re: Сборка RPM

Сообщение Ukropchik » 29 июн 2015, 14:50

Так, spec файл немного переписал:

Код: Выделить всё

Summary:        Logic game
Name:           Logika
Version:        1.0.0
Release:        1
License:        GPLv3+
URL:            https://github.com/RastaDill/Logika
Group:          Games/Puzzles

Source0:        logika.py
Source1:        game.py
Source2:        basic.py

Requires:       python
Requires:       pygame

%description
This is logical game written on python and pygame

%prep 
%setup -q

%build

%install
mkdir -p %{buildroot}%{_datadir}/Logika
cp * %{buildroot}%{_datadir}/Logika/

%files
%doc README(RUS) README(ENG) COPYING 
%{_datadir}/Logika/*
Pulfer писал(а):Но т.к. игра запускается файлом logika.py из каталога /usr/share/Logika, надо ещё создать для него в %install-секции wrapper-скрипт, который устанавливать в /usr/bin.
Здесь я немного не понял что за wrapper-скрипт и куда его вставлять? Я так понимаю что в программе playonlinux такой скрипт есть:

Код: Выделить всё

#!/bin/sh
exec /usr/share/playonlinux/playonlinux "$@"
exit 0

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 29 июн 2015, 16:42

Ukropchik писал(а):Здесь я немного не понял что за wrapper-скрипт и куда его вставлять?
Вот так:

Код: Выделить всё

Summary:        Logic game
Name:           Logika
Version:        1.0.0
Release:        1
License:        GPLv3+
URL:            https://github.com/RastaDill/Logika
Group:          Games/Puzzles

Source0:        logika.py
Source1:        game.py
Source2:        basic.py

Requires:       python
Requires:       pygame

%description
This is logical game written on python and pygame.

%prep 
%setup -q

%build

%install
mkdir -p %{buildroot}%{_datadir}/Logika
cp * %{buildroot}%{_datadir}/Logika/

cat<<EOF>%{buildroot}%{_bindir}/logika
#!/bin/bash

cd %{_datadir}/Logika
python logika.py
EOF
chmod 0755 %{buildroot}%{_bindir}/logika

%files
%doc README(RUS) README(ENG) COPYING 
%{_bindir}/logika
%dir %{_datadir}/Logika/
%{_datadir}/Logika/*
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

Аватара пользователя
VictorR2007
Сообщения: 5848
Зарегистрирован: 12 сен 2011, 13:00
Operating system: ROSA 2016.1
Откуда: Северодвинск

Re: Сборка RPM

Сообщение VictorR2007 » 29 июн 2015, 19:33

Столкнулся с проблемой.
У нас в репах есть программа ultracopier,
но собрана без дополнительных локалей.
Чтобы работали дополнительные локали (на фотке),
я пробовал добавить в спек строку

Код: Выделить всё

install -D src/lang/* %{buildroot}%{_datadir}/%{name}/lang/*
Но она ломает упаковку остальных файлов,
и не видит файлы в src/lang
P.S.
Разобрался как это обойти.

Аватара пользователя
Ukropchik
Сообщения: 127
Зарегистрирован: 07 авг 2014, 01:12
Operating system: Rosa and Elementary

Re: Сборка RPM

Сообщение Ukropchik » 30 июн 2015, 18:47

Pulfer, спасибо за помощь. Подправил spec-файл. Но собрать всё равно не удаётся. Вот такая ошибка появляется.

Код: Выделить всё

rpmbuild -ba logika.spec
Выполняется(%prep): /bin/sh -e /var/tmp/rpm-tmp.44355
+ umask 022
+ cd /home/weedman/rpmbuild/BUILD
+ '[' 1 -eq 1 ']'
+ '[' 1 -eq 1 ']'
+ '[' 1 -eq 1 ']'
+ cd /home/weedman/rpmbuild/BUILD
+ rm -rf Logika-1.0.0
+ /bin/tar -xf /home/weedman/rpmbuild/SOURCES/logika.py
/bin/tar: This does not look like a tar archive
/bin/tar: Skipping to next header
/bin/tar: Exiting with failure status due to previous errors
error: Неверный код возврата из /var/tmp/rpm-tmp.44355 (%prep)


Ошибки сборки пакетов:
    Неверный код возврата из /var/tmp/rpm-tmp.44355 (%prep)

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 30 июн 2015, 19:32

Ukropchik писал(а):Pulfer, спасибо за помощь. Подправил spec-файл. Но собрать всё равно не удаётся. Вот такая ошибка появляется.
А, ну да, там же всё ещё не файловый архив указан в качестве Source0. "%setup -q" распаковывает Source0, а в данном случае распаковывать нечего.

Тогда вот так надо:

Код: Выделить всё

Summary:        Logic game
Name:           Logika
Version:        1.0.0
Release:        1
License:        GPLv3+
URL:            https://github.com/RastaDill/Logika
Group:          Games/Puzzles

Source0:        logika.py
Source1:        game.py
Source2:        basic.py

Requires:       python
Requires:       pygame

%description
This is logical game written on python and pygame.

%prep

%build

%install
mkdir -p %{buildroot}%{_datadir}/Logika
install -m 0644 %{SOURCE0} %{buildroot}%{_datadir}/Logika/logika.py
install -m 0644 %{SOURCE1} %{buildroot}%{_datadir}/Logika/game.py
install -m 0644 %{SOURCE2} %{buildroot}%{_datadir}/Logika/basic.py

cat<<EOF>%{buildroot}%{_bindir}/logika
#!/bin/bash

cd %{_datadir}/Logika
python logika.py
EOF
chmod 0755 %{buildroot}%{_bindir}/logika

%files
%doc README(RUS) README(ENG) COPYING
%{_bindir}/logika
%dir %{_datadir}/Logika/
%{_datadir}/Logika/*
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

Аватара пользователя
Ukropchik
Сообщения: 127
Зарегистрирован: 07 авг 2014, 01:12
Operating system: Rosa and Elementary

Re: Сборка RPM

Сообщение Ukropchik » 01 июл 2015, 00:34

И снова ошибка:

Код: Выделить всё

+ cat
/var/tmp/rpm-tmp.24020: line 33: /home/weedman/rpmbuild/BUILDROOT/Logika-1.0.0-1-rosa2014.1.x86_64-buildroot/usr/bin/logika: No such file or directory
error: Неверный код возврата из /var/tmp/rpm-tmp.24020 (%install)
Не могу понять из-за чего такое. По идеи cat<<EOF> должна создать файл если его нет.

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 01 июл 2015, 02:23

Ukropchik писал(а):Не могу понять из-за чего такое. По идеи cat<<EOF> должна создать файл если его нет.
А, ну надо предварительно каталог создать ещё:

Код: Выделить всё

mkdir -p %{buildroot}%{_bindir}
А потом cat сделать.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

Аватара пользователя
Ukropchik
Сообщения: 127
Зарегистрирован: 07 авг 2014, 01:12
Operating system: Rosa and Elementary

Re: Сборка RPM

Сообщение Ukropchik » 02 июл 2015, 19:36

Итак, теперь удалось собрать пакет. Сначала была ошибка что файлы README и другие не найдены, но это было из-за того что они были не каталоге BUILD. Теперь, когда я всё собрал по какой-то причине не скопировался сам контент (звук, спрайты и т.д.) Может их необходимо в какой-то другой каталог перенести? Имеется три папки font, image, sound. Необходимо что-бы они были вместе с исходниками в /usr/share/Logika.
И ещё один вопрос. Обязательно выполнять сборку пакета из /bin/sh или всё же достаточно /bin/bash?

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 03 июл 2015, 01:59

Ukropchik писал(а):Теперь, когда я всё собрал по какой-то причине не скопировался сам контент (звук, спрайты и т.д.) Может их необходимо в какой-то другой каталог перенести? Имеется три папки font, image, sound. Необходимо что-бы они были вместе с исходниками в /usr/share/Logika.
Они не указаны среди исходников:

Код: Выделить всё

Source0:        logika.py
Source1:        game.py
Source2:        basic.py
Поэтому всё же лучше не перечислять каждый файл отдельно, а упаковать всё в тарбол logika-1.0.0.tar.xz (или gz/bz2), включая контент.

А потом в %install-секции:

Код: Выделить всё

cp -r  font image sound %{buildroot}%{_datadir}/Logika/
Ukropchik писал(а):И ещё один вопрос. Обязательно выполнять сборку пакета из /bin/sh или всё же достаточно /bin/bash?
Достаточно, конечно.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

Аватара пользователя
Ukropchik
Сообщения: 127
Зарегистрирован: 07 авг 2014, 01:12
Operating system: Rosa and Elementary

Re: Сборка RPM

Сообщение Ukropchik » 04 июл 2015, 11:21

Упаковал необходимые файлы в tar.gz.
Теперь spec-файл такой:

Код: Выделить всё

Summary:        Logic game
Name:           Logika
Version:        1.0.0
Release:        1
License:        GPLv3+
URL:            https://github.com/RastaDill/Logika
Group:          Games/Puzzles

Source0:        %{name}-%{version}.tar.gz

Requires:       python
Requires:       pygame

%description
This is logical game written on python and pygame.

%prep
%setup -q

%build

%install
mkdir -p %{buildroot}%{_datadir}/Logika
cp * %{buildroot}%{_datadir}/Logika/

mkdir -p %{buildroot}%{_bindir}
cat<<EOF>%{buildroot}%{_bindir}/logika
#!/bin/bash

cd %{_datadir}/Logika/
python logika.py
EOF
chmod 0755 %{buildroot}%{_bindir}/logika

%files
%doc README_RUS README_ENG COPYING
%{_bindir}/logika
%dir %{_datadir}/Logika/
%{_datadir}/Logika/*
Ошибка вылетает на моменте %prep.

Код: Выделить всё

$ rpmbuild -ba logika.spec
Выполняется(%prep): /bin/sh -e /var/tmp/rpm-tmp.77188
+ umask 022
+ cd /home/weedman/rpmbuild/BUILD
+ '[' 1 -eq 1 ']'
+ '[' 1 -eq 1 ']'
+ '[' 1 -eq 1 ']'
+ cd /home/weedman/rpmbuild/BUILD
+ rm -rf Logika-1.0.0
+ /bin/gzip -dc /home/weedman/rpmbuild/SOURCES/Logika-1.0.0.tar.gz
+ /bin/tar -xf -
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd Logika-1.0.0
/var/tmp/rpm-tmp.77188: line 35: cd: Logika-1.0.0: No such file or directory
error: Неверный код возврата из /var/tmp/rpm-tmp.77188 (%prep)


Ошибки сборки пакетов:
    Неверный код возврата из /var/tmp/rpm-tmp.77188 (%prep)
Во время сборки я так понимаю происходит переход в каталог Logika-1.0.0 которого соответственно нет. Выставлял параметр -n %{buildroot}%{_datadir}/Logika перед этим создавая директорию. Всё равно такая ошибка

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 05 июл 2015, 15:45

Ukropchik писал(а):Name: Logika
Лучше всё же маленькие буквы использовать в названии пакетов. Не принципиально, просто предпочтительнее, "так принято".
Ukropchik писал(а):Во время сборки я так понимаю происходит переход в каталог Logika-1.0.0 которого соответственно нет. Выставлял параметр -n %{buildroot}%{_datadir}/Logika перед этим создавая директорию. Всё равно такая ошибка
Надо указать тот каталог, который получается после распаковки тарбола.

Скажем, если после распаковки Logika-1.0.0.tar.gz получаем каталог Logika, внутри которого лежат все файлы, то указываем:

Код: Выделить всё

%setup -qn Ligika
Здесь q - это quiet, то есть не выводить в лог сборки информацию о распакованных файлах. А n - это аргумент для команды cd после распаковки тарбола. По умолчанию значение n - %{version}-%{release}. То есть в данном случае Logika-1.0.0.

Если же файлы распаковываются не в подкаталог, то надо указать:

Код: Выделить всё

%setup -qc
Здесь c - это указание создать подкаталог, в который распаковать тарбол. Создастся rpmbuild/BUILD/Logika-1.0.0. Можно также указать другое значение n, но смысла в этом нет.

В общем, надо просто исходить из структуры тарбола.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

Аватара пользователя
Ukropchik
Сообщения: 127
Зарегистрирован: 07 авг 2014, 01:12
Operating system: Rosa and Elementary

Re: Сборка RPM

Сообщение Ukropchik » 07 июл 2015, 17:42

Почти получилось. Собирается пакет но в конце появляется ошибка в сборке.
Вот мой текущий spec-файл:

Код: Выделить всё

Summary:        Logic game
Name:           logika
Version:        1.0.0
Release:        1
License:        GPLv3+
URL:            https://github.com/RastaDill/Logika
Group:          Games/Puzzles

Source0:        %{name}-%{version}.tar.gz

Requires:       python
Requires:       pygame

%description
This is logical game written on python and pygame.

%prep
%setup -qn logika

%build

%install
mkdir -p %{buildroot}%{_datadir}/logika
cp *.py %{buildroot}%{_datadir}/logika/
cp -r font image sound %{buildroot}%{_datadir}/logika/

mkdir -p %{buildroot}%{_bindir}
cat<<EOF>%{buildroot}%{_bindir}/logika
#!/bin/bash

cd %{_datadir}/logika/
python logika.py
EOF
chmod 0755 %{buildroot}%{_bindir}/logika

%files
%doc README_RUS README_ENG COPYING
%{_bindir}/logika
%dir %{_datadir}/logika/
%{_datadir}/logika/*
Далее после сборки выдаётс следующее сообщение:

Код: Выделить всё

Ошибки сборки пакетов:
    Package check "/usr/bin/rpmlint -T -f /home/weedman/rpmbuild/SOURCES/logika.rpmlintrc /home/weedman/rpmbuild/RPMS/x86_64/logika-1.0.0-1-rosa2014.1.x86_64.rpm /home/weedman/rpmbuild/RPMS/x86_64/logika-debuginfo-1.0.0-1-rosa2014.1.x86_64.rpm" failed.
Весь процесс сборки:
$ rpmbuild -ba logika.spec
Выполняется(%prep): /bin/sh -e /var/tmp/rpm-tmp.64865
+ umask 022
+ cd /home/weedman/rpmbuild/BUILD
+ '[' 1 -eq 1 ']'
+ '[' 1 -eq 1 ']'
+ '[' 1 -eq 1 ']'
+ cd /home/weedman/rpmbuild/BUILD
+ rm -rf logika
+ /bin/gzip -dc /home/weedman/rpmbuild/SOURCES/logika-1.0.0.tar.gz
+ /bin/tar -xf -
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd logika
+ exit 0
Выполняется(%build): /bin/sh -e /var/tmp/rpm-tmp.64865
+ umask 022
+ cd /home/weedman/rpmbuild/BUILD
+ cd logika
+ '[' 1 -eq 1 ']'
+ '[' 1 -eq 1 ']'
+ exit 0
Выполняется(%install): /bin/sh -e /var/tmp/rpm-tmp.64865
+ umask 022
+ cd /home/weedman/rpmbuild/BUILD
+ /bin/rm -rf /home/weedman/rpmbuild/BUILDROOT/logika-1.0.0-1-rosa2014.1.x86_64-buildroot
+ /bin/mkdir -p /home/weedman/rpmbuild/BUILDROOT/logika-1.0.0-1-rosa2014.1.x86_64-buildroot
+ cd logika
+ '[' 1 -eq 1 ']'
+ mkdir -p /home/weedman/rpmbuild/BUILDROOT/logika-1.0.0-1-rosa2014.1.x86_64-buildroot/usr/share/logika
+ cp basic.py game.py logika.py /home/weedman/rpmbuild/BUILDROOT/logika-1.0.0-1-rosa2014.1.x86_64-buildroot/usr/share/logika/
+ cp -r font image sound /home/weedman/rpmbuild/BUILDROOT/logika-1.0.0-1-rosa2014.1.x86_64-buildroot/usr/share/logika/
+ mkdir -p /home/weedman/rpmbuild/BUILDROOT/logika-1.0.0-1-rosa2014.1.x86_64-buildroot/usr/bin
+ cat
+ chmod 0755 /home/weedman/rpmbuild/BUILDROOT/logika-1.0.0-1-rosa2014.1.x86_64-buildroot/usr/bin/logika
+ '[' -n '' ']'
+ /usr/share/spec-helper/clean_files
+ '[' -n '' ']'
+ COMPRESS='xz -0f --text'
+ COMPRESS_EXT=.xz
+ /usr/lib/rpm/brp-compress
+ '[' -n '' ']'
+ /usr/share/spec-helper/relink_symlinks
+ '[' -n '' ']'
+ /usr/share/spec-helper/clean_perl
+ '[' -n '' ']'
+ /usr/share/spec-helper/lib_symlinks
+ '[' -n '' ']'
+ /usr/share/spec-helper/gprintify
+ '[' -n '' ']'
+ /usr/share/spec-helper/fix_mo
+ '[' -n '' ']'
+ /usr/share/spec-helper/fix_xdg
+ '[' -n '' ']'
+ /usr/share/spec-helper/fix_file_permissions
+ '[' -n '' ']'
+ /usr/share/spec-helper/fix_pamd
+ '[' -n '' ']'
+ /usr/share/spec-helper/remove_info_dir
+ '[' -n '' ']'
+ /usr/share/spec-helper/remove_libtool_files
+ '[' -n '' ']'
+ /usr/share/spec-helper/fix_eol
+ '[' -n '' ']'
+ /usr/share/spec-helper/check_elf_files
+ '[' -n '' ']'
+ /usr/share/spec-helper/remove_rpath
+ /usr/lib/rpm/find-debuginfo.sh -r /home/weedman/rpmbuild/BUILD/logika

Обрабатываются файлы: logika-1.0.0-1.x86_64
Выполняется(%doc): /bin/sh -e /var/tmp/rpm-tmp.57238
+ umask 022
+ cd /home/weedman/rpmbuild/BUILD
+ cd logika
+ DOCDIR=/home/weedman/rpmbuild/BUILDROOT/logika-1.0.0-1-rosa2014.1.x86_64-buildroot/usr/share/doc/logika
+ export DOCDIR
+ /bin/mkdir -p /home/weedman/rpmbuild/BUILDROOT/logika-1.0.0-1-rosa2014.1.x86_64-buildroot/usr/share/doc/logika
+ cp -pr README_RUS README_ENG COPYING /home/weedman/rpmbuild/BUILDROOT/logika-1.0.0-1-rosa2014.1.x86_64-buildroot/usr/share/doc/logika
+ '[' -n '' ']'
+ /usr/share/spec-helper/fix_eol /home/weedman/rpmbuild/BUILDROOT/logika-1.0.0-1-rosa2014.1.x86_64-buildroot/usr/share/doc/logika
+ '[' -n '' ']'
+ /usr/share/spec-helper/clean_files /home/weedman/rpmbuild/BUILDROOT/logika-1.0.0-1-rosa2014.1.x86_64-buildroot/usr/share/doc/logika
Requires: python(abi)
Обрабатываются файлы: logika-debuginfo-1.0.0-1.x86_64
Проверка на неупакованный(е) файл(ы): /usr/lib/rpm/check-files /home/weedman/rpmbuild/BUILDROOT/logika-1.0.0-1-rosa2014.1.x86_64-buildroot
Записан: /home/weedman/rpmbuild/SRPMS/logika-1.0.0-1.src.rpm
Executing "/usr/bin/rpmlint -T -f /home/weedman/rpmbuild/SOURCES/logika.rpmlintrc /home/weedman/rpmbuild/SRPMS/logika-1.0.0-1.src.rpm":
1 packages and 0 specfiles checked; 0 errors, 0 warnings.
Записан: /home/weedman/rpmbuild/RPMS/x86_64/logika-1.0.0-1-rosa2014.1.x86_64.rpm
Записан: /home/weedman/rpmbuild/RPMS/x86_64/logika-debuginfo-1.0.0-1-rosa2014.1.x86_64.rpm
Executing "/usr/bin/rpmlint -T -f /home/weedman/rpmbuild/SOURCES/logika.rpmlintrc /home/weedman/rpmbuild/RPMS/x86_64/logika-1.0.0-1-rosa2014.1.x86_64.rpm /home/weedman/rpmbuild/RPMS/x86_64/logika-debuginfo-1.0.0-1-rosa2014.1.x86_64.rpm":
logika.x86_64: E: non-standard-executable-perm (Badness: 1) /usr/share/logika/logika.py 0700

logika.x86_64: E: non-readable (Badness: 1) /usr/share/logika/image/board/.directory 0600

logika.x86_64: E: non-readable (Badness: 1) /usr/share/logika/image/.directory 0600

logika.x86_64: E: non-readable (Badness: 1) /usr/share/logika/image/door/.directory 0600

logika.x86_64: E: non-readable (Badness: 1) /usr/share/logika/image/drop point/.directory 0600

logika.x86_64: E: non-readable (Badness: 1) /usr/share/logika/image/menu/.directory 0600

logika.x86_64: E: non-readable (Badness: 1) /usr/share/logika/image/blocks/.directory 0600

logika.x86_64: E: non-readable (Badness: 1) /usr/share/logika/logika.py 0700

logika.x86_64: E: non-readable (Badness: 1) /usr/share/logika/image/pipe/pipe_up.png 0600

logika.x86_64: E: non-readable (Badness: 1) /usr/share/logika/image/tumbler/.directory 0600

logika.x86_64: E: non-readable (Badness: 1) /usr/share/logika/game.py 0600

logika.x86_64: E: non-readable (Badness: 1) /usr/share/logika/image/background/.directory 0600

logika.x86_64: E: non-readable (Badness: 1) /usr/share/logika/image/pipe/.directory 0600

logika.x86_64: E: non-readable (Badness: 1) /usr/share/logika/basic.py 0600

logika.x86_64: E: non-readable (Badness: 1) /usr/share/logika/image/pipe/pipe_down.png 0600

logika.x86_64: E: non-readable (Badness: 1) /usr/share/logika/image/pictograms/.directory 0600

logika.x86_64: E: non-readable (Badness: 1) /usr/share/logika/image/button/.directory 0600

logika.x86_64: W: non-executable-script /usr/share/logika/game.py 0600 /usr/bin/env

logika.x86_64: W: non-executable-script /usr/share/logika/basic.py 0600 /usr/bin/env

logika.x86_64: E: no-binary (Badness: 1)

logika.x86_64: W: hidden-file-or-dir /usr/share/logika/image/board/.directory

logika.x86_64: W: hidden-file-or-dir /usr/share/logika/image/.directory

logika.x86_64: W: hidden-file-or-dir /usr/share/logika/image/door/.directory

logika.x86_64: W: hidden-file-or-dir /usr/share/logika/image/drop point/.directory

logika.x86_64: W: hidden-file-or-dir /usr/share/logika/image/menu/.directory

logika.x86_64: W: hidden-file-or-dir /usr/share/logika/image/blocks/.directory

logika.x86_64: W: hidden-file-or-dir /usr/share/logika/image/tumbler/.directory

logika.x86_64: W: hidden-file-or-dir /usr/share/logika/image/background/.directory

logika.x86_64: W: hidden-file-or-dir /usr/share/logika/image/pipe/.directory

logika.x86_64: W: hidden-file-or-dir /usr/share/logika/image/pictograms/.directory

logika.x86_64: W: hidden-file-or-dir /usr/share/logika/image/button/.directory

logika-debuginfo.x86_64: E: empty-debuginfo-package (Badness: 50)

2 packages and 0 specfiles checked; 19 errors, 13 warnings.
(none): E: badness 68 exceeds threshold 49.
error: Package check "/usr/bin/rpmlint -T -f /home/weedman/rpmbuild/SOURCES/logika.rpmlintrc /home/weedman/rpmbuild/RPMS/x86_64/logika-1.0.0-1-rosa2014.1.x86_64.rpm /home/weedman/rpmbuild/RPMS/x86_64/logika-debuginfo-1.0.0-1-rosa2014.1.x86_64.rpm" failed.


Ошибки сборки пакетов:
Package check "/usr/bin/rpmlint -T -f /home/weedman/rpmbuild/SOURCES/logika.rpmlintrc /home/weedman/rpmbuild/RPMS/x86_64/logika-1.0.0-1-rosa2014.1.x86_64.rpm /home/weedman/rpmbuild/RPMS/x86_64/logika-debuginfo-1.0.0-1-rosa2014.1.x86_64.rpm" failed.

Аватара пользователя
VictorR2007
Сообщения: 5848
Зарегистрирован: 12 сен 2011, 13:00
Operating system: ROSA 2016.1
Откуда: Северодвинск

Re: Сборка RPM

Сообщение VictorR2007 » 07 июл 2015, 17:55

Наверное к строке
chmod 0755 %{buildroot}%{_bindir}/logika
нужно добавить
chmod -R 755 %{buildroot}%{_datadir}/logika/*

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 07 июл 2015, 19:24

VictorR2007 писал(а):Наверное к строке
chmod 0755 %{buildroot}%{_bindir}/logika
нужно добавить
chmod -R 755 %{buildroot}%{_datadir}/logika/*
Лучше в изначальном тарболе права поправить, чтобы вместо 0600 было 0644, а вместо 0700 было 0755.

А что касается вот этой ошибки:

Код: Выделить всё

logika-debuginfo.x86_64: E: empty-debuginfo-package (Badness: 50)
То надо в спеке прописать тэг (рядом с другими тэгами - Requires: и т.п.):

Код: Выделить всё

BuildArch: noarch
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

Аватара пользователя
Ukropchik
Сообщения: 127
Зарегистрирован: 07 авг 2014, 01:12
Operating system: Rosa and Elementary

Re: Сборка RPM

Сообщение Ukropchik » 09 июл 2015, 12:39

Ура :Yahoo!: . Большое спасибо за помощь. Пакет собран и работает. Вот такой конечный получился spec-файл:

Код: Выделить всё

Summary:        Logic game
Name:           logika
Version:        1.0.0
Release:        1
License:        GPLv3+
URL:            https://github.com/RastaDill/Logika
Group:          Games/Puzzles

Source0:        %{name}-%{version}.tar.gz

Requires:       python
Requires:       pygame
BuildArch:      noarch

%description
This is logical game written on python and pygame.

%prep
%setup -qn logika

%build

%install
mkdir -p %{buildroot}%{_datadir}/logika
cp *.py %{buildroot}%{_datadir}/logika/
cp -r font image sound %{buildroot}%{_datadir}/logika/

mkdir -p %{buildroot}%{_bindir}
cat<<EOF>%{buildroot}%{_bindir}/logika
#!/bin/bash
cd %{_datadir}/logika/
python logika.py
EOF
chmod 0755 %{buildroot}%{_bindir}/logika

mkdir -p %{buildroot}%{_datadir}/applications/
cat<<EOF>%{buildroot}%{_datadir}/applications/logika.desktop
[Desktop Entry]
Version=1.0.0
Name=Logika
Comment=Logic game 
Type=Application
Exec=logika
Icon=%{_datadir}/logika/image/icon.png
Categories=Game;PuzzleGame;
EOF
chmod 0755 %{buildroot}%{_datadir}/applications/logika.desktop

%files
%doc README_RUS README_ENG COPYING
%{_bindir}/logika
%{_datadir}/applications/logika.desktop
%dir %{_datadir}/logika/
%{_datadir}/logika/*

Аватара пользователя
tverskoy
Сообщения: 1132
Зарегистрирован: 12 сен 2011, 13:30
Operating system: Rosa 2016.1 Fresh
Откуда: Тверь

Re: Сборка RPM

Сообщение tverskoy » 13 ноя 2015, 20:11

Помогите разобраться, учусь работать с abf, ковыряю cinnamon. Недостающие пакеты при сборке смотреть в rpm-build.log ?

Код: Выделить всё

+ /usr/share/spec-helper/clean_files /builddir/build/BUILDROOT/cinnamon-desktop-2.8.0-1-rosa2014.1.i586-buildroot/usr/share/doc/cinnamon-desktop
Requires: libX11.so.6 libXrandr.so.2 libc.so.6 libc.so.6(GLIBC_2.0) libcinnamon-desktop.so.4 libgdk-3.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-3.so.0 libpthread.so.0
Processing files: libcinnamon-desktop4-2.8.0-1.i586
Processing files: libcinnamon-desktop-gir1.0-2.8.0-1.i586
error: File not found by glob: /builddir/build/BUILDROOT/cinnamon-desktop-2.8.0-1-rosa2014.1.i586-buildroot/usr/lib/libcinnamon-desktop*.so.4{,.*}
ERROR: Failed to load typelib 'CDesktopEnums'
ERROR: Failed to load typelib 'CinnamonDesktop'
Provides: typelib(CDesktopEnums) = 3.0 typelib(CinnamonDesktop) = 3.0
Processing files: libcinnamon-desktop-devel-2.8.0-1.i586
Provides: devel(libcinnamon-desktop) pkgconfig(cinnamon-desktop) = 2.8.0
Requires: devel(libX11) devel(libXext) devel(libXrandr) devel(libcairo) devel(libgdk-3) devel(libgdk_pixbuf-2.0) devel(libgio-2.0) devel(libglib-2.0) devel(libgobject-2.0) devel(libgtk-3) devel(libxkbfile) pkgconfig(gtk+-3.0)
Processing files: cinnamon-desktop-debuginfo-2.8.0-1.i586
Checking for unpackaged file(s): /usr/lib/rpm/check-files /builddir/build/BUILDROOT/cinnamon-desktop-2.8.0-1-rosa2014.1.i586-buildroot
error: Installed (but unpackaged) file(s) found:
	/usr/lib/libcinnamon-desktop.so.4
	/usr/lib/libcinnamon-desktop.so.4.0.0
RPM build errors:
    File not found by glob: /builddir/build/BUILDROOT/cinnamon-desktop-2.8.0-1-rosa2014.1.i586-buildroot/usr/lib/libcinnamon-desktop*.so.4{,.*}
    Installed (but unpackaged) file(s) found:
	/usr/lib/libcinnamon-desktop.so.4
	/usr/lib/libcinnamon-desktop.so.4.0.0
Child returncode was: 1
EXCEPTION: Command failed. See logs for output.
 # ['bash', '--login', '-c', 'rpmbuild -bb --target i586 --nodeps builddir/build/SPECS/cinnamon-desktop.spec']
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/mock_urpm/trace_decorator.py", line 70, in trace
    result = func(*args, **kw)
  File "/usr/lib/python2.7/site-packages/mock_urpm/util.py", line 377, in do
    raise mock_urpm.exception.Error, ("Command failed. See logs for output.\n # %s" % (command,), child.returncode)
Error: Command failed. See logs for output.
 # ['bash', '--login', '-c', 'rpmbuild -bb --target i586 --nodeps builddir/build/SPECS/cinnamon-desktop.spec']
LEAVE do --> EXCEPTION RAISED
почему-то не упаковывается уже собранный файл, помогите разобраться
в спеке заменил BuildRequires: gobject-introspection-devel на girepository-devel
оригинальный спек

Код: Выделить всё

%global _internal_version                 fcbafe3
%global gtk3_version                      3.10.0
%global glib2_version                     2.33.3
%global startup_notification_version      0.5
%global gtk_doc_version                   1.9
%global po_package                        cinnamon-desktop-3.0
%global date				  20151020

%define major   4
%define girmajor   1.0
%define libname %mklibname %{name} %{major}
%define libdev  %mklibname %{name} -d
%define girlib    %mklibname %{name}-gir %{girmajor}


Summary: Shared code among cinnamon-session, nemo, etc
Name:    cinnamon-desktop
Version: 2.8.0
Release: %mkrel 1
License: GPLv2+ and LGPLv2+ add MIT
Group:   Graphical desktop/Cinnamon
URL:     http://cinnamon.linuxmint.com

Source0: cinnamon-desktop-%{version}.tar.gz
#SourceGet0: https://github.com/linuxmint/cinnamon-desktop/archive/%{version}.tar.gz
#Source0: cinnamon-desktop-%{version}.git%{_internal_version}.tar.gz
##SourceGet0: https://github.com/linuxmint/cinnamon-desktop/tarball/%{_internal_version}

# Make sure that gnome-themes-standard gets pulled in for upgrades
Requires: gnome-themes-standard

BuildRequires: gnome-common
BuildRequires: pkgconfig(gtk+-3.0) >= %{gtk3_version}
BuildRequires: gobject-introspection-devel
BuildRequires: pkgconfig(glib-2.0) >= %{glib2_version}
BuildRequires: startup-notification-devel >= %{startup_notification_version}
BuildRequires: pkgconfig(xkbfile)
BuildRequires: pkgconfig(xkeyboard-config)
BuildRequires: gtk-doc >= %{gtk_doc_version}
BuildRequires: intltool
BuildRequires: itstool

%description

The cinnamon-desktop package contains an internal library
(libcinnamondesktop) used to implement some portions of the CINNAMON
desktop, and also some data files and other shared components of the
CINNAMON user environment.

#--------------------------------------------------------------------

%package -n %libname
Summary:  Libraries for %name
License:  LGPLv2+
Group:    System/Libraries

%description -n %libname
Libraries for %name

#--------------------------------------------------------------------

%package -n %{girlib}
Summary: GObject introspection interface library for %{name}
Group: System/Libraries
Requires: %{libname} = %{version}-%{release}

%description -n %{girlib}
GObject introspection interface library for %{name}.

#--------------------------------------------------------------------

%package -n %libdev
Summary:  Libraries and headers for libcinnamon-desktop
License:  LGPLv2+
Group:    Development/C
Requires: %{libname} = %{version}-%{release}
Requires: %{girlib} = %{version}-%{release}
Requires: gtk3-devel >= %{gtk3_version}
Requires: glib2-devel >= %{glib2_version}
Requires: startup-notification-devel >= %{startup_notification_version}

%description -n %libdev
Libraries and header files for the CINNAMON-internal private library
libcinnamondesktop.

%prep
%setup -q
sed -i -e 's!subdir-objects!!g' configure.ac
NOCONFIGURE=1 ./autogen.sh

%build
%configure --with-pnp-ids-path="%{_datadir}/misc/pnp.ids"
sed -i -e 's! -shared ! -Wl,--as-needed\0!g' libtool
%make V=1 

%install
%{make_install}

# stuff we don't want
rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
rm -f $RPM_BUILD_ROOT%{_libdir}/*.a

%find_lang %{po_package} --all-name --with-gnome

%files -f %{po_package}.lang
%doc AUTHORS COPYING COPYING.LIB README
%{_datadir}/glib-2.0/schemas/org.cinnamon.*.xml
%{_libexecdir}/cinnamon-rr-debug
%{_bindir}/cinnamon-desktop-migrate-mediakeys

%files -n %libname
%{_libdir}/libcinnamon-desktop*.so.%{major}{,.*}

%files -n %{girlib}
%{_libdir}/girepository-1.0/C*-3.0.typelib

%files -n %libdev
%{_libdir}/libcinnamon-desktop.so
%{_libdir}/pkgconfig/cinnamon-desktop.pc
%{_includedir}/cinnamon-desktop/
%{_datadir}/gir-1.0/C*-3.0.gir


%changelog
* Wed Oct 21 2015 joequant <joequant> 2.8.0-1.mga6
+ Revision: 893688
- upgrade to 2.8.0

* Sun Jun 28 2015 wally <wally> 2.6.5-2.mga6
+ Revision: 847157
- add requires for gir pkg to devel pkg

* Fri Jun 26 2015 joequant <joequant> 2.6.5-1.mga6
+ Revision: 844285
- upgrade to 2.6

* Thu Nov 27 2014 joequant <joequant> 2.4.2-1.mga5
+ Revision: 799543
- 2.4.2

* Sun Nov 23 2014 joequant <joequant> 2.4.1-1.mga5
+ Revision: 798406
- upgrade to 2.4

* Wed Oct 15 2014 umeabot <umeabot> 2.2.3-5.mga5
+ Revision: 745259
- Second Mageia 5 Mass Rebuild

* Sun Sep 28 2014 tv <tv> 2.2.3-4.mga5
+ Revision: 731111
- rebuild so that it picks typelib() requires

* Thu Sep 18 2014 umeabot <umeabot> 2.2.3-3.mga5
+ Revision: 693609
- Rebuild to fix library dependencies

* Tue Sep 16 2014 umeabot <umeabot> 2.2.3-2.mga5
+ Revision: 678397
- Mageia 5 Mass Rebuild

* Tue Jun 10 2014 joequant <joequant> 2.2.3-1.mga5
+ Revision: 635329
- upgrade to 2.2.3

* Thu May 15 2014 joequant <joequant> 2.2.2-1.mga5
+ Revision: 622879
- upgrade to 2.2.2

* Fri Apr 18 2014 joequant <joequant> 2.2.0-1.mga5
+ Revision: 616819
- upgrade to 2.2

* Wed Jan 08 2014 joequant <joequant> 2.0.4-3.mga4
+ Revision: 565561
- push to core/release

* Wed Jan 01 2014 joequant <joequant> 2.0.4-2.mga4
+ Revision: 563806
- upgrade to 2.0.4

* Tue Oct 22 2013 umeabot <umeabot> 2.0.1-2.mga4
+ Revision: 542039
- Mageia 4 Mass Rebuild

* Mon Oct 14 2013 joequant <joequant> 2.0.1-1.mga4
+ Revision: 496762
- update to 2.0.1

* Mon Oct 07 2013 joequant <joequant> 2.0.0-1.mga4
+ Revision: 492506
- packaged wrong source
- update to 2.0.0

* Tue Oct 01 2013 joequant <joequant> 1.9.1-1.mga4
+ Revision: 490048
- upgrade to 1.9.1

* Thu Sep 19 2013 joequant <joequant> 1.0.0-0.20130905git37ca83b.1.mga4
+ Revision: 481370
- sync with git

* Mon Sep 02 2013 neoclust <neoclust> 1.0.0-0.1.gitea72b22.1.mga4
+ Revision: 474292
- Libify

* Mon Sep 02 2013 joequant <joequant> 1.0.0-0.1.gitea72b22.mga4
+ Revision: 474250
- update to latest git version
- imported package cinnamon-desktop
Вложения
abfworker__rpm-worker-2597562.log
(363.2 КБ) 665 скачиваний
rpm-build.log
(157.58 КБ) 668 скачиваний

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 13 ноя 2015, 20:26

tverskoy писал(а):File not found by glob: /builddir/build/BUILDROOT/cinnamon-desktop-2.8.0-1-rosa2014.1.i586-buildroot/usr/lib/libcinnamon-desktop*.so.4{,.*}
Installed (but unpackaged) file(s) found:
/usr/lib/libcinnamon-desktop.so.4
/usr/lib/libcinnamon-desktop.so.4.0.0
Надо в спеке заменить

Код: Выделить всё

%{_libdir}/libcinnamon-desktop*.so.%{major}{,.*}
На

Код: Выделить всё

%{_libdir}/libcinnamon-desktop.so.%{major}*
Этого достаточно, чтобы описать /usr/lib/libcinnamon-desktop.so.4 и /usr/lib/libcinnamon-desktop.so.4.0.0. Видимо, в Магее регулярные выражение в RPM-спеках немного по-другому работают, если их вариант у них нормально собирается.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

Аватара пользователя
tverskoy
Сообщения: 1132
Зарегистрирован: 12 сен 2011, 13:30
Operating system: Rosa 2016.1 Fresh
Откуда: Тверь

Re: Сборка RPM

Сообщение tverskoy » 13 ноя 2015, 21:00

Мог бы разницу объяснить? А то я до таких тонкостей недошёл

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 13 ноя 2015, 21:48

tverskoy писал(а):Мог бы разницу объяснить? А то я до таких тонкостей недошёл
У нас есть файлы

/usr/lib/libcinnamon-desktop.so.4
/usr/lib/libcinnamon-desktop.so.4.0.0

/usr/lib/ (и /usr/lib64/ для 64-битной сборки) описывается макросом %{_libdir}/

Далее идёт общая для двух файлов часть libcinnamon-desktop.so, указываем её как есть. В Магее зачем-то * вставили туда, а * означает любой символ. Хотя у нас только libcinnamon-desktop.so, а никаких libcinnamon-desktop-ui.so, libcinnamon-desktop-widgets.so и т.п. файлов нет. Совершенно лишнее усложнение маски получается.

И в конце идёт разная для двух файлов часть 4 и 4.0.0. Где 4 - это так называемая major-версия библиотеки. Т.е. по зависимостям она будет потом запрашиваться как libcinnamon-desktop.so.4. А пакет согласно политикам сборки библиотек будет иметь вид libcinnamon-desktop4 (и lib64cinnamon-desktop4 для 64-бит). 4.0.0 - это полная версия библиотеки, файл /usr/lib/libcinnamon-desktop.so.4 - это симлинк на /usr/lib/libcinnamon-desktop.so.4.0.0.

В спеке выше мы задаём макросы:

%define major 4
%define libname %mklibname %{name} %{major}

И потом используем %{major}* для описания последней части имен файлов:

%{_libdir}/libcinnamon-desktop.so.%{major}*

Макрос %{major}* раскрывается в 4*, т.е. 4 и все символы, которые идут после него.

Макросы тут нужны для того, чтобы если в следующей версии из апстрима библиотека не будет обратно совместимой с данной версией и её major-версия станет 5 (/usr/lib/libcinnamon-desktop.so.5), то нам достаточно будет поменять в спеке %define major 4 на %define major 5, чтобы получить пакет libcinnamon-desktop5.

А если бы мы использовали в описании файлов какой-нибудь совсем общий вариант вроде %{_libdir}/lib*.so.*, то был бы риск получить в будущем пакет libcinnamon-desktop4 с файлами /usr/lib/libcinnamon-desktop.so.5, затем /usr/lib/libcinnamon-desktop.so.6 и далее. Что в этом плохого - отдельная тема, наверное.

Возвращаясь к регулярным выражениям, то магеевское {,.*}, видимо, должно было охватывать случаи "" (ничего) и ".*" (точка, а затем любые символы). Зачем такое усложнение - я не знаю. Единственную пользу вижу в том, чтобы отличать /usr/lib/libcinnamon-desktop.so.1.0.0 от /usr/lib/libcinnamon-desktop.so.10.0.0, тогда как для %{major}* разницы между 1* и 10* нет. Но можно для этого случая сделать так:

%{_libdir}/libcinnamon-desktop.so.%{major}
%{_libdir}/libcinnamon-desktop.so.%{major}.*

Надеюсь, понятно объяснил, а то как-то многословно вышло.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

Аватара пользователя
tverskoy
Сообщения: 1132
Зарегистрирован: 12 сен 2011, 13:30
Operating system: Rosa 2016.1 Fresh
Откуда: Тверь

Re: Сборка RPM

Сообщение tverskoy » 13 ноя 2015, 22:04

спасибо, буду разбираться

notauser
Сообщения: 1207
Зарегистрирован: 06 май 2012, 21:00

Re: Сборка RPM

Сообщение notauser » 15 ноя 2015, 03:18

{, вроде как целое десятичное число, потом символ . и всё что угодно*. Но это, видимо, то что хотели, а получили как всегда, то что просили. :)
ibcinnamon-desktop*.so.4.{,.*} не пробовали?

Аватара пользователя
Алзим
Сообщения: 4394
Зарегистрирован: 18 июн 2015, 11:57
Operating system: ROSA Desktop Fresh R10
Откуда: Интернет

Re: Сборка RPM

Сообщение Алзим » 15 ноя 2015, 07:54

notauser писал(а):{, вроде как целое десятичное число, потом символ . и всё что угодно*. Но это, видимо, то что хотели, а получили как всегда, то что просили. :)
ibcinnamon-desktop*.so.4.{,.*} не пробовали?
А почему бы вам самому не попробовать собрать пакеты?

Аватара пользователя
tverskoy
Сообщения: 1132
Зарегистрирован: 12 сен 2011, 13:30
Operating system: Rosa 2016.1 Fresh
Откуда: Тверь

Re: Сборка RPM

Сообщение tverskoy » 17 ноя 2015, 14:43

Эх, сложно на ABF собирать, тесты не проходят, базовую библиотеку собрал, с остальным сложно все :( где вобще про abf можно почитать?
Последний раз редактировалось tverskoy 17 ноя 2015, 14:46, всего редактировалось 1 раз.

keleg
Сообщения: 5416
Зарегистрирован: 15 сен 2011, 01:58

Re: Сборка RPM

Сообщение keleg » 17 ноя 2015, 14:45

tverskoy писал(а):Эх, сложно на ABF собирать, тесты не проходят :(
Версию не подняли? Там, в логах, для тестов обычно понятно, что к чему.

Аватара пользователя
tverskoy
Сообщения: 1132
Зарегистрирован: 12 сен 2011, 13:30
Operating system: Rosa 2016.1 Fresh
Откуда: Тверь

Re: Сборка RPM

Сообщение tverskoy » 17 ноя 2015, 14:51

Код: Выделить всё

==> See: 'https://abf.io/build_lists/2597681'

Executing "/usr/bin/rpmlint -T -f /builddir/build/SOURCES/cinnamon-menus.rpmlintrc /builddir/build/SRPMS/cinnamon-menus-2.8.0-1.src.rpm":
cinnamon-menus.src:13: W: macro-in-comment %{name}
cinnamon-menus.src:13: W: macro-in-comment %{name}
cinnamon-menus.src:13: W: macro-in-comment %{version}
cinnamon-menus.src:13: W: macro-in-comment %{_internal_version}
cinnamon-menus.src:15: W: macro-in-comment %{name}
cinnamon-menus.src:15: W: macro-in-comment %{version}
1 packages and 0 specfiles checked; 0 errors, 6 warnings.
Executing "/usr/bin/rpmlint -T -f /builddir/build/SOURCES/cinnamon-menus.rpmlintrc /builddir/build/RPMS/cinnamon-menus-2.8.0-1-rosa2014.1.x86_64.rpm /builddir/build/RPMS/cinnamon-menus-devel-2.8.0-1-rosa2014.1.x86_64.rpm /builddir/build/RPMS/cinnamon-menus-debuginfo-2.8.0-1-rosa2014.1.x86_64.rpm":
cinnamon-menus-devel.x86_64: W: no-major-in-name cinnamon-menus-devel
cinnamon-menus-devel.x86_64: W: no-documentation
cinnamon-menus-devel.x86_64: W: no-dependency-on cinnamon-menus/cinnamon-menus-libs/libcinnamon-menus
cinnamon-menus.x86_64: E: incoherent-version-in-name (Badness: 50) 3
3 packages and 0 specfiles checked; 1 errors, 3 warnings.
И что интересно этот же пакет собрался для 2012.1, случайно галочку не туда поставил
Вобщем учусь

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 17 ноя 2015, 15:17

tverskoy писал(а):cinnamon-menus.x86_64: E: incoherent-version-in-name (Badness: 50) 3
Это значит, что имя пакета не соответствует политике сборки библиотек: http://wiki.rosalab.com/ru/index.php/Libraries_policy

Судя по спеку, в Магею его импортировали из Федоры и не стали адаптировать под свою политику сборки (она в целом такая же, как и у Росы, т.к. идёт ещё от Мандривы).

Вот этот кусок, кстати, можно вообще убрать:

Код: Выделить всё

%post -p /sbin/ldconfig

%postun -p /sbin/ldconfig
В Росе ldconfig вызывается автоматически (где он нужен после установки пакетов).

Что касается самой библиотеки libcinnamon-menu-3.so.0, то

%define api 3
%define major 0
%define libname cinnamon-menu %{api} %{major}
%define devname cinnamon-menu %{api} -d

(в devel-пакете %{api} указывается опционально - если видно, что в именах файлов он тоже фигурирует, то указать его желательно).

А т.к. они фигурируют:

/usr/include/cinnamon-menus-3.0
/usr/lib64/libcinnamon-menu-3.so
/usr/lib64/pkgconfig/libcinnamon-menu-3.0.pc

То лучше указать.

Ну и далее согласно политике сборки описать в спеке пакеты

%package -n %{libname}
и
%package -n %{devname}

Для официального пакета ещё typelib и gir файлы надо было бы правильно упаковать, но мне кажется, что пока что с ними и так сойдёт, пусть typelib будет в пакете с библиотекой. Или если с библиотеками всё уже понятно, могу дальше про typelib рассказать.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

Аватара пользователя
tverskoy
Сообщения: 1132
Зарегистрирован: 12 сен 2011, 13:30
Operating system: Rosa 2016.1 Fresh
Откуда: Тверь

Re: Сборка RPM

Сообщение tverskoy » 17 ноя 2015, 18:10

Линт ругается

Код: Выделить всё

==> See: 'https://abf.io/build_lists/2598836'

Executing "/usr/bin/rpmlint -T -f /builddir/build/SOURCES/cinnamon-menus.rpmlintrc /builddir/build/SRPMS/cinnamon-menus-2.8.0-1.src.rpm":
cinnamon-menus.src: E: specfile-error (Badness: 1) error: Bad package specification: %package -n cinnamon-menus 3 -d
cinnamon-menus.src:18: W: macro-in-comment %{name}
cinnamon-menus.src:18: W: macro-in-comment %{name}
cinnamon-menus.src:18: W: macro-in-comment %{version}
cinnamon-menus.src:18: W: macro-in-comment %{_internal_version}
cinnamon-menus.src:20: W: macro-in-comment %{name}
cinnamon-menus.src:20: W: macro-in-comment %{version}
1 packages and 0 specfiles checked; 1 errors, 6 warnings.
Получилось так

Код: Выделить всё

%global enable_debugging 0
#global _internal_version f22e07d

%define api 3
%define major 0
%define libname %{name} %{api} %{major}
%define devname %{name} %{api} -d

Summary:  A menu system for the Cinnamon project
Name: cinnamon-menus
Version: 2.8.0
Release: %mkrel 1
License: LGPLv2+
Group: Graphical desktop/Cinnamon
URL: http://cinnamon.linuxmint.com 
# for git
# wget https://github.com/linuxmint/cinnamon-menus/tarball/%%{_internal_version} -O cinnamon-menus-%%{version}.git%%{_internal_version}.tar.gz
#Source0:        http://leigh123linux.fedorapeople.org/pub/%{name}/source/%{name}-%{version}.git%{_internal_version}.tar.gz
Source0:       %{name}-%{version}.tar.gz
#SourceGet0: https://github.com/linuxmint/%{name}/archive/%{version}.tar.gz

BuildRequires: glib2-devel
BuildRequires: pkgconfig
BuildRequires: python-devel
BuildRequires: intltool
BuildRequires: girepository-devel
BuildRequires: gnome-common

%description
cinnamon-menus is an implementation of the draft "Desktop
Menu Specification" from freedesktop.org. This package
also contains the Cinnamon menu layout configuration files,
.directory files and assorted menu related utility programs,
Python bindings, and a simple menu editor.

%package -n %{devname}
Summary: Libraries and include files for the Cinnamon menu system
Group: Development/C
Requires: %{name}%{?_isa} = %{version}-%{release}

%description devel
This package provides the necessary development libraries for
writing applications that use the Cinnamon menu system.

%prep
%setup -q
NOCONFIGURE=1 ./autogen.sh

%build
%configure --disable-static \
   --enable-introspection \
%if %{enable_debugging}
   --enable-debug=yes
%else
   --enable-debug=no
%endif

%make V=1


%install
%{make_install}
find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';'

%files
%doc AUTHORS NEWS COPYING.LIB
%{_libdir}/lib*.so.*
%{_libdir}/girepository-1.0/C*-3.0.typelib

%files devel
%{_libdir}/lib*.so
%{_libdir}/pkgconfig/*
%{_includedir}/cinnamon-menus-3.0
%{_datadir}/gir-1.0/C*-3.0.gir



%changelog
* Wed Oct 21 2015 joequant <joequant> 2.8.0-1.mga6
+ Revision: 893697
- upgrade to 2.8.0

* Fri Jun 26 2015 joequant <joequant> 2.6.0-1.mga6
+ Revision: 844318
- add gnome common
- upgrade to 2.6

* Wed Dec 03 2014 tmb <tmb> 2.4.0-2.mga5
+ Revision: 800483
- bump rel past testing

* Sun Nov 23 2014 joequant <joequant> 2.4.0-1.mga5
+ Revision: 798405
- upgrade to 2.4

* Wed Oct 15 2014 umeabot <umeabot> 2.2.0-5.mga5
+ Revision: 742819
- Second Mageia 5 Mass Rebuild

* Thu Sep 18 2014 umeabot <umeabot> 2.2.0-4.mga5
+ Revision: 693610
- Rebuild to fix library dependencies

* Tue Sep 16 2014 umeabot <umeabot> 2.2.0-3.mga5
+ Revision: 678398
- Mageia 5 Mass Rebuild

* Wed May 14 2014 joequant <joequant> 2.2.0-2.mga5
+ Revision: 622768
- rebuild for cauldron

* Sat Apr 19 2014 joequant <joequant> 2.2.0-1.mga5
+ Revision: 616949
- imported package cinnamon-menus


* Sat Apr 12 2014 Leigh Scott <leigh123linux@googlemail.com> - 2.2.0-1
- update to 2.2.0

* Sat Mar 22 2014 Leigh Scott <leigh123linux@googlemail.com> - 2.1-0.1.gitc740513
- inital release

Или %define devname %{name} %{api} -d заменить на %define devname %{name} -%{api} -d
?
Пробовал api убрать, тоже не нравится

Аватара пользователя
Алзим
Сообщения: 4394
Зарегистрирован: 18 июн 2015, 11:57
Operating system: ROSA Desktop Fresh R10
Откуда: Интернет

Re: Сборка RPM

Сообщение Алзим » 17 ноя 2015, 18:25

Собрал пакет https://abf.io/build_lists/2598817
Установил себе. Всё работает вроде. Разницы с тем, что было в репозитории не заметил.
Основной цели не добился. Хотел чтобы Вайбер был на русском, но не знаю как это сделать. Но, в процессе установки, в логе видел, что русская локаль есть. А вот как её поставить?

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 17 ноя 2015, 18:34

tverskoy писал(а):Линт ругается
Упс, моя вина. Забыл макрос %mklibname вставить в определение:

Код: Выделить всё

%define libname %mklibname cinnamon-menu %{api} %{major}
%define devname %mklibname cinnamon-menu %{api} -d
Этот макрос делает вот что. На 32-битной системе libname получит значение libcinnamon-menu3_0, а на 64-битной lib64cinnamon-menu3_0. А devname - libcinnamon-menu3-devel и lib64cinnamon-menu3-devel соответственно.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

Аватара пользователя
tverskoy
Сообщения: 1132
Зарегистрирован: 12 сен 2011, 13:30
Operating system: Rosa 2016.1 Fresh
Откуда: Тверь

Re: Сборка RPM

Сообщение tverskoy » 17 ноя 2015, 19:37

Я правильно понял что в спеке cinnamon desktop (он собран уже)

Код: Выделить всё

%define major   4
%define girmajor   1.0
%define libname %mklibname %{name} %{major}
%define devname  %mklibname %{name} -d
%define girlib    %mklibname %{name}-gir %{girmajor}
%{name} надо заменить на названия пакетов?

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 17 ноя 2015, 20:00

tverskoy писал(а):Я правильно понял что в спеке cinnamon desktop (он собран уже)

Код: Выделить всё

%define major   4
%define girmajor   1.0
%define libname %mklibname %{name} %{major}
%define devname  %mklibname %{name} -d
%define girlib    %mklibname %{name}-gir %{girmajor}
%{name} надо заменить на названия пакетов?
%{name} заменять не надо, т.к. этот макрос задаётся тэгом Name: в спеке. Т.е. макрос %{name} как раз подставляет имя пакета. Но %{name} (или явно указанное имя пакета) надо использовать в том случае, если имя библиотеки и имя пакета совпадают. Обычно так и бывает, но не всегда. Тогда надо ориентироваться на имя библиотеки. Которое до сборки пакета может быть ещё не известно.

Макросы бывают нескольких видов.

1. Пользовательские - это всё, что указывается в спеке через %define. Например, если сделать "%define XXX Test", то дальше в спеке вместо %{XXX} будет подставляться Test.
2. Автоматические - это то, что автоматически определяется при сборке пакета. В частности, тэгу Name соответствует макрос %{name}, Version - %{version} и т.п. Самый частый пример их использования - в тэге Source.
3. Системные - это то, что прописано в macros-файлах из /etc/rpm/macros.d/ и /usr/lib/rpm/macros.d/

В строке "%define libname %mklibname %{name} %{major}" определяется пользовательский макрос libname через системный макрос %mklibname (из /usr/lib/rpm/macros.d/mandriva), вызываемый с параметрами: автоматческий макрос %{name} и пользовательский макрос %{major}.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

Аватара пользователя
tverskoy
Сообщения: 1132
Зарегистрирован: 12 сен 2011, 13:30
Operating system: Rosa 2016.1 Fresh
Откуда: Тверь

Re: Сборка RPM

Сообщение tverskoy » 17 ноя 2015, 22:56

Код: Выделить всё

==> See: 'https://abf.io/build_lists/2598994'

Executing "/usr/bin/rpmlint -T -f /builddir/build/SOURCES/cinnamon-menus.rpmlintrc /builddir/build/SRPMS/cinnamon-menus-2.8.0-1.src.rpm":
cinnamon-menus.src:18: W: macro-in-comment %{name}
cinnamon-menus.src:18: W: macro-in-comment %{name}
cinnamon-menus.src:18: W: macro-in-comment %{version}
cinnamon-menus.src:18: W: macro-in-comment %{_internal_version}
cinnamon-menus.src:20: W: macro-in-comment %{name}
cinnamon-menus.src:20: W: macro-in-comment %{version}
1 packages and 0 specfiles checked; 0 errors, 6 warnings.
Executing "/usr/bin/rpmlint -T -f /builddir/build/SOURCES/cinnamon-menus.rpmlintrc /builddir/build/RPMS/cinnamon-menus-2.8.0-1-rosa2014.1.i586.rpm /builddir/build/RPMS/libcinnamon-menu-devel-2.8.0-1-rosa2014.1.i586.rpm /builddir/build/RPMS/cinnamon-menus-debuginfo-2.8.0-1-rosa2014.1.i586.rpm":
libcinnamon-menu-devel.i586: E: zero-length (Badness: 1) /usr/lib/pkgconfig/libcinnamon-menu-3.0.pc
libcinnamon-menu-devel.i586: W: no-documentation
libcinnamon-menu-devel.i586: W: no-dependency-on libcinnamon-menu/libcinnamon-menu-libs/liblibcinnamon-menu
cinnamon-menus.i586: E: incoherent-version-in-name (Badness: 50) 3
3 packages and 0 specfiles checked; 2 errors, 2 warnings.
В общем добился что src.rpm проходит. теперь вопросы badness 1 это что?
"no-dependency-on libcinnamon-menu/libcinnamon-menu-libs/liblibcinnamon-menu" - это я так понимаю нужно альтернативные имена зависимостей задать?
спек:

Код: Выделить всё

%global enable_debugging 0
#global _internal_version f22e07d

%define api 3
%define major 0
%define libname %mklibname cinnamon-menu %{api} %{major}
%define devname %mklibname cinnamon-menu -d

Summary:  A menu system for the Cinnamon project
Name: cinnamon-menus
Version: 2.8.0
Release: %mkrel 1
License: LGPLv2+
Group: Graphical desktop/Cinnamon
URL: http://cinnamon.linuxmint.com 
# for git
# wget https://github.com/linuxmint/cinnamon-menus/tarball/%%{_internal_version} -O cinnamon-menus-%%{version}.git%%{_internal_version}.tar.gz
#Source0:        http://leigh123linux.fedorapeople.org/pub/%{name}/source/%{name}-%{version}.git%{_internal_version}.tar.gz
Source0:       %{name}-%{version}.tar.gz
#SourceGet0: https://github.com/linuxmint/%{name}/archive/%{version}.tar.gz

BuildRequires: glib2-devel
BuildRequires: pkgconfig
BuildRequires: python-devel
BuildRequires: intltool
BuildRequires: girepository-devel
BuildRequires: gnome-common

%description
cinnamon-menus is an implementation of the draft "Desktop
Menu Specification" from freedesktop.org. This package
also contains the Cinnamon menu layout configuration files,
.directory files and assorted menu related utility programs,
Python bindings, and a simple menu editor.

%package -n %{devname}
Summary: Libraries and include files for the Cinnamon menu system
Group: Development/C
Requires: %{libname} = %{version}-%{release}

%description -n %{devname}
This package provides the necessary development libraries for
writing applications that use the Cinnamon menu system.

%prep
%setup -q
NOCONFIGURE=1 ./autogen.sh

%build
%configure --disable-static \
   --enable-introspection \
%if %{enable_debugging}
   --enable-debug=yes
%else
   --enable-debug=no
%endif

%make V=1


%install
%{make_install}
find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';'

%files
%doc AUTHORS NEWS COPYING.LIB
%{_libdir}/lib*.so.*
%{_libdir}/girepository-1.0/C*-3.0.typelib

%files -n %{devname}
%{_libdir}/*.so
%{_libdir}/pkgconfig/*
%{_includedir}/cinnamon-menus-3.0
%{_datadir}/gir-1.0/C*-3.0.gir



%changelog
* Wed Oct 21 2015 joequant <joequant> 2.8.0-1.mga6
+ Revision: 893697
- upgrade to 2.8.0

* Fri Jun 26 2015 joequant <joequant> 2.6.0-1.mga6
+ Revision: 844318
- add gnome common
- upgrade to 2.6

* Wed Dec 03 2014 tmb <tmb> 2.4.0-2.mga5
+ Revision: 800483
- bump rel past testing

* Sun Nov 23 2014 joequant <joequant> 2.4.0-1.mga5
+ Revision: 798405
- upgrade to 2.4

* Wed Oct 15 2014 umeabot <umeabot> 2.2.0-5.mga5
+ Revision: 742819
- Second Mageia 5 Mass Rebuild

* Thu Sep 18 2014 umeabot <umeabot> 2.2.0-4.mga5
+ Revision: 693610
- Rebuild to fix library dependencies

* Tue Sep 16 2014 umeabot <umeabot> 2.2.0-3.mga5
+ Revision: 678398
- Mageia 5 Mass Rebuild

* Wed May 14 2014 joequant <joequant> 2.2.0-2.mga5
+ Revision: 622768
- rebuild for cauldron

* Sat Apr 19 2014 joequant <joequant> 2.2.0-1.mga5
+ Revision: 616949
- imported package cinnamon-menus


* Sat Apr 12 2014 Leigh Scott <leigh123linux@googlemail.com> - 2.2.0-1
- update to 2.2.0

* Sat Mar 22 2014 Leigh Scott <leigh123linux@googlemail.com> - 2.1-0.1.gitc740513
- inital release
ROSA Лаб. © 2015 · flag · О компании · Контакты · Условия использования · Служба поддержки · API для разработчиков · Идеи для ABF · Блог ABF
вот здесь поменял %name на %libname и добавил -n %{devname}, это правильно?

Код: Выделить всё

%package -n %{devname}
Summary: Libraries and include files for the Cinnamon menu system
Group: Development/C
Requires: %{libname} = %{version}-%{release}
чем отличается %devname от %{devname} ?

Аватара пользователя
tverskoy
Сообщения: 1132
Зарегистрирован: 12 сен 2011, 13:30
Operating system: Rosa 2016.1 Fresh
Откуда: Тверь

Re: Сборка RPM

Сообщение tverskoy » 17 ноя 2015, 23:20

Добавил в %files

Код: Выделить всё

%{_libdir}/lib*%{.api}.so.%{major}* 
Всераано ошибки лезут

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 18 ноя 2015, 04:00

tverskoy писал(а):libcinnamon-menu-devel.i586: E: zero-length (Badness: 1) /usr/lib/pkgconfig/libcinnamon-menu-3.0.pc?

В общем добился что src.rpm проходит. теперь вопросы badness 1 это что?
Тут пишет, что файл libcinnamon-menu-3.0.pc пустой. И вес этой ошибки 1. Если общий вес ошибок 50 и более, то сборка считается совсем некачественной и получает статус "ошибка сборки". Пока что с этой ошибкой ничего не надо делать
tverskoy писал(а):"no-dependency-on libcinnamon-menu/libcinnamon-menu-libs/liblibcinnamon-menu" - это я так понимаю нужно альтернативные имена зависимостей задать?
Это можно игнорировать.
tverskoy писал(а):вот здесь поменял %name на %libname и добавил -n %{devname}, это правильно?
Ага. Но в спеке не хватает определения пакета %{libname}, надо добавить. И указать, что файлы из текущей секции %files на самом деле должны принадлежать пакету %{libname}.

Код: Выделить всё

%package -n %{libname}
Summary: Shared library for the Cinnamon menu system
Group: System/Libraries

%description -n %{libname}
This package provides shared library for the Cinnamon menu system.

...

%files -n %{libname}
%doc AUTHORS NEWS COPYING.LIB
%{_libdir}/libcinnamon-menu*%{api}.so.{major}*
%{_libdir}/girepository-1.0/C*-3.0.typelib
tverskoy писал(а):чем отличается %devname от %{devname} ?
Функционально ничем. Но у нас так сложилось, что в скобки берутся макросы-переменные (например, %{name}), а не берутся макросы-команды (например, %configure и %make) и секции спека (%package, %files и т.д.). Редакторы обычно подсвечивают макросы в скобках и без скобок разным цветом, поэтому удобнее, когда за этой подсветкой есть ещё какой-то смысл. Конечно, есть ещё спеки, которые не приведены в соответствие с этим правилом, но их уже не так много (особенно по сравнению с другими дистрибутивами).
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

Аватара пользователя
tverskoy
Сообщения: 1132
Зарегистрирован: 12 сен 2011, 13:30
Operating system: Rosa 2016.1 Fresh
Откуда: Тверь

Re: Сборка RPM

Сообщение tverskoy » 20 ноя 2015, 10:41

Что-то странное на ABF у меня твориться, для i586 ошибка сборки, а для x86_64 больше 9 часов собирается

keleg
Сообщения: 5416
Зарегистрирован: 15 сен 2011, 01:58

Re: Сборка RPM

Сообщение keleg » 20 ноя 2015, 10:58

Попробуйте еще раз. Ночью были проблемы, когда добавляли несколько новых сборочных воркеров.

fedan
Сообщения: 23
Зарегистрирован: 28 ноя 2015, 19:21
Operating system: ROSA FRESH R10 Plasma x86_64
Calculate Linux x86_64
Windows 7 Ultimate x86_64

Re: Сборка RPM

Сообщение fedan » 28 ноя 2015, 20:05

Всем Добрый вечер! Хочу задать вопрос такой: Читал что %define можно задавать только в начале .spec файла. Его можно определить в произвольном месте?
Например, недавно вышел fpc 3.0.0 , у них политика такая, что после релиза компилятора, идут fixes в branches текущего релиза из trunk. Они выкладывают их в ftp://ftp.freepascal.org/pub/fpc/snapsh ... ce/fpc.zip. (копия после внесения исправлений). Версия свежесобранного компилятора определяется так: fpc -iV. Хочется в buildroot определить версию %{version} и уже её подставлять в %{_prefix}/lib/fpc/%{version}.

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 28 ноя 2015, 21:10

fedan писал(а):Всем Добрый вечер! Хочу задать вопрос такой: Читал что %define можно задавать только в начале .spec файла. Его можно определить в произвольном месте?
В произвольном месте, но до первого использования макроса.

Правильно:

Код: Выделить всё

%define oname FPC
Summary: %{oname} is a free Pascal compiler
Неправильно:

Код: Выделить всё

Summary: %{oname} is a free Pascal compiler
%define oname FPC
fedan писал(а):Например, недавно вышел fpc 3.0.0 , у них политика такая, что после релиза компилятора, идут fixes в branches текущего релиза из trunk. Они выкладывают их в ftp://ftp.freepascal.org/pub/fpc/snapsh ... ce/fpc.zip. (копия после внесения исправлений). Версия свежесобранного компилятора определяется так: fpc -iV. Хочется в buildroot определить версию %{version} и уже её подставлять в %{_prefix}/lib/fpc/%{version}.
Проблема в том, что значение макросов вычисляется до начала сборки пакета. Так что мы не можем сделать вот так, потому что до начала сборки файла fpc по указанному пути ещё не будет существовать:

Код: Выделить всё

%define fpc_version %(%{buildroot}%{_bindir}/fpc -iV)
Хотя версию текущего установленного fpc определить можем, т.к. файл уже будет существовать до начала сборки:

Код: Выделить всё

%define fpc_version %(fpc -iV)
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

fedan
Сообщения: 23
Зарегистрирован: 28 ноя 2015, 19:21
Operating system: ROSA FRESH R10 Plasma x86_64
Calculate Linux x86_64
Windows 7 Ultimate x86_64

Re: Сборка RPM

Сообщение fedan » 28 ноя 2015, 21:28

Благодарю за разъяснение.

GiuX
Сообщения: 68
Зарегистрирован: 29 окт 2012, 01:31
Operating system: RM2012.0lts

Re: Сборка RPM

Сообщение GiuX » 05 дек 2015, 18:04

Hi at all,
I'm sorry for the intrusion but I would like to build some package for Rosa that I need for my degree but I'm a newbee about rpm packaging...
Someone could help me to end this spec file?

Код: Выделить всё

%define major		XX
%define libname		%mklibname %{name} %{major}
%define develname	%mklibname -d %{name}

%global commit0 fd5de11497edd7cdb28e7eef60fa998a2ebd7f84
%global gittag0 HEAD
%global shortcommit0 %(c=%{commit0}; echo ${c:0:7})

Name:			ndn-cxx
Summary:		NDN C++ library with eXperimental eXtensions
Version:		0.4.0
Release:		1
License:		LGPLv3
Group:			System/Libraries
Url:			http://named-data.net/doc/%{name}/current/index.html
Source0:		https://github.com/named-data/%{name}/archive/%{commit0}.tar.gz#/%{name}-%{shortcommit0}.tar.gz


BuildRequires:		git
BuildRequires:		pkgconfig(sqlite3)
BuildRequires:		pkgconfig(cryptopp)
BuildRequires:		boost-devel
# BReqs for documentation
BuildRequires:		doxygen
BuildRequires:		graphviz
BuildRequires:		python-sphinx
BuildRequires:		python-pip

# Requires:			python
# Requires:			sqlite3
# Requires:			cryptopp
# Requires:			pkgconfig
# Requires(post):		ldconfig
# Requires(postun):	ldconfig


%description
ndn-cxx is a C++ library, implementing Named Data Networking (NDN) primitives
that can be used to implement various NDN applications.
The library is currently being used as part of the following projects:

* [NFD - NDN Forwarding Daemon]
* [NLSR - Named-data Link-State Routing protocol]
* [repo-ng - Next generation of NDN repository]
* [ChronoChat - Multi-user NDN chat application]
* [ChronoSync - Sync library for multiuser realtime applications for NDN]
* [ndn-tlv-ping - Ping Application For NDN]
* [ndn-traffic-generator - Traffic Generator For NDN].

#-----------------------------------------------------------------------------

%package -n		%{libname}
Summary:	Shared libraries for %{name}
Group:		System/Libraries


%description -n	%{libname}
Shared libraries for %{name}.


%files -n %{libname}
%{_libdir}/lib%{name}.so.0.3.92


#-----------------------------------------------------------------------------


%package -n     %{develname}


%description -n %{develname}
This package contains the development library and header files for the 
%{name} library.


%files -n %{develname}
%dir %{_includedir}/%{name}
%{_includedir}/%{name}/common-pch.hpp
%{_includedir}/%{name}/common.hpp
%{_includedir}/%{name}/data.hpp
%{_includedir}/%{name}/encoding/block-helpers.hpp
%{_includedir}/%{name}/encoding/block.hpp
%{_includedir}/%{name}/encoding/buffer-stream.hpp
%{_includedir}/%{name}/encoding/buffer.hpp
%{_includedir}/%{name}/encoding/cryptopp/asn_ext.hpp
%{_includedir}/%{name}/encoding/encoder.hpp
%{_includedir}/%{name}/encoding/encoding-buffer-fwd.hpp
%{_includedir}/%{name}/encoding/encoding-buffer.hpp
%{_includedir}/%{name}/encoding/endian.hpp
%{_includedir}/%{name}/encoding/estimator.hpp
%{_includedir}/%{name}/encoding/nfd-constants.hpp
%{_includedir}/%{name}/encoding/oid.hpp
%{_includedir}/%{name}/encoding/tlv-nfd.hpp
%{_includedir}/%{name}/encoding/tlv-security.hpp
%{_includedir}/%{name}/encoding/tlv.hpp
%{_includedir}/%{name}/exclude.hpp
%{_includedir}/%{name}/face.hpp
%{_includedir}/%{name}/interest-filter.hpp
%{_includedir}/%{name}/interest.hpp
%{_includedir}/%{name}/key-locator.hpp
%{_includedir}/%{name}/link.hpp
%{_includedir}/%{name}/lp/cache-policy.hpp
%{_includedir}/%{name}/lp/detail/field-decl.hpp
%{_includedir}/%{name}/lp/detail/field-info.hpp
%{_includedir}/%{name}/lp/field.hpp
%{_includedir}/%{name}/lp/fields.hpp
%{_includedir}/%{name}/lp/nack-header.hpp
%{_includedir}/%{name}/lp/nack.hpp
%{_includedir}/%{name}/lp/packet.hpp
%{_includedir}/%{name}/lp/sequence.hpp
%{_includedir}/%{name}/lp/tlv.hpp
%{_includedir}/%{name}/management/nfd-channel-status.hpp
%{_includedir}/%{name}/management/nfd-command-options.hpp
%{_includedir}/%{name}/management/nfd-control-command.hpp
%{_includedir}/%{name}/management/nfd-control-parameters.hpp
%{_includedir}/%{name}/management/nfd-control-response.hpp
%{_includedir}/%{name}/management/nfd-controller.hpp
%{_includedir}/%{name}/management/nfd-face-event-notification.hpp
%{_includedir}/%{name}/management/nfd-face-monitor.hpp
%{_includedir}/%{name}/management/nfd-face-query-filter.hpp
%{_includedir}/%{name}/management/nfd-face-status.hpp
%{_includedir}/%{name}/management/nfd-face-traits.hpp
%{_includedir}/%{name}/management/nfd-fib-entry.hpp
%{_includedir}/%{name}/management/nfd-forwarder-status.hpp
%{_includedir}/%{name}/management/nfd-local-control-header.hpp
%{_includedir}/%{name}/management/nfd-rib-entry.hpp
%{_includedir}/%{name}/management/nfd-rib-flags.hpp
%{_includedir}/%{name}/management/nfd-strategy-choice.hpp
%{_includedir}/%{name}/meta-info.hpp
%{_includedir}/%{name}/mgmt/control-parameters.hpp
%{_includedir}/%{name}/mgmt/control-response.hpp
%{_includedir}/%{name}/mgmt/dispatcher.hpp
%{_includedir}/%{name}/mgmt/status-dataset-context.hpp
%{_includedir}/%{name}/name-component.hpp
%{_includedir}/%{name}/name.hpp
%{_includedir}/%{name}/%{name}-config.hpp
%{_includedir}/%{name}/security/additional-description.hpp
%{_includedir}/%{name}/security/certificate-cache-ttl.hpp
%{_includedir}/%{name}/security/certificate-cache.hpp
%{_includedir}/%{name}/security/certificate-container.hpp
%{_includedir}/%{name}/security/certificate-extension.hpp
%{_includedir}/%{name}/security/certificate-subject-description.hpp
%{_includedir}/%{name}/security/certificate.hpp
%{_includedir}/%{name}/security/conf/checker.hpp
%{_includedir}/%{name}/security/conf/common.hpp
%{_includedir}/%{name}/security/conf/filter.hpp
%{_includedir}/%{name}/security/conf/key-locator-checker.hpp
%{_includedir}/%{name}/security/conf/rule.hpp
%{_includedir}/%{name}/security/cryptopp.hpp
%{_includedir}/%{name}/security/digest-sha256.hpp
%{_includedir}/%{name}/security/identity-certificate.hpp
%{_includedir}/%{name}/security/identity-container.hpp
%{_includedir}/%{name}/security/identity.hpp
%{_includedir}/%{name}/security/key-chain.hpp
%{_includedir}/%{name}/security/key-container.hpp
%{_includedir}/%{name}/security/key-params.hpp
%{_includedir}/%{name}/security/key.hpp
%{_includedir}/%{name}/security/openssl.hpp
%{_includedir}/%{name}/security/pib-impl.hpp
%{_includedir}/%{name}/security/pib-memory.hpp
%{_includedir}/%{name}/security/pib-sqlite3.hpp
%{_includedir}/%{name}/security/pib.hpp
%{_includedir}/%{name}/security/public-key.hpp
%{_includedir}/%{name}/security/sec-public-info-sqlite3.hpp
%{_includedir}/%{name}/security/sec-public-info.hpp
%{_includedir}/%{name}/security/sec-rule-relative.hpp
%{_includedir}/%{name}/security/sec-rule-specific.hpp
%{_includedir}/%{name}/security/sec-rule.hpp
%{_includedir}/%{name}/security/sec-tpm-file.hpp
%{_includedir}/%{name}/security/sec-tpm.hpp
%{_includedir}/%{name}/security/secured-bag.hpp
%{_includedir}/%{name}/security/security-common.hpp
%{_includedir}/%{name}/security/signature-sha256-with-ecdsa.hpp
%{_includedir}/%{name}/security/signature-sha256-with-rsa.hpp
%{_includedir}/%{name}/security/signing-helpers.hpp
%{_includedir}/%{name}/security/signing-info.hpp
%{_includedir}/%{name}/security/validation-request.hpp
%{_includedir}/%{name}/security/validator-config.hpp
%{_includedir}/%{name}/security/validator-null.hpp
%{_includedir}/%{name}/security/validator-regex.hpp
%{_includedir}/%{name}/security/validator.hpp
%{_includedir}/%{name}/security/validity-period.hpp
%{_includedir}/%{name}/selectors.hpp
%{_includedir}/%{name}/signature-info.hpp
%{_includedir}/%{name}/signature.hpp
%{_includedir}/%{name}/tag-host.hpp
%{_includedir}/%{name}/tag.hpp
%{_includedir}/%{name}/transport/stream-transport.hpp
%{_includedir}/%{name}/transport/tcp-transport.hpp
%{_includedir}/%{name}/transport/transport.hpp
%{_includedir}/%{name}/transport/unix-transport.hpp
%{_includedir}/%{name}/util/backports.hpp
%{_includedir}/%{name}/util/command-interest-generator.hpp
%{_includedir}/%{name}/util/command-interest-validator.hpp
%{_includedir}/%{name}/util/concepts.hpp
%{_includedir}/%{name}/util/config-file.hpp
%{_includedir}/%{name}/util/crypto.hpp
%{_includedir}/%{name}/util/digest.hpp
%{_includedir}/%{name}/util/dns.hpp
%{_includedir}/%{name}/util/dummy-client-face.hpp
%{_includedir}/%{name}/util/ethernet.hpp
%{_includedir}/%{name}/util/face-uri.hpp
%{_includedir}/%{name}/util/in-memory-storage-entry.hpp
%{_includedir}/%{name}/util/in-memory-storage-fifo.hpp
%{_includedir}/%{name}/util/in-memory-storage-lfu.hpp
%{_includedir}/%{name}/util/in-memory-storage-lru.hpp
%{_includedir}/%{name}/util/in-memory-storage-persistent.hpp
%{_includedir}/%{name}/util/in-memory-storage.hpp
%{_includedir}/%{name}/util/indented-stream.hpp
%{_includedir}/%{name}/util/io.hpp
%{_includedir}/%{name}/util/monotonic_deadline_timer.hpp
%{_includedir}/%{name}/util/network-monitor.hpp
%{_includedir}/%{name}/util/notification-stream.hpp
%{_includedir}/%{name}/util/notification-subscriber.hpp
%{_includedir}/%{name}/util/random.hpp
%{_includedir}/%{name}/util/regex.hpp
%{_includedir}/%{name}/util/regex/regex-backref-manager.hpp
%{_includedir}/%{name}/util/regex/regex-backref-matcher.hpp
%{_includedir}/%{name}/util/regex/regex-component-matcher.hpp
%{_includedir}/%{name}/util/regex/regex-component-set-matcher.hpp
%{_includedir}/%{name}/util/regex/regex-matcher.hpp
%{_includedir}/%{name}/util/regex/regex-pattern-list-matcher.hpp
%{_includedir}/%{name}/util/regex/regex-pseudo-matcher.hpp
%{_includedir}/%{name}/util/regex/regex-repeat-matcher.hpp
%{_includedir}/%{name}/util/regex/regex-top-matcher.hpp
%{_includedir}/%{name}/util/scheduler-scoped-event-id.hpp
%{_includedir}/%{name}/util/scheduler.hpp
%{_includedir}/%{name}/util/segment-fetcher.hpp
%{_includedir}/%{name}/util/signal-connection.hpp
%{_includedir}/%{name}/util/signal-emit.hpp
%{_includedir}/%{name}/util/signal-scoped-connection.hpp
%{_includedir}/%{name}/util/signal-signal.hpp
%{_includedir}/%{name}/util/signal.hpp
%{_includedir}/%{name}/util/sqlite3-statement.hpp
%{_includedir}/%{name}/util/string-helper.hpp
%{_includedir}/%{name}/util/time-custom-clock.hpp
%{_includedir}/%{name}/util/time-unit-test-clock.hpp
%{_includedir}/%{name}/util/time.hpp
%{_includedir}/%{name}/version.hpp
%{_libdir}/lib%{name}.so
%{_libdir}/pkgconfig/lib%{name}.pc


#-----------------------------------------------------------------------------


%package -n	%{name}-tools


%files -n %{name}-tools
%dir %{_sysconfdir}/ndn
%{_sysconfdir}/ndn/client.conf.sample
%{_bindir}/ndncatchunks3
%{_bindir}/ndnputchunks3
%{_bindir}/ndnsec
%{_bindir}/ndnsec-cert-dump
%{_bindir}/ndnsec-cert-gen
%{_bindir}/ndnsec-cert-install
%{_bindir}/ndnsec-cert-revoke
%{_bindir}/ndnsec-certgen
%{_bindir}/ndnsec-delete
%{_bindir}/ndnsec-dsk-gen
%{_bindir}/ndnsec-dskgen
%{_bindir}/ndnsec-dump-certificate
%{_bindir}/ndnsec-export
%{_bindir}/ndnsec-get-default
%{_bindir}/ndnsec-import
%{_bindir}/ndnsec-install-cert
%{_bindir}/ndnsec-key-gen
%{_bindir}/ndnsec-keygen
%{_bindir}/ndnsec-list
%{_bindir}/ndnsec-ls-identity
%{_bindir}/ndnsec-op-tool
%{_bindir}/ndnsec-operator-tool
%{_bindir}/ndnsec-set-acl
%{_bindir}/ndnsec-set-default
%{_bindir}/ndnsec-sig-verify
%{_bindir}/ndnsec-sign-req
%{_bindir}/ndnsec-unlock-tpm
%{_bindir}/tlvdump
%{_mandir}/man1/ndnsec-cert-dump.1.xz
%{_mandir}/man1/ndnsec-cert-gen.1.xz
%{_mandir}/man1/ndnsec-cert-instal.1.xz
%{_mandir}/man1/ndnsec-cert-revoke.1.xz
%{_mandir}/man1/ndnsec-delete.1.xz
%{_mandir}/man1/ndnsec-export.1.xz
%{_mandir}/man1/ndnsec-get-default.1.xz
%{_mandir}/man1/ndnsec-import.1.xz
%{_mandir}/man1/ndnsec-key-gen.1.xz
%{_mandir}/man1/ndnsec-list.1.xz
%{_mandir}/man1/ndnsec-set-acl.1.xz
%{_mandir}/man1/ndnsec-set-default.1.xz
%{_mandir}/man1/ndnsec-sign-req.1.xz
%{_mandir}/man1/ndnsec-unlock-tpm.1.xz
%{_mandir}/man1/ndnsec.1.xz
%{_mandir}/man1/tlvdump.1.xz
%{_mandir}/man5/ndn-client.conf.5.xz
%{_mandir}/man5/ndnsec-validator.conf.5.xz


%prep
%setup -qn %{name}-%{commit0}


%build
CXXFLAGS="-O2" ./waf configure --prefix=%{buildroot}%{_prefix} \
	--destdir=%{buildroot} \
	--exec-prefix=%{buildroot}%{_prefix} \
	--sysconfdir=%{buildroot}%{_sysconfdir} \
	--localstatedir=%{buildroot}%{_localstatedir} \
	--with-examples \
	--disable-static \
	--enable-shared

# # Full set of documentation (tutorials + API) in build/docs
# ./waf docs
# 
# # Only tutorials in `build/docs`
# ./waf sphinx
# 
# # Only API docs in `build/docs/doxygen`
# ./waf doxygen
./waf


%install
./waf install


#%%pre -p ldconfig


#%%post -p /sbin/ldconfig


#%%postun -p /sbin/ldconfig
Thanks a lot for the help ;)

Аватара пользователя
VictorR2007
Сообщения: 5848
Зарегистрирован: 12 сен 2011, 13:00
Operating system: ROSA 2016.1
Откуда: Северодвинск

Re: Сборка RPM

Сообщение VictorR2007 » 05 дек 2015, 20:47

А существует ли способ заменить в исходниках, во вложенном архиве, один файл в иерархии каталогов.
Или просто добавить туда папку со вложенной иерархией.
В смысле, командой в спеке.
Например, в пакете есть архив UMS-5.1.0-Java7.tgz
который распаковывается при сборке.
В нём есть архив ums.jar.
В нём есть файл /resources/i18n/messages_ru.properties
который нужно заменить.
Можно заменить до сборки, если собирать локально.
Но вдруг есть возможность это сделать через спек.
Хотелось, что-бы всё было правильно.

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 06 дек 2015, 15:15

GiuX писал(а):%define major XX
%define libname %mklibname %{name} %{major}
...
%files -n %{libname}
%{_libdir}/lib%{name}.so.0.3.92
major should be 0, 0.3 or 0.3.92 here. Not XX. You need to use objdump command to check major version value.

For example, let's check libXext.so.6.4.0:

Код: Выделить всё

$ objdump -x /usr/lib/libXext.so.6.4.0 | grep SONAME
  SONAME               libXext.so.6
major is 6 here. Usually major is X in lib*.so.X.Y.Z. But sometimes it's X.Y or whole X.Y.Z.

You need to use major macro in %files for library to be sure you have libndn-cxx.so.0* in libndn-cxx0/lib64ndn-cxx0 package:

Код: Выделить всё

%{_libdir}/lib%{name}.so.%{major}*
GiuX писал(а):# Requires: python
# Requires: sqlite3
# Requires: cryptopp
# Requires: pkgconfig
# Requires(post): ldconfig
# Requires(postun): ldconfig
Just drop these. No need to keep them commented out.
GiuX писал(а):%package -n %{name}-tools
...
%files -n %{name}-tools
It's enough to use just

Код: Выделить всё

%package tools
...
%files tools
"%package tools" does the same as "%package -n %{name}-tools". Option -n is needed when we don't want to have %{name}- part in package name.
GiuX писал(а):#%%pre -p ldconfig
#%%post -p /sbin/ldconfig
#%%postun -p /sbin/ldconfig
Drop these. RPM in Rosa autoruns ldconfig when it's needed.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 06 дек 2015, 15:19

VictorR2007 писал(а):А существует ли способ заменить в исходниках, во вложенном архиве, один файл в иерархии каталогов.
Или просто добавить туда папку со вложенной иерархией.
В смысле, командой в спеке.
Например, в пакете есть архив UMS-5.1.0-Java7.tgz
который распаковывается при сборке.
В нём есть архив ums.jar.
В нём есть файл /resources/i18n/messages_ru.properties
который нужно заменить.
Можно заменить до сборки, если собирать локально.
Но вдруг есть возможность это сделать через спек.
Хотелось, что-бы всё было правильно.
Теоретически можно, но как правильно работать с jar-файлами я не знаю, т.к. от Java очень далёк. :oops:
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

GiuX
Сообщения: 68
Зарегистрирован: 29 окт 2012, 01:31
Operating system: RM2012.0lts

Re: Сборка RPM

Сообщение GiuX » 06 дек 2015, 18:54

Pulfer писал(а):
GiuX писал(а):%define major XX
%define libname %mklibname %{name} %{major}
...
%files -n %{libname}
%{_libdir}/lib%{name}.so.0.3.92
major should be 0, 0.3 or 0.3.92 here. Not XX. You need to use objdump command to check major version value.

For example, let's check libXext.so.6.4.0:

Код: Выделить всё

$ objdump -x /usr/lib/libXext.so.6.4.0 | grep SONAME
  SONAME               libXext.so.6
major is 6 here. Usually major is X in lib*.so.X.Y.Z. But sometimes it's X.Y or whole X.Y.Z.

You need to use major macro in %files for library to be sure you have libndn-cxx.so.0* in libndn-cxx0/lib64ndn-cxx0 package:

Код: Выделить всё

%{_libdir}/lib%{name}.so.%{major}*
GiuX писал(а):# Requires: python
# Requires: sqlite3
# Requires: cryptopp
# Requires: pkgconfig
# Requires(post): ldconfig
# Requires(postun): ldconfig
Just drop these. No need to keep them commented out.
GiuX писал(а):%package -n %{name}-tools
...
%files -n %{name}-tools
It's enough to use just

Код: Выделить всё

%package tools
...
%files tools
"%package tools" does the same as "%package -n %{name}-tools". Option -n is needed when we don't want to have %{name}- part in package name.
GiuX писал(а):#%%pre -p ldconfig
#%%post -p /sbin/ldconfig
#%%postun -p /sbin/ldconfig
Drop these. RPM in Rosa autoruns ldconfig when it's needed.
Thanks,
with these suggests I'm be able to build on my machine, but when I try to build on ABF this returns me an error, and I cannot understand why... This is the new spec...

Код: Выделить всё

%define major		0.3.4
%define libname		%mklibname %{name} %{major}
%define develname	%mklibname -d %{name}

%global commit0 157e225c8923f6ea1a4cd71462f712df9ba57726
%global gittag0 HEAD
%global shortcommit0 %(c=%{commit0}; echo ${c:0:7})

Name:			ndn-cxx
Summary:		NDN C++ library with eXperimental eXtensions
Version:		0.3.4
Release:		1
License:		LGPLv3
Group:			System/Libraries
Url:			http://named-data.net/doc/%{name}/current/index.html
Source0:		https://github.com/named-data/%{name}/archive/%{commit0}.tar.gz#/%{name}-%{shortcommit0}.tar.gz

Source100:		%{name}.rpmlintrc

BuildRequires:		coreutils
BuildRequires:		git
BuildRequires:		pkgconfig(sqlite3)
BuildRequires:		pkgconfig(cryptopp)
BuildRequires:		pkgconfig(libssl)
BuildRequires:		boost-devel
# BReqs for documentation
BuildRequires:		doxygen
BuildRequires:		graphviz
BuildRequires:		python-sphinx
BuildRequires:		python-pip


%description
ndn-cxx is a C++ library, implementing Named Data Networking (NDN) primitives
that can be used to implement various NDN applications.
The library is currently being used as part of the following projects:

* [NFD - NDN Forwarding Daemon]
* [NLSR - Named-data Link-State Routing protocol]
* [repo-ng - Next generation of NDN repository]
* [ChronoChat - Multi-user NDN chat application]
* [ChronoSync - Sync library for multiuser realtime applications for NDN]
* [ndn-tlv-ping - Ping Application For NDN]
* [ndn-traffic-generator - Traffic Generator For NDN].

#-----------------------------------------------------------------------------

%package -n		%{libname}
Summary:	Shared libraries for %{name}
Group:		System/Libraries


%description -n	%{libname}
Shared libraries for %{name}.


%files -n %{libname}
%{_libdir}/*.so.*
%dir %{_datadir}/%{name}
%{_datadir}/%{name}/README.md
%{_datadir}/%{name}/AUTHORS.md
%{_datadir}/%{name}/COPYING.md

#-----------------------------------------------------------------------------

%package -n     %{develname}
Summary:	Development headers for %{name}
Group:		Development/Other

%description -n %{develname}
Development headers of NDN C++ library with eXperimental eXtensions.


%files -n %{develname}
%dir %{_includedir}/%{name}
%{_includedir}/%{name}/*
%{_libdir}/*.so
%{_libdir}/pkgconfig/*

#-----------------------------------------------------------------------------

%package tools
Summary:	Utilities for %{name}
Group:		Development/Other
Requires:	%{libname} = %{version}

%description tools
Development utilities of NDN C++ library with eXperimental eXtensions.

%files tools
%dir %{_sysconfdir}/ndn
%{_sysconfdir}/ndn/client.conf.sample
%{_bindir}/*
%{_mandir}/man1/*
%{_mandir}/man5/*

#-----------------------------------------------------------------------------

%prep
%setup -qn %{name}-%{commit0}


%build
./waf configure --prefix=%{_prefix} \
	--exec-prefix=%{_prefix} \
	--sysconfdir=%{_sysconfdir} \
	--localstatedir=%{_localstatedir} \
	--with-examples \
	--with-debug \
	--disable-static \
	--enable-shared

# # Full set of documentation (tutorials + API) in build/docs
# ./waf docs
# 
# # Only tutorials in `build/docs`
# ./waf sphinx
# 
# # Only API docs in `build/docs/doxygen`
# ./waf doxygen
./waf build


%install
./waf install --destdir=%{buildroot}
mkdir %{buildroot}%{_datadir}/%{name}
install -m u=rw,go=r,a-s -t %{buildroot}%{_datadir}/%{name} ./AUTHORS.md
install -m u=rw,go=r,a-s -t %{buildroot}%{_datadir}/%{name} ./README.md
install -m u=rw,go=r,a-s -t %{buildroot}%{_datadir}/%{name} ./COPYING.md

GiuX
Сообщения: 68
Зарегистрирован: 29 окт 2012, 01:31
Operating system: RM2012.0lts

Re: Сборка RPM

Сообщение GiuX » 06 дек 2015, 19:36

Now, ABF as builded the rpm for x64 platform... but there something strange with naming of the packages... the library package is named lib64ndn-cxx0.3.4-0.3.4-1-rosa2014.1.x86_64.rpm :O

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 07 дек 2015, 04:19

GiuX писал(а):Now, ABF as builded the rpm for x64 platform... but there something strange with naming of the packages... the library package is named lib64ndn-cxx0.3.4-0.3.4-1-rosa2014.1.x86_64.rpm :O
That's correct package name, because:

Код: Выделить всё

Provides: libndn-cxx.so.0.3.4()(64bit)
I don't know why they decided to use such SONAME (not only major (X), but also minor (Y) and micro (Z) versions). Maybe because ABI is really unstable and 0.3.5 won't be backwards compatible with 0.3.4. But package name is correct.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

GiuX
Сообщения: 68
Зарегистрирован: 29 окт 2012, 01:31
Operating system: RM2012.0lts

Re: Сборка RPM

Сообщение GiuX » 07 дек 2015, 04:25

Really the spec file is a build of mine at all, I've set the major macro so because the build system returns me a warning for an incorrect version in name :(
However, I don't know if it's sure if I tried to install the package on my system... It's my default system :P There's something that could go bad?

GiuX
Сообщения: 68
Зарегистрирован: 29 окт 2012, 01:31
Operating system: RM2012.0lts

Re: Сборка RPM

Сообщение GiuX » 07 дек 2015, 04:27

In sense if uninstalling the packages could let garbage?

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 08 дек 2015, 09:56

GiuX писал(а):However, I don't know if it's sure if I tried to install the package on my system... It's my default system :P There's something that could go bad?

In sense if uninstalling the packages could let garbage?
It should be safe to install and uninstall packages.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

GiuX
Сообщения: 68
Зарегистрирован: 29 окт 2012, 01:31
Operating system: RM2012.0lts

Re: Сборка RPM

Сообщение GiuX » 08 дек 2015, 18:37

Thanks ;)
However, I'm trying to rebuild the package with the same spec file and now it returns me that it cannot find the pkgconfig(sqlite3), but lib64sqlite3-devel is correctly installed... Also in ABF doesn't build anymore...

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 08 дек 2015, 19:38

GiuX писал(а):Thanks ;)
However, I'm trying to rebuild the package with the same spec file and now it returns me that it cannot find the pkgconfig(sqlite3), but lib64sqlite3-devel is correctly installed... Also in ABF doesn't build anymore...
Thanx for reporting, it's a bug in sqlite 3.9.2-1. It's fixed in 3.9.2-2 build.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

GiuX
Сообщения: 68
Зарегистрирован: 29 окт 2012, 01:31
Operating system: RM2012.0lts

Re: Сборка RPM

Сообщение GiuX » 08 дек 2015, 19:55

Thanks for you that have built a great distro ;) I've used Ubuntu for a month (under contrition :P) and I'm runnaway from it... :P

GiuX
Сообщения: 68
Зарегистрирован: 29 окт 2012, 01:31
Operating system: RM2012.0lts

Re: Сборка RPM

Сообщение GiuX » 08 дек 2015, 21:10

Pulfer писал(а):
GiuX писал(а):Thanks ;)
However, I'm trying to rebuild the package with the same spec file and now it returns me that it cannot find the pkgconfig(sqlite3), but lib64sqlite3-devel is correctly installed... Also in ABF doesn't build anymore...
Thanx for reporting, it's a bug in sqlite 3.9.2-1. It's fixed in 3.9.2-2 build.
Can I ask you a help for right writing of a spec file? Could you tell me if there's something wrong in this spec? In this case I've to launch some code in %pre and in %post and I don't want to make errors... Thanks a lot... ;)

Код: Выделить всё

%define major		0.3.4

%global commit0 d4ecf094bf32dd88ffc939475ec85719eaef1b17
%global gittag0 refs/tags/0.3.4
%global shortcommit0 %(c=%{commit0}; echo ${c:0:7})

%global commit1 ac5d7ea5af9734de965688b54a7860259887b537
%global gittag1 refs/tags/0.5.1
%global shortcommit1 %(c=%{commit1}; echo ${c:0:7})

Name:			nfd
Summary:		NFD - Named Data Networking Forwarding Daemon
Version:		0.3.4
Release:		1
License:		LGPLv3
Group:			Networking/Other
Url:			http://named-data.net/doc/%{name}/current/index.html
Source0:		https://github.com/named-data/%{name}/archive/%{commit0}.tar.gz#/%{name}-%{shortcommit0}.tar.gz
Source1:		https://github.com/zaphoyd/websocketpp/archive/%{commit1}.tar.gz#/%{name}-%{shortcommit1}.tar.gz

# Source100:		%%{name}.rpmlintrc

BuildRequires:		coreutils
BuildRequires:		pkgconfig(python)
BuildRequires:		pkgconfig(libndn-cxx)
BuildRequires:		boost-devel
BuildRequires:		pcap-devel
# BReqs for documentation
BuildRequires:		doxygen
BuildRequires:		graphviz
BuildRequires:		python-sphinx
BuildRequires:		python-pip


%description
NFD is a network forwarder that implements and evolves together with the 
Named Data Networking (NDN) protocol.

#-----------------------------------------------------------------------------

%package task
Summary:	NFD and all related daemons
Group:		Networking/Other
Requires:	daemon = %{version}
Requires:	status-http-server = %{version}
Requires:	autoreg = %{version}
Requires:	ndn-autoconfig-server = %{version}

%description task
This package install NFD and all related daemon
(nfd-status-http-server, nfd-autoreg, ndn-autoconfig-server).

%files task
%{_mandir}/man1/*
%{_datadir}/ndn/*

#-----------------------------------------------------------------------------

%package daemon
Summary:	NFD - Named Data Networking Forwarding Daemon
Group:		Networking/Other


%description daemon
NFD is a network forwarder that implements and evolves together with the 
Named Data Networking (NDN) protocol.


%files daemon
%{_bindir}/nfd
%{_bindir}/nfd-start
%{_bindir}/nfd-stop
%{_bindir}/nfd-status
%{_bindir}/nfdc
%{_bindir}/nrd

#-----------------------------------------------------------------------------

%package status-http-server
Summary:	NFD HTTP status server
Group:		Networking/Other
Requires:	daemon = %{version}

%description status-http-server
NFD HTTP status server.

%files status-http-server
%{_bindir}/nfd-status-http-server

#-----------------------------------------------------------------------------

%package autoreg
Summary:	NFD autoreg server
Group:		Networking/Other
Requires:	daemon = %{version}

%description autoreg
NFD autoreg server.

%files autoreg
%{_bindir}/nfd-autoreg

#-----------------------------------------------------------------------------

%package -n ndn-autoconfig-server
Summary:	NDN autoconfig server
Group:		Networking/Other
Requires:	daemon = %{version}

%description -n ndn-autoconfig-server
NDN autoconfig server.

%files -n ndn-autoconfig-server
%{_bindir}/ndn-autoconfig*

#-----------------------------------------------------------------------------

%prep
%setup -qn NFD-%{commit0} -a 1
rmdir websocketpp
mv -f websocketpp-%{commit1} websocketpp


%build
./waf configure --prefix=%{_prefix} \
	--sysconfdir=%{_sysconfdir} \
	--localstatedir=%{_localstatedir} \
	--with-test \
	--with-debug \

# # Full set of documentation (tutorials + API) in build/docs
# ./waf docs
# 
# # Only tutorials in `build/docs`
# ./waf sphinx
# 
# # Only API docs in `build/docs/doxygen`
# ./waf doxygen
./waf build


%install
./waf install --destdir=%{buildroot}
# mkdir %%{buildroot}%%{_datadir}/%%{name}
# install -m u=rw,go=r,a-s -t %%{buildroot}%%{_datadir}/%%{name} ./AUTHORS.md
# install -m u=rw,go=r,a-s -t %%{buildroot}%%{_datadir}/%%{name} ./README.md
# install -m u=rw,go=r,a-s -t %%{buildroot}%%{_datadir}/%%{name} ./COPYING.md

%pre
set -e
if ! getent group ndn >/dev/null; then
# Adding system group: ndn.
addgroup --system ndn >/dev/null
fi

# creating ndn user if he isn't already there
if ! getent passwd ndn >/dev/null; then
# Adding system user: ndn.
adduser \
	--system \
	--disabled-login \
	--ingroup ndn \
	--home /nonexistent \
	--gecos "NDN User" \
	--shell /bin/false \
	ndn  >/dev/null
fi

%post
if [ "$1" != "configure" ]; then
	exit 0
fi

# Create log folder
mkdir -p "/var/log/ndn"

# Create HOME and generate self-signed NDN certificate
mkdir -p "/var/lib/ndn/nfd/.ndn"

(
	export HOME="/var/lib/ndn/nfd"
	if [ -z "$(ndnsec-get-default)" ]; then
		ndnsec-keygen "/localhost/daemons/nfd" | ndnsec-install-cert -
	fi

	mkdir -p "/etc/ndn/certs"
	ndnsec-dump-certificate -i "$(ndnsec-get-default)" > \
		"/etc/ndn/certs/localhost_daemons_nfd.ndncert"
)

chown -R ndn:ndn "/var/lib/ndn/nfd"

%postun
#remove the ndn user and group
userdel -r ndn
groupdel ndn

#remove the HOME
rm -r "/var/lib/ndn/nfd"
rm -r "/var/log/ndn"
rm -r "/etc/ndn/certs"

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 08 дек 2015, 21:39

GiuX писал(а):Can I ask you a help for right writing of a spec file? Could you tell me if there's something wrong in this spec? In this case I've to launch some code in %pre and in %post and I don't want to make errors... Thanks a lot... ;)
In general it seems to be good. But there are parts that can be done in a better way. Please ping this topic tomorrow in case I forget to write about it. Today it's too late for me, I have to go.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

GiuX
Сообщения: 68
Зарегистрирован: 29 окт 2012, 01:31
Operating system: RM2012.0lts

Re: Сборка RPM

Сообщение GiuX » 08 дек 2015, 22:03

Okok, thanks a lot for reply ;)

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 10 дек 2015, 16:10

GiuX писал(а):%pre
set -e
if ! getent group ndn >/dev/null; then
# Adding system group: ndn.
addgroup --system ndn >/dev/null
fi

# creating ndn user if he isn't already there
if ! getent passwd ndn >/dev/null; then
# Adding system user: ndn.
adduser \
--system \
--disabled-login \
--ingroup ndn \
--home /nonexistent \
--gecos "NDN User" \
--shell /bin/false \
ndn >/dev/null
fi
There are rpm macros used to add and remove users:

Код: Выделить всё

%_pre_useradd ndn /nonexistent /bin/false

%_postun_userdel ndn
And groups:

Код: Выделить всё

%_pre_groupadd ndn ndn

%_postun_groupdel ndn
These scripts are stored in /usr/share/rpm-helper, you may want to check their sources to learn what exactly they do.
GiuX писал(а):# Create log folder
mkdir -p "/var/log/ndn"
It's better to avoid creating and removing files in %post/%postun scripts. I suggest to do in in %install section:

Код: Выделить всё

%install
...
mkdir -p %{buildroot}%{_var}/log/ndn
...
mkdir -p %{buildroot}%{_var}/lib/ndn/nfd/.ndn
And own these dirs in %files:

Код: Выделить всё

%files
%dir %{_var}/log/ndn
%dir %attr(0755,ndn,ndn) %{_var}/lib/ndn/nfd/
Please note that you should have %files section (even empty) to produce a package.

Also note that it's recommended to add "Requires(post):", "Requires(pre):" and so on for commands used in %post, %pre etc parts.

For example, for %_pre_useradd and %_postun_userdel we need:

Код: Выделить всё

Requires(pre,postun): rpm-helper
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

GiuX
Сообщения: 68
Зарегистрирован: 29 окт 2012, 01:31
Operating system: RM2012.0lts

Re: Сборка RPM

Сообщение GiuX » 12 дек 2015, 05:29

Pulfer писал(а):
GiuX писал(а):%pre
set -e
if ! getent group ndn >/dev/null; then
# Adding system group: ndn.
addgroup --system ndn >/dev/null
fi

# creating ndn user if he isn't already there
if ! getent passwd ndn >/dev/null; then
# Adding system user: ndn.
adduser \
--system \
--disabled-login \
--ingroup ndn \
--home /nonexistent \
--gecos "NDN User" \
--shell /bin/false \
ndn >/dev/null
fi
There are rpm macros used to add and remove users:

Код: Выделить всё

%_pre_useradd ndn /nonexistent /bin/false

%_postun_userdel ndn
And groups:

Код: Выделить всё

%_pre_groupadd ndn ndn

%_postun_groupdel ndn
These scripts are stored in /usr/share/rpm-helper, you may want to check their sources to learn what exactly they do.
GiuX писал(а):# Create log folder
mkdir -p "/var/log/ndn"
It's better to avoid creating and removing files in %post/%postun scripts. I suggest to do in in %install section:

Код: Выделить всё

%install
...
mkdir -p %{buildroot}%{_var}/log/ndn
...
mkdir -p %{buildroot}%{_var}/lib/ndn/nfd/.ndn
And own these dirs in %files:

Код: Выделить всё

%files
%dir %{_var}/log/ndn
%dir %attr(0755,ndn,ndn) %{_var}/lib/ndn/nfd/
Please note that you should have %files section (even empty) to produce a package.

Also note that it's recommended to add "Requires(post):", "Requires(pre):" and so on for commands used in %post, %pre etc parts.

For example, for %_pre_useradd and %_postun_userdel we need:

Код: Выделить всё

Requires(pre,postun): rpm-helper
Thanks a lot for teaching ;)

Аватара пользователя
Buagir
Сообщения: 12
Зарегистрирован: 15 дек 2015, 17:51
Operating system: ROSA Desktop Fresh
Откуда: Липецк
Контактная информация:

Re: Сборка RPM

Сообщение Buagir » 21 дек 2015, 20:44

Люди научите простого смертного собирать пакеты .rpm Есть много свободного времени и желание освоить это дело но нет навыков.
Изображение
Изображение

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 21 дек 2015, 21:36

Buagir писал(а):Люди научите простого смертного собирать пакеты .rpm Есть много свободного времени и желание освоить это дело но нет навыков.
Думаю, стоит с вот этой статьи начать: http://tigro.info/wp/?p=287

Она старая, но в целом всё ещё актуальная. А далее уже можно будет задавать конкретные вопросы, когда они будут возникать.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

Аватара пользователя
Nemial
Сообщения: 600
Зарегистрирован: 13 дек 2014, 17:06
Operating system: ROSA Linux
Откуда: Калининград

Re: Сборка RPM

Сообщение Nemial » 14 янв 2016, 17:18

У меня вопрос, а как собирать пакеты в abf. Ну то есть нужно ли класть исходники рядом со spec файлом, или он сам будет их выкачивать в процессе сборки?
AMD FX-8350\AMD Radeon R9 290\ 16 G RAM

DrXank
Сообщения: 282
Зарегистрирован: 16 окт 2015, 10:51
Operating system: ROSA Desktop Fresh R7

Re: Сборка RPM

Сообщение DrXank » 14 янв 2016, 17:28

Nemial писал(а):У меня вопрос, а как собирать пакеты в abf. Ну то есть нужно ли класть исходники рядом со spec файлом, или он сам будет их выкачивать в процессе сборки?
Можно закачать сюда http://file-store.rosalinux.ru/
а в .abf.yml прописать имя файла и его хеш сумму (после загрузки вым сайт сам выдаст её)
пример

Код: Выделить всё

sources:
  sqlitebrowser-3.8.0.tar.gz: 466ef6692c569e2e95158fcb6ac8a4f6ea38fc6f
А также он и сам будет скачивать, только в .spec надо прописать ссылку для скачивания.
пример

Код: Выделить всё

Source0:    нттр//ссылка
Но рекомендуют по первому варианту.
Изображение

Xakep
Сообщения: 237
Зарегистрирован: 23 окт 2015, 17:45
Operating system: Linux ROSA Fresh R6
Win XP SP2
Win 10 Ent

Re: Сборка RPM

Сообщение Xakep » 14 янв 2016, 17:42

Nemial писал(а):У меня вопрос, а как собирать пакеты в abf. Ну то есть нужно ли класть исходники рядом со spec файлом, или он сам будет их выкачивать в процессе сборки?
Почитай вот тут - http://wiki.rosalab.ru/ru/index.php/%D0 ... 0%A1%D0%95
О, сколько нам открытий чудных готовит Microsoft’а дух, и Intel - сын ошибок трудных, и Borland - Paradox’ов друг...

Аватара пользователя
Nemial
Сообщения: 600
Зарегистрирован: 13 дек 2014, 17:06
Operating system: ROSA Linux
Откуда: Калининград

Re: Сборка RPM

Сообщение Nemial » 18 янв 2016, 22:22

Захотелось мне собрать btrfs-tool 4.1.2, взял клонировал себе проект, поправил спек, добавил исходник и возникла ошибка в сборке может кто поможет, что это такое?

Код: Выделить всё

Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.11592

+ umask 022
+ cd /builddir/build/BUILD
+ cd btrfs-progs-v4.1.2
+ '[' 1 -eq 1 ']'

+ '[' 1 -eq 1 ']'
+ CFLAGS='-O2 -Wa,--compress-debug-sections -gdwarf-4 -fvar-tracking-assignments -frecord-gcc-switches -Wstrict-aliasing=2 -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -ffat-lto-objects -fno-delete-null-pointer-checks -fstack-protector --param=ssp-buffer-size=4 -fPIC'
+ export CFLAGS
+ CXXFLAGS='-O2 -Wa,--compress-debug-sections -gdwarf-4 -fvar-tracking-assignments -frecord-gcc-switches -Wstrict-aliasing=2 -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -ffat-lto-objects -fno-delete-null-pointer-checks -fstack-protector --param=ssp-buffer-size=4 -fPIC'
+ export CXXFLAGS
+ FFLAGS='-O2 -Wa,--compress-debug-sections -gdwarf-4 -fvar-tracking-assignments -frecord-gcc-switches -Wstrict-aliasing=2 -pipe -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -ffat-lto-objects -fno-delete-null-pointer-checks -fstack-protector --param=ssp-buffer-size=4 -fPIC'
+ export FFLAGS
+ LDFLAGS=' -Wl,--as-needed -Wl,--no-undefined -Wl,-z,now -Wl,-z,relro -Wl,-O1 -Wl,--build-id -Wl,--enable-new-dtags -Wl,--hash-style=gnu'
+ export LDFLAGS

+ CONFIGURE_TOP=.
+ /usr/lib/rpm/mandriva/force-as-needed-for-shared-lib-in-libtool
+ /usr/lib/rpm/mandriva/drop-ld-no-undefined-for-shared-lib-modules-in-libtool

+ /usr/lib/rpm/mandriva/fix-libtool-ltmain-from-overlinking

+ /usr/lib/rpm/mandriva/fix-libtool-from-moving-options-after-libs .

+ /usr/lib/rpm/mandriva/fix-dlsearch-path-in-libtool-for-multilib . lib64

+ '[' -f ./configure.in -o -f ./configure.ac ']'

+ CONFIGURE_XPATH='--x-includes=/usr/include --x-libraries=/usr/lib64'

+ ./configure --build=x86_64-unknown-linux-gnu --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/lib64 --localstatedir=/var --sharedstatedir=/usr/com --mandir=/usr/share/man --infodir=/usr/share/info --x-includes=/usr/include --x-libraries=/usr/lib64

RPM build errors:

/var/tmp/rpm-tmp.11592: line 45: ./configure: No such file or directory

error: Bad exit status from /var/tmp/rpm-tmp.11592 (%build)

    Bad exit status from /var/tmp/rpm-tmp.11592 (%build)

Child returncode was: 1

EXCEPTION: Command failed. See logs for output.
 # ['bash', '--login', '-c', 'rpmbuild -bb --target x86_64 --nodeps builddir/build/SPECS/btrfs-progs.spec']
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/mock_urpm/trace_decorator.py", line 70, in trace
    result = func(*args, **kw)
  File "/usr/lib/python2.7/site-packages/mock_urpm/util.py", line 377, in do
    raise mock_urpm.exception.Error, ("Command failed. See logs for output.\n # %s" % (command,), child.returncode)
Error: Command failed. See logs for output.
 # ['bash', '--login', '-c', 'rpmbuild -bb --target x86_64 --nodeps builddir/build/SPECS/btrfs-progs.spec']

LEAVE do --> EXCEPTION RAISED
Взял как мне кажется сам участок, с ошибкой сборки из файла abfworker::rpm-worker
AMD FX-8350\AMD Radeon R9 290\ 16 G RAM

Аватара пользователя
Nemial
Сообщения: 600
Зарегистрирован: 13 дек 2014, 17:06
Operating system: ROSA Linux
Откуда: Калининград

Re: Сборка RPM

Сообщение Nemial » 18 янв 2016, 22:41

И еще вопрос, есть из вас кто собирает пакеты на своей рабочей машине и если есть, как вы это делаете(устанавливаете в виртуалке росу и начинаете в ней собирать, просто не хочется загрязнять систему сборочными зависимостями)
AMD FX-8350\AMD Radeon R9 290\ 16 G RAM

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 20 янв 2016, 08:05

Nemial писал(а):/var/tmp/rpm-tmp.11592: line 45: ./configure: No such file or directory
Тут ошибка в том, что в дереве исходников нет файла configure. Надо его сгенерировать, выполнив перед configure (%configure2_5x) команду autoreconf -fi или скрипт ./autogen.sh, если он там есть.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 20 янв 2016, 08:08

Nemial писал(а):И еще вопрос, есть из вас кто собирает пакеты на своей рабочей машине и если есть, как вы это делаете(устанавливаете в виртуалке росу и начинаете в ней собирать, просто не хочется загрязнять систему сборочными зависимостями)
Я просто собираю на основной системе, так что засорил её сборочными зависимостями :) Чтобы не засорять, надо использовать mock-urpm, он создаёт чрут, ставит туда зависимости и собирает пакет. Получается дольше по времени, но зато основная система не засоряется. Виртуалку тоже можно использовать, но тогда значительная часть ресурсов системы будет тратиться на эмуляцию.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

Аватара пользователя
VictorR2007
Сообщения: 5848
Зарегистрирован: 12 сен 2011, 13:00
Operating system: ROSA 2016.1
Откуда: Северодвинск

Re: Сборка RPM

Сообщение VictorR2007 » 20 янв 2016, 22:26

Pulfer писал(а):
Nemial писал(а):И еще вопрос, есть из вас кто собирает пакеты на своей рабочей машине и если есть, как вы это делаете(устанавливаете в виртуалке росу и начинаете в ней собирать, просто не хочется загрязнять систему сборочными зависимостями)
Я просто собираю на основной системе, так что засорил её сборочными зависимостями :) Чтобы не засорять, надо использовать mock-urpm, он создаёт чрут, ставит туда зависимости и собирает пакет. Получается дольше по времени, но зато основная система не засоряется. Виртуалку тоже можно использовать, но тогда значительная часть ресурсов системы будет тратиться на эмуляцию.
Немного дополню.
mock-urpm, это очень крутая вещь.
Если к ней привыкнуть.
На мой взгляд, это шедевр.
А на самом деле, это просто сборочная abf на локальной машине.
Если заинтересуетесь, могу поделиться нюансами в её использовании, или в решении проблем.
Но только нужно обсуждать это в другой теме.
Типа «Настройка mock-urpm»

Аватара пользователя
Buagir
Сообщения: 12
Зарегистрирован: 15 дек 2015, 17:51
Operating system: ROSA Desktop Fresh
Откуда: Липецк
Контактная информация:

Re: Сборка RPM

Сообщение Buagir » 06 фев 2016, 11:50

VictorR2007 писал(а):
Pulfer писал(а): Я просто собираю на основной системе, так что засорил её сборочными зависимостями :) Чтобы не засорять, надо использовать mock-urpm, он создаёт чрут, ставит туда зависимости и собирает пакет. Получается дольше по времени, но зато основная система не засоряется. Виртуалку тоже можно использовать, но тогда значительная часть ресурсов системы будет тратиться на эмуляцию.
Немного дополню.
mock-urpm, это очень крутая вещь.
Если к ней привыкнуть.
На мой взгляд, это шедевр.
А на самом деле, это просто сборочная abf на локальной машине.
Если заинтересуетесь, могу поделиться нюансами в её использовании, или в решении проблем.
Но только нужно обсуждать это в другой теме.
Типа «Настройка mock-urpm»
Да поделитесь! Мне как молодому сборщику кок раз нужно с этой штуки начать чтоб не эмуляторов не ставить ни уж тем более засорять систему.
Изображение
Изображение

Аватара пользователя
VictorR2007
Сообщения: 5848
Зарегистрирован: 12 сен 2011, 13:00
Operating system: ROSA 2016.1
Откуда: Северодвинск

Re: Сборка RPM

Сообщение VictorR2007 » 06 фев 2016, 12:11

Buagir писал(а): Да поделитесь! Мне как молодому сборщику кок раз нужно с этой штуки начать чтоб не эмуляторов не ставить ни уж тем более засорять систему.
http://forum.rosalab.ru/viewtopic.php?f=48&t=6767

Аватара пользователя
Nemial
Сообщения: 600
Зарегистрирован: 13 дек 2014, 17:06
Operating system: ROSA Linux
Откуда: Калининград

Re: Сборка RPM

Сообщение Nemial » 07 фев 2016, 01:56

А что делает данная строчка в спеке

Код: Выделить всё

sed -i '28iclear' screenfetch-dev
AMD FX-8350\AMD Radeon R9 290\ 16 G RAM

Аватара пользователя
Nemial
Сообщения: 600
Зарегистрирован: 13 дек 2014, 17:06
Operating system: ROSA Linux
Откуда: Калининград

Re: Сборка RPM

Сообщение Nemial » 08 фев 2016, 23:48

И почему именно 28iclear, а не что-нибудь другое?
И может не в тему, но все-таки, кто-нибудь может принять мой пул реквест насчет добавления логотипа росы в программу screenfetch-dev?
AMD FX-8350\AMD Radeon R9 290\ 16 G RAM

Аватара пользователя
Nemial
Сообщения: 600
Зарегистрирован: 13 дек 2014, 17:06
Operating system: ROSA Linux
Откуда: Калининград

Re: Сборка RPM

Сообщение Nemial » 09 фев 2016, 23:52

И ещё вопрос, как из основного проекта перенести в свой клонированный изменения(не хочу постоянно клонировать проект при появлении в нем изменений)
AMD FX-8350\AMD Radeon R9 290\ 16 G RAM

Аватара пользователя
Nemial
Сообщения: 600
Зарегистрирован: 13 дек 2014, 17:06
Operating system: ROSA Linux
Откуда: Калининград

Re: Сборка RPM

Сообщение Nemial » 10 фев 2016, 00:11

И еще при сборке calibre

Код: Выделить всё

 File listed twice: /usr/share/icons/hicolor/scalable/mimetypes/application-x-sony-bbeb.png
    R python(abi) (/usr/lib64/calibre/chardet/__init__.py) overlaps R python(abi) = 2.7 (/usr/lib64/calibre/calibre/db/cache.py), removing R python(abi)
    R python(abi) (/usr/lib64/calibre/chardet/big5prober.py) overlaps R python(abi) = 2.7 (/usr/lib64/calibre/calibre/db/cache.py), removing R python(abi)
    R python(abi) (/usr/lib64/calibre/chardet/chardistribution.py) overlaps R python(abi) = 2.7 (/usr/lib64/calibre/calibre/db/cache.py), removing R python(abi)
    R python(abi) (/usr/lib64/calibre/chardet/charsetgroupprober.py) overlaps R python(abi) = 2.7 (/usr/lib64/calibre/calibre/db/cache.py), removing R python(abi)
    R python(abi) (/usr/lib64/calibre/chardet/charsetprober.py) overlaps R python(abi) = 2.7 (/usr/lib64/calibre/calibre/db/cache.py), removing R python(abi)
    R python(abi) (/usr/lib64/calibre/chardet/codingstatemachine.py) overlaps R python(abi) = 2.7 (/usr/lib64/calibre/calibre/db/cache.py), removing R python(abi)
    R python(abi) (/usr/lib64/calibre/chardet/escprober.py) overlaps R python(abi) = 2.7 (/usr/lib64/calibre/calibre/db/cache.py), removing R python(abi)
    R python(abi) (/usr/lib64/calibre/chardet/escsm.py) overlaps R python(abi) = 2.7 (/usr/lib64/calibre/calibre/db/cache.py), removing R python(abi)
    R python(abi) (/usr/lib64/calibre/chardet/eucjpprober.py) overlaps R python(abi) = 2.7 (/usr/lib64/calibre/calibre/db/cache.py), removing R python(abi)
    R python(abi) (/usr/lib64/calibre/chardet/euckrprober.py) overlaps R python(abi) = 2.7 (/usr/lib64/calibre/calibre/db/cache.py), removing R python(abi)
    R python(abi) (/usr/lib64/calibre/chardet/euctwprober.py) overlaps R python(abi) = 2.7 (/usr/lib64/calibre/calibre/db/cache.py), removing R python(abi)
    R python(abi) (/usr/lib64/calibre/chardet/gb2312prober.py) overlaps R python(abi) = 2.7 (/usr/lib64/calibre/calibre/db/cache.py), removing R python(abi)
    R python(abi) (/usr/lib64/calibre/chardet/hebrewprober.py) overlaps R python(abi) = 2.7 (/usr/lib64/calibre/calibre/db/cache.py), removing R python(abi)
    R python(abi) (/usr/lib64/calibre/chardet/latin1prober.py) overlaps R python(abi) = 2.7 (/usr/lib64/calibre/calibre/db/cache.py), removing R python(abi)
    R python(abi) (/usr/lib64/calibre/chardet/mbcharsetprober.py) overlaps R python(abi) = 2.7 (/usr/lib64/calibre/calibre/db/cache.py), removing R python(abi)
    R python(abi) (/usr/lib64/calibre/chardet/mbcsgroupprober.py) overlaps R python(abi) = 2.7 (/usr/lib64/calibre/calibre/db/cache.py), removing R python(abi)
    R python(abi) (/usr/lib64/calibre/chardet/mbcssm.py) overlaps R python(abi) = 2.7 (/usr/lib64/calibre/calibre/db/cache.py), removing R python(abi)
    R python(abi) (/usr/lib64/calibre/chardet/sbcharsetprober.py) overlaps R python(abi) = 2.7 (/usr/lib64/calibre/calibre/db/cache.py), removing R python(abi)
    R python(abi) (/usr/lib64/calibre/chardet/sbcsgroupprober.py) overlaps R python(abi) = 2.7 (/usr/lib64/calibre/calibre/db/cache.py), removing R python(abi)
    R python(abi) (/usr/lib64/calibre/chardet/sjisprober.py) overlaps R python(abi) = 2.7 (/usr/lib64/calibre/calibre/db/cache.py), removing R python(abi)
    R python(abi) (/usr/lib64/calibre/chardet/test.py) overlaps R python(abi) = 2.7 (/usr/lib64/calibre/calibre/db/cache.py), removing R python(abi)
    R python(abi) (/usr/lib64/calibre/chardet/universaldetector.py) overlaps R python(abi) = 2.7 (/usr/lib64/calibre/calibre/db/cache.py), removing R python(abi)
    R python(abi) (/usr/lib64/calibre/chardet/utf8prober.py) overlaps R python(abi) = 2.7 (/usr/lib64/calibre/calibre/db/cache.py), removing R python(abi) 
Господа, не подскажете ли вы, что делать?
AMD FX-8350\AMD Radeon R9 290\ 16 G RAM

Аватара пользователя
VictorR2007
Сообщения: 5848
Зарегистрирован: 12 сен 2011, 13:00
Operating system: ROSA 2016.1
Откуда: Северодвинск

Re: Сборка RPM

Сообщение VictorR2007 » 10 фев 2016, 01:11

Nemial писал(а):И еще при сборке calibre
Господа, не подскажете ли вы, что делать?
Вроде ругается на неупакованный файл

Код: Выделить всё

Installed (but unpackaged) file(s) found:
	/usr/share/icons/hicolor/scalable/mimetypes/application-x-sony-bbeb.png

Аватара пользователя
Nemial
Сообщения: 600
Зарегистрирован: 13 дек 2014, 17:06
Operating system: ROSA Linux
Откуда: Калининград

Re: Сборка RPM

Сообщение Nemial » 10 фев 2016, 14:58

Не в пакете дело(я уже пробовал)
меня напрягает

Код: Выделить всё

File listed twice: /usr/share/icons/hicolor/scalable/mimetypes/application-x-sony-bbeb.png
Вот это и интересует как добавить файл в исключения(чтобы он не упаковывался)
AMD FX-8350\AMD Radeon R9 290\ 16 G RAM

Аватара пользователя
VictorR2007
Сообщения: 5848
Зарегистрирован: 12 сен 2011, 13:00
Operating system: ROSA 2016.1
Откуда: Северодвинск

Re: Сборка RPM

Сообщение VictorR2007 » 10 фев 2016, 15:13

Nemial писал(а):Не в пакете дело(я уже пробовал)
меня напрягает

Код: Выделить всё

File listed twice: /usr/share/icons/hicolor/scalable/mimetypes/application-x-sony-bbeb.png
Вот это и интересует как добавить файл в исключения(чтобы он не упаковывался)
А почему не хотите его упаковать?
Исключить можно так.
Можно убрать из спека строку

Код: Выделить всё

cp -p resources/images/mimetypes/lrf.png \
	%{buildroot}%{_datadir}/icons/hicolor/scalable/mimetypes/application-x-sony-bbeb.png
или после неё добавить

Код: Выделить всё

rm -f %{buildroot}%{_iconsdir}/hicolor/scalable/mimetypes/application-x-sony-bbeb.png

Аватара пользователя
Nemial
Сообщения: 600
Зарегистрирован: 13 дек 2014, 17:06
Operating system: ROSA Linux
Откуда: Калининград

Re: Сборка RPM

Сообщение Nemial » 10 фев 2016, 15:47

Я хочу его упаковать, но при его упаковке у меня выходит это

Код: Выделить всё

File listed twice: /usr/share/icons/hicolor/scalable/mimetypes/application-x-sony-bbeb.png
AMD FX-8350\AMD Radeon R9 290\ 16 G RAM

Аватара пользователя
VictorR2007
Сообщения: 5848
Зарегистрирован: 12 сен 2011, 13:00
Operating system: ROSA 2016.1
Откуда: Северодвинск

Re: Сборка RPM

Сообщение VictorR2007 » 10 фев 2016, 17:59

Nemial писал(а):Я хочу его упаковать, но при его упаковке у меня выходит это

Код: Выделить всё

File listed twice: /usr/share/icons/hicolor/scalable/mimetypes/application-x-sony-bbeb.png
А он и указан дважды.
%{_datadir}/icons/hicolor/scalable/mimetypes/*
и
%{_datadir}/icons/hicolor/*/mimetypes/*

Аватара пользователя
Nemial
Сообщения: 600
Зарегистрирован: 13 дек 2014, 17:06
Operating system: ROSA Linux
Откуда: Калининград

Re: Сборка RPM

Сообщение Nemial » 10 фев 2016, 18:01

И что можно сделать с этим?
AMD FX-8350\AMD Radeon R9 290\ 16 G RAM

Аватара пользователя
VictorR2007
Сообщения: 5848
Зарегистрирован: 12 сен 2011, 13:00
Operating system: ROSA 2016.1
Откуда: Северодвинск

Re: Сборка RPM

Сообщение VictorR2007 » 10 фев 2016, 18:16

Nemial писал(а):И что можно сделать с этим?
Удалить строку
%{_datadir}/icons/hicolor/scalable/mimetypes/*
Она лишняя и дублирует строку
%{_datadir}/icons/hicolor/*/mimetypes/*

Аватара пользователя
Nemial
Сообщения: 600
Зарегистрирован: 13 дек 2014, 17:06
Operating system: ROSA Linux
Откуда: Калининград

Re: Сборка RPM

Сообщение Nemial » 10 фев 2016, 19:32

Спасибо
AMD FX-8350\AMD Radeon R9 290\ 16 G RAM

Аватара пользователя
Nemial
Сообщения: 600
Зарегистрирован: 13 дек 2014, 17:06
Operating system: ROSA Linux
Откуда: Калининград

Re: Сборка RPM

Сообщение Nemial » 16 фев 2016, 17:05

Господа, кто-нибудь мог бы отклонить мой пул реквест для calibre(он глючным отправился, не открывается)
AMD FX-8350\AMD Radeon R9 290\ 16 G RAM

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 17 фев 2016, 13:12

Nemial писал(а):Господа, кто-нибудь мог бы отклонить мой пул реквест для calibre(он глючным отправился, не открывается)
Передал просьбу разработчику ABF. Надеюсь, он удалит.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

Аватара пользователя
Nemial
Сообщения: 600
Зарегистрирован: 13 дек 2014, 17:06
Operating system: ROSA Linux
Откуда: Калининград

Re: Сборка RPM

Сообщение Nemial » 17 фев 2016, 20:34

Благодарю
AMD FX-8350\AMD Radeon R9 290\ 16 G RAM

Аватара пользователя
Nemial
Сообщения: 600
Зарегистрирован: 13 дек 2014, 17:06
Operating system: ROSA Linux
Откуда: Калининград

Re: Сборка RPM

Сообщение Nemial » 19 фев 2016, 00:12

У меня вопросы(может нубские)
В чем отличие указания в BuildRequires зависимости pkgconfig(sdl2) и просто название самой библиотеки без pkgconfig, и можно ли прописывать pkgconfig в обычные зависимости, а не только сборочные и будут ли от этого какие-то плюсы?
Что означает EOF и для чего это нужно в спеке.?
И как можно свой клонированный проект синхронизировать с изменениями основного проекта, без удаления и нового клонировая проекта?
AMD FX-8350\AMD Radeon R9 290\ 16 G RAM

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: Сборка RPM

Сообщение Pulfer » 19 фев 2016, 10:02

Nemial писал(а):В чем отличие указания в BuildRequires зависимости pkgconfig(sdl2) и просто название самой библиотеки без pkgconfig, и можно ли прописывать pkgconfig в обычные зависимости, а не только сборочные и будут ли от этого какие-то плюсы?
pkgconfig(XXX) - это автоматически генерируемая при сборке запись Provides пакета. Генерируется она на основе файла /usr/lib[64]/pkgconfig/XXX.pc или /usr/share/pkgconfig/XXX.pc. Как правило, эти файлы лежат в -devel пакетах библиотек. То есть если какому-то пакету нужна зависимость именно от -devel пакета, то можно и в обычных зависимостях прописать pkgconfig(XXX). Но такое случается крайне редко, обычно все нужные зависимости даже для -devel пакетов генерируются правильно автоматически.

В чём преимущество формата pkgconfig(XXX) перед XXX-devel?

Во-первых, это более универсальный способ, исключающий зависимость от имени пакета, которое в разных дистрибутивах может быть разным на усмотрение мейнтейнеров. Кто-то может пакет XXX-devel сделать, кто-то libXXX-devel или как-то ещё. А с pkgconfig(XXX) как в апстриме решили, так и будет.

Во-вторых, в pkgconfig-файле как правило содержится информация о версии библиотеки. А при использовании имени пакета используется версия пакета, а не библиотеки. Обычно эти версии совпадают, но не всегда. А программы при сборке, когда проверяют наличие зависимостей, ориентируются всё же на версии библиотек, а не пакетов.

Надеюсь, достаточно понятно объяснил, почему это самый предпочтительный формат записи зависимостей сборки.
Nemial писал(а):Что означает EOF и для чего это нужно в спеке.?
Как правило, это просто индикатор, используемый для указания конца ввода. Т.е. используем прямо в спеке при сборке пакета команду cat, которой говорим, что вот в такой файл записать такое содержимое. И EOF указывает, что на этом месте надо прекратить запись в файл и перейти к выполнению следующих команд из спека.

Код: Выделить всё

# install menu entry
mkdir -p %{buildroot}%{_datadir}/applications/
cat > %{buildroot}%{_datadir}/applications/%{name}.desktop << EOF
[Desktop Entry]
Name=PPSSPP
Comment=Sony PSP emulator
Exec=%{_gamesbindir}/%{name}-sdl
Icon=%{name}
Terminal=false
Type=Application
Categories=Game;Emulator;
EOF
Nemial писал(а):И как можно свой клонированный проект синхронизировать с изменениями основного проекта, без удаления и нового клонировая проекта?
Видимо, только стандартными средствами гита. Надо погуглить по запросу "git merge upstream" или как-то так. А там уже самый понятный текст взять. Может вот этот подойдёт: https://git-scm.com/book/en/v2/Git-Basi ... th-Remotes
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

Аватара пользователя
Алзим
Сообщения: 4394
Зарегистрирован: 18 июн 2015, 11:57
Operating system: ROSA Desktop Fresh R10
Откуда: Интернет

Re: Сборка RPM

Сообщение Алзим » 22 фев 2016, 18:36

Я «собрал» игру.
Нажимаю «Пул реквест». Потом нажимаю «Обновить коммиты», но ничего не происходит.
снимок175.jpeg

Аватара пользователя
Nemial
Сообщения: 600
Зарегистрирован: 13 дек 2014, 17:06
Operating system: ROSA Linux
Откуда: Калининград

Re: Сборка RPM

Сообщение Nemial » 22 фев 2016, 18:48

Все верно, ведь вы собрали игру, но не вносили никаких изменений в проект, поэтому пул реквест и не отправиться.
AMD FX-8350\AMD Radeon R9 290\ 16 G RAM

Ответить