[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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

cheers, josch

[1] https://gitorious.org/debian-bootstrap/pages/Terminology#Availability

Reply to: