From: Fabian Groffen Date: Sun, 18 Jan 2009 15:03:35 +0000 (-0000) Subject: Detect invalid self-referencing install_names (sonames in the ELF world), such as... X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=468f3b5baa426ca995663a74974c52bf6e9bbc50;p=portage.git Detect invalid self-referencing install_names (sonames in the ELF world), such as libXaw is doing currently and hence breaking systems. svn path=/main/branches/prefix/; revision=12528 --- diff --git a/bin/misc-functions.sh b/bin/misc-functions.sh index ab72632c7..d5d71a873 100644 --- a/bin/misc-functions.sh +++ b/bin/misc-functions.sh @@ -417,6 +417,17 @@ install_qa_check() { install_name=${l%%;*}; l=${l#*;} needed=${l%%;*}; l=${l#*;} + # See if the self-reference install_name points to an existing + # and to be installed file. This usually is a symlink for the + # major version. + if [[ ! -e ${D}${install_name} ]] ; then + eqawarn "QA Notice: invalid self-reference install_name ${install_name} in ${obj}" + # remember we are in an implicit subshell, that's + # why we touch a file here ... ideally we should be + # able to die correctly/nicely here + touch "${T}"/.install_name_check_failed + fi + # this is ugly, paths with spaces won't work reevaluate=0 for lib in $(echo ${needed} | tr , ' '); do @@ -438,7 +449,7 @@ install_qa_check() { fi fi done - if [[ reevaluate == 1 ]]; then + if [[ ${reevaluate} == 1 ]]; then # install_name(s) have been changed, refresh data so we # store the correct meta data l=$(scanmacho -qyF '%a;%p;%S;%n' ${D}${obj})