Я сделал модульным механизм поиска зависимостей на каталоги. Теперь каждый может создать файл /usr/lib/rpm/%name-files.req.list (но желательно сначала написать об этом сюда). Формат файла /usr/lib/rpm/%name-files.req.list следующий: 1) Значащие строки начинаются со слеша '/'. 2a) Значащая строка может содержать одно поле: <каталог> 2б) или же два поля: <каталог> <пакет> Здесь <каталог> означает тот каталог, на который будет выставляться зависимость; <пакет> в 2б означает пакет, который эксклюзивно владеет каталогом. Если указан эксклюзивный владелец каталога, то будет срабатывать проверка (чтобы никакой другой пакет не смог завладеть каталогом). <каталог> может быть записан в форме с одним окончательным слешем (или без него), количество пробелов любое. Если файл подпадает под два или более каталога (в таком случае один из каталогов является подкаталогом другого), то будет выбран самый длинный каталог. Далее приведён пример, как реализовать зависимости на каталоги /usr/lib/pkgconfig /usr/lib64/pkgconfig /usr/share/pkgconfig при этом пакет pkg-config эксклюзивно владеет этими каталогами. Интересно, что каталогом /usr/lib64/pkgconfig незаконно владеют ещё три пакета: sphinxbase 0.3-alt1 libvolume_id-devel 124-alt1 libsynce-devel 0.11.1-alt1 commit ee38c43ae68a0a39b238abd3e8bb4f2121f75c50 Author: Alexey Tourbin Date: Mon Jun 16 12:39:54 2008 +0400 spec: make %_rpmlibdir/pkgconfig-files.req.list Full diff since common ancestor `0.23-alt1' follows: diff --git a/pkg-config.spec b/pkg-config.spec index 55ae32a..a90832b 100644 --- a/pkg-config.spec +++ b/pkg-config.spec @@ -8,6 +8,9 @@ Group: Development/Other Url: http://pkg-config.freedesktop.org/wiki/ Packager: Dmitry V. Levin +Provides: %_libdir/pkgconfig +Provides: %_datadir/pkgconfig + Provides: pkgconfig-reqprov, pkgconfig-recursion, pkgconfig = 1:%version-%release Obsoletes: pkgconfig @@ -55,8 +58,17 @@ cat <<\EOF >%buildroot%_sysconfdir/buildreqs/files/ignore.d/%name ^(%_libdir|%_datadir)/pkgconfig/[^/]+\.pc$ EOF +mkdir -p %buildroot%_rpmlibdir +cat <<\EOF >%buildroot%_rpmlibdir/pkgconfig-files.req.list +# %name dirlist for %_rpmlibdir/files.req +/usr/lib/pkgconfig %name +/usr/lib64/pkgconfig %name +/usr/share/pkgconfig %name +EOF + %files %config %_sysconfdir/buildreqs/files/ignore.d/* +%config %_rpmlibdir/* %_bindir/pkg-config %dir %_libdir/pkgconfig %dir %_datadir/pkgconfig