wiki:Development/AutoRequiresProvidesFiltering

Version 6 (modified by daisuke, 8 years ago) (diff)

--

Requires/Provides? の自動検出時のフィルタリングについて(rpm-4.12+)

rpm-4.12 から rpm の依存関係自動検出が内部版(internal dependency generator)も外部版も 同一になりました。実質的に外部版(find-requires, find-providesなど)は廃止となります。

Vine Linux でもすでにデフォルトでは内部版を利用していますので、通常のパッケージでは とくに影響ないはずですが、何らかの都合で外部版を使っていたり、あるいは依存関係をフィルタ しているパッケージの場合にビルド自体あるいはビルド結果に影響があります。

このページでは rpm-4.12 以降での依存関係のフィルタリングルールの書き方について説明します。

spec マクロ

  • 依存関係検出対象ファイルまたはディレクトリのフィルタリングマクロ
    • __provides_exclude_from
    • __requires_exclude_from
  • 依存関係検出後のフィルタリング
    • __provodes_exclude
    • __requires_exclude

設定例

依存関係検出時のフィルタリンク

Provides のフィルタ

  • ディレクトリ指定の場合
    %global __provides_exclude_from ^%{_libdir}/firefox/.*
    
  • ファイル指定の場合
    %global __provides_exclude_from ^%{_libdir}/firefox/.*.so$
    

依存関係生成後のフィルタリング

Requires フィルタ

  • 特定のライブラリの除外

libssl3.so(NSS_3.12.6)(64bit) などを含む libssl3.soすべてを除外したい場合は、以下のようにするとよい

%global _privatelibs libnss3[.]so\\(.*
%global __requires_exclude ^(%{_privatelibs})$

参考資料

Attachments