wiki:Development/AutoRequiresProvidesFiltering

Version 9 (modified by tomop, 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

要するに、下図のA・Bいずれをフィルタリング対象にするかの違いです。

図

設定例

依存関係検出対象のフィルタリング

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