From: Vitaly Lipatov <lav@altlinux.ru> To: ALT Devel discussion list <devel@altlinux.ru> Subject: [devel] О сборке программ на GTK / GNOME Date: Wed, 10 Nov 2004 02:22:27 +0300 Message-ID: <200411100222.28195.lav@altlinux.ru> (raw) По результатам переписки разработчиков ALT Linux Team составлены советы по упаковке программ GTK, GNOME и KDE. Почему в pkg-config отключена рекурсия ====================================== Рекурсивный сбор --libs в принципе не нужен, более того -- вреден, хотя бы потому что является источником огромного числа лишних зависимостей, которые потом должен обрабатывать apt и rpm Если программа не линкуется с какой-либо библиотекой, то весьма вероятно, что это ошибка в сборке библиотеки - библиотека использует функции из других библиотек, но с ними не слинкована. Ошибка эта практически везде, кроме как в ALT Linux прикрыта стандартным поведением pkg-config. Файлы информации о mime-типах ============================= В этих файлах хранится описание форматов файлов (их mime-type, комментарием, способом определения принадлежности к формату по MAGIC value и шаблону...) 1. Если в пакете есть файлы /usr/share/mime/packages/*.xml, то при его установке, удалении, обновлении необходимо обновить и кеш базы mime-типов с использованием в spec-файле макросов %update_mimedb и %clean_mimedb. То есть в спеке должны быть секции: %post %update_mimedb %postun %clean_mimedb И указаны зависимости: Requires(post,postun): shared-mime-info >= 0.15-alt2 2. Файлы из каталога %_datadir/mime-info/* не используется GNOME-программами, которые получают mime-информацию из пакета shared-mime-info. Тем не менее эти файлы используются рядом программ (например KDE), так что их тоже надо паковать. Файлы schemas ============= При сборке в пакете установку schemas надо отключать: %configure --disable-schemas-install В спеке должны быть секции: %post %gconf2_install %name %preun if [ $1 = 0 ]; then %gconf2_uninstall %name fi в качестве параметров к %gconf2-(un)unstall может быть указано несколько названий. Образец оформления секции %files: %config %_sysconfdir/gconf/schemas/* В зависимостях пакета должно быть: Requires(post): GConf2 BuildPreReq: GConf2 Файлы scrollkeeper ================== Нельзя упаковывать каталог и файлы из %_localstatedir/scrollkeeper, если они получаются при сборке, их надо удалить командой %__rm -rf %buildroot%_var/lib/scrollkeeper в секции %install В спеке должны быть секции: %post %update_scrollkeeper %postun %clean_scrollkeeper В зависимостях пакета должно быть: Requires(post,postun): scrollkeeper Если %make_install вызывает scrollkeeper-update и сборка прерывается по ошибке - перед %make_install нужно сделать export OMF_DIR=%buildroot%_var/lib/scrollkeeper Поиск файлов локализации - %find_lang ==================================== %find_lang вызывается в секции %install Для программ GNOME указывается: %find_lang --with-gnome %name При этом find-lang кроме файлов переводов в %_datadir/locale ищет файлы справки Гном в %_datadir/gnome/help и .omf файлы в %_datadir/omf Поэтому не нужно указывать в секции %files каталоги с locale, а также %_datadir/omf/%name %_datadir/gnome/help/ Для программ KDE указывается: %find_lang --with-kde %name При этом find-lang ищет файлы справки KDE в %_docdir/HTML Далее секция %files оформляется следующим образом: %files -f %name.lang Файлы меню =========== Файл меню либо создаётся непосредственно заданием его содержимого, либо формируется. Как правило программа содержит файл .desktop, из него можно получить файл меню следующей командой в разделе %install: freedesktop2menu.pl %name "Путь разделов меню" \ %buildroot%_datadir/applications/%name.desktop \ %buildroot%_menudir/%name При использовании этого скрипта в пакете должна быть указана зависимость: BuildPreReq: menu-devel Каталог для файлов меню обычно создают командой: %__mkdir_p %buildroot%_menudir Созданный файл меню устанавливается в каталог %_menudir. При установке или удалении пакета меню должно переформироваться, для этого в спеке должны быть секции: %post %update_menus %postun %clean_menus В секции %files: %_menudir/* %_datadir/applications/* и возможно %_datadir/application-registry/* Обновление базы данных по меню ============================== В файлах desktop обычно хранится информация о том, какие форматы способна обрабатывать та или иная программа. это нужно только в случае если в %_datadir/applications/*.desktop есть $ grep -i mime //usr/share/applications/*.desktop MimeType=application/postscript; В спеке должны быть секции: %post %update_desktopdb %postun %clean_desktopdb В пакете должна быть указана зависимость: Requires(post,postun): desktop-file-utils BuildPreReq: desktop-file-utils Используется вне зависимости от типа программы в пакете, и всегда должно быть указано. Файлы bonobo ============ Пока ничего не знаю кроме того, что в %files пишется %_libdir/bonobo/servers/* Установка файлов ================ В секции %install для установки файлов используется либо строка %make_install install DESTDIR=%buildroot (в случае если используется схема Makefile с DESTDIR) либо %makeinstall (она задаёт prefix и остальные пути по типу prefix=/home/lav/tmp/%{name}-buildroot/usr) Это для программ, которые не пытаются запоминать пути, куда их устанавливают, при установке, а делают это при configure Примеры использования ===================== Смотрите в Сизифе пакеты ggv2, rythmbox, eog2, gthumb, totem conglomerate, inkscape "Yuri N. Sedunov" <aris@altlinux.ru>, 2004 Vitaly Lipatov <lav@altlinux.ru>, 2004 09.11.2004 -- Lav Виталий Липатов Санкт-Петербург GNU! ALT Linux Team! LaTeX! LyX!
next reply other threads:[~2004-11-09 23:22 UTC|newest] Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top 2004-11-09 23:22 Vitaly Lipatov [this message] 2004-11-09 23:36 ` Dmitry V. Levin 2004-11-10 9:34 ` [devel] " Michael Shigorin 2004-11-10 20:27 ` Vitaly Lipatov 2004-11-10 23:20 ` Mikhail Zabaluev 2004-11-11 8:16 ` Kirill Maslinsky 2004-11-11 8:11 ` [devel] ALT packaging docs (was: О сборке программ на GTK / GNOME) Mikhail Zabaluev 2004-11-11 12:17 ` Andrey Orlov 2004-11-12 1:58 ` Mikhail Zabaluev 2004-11-12 8:29 ` [devel] " Michael Shigorin 2004-11-12 9:16 ` [devel] " Andrey Orlov 2004-11-12 10:50 ` Kirill Maslinsky 2004-11-12 21:58 ` Andrey Orlov 2004-11-12 23:52 ` Kirill Maslinsky 2004-11-13 1:42 ` Andrey Orlov 2004-11-16 11:12 ` Kirill Maslinsky 2004-11-15 11:37 ` [devel] Re: ALT packaging docs Vitaly Ostanin 2004-11-16 11:16 ` Kirill Maslinsky 2004-11-16 12:02 ` Vitaly Ostanin 2004-11-12 12:10 ` [devel] ALT packaging docs (was: О сборке программ на GTK / GNOME) Mikhail Zabaluev 2004-11-12 13:11 ` [devel] " Michael Shigorin 2004-11-12 22:21 ` [devel] " Andrey Orlov 2004-11-11 8:36 ` [devel] Re: О сборке программ на GTK / GNOME Kirill Maslinsky 2004-11-11 9:26 ` [devel] xmms policy (was: О сборке программ на GTK / GNOME) Michael Shigorin 2004-11-12 10:58 ` Kirill Maslinsky 2004-11-12 11:25 ` [devel] " Michael Shigorin 2004-11-11 9:28 ` [devel] Re: О сборке программ на GTK / GNOME Vitaly Ostanin 2004-11-11 22:35 ` Vitaly Lipatov 2004-11-12 11:15 ` Kirill Maslinsky 2004-11-12 11:14 ` Kirill Maslinsky 2004-11-12 12:15 ` Mikhail Zabaluev 2004-11-13 0:37 ` Kirill Maslinsky 2004-11-12 14:03 ` Anatoly A. Yakushin 2004-11-15 11:25 ` Vitaly Ostanin 2004-11-11 12:14 ` Andrey Orlov 2004-11-10 4:58 ` [devel] " Alexey I. Froloff 2004-11-10 8:40 ` Vitaly Lipatov 2004-11-10 9:06 ` Alexey I. Froloff 2004-11-10 9:33 ` Sergey V Turchin 2004-11-10 9:39 ` Alexey I. Froloff 2004-11-10 9:46 ` Sergey V Turchin 2004-11-10 9:48 ` Sergey V Turchin 2004-11-10 9:50 ` Alexey I. Froloff 2004-11-10 10:23 ` Sergey V Turchin 2004-11-10 10:27 ` Alexey I. Froloff 2004-11-10 10:38 ` Sergey V Turchin 2004-11-10 10:55 ` Mikhail Zabaluev 2004-11-10 13:09 ` Sergey V Turchin 2004-11-10 16:09 ` Yuri N. Sedunov 2004-11-10 9:23 ` Sergey V Turchin 2004-11-10 16:12 ` Yuri N. Sedunov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=200411100222.28195.lav@altlinux.ru \ --to=lav@altlinux.ru \ --cc=devel@altlinux.ru \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
ALT Linux Team development discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \ devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru public-inbox-index devel Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git