diff options
Diffstat (limited to 'external/poky/meta/lib')
-rw-r--r-- | external/poky/meta/lib/oe/buildhistory_analysis.py | 2 | ||||
-rw-r--r-- | external/poky/meta/lib/oe/package_manager.py | 41 | ||||
-rw-r--r-- | external/poky/meta/lib/oe/rootfs.py | 2 | ||||
-rw-r--r-- | external/poky/meta/lib/oe/sdk.py | 4 | ||||
-rw-r--r-- | external/poky/meta/lib/oeqa/selftest/context.py | 1 |
5 files changed, 43 insertions, 7 deletions
diff --git a/external/poky/meta/lib/oe/buildhistory_analysis.py b/external/poky/meta/lib/oe/buildhistory_analysis.py index ad7fceb8..d3cde4f6 100644 --- a/external/poky/meta/lib/oe/buildhistory_analysis.py +++ b/external/poky/meta/lib/oe/buildhistory_analysis.py @@ -127,7 +127,7 @@ class ChangeRecord: removed = list(set(aitems) - set(bitems)) added = list(set(bitems) - set(aitems)) - if not removed and not added: + if not removed and not added and self.fieldname in ['RPROVIDES', 'RDEPENDS', 'RRECOMMENDS', 'RSUGGESTS', 'RREPLACES', 'RCONFLICTS']: depvera = bb.utils.explode_dep_versions2(self.oldvalue, sort=False) depverb = bb.utils.explode_dep_versions2(self.newvalue, sort=False) for i, j in zip(depvera.items(), depverb.items()): diff --git a/external/poky/meta/lib/oe/package_manager.py b/external/poky/meta/lib/oe/package_manager.py index 7d880481..882e7c42 100644 --- a/external/poky/meta/lib/oe/package_manager.py +++ b/external/poky/meta/lib/oe/package_manager.py @@ -1329,8 +1329,6 @@ class OpkgPM(OpkgDpkgPM): cmd = "%s %s" % (self.opkg_cmd, self.opkg_args) for exclude in (self.d.getVar("PACKAGE_EXCLUDE") or "").split(): cmd += " --add-exclude %s" % exclude - for bad_recommendation in (self.d.getVar("BAD_RECOMMENDATIONS") or "").split(): - cmd += " --add-ignore-recommends %s" % bad_recommendation cmd += " install " cmd += " ".join(pkgs) @@ -1399,6 +1397,45 @@ class OpkgPM(OpkgDpkgPM): def list_installed(self): return OpkgPkgsList(self.d, self.target_rootfs, self.config_file).list_pkgs() + def handle_bad_recommendations(self): + bad_recommendations = self.d.getVar("BAD_RECOMMENDATIONS") or "" + if bad_recommendations.strip() == "": + return + + status_file = os.path.join(self.opkg_dir, "status") + + # If status file existed, it means the bad recommendations has already + # been handled + if os.path.exists(status_file): + return + + cmd = "%s %s info " % (self.opkg_cmd, self.opkg_args) + + with open(status_file, "w+") as status: + for pkg in bad_recommendations.split(): + pkg_info = cmd + pkg + + try: + output = subprocess.check_output(pkg_info.split(), stderr=subprocess.STDOUT).strip().decode("utf-8") + except subprocess.CalledProcessError as e: + bb.fatal("Cannot get package info. Command '%s' " + "returned %d:\n%s" % (pkg_info, e.returncode, e.output.decode("utf-8"))) + + if output == "": + bb.note("Ignored bad recommendation: '%s' is " + "not a package" % pkg) + continue + + for line in output.split('\n'): + if line.startswith("Status:"): + status.write("Status: deinstall hold not-installed\n") + else: + status.write(line + "\n") + + # Append a blank line after each package entry to ensure that it + # is separated from the following entry + status.write("\n") + def dummy_install(self, pkgs): """ The following function dummy installs pkgs and returns the log of output. diff --git a/external/poky/meta/lib/oe/rootfs.py b/external/poky/meta/lib/oe/rootfs.py index aa9fb2e0..e5512d09 100644 --- a/external/poky/meta/lib/oe/rootfs.py +++ b/external/poky/meta/lib/oe/rootfs.py @@ -879,6 +879,8 @@ class OpkgRootfs(DpkgOpkgRootfs): self.pm.update() + self.pm.handle_bad_recommendations() + if self.progress_reporter: self.progress_reporter.next_stage() diff --git a/external/poky/meta/lib/oe/sdk.py b/external/poky/meta/lib/oe/sdk.py index 153b07d7..ef81f8cf 100644 --- a/external/poky/meta/lib/oe/sdk.py +++ b/external/poky/meta/lib/oe/sdk.py @@ -84,10 +84,6 @@ class Sdk(object, metaclass=ABCMeta): bb.warn("cannot remove SDK dir: %s" % path) def install_locales(self, pm): - # This is only relevant for glibc - if self.d.getVar("TCLIBC") != "glibc": - return - linguas = self.d.getVar("SDKIMAGE_LINGUAS") if linguas: import fnmatch diff --git a/external/poky/meta/lib/oeqa/selftest/context.py b/external/poky/meta/lib/oeqa/selftest/context.py index c5212903..c56e53dc 100644 --- a/external/poky/meta/lib/oeqa/selftest/context.py +++ b/external/poky/meta/lib/oeqa/selftest/context.py @@ -108,6 +108,7 @@ class OESelftestTestContextExecutor(OETestContextExecutor): logdir = os.environ.get("BUILDDIR") if 'LOG_DIR' in bbvars: logdir = bbvars['LOG_DIR'] + bb.utils.mkdirhier(logdir) args.output_log = logdir + '/%s-results-%s.log' % (self.name, args.test_start_time) super(OESelftestTestContextExecutor, self)._process_args(logger, args) |