support/graph-depends: use the new make-based dependency tree
authorYann E. MORIN <yann.morin.1998@free.fr>
Fri, 22 Mar 2019 21:07:07 +0000 (22:07 +0100)
committerThomas Petazzoni <thomas.petazzoni@bootlin.com>
Mon, 25 Mar 2019 18:31:02 +0000 (19:31 +0100)
commit9c32b9286dcb25f6508ded4096b55bf4ee387a83
tree3e88dc4a562462c84c58efb354739cff4a415e69
parent893dde0102af0718fec3f02d81ef205ba2fbe23f
support/graph-depends: use the new make-based dependency tree

Now that we can get the whole dependency tree from make, use it to
speed up things considerably.

So far, we had three functions to get the dependencies information:
get_depends(), get_rdepends(), and, somehow unrelated, get_version().

Because of the way %-show-{,r}depends works, getting the dependency tree
was expensive, the three functions all took a set of packages for which
to get the dependencies, in an attempt to limit the time it took to get
that tree, but we still had to call these functions iteratively, until
they returned no new dependency. This was pretty costly.

Now, getting the tree is much, much less costly, and we can get the
whole tree as cheaply as we previously got only the first-level
dependencies.

Furthermore, we can now also get the version information at the same
time, and that also brings in whether the package is virtual or not,
target or host.

So, we drop all three helper functions, and replace them with a single
one that returns all that information in one go: full dependency trees
(direct and reverse), per-package type, and per-package version.

Note: since commit 2d29fd96a (pkg-virtual: remove VERSION/SOURCE),
virtual packages are no longer reported as having a 'virtual' version,
so have since been displayed as regular packages in the graphs. Although
noone complained, this patch incidentally restores the initial
behaviour, and virtual packages are now correctly displayed as such
again.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Thomas De Schampheleire <patrickdepinguin@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
support/scripts/brpkgutil.py
support/scripts/graph-depends