merge all of the QA related checks together
authorMike Frysinger <vapier@gentoo.org>
Tue, 2 Jan 2007 03:31:50 +0000 (03:31 -0000)
committerMike Frysinger <vapier@gentoo.org>
Tue, 2 Jan 2007 03:31:50 +0000 (03:31 -0000)
svn path=/main/trunk/; revision=5442

bin/misc-functions.sh
bin/prepall

index 23e17b3e4ad2d0d2bb2c67f793fc037ffe155f92..8a42a2f7771b11e12fd730f5bf548ba450a06cd1 100755 (executable)
@@ -165,6 +165,27 @@ install_qa_check() {
                        die "Aborting due to QA concerns: ${die_msg}"
                fi
 
+               # Run some sanity checks on shared libraries
+               for d in "${D}"lib* "${D}"usr/lib* ; do
+                       f=$(scanelf -ByF '%S %p' "${d}"/lib*.so* | gawk '$2 == "" { print }')
+                       if [[ -n ${f} ]] ; then
+                               vecho -ne '\a\n'
+                               vecho "QA Notice: the following shared libraries lack a SONAME"
+                               vecho "${f}"
+                               vecho -ne '\a\n'
+                               sleep 1
+                       fi
+
+                       f=$(scanelf -ByF '%n %p' "${d}"/lib*.so* | gawk '$2 == "" { print }')
+                       if [[ -n ${f} ]] ; then
+                               vecho -ne '\a\n'
+                               vecho "QA Notice: the following shared libraries lack NEEDED entries"
+                               vecho "${f}"
+                               vecho -ne '\a\n'
+                               sleep 1
+                       fi
+               done
+
                PORTAGE_QUIET=${tmp_quiet}
        fi
 
@@ -182,6 +203,81 @@ install_qa_check() {
                unset INSTALLTOD
        fi
 
+       # this should help to ensure that all (most?) shared libraries are executable
+       # and that all libtool scripts / static libraries are not executable
+       for i in "${D}"opt/*/lib{,32,64} \
+                "${D}"lib{,32,64}       \
+                "${D}"usr/lib{,32,64}   \
+                "${D}"usr/X11R6/lib{,32,64} ; do
+               [[ ! -d ${i} ]] && continue
+
+               for j in "${i}"/*.so.* "${i}"/*.so ; do
+                       [[ ! -e ${j} ]] && continue
+                       if [[ -L ${j} ]] ; then
+                               linkdest=$(readlink "${j}")
+                               if [[ ${linkdest} == /* ]] ; then
+                                       vecho -e "\a\n"
+                                       vecho "QA Notice: Found an absolute symlink in a library directory:"
+                                       vecho "           ${j#${D}} -> ${linkdest}"
+                                       vecho "           It should be a relative symlink if in the same directory"
+                                       vecho "           or a linker script if it crosses the /usr boundary."
+                               fi
+                               continue
+                       fi
+                       [[ -x ${j} ]] && continue
+                       vecho "making executable: ${j#${D}}"
+                       chmod +x "${j}"
+               done
+
+               for j in "${i}"/*.a "${i}"/*.la ; do
+                       [[ ! -e ${j} ]] && continue
+                       [[ -L ${j} ]] && continue
+                       [[ ! -x ${j} ]] && continue
+                       vecho "removing executable bit: ${j#${D}}"
+                       chmod -x "${j}"
+               done
+       done
+
+       # When installing static libraries into /usr/lib and shared libraries into 
+       # /lib, we have to make sure we have a linker script in /usr/lib along side 
+       # the static library, or gcc will utilize the static lib when linking :(.
+       # http://bugs.gentoo.org/4411
+       abort="no"
+       for a in "${D}"usr/lib*/*.a ; do
+               s=${a%.a}.so
+               if [[ ! -e ${s} ]] ; then
+                       s=${s%usr/*}${s##*/usr/}
+                       if [[ -e ${s} ]] ; then
+                               vecho -e "\a\n"
+                               vecho "QA Notice: missing gen_usr_ldscript for ${s##*/}\a"
+                               abort="yes"
+                       fi
+               fi
+       done
+       [[ ${abort} == "yes" ]] && die "add those ldscripts"
+
+       # Make sure people don't store libtool files or static libs in /lib
+       f=$(ls "${D}"lib*/*.{a,la} 2>/dev/null)
+       if [[ -n ${f} ]] ; then
+               vecho -e "\a\n"
+               vecho "QA Notice: excessive files found in the / partition\a"
+               vecho "${f}"
+               vecho -e "\a\n"
+               die "static archives (*.a) and libtool library files (*.la) do not belong in /"
+       fi
+
+       # Verify that the libtool files don't contain bogus $D entries.
+       abort="no"
+       for a in "${D}"usr/lib*/*.la ; do
+               s=${a##*/}
+               if grep -qs "${D}" "${a}" ; then
+                       vecho -e "\a\n"
+                       vecho "QA Notice: ${s} appears to contain PORTAGE_TMPDIR paths"
+                       abort="yes"
+               fi
+       done
+       [[ ${abort} == "yes" ]] && die "soiled libtool library files found"
+
        # Portage regenerates this on the installed system.
        if [ -f "${D}/usr/share/info/dir.gz" ]; then
                rm -f "${D}/usr/share/info/dir.gz"
@@ -208,7 +304,6 @@ install_qa_check() {
                done
                [[ ${abort} == yes ]] && die "multilib-strict check failed!"
        fi
-
 }
 
 
index 8471892dda726fd0b7eb0b3f2a3b76cc1fc2764c..3ab8215730e7bbeeedbc0f73cbf3268d0b91f7c4 100755 (executable)
@@ -17,96 +17,6 @@ prepallman
 prepallinfo
 prepallstrip
 
-# this should help to ensure that all (most?) shared libraries are executable
-# and that all libtool scripts / static libraries are not executable
-for i in "${D}"opt/*/lib{,32,64} \
-         "${D}"lib{,32,64}       \
-         "${D}"usr/lib{,32,64}   \
-         "${D}"usr/X11R6/lib{,32,64} ; do
-       [[ ! -d ${i} ]] && continue
-
-       for j in "${i}"/*.so.* "${i}"/*.so ; do
-               [[ ! -e ${j} ]] && continue
-               if [[ -L ${j} ]] ; then
-                       linkdest=$(readlink "${j}")
-                       if [[ ${linkdest} == /* ]] ; then
-                               vecho -e "\a"
-                               vecho "QA Notice: Found an absolute symlink in a library directory:"
-                               vecho "           ${j#${D}} -> ${linkdest}"
-                               vecho "           It should be a relative symlink if in the same directory"
-                               vecho "           or a linker script if it crosses the /usr boundary."
-                       fi
-                       continue
-               fi
-               [[ -x ${j} ]] && continue
-               vecho "making executable: ${j#${D}}"
-               chmod +x "${j}"
-       done
-
-       for j in "${i}"/*.a "${i}"/*.la ; do
-               [[ ! -e ${j} ]] && continue
-               [[ -L ${j} ]] && continue
-               [[ ! -x ${j} ]] && continue
-               vecho "removing executable bit: ${j#${D}}"
-               chmod -x "${j}"
-       done
-done
-
-# When installing static libraries into /usr/lib and shared libraries into 
-# /lib, we have to make sure we have a linker script in /usr/lib along side 
-# the static library, or gcc will utilize the static lib when linking :(.
-# http://bugs.gentoo.org/4411
-for a in "${D}"usr/lib*/*.a ; do
-       s=${a%.a}.so
-       if [[ ! -e ${s} ]] ; then
-               s=${s%usr/*}${s##*/usr/}
-               if [[ -e ${s} ]] ; then
-                       vecho -e "\aQA Notice: missing gen_usr_ldscript for ${s##*/}\a"
-                       sleep 1
-               fi
-       fi
-done
-
-# Make sure people don't store libtool files or static libs in /lib
-f=$(ls "${D}"lib*/*.{a,la} 2>/dev/null)
-if [[ -n ${f} ]] ; then
-       vecho -e "\n\aQA Notice: excessive files found in the / partition\a"
-       vecho "${f}"
-       sleep 1
-fi
-
-# Verify that the libtool files don't contain bogus $D entries.
-for a in "${D}"usr/lib*/*.la ; do
-       s=${a##*/}
-       if grep -qs "${D}" "${a}" ; then
-               vecho -e "\n\aQA Notice: ${s} appears to contain PORTAGE_TMPDIR paths\a"
-               sleep 1
-       fi
-done
-
-if type -p scanelf > /dev/null ; then
-
-# Run some sanity checks on shared libraries
-for d in "${D}"lib* "${D}"usr/lib* ; do
-       f=$(scanelf -ByF '%S %p' "${d}"/lib*.so* | gawk '$2 == "" { print }')
-       if [[ -n ${f} ]] ; then
-               vecho -e "\n\aQA Notice: the following shared libraries lack a SONAME\a"
-               vecho "${f}"
-               vecho
-               sleep 1
-       fi
-
-       f=$(scanelf -ByF '%n %p' "${d}"/lib*.so* | gawk '$2 == "" { print }')
-       if [[ -n ${f} ]] ; then
-               vecho -e "\n\aQA Notice: the following shared libraries lack NEEDED entries\a"
-               vecho "${f}"
-               vecho
-               sleep 1
-       fi
-done
-
-fi
-
 if type -p chflags &>/dev/null && type -p mtree &>/dev/null; then
        # Restore all the file flags that were saved at the beginning of prepall.
        mtree -U -e -p "${D}" -k flags < "${T}/bsdflags.mtree" &> /dev/null