Re: Bootstrappable Debian - proposal of needed changes
On Wed, Jan 16, 2013 at 01:50:17PM +0000, Ian Jackson wrote:
> > 5. Cross-Builds field
> > =====================
> > For even further automation and also for quality assurance, we propose
> > another new field for source packages which indicates whether or not
> > this source package is supposed to be cross compilable.
> Is it possible that packages might only cross build for certain
> targets ? Or only for certain hosts ?
Yes. But for the intended purpose of this field, it does not make much
sense to encode the information on which architecture and for which
architecture a source package cross compiles.
If a source package would not compile on some architectures or for some
architectures, then it would be Cross-Builds:No.
If the Cross-Builds field is being introduced, then only a few base
source packages *must* carry this field. For all other source packages,
this field would be optional.
The tools we developed can always be used to calculate which source
packages are necessary to cross compile a minimal build system.
Therefor, this field would only be:
- a more obvious way for the maintainer of a source package to know
that his/her package is one of those that must be cross compilable
for any upcoming architecture.
- a more obvious way for a bootstrapper to see which native build
dependency cycles could easily be solved by cross compiling some
The field is therefor rather low priority compared to the other ideas.
> I haven't spotted anything hideously wrong. I have three suggestions
> for changes:
> * Packages should explicitly declare which profiles they support.
> This should be done with a Profile field in the source stanza
> of debian/control.
Good idea - this would make it even more analogous to the "Architecture"
field and its meaning in source and binary stanzas in ./debian/control.
> * It should be made explicit in the spec that building occurs with
> zero or one profile, not several.
As far as I understood (but I'm not the one who actually cross-compiles
things in real life), different dependencies might be needed during
cross compilation of some source packages. If that source package must
be cross compiled for a minimal base system and if it also must be built
with reduced build dependencies, then two build profiles at the same
time are necessary. In this case a "cross" and "stage1" profile.
> * The concrete syntax in build-depends should not use < > but rather
> reuse the architecture qualification syntax.
You basically propose to extend the architecture qualification syntax
from a single disjunction into a conjunctive normal form expression. If
any number of disjunctions is allowed, your proposal will also support
more than one profile at the same time.
What would an example of a different namespace than "profile:" be?
>From the perspective of dependency analysis, your proposal seems to be
able to carry all information that is needed for it. I leave it up to
you guys to decide on which you like better.
Thanks for your input!