diff --git a/meta-oe/classes/discoverable-disk-image.bbclass b/meta-oe/classes/discoverable-disk-image.bbclass index 02ad900d0f..604f316d5f 100644 --- a/meta-oe/classes/discoverable-disk-image.bbclass +++ b/meta-oe/classes/discoverable-disk-image.bbclass @@ -77,17 +77,19 @@ REPART_DDI_TYPE ?= "sysext" REPART_DDI_EXTENSION ?= "ddi" -# systemd-repart creates temporary directoryies under /var/tmp/.#repartXXXXXXX/, -# to estimate partition size etc. Since files are copied there from the image/rootfs -# folder - which are owned by pseudo-root - this temporary location has to be -# added to the directories handled by pseudo; otherwise calls to e.g. -# fchown(0,0) inside systemd git/src/shared/copy.c end up failing. -PSEUDO_INCLUDE_PATHS .= ",/var/tmp/" +# systemd-repart stages copies of the rootfs here; pseudo has to cover it +REPART_WORKDIR = "${WORKDIR}/repart-tmp" +PSEUDO_INCLUDE_PATHS .= ",${REPART_WORKDIR}" oe_image_systemd_repart_make_ddi() { local additional_args="" + # $TMP, not $TMPDIR: pseudo derives its own runtime paths from $TMPDIR + rm -rf "${REPART_WORKDIR}" + mkdir -p "${REPART_WORKDIR}" + export TMP="${REPART_WORKDIR}" + if [ -n "${REPART_PRIVATE_KEY}" ] then if [ -n "${REPART_PRIVATE_KEY_SOURCE}" ]