2.0-revamping of CUDF and its implementation
By Stefano Zacchiroli, in General -# 34 - RSS feed
We are please to announce that we have just released version 2.0 of the CUDF specification.
Let me very briefly remind what CUDF is: a document format to describe upgrade scenarios as those we face everyday when we ask a package manager (synaptic, aptitude, urpmi, ..) to add/remove/upgrade a given package. Most peculiarly, CUDF permits to encode such scenarios in a way which is both distribution- and package-manager-independent, offering a lingua franca where upgrade scenarios coming from different distribution can be compared. Finally, CUDF is also a rigorous mathematical model which understand dependencies, features, conflicts, ... so that a clear semantics exists to check whether the response given by a package manager to the user request is correct or not.
According to Mancoosi's goals, CUDF will be mainly used to collect upgrade scenarios submitted by distribution users (a-la popcon) and then to run a solver competition on top of them to find the "best" dependency solver ever (don't worry, you will soon hear from us more on this topic ...). But we believe CUDF will be more than that: for instance it has been shown, by Mandriva and Caixa Magica distributions, to be a good device to collect user problems during upgrades and to spot bugs in package manager. Even more, it can be used to factorize out of package managers the actual dependency solving code, which can then be re-used across different package managers.
Now, going back to CUDF 2.0, the advancement with respect to 1.0 are significant, and we hope/believe to have now reached a rather stable point in the evolution of the format. In particular, in this release we have added support for custom package properties that can now be declared and appropriately typed. Such properties constitute they key ingredient on top of which we will be building a powerful user-preference language that will enable user to encode upgrade policies (e.g. minimize the total installed size among all possible solutions) and fine-grained preferences (e.g. blacklist packages from a given maintainer that I do not trust).
CUDF 2.0 specifications are available from our technical reports page and supersede the former project deliverable about CUDF 1.0. The new specs come with a handy Changelog appendix which highlights all differences with respect to CUDF 1.0.
If you are a developer, you might be interested in testing the pre-release of libCUDF 0.6 (version 0.5.92), which already implements CUDF 2.0. The library can be used from C and OCaml (Java bindings are being worked on). You can download it from our software page.
Comments
No comments at the moment.
Add a comment