ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] О сборке программ на GTK / GNOME
@ 2004-11-09 23:22 Vitaly Lipatov
  2004-11-09 23:36 ` Dmitry V. Levin
                   ` (3 more replies)
  0 siblings, 4 replies; 51+ messages in thread
From: Vitaly Lipatov @ 2004-11-09 23:22 UTC (permalink / raw)
  To: ALT Devel discussion list

По результатам переписки разработчиков 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!


^ permalink raw reply	[flat|nested] 51+ messages in thread

end of thread, other threads:[~2004-11-16 12:02 UTC | newest]

Thread overview: 51+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-11-09 23:22 [devel] О сборке программ на GTK / GNOME Vitaly Lipatov
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

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