From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 11/12 v3] support/scripts: use show-info to extract dependency graph
Date: Mon, 15 Apr 2019 22:08:32 +0200 [thread overview]
Message-ID: <20190415200832.GB14607@scaer> (raw)
In-Reply-To: <cd1c2cccd0a2d39ba4ab7277d09ae0364ffa17f8.1555357645.git.yann.morin.1998@free.fr>
Arnout, All,
On 2019-04-15 21:47 +0200, Yann E. MORIN spake thusly:
> Currently, we extract the dependency graph from the aptly named but
> ad-hoc show-dependency-graph rule.
>
> We now have a better solution to report package information, with
> show-info.
>
> Since show-dependency-graph never went into a release so far, and
> show-info does provide the same (and more), swith to using show-info.
>
> Thanks to Adam for suggesting the coding style to have a readable code
> that is not ugly but still pleases flake8. Thanks to Arnout for
> suggesting the use of dict.get() to further simplify the code.
>
> Note: we do not use th reverse_dependencies field because it only
> contains those packages that have a kconfig option, so we'd miss most
> host packages.
>
> Reported-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> 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>
> Cc: Adam Duskett <aduskett@gmail.com>
> Cc: Arnout Vandecappelle <arnout@mind.be>
> Cc: Ricardo Martincoski <ricardo.martincoski@gmail.com>
> ---
> support/scripts/brpkgutil.py | 30 ++++++++++++++----------------
> 1 file changed, 14 insertions(+), 16 deletions(-)
>
> diff --git a/support/scripts/brpkgutil.py b/support/scripts/brpkgutil.py
> index f65068d348..780cdef49c 100644
> --- a/support/scripts/brpkgutil.py
> +++ b/support/scripts/brpkgutil.py
> @@ -1,12 +1,12 @@
> # Copyright (C) 2010-2013 Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> # Copyright (C) 2019 Yann E. MORIN <yann.morin.1998@free.fr>
>
> +import json
> import logging
> import os
> import subprocess
> from collections import defaultdict
>
> -
Spurious line removal... Can you fix when applying, or should I respin?
Regards,
Yann E. MORIN.
> # This function returns a tuple of four dictionaries, all using package
> # names as keys:
> # - a dictionary which values are the lists of packages that are the
> @@ -19,7 +19,7 @@ from collections import defaultdict
> def get_dependency_tree():
> logging.info("Getting dependency tree...")
>
> - deps = defaultdict(list)
> + deps = {}
> rdeps = defaultdict(list)
> types = {}
> versions = {}
> @@ -29,23 +29,21 @@ def get_dependency_tree():
> types['all'] = 'target'
> versions['all'] = ''
>
> - cmd = ["make", "-s", "--no-print-directory", "show-dependency-tree"]
> + cmd = ["make", "-s", "--no-print-directory", "show-info"]
> with open(os.devnull, 'wb') as devnull:
> p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=devnull,
> universal_newlines=True)
> - output = p.communicate()[0]
> + pkg_list = json.loads(p.communicate()[0])
>
> - for l in output.splitlines():
> - if " -> " in l:
> - pkg = l.split(" -> ")[0]
> - deps[pkg] += l.split(" -> ")[1].split()
> - for p in l.split(" -> ")[1].split():
> - rdeps[p].append(pkg)
> - else:
> - pkg, type_version = l.split(": ", 1)
> - t, v = "{} -".format(type_version).split(None, 2)[:2]
> - deps['all'].append(pkg)
> - types[pkg] = t
> - versions[pkg] = v
> + for pkg in pkg_list:
> + deps['all'].append(pkg)
> + types[pkg] = pkg_list[pkg]["type"]
> + deps[pkg] = pkg_list[pkg].get("dependencies", [])
> + for p in deps[pkg]:
> + rdeps[p].append(pkg)
> + versions[pkg] = \
> + None if pkg_list[pkg]["type"] == "rootfs" \
> + else "virtual" if pkg_list[pkg]["virtual"] \
> + else pkg_list[pkg]["version"]
>
> return (deps, rdeps, types, versions)
> --
> 2.14.1
>
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
next prev parent reply other threads:[~2019-04-15 20:08 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-15 19:47 [Buildroot] [PATCH 00/12 v3] infra: add solution to dump metadata from packages (branch yem/show-info-2) Yann E. MORIN
2019-04-15 19:47 ` [Buildroot] [PATCH 01/12 v3] infra/pkg-download: return just a list of URIs Yann E. MORIN
2019-04-15 19:47 ` [Buildroot] [PATCH 02/12 v3] infra/pkg-download: make the URI list a callable macro Yann E. MORIN
2019-04-15 19:47 ` [Buildroot] [PATCH 03/12 v3] infra/pkg-download: get rid of the FLOCK variable Yann E. MORIN
2019-04-15 19:47 ` [Buildroot] [PATCH 04/12 v3] infra/pkg-download: make the DOWNLOAD macro fully parameterised Yann E. MORIN
2019-04-15 19:47 ` [Buildroot] [PATCH 05/12 v3] infra/utils: add helper to generate comma-separated lists Yann E. MORIN
2019-04-15 19:47 ` [Buildroot] [PATCH 06/12 v3] fs: introduce variables with name and type Yann E. MORIN
2019-04-15 19:47 ` [Buildroot] [PATCH 07/12 v3] fs: introduce variable with all recursive dependencies Yann E. MORIN
2019-04-15 19:47 ` [Buildroot] [PATCH 08/12 v3] fs: add all recursive dependencies to packages list Yann E. MORIN
2019-04-15 19:47 ` [Buildroot] [PATCH 09/12 v3] core: introduce new global show-info Yann E. MORIN
2019-04-15 19:47 ` [Buildroot] [PATCH 10/12 v3] core: add per-package and per-filesystem show-info Yann E. MORIN
2019-04-15 19:47 ` [Buildroot] [PATCH 11/12 v3] support/scripts: use show-info to extract dependency graph Yann E. MORIN
2019-04-15 20:08 ` Yann E. MORIN [this message]
2019-04-22 0:14 ` Ricardo Martincoski
2019-04-22 6:53 ` Yann E. MORIN
2019-04-15 19:47 ` [Buildroot] [PATCH 12/12 v3] core: remove show-depednency-tree Yann E. MORIN
2019-04-15 21:51 ` [Buildroot] [PATCH 00/12 v3] infra: add solution to dump metadata from packages (branch yem/show-info-2) Arnout Vandecappelle
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190415200832.GB14607@scaer \
--to=yann.morin.1998@free.fr \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox