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

RFC: Jamie, a little transition analyzer




Hello,

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
  generates:

	[1] http://people.debian.org/~mehdi/jamie/deep2.png
	[2] http://people.debian.org/~mehdi/jamie/deep.png

  ¹: 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:

	[3] git://git.debian.org/users/mehdi/jamie.git

  It's "debianized". So, it should be easy to compile/install/test.
  You can find some test files in "examples/jamie".

*) Conclusion:

  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[4]
  (done by Stéphane Glondu) to make a complete transition tracker, if
  the RT is interested.

	[4] http://debian.glondu.net/monitor/ocaml/ocaml_transition_monitor.html

*) ...

  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.

Best regards,

--
Mehdi Dogguy مهدي الدڤي
http://dogguy.org/


Reply to: