From: Arkadiusz Miƛkiewicz Date: Wed, 5 Nov 2008 09:54:27 +0000 (+0000) Subject: - __spec_install_post_check_so macro that finds unresolved symbols in shared object... X-Git-Tag: auto/th/rpm-build-macros-1_486-1~1 X-Git-Url: http://git.pld-linux.org/?p=packages%2Frpm-build-macros.git;a=commitdiff_plain;h=d366d7e0553ed0b5afc389c7ea591a58351cc861 - __spec_install_post_check_so macro that finds unresolved symbols in shared object files Changed files: rpm.macros -> 1.486 --- 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 #