]> code.ossystems Code Review - openembedded-core.git/commitdiff
classes/cmake: Use relative RPATHs
authorJoshua Watt <jpewhacker@gmail.com>
Thu, 21 Nov 2019 16:59:11 +0000 (10:59 -0600)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 25 Nov 2019 22:03:43 +0000 (22:03 +0000)
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@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes/cmake.bbclass

index 291f1e8d44817df2d53f07b5be9e70d149034fd0..8ccb1eefc7d1b0f262efa2145bf27003507b3849 100644 (file)
@@ -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/")