From cc545e1ab86e7abde22069a988f366461499c413 Mon Sep 17 00:00:00 2001 From: djurban Date: Sat, 17 May 2003 11:30:20 +0000 Subject: [PATCH] - added chrpath support from ra Changed files: rpm.macros -> 1.115 --- rpm.macros | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/rpm.macros b/rpm.macros index e4803db..66f9c4b 100644 --- a/rpm.macros +++ b/rpm.macros @@ -207,7 +207,38 @@ echo "Compress man and info pages."; \ strip --strip-debug --remove-section=.note --remove-section=.comment $elfarchiveslist; \ fi; } \ } } - +#----------------------------------------------------------------- +# remove all RPATH from executable binaries and shared object files +# +# Requires: find, awk, cut, xargs, chrpath, uname +# +#%no_install_post_chrpath 1 +%__spec_install_post_chrpath {%{!?debug: \ +%{!?no_install_post_chrpath: \ + %{?verbose:set -x;} \ +echo "Remove RPATH from executable binaries and shared object files."; \ +if [ "$(uname -m)" != alpha ] ; then \ +find $RPM_BUILD_ROOT -type f ! -regex ".*ld-[0-9.]*so.*" | xargs -r file | \ + awk '/ELF.*(executable|shared object)/ {print $1}' | cut -d: -f1 | \ +while read file ; do \ + rpath= ; \ + chmod u+w "$file"; \ + for dir in `chrpath -l "$file" | \ + awk '/RPATH=/ { gsub(/.*RPATH=/,""); gsub(/:/," "); print $0 }'` ; do \ + case $dir in \ + /home/* | /tmp/* | /usr/lib | /lib | /usr/local/lib | /usr/X11R6/lib ) \ + echo "remove-rpath: $dir in $file"; \ + ;; \ + * ) \ + if [ "$rpath" = "" ] ; then rpath="$dir" ; \ + else rpath="$rpath:$dir" ; fi ; \ + ;; \ + esac ; \ + done ; \ + if [ "$rpath" = "" ] ; then chrpath -d "$file" > /dev/null ; \ + else chrpath -r "$rpath" "$file" > /dev/null ; fi ; \ +done; fi; } \ +} } #----------------------------------------------------------------- # Find and gzip all kernel modules # -- 2.43.0