[OE-core] [PATCH] classes/cmake: Use relative RPATHs
Joshua Watt
jpewhacker at gmail.com
Thu Nov 21 16:59:11 UTC 2019
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 <JPEWhacker at gmail.com>
---
meta/classes/cmake.bbclass | 3 +++
1 file changed, 3 insertions(+)
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/")
--
2.23.0
More information about the Openembedded-core
mailing list