From 00f871cd07d7f44788124510a75b7160fdc60bb5 Mon Sep 17 00:00:00 2001 From: Chen Qi Date: Thu, 11 Sep 2025 20:33:23 -0700 Subject: [PATCH] package_manager/rpm: give out useful reason about unmatched packages Unmatched package error is a common error at rootfs. We want to give out more useful information to user. Before this change, if some user specifiy IMAGE_INSTALL += "catch2", the error message will be like: No match for argument: catch2 Error: Unable to find a match: catch2 With this patch, the error message will be like: No match for argument: catch2 Error: Unable to find a match: catch2 catch2 is a recipe. Its generated packages are: ['catch2-src', 'catch2-dbg', 'catch2-staticdev', 'catch2-dev', 'catch2-doc'] Either specify a generated package or set ALLOW_EMPTY:${PN} = "1" in catch2 recipe Signed-off-by: Chen Qi Signed-off-by: Mathieu Dubois-Briand Signed-off-by: Richard Purdie --- meta/lib/oe/package_manager/rpm/__init__.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/meta/lib/oe/package_manager/rpm/__init__.py b/meta/lib/oe/package_manager/rpm/__init__.py index 323ec5008fb..20e6cb8744c 100644 --- a/meta/lib/oe/package_manager/rpm/__init__.py +++ b/meta/lib/oe/package_manager/rpm/__init__.py @@ -330,8 +330,15 @@ class RpmPM(PackageManager): return output except subprocess.CalledProcessError as e: if print_output: + e_output = e.output.decode("utf-8") + extra_info = "" + if "install" in dnf_args: + if "Error: Unable to find a match:" in e_output: + no_match_pkgs = re.search(r'Error: Unable to find a match: ([a-z0-9+\-\._\s]+)', e_output).group(1).split() + for pkg in no_match_pkgs: + extra_info += self.get_missing_pkg_reason(pkg) (bb.note, bb.fatal)[fatal]("Could not invoke dnf. Command " - "'%s' returned %d:\n%s" % (' '.join(cmd), e.returncode, e.output.decode("utf-8"))) + "'%s' returned %d:\n%s%s" % (' '.join(cmd), e.returncode, e_output, extra_info)) else: (bb.note, bb.fatal)[fatal]("Could not invoke dnf. Command " "'%s' returned %d:" % (' '.join(cmd), e.returncode)) -- 2.47.3