RFC: Jamie, a little transition analyzer
Recently, I started writing a (little) tool which looks for conflicts
between transitions. AFAIK, there is no such tool for now and that's why
I wrote mine. The following (FAQ) will describe the tool:
*) How it's called?
"Jamie". I simply googled "britney's little sister" and "Jamie" was the
first answer I saw.
*) What does it do?
Given a list of transitions (string × list(package)) and considers the
following relation between packages:
∀ package, ∀ dependency,
dependency ∈ Build-deps(Source(package)) → package "needs" dependency
i.e. some package "needs" some "dependency" if the latter is a build
dependency of source package that provides "package". Or even simpler:
It's like the relation "build-depends on" but when considering a binary
package on the left side.
Using the command line option "-deep" will make Jamie use the
transitive closure of the relation "needs",
i.e. packages needed by needed+ packages
Once all packages are inspected, it prints the result on stdout and
generates a graph (in "png" format by default). The processing is
fairly simple but the results are interesting, IMHO.
For example, if we consider a pool¹ file "kde_ocaml_x.pool", Jamie
¹: a file in which you describe the set of packages for each transition.
Here, I took a pool file with:
- all packages maintained by the OCaml team,
- all packages maintained by the KDE team,
- and all packages maintained by the X team
It took about a second to compute the result and generate the graph.
The graph describes how a transition can interfere with another one
and what are the involved packages. Relation between packages from the
same set/cluster should be considered as a hint for britney. The rest
should help to know which transition should go first.
To show relations between packages from the same transition, use the
command line option "-x".
/!\ Note that the first run of Jamie will download Sources file of all
areas and Packages files for all architectures and areas for "unstable",
approx. 350 MB. You can use "-p" and "-s" to specify a Packages file and
a Sources file.
*) How can I test?
You can clone the Git repository and compile it from sources:
It's "debianized". So, it should be easy to compile/install/test.
You can find some test files in "examples/jamie".
I hope that Jamie will be useful for the Release Team. You may see
some bugs, in which case, I'll be happy to fix them. Just, let me know.
I'll be also happy if you have any comment or a feature request.
Next, I'm planning to integrate Jamie with the transition monitor
(done by Stéphane Glondu) to make a complete transition tracker, if
the RT is interested.
There is also another tool called Maddie in the same Git repository
but I don't consider it as finished yet (even if it works perfectly
for me). It also has some test files, if you're interested.
Mehdi Dogguy مهدي الدڤي