insane.bbclass: add host-user-contaminated test
- Add a test which checks for any paths outside of /home which are owned by the user running bitbake. - Add the test to WARN_QA by default. This test has been in meta-mentor for some time, and in our ERROR_QA for our builds, and has caught a number of issues for us. (From OE-Core rev: 1854dc60a4c7e97f0d6d26208fd42bf0dc1bfa7f) Signed-off-by: Christopher Larson <chris_larson@mentor.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
b95c340443
commit
2d4976772c
|
@ -32,14 +32,14 @@ WARN_QA ?= "ldflags useless-rpaths rpaths staticdev libdir xorg-driver-abi \
|
|||
installed-vs-shipped compile-host-path install-host-path \
|
||||
pn-overrides infodir build-deps file-rdeps \
|
||||
unknown-configure-option symlink-to-sysroot multilib \
|
||||
invalid-pkgconfig \
|
||||
invalid-pkgconfig host-user-contaminated \
|
||||
"
|
||||
ERROR_QA ?= "dev-so debug-deps dev-deps debug-files arch pkgconfig la \
|
||||
perms dep-cmp pkgvarcheck perm-config perm-line perm-link \
|
||||
split-strip packages-list pkgv-undefined var-undefined \
|
||||
version-going-backwards expanded-d invalid-chars \
|
||||
"
|
||||
FAKEROOT_QA = ""
|
||||
FAKEROOT_QA = "host-user-contaminated"
|
||||
FAKEROOT_QA[doc] = "QA tests which need to run under fakeroot. If any \
|
||||
enabled tests are listed here, the do_package_qa task will run under fakeroot."
|
||||
|
||||
|
@ -969,6 +969,39 @@ def package_qa_check_encoding(keys, encode, d):
|
|||
if not sane:
|
||||
break
|
||||
|
||||
HOST_USER_UID := "${@os.getuid()}"
|
||||
HOST_USER_GID := "${@os.getgid()}"
|
||||
|
||||
QAPATHTEST[host-user-contaminated] = "package_qa_check_host_user"
|
||||
def package_qa_check_host_user(path, name, d, elf, messages):
|
||||
"""Check for paths outside of /home which are owned by the user running bitbake."""
|
||||
|
||||
if not os.path.lexists(path):
|
||||
return
|
||||
|
||||
dest = d.getVar('PKGDEST', True)
|
||||
home = os.path.join(dest, 'home')
|
||||
if path == home or path.startswith(home + os.sep):
|
||||
return
|
||||
|
||||
try:
|
||||
stat = os.lstat(path)
|
||||
except OSError as exc:
|
||||
import errno
|
||||
if exc.errno != errno.ENOENT:
|
||||
raise
|
||||
else:
|
||||
check_uid = int(d.getVar('HOST_USER_UID', True))
|
||||
if stat.st_uid == check_uid:
|
||||
messages["host-user-contaminated"] = "%s is owned by uid %d, which is the same as the user running bitbake. This may be due to host contamination" % (path, check_uid)
|
||||
return False
|
||||
|
||||
check_gid = int(d.getVar('HOST_USER_GID', True))
|
||||
if stat.st_gid == check_gid:
|
||||
messages["host-user-contaminated"] = "%s is owned by gid %d, which is the same as the user running bitbake. This may be due to host contamination" % (path, check_gid)
|
||||
return False
|
||||
return True
|
||||
|
||||
# The PACKAGE FUNC to scan each package
|
||||
python do_package_qa () {
|
||||
import subprocess
|
||||
|
|
Loading…
Reference in New Issue