[Exherbo-dev] Forcing reinstalls of things

David Leverton dleverton at exherbo.org
Sat Mar 12 22:28:33 GMT 2011

On 12 March 2011 16:15, Ciaran McCreesh <ciaran.mccreesh at googlemail.com> 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.

More information about the Exherbo-dev mailing list