From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Vitaly Lipatov Organization: ALT Linux Team To: ALT Devel discussion list Date: Wed, 10 Nov 2004 02:22:27 +0300 User-Agent: KMail/1.7.1 MIME-Version: 1.0 Content-Type: text/plain; charset="koi8-r" Content-Transfer-Encoding: 8bit Content-Disposition: inline Message-Id: <200411100222.28195.lav@altlinux.ru> Content-Transfer-Encoding: 8bit Subject: [devel] =?koi8-r?b?7yDTws/Sy8Ug0NLPx9LBzc0gzsEgR1RLIC8=?= GNOME X-BeenThere: devel@altlinux.ru X-Mailman-Version: 2.1.5 Precedence: list Reply-To: ALT Devel discussion list List-Id: ALT Devel discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 09 Nov 2004 23:22:16 -0000 Archived-At: List-Archive: List-Post: По результатам переписки разработчиков 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" , 2004 Vitaly Lipatov , 2004 09.11.2004 -- Lav Виталий Липатов Санкт-Петербург GNU! ALT Linux Team! LaTeX! LyX!