blob: b1dee558e3b2b5a9db5bdc9485a0521343c9b0b7 [file] [log] [blame]
#!/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