mirror of
https://git.yoctoproject.org/poky
synced 2026-04-17 00:32:13 +02:00
package_manager/__init__.py: add function to give user reason about a missing package
When users specify some package in IMAGE_INSTALL, but get some error at rootfs time, the user might be confusing. This usually happens when the user puts a recipe name in IMAGE_INSTALL. To helper user understand more about what's going on, add a common function here which makes use of pkgdata data to give the possible reason about a missing package. This function is expected to be used by package backends such as rpm. (From OE-Core rev: 4c1f63a7618c5eef1684ecc52af50821a49e2e91) Signed-off-by: Chen Qi <Qi.Chen@windriver.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -17,6 +17,7 @@ import oe.utils
|
||||
import oe.path
|
||||
import string
|
||||
from oe.gpg_sign import get_signer
|
||||
import oe.packagedata
|
||||
import hashlib
|
||||
import fnmatch
|
||||
|
||||
@@ -447,6 +448,27 @@ class PackageManager(object, metaclass=ABCMeta):
|
||||
return res
|
||||
return _append(uris, base_paths)
|
||||
|
||||
def get_missing_pkg_reason(self, pkg):
|
||||
"""
|
||||
Return a string describing the possible reason of a missing package.
|
||||
"""
|
||||
reason = ""
|
||||
if not oe.packagedata.packaged(pkg, self.d):
|
||||
if oe.packagedata.has_pkgdata(pkg, self.d):
|
||||
packaged_pkgs = []
|
||||
recipe_data = oe.packagedata.read_pkgdata(pkg, self.d)
|
||||
for subpkg in recipe_data.get("PACKAGES", "").split():
|
||||
if oe.packagedata.packaged(subpkg, self.d):
|
||||
packaged_pkgs.append(subpkg)
|
||||
reason = "%s is a recipe. Its generated packages are: %s\n" % (pkg, packaged_pkgs)
|
||||
reason += "Either specify a generated package or set ALLOW_EMPTY:${PN} = \"1\" in %s recipe\n" % pkg
|
||||
else:
|
||||
reason = "%s is neither a recipe nor a generated package.\n" % pkg
|
||||
else:
|
||||
reason = "%s is a generated package.\n" % pkg
|
||||
reason += "The reason it's not found might be that it's not in %s\n" % oe.path.join(self.d.getVar('WORKDIR'), "oe-rootfs-repo")
|
||||
return reason
|
||||
|
||||
def create_packages_dir(d, subrepo_dir, deploydir, taskname, filterbydependencies, include_self=False):
|
||||
"""
|
||||
Go through our do_package_write_X dependencies and hardlink the packages we depend
|
||||
|
||||
Reference in New Issue
Block a user