diff options
Diffstat (limited to 'add-brp-scripts-to-delete-rpath.patch')
| -rw-r--r-- | add-brp-scripts-to-delete-rpath.patch | 143 | 
1 files changed, 143 insertions, 0 deletions
| diff --git a/add-brp-scripts-to-delete-rpath.patch b/add-brp-scripts-to-delete-rpath.patch new file mode 100644 index 0000000..7c52c4d --- /dev/null +++ b/add-brp-scripts-to-delete-rpath.patch @@ -0,0 +1,143 @@ +From 9648228a3f64de46dd7fbb26e2df429352de17e1 Mon Sep 17 00:00:00 2001 +From: yangmingtaip <yangmingtai@huawei.com> +Date: Sat, 4 Sep 2021 14:14:54 +0800 +Subject: [PATCH] add brp scripts to delete rpath + +--- + brp-chrpath | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + macros      |   2 + + 2 files changed, 105 insertions(+) + create mode 100755 brp-chrpath + +diff --git a/brp-chrpath b/brp-chrpath +new file mode 100755 +index 0000000..6dd37de +--- /dev/null ++++ b/brp-chrpath +@@ -0,0 +1,103 @@ ++#!/usr/bin/sh ++# remove rpath specified ++ ++rpathSuffix=( ++	"/home/abuild/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 "\<ELF\>" | awk -F ':' '{print $1}') ++do ++	test -u $file ++	if [ $? -eq 0 ]; then ++		continue ++	fi ++ ++	if [ -w "$file" ]; then ++		removeRpathOrRunpath $file ++	fi ++done ++ ++exit 0 +diff --git a/macros b/macros +index 7cde63f..ee0c126 100644 +--- a/macros ++++ b/macros +@@ -89,6 +89,7 @@ +  + # Build root policy macros. Standard naming: + # convert all '-' in basename to '_', add two leading underscores. ++%__brp_chrpath /usr/lib/rpm/brp-chrpath %{buildroot} + %__brp_ldconfig /usr/lib/rpm/brp-ldconfig + %__brp_compress /usr/lib/rpm/brp-compress + %__brp_strip /usr/lib/rpm/brp-strip %{__strip} +@@ -107,6 +108,7 @@ +     %{?__brp_strip_static_archive} \ +     %{?py_auto_byte_compile:%{?__brp_python_bytecompile}} \ +     %{?__brp_python_hardlink} \ ++    %{?__vendor_delete_rpath:%{?__brp_chrpath}} \ + %{nil} +  + %__spec_install_post\ +--  +2.23.0 + | 
