On Mon, 2024-10-07 at 22:39 +0200, Claus Stovgaard wrote: > We can skip processing the installed-pkgs file if globs is empty. > This is the case if self.d.getVar for IMAGE_INSTALL_COMPLEMENTARY > returns an empty string. If globs is an empty string the result from > processing with empty glob in oe-pkgdata-util will always be 0 > packages > to install. > > Instead of return early on this we just skip and still generate the > locale archive if needed. > > Signed-off-by: Claus Stovgaard <[email protected]> > --- > meta/lib/oe/package_manager/__init__.py | 76 ++++++++++++----------- > -- > 1 file changed, 37 insertions(+), 39 deletions(-) > > diff --git a/meta/lib/oe/package_manager/__init__.py > b/meta/lib/oe/package_manager/__init__.py > index d3b2317894..2100a97c12 100644 > --- a/meta/lib/oe/package_manager/__init__.py > +++ b/meta/lib/oe/package_manager/__init__.py > @@ -365,45 +365,43 @@ class PackageManager(object, > metaclass=ABCMeta): > for complementary_linguas in > (self.d.getVar('IMAGE_LINGUAS_COMPLEMENTARY') or "").split(): > globs += (" " + complementary_linguas) % lang > > - if globs is None: > - return > - > - # we need to write the list of installed packages to a file > because the > - # oe-pkgdata-util reads it from a file > - with tempfile.NamedTemporaryFile(mode="w+", > prefix="installed-pkgs") as installed_pkgs: > - pkgs = self.list_installed() > - > - provided_pkgs = set() > - for pkg in pkgs.values(): > - provided_pkgs |= set(pkg.get('provs', [])) > - > - output = oe.utils.format_pkg_list(pkgs, "arch") > - installed_pkgs.write(output) > - installed_pkgs.flush() > - > - cmd = ["oe-pkgdata-util", > - "-p", self.d.getVar('PKGDATA_DIR'), "glob", > installed_pkgs.name, > - globs] > - exclude = self.d.getVar('PACKAGE_EXCLUDE_COMPLEMENTARY') > - if exclude: > - cmd.extend(['--exclude=' + > '|'.join(exclude.split())]) > - try: > - bb.note('Running %s' % cmd) > - proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, > stderr=subprocess.PIPE) > - stdout, stderr = proc.communicate() > - if stderr: bb.note(stderr.decode("utf-8")) > - complementary_pkgs = stdout.decode("utf-8") > - complementary_pkgs = set(complementary_pkgs.split()) > - skip_pkgs = sorted(complementary_pkgs & > provided_pkgs) > - install_pkgs = sorted(complementary_pkgs - > provided_pkgs) > - bb.note("Installing complementary packages ... %s > (skipped already provided packages %s)" % ( > - ' '.join(install_pkgs), > - ' '.join(skip_pkgs))) > - self.install(install_pkgs, hard_depends_only=True) > - except subprocess.CalledProcessError as e: > - bb.fatal("Could not compute complementary packages > list. Command " > - "'%s' returned %d:\n%s" % > - (' '.join(cmd), e.returncode, > e.output.decode("utf-8"))) > + if globs: > + # we need to write the list of installed packages to a > file because the > + # oe-pkgdata-util reads it from a file > + with tempfile.NamedTemporaryFile(mode="w+", > prefix="installed-pkgs") as installed_pkgs: > + pkgs = self.list_installed() > + > + provided_pkgs = set() > + for pkg in pkgs.values(): > + provided_pkgs |= set(pkg.get('provs', [])) > + > + output = oe.utils.format_pkg_list(pkgs, "arch") > + installed_pkgs.write(output) > + installed_pkgs.flush() > + > + cmd = ["oe-pkgdata-util", > + "-p", self.d.getVar('PKGDATA_DIR'), "glob", > installed_pkgs.name, > + globs] > + exclude = > self.d.getVar('PACKAGE_EXCLUDE_COMPLEMENTARY') > + if exclude: > + cmd.extend(['--exclude=' + > '|'.join(exclude.split())]) > + try: > + bb.note('Running %s' % cmd) > + proc = subprocess.Popen(cmd, > stdout=subprocess.PIPE, stderr=subprocess.PIPE) > + stdout, stderr = proc.communicate() > + if stderr: bb.note(stderr.decode("utf-8")) > + complementary_pkgs = stdout.decode("utf-8") > + complementary_pkgs = > set(complementary_pkgs.split()) > + skip_pkgs = sorted(complementary_pkgs & > provided_pkgs) > + install_pkgs = sorted(complementary_pkgs - > provided_pkgs) > + bb.note("Installing complementary packages ... > %s (skipped already provided packages %s)" % ( > + ' '.join(install_pkgs), > + ' '.join(skip_pkgs))) > + self.install(install_pkgs, > hard_depends_only=True) > + except subprocess.CalledProcessError as e: > + bb.fatal("Could not compute complementary > packages list. Command " > + "'%s' returned %d:\n%s" % > + (' '.join(cmd), e.returncode, > e.output.decode("utf-8"))) > > if self.d.getVar('IMAGE_LOCALES_ARCHIVE') == '1': > target_arch = self.d.getVar('TARGET_ARCH')
Hi Ross. Now you commented on v2 of the patch. Hope you think v3 is okay. /Claus
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#205647): https://lists.openembedded.org/g/openembedded-core/message/205647 Mute This Topic: https://lists.openembedded.org/mt/108876924/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
