| #!/bin/bash |
| # Copyright 1999-2006 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id: prepall 2230 2005-11-01 01:35:59Z vapier $ |
| |
| 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 |
| [[ -L ${j} ]] && continue |
| [[ -x ${j} ]] && continue |
| echo "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 |
| echo "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 |
| echo -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 |
| echo -e "\n\aQA Notice: excessive files found in the / partition\a" |
| echo "${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 |
| echo -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 |
| echo -e "\n\aQA Notice: the following shared libraries lack a SONAME\a" |
| echo "${f}" |
| echo |
| sleep 1 |
| fi |
| |
| f=$(scanelf -ByF '%n %p' "${d}"/lib*.so* | gawk '$2 == "" { print }') |
| if [[ -n ${f} ]] ; then |
| echo -e "\n\aQA Notice: the following shared libraries lack NEEDED entries\a" |
| echo "${f}" |
| echo |
| sleep 1 |
| fi |
| done |
| |
| fi |