From d366d7e0553ed0b5afc389c7ea591a58351cc861 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Arkadiusz=20Mi=C5=9Bkiewicz?= Date: Wed, 5 Nov 2008 09:54:27 +0000 Subject: [PATCH] - __spec_install_post_check_so macro that finds unresolved symbols in shared object files Changed files: rpm.macros -> 1.486 --- rpm.macros | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/rpm.macros b/rpm.macros index 232925d..27aceb7 100644 --- a/rpm.macros +++ b/rpm.macros @@ -487,6 +487,21 @@ if [ -d "$RPM_BUILD_ROOT" ]; then \ fi; \ fi; }; __spec_install_post_chrpath } } } +#----------------------------------------------------------------- +# Find all shared object files with unresolved symbols. Warn +# and terminate if any found (termination can be turned off by define). +#%no_install_post_check_so 1 +%__spec_install_post_check_so { \ + __spec_install_post_check_so() { \ + fail=0; \ + printf "Searching for shared objects with unresolved symbols..."; \ + for f in $(find $RPM_BUILD_ROOT -type f -name '*.so*' -print); do \ + LC_ALL=C objdump -T $f 2> /dev/null | LC_ALL=C awk -v "file=$f" 'BEGIN { found=0; symbols = "" } /^[0-9a-z]+ +D +\*UND\*/ { found = 1; symbols = symbols "\n\t" $NF } END { if (found) { print "Unresolved symbols found in: " file symbols; exit(1); } } ' || fail=1 ; \ + done ; \ + echo " DONE"; \ + %{!?no_install_post_check_so:[ $fail -eq 1 ] && exit 1;} \ +}; __spec_install_post_check_so }} + #----------------------------------------------------------------- # Find and gzip all kernel modules # -- 2.44.0