From Fedora Project Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

NOTE: This is a draft, and needs a lot of fleshing out -- if people would rather it live somewhere other than under PackagingDrafts, that's fine by me, so long as the bit about _use_internal_dependency_generator is in the wiki somewhere, hopefully sparing at least one other person the loss of several hours :)

RPM usually does an excellent job of figuring out what a package requires and what it depends on, automatically. However, sometimes there are times you want to disable this entirely (_strongly_ discouraged) or filter out certain errant provides.



How rpm does it ("the plumbing")

... probably just a link to elsewhere ...

Disabling dependency auto-generation

Filtering provides

... bit about the different ways and macros here ...

Shared library filtering

Unlike the other types of filtering, in order to override the default req/prov generation one has to explicitly set the _use_internal_dependency_generator to 0 in their spec file.

... note about how this seems to override the other, macro based filters as well (e.g. __perl_provides)

requires filtering

In one's specfile, one could have:

Source91:  filter-requires.sh
%define    _use_internal_dependency_generator 0
%define    __find_requires %{SOURCE91}

filter-requires.sh would look something like:

#!/bin/sh

if [ -x /usr/lib/rpm/redhat/find-requires ] ; then
FINDREQ=/usr/lib/rpm/redhat/find-requires
else
FINDREQ=/usr/lib/rpm/find-requires
fi

$FINDREQ $* | sed -e '/libbadreq.so/d'

See Packaging:AutoProvidesAndRequiresFiltering for more detail.

provides filtering

In one's specfile, one could have:

Source92:  filter-provides.sh
%define    _use_internal_dependency_generator 0
%define    __find_provides %{SOURCE92}

filter-provides.sh would look something like:

#!/bin/sh

if [ -x /usr/lib/rpm/redhat/find-provides ] ; then
FINDPROV=/usr/lib/rpm/redhat/find-provides
else
FINDPROV=/usr/lib/rpm/find-provides
fi

$FINDPROV $* | sed -e '/libbadprov.so/d'

Perl filtering

... pull in bit from Packaging/Perl

Python filtering

Mono filtering