On 12 March 2011 16:15, Ciaran McCreesh <[email protected]> wrote: > Or are the rules more complicated than that?
I think it's a fair bit more complicated, yes. Gentoo has what looks to be a decent basic idea in http://bugs.gentoo.org/show_bug.cgi?id=327809, and some of the comments on http://trac.pioto.org/paludis/ticket/951 seem to be somewhat overlapping. To summarise, a package that provides one or more libraries declares one or more ABI classes, and either statically declares the ABI versions (not necessarily orderable or in any particular format) for each or provides a function that determines them at build time (needed for Haskell at least, as the ABI depends on the ABIs of other libraries, build options, etc, in a way that I don't think wouldn be feasible to calculate without building it), which is then stored in the built package's metadata. A package that uses the library(ies) specifies in the dependency which ABI class(es) it needs, and at build time the dep is rewritten to include the ABI version from the currently-installed version of the library (similar to := ). The resolver then knows to reinstall the dependent packages if the library's ABI version changes. In the "provides a function" case, the dependent packages are marked as "maybe reinstall" (similarly to old SCM packages), and if the ABI version turns out not to have changed after all, the reinstall is skipped (similarly to a SCM package that turns out not to have received any new commits). Not sure if all that's /too/ complicated, but it should be sufficiently general as far as I can think of. _______________________________________________ Exherbo-dev mailing list [email protected] http://lists.exherbo.org/mailman/listinfo/exherbo-dev
