Merge remote-tracking branch 'overlays-gentoo-org/master' into prefix
authorFabian Groffen <grobian@gentoo.org>
Mon, 26 Dec 2011 09:10:47 +0000 (10:10 +0100)
committerFabian Groffen <grobian@gentoo.org>
Mon, 26 Dec 2011 09:10:47 +0000 (10:10 +0100)
1  2 
bin/misc-functions.sh
bin/repoman
man/make.conf.5
pym/_emerge/depgraph.py
pym/portage/const.py
pym/portage/dbapi/vartree.py

index 436a50b3929fa5e2bc6c74ac0876206aec301140,5a726b36b32b62d26ac97204c6266e2b1c39d36a..c6e66c2efcaa5e5df393574618a9b1c8e6e752cf
mode 100644,100755..100644
@@@ -155,10 -152,92 +155,94 @@@ install_qa_check() 
        [[ " ${FEATURES} " == *" force-prefix "* ]] || \
                case "$EAPI" in 0|1|2) local ED=${D} ;; esac
  
 -      cd "${ED}" || die "cd failed"
 +      # PREFIX LOCAL: ED needs not to exist, whereas D does
 +      cd "${D}" || die "cd failed"
 +      # END PREFIX LOCAL
  
+       # Merge QA_FLAGS_IGNORED and QA_DT_HASH into a single array, since
+       # QA_DT_HASH is deprecated.
+       qa_var="QA_FLAGS_IGNORED_${ARCH/-/_}"
+       eval "[[ -n \${!qa_var} ]] && QA_FLAGS_IGNORED=(\"\${${qa_var}[@]}\")"
+       if [[ ${#QA_FLAGS_IGNORED[@]} -eq 1 ]] ; then
+               local shopts=$-
+               set -o noglob
+               QA_FLAGS_IGNORED=(${QA_FLAGS_IGNORED})
+               set +o noglob
+               set -${shopts}
+       fi
+       qa_var="QA_DT_HASH_${ARCH/-/_}"
+       eval "[[ -n \${!qa_var} ]] && QA_DT_HASH=(\"\${${qa_var}[@]}\")"
+       if [[ ${#QA_DT_HASH[@]} -eq 1 ]] ; then
+               local shopts=$-
+               set -o noglob
+               QA_DT_HASH=(${QA_DT_HASH})
+               set +o noglob
+               set -${shopts}
+       fi
+       if [[ -n ${QA_DT_HASH} ]] ; then
+               QA_FLAGS_IGNORED=("${QA_FLAGS_IGNORED[@]}" "${QA_DT_HASH[@]}")
+               unset QA_DT_HASH
+       fi
+       # Merge QA_STRICT_FLAGS_IGNORED and QA_STRICT_DT_HASH, since
+       # QA_STRICT_DT_HASH is deprecated
+       if [ "${QA_STRICT_FLAGS_IGNORED-unset}" = unset ] && \
+               [ "${QA_STRICT_DT_HASH-unset}" != unset ] ; then
+               QA_STRICT_FLAGS_IGNORED=1
+               unset QA_STRICT_DT_HASH
+       fi
+       # Check for files built without respecting *FLAGS. Note that
+       # -frecord-gcc-switches must be in all *FLAGS variables, in
+       # order to avoid false positive results here.
+       # NOTE: This check must execute before prepall/prepstrip, since
+       # prepstrip strips the .GCC.command.line sections.
+       if type -P scanelf > /dev/null && ! has binchecks ${RESTRICT} && \
+               [[ "${CFLAGS}" == *-frecord-gcc-switches* ]] && \
+               [[ "${CXXFLAGS}" == *-frecord-gcc-switches* ]] && \
+               [[ "${FFLAGS}" == *-frecord-gcc-switches* ]] && \
+               [[ "${FCFLAGS}" == *-frecord-gcc-switches* ]] ; then
+               rm -f "${T}"/scanelf-ignored-CFLAGS.log
+               for x in $(scanelf -qyRF '%k %p' -k \!.GCC.command.line "${ED}" | \
+                       sed -e "s:\!.GCC.command.line ::") ; do
+                       # Separate out file types that are known to support
+                       # .GCC.command.line sections, using the `file` command
+                       # similar to how prepstrip uses it.
+                       f=$(file "${x}") || continue
+                       [[ -z ${f} ]] && continue
+                       if [[ ${f} == *"SB executable"* ||
+                               ${f} == *"SB shared object"* ]] ; then
+                               echo "${x}" >> "${T}"/scanelf-ignored-CFLAGS.log
+                       fi
+               done
+               if [[ -f "${T}"/scanelf-ignored-CFLAGS.log ]] ; then
+                       if [ "${QA_STRICT_FLAGS_IGNORED-unset}" = unset ] ; then
+                               for x in "${QA_FLAGS_IGNORED[@]}" ; do
+                                       sed -e "s#^${x#/}\$##" -i "${T}"/scanelf-ignored-CFLAGS.log
+                               done
+                       fi
+                       # Filter anything under /usr/lib/debug/ in order to avoid
+                       # duplicate warnings for splitdebug files.
+                       sed -e "s#^usr/lib/debug/.*##" -e "/^\$/d" -e "s#^#/#" \
+                               -i "${T}"/scanelf-ignored-CFLAGS.log
+                       f=$(<"${T}"/scanelf-ignored-CFLAGS.log)
+                       if [[ -n ${f} ]] ; then
+                               vecho -ne '\n'
+                               eqawarn "${BAD}QA Notice: Files built without respecting CFLAGS have been detected${NORMAL}"
+                               eqawarn " Please include the following list of files in your report:"
+                               eqawarn "${f}"
+                               vecho -ne '\n'
+                               sleep 1
+                       else
+                               rm -f "${T}"/scanelf-ignored-CFLAGS.log
+                       fi
+               fi
+       fi
        export STRIP_MASK
        prepall
        has "${EAPI}" 0 1 2 3 || prepcompress
                sleep 1
        fi
  
 +      # PREFIX LOCAL:
 +      # anything outside the prefix should be caught by the Prefix QA
 +      # check, so if there's nothing in ED, we skip searching for QA
 +      # checks there, the specific QA funcs can hence rely on ED existing
 +      if [[ -d ${ED} ]] ; then
 +              case ${CHOST} in
 +                      *-darwin*)
 +                              # Mach-O platforms (NeXT, Darwin, OSX)
 +                              install_qa_check_macho
 +                      ;;
 +                      *-interix*|*-winnt*)
 +                              # PECOFF platforms (Windows/Interix)
 +                              install_qa_check_pecoff
 +                      ;;
 +                      *-aix*)
 +                              # XCOFF platforms (AIX)
 +                              install_qa_check_xcoff
 +                      ;;
 +                      *)
 +                              # because this is the majority: ELF platforms (Linux,
 +                              # Solaris, *BSD, IRIX, etc.)
 +                              install_qa_check_elf
 +                      ;;
 +              esac
 +      fi
 +
 +      # this is basically here such that the diff with trunk remains just
 +      # offsetted and not out of order
 +      install_qa_check_misc
 +      # END PREFIX LOCAL
 +}
 +
 +install_qa_check_elf() {
        if type -P scanelf > /dev/null && ! has binchecks ${RESTRICT}; then
-               local qa_var insecure_rpath=0 tmp_quiet=${PORTAGE_QUIET}
+               local insecure_rpath=0 tmp_quiet=${PORTAGE_QUIET}
                local x
  
                # display warnings when using stricter because we die afterwards
diff --cc bin/repoman
Simple merge
diff --cc man/make.conf.5
Simple merge
Simple merge
Simple merge
Simple merge