CUDF (for Common Upgradeability Description Format) is a format for describing upgrade scenarios in package-based Free and Open Source Software distribution.
In every such scenario there exists a package universe (i.e. a set of packages) known to a package manager application, a package status (i.e. the currently installed packages), and a user request (i.e. a wish to change the set of installed packages) that need to be fulfilled.
CUDF permits to describe an upgrade scenario in a way that is both distribution-independent and package-manager-independent
CUDF offers a rigorous semantics of dependency solving that enables to independently check the correctness of upgrade solutions proposed by package managers.
CUDF adoption would enable to share dependency solver components across different package managers, both intra- and inter-distributions.
libCUDF is a library to manipulate CUDF documents; libCUDF acts as the reference implementation of the CUDF specifications.
Using libCUDF you can parse, pretty print, and evaluate (e.g. check dependencies or solution correctness) CUDF documents that represent upgrade scenarios in package-based FOSS distributions. The library is written in OCaml, but offers bindings for other programming languages such as plain C (without any need of having OCaml at runtime).
development happens on the CUDF project hosted on INRIA's Forge. There you can find: