diff options
author | Paul Sokolovsky <pmiscml@gmail.com> | 2006-09-12 16:01:09 +0000 |
---|---|---|
committer | Paul Sokolovsky <pmiscml@gmail.com> | 2006-09-12 16:01:09 +0000 |
commit | 6d54a192a79f5bbfe008b790e5a8f088ba496a91 (patch) | |
tree | e90f111961a59ed893fb0282ae14bea88fca0452 /classes | |
parent | bb1352ba5f25781d237e20ad4e8bce6e46026abf (diff) | |
parent | 2794320ec9e9a4fb99a7e20c8bef15a06ed788b2 (diff) |
merge of '3585034766082dee6be36ed64f840eaeee7eb14e'
and 'c2682ec1dd418a696aa5cec3d278f7cfd4386443'
Diffstat (limited to 'classes')
-rw-r--r-- | classes/icecc.bbclass | 2 | ||||
-rw-r--r-- | classes/insane.bbclass | 70 |
2 files changed, 63 insertions, 9 deletions
diff --git a/classes/icecc.bbclass b/classes/icecc.bbclass index 66a5bf79e3..2f34d408d2 100644 --- a/classes/icecc.bbclass +++ b/classes/icecc.bbclass @@ -10,7 +10,7 @@ def icc_determine_gcc_version(gcc): 'i686-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5363)' """ - return os.popen("%s --version" % gcc ).readline()[2] + return os.popen("%s --version" % gcc ).readline().split()[2] def create_env(bb,d): """ diff --git a/classes/insane.bbclass b/classes/insane.bbclass index 395f124572..ead718db7f 100644 --- a/classes/insane.bbclass +++ b/classes/insane.bbclass @@ -1,4 +1,3 @@ -# # BB Class inspired by ebuild.sh # # This class will test files after installation for certain @@ -23,18 +22,73 @@ inherit package PACKAGE_DEPENDS += "pax-utils-native" PACKAGEFUNCS += " do_package_qa " -def package_qa_check_rpath(path): +def package_qa_check_rpath(file,name,d): + """ + Check for dangerous RPATHs + """ + import bb, os + scanelf = os.path.join(bb.data.getVar('STAGING_BINDIR',d,True),'scanelf') + bad_dir = bb.data.getVar('TMPDIR', d, True) + "/work" + if not os.path.exists(scanelf): + bb.note("Can not check RPATH scanelf not found") + if not bad_dir in bb.data.getVar('WORKDIR', d, True): + bb.error("This class assumed that WORKDIR is ${TMPDIR}/work... Not doing any check") + + output = os.popen("%s -Byr %s" % (scanelf,file)) + txt = output.readline().rsplit() + if bad_dir in txt: + bb.error("QA Issue package %s contains bad RPATH %s in file %s" % (name, txt, file)) + pass -def package_qa_check_devdbg(path, name): +def package_qa_check_devdbg(path, name,d): + """ + Check for debug remains inside the binary or + non dev packages containing + """ + + import bb + if not "-dev" in name: + if path[-3:] == ".so": + bb.error("QA Issue: non dev package contains .so") + + if not "-dbg" in name: + if path[-4:] == ".dbg": + bb.error("QA Issue: non debug package contains .dbg file") + +def package_qa_check_perm(path,name,d): + """ + Check the permission of files + """ pass -def package_qa_check_perm(path): +def package_qa_check_arch(path,name,d): + """ + Check if archs are compatible + """ pass -def package_qa_check_staged(path): +def package_qa_check_pcla(path,name,d): + """ + .pc and .la files should not point + """ + +def package_qa_check_staged(path,d): + """ + Check staged la and pc files for sanity + -e.g. installed being false + """ pass +# Walk over all files in a directory and call func +def package_qa_walk(path, funcs, package,d): + import os + for root, dirs, files in os.walk(path): + for file in files: + path = os.path.join(root,file) + for func in funcs: + func(path, package,d) + # The PACKAGE FUNC to scan each package python do_package_qa () { @@ -49,9 +103,7 @@ python do_package_qa () { for package in packages.split(): bb.note("Package: %s" % package) path = "%s/install/%s" % (workdir, package) - package_qa_check_rpath(path) - package_qa_check_devdbg(path,package) - package_qa_check_perm(path) + package_qa_walk(path, [package_qa_check_rpath, package_qa_check_devdbg, package_qa_check_perm, package_qa_check_arch], package, d) } @@ -59,4 +111,6 @@ python do_package_qa () { addtask qa_staging after do_populate_staging before do_build python do_qa_staging() { bb.note("Staged!") + + package_qa_check_staged(bb.data.getVar('STAGING_DIR',d,True), d) } |