commit:     11ddc8c2e74eb34c10887d006af248edb3ca7fb6
Author:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Sun Jul 24 19:55:07 2022 +0000
Commit:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Sun Jul 24 19:55:07 2022 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=11ddc8c2

*: drop support for AIX, HP-UX and FreeMiNT

Support for these arches was long ago dropped from the tree, drop the
additional burden on the Portage codebase.

Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>

 bin/install-qa-check.d/80libraries                 |   7 +-
 bin/misc-functions.sh                              | 348 +--------------------
 lib/portage/dbapi/vartree.py                       |   5 -
 .../package/ebuild/_config/special_env_vars.py     |   2 -
 lib/portage/package/ebuild/doebuild.py             |   2 -
 lib/portage/util/_dyn_libs/LinkageMapXCoff.py      | 312 ------------------
 lib/portage/util/_pty.py                           |  10 +-
 7 files changed, 6 insertions(+), 680 deletions(-)

diff --git a/bin/install-qa-check.d/80libraries 
b/bin/install-qa-check.d/80libraries
index 15249f67e..a477ec9cb 100644
--- a/bin/install-qa-check.d/80libraries
+++ b/bin/install-qa-check.d/80libraries
@@ -157,12 +157,7 @@ lib_check() {
        [[ ${abort} == "yes" ]] && die "add those ldscripts"
 
        # Make sure people don't store libtool files or static libs in /lib
-       # PREFIX LOCAL: on AIX, "dynamic libs" have extension .a, so don't
-       # get false positives
-       [[ ${CHOST} == *-aix* ]] \
-               && f=$(ls "${ED%/}"lib*/*.la 2>/dev/null || true) \
-               || f=$(ls "${ED%/}"lib*/*.{a,la} 2>/dev/null)
-       # END PREFIX LOCAL
+       f=$(ls "${ED%/}"/lib*/*.{a,la} 2>/dev/null)
        if [[ -n ${f} ]] ; then
                __vecho -ne '\n'
                eqawarn "QA Notice: Excessive files found in the / partition"

diff --git a/bin/misc-functions.sh b/bin/misc-functions.sh
index a77b3bcfc..8fcc23588 100755
--- a/bin/misc-functions.sh
+++ b/bin/misc-functions.sh
@@ -169,17 +169,13 @@ install_qa_check() {
        if [[ -d ${ED} ]] ; then
                case ${CHOST} in
                        *-darwin*)
-                               # Mach-O platforms (NeXT, Darwin, OSX)
+                               # Mach-O platforms (NeXT, Darwin, OSX/macOS)
                                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.)
@@ -565,139 +561,6 @@ install_qa_check_pecoff() {
        fi
 }
 
-install_qa_check_xcoff() {
-       if ! has binchecks ${RESTRICT}; then
-               local tmp_quiet=${PORTAGE_QUIET}
-               local queryline deplib
-               local insecure_rpath_list= undefined_symbols_list=
-
-               # display warnings when using stricter because we die afterwards
-               if has stricter ${FEATURES} ; then
-                       unset PORTAGE_QUIET
-               fi
-
-               rm -f "${PORTAGE_BUILDDIR}"/build-info/NEEDED.XCOFF.1
-
-               local neededfd
-               for neededfd in {3..1024} none; do ( : <&${neededfd} ) 
2>/dev/null || break; done
-               [[ ${neededfd} != none ]] || die "cannot find free file 
descriptor handle"
-
-               eval "exec 
${neededfd}>\"${PORTAGE_BUILDDIR}\"/build-info/NEEDED.XCOFF.1" || die "cannot 
open ${PORTAGE_BUILDDIR}/build-info/NEEDED.XCOFF.1"
-
-               (       # work around a problem in /usr/bin/dump (used by 
aixdll-query)
-                       # dumping core when path names get too long.
-                       cd "${ED}" >/dev/null &&
-                       find . -not -type d -exec \
-                               aixdll-query '{}' FILE MEMBER FLAGS FORMAT 
RUNPATH DEPLIBS ';'
-               ) > "${T}"/needed 2>/dev/null
-
-               # Symlinking shared archive libraries is not a good idea on aix,
-               # as there is nothing like "soname" on pure filesystem level.
-               # So we create a copy instead of the symlink.
-               local prev_FILE=
-               local FILE MEMBER FLAGS FORMAT RUNPATH DEPLIBS
-               while read queryline
-               do
-                       FILE= MEMBER= FLAGS= FORMAT= RUNPATH= DEPLIBS=
-                       eval ${queryline}
-                       FILE=${FILE#./}
-
-                       if [[ ${prev_FILE} != ${FILE} ]]; then
-                               if [[ " ${FLAGS} " == *" SHROBJ "* && -h 
${ED}${FILE} ]]; then
-                                       prev_FILE=${FILE}
-                                       local target=$(readlink "${ED}${FILE}")
-                                       if [[ ${target} == /* ]]; then
-                                               target=${D}${target}
-                                       else
-                                               target=${FILE%/*}/${target}
-                                       fi
-                                       rm -f "${ED}${FILE}" || die "cannot 
prune ${FILE}"
-                                       cp -f "${ED}${target}" "${ED}${FILE}" 
|| die "cannot copy ${target} to ${FILE}"
-                               fi
-                       fi
-               done <"${T}"/needed
-
-               prev_FILE=
-               while read queryline
-               do
-                       FILE= MEMBER= FLAGS= FORMAT= RUNPATH= DEPLIBS=
-                       eval ${queryline}
-                       FILE=${FILE#./}
-
-                       if [[ -n ${MEMBER} && ${prev_FILE} != ${FILE} ]]; then
-                               # Save NEEDED information for each archive 
library stub
-                               # even if it is static only: the already 
installed archive
-                               # may contain shared objects to be preserved.
-                               echo "${FORMAT##* 
}${FORMAT%%-*};${EPREFIX}/${FILE};${FILE##*/};;" >&${neededfd}
-                       fi
-                       prev_FILE=${FILE}
-
-                       # shared objects have both EXEC and SHROBJ flags,
-                       # while executables have EXEC flag only.
-                       [[ " ${FLAGS} " == *" EXEC "* ]] || continue
-
-                       # Make sure we disallow insecure RUNPATH's
-                       # Don't want paths that point to the tree where the 
package was built
-                       # (older, broken libtools would do this).  Also check 
for null paths
-                       # because the loader will search $PWD when it finds 
null paths.
-                       # And we really want absolute paths only.
-                       if [[ -n $(echo ":${RUNPATH}:" | grep -E 
"(${PORTAGE_BUILDDIR}|::|:[^/])") ]]; then
-                               
insecure_rpath_list="${insecure_rpath_list}\n${FILE}${MEMBER:+[${MEMBER}]}"
-                       fi
-
-                       local needed=
-                       [[ -n ${MEMBER} ]] && needed=${FILE##*/}
-                       for deplib in ${DEPLIBS}; do
-                               eval deplib=${deplib}
-                               if [[ ${deplib} == '.' || ${deplib} == '..' ]]; 
then
-                                       # Although we do have runtime linking, 
we don't want undefined symbols.
-                                       # AIX does indicate this by needing 
either '.' or '..'
-                                       
undefined_symbols_list="${undefined_symbols_list}\n${FILE}"
-                               else
-                                       needed="${needed}${needed:+,}${deplib}"
-                               fi
-                       done
-
-                       FILE=${EPREFIX}/${FILE}
-
-                       [[ -n ${MEMBER} ]] && MEMBER="[${MEMBER}]"
-                       # Save NEEDED information
-                       echo "${FORMAT##* 
}${FORMAT%%-*};${FILE}${MEMBER};${FILE##*/}${MEMBER};${RUNPATH};${needed}" 
>&${neededfd}
-               done <"${T}"/needed
-
-               eval "exec ${neededfd}>&-" || die "cannot close handle to 
${PORTAGE_BUILDDIR}/build-info/NEEDED.XCOFF.1"
-
-               if [[ -n ${undefined_symbols_list} ]]; then
-                       __vecho -ne '\a\n'
-                       eqawarn "QA Notice: The following files contain 
undefined symbols."
-                       eqawarn " Please file a bug about this at 
http://bugs.gentoo.org/";
-                       eqawarn " with 'prefix' as the maintaining herd of the 
package."
-                       eqawarn "${undefined_symbols_list}"
-                       __vecho -ne '\a\n'
-               fi
-
-               if [[ -n ${insecure_rpath_list} ]] ; then
-                       __vecho -ne '\a\n'
-                       eqawarn "QA Notice: The following files contain 
insecure RUNPATH's"
-                       eqawarn " Please file a bug about this at 
http://bugs.gentoo.org/";
-                       eqawarn " with 'prefix' as the maintaining herd of the 
package."
-                       eqawarn "${insecure_rpath_list}"
-                       __vecho -ne '\a\n'
-                       if has stricter ${FEATURES} ; then
-                               insecure_rpath=1
-                       fi
-               fi
-
-               if [[ ${insecure_rpath} -eq 1 ]] ; then
-                       die "Aborting due to serious QA concerns with 
RUNPATH/RPATH"
-               elif [[ -n ${die_msg} ]] && has stricter ${FEATURES} ; then
-                       die "Aborting due to QA concerns: ${die_msg}"
-               fi
-
-               PORTAGE_QUIET=${tmp_quiet}
-       fi
-}
-
 __dyn_instprep() {
        if [[ -e ${PORTAGE_BUILDDIR}/.instprepped ]] ; then
                __vecho ">>> It appears that '$PF' is already instprepped; 
skipping."
@@ -848,215 +711,6 @@ install_mask() {
        set -${shopts}
 }
 
-preinst_aix() {
-       if [[ ${CHOST} != *-aix* ]] || has binchecks ${RESTRICT}; then
-               return 0
-       fi
-       local ar strip
-       if type ${CHOST}-ar >/dev/null 2>&1 && type ${CHOST}-strip >/dev/null 
2>&1; then
-               ar=${CHOST}-ar
-               strip=${CHOST}-strip
-       elif [[ ${CBUILD} == "${CHOST}" ]] && type ar >/dev/null 2>&1 && type 
strip >/dev/null 2>&1; then
-               ar=ar
-               strip=strip
-       elif [[ -x /usr/ccs/bin/ar && -x /usr/ccs/bin/strip ]]; then
-               ar=/usr/ccs/bin/ar
-               strip=/usr/ccs/bin/strip
-       else
-               die "cannot find where to use 'ar' and 'strip' from"
-       fi
-       local archives_members= archives=() helperfiles=()
-       local archive_member soname runpath needed archive contentmember
-       while read archive_member; do
-               archive_member=${archive_member#*;${EPREFIX}/} # drop 
"^type;EPREFIX/"
-               soname=${archive_member#*;}
-               runpath=${soname#*;}
-               needed=${runpath#*;}
-               soname=${soname%%;*}
-               runpath=${runpath%%;*}
-               archive_member=${archive_member%%;*} # drop 
";soname;runpath;needed$"
-               archive=${archive_member%[*}
-               if [[ ${archive_member} != *'['*']' ]]; then
-                       if [[ "${soname};${runpath};${needed}" == 
"${archive##*/};;" && -e ${EROOT}${archive} ]]; then
-                               # most likely is an archive stub that already 
exists,
-                               # may have to preserve members being a shared 
object.
-                               archives[${#archives[@]}]=${archive}
-                       fi
-                       continue
-               fi
-               archives_members="${archives_members}:(${archive_member}):"
-               
contentmember="${archive%/*}/.${archive##*/}${archive_member#${archive}}"
-               # portage does os.lstat() on merged files every now
-               # and then, so keep stamp-files for archive members
-               # around to get the preserve-libs feature working.
-               helperfiles[${#helperfiles[@]}]=${ED}${contentmember}
-       done < "${PORTAGE_BUILDDIR}"/build-info/NEEDED.XCOFF.1
-       if [[ ${#helperfiles[@]} > 0 ]]; then
-               rm -f "${helperfiles[@]}" || die "cannot prune 
${helperfiles[@]}"
-               local f prev=
-               for f in "${helperfiles[@]}"
-               do
-                       if [[ -z ${prev} ]]; then
-                               {       echo "Please leave this file alone, it 
is an important helper"
-                                       echo "for portage to implement the 
'preserve-libs' feature on AIX." 
-                               } > "${f}" || die "cannot create ${f}"
-                               chmod 0400 "${f}" || die "cannot chmod ${f}"
-                               prev=${f}
-                       else
-                               ln "${prev}" "${f}" || die "cannot create 
hardlink ${f}"
-                       fi
-               done
-       fi
-
-       local preservemembers libmetadir prunedirs=()
-       local FILE MEMBER FLAGS
-       for archive in "${archives[@]}"; do
-               preservemembers=
-               while read line; do
-                       [[ -n ${line} ]] || continue
-                       FILE= MEMBER= FLAGS=
-                       eval ${line}
-                       [[ ${FILE} == ${EROOT}${archive} ]] ||
-                       die "invalid result of aixdll-query for 
${EROOT}${archive}"
-                       [[ -n ${MEMBER} && " ${FLAGS} " == *" SHROBJ "* ]] || 
continue
-                       [[ ${archives_members} == *":(${archive}[${MEMBER}]):"* 
]] && continue
-                       preservemembers="${preservemembers} ${MEMBER}"
-               done <<-EOF
-                       $(aixdll-query "${EROOT}${archive}" FILE MEMBER FLAGS)
-               EOF
-               [[ -n ${preservemembers} ]] || continue
-               einfo "preserving (on spec) ${archive}[${preservemembers# }]"
-               libmetadir=${ED}${archive%/*}/.${archive##*/}
-               mkdir "${libmetadir}" || die "cannot create ${libmetadir}"
-               pushd "${libmetadir}" >/dev/null || die "cannot cd to 
${libmetadir}"
-               ${ar} -X32_64 -x "${EROOT}${archive}" ${preservemembers} || die 
"cannot unpack ${EROOT}${archive}"
-               chmod u+w ${preservemembers} || die "cannot 
chmod${preservemembers}"
-               ${strip} -X32_64 -e ${preservemembers} || die "cannot 
strip${preservemembers}"
-               ${ar} -X32_64 -q "${ED}${archive}" ${preservemembers} || die 
"cannot update ${archive}"
-               eend $?
-               popd >/dev/null || die "cannot leave ${libmetadir}"
-               prunedirs[${#prunedirs[@]}]=${libmetadir}
-       done
-       [[ ${#prunedirs[@]} == 0 ]] ||
-       rm -rf "${prunedirs[@]}" || die "cannot prune ${prunedirs[@]}"
-       return 0
-}
-
-postinst_aix() {
-       if [[ ${CHOST} != *-aix* ]] || has binchecks ${RESTRICT}; then
-               return 0
-       fi
-       local MY_PR=${PR%r0}
-       local ar strip
-       if type ${CHOST}-ar >/dev/null 2>&1 && type ${CHOST}-strip >/dev/null 
2>&1; then
-               ar=${CHOST}-ar
-               strip=${CHOST}-strip
-       elif [[ ${CBUILD} == "${CHOST}" ]] && type ar >/dev/null 2>&1 && type 
strip >/dev/null 2>&1; then
-               ar=ar
-               strip=strip
-       elif [[ -x /usr/ccs/bin/ar && -x /usr/ccs/bin/strip ]]; then
-               ar=/usr/ccs/bin/ar
-               strip=/usr/ccs/bin/strip
-       else
-               die "cannot find where to use 'ar' and 'strip' from"
-       fi
-       local archives_members= archives=() activearchives=
-       local archive_member soname runpath needed
-       while read archive_member; do
-               archive_member=${archive_member#*;${EPREFIX}/} # drop 
"^type;EPREFIX/"
-               soname=${archive_member#*;}
-               runpath=${soname#*;}
-               needed=${runpath#*;}
-               soname=${soname%%;*}
-               runpath=${runpath%%;*}
-               archive_member=${archive_member%%;*} # drop 
";soname;runpath;needed$"
-               [[ ${archive_member} == *'['*']' ]] && continue
-               [[ "${soname};${runpath};${needed}" == 
"${archive_member##*/};;" ]] || continue
-               # most likely is an archive stub, we might have to
-               # drop members being preserved shared objects.
-               archives[${#archives[@]}]=${archive_member}
-               activearchives="${activearchives}:(${archive_member}):"
-       done < "${PORTAGE_BUILDDIR}"/build-info/NEEDED.XCOFF.1
-
-       local type allcontentmembers= oldarchives=()
-       local contentmember
-       while read type contentmember; do
-               [[ ${type} == 'obj' ]] || continue
-               contentmember=${contentmember% *} # drop " timestamp$"
-               contentmember=${contentmember% *} # drop " hash$"
-               [[ ${contentmember##*/} == *'['*']' ]] || continue
-               contentmember=${contentmember#${EPREFIX}/}
-               allcontentmembers="${allcontentmembers}:(${contentmember}):"
-               contentmember=${contentmember%[*}
-               contentmember=${contentmember%/.*}/${contentmember##*/.}
-               [[ ${activearchives} == *":(${contentmember}):"* ]] && continue
-               oldarchives[${#oldarchives[@]}]=${contentmember}
-       done < 
"${EPREFIX}/var/db/pkg/${CATEGORY}/${P}${MY_PR:+-}${MY_PR}/CONTENTS"
-
-       local archive line delmembers
-       local FILE MEMBER FLAGS
-       for archive in "${archives[@]}"; do
-               [[ -r ${EROOT}${archive} && -w ${EROOT}${archive} ]] ||
-               chmod a+r,u+w "${EROOT}${archive}" || die "cannot chmod 
${EROOT}${archive}"
-               delmembers=
-               while read line; do
-                       [[ -n ${line} ]] || continue
-                       FILE= MEMBER= FLAGS=
-                       eval ${line}
-                       [[ ${FILE} == "${EROOT}${archive}" ]] ||
-                       die "invalid result '${FILE}' of aixdll-query, expected 
'${EROOT}${archive}'"
-                       [[ -n ${MEMBER} && " ${FLAGS} " == *" SHROBJ "* ]] || 
continue
-                       [[ ${allcontentmembers} == 
*":(${archive%/*}/.${archive##*/}[${MEMBER}]):"* ]] && continue
-                       delmembers="${delmembers} ${MEMBER}"
-               done <<-EOF
-                       $(aixdll-query "${EROOT}${archive}" FILE MEMBER FLAGS)
-               EOF
-               [[ -n ${delmembers} ]] || continue
-               einfo "dropping ${archive}[${delmembers# }]"
-               rm -f "${EROOT}${archive}".new || die "cannot prune 
${EROOT}${archive}.new"
-               cp "${EROOT}${archive}" "${EROOT}${archive}".new || die "cannot 
backup ${archive}"
-               ${ar} -X32_64 -z -o -d "${EROOT}${archive}".new ${delmembers} 
|| die "cannot remove${delmembers} from ${archive}.new"
-               mv -f "${EROOT}${archive}".new "${EROOT}${archive}" || die 
"cannot put ${EROOT}${archive} in place"
-               eend $?
-       done
-       local libmetadir keepmembers prunedirs=()
-       for archive in "${oldarchives[@]}"; do
-               [[ -r ${EROOT}${archive} && -w ${EROOT}${archive} ]] ||
-               chmod a+r,u+w "${EROOT}${archive}" || die "cannot chmod 
${EROOT}${archive}"
-               keepmembers=
-               while read line; do
-                       FILE= MEMBER= FLAGS=
-                       eval ${line}
-                       [[ ${FILE} == "${EROOT}${archive}" ]] ||
-                       die "invalid result of aixdll-query for 
${EROOT}${archive}"
-                       [[ -n ${MEMBER} && " ${FLAGS} " == *" SHROBJ "* ]] || 
continue
-                       [[ ${allcontentmembers} == 
*":(${archive%/*}/.${archive##*/}[${MEMBER}]):"* ]] || continue
-                       keepmembers="${keepmembers} ${MEMBER}"
-               done <<-EOF
-                       $(aixdll-query "${EROOT}${archive}" FILE MEMBER FLAGS)
-               EOF
-
-               if [[ -n ${keepmembers} ]]; then
-                       einfo "preserving (extra)${keepmembers}"
-                       libmetadir=${EROOT}${archive%/*}/.${archive##*/}
-                       [[ ! -e ${libmetadir} ]] || rm -rf "${libmetadir}" || 
die "cannot prune ${libmetadir}"
-                       mkdir "${libmetadir}" || die "cannot create 
${libmetadir}"
-                       pushd "${libmetadir}" >/dev/null || die "cannot cd to 
${libmetadir}"
-                       ${ar} -X32_64 -x "${EROOT}${archive}" ${keepmembers} || 
die "cannot unpack ${archive}"
-                       ${strip} -X32_64 -e ${keepmembers} || die "cannot strip 
${keepmembers}"
-                       rm -f "${EROOT}${archive}.new" || die "cannot prune 
${EROOT}${archive}.new"
-                       ${ar} -X32_64 -q "${EROOT}${archive}.new" 
${keepmembers} || die "cannot create ${EROOT}${archive}.new"
-                       mv -f "${EROOT}${archive}.new" "${EROOT}${archive}" || 
die "cannot put ${EROOT}${archive} in place"
-                       popd > /dev/null || die "cannot leave ${libmetadir}"
-                       prunedirs[${#prunedirs[@]}]=${libmetadir}
-                       eend $?
-               fi
-       done
-       [[ ${#prunedirs[@]} == 0 ]] ||
-       rm -rf "${prunedirs[@]}" || die "cannot prune ${prunedirs[@]}"
-       return 0
-}
-
 preinst_mask() {
        # Remove man pages, info pages, docs if requested. This is
        # implemented in bash in order to respect INSTALL_MASK settings

diff --git a/lib/portage/dbapi/vartree.py b/lib/portage/dbapi/vartree.py
index c9a4b19ab..7a41fae01 100644
--- a/lib/portage/dbapi/vartree.py
+++ b/lib/portage/dbapi/vartree.py
@@ -41,7 +41,6 @@ portage.proxy.lazyimport.lazyimport(
     # BEGIN PREFIX LOCAL
     'portage.util._dyn_libs.LinkageMapMachO:LinkageMapMachO',
     'portage.util._dyn_libs.LinkageMapPeCoff:LinkageMapPeCoff',
-    'portage.util._dyn_libs.LinkageMapXCoff:LinkageMapXCoff',
     # END PREFIX LOCAL
     "portage.util._dyn_libs.NeededEntry:NeededEntry",
     "portage.util._async.SchedulerInterface:SchedulerInterface",
@@ -249,8 +248,6 @@ class vardbapi(dbapi):
             self._linkmap = LinkageMapMachO(self)
         elif chost.find('interix') >= 0 or chost.find('winnt') >= 0:
             self._linkmap = LinkageMapPeCoff(self)
-        elif chost.find('aix') >= 0:
-            self._linkmap = LinkageMapXCoff(self)
         else:
             self._linkmap = LinkageMap(self)
         # END PREFIX LOCAL
@@ -3777,8 +3774,6 @@ class dblink:
                     node = 
LinkageMapMachO._LibGraphNode(linkmap._obj_key(path))
                 elif chost.find('interix') >= 0 or chost.find('winnt') >= 0:
                     node = 
LinkageMapPeCoff._LibGraphNode(linkmap._obj_key(path))
-                elif chost.find('aix') >= 0:
-                    node = 
LinkageMapXCoff._LibGraphNode(linkmap._obj_key(path))
                 else:
                     node = LinkageMap._LibGraphNode(linkmap._obj_key(path))
                 # END PREFIX LOCAL

diff --git a/lib/portage/package/ebuild/_config/special_env_vars.py 
b/lib/portage/package/ebuild/_config/special_env_vars.py
index a192fa80b..d974325e0 100644
--- a/lib/portage/package/ebuild/_config/special_env_vars.py
+++ b/lib/portage/package/ebuild/_config/special_env_vars.py
@@ -247,8 +247,6 @@ environ_whitelist += [
     "STY",
     "WINDOW",
     "XAUTHORITY",
-    # PREFIX LOCAL: UNIXMODE is necessary for MiNT
-    "UNIXMODE",
 ]
 
 environ_whitelist = frozenset(environ_whitelist)

diff --git a/lib/portage/package/ebuild/doebuild.py 
b/lib/portage/package/ebuild/doebuild.py
index 6f48dfd2d..e9d7a858f 100644
--- a/lib/portage/package/ebuild/doebuild.py
+++ b/lib/portage/package/ebuild/doebuild.py
@@ -2316,7 +2316,6 @@ _post_phase_cmds = {
             {},
             [
                 # PREFIX LOCAL
-                "preinst_aix",
                 "preinst_sfperms",
                 "preinst_suid_scan",
                 "preinst_qa_check",
@@ -2325,7 +2324,6 @@ _post_phase_cmds = {
     ),
     "postinst": [
             # PREFIX LOCAL
-            "postinst_aix",
             "postinst_qa_check",
             ],
 }

diff --git a/lib/portage/util/_dyn_libs/LinkageMapXCoff.py 
b/lib/portage/util/_dyn_libs/LinkageMapXCoff.py
deleted file mode 100644
index 6c4c994b5..000000000
--- a/lib/portage/util/_dyn_libs/LinkageMapXCoff.py
+++ /dev/null
@@ -1,312 +0,0 @@
-# Copyright 1998-2011 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-import errno
-import logging
-import subprocess
-
-import portage
-from portage import _encodings
-from portage import _os_merge
-from portage import _unicode_decode
-from portage import _unicode_encode
-from portage.cache.mappings import slot_dict_class
-from portage.exception import CommandNotFound
-from portage.localization import _
-from portage.util import getlibpaths
-from portage.util import grabfile
-from portage.util import normalize_path
-from portage.util import writemsg_level
-from portage.const import EPREFIX, BASH_BINARY
-from portage.util._dyn_libs.LinkageMapELF import LinkageMapELF
-
-class LinkageMapXCoff(LinkageMapELF):
-
-       """Models dynamic linker dependencies."""
-
-       _needed_aux_key = "NEEDED.XCOFF.1"
-
-       class _ObjectKey(LinkageMapELF._ObjectKey):
-
-               def __init__(self, obj, root):
-                       LinkageMapELF._ObjectKey.__init__(self, obj, root)
-
-               def _generate_object_key(self, obj, root):
-                       """
-                       Generate object key for a given object.
-
-                       @param object: path to a file
-                       @type object: string (example: '/usr/bin/bar')
-                       @rtype: 2-tuple of types (long, int) if object exists. 
string if
-                               object does not exist.
-                       @return:
-                               1. 2-tuple of object's inode and device from a 
stat call, if object
-                                       exists.
-                               2. realpath of object if object does not exist.
-
-                       """
-
-                       os = _os_merge
-
-                       try:
-                               _unicode_encode(obj,
-                                       encoding=_encodings['merge'], 
errors='strict')
-                       except UnicodeEncodeError:
-                               # The package appears to have been merged with 
a 
-                               # different value of 
sys.getfilesystemencoding(),
-                               # so fall back to utf_8 if appropriate.
-                               try:
-                                       _unicode_encode(obj,
-                                               encoding=_encodings['fs'], 
errors='strict')
-                               except UnicodeEncodeError:
-                                       pass
-                               else:
-                                       os = portage.os
-
-                       abs_path = os.path.join(root, obj.lstrip(os.sep))
-                       try:
-                               object_stat = os.stat(abs_path)
-                       except OSError:
-                               # Use the realpath as the key if the file does 
not exists on the
-                               # filesystem.
-                               return os.path.realpath(abs_path)
-                       # Return a tuple of the device and inode, as well as 
the basename,
-                       # because of hardlinks (notably for the .libNAME[shr.o] 
helpers)
-                       # the device and inode might be identical.
-                       return (object_stat.st_dev, object_stat.st_ino, 
os.path.basename(abs_path.rstrip(os.sep)))
-
-       class _LibGraphNode(_ObjectKey):
-               __slots__ = ("alt_paths",)
-
-               def __init__(self, key):
-                       """
-                       Create a _LibGraphNode from an existing _ObjectKey.
-                       This re-uses the _key attribute in order to avoid 
repeating
-                       any previous stat calls, which helps to avoid potential 
race
-                       conditions due to inconsistent stat results when the
-                       file system is being modified concurrently.
-                       """
-                       self._key = key._key
-                       self.alt_paths = set()
-
-               def __str__(self):
-                       return str(sorted(self.alt_paths))
-
-       def rebuild(self, exclude_pkgs=None, include_file=None,
-               preserve_paths=None):
-               """
-               Raises CommandNotFound if there are preserved libs
-               and the scanelf binary is not available.
-
-               @param exclude_pkgs: A set of packages that should be excluded 
from
-                       the LinkageMap, since they are being unmerged and their 
NEEDED
-                       entries are therefore irrelevant and would only serve 
to corrupt
-                       the LinkageMap.
-               @type exclude_pkgs: set
-               @param include_file: The path of a file containing NEEDED 
entries for
-                       a package which does not exist in the vardbapi yet 
because it is
-                       currently being merged.
-               @type include_file: String
-               @param preserve_paths: Libraries preserved by a package 
instance that
-                       is currently being merged. They need to be explicitly 
passed to the
-                       LinkageMap, since they are not registered in the
-                       PreservedLibsRegistry yet.
-               @type preserve_paths: set
-               """
-
-               os = _os_merge
-               root = self._root
-               root_len = len(root) - 1
-               self._clear_cache()
-               self._defpath.update(getlibpaths(self._root, 
env=self._dbapi.settings))
-               libs = self._libs
-               obj_properties = self._obj_properties
-
-               lines = []
-
-               # Data from include_file is processed first so that it
-               # overrides any data from previously installed files.
-               if include_file is not None:
-                       for line in grabfile(include_file):
-                               lines.append((None, include_file, line))
-
-               aux_keys = [self._needed_aux_key]
-               can_lock = os.access(os.path.dirname(self._dbapi._dbroot), 
os.W_OK)
-               if can_lock:
-                       self._dbapi.lock()
-               try:
-                       for cpv in self._dbapi.cpv_all():
-                               if exclude_pkgs is not None and cpv in 
exclude_pkgs:
-                                       continue
-                               needed_file = self._dbapi.getpath(cpv,
-                                       filename=self._needed_aux_key)
-                               for line in self._dbapi.aux_get(cpv, 
aux_keys)[0].splitlines():
-                                       lines.append((cpv, needed_file, line))
-               finally:
-                       if can_lock:
-                               self._dbapi.unlock()
-
-               # have to call scanelf for preserved libs here as they aren't 
-               # registered in NEEDED.XCOFF.1 files
-               plibs = {}
-               if preserve_paths is not None:
-                       plibs.update((x, None) for x in preserve_paths)
-               if self._dbapi._plib_registry and \
-                       self._dbapi._plib_registry.hasEntries():
-                       for cpv, items in \
-                               
self._dbapi._plib_registry.getPreservedLibs().items():
-                               if exclude_pkgs is not None and cpv in 
exclude_pkgs:
-                                       # These preserved libs will either be 
unmerged,
-                                       # rendering them irrelevant, or they 
will be
-                                       # preserved in the replacement package 
and are
-                                       # already represented via the 
preserve_paths
-                                       # parameter.
-                                       continue
-                               plibs.update((x, cpv) for x in items)
-               if plibs:
-                       args = [BASH_BINARY , "-c" , ':'
-                                + '; for member in "$@"'
-                                + '; do archive=${member}'
-                                       + '; if [[ ${member##*/} == .*"["*"]" 
]]'
-                                       + '; then 
member=${member%/.*}/${member##*/.}'
-                                                + '; archive=${member%[*}'
-                                       + '; fi'
-                                       + '; member=${member#${archive}}'
-                                       + '; [[ -r ${archive} ]] || chmod a+r 
"${archive}"'
-                                       + '; eval $(aixdll-query 
"${archive}${member}" FILE MEMBER FLAGS FORMAT RUNPATH DEPLIBS)'
-                                       + '; [[ -n ${member} ]] && 
needed=${FILE##*/} || needed='
-                                       + '; for deplib in ${DEPLIBS}'
-                                       + '; do eval deplib=${deplib}'
-                                          + '; if [[ ${deplib} != "." && 
${deplib} != ".." ]]'
-                                          + '; then 
needed="${needed}${needed:+,}${deplib}"'
-                                          + '; fi'
-                                       + '; done'
-                                       + '; [[ -n ${MEMBER} ]] && 
MEMBER="[${MEMBER}]"'
-                                       + '; [[ " ${FLAGS} " == *" SHROBJ "* ]] 
&& soname=${FILE##*/}${MEMBER} || soname='
-                                       + '; case ${member:+y}:${MEMBER:+y}'
-                                       #    member requested,    member found: 
show shared archive member
-                                        + ' in y:y) echo "${FORMAT##* 
}${FORMAT%%-*};${FILE#${ROOT%/}}${MEMBER};${soname};${RUNPATH};${needed}"'
-                                       # no member requested,    member found: 
show archive
-                                        + ' ;;  :y) echo "${FORMAT##* 
}${FORMAT%%-*};${FILE#${ROOT%/}};${FILE##*/};;"'
-                                       # no member requested, no member found: 
show standalone shared object
-                                        + ' ;;  : ) echo "${FORMAT##* 
}${FORMAT%%-*};${FILE#${ROOT%/}};${FILE##*/};${RUNPATH};${needed}"'
-                                       #    member requested, no member found: 
ignore archive replaced by standalone shared object
-                                        + ' ;; y: )'
-                                        + ' ;; esac'
-                                + '; done'
-                       , 'aixdll-query'
-                       ]
-                       args.extend(os.path.join(root, x.lstrip("." + os.sep)) \
-                               for x in plibs)
-                       try:
-                               proc = subprocess.Popen(args, 
stdout=subprocess.PIPE)
-                       except EnvironmentError as e:
-                               if e.errno != errno.ENOENT:
-                                       raise
-                               raise CommandNotFound(args[0])
-                       else:
-                               for l in proc.stdout:
-                                       try:
-                                               l = _unicode_decode(l,
-                                                       
encoding=_encodings['content'], errors='strict')
-                                       except UnicodeDecodeError:
-                                               l = _unicode_decode(l,
-                                                       
encoding=_encodings['content'], errors='replace')
-                                               writemsg_level(_("\nError 
decoding characters " \
-                                                       "returned from 
aixdll-query: %s\n\n") % (l,),
-                                                       level=logging.ERROR, 
noiselevel=-1)
-                                       l = l.rstrip("\n")
-                                       if not l:
-                                               continue
-                                       fields = l.split(";")
-                                       if len(fields) < 5:
-                                               writemsg_level(_("\nWrong 
number of fields " \
-                                                       "returned from 
aixdll-query: %s\n\n") % (l,),
-                                                       level=logging.ERROR, 
noiselevel=-1)
-                                               continue
-                                       fields[1] = fields[1][root_len:]
-                                       owner = plibs.pop(fields[1], None)
-                                       lines.append((owner, "aixdll-query", 
";".join(fields)))
-                               proc.wait()
-                               proc.stdout.close()
-
-               # Share identical frozenset instances when available,
-               # in order to conserve memory.
-               frozensets = {}
-
-               for owner, location, l in lines:
-                       l = l.rstrip("\n")
-                       if not l:
-                               continue
-                       fields = l.split(";")
-                       if len(fields) < 5:
-                               writemsg_level(_("\nWrong number of fields " \
-                                       "in %s: %s\n\n") % (location, l),
-                                       level=logging.ERROR, noiselevel=-1)
-                               continue
-                       arch = fields[0]
-
-                       def as_contentmember(obj):
-                               if obj.endswith("]"):
-                                       if obj.find("/") >= 0:
-                                               if obj[obj.rfind("/")+1] == ".":
-                                                       return obj
-                                               return obj[:obj.rfind("/")] + 
"/." + obj[obj.rfind("/")+1:]
-                                       if obj[0] == ".":
-                                               return obj
-                                       return "." + obj
-                               return obj
-
-                       obj = as_contentmember(fields[1])
-                       soname = as_contentmember(fields[2])
-                       path = frozenset(normalize_path(x) \
-                               for x in filter(None, fields[3].replace(
-                               "${ORIGIN}", os.path.dirname(obj)).replace(
-                               "$ORIGIN", os.path.dirname(obj)).split(":")))
-                       path = frozensets.setdefault(path, path)
-                       needed = frozenset(as_contentmember(x) for x in 
fields[4].split(",") if x)
-                       needed = frozensets.setdefault(needed, needed)
-
-                       obj_key = self._obj_key(obj)
-                       indexed = True
-                       myprops = obj_properties.get(obj_key)
-                       if myprops is None:
-                               indexed = False
-                               myprops = self._obj_properties_class(
-                                       arch, needed, path, soname, [], owner)
-                               obj_properties[obj_key] = myprops
-                       # All object paths are added into the obj_properties 
tuple.
-                       myprops.alt_paths.append(obj)
-
-                       # Don't index the same file more that once since only 
one
-                       # set of data can be correct and therefore mixing data
-                       # may corrupt the index (include_file overrides 
previously
-                       # installed).
-                       if indexed:
-                               continue
-
-                       arch_map = libs.get(arch)
-                       if arch_map is None:
-                               arch_map = {}
-                               libs[arch] = arch_map
-                       if soname:
-                               soname_map = arch_map.get(soname)
-                               if soname_map is None:
-                                       soname_map = self._soname_map_class(
-                                               providers=[], consumers=[])
-                                       arch_map[soname] = soname_map
-                               soname_map.providers.append(obj_key)
-                       for needed_soname in needed:
-                               soname_map = arch_map.get(needed_soname)
-                               if soname_map is None:
-                                       soname_map = self._soname_map_class(
-                                               providers=[], consumers=[])
-                                       arch_map[needed_soname] = soname_map
-                               soname_map.consumers.append(obj_key)
-
-               for arch, sonames in libs.items():
-                       for soname_node in sonames.values():
-                               soname_node.providers = 
tuple(set(soname_node.providers))
-                               soname_node.consumers = 
tuple(set(soname_node.consumers))
-
-       pass

diff --git a/lib/portage/util/_pty.py b/lib/portage/util/_pty.py
index 1fd846dd1..e58f95e0a 100644
--- a/lib/portage/util/_pty.py
+++ b/lib/portage/util/_pty.py
@@ -9,14 +9,12 @@ from portage import os
 from portage.output import get_term_size, set_term_size
 from portage.util import writemsg
 
-# BEGIN PREFIX LOCAL: disable on more platforms
-# Disable the use of openpty on Solaris (and others) as it seems Python's
-# openpty implementation doesn't play nice with Portage's behaviour,
-# causing hangs/deadlocks.
+# Disable the use of openpty on Solaris as it seems Python's openpty
+# implementation doesn't play nice on Solaris with Portage's
+# behaviour causing hangs/deadlocks.
 # Additional note for the future: on Interix, pipes do NOT work, so
 # _disable_openpty on Interix must *never* be True
-_disable_openpty = platform.system() in ("AIX","FreeMiNT","HP-UX","SunOS",)
-# END PREFIX LOCAL
+_disable_openpty = platform.system() in ("SunOS",)
 
 _fbsd_test_pty = platform.system() == "FreeBSD"
 

Reply via email to