Pavel Zhukov wrote:
Yes, that happens every year because of koji limitation.
Ada rebuild is not just mass-rebuild thing.
Because of circular dependencies: gprbuild buildrequires xmlada and
xmlada build requires gprbuild and both of them requires
gcc-gnat.so.<version> they were built with
bootstrap of gprbuild should be done which requires manual steps (pretty
straightforward process and documented in xmlada and gprbuild spec files though. thanks
to Bjorn!)
The bootstrap is actually needed only if something is seriously broken,
or to add a new arch. GPRbuild is statically linked precisely to remain
functional each time GCC or XMLada is upgraded, so that it can rebuild
itself and the other Ada packages. Thus the dependency loop isn't
normally a problem. A bump and a rebuild per package should be
sufficient, but they must be done in the right order.
A package can't be built if it requires a library that can't be
installed. Therefore those libraries that depend only on Libgnat must be
built first, so they become installable again. Once those packages
appear in the buildroot, the packages that depend on them can be built.
Then those packages in turn must be added to the buildroot before the
third tier can be built. (I have now done all that for all packages I
have commit access to. I rebuilt GPRbuild too, so it's now statically
linked to the new Libgnat. Nobody needs to worry that the static
linking will cause old code to linger.)
For the mass rebuild to handle this automatically, two changes would be
needed:
· It would have to walk the dependency graph and build the packages in
dependency order instead of alphabetical order.
· It would have to make the newly built packages available to packages
that depend on them, not set them aside and then tag them all in at the
end.
So as things stand, these rebuilds need to be done by a human who knows
the dependency graph.
Björn Persson