[Buildroot] [PATCH] support/scripts/pkg-stats: add infra_coinfig to json_output

Heiko Thiery heiko.thiery at gmail.com
Thu Jun 24 13:11:45 UTC 2021


Hi Thomas,

Am Do., 24. Juni 2021 um 15:04 Uhr schrieb Thomas Petazzoni
<thomas.petazzoni at bootlin.com>:
>
> On Thu, 24 Jun 2021 14:57:03 +0200
> Heiko Thiery <heiko.thiery at gmail.com> wrote:
>
> > diff --git a/support/scripts/pkg-stats b/support/scripts/pkg-stats
> > index cc91d13167..f4dd034bd9 100755
> > --- a/support/scripts/pkg-stats
> > +++ b/support/scripts/pkg-stats
> > @@ -89,6 +89,7 @@ class Package:
> >          self.path = path
> >          self.pkg_path = os.path.dirname(path)
> >          self.infras = None
> > +        self.infra_config = None
> >          self.license = None
> >          self.has_license = False
> >          self.has_license_files = False
> > @@ -146,9 +147,9 @@ class Package:
> >              return False
> >          return True
> >
> > -    def set_infra(self):
> > +    def set_infra(self, config_info):
> >          """
> > -        Fills in the .infras field
> > +        Fills in the .infras and ..infra_config fields
> >          """
> >          self.infras = list()
> >          with open(os.path.join(brpath, self.path), 'r') as f:
> > @@ -163,6 +164,13 @@ class Package:
> >                  else:
> >                      self.infras.append(("target", infra))
> >
> > +        if config_info:
> > +            for pkg_name in config_info:
> > +                if config_info[pkg_name]['name'] == self.name:
> > +                    if self.infra_config == None:
> > +                        self.infra_config = list()
> > +                    self.infra_config.append(config_info[pkg_name]['type'])
> > +
> >      def set_license(self):
> >          """
> >          Fills in the .status['license'] and .status['license-files'] fields
> > @@ -369,8 +377,8 @@ def get_pkglist(npackages, package_list):
> >
> >  def get_config_packages():
> >      cmd = ["make", "--no-print-directory", "show-info"]
> > -    js = json.loads(subprocess.check_output(cmd))
> > -    return set([v["name"] for v in js.values()])
> > +    config_info = json.loads(subprocess.check_output(cmd))
> > +    return (config_info, set([v["name"] for v in config_info.values()]))
> >
> >
> >  def package_init_make_info():
> > @@ -1115,10 +1123,11 @@ def __main__():
> >      if args.nvd_path:
> >          import cve as cvecheck
> >
> > +    config_info = None
> >      if args.packages:
> >          package_list = args.packages.split(",")
> >      elif args.configpackages:
> > -        package_list = get_config_packages()
> > +        (config_info, package_list) = get_config_packages()
>
> Why is this information passed separately, and not within the
> package_list ? I'm a bit confused here. Why don't have you add a "type"
> field in the Package class that says whether it's a host, target, or
> both package ?

Because the package_list is only a list of package names. It is not a
class object. And I did not want to change the package_list variable.
This is also filled by "packages" command line arguments. Or am I
missing something here?

-- 
Heiko



More information about the buildroot mailing list