mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-05 05:04:44 +02:00
bitbake.conf/pseudo: Switch from exclusion list to inclusion list
Currently, pseudo tracks all files referenced within its presence unless they're listed in an exclusion list. The exclusion list has grown to be fairly unwieldy. This patch swaps PSEUDO_IGNORE_PATHS for PSEUDO_INCLUDE_PATHS which in theory should be easier and more explicit to maintain. This change does drop many directories from pseudo coverage including /home and /tmp. There may be adapatations needed for recipes/classes using pseudo in specific ways. (From OE-Core rev: 2502da81709f25de499277b28d33c915638c45f6) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
c40f78b267
commit
6a2ad60ecc
|
@ -44,7 +44,6 @@ python do_populate_lic() {
|
|||
oe.qa.exit_if_errors(d)
|
||||
}
|
||||
|
||||
PSEUDO_IGNORE_PATHS .= ",${@','.join(((d.getVar('COMMON_LICENSE_DIR') or '') + ' ' + (d.getVar('LICENSE_PATH') or '') + ' ' + d.getVar('COREBASE') + '/meta/COPYING').split())}"
|
||||
# it would be better to copy them in do_install:append, but find_license_files is python
|
||||
python perform_packagecopy:prepend () {
|
||||
enabled = oe.data.typed_value('LICENSE_CREATE_PACKAGE', d)
|
||||
|
|
|
@ -733,14 +733,14 @@ def check_sanity_version_change(status, d):
|
|||
status.addresult("TMPDIR is setuid, please don't build in a setuid directory")
|
||||
|
||||
# Check that a user isn't building in a path in PSEUDO_IGNORE_PATHS
|
||||
pseudoignorepaths = d.getVar('PSEUDO_IGNORE_PATHS', expand=True).split(",")
|
||||
pseudoignorepaths = (d.getVar('PSEUDO_IGNORE_PATHS', expand=True) or "").split(",")
|
||||
workdir = d.getVar('WORKDIR', expand=True)
|
||||
for i in pseudoignorepaths:
|
||||
if i and workdir.startswith(i):
|
||||
status.addresult("You are building in a path included in PSEUDO_IGNORE_PATHS " + str(i) + " please locate the build outside this path.\n")
|
||||
|
||||
# Check if PSEUDO_IGNORE_PATHS and paths under pseudo control overlap
|
||||
pseudoignorepaths = d.getVar('PSEUDO_IGNORE_PATHS', expand=True).split(",")
|
||||
pseudoignorepaths = (d.getVar('PSEUDO_IGNORE_PATHS', expand=True) or "").split(",")
|
||||
pseudo_control_dir = "${D},${PKGD},${PKGDEST},${IMAGEROOTFS},${SDK_OUTPUT}"
|
||||
pseudocontroldir = d.expand(pseudo_control_dir).split(",")
|
||||
for i in pseudoignorepaths:
|
||||
|
|
|
@ -76,7 +76,7 @@ SSTATE_SCAN_CMD_NATIVE ??= 'grep -Irl -e ${RECIPE_SYSROOT} -e ${RECIPE_SYSROOT_N
|
|||
SSTATE_HASHEQUIV_FILEMAP ?= " \
|
||||
populate_sysroot:*/postinst-useradd-*:${TMPDIR} \
|
||||
populate_sysroot:*/postinst-useradd-*:${COREBASE} \
|
||||
populate_sysroot:*/postinst-useradd-*:regex-\s(PATH|PSEUDO_IGNORE_PATHS|HOME|LOGNAME|OMP_NUM_THREADS|USER)=.*\s \
|
||||
populate_sysroot:*/postinst-useradd-*:regex-\s(PATH|PSEUDO_INCLUDE_PATHS|HOME|LOGNAME|OMP_NUM_THREADS|USER)=.*\s \
|
||||
populate_sysroot:*/crossscripts/*:${TMPDIR} \
|
||||
populate_sysroot:*/crossscripts/*:${COREBASE} \
|
||||
"
|
||||
|
|
|
@ -199,8 +199,6 @@ IMAGE_LOCALES_ARCHIVE ?= '1'
|
|||
# aren't yet available.
|
||||
PSEUDO_PASSWD = "${IMAGE_ROOTFS}:${STAGING_DIR_NATIVE}"
|
||||
|
||||
PSEUDO_IGNORE_PATHS .= ",${WORKDIR}/intercept_scripts,${WORKDIR}/oe-rootfs-repo,${WORKDIR}/sstate-build-image_complete"
|
||||
|
||||
PACKAGE_EXCLUDE ??= ""
|
||||
PACKAGE_EXCLUDE[type] = "list"
|
||||
|
||||
|
@ -666,6 +664,8 @@ MULTILIBRE_ALLOW_REP += "${base_bindir} ${base_sbindir} ${bindir} ${sbindir} ${l
|
|||
MULTILIB_CHECK_FILE = "${WORKDIR}/multilib_check.py"
|
||||
MULTILIB_TEMP_ROOTFS = "${WORKDIR}/multilib"
|
||||
|
||||
PSEUDO_INCLUDE_PATHS .= ",${MULTILIB_TEMP_ROOTFS}"
|
||||
|
||||
do_fetch[noexec] = "1"
|
||||
do_unpack[noexec] = "1"
|
||||
do_patch[noexec] = "1"
|
||||
|
|
|
@ -30,7 +30,7 @@ WICVARS ?= "\
|
|||
KERNEL_CONSOLE \
|
||||
KERNEL_IMAGETYPE \
|
||||
MACHINE \
|
||||
PSEUDO_IGNORE_PATHS \
|
||||
PSEUDO_INCLUDE_PATHS \
|
||||
RECIPE_SYSROOT_NATIVE \
|
||||
ROOTFS_SIZE \
|
||||
STAGING_DATADIR \
|
||||
|
@ -96,8 +96,6 @@ IMAGE_CMD:wic[vardepsexclude] = "WKS_FULL_PATH WKS_FILES TOPDIR"
|
|||
SPDX_IMAGE_PURPOSE:wic = "diskImage"
|
||||
do_image_wic[cleandirs] = "${WORKDIR}/build-wic"
|
||||
|
||||
PSEUDO_IGNORE_PATHS .= ",${WORKDIR}/build-wic"
|
||||
|
||||
# Rebuild when the wks file or vars in WICVARS change
|
||||
USING_WIC = "${@bb.utils.contains_any('IMAGE_FSTYPES', 'wic ' + ' '.join('wic.%s' % c for c in '${CONVERSIONTYPES}'.split()), '1', '', d)}"
|
||||
WKS_FILE_CHECKSUM = "${@'${WKS_FULL_PATH}:%s' % os.path.exists('${WKS_FULL_PATH}') if '${USING_WIC}' else ''}"
|
||||
|
|
|
@ -52,6 +52,8 @@ SDK_DEPLOY = "${DEPLOY_DIR}/sdk"
|
|||
|
||||
SDKDEPLOYDIR = "${WORKDIR}/${SDKMACHINE}-deploy-${PN}-populate-sdk"
|
||||
|
||||
PSEUDO_INCLUDE_PATHS .= ",${SDK_DIR}"
|
||||
|
||||
B:task-populate-sdk = "${SDK_DIR}"
|
||||
|
||||
SDKTARGETSYSROOT = "${SDKPATH}/sysroots/${REAL_MULTIMACH_TARGET_SYS}"
|
||||
|
@ -263,8 +265,6 @@ python do_populate_sdk_setscene () {
|
|||
}
|
||||
addtask do_populate_sdk_setscene
|
||||
|
||||
PSEUDO_IGNORE_PATHS .= ",${SDKDEPLOYDIR},${WORKDIR}/oe-sdk-repo,${WORKDIR}/sstate-build-populate_sdk"
|
||||
|
||||
fakeroot create_sdk_files() {
|
||||
cp ${COREBASE}/scripts/relocate_sdk.py ${SDK_OUTPUT}/${SDKPATH}/
|
||||
|
||||
|
|
|
@ -166,6 +166,7 @@ python () {
|
|||
d.appendVarFlag('do_package_write_rpm', 'dirs', ' ${ARCHIVER_RPMTOPDIR}')
|
||||
d.appendVarFlag('do_package_write_rpm', 'sstate-inputdirs', ' ${ARCHIVER_RPMTOPDIR}')
|
||||
d.appendVarFlag('do_package_write_rpm', 'sstate-outputdirs', ' ${DEPLOY_DIR_SRC}')
|
||||
d.appendVar('PSEUDO_INCLUDE_PATHS', ',${ARCHIVER_TOPDIR}')
|
||||
if ar_dumpdata == "1":
|
||||
d.appendVarFlag('do_package_write_rpm', 'depends', ' %s:do_dumpdata' % pn)
|
||||
if ar_recipe == "1":
|
||||
|
|
|
@ -744,18 +744,15 @@ SRC_URI = ""
|
|||
PSEUDO_LOCALSTATEDIR ?= "${WORKDIR}/pseudo/"
|
||||
PSEUDO_PASSWD ?= "${STAGING_DIR_TARGET}:${PSEUDO_SYSROOT}"
|
||||
PSEUDO_SYSROOT = "${COMPONENTS_DIR}/${BUILD_ARCH}/pseudo-native"
|
||||
PSEUDO_IGNORE_PATHS = "/usr/,/etc/,/lib,/dev/,/run/,${T},${WORKDIR}/recipe-sysroot,${SSTATE_DIR},${STAMPS_DIR}"
|
||||
PSEUDO_IGNORE_PATHS .= ",${TMPDIR}/sstate-control,${TMPDIR}/buildstats,${TMPDIR}/sysroots-components,${TMPDIR}/pkgdata"
|
||||
PSEUDO_IGNORE_PATHS .= ",${WORKDIR}/deploy-,${WORKDIR}/sstate-build-package_,${WORKDIR}/sstate-install-package_,${WORKDIR}/pkgdata-sysroot"
|
||||
PSEUDO_IGNORE_PATHS .= ",${DEPLOY_DIR},${BUILDHISTORY_DIR},${TOPDIR}/cache,${COREBASE}/scripts,${CCACHE_DIR},${S},${B}"
|
||||
PSEUDO_INCLUDE_PATHS = "/proc,${WORKDIR}/image,${WORKDIR}/package,${WORKDIR}/rootfs,${WORKDIR}/sstate-build-package/,${WORKDIR}/sstate-install-package/,${WORKDIR}/pkgdata,${WORKDIR}/minidebuginfo"
|
||||
|
||||
export PSEUDO_DISABLED = "1"
|
||||
#export PSEUDO_PREFIX = "${STAGING_DIR_NATIVE}${prefix_native}"
|
||||
#export PSEUDO_BINDIR = "${STAGING_DIR_NATIVE}${bindir_native}"
|
||||
#export PSEUDO_LIBDIR = "${STAGING_DIR_NATIVE}$PSEUDOBINDIR/../lib/pseudo/lib
|
||||
FAKEROOTBASEENV = "PSEUDO_BINDIR=${PSEUDO_SYSROOT}${bindir_native} PSEUDO_LIBDIR=${PSEUDO_SYSROOT}${prefix_native}/lib/pseudo/lib PSEUDO_PREFIX=${PSEUDO_SYSROOT}${prefix_native} PSEUDO_IGNORE_PATHS=${@oe.path.canonicalize(d.getVar('PSEUDO_IGNORE_PATHS'))} PSEUDO_DISABLED=1 PYTHONDONTWRITEBYTECODE=1"
|
||||
FAKEROOTBASEENV = "PSEUDO_BINDIR=${PSEUDO_SYSROOT}${bindir_native} PSEUDO_LIBDIR=${PSEUDO_SYSROOT}${prefix_native}/lib/pseudo/lib PSEUDO_PREFIX=${PSEUDO_SYSROOT}${prefix_native} PSEUDO_INCLUDE_PATHS=${@oe.path.canonicalize(d.getVar('PSEUDO_INCLUDE_PATHS'))} PSEUDO_DISABLED=1 PYTHONDONTWRITEBYTECODE=1"
|
||||
FAKEROOTCMD = "${PSEUDO_SYSROOT}${bindir_native}/pseudo"
|
||||
FAKEROOTENV = "PSEUDO_PREFIX=${PSEUDO_SYSROOT}${prefix_native} PSEUDO_LOCALSTATEDIR=${PSEUDO_LOCALSTATEDIR} PSEUDO_PASSWD=${PSEUDO_PASSWD} PSEUDO_NOSYMLINKEXP=1 PSEUDO_IGNORE_PATHS=${@oe.path.canonicalize(d.getVar('PSEUDO_IGNORE_PATHS'))} PSEUDO_DISABLED=0"
|
||||
FAKEROOTENV = "PSEUDO_PREFIX=${PSEUDO_SYSROOT}${prefix_native} PSEUDO_LOCALSTATEDIR=${PSEUDO_LOCALSTATEDIR} PSEUDO_PASSWD=${PSEUDO_PASSWD} PSEUDO_NOSYMLINKEXP=1 PSEUDO_INCLUDE_PATHS=${@oe.path.canonicalize(d.getVar('PSEUDO_INCLUDE_PATHS'))} PSEUDO_DISABLED=0"
|
||||
FAKEROOTNOENV = "PSEUDO_UNLOAD=1"
|
||||
FAKEROOTDIRS = "${PSEUDO_LOCALSTATEDIR}"
|
||||
FAKEROOTLOGS = "${WORKDIR}/pseudo/pseudo.log"
|
||||
|
@ -965,7 +962,7 @@ BB_HASHEXCLUDE_COMMON ?= "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH BBSERVER DL_DI
|
|||
SSTATE_HASHEQUIV_METHOD SSTATE_HASHEQUIV_REPORT_TASKDATA \
|
||||
SSTATE_HASHEQUIV_OWNER CCACHE_TOP_DIR BB_HASHSERVE GIT_CEILING_DIRECTORIES \
|
||||
OMP_NUM_THREADS BB_CURRENTTASK"
|
||||
BB_BASEHASH_IGNORE_VARS ?= "${BB_HASHEXCLUDE_COMMON} PSEUDO_IGNORE_PATHS BUILDHISTORY_DIR \
|
||||
BB_BASEHASH_IGNORE_VARS ?= "${BB_HASHEXCLUDE_COMMON} PSEUDO_INCLUDE_PATHS BUILDHISTORY_DIR \
|
||||
SSTATE_DIR SOURCE_DATE_EPOCH RUST_BUILD_SYS RUST_HOST_SYS RUST_TARGET_SYS"
|
||||
BB_HASHCONFIG_IGNORE_VARS ?= "${BB_HASHEXCLUDE_COMMON} DATE TIME SSH_AGENT_PID \
|
||||
SSH_AUTH_SOCK PSEUDO_BUILD BB_ENV_PASSTHROUGH_ADDITIONS DISABLE_SANITY_CHECKS \
|
||||
|
|
|
@ -12,8 +12,6 @@ STAGING_DIR_TARGET = "${WORKDIR}/${MLPREFIX}recipe-sysroot"
|
|||
RECIPE_SYSROOT = "${WORKDIR}/${MLPREFIX}recipe-sysroot"
|
||||
RECIPE_SYSROOT:class-native = "${WORKDIR}/recipe-sysroot"
|
||||
|
||||
PSEUDO_IGNORE_PATHS .= ",${WORKDIR}/${MLPREFIX}recipe-sysroot"
|
||||
|
||||
INHERIT += "multilib_global"
|
||||
|
||||
BBCLASSEXTEND:append = " ${MULTILIBS}"
|
||||
|
|
|
@ -174,7 +174,6 @@ TEST_RUNQEMUPARAMS += " slirp"
|
|||
features += 'PACKAGE_FEED_GPG_NAME = "testuser"\n'
|
||||
features += 'PACKAGE_FEED_GPG_PASSPHRASE_FILE = "%s"\n' % os.path.join(signing_key_dir, 'key.passphrase')
|
||||
features += 'GPG_PATH = "%s"\n' % self.gpg_home
|
||||
features += 'PSEUDO_IGNORE_PATHS .= ",%s"\n' % self.gpg_home
|
||||
self.write_config(features)
|
||||
|
||||
bitbake('core-image-full-cmdline socat')
|
||||
|
@ -211,7 +210,6 @@ TEST_RUNQEMUPARAMS += " slirp"
|
|||
features += 'PACKAGE_FEED_GPG_NAME = "testuser"\n'
|
||||
features += 'PACKAGE_FEED_GPG_PASSPHRASE_FILE = "%s"\n' % os.path.join(signing_key_dir, 'key.passphrase')
|
||||
features += 'GPG_PATH = "%s"\n' % self.gpg_home
|
||||
features += 'PSEUDO_IGNORE_PATHS .= ",%s"\n' % self.gpg_home
|
||||
self.write_config(features)
|
||||
|
||||
# Build core-image-sato and testimage
|
||||
|
|
|
@ -65,6 +65,8 @@ FILES:${LOCALEBASEPN}-locale-alias = "${datadir}/locale/locale.alias"
|
|||
|
||||
LOCALETREESRC = "${COMPONENTS_DIR}/${PACKAGE_ARCH}/glibc-stash-locale"
|
||||
|
||||
PSEUDO_INCLUDE_PATHS .= ",${WORKDIR}/locale-tree"
|
||||
|
||||
copy_locale_files() {
|
||||
local dir=$1 mode=$2
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ SRC_URI:append:class-nativesdk = " \
|
|||
file://older-glibc-symbols.patch"
|
||||
SRC_URI[prebuilt.sha256sum] = "ed9f456856e9d86359f169f46a70ad7be4190d6040282b84c8d97b99072485aa"
|
||||
|
||||
SRCREV = "3fac97341f0f8270ca28a91098d0a58ca306a6bd"
|
||||
SRCREV = "2c43381180f9cfef4c0a8bb0c1658a86c3fcc876"
|
||||
S = "${WORKDIR}/git"
|
||||
PV = "1.9.0+git"
|
||||
|
||||
|
|
|
@ -222,19 +222,19 @@ class Partition():
|
|||
if (pseudo_dir):
|
||||
# Canonicalize the ignore paths. This corresponds to
|
||||
# calling oe.path.canonicalize(), which is used in bitbake.conf.
|
||||
ignore_paths = [rootfs] + (get_bitbake_var("PSEUDO_IGNORE_PATHS") or "").split(",")
|
||||
include_paths = [rootfs_dir] + (get_bitbake_var("PSEUDO_INCLUDE_PATHS") or "").split(",")
|
||||
canonical_paths = []
|
||||
for path in ignore_paths:
|
||||
for path in include_paths:
|
||||
if "$" not in path:
|
||||
trailing_slash = path.endswith("/") and "/" or ""
|
||||
canonical_paths.append(os.path.realpath(path) + trailing_slash)
|
||||
ignore_paths = ",".join(canonical_paths)
|
||||
include_paths = ",".join(canonical_paths)
|
||||
|
||||
pseudo = "export PSEUDO_PREFIX=%s;" % p_prefix
|
||||
pseudo += "export PSEUDO_LOCALSTATEDIR=%s;" % pseudo_dir
|
||||
pseudo += "export PSEUDO_PASSWD=%s;" % rootfs_dir
|
||||
pseudo += "export PSEUDO_NOSYMLINKEXP=1;"
|
||||
pseudo += "export PSEUDO_IGNORE_PATHS=%s;" % ignore_paths
|
||||
pseudo += "export PSEUDO_INCLUDE_PATHS=%s;" % include_paths
|
||||
pseudo += "%s " % get_bitbake_var("FAKEROOTCMD")
|
||||
else:
|
||||
pseudo = None
|
||||
|
|
Loading…
Reference in New Issue
Block a user