From: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
To: openembedded-core@lists.openembedded.org
Subject: [PATCH 2/5] Move check that all installed files are shipped into insane.bbclass
Date: Sun, 18 Dec 2011 23:47:29 +0400 [thread overview]
Message-ID: <1324237652-15618-2-git-send-email-dbaryshkov@gmail.com> (raw)
In-Reply-To: <1324237652-15618-1-git-send-email-dbaryshkov@gmail.com>
Checking that all installed files are shipped is in reality a QA check.
It would benefit from mechanisms like ERROR_QA/WARNING_QA. So move it
into insane.bbclass. If some of the files are installed but should not
be shipped for some reasons, one can add them to the variable
IGNORE_UNSHIPPED_FILES.
Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
---
meta/classes/insane.bbclass | 50 ++++++++++++++++++++++++++++++++++++++++-
meta/classes/package.bbclass | 15 ------------
2 files changed, 48 insertions(+), 17 deletions(-)
diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass
index 5726e69..41b815c 100644
--- a/meta/classes/insane.bbclass
+++ b/meta/classes/insane.bbclass
@@ -100,7 +100,7 @@ def package_qa_get_machine_dict():
# Currently not being used by default "desktop"
-WARN_QA ?= "ldflags useless-rpaths rpaths"
+WARN_QA ?= "ldflags useless-rpaths rpaths unshipped"
ERROR_QA ?= "dev-so debug-deps dev-deps debug-files arch la2 pkgconfig la perms"
def package_qa_clean_path(path,d):
@@ -485,6 +485,49 @@ def package_qa_check_rdepends(pkg, pkgdest, skip, d):
return sane
+IGNORE_UNSHIPPED_FILES ??= ""
+
+def packages_qa_unshipped_files(d):
+ warn = (d.getVar('WARN_QA', True) or "").split()
+ err = (d.getVar('ERROR_QA', True) or "").split()
+ if not "unshipped" in warn + err:
+ return True
+
+ seen = d.getVar('IGNORE_UNSHIPPED_FILES', True).split()
+ unshipped = []
+ dvar = d.getVar('PKGD', True)
+ destvar = d.getVar('PKGDEST', True)
+ packages = d.getVar('PACKAGES', True).split()
+ for p in packages:
+ pdir = os.path.join(destvar, p)
+ for root, dirs, files in os.walk(pdir):
+ dir = root[len(pdir):]
+ if not dir:
+ dir = os.sep
+ for f in (files + dirs):
+ path = os.path.join(dir, f)
+ if path not in seen:
+ seen.append(path)
+
+ for root, dirs, files in os.walk(dvar):
+ dir = root[len(dvar):]
+ if not dir:
+ dir = os.sep
+ for f in (files + dirs):
+ path = os.path.join(dir, f)
+ if path not in seen:
+ unshipped.append(path)
+
+ pn = d.getVar('PN', True)
+
+ if unshipped == []:
+ return True
+
+ ret = package_qa_handle_error("unshipped", "For recipe %s, the following files/directories were installed but not shipped in any package:" % pn, d)
+ for f in unshipped:
+ package_qa_handle_error("unshipped", f, d)
+ return ret
+
# The PACKAGE FUNC to scan each package
python do_package_qa () {
bb.note("DO PACKAGE QA")
@@ -522,6 +565,7 @@ python do_package_qa () {
g = globals()
walk_sane = True
rdepends_sane = True
+ shipped_sane = True
for package in packages.split():
skip = (d.getVar('INSANE_SKIP_' + package, True) or "").split()
if skip:
@@ -546,8 +590,10 @@ python do_package_qa () {
if not package_qa_check_rdepends(package, pkgdest, skip, d):
rdepends_sane = False
+ if not packages_qa_unshipped_files(d):
+ shipped_sane = False
- if not walk_sane or not rdepends_sane:
+ if not walk_sane or not rdepends_sane or not shipped_sane:
bb.fatal("QA run found fatal errors. Please consider fixing them.")
bb.note("DONE with PACKAGE QA")
}
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index 39c1d4b..fbea9c6 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -957,21 +957,6 @@ python populate_packages () {
del localdata
os.chdir(workdir)
- unshipped = []
- for root, dirs, files in os.walk(dvar):
- dir = root[len(dvar):]
- if not dir:
- dir = os.sep
- for f in (files + dirs):
- path = os.path.join(dir, f)
- if ('.' + path) not in seen:
- unshipped.append(path)
-
- if unshipped != []:
- bb.warn("For recipe %s, the following files/directories were installed but not shipped in any package:" % pn)
- for f in unshipped:
- bb.warn(" " + f)
-
bb.build.exec_func("package_name_hook", d)
for pkg in package_list:
--
1.7.7.3
next prev parent reply other threads:[~2011-12-18 19:56 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-18 19:47 [PATCH 1/5] kernel.bbclass: move uImage handling to separate task Dmitry Eremin-Solenikov
2011-12-18 19:47 ` Dmitry Eremin-Solenikov [this message]
2011-12-18 23:29 ` [PATCH 2/5] Move check that all installed files are shipped into insane.bbclass Khem Raj
2011-12-19 0:02 ` Richard Purdie
2011-12-19 4:49 ` Khem Raj
2011-12-18 19:47 ` [PATCH 3/5] ncurses: drop compatibility symlink to remove QA warning Dmitry Eremin-Solenikov
2011-12-18 19:47 ` [PATCH 4/5] libatomics-ops: move docs to correct directory Dmitry Eremin-Solenikov
2011-12-19 12:18 ` Richard Purdie
2011-12-18 19:47 ` [PATCH 5/5] icecc.bbclass: also use icecc for kernel modules compilation Dmitry Eremin-Solenikov
2011-12-19 12:19 ` Richard Purdie
2011-12-18 20:13 ` [PATCH 1/5] kernel.bbclass: move uImage handling to separate task Koen Kooi
2011-12-18 20:27 ` Bruce Ashfield
2011-12-18 21:19 ` Koen Kooi
2011-12-19 1:39 ` Bruce Ashfield
2011-12-19 5:06 ` Khem Raj
2011-12-19 5:23 ` Bruce Ashfield
2011-12-19 9:03 ` Koen Kooi
2011-12-19 12:47 ` Dmitry Eremin-Solenikov
[not found] ` <D018C1C3-1814-4EB5-BB3D-87002117514E@dominion.thruhere.net>
2011-12-19 13:02 ` Dmitry Eremin-Solenikov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1324237652-15618-2-git-send-email-dbaryshkov@gmail.com \
--to=dbaryshkov@gmail.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.