Re: on bootstrapping ports (was: Re: Bits from the Release Team (Jessie freeze info))
Hi Daniel,
Quoting Daniel Schepler (2013-10-27 16:06:43)
> Johannes Schauer wrote:
> > Indeed, none of the Type 1 Self-Cycles are needed to bootstrap the core of
> > Debian. Unfortunately though, most of the Type 2 Self-Cycles are. You will
> find
> > many surprising (at least to me) examples in the section of "Type 2
> > Self-Cycles" under the above link.
>
> On the other hand, if you count Build-Depends-Indep and Architecture: all
> packages as part of what you want to bootstrap, then gnat-4.6 does get pulled
> in...
>
> gzip Build-Depends-Indep: mingw-w64
> mingw-w64 Build-Depends: gcc-mingw-w64-{i686,x86_64}
> gcc-mingw-w64 Build-Depends: gnat-4.6
>
> (And also, you have the issue that gcc-4.8 Build-Depends on libantlr-java and
> libecj-java, whose builds require either gcj-4.8 from the same source package,
> or openjdk-7-jdk which also Build-Depends on ecj.)
>
> I realize that these sorts of issues aren't as important for the practical
> problem of bootstrapping a new port; but ideally, from a philosophical point
> of view we should be able to bootstrap all our packages. (To be honest, the
> Java packages are such a tangled mess that I've given up on trying to
> bootstrap that part of the archive for now -- and many of those do get pulled
> into the minimal set of ca. 1473 source packages I get with my criteria.)
you can easily use botch for an analysis of dependency cycles under your
conditions as well. Botch is a collection of tools doing some mangling with
sets of binary and source package metadata and creating and analyzing a graph
build from them. By calling the involved tools a bit differently than it is
done in the example shell script (which is to demonstrate the practical
bootstrap scenario and thus drops B-D-I and arch:all) you can also analyze the
situation you are talking about.
More specifically, you want to change how the "create_graph" binary is called.
The --available option expects a filename of a file containing the list of
packages which is expected to be "available" in the bootstrapping sense [1].
This file is currently compiled containing all arch:all and all cross compiled
binary packages. You are free to not add any arch:all packages or only some to
that list.
Secondly, per default B-D-I dependencies are ignored but you can pass the
--keep-indep argument to the "create_graph" binary to let them be considered
nevertheless.
cheers, josch
[1] https://gitorious.org/debian-bootstrap/pages/Terminology#Availability
Reply to: