This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Holger Freyther gerrit-no-reply at lists.osmocom.orgHolger Freyther has submitted this change and it was merged. ( https://gerrit.osmocom.org/11580 )
Change subject: misc: Use RPATH to avoid having tests to set LD_LIBRARY_PATH
......................................................................
misc: Use RPATH to avoid having tests to set LD_LIBRARY_PATH
Instead of each binary launcher having to check if there is a lib/
directory and then setting a LD_LIBRARY_PATH we can use an RPATH and
know these binaries pick-up the right libraries.
This requires I6e4ad2e3855af7bcefc22d4190cc4e6f58581857.
Change-Id: If771767dd82662e13b6b10ee7a8b8d0c84dcbdb1
---
M contrib/jenkins-build-common.sh
1 file changed, 26 insertions(+), 0 deletions(-)
Approvals:
Pau Espin Pedrol: Looks good to me, approved
Jenkins Builder: Verified
diff --git a/contrib/jenkins-build-common.sh b/contrib/jenkins-build-common.sh
index 17ab7df..a9eaf7a 100644
--- a/contrib/jenkins-build-common.sh
+++ b/contrib/jenkins-build-common.sh
@@ -175,6 +175,31 @@
done
}
+add_rpath() {
+ # Adds an RPATH to executables in bin/ or sbin/ to search for the
+ # (Osmocom) libraries in `dirname /proc/self/exe`/../lib/. Adds an
+ # RPATH to a library to search in the same directory as the library.
+ #
+ # NOTE: Binaries should not have the SUID bit set and should run as the
+ # user executing the binary.
+ #
+ # NOTE: $ORIGIN is not a shell variable but a feature of the dynamic
+ # linker that will be expanded at runtime. For details see:
+ # http://man7.org/linux/man-pages/man8/ld.so.8.html
+ #
+ # Add an rpath relative to the binary and library if the directory
+ # exists.
+ if [ -d bin/ ]; then
+ find bin -depth -type f -exec patchelf --set-rpath '$ORIGIN/../lib/' {} \;
+ fi
+ if [ -d sbin/ ]; then
+ find sbin -depth -type f -exec patchelf --set-rpath '$ORIGIN/../lib/' {} \;
+ fi
+ if [ -d lib/ ]; then
+ find lib -depth -type f -name "lib*.so.*" -exec patchelf --set-rpath '$ORIGIN/' {} \;
+ fi
+}
+
create_bin_tgz() {
# build the archive that is going to be copied to the tester
@@ -190,6 +215,7 @@
prune_files sbin "$wanted_binaries_sbin"
cd "$prefix_real"
+ add_rpath
this="$name.build-${BUILD_NUMBER-$(date +%Y-%m-%d_%H_%M_%S)}"
tar="${this}.tgz"
tar czf "$base/$tar" *
--
To view, visit https://gerrit.osmocom.org/11580
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-gsm-tester
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: If771767dd82662e13b6b10ee7a8b8d0c84dcbdb1
Gerrit-Change-Number: 11580
Gerrit-PatchSet: 4
Gerrit-Owner: Holger Freyther <holger at freyther.de>
Gerrit-Reviewer: Holger Freyther <holger at freyther.de>
Gerrit-Reviewer: Jenkins Builder (1000002)
Gerrit-Reviewer: Pau Espin Pedrol <pespin at sysmocom.de>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20181114/3111b6aa/attachment.htm>