#!/usr/bin/sh # remove rpath specified rpathSuffix=( "/home/abuild/rpmbuild/BUILD", "/home/lkp/rpmbuild/BUILD" ) rpath=( "/usr/lib64", "/lib64", "/usr/lib", "/lib", "/usr/lib/../lib64" ) buildroot=$1 function rpathChange() { localSrcPath=$1 localDstPath="" rpathArr=(`echo $localSrcPath | tr ':' ' '`) for path in ${rpathArr[*]} do localflag=0 for suffix in ${rpathSuffix[*]} do if echo "$path" | grep $suffix &> /dev/null; then localflag=1 break fi done # Is the suffix path, delete if [ $localflag -eq 1 ]; then continue; fi #Is the standard path, delete if echo "${rpath[@]}" | grep -w $path &> /dev/null; then continue fi if [ x"$localDstPath" == x"" ]; then localDstPath=$path else localDstPath=$localDstPath:$path fi done echo $localDstPath } function removeRpathOrRunpath() { localfile=$1 rpathInfo=$(chrpath -l $localfile | grep "RPATH=") runpathInfo=$(chrpath -l $localfile | grep "RUNPATH=") currPath="" realPath="" needCh=0 if [ x"$rpathInfo" != x"" ]; then needCh=1 currPath=$(echo $rpathInfo | awk -F "RPATH=" '{print $2}') realPath=$(rpathChange $currPath) fi if [ x"$runpathInfo" != x"" ]; then needCh=1 currPath=$(echo $runpathInfo | awk -F "RUNPATH=" '{print $2}') realPath=$(rpathChange $currPath) fi if [ $needCh -eq 0 ]; then return 0 fi if [ x"$realPath" == x"" ]; then chrpath -d $localfile else chrpath -r $realPath $localfile fi return 0 } for file in $(find $buildroot/ -executable -type f -exec file {} ';' | grep "\" | awk -F ':' '{print $1}') do test -u $file if [ $? -eq 0 ]; then continue fi if [ -w "$file" ]; then removeRpathOrRunpath $file fi done exit 0