64 lines
2.0 KiB
Plaintext
64 lines
2.0 KiB
Plaintext
# Copyright 1999-2015 Gentoo Foundation
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
# $Id$
|
|
|
|
# Simple test to make sure our new glibc isnt completely broken.
|
|
# Make sure we don't test with statically built binaries since
|
|
# they will fail. Also, skip if this glibc is a cross compiler.
|
|
#
|
|
# If coreutils is built with USE=multicall, some of these files
|
|
# will just be wrapper scripts, not actual ELFs we can test.
|
|
glibc_sanity_check() {
|
|
cd / #228809
|
|
|
|
# We enter ${ED} so to avoid trouble if the path contains
|
|
# special characters; for instance if the path contains the
|
|
# colon character (:), then the linker will try to split it
|
|
# and look for the libraries in an unexpected place. This can
|
|
# lead to unsafe code execution if the generated prefix is
|
|
# within a world-writable directory.
|
|
# (e.g. /var/tmp/portage:${HOSTNAME})
|
|
pushd "${ED}"/$(get_libdir) >/dev/null
|
|
|
|
local x striptest
|
|
for x in cal date env free ls true uname uptime ; do
|
|
x=$(type -p ${x})
|
|
[[ -z ${x} || ${x} != ${EPREFIX}/* ]] && continue
|
|
striptest=$(LC_ALL="C" file -L ${x} 2>/dev/null) || continue
|
|
case ${striptest} in
|
|
*"statically linked"*) continue;;
|
|
*"ASCII text"*) continue;;
|
|
esac
|
|
# We need to clear the locale settings as the upgrade might want
|
|
# incompatible locale data. This test is not for verifying that.
|
|
LC_ALL=C \
|
|
./ld-*.so --library-path . ${x} > /dev/null \
|
|
|| die "simple run test (${x}) failed"
|
|
done
|
|
|
|
popd >/dev/null
|
|
}
|
|
|
|
eblit-glibc-pkg_preinst() {
|
|
# nothing to do if just installing headers
|
|
just_headers && return
|
|
|
|
# prepare /etc/ld.so.conf.d/ for files
|
|
mkdir -p "${EROOT}"/etc/ld.so.conf.d
|
|
|
|
# Default /etc/hosts.conf:multi to on for systems with small dbs.
|
|
if [[ $(wc -l < "${EROOT}"/etc/hosts) -lt 1000 ]] ; then
|
|
sed -i '/^multi off/s:off:on:' "${ED}"/etc/host.conf
|
|
elog "Defaulting /etc/host.conf:multi to on"
|
|
fi
|
|
|
|
[[ ${ROOT} != "/" ]] && return 0
|
|
[[ -d ${ED}/$(get_libdir) ]] || return 0
|
|
glibc_sanity_check
|
|
|
|
# For newer EAPIs, this was run in pkg_pretend.
|
|
if [[ ${EAPI:-0} == [0123] ]] ; then
|
|
check_devpts
|
|
fi
|
|
}
|