From: Joshua Watt Date: Thu, 21 Nov 2019 16:59:11 +0000 (-0600) Subject: classes/cmake: Use relative RPATHs X-Git-Tag: lucaceresoli/bug-15201-perf-libtraceevent-missing~12670 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=44e77d3f97af4cd4ad8bc0984f093a116a830986;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git classes/cmake: Use relative RPATHs In most cases, the RPATH is stripped out when the ELF file is packages, but by then the damage is done from a reproducible perspective because this absolute path is hashed as part of the build-id generated at link time ([1] has a good explanation). Fortunately, newer cmake has an option to generated relative RPATHs that use $ORIGIN to set the path, so set it in the toolchain file. [1]: https://gitlab.kitware.com/cmake/cmake/issues/18413 Signed-off-by: Joshua Watt Signed-off-by: Richard Purdie --- diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass index 291f1e8d448..8ccb1eefc7d 100644 --- a/meta/classes/cmake.bbclass +++ b/meta/classes/cmake.bbclass @@ -120,6 +120,9 @@ set( ENV{QT_CONF_PATH} ${WORKDIR}/qt.conf ) # directory as rpath by default set( CMAKE_INSTALL_RPATH ${OECMAKE_RPATH} ) +# Use RPATHs relative to build directory for reproducibility +set( CMAKE_BUILD_RPATH_USE_ORIGIN ON ) + # Use our cmake modules list(APPEND CMAKE_MODULE_PATH "${STAGING_DATADIR}/cmake/Modules/")