[elbe-devel] [PATCH v2 1/5] elbeproject: Add gen_licenses method

Olivier Dion dion at linutronix.de
Mon Mar 16 17:24:44 CET 2020


On Sun, 15 Mar 2020, Olivier Dion <dion at linutronix.de> wrote:
> The method check for the existance of the copyright file for each
> packages of a RFS.  If a copyright file is missing, it's copied from
> the buildenv.  If the file is also missing from the buildenv, then an
> error is emitted.
>
> Signed-off-by: Olivier Dion <dion at linutronix.de>
> ---
>  elbepack/elbeproject.py | 42 +++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 42 insertions(+)
>
> diff --git a/elbepack/elbeproject.py b/elbepack/elbeproject.py
> index b64a5fcb..765dd956 100644
> --- a/elbepack/elbeproject.py
> +++ b/elbepack/elbeproject.py
> @@ -923,3 +923,45 @@ class ElbeProject (object):
>              except SystemError as e:
>                  logging.exception("Commiting changes failed")
>                  raise AptCacheCommitError(str(e))
> +
> +    def gen_licenses(self, rfs, env, pkg_list):
> +
> +        lic_txt_fname = os.path.join(self.builddir,
> +                                     "licence-%s.txt" % rfs)
> +        lic_xml_fname = os.path.join(self.builddir,
> +                                     "licence-%s.xml" % rfs)
> +        pkg_list.sort()
> +
> +        if env is not self.buildenv:
> +
> +            DOC = "/usr/share/doc"
> +
> +            do("rm -rf '%s'" % env.rfs.fname(DOC))

               Err this command is not part of the patch.  It was there only to
               force copying for testing ..
> +
> +            if not env.rfs.exists(DOC):
> +                logging.warning("%s doesn't exists in RFS %s, "
> +                                "but is need for licenses generation",
> +                                DOC, rfs)
> +                env.rfs.mkdir_p(DOC)
> +
> +            for pkg in pkg_list:
> +
> +                pkg_doc = os.path.join(DOC, pkg, "copyright")
> +
> +                if env.rfs.exists(pkg_doc):
> +                    continue
> +
> +                env.rfs.mkdir_p(os.path.join(DOC, pkg))
> +
> +                # Try to copy from buildenv or fail
> +                try:
> +                    do("cp '%s' '%s'" % (self.buildenv.rfs.fname(pkg_doc),
> +                                         env.rfs.fname(pkg_doc)))
> +                except CommandError as e:
> +                    logging.error("Missing copyright file for package '%s' in RFS '%s'. "
> +                                  "The copyright file can not be found in the buildenv" %
> +                                  (pkg, rfs))
> +
> +        with io.open(lic_txt_fname, 'w+',
> +                     encoding='utf-8', errors='replace') as f:
> +            env.rfs.write_licenses(f, pkg_list, lic_xml_fname)
> -- 
> 2.25.1
>
-- 
Olivier Dion
Linutronix GmbH | Bahnhofstrasse 3 | D-88690 Uhldingen-Mühlhofen



More information about the elbe-devel mailing list