diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass index d6da53252f2..0043def53a1 100644 --- a/meta/classes/insane.bbclass +++ b/meta/classes/insane.bbclass @@ -821,6 +821,18 @@ def package_qa_check_rdepends(pkg, pkgdest, skip, taskdeps, packages, d): break if filerdepends: for key in filerdepends: + if bb.data.inherits_class('base-deps-resolver', d): + if key.split("(")[0] in (d.getVar("FILES_IPK_PKG:%s"%pkg) or ""): + # Skip qa check for files from IPK + bb.warn("Skipping qa check for file %s which is available in IPK"%key) + continue + else: + # Check for non lib files from IPK + ipk = get_rdeps_provider_ipk(d, key.split("(")[0]) + if ipk and ipk.strip().split(" ")[0] in rdepends: + bb.warn("Skipping qa check for file %s which is available in IPK %s"%(key, ipk)) + continue + error_msg = "%s contained in package %s requires %s, but no providers found in RDEPENDS_%s?" % \ (filerdepends[key].replace("_%s" % pkg, "").replace("@underscore@", "_"), pkg, key, pkg) package_qa_handle_error("file-rdeps", error_msg, d) diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass index 49d30caef70..20f510dfbfe 100644 --- a/meta/classes/package.bbclass +++ b/meta/classes/package.bbclass @@ -1993,6 +1993,10 @@ python package_do_shlibs() { deps.append(dep) continue bb.note("Couldn't find shared library provider for %s, used by files: %s" % (n[0], n[1])) + # Storing the details of the shared libraries that don't have a provider. + # This variable can be used to check whether any other prebuilt packages provide this. + if n[0] not in (d.getVar('SHLIBSKIPLIST_%s'%pkg) or "").split(): + d.appendVar('SHLIBSKIPLIST_%s'%pkg,"%s "%(n[0])) deps_file = os.path.join(pkgdest, pkg + ".shlibdeps") if os.path.exists(deps_file): @@ -2033,19 +2037,18 @@ python package_do_pkgconfig () { with open(file, 'r') as f: lines = f.readlines() for l in lines: - m = var_re.match(l) - if m: - name = m.group(1) - val = m.group(2) - pd.setVar(name, pd.expand(val)) - continue m = field_re.match(l) if m: hdr = m.group(1) exp = pd.expand(m.group(2)) - if hdr == 'Requires': + if hdr == 'Requires' or hdr == 'Requires.private': pkgconfig_needed[pkg] += exp.replace(',', ' ').split() - + continue + m = var_re.match(l) + if m: + name = m.group(1) + val = m.group(2) + pd.setVar(name, pd.expand(val)) for pkg in packages.split(): pkgs_file = os.path.join(shlibswork_dir, pkg + ".pclist") if pkgconfig_provided[pkg] != []: @@ -2078,6 +2081,8 @@ python package_do_pkgconfig () { found = True if found == False: bb.note("couldn't find pkgconfig module '%s' in any package" % n) + if n not in (d.getVar('PKGCONFIGSKIPLIST_%s'%pkg) or "").split(): + d.appendVar('PKGCONFIGSKIPLIST_%s'%pkg,"%s "%(n)) deps_file = os.path.join(pkgdest, pkg + ".pcdeps") if len(deps): with open(deps_file, 'w') as fd: diff --git a/meta/classes/useradd.bbclass b/meta/classes/useradd.bbclass index 0f0ed3446d2..c1e11aeea41 100644 --- a/meta/classes/useradd.bbclass +++ b/meta/classes/useradd.bbclass @@ -146,7 +146,7 @@ python useradd_sysroot_sstate () { task = d.getVar("BB_CURRENTTASK") if task == "package_setscene": bb.build.exec_func("useradd_sysroot", d) - elif task == "prepare_recipe_sysroot": + elif task == "prepare_recipe_sysroot" or task == "install_ipk_recipe_sysroot": # Used to update this recipe's own sysroot so the user/groups are available to do_install scriptfile = d.expand("${RECIPE_SYSROOT}${bindir}/postinst-useradd-${PN}") bb.build.exec_func("useradd_sysroot", d)