Re: [PATCH] xen, xen-tools: pass prefix maps to fix buildpaths reproducible build issues


Bertrand Marquis
 

Hi Christopher,

On 10 Jul 2022, at 06:42, Christopher Clark <christopher.w.clark@...> wrote:

To fix warnings when the buildpaths QA test is enabled, pass the file
and debug prefix map options that were previously supplied only for
reproducible builds, adding them to the DEBUG_PREFIX_MAP variable
and supplying that to CC.

Testing indicates that passing the prefix maps needs to be via CC
rather than the EXTRA_CFLAGS_XEN_CORE/TOOLS variables.

Signed-off-by: Christopher Clark <christopher.w.clark@...>
Reviewed-by: Bertrand Marquis <bertrand.marquis@...>

Also I applied this in kirkstone and did a build and run on arm64, arm32 and x86 with success so:
Tested-by: Bertrand Marquis <bertrand.marquis@...>

Cheers
Bertrand

---
recipes-extended/xen/xen.inc | 21 ++++++++++-----------
1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/recipes-extended/xen/xen.inc b/recipes-extended/xen/xen.inc
index ed6e6a7..2bbf1e3 100644
--- a/recipes-extended/xen/xen.inc
+++ b/recipes-extended/xen/xen.inc
@@ -88,12 +88,13 @@ export CROSS_COMPILE="${TARGET_PREFIX}"
# overide LDFLAGS to allow xen to build without: "x86_64-oe-linux-ld: unrecognized option '-Wl,-O1'"
export LDFLAGS=""

-# Pass through the Yocto distro compiler flags via the Xen-provided variables.
-# Special handling:
-# - The Yocto distro compiler flags are typically set to be appropriate for
-# user-space software rather than for generation of a hypervisor binary, so
-# only pass the debug prefix map to the hypervisor build:
-EXTRA_CFLAGS_XEN_CORE="${DEBUG_PREFIX_MAP}"
+# No additional C flags for the main hypervisor build
+EXTRA_CFLAGS_XEN_CORE ?= ""
+# Add prefix maps to support buildpaths QA test and reproducibility
+DEBUG_PREFIX_MAP:append = " \
+ -ffile-prefix-map=${S}=${PN}-source \
+ -fdebug-prefix-map=${WORKDIR}=${PN} \
+ "

# - The Xen tools build for x86 systems with HVM-mode enabled includes hvmloader
# which fails to build when "-m64" is included in flags set via the
@@ -109,11 +110,11 @@ TUNE_CCARGS:x86-64=""
# It must not be compiled with SSE compiler options enabled and the Xen build
# explicitly clears CFLAGS to ensure that, so such options must not be passed
# in via the tool variable. hvmloader is required to run HVM-mode guest VMs.
-CC="${CCACHE}${HOST_PREFIX}gcc ${TOOLCHAIN_OPTIONS} ${CC_REPRODUCIBLE_OPTIONS}"
+CC="${CCACHE}${HOST_PREFIX}gcc ${TOOLCHAIN_OPTIONS} ${DEBUG_PREFIX_MAP} ${CC_REPRODUCIBLE_OPTIONS}"
EXTRA_CFLAGS_XEN_TOOLS="${HOST_CC_ARCH} ${CFLAGS}"
# 32-bit ARM needs the TUNE_CCARGS component of HOST_CC_ARCH to be passed
# in CC to ensure that configure can compile binaries for the right arch.
-CC:arm="${CCACHE}${HOST_PREFIX}gcc ${TUNE_CCARGS} ${TOOLCHAIN_OPTIONS} ${CC_REPRODUCIBLE_OPTIONS}"
+CC:arm="${CCACHE}${HOST_PREFIX}gcc ${TUNE_CCARGS} ${TOOLCHAIN_OPTIONS} ${DEBUG_PREFIX_MAP} ${CC_REPRODUCIBLE_OPTIONS}"

# There are no Xen-provided variables for C++, so append to the tool variables:
CPP:append = " ${CPPFLAGS}"
@@ -158,9 +159,7 @@ EXTRA_OEMAKE += "${@['', 'XEN_WHOAMI=${PF} XEN_DOMAIN=${DISTRO} XEN_BUILD_HOST=$
[d.getVar('BUILD_REPRODUCIBLE_BINARIES') == '1']}${@get_build_time_vars(d)}"

# Improve build reproducibility: compiler flags to remove filesystem differences.
-CC_REPRODUCIBLE_OPTIONS = "${@['', '-gno-record-gcc-switches ' + \
- '-ffile-prefix-map=${S}=${PN}-source ' + \
- '-fdebug-prefix-map=${WORKDIR}=${PN}'] \
+CC_REPRODUCIBLE_OPTIONS = "${@['', '-gno-record-gcc-switches'] \
[d.getVar('BUILD_REPRODUCIBLE_BINARIES') == '1']}"

# check for XSM in package config to allow XSM_ENABLE to be set
--
2.25.1

Join meta-virtualization@lists.yoctoproject.org to automatically receive all group messages.