[Buildroot] [PATCH 11/11] support/scripts/pkg-stats: create and store defconfig information
Thomas Petazzoni
thomas.petazzoni at bootlin.com
Fri Jan 3 15:38:18 UTC 2020
Hello,
On Fri, 3 Jan 2020 16:18:48 +0100
Heiko Thiery <heiko.thiery at gmail.com> wrote:
> Collect information about developers and store with defconfig name.
>
> Signed-off-by: Heiko Thiery <heiko.thiery at gmail.com>
Seems good. Two comments below.
> ---
> support/scripts/pkg-stats | 48 +++++++++++++++++++++++++++++++++++----
> 1 file changed, 44 insertions(+), 4 deletions(-)
>
> diff --git a/support/scripts/pkg-stats b/support/scripts/pkg-stats
> index afd9cacafb..a85aefadf4 100755
> --- a/support/scripts/pkg-stats
> +++ b/support/scripts/pkg-stats
> @@ -88,6 +88,34 @@ def parse_developers(basepath=None):
> developers.append(Developer(name, files))
> return developers
>
> +class Defconfig:
> + def __init__(self, name, path):
> + self.name = name
> + self.path = path
> + self.developers = None
> +
> + def set_developers(self, developers):
> + """
> + Fills in the .developers field
> + """
> + self.developers = list()
> + for dev in developers:
> + for f in dev.files:
> + if self.path == f:
Perhaps add a Developer.has_file() method, to simplify this to:
for dev in developers:
if dev.has_file(f):
self.developers.append(dev.name)
> class Package:
> all_licenses = dict()
> all_license_files = list()
> @@ -791,7 +819,7 @@ def dump_html(packages, stats, date, commit, output):
> f.write(html_footer)
>
>
> -def dump_json(packages, stats, date, commit, output):
> +def dump_json(packages, defconfigs, stats, date, commit, output):
> # Format packages as a dictionnary instead of a list
> # Exclude local field that does not contains real date
> excluded_fields = ['url_worker']
> @@ -802,6 +830,13 @@ def dump_json(packages, stats, date, commit, output):
> if k not in excluded_fields
> } for pkg in packages
> }
> +
> + defconfigs = {
> + d.name: {
> + k: v
> + for k, v in d.__dict__.items()
> + } for d in defconfigs
> + }
> # Aggregate infrastructures into a single dict entry
> statistics = {
> k: v
> @@ -811,6 +846,7 @@ def dump_json(packages, stats, date, commit, output):
> statistics['infra'] = {k[6:]: v for k, v in stats.items() if k.startswith('infra-')}
> # The actual structure to dump, add commit and date to it
> final = {'packages': pkgs,
> + 'defconfigs': defconfigs,
> 'stats': statistics,
> 'commit': commit,
> 'date': str(date)}
> @@ -847,10 +883,14 @@ def __main__():
> date = datetime.datetime.utcnow()
> commit = subprocess.check_output(['git', 'rev-parse',
> 'HEAD']).splitlines()[0]
> - print("Build package list ...")
> - packages = get_pkglist(args.npackages, package_list)
Not sure why this is being moved around.
> print("Getting developers...")
> developers = parse_developers()
> + print("Build defconfig list ...")
> + defconfigs = get_defconfig_list()
> + for d in defconfigs:
> + d.set_developers(developers)
> + print("Build package list ...")
> + packages = get_pkglist(args.npackages, package_list)
> print("Getting package make info ...")
> package_init_make_info()
> print("Getting package details ...")
> @@ -875,7 +915,7 @@ def __main__():
> dump_html(packages, stats, date, commit, args.html)
> if args.json:
> print("Write JSON")
> - dump_json(packages, stats, date, commit, args.json)
> + dump_json(packages, defconfigs, stats, date, commit, args.json)
>
>
> __main__()
Thanks!
Thomas
--
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
More information about the buildroot
mailing list