# [Python] fallo al compilar dev-python/setuptools (Close)

## Eleazar Anzola

Buenas estimados,

desde la ultima actualización hace un par de semanas estoy teniendo problemas para instalar Tryton, esto debido a un fallo con python y setuptools que no termina de compilar e instalar, he revisado los foros en busca de una solución que no logro ver, dejo la salida de emerge dev-python/setuptools a ver quien logra darme luces al respecto, de antemano gracias por su valioso tiempo

```
>>> Emerging (1 of 2) dev-python/setuptools-41.2.0::gentoo

 * Fetching files in the background.

 * To view fetch progress, run in another terminal:

 * tail -f /var/log/emerge-fetch.log

 * setuptools-41.2.0.zip BLAKE2B SHA512 size ;-) ...                     [ ok ]

>>> Unpacking source...

>>> Unpacking setuptools-41.2.0.zip to /var/tmp/portage/dev-python/setuptools-41.2.0/work

>>> Source unpacked in /var/tmp/portage/dev-python/setuptools-41.2.0/work

>>> Preparing source in /var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0 ...

 * Will copy sources from /var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0

 * python2_7: copying to /var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7

 * python3_6: copying to /var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python3_6

>>> Source prepared.

>>> Configuring source in /var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0 ...

>>> Source configured.

>>> Compiling source in /var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0 ...

 * python2_7: running distutils-r1_run_phase distutils-r1_python_compile

cp: './build/setuptools.egg-info' y '/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7/build/setuptools.egg-info' son el mismo fichero

python2.7 setup.py build

Traceback (most recent call last):

  File "setup.py", line 148, in <module>

    dist = setuptools.setup(**setup_params)

  File "/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7/setuptools/__init__.py", line 144, in setup

    _install_setup_requires(attrs)

  File "/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7/setuptools/__init__.py", line 133, in _install_setup_requires

    (k, v) for k, v in attrs.items()

  File "/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7/setuptools/dist.py", line 443, in __init__

    for ep in pkg_resources.iter_entry_points('distutils.setup_keywords'):

  File "/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7/pkg_resources/__init__.py", line 656, in <genexpr>

    for entry in dist.get_entry_map(group).values()

  File "/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7/pkg_resources/__init__.py", line 2860, in get_entry_map

    self._get_metadata('entry_points.txt'), self

  File "/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7/pkg_resources/__init__.py", line 2531, in parse_map

    raise ValueError("Entry points must be listed in groups")

ValueError: Entry points must be listed in groups

 * ERROR: dev-python/setuptools-41.2.0::gentoo failed (compile phase):

 *   (no error message)

 * 

 * Call stack:

 *     ebuild.sh, line  125:  Called src_compile

 *   environment, line 2762:  Called distutils-r1_src_compile

 *   environment, line  941:  Called _distutils-r1_run_foreach_impl 'distutils-r1_python_compile'

 *   environment, line  442:  Called python_foreach_impl 'distutils-r1_run_phase' 'distutils-r1_python_compile'

 *   environment, line 2296:  Called multibuild_foreach_variant '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'distutils-r1_python_compile'

 *   environment, line 1656:  Called _multibuild_run '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'distutils-r1_python_compile'

 *   environment, line 1654:  Called _python_multibuild_wrapper 'distutils-r1_run_phase' 'distutils-r1_python_compile'

 *   environment, line  659:  Called distutils-r1_run_phase 'distutils-r1_python_compile'

 *   environment, line  932:  Called distutils-r1_python_compile

 *   environment, line  802:  Called esetup.py 'build'

 *   environment, line 1200:  Called die

 * The specific snippet of code:

 *       "${@}" || die "${die_args[@]}";

 * 

 * If you need support, post the output of `emerge --info '=dev-python/setuptools-41.2.0::gentoo'`,

 * the complete build log and the output of `emerge -pqv '=dev-python/setuptools-41.2.0::gentoo'`.

 * The complete build log is located at '/var/tmp/portage/dev-python/setuptools-41.2.0/temp/build.log'.

 * The ebuild environment file is located at '/var/tmp/portage/dev-python/setuptools-41.2.0/temp/environment'.

 * Working directory: '/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7'

 * S: '/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0'

>>> Failed to emerge dev-python/setuptools-41.2.0, Log file:

>>>  '/var/tmp/portage/dev-python/setuptools-41.2.0/temp/build.log'

 * Messages for package dev-python/setuptools-41.2.0:

 * ERROR: dev-python/setuptools-41.2.0::gentoo failed (compile phase):

 *   (no error message)

 * 

 * Call stack:

 *     ebuild.sh, line  125:  Called src_compile

 *   environment, line 2762:  Called distutils-r1_src_compile

 *   environment, line  941:  Called _distutils-r1_run_foreach_impl 'distutils-r1_python_compile'

 *   environment, line  442:  Called python_foreach_impl 'distutils-r1_run_phase' 'distutils-r1_python_compile'

 *   environment, line 2296:  Called multibuild_foreach_variant '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'distutils-r1_python_compile'

 *   environment, line 1656:  Called _multibuild_run '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'distutils-r1_python_compile'

 *   environment, line 1654:  Called _python_multibuild_wrapper 'distutils-r1_run_phase' 'distutils-r1_python_compile'

 *   environment, line  659:  Called distutils-r1_run_phase 'distutils-r1_python_compile'

 *   environment, line  932:  Called distutils-r1_python_compile

 *   environment, line  802:  Called esetup.py 'build'

 *   environment, line 1200:  Called die

 * The specific snippet of code:

 *       "${@}" || die "${die_args[@]}";

 * 

 * If you need support, post the output of `emerge --info '=dev-python/setuptools-41.2.0::gentoo'`,

 * the complete build log and the output of `emerge -pqv '=dev-python/setuptools-41.2.0::gentoo'`.

 * The complete build log is located at '/var/tmp/portage/dev-python/setuptools-41.2.0/temp/build.log'.

 * The ebuild environment file is located at '/var/tmp/portage/dev-python/setuptools-41.2.0/temp/environment'.

 * Working directory: '/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7'

 * S: '/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0'

```

----------

## quilosaq

Prueba a reinstalar python2.7 

```
(root)# emerge -v --oneshot python:2.7
```

Si sigues con el problema publica tu emerge --info.

----------

## Eleazar Anzola

 *quilosaq wrote:*   

> Prueba a reinstalar python2.7 
> 
> ```
> (root)# emerge -v --oneshot python:2.7
> ```
> ...

 

Realice lo recomendado pero aun persiste el problema

```
emerge --info

Portage 2.3.72 (python 3.6.9-final-0, default/linux/amd64/17.0/desktop, gcc-9.2.0, glibc-2.29-r4, 5.2.8-gentoo-x86_64 x86_64)

=================================================================

System uname: Linux-5.2.8-gentoo-x86_64-x86_64-Pentium-R-_Dual-Core_CPU_E5500_@_2.80GHz-with-gentoo-2.6

KiB Mem:     6053228 total,   2971716 free

KiB Swap:     524284 total,    524284 free

Timestamp of repository gentoo: Fri, 23 Aug 2019 10:00:01 +0000

Head commit of repository gentoo: 84a141514834e2db88e2092ca5de80f14a45b49d

sh bash 5.0_p9

ld GNU ld (Gentoo 2.32 p2) 2.32.0

app-shells/bash:          5.0_p9::gentoo

dev-java/java-config:     2.2.0-r4::gentoo

dev-lang/perl:            5.30.0::gentoo

dev-lang/python:          2.7.16::gentoo, 3.6.9::gentoo, 3.7.4-r1::gentoo

dev-util/cmake:           3.15.2::gentoo

sys-apps/baselayout:      2.6-r1::gentoo

sys-apps/openrc:          0.41.2::gentoo

sys-apps/sandbox:         2.18::gentoo

sys-devel/autoconf:       2.13-r1::gentoo, 2.69-r4::gentoo

sys-devel/automake:       1.10.3-r3::gentoo, 1.16.1-r1::gentoo

sys-devel/binutils:       2.32-r1::gentoo

sys-devel/gcc:            9.2.0::gentoo

sys-devel/gcc-config:     2.0::gentoo

sys-devel/libtool:        2.4.6-r5::gentoo

sys-devel/make:           4.2.1-r4::gentoo

sys-kernel/linux-headers: 5.2::gentoo (virtual/os-headers)

sys-libs/glibc:           2.29-r4::gentoo

Repositories:

gentoo

    location: /usr/portage

    sync-type: rsync

    sync-uri: rsync://rsync.gentoo.org/gentoo-portage

    priority: -1000

    sync-rsync-extra-opts: 

    sync-rsync-verify-max-age: 24

    sync-rsync-verify-metamanifest: no

    sync-rsync-verify-jobs: 1

x-portage

    location: /usr/local/portage

    masters: gentoo

    priority: 0

tryton

    location: /var/lib/layman/tryton

    sync-type: laymansync

    sync-uri: https://hg.tryton.org/tryton-overlay

    masters: gentoo

    priority: 50

ACCEPT_KEYWORDS="amd64 ~amd64"

ACCEPT_LICENSE="* PUEL"

CBUILD="x86_64-pc-linux-gnu"

CFLAGS="-march=core2 -O2 -pipe"

CHOST="x86_64-pc-linux-gnu"

CONFIG_PROTECT="/etc /usr/lib64/libreoffice/program/sofficerc /usr/share/config /usr/share/gnupg/qualified.txt"

CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"

CXXFLAGS="-march=core2 -O2 -pipe"

DISTDIR="/usr/portage/distfiles"

ENV_UNSET="DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR"

FCFLAGS="-march=core2 -O2 -pipe"

FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"

FFLAGS="-march=core2 -O2 -pipe"

GENTOO_MIRRORS="http://distfiles.gentoo.org"

LANG="es"

LC_ALL="es_ES.utf8"

LDFLAGS="-Wl,-O1 -Wl,--as-needed"

LINGUAS="es"

MAKEOPTS="-j3"

PKGDIR="/usr/portage/packages"

PORTAGE_CONFIGROOT="/"

PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"

PORTAGE_TMPDIR="/var/tmp"

USE="X a52 aac accessibility acl acpi alsa alsa_pcm_plugins_adpcm alsa_pcm_plugins_alaw alsa_pcm_plugins_asym alsa_pcm_plugins_copy alsa_pcm_plugins_dmix alsa_pcm_plugins_dshare alsa_pcm_plugins_dsnoop alsa_pcm_plugins_empty alsa_pcm_plugins_extplug alsa_pcm_plugins_file alsa_pcm_plugins_hooks alsa_pcm_plugins_iec958 alsa_pcm_plugins_ioplug alsa_pcm_plugins_ladspa alsa_pcm_plugins_lfloat alsa_pcm_plugins_linear alsa_pcm_plugins_meter alsa_pcm_plugins_mmap_emul alsa_pcm_plugins_mulaw alsa_pcm_plugins_multi alsa_pcm_plugins_null alsa_pcm_plugins_plug alsa_pcm_plugins_rate alsa_pcm_plugins_route alsa_pcm_plugins_share alsa_pcm_plugins_shm alsa_pcm_plugins_softvol amd64 berkdb bindist bluetooth branding build bzip2 cairo cdda cdr cli consolekit cracklib crypt cups cxx dbus declarative dri dri3 dts dvd dvdr emboss encode exif fam fbcon fbcondecor firefox flac fortran gdbm gif gimp glamor gpm gstreamer gtk gtk3 haptic iconv icu ipv6 jpeg kdbus kde kipi lcms ldap libnotify libtirpc livecd loop-aes mad mmx mmxext mng modules mp3 mp4 mpeg multilib ncurses networkmanager nls nouveau nptl nptlonly ogg opengl openmp pam pango pax_kernel pcre pdf phonon plasma png policykit portaudio ppds qml qt3support qt4 qt5 readline sdl seccomp session sna socks5 spell split-usr sse sse2 ssl startup-notification static-libs svg tcpd tiff truetype udev udisks unicode upower usb uxa vdpau vorbis widgets wxwidgets x264 xattr xcb xcomposite xinerama xml xscreensaver xv xvid xvmc zlib" ABI_X86="64" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx mmxext sse sse2" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="evdev" KERNEL="linux" L10N="es es-ES" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" NETBEANS_MODULES="apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php7-2" POSTGRES_TARGETS="postgres10 postgres11" PYTHON_SINGLE_TARGET="python3_6" PYTHON_TARGETS="python2_7 python3_6" RUBY_TARGETS="ruby24 ruby25" USERLAND="GNU" VIDEO_CARDS="intel i965 vesa" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"

Unset:  CC, CPPFLAGS, CTARGET, CXX, EMERGE_DEFAULT_OPTS, INSTALL_MASK, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
```

----------

## quilosaq

Prueba a utilizar python2.7 con portage: 

```
(root)# eselect python set python2.7
```

----------

## Eleazar Anzola

 *quilosaq wrote:*   

> Prueba a utilizar python2.7 con portage: 
> 
> ```
> (root)# eselect python set python2.7
> ```
> ...

 

Ya eso lo habia echo y nada que ver, pero leyendo las lineas del error, parece ser un problema con la copia de una archivo sobre si mismo.

```
>>> Compiling source in /var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0 ...

 * python2_7: running distutils-r1_run_phase distutils-r1_python_compile

cp: './build/setuptools.egg-info' y '/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7/build/setuptools.egg-info' son el mismo fichero

python2.7 setup.py build
```

Traceback (most recent call last):

----------

## quilosaq

No creo que ese error de cp sea el problema, Mira el contenido del archivo que genera el error: 

```
(root)# cat /var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7/setuptools.egg-info/entry_points.txt
```

----------

## Eleazar Anzola

 *quilosaq wrote:*   

> No creo que ese error de cp sea el problema, Mira el contenido del archivo que genera el error: 
> 
> ```
> (root)# cat /var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7/setuptools.egg-info/entry_points.txt
> ```
> ...

 

Aqui el contenido pero no logro ver a que se debe el error

```
sudo cat /var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7/setuptools.egg-info/entry_points.txt

[console_scripts]

easy_install = setuptools.command.easy_install:main

easy_install-3.6 = setuptools.command.easy_install:main

[distutils.commands]

alias = setuptools.command.alias:alias

bdist_egg = setuptools.command.bdist_egg:bdist_egg

bdist_rpm = setuptools.command.bdist_rpm:bdist_rpm

bdist_wininst = setuptools.command.bdist_wininst:bdist_wininst

build_clib = setuptools.command.build_clib:build_clib

build_ext = setuptools.command.build_ext:build_ext

build_py = setuptools.command.build_py:build_py

develop = setuptools.command.develop:develop

dist_info = setuptools.command.dist_info:dist_info

easy_install = setuptools.command.easy_install:easy_install

egg_info = setuptools.command.egg_info:egg_info

install = setuptools.command.install:install

install_egg_info = setuptools.command.install_egg_info:install_egg_info

install_lib = setuptools.command.install_lib:install_lib

install_scripts = setuptools.command.install_scripts:install_scripts

register = setuptools.command.register:register

rotate = setuptools.command.rotate:rotate

saveopts = setuptools.command.saveopts:saveopts

sdist = setuptools.command.sdist:sdist

setopt = setuptools.command.setopt:setopt

test = setuptools.command.test:test

upload = setuptools.command.upload:upload

upload_docs = setuptools.command.upload_docs:upload_docs

[distutils.setup_keywords]

convert_2to3_doctests = setuptools.dist:assert_string_list

dependency_links = setuptools.dist:assert_string_list

eager_resources = setuptools.dist:assert_string_list

entry_points = setuptools.dist:check_entry_points

exclude_package_data = setuptools.dist:check_package_data

extras_require = setuptools.dist:check_extras

include_package_data = setuptools.dist:assert_bool

install_requires = setuptools.dist:check_requirements

namespace_packages = setuptools.dist:check_nsp

package_data = setuptools.dist:check_package_data

packages = setuptools.dist:check_packages

python_requires = setuptools.dist:check_specifier

setup_requires = setuptools.dist:check_requirements

test_loader = setuptools.dist:check_importable

test_runner = setuptools.dist:check_importable

test_suite = setuptools.dist:check_test_suite

tests_require = setuptools.dist:check_requirements

use_2to3 = setuptools.dist:assert_bool

use_2to3_exclude_fixers = setuptools.dist:assert_string_list

use_2to3_fixers = setuptools.dist:assert_string_list

zip_safe = setuptools.dist:assert_bool

[egg_info.writers]

PKG-INFO = setuptools.command.egg_info:write_pkg_info

dependency_links.txt = setuptools.command.egg_info:overwrite_arg

depends.txt = setuptools.command.egg_info:warn_depends_obsolete

eager_resources.txt = setuptools.command.egg_info:overwrite_arg

entry_points.txt = setuptools.command.egg_info:write_entries

namespace_packages.txt = setuptools.command.egg_info:overwrite_arg

requires.txt = setuptools.command.egg_info:write_requirements

top_level.txt = setuptools.command.egg_info:write_toplevel_names

[setuptools.installation]

eggsecutable = setuptools.command.easy_install:bootstrap

```

----------

## quilosaq

Parece que esta bien. Creo que el problema puede tener que ver con tu locales. ¿Qué locales tienes creadas y que variables tienes definidas?

```
locale -a

locale
```

----------

## Eleazar Anzola

 *quilosaq wrote:*   

> Parece que esta bien. Creo que el problema puede tener que ver con tu locales. ¿Qué locales tienes creadas y que variables tienes definidas?
> 
> ```
> locale -a
> 
> ...

 

Tambien lo pense y cambie varias veces pero aunasi sigue dando el error y se me acumulan paquetes sin actualizar debido al setuptools que no termina de compilar.

```
locale

LANG=es_ES.utf8

LC_CTYPE="es_ES.utf8"

LC_NUMERIC="es_ES.utf8"

LC_TIME="es_ES.utf8"

LC_COLLATE="es_ES.utf8"

LC_MONETARY="es_ES.utf8"

LC_MESSAGES="es_ES.utf8"

LC_PAPER="es_ES.utf8"

LC_NAME="es_ES.utf8"

LC_ADDRESS="es_ES.utf8"

LC_TELEPHONE="es_ES.utf8"

LC_MEASUREMENT="es_ES.utf8"

LC_IDENTIFICATION="es_ES.utf8"

LC_ALL=es_ES.utf8

```

```
locale -a

C

C.utf8

en_US

en_US.iso88591

en_US.utf8

es_ES

es_ES@euro

es_ES.iso88591

es_ES.iso885915@euro

es_ES.utf8

es_VE

es_VE.iso88591

es_VE.utf8

POSIX

```

----------

## quilosaq

 *Eleazar Anzola wrote:*   

> ...
> 
> ```
> locale
> 
> ...

 

Pero tu emerge --info dice que tienes LANG="es" supongo que será porque la tienes definida así en tu make.conf. Si la eliminas de make.conf cogerá el valor que muestra el comando locale.

También muestras que tienes definida la variable LC_ALL=es_ES.utf8. Posiblemente no cause problema pero se recomienda no definirla o definirla como una cadena vacía.

https://wiki.gentoo.org/wiki/Localization/Guide/es#Variables_de_entorno_para_localizaciones

----------

## Eleazar Anzola

 *quilosaq wrote:*   

>  *Eleazar Anzola wrote:*   ...
> 
> ```
> locale
> 
> ...

 

```

locale

LANG=es_ES.utf8

LC_CTYPE="es_ES.utf8"

LC_NUMERIC="es_ES.utf8"

LC_TIME="es_ES.utf8"

LC_COLLATE=C

LC_MONETARY="es_ES.utf8"

LC_MESSAGES="es_ES.utf8"

LC_PAPER="es_ES.utf8"

LC_NAME="es_ES.utf8"

LC_ADDRESS="es_ES.utf8"

LC_TELEPHONE="es_ES.utf8"

LC_MEASUREMENT="es_ES.utf8"

LC_IDENTIFICATION="es_ES.utf8"

LC_ALL=

```

```

locale -a

C

C.utf8

POSIX

en_US

en_US.iso88591

en_US.utf8

es_ES

es_ES.iso88591

es_ES.iso885915@euro

es_ES.utf8

es_ES@euro

es_VE

es_VE.iso88591

es_VE.utf8

```

```

sudo emerge --info

Portage 2.3.73 (python 3.6.9-final-0, default/linux/amd64/17.0/desktop, gcc-9.2.0, glibc-2.29-r4, 5.2.10-gentoo-x86_64 x86_64)

=================================================================

System uname: Linux-5.2.10-gentoo-x86_64-x86_64-Pentium-R-_Dual-Core_CPU_E5500_@_2.80GHz-with-gentoo-2.6

KiB Mem:     6052988 total,   4463612 free

KiB Swap:     524284 total,    524284 free

Timestamp of repository gentoo: Tue, 27 Aug 2019 09:30:01 +0000

Head commit of repository gentoo: ef86a7cbdcbdbab9048b4508f32c077da5229063

sh bash 5.0_p9

ld GNU ld (Gentoo 2.32 p2) 2.32.0

app-shells/bash:          5.0_p9::gentoo

dev-java/java-config:     2.2.0-r4::gentoo

dev-lang/perl:            5.30.0::gentoo

dev-lang/python:          2.7.16::gentoo, 3.6.9::gentoo, 3.7.4-r1::gentoo

dev-util/cmake:           3.15.2::gentoo

sys-apps/baselayout:      2.6-r1::gentoo

sys-apps/openrc:          0.41.2::gentoo

sys-apps/sandbox:         2.18::gentoo

sys-devel/autoconf:       2.13-r1::gentoo, 2.69-r4::gentoo

sys-devel/automake:       1.10.3-r3::gentoo, 1.16.1-r1::gentoo

sys-devel/binutils:       2.32-r1::gentoo

sys-devel/gcc:            9.2.0::gentoo

sys-devel/gcc-config:     2.0::gentoo

sys-devel/libtool:        2.4.6-r5::gentoo

sys-devel/make:           4.2.1-r4::gentoo

sys-kernel/linux-headers: 5.2::gentoo (virtual/os-headers)

sys-libs/glibc:           2.29-r4::gentoo

Repositories:

gentoo

    location: /usr/portage

    sync-type: rsync

    sync-uri: rsync://rsync.gentoo.org/gentoo-portage

    priority: -1000

    sync-rsync-extra-opts: 

    sync-rsync-verify-metamanifest: no

    sync-rsync-verify-max-age: 24

    sync-rsync-verify-jobs: 1

x-portage

    location: /usr/local/portage

    masters: gentoo

    priority: 0

tryton

    location: /var/lib/layman/tryton

    sync-type: laymansync

    sync-uri: https://hg.tryton.org/tryton-overlay

    masters: gentoo

    priority: 50

ACCEPT_KEYWORDS="amd64 ~amd64"

ACCEPT_LICENSE="* PUEL"

CBUILD="x86_64-pc-linux-gnu"

CFLAGS="-march=core2 -O2 -pipe"

CHOST="x86_64-pc-linux-gnu"

CONFIG_PROTECT="/etc /usr/lib64/libreoffice/program/sofficerc /usr/share/config /usr/share/gnupg/qualified.txt"

CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"

CXXFLAGS="-march=core2 -O2 -pipe"

DISTDIR="/usr/portage/distfiles"

ENV_UNSET="DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR"

FCFLAGS="-march=core2 -O2 -pipe"

FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"

FFLAGS="-march=core2 -O2 -pipe"

GENTOO_MIRRORS="http://distfiles.gentoo.org"

LANG="es_ES.utf8"

LC_ALL=""

LDFLAGS="-Wl,-O1 -Wl,--as-needed"

LINGUAS="es"

MAKEOPTS="-j3"

PKGDIR="/usr/portage/packages"

PORTAGE_CONFIGROOT="/"

PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"

PORTAGE_TMPDIR="/var/tmp"

USE="X a52 aac accessibility acl acpi alsa alsa_pcm_plugins_adpcm alsa_pcm_plugins_alaw alsa_pcm_plugins_asym alsa_pcm_plugins_copy alsa_pcm_plugins_dmix alsa_pcm_plugins_dshare alsa_pcm_plugins_dsnoop alsa_pcm_plugins_empty alsa_pcm_plugins_extplug alsa_pcm_plugins_file alsa_pcm_plugins_hooks alsa_pcm_plugins_iec958 alsa_pcm_plugins_ioplug alsa_pcm_plugins_ladspa alsa_pcm_plugins_lfloat alsa_pcm_plugins_linear alsa_pcm_plugins_meter alsa_pcm_plugins_mmap_emul alsa_pcm_plugins_mulaw alsa_pcm_plugins_multi alsa_pcm_plugins_null alsa_pcm_plugins_plug alsa_pcm_plugins_rate alsa_pcm_plugins_route alsa_pcm_plugins_share alsa_pcm_plugins_shm alsa_pcm_plugins_softvol amd64 berkdb bindist bluetooth branding build bzip2 cairo cdda cdr cli consolekit cracklib crypt cups cxx dbus declarative dri dri3 dts dvd dvdr emboss encode exif fam fbcon fbcondecor firefox flac fortran gdbm gif gimp glamor gpm gstreamer gtk gtk3 haptic iconv icu ipv6 jpeg kdbus kde kipi lcms ldap libnotify libtirpc livecd loop-aes mad mmx mmxext mng modules mp3 mp4 mpeg multilib ncurses networkmanager nls nouveau nptl nptlonly ogg opengl openmp pam pango pax_kernel pcre pdf phonon plasma png policykit portaudio ppds qml qt3support qt4 qt5 readline sdl seccomp session sna socks5 spell split-usr sse sse2 ssl startup-notification static-libs svg tcpd tiff truetype udev udisks unicode upower usb uxa vdpau vorbis widgets wxwidgets x264 xattr xcb xcomposite xinerama xml xscreensaver xv xvid xvmc zlib" ABI_X86="64 32" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx mmxext sse sse2" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="evdev" KERNEL="linux" L10N="es es-ES" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" NETBEANS_MODULES="apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php7-2" POSTGRES_TARGETS="postgres10 postgres11" PYTHON_SINGLE_TARGET="python3_6" PYTHON_TARGETS="python2_7 python3_6" RUBY_TARGETS="ruby24 ruby25" USERLAND="GNU" VIDEO_CARDS="intel i965 vesa" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"

Unset:  CC, CPPFLAGS, CTARGET, CXX, EMERGE_DEFAULT_OPTS, INSTALL_MASK, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
```

Hechas las correcciones reiniciado el sistema, pero aun así sigue dando el mismo error inicial

----------

## quilosaq

¿Has probado a eliminar el directorio temporal 

```
/var/tmp/portage/dev-python/setuptools-41.2.0/
```

?

----------

## Eleazar Anzola

 *quilosaq wrote:*   

> ¿Has probado a eliminar el directorio temporal 
> 
> ```
> /var/tmp/portage/dev-python/setuptools-41.2.0/
> ```
> ...

 

Si ya lo he borrado completo inclusive con un

```
sudo rm -rf /var/tmp/*
```

Igual intente compilar cada una de las versiones de setuptools con el mismo resultado

----------

## quilosaq

Para intentar ver algo mas necesitaría que pusieras en pastebin (o similar) los archivos que propone emerge:

/var/tmp/portage/dev-python/setuptools-41.2.0/temp/build.log

/var/tmp/portage/dev-python/setuptools-41.2.0/temp/environment

y la salida de:

```
emerge -pqv '=dev-python/setuptools-41.2.0::gentoo'
```

----------

## Eleazar Anzola

He intentado con

```

sudo revdep-rebuild -li

 * This is the new python coded version

 * Please report any bugs found using it.

 * The original revdep-rebuild script is installed as revdep-rebuild.sh

 * Please file bugs at: https://bugs.gentoo.org/

 * Collecting system binaries and libraries

 * Checking dynamic linking consistency

 * Assign files to packages

 !!! Broken orphaned files: No installed package was found for the following:

   * /usr/lib/gstreamer-1.0/libgstbz2.so

   * /usr/lib/gstreamer-1.0/libgstmatroska.so

emerge  --oneshot --complete-graph=y media-libs/gst-plugins-good:1.0 media-libs/gst-plugins-bad:1.0

Calculating dependencies... done!

!!! The following installed packages are masked:

- games-simulation/crrcsim-0.9.13::gentoo (masked by: package.mask)

/usr/portage/profiles/package.mask:

# Aaron Bauman <bman@gentoo.org> (2019-08-17)

# Relies on vulnerable automake:{1.9,1.10}

# Removal in 30 days

For more information, see the MASKED PACKAGES section in the emerge

man page or refer to the Gentoo Handbook.

>>> Verifying ebuild manifests

>>> Emerging (1 of 3) media-libs/gst-plugins-base-1.14.5-r1::gentoo

 * Fetching files in the background.

 * To view fetch progress, run in another terminal:

 * tail -f /var/log/emerge-fetch.log

 * gst-plugins-base-1.14.5.tar.xz BLAKE2B SHA512 size ;-) ...           [ ok ]

>>> Unpacking source...

>>> Unpacking gst-plugins-base-1.14.5.tar.xz to /var/tmp/portage/media-libs/gst-plugins-base-1.14.5-r1/work

>>> Source unpacked in /var/tmp/portage/media-libs/gst-plugins-base-1.14.5-r1/work

>>> Preparing source in /var/tmp/portage/media-libs/gst-plugins-base-1.14.5-r1/work/gst-plugins-base-1.14.5 ...

>>> Source prepared.

>>> Configuring source in /var/tmp/portage/media-libs/gst-plugins-base-1.14.5-r1/work/gst-plugins-base-1.14.5 ...

 * abi_x86_32.x86: running multilib-minimal_abi_src_configure

 * Configuring to build base plugin(s) ...

 * econf: updating gst-plugins-base-1.14.5/config.sub with /usr/share/gnuconfig/config.sub

 * econf: updating gst-plugins-base-1.14.5/config.guess with /usr/share/gnuconfig/config.guess

/var/tmp/portage/media-libs/gst-plugins-base-1.14.5-r1/work/gst-plugins-base-1.14.5/configure --prefix=/usr --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --disable-dependency-tracking --disable-silent-rules --docdir=/usr/share/doc/gst-plugins-base-1.14.5-r1 --htmldir=/usr/share/doc/gst-plugins-base-1.14.5-r1/html --libdir=/usr/lib32 --with-package-name=Gentoo GStreamer ebuild --with-package-origin=https://www.gentoo.org --disable-zlib --disable-x --disable-xvideo --disable-xshm --disable-alsa --disable-cdparanoia --disable-gl --disable-ivorbis --disable-libvisual --disable-ogg --disable-opus --disable-pango --disable-theora --disable-vorbis --enable-orc --disable-maintainer-mode --enable-nls --enable-alsa --disable-introspection --disable-ivorbis --enable-ogg --enable-orc --enable-pango --enable-theora --enable-vorbis --enable-x --enable-xshm --enable-xvideo --enable-iso-codes --enable-zlib --disable-debug --disable-examples --disable-static --enable-gl --enable-egl --disable-gles2 --enable-opengl --disable-wayland --enable-x11 --enable-glx --disable-cocoa --disable-dispmanx --disable-wgl

checking build system type... i686-pc-linux-gnu

checking host system type... i686-pc-linux-gnu

checking target system type... i686-pc-linux-gnu

checking for a BSD-compatible install... /usr/lib/portage/python3.6/ebuild-helpers/xattr/install -c

checking whether build environment is sane... yes

checking for a thread-safe mkdir -p... /bin/mkdir -p

checking for gawk... gawk

checking whether make sets $(MAKE)... yes

checking whether make supports nested variables... yes

checking whether UID '250' is supported by ustar format... yes

checking whether GID '250' is supported by ustar format... yes

checking how to create a ustar tar archive... gnutar

checking nano version... 0 (release)

checking whether to enable maintainer-specific portions of Makefiles... no

checking whether make supports nested variables... (cached) yes

checking how to print strings... printf

checking whether make supports the include directive... yes (GNU style)

checking for i686-pc-linux-gnu-gcc... x86_64-pc-linux-gnu-gcc -m32

checking whether the C compiler works... yes

checking for C compiler default output file name... a.out

checking for suffix of executables... 

checking whether we are cross compiling... no

checking for suffix of object files... o

checking whether we are using the GNU C compiler... yes

checking whether x86_64-pc-linux-gnu-gcc -m32 accepts -g... yes

checking for x86_64-pc-linux-gnu-gcc -m32 option to accept ISO C89... none needed

checking whether x86_64-pc-linux-gnu-gcc -m32 understands -c and -o together... yes

checking dependency style of x86_64-pc-linux-gnu-gcc -m32... none

checking for a sed that does not truncate output... /bin/sed

checking for grep that handles long lines and -e... /bin/grep

checking for egrep... /bin/grep -E

checking for fgrep... /bin/grep -F

checking for ld used by x86_64-pc-linux-gnu-gcc -m32... x86_64-pc-linux-gnu-ld -m elf_i386

checking if the linker (x86_64-pc-linux-gnu-ld -m elf_i386) is GNU ld... yes

checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B

checking the name lister (/usr/bin/nm -B) interface... BSD nm

checking whether ln -s works... yes

checking the maximum length of command line arguments... 1572864

checking how to convert i686-pc-linux-gnu file names to i686-pc-linux-gnu format... func_convert_file_noop

checking how to convert i686-pc-linux-gnu file names to toolchain format... func_convert_file_noop

checking for x86_64-pc-linux-gnu-ld -m elf_i386 option to reload object files... -r

checking for i686-pc-linux-gnu-objdump... no

checking for objdump... objdump

checking how to recognize dependent libraries... pass_all

checking for i686-pc-linux-gnu-dlltool... no

checking for dlltool... no

checking how to associate runtime and link libraries... printf %s\n

checking for i686-pc-linux-gnu-ar... no

checking for ar... ar

checking for archiver @FILE support... @

checking for i686-pc-linux-gnu-strip... no

checking for strip... strip

checking for i686-pc-linux-gnu-ranlib... no

checking for ranlib... ranlib

checking command to parse /usr/bin/nm -B output from x86_64-pc-linux-gnu-gcc -m32 object... ok

checking for sysroot... no

checking for a working dd... /bin/dd

checking how to truncate binary pipes... /bin/dd bs=4096 count=1

checking for i686-pc-linux-gnu-mt... no

checking for mt... no

checking if : is a manifest tool... no

checking how to run the C preprocessor... x86_64-pc-linux-gnu-gcc -m32 -E

checking for ANSI C header files... yes

checking for sys/types.h... yes

checking for sys/stat.h... yes

checking for stdlib.h... yes

checking for string.h... yes

checking for memory.h... yes

checking for strings.h... yes

checking for inttypes.h... yes

checking for stdint.h... yes

checking for unistd.h... yes

checking for dlfcn.h... yes

checking for objdir... .libs

checking if x86_64-pc-linux-gnu-gcc -m32 supports -fno-rtti -fno-exceptions... no

checking for x86_64-pc-linux-gnu-gcc -m32 option to produce PIC... -fPIC -DPIC

checking if x86_64-pc-linux-gnu-gcc -m32 PIC flag -fPIC -DPIC works... yes

checking if x86_64-pc-linux-gnu-gcc -m32 static flag -static works... yes

checking if x86_64-pc-linux-gnu-gcc -m32 supports -c -o file.o... yes

checking if x86_64-pc-linux-gnu-gcc -m32 supports -c -o file.o... (cached) yes

checking whether the x86_64-pc-linux-gnu-gcc -m32 linker (x86_64-pc-linux-gnu-ld -m elf_i386) supports shared libraries... yes

checking whether -lc should be explicitly linked in... no

checking dynamic linker characteristics... GNU/Linux ld.so

checking how to hardcode library paths into programs... immediate

checking for shl_load... no

checking for shl_load in -ldld... no

checking for dlopen... no

checking for dlopen in -ldl... yes

checking whether a program can dlopen itself... yes

checking whether a statically linked program can dlopen itself... no

checking whether stripping libraries is possible... yes

checking if libtool supports shared libraries... yes

checking whether to build shared libraries... yes

checking whether to build static libraries... no

checking whether NLS is requested... yes

checking for msgfmt... /usr/bin/msgfmt

checking for gmsgfmt... /usr/bin/gmsgfmt

checking for xgettext... /usr/bin/xgettext

checking for msgmerge... /usr/bin/msgmerge

checking for ld used by GCC... x86_64-pc-linux-gnu-ld -m elf_i386

checking if the linker (x86_64-pc-linux-gnu-ld -m elf_i386) is GNU ld... yes

checking for shared library run path origin... done

checking for CFPreferencesCopyAppValue... no

checking for CFLocaleCopyCurrent... no

checking for GNU gettext in libc... yes

checking whether to use NLS... yes

checking where the gettext function comes from... libc

DOMAIN = gst-plugins-base-1.0

checking for i686-pc-linux-gnu-pkg-config... /usr/bin/i686-pc-linux-gnu-pkg-config

checking pkg-config is at least version 0.9.0... yes

configure: Using Gentoo GStreamer ebuild as package name

configure: Using https://www.gentoo.org as package origin

configure: Using GST_PKG_CONFIG_PATH = $(top_builddir)/pkgconfig:/usr/share/pkgconfig

configure: Using /usr/libexec/gst-install-plugins-helper as plugin install helper

configure: *** checking feature: building of plug-ins with external deps ***

configure: building external plug-ins

configure: *** checking feature: building of experimental plug-ins ***

configure: not building experimental plug-ins

checking whether byte ordering is bigendian... no

checking for special C compiler options needed for large files... no

checking for _FILE_OFFSET_BITS value needed for large files... 64

checking for i686-pc-linux-gnu-gcc... (cached) x86_64-pc-linux-gnu-gcc -m32

checking whether we are using the GNU C compiler... (cached) yes

checking whether x86_64-pc-linux-gnu-gcc -m32 accepts -g... (cached) yes

checking for x86_64-pc-linux-gnu-gcc -m32 option to accept ISO C89... (cached) none needed

checking whether x86_64-pc-linux-gnu-gcc -m32 understands -c and -o together... (cached) yes

checking dependency style of x86_64-pc-linux-gnu-gcc -m32... (cached) none

checking for x86_64-pc-linux-gnu-gcc -m32 option to accept ISO C99... none needed

checking for x86_64-pc-linux-gnu-gcc -m32 option to accept ISO Standard C... (cached) none needed

checking whether we are using the GNU C++ compiler... yes

checking whether x86_64-pc-linux-gnu-g++ -m32 accepts -g... yes

checking dependency style of x86_64-pc-linux-gnu-g++ -m32... none

checking how to run the C++ preprocessor... x86_64-pc-linux-gnu-g++ -m32 -E

checking for ld used by x86_64-pc-linux-gnu-g++ -m32... x86_64-pc-linux-gnu-ld -m elf_i386

checking if the linker (x86_64-pc-linux-gnu-ld -m elf_i386) is GNU ld... yes

checking whether the x86_64-pc-linux-gnu-g++ -m32 linker (x86_64-pc-linux-gnu-ld -m elf_i386) supports shared libraries... yes

checking for x86_64-pc-linux-gnu-g++ -m32 option to produce PIC... -fPIC -DPIC

checking if x86_64-pc-linux-gnu-g++ -m32 PIC flag -fPIC -DPIC works... yes

checking if x86_64-pc-linux-gnu-g++ -m32 static flag -static works... yes

checking if x86_64-pc-linux-gnu-g++ -m32 supports -c -o file.o... yes

checking if x86_64-pc-linux-gnu-g++ -m32 supports -c -o file.o... (cached) yes

checking whether the x86_64-pc-linux-gnu-g++ -m32 linker (x86_64-pc-linux-gnu-ld -m elf_i386) supports shared libraries... yes

checking dynamic linker characteristics... (cached) GNU/Linux ld.so

checking how to hardcode library paths into programs... immediate

configure: working c++ compiler found: yes

checking for valgrind... no

checking for gobject-introspection... no (disabled, use --enable-introspection to enable)

checking for gtkdoc-check... /usr/bin/gtkdoc-check

checking for gtkdoc-rebase... /usr/bin/gtkdoc-rebase

checking for gtkdoc-mkpdf... /usr/bin/gtkdoc-mkpdf

checking whether to build gtk-doc documentation... no

checking for python... /usr/bin/python

checking for python version... 3.6

checking for python platform... linux

checking for python script directory... ${prefix}/lib64/python3.6/site-packages

checking for python extension module directory... ${exec_prefix}/lib64/python3.6/site-packages

checking whether to build plugin documentation... no (gtk-doc disabled or not available)

checking for cos in -lm... yes

checking whether x86_64-pc-linux-gnu-gcc -m32 is Clang... no

checking whether pthreads work with -pthread... yes

checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE

checking whether more special flags are required for pthreads... no

checking for PTHREAD_PRIO_INHERIT... yes

checking for ANSI C header files... (cached) yes

checking xmmintrin.h usability... yes

checking xmmintrin.h presence... yes

checking for xmmintrin.h... yes

checking emmintrin.h usability... yes

checking emmintrin.h presence... yes

checking for emmintrin.h... yes

checking smmintrin.h usability... yes

checking smmintrin.h presence... yes

checking for smmintrin.h... yes

checking whether __i386__ is declared... yes

checking whether __x86_64__ is declared... no

checking to see if compiler understands -msse... yes

checking to see if compiler understands -msse2... yes

checking to see if compiler understands -msse4.1... yes

checking for sys/socket.h... yes

checking for winsock2.h... no

checking for process.h... no

checking for sys/types.h... (cached) yes

checking for sys/wait.h... yes

checking for sys/stat.h... (cached) yes

checking for ARM NEON support in current arch/CFLAGS... no

checking for stdint types... stdint.h (shortcircuit)

make use of stdint.h in _stdint.h (assuming C99 compatible system)

checking for localtime_r... yes

checking for gmtime_r... yes

checking for log2... yes

checking for _LARGEFILE_SOURCE value needed for large files... no

checking for lrint... yes

checking for lrintf... yes

checking whether x86_64-pc-linux-gnu-gcc -m32 implements __PRETTY_FUNCTION__... yes

checking whether x86_64-pc-linux-gnu-gcc -m32 implements __FUNCTION__... yes

checking whether x86_64-pc-linux-gnu-gcc -m32 implements __func__... yes

checking for GLIB... no

configure: Package 'glib-2.0', required by 'virtual:world', not found

Package 'gobject-2.0', required by 'virtual:world', not found

Package 'gmodule-no-export-2.0', required by 'virtual:world', not found

configure: error: This package requires GLib >= 2.40.0 to compile.

!!! Please attach the following file when seeking support:

!!! /var/tmp/portage/media-libs/gst-plugins-base-1.14.5-r1/work/gst-plugins-base-1.14.5-abi_x86_32.x86/config.log

```

Claramente falta GLIB, entonces lo intento con

```

sudo emerge glib

Calculating dependencies... done!

>>> Verifying ebuild manifests

>>> Emerging (1 of 3) dev-python/setuptools-41.2.0::gentoo

 * Fetching files in the background.

 * To view fetch progress, run in another terminal:

 * tail -f /var/log/emerge-fetch.log

 * setuptools-41.2.0.zip BLAKE2B SHA512 size ;-) ...                    [ ok ]

>>> Unpacking source...

>>> Unpacking setuptools-41.2.0.zip to /var/tmp/portage/dev-python/setuptools-41.2.0/work

>>> Source unpacked in /var/tmp/portage/dev-python/setuptools-41.2.0/work

>>> Preparing source in /var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0 ...

 * Will copy sources from /var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0

 * python2_7: copying to /var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7

 * python3_6: copying to /var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python3_6

>>> Source prepared.

>>> Configuring source in /var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0 ...

>>> Source configured.

>>> Compiling source in /var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0 ...

 * python2_7: running distutils-r1_run_phase distutils-r1_python_compile

cp: './build/setuptools.egg-info' y '/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7/build/setuptools.egg-info' son el mismo fichero

python2.7 setup.py build

Traceback (most recent call last):

  File "setup.py", line 148, in <module>

    dist = setuptools.setup(**setup_params)

  File "/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7/setuptools/__init__.py", line 144, in setup

    _install_setup_requires(attrs)

  File "/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7/setuptools/__init__.py", line 133, in _install_setup_requires

    (k, v) for k, v in attrs.items()

  File "/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7/setuptools/dist.py", line 443, in __init__

    for ep in pkg_resources.iter_entry_points('distutils.setup_keywords'):

  File "/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7/pkg_resources/__init__.py", line 656, in <genexpr>

    for entry in dist.get_entry_map(group).values()

  File "/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7/pkg_resources/__init__.py", line 2860, in get_entry_map

    self._get_metadata('entry_points.txt'), self

  File "/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7/pkg_resources/__init__.py", line 2531, in parse_map

    raise ValueError("Entry points must be listed in groups")

ValueError: Entry points must be listed in groups

 * ERROR: dev-python/setuptools-41.2.0::gentoo failed (compile phase):

 *   (no error message)

 * 

 * Call stack:

 *     ebuild.sh, line  125:  Called src_compile

 *   environment, line 2762:  Called distutils-r1_src_compile

 *   environment, line  941:  Called _distutils-r1_run_foreach_impl 'distutils-r1_python_compile'

 *   environment, line  442:  Called python_foreach_impl 'distutils-r1_run_phase' 'distutils-r1_python_compile'

 *   environment, line 2296:  Called multibuild_foreach_variant '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'distutils-r1_python_compile'

 *   environment, line 1656:  Called _multibuild_run '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'distutils-r1_python_compile'

 *   environment, line 1654:  Called _python_multibuild_wrapper 'distutils-r1_run_phase' 'distutils-r1_python_compile'

 *   environment, line  659:  Called distutils-r1_run_phase 'distutils-r1_python_compile'

 *   environment, line  932:  Called distutils-r1_python_compile

 *   environment, line  802:  Called esetup.py 'build'

 *   environment, line 1200:  Called die

 * The specific snippet of code:

 *       "${@}" || die "${die_args[@]}";

 * 

 * If you need support, post the output of `emerge --info '=dev-python/setuptools-41.2.0::gentoo'`,

 * the complete build log and the output of `emerge -pqv '=dev-python/setuptools-41.2.0::gentoo'`.

 * The complete build log is located at '/var/tmp/portage/dev-python/setuptools-41.2.0/temp/build.log'.

 * The ebuild environment file is located at '/var/tmp/portage/dev-python/setuptools-41.2.0/temp/environment'.

 * Working directory: '/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7'

 * S: '/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0'

>>> Failed to emerge dev-python/setuptools-41.2.0, Log file:

>>>  '/var/tmp/portage/dev-python/setuptools-41.2.0/temp/build.log'

 * Messages for package dev-python/setuptools-41.2.0:

 * ERROR: dev-python/setuptools-41.2.0::gentoo failed (compile phase):

 *   (no error message)

 * 

 * Call stack:

 *     ebuild.sh, line  125:  Called src_compile

 *   environment, line 2762:  Called distutils-r1_src_compile

 *   environment, line  941:  Called _distutils-r1_run_foreach_impl 'distutils-r1_python_compile'

 *   environment, line  442:  Called python_foreach_impl 'distutils-r1_run_phase' 'distutils-r1_python_compile'

 *   environment, line 2296:  Called multibuild_foreach_variant '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'distutils-r1_python_compile'

 *   environment, line 1656:  Called _multibuild_run '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'distutils-r1_python_compile'

 *   environment, line 1654:  Called _python_multibuild_wrapper 'distutils-r1_run_phase' 'distutils-r1_python_compile'

 *   environment, line  659:  Called distutils-r1_run_phase 'distutils-r1_python_compile'

 *   environment, line  932:  Called distutils-r1_python_compile

 *   environment, line  802:  Called esetup.py 'build'

 *   environment, line 1200:  Called die

 * The specific snippet of code:

 *       "${@}" || die "${die_args[@]}";

 * 

 * If you need support, post the output of `emerge --info '=dev-python/setuptools-41.2.0::gentoo'`,

 * the complete build log and the output of `emerge -pqv '=dev-python/setuptools-41.2.0::gentoo'`.

 * The complete build log is located at '/var/tmp/portage/dev-python/setuptools-41.2.0/temp/build.log'.

 * The ebuild environment file is located at '/var/tmp/portage/dev-python/setuptools-41.2.0/temp/environment'.

 * Working directory: '/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7'

 * S: '/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0'

```

```

/var/tmp/portage/dev-python/setuptools-41.2.0/temp/build.log 

 * Package:    dev-python/setuptools-41.2.0

 * Repository: gentoo

 * Maintainer: python@gentoo.org

 * USE:        abi_x86_64 amd64 elibc_glibc kernel_linux python_targets_python2_7 python_targets_python3_6 userland_GNU

 * FEATURES:   network-sandbox preserve-libs sandbox userpriv usersandbox

>>> Unpacking source...

>>> Unpacking setuptools-41.2.0.zip to /var/tmp/portage/dev-python/setuptools-41.2.0/work

>>> Source unpacked in /var/tmp/portage/dev-python/setuptools-41.2.0/work

>>> Preparing source in /var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0 ...

 * Will copy sources from /var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0

 * python2_7: copying to /var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7

 * python3_6: copying to /var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python3_6

>>> Source prepared.

>>> Configuring source in /var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0 ...

>>> Source configured.

>>> Compiling source in /var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0 ...

 * python2_7: running distutils-r1_run_phase distutils-r1_python_compile

cp: './build/setuptools.egg-info' y '/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7/build/setuptools.egg-info' son el mismo fichero

python2.7 setup.py build

Traceback (most recent call last):

  File "setup.py", line 148, in <module>

    dist = setuptools.setup(**setup_params)

  File "/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7/setuptools/__init__.py", line 144, in setup

    _install_setup_requires(attrs)

  File "/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7/setuptools/__init__.py", line 133, in _install_setup_requires

    (k, v) for k, v in attrs.items()

  File "/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7/setuptools/dist.py", line 443, in __init__

    for ep in pkg_resources.iter_entry_points('distutils.setup_keywords'):

  File "/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7/pkg_resources/__init__.py", line 656, in <genexpr>

    for entry in dist.get_entry_map(group).values()

  File "/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7/pkg_resources/__init__.py", line 2860, in get_entry_map

    self._get_metadata('entry_points.txt'), self

  File "/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7/pkg_resources/__init__.py", line 2531, in parse_map

    raise ValueError("Entry points must be listed in groups")

ValueError: Entry points must be listed in groups

 * ERROR: dev-python/setuptools-41.2.0::gentoo failed (compile phase):

 *   (no error message)

 * 

 * Call stack:

 *     ebuild.sh, line  125:  Called src_compile

 *   environment, line 2762:  Called distutils-r1_src_compile

 *   environment, line  941:  Called _distutils-r1_run_foreach_impl 'distutils-r1_python_compile'

 *   environment, line  442:  Called python_foreach_impl 'distutils-r1_run_phase' 'distutils-r1_python_compile'

 *   environment, line 2296:  Called multibuild_foreach_variant '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'distutils-r1_python_compile'

 *   environment, line 1656:  Called _multibuild_run '_python_multibuild_wrapper' 'distutils-r1_run_phase' 'distutils-r1_python_compile'

 *   environment, line 1654:  Called _python_multibuild_wrapper 'distutils-r1_run_phase' 'distutils-r1_python_compile'

 *   environment, line  659:  Called distutils-r1_run_phase 'distutils-r1_python_compile'

 *   environment, line  932:  Called distutils-r1_python_compile

 *   environment, line  802:  Called esetup.py 'build'

 *   environment, line 1200:  Called die

 * The specific snippet of code:

 *       "${@}" || die "${die_args[@]}";

 * 

 * If you need support, post the output of `emerge --info '=dev-python/setuptools-41.2.0::gentoo'`,

 * the complete build log and the output of `emerge -pqv '=dev-python/setuptools-41.2.0::gentoo'`.

 * The complete build log is located at '/var/tmp/portage/dev-python/setuptools-41.2.0/temp/build.log'.

 * The ebuild environment file is located at '/var/tmp/portage/dev-python/setuptools-41.2.0/temp/environment'.

 * Working directory: '/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0-python2_7'

 * S: '/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0'

```

----------

## Eleazar Anzola

```

declare -x ABI="amd64"

declare -x ABI_MIPS=""

declare -x ABI_PPC=""

declare -x ABI_RISCV=""

declare -x ABI_S390=""

declare -x ABI_X86="64"

declare -x ALSA_CARDS=""

declare -x APACHE2_MODULES=""

declare -x APACHE2_MPMS=""

declare -x ARCH="amd64"

declare BDEPEND="python_targets_pypy? ( >=virtual/pypy-5:0=[xml(+)] ) python_targets_pypy3? ( >=virtual/pypy3-5:0=[xml(+)] ) python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7[xml(+)] ) python_targets_python3_5? ( dev-lang/python:3.5[xml(+)] ) python_targets_python3_6? ( dev-lang/python:3.6[xml(+)] ) python_targets_python3_7? ( dev-lang/python:3.7[xml(+)] ) >=dev-lang/python-exec-2:=[python_targets_pypy(-)?,python_targets_pypy3(-)?,python_targets_python2_7(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python2_7(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)]"

declare -x BOOTSTRAP_USE="unicode internal-glib pkg-config split-usr python_targets_python3_6 python_targets_python2_7 multilib"

declare -x CALLIGRA_FEATURES=""

declare -x CAMERAS=""

declare -x CBUILD="x86_64-pc-linux-gnu"

declare -x CFLAGS="-march=core2 -O2 -pipe"

declare -x CFLAGS_amd64="-m64"

declare -x CFLAGS_default

declare -x CFLAGS_x32="-mx32"

declare -x CFLAGS_x86="-m32"

declare -x CHOST="x86_64-pc-linux-gnu"

declare -x CHOST_amd64="x86_64-pc-linux-gnu"

declare -x CHOST_default="x86_64-pc-linux-gnu"

declare -x CHOST_x32="x86_64-pc-linux-gnux32"

declare -x CHOST_x86="i686-pc-linux-gnu"

declare -x COLLECTD_PLUGINS=""

declare -x COMMON_FLAGS="-march=core2 -O2 -pipe"

declare -x CPU_FLAGS_ARM=""

declare -x CPU_FLAGS_X86=""

declare -x CTARGET_default="x86_64-pc-linux-gnu"

declare -x CURL_SSL=""

declare -x CXXFLAGS="-march=core2 -O2 -pipe"

declare -x DEFAULT_ABI="amd64"

declare -x DEFINED_PHASES=" compile configure install prepare test"

declare DEPEND="

   app-arch/unzip

   test? (

      dev-python/mock[python_targets_pypy(-)?,python_targets_pypy3(-)?,python_targets_python2_7(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python2_7(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)]

      dev-python/pip[python_targets_pypy(-)?,python_targets_pypy3(-)?,python_targets_python2_7(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python2_7(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)]

      >=dev-python/pytest-3.7.0[python_targets_pypy(-)?,python_targets_pypy3(-)?,python_targets_python2_7(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python2_7(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)]

      <dev-python/pytest-4

      dev-python/pytest-fixture-config[python_targets_pypy(-)?,python_targets_pypy3(-)?,python_targets_python2_7(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python2_7(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)]

      dev-python/pytest-virtualenv[python_targets_pypy(-)?,python_targets_pypy3(-)?,python_targets_python2_7(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python2_7(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)]

      dev-python/wheel[python_targets_pypy(-)?,python_targets_pypy3(-)?,python_targets_python2_7(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python2_7(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)]

      virtual/python-futures[python_targets_pypy(-)?,python_targets_pypy3(-)?,python_targets_python2_7(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python2_7(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)]

   )

 "

declare DESCRIPTION="Collection of extensions to Distutils"

declare -x DIROPTIONS="-m0755"

declare -- DISTUTILS_IN_SOURCE_BUILD="1"

declare -a DOCS=([0]="CHANGES.rst" [1]="README.rst" [2]="docs/easy_install.txt" [3]="docs/pkg_resources.txt" [4]="docs/setuptools.txt")

declare -x EAPI="7"

declare -x ELIBC="glibc"

declare -x ENLIGHTENMENT_MODULES=""

declare -x ENV_UNSET="DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR"

declare -- EPOCHREALTIME="1567033522,898043"

declare -- EPOCHSECONDS="1567033522"

declare -x EXEOPTIONS="-m0755"

declare -x FCFLAGS="-march=core2 -O2 -pipe"

declare -x FETCHCOMMAND_SSH="bash -c \"x=\\\${2#ssh://} ; host=\\\${x%%/*} ; port=\\\${host##*:} ; host=\\\${host%:*} ; [[ \\\${host} = \\\${port} ]] && port= ; exec rsync --rsh=\\\"ssh \\\${port:+-p\\\${port}} \\\${3}\\\" -avP \\\"\\\${host}:/\\\${x#*/}\\\" \\\"\\\$1\\\"\" rsync \"\${DISTDIR}/\${FILE}\" \"\${URI}\" \"\${PORTAGE_SSH_OPTS}\""

declare -x FFLAGS="-march=core2 -O2 -pipe"

declare -x FFTOOLS=""

declare -x FLTK_DOCDIR="/usr/share/doc/fltk-1.3.5-r2/html"

declare -x GCC_SPECS=""

declare -x GPSD_PROTOCOLS=""

declare -x GRUB_PLATFORMS=""

declare -x GSETTINGS_BACKEND="dconf"

declare HDEPEND=""

declare HOMEPAGE="https://github.com/pypa/setuptools https://pypi.org/project/setuptools/"

declare -x INHERITED=" multiprocessing toolchain-funcs multilib multibuild python-utils-r1 python-r1 distutils-r1"

declare -x INPUT_DEVICES=""

declare -x INSOPTIONS="-m0644"

declare IUSE="test python_targets_pypy python_targets_pypy3 python_targets_python2_7 python_targets_python3_5 python_targets_python3_6 python_targets_python3_7"

declare -x IUSE_EFFECTIVE="abi_x86_64 alpha amd64 amd64-fbsd amd64-linux arm arm64 elibc_AIX elibc_Cygwin elibc_Darwin elibc_DragonFly elibc_FreeBSD elibc_HPUX elibc_Interix elibc_NetBSD elibc_OpenBSD elibc_SunOS elibc_Winnt elibc_bionic elibc_glibc elibc_mingw elibc_mintlib elibc_musl elibc_uclibc hppa ia64 kernel_AIX kernel_Darwin kernel_FreeBSD kernel_HPUX kernel_NetBSD kernel_OpenBSD kernel_SunOS kernel_Winnt kernel_freemint kernel_linux m68k m68k-mint mips ppc ppc-aix ppc-macos ppc64 ppc64-linux prefix prefix-guest prefix-stack python_targets_pypy python_targets_pypy3 python_targets_python2_7 python_targets_python3_5 python_targets_python3_6 python_targets_python3_7 riscv s390 sh sparc sparc-solaris sparc64-solaris test userland_BSD userland_GNU x64-cygwin x64-macos x64-solaris x86 x86-cygwin x86-fbsd x86-linux x86-macos x86-solaris x86-winnt"

declare -x IUSE_IMPLICIT="abi_x86_64 prefix prefix-guest prefix-stack"

declare -x KERNEL="linux"

declare -x KERNEL_ABI="amd64"

declare -x KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sh ~sparc ~x86 ~x64-cygwin ~amd64-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"

declare -x L10N=""

declare -x LADSPA_PATH="/usr/lib64/ladspa"

declare -x LANG="es_ES.utf8"

declare -x LANGUAGE="es_ES.UTF-8"

declare -x LCD_DEVICES=""

declare -x LC_ADDRESS=""

declare -x LC_COLLATE="C"

declare -x LC_CTYPE=""

declare -x LC_IDENTIFICATION=""

declare -x LC_MEASUREMENT=""

declare -x LC_MESSAGES=""

declare -x LC_MONETARY=""

declare -x LC_NAME=""

declare -x LC_NUMERIC=""

declare -x LC_PAPER=""

declare -x LC_TELEPHONE=""

declare -x LC_TIME=""

declare -x LDFLAGS="-Wl,-O1 -Wl,--as-needed"

declare -x LDFLAGS_amd64="-m elf_x86_64"

declare -x LDFLAGS_default

declare -x LDFLAGS_x32="-m elf32_x86_64"

declare -x LDFLAGS_x86="-m elf_i386"

declare -x LIBDIR_amd64="lib64"

declare -x LIBDIR_default="lib"

declare -x LIBDIR_x32="libx32"

declare -x LIBDIR_x86="lib32"

declare -x LIBOPTIONS="-m0644"

declare -x LIBREOFFICE_EXTENSIONS=""

declare -x LICENSE="MIT"

declare -x LINGUAS="es"

declare -x LIRC_DEVICES=""

declare -x LLVM_TARGETS=""

declare -x LV2_PATH="/usr/lib64/lv2"

declare -x MAIL="/var/mail/root"

declare -x MAKEOPTS="-j3"

declare -x MANPAGER="manpager"

declare -x MONKEYD_PLUGINS=""

declare -x MULTILIB_ABIS="amd64 x86"

declare -x MULTILIB_STRICT_DENY="64-bit.*shared object"

declare -x MULTILIB_STRICT_DIRS="/lib32 /lib /usr/lib32 /usr/lib /usr/kde/*/lib32 /usr/kde/*/lib /usr/qt/*/lib32 /usr/qt/*/lib /usr/X11R6/lib32 /usr/X11R6/lib"

declare -x MULTILIB_STRICT_EXEMPT="(perl5|gcc|gcc-lib|binutils|eclipse-3|debug|portage|udev|systemd|clang|python-exec|llvm)"

declare -x NETBEANS_MODULES=""

declare -x NGINX_MODULES_HTTP=""

declare -x NGINX_MODULES_MAIL=""

declare -x NGINX_MODULES_STREAM=""

declare -x OFED_DRIVERS=""

declare -x OFFICE_IMPLEMENTATION=""

declare -x OPENGL_PROFILE="xorg-x11"

declare -x OPENMPI_FABRICS=""

declare -x OPENMPI_OFED_FEATURES=""

declare -x OPENMPI_RM=""

declare -x PATH="/usr/lib/portage/python3.6/ebuild-helpers/xattr:/usr/lib/portage/python3.6/ebuild-helpers:/usr/lib/llvm/8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin"

declare PDEPEND="

   >=dev-python/certifi-2016.9.26[python_targets_pypy(-)?,python_targets_pypy3(-)?,python_targets_python2_7(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python2_7(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] "

declare -x PHP_TARGETS=""

declare -x PKG_CONFIG_PATH="/usr/lib64/pkgconfig"

declare -x PORTAGE_COMPRESSION_COMMAND="bzip2"

declare -a PORTAGE_DOCOMPRESS=([0]="/usr/share/doc" [1]="/usr/share/info" [2]="/usr/share/man")

declare -x PORTAGE_DOCOMPRESS_SIZE_LIMIT="128"

declare -a PORTAGE_DOCOMPRESS_SKIP=([0]="/usr/share/doc/setuptools-41.2.0/html")

declare -a PORTAGE_DOSTRIP=([0]="/")

declare -a PORTAGE_DOSTRIP_SKIP=()

declare -x POSTGRES_TARGETS=""

declare -x PRELINK_PATH_MASK="/opt"

declare -x PROFILE_ONLY_VARIABLES="ARCH ELIBC IUSE_IMPLICIT KERNEL USERLAND USE_EXPAND_IMPLICIT USE_EXPAND_UNPREFIXED USE_EXPAND_VALUES_ARCH USE_EXPAND_VALUES_ELIBC USE_EXPAND_VALUES_KERNEL USE_EXPAND_VALUES_USERLAND"

declare -x PROPERTIES=""

declare -x PYTHONDONTWRITEBYTECODE="1"

declare -a PYTHON_COMPAT=([0]="python2_7" [1]="python3_5" [2]="python3_6" [3]="python3_7" [4]="pypy" [5]="pypy3")

declare -- PYTHON_DEPS="python_targets_pypy? ( >=virtual/pypy-5:0=[xml(+)] ) python_targets_pypy3? ( >=virtual/pypy3-5:0=[xml(+)] ) python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7[xml(+)] ) python_targets_python3_5? ( dev-lang/python:3.5[xml(+)] ) python_targets_python3_6? ( dev-lang/python:3.6[xml(+)] ) python_targets_python3_7? ( dev-lang/python:3.7[xml(+)] ) >=dev-lang/python-exec-2:=[python_targets_pypy(-)?,python_targets_pypy3(-)?,python_targets_python2_7(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python2_7(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)]"

declare -- PYTHON_REQUIRED_USE="|| ( python_targets_pypy python_targets_pypy3 python_targets_python2_7 python_targets_python3_5 python_targets_python3_6 python_targets_python3_7 )"

declare -- PYTHON_REQ_USE="xml(+)"

declare -x PYTHON_SINGLE_TARGET=""

declare -x PYTHON_TARGETS="python2_7 python3_6"

declare -- PYTHON_USEDEP="python_targets_pypy(-)?,python_targets_pypy3(-)?,python_targets_python2_7(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python2_7(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)"

declare -x QEMU_SOFTMMU_TARGETS=""

declare -x QEMU_USER_TARGETS=""

declare RDEPEND="

 python_targets_pypy? ( >=virtual/pypy-5:0=[xml(+)] ) python_targets_pypy3? ( >=virtual/pypy3-5:0=[xml(+)] ) python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7[xml(+)] ) python_targets_python3_5? ( dev-lang/python:3.5[xml(+)] ) python_targets_python3_6? ( dev-lang/python:3.6[xml(+)] ) python_targets_python3_7? ( dev-lang/python:3.7[xml(+)] ) >=dev-lang/python-exec-2:=[python_targets_pypy(-)?,python_targets_pypy3(-)?,python_targets_python2_7(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python2_7(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)]"

declare REPOSITORY

declare REQUIRED_USE="|| ( python_targets_pypy python_targets_pypy3 python_targets_python2_7 python_targets_python3_5 python_targets_python3_6 python_targets_python3_7 )"

declare -x RESTRICT="test"

declare -x RESUMECOMMAND_SSH="bash -c \"x=\\\${2#ssh://} ; host=\\\${x%%/*} ; port=\\\${host##*:} ; host=\\\${host%:*} ; [[ \\\${host} = \\\${port} ]] && port= ; exec rsync --rsh=\\\"ssh \\\${port:+-p\\\${port}} \\\${3}\\\" -avP \\\"\\\${host}:/\\\${x#*/}\\\" \\\"\\\$1\\\"\" rsync \"\${DISTDIR}/\${FILE}\" \"\${URI}\" \"\${PORTAGE_SSH_OPTS}\""

declare -x ROS_MESSAGES=""

declare -x RUBY_TARGETS=""

declare -x S="/var/tmp/portage/dev-python/setuptools-41.2.0/work/setuptools-41.2.0"

declare -x SANDBOX_DEBUG="0"

declare -x SANDBOX_DENY=""

declare -x SANDBOX_PREDICT="/var/tmp/portage/dev-python/setuptools-41.2.0/homedir:/dev/crypto:/var/cache/man:/proc/self/coredump_filter:/var/cache/fontconfig"

declare -x SANDBOX_READ="/:/var/tmp/portage"

declare -x SANDBOX_VERBOSE="1"

declare -x SANDBOX_WRITE=":/dev/console:/dev/fd:/dev/full:/dev/null:/dev/ptmx:/dev/pts/:/dev/pty:/dev/shm:/dev/tts:/dev/tty:/dev/vc/:/dev/zero:/proc/self/fd:/tmp/:/usr/lib/cf:/usr/lib/conftest:/usr/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/tmp/cf:/usr/tmp/conftest:/var/tmp/:/var/tmp/portage:/var/tmp/portage/dev-python/setuptools-41.2.0/homedir/.bash_history"

declare -x SANE_BACKENDS=""

declare -x SHELL="/bin/bash"

declare -x SLOT="0"

declare SRC_URI="mirror://pypi/s/setuptools/setuptools-41.2.0.zip"

declare -x SUDO_COMMAND="/usr/bin/emerge glib"

declare -x SUDO_GID="1001"

declare -x SUDO_UID="1001"

declare -x SUDO_USER="anneiris"

declare -x SYMLINK_LIB="yes"

declare -x TWISTED_DISABLE_WRITING_OF_PLUGIN_CACHE="1"

declare -x USE="abi_x86_64 amd64 elibc_glibc kernel_linux python_targets_python2_7 python_targets_python3_6 userland_GNU"

declare -x USERLAND="GNU"

declare -x USE_EXPAND_IMPLICIT="ARCH ELIBC KERNEL USERLAND"

declare -x USE_EXPAND_UNPREFIXED="ARCH"

declare -x USE_EXPAND_VALUES_ARCH="alpha amd64 amd64-fbsd amd64-linux arm arm64 hppa ia64 m68k m68k-mint mips ppc ppc64 ppc64-linux ppc-aix ppc-macos riscv s390 sh sparc sparc64-solaris sparc-solaris x64-cygwin x64-macos x64-solaris x86 x86-cygwin x86-fbsd x86-linux x86-macos x86-solaris x86-winnt"

declare -x USE_EXPAND_VALUES_ELIBC="AIX bionic Cygwin Darwin DragonFly FreeBSD glibc HPUX Interix mingw mintlib musl NetBSD OpenBSD SunOS uclibc Winnt"

declare -x USE_EXPAND_VALUES_KERNEL="AIX Darwin FreeBSD freemint HPUX linux NetBSD OpenBSD SunOS Winnt"

declare -x USE_EXPAND_VALUES_USERLAND="BSD GNU"

declare -x UWSGI_PLUGINS=""

declare -x VIDEO_CARDS=""

declare -x VOICEMAIL_STORAGE=""

declare -x XDG_CONFIG_DIRS="/etc/xdg:/usr/share"

declare -x XDG_DATA_DIRS="/usr/local/share:/usr/share"

declare -x XFCE_PLUGINS=""

declare -x XTABLES_ADDONS=""

declare -- _DISTUTILS_R1="1"

declare -x _E_DESTTREE_="/usr"

declare -x _E_DOCDESTTREE_=""

declare -x _E_EXEDESTTREE_=""

declare -x _E_INSDESTTREE_=""

declare -- _MULTIBUILD="1"

declare -- _MULTILIB_ECLASS="1"

declare -- _MULTIPROCESSING_ECLASS="1"

declare -a _PYTHON_ALL_IMPLS=([0]="jython2_7" [1]="pypy" [2]="pypy3" [3]="python2_7" [4]="python3_5" [5]="python3_6" [6]="python3_7")

declare -- _PYTHON_R1="1"

declare -a _PYTHON_SUPPORTED_IMPLS=([0]="pypy" [1]="pypy3" [2]="python2_7" [3]="python3_5" [4]="python3_6" [5]="python3_7")

declare -a _PYTHON_UNSUPPORTED_IMPLS=([0]="jython2_7")

declare -- _PYTHON_UTILS_R1="1"

declare -- _TOOLCHAIN_FUNCS_ECLASS="1"

declare -- phase_func

PYTHON () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#.24.28PYTHON.29.2C_.24.7BEPYTHON.7D"

}

__eapi6_src_install () 

{ 

    if [[ -f Makefile || -f GNUmakefile || -f makefile ]]; then

        emake DESTDIR="${D}" install;

    fi;

    einstalldocs

}

__eapi6_src_prepare () 

{ 

    if ___is_indexed_array_var PATCHES; then

        [[ ${#PATCHES[@]} -gt 0 ]] && eapply "${PATCHES[@]}";

    else

        if [[ -n ${PATCHES} ]]; then

            eapply ${PATCHES};

        fi;

    fi;

    eapply_user

}

__eapi7_ver_compare () 

{ 

    local va=${1} vb=${2} a an al as ar b bn bl bs br re LC_ALL=C;

    re="^([0-9]+(\.[0-9]+)*)([a-z]?)((_(alpha|beta|pre|rc|p)[0-9]*)*)(-r[0-9]+)?$";

    [[ ${va} =~ ${re} ]] || die "${FUNCNAME}: invalid version: ${va}";

    an=${BASH_REMATCH[1]};

    al=${BASH_REMATCH[3]};

    as=${BASH_REMATCH[4]};

    ar=${BASH_REMATCH[7]};

    [[ ${vb} =~ ${re} ]] || die "${FUNCNAME}: invalid version: ${vb}";

    bn=${BASH_REMATCH[1]};

    bl=${BASH_REMATCH[3]};

    bs=${BASH_REMATCH[4]};

    br=${BASH_REMATCH[7]};

    __eapi7_ver_compare_int "${an%%.*}" "${bn%%.*}" || return;

    while [[ ${an} == *.* && ${bn} == *.* ]]; do

        an=${an#*.};

        bn=${bn#*.};

        a=${an%%.*};

        b=${bn%%.*};

        if [[ ${a} == 0* || ${b} == 0* ]]; then

            [[ ${a} =~ 0+$ ]] && a=${a%"${BASH_REMATCH[0]}"};

            [[ ${b} =~ 0+$ ]] && b=${b%"${BASH_REMATCH[0]}"};

            [[ ${a} > ${b} ]] && return 3;

            [[ ${a} < ${b} ]] && return 1;

        else

            __eapi7_ver_compare_int "${a}" "${b}" || return;

        fi;

    done;

    [[ ${an} == *.* ]] && return 3;

    [[ ${bn} == *.* ]] && return 1;

    [[ ${al} > ${bl} ]] && return 3;

    [[ ${al} < ${bl} ]] && return 1;

    as=${as#_}${as:+_};

    bs=${bs#_}${bs:+_};

    while [[ -n ${as} && -n ${bs} ]]; do

        a=${as%%_*};

        b=${bs%%_*};

        if [[ ${a%%[0-9]*} == "${b%%[0-9]*}" ]]; then

            __eapi7_ver_compare_int "${a##*[a-z]}" "${b##*[a-z]}" || return;

        else

            [[ ${a%%[0-9]*} == p ]] && return 3;

            [[ ${b%%[0-9]*} == p ]] && return 1;

            [[ ${a} > ${b} ]] && return 3 || return 1;

        fi;

        as=${as#*_};

        bs=${bs#*_};

    done;

    if [[ -n ${as} ]]; then

        [[ ${as} == p[_0-9]* ]] && return 3 || return 1;

    else

        if [[ -n ${bs} ]]; then

            [[ ${bs} == p[_0-9]* ]] && return 1 || return 3;

        fi;

    fi;

    __eapi7_ver_compare_int "${ar#-r}" "${br#-r}" || return;

    return 2

}

__eapi7_ver_compare_int () 

{ 

    local a=$1 b=$2 d=$(( ${#1}-${#2} ));

    if [[ ${d} -gt 0 ]]; then

        printf -v b "%0${d}d%s" 0 "${b}";

    else

        if [[ ${d} -lt 0 ]]; then

            printf -v a "%0$(( -d ))d%s" 0 "${a}";

        fi;

    fi;

    [[ ${a} > ${b} ]] && return 3;

    [[ ${a} == "${b}" ]]

}

__eapi7_ver_parse_range () 

{ 

    local range=${1};

    local max=${2};

    [[ ${range} == [0-9]* ]] || die "${FUNCNAME}: range must start with a number";

    start=${range%-*};

    [[ ${range} == *-* ]] && end=${range#*-} || end=${start};

    if [[ -n ${end} ]]; then

        [[ ${start} -le ${end} ]] || die "${FUNCNAME}: end of range must be >= start";

        [[ ${end} -le ${max} ]] || end=${max};

    else

        end=${max};

    fi

}

__eapi7_ver_split () 

{ 

    local v=${1} LC_ALL=C;

    comp=();

    local s c;

    while [[ -n ${v} ]]; do

        s=${v%%[a-zA-Z0-9]*};

        v=${v:${#s}};

        [[ ${v} == [0-9]* ]] && c=${v%%[^0-9]*} || c=${v%%[^a-zA-Z]*};

        v=${v:${#c}};

        comp+=("${s}" "${c}");

    done

}

_clang_fullversion () 

{ 

    local ver="$1";

    shift;

    set -- $($(tc-getCPP "$@") -E -P - <<<"__clang_major__ __clang_minor__ __clang_patchlevel__");

    eval echo "$ver"

}

_distutils-r1_check_namespace_pth () 

{ 

    local f pth=();

    while IFS= read -r -d '' f; do

        pth+=("${f}");

    done < <(find "${ED%/}" -name '*-nspkg.pth' -print0);

    if [[ -n ${pth[@]} ]]; then

        ewarn "The following *-nspkg.pth files were found installed:";

        ewarn;

        for f in "${pth[@]}";

        do

            ewarn "  ${f#${ED%/}}";

        done;

        ewarn;

        ewarn "The presence of those files may break namespaces in Python 3.5+. Please";

        ewarn "read our documentation on reliable handling of namespaces and update";

        ewarn "the ebuild accordingly:";

        ewarn;

        ewarn "  https://wiki.gentoo.org/wiki/Project:Python/Namespace_packages";

    fi

}

_distutils-r1_clean_egg_info () 

{ 

    rm -rf "${BUILD_DIR}"/lib/*.egg-info || die

}

_distutils-r1_copy_egg_info () 

{ 

    mkdir -p "${BUILD_DIR}" || die;

    find -name '*.egg-info' -type d -exec cp -R -p {} "${BUILD_DIR}"/ ';' || die

}

_distutils-r1_create_setup_cfg () 

{ 

    cat > "${HOME}"/.pydistutils.cfg <<-_EOF_ || 

[build]

build-base = ${BUILD_DIR}

# using a single directory for them helps us export

# ${PYTHONPATH} and ebuilds find the sources independently

# of whether the package installs extensions or not

#

# note: due to some packages (wxpython) relying on separate

# platlib & purelib dirs, we do not set --build-lib (which

# can not be overridden with --build-*lib)

build-platlib = %(build-base)s/lib

build-purelib = %(build-base)s/lib
```

----------

## Eleazar Anzola

```

# make the ebuild writer lives easier

build-scripts = %(build-base)s/scripts

# this is needed by distutils_install_for_testing since

# setuptools like to create .egg files for install --home.

[bdist_egg]

dist-dir = ${BUILD_DIR}/dist

_EOF_

 die

    if [[ ${EBUILD_PHASE} == install ]]; then

        cat >> "${HOME}"/.pydistutils.cfg <<-_EOF_ || 

# installation paths -- allow calling extra install targets

# without the default 'install'

[install]

compile = True

optimize = 2

root = ${D%/}

_EOF_

 die

        if [[ ! -n ${DISTUTILS_SINGLE_IMPL} ]]; then

            cat >> "${HOME}"/.pydistutils.cfg <<-_EOF_ || 

install-scripts = $(python_get_scriptdir)

_EOF_

 die;

        fi;

    fi

}

_distutils-r1_disable_ez_setup () 

{ 

    local stub="def use_setuptools(*args, **kwargs): pass";

    if [[ -f ez_setup.py ]]; then

        echo "${stub}" > ez_setup.py || die;

    fi;

    if [[ -f distribute_setup.py ]]; then

        echo "${stub}" > distribute_setup.py || die;

    fi

}

_distutils-r1_run_common_phase () 

{ 

    local DISTUTILS_ORIG_BUILD_DIR=${BUILD_DIR};

    if [[ -n ${DISTUTILS_SINGLE_IMPL} ]]; then

        _distutils-r1_run_foreach_impl "${@}";

    else

        local -x EPYTHON PYTHON;

        local -x PATH=${PATH} PKG_CONFIG_PATH=${PKG_CONFIG_PATH};

        python_setup "${DISTUTILS_ALL_SUBPHASE_IMPLS[@]}";

        local MULTIBUILD_VARIANTS=("${EPYTHON/./_}");

        local _DISTUTILS_INITIAL_CWD=${PWD};

        multibuild_foreach_variant distutils-r1_run_phase "${@}";

    fi

}

_distutils-r1_run_foreach_impl () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    local _DISTUTILS_INITIAL_CWD=${PWD};

    set -- distutils-r1_run_phase "${@}";

    if [[ ! -n ${DISTUTILS_SINGLE_IMPL} ]]; then

        python_foreach_impl "${@}";

    else

        if [[ ! -n ${EPYTHON} ]]; then

            die "EPYTHON unset, python-single-r1_pkg_setup not called?!";

        fi;

        local BUILD_DIR=${BUILD_DIR:-${S}};

        BUILD_DIR=${BUILD_DIR%%/}_${EPYTHON};

        "${@}";

    fi

}

_distutils-r1_wrap_scripts () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    [[ ${#} -eq 2 ]] || die "usage: ${FUNCNAME} <path> <bindir>";

    local path=${1};

    local bindir=${2};

    local PYTHON_SCRIPTDIR;

    python_export PYTHON_SCRIPTDIR;

    local f python_files=() non_python_files=();

    if [[ -d ${path}${PYTHON_SCRIPTDIR} ]]; then

        for f in "${path}${PYTHON_SCRIPTDIR}"/*;

        do

            [[ -d ${f} ]] && die "Unexpected directory: ${f}";

            debug-print "${FUNCNAME}: found executable at ${f#${path}/}";

            local shebang;

            read -r shebang < "${f}";

            if [[ ${shebang} == '#!'*${EPYTHON}* ]]; then

                debug-print "${FUNCNAME}: matching shebang: ${shebang}";

                python_files+=("${f}");

            else

                debug-print "${FUNCNAME}: non-matching shebang: ${shebang}";

                non_python_files+=("${f}");

            fi;

            mkdir -p "${path}${bindir}" || die;

        done;

        for f in "${python_files[@]}";

        do

            local basename=${f##*/};

            debug-print "${FUNCNAME}: installing wrapper at ${bindir}/${basename}";

            _python_ln_rel "${path}${EPREFIX}"/usr/lib/python-exec/python-exec2 "${path}${bindir}/${basename}" || die;

        done;

        for f in "${non_python_files[@]}";

        do

            local basename=${f##*/};

            debug-print "${FUNCNAME}: moving ${f#${path}/} to ${bindir}/${basename}";

            mv "${f}" "${path}${bindir}/${basename}" || die;

        done;

    fi

}

_gcc-install-dir () 

{ 

    echo "$(LC_ALL=C $(tc-getCC) -print-search-dirs 2> /dev/null |      awk '$1=="install:" {print $2}')"

}

_gcc-specs-directive_raw () 

{ 

    local cc=$(tc-getCC);

    local specfiles=$(LC_ALL=C ${cc} -v 2>&1 | awk '$1=="Reading" {print $NF}');

    ${cc} -dumpspecs 2> /dev/null | cat - ${specfiles} | awk -v directive=$1 'BEGIN   { pspec=""; spec=""; outside=1 }

$1=="*"directive":"  { pspec=spec; spec=""; outside=0; next }

   outside || NF==0 || ( substr($1,1,1)=="*" && substr($1,length($1),1)==":" ) { outside=1; next }

   spec=="" && substr($0,1,1)=="+" { spec=pspec " " substr($0,2); next }

   { spec=spec $0 }

END   { print spec }';

    return 0

}

_gcc-specs-exists () 

{ 

    [[ -f $(_gcc-install-dir)/$1 ]]

}

_gcc_fullversion () 

{ 

    local ver="$1";

    shift;

    set -- $($(tc-getCPP "$@") -E -P - <<<"__GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__");

    eval echo "$ver"

}

_multibuild_create_source_copy () 

{ 

    einfo "${MULTIBUILD_VARIANT}: copying to ${BUILD_DIR}";

    cp -p -R "${cp_args[@]}" "${_MULTIBUILD_INITIAL_BUILD_DIR}" "${BUILD_DIR}" || die

}

_multibuild_run () 

{ 

    local i=1;

    while [[ ${!i} == _* ]]; do

        (( i += 1 ));

    done;

    [[ ${i} -le ${#} ]] && einfo "${v}: running ${@:${i}}";

    "${@}"

}

_python_check_dead_variables () 

{ 

    local v;

    for v in PYTHON_DEPEND PYTHON_USE_WITH{,_OR,_OPT} {RESTRICT,SUPPORT}_PYTHON_ABIS;

    do

        if [[ -n ${!v} ]]; then

            die "${v} is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#Ebuild_head";

        fi;

    done;

    for v in PYTHON_{CPPFLAGS,CFLAGS,CXXFLAGS,LDFLAGS};

    do

        if [[ -n ${!v} ]]; then

            die "${v} is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#PYTHON_CFLAGS";

        fi;

    done;

    for v in PYTHON_TESTS_RESTRICTED_ABIS PYTHON_EXPORT_PHASE_FUNCTIONS PYTHON_VERSIONED_{SCRIPTS,EXECUTABLES} PYTHON_NONVERSIONED_EXECUTABLES;

    do

        if [[ -n ${!v} ]]; then

            die "${v} is invalid for python-r1 suite";

        fi;

    done;

    for v in DISTUTILS_USE_SEPARATE_SOURCE_DIRECTORIES DISTUTILS_SETUP_FILES DISTUTILS_GLOBAL_OPTIONS DISTUTILS_SRC_TEST PYTHON_MODNAME;

    do

        if [[ -n ${!v} ]]; then

            die "${v} is invalid for distutils-r1, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#${v}";

        fi;

    done;

    if [[ -n ${DISTUTILS_DISABLE_TEST_DEPENDENCY} ]]; then

        die "${v} is invalid for distutils-r1, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#DISTUTILS_SRC_TEST";

    fi;

    for v in PYTHON_BDEPEND PYTHON_MULTIPLE_ABIS PYTHON_ABI_TYPE PYTHON_RESTRICTED_ABIS PYTHON_TESTS_FAILURES_TOLERANT_ABIS PYTHON_CFFI_MODULES_GENERATION_COMMANDS;

    do

        if [[ -n ${!v} ]]; then

            die "${v} is invalid for python-r1 suite";

        fi;

    done

}

_python_check_locale_sanity () 

{ 

    local -x LC_ALL=${1};

    local IFS=;

    local lc=({a..z});

    local uc=({A..Z});

    local input="${lc[*]}${uc[*]}";

    local output=$(tr '[:lower:][:upper:]' '[:upper:][:lower:]' <<<"${input}");

    [[ ${output} == "${uc[*]}${lc[*]}" ]]

}

_python_impl_matches () 

{ 

    [[ ${#} -ge 2 ]] || die "${FUNCNAME}: takes at least 2 parameters";

    local impl=${1} pattern;

    shift;

    for pattern in "$@";

    do

        if [[ ${pattern} == -2 ]]; then

            ! python_is_python3 "${impl}";

            return;

        else

            if [[ ${pattern} == -3 ]]; then

                python_is_python3 "${impl}";

                return;

            else

                if [[ ${impl/./_} == ${pattern/./_} ]]; then

                    return 0;

                fi;

            fi;

        fi;

    done;

    return 1

}

_python_impl_supported () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    [[ ${#} -eq 1 ]] || die "${FUNCNAME}: takes exactly 1 argument (impl).";

    local impl=${1};

    case "${impl}" in 

        python2_7 | python3_[567] | jython2_7)

            return 0

        ;;

        pypy1_[89] | pypy2_0 | python2_[56] | python3_[1234])

            return 1

        ;;

        pypy | pypy3)

            if [[ ${EAPI:-0} == [01234] ]]; then

                die "PyPy is supported in EAPI 5 and newer only.";

            fi

        ;;

        *)

            [[ -n ${PYTHON_COMPAT_NO_STRICT} ]] && return 1;

            die "Invalid implementation in PYTHON_COMPAT: ${impl}"

        ;;

    esac

}

_python_ln_rel () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    local target=${1};

    local symname=${2};

    local tgpath=${target%/*}/;

    local sympath=${symname%/*}/;

    local rel_target=;

    while [[ -n ${sympath} ]]; do

        local tgseg= symseg=;

        while [[ ! -n ${tgseg} && -n ${tgpath} ]]; do

            tgseg=${tgpath%%/*};

            tgpath=${tgpath#${tgseg}/};

        done;

        while [[ ! -n ${symseg} && -n ${sympath} ]]; do

            symseg=${sympath%%/*};

            sympath=${sympath#${symseg}/};

        done;

        if [[ ${tgseg} != ${symseg} ]]; then

            rel_target=../${rel_target}${tgseg:+${tgseg}/};

        fi;

    done;

    rel_target+=${tgpath}${target##*/};

    debug-print "${FUNCNAME}: ${symname} -> ${target}";

    debug-print "${FUNCNAME}: rel_target = ${rel_target}";

    ln -fs "${rel_target}" "${symname}"

}

_python_multibuild_wrapper () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    local -x EPYTHON PYTHON;

    local -x PATH=${PATH} PKG_CONFIG_PATH=${PKG_CONFIG_PATH};

    python_export "${MULTIBUILD_VARIANT}" EPYTHON PYTHON;

    python_wrapper_setup;

    "${@}"

}

_python_obtain_impls () 

{ 

    _python_validate_useflags;

    if [[ -n ${PYTHON_COMPAT_OVERRIDE} ]]; then

        MULTIBUILD_VARIANTS=(${PYTHON_COMPAT_OVERRIDE});

        return;

    fi;

    MULTIBUILD_VARIANTS=();

    local impl;

    for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}";

    do

        has "${impl}" "${PYTHON_COMPAT[@]}" && use "python_targets_${impl}" && MULTIBUILD_VARIANTS+=("${impl}");

    done

}

_python_set_impls () 

{ 

    local i;

    if ! declare -p PYTHON_COMPAT &> /dev/null; then

        die 'PYTHON_COMPAT not declared.';

    fi;

    if [[ $(declare -p PYTHON_COMPAT) != "declare -a"* ]]; then

        die 'PYTHON_COMPAT must be an array.';

    fi;

    for i in "${PYTHON_COMPAT[@]}";

    do

        _python_impl_supported "${i}";

    done;

    local supp=() unsupp=();

    for i in "${_PYTHON_ALL_IMPLS[@]}";

    do

        if has "${i}" "${PYTHON_COMPAT[@]}"; then

            supp+=("${i}");

        else

            unsupp+=("${i}");

        fi;

    done;

    if [[ ! -n ${supp[@]} ]]; then

        die "No supported implementation in PYTHON_COMPAT.";

    fi;

    if [[ -n ${_PYTHON_SUPPORTED_IMPLS[@]} ]]; then

        if [[ ${_PYTHON_SUPPORTED_IMPLS[@]} != ${supp[@]} ]]; then

            eerror "Supported impls (PYTHON_COMPAT) changed between inherits!";

            eerror "Before: ${_PYTHON_SUPPORTED_IMPLS[*]}";

            eerror "Now   : ${supp[*]}";

            die "_PYTHON_SUPPORTED_IMPLS integrity check failed";

        fi;

        if [[ ${_PYTHON_UNSUPPORTED_IMPLS[@]} != ${unsupp[@]} ]]; then

            eerror "Unsupported impls changed between inherits!";

            eerror "Before: ${_PYTHON_UNSUPPORTED_IMPLS[*]}";

            eerror "Now   : ${unsupp[*]}";

            die "_PYTHON_UNSUPPORTED_IMPLS integrity check failed";

        fi;

    else

        _PYTHON_SUPPORTED_IMPLS=("${supp[@]}");

        _PYTHON_UNSUPPORTED_IMPLS=("${unsupp[@]}");

        readonly _PYTHON_SUPPORTED_IMPLS _PYTHON_UNSUPPORTED_IMPLS;

    fi

}

_python_validate_useflags () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    if [[ -n ${PYTHON_COMPAT_OVERRIDE} ]]; then

        if [[ ! -n ${_PYTHON_COMPAT_OVERRIDE_WARNED} ]]; then

            ewarn "WARNING: PYTHON_COMPAT_OVERRIDE in effect. The following Python";

            ewarn "implementations will be enabled:";

            ewarn;

            ewarn "   ${PYTHON_COMPAT_OVERRIDE}";

            ewarn;

            ewarn "Dependencies won't be satisfied, and PYTHON_TARGETS will be ignored.";

            _PYTHON_COMPAT_OVERRIDE_WARNED=1;

        fi;

        return;

    fi;

    local i;

    for i in "${_PYTHON_SUPPORTED_IMPLS[@]}";

    do

        use "python_targets_${i}" && return 0;

    done;

    eerror "No Python implementation selected for the build. Please add one";

    eerror "of the following values to your PYTHON_TARGETS (in make.conf):";

    eerror;

    eerror "${PYTHON_COMPAT[@]}";

    echo;

    die "No supported Python implementation in PYTHON_TARGETS."

}

_tc-getPROG () 

{ 

    local tuple=$1;

    local v var vars=$2;

    local prog=($3);

    var=${vars%% *};

    for v in ${vars};

    do

        if [[ -n ${!v} ]]; then

            export ${var}="${!v}";

            echo "${!v}";

            return 0;

        fi;

    done;

    local search=;

    [[ -n $4 ]] && search=$(type -p $4-${prog[0]});

    [[ -z ${search} && -n ${!tuple} ]] && search=$(type -p ${!tuple}-${prog[0]});

    [[ -n ${search} ]] && prog[0]=${search##*/};

    export ${var}="${prog[*]}";

    echo "${!var}"

}

clang-fullversion () 

{ 

    _clang_fullversion '$1.$2.$3' "$@"

}

clang-major-version () 

{ 

    _clang_fullversion '$1' "$@"

}

clang-micro-version () 

{ 

    _clang_fullversion '$3' "$@"

}

clang-minor-version () 

{ 

    _clang_fullversion '$2' "$@"

}

clang-version () 

{ 

    _clang_fullversion '$1.$2' "$@"

}

distutils-r1_python_compile () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    _distutils-r1_copy_egg_info;

    local build_args=();

    if python_is_python3 && [[ ${EPYTHON} != python3.4 ]]; then

        if [[ ${EAPI} != [56] || ${EPYTHON} != python3.[56] ]]; then

            local jobs=$(makeopts_jobs "${MAKEOPTS}" INF);

            if [[ ${jobs} == INF ]]; then

                local nproc=$(get_nproc);

                jobs=$(( nproc + 1 ));

            fi;

            build_args+=(-j "${jobs}");

        fi;

    fi;

    esetup.py build "${build_args[@]}" "${@}"

}

distutils-r1_python_configure () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    [[ ${EAPI} == [45] ]] || die "${FUNCNAME} is banned in EAPI 6 (it was a no-op)"

}

distutils-r1_python_install () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    local args=("${@}");

    local -x PYTHONDONTWRITEBYTECODE=;

    addpredict "${EPREFIX}/usr/lib/${EPYTHON}";

    addpredict "${EPREFIX}/usr/$(get_libdir)/${EPYTHON}";

    addpredict /usr/lib/portage/pym;

    addpredict /usr/local;

    if [[ ! -n ${DISTUTILS_SINGLE_IMPL} ]]; then

        local mydistutilsargs=("${mydistutilsargs[@]}");

        local scriptdir=${EPREFIX}/usr/bin;

        local arg arg_vars;

        [[ -n ${mydistutilsargs[@]} ]] && eval arg_vars+=('mydistutilsargs['{0..$(( ${#mydistutilsargs[@]} - 1 ))}']');

        [[ -n ${args[@]} ]] && eval arg_vars+=('args['{0..$(( ${#args[@]} - 1 ))}']');

        set -- "${arg_vars[@]}";

        while [[ -n ${@} ]]; do

            local arg_var=${1};

            shift;

            local a=${!arg_var};

            case "${a}" in 

                --install-scripts=*)

                    scriptdir=${a#--install-scripts=};

                    unset "${arg_var}"

                ;;

                --install-scripts)

                    scriptdir=${!1};

                    unset "${arg_var}" "${1}";

                    shift

                ;;

            esac;

        done;

    fi;

    local root=${D%/}/_${EPYTHON};

    [[ -n ${DISTUTILS_SINGLE_IMPL} ]] && root=${D%/};

    esetup.py install --root="${root}" "${args[@]}";

    local forbidden_package_names=(examples test tests .pytest_cache);

    local p;

    for p in "${forbidden_package_names[@]}";

    do

        if [[ -d ${root}$(python_get_sitedir)/${p} ]]; then

            die "Package installs '${p}' package which is forbidden and likely a bug in the build system.";

        fi;

    done;

    local shopt_save=$(shopt -p nullglob);

    shopt -s nullglob;

    local pypy_dirs=("${root}/usr/$(get_libdir)"/pypy*/share "${root}/usr/lib"/pypy*/share);

    ${shopt_save};

    if [[ -n ${pypy_dirs} ]]; then

        local cmd=die;

        [[ ${EAPI} == [45] ]] && cmd=eqawarn;

        "${cmd}" "Package installs 'share' in PyPy prefix, see bug #465546.";

    fi;

    if [[ ! -n ${DISTUTILS_SINGLE_IMPL} ]]; then

        _distutils-r1_wrap_scripts "${root}" "${scriptdir}";

        multibuild_merge_root "${root}" "${D%/}";

    fi

}

distutils-r1_python_install_all () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    einstalldocs;

    if declare -p EXAMPLES &> /dev/null; then

        [[ ${EAPI} != [45] ]] && die "EXAMPLES are banned in EAPI ${EAPI}";

        ( docinto examples;

        dodoc -r "${EXAMPLES[@]}" );

        docompress -x "/usr/share/doc/${PF}/examples";

    fi;

    _DISTUTILS_DEFAULT_CALLED=1

}

distutils-r1_python_prepare () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    [[ ${EAPI} == [45] ]] || die "${FUNCNAME} is banned in EAPI 6 (it was a no-op)"

}

distutils-r1_python_prepare_all () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    if [[ ! -n ${DISTUTILS_OPTIONAL} ]]; then

        if [[ ${EAPI} != [45] ]]; then

            default;

        else

            [[ -n ${PATCHES} ]] && epatch "${PATCHES[@]}";

            epatch_user;

        fi;

    fi;

    if [[ ! -n ${DISTUTILS_IN_SOURCE_BUILD+1} ]]; then

        if declare -f python_prepare > /dev/null; then

            DISTUTILS_IN_SOURCE_BUILD=1;

        fi;

    fi;

    _distutils-r1_disable_ez_setup;

    if [[ -n ${DISTUTILS_IN_SOURCE_BUILD} && ! -n ${DISTUTILS_SINGLE_IMPL} ]]; then

        python_copy_sources;

    fi;

    _DISTUTILS_DEFAULT_CALLED=1

}

distutils-r1_run_phase () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    if [[ -n ${DISTUTILS_IN_SOURCE_BUILD} ]]; then

        if [[ ! -n ${DISTUTILS_SINGLE_IMPL} ]]; then

            cd "${BUILD_DIR}" || die;

        fi;

        local BUILD_DIR=${BUILD_DIR}/build;

    fi;

    local -x PYTHONPATH="${BUILD_DIR}/lib:${PYTHONPATH}";

    mkdir -p "${BUILD_DIR}/lib" || die;

    local -x AR=${AR} CC=${CC} CPP=${CPP} CXX=${CXX};

    tc-export AR CC CPP CXX;

    local ldopts;

    case "${CHOST}" in 

        *-aix*)

            ldopts='-shared -Wl,-berok'

        ;;

        *-darwin*)

            ldopts='-bundle -undefined dynamic_lookup'

        ;;

        *)

            ldopts='-shared'

        ;;

    esac;

    local -x LDSHARED="${CC} ${ldopts}" LDCXXSHARED="${CXX} ${ldopts}";

    "${@}";

    cd "${_DISTUTILS_INITIAL_CWD}" || die

}

distutils-r1_src_compile () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    if declare -f python_compile > /dev/null; then

        _distutils-r1_run_foreach_impl python_compile;

    else

        _distutils-r1_run_foreach_impl distutils-r1_python_compile;

    fi;

    if declare -f python_compile_all > /dev/null; then

        _distutils-r1_run_common_phase python_compile_all;

    fi

}

distutils-r1_src_configure () 

{ 

    python_export_utf8_locale;

    [[ ${EAPI} == [56] ]] && xdg_environment_reset;

    if declare -f python_configure > /dev/null; then

        _distutils-r1_run_foreach_impl python_configure;

    fi;

    if declare -f python_configure_all > /dev/null; then

        _distutils-r1_run_common_phase python_configure_all;

    fi

}

distutils-r1_src_install () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    if declare -f python_install > /dev/null; then

        _distutils-r1_run_foreach_impl python_install;

    else

        _distutils-r1_run_foreach_impl distutils-r1_python_install;

    fi;

    local _DISTUTILS_DEFAULT_CALLED;

    if declare -f python_install_all > /dev/null; then

        _distutils-r1_run_common_phase python_install_all;

    else

        _distutils-r1_run_common_phase distutils-r1_python_install_all;

    fi;

    if [[ ! -n ${_DISTUTILS_DEFAULT_CALLED} ]]; then

        local cmd=die;

        [[ ${EAPI} == [45] ]] && cmd=eqawarn;

        "${cmd}" "QA: python_install_all() didn't call distutils-r1_python_install_all";

    fi;

    _distutils-r1_check_namespace_pth

}

distutils-r1_src_prepare () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    local _DISTUTILS_DEFAULT_CALLED;

    if declare -f python_prepare_all > /dev/null; then

        python_prepare_all;

    else

        distutils-r1_python_prepare_all;

    fi;

    if [[ ! -n ${_DISTUTILS_DEFAULT_CALLED} ]]; then

        local cmd=die;

        [[ ${EAPI} == [45] ]] && cmd=eqawarn;

        "${cmd}" "QA: python_prepare_all() didn't call distutils-r1_python_prepare_all";

    fi;

    if declare -f python_prepare > /dev/null; then

        _distutils-r1_run_foreach_impl python_prepare;

    fi

}

distutils-r1_src_test () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    if declare -f python_test > /dev/null; then

        _distutils-r1_run_foreach_impl python_test;

        _distutils-r1_run_foreach_impl _distutils-r1_clean_egg_info;

    fi;

    if declare -f python_test_all > /dev/null; then

        _distutils-r1_run_common_phase python_test_all;

    fi

}

distutils_get_intermediate_installation_image () 

{ 

    die "${FUNCNAME}() is invalid for distutils-r1"

}

distutils_install_for_testing () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    TEST_DIR=${BUILD_DIR}/test;

    local bindir=${TEST_DIR}/scripts;

    local libdir=${TEST_DIR}/lib;

    PYTHONPATH=${libdir}:${PYTHONPATH};

    local add_args=(install --home="${TEST_DIR}" --install-lib="${libdir}" --install-scripts="${bindir}");

    mkdir -p "${libdir}" || die;

    esetup.py "${add_args[@]}" "${@}"

}

distutils_pkg_postinst () 

{ 

    die "${FUNCNAME}() is invalid for distutils-r1, and pkg_postinst is unnecessary"

}

distutils_pkg_postrm () 

{ 

    die "${FUNCNAME}() is invalid for distutils-r1, and pkg_postrm is unnecessary"

}

distutils_src_compile () 

{ 

    die "${FUNCNAME}() is invalid for distutils-r1, you probably want: ${FUNCNAME/_/-r1_}"

}

distutils_src_install () 

{ 

    die "${FUNCNAME}() is invalid for distutils-r1, you probably want: ${FUNCNAME/_/-r1_}"

}

distutils_src_prepare () 

{ 

    die "${FUNCNAME}() is invalid for distutils-r1, you probably want: ${FUNCNAME/_/-r1_}"

}

distutils_src_test () 

{ 

    die "${FUNCNAME}() is invalid for distutils-r1, you probably want: ${FUNCNAME/_/-r1_}"

}

distutils_src_unpack () 

{ 

    die "${FUNCNAME}() is invalid for distutils-r1, and you don't want it in EAPI ${EAPI} anyway"

}

eapply () 

{ 

    local failed patch_cmd=patch;

    local -x LC_COLLATE=POSIX;

    type -P gpatch > /dev/null && patch_cmd=gpatch;

    function _eapply_patch () 

    { 

        local f=${1};

        local prefix=${2};

        started_applying=1;

        ebegin "${prefix:-Applying }${f##*/}";

        ${patch_cmd} -p1 -f -s -g0 --no-backup-if-mismatch "${patch_options[@]}" < "${f}";

        failed=${?};

        if ! eend "${failed}"; then

            __helpers_die "patch -p1 ${patch_options[*]} failed with ${f}";

        fi

    };

    local patch_options=() files=();

    local i found_doublehyphen;

    for ((i = 1; i <= ${#@}; ++i ))

    do

        if [[ ${@:i:1} == -- ]]; then

            patch_options=("${@:1:i-1}");

            files=("${@:i+1}");

            found_doublehyphen=1;

            break;

        fi;

    done;

    if [[ -z ${found_doublehyphen} ]]; then

        for ((i = 1; i <= ${#@}; ++i ))

        do

            if [[ ${@:i:1} != -* ]]; then

                patch_options=("${@:1:i-1}");

                files=("${@:i}");

                break;

            fi;

        done;

        for i in "${files[@]}";

        do

            if [[ ${i} == -* ]]; then

                die "eapply: all options must be passed before non-options";

            fi;

        done;

    fi;

    if [[ ${#files[@]} -eq 0 ]]; then

        die "eapply: no files specified";

    fi;

    local f;

    for f in "${files[@]}";

    do

        if [[ -d ${f} ]]; then

            function _eapply_get_files () 

            { 

                local LC_ALL=POSIX;

                local prev_shopt=$(shopt -p nullglob);

                shopt -s nullglob;

                local f;

                for f in "${1}"/*;

                do

                    if [[ ${f} == *.diff || ${f} == *.patch ]]; then

                        files+=("${f}");

                    fi;

                done;

                ${prev_shopt}

            };

            local files=();

            _eapply_get_files "${f}";

            [[ ${#files[@]} -eq 0 ]] && die "No *.{patch,diff} files in directory ${f}";

            einfo "Applying patches from ${f} ...";

            local f2;

            for f2 in "${files[@]}";

            do

                _eapply_patch "${f2}" '  ';

                [[ ${failed} -ne 0 ]] && return "${failed}";

            done;

        else

            _eapply_patch "${f}";

            [[ ${failed} -ne 0 ]] && return "${failed}";

        fi;

    done;

    return 0

}

```

----------

## Eleazar Anzola

```

eapply_user () 

{ 

    [[ ${EBUILD_PHASE} == prepare ]] || die "eapply_user() called during invalid phase: ${EBUILD_PHASE}";

    local tagfile=${T}/.portage_user_patches_applied;

    [[ -f ${tagfile} ]] && return;

     >> "${tagfile}";

    local basedir=${PORTAGE_CONFIGROOT%/}/etc/portage/patches;

    local applied d f;

    local -A _eapply_user_patches;

    local prev_shopt=$(shopt -p nullglob);

    shopt -s nullglob;

    for d in "${basedir}"/${CATEGORY}/{${P}-${PR},${P},${PN}}{:${SLOT%/*},};

    do

        for f in "${d}"/*;

        do

            if [[ ( ${f} == *.diff || ${f} == *.patch ) && -z ${_eapply_user_patches[${f##*/}]} ]]; then

                _eapply_user_patches[${f##*/}]=${f};

            fi;

        done;

    done;

    if [[ ${#_eapply_user_patches[@]} -gt 0 ]]; then

        while read -r -d '' f; do

            f=${_eapply_user_patches[${f}]};

            if [[ -s ${f} ]]; then

                eapply "${f}";

                applied=1;

            fi;

        done < <(printf -- '%s\0' "${!_eapply_user_patches[@]}" |

            LC_ALL=C sort -z);

    fi;

    ${prev_shopt};

    [[ -n ${applied} ]] && ewarn "User patches applied."

}

econf_build () 

{ 

    local CBUILD=${CBUILD:-${CHOST}};

    tc-env_build econf --build=${CBUILD} --host=${CBUILD} "$@"

}

einstalldocs () 

{ 

    ( if ! declare -p DOCS &> /dev/null; then

        local d;

        for d in README* ChangeLog AUTHORS NEWS TODO CHANGES THANKS BUGS FAQ CREDITS CHANGELOG;

        do

            [[ -f ${d} && -s ${d} ]] && docinto / && dodoc "${d}";

        done;

    else

        if ___is_indexed_array_var DOCS; then

            [[ ${#DOCS[@]} -gt 0 ]] && docinto / && dodoc -r "${DOCS[@]}";

        else

            [[ -n ${DOCS} ]] && docinto / && dodoc -r ${DOCS};

        fi;

    fi );

    ( if ___is_indexed_array_var HTML_DOCS; then

        [[ ${#HTML_DOCS[@]} -gt 0 ]] && docinto html && dodoc -r "${HTML_DOCS[@]}";

    else

        [[ -n ${HTML_DOCS} ]] && docinto html && dodoc -r ${HTML_DOCS};

    fi )

}

esetup.py () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    local die_args=();

    [[ ${EAPI} != [45] ]] && die_args+=(-n);

    [[ -n ${BUILD_DIR} ]] && _distutils-r1_create_setup_cfg;

    set -- "${EPYTHON:-python}" setup.py "${mydistutilsargs[@]}" "${@}";

    echo "${@}" 1>&2;

    "${@}" || die "${die_args[@]}";

    local ret=${?};

    if [[ -n ${BUILD_DIR} ]]; then

        rm "${HOME}"/.pydistutils.cfg || die "${die_args[@]}";

    fi;

    return ${ret}

}

gcc-fullversion () 

{ 

    _gcc_fullversion '$1.$2.$3' "$@"

}

gcc-major-version () 

{ 

    _gcc_fullversion '$1' "$@"

}

gcc-micro-version () 

{ 

    _gcc_fullversion '$3' "$@"

}

gcc-minor-version () 

{ 

    _gcc_fullversion '$2' "$@"

}

gcc-specs-directive () 

{ 

    local directive subdname subdirective;

    directive="$(_gcc-specs-directive_raw $1)";

    while [[ ${directive} == *%\(*\)* ]]; do

        subdname=${directive/*%\(};

        subdname=${subdname/\)*};

        subdirective="$(_gcc-specs-directive_raw ${subdname})";

        directive="${directive//\%(${subdname})/${subdirective}}";

    done;

    echo "${directive}";

    return 0

}

gcc-specs-nostrict () 

{ 

    local directive;

    directive=$(gcc-specs-directive cc1);

    [[ "${directive/\{!fstrict-overflow:}" != "${directive}" ]]

}

gcc-specs-now () 

{ 

    local directive;

    directive=$(gcc-specs-directive link_command);

    [[ "${directive/\{!nonow:}" != "${directive}" ]]

}

gcc-specs-pie () 

{ 

    local directive;

    directive=$(gcc-specs-directive cc1);

    [[ "${directive/\{!nopie:}" != "${directive}" ]]

}

gcc-specs-relro () 

{ 

    local directive;

    directive=$(gcc-specs-directive link_command);

    [[ "${directive/\{!norelro:}" != "${directive}" ]]

}

gcc-specs-ssp () 

{ 

    local directive;

    directive=$(gcc-specs-directive cc1);

    [[ "${directive/\{!fno-stack-protector:}" != "${directive}" ]]

}

gcc-specs-ssp-to-all () 

{ 

    local directive;

    directive=$(gcc-specs-directive cc1);

    [[ "${directive/\{!fno-stack-protector-all:}" != "${directive}" ]]

}

gcc-specs-stack-check () 

{ 

    local directive;

    directive=$(gcc-specs-directive cc1);

    [[ "${directive/\{!fno-stack-check:}" != "${directive}" ]]

}

gcc-version () 

{ 

    _gcc_fullversion '$1.$2' "$@"

}

gen_usr_ldscript () 

{ 

    ewarn "${FUNCNAME}: Please migrate to usr-ldscript.eclass";

    local lib libdir=$(get_libdir) output_format="" auto=false suffix=$(get_libname);

    [[ -z ${ED+set} ]] && local ED=${D%/}${EPREFIX}/;

    tc-is-static-only && return;

    if [[ $(type -t multilib_is_native_abi) == "function" ]]; then

        multilib_is_native_abi || return 0;

    fi;

    case ${CTARGET:-${CHOST}} in 

        *-darwin*)

        ;;

        *-android*)

            return 0

        ;;

        *linux* | *-freebsd* | *-openbsd* | *-netbsd*)

            use prefix && return 0

        ;;

        *)

            return 0

        ;;

    esac;

    dodir /usr/${libdir};

    if [[ $1 == "-a" ]]; then

        auto=true;

        shift;

        dodir /${libdir};

    fi;

    local flags=(${CFLAGS} ${LDFLAGS} -Wl,--verbose);

    if $(tc-getLD) --version | grep -q 'GNU gold'; then

        local d="${T}/bfd-linker";

        mkdir -p "${d}";

        ln -sf $(which ${CHOST}-ld.bfd) "${d}"/ld;

        flags+=(-B"${d}");

    fi;

    output_format=$($(tc-getCC) "${flags[@]}" 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/\1/p');

    [[ -n ${output_format} ]] && output_format="OUTPUT_FORMAT ( ${output_format} )";

    for lib in "$@";

    do

        local tlib;

        if ${auto}; then

            lib="lib${lib}${suffix}";

        else

            [[ -r ${ED}/${libdir}/${lib} ]] || continue;

        fi;

        case ${CTARGET:-${CHOST}} in 

            *-darwin*)

                if ${auto}; then

                    tlib=$(scanmacho -qF'%S#F' "${ED}"/usr/${libdir}/${lib});

                else

                    tlib=$(scanmacho -qF'%S#F' "${ED}"/${libdir}/${lib});

                fi;

                [[ -z ${tlib} ]] && die "unable to read install_name from ${lib}";

                tlib=${tlib##*/};

                if ${auto}; then

                    mv "${ED}"/usr/${libdir}/${lib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die;

                    if [[ ${tlib} != ${lib%${suffix}}.*${suffix#.} ]]; then

                        mv "${ED}"/usr/${libdir}/${tlib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die;

                    fi;

                    rm -f "${ED}"/${libdir}/${lib};

                fi;

                if [[ ! -w "${ED}/${libdir}/${tlib}" ]]; then

                    chmod u+w "${ED}${libdir}/${tlib}";

                    local nowrite=yes;

                fi;

                install_name_tool -id "${EPREFIX}"/${libdir}/${tlib} "${ED}"/${libdir}/${tlib} || die "install_name_tool failed";

                [[ -n ${nowrite} ]] && chmod u-w "${ED}${libdir}/${tlib}";

                pushd "${ED}/usr/${libdir}" > /dev/null;

                ln -snf "../../${libdir}/${tlib}" "${lib}";

                popd > /dev/null

            ;;

            *)

                if ${auto}; then

                    tlib=$(scanelf -qF'%S#F' "${ED}"/usr/${libdir}/${lib});

                    [[ -z ${tlib} ]] && die "unable to read SONAME from ${lib}";

                    mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die;

                    if [[ ${tlib} != ${lib}* ]]; then

                        mv "${ED}"/usr/${libdir}/${tlib}* "${ED}"/${libdir}/ || die;

                    fi;

                    rm -f "${ED}"/${libdir}/${lib};

                else

                    tlib=${lib};

                fi;

                cat > "${ED}/usr/${libdir}/${lib}" <<-END_LDSCRIPT

/* GNU ld script

   Since Gentoo has critical dynamic libraries in /lib, and the static versions

   in /usr/lib, we need to have a "fake" dynamic lib in /usr/lib, otherwise we

   run into linking problems.  This "fake" dynamic lib is a linker script that

   redirects the linker to the real lib.  And yes, this works in the cross-

   compiling scenario as the sysroot-ed linker will prepend the real path.

   See bug https://bugs.gentoo.org/4411 for more info.

 */

${output_format}

GROUP ( ${EPREFIX}/${libdir}/${tlib} )

END_LDSCRIPT

            ;;

        esac

        fperms a+x "/usr/${libdir}/${lib}" || die "could not change perms on ${lib}";

    done

}

get_abi_CFLAGS () 

{ 

    get_abi_var CFLAGS "$@"

}

get_abi_CHOST () 

{ 

    get_abi_var CHOST "$@"

}

get_abi_CTARGET () 

{ 

    get_abi_var CTARGET "$@"

}

get_abi_FAKE_TARGETS () 

{ 

    get_abi_var FAKE_TARGETS "$@"

}

get_abi_LDFLAGS () 

{ 

    get_abi_var LDFLAGS "$@"

}

get_abi_LIBDIR () 

{ 

    get_abi_var LIBDIR "$@"

}

get_abi_var () 

{ 

    local flag=$1;

    local abi=${2:-${ABI:-${DEFAULT_ABI:-default}}};

    local var="${flag}_${abi}";

    echo ${!var}

}

get_all_abis () 

{ 

    local x order="" mvar dvar;

    mvar="MULTILIB_ABIS";

    dvar="DEFAULT_ABI";

    if [[ -n $1 ]]; then

        mvar="$1_${mvar}";

        dvar="$1_${dvar}";

    fi;

    if [[ -z ${!mvar} ]]; then

        echo "default";

        return 0;

    fi;

    for x in ${!mvar};

    do

        if [[ ${x} != ${!dvar} ]]; then

            order="${order:+${order} }${x}";

        fi;

    done;

    order="${order:+${order} }${!dvar}";

    echo ${order};

    return 0

}

get_all_libdirs () 

{ 

    local libdirs abi;

    for abi in ${MULTILIB_ABIS};

    do

        libdirs+=" $(get_abi_LIBDIR ${abi})";

    done;

    [[ " ${libdirs} " != *" lib "* ]] && libdirs+=" lib";

    echo "${libdirs}"

}

get_exeext () 

{ 

    case ${CHOST} in 

        *-cygwin* | mingw* | *-mingw*)

            echo ".exe"

        ;;

    esac

}

get_install_abis () 

{ 

    local x order="";

    if [[ -z ${MULTILIB_ABIS} ]]; then

        echo "default";

        return 0;

    fi;

    if [[ ${EMULTILIB_PKG} == "true" ]]; then

        for x in ${MULTILIB_ABIS};

        do

            if [[ ${x} != "${DEFAULT_ABI}" ]]; then

                has ${x} ${ABI_DENY} || order="${order} ${x}";

            fi;

        done;

        has ${DEFAULT_ABI} ${ABI_DENY} || order="${order} ${DEFAULT_ABI}";

        if [[ -n ${ABI_ALLOW} ]]; then

            local ordera="";

            for x in ${order};

            do

                if has ${x} ${ABI_ALLOW}; then

                    ordera="${ordera} ${x}";

                fi;

            done;

            order=${ordera};

        fi;

    else

        order=${DEFAULT_ABI};

    fi;

    if [[ -z ${order} ]]; then

        die "The ABI list is empty.  Are you using a proper multilib profile?  Perhaps your USE flags or MULTILIB_ABIS are too restrictive for this package.";

    fi;

    echo ${order};

    return 0

}

get_libdir () 

{ 

    local libdir_var="LIBDIR_${ABI}";

    local libdir="lib";

    [[ -n ${ABI} && -n ${!libdir_var} ]] && libdir=${!libdir_var};

    echo "${libdir}"

}

get_libname () 

{ 

    local libname;

    local ver=$1;

    case ${CHOST} in 

        *-cygwin*)

            libname="dll.a"

        ;;

        mingw* | *-mingw*)

            libname="dll"

        ;;

        *-darwin*)

            libname="dylib"

        ;;

        *-mint*)

            libname="irrelevant"

        ;;

        hppa*-hpux*)

            libname="sl"

        ;;

        *)

            libname="so"

        ;;

    esac;

    if [[ -z $* ]]; then

        echo ".${libname}";

    else

        for ver in "$@";

        do

            case ${CHOST} in 

                *-cygwin*)

                    echo ".${ver}.${libname}"

                ;;

                *-darwin*)

                    echo ".${ver}.${libname}"

                ;;

                *-mint*)

                    echo ".${libname}"

                ;;

                *)

                    echo ".${libname}.${ver}"

                ;;

            esac;

        done;

    fi

}

get_modname () 

{ 

    local modname;

    local ver=$1;

    case ${CHOST} in 

        *-darwin*)

            modname="bundle"

        ;;

        *)

            modname="so"

        ;;

    esac;

    echo ".${modname}"

}

get_nproc () 

{ 

    local nproc;

    if type -P nproc &> /dev/null; then

        nproc=$(nproc);

    fi;

    if [[ -z ${nproc} ]] && type -P sysctl &> /dev/null; then

        nproc=$(sysctl -n hw.ncpu 2>/dev/null);

    fi;

    if [[ -z ${nproc} ]] && type -P python &> /dev/null; then

        nproc=$(python -c 'import multiprocessing; print(multiprocessing.cpu_count());' 2>/dev/null);

    fi;

    if [[ -n ${nproc} ]]; then

        echo "${nproc}";

    else

        echo "${1:-1}";

    fi

}

has_multilib_profile () 

{ 

    [ -n "${MULTILIB_ABIS}" -a "${MULTILIB_ABIS}" != "${MULTILIB_ABIS/ /}" ]

}

in_iuse () 

{ 

    local use=${1};

    if [[ -z "${use}" ]]; then

        echo "!!! in_iuse() called without a parameter." 1>&2;

        echo "!!! in_iuse <USEFLAG>" 1>&2;

        die "in_iuse() called without a parameter";

    fi;

    local liuse=(${IUSE_EFFECTIVE});

    has "${use}" "${liuse[@]#[+-]}"

}

is_final_abi () 

{ 

    has_multilib_profile || return 0;

    set -- $(get_install_abis);

    local LAST_ABI=$#;

    [[ ${!LAST_ABI} == ${ABI} ]]

}

makeopts_jobs () 

{ 

    [[ $# -eq 0 ]] && set -- "${MAKEOPTS}";

    local jobs=$(echo " $* " | sed -r -n       -e 's:.*[[:space:]](-[a-z]*j|--jobs[=[:space:]])[[:space:]]*([0-9]+).*:\2:p'       -e "s:.*[[:space:]](-[a-z]*j|--jobs)[[:space:]].*:${2:-999}:p");

    echo ${jobs:-1}

}

makeopts_loadavg () 

{ 

    [[ $# -eq 0 ]] && set -- "${MAKEOPTS}";

    local lavg=$(echo " $* " | sed -r -n       -e 's:.*[[:space:]](-[a-z]*l|--(load-average|max-load)[=[:space:]])[[:space:]]*([0-9]+(\.[0-9]+)?)[[:space:]].*:\3:p'       -e "s:.*[[:space:]](-[a-z]*l|--(load-average|max-load))[[:space:]].*:${2:-999}:p");

    echo ${lavg:-${2:-999}}

}

multibuild_copy_sources () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    local _MULTIBUILD_INITIAL_BUILD_DIR=${BUILD_DIR:-${S}};

    einfo "Will copy sources from ${_MULTIBUILD_INITIAL_BUILD_DIR}";

    local cp_args=();

    if cp --reflink=auto --version &> /dev/null; then

        cp_args+=(--reflink=auto);

    fi;

    function _multibuild_create_source_copy () 

    { 

        einfo "${MULTIBUILD_VARIANT}: copying to ${BUILD_DIR}";

        cp -p -R "${cp_args[@]}" "${_MULTIBUILD_INITIAL_BUILD_DIR}" "${BUILD_DIR}" || die

    };

    multibuild_foreach_variant _multibuild_create_source_copy

}

multibuild_for_best_variant () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    [[ -n ${MULTIBUILD_VARIANTS} ]] || die "MULTIBUILD_VARIANTS need to be set";

    local MULTIBUILD_VARIANTS=("${MULTIBUILD_VARIANTS[$(( ${#MULTIBUILD_VARIANTS[@]} - 1 ))]}");

    multibuild_foreach_variant "${@}"

}

multibuild_foreach_variant () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    [[ -n ${MULTIBUILD_VARIANTS} ]] || die "MULTIBUILD_VARIANTS need to be set";

    local bdir=${BUILD_DIR:-${S}};

    [[ ${bdir%%/} == ${WORKDIR%%/} ]] && bdir=${WORKDIR}/build;

    local prev_id=${MULTIBUILD_ID:+${MULTIBUILD_ID}-};

    local ret=0 lret=0 v;

    debug-print "${FUNCNAME}: initial build_dir = ${bdir}";

    for v in "${MULTIBUILD_VARIANTS[@]}";

    do

        local MULTIBUILD_VARIANT=${v};

        local MULTIBUILD_ID=${prev_id}${v};

        local BUILD_DIR=${bdir%%/}-${v};

        function _multibuild_run () 

        { 

            local i=1;

            while [[ ${!i} == _* ]]; do

                (( i += 1 ));

            done;

            [[ ${i} -le ${#} ]] && einfo "${v}: running ${@:${i}}";

            "${@}"

        };

        _multibuild_run "${@}" > >(exec tee -a "${T}/build-${MULTIBUILD_ID}.log") 2>&1;

        lret=${?};

    done;

    [[ ${ret} -eq 0 && ${lret} -ne 0 ]] && ret=${lret};

    return ${ret}

}

multibuild_merge_root () 

{ 

    local src=${1};

    local dest=${2};

    local ret;

    if use userland_BSD; then

        tar -C "${src}" -f - -c . | tar -x -f - -C "${dest}";

        [[ ${PIPESTATUS[*]} == '0 0' ]];

        ret=${?};

    else

        local cp_args=();

        if cp -a --version &> /dev/null; then

            cp_args+=(-a);

        else

            cp_args+=(-P -R -p);

        fi;

        if cp --reflink=auto --version &> /dev/null; then

            cp_args+=(--reflink=auto);

        fi;

        cp "${cp_args[@]}" "${src}"/. "${dest}"/;

        ret=${?};

    fi;

    if [[ ${ret} -ne 0 ]]; then

        die "${MULTIBUILD_VARIANT:-(unknown)}: merging image failed.";

    fi;

    rm -rf "${src}"

}

multibuild_parallel_foreach_variant () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    [[ ${EAPI} == [45] ]] || die "${FUNCNAME} is banned in EAPI ${EAPI}";

    multibuild_foreach_variant "${@}"

}

multilib_env () 

{ 

    local CTARGET=${1:-${CTARGET}};

    local cpu=${CTARGET%%*-};

    case ${cpu} in 

        aarch64*)

            export CFLAGS_arm=${CFLAGS_arm-};

            case ${cpu} in 

                aarch64*be)

                    export CHOST_arm="armv8b-${CTARGET#*-}"

                ;;

                *)

                    export CHOST_arm="armv8l-${CTARGET#*-}"

                ;;

            esac;

            CHOST_arm=${CHOST_arm/%-gnu/-gnueabi};

            export CTARGET_arm=${CHOST_arm};

            export LIBDIR_arm="lib";

            export CFLAGS_arm64=${CFLAGS_arm64-};

            export CHOST_arm64=${CTARGET};

            export CTARGET_arm64=${CHOST_arm64};

            export LIBDIR_arm64="lib64";

            : ${MULTILIB_ABIS=arm64};

            : ${DEFAULT_ABI=arm64}

        ;;

        x86_64*)

            export CFLAGS_x86=${CFLAGS_x86--m32};

            export CHOST_x86=${CTARGET/x86_64/i686};

            CHOST_x86=${CHOST_x86/%-gnux32/-gnu};

            export CTARGET_x86=${CHOST_x86};

            if [[ ${SYMLINK_LIB} == "yes" ]]; then

                export LIBDIR_x86="lib32";

            else

                export LIBDIR_x86="lib";

            fi;

            export CFLAGS_amd64=${CFLAGS_amd64--m64};

            export CHOST_amd64=${CTARGET/%-gnux32/-gnu};

            export CTARGET_amd64=${CHOST_amd64};

            export LIBDIR_amd64="lib64";

            export CFLAGS_x32=${CFLAGS_x32--mx32};

            export CHOST_x32=${CTARGET/%-gnu/-gnux32};

            export CTARGET_x32=${CHOST_x32};

            export LIBDIR_x32="libx32";

            case ${CTARGET} in 

                *-gnux32)

                    : ${MULTILIB_ABIS=x32 amd64 x86};

                    : ${DEFAULT_ABI=x32}

                ;;

                *)

                    : ${MULTILIB_ABIS=amd64 x86};

                    : ${DEFAULT_ABI=amd64}

                ;;

            esac

        ;;

        mips64* | mipsisa64*)

            export CFLAGS_o32=${CFLAGS_o32--mabi=32};

            export CHOST_o32=${CTARGET/mips64/mips};

            export CHOST_o32=${CHOST_o32/mipsisa64/mipsisa32};

            export CTARGET_o32=${CHOST_o32};

            export LIBDIR_o32="lib";

            export CFLAGS_n32=${CFLAGS_n32--mabi=n32};

            export CHOST_n32=${CTARGET};

            export CTARGET_n32=${CHOST_n32};

            export LIBDIR_n32="lib32";

            export CFLAGS_n64=${CFLAGS_n64--mabi=64};

            export CHOST_n64=${CTARGET};

            export CTARGET_n64=${CHOST_n64};

            export LIBDIR_n64="lib64";

            : ${MULTILIB_ABIS=n64 n32 o32};

            : ${DEFAULT_ABI=n32}

        ;;

        powerpc64*)

            export CFLAGS_ppc=${CFLAGS_ppc--m32};

            export CHOST_ppc=${CTARGET/powerpc64/powerpc};

            export CTARGET_ppc=${CHOST_ppc};

            export LIBDIR_ppc="lib";

            export CFLAGS_ppc64=${CFLAGS_ppc64--m64};

            export CHOST_ppc64=${CTARGET};

            export CTARGET_ppc64=${CHOST_ppc64};

            export LIBDIR_ppc64="lib64";

            : ${MULTILIB_ABIS=ppc64 ppc};

            : ${DEFAULT_ABI=ppc64}

        ;;

        riscv64*)

            export CFLAGS_lp64d=${CFLAGS_lp64d--mabi=lp64d};

            export CHOST_lp64d=${CTARGET};

            export CTARGET_lp64d=${CTARGET};

            export LIBDIR_lp64d="lib64/lp64d";

            export CFLAGS_lp64=${CFLAGS_lp64--mabi=lp64};

            export CHOST_lp64=${CTARGET};

            export CTARGET_lp64=${CTARGET};

            export LIBDIR_lp64="lib64/lp64";

            : ${MULTILIB_ABIS=lp64d lp64};

            : ${DEFAULT_ABI=lp64d}

        ;;

        s390x*)

            export CFLAGS_s390=${CFLAGS_s390--m31};

            export CHOST_s390=${CTARGET/s390x/s390};

            export CTARGET_s390=${CHOST_s390};

            export LIBDIR_s390="lib";

            export CFLAGS_s390x=${CFLAGS_s390x--m64};

            export CHOST_s390x=${CTARGET};

            export CTARGET_s390x=${CHOST_s390x};

            export LIBDIR_s390x="lib64";

            : ${MULTILIB_ABIS=s390x s390};

            : ${DEFAULT_ABI=s390x}

        ;;

        sparc64*)

            export CFLAGS_sparc32=${CFLAGS_sparc32--m32};

            export CHOST_sparc32=${CTARGET/sparc64/sparc};

            export CTARGET_sparc32=${CHOST_sparc32};

            export LIBDIR_sparc32="lib";

            export CFLAGS_sparc64=${CFLAGS_sparc64--m64};

            export CHOST_sparc64=${CTARGET};

            export CTARGET_sparc64=${CHOST_sparc64};

            export LIBDIR_sparc64="lib64";

            : ${MULTILIB_ABIS=sparc64 sparc32};

            : ${DEFAULT_ABI=sparc64}

        ;;

        *)

            : ${MULTILIB_ABIS=default};

            : ${DEFAULT_ABI=default}

        ;;

    esac;

    export MULTILIB_ABIS DEFAULT_ABI

}

multilib_toolchain_setup () 

{ 

    local v vv;

    export ABI=$1;

    if [[ ${_DEFAULT_ABI_SAVED} == "true" ]]; then

        for v in CHOST CBUILD AS CC CXX F77 FC LD PKG_CONFIG_{LIBDIR,PATH};

        do

            vv="_abi_saved_${v}";

            [[ ${!vv+set} == "set" ]] && export ${v}="${!vv}" || unset ${v};

            unset ${vv};

        done;

        unset _DEFAULT_ABI_SAVED;

    fi;

    if [[ ${ABI} != ${DEFAULT_ABI} ]]; then

        for v in CHOST CBUILD AS CC CXX F77 FC LD PKG_CONFIG_{LIBDIR,PATH};

        do

            vv="_abi_saved_${v}";

            [[ ${!v+set} == "set" ]] && export ${vv}="${!v}" || unset ${vv};

        done;

        export _DEFAULT_ABI_SAVED="true";

        if [[ ${CBUILD} == "${CHOST}" ]]; then

            export CBUILD=$(get_abi_CHOST $1);

        fi;

        export CHOST=$(get_abi_CHOST ${DEFAULT_ABI});

        export CC="$(tc-getCC) $(get_abi_CFLAGS)";

        export CXX="$(tc-getCXX) $(get_abi_CFLAGS)";

        export F77="$(tc-getF77) $(get_abi_CFLAGS)";

        export FC="$(tc-getFC) $(get_abi_CFLAGS)";

        export LD="$(tc-getLD) $(get_abi_LDFLAGS)";

        export CHOST=$(get_abi_CHOST $1);

        export PKG_CONFIG_LIBDIR=${EPREFIX}/usr/$(get_libdir)/pkgconfig;

        export PKG_CONFIG_PATH=${EPREFIX}/usr/share/pkgconfig;

    fi

}

number_abis () 

{ 

    set -- `get_install_abis`;

    echo $#

}

pkg_nofetch () 

{ 

    default

}

python_abi_depend () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite"

}

python_byte-compile_modules () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite"

}

python_clean_byte-compiled_modules () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite"

}

python_clean_installation_image () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite"

}

python_clean_py-compile_files () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite"

}

python_convert_shebangs () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#python_convert_shebangs"

}

python_copy_sources () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    local MULTIBUILD_VARIANTS;

    _python_obtain_impls;

    multibuild_copy_sources

}

python_disable_pyc () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite"

}

python_doexe () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    local f;

    for f in "$@";

    do

        python_newexe "${f}" "${f##*/}";

    done

}

python_doheader () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    [[ -n ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).';

    if [[ ${EAPI:-0} == [0123] ]]; then

        die "python_do* and python_new* helpers are banned in EAPIs older than 4.";

    fi;

    local d PYTHON_INCLUDEDIR=${PYTHON_INCLUDEDIR};

    [[ -n ${PYTHON_INCLUDEDIR} ]] || python_export PYTHON_INCLUDEDIR;

    d=${PYTHON_INCLUDEDIR#${EPREFIX}};

    ( insopts -m 0644;

    insinto "${d}";

    doins -r "${@}" || return ${?} )

}

python_domodule () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    [[ -n ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).';

    if [[ ${EAPI:-0} == [0123] ]]; then

        die "python_do* and python_new* helpers are banned in EAPIs older than 4.";

    fi;

    local d;

    if [[ ${python_moduleroot} == /* ]]; then

        d=${python_moduleroot};

    else

        local PYTHON_SITEDIR=${PYTHON_SITEDIR};

        [[ -n ${PYTHON_SITEDIR} ]] || python_export PYTHON_SITEDIR;

        d=${PYTHON_SITEDIR#${EPREFIX}}/${python_moduleroot//.//};

    fi;

    ( insopts -m 0644;

    insinto "${d}";

    doins -r "${@}" || return ${?} );

    python_optimize "${ED%/}/${d}"

}

python_doscript () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    local _PYTHON_REWRITE_SHEBANG=1;

    python_doexe "${@}"

}

python_enable_pyc () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite"

}

python_execute_function () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#python_execute_function"

}

python_execute_nosetests () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite"

}

python_execute_py.test () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite"

}

python_execute_trial () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite"

}

python_export () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    local impl var;

    case "${1}" in 

        python* | jython*)

            impl=${1/_/.};

            shift

        ;;

        pypy | pypy3)

            impl=${1};

            shift

        ;;

        *)

            impl=${EPYTHON};

            if [[ -z ${impl} ]]; then

                die "python_export called without a python implementation and EPYTHON is unset";

            fi

        ;;

    esac;

    debug-print "${FUNCNAME}: implementation: ${impl}";

    for var in "$@";

    do

        case "${var}" in 

            EPYTHON)

                export EPYTHON=${impl};

                debug-print "${FUNCNAME}: EPYTHON = ${EPYTHON}"

            ;;

            PYTHON)

                export PYTHON=${EPREFIX}/usr/bin/${impl};

                debug-print "${FUNCNAME}: PYTHON = ${PYTHON}"

            ;;

            PYTHON_SITEDIR)

                [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it";

                PYTHON_SITEDIR=$("${PYTHON}" -c 'import distutils.sysconfig; print(distutils.sysconfig.get_python_lib())') || die;

                export PYTHON_SITEDIR;

                debug-print "${FUNCNAME}: PYTHON_SITEDIR = ${PYTHON_SITEDIR}"

            ;;

            PYTHON_INCLUDEDIR)

                [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it";

                PYTHON_INCLUDEDIR=$("${PYTHON}" -c 'import distutils.sysconfig; print(distutils.sysconfig.get_python_inc())') || die;

                export PYTHON_INCLUDEDIR;

                debug-print "${FUNCNAME}: PYTHON_INCLUDEDIR = ${PYTHON_INCLUDEDIR}";

                if [[ ! -d ${PYTHON_INCLUDEDIR} ]]; then

                    die "${impl} does not install any header files!";

                fi

            ;;

            PYTHON_LIBPATH)

                [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it";

                PYTHON_LIBPATH=$("${PYTHON}" -c 'import os.path, sysconfig; print(os.path.join(sysconfig.get_config_var("LIBDIR"), sysconfig.get_config_var("LDLIBRARY")) if sysconfig.get_config_var("LDLIBRARY") else "")') || die;

                export PYTHON_LIBPATH;

                debug-print "${FUNCNAME}: PYTHON_LIBPATH = ${PYTHON_LIBPATH}";

                if [[ ! -n ${PYTHON_LIBPATH} ]]; then

                    die "${impl} lacks a (usable) dynamic library";

                fi

            ;;

            PYTHON_CFLAGS)

                local val;

                case "${impl}" in 

                    python*)

                        val=$($(tc-getPKG_CONFIG) --cflags ${impl/n/n-}) || die

                    ;;

                    *)

                        die "${impl}: obtaining ${var} not supported"

                    ;;

                esac;

                export PYTHON_CFLAGS=${val};

                debug-print "${FUNCNAME}: PYTHON_CFLAGS = ${PYTHON_CFLAGS}"

            ;;

            PYTHON_LIBS)

                local val;

                case "${impl}" in 

                    python*)

                        val=$($(tc-getPKG_CONFIG) --libs ${impl/n/n-}) || die

                    ;;

                    *)

                        die "${impl}: obtaining ${var} not supported"

                    ;;

                esac;

                export PYTHON_LIBS=${val};

                debug-print "${FUNCNAME}: PYTHON_LIBS = ${PYTHON_LIBS}"

            ;;

            PYTHON_CONFIG)

                local flags val;

                case "${impl}" in 

                    python*)

                        [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it";

                        flags=$("${PYTHON}" -c 'import sysconfig; print(sysconfig.get_config_var("ABIFLAGS") or "")') || die;

                        val=${PYTHON}${flags}-config

                    ;;

                    *)

                        die "${impl}: obtaining ${var} not supported"

                    ;;

                esac;

                export PYTHON_CONFIG=${val};

                debug-print "${FUNCNAME}: PYTHON_CONFIG = ${PYTHON_CONFIG}"

            ;;

            PYTHON_PKG_DEP)

                local d;

                case ${impl} in 

                    python2.7)

                        PYTHON_PKG_DEP='>=dev-lang/python-2.7.5-r2:2.7'

                    ;;

                    python3.3)

                        PYTHON_PKG_DEP='>=dev-lang/python-3.3.2-r2:3.3'

                    ;;

                    python*)

                        PYTHON_PKG_DEP="dev-lang/python:${impl#python}"

                    ;;

                    pypy)

                        PYTHON_PKG_DEP='>=virtual/pypy-5:0='

                    ;;

                    pypy3)

                        PYTHON_PKG_DEP='>=virtual/pypy3-5:0='

                    ;;

                    jython2.7)

                        PYTHON_PKG_DEP='dev-java/jython:2.7'

                    ;;

                    *)

                        die "Invalid implementation: ${impl}"

                    ;;

                esac;

                if [[ -n ${PYTHON_REQ_USE} ]]; then

                    PYTHON_PKG_DEP+=[${PYTHON_REQ_USE}];

                fi;

                export PYTHON_PKG_DEP;

                debug-print "${FUNCNAME}: PYTHON_PKG_DEP = ${PYTHON_PKG_DEP}"

            ;;

            PYTHON_SCRIPTDIR)

                local dir;

                export PYTHON_SCRIPTDIR=${EPREFIX}/usr/lib/python-exec/${impl};

                debug-print "${FUNCNAME}: PYTHON_SCRIPTDIR = ${PYTHON_SCRIPTDIR}"

            ;;

            *)

                die "python_export: unknown variable ${var}"

            ;;

        esac;

    done

}

python_export_best () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    [[ ${EAPI} == [45] ]] || die "${FUNCNAME} is banned in EAPI ${EAPI}";

    eqawarn "python_export_best() is deprecated. Please use python_setup instead,";

    eqawarn "combined with python_export if necessary.";

    [[ ${#} -gt 0 ]] || set -- EPYTHON PYTHON;

    local best MULTIBUILD_VARIANTS;

    _python_obtain_impls;

    function _python_set_best () 

    { 

        best=${MULTIBUILD_VARIANT}

    };

    multibuild_for_best_variant _python_set_best;

    unset -f _python_set_best;

    debug-print "${FUNCNAME}: Best implementation is: ${best}";

    python_export "${best}" "${@}";

    python_wrapper_setup

}

python_export_utf8_locale () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    type locale > /dev/null || return 0;

    if [[ $(locale charmap) != UTF-8 ]]; then

        local lang locales="C.UTF-8 en_US.UTF-8 en_GB.UTF-8 $(locale -a)";

        for lang in ${locales};

        do

            if [[ $(LC_ALL=${lang} locale charmap 2>/dev/null) == UTF-8 ]]; then

                if _python_check_locale_sanity "${lang}"; then

                    export LC_CTYPE=${lang};

                    if [[ -n ${LC_ALL} ]]; then

                        export LC_NUMERIC=${LC_ALL};

                        export LC_TIME=${LC_ALL};

                        export LC_COLLATE=${LC_ALL};

                        export LC_MONETARY=${LC_ALL};

                        export LC_MESSAGES=${LC_ALL};

                        export LC_PAPER=${LC_ALL};

                        export LC_NAME=${LC_ALL};

                        export LC_ADDRESS=${LC_ALL};

                        export LC_TELEPHONE=${LC_ALL};

                        export LC_MEASUREMENT=${LC_ALL};

                        export LC_IDENTIFICATION=${LC_ALL};

                        export LC_ALL=;

                    fi;

                    return 0;

                fi;

            fi;

        done;

        ewarn "Could not find a UTF-8 locale. This may trigger build failures in";

        ewarn "some python packages. Please ensure that a UTF-8 locale is listed in";

        ewarn "/etc/locale.gen and run locale-gen.";

        return 1;

    fi;

    return 0

}

```

----------

## Eleazar Anzola

```
python_fix_shebang () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    [[ -n ${EPYTHON} ]] || die "${FUNCNAME}: EPYTHON unset (pkg_setup not called?)";

    local force quiet;

    while [[ -n ${@} ]]; do

        case "${1}" in 

            -f | --force)

                force=1;

                shift

            ;;

            -q | --quiet)

                quiet=1;

                shift

            ;;

            --)

                shift;

                break

            ;;

            *)

                break

            ;;

        esac;

    done;

    [[ -n ${1} ]] || die "${FUNCNAME}: no paths given";

    local path f;

    for path in "$@";

    do

        local any_correct any_fixed is_recursive;

        [[ -d ${path} ]] && is_recursive=1;

        while IFS= read -r -d '' f; do

            local shebang i;

            local error= from=;

            IFS= read -r shebang < "${f}";

            if [[ ${shebang} == '#!'* ]]; then

                local split_shebang=();

                read -r -a split_shebang <<< ${shebang} || die;

                for i in "${split_shebang[@]}";

                do

                    case "${i}" in 

                        *"${EPYTHON}")

                            debug-print "${FUNCNAME}: in file ${f#${D%/}}";

                            debug-print "${FUNCNAME}: shebang matches EPYTHON: ${shebang}";

                            any_correct=1;

                            from=${EPYTHON};

                            break

                        ;;

                        *python | *python[23])

                            debug-print "${FUNCNAME}: in file ${f#${D%/}}";

                            debug-print "${FUNCNAME}: rewriting shebang: ${shebang}";

                            if [[ ${i} == *python2 ]]; then

                                from=python2;

                                if [[ ! -n ${force} ]]; then

                                    python_is_python3 "${EPYTHON}" && error=1;

                                fi;

                            else

                                if [[ ${i} == *python3 ]]; then

                                    from=python3;

                                    if [[ ! -n ${force} ]]; then

                                        python_is_python3 "${EPYTHON}" || error=1;

                                    fi;

                                else

                                    from=python;

                                fi;

                            fi;

                            break

                        ;;

                        *python[23].[0123456789] | *pypy | *pypy3 | *jython[23].[0123456789])

                            if [[ ! -n ${force} ]]; then

                                error=1;

                            else

                                case "${i}" in 

                                    *python[23].[0123456789])

                                        from="python[23].[0123456789]"

                                    ;;

                                    *pypy)

                                        from="pypy"

                                    ;;

                                    *pypy3)

                                        from="pypy3"

                                    ;;

                                    *jython[23].[0123456789])

                                        from="jython[23].[0123456789]"

                                    ;;

                                    *)

                                        die "${FUNCNAME}: internal error in 2nd pattern match"

                                    ;;

                                esac;

                            fi;

                            break

                        ;;

                    esac;

                done;

            fi;

            if [[ ! -n ${error} && ! -n ${from} ]]; then

                [[ -n ${is_recursive} ]] && continue;

                error=1;

            fi;

            if [[ ! -n ${quiet} ]]; then

                einfo "Fixing shebang in ${f#${D%/}}.";

            fi;

            if [[ ! -n ${error} ]]; then

                if [[ ${shebang} == *${from}" "* ]]; then

                    sed -i -e "1s:${from} :${EPYTHON} :" "${f}" || die;

                else

                    sed -i -e "1s:${from}$:${EPYTHON}:" "${f}" || die;

                fi;

                any_fixed=1;

            else

                eerror "The file has incompatible shebang:";

                eerror "  file: ${f#${D%/}}";

                eerror "  current shebang: ${shebang}";

                eerror "  requested impl: ${EPYTHON}";

                die "${FUNCNAME}: conversion of incompatible shebang requested";

            fi;

        done < <(find -H "${path}" -type f -print0 || die);

        if [[ ! -n ${any_fixed} ]]; then

            local cmd=eerror;

            [[ ${EAPI:-0} == [012345] ]] && cmd=eqawarn;

            "${cmd}" "QA warning: ${FUNCNAME}, ${path#${D%/}} did not match any fixable files.";

            if [[ -n ${any_correct} ]]; then

                "${cmd}" "All files have ${EPYTHON} shebang already.";

            else

                "${cmd}" "There are no Python files in specified directory.";

            fi;

            [[ ${cmd} == eerror ]] && die "${FUNCNAME} did not match any fixable files (QA warning fatal in EAPI ${EAPI})";

        fi;

    done

}

python_foreach_impl () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    local MULTIBUILD_VARIANTS;

    _python_obtain_impls;

    multibuild_foreach_variant _python_multibuild_wrapper "${@}"

}

python_gen_any_dep () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    local depstr=${1};

    [[ -n ${depstr} ]] || die "No dependency string provided";

    shift;

    local i PYTHON_PKG_DEP out=;

    for i in "${_PYTHON_SUPPORTED_IMPLS[@]}";

    do

        if _python_impl_matches "${i}" "${@-*}"; then

            local PYTHON_USEDEP="python_targets_${i}(-),python_single_target_${i}(+)";

            python_export "${i}" PYTHON_PKG_DEP;

            local i_depstr=${depstr//\$\{PYTHON_USEDEP\}/${PYTHON_USEDEP}};

            out="( ${PYTHON_PKG_DEP%=} ${i_depstr} ) ${out}";

        fi;

    done;

    echo "|| ( ${out})"

}

python_gen_cond_dep () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    local impl matches=();

    local dep=${1};

    shift;

    for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}";

    do

        if _python_impl_matches "${impl}" "${@}"; then

            if [[ ${dep} == *'${PYTHON_USEDEP}'* ]]; then

                local usedep=$(python_gen_usedep "${@}");

                dep=${dep//\$\{PYTHON_USEDEP\}/${usedep}};

            fi;

            matches+=("python_targets_${impl}? ( ${dep} )");

        fi;

    done;

    echo "${matches[@]}"

}

python_gen_impl_dep () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    local impl matches=();

    local PYTHON_REQ_USE=${1};

    shift;

    local patterns=("${@-*}");

    for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}";

    do

        if _python_impl_matches "${impl}" "${patterns[@]}"; then

            local PYTHON_PKG_DEP;

            python_export "${impl}" PYTHON_PKG_DEP;

            matches+=("python_targets_${impl}? ( ${PYTHON_PKG_DEP} )");

        fi;

    done;

    echo "${matches[@]}"

}

python_gen_usedep () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    local impl matches=();

    for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}";

    do

        if _python_impl_matches "${impl}" "${@}"; then

            matches+=("python_targets_${impl}(-)?" "-python_single_target_${impl}(-)");

        fi;

    done;

    [[ -n ${matches[@]} ]] || die "No supported implementations match python_gen_usedep patterns: ${@}";

    local out=${matches[@]};

    echo "${out// /,}"

}

python_gen_useflags () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    local impl matches=();

    for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}";

    do

        if _python_impl_matches "${impl}" "${@}"; then

            matches+=("python_targets_${impl}");

        fi;

    done;

    echo "${matches[@]}"

}

python_generate_cffi_modules () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite"

}

python_generate_wrapper_scripts () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite"

}

python_get_CFLAGS () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    python_export "${@}" PYTHON_CFLAGS;

    echo "${PYTHON_CFLAGS}"

}

python_get_LIBS () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    python_export "${@}" PYTHON_LIBS;

    echo "${PYTHON_LIBS}"

}

python_get_PYTHON_CONFIG () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    python_export "${@}" PYTHON_CONFIG;

    echo "${PYTHON_CONFIG}"

}

python_get_extension_module_suffix () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite"

}

python_get_implementation () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite"

}

python_get_implementation_and_version () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite"

}

python_get_implementational_package () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite"

}

python_get_includedir () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    python_export "${@}" PYTHON_INCLUDEDIR;

    echo "${PYTHON_INCLUDEDIR}"

}

python_get_libdir () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite"

}

python_get_library () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite"

}

python_get_library_path () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    python_export "${@}" PYTHON_LIBPATH;

    echo "${PYTHON_LIBPATH}"

}

python_get_scriptdir () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    python_export "${@}" PYTHON_SCRIPTDIR;

    echo "${PYTHON_SCRIPTDIR}"

}

python_get_sitedir () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    python_export "${@}" PYTHON_SITEDIR;

    echo "${PYTHON_SITEDIR}"

}

python_get_version () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite"

}

python_install () 

{ 

    export DISTRIBUTE_DISABLE_VERSIONED_EASY_INSTALL_SCRIPT=1;

    distutils-r1_python_install

}

python_install_executables () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite"

}

python_is_installed () 

{ 

    local impl=${1:-${EPYTHON}};

    [[ -n ${impl} ]] || die "${FUNCNAME}: no impl nor EPYTHON";

    local hasv_args=();

    case ${EAPI:-0} in 

        0 | 1 | 2 | 3 | 4)

            local -x ROOT=/

        ;;

        5 | 6)

            hasv_args+=(--host-root)

        ;;

        *)

            hasv_args+=(-b)

        ;;

    esac;

    case "${impl}" in 

        pypy | pypy3)

            local append=;

            if [[ -n ${PYTHON_REQ_USE} ]]; then

                append=[${PYTHON_REQ_USE}];

            fi;

            has_version "${hasv_args[@]}" "dev-python/${impl}${append}" || has_version "${hasv_args[@]}" "dev-python/${impl}-bin${append}"

        ;;

        *)

            local PYTHON_PKG_DEP;

            python_export "${impl}" PYTHON_PKG_DEP;

            has_version "${hasv_args[@]}" "${PYTHON_PKG_DEP}"

        ;;

    esac

}

python_is_python3 () 

{ 

    local impl=${1:-${EPYTHON}};

    [[ -n ${impl} ]] || die "python_is_python3: no impl nor EPYTHON";

    [[ ${impl} == python3* || ${impl} == pypy3 ]]

}

python_merge_intermediate_installation_images () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite"

}

python_mod_cleanup () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#Python_byte-code_compilation"

}

python_mod_optimize () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#Python_byte-code_compilation"

}

python_moduleinto () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    python_moduleroot=${1}

}

python_need_rebuild () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite"

}

python_newexe () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    [[ -n ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).';

    [[ ${#} -eq 2 ]] || die "Usage: ${FUNCNAME} <path> <new-name>";

    if [[ ${EAPI:-0} == [0123] ]]; then

        die "python_do* and python_new* helpers are banned in EAPIs older than 4.";

    fi;

    local wrapd=${python_scriptroot:-/usr/bin};

    local f=${1};

    local newfn=${2};

    local PYTHON_SCRIPTDIR d;

    python_export PYTHON_SCRIPTDIR;

    d=${PYTHON_SCRIPTDIR#${EPREFIX}};

    ( dodir "${wrapd}";

    exeopts -m 0755;

    exeinto "${d}";

    newexe "${f}" "${newfn}" || return ${?} );

    _python_ln_rel "${ED%/}"/usr/lib/python-exec/python-exec2 "${ED%/}/${wrapd}/${newfn}" || die;

    if [[ -n ${_PYTHON_REWRITE_SHEBANG} ]]; then

        python_fix_shebang -q "${ED%/}/${d}/${newfn}";

    fi

}

python_newscript () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    local _PYTHON_REWRITE_SHEBANG=1;

    python_newexe "${@}"

}

python_optimize () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    if [[ ${EBUILD_PHASE} == pre* || ${EBUILD_PHASE} == post* ]]; then

        eerror "The new Python eclasses expect the compiled Python files to";

        eerror "be controlled by the Package Manager. For this reason,";

        eerror "the python_optimize function can be used only during src_* phases";

        eerror "(src_install most commonly) and not during pkg_* phases.";

        echo;

        die "python_optimize is not to be used in pre/post* phases";

    fi;

    [[ -n ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).';

    local PYTHON=${PYTHON};

    [[ -n ${PYTHON} ]] || python_export PYTHON;

    if [[ ${#} -eq 0 ]]; then

        local f;

        while IFS= read -r -d '' f; do

            if [[ ${f} == /* && -d ${D%/}${f} ]]; then

                set -- "${D%/}${f}" "${@}";

            fi;

        done < <("${PYTHON}" -c 'import sys; print("\0".join(sys.path))' || die);

        debug-print "${FUNCNAME}: using sys.path: ${*/%/;}";

    fi;

    local d;

    for d in "$@";

    do

        local instpath=${d#${D%/}};

        instpath=/${instpath##/};

        case "${EPYTHON}" in 

            python2.7 | python3.[34])

                "${PYTHON}" -m compileall -q -f -d "${instpath}" "${d}";

                "${PYTHON}" -OO -m compileall -q -f -d "${instpath}" "${d}"

            ;;

            python* | pypy3)

                "${PYTHON}" -m compileall -q -f -d "${instpath}" "${d}";

                "${PYTHON}" -O -m compileall -q -f -d "${instpath}" "${d}";

                "${PYTHON}" -OO -m compileall -q -f -d "${instpath}" "${d}"

            ;;

            *)

                "${PYTHON}" -m compileall -q -f -d "${instpath}" "${d}"

            ;;

        esac;

    done

}

python_pkg_setup () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#pkg_setup"

}

python_prepare_all () 

{ 

    if [[ ${PV} == "9999" ]]; then

        python_setup;

        ${EPYTHON} bootstrap.py || die;

    fi;

    rm setuptools/tests/test_packageindex.py || die;

    rm setuptools/tests/test_integration.py || die;

    distutils-r1_python_prepare_all

}

python_replicate_script () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    function _python_replicate_script () 

    { 

        local _PYTHON_FIX_SHEBANG_QUIET=1;

        local PYTHON_SCRIPTDIR;

        python_export PYTHON_SCRIPTDIR;

        ( exeopts -m 0755;

        exeinto "${PYTHON_SCRIPTDIR#${EPREFIX}}";

        doexe "${files[@]}" );

        python_fix_shebang -q "${files[@]/*\//${D%/}/${PYTHON_SCRIPTDIR}/}"

    };

    local files=("${@}");

    python_foreach_impl _python_replicate_script;

    unset -f _python_replicate_script;

    local f;

    for f in "$@";

    do

        _python_ln_rel "${ED%/}/usr/lib/python-exec/python-exec2" "${f}" || die;

    done

}

python_scriptinto () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    python_scriptroot=${1}

}

python_set_active_version () 

{ 

    die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#pkg_setup"

}

python_setup () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    _python_validate_useflags;

    local pycompat=("${PYTHON_COMPAT[@]}");

    if [[ -n ${PYTHON_COMPAT_OVERRIDE} ]]; then

        pycompat=(${PYTHON_COMPAT_OVERRIDE});

    fi;

    local has_check_deps;

    declare -f python_check_deps > /dev/null && has_check_deps=1;

    local found;

    for ((i = ${#_PYTHON_SUPPORTED_IMPLS[@]} - 1; i >= 0; i-- ))

    do

        local impl=${_PYTHON_SUPPORTED_IMPLS[i]};

        has "${impl}" "${pycompat[@]}" || continue;

        if [[ ! -n ${PYTHON_COMPAT_OVERRIDE} && ! -n ${has_check_deps} ]]; then

            use "python_targets_${impl}" || continue;

        fi;

        _python_impl_matches "${impl}" "${@-*}" || continue;

        python_export "${impl}" EPYTHON PYTHON;

        if [[ -n ${has_check_deps} ]]; then

            python_is_installed "${impl}" || continue;

            local PYTHON_USEDEP="python_targets_${impl}(-),python_single_target_${impl}(+)";

            python_check_deps || continue;

        fi;

        found=1;

        break;

    done;

    if [[ ! -n ${found} ]]; then

        eerror "${FUNCNAME}: none of the enabled implementation matched the patterns.";

        eerror "  patterns: ${@-'(*)'}";

        eerror "Likely a REQUIRED_USE constraint (possibly USE-conditional) is missing.";

        eerror "  suggested: || ( \$(python_gen_useflags ${@}) )";

        eerror "(remember to quote all the patterns with '')";

        die "${FUNCNAME}: no enabled implementation satisfy requirements";

    fi;

    python_wrapper_setup

}

python_test () 

{ 

    HOME="${PWD}" pytest -vv ${PN} || die "Tests failed under ${EPYTHON}"

}

python_wrapper_setup () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    local workdir=${1:-${T}/${EPYTHON}};

    local impl=${2:-${EPYTHON}};

    [[ -n ${workdir} ]] || die "${FUNCNAME}: no workdir specified.";

    [[ -n ${impl} ]] || die "${FUNCNAME}: no impl nor EPYTHON specified.";

    if [[ ! -x ${workdir}/bin/python ]]; then

        _python_check_dead_variables;

        mkdir -p "${workdir}"/{bin,pkgconfig} || die;

        rm -f "${workdir}"/bin/python{,2,3}{,-config} || die;

        rm -f "${workdir}"/bin/2to3 || die;

        rm -f "${workdir}"/pkgconfig/python{,2,3}.pc || die;

        local EPYTHON PYTHON;

        python_export "${impl}" EPYTHON PYTHON;

        local pyver pyother;

        if python_is_python3; then

            pyver=3;

            pyother=2;

        else

            pyver=2;

            pyother=3;

        fi;

        cat > "${workdir}/bin/python" <<-_EOF_ || 

#!/bin/sh

exec "${PYTHON}" "\${@}"

_EOF_

 die

        cp "${workdir}/bin/python" "${workdir}/bin/python${pyver}" || die;

        chmod +x "${workdir}/bin/python" "${workdir}/bin/python${pyver}" || die;

        local nonsupp=("python${pyother}" "python${pyother}-config");

        if [[ ${EPYTHON} == python* ]]; then

            cat > "${workdir}/bin/python-config" <<-_EOF_ || 

#!/bin/sh

exec "${PYTHON}-config" "\${@}"

_EOF_

 die

            cp "${workdir}/bin/python-config" "${workdir}/bin/python${pyver}-config" || die;

            chmod +x "${workdir}/bin/python-config" "${workdir}/bin/python${pyver}-config" || die;

            ln -s "${PYTHON/python/2to3-}" "${workdir}"/bin/2to3 || die;

            ln -s "${EPREFIX}"/usr/$(get_libdir)/pkgconfig/${EPYTHON/n/n-}.pc "${workdir}"/pkgconfig/python.pc || die;

            ln -s python.pc "${workdir}"/pkgconfig/python${pyver}.pc || die;

        else

            nonsupp+=(2to3 python-config "python${pyver}-config");

        fi;

        local x;

        for x in "${nonsupp[@]}";

        do

            cat > "${workdir}"/bin/${x} <<-_EOF_ || 

#!/bin/sh

echo "${ECLASS}: ${FUNCNAME}: ${x} is not supported by ${EPYTHON} (PYTHON_COMPAT)" >&2

exit 127

_EOF_

 die

            chmod +x "${workdir}"/bin/${x} || die;

        done;

    fi;

    if [[ ${PATH##:*} != ${workdir}/bin ]]; then

        PATH=${workdir}/bin${PATH:+:${PATH}};

    fi;

    if [[ ${PKG_CONFIG_PATH##:*} != ${workdir}/pkgconfig ]]; then

        PKG_CONFIG_PATH=${workdir}/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}};

    fi;

    export PATH PKG_CONFIG_PATH

}

run_in_build_dir () 

{ 

    debug-print-function ${FUNCNAME} "${@}";

    local ret;

    [[ ${#} -ne 0 ]] || die "${FUNCNAME}: no command specified.";

    [[ -n ${BUILD_DIR} ]] || die "${FUNCNAME}: BUILD_DIR not set.";

    mkdir -p "${BUILD_DIR}" || die;

    pushd "${BUILD_DIR}" > /dev/null || die;

    "${@}";

    ret=${?};

    popd > /dev/null || die;

    return ${ret}

}

src_compile () 

{ 

    distutils-r1_src_compile "$@"

}

src_configure () 

{ 

    distutils-r1_src_configure "$@"

}

src_install () 

{ 

    distutils-r1_src_install "$@"

}

src_prepare () 

{ 

    distutils-r1_src_prepare "$@"

}

src_test () 

{ 

    distutils-r1_src_test "$@"

}

src_unpack () 

{ 

    default

}

tc-arch () 

{ 

    tc-ninja_magic_to_arch portage "$@"

}

tc-arch-kernel () 

{ 

    tc-ninja_magic_to_arch kern "$@"

}

tc-check-openmp () 

{ 

    if ! tc-has-openmp; then

        eerror "Your current compiler does not support OpenMP!";

        if tc-is-gcc; then

            eerror "Enable OpenMP support by building sys-devel/gcc with USE=\"openmp\".";

        else

            if tc-is-clang; then

                eerror "OpenMP support in sys-devel/clang is provided by sys-libs/libomp.";

            fi;

        fi;

        die "Active compiler does not have required support for OpenMP";

    fi

}

tc-cpp-is-true () 

{ 

    local CONDITION=${1};

    shift;

    local RESULT=$($(tc-getTARGET_CPP) "${@}" -P - <<-EOF 2>/dev/null

         #if ${CONDITION}

         true

         #endif

      EOF

   );

    [[ ${RESULT} == true ]]

}

tc-detect-is-softfloat () 

{ 

    [[ $(tc-getTARGET_CPP) == "gcc -E" ]] && return 1;

    case ${CTARGET:-${CHOST}} in 

        *-newlib | *-elf | *-eabi)

            return 1

        ;;

        arm*)

            if tc-cpp-is-true "defined(__ARM_PCS_VFP)"; then

                echo "no";

            else

                if tc-cpp-is-true "defined(__SOFTFP__)"; then

                    echo "yes";

                else

                    echo "softfp";

                fi;

            fi;

            return 0

        ;;

        *)

            return 1

        ;;

    esac

}

tc-enables-pie () 

{ 

    tc-cpp-is-true "defined(__PIE__)" ${CPPFLAGS} ${CFLAGS}

}

tc-enables-ssp () 

{ 

    tc-cpp-is-true "defined(__SSP__) || defined(__SSP_STRONG__) || defined(__SSP_ALL__)" ${CPPFLAGS} ${CFLAGS}

}

tc-enables-ssp-all () 

{ 

    tc-cpp-is-true "defined(__SSP_ALL__)" ${CPPFLAGS} ${CFLAGS}

}

tc-enables-ssp-strong () 

{ 

    tc-cpp-is-true "defined(__SSP_STRONG__) || defined(__SSP_ALL__)" ${CPPFLAGS} ${CFLAGS}

}

tc-endian () 

{ 

    local host=$1;

    [[ -z ${host} ]] && host=${CTARGET:-${CHOST}};

    host=${host%%-*};

    case ${host} in 

        aarch64*be)

            echo big

        ;;

        aarch64)

            echo little

        ;;

        alpha*)

            echo little

        ;;

        arm*b*)

            echo big

        ;;

        arm*)

            echo little

        ;;

        cris*)

            echo little

        ;;

        hppa*)

            echo big

        ;;

        i?86*)

            echo little

        ;;

        ia64*)

            echo little

        ;;

        m68*)

            echo big

        ;;

        mips*l*)

            echo little

        ;;

        mips*)

            echo big

        ;;

        powerpc*le)

            echo little

        ;;

        powerpc*)

            echo big

        ;;

        riscv*)

            echo little

        ;;

        s390*)

            echo big

        ;;

        sh*b*)

            echo big

        ;;

        sh*)

            echo little

        ;;

        sparc*)

            echo big

        ;;

        x86_64*)

            echo little

        ;;

        *)

            echo wtf

        ;;

    esac

}

tc-env_build () 

{ 

    tc-export_build_env;

    CFLAGS=${BUILD_CFLAGS} CXXFLAGS=${BUILD_CXXFLAGS} CPPFLAGS=${BUILD_CPPFLAGS} LDFLAGS=${BUILD_LDFLAGS} AR=$(tc-getBUILD_AR) AS=$(tc-getBUILD_AS) CC=$(tc-getBUILD_CC) CPP=$(tc-getBUILD_CPP) CXX=$(tc-getBUILD_CXX) LD=$(tc-getBUILD_LD) NM=$(tc-getBUILD_NM) PKG_CONFIG=$(tc-getBUILD_PKG_CONFIG) RANLIB=$(tc-getBUILD_RANLIB) "$@"

}

tc-export () 

{ 

    local var;

    for var in "$@";

    do

        [[ $(type -t "tc-get${var}") != "function" ]] && die "tc-export: invalid export variable '${var}'";

        "tc-get${var}" > /dev/null;

    done

}

tc-export_build_env () 

{ 

    tc-export "$@";

    if tc-is-cross-compiler; then

        : ${BUILD_CFLAGS:=-O1 -pipe};

        : ${BUILD_CXXFLAGS:=-O1 -pipe};

        : ${BUILD_CPPFLAGS:= };

        : ${BUILD_LDFLAGS:= };

    else

        : ${BUILD_CFLAGS:=${CFLAGS}};

        : ${BUILD_CXXFLAGS:=${CXXFLAGS}};

        : ${BUILD_CPPFLAGS:=${CPPFLAGS}};

        : ${BUILD_LDFLAGS:=${LDFLAGS}};

    fi;

    export BUILD_{C,CXX,CPP,LD}FLAGS;

    local v;

    for v in BUILD_{C,CXX,CPP,LD}FLAGS;

    do

        export ${v#BUILD_}_FOR_BUILD="${!v}";

    done

}

tc-get-compiler-type () 

{ 

    local code='

#if defined(__PATHSCALE__)

   HAVE_PATHCC

#elif defined(__clang__)

   HAVE_CLANG

#elif defined(__GNUC__)

   HAVE_GCC

#endif

';

    local res=$($(tc-getCPP "$@") -E -P - <<<"${code}");

    case ${res} in 

        *HAVE_PATHCC*)

            echo pathcc

        ;;

        *HAVE_CLANG*)

            echo clang

        ;;

        *HAVE_GCC*)

            echo gcc

        ;;

        *)

            echo unknown

        ;;

    esac

}

tc-getAR () 

{ 

    tc-getPROG AR ar "$@"

}

tc-getAS () 

{ 

    tc-getPROG AS as "$@"

}

tc-getBUILD_AR () 

{ 

    tc-getBUILD_PROG AR ar "$@"

}

tc-getBUILD_AS () 

{ 

    tc-getBUILD_PROG AS as "$@"

}

tc-getBUILD_CC () 

{ 

    tc-getBUILD_PROG CC gcc "$@"

}

tc-getBUILD_CPP () 

{ 

    tc-getBUILD_PROG CPP "$(tc-getBUILD_CC) -E" "$@"

}

tc-getBUILD_CXX () 

{ 

    tc-getBUILD_PROG CXX g++ "$@"

}

tc-getBUILD_LD () 

{ 

    tc-getBUILD_PROG LD ld "$@"

}

tc-getBUILD_NM () 

{ 

    tc-getBUILD_PROG NM nm "$@"

}

tc-getBUILD_OBJCOPY () 

{ 

    tc-getBUILD_PROG OBJCOPY objcopy "$@"

}

tc-getBUILD_PKG_CONFIG () 

{ 

    tc-getBUILD_PROG PKG_CONFIG pkg-config "$@"

}

tc-getBUILD_PROG () 

{ 

    local vars="BUILD_$1 $1_FOR_BUILD HOST$1";

    tc-is-cross-compiler || vars+=" $1";

    _tc-getPROG CBUILD "${vars}" "${@:2}"

}

tc-getBUILD_RANLIB () 

{ 

    tc-getBUILD_PROG RANLIB ranlib "$@"

}

tc-getBUILD_STRIP () 

{ 

    tc-getBUILD_PROG STRIP strip "$@"

}

tc-getCC () 

{ 

    tc-getPROG CC gcc "$@"

}

tc-getCPP () 

{ 

    tc-getPROG CPP "${CC:-gcc} -E" "$@"

}

tc-getCXX () 

{ 

    tc-getPROG CXX g++ "$@"

}

tc-getDLLWRAP () 

{ 

    tc-getPROG DLLWRAP dllwrap "$@"

}

tc-getF77 () 

{ 

    tc-getPROG F77 gfortran "$@"

}

tc-getFC () 

{ 

    tc-getPROG FC gfortran "$@"

}

tc-getGCJ () 

{ 

    tc-getPROG GCJ gcj "$@"

}

tc-getGO () 

{ 

    tc-getPROG GO gccgo "$@"

}

tc-getLD () 

{ 

    tc-getPROG LD ld "$@"

}

tc-getNM () 

{ 

    tc-getPROG NM nm "$@"

}

tc-getOBJCOPY () 

{ 

    tc-getPROG OBJCOPY objcopy "$@"

}

tc-getOBJDUMP () 

{ 

    tc-getPROG OBJDUMP objdump "$@"

}

tc-getPKG_CONFIG () 

{ 

    tc-getPROG PKG_CONFIG pkg-config "$@"

}

tc-getPROG () 

{ 

    _tc-getPROG CHOST "$@"

}

tc-getRANLIB () 

{ 

    tc-getPROG RANLIB ranlib "$@"

}

tc-getRC () 

{ 

    tc-getPROG RC windres "$@"

}

tc-getSTRIP () 

{ 

    tc-getPROG STRIP strip "$@"

}

tc-getTARGET_CPP () 

{ 

    if [[ -n ${CTARGET} ]]; then

        _tc-getPROG CTARGET TARGET_CPP "gcc -E" "$@";

    else

        tc-getCPP "$@";

    fi

}

tc-has-openmp () 

{ 

    local base="${T}/test-tc-openmp";

    cat <<-EOF > "${base}.c"

#include <omp.h>

int main() {

int nthreads, tid, ret = 0;

#pragma omp parallel private(nthreads, tid)

{

tid = omp_get_thread_num();

nthreads = omp_get_num_threads(); ret += tid + nthreads;

}

return ret;

}

EOF

    $(tc-getCC "$@") -fopenmp "${base}.c" -o "${base}" &> /dev/null;

    local ret=$?;

    rm -f "${base}"*;

    return ${ret}

}

tc-has-tls () 

{ 

    local base="${T}/test-tc-tls";

    cat <<-EOF > "${base}.c"

int foo(int *i) {

static __thread int j = 0;

return *i ? j : *i;

}

EOF

    local flags;

    case $1 in 

        -s)

            flags="-S"

        ;;

        -c)

            flags="-c"

        ;;

        -l)

        ;;

        -*)

            die "Usage: tc-has-tls [-c|-l] [toolchain prefix]"

        ;;

    esac;

    : ${flags:=-fPIC -shared -Wl,-z,defs};

    [[ $1 == -* ]] && shift;

    $(tc-getCC "$@") ${flags} "${base}.c" -o "${base}" &> /dev/null;

    local ret=$?;

    rm -f "${base}"*;

    return ${ret}

}

tc-is-clang () 

{ 

    [[ $(tc-get-compiler-type) == clang ]]

}

tc-is-cross-compiler () 

{ 

    [[ ${CBUILD:-${CHOST}} != ${CHOST} ]]

}

tc-is-gcc () 

{ 

    [[ $(tc-get-compiler-type) == gcc ]]

}

tc-is-softfloat () 

{ 

    tc-detect-is-softfloat || tc-tuple-is-softfloat

}

tc-is-static-only () 

{ 

    local host=${CTARGET:-${CHOST}};

    [[ ${host} == *-mint* ]]

}

tc-ld-disable-gold () 

{ 

    if ! tc-ld-is-gold "$@"; then

        return;

    fi;

    ewarn "Forcing usage of the BFD linker instead of GOLD";

    local ld=$(tc-getLD "$@");

    local bfd_ld="${ld%% *}.bfd";

    local path_ld=$(which "${bfd_ld}" 2>/dev/null);

    [[ -e ${path_ld} ]] && export LD=${bfd_ld};

    local fallback="true";

    if tc-is-gcc; then

        local major=$(gcc-major-version "$@");

        local minor=$(gcc-minor-version "$@");

        if [[ ${major} -gt 4 ]] || [[ ${major} -eq 4 && ${minor} -ge 8 ]]; then

            export LDFLAGS="${LDFLAGS} -fuse-ld=bfd";

            fallback="false";

        fi;

    else

        if tc-is-clang; then

            local major=$(clang-major-version "$@");

            local minor=$(clang-minor-version "$@");

            if [[ ${major} -gt 3 ]] || [[ ${major} -eq 3 && ${minor} -ge 5 ]]; then

                export LDFLAGS="${LDFLAGS} -fuse-ld=bfd";

                fallback="false";

            fi;

        fi;

    fi;

    if [[ ${fallback} == "true" ]]; then

        if [[ -e ${path_ld} ]]; then

            local d="${T}/bfd-linker";

            mkdir -p "${d}";

            ln -sf "${path_ld}" "${d}"/ld;

            export LDFLAGS="${LDFLAGS} -B${d}";

        else

            die "unable to locate a BFD linker to bypass gold";

        fi;

    fi

}

tc-ld-is-gold () 

{ 

    local out;

    out=$($(tc-getLD "$@") --version 2>&1);

    if [[ ${out} == *"GNU gold"* ]]; then

        return 0;

    fi;

    local base="${T}/test-tc-gold";

    cat <<-EOF > "${base}.c"

int main() { return 0; }

EOF

    out=$($(tc-getCC "$@") ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} -Wl,--version "${base}.c" -o "${base}" 2>&1);

    rm -f "${base}"*;

    if [[ ${out} == *"GNU gold"* ]]; then

        return 0;

    fi;

    return 1

}

tc-ninja_magic_to_arch () 

{ 

    function ninj () 

    { 

        [[ ${type} == "kern" ]] && echo $1 || echo $2

    };

    local type=$1;

    local host=$2;

    [[ -z ${host} ]] && host=${CTARGET:-${CHOST}};

    case ${host} in 

        aarch64*)

            echo arm64

        ;;

        alpha*)

            echo alpha

        ;;

        arm*)

            echo arm

        ;;

        avr*)

            ninj avr32 avr

        ;;

        bfin*)

            ninj blackfin bfin

        ;;

        c6x*)

            echo c6x

        ;;

        cris*)

            echo cris

        ;;

        frv*)

            echo frv

        ;;

        hexagon*)

            echo hexagon

        ;;

        hppa*)

            ninj parisc hppa

        ;;

        i?86*)

            if [[ ${type} == "kern" && ${host} == *freebsd* ]]; then

                echo i386;

            else

                echo x86;

            fi

        ;;

        ia64*)

            echo ia64

        ;;

        m68*)

            echo m68k

        ;;

        metag*)

            echo metag

        ;;

        microblaze*)

            echo microblaze

        ;;

        mips*)

            echo mips

        ;;

        nios2*)

            echo nios2

        ;;

        nios*)

            echo nios

        ;;

        or1k | or32*)

            echo openrisc

        ;;

        powerpc*)

            if [[ ${type} == "kern" ]]; then

                echo powerpc;

            else

                if [[ ${host} == powerpc64* ]]; then

                    echo ppc64;

                else

                    echo ppc;

                fi;

            fi

        ;;

        riscv*)

            echo riscv

        ;;

        s390*)

            echo s390

        ;;

        score*)

            echo score

        ;;

        sh64*)

            ninj sh64 sh

        ;;

        sh*)

            echo sh

        ;;

        sparc64*)

            ninj sparc64 sparc

        ;;

        sparc*)

            [[ ${PROFILE_ARCH} == "sparc64" ]] && ninj sparc64 sparc || echo sparc

        ;;

        tile*)

            echo tile

        ;;

        vax*)

            echo vax

        ;;

        x86_64*freebsd*)

            echo amd64

        ;;

        x86_64*)

            if [[ ${type} == "kern" ]]; then

                echo x86;

            else

                echo amd64;

            fi

        ;;

        xtensa*)

            echo xtensa

        ;;

        *)

            echo unknown

        ;;

    esac

}

tc-stack-grows-down () 

{ 

    case ${ARCH} in 

        hppa | metag)

            return 1

        ;;

    esac;

    return 0

}

tc-tuple-is-softfloat () 

{ 

    local CTARGET=${CTARGET:-${CHOST}};

    case ${CTARGET//_/-} in 

        bfin* | h8300*)

            echo "only"

        ;;

        *-softfloat-*)

            echo "yes"

        ;;

        *-softfp-*)

            echo "softfp"

        ;;

        arm*-hardfloat-* | arm*eabihf)

            echo "no"

        ;;

        *-newlib | *-elf | *-eabi)

            echo "no"

        ;;

        arm*)

            echo "yes"

        ;;

        *)

            echo "no"

        ;;

    esac

}

ver_cut () 

{ 

    local range=${1};

    local v=${2:-${PV}};

    local start end;

    local -a comp;

    __eapi7_ver_split "${v}";

    local max=$((${#comp[@]}/2));

    __eapi7_ver_parse_range "${range}" "${max}";

    local IFS=;

    if [[ ${start} -gt 0 ]]; then

        start=$(( start*2 - 1 ));

    fi;

    echo "${comp[*]:start:end*2-start}"

}

ver_rs () 

{ 

    local v;

    (( ${#} & 1 )) && v=${@: -1} || v=${PV};

    local start end i;

    local -a comp;

    __eapi7_ver_split "${v}";

    local max=$((${#comp[@]}/2 - 1));

    while [[ ${#} -ge 2 ]]; do

        __eapi7_ver_parse_range "${1}" "${max}";

        for ((i = start*2; i <= end*2; i+=2 ))

        do

            [[ ${i} -eq 0 && -z ${comp[i]} ]] && continue;

            comp[i]=${2};

        done;

        shift 2;

    done;

    local IFS=;

    echo "${comp[*]}"

}

ver_test () 

{ 

    local va op vb;

    if [[ $# -eq 3 ]]; then

        va=${1};

        shift;

    else

        va=${PVR};

    fi;

    [[ $# -eq 2 ]] || die "${FUNCNAME}: bad number of arguments";

    op=${1};

    vb=${2};

    case ${op} in 

        -eq | -ne | -lt | -le | -gt | -ge)

        ;;

        *)

            die "${FUNCNAME}: invalid operator: ${op}"

        ;;

    esac;

    __eapi7_ver_compare "${va}" "${vb}";

    test $? "${op}" 2

}

```

```

sudo emerge -pqv '=dev-python/setuptools-41.2.0::gentoo'

[ebuild  N    ] dev-python/setuptools-41.2.0  USE="-test" PYTHON_TARGETS="python2_7 python3_6 -pypy -pypy3 -python3_5 -python3_7"
```

----------

## Eleazar Anzola

He determinado después de mucho batallar y ver que una gran mayoría de paquetes y librerías están incompletas, que todos los fallos se deben a una mega corrupción de disco causada por múltiples caídas de electricidad en la zona, de las que no me había percatado por no estar presente cuando sucedieron y la maquina tiene por defecto volver a encender después de un corte.

No diré a que ni a quien se deben los cortes eléctricos para no herir susceptibilidades pero profundamente deseo que ................ a los responsables cada vez que respire un chino.

Doy por cerrado el tema, comienzo una instalación nueva y limpia de sistema.

Un Millón de Gracias al amigo quilosaq por sus aportes y valioso tiempo.

----------

