Hi, Quoting Ian Jackson (2016-08-22 12:55:48) > But even worse is that it would no longer be possible to sensibly > compute build orders without pre-building every package in a source > archive, because it would not be possible to statically determine > which binary packages are supposed to come from which sources. since you are talking about computing build orders and avoiding having to pre-build every source package, I have bad news for you. It is currently already impossible to know which source package to build to satisfy a given dependency if that source package hasn't been built before for the architecture that you are building for. This is not only because source package metadata does not tell you: - anything about in which version the source package will build its binary packages - which (possibly versioned and architecture qualified) virtual packages a real binary package will provide once built - whether they will build a binary package that is Essential:yes So if you start with only source package information (from a Sources file) as you would for example if you want to bootstrap a new architecture, then there is currently no way to reliably auto-compute the order in which you need to build source packages. You can only reliably carry out this computation for re-bootstrapping an already existing architecture where you already built the binary packages of all source packages. So tools like rebootstrap which attempt to bootstrap Debian from zero currently start with a manually maintained set of source packages that is to be built, figure out which source packages have their build dependencies satisfied already, build those and then check again for more source packages that can be built given the newly built binary packages. The only way to currently precompute the build order just from the metadata would be to make some assumptions which do not hold in some cases like: - source packages build binary packages that have the same version as the source package they build from - the installation set of all Essential:yes packages is the same on all architectures - there is no dependency on virtual packages - source packages build all their binary packages for architectures listed in the Architectures field Rebootstrap currently works around this using lots of heuristics and manually set assumptions and manual interventions during the bootstrap progress. But this is something that should be encoded in the source package metadata so that build orders can be computed upfront. There is work into the direction of fixing this. For example the architectures a source package will build each binary for is already encoded in the Packages-List field. This has topic been extensively discussed during the bootstrap sprint and you can read more about it in section 1 of the sprint results at [1] Thanks! cheers, josch [1] https://wiki.debian.org/Sprints/2014/BootstrapSprint/Results
Attachment:
signature.asc
Description: signature