X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=rpm.macros;h=62a2b46291367be6e2e1129c49a6866b0088817d;hb=14ae3117178514a1ea5da191c9cc9aa5e1d509f2;hp=8b57ae3b9127aa77b2ee247e39c3c7e3214dbe8c;hpb=751cfc9e85921176abf9fafddea2d6321a86abd0;p=packages%2Frpm-build-macros.git diff --git a/rpm.macros b/rpm.macros index 8b57ae3..62a2b46 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; skip["program_name"]=1; symbols = "" } /^[0-9a-z]+ +D +\*UND\*/ { if ($NF in skip) { next; }; found = 1; symbols = symbols "\n\t" $NF } END { if (found) { print "\nUnresolved symbols found in: " file symbols; exit(1); } } ' || fail=1 ; \ + done ; \ + echo " DONE"; \ + %{!?no_install_post_check_so:[ $fail -eq 1 ] && : || :;} \ +}; __spec_install_post_check_so }} + #----------------------------------------------------------------- # Find and gzip all kernel modules # @@ -757,19 +772,25 @@ fi \ %pyrequires_eq() Requires: %1 # Hardlink binary identical .pyc and .pyo files -# (idea by glen pld-linux org) %__spec_install_post_py_hardlink {\ %{!?no_install_post_py_hardlink: __spec_install_post_py_hardlink() { \ -[ ! -d "$RPM_BUILD_ROOT" ] || find "$RPM_BUILD_ROOT" -name '*.pyc' | while read a; do \ - b="${a%.pyc}.pyo"; \ - if cmp -s "$a" "$b"; then \ - ln -f "$a" "$b"; \ - fi; \ -done \ +local a b c=0 t=0; \ +if [ -d "$RPM_BUILD_ROOT" ]; then \ + find "$RPM_BUILD_ROOT" -name '*.pyc' > __rpm_pyc; \ + while read a; do \ + b="${a%.pyc}.pyo"; \ + if cmp -s "$a" "$b"; then \ + ln -f "$a" "$b"; \ + c=$((c + 1)); \ + fi; \ + t=$((t + 1)); \ + done < __rpm_pyc; \ + [ $t -gt 0 ] && printf "Hardlink Python files: %d/%d files hardlinked\n" $c $t; \ + rm -f __rpm_pyc; \ +fi; \ }; __spec_install_post_py_hardlink } } # remove python sources, so that check-files won't complain -# (idea by glen pld-linux org) %py_postclean() \ for d in %{py_sitescriptdir} %{py_sitedir} %*; do \ [ ! -d "$RPM_BUILD_ROOT$d" ] || find "$RPM_BUILD_ROOT$d" -name '*.py' -print0 | xargs -0r -l512 rm;\ @@ -1308,7 +1329,7 @@ for cfg in ${cfgs:-dist}; do \ [ -r "%{_kernelsrcdir}/config-$cfg" ] || exit 1 \ \ rm -rf o \ - install -d o/include/linux \ + install -d o/include/linux o/arch/powerpc/lib \ ln -sf %{_kernelsrcdir}/config-$cfg o/.config \ ln -sf %{_kernelsrcdir}/Module.symvers-$cfg o/Module.symvers \ ln -sf %{_kernelsrcdir}/include/linux/autoconf-$cfg.h o/include/linux/autoconf.h \ @@ -1324,6 +1345,7 @@ for cfg in ${cfgs:-dist}; do \ %else \ install -d o/include/config \ touch o/include/config/MARKER \ + ln -sf %{_kernelsrcdir}/include/config/auto-$cfg.conf o/include/config/auto.conf \ ln -sf %{_kernelsrcdir}/scripts o/scripts \ %endif \ \