@hackage rpmbuild-order0.4.0

Order RPM packages by dependencies

Build Status Hackage license

rpmbuild-order

This package originally based on code from cabal-sort, sorts rpm package spec files by build order.

$ rpmbuild-order --help
$ rpmbuild-order sort mycore mylib myapp
mylib
mycore
myapp

The arguments passed can either be directories containing the package, or spec files.

Using the rpmbuild-order deps and rdeps commands the ordered dependencies and reverse dependencies of a package can be obtained from the current set of checked out package sources.

As of version 0.4, a library is also provided. See the modules' documentation for details.

Notes and known problems

  1. Given packages A, B, C, where C depends on B, and B depends on A, and you call

    rpmbuild-order sort C.spec A.spec

then the output may be wrong if C does not have a direct dependency on A. Even if the order is correct, B is missing in the output and thus in this case the list of packages cannot be reliably used for a sequence of builds.

However the deps and rdeps commands take other neighbouring package directories into account.

  1. repoquery is not used to resolve meta-dependencies or files to packages. So if a package BuildRequires a file, it will not be resolved to a package. This may get addressed some day, but file dependencies seem less common for BuildRequires than Requires.

  2. rpmspec is used to parse spec files (for macro expansion etc): so missing macros packages may lead to erroneous results.