gentoo-haskell / gentoo-haskell

official gentoo haskell overlay
193 stars 137 forks source link

dev-lang/elm-compiler-0.19.0-r1 fails to build #1046

Closed Lucretia closed 4 years ago

Lucretia commented 4 years ago

emerge --info '=dev-lang/elm-compiler-0.19.0-r1::haskell':

Portage 2.3.94 (python 3.6.10-final-0, default/linux/amd64/17.0/desktop/plasma, gcc-9.3.0, glibc-2.30-r5, 5.6.0-rc5 x86_64)
=================================================================
                         System Settings
=================================================================
System uname: Linux-5.6.0-rc5-x86_64-AMD_FX-tm-8350_Eight-Core_Processor-with-gentoo-2.7
KiB Mem:    32787908 total,   3742476 free
KiB Swap:   67108860 total,  66803452 free
Head commit of repository gentoo: 47406ee9a9fbdc6e67c5e840a71eb5d771845541

Timestamp of repository poly-c: Sat, 21 Mar 2020 10:26:24 +0000
sh bash 5.0_p16
ld GNU ld (Gentoo 2.32 p2) 2.32.0
app-shells/bash:          5.0_p16::gentoo
dev-java/java-config:     2.2.0-r4::gentoo
dev-lang/perl:            5.30.1::gentoo
dev-lang/python:          2.7.17-r1::gentoo, 3.6.10::gentoo, 3.7.7::gentoo, 3.8.2::gentoo, 3.9.0_alpha4::gentoo
dev-util/cmake:           3.14.6::gentoo
dev-util/pkgconfig:       0.29.2::gentoo
sys-apps/baselayout:      2.7::poly-c
sys-apps/openrc:          0.42.1::gentoo
sys-apps/sandbox:         2.18::gentoo
sys-devel/autoconf:       2.13-r1::gentoo, 2.69-r5::gentoo
sys-devel/automake:       1.13.4-r2::gentoo, 1.15.1-r2::gentoo, 1.16.1-r2::gentoo
sys-devel/binutils:       2.30-r3::gentoo, 2.31.1-r4::gentoo, 2.32-r1::gentoo, 2.33.1::gentoo, 2.34::gentoo
sys-devel/gcc:            7.3.0-r3::gentoo, 8.2.0-r6::gentoo, 8.3.0-r1::gentoo, 9.1.0-r1::gentoo, 9.2.0-r4::gentoo, 9.3.0::gentoo
sys-devel/gcc-config:     2.2.1::gentoo
sys-devel/libtool:        2.4.6-r6::gentoo
sys-devel/make:           4.3::gentoo
sys-kernel/linux-headers: 5.5::gentoo (virtual/os-headers)
sys-libs/glibc:           2.30-r5::gentoo
Repositories:

gentoo
    location: /usr/portage
    sync-type: git
    sync-uri: https://github.com/gentoo/gentoo.git
    priority: -1000

ai
    location: /home/laguest/src/gentoo-overlays/ai
    masters: gentoo
    priority: 20

amd
    location: /home/laguest/src/gentoo-overlays/amd
    masters: gentoo
    priority: 20

fp
    location: /home/laguest/src/gentoo-overlays/fp
    masters: gentoo
    priority: 20

rocm
    location: /home/laguest/src/gentoo-overlays/rocm
    masters: gentoo
    priority: 20

lucretia
    location: /home/laguest/src/gentoo-overlays/lucretia
    masters: gentoo
    priority: 30

audio-overlay
    location: /var/lib/layman/audio-overlay
    sync-type: laymansync
    sync-uri: https://github.com/gentoo-audio/audio-overlay.git
    masters: gentoo
    priority: 50

bloody
    location: /var/lib/layman/bloody
    sync-type: laymansync
    sync-uri: https://github.com/bloodywing/bloody.git
    masters: gentoo
    priority: 50

dlang
    location: /var/lib/layman/dlang
    sync-type: laymansync
    sync-uri: https://github.com/gentoo/dlang.git
    masters: gentoo
    priority: 50

dotnet
    location: /var/lib/layman/dotnet
    sync-type: laymansync
    sync-uri: https://github.com/gentoo/dotnet.git
    masters: gentoo
    priority: 50

go-overlay
    location: /var/lib/layman/go-overlay
    sync-type: laymansync
    sync-uri: https://github.com/Dr-Terrible/go-overlay.git
    masters: gentoo
    priority: 50

haskell
    location: /var/lib/layman/haskell
    sync-type: laymansync
    sync-uri: https://github.com/gentoo-haskell/gentoo-haskell.git
    masters: gentoo
    priority: 50

java
    location: /var/lib/layman/java
    sync-type: laymansync
    sync-uri: https://anongit.gentoo.org/git/proj/java.git
    masters: gentoo
    priority: 50

kde
    location: /var/lib/layman/kde
    sync-type: laymansync
    sync-uri: https://anongit.gentoo.org/git/proj/kde.git
    masters: gentoo
    priority: 50

lisp
    location: /var/lib/layman/lisp
    sync-type: laymansync
    sync-uri: https://anongit.gentoo.org/git/proj/lisp.git
    masters: gentoo
    priority: 50

poly-c
    location: /var/lib/layman/poly-c
    sync-type: laymansync
    sync-uri: rsync://rsync.gentoofan.org/poly-c
    masters: gentoo
    priority: 50

qt
    location: /var/lib/layman/qt
    sync-type: laymansync
    sync-uri: https://anongit.gentoo.org/git/proj/qt.git
    masters: gentoo
    priority: 50

steam-overlay
    location: /var/lib/layman/steam-overlay
    sync-type: laymansync
    sync-uri: https://github.com/anyc/steam-overlay.git
    masters: gentoo
    priority: 50

4nykey
    location: /var/lib/layman/4nykey
    sync-type: laymansync
    sync-uri: https://github.com/4nykey/4nykey.git
    masters: gentoo
    priority: 60

graphics-tablet
    location: /home/laguest/src/gentoo-overlays/graphics-tablet
    masters: gentoo
    priority: 70

promedia
    location: /home/laguest/src/gentoo-overlays/promedia
    masters: gentoo
    priority: 70

Installed sets: @llvm, @mesa
ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="* -@EULA"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=native -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/lib64/libreoffice/program/sofficerc /usr/share/config /usr/share/gnupg/qualified.txt /usr/share/maven-bin-3.6/conf"
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 /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-march=native -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="-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 qa-unresolved-soname-deps sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="ftp://mirror.bytemark.co.uk/gentoo/ http://mirror.bytemark.co.uk/gentoo/ rsync://mirror.bytemark.co.uk/gentoo/ http://mirrors.evowise.com/gentoo/ http://www.mirrorservice.org/sites/distfiles.gentoo.org/ ftp://ftp.mirrorservice.org/sites/distfiles.gentoo.org/ rsync://rsync.mirrorservice.org/distfiles.gentoo.org/"
LANG="en_GB.utf8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
LINGUAS="en"
MAKEOPTS="-j5"
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 aacs acl acpi activities ada alsa amd64 amr amrenc berkdb bluetooth bluray branding brightness-control browser-integration bzip2 cairo cdda cdio cdr celt cli collada color-management colorio cpudetection crypt cups dbus declarative display-manager dri dssi dts dvd dvdr elogind emboss encode exif fdk ffmpeg fftw flac fontconfig fortran frei0r gdbm gif gpm grub gstreamer gtk gtk2 iconv icu imagemagick ipv6 jack jack-session jpeg kde kipi kvazaar kwallet ladspa lash lcms ldap libilbc libnotify librtmp libsamplerate libsoxr libtirpc libv4l llvm lm_sensors lv2 mad matroska mng modplug mp3 mp4 mpeg mtp multilib musepack ncurses networkmanager nls nptl ocr ogg omxil opencl opencv openexr opengl openh264 openimageio openmp opus osc pam pango pcre pdf phonon plasma png policykit ppds pulseaudio qalculate qml qt5 readline rtaudio rubberband s3tc sasl scanner schroedinger sdk sdl seccomp semantic-desktop spell split-usr ssdm ssl startup-notification svg tcpd theora tiff truetype udev udisks unicode upower usb v4l vaapi vc vdpau vorbis vpx vst vulkan wallpapers wavpack wayland webp widgets wxwidgets x264 x265 xattr xcb xcomposite xml xv xvid zlib" ABI_X86="64 32" ADA_TARGET="gnat_2018" 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="aes avx fma3 f16c fma4 mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 xop" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="evdev keyboard libinput mouse wacom" KERNEL="linux" L10N="en-GB" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LLVM_TARGETS="AMDGPU ARM AVR MSP430 Mips WebAssembly" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php7-2" POSTGRES_TARGETS="postgres10 postgres11" PYTHON_SINGLE_TARGET="python3_7" PYTHON_TARGETS="python3_6 python3_7 python3_8" RUBY_TARGETS="ruby26" SANE_BACKENDS="snapscan" USERLAND="GNU" VIDEO_CARDS="amdgpu radeon radeonsi virgl" 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, LC_ALL, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS

emerge -pqv '=dev-lang/elm-compiler-0.19.0-r1::haskell':

[ebuild  N    ] dev-lang/elm-compiler-0.19.0-r1  USE="-dev -doc -hscolour -profile" 

build.log:

 * Package:    dev-lang/elm-compiler-0.19.0-r1
 * Repository: haskell
 * Maintainer: haskell@gentoo.org
 * USE:        abi_x86_64 amd64 elibc_glibc kernel_linux userland_GNU
 * FEATURES:   network-sandbox preserve-libs sandbox userpriv usersandbox
>>> Unpacking source...
>>> Unpacking elm-compiler-0.19.0.tar.gz to /var/tmp/portage/dev-lang/elm-compiler-0.19.0-r1/work
>>> Source unpacked in /var/tmp/portage/dev-lang/elm-compiler-0.19.0-r1/work
>>> Preparing source in /var/tmp/portage/dev-lang/elm-compiler-0.19.0-r1/work/compiler-0.19.0 ...
 * CHDEP: 'language-glsl >= 0.0.2 && < 0.3' -> 'language-glsl >= 0.0.2'
 * CHDEP: 'containers >= 0.5.8.2 && < 0.6' -> 'containers >= 0.5.8.2'
>>> Source prepared.
>>> Configuring source in /var/tmp/portage/dev-lang/elm-compiler-0.19.0-r1/work/compiler-0.19.0 ...
 * No Setup.lhs or Setup.hs found. Either add Setup.hs to package or call cabal-mksetup from ebuild
 * Creating 'Setup.hs' for 'Simple' build type.
 * Using cabal-2.4.0.1.
 * Prepending /usr/lib64/ghc-8.6.5 to LD_LIBRARY_PATH
/usr/bin/ghc -package Cabal-2.4.0.1 --make /var/tmp/portage/dev-lang/elm-compiler-0.19.0-r1/work/compiler-0.19.0/Setup.hs -j5 +RTS -A256M -qb0 -RTS -threaded -dynamic -o setup
[1 of 1] Compiling Main             ( /var/tmp/portage/dev-lang/elm-compiler-0.19.0-r1/work/compiler-0.19.0/Setup.hs, /var/tmp/portage/dev-lang/elm-compiler-0.19.0-r1/work/compiler-0.19.0/Setup.o )
Linking setup ...
./setup configure --ghc --prefix=/usr --with-compiler=/usr/bin/ghc --with-hc-pkg=/usr/bin/ghc-pkg --prefix=/usr --libdir=/usr/lib64 --libsubdir=elm-compiler-0.19.0/ghc-8.6.5 --datadir=/usr/share/ --datasubdir=elm-compiler-0.19.0/ghc-8.6.5 --ghc-options=-j5 +RTS -A256M -qb0 -RTS --with-ar=x86_64-pc-linux-gnu-ar --ghc-option=-optc-march=native --ghc-option=-optc-O2 --ghc-option=-optc-pipe --ghc-option=-optl-Wl,-O1 --ghc-option=-optl-Wl,--as-needed --disable-executable-stripping --docdir=/usr/share/doc/elm-compiler-0.19.0-r1 --verbose --enable-shared --enable-executable-dynamic --sysconfdir=/etc --disable-library-stripping --flags=-dev
Using Parsec parser
Configuring elm-0.19.0...
Flags chosen: dev=False
Dependency HTTP >=4000.2.5 && <4000.4: using HTTP-4000.3.14
Dependency SHA -any: using SHA-1.6.4.4
Dependency ansi-terminal ==0.8.*: using ansi-terminal-0.8.2
Dependency ansi-wl-pprint >=0.6.8 && <0.7: using ansi-wl-pprint-0.6.8.2
Dependency base >=4.8 && <5: using base-4.12.0.0
Dependency binary ==0.8.*: using binary-0.8.6.0
Dependency bytestring >=0.9 && <0.11: using bytestring-0.10.8.2
Dependency containers >=0.5.8.2: using containers-0.6.0.1
Dependency directory >=1.2.3.0 && <2.0: using directory-1.3.3.0
Dependency edit-distance ==0.2.*: using edit-distance-0.2.2.1
Dependency file-embed -any: using file-embed-0.0.11.2
Dependency filepath >=1 && <2.0: using filepath-1.4.2.1
Dependency ghc-prim -any: using ghc-prim-0.5.3
Dependency haskeline -any: using haskeline-0.7.4.3
Dependency http-client ==0.5.*: using http-client-0.5.14
Dependency http-client-tls ==0.3.*: using http-client-tls-0.3.5.3
Dependency http-types >=0.9 && <1.0: using http-types-0.12.3
Dependency language-glsl >=0.0.2: using language-glsl-0.2.1
Dependency logict -any: using logict-0.7.0.2
Dependency mtl >=2.2.1 && <3: using mtl-2.2.2
Dependency network >=2.4 && <2.7: using network-2.6.3.6
Dependency parsec -any: using parsec-3.1.13.0
Dependency process -any: using process-1.6.5.0
Dependency raw-strings-qq -any: using raw-strings-qq-1.1
Dependency scientific -any: using scientific-0.3.6.2
Dependency snap-core -any: using snap-core-1.0.4.1
Dependency snap-server -any: using snap-server-1.1.1.1
Dependency template-haskell -any: using template-haskell-2.14.0.0
Dependency text ==1.*: using text-1.2.3.1
Dependency time -any: using time-1.8.0.2
Dependency unordered-containers -any: using unordered-containers-0.2.10.0
Dependency utf8-string -any: using utf8-string-1.0.1.1
Dependency vector -any: using vector-0.12.1.2
Dependency zip-archive -any: using zip-archive-0.3.3
Source component graph: component exe:elm
Configured component graph:
    component elm-0.19.0-5n6MD49M8DG6eUFlstjDSW-elm
        include HTTP-4000.3.14-8ukvUOl6b4k7WvlM0chkCK
        include SHA-1.6.4.4-Cq0AuI9wk9S6uBKmYsGEbc
        include ansi-terminal-0.8.2-LbawE0xYmiu2QkRGz1IZXL
        include ansi-wl-pprint-0.6.8.2-1XkQt2TkKXp58Z2fWGaSDQ
        include base-4.12.0.0
        include binary-0.8.6.0
        include bytestring-0.10.8.2
        include containers-0.6.0.1
        include directory-1.3.3.0
        include edit-distance-0.2.2.1-4bW3W2hnyAoDkdg1hZrDEh
        include file-embed-0.0.11.2-3jOmZboyLwT9kkrPWOtBO7
        include filepath-1.4.2.1
        include ghc-prim-0.5.3
        include haskeline-0.7.4.3
        include http-client-0.5.14-8kHp4LtYgeu6yxsKyuikbR
        include http-client-tls-0.3.5.3-6l8xlYHplvs5zQDRXY7req
        include http-types-0.12.3-1LfeDTITcX253PnMM7zNzr
        include language-glsl-0.2.1-I8dTsX6v8gnI5recU9Bx1R
        include logict-0.7.0.2-BZmYqWjl84nB8IYAe6sthB
        include mtl-2.2.2
        include network-2.6.3.6-4mVMJJofAhjBUCFQLnDqdS
        include parsec-3.1.13.0
        include process-1.6.5.0
        include raw-strings-qq-1.1-A5UuyZx9JzP9PhxgXRLyUT
        include scientific-0.3.6.2-4kEeUeIFPjLKfLj9DkazhB
        include snap-core-1.0.4.1-JiyAkYzuC8u1gLlDtK7jGK
        include snap-server-1.1.1.1-72AycBxnlK2AOzxG66U0LV
        include template-haskell-2.14.0.0
        include text-1.2.3.1
        include time-1.8.0.2
        include unordered-containers-0.2.10.0-HH8qA6LvkSrCPo464k44Md
        include utf8-string-1.0.1.1-Geq8jdOv4Q3LkcQoEOWDVv
        include vector-0.12.1.2-53ZStWTkIih2KWMAErdIai
        include zip-archive-0.3.3-Aw6tgHSn9XH9atZQKF5vsR
Linked component graph:
    unit elm-0.19.0-5n6MD49M8DG6eUFlstjDSW-elm
        include HTTP-4000.3.14-8ukvUOl6b4k7WvlM0chkCK
        include SHA-1.6.4.4-Cq0AuI9wk9S6uBKmYsGEbc
        include ansi-terminal-0.8.2-LbawE0xYmiu2QkRGz1IZXL
        include ansi-wl-pprint-0.6.8.2-1XkQt2TkKXp58Z2fWGaSDQ
        include base-4.12.0.0
        include binary-0.8.6.0
        include bytestring-0.10.8.2
        include containers-0.6.0.1
        include directory-1.3.3.0
        include edit-distance-0.2.2.1-4bW3W2hnyAoDkdg1hZrDEh
        include file-embed-0.0.11.2-3jOmZboyLwT9kkrPWOtBO7
        include filepath-1.4.2.1
        include ghc-prim-0.5.3
        include haskeline-0.7.4.3
        include http-client-0.5.14-8kHp4LtYgeu6yxsKyuikbR
        include http-client-tls-0.3.5.3-6l8xlYHplvs5zQDRXY7req
        include http-types-0.12.3-1LfeDTITcX253PnMM7zNzr
        include language-glsl-0.2.1-I8dTsX6v8gnI5recU9Bx1R
        include logict-0.7.0.2-BZmYqWjl84nB8IYAe6sthB
        include mtl-2.2.2
        include network-2.6.3.6-4mVMJJofAhjBUCFQLnDqdS
        include parsec-3.1.13.0
        include process-1.6.5.0
        include raw-strings-qq-1.1-A5UuyZx9JzP9PhxgXRLyUT
        include scientific-0.3.6.2-4kEeUeIFPjLKfLj9DkazhB
        include snap-core-1.0.4.1-JiyAkYzuC8u1gLlDtK7jGK
        include snap-server-1.1.1.1-72AycBxnlK2AOzxG66U0LV
        include template-haskell-2.14.0.0
        include text-1.2.3.1
        include time-1.8.0.2
        include unordered-containers-0.2.10.0-HH8qA6LvkSrCPo464k44Md
        include utf8-string-1.0.1.1-Geq8jdOv4Q3LkcQoEOWDVv
        include vector-0.12.1.2-53ZStWTkIih2KWMAErdIai
        include zip-archive-0.3.3-Aw6tgHSn9XH9atZQKF5vsR
Ready component graph:
    definite elm-0.19.0-5n6MD49M8DG6eUFlstjDSW-elm
        depends HTTP-4000.3.14-8ukvUOl6b4k7WvlM0chkCK
        depends SHA-1.6.4.4-Cq0AuI9wk9S6uBKmYsGEbc
        depends ansi-terminal-0.8.2-LbawE0xYmiu2QkRGz1IZXL
        depends ansi-wl-pprint-0.6.8.2-1XkQt2TkKXp58Z2fWGaSDQ
        depends base-4.12.0.0
        depends binary-0.8.6.0
        depends bytestring-0.10.8.2
        depends containers-0.6.0.1
        depends directory-1.3.3.0
        depends edit-distance-0.2.2.1-4bW3W2hnyAoDkdg1hZrDEh
        depends file-embed-0.0.11.2-3jOmZboyLwT9kkrPWOtBO7
        depends filepath-1.4.2.1
        depends ghc-prim-0.5.3
        depends haskeline-0.7.4.3
        depends http-client-0.5.14-8kHp4LtYgeu6yxsKyuikbR
        depends http-client-tls-0.3.5.3-6l8xlYHplvs5zQDRXY7req
        depends http-types-0.12.3-1LfeDTITcX253PnMM7zNzr
        depends language-glsl-0.2.1-I8dTsX6v8gnI5recU9Bx1R
        depends logict-0.7.0.2-BZmYqWjl84nB8IYAe6sthB
        depends mtl-2.2.2
        depends network-2.6.3.6-4mVMJJofAhjBUCFQLnDqdS
        depends parsec-3.1.13.0
        depends process-1.6.5.0
        depends raw-strings-qq-1.1-A5UuyZx9JzP9PhxgXRLyUT
        depends scientific-0.3.6.2-4kEeUeIFPjLKfLj9DkazhB
        depends snap-core-1.0.4.1-JiyAkYzuC8u1gLlDtK7jGK
        depends snap-server-1.1.1.1-72AycBxnlK2AOzxG66U0LV
        depends template-haskell-2.14.0.0
        depends text-1.2.3.1
        depends time-1.8.0.2
        depends unordered-containers-0.2.10.0-HH8qA6LvkSrCPo464k44Md
        depends utf8-string-1.0.1.1-Geq8jdOv4Q3LkcQoEOWDVv
        depends vector-0.12.1.2-53ZStWTkIih2KWMAErdIai
        depends zip-archive-0.3.3-Aw6tgHSn9XH9atZQKF5vsR
Using Cabal-2.4.0.1 compiled by ghc-8.6
Using compiler: ghc-8.6.5
Using install prefix: /usr
Executables installed in: /usr/bin
Libraries installed in: /usr/lib64/elm-compiler-0.19.0/ghc-8.6.5
Dynamic Libraries installed in: /usr/lib64/x86_64-linux-ghc-8.6.5
Private executables installed in:
/usr/libexec/x86_64-linux-ghc-8.6.5/elm-0.19.0
Data files installed in: /usr/share/elm-compiler-0.19.0/ghc-8.6.5
Documentation installed in: /usr/share/doc/elm-compiler-0.19.0-r1
Configuration files installed in: /etc
No alex found
Using ar given by user at: /usr/bin/x86_64-pc-linux-gnu-ar
No c2hs found
No cpphs found
No doctest found
Using gcc version 9.3.0 found on system at: /usr/bin/x86_64-pc-linux-gnu-gcc
Using ghc version 8.6.5 given by user at: /usr/bin/ghc
Using ghc-pkg version 8.6.5 given by user at: /usr/bin/ghc-pkg
No ghcjs found
No ghcjs-pkg found
No greencard found
Using haddock version 2.22.0 found on system at: /usr/bin/haddock-ghc-8.6.5
No happy found
Using haskell-suite found on system at: haskell-suite-dummy-location
Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location
No hmake found
Using hpc version 0.67 found on system at: /usr/bin/hpc
Using hsc2hs version 0.68.5 found on system at: /usr/bin/hsc2hs
No hscolour found
No jhc found
Using ld found on system at: /usr/bin/x86_64-pc-linux-gnu-ld
Using pkg-config version 0.29.2 found on system at: /usr/bin/pkg-config
Using runghc version 8.6.5 found on system at: /usr/bin/runghc
Using strip version 2.32 found on system at: /usr/bin/strip
Using tar found on system at: /bin/tar
No uhc found
>>> Source configured.
>>> Compiling source in /var/tmp/portage/dev-lang/elm-compiler-0.19.0-r1/work/compiler-0.19.0 ...
./setup build
Preprocessing executable 'elm' for elm-0.19.0..
Building executable 'elm' for elm-0.19.0..
[  1 of 167] Compiling AST.Utils.Binop  ( compiler/src/AST/Utils/Binop.hs, dist/build/elm/elm-tmp/AST/Utils/Binop.dyn_o )
[  2 of 167] Compiling Data.Bag         ( compiler/src/Data/Bag.hs, dist/build/elm/elm-tmp/Data/Bag.dyn_o )
[  3 of 167] Compiling Data.Index       ( compiler/src/Data/Index.hs, dist/build/elm/elm-tmp/Data/Index.dyn_o )
[  4 of 167] Compiling Data.OneOrMore   ( compiler/src/Data/OneOrMore.hs, dist/build/elm/elm-tmp/Data/OneOrMore.dyn_o )
[  5 of 167] Compiling Elm.Name         ( compiler/src/Elm/Name.hs, dist/build/elm/elm-tmp/Elm/Name.dyn_o )
[  6 of 167] Compiling AST.Utils.Shader ( compiler/src/AST/Utils/Shader.hs, dist/build/elm/elm-tmp/AST/Utils/Shader.dyn_o )
[  7 of 167] Compiling File.Hash        ( builder/src/File/Hash.hs, dist/build/elm/elm-tmp/File/Hash.dyn_o )
[  8 of 167] Compiling Generate.Functions ( builder/src/Generate/Functions.hs, dist/build/elm/elm-tmp/Generate/Functions.dyn_o )
[  9 of 167] Compiling Generate.Html    ( builder/src/Generate/Html.hs, dist/build/elm/elm-tmp/Generate/Html.dyn_o )
[ 10 of 167] Compiling Json.Encode      ( compiler/src/Json/Encode.hs, dist/build/elm/elm-tmp/Json/Encode.dyn_o )
[ 11 of 167] Compiling Json.Decode.Internals ( compiler/src/Json/Decode/Internals.hs, dist/build/elm/elm-tmp/Json/Decode/Internals.dyn_o )
[ 12 of 167] Compiling Elm.Package      ( compiler/src/Elm/Package.hs, dist/build/elm/elm-tmp/Elm/Package.dyn_o )
[ 13 of 167] Compiling AST.Module.Name  ( compiler/src/AST/Module/Name.hs, dist/build/elm/elm-tmp/AST/Module/Name.dyn_o )
[ 14 of 167] Compiling Generate.JavaScript.Name ( compiler/src/Generate/JavaScript/Name.hs, dist/build/elm/elm-tmp/Generate/JavaScript/Name.dyn_o )
[ 15 of 167] Compiling Generate.JavaScript.Builder ( compiler/src/Generate/JavaScript/Builder.hs, dist/build/elm/elm-tmp/Generate/JavaScript/Builder.dyn_o )
[ 16 of 167] Compiling Develop.Generate.Help ( ui/terminal/src/Develop/Generate/Help.hs, dist/build/elm/elm-tmp/Develop/Generate/Help.dyn_o )
[ 17 of 167] Compiling Paths_elm        ( dist/build/elm/autogen/Paths_elm.hs, dist/build/elm/elm-tmp/Paths_elm.dyn_o )
[ 18 of 167] Compiling Elm.Compiler.Version ( compiler/src/Elm/Compiler/Version.hs, dist/build/elm/elm-tmp/Elm/Compiler/Version.dyn_o )
[ 19 of 167] Compiling Reporting.Doc    ( compiler/src/Reporting/Doc.hs, dist/build/elm/elm-tmp/Reporting/Doc.dyn_o )
[ 20 of 167] Compiling Reporting.Progress.Bar ( builder/src/Reporting/Progress/Bar.hs, dist/build/elm/elm-tmp/Reporting/Progress/Bar.dyn_o )
[ 21 of 167] Compiling Reporting.Region ( compiler/src/Reporting/Region.hs, dist/build/elm/elm-tmp/Reporting/Region.dyn_o )
[ 22 of 167] Compiling Reporting.Annotation ( compiler/src/Reporting/Annotation.hs, dist/build/elm/elm-tmp/Reporting/Annotation.dyn_o )
[ 23 of 167] Compiling AST.Source       ( compiler/src/AST/Source.hs, dist/build/elm/elm-tmp/AST/Source.dyn_o )
[ 24 of 167] Compiling Elm.Compiler.Imports ( compiler/src/Elm/Compiler/Imports.hs, dist/build/elm/elm-tmp/Elm/Compiler/Imports.dyn_o )
[ 25 of 167] Compiling AST.Valid        ( compiler/src/AST/Valid.hs, dist/build/elm/elm-tmp/AST/Valid.dyn_o )
[ 26 of 167] Compiling AST.Canonical    ( compiler/src/AST/Canonical.hs, dist/build/elm/elm-tmp/AST/Canonical.dyn_o )
[ 27 of 167] Compiling Optimize.DecisionTree ( compiler/src/Optimize/DecisionTree.hs, dist/build/elm/elm-tmp/Optimize/DecisionTree.dyn_o )
[ 28 of 167] Compiling Nitpick.PatternMatches ( compiler/src/Nitpick/PatternMatches.hs, dist/build/elm/elm-tmp/Nitpick/PatternMatches.dyn_o )
[ 29 of 167] Compiling Elm.Interface    ( compiler/src/Elm/Interface.hs, dist/build/elm/elm-tmp/Elm/Interface.dyn_o )
[ 30 of 167] Compiling AST.Utils.Type   ( compiler/src/AST/Utils/Type.hs, dist/build/elm/elm-tmp/AST/Utils/Type.dyn_o )
[ 31 of 167] Compiling AST.Optimized    ( compiler/src/AST/Optimized.hs, dist/build/elm/elm-tmp/AST/Optimized.dyn_o )
[ 32 of 167] Compiling Optimize.Names   ( compiler/src/Optimize/Names.hs, dist/build/elm/elm-tmp/Optimize/Names.dyn_o )
[ 33 of 167] Compiling Optimize.Port    ( compiler/src/Optimize/Port.hs, dist/build/elm/elm-tmp/Optimize/Port.dyn_o )
[ 34 of 167] Compiling Optimize.Case    ( compiler/src/Optimize/Case.hs, dist/build/elm/elm-tmp/Optimize/Case.dyn_o )
[ 35 of 167] Compiling Optimize.Expression ( compiler/src/Optimize/Expression.hs, dist/build/elm/elm-tmp/Optimize/Expression.dyn_o )
[ 36 of 167] Compiling Generate.Nitpick ( builder/src/Generate/Nitpick.hs, dist/build/elm/elm-tmp/Generate/Nitpick.dyn_o )
[ 37 of 167] Compiling Generate.JavaScript.Mode ( compiler/src/Generate/JavaScript/Mode.hs, dist/build/elm/elm-tmp/Generate/JavaScript/Mode.dyn_o )
[ 38 of 167] Compiling Reporting.Render.Code ( compiler/src/Reporting/Render/Code.hs, dist/build/elm/elm-tmp/Reporting/Render/Code.dyn_o )
[ 39 of 167] Compiling Reporting.Render.Type.Localizer ( compiler/src/Reporting/Render/Type/Localizer.hs, dist/build/elm/elm-tmp/Reporting/Render/Type/Localizer.dyn_o )
[ 40 of 167] Compiling Reporting.Render.Type ( compiler/src/Reporting/Render/Type.hs, dist/build/elm/elm-tmp/Reporting/Render/Type.dyn_o )
[ 41 of 167] Compiling Reporting.Report ( compiler/src/Reporting/Report.hs, dist/build/elm/elm-tmp/Reporting/Report.dyn_o )
[ 42 of 167] Compiling Reporting.Error.Syntax ( compiler/src/Reporting/Error/Syntax.hs, dist/build/elm/elm-tmp/Reporting/Error/Syntax.dyn_o )
[ 43 of 167] Compiling Parse.Primitives.Internals ( compiler/src/Parse/Primitives/Internals.hs, dist/build/elm/elm-tmp/Parse/Primitives/Internals.dyn_o )
[ 44 of 167] Compiling Parse.Primitives.Variable ( compiler/src/Parse/Primitives/Variable.hs, dist/build/elm/elm-tmp/Parse/Primitives/Variable.dyn_o )
[ 45 of 167] Compiling Parse.Primitives.Symbol ( compiler/src/Parse/Primitives/Symbol.hs, dist/build/elm/elm-tmp/Parse/Primitives/Symbol.dyn_o )
[ 46 of 167] Compiling Parse.Primitives.Whitespace ( compiler/src/Parse/Primitives/Whitespace.hs, dist/build/elm/elm-tmp/Parse/Primitives/Whitespace.dyn_o )
[ 47 of 167] Compiling Parse.Primitives.Shader ( compiler/src/Parse/Primitives/Shader.hs, dist/build/elm/elm-tmp/Parse/Primitives/Shader.dyn_o )
[ 48 of 167] Compiling Parse.Primitives.Number ( compiler/src/Parse/Primitives/Number.hs, dist/build/elm/elm-tmp/Parse/Primitives/Number.dyn_o )
[ 49 of 167] Compiling Parse.Primitives.Utf8 ( compiler/src/Parse/Primitives/Utf8.hs, dist/build/elm/elm-tmp/Parse/Primitives/Utf8.dyn_o )
[ 50 of 167] Compiling Parse.Primitives.Keyword ( compiler/src/Parse/Primitives/Keyword.hs, dist/build/elm/elm-tmp/Parse/Primitives/Keyword.dyn_o )
[ 51 of 167] Compiling Parse.Primitives.Kernel ( compiler/src/Parse/Primitives/Kernel.hs, dist/build/elm/elm-tmp/Parse/Primitives/Kernel.dyn_o )
[ 52 of 167] Compiling Parse.Primitives ( compiler/src/Parse/Primitives.hs, dist/build/elm/elm-tmp/Parse/Primitives.dyn_o )
[ 53 of 167] Compiling Parse.Type       ( compiler/src/Parse/Type.hs, dist/build/elm/elm-tmp/Parse/Type.dyn_o )
[ 54 of 167] Compiling Parse.Shader     ( compiler/src/Parse/Shader.hs, dist/build/elm/elm-tmp/Parse/Shader.dyn_o )
[ 55 of 167] Compiling Parse.Pattern    ( compiler/src/Parse/Pattern.hs, dist/build/elm/elm-tmp/Parse/Pattern.dyn_o )
[ 56 of 167] Compiling Parse.Module     ( compiler/src/Parse/Module.hs, dist/build/elm/elm-tmp/Parse/Module.dyn_o )
[ 57 of 167] Compiling Parse.Repl       ( compiler/src/Parse/Repl.hs, dist/build/elm/elm-tmp/Parse/Repl.dyn_o )
[ 58 of 167] Compiling Parse.Expression ( compiler/src/Parse/Expression.hs, dist/build/elm/elm-tmp/Parse/Expression.dyn_o )
[ 59 of 167] Compiling Parse.Declaration ( compiler/src/Parse/Declaration.hs, dist/build/elm/elm-tmp/Parse/Declaration.dyn_o )
[ 60 of 167] Compiling Reporting.Error.Pattern ( compiler/src/Reporting/Error/Pattern.hs, dist/build/elm/elm-tmp/Reporting/Error/Pattern.dyn_o )
[ 61 of 167] Compiling Reporting.Error.Docs ( compiler/src/Reporting/Error/Docs.hs, dist/build/elm/elm-tmp/Reporting/Error/Docs.dyn_o )
[ 62 of 167] Compiling Json.Decode.Error ( compiler/src/Json/Decode/Error.hs, dist/build/elm/elm-tmp/Json/Decode/Error.dyn_o )
[ 63 of 167] Compiling Json.Decode      ( compiler/src/Json/Decode.hs, dist/build/elm/elm-tmp/Json/Decode.dyn_o )
[ 64 of 167] Compiling Elm.Compiler.Type ( compiler/src/Elm/Compiler/Type.hs, dist/build/elm/elm-tmp/Elm/Compiler/Type.dyn_o )
[ 65 of 167] Compiling Elm.Compiler.Type.Extract ( compiler/src/Elm/Compiler/Type/Extract.hs, dist/build/elm/elm-tmp/Elm/Compiler/Type/Extract.dyn_o )
[ 66 of 167] Compiling Generate.JavaScript.Expression ( compiler/src/Generate/JavaScript/Expression.hs, dist/build/elm/elm-tmp/Generate/JavaScript/Expression.dyn_o )
[ 67 of 167] Compiling Generate.JavaScript ( compiler/src/Generate/JavaScript.hs, dist/build/elm/elm-tmp/Generate/JavaScript.dyn_o )
[ 68 of 167] Compiling Elm.Compiler.Objects ( compiler/src/Elm/Compiler/Objects.hs, dist/build/elm/elm-tmp/Elm/Compiler/Objects.dyn_o )
[ 69 of 167] Compiling Elm.Compiler.Module ( compiler/src/Elm/Compiler/Module.hs, dist/build/elm/elm-tmp/Elm/Compiler/Module.dyn_o )
[ 70 of 167] Compiling Reporting.Suggest ( compiler/src/Reporting/Suggest.hs, dist/build/elm/elm-tmp/Reporting/Suggest.dyn_o )
[ 71 of 167] Compiling Reporting.Error.Canonicalize ( compiler/src/Reporting/Error/Canonicalize.hs, dist/build/elm/elm-tmp/Reporting/Error/Canonicalize.dyn_o )
[ 72 of 167] Compiling Reporting.Error.Main ( compiler/src/Reporting/Error/Main.hs, dist/build/elm/elm-tmp/Reporting/Error/Main.dyn_o )
[ 73 of 167] Compiling Elm.Project.Licenses ( builder/src/Elm/Project/Licenses.hs, dist/build/elm/elm-tmp/Elm/Project/Licenses.dyn_o )
[ 74 of 167] Compiling Reporting.Warning ( compiler/src/Reporting/Warning.hs, dist/build/elm/elm-tmp/Reporting/Warning.dyn_o )
[ 75 of 167] Compiling Reporting.Result ( compiler/src/Reporting/Result.hs, dist/build/elm/elm-tmp/Reporting/Result.dyn_o )
[ 76 of 167] Compiling Canonicalize.Environment.Dups ( compiler/src/Canonicalize/Environment/Dups.hs, dist/build/elm/elm-tmp/Canonicalize/Environment/Dups.dyn_o )
[ 77 of 167] Compiling Canonicalize.Environment ( compiler/src/Canonicalize/Environment.hs, dist/build/elm/elm-tmp/Canonicalize/Environment.dyn_o )
[ 78 of 167] Compiling Canonicalize.Type ( compiler/src/Canonicalize/Type.hs, dist/build/elm/elm-tmp/Canonicalize/Type.dyn_o )
[ 79 of 167] Compiling Canonicalize.Pattern ( compiler/src/Canonicalize/Pattern.hs, dist/build/elm/elm-tmp/Canonicalize/Pattern.dyn_o )
[ 80 of 167] Compiling Canonicalize.Environment.Local ( compiler/src/Canonicalize/Environment/Local.hs, dist/build/elm/elm-tmp/Canonicalize/Environment/Local.dyn_o )
[ 81 of 167] Compiling Canonicalize.Environment.Foreign ( compiler/src/Canonicalize/Environment/Foreign.hs, dist/build/elm/elm-tmp/Canonicalize/Environment/Foreign.dyn_o )
[ 82 of 167] Compiling Canonicalize.Effects ( compiler/src/Canonicalize/Effects.hs, dist/build/elm/elm-tmp/Canonicalize/Effects.dyn_o )
[ 83 of 167] Compiling Optimize.Module  ( compiler/src/Optimize/Module.hs, dist/build/elm/elm-tmp/Optimize/Module.dyn_o )
[ 84 of 167] Compiling Canonicalize.Expression ( compiler/src/Canonicalize/Expression.hs, dist/build/elm/elm-tmp/Canonicalize/Expression.dyn_o )
[ 85 of 167] Compiling Canonicalize.Module ( compiler/src/Canonicalize/Module.hs, dist/build/elm/elm-tmp/Canonicalize/Module.dyn_o )
[ 86 of 167] Compiling Terminal.Args.Internal ( ui/terminal/src/Terminal/Args/Internal.hs, dist/build/elm/elm-tmp/Terminal/Args/Internal.dyn_o )
[ 87 of 167] Compiling Terminal.Args.Error ( ui/terminal/src/Terminal/Args/Error.hs, dist/build/elm/elm-tmp/Terminal/Args/Error.dyn_o )
[ 88 of 167] Compiling Terminal.Args.Chomp ( ui/terminal/src/Terminal/Args/Chomp.hs, dist/build/elm/elm-tmp/Terminal/Args/Chomp.dyn_o )
[ 89 of 167] Compiling Type.Error       ( compiler/src/Type/Error.hs, dist/build/elm/elm-tmp/Type/Error.dyn_o )
[ 90 of 167] Compiling Reporting.Error.Type ( compiler/src/Reporting/Error/Type.hs, dist/build/elm/elm-tmp/Reporting/Error/Type.dyn_o )
[ 91 of 167] Compiling Reporting.Error  ( compiler/src/Reporting/Error.hs, dist/build/elm/elm-tmp/Reporting/Error.dyn_o )
[ 92 of 167] Compiling Elm.Kernel       ( compiler/src/Elm/Kernel.hs, dist/build/elm/elm-tmp/Elm/Kernel.dyn_o )
[ 93 of 167] Compiling Elm.Header       ( compiler/src/Elm/Header.hs, dist/build/elm/elm-tmp/Elm/Header.dyn_o )
[ 94 of 167] Compiling Elm.Docs         ( compiler/src/Elm/Docs.hs, dist/build/elm/elm-tmp/Elm/Docs.dyn_o )
[ 95 of 167] Compiling Deps.Diff        ( builder/src/Deps/Diff.hs, dist/build/elm/elm-tmp/Deps/Diff.dyn_o )
[ 96 of 167] Compiling Type.UnionFind   ( compiler/src/Type/UnionFind.hs, dist/build/elm/elm-tmp/Type/UnionFind.dyn_o )
[ 97 of 167] Compiling Type.Type        ( compiler/src/Type/Type.hs, dist/build/elm/elm-tmp/Type/Type.dyn_o )
[ 98 of 167] Compiling Type.Instantiate ( compiler/src/Type/Instantiate.hs, dist/build/elm/elm-tmp/Type/Instantiate.dyn_o )
[ 99 of 167] Compiling Type.Constrain.Pattern ( compiler/src/Type/Constrain/Pattern.hs, dist/build/elm/elm-tmp/Type/Constrain/Pattern.dyn_o )
[100 of 167] Compiling Type.Constrain.Expression ( compiler/src/Type/Constrain/Expression.hs, dist/build/elm/elm-tmp/Type/Constrain/Expression.dyn_o )
[101 of 167] Compiling Type.Constrain.Module ( compiler/src/Type/Constrain/Module.hs, dist/build/elm/elm-tmp/Type/Constrain/Module.dyn_o )
[102 of 167] Compiling Type.Occurs      ( compiler/src/Type/Occurs.hs, dist/build/elm/elm-tmp/Type/Occurs.dyn_o )
[103 of 167] Compiling Type.Unify       ( compiler/src/Type/Unify.hs, dist/build/elm/elm-tmp/Type/Unify.dyn_o )
[104 of 167] Compiling Type.Solve       ( compiler/src/Type/Solve.hs, dist/build/elm/elm-tmp/Type/Solve.dyn_o )
[105 of 167] Compiling Validate         ( compiler/src/Validate.hs, dist/build/elm/elm-tmp/Validate.dyn_o )
[106 of 167] Compiling Parse.Parse      ( compiler/src/Parse/Parse.hs, dist/build/elm/elm-tmp/Parse/Parse.dyn_o )
[107 of 167] Compiling Compile          ( compiler/src/Compile.hs, dist/build/elm/elm-tmp/Compile.dyn_o )
[108 of 167] Compiling Elm.Compiler     ( compiler/src/Elm/Compiler.hs, dist/build/elm/elm-tmp/Elm/Compiler.dyn_o )
[109 of 167] Compiling Terminal.Args    ( ui/terminal/src/Terminal/Args.hs, dist/build/elm/elm-tmp/Terminal/Args.dyn_o )
[110 of 167] Compiling Terminal.Args.Helpers ( ui/terminal/src/Terminal/Args/Helpers.hs, dist/build/elm/elm-tmp/Terminal/Args/Helpers.dyn_o )
[111 of 167] Compiling Reporting.Exit.Compile ( builder/src/Reporting/Exit/Compile.hs, dist/build/elm/elm-tmp/Reporting/Exit/Compile.dyn_o )
[112 of 167] Compiling Reporting.Exit.Help ( builder/src/Reporting/Exit/Help.hs, dist/build/elm/elm-tmp/Reporting/Exit/Help.dyn_o )
[113 of 167] Compiling Reporting.Exit.Publish ( builder/src/Reporting/Exit/Publish.hs, dist/build/elm/elm-tmp/Reporting/Exit/Publish.dyn_o )
[114 of 167] Compiling Reporting.Exit.Make ( builder/src/Reporting/Exit/Make.hs, dist/build/elm/elm-tmp/Reporting/Exit/Make.dyn_o )
[115 of 167] Compiling Reporting.Exit.Install ( builder/src/Reporting/Exit/Install.hs, dist/build/elm/elm-tmp/Reporting/Exit/Install.dyn_o )
[116 of 167] Compiling Reporting.Exit.Init ( builder/src/Reporting/Exit/Init.hs, dist/build/elm/elm-tmp/Reporting/Exit/Init.dyn_o )
[117 of 167] Compiling Reporting.Exit.Http ( builder/src/Reporting/Exit/Http.hs, dist/build/elm/elm-tmp/Reporting/Exit/Http.dyn_o )
[118 of 167] Compiling Reporting.Exit.Diff ( builder/src/Reporting/Exit/Diff.hs, dist/build/elm/elm-tmp/Reporting/Exit/Diff.dyn_o )
[119 of 167] Compiling Reporting.Exit.Bump ( builder/src/Reporting/Exit/Bump.hs, dist/build/elm/elm-tmp/Reporting/Exit/Bump.dyn_o )
[120 of 167] Compiling Reporting.Exit.Assets ( builder/src/Reporting/Exit/Assets.hs, dist/build/elm/elm-tmp/Reporting/Exit/Assets.dyn_o )
[121 of 167] Compiling Reporting.Exit.Crawl ( builder/src/Reporting/Exit/Crawl.hs, dist/build/elm/elm-tmp/Reporting/Exit/Crawl.dyn_o )
[122 of 167] Compiling Elm.Project.Constraint ( builder/src/Elm/Project/Constraint.hs, dist/build/elm/elm-tmp/Elm/Project/Constraint.dyn_o )
[123 of 167] Compiling Reporting.Exit.Deps ( builder/src/Reporting/Exit/Deps.hs, dist/build/elm/elm-tmp/Reporting/Exit/Deps.dyn_o )
[124 of 167] Compiling Reporting.Exit   ( builder/src/Reporting/Exit.hs, dist/build/elm/elm-tmp/Reporting/Exit.dyn_o )
[125 of 167] Compiling Reporting.Progress ( builder/src/Reporting/Progress.hs, dist/build/elm/elm-tmp/Reporting/Progress.dyn_o )
[126 of 167] Compiling Reporting.Progress.Terminal ( builder/src/Reporting/Progress/Terminal.hs, dist/build/elm/elm-tmp/Reporting/Progress/Terminal.dyn_o )
[127 of 167] Compiling Reporting.Progress.Repl ( builder/src/Reporting/Progress/Repl.hs, dist/build/elm/elm-tmp/Reporting/Progress/Repl.dyn_o )
[128 of 167] Compiling Reporting.Progress.Json ( builder/src/Reporting/Progress/Json.hs, dist/build/elm/elm-tmp/Reporting/Progress/Json.dyn_o )
[129 of 167] Compiling Elm.PerUserCache ( builder/src/Elm/PerUserCache.hs, dist/build/elm/elm-tmp/Elm/PerUserCache.dyn_o )
[130 of 167] Compiling Reporting.Task   ( builder/src/Reporting/Task.hs, dist/build/elm/elm-tmp/Reporting/Task.dyn_o )
[131 of 167] Compiling Stuff.Paths      ( builder/src/Stuff/Paths.hs, dist/build/elm/elm-tmp/Stuff/Paths.dyn_o )
[132 of 167] Compiling Reporting.Task.Http ( builder/src/Reporting/Task/Http.hs, dist/build/elm/elm-tmp/Reporting/Task/Http.dyn_o )
[133 of 167] Compiling Elm.Project.Json ( builder/src/Elm/Project/Json.hs, dist/build/elm/elm-tmp/Elm/Project/Json.dyn_o )
[134 of 167] Compiling Elm.Project.Summary ( builder/src/Elm/Project/Summary.hs, dist/build/elm/elm-tmp/Elm/Project/Summary.dyn_o )
[135 of 167] Compiling File.Find        ( builder/src/File/Find.hs, dist/build/elm/elm-tmp/File/Find.dyn_o )
[136 of 167] Compiling File.Args        ( builder/src/File/Args.hs, dist/build/elm/elm-tmp/File/Args.dyn_o )
[137 of 167] Compiling Deps.Website     ( builder/src/Deps/Website.hs, dist/build/elm/elm-tmp/Deps/Website.dyn_o )
[138 of 167] Compiling File.IO          ( builder/src/File/IO.hs, dist/build/elm/elm-tmp/File/IO.dyn_o )
[139 of 167] Compiling File.Header      ( builder/src/File/Header.hs, dist/build/elm/elm-tmp/File/Header.dyn_o )
[140 of 167] Compiling File.Crawl       ( builder/src/File/Crawl.hs, dist/build/elm/elm-tmp/File/Crawl.dyn_o )
[141 of 167] Compiling Generate.Output  ( builder/src/Generate/Output.hs, dist/build/elm/elm-tmp/Generate/Output.dyn_o )
[142 of 167] Compiling File.Plan        ( builder/src/File/Plan.hs, dist/build/elm/elm-tmp/File/Plan.dyn_o )
[143 of 167] Compiling File.Compile     ( builder/src/File/Compile.hs, dist/build/elm/elm-tmp/File/Compile.dyn_o )
[144 of 167] Compiling File.Artifacts   ( builder/src/File/Artifacts.hs, dist/build/elm/elm-tmp/File/Artifacts.dyn_o )
[145 of 167] Compiling Deps.Cache       ( builder/src/Deps/Cache.hs, dist/build/elm/elm-tmp/Deps/Cache.dyn_o )
[146 of 167] Compiling Deps.Explorer    ( builder/src/Deps/Explorer.hs, dist/build/elm/elm-tmp/Deps/Explorer.dyn_o )
[147 of 167] Compiling Deps.Solver      ( builder/src/Deps/Solver.hs, dist/build/elm/elm-tmp/Deps/Solver.dyn_o )
[148 of 167] Compiling Init             ( ui/terminal/src/Init.hs, dist/build/elm/elm-tmp/Init.dyn_o )
[149 of 167] Compiling Deps.Verify      ( builder/src/Deps/Verify.hs, dist/build/elm/elm-tmp/Deps/Verify.dyn_o )
[150 of 167] Compiling Stuff.Verify     ( builder/src/Stuff/Verify.hs, dist/build/elm/elm-tmp/Stuff/Verify.dyn_o )
[151 of 167] Compiling Elm.Project.Root ( builder/src/Elm/Project/Root.hs, dist/build/elm/elm-tmp/Elm/Project/Root.dyn_o )
[152 of 167] Compiling Elm.Project      ( builder/src/Elm/Project.hs, dist/build/elm/elm-tmp/Elm/Project.dyn_o )
[153 of 167] Compiling Repl             ( ui/terminal/src/Repl.hs, dist/build/elm/elm-tmp/Repl.dyn_o )
[154 of 167] Compiling Make             ( ui/terminal/src/Make.hs, dist/build/elm/elm-tmp/Make.dyn_o )
[155 of 167] Compiling Elm.Diff         ( builder/src/Elm/Diff.hs, dist/build/elm/elm-tmp/Elm/Diff.dyn_o )
[156 of 167] Compiling Diff             ( ui/terminal/src/Diff.hs, dist/build/elm/elm-tmp/Diff.dyn_o )
[157 of 167] Compiling Elm.Bump         ( builder/src/Elm/Bump.hs, dist/build/elm/elm-tmp/Elm/Bump.dyn_o )
[158 of 167] Compiling Elm.Publish      ( builder/src/Elm/Publish.hs, dist/build/elm/elm-tmp/Elm/Publish.dyn_o )
[159 of 167] Compiling Publish          ( ui/terminal/src/Publish.hs, dist/build/elm/elm-tmp/Publish.dyn_o )
[160 of 167] Compiling Develop.StaticFiles.Build ( ui/terminal/src/Develop/StaticFiles/Build.hs, dist/build/elm/elm-tmp/Develop/StaticFiles/Build.dyn_o )
[161 of 167] Compiling Develop.StaticFiles ( ui/terminal/src/Develop/StaticFiles.hs, dist/build/elm/elm-tmp/Develop/StaticFiles.dyn_o )
-- HTTP PROBLEM ----------------------------------------------------------------

The following HTTP request failed:

    <https://package.elm-lang.org/all-packages>

Here is the error message I was able to extract:

    HttpExceptionRequest Request { host = "package.elm-lang.org" port = 443
    secure = True requestHeaders =
    [("User-Agent","elm/0.19.0"),("Accept-Encoding","gzip")] path =
    "/all-packages" queryString = "" method = "GET" proxy = Nothing rawBody =
    False redirectCount = 10 responseTimeout = ResponseTimeoutDefault
    requestVersion = HTTP/1.1 } (ConnectionFailure Network.Socket.getAddrInfo
    (called with preferred socket type/protocol: AddrInfo {addrFlags =
    [AI_ADDRCONFIG], addrFamily = AF_UNSPEC, addrSocketType = Stream,
    addrProtocol = 0, addrAddress = <assumed to be undefined>, addrCanonName =
    <assumed to be undefined>}, host name: Just "package.elm-lang.org", service
    name: Just "443"): does not exist (Name or service not known))

ui/terminal/src/Develop/StaticFiles.hs:92:3: error:
    • Exception when trying to run compile-time code:
        ExitFailure 1
      Code: bsToExp =<< runIO Build.compile
    • In the untyped splice: $(bsToExp =<< runIO Build.compile)
   |
92 |   $(bsToExp =<< runIO Build.compile)
   |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[162 of 167] Compiling Bump             ( ui/terminal/src/Bump.hs, dist/build/elm/elm-tmp/Bump.dyn_o )
[163 of 167] Compiling Develop.Generate.Index ( ui/terminal/src/Develop/Generate/Index.hs, dist/build/elm/elm-tmp/Develop/Generate/Index.dyn_o )
[165 of 167] Compiling Elm.Install      ( builder/src/Elm/Install.hs, dist/build/elm/elm-tmp/Elm/Install.dyn_o )
[166 of 167] Compiling Install          ( ui/terminal/src/Install.hs, dist/build/elm/elm-tmp/Install.dyn_o )
 * ERROR: dev-lang/elm-compiler-0.19.0-r1::haskell failed (compile phase):
 *   setup build failed
 * 
 * Call stack:
 *     ebuild.sh, line  125:  Called src_compile
 *   environment, line 2739:  Called haskell-cabal_src_compile
 *   environment, line 1977:  Called cabal_src_compile
 *   environment, line  795:  Called cabal-build
 *   environment, line  553:  Called die
 * The specific snippet of code:
 *       ./setup "$@" || die "setup build failed"
 * 
 * If you need support, post the output of `emerge --info '=dev-lang/elm-compiler-0.19.0-r1::haskell'`,
 * the complete build log and the output of `emerge -pqv '=dev-lang/elm-compiler-0.19.0-r1::haskell'`.
 * The complete build log is located at '/var/tmp/portage/dev-lang/elm-compiler-0.19.0-r1/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/dev-lang/elm-compiler-0.19.0-r1/temp/environment'.
 * Working directory: '/var/tmp/portage/dev-lang/elm-compiler-0.19.0-r1/work/compiler-0.19.0'
 * S: '/var/tmp/portage/dev-lang/elm-compiler-0.19.0-r1/work/compiler-0.19.0'

/var/tmp/portage/dev-lang/elm-compiler-0.19.0-r1/temp/environment:

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 ADA_TARGET=""
declare -x ALSA_CARDS=""
declare -x ANT_HOME="/usr/share/ant"
declare -x APACHE2_MODULES=""
declare -x APACHE2_MPMS=""
declare -x ARCH="amd64"
declare BDEPEND=""
declare -x BOOTSTRAP_USE="unicode internal-glib pkg-config split-usr python_targets_python3_6 python_targets_python2_7 multilib"
declare -- CABAL_DEBUG_LOOSENING=""
declare -- CABAL_EXTRA_BUILD_FLAGS=""
declare -- CABAL_EXTRA_CONFIGURE_FLAGS=""
declare -- CABAL_EXTRA_TEST_FLAGS=""
declare -- CABAL_FEATURES="profile haddock hscolour"
declare -- CABAL_REPORT_OTHER_BROKEN_PACKAGES="yes"
declare -- CABAL_USE_HADDOCK="yes"
declare -- CABAL_USE_HSCOLOUR="yes"
declare -- CABAL_USE_PROFILE="yes"
declare -x CALLIGRA_FEATURES=""
declare -x CAMERAS=""
declare -x CBUILD="x86_64-pc-linux-gnu"
declare -x CFLAGS="-march=native -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 CPU_FLAGS_ARM=""
declare -x CPU_FLAGS_PPC=""
declare -x CPU_FLAGS_X86=""
declare -x CTARGET_default="x86_64-pc-linux-gnu"
declare -x CURL_SSL=""
declare -x CXXFLAGS="-march=native -O2 -pipe"
declare -x DEFAULT_ABI="amd64"
declare -x DEFINED_PHASES=" compile configure install postinst postrm prepare setup test"
declare DEPEND=">=dev-haskell/ansi-terminal-0.8:= <dev-haskell/ansi-terminal-0.9:=
    >=dev-haskell/ansi-wl-pprint-0.6.8:= <dev-haskell/ansi-wl-pprint-0.7:=
    >=dev-haskell/edit-distance-0.2:= <dev-haskell/edit-distance-0.3:=
    dev-haskell/file-embed:=
    dev-haskell/haskeline:=
    >=dev-haskell/http-4000.2.5:= <dev-haskell/http-4000.4:=
    >=dev-haskell/http-client-0.5:= <dev-haskell/http-client-0.6:=
    >=dev-haskell/http-client-tls-0.3:= <dev-haskell/http-client-tls-0.4:=
    >=dev-haskell/http-types-0.9:= <dev-haskell/http-types-1.0:=
    >=dev-haskell/language-glsl-0.0.2:=
    dev-haskell/logict:=
    >=dev-haskell/mtl-2.2.1:= <dev-haskell/mtl-3:=
    >=dev-haskell/network-2.4:= <dev-haskell/network-2.7:=
    dev-haskell/parsec:=
    dev-haskell/raw-strings-qq:=
    dev-haskell/scientific:=
    dev-haskell/sha:=
    dev-haskell/snap-core:=
    dev-haskell/snap-server:=
    >=dev-haskell/text-1:= <dev-haskell/text-2:=
    dev-haskell/unordered-containers:=
    dev-haskell/utf8-string:=
    dev-haskell/vector:=
    dev-haskell/zip-archive:=
    >=dev-lang/ghc-8.2.1:=

    >=dev-haskell/cabal-2.0.0.2
  doc? ( || ( dev-haskell/haddock >=dev-lang/ghc-7.10.2 ) ) hscolour? ( dev-haskell/hscolour )"
declare DESCRIPTION="The 'elm' command line interface"
declare -x DESTTREE="/usr"
declare -x DIROPTIONS="-m0755"
declare -x DOTNET_ROOT="/opt/dotnet_core"
declare -x EAPI="6"
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 -- EPATCH_COMMON_OPTS="-g0 -E --no-backup-if-mismatch"
declare -- EPATCH_EXCLUDE=""
declare -- EPATCH_FORCE="no"
declare -- EPATCH_MULTI_MSG="Applying various patches (bugfixes/updates) ..."
declare -- EPATCH_OPTS=""
declare -- EPATCH_SINGLE_MSG=""
declare -- EPATCH_SOURCE="/var/tmp/portage/dev-lang/elm-compiler-0.19.0-r1/work/patch"
declare -- EPATCH_SUFFIX="patch.bz2"
declare -- EPOCHREALTIME="1585310208.107494"
declare -- EPOCHSECONDS="1585310208"
declare -x EPYTHON="python3.7"
declare -x EXEOPTIONS="-m0755"
declare -x FCFLAGS="-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="-O2 -pipe"
declare -x FFTOOLS=""
declare -x FLTK_DOCDIR="/usr/share/doc/fltk-1.3.5-r4/html"
declare -x GCC_SPECS=""
declare -x GDK_SCALE="2"
declare -- GHC_BOOTSTRAP_FLAGS=""
declare -x GPSD_PROTOCOLS=""
declare -x GRUB_PLATFORMS=""
declare -x GSETTINGS_BACKEND="dconf"
declare -- HASKELL_CABAL_EXPF="pkg_setup src_compile src_test src_install pkg_postinst pkg_postrm src_configure"
declare HOMEPAGE="http://elm-lang.org"
declare -x INHERITED=" desktop estack epatch toolchain-funcs multilib ltprune preserve-libs vcs-clean eutils multiprocessing eapi7-ver ghc-package haskell-cabal"
declare -x INPUT_DEVICES=""
declare -x INSDESTTREE=""
declare -x INSOPTIONS="-m0644"
declare IUSE="dev  doc hscolour profile"
declare -x IUSE_EFFECTIVE="abi_x86_64 alpha amd64 amd64-fbsd amd64-linux arm arm64 dev doc 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 hscolour 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 profile riscv s390 sh sparc sparc-solaris sparc64-solaris userland_BSD userland_GNU x64-cygwin x64-macos x64-solaris x64-winnt 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 JAVAC="/etc/java-config-2/current-system-vm/bin/javac"
declare -x JAVA_HOME="/etc/java-config-2/current-system-vm"
declare -x JDK_HOME="/etc/java-config-2/current-system-vm"
declare -x KERNEL="linux"
declare -x KERNEL_ABI="amd64"
declare -x KEYWORDS="~amd64 ~x86"
declare -x L10N=""
declare -x LADSPA_PATH="/usr/lib64/ladspa"
declare -x LANG="en_GB.utf8"
declare -x LCD_DEVICES=""
declare -x LC_COLLATE="C"
declare -x LC_MESSAGES="C"
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 LD_LIBRARY_PATH="/usr/lib64/ghc-8.6.5"
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="BSD"
declare -x LINGUAS="en"
declare -x LIRC_DEVICES=""
declare -x LLVM_TARGETS=""
declare -x LV2_PATH="/usr/lib64/lv2"
declare -x MAKEOPTS="-j5"
declare -x MANPAGER="manpager"
declare -x MONKEYD_PLUGINS=""
declare -x MOZ_GMP_PATH="/usr/lib64/nsbrowser/plugins/gmp-gmpopenh264/system-installed"
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 MY_KDE_USE="-appstream brightness-control browser-integration -consolekit crypt dbus display-manager grub elogind kde -modemmanager networkmanager policykit -ppp qml -qt4 qt5 qalculate sdk ssdm -systemd udisks wallpapers wayland -wext -wifi"
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 OPENCL_PROFILE="ocl-icd"
declare -x OPENGL_PROFILE="xorg-x11"
declare -x OPENMPI_FABRICS=""
declare -x OPENMPI_OFED_FEATURES=""
declare -x OPENMPI_RM=""
declare -x OTHER_DE="-gnome gtk gtk2 -gtk3 -xfce"
declare -x PATH="/usr/lib/portage/python3.6/ebuild-helpers/xattr:/usr/lib/portage/python3.6/ebuild-helpers:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/lib/llvm/10/bin:/usr/lib/llvm/9/bin:/usr/lib/llvm/8/bin"
declare PDEPEND=""
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/elm-compiler-0.19.0-r1/html")
declare -a PORTAGE_DOSTRIP=([0]="/")
declare -a PORTAGE_DOSTRIP_SKIP=()
declare -x POSTGRES_TARGETS=""
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 PRO_AUDIO="dssi frei0r jack jack-session ladspa lash opus osc rtaudio vst"
declare -x PYTHONDONTWRITEBYTECODE="1"
declare -x PYTHON_SINGLE_TARGET=""
declare -x PYTHON_TARGETS=""
declare -- QA_CONFIGURE_OPTIONS=" --with-compiler --with-hc --with-hc-pkg --with-gcc"
declare -x QEMU_SOFTMMU_TARGETS=""
declare -x QEMU_USER_TARGETS=""
declare -x QT_GRAPHICSSYSTEM="raster"
declare RDEPEND=">=dev-haskell/ansi-terminal-0.8:= <dev-haskell/ansi-terminal-0.9:=
    >=dev-haskell/ansi-wl-pprint-0.6.8:= <dev-haskell/ansi-wl-pprint-0.7:=
    >=dev-haskell/edit-distance-0.2:= <dev-haskell/edit-distance-0.3:=
    dev-haskell/file-embed:=
    dev-haskell/haskeline:=
    >=dev-haskell/http-4000.2.5:= <dev-haskell/http-4000.4:=
    >=dev-haskell/http-client-0.5:= <dev-haskell/http-client-0.6:=
    >=dev-haskell/http-client-tls-0.3:= <dev-haskell/http-client-tls-0.4:=
    >=dev-haskell/http-types-0.9:= <dev-haskell/http-types-1.0:=
    >=dev-haskell/language-glsl-0.0.2:=
    dev-haskell/logict:=
    >=dev-haskell/mtl-2.2.1:= <dev-haskell/mtl-3:=
    >=dev-haskell/network-2.4:= <dev-haskell/network-2.7:=
    dev-haskell/parsec:=
    dev-haskell/raw-strings-qq:=
    dev-haskell/scientific:=
    dev-haskell/sha:=
    dev-haskell/snap-core:=
    dev-haskell/snap-server:=
    >=dev-haskell/text-1:= <dev-haskell/text-2:=
    dev-haskell/unordered-containers:=
    dev-haskell/utf8-string:=
    dev-haskell/vector:=
    dev-haskell/zip-archive:=
    >=dev-lang/ghc-8.2.1:=
 "
declare REPOSITORY
declare REQUIRED_USE=""
declare -x RESTRICT=""
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-lang/elm-compiler-0.19.0-r1/work/compiler-0.19.0"
declare -x SANDBOX_DEBUG="0"
declare -x SANDBOX_DENY=""
declare -x SANDBOX_PREDICT="/var/tmp/portage/dev-lang/elm-compiler-0.19.0-r1/homedir:/dev/crypto:/var/cache/man:/dev/random:/proc/self/coredump_filter:/dev/random:/proc/self/coredump_filter:/dev/random:/proc/self/coredump_filter:/var/cache/fontconfig:/dev/nvidiactl:/dev/nvidia-uvm:/dev/ati/card:/dev/dri/card:/dev/dri/renderD128"
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-lang/elm-compiler-0.19.0-r1/homedir/.bash_history"
declare -x SANE_BACKENDS=""
declare -x SBCL_HOME="/usr/lib64/sbcl"
declare -x SBCL_SOURCE_ROOT="/usr/lib64/sbcl/src"
declare -x SHELL="/bin/bash"
declare -x SLOT="0/0.19.0"
declare SRC_URI="https://github.com/elm/compiler/archive/0.19.0.tar.gz -> elm-compiler-0.19.0.tar.gz"
declare -x SYMLINK_LIB="yes"
declare -x TEXINPUTS="/usr/lib64/ocaml/ocamldoc:"
declare -x TWISTED_DISABLE_WRITING_OF_PLUGIN_CACHE="1"
declare -x USE="abi_x86_64 amd64 elibc_glibc kernel_linux 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 x64-winnt 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"
declare -x XDG_DATA_DIRS="/usr/local/share:/usr/share"
declare -x XFCE_PLUGINS=""
declare -x XSESSION="Xfce4"
declare -x XTABLES_ADDONS=""
declare -- _CABAL_VERSION_CACHE=""
declare -- _DESKTOP_ECLASS="1"
declare -- _EPATCH_ECLASS="1"
declare -- _ESTACK_ECLASS="1"
declare -- _EUTILS_ECLASS="1"
declare -x _E_DOCDESTTREE_=""
declare -x _E_EXEDESTTREE_=""
declare -- _GHC_LIBDIR_CACHE=""
declare -- _GHC_PM_VERSION_CACHE=""
declare -- _GHC_VERSION_CACHE=""
declare -- _LTPRUNE_ECLASS="1"
declare -- _MULTILIB_ECLASS="1"
declare -- _MULTIPROCESSING_ECLASS="1"
declare -- _PRESERVE_LIBS_ECLASS="1"
declare -- _TOOLCHAIN_FUNCS_ECLASS="1"
declare -- feature="hscolour"
declare -- from_pat=""
declare -x radeonsi_enable_nir="true"
declare -- to_str=""
__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
}
_clang_fullversion () 
{ 
    local ver="$1";
    shift;
    set -- $($(tc-getCPP "$@") -E -P - <<<"__clang_major__ __clang_minor__ __clang_patchlevel__");
    eval echo "$ver"
}
_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"
}
_iconins () 
{ 
    ( insopts -m 0644;
    local funcname=$1;
    shift;
    local size dir;
    local context=apps;
    local theme=hicolor;
    while [[ $# -gt 0 ]]; do
        case $1 in 
            -s | --size)
                if [[ ${2%%x*}x${2%%x*} == "$2" ]]; then
                    size=${2%%x*};
                else
                    size=${2};
                fi;
                case ${size} in 
                    16 | 22 | 24 | 32 | 36 | 48 | 64 | 72 | 96 | 128 | 192 | 256 | 512)
                        size=${size}x${size}
                    ;;
                    scalable)

                    ;;
                    *)
                        eerror "${size} is an unsupported icon size!";
                        exit 1
                    ;;
                esac;
                shift 2
            ;;
            -t | --theme)
                theme=${2};
                shift 2
            ;;
            -c | --context)
                context=${2};
                shift 2
            ;;
            *)
                if [[ -z ${size} ]]; then
                    insinto /usr/share/pixmaps;
                else
                    insinto /usr/share/icons/${theme}/${size}/${context};
                fi;
                if [[ ${funcname} == doicon ]]; then
                    if [[ -f $1 ]]; then
                        doins "${1}";
                    else
                        if [[ -d $1 ]]; then
                            shopt -s nullglob;
                            doins "${1}"/*.{png,svg};
                            shopt -u nullglob;
                        else
                            eerror "${1} is not a valid file/directory!";
                            exit 1;
                        fi;
                    fi;
                else
                    break;
                fi;
                shift 1
            ;;
        esac;
    done;
    if [[ ${funcname} == newicon ]]; then
        newins "$@";
    fi ) || die
}
_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}"
}
_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]};
    _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
            _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
            _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;
    _ver_compare_int "${ar#-r}" "${br#-r}" || return;
    return 2
}
_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}" ]]
}
_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
}
_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
}
cabal-bootstrap () 
{ 
    local setupmodule;
    local cabalpackage;
    local setup_bootstrap_args=();
    if [[ -f "${S}/Setup.lhs" ]]; then
        setupmodule="${S}/Setup.lhs";
    else
        if [[ -f "${S}/Setup.hs" ]]; then
            setupmodule="${S}/Setup.hs";
        else
            eqawarn "No Setup.lhs or Setup.hs found. Either add Setup.hs to package or call cabal-mksetup from ebuild";
            cabal-mksetup;
            setupmodule="${S}/Setup.hs";
        fi;
    fi;
    cabalpackage=Cabal-$(cabal-version);
    einfo "Using cabal-$(cabal-version).";
    if $(ghc-supports-threaded-runtime); then
        setup_bootstrap_args+=(-threaded);
    fi;
    function make_setup () 
    { 
        set -- -package "${cabalpackage}" --make "${setupmodule}" $(ghc-make-args) "${setup_bootstrap_args[@]}" ${HCFLAGS} ${GHC_BOOTSTRAP_FLAGS} "$@" -o setup;
        echo $(ghc-getghc) "$@";
        $(ghc-getghc) "$@"
    };
    if $(ghc-supports-shared-libraries); then
        einfo "Prepending $(ghc-libdir) to LD_LIBRARY_PATH";
        if [[ ${CHOST} != *-darwin* ]]; then
            LD_LIBRARY_PATH="$(ghc-libdir)${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH}";
            export LD_LIBRARY_PATH;
        else
            DYLD_LIBRARY_PATH="$(ghc-libdir)${DYLD_LIBRARY_PATH:+:}${DYLD_LIBRARY_PATH}";
            export DYLD_LIBRARY_PATH;
        fi;
        { 
            make_setup -dynamic "$@" && ./setup --help > /dev/null
        } || make_setup "$@" || die "compiling ${setupmodule} failed";
    else
        make_setup "$@" || die "compiling ${setupmodule} failed";
    fi
}
cabal-build () 
{ 
    set -- build "$@" ${CABAL_EXTRA_BUILD_FLAGS};
    echo ./setup "$@";
    ./setup "$@" || die "setup build failed"
}
cabal-configure () 
{ 
    local cabalconf=();
    has "${EAPI:-0}" 0 1 2 && ! use prefix && EPREFIX=;
    if [[ -n "${CABAL_USE_HADDOCK}" ]] && use doc; then
        local p=${EPREFIX}/usr/bin/haddock-ghc-$(ghc-version);
        if [[ -f $p ]]; then
            cabalconf+=(--with-haddock="${p}");
        else
            cabalconf+=(--with-haddock=${EPREFIX}/usr/bin/haddock);
        fi;
    fi;
    if [[ -n "${CABAL_USE_PROFILE}" ]] && use profile; then
        cabalconf+=(--enable-library-profiling);
    fi;
    if [[ -n "${CABAL_TEST_SUITE}" ]]; then
        cabalconf+=($(use_enable test tests));
    fi;
    if [[ -n "${CABAL_GHC_CONSTRAINT}" ]]; then
        cabalconf+=($(cabal-constraint "ghc"));
    fi;
    cabalconf+=(--ghc-options="$(ghc-make-args)");
    local option;
    for option in ${HCFLAGS};
    do
        cabalconf+=(--ghc-option="$option");
    done;
    cabalconf+=(--with-ar="$(tc-getAR)");
    if use ppc64; then
        cabalconf+=(--disable-library-for-ghci);
    fi;
    local flag;
    for flag in $CFLAGS;
    do
        cabalconf+=(--ghc-option="-optc$flag");
    done;
    for flag in $LDFLAGS;
    do
        cabalconf+=(--ghc-option="-optl$flag");
    done;
    cabalconf+=(--disable-executable-stripping);
    cabalconf+=(--docdir="${EPREFIX}"/usr/share/doc/${PF});
    cabalconf+=(--verbose);
    [[ ${CATEGORY}/${PN} == "dev-haskell/cabal" ]] && $(ghc-supports-shared-libraries) && cabalconf+=(--enable-shared);
    if $(ghc-supports-shared-libraries); then
        if ver_test "$(ghc-version)" -ge "7.10.0.20150316"; then
            cabalconf+=(--enable-shared);
            cabalconf+=(--enable-executable-dynamic);
        fi;
    fi;
    if ./setup configure --help | grep -q -- --sysconfdir; then
        cabalconf+=(--sysconfdir="${EPREFIX}"/etc);
    fi;
    if ./setup configure --help | grep -q -- --disable-library-stripping; then
        cabalconf+=(--disable-library-stripping);
    fi;
    set -- configure --ghc --prefix="${EPREFIX}"/usr --with-compiler="$(ghc-getghc)" --with-hc-pkg="$(ghc-getghcpkg)" --prefix="${EPREFIX}"/usr --libdir="${EPREFIX}"/usr/$(get_libdir) --libsubdir=${P}/ghc-$(ghc-version) --datadir="${EPREFIX}"/usr/share/ --datasubdir=${P}/ghc-$(ghc-version) "${cabalconf[@]}" ${CABAL_CONFIGURE_FLAGS} "$@" ${CABAL_EXTRA_CONFIGURE_FLAGS};
    echo ./setup "$@";
    ./setup "$@" || cabal-show-brokens-and-die "setup configure failed"
}
cabal-constraint () 
{ 
    while read p v; do
        echo "--constraint \"$p == $v\"";
    done < $(ghc-pkgdeps ${1})
}
cabal-copy () 
{ 
    has "${EAPI:-0}" 0 1 2 && ! use prefix && ED=${D};
    set -- copy --destdir="${D}" "$@";
    echo ./setup "$@";
    ./setup "$@" || die "setup copy failed";
    rmdir "${ED}/usr/bin" 2> /dev/null
}
cabal-die-if-nonempty () 
{ 
    local breakage_type=$1;
    shift;
    [[ "${#@}" == 0 ]] && return 0;
    eerror "Detected ${breakage_type} packages: ${@}";
    die "//==-- Please, run 'haskell-updater' to fix ${breakage_type} packages --==//"
}
cabal-haddock () 
{ 
    set -- haddock "$@";
    echo ./setup "$@";
    ./setup "$@" || die "setup haddock failed"
}
cabal-hoogle () 
{ 
    ewarn "hoogle USE flag requires doc USE flag, building without hoogle"
}
cabal-hoogle-haddock () 
{ 
    set -- haddock --hoogle;
    echo ./setup "$@";
    ./setup "$@" || die "setup haddock --hoogle failed"
}
cabal-hoogle-hscolour () 
{ 
    ewarn "hoogle USE flag requires doc USE flag, building without hoogle";
    cabal-hscolour
}
cabal-hoogle-hscolour-haddock () 
{ 
    cabal-hscolour-haddock;
    cabal-hoogle-haddock
}
cabal-hscolour () 
{ 
    set -- hscolour "$@";
    echo ./setup "$@";
    ./setup "$@" || die "setup hscolour failed"
}
cabal-hscolour-haddock () 
{ 
    set -- haddock --hyperlink-source;
    echo ./setup "$@";
    ./setup "$@" --hyperlink-source || die "setup haddock --hyperlink-source failed"
}
cabal-is-dummy-lib () 
{ 
    local bin_ghc_version=$(ghc-version);
    local pm_ghc_version=$(ghc-pm-version);
    for version in ${CABAL_CORE_LIB_GHC_PV};
    do
        [[ "${bin_ghc_version}" == ${version} ]] && return 0;
        [[ "${pm_ghc_version}" == ${version} ]] && return 0;
    done;
    return 1
}
cabal-mksetup () 
{ 
    local setupdir=${1:-${S}};
    local setup_src=${setupdir}/Setup.hs;
    rm -vf "${setupdir}"/Setup.{lhs,hs};
    elog "Creating 'Setup.hs' for 'Simple' build type.";
    echo 'import Distribution.Simple; main = defaultMain' > "${setup_src}" || die "failed to create default Setup.hs"
}
cabal-pkg () 
{ 
    if [[ -n ${CABAL_HAS_LIBRARIES} ]]; then
        ./setup register --gen-pkg-config="${T}/${P}.conf";
        if [[ -d "${T}/${P}.conf" ]]; then
            ghc-install-pkg "${T}/${P}.conf"/*;
        else
            ghc-install-pkg "${T}/${P}.conf";
        fi;
    fi
}
cabal-show-brokens () 
{ 
    [[ ${CABAL_REPORT_OTHER_BROKEN_PACKAGES} != yes ]] && return 0;
    elog "ghc-pkg check: 'checking for other broken packages:'";
    $(ghc-getghcpkg) check 2>&1 | egrep -v '^Warning: haddock-(html|interfaces): ' | egrep -v '^Warning: include-dirs: ' | head -n 20;
    cabal-die-if-nonempty 'broken' $($(ghc-getghcpkg) check --simple-output)
}
cabal-show-brokens-and-die () 
{ 
    cabal-show-brokens;
    cabal-show-old;
    die "$@"
}
cabal-show-old () 
{ 
    [[ ${CABAL_REPORT_OTHER_BROKEN_PACKAGES} != yes ]] && return 0;
    cabal-die-if-nonempty 'outdated' $("${EPREFIX}"/usr/sbin/haskell-updater --quiet --upgrade --list-only)
}
cabal-version () 
{ 
    if [[ -z "${_CABAL_VERSION_CACHE}" ]]; then
        if [[ -n "${CABAL_BOOTSTRAP}" ]]; then
            _CABAL_VERSION_CACHE="${PV}";
        else
            if [[ -n "${CABAL_FROM_GHC}" ]]; then
                _CABAL_VERSION_CACHE="$(ghc-cabal-version)";
            else
                _CABAL_VERSION_CACHE="$(ghc-extractportageversion dev-haskell/cabal)";
            fi;
        fi;
    fi;
    echo "${_CABAL_VERSION_CACHE}"
}
cabal_chdeps () 
{ 
    local cabal_fn=${MY_PN:-${PN}}.cabal;
    local cf=${CABAL_FILE:-${S}/${cabal_fn}};
    local from_ss;
    local to_ss;
    local orig_c;
    local new_c;
    [[ -f $cf ]] || die "cabal file '$cf' does not exist";
    orig_c=$(< "$cf");
    while :; do
        from_pat=$1;
        to_str=$2;
        [[ -n ${from_pat} ]] || break;
        [[ -n ${to_str} ]] || die "'${from_str}' does not have 'to' part";
        einfo "CHDEP: '${from_pat}' -> '${to_str}'";
        from_pat=${from_pat//\*/\\*};
        from_pat=${from_pat//\[/\\[};
        new_c=${orig_c//${from_pat}/${to_str}};
        if [[ -n $CABAL_DEBUG_LOOSENING ]]; then
            echo "${orig_c}" > "${T}/${cf}".pre;
            echo "${new_c}" > "${T}/${cf}".post;
            diff -u "${T}/${cf}".{pre,post};
        fi;
        [[ "${orig_c}" == "${new_c}" ]] && die "no trigger for '${from_pat}'";
        orig_c=${new_c};
        shift;
        shift;
    done;
    echo "${new_c}" > "$cf" || die "failed to update"
}
cabal_flag () 
{ 
    if [[ -z "$1" ]]; then
        echo "!!! cabal_flag() called without a parameter." 1>&2;
        echo "!!! cabal_flag() <USEFLAG> [<cabal_flagname>]" 1>&2;
        return 1;
    fi;
    local UWORD=${2:-$1};
    if use "$1"; then
        echo "--flags=${UWORD}";
    else
        echo "--flags=-${UWORD}";
    fi;
    return 0
}
cabal_src_compile () 
{ 
    if ! has "${EAPI:-0}" 0 1; then
        local passed_flag;
        for passed_flag in "$@";
        do
            [[ ${passed_flag} == --flags=* ]] && eqawarn "QA Notice: Cabal option '${passed_flag}' has effect only in src_configure()";
        done;
    fi;
    cabal-is-dummy-lib && return;
    has src_configure ${HASKELL_CABAL_EXPF} || haskell-cabal_src_configure "$@";
    cabal-build;
    if [[ -n "${CABAL_USE_HADDOCK}" ]] && use doc; then
        if [[ -n "${CABAL_USE_HSCOLOUR}" ]] && use hscolour; then
            if [[ -n "${CABAL_USE_HOOGLE}" ]] && use hoogle; then
                cabal-hoogle-hscolour-haddock;
            else
                cabal-hscolour-haddock;
            fi;
        else
            if [[ -n "${CABAL_USE_HOOGLE}" ]] && use hoogle; then
                cabal-hoogle-haddock;
            else
                cabal-haddock;
            fi;
        fi;
    else
        if [[ -n "${CABAL_USE_HSCOLOUR}" ]] && use hscolour; then
            if [[ -n "${CABAL_USE_HOOGLE}" ]] && use hoogle; then
                cabal-hoogle-hscolour;
            else
                cabal-hscolour;
            fi;
        else
            if [[ -n "${CABAL_USE_HOOGLE}" ]] && use hoogle; then
                cabal-hoogle;
            fi;
        fi;
    fi
}
cabal_src_configure () 
{ 
    haskell-cabal_src_configure "$@"
}
cabal_src_install () 
{ 
    has "${EAPI:-0}" 0 1 2 && ! use prefix && EPREFIX=;
    if ! cabal-is-dummy-lib; then
        cabal-copy;
        cabal-pkg;
    fi;
    local ghc_confdir_with_prefix="$(ghc-confdir)";
    dodir ${ghc_confdir_with_prefix#${EPREFIX}};
    local hint_db="${D}/$(ghc-confdir)";
    local hint_file="${hint_db}/gentoo-empty-${CATEGORY}-${PF}.conf";
    mkdir -p "${hint_db}" || die;
    touch "${hint_file}" || die
}
check-for-collisions () 
{ 
    local localpkgconf=$1;
    local checked_pkg;
    local initial_pkg_db="$(ghc-libdir)/package.conf.d.initial";
    for checked_pkg in `$(ghc-getghcpkgbin) -f "${localpkgconf}" list --simple-output`;
    do
        local collided=`$(ghc-getghcpkgbin) -f ${initial_pkg_db} list --simple-output "${checked_pkg}"`;
        if [[ -n ${collided} ]]; then
            eerror "Cabal package '${checked_pkg}' is shipped with '$(ghc-pm-version)' ('$(ghc-version)').";
            eerror "Ebuild author forgot an entry in CABAL_CORE_LIB_GHC_PV='${CABAL_CORE_LIB_GHC_PV}'.";
            eerror "Found in ${initial_pkg_db}.";
            die;
        fi;
    done
}
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' "$@"
}
doicon () 
{ 
    _iconins ${FUNCNAME} "$@"
}
domenu () 
{ 
    ( local i ret=0;
    insopts -m 0644;
    insinto /usr/share/applications;
    for i in "$@";
    do
        if [[ -d ${i} ]]; then
            doins "${i}"/*.desktop;
            ((ret|=$?));
        else
            doins "${i}";
            ((ret|=$?));
        fi;
    done;
    exit ${ret} )
}
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};
        ebegin "${prefix:-Applying }${f##*/}";
        local all_opts=(-p1 -f -g0 --no-backup-if-mismatch "${patch_options[@]}");
        if ${patch_cmd} "${all_opts[@]}" --dry-run -s -F0 < "${f}" &> /dev/null; then
            all_opts+=(-s -F0);
        fi;
        ${patch_cmd} "${all_opts[@]}" < "${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
}
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} "$@"
}
ecvs_clean () 
{ 
    [[ $# -eq 0 ]] && set -- .;
    find "$@" '(' -type d -name 'CVS' -prune -o -type f -name '.cvs*' ')' -exec rm -rf '{}' +
}
edos2unix () 
{ 
    [[ $# -eq 0 ]] && return 0;
    sed -i 's/\r$//' -- "$@" || die
}
egit_clean () 
{ 
    [[ $# -eq 0 ]] && set -- .;
    find "$@" -type d -name '.git*' -prune -exec rm -rf '{}' +
}
einstalldocs () 
{ 
    ( if [[ $(declare -p DOCS 2>/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 )
}
emktemp () 
{ 
    local exe="touch";
    [[ $1 == -d ]] && exe="mkdir" && shift;
    local topdir=$1;
    if [[ -z ${topdir} ]]; then
        [[ -z ${T} ]] && topdir="/tmp" || topdir=${T};
    fi;
    if ! type -P mktemp > /dev/null; then
        local tmp=/;
        while [[ -e ${tmp} ]]; do
            tmp=${topdir}/tmp.${RANDOM}.${RANDOM}.${RANDOM};
        done;
        ${exe} "${tmp}" || ${exe} -p "${tmp}";
        echo "${tmp}";
    else
        if [[ ${exe} == "touch" ]]; then
            TMPDIR="${topdir}" mktemp -t tmp.XXXXXXXXXX;
        else
            TMPDIR="${topdir}" mktemp -dt tmp.XXXXXXXXXX;
        fi;
    fi
}
epatch () 
{ 
    function _epatch_draw_line () 
    { 
        [[ -z $1 ]] && set "$(printf "%65s" '')";
        echo "${1//?/=}"
    };
    unset P4CONFIG P4PORT P4USER;
    local EPATCH_OPTS=(${EPATCH_OPTS[*]});
    while [[ $# -gt 0 ]]; do
        case $1 in 
            -*)
                EPATCH_OPTS+=("$1")
            ;;
            *)
                break
            ;;
        esac;
        shift;
    done;
    if [[ $# -gt 1 ]]; then
        local m;
        for m in "$@";
        do
            epatch "${m}";
        done;
        return 0;
    fi;
    local SINGLE_PATCH="no";
    [[ $# -eq 0 ]] && set -- "${EPATCH_SOURCE}";
    if [[ -f $1 ]]; then
        SINGLE_PATCH="yes";
        set -- "$1";
        local EPATCH_SUFFIX=$1;
    else
        if [[ -d $1 ]]; then
            evar_push_set LC_COLLATE C;
            set -- "$1"/*${EPATCH_SUFFIX:+."${EPATCH_SUFFIX}"};
            evar_pop;
        else
            if [[ -f ${EPATCH_SOURCE}/$1 ]]; then
                epatch "${EPATCH_SOURCE}/$1";
                return $?;
            else
                [[ $# -ne 0 ]] && EPATCH_SOURCE=$1;
                echo;
                eerror "Cannot find \$EPATCH_SOURCE!  Value for \$EPATCH_SOURCE is:";
                eerror;
                eerror "  ${EPATCH_SOURCE}";
                eerror "  ( ${EPATCH_SOURCE##*/} )";
                echo;
                die "Cannot find \$EPATCH_SOURCE!";
            fi;
        fi;
    fi;
    EPATCH_OPTS="${EPATCH_COMMON_OPTS} ${EPATCH_OPTS[*]}";
    local PIPE_CMD;
    case ${EPATCH_SUFFIX##*\.} in 
        xz)
            PIPE_CMD="xz -dc"
        ;;
        lzma)
            PIPE_CMD="lzma -dc"
        ;;
        bz2)
            PIPE_CMD="bzip2 -dc"
        ;;
        gz | Z | z)
            PIPE_CMD="gzip -dc"
        ;;
        ZIP | zip)
            PIPE_CMD="unzip -p"
        ;;
        *)

        ;;
    esac;
    [[ ${SINGLE_PATCH} == "no" ]] && einfo "${EPATCH_MULTI_MSG}";
    local x;
    for x in "$@";
    do
        [[ ! -f ${x} ]] && continue;
        local patchname=${x##*/};
        local a=${patchname#*_};
        a=${a%%_*};
        if ! [[ ${SINGLE_PATCH} == "yes" || ${EPATCH_FORCE} == "yes" || ${a} == all || ${a} == ${ARCH} ]]; then
            continue;
        fi;
        if [[ -n ${EPATCH_EXCLUDE}${EPATCH_USER_EXCLUDE} ]]; then
            eshopts_push -o noglob;
            local ex;
            for ex in ${EPATCH_EXCLUDE};
            do
                if [[ ${patchname} == ${ex} ]]; then
                    einfo "  Skipping ${patchname} due to EPATCH_EXCLUDE ...";
                    eshopts_pop;
                    continue 2;
                fi;
            done;
            for ex in ${EPATCH_USER_EXCLUDE};
            do
                if [[ ${patchname} == ${ex} ]]; then
                    einfo "  Skipping ${patchname} due to EPATCH_USER_EXCLUDE ...";
                    eshopts_pop;
                    continue 2;
                fi;
            done;
            eshopts_pop;
        fi;
        if [[ ${SINGLE_PATCH} == "yes" ]]; then
            if [[ -n ${EPATCH_SINGLE_MSG} ]]; then
                einfo "${EPATCH_SINGLE_MSG}";
            else
                einfo "Applying ${patchname} ...";
            fi;
        else
            einfo "  ${patchname} ...";
        fi;
        local patch="patch";
        eval $(alias patch 2>/dev/null | sed 's:^alias ::');
        local STDERR_TARGET="${T}/${patchname}.out";
        if [[ -e ${STDERR_TARGET} ]]; then
            STDERR_TARGET="${T}/${patchname}-$$.out";
        fi;
        printf "***** %s *****\nPWD: %s\nPATCH TOOL: %s -> %s\nVERSION INFO:\n%s\n\n" "${patchname}" "${PWD}" "${patch}" "$(type -P "${patch}")" "$(${patch} --version)" > "${STDERR_TARGET}";
        local count=0;
        local PATCH_TARGET;
        if [[ -n ${PIPE_CMD} ]]; then
            PATCH_TARGET="${T}/$$.patch";
            echo "PIPE_COMMAND:  ${PIPE_CMD} ${x} > ${PATCH_TARGET}" >> "${STDERR_TARGET}";
            if ! ( ${PIPE_CMD} "${x}" > "${PATCH_TARGET}" ) >> "${STDERR_TARGET}" 2>&1; then
                echo;
                eerror "Could not extract patch!";
                count=5;
                break;
            fi;
        else
            PATCH_TARGET=${x};
        fi;
        local abs_paths=$(egrep -n '^[-+]{3} /' "${PATCH_TARGET}" | awk '$2 != "/dev/null" { print }');
        if [[ -n ${abs_paths} ]]; then
            count=1;
            printf "NOTE: skipping -p0 due to absolute paths in patch:\n%s\n" "${abs_paths}" >> "${STDERR_TARGET}";
        fi;
        local rel_paths=$(egrep -n '^[-+]{3} [^ ]*[.][.]/' "${PATCH_TARGET}");
        if [[ -n ${rel_paths} ]]; then
            echo;
            eerror "Rejected Patch: ${patchname} !";
            eerror " ( ${PATCH_TARGET} )";
            eerror;
            eerror "Your patch uses relative paths '../':";
            eerror "${rel_paths}";
            echo;
            die "you need to fix the relative paths in patch";
        fi;
        local patch_cmd;
        while [[ ${count} -lt 5 ]]; do
            patch_cmd="${patch} -p${count} ${EPATCH_OPTS}";
            ( _epatch_draw_line "***** ${patchname} *****";
            echo;
            echo "PATCH COMMAND:  ${patch_cmd} --dry-run -f < '${PATCH_TARGET}'";
            echo;
            _epatch_draw_line "***** ${patchname} *****";
            ${patch_cmd} --dry-run -f < "${PATCH_TARGET}" 2>&1;
            ret=$?;
            echo;
            echo "patch program exited with status ${ret}";
            exit ${ret} ) >> "${STDERR_TARGET}";
            if [ $? -eq 0 ]; then
                ( _epatch_draw_line "***** ${patchname} *****";
                echo;
                echo "ACTUALLY APPLYING ${patchname} ...";
                echo "PATCH COMMAND:  ${patch_cmd} < '${PATCH_TARGET}'";
                echo;
                _epatch_draw_line "***** ${patchname} *****";
                ${patch_cmd} < "${PATCH_TARGET}" 2>&1;
                ret=$?;
                echo;
                echo "patch program exited with status ${ret}";
                exit ${ret} ) >> "${STDERR_TARGET}";
                if [ $? -ne 0 ]; then
                    echo;
                    eerror "A dry-run of patch command succeeded, but actually";
                    eerror "applying the patch failed!";
                    count=5;
                fi;
                break;
            fi;
            : $(( count++ ));
        done;
        (( EPATCH_N_APPLIED_PATCHES++ ));
        if [[ -n ${PIPE_CMD} ]]; then
            rm -f "${PATCH_TARGET}";
        fi;
        if [[ ${count} -ge 5 ]]; then
            echo;
            eerror "Failed Patch: ${patchname} !";
            eerror " ( ${PATCH_TARGET} )";
            eerror;
            eerror "Include in your bugreport the contents of:";
            eerror;
            eerror "  ${STDERR_TARGET}";
            echo;
            die "Failed Patch: ${patchname}!";
        fi;
        rm -f "${STDERR_TARGET}";
        cat <<-EOF >> "${T}/epatch.log"
PATCH: ${x}
CMD: ${patch_cmd}
PWD: ${PWD}

EOF

        eend 0;
    done;
    [[ ${SINGLE_PATCH} == "no" ]] && einfo "Done with patching";
    :
}
eshopts_pop () 
{ 
    local s;
    estack_pop eshopts s || die "${FUNCNAME}: unbalanced push";
    eval "${s}" || die "${FUNCNAME}: sanity: invalid shopt options: ${s}"
}
eshopts_push () 
{ 
    estack_push eshopts "$(shopt -p -o) $(shopt -p)";
    if [[ $1 == -[su] ]]; then
        [[ $# -le 1 ]] && return 0;
        shopt "$@" || die "${FUNCNAME}: bad options to shopt: $*";
    else
        [[ $# -eq 0 ]] && return 0;
        set "$@" || die "${FUNCNAME}: bad options to set: $*";
    fi
}
estack_pop () 
{ 
    [[ $# -eq 0 || $# -gt 2 ]] && die "estack_pop: incorrect # of arguments";
    local _estack_name="_ESTACK_$1_";
    shift;
    local _estack_retvar=$1;
    shift;
    eval local _estack_i=\${#${_estack_name}\[@\]};
    [[ $(( --_estack_i )) -eq -1 ]] && return 1;
    if [[ -n ${_estack_retvar} ]]; then
        eval ${_estack_retvar}=\"\${${_estack_name}\[${_estack_i}\]}\";
    fi;
    eval unset \"${_estack_name}\[${_estack_i}\]\"
}
estack_push () 
{ 
    [[ $# -eq 0 ]] && die "estack_push: incorrect # of arguments";
    local stack_name="_ESTACK_$1_";
    shift;
    eval ${stack_name}+=\( \"\$@\" \)
}
esvn_clean () 
{ 
    [[ $# -eq 0 ]] && set -- .;
    find "$@" -type d -name '.svn' -prune -exec rm -rf '{}' +
}
eumask_pop () 
{ 
    [[ $# -eq 0 ]] || die "${FUNCNAME}: we take no options";
    local s;
    estack_pop eumask s || die "${FUNCNAME}: unbalanced push";
    umask ${s} || die "${FUNCNAME}: sanity: could not restore umask: ${s}"
}
eumask_push () 
{ 
    estack_push eumask "$(umask)";
    umask "$@" || die "${FUNCNAME}: bad options to umask: $*"
}
evar_pop () 
{ 
    local cnt=${1:-bad};
    case $# in 
        0)
            cnt=1
        ;;
        1)
            [[ -z ${cnt//[0-9]} ]] || die "${FUNCNAME}: first arg must be a number: $*"
        ;;
        *)
            die "${FUNCNAME}: only accepts one arg: $*"
        ;;
    esac;
    local var val;
    while (( cnt-- )); do
        estack_pop evar val || die "${FUNCNAME}: unbalanced push";
        estack_pop evar var || die "${FUNCNAME}: unbalanced push";
        [[ ${val} == "unset_76fc3c462065bb4ca959f939e6793f94" ]] && unset ${var} || printf -v "${var}" '%s' "${val}";
    done
}
evar_push () 
{ 
    local var val;
    for var in "$@";
    do
        [[ ${!var+set} == "set" ]] && val=${!var} || val="unset_76fc3c462065bb4ca959f939e6793f94";
        estack_push evar "${var}" "${val}";
    done
}
evar_push_set () 
{ 
    local var=$1;
    evar_push ${var};
    case $# in 
        1)
            unset ${var}
        ;;
        2)
            printf -v "${var}" '%s' "$2"
        ;;
        *)
            die "${FUNCNAME}: incorrect # of args: $*"
        ;;
    esac
}
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
}
ghc-cabal-version () 
{ 
    if ver_test "$(ghc-version)" -ge "7.9.20141222"; then
        set -- `$(ghc-getghcpkg) --package-db=$(ghc-libdir)/package.conf.d.initial field Cabal version`;
        echo "$2";
    else
        local cabal_package=`echo "$(ghc-libdir)"/Cabal-*`;
        echo "${cabal_package/*Cabal-/}";
    fi
}
ghc-confdir () 
{ 
    echo "$(ghc-libdir)/gentoo"
}
ghc-extractportageversion () 
{ 
    local pkg;
    local version;
    pkg="$(best_version $1)";
    version="${pkg#$1-}";
    version="${version%-r*}";
    version="${version%_pre*}";
    echo "${version}"
}
ghc-getghc () 
{ 
    type -P ${HC:-ghc}
}
ghc-getghcpkg () 
{ 
    type -P ${HC_PKG:-ghc-pkg}
}
ghc-getghcpkgbin () 
{ 
    if ver_test "$(ghc-version)" -ge "7.9.20141222"; then
        local empty_db="${T}/empty.conf.d" ghc_pkg="$(ghc-libdir)/bin/ghc-pkg";
        if [[ ! -d ${empty_db} ]]; then
            "${ghc_pkg}" init "${empty_db}" || die "Failed to initialize empty global db";
        fi;
        echo "$(ghc-libdir)/bin/ghc-pkg" "--global-package-db=${empty_db}";
    else
        if ver_test "$(ghc-version)" -ge "7.7.20121101"; then
            echo '[]' > "${T}/empty.conf";
            echo "$(ghc-libdir)/bin/ghc-pkg" "--global-package-db=${T}/empty.conf";
        else
            if ver_test "$(ghc-version)" -ge "7.5.20120516"; then
                echo '[]' > "${T}/empty.conf";
                echo "$(ghc-libdir)/ghc-pkg" "--global-package-db=${T}/empty.conf";
            else
                echo '[]' > "${T}/empty.conf";
                echo "$(ghc-libdir)/ghc-pkg" "--global-conf=${T}/empty.conf";
            fi;
        fi;
    fi
}
ghc-install-pkg () 
{ 
    local localpkgconf="${T}/$(ghc-localpkgconfd)";
    local pkg_path pkg pkg_db="${D}/$(ghc-package-db)" hint_db="${D}/$(ghc-confdir)";
    $(ghc-getghcpkgbin) init "${localpkgconf}" || die "Failed to initialize empty local db";
    for pkg_config_file in "$@";
    do
        $(ghc-getghcpkgbin) -f "${localpkgconf}" update - --force < "${pkg_config_file}" || die "failed to register ${pkg}";
    done;
    check-for-collisions "${localpkgconf}";
    mkdir -p "${pkg_db}" || die;
    for pkg_path in "${localpkgconf}"/*.conf;
    do
        pkg=$(basename "${pkg_path}");
        cp "${pkg_path}" "${pkg_db}/${pkg}" || die;
    done;
    mkdir -p "${hint_db}" || die;
    for pkg_config_file in "$@";
    do
        local pkg_name="gentoo-${CATEGORY}-${PF}-"$(basename "${pkg_config_file}");
        cp "${pkg_config_file}" "${hint_db}/${pkg_name}" || die;
        chmod 0644 "${hint_db}/${pkg_name}" || die;
    done
}
ghc-is-dynamic () 
{ 
    $(ghc-getghc) --info | grep "GHC Dynamic" | grep -q "YES"
}
ghc-libdir () 
{ 
    if [[ -z "${_GHC_LIBDIR_CACHE}" ]]; then
        _GHC_LIBDIR_CACHE="$($(ghc-getghc) --print-libdir)";
    fi;
    echo "${_GHC_LIBDIR_CACHE}"
}
ghc-localpkgconfd () 
{ 
    echo "${PF}.conf.d"
}
ghc-make-args () 
{ 
    local ghc_make_args=();
    if ghc-supports-smp && ghc-supports-parallel-make; then
        echo "-j$(makeopts_jobs) +RTS -A256M -qb0 -RTS";
        ghc_make_args=();
    fi;
    echo "${ghc_make_args[@]}"
}
ghc-package-db () 
{ 
    echo "$(ghc-libdir)/package.conf.d"
}
ghc-package-exists () 
{ 
    $(ghc-getghcpkg) describe "$1" > /dev/null 2>&1
}
ghc-package_pkg_postinst () 
{ 
    ghc-recache-db
}
ghc-package_pkg_postrm () 
{ 
    ghc-recache-db
}
ghc-package_pkg_prerm () 
{ 
    ewarn "ghc-package.eclass: 'ghc-package_pkg_prerm()' is a noop";
    ewarn "ghc-package.eclass: consider 'haskell-cabal_pkg_postrm()' instead"
}
ghc-pkgdeps () 
{ 
    echo $($(ghc-getghcpkg) describe "${1}") | sed -e '/depends/,/^.*:/ !d' -e 's/\(.*\)-\(.*\)-\(.*\)/\1 \2/' -e 's/^.*://g'
}
ghc-pm-version () 
{ 
    local pm_ghc_p;
    if [[ -z "${_GHC_PM_VERSION_CACHE}" ]]; then
        pm_ghc_p=$(best_version dev-lang/ghc);
        _GHC_PM_VERSION_CACHE="PM:${pm_ghc_p#dev-lang/ghc-}";
    fi;
    echo "${_GHC_PM_VERSION_CACHE}"
}
ghc-recache-db () 
{ 
    einfo "Recaching GHC package DB";
    $(ghc-getghcpkg) recache
}
ghc-register-pkg () 
{ 
    ghc-recache-db
}
ghc-reregister () 
{ 
    ghc-recache-db
}
ghc-supports-interpreter () 
{ 
    $(ghc-getghc) --info | grep "Have interpreter" | grep -q "YES"
}
ghc-supports-parallel-make () 
{ 
    $(ghc-getghc) --info | grep "Support parallel --make" | grep -q "YES"
}
ghc-supports-shared-libraries () 
{ 
    $(ghc-getghc) --info | grep "RTS ways" | grep -q "dyn"
}
ghc-supports-smp () 
{ 
    $(ghc-getghc) --info | grep "Support SMP" | grep -q "YES"
}
ghc-supports-threaded-runtime () 
{ 
    $(ghc-getghc) --info | grep "RTS ways" | grep -q "thr"
}
ghc-unregister-pkg () 
{ 
    ghc-recache-db
}
ghc-version () 
{ 
    if [[ -z "${_GHC_VERSION_CACHE}" ]]; then
        _GHC_VERSION_CACHE="$($(ghc-getghc) --numeric-version)";
    fi;
    echo "${_GHC_VERSION_CACHE}"
}
has_multilib_profile () 
{ 
    [ -n "${MULTILIB_ABIS}" -a "${MULTILIB_ABIS}" != "${MULTILIB_ABIS/ /}" ]
}
haskell-cabal_pkg_postinst () 
{ 
    ghc-package_pkg_postinst
}
haskell-cabal_pkg_postrm () 
{ 
    ghc-package_pkg_postrm
}
haskell-cabal_pkg_setup () 
{ 
    if [[ -n ${CABAL_HAS_LIBRARIES} ]]; then
        [[ ${RDEPEND} == *dev-lang/ghc* ]] || eqawarn "QA Notice: A library does not have runtime dependency on dev-lang/ghc.";
    fi;
    if [[ -n "${CABAL_UNKNOWN}" ]]; then
        eqawarn "QA Notice: Unknown entry in CABAL_FEATURES: ${CABAL_UNKNOWN}";
    fi;
    if cabal-is-dummy-lib; then
        einfo "${P} is included in ghc-${CABAL_CORE_LIB_GHC_PV}, nothing to install.";
    fi
}
haskell-cabal_src_compile () 
{ 
    pushd "${S}" > /dev/null || die;
    cabal_src_compile "$@";
    popd > /dev/null || die
}
haskell-cabal_src_configure () 
{ 
    cabal-is-dummy-lib && return;
    pushd "${S}" > /dev/null || die;
    cabal-bootstrap;
    cabal-configure "$@";
    popd > /dev/null || die
}
haskell-cabal_src_install () 
{ 
    pushd "${S}" > /dev/null || die;
    cabal_src_install;
    popd > /dev/null || die
}
haskell-cabal_src_test () 
{ 
    local cabaltest=();
    pushd "${S}" > /dev/null || die;
    if cabal-is-dummy-lib; then
        einfo ">>> No tests for dummy library: ${CATEGORY}/${PF}";
    else
        einfo ">>> Test phase [cabal test]: ${CATEGORY}/${PF}";
        if ./setup test --help | grep -q -- "'streaming'"; then
            cabaltest+=(--show-details=streaming);
        fi;
        set -- test "${cabaltest[@]}" ${CABAL_TEST_FLAGS} "$@" ${CABAL_EXTRA_TEST_FLAGS};
        echo ./setup "$@";
        ./setup "$@" || die "cabal test failed";
    fi;
    popd > /dev/null || die
}
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} ]]
}
make_desktop_entry () 
{ 
    [[ -z $1 ]] && die "make_desktop_entry: You must specify the executable";
    local exec=${1};
    local name=${2:-${PN}};
    local icon=${3:-${PN}};
    local type=${4};
    local fields=${5};
    if [[ -z ${type} ]]; then
        local catmaj=${CATEGORY%%-*};
        local catmin=${CATEGORY##*-};
        case ${catmaj} in 
            app)
                case ${catmin} in 
                    accessibility)
                        type="Utility;Accessibility"
                    ;;
                    admin)
                        type=System
                    ;;
                    antivirus)
                        type=System
                    ;;
                    arch)
                        type="Utility;Archiving"
                    ;;
                    backup)
                        type="Utility;Archiving"
                    ;;
                    cdr)
                        type="AudioVideo;DiscBurning"
                    ;;
                    dicts)
                        type="Office;Dictionary"
                    ;;
                    doc)
                        type=Documentation
                    ;;
                    editors)
                        type="Utility;TextEditor"
                    ;;
                    emacs)
                        type="Development;TextEditor"
                    ;;
                    emulation)
                        type="System;Emulator"
                    ;;
                    laptop)
                        type="Settings;HardwareSettings"
                    ;;
                    office)
                        type=Office
                    ;;
                    pda)
                        type="Office;PDA"
                    ;;
                    vim)
                        type="Development;TextEditor"
                    ;;
                    xemacs)
                        type="Development;TextEditor"
                    ;;
                esac
            ;;
            dev)
                type="Development"
            ;;
            games)
                case ${catmin} in 
                    action | fps)
                        type=ActionGame
                    ;;
                    arcade)
                        type=ArcadeGame
                    ;;
                    board)
                        type=BoardGame
                    ;;
                    emulation)
                        type=Emulator
                    ;;
                    kids)
                        type=KidsGame
                    ;;
                    puzzle)
                        type=LogicGame
                    ;;
                    roguelike)
                        type=RolePlaying
                    ;;
                    rpg)
                        type=RolePlaying
                    ;;
                    simulation)
                        type=Simulation
                    ;;
                    sports)
                        type=SportsGame
                    ;;
                    strategy)
                        type=StrategyGame
                    ;;
                esac;
                type="Game;${type}"
            ;;
            gnome)
                type="Gnome;GTK"
            ;;
            kde)
                type="KDE;Qt"
            ;;
            mail)
                type="Network;Email"
            ;;
            media)
                case ${catmin} in 
                    gfx)
                        type=Graphics
                    ;;
                    *)
                        case ${catmin} in 
                            radio)
                                type=Tuner
                            ;;
                            sound)
                                type=Audio
                            ;;
                            tv)
                                type=TV
                            ;;
                            video)
                                type=Video
                            ;;
                        esac;
                        type="AudioVideo;${type}"
                    ;;
                esac
            ;;
            net)
                case ${catmin} in 
                    dialup)
                        type=Dialup
                    ;;
                    ftp)
                        type=FileTransfer
                    ;;
                    im)
                        type=InstantMessaging
                    ;;
                    irc)
                        type=IRCClient
                    ;;
                    mail)
                        type=Email
                    ;;
                    news)
                        type=News
                    ;;
                    nntp)
                        type=News
                    ;;
                    p2p)
                        type=FileTransfer
                    ;;
                    voip)
                        type=Telephony
                    ;;
                esac;
                type="Network;${type}"
            ;;
            sci)
                case ${catmin} in 
                    astro*)
                        type=Astronomy
                    ;;
                    bio*)
                        type=Biology
                    ;;
                    calc*)
                        type=Calculator
                    ;;
                    chem*)
                        type=Chemistry
                    ;;
                    elec*)
                        type=Electronics
                    ;;
                    geo*)
                        type=Geology
                    ;;
                    math*)
                        type=Math
                    ;;
                    physics)
                        type=Physics
                    ;;
                    visual*)
                        type=DataVisualization
                    ;;
                esac;
                type="Education;Science;${type}"
            ;;
            sys)
                type="System"
            ;;
            www)
                case ${catmin} in 
                    client)
                        type=WebBrowser
                    ;;
                esac;
                type="Network;${type}"
            ;;
            *)
                type=
            ;;
        esac;
    fi;
    local slot=${SLOT%/*};
    if [[ ${slot} == "0" ]]; then
        local desktop_name="${PN}";
    else
        local desktop_name="${PN}-${slot}";
    fi;
    local desktop="${T}/$(echo ${exec} | sed 's:[[:space:]/:]:_:g')-${desktop_name}.desktop";
    type=${type%;}${type:+;};
    if [[ -n ${icon} && ${icon} != /* ]] && [[ ${icon} == *.xpm || ${icon} == *.png || ${icon} == *.svg ]]; then
        ewarn "As described in the Icon Theme Specification, icon file extensions are not";
        ewarn "allowed in .desktop files if the value is not an absolute path.";
        icon=${icon%.*};
    fi;
    cat <<-EOF > "${desktop}" || 
[Desktop Entry]
Name=${name}
Type=Application
Comment=${DESCRIPTION}
Exec=${exec}
TryExec=${exec%% *}
Icon=${icon}
Categories=${type}
EOF
 die
    if [[ ${fields:-=} != *=* ]]; then
        ewarn "make_desktop_entry: update your 5th arg to read Path=${fields}";
        fields="Path=${fields}";
    fi;
    if [[ -n ${fields} ]]; then
        printf '%b\n' "${fields}" >> "${desktop}" || die;
    fi;
    ( insopts -m 0644;
    insinto /usr/share/applications;
    doins "${desktop}" ) || die "installing desktop file failed"
}
make_session_desktop () 
{ 
    [[ -z $1 ]] && eerror "$0: You must specify the title" && return 1;
    [[ -z $2 ]] && eerror "$0: You must specify the command" && return 1;
    local title=$1;
    local command=$2;
    local desktop=${T}/${wm:-${PN}}.desktop;
    shift 2;
    cat <<-EOF > "${desktop}" || 
[Desktop Entry]
Name=${title}
Comment=This session logs you into ${title}
Exec=${command} $*
TryExec=${command}
Type=XSession
EOF
 die
    ( insopts -m 0644;
    insinto /usr/share/xsessions;
    doins "${desktop}" )
}
make_setup () 
{ 
    set -- -package "${cabalpackage}" --make "${setupmodule}" $(ghc-make-args) "${setup_bootstrap_args[@]}" ${HCFLAGS} ${GHC_BOOTSTRAP_FLAGS} "$@" -o setup;
    echo $(ghc-getghc) "$@";
    $(ghc-getghc) "$@"
}
make_wrapper () 
{ 
    local wrapper=$1 bin=$2 chdir=$3 libdir=$4 path=$5;
    local tmpwrapper=$(emktemp);
    has "${EAPI:-0}" 0 1 2 && local EPREFIX="";
    ( echo '#!/bin/sh';
    if [[ -n ${libdir} ]]; then
        local var;
        if [[ ${CHOST} == *-darwin* ]]; then
            var=DYLD_LIBRARY_PATH;
        else
            var=LD_LIBRARY_PATH;
        fi;
        cat <<-EOF
if [ "\${${var}+set}" = "set" ] ; then
export ${var}="\${${var}}:${EPREFIX}${libdir}"
else
export ${var}="${EPREFIX}${libdir}"
fi
EOF

    fi
    [[ -n ${chdir} ]] && printf 'cd "%s" &&\n' "${EPREFIX}${chdir}";
    printf 'exec %s "$@"\n' "${bin/#\//${EPREFIX}/}" ) > "${tmpwrapper}";
    chmod go+rx "${tmpwrapper}";
    if [[ -n ${path} ]]; then
        ( exeopts -m 0755;
        exeinto "${path}";
        newexe "${tmpwrapper}" "${wrapper}" ) || die;
    else
        newbin "${tmpwrapper}" "${wrapper}" || die;
    fi
}
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}}
}
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
}
newicon () 
{ 
    _iconins ${FUNCNAME} "$@"
}
newmenu () 
{ 
    ( insopts -m 0644;
    insinto /usr/share/applications;
    newins "$@" )
}
number_abis () 
{ 
    set -- `get_install_abis`;
    echo $#
}
optfeature () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    local i j msg;
    local desc=$1;
    local flag=0;
    shift;
    for i in "$@";
    do
        for j in ${i};
        do
            if has_version "${j}"; then
                flag=1;
            else
                flag=0;
                break;
            fi;
        done;
        if [[ ${flag} -eq 1 ]]; then
            break;
        fi;
    done;
    if [[ ${flag} -eq 0 ]]; then
        for i in "$@";
        do
            msg=" ";
            for j in ${i};
            do
                msg+=" ${j} and";
            done;
            msg="${msg:0: -4} for ${desc}";
            elog "${msg}";
        done;
    fi
}
path_exists () 
{ 
    eerror "path_exists has been removed.  Please see the following post";
    eerror "for a replacement snippet:";
    eerror "https://blogs.gentoo.org/mgorny/2018/08/09/inlining-path_exists/";
    die "path_exists is banned"
}
pkg_nofetch () 
{ 
    default
}
pkg_postinst () 
{ 
    haskell-cabal_pkg_postinst "$@"
}
pkg_postrm () 
{ 
    haskell-cabal_pkg_postrm "$@"
}
pkg_setup () 
{ 
    haskell-cabal_pkg_setup "$@"
}
preserve_old_lib () 
{ 
    if [[ ${EBUILD_PHASE} != "preinst" ]]; then
        eerror "preserve_old_lib() must be called from pkg_preinst() only";
        die "Invalid preserve_old_lib() usage";
    fi;
    [[ -z $1 ]] && die "Usage: preserve_old_lib <library to preserve> [more libraries to preserve]";
    has preserve-libs ${FEATURES} && return 0;
    has "${EAPI:-0}" 0 1 2 && local ED=${D} EROOT=${ROOT};
    local lib dir;
    for lib in "$@";
    do
        [[ -e ${EROOT}/${lib} ]] || continue;
        dir=${lib%/*};
        dodir ${dir} || die "dodir ${dir} failed";
        cp "${EROOT}"/${lib} "${ED}"/${lib} || die "cp ${lib} failed";
        touch "${ED}"/${lib};
    done
}
preserve_old_lib_notify () 
{ 
    if [[ ${EBUILD_PHASE} != "postinst" ]]; then
        eerror "preserve_old_lib_notify() must be called from pkg_postinst() only";
        die "Invalid preserve_old_lib_notify() usage";
    fi;
    has preserve-libs ${FEATURES} && return 0;
    has "${EAPI:-0}" 0 1 2 && local EROOT=${ROOT};
    local lib notice=0;
    for lib in "$@";
    do
        [[ -e ${EROOT}/${lib} ]] || continue;
        if [[ ${notice} -eq 0 ]]; then
            notice=1;
            ewarn "Old versions of installed libraries were detected on your system.";
            ewarn "In order to avoid breaking packages that depend on these old libs,";
            ewarn "the libraries are not being removed.  You need to run revdep-rebuild";
            ewarn "in order to remove these old dependencies.  If you do not have this";
            ewarn "helper program, simply emerge the 'gentoolkit' package.";
            ewarn;
        fi;
        ewarn "  # revdep-rebuild --library '${lib}' && rm '${lib}'";
    done
}
prune_libtool_files () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    local removing_all removing_modules opt;
    for opt in "$@";
    do
        case "${opt}" in 
            --all)
                removing_all=1;
                removing_modules=1
            ;;
            --modules)
                removing_modules=1
            ;;
            *)
                die "Invalid argument to ${FUNCNAME}(): ${opt}"
            ;;
        esac;
    done;
    local f;
    local queue=();
    while IFS= read -r -d '' f; do
        local archivefile=${f/%.la/.a};
        if ! sed -n -e '/^# Generated by .*libtool/q0;4q1' "${f}"; then
            continue;
        fi;
        [[ ${f} != ${archivefile} ]] || die 'regex sanity check failed';
        local reason= pkgconfig_scanned=;
        local snotlink=$(sed -n -e 's:^shouldnotlink=::p' "${f}");
        if [[ ${snotlink} == yes ]]; then
            if [[ -f ${archivefile} ]]; then
                einfo "Removing unnecessary ${archivefile#${D%/}} (static plugin)";
                queue+=("${archivefile}");
            fi;
            if [[ -n ${removing_modules} ]]; then
                reason='module';
            fi;
        else
            if [[ -n ${removing_all} ]]; then
                reason='requested';
            else
                if [[ ! -f ${archivefile} ]]; then
                    reason='no static archive';
                else
                    if [[ ! -n $(sed -nre                   "s/^(dependency_libs|inherited_linker_flags)='(.*)'$/\2/p"                  "${f}") ]]; then
                        reason='no libs & flags';
                    else
                        if [[ ! -n ${pkgconfig_scanned} ]]; then
                            local pc_libs=();
                            if [[ ! -n ${removing_all} ]]; then
                                local pc;
                                local tf=${T}/prune-lt-files.pc;
                                local pkgconf=$(tc-getPKG_CONFIG);
                                while IFS= read -r -d '' pc; do
                                    local arg libs;
                                    if ${pkgconf} --exists "${pc}" &> /dev/null; then
                                        sed -e '/^Requires:/d' "${pc}" > "${tf}";
                                        libs=$(${pkgconf} --libs "${tf}");
                                    else
                                        libs=$(sed -ne 's/^Libs://p' "${pc}");
                                    fi;
                                    for arg in ${libs};
                                    do
                                        if [[ ${arg} == -l* ]]; then
                                            if [[ ${arg} == '*$*' ]]; then
                                                eerror "${FUNCNAME}: variable substitution likely failed in ${pc}";
                                                eerror "(arg: ${arg})";
                                                eerror "Most likely, you need to add virtual/pkgconfig to DEPEND.";
                                                die "${FUNCNAME}: unsubstituted variable found in .pc";
                                            fi;
                                            pc_libs+=(lib${arg#-l}.la);
                                        fi;
                                    done;
                                done < <(find "${D}" -type f -name '*.pc' -print0);
                                rm -f "${tf}";
                            fi;
                            pkgconfig_scanned=1;
                        fi;
                        has "${f##*/}" "${pc_libs[@]}" && reason='covered by .pc';
                    fi;
                fi;
            fi;
        fi;
        if [[ -n ${reason} ]]; then
            einfo "Removing unnecessary ${f#${D%/}} (${reason})";
            queue+=("${f}");
        fi;
    done < <(find "${D}" -xtype f -name '*.la' -print0);
    if [[ -n ${queue[@]} ]]; then
        rm -f "${queue[@]}";
    fi
}
replace-hcflags () 
{ 
    [[ $# != 2 ]] && die "Usage: replace-hcflags <old flag> <new flag>";
    local f new=();
    for f in ${HCFLAGS};
    do
        if [[ ${f} == ${1} ]]; then
            einfo "HCFLAGS: replacing '${f}' to '${2}'";
            f=${2};
        fi;
        new+=("${f}");
    done;
    export HCFLAGS="${new[*]}";
    return 0
}
src_compile () 
{ 
    haskell-cabal_src_compile "$@"
}
src_configure () 
{ 
    haskell-cabal_src_configure $(cabal_flag dev dev)
}
src_install () 
{ 
    haskell-cabal_src_install "$@"
}
src_prepare () 
{ 
    default;
    CABAL_FILE=elm.cabal cabal_chdeps 'language-glsl >= 0.0.2 && < 0.3' 'language-glsl >= 0.0.2' 'containers >= 0.5.8.2 && < 0.6' 'containers >= 0.5.8.2'
}
src_test () 
{ 
    haskell-cabal_src_test "$@"
}
src_unpack () 
{ 
    default
}
strip-linguas () 
{ 
    local ls newls nols;
    if [[ $1 == "-i" ]] || [[ $1 == "-u" ]]; then
        local op=$1;
        shift;
        ls=$(find "$1" -name '*.po' -exec basename {} .po ';');
        shift;
        local d f;
        for d in "$@";
        do
            if [[ ${op} == "-u" ]]; then
                newls=${ls};
            else
                newls="";
            fi;
            for f in $(find "$d" -name '*.po' -exec basename {} .po ';');
            do
                if [[ ${op} == "-i" ]]; then
                    has ${f} ${ls} && newls="${newls} ${f}";
                else
                    has ${f} ${ls} || newls="${newls} ${f}";
                fi;
            done;
            ls=${newls};
        done;
    else
        ls="$@";
    fi;
    nols="";
    newls="";
    for f in ${LINGUAS};
    do
        if has ${f} ${ls}; then
            newls="${newls} ${f}";
        else
            nols="${nols} ${f}";
        fi;
    done;
    [[ -n ${nols} ]] && einfo "Sorry, but ${PN} does not support the LINGUAS:" ${nols};
    export LINGUAS=${newls:1}
}
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;
    $(tc-getTARGET_CPP) "${@}" -P - <<-EOF > /dev/null 2>&1
#if ${CONDITION}
true
#else
#error false
#endif
EOF

}
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-ld-is-lld () 
{ 
    local out;
    out=$($(tc-getLD "$@") --version 2>&1);
    if [[ ${out} == *"LLD"* ]]; then
        return 0;
    fi;
    local base="${T}/test-tc-lld";
    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} == *"LLD"* ]]; 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
}
use_if_iuse () 
{ 
    in_iuse $1 || return 1;
    use $1
}
ver_cut () 
{ 
    local range=${1};
    local v=${2:-${PV}};
    local start end;
    local -a comp;
    _ver_split "${v}";
    local max=$((${#comp[@]}/2));
    _ver_parse_range "${range}" "${max}";
    if [[ ${start} -gt 0 ]]; then
        start=$(( start*2 - 1 ));
    fi;
    printf "%s" "${comp[@]:start:end*2-start}" '
'
}
ver_rs () 
{ 
    local v;
    (( ${#} & 1 )) && v=${@: -1} || v=${PV};
    local start end i;
    local -a comp;
    _ver_split "${v}";
    local max=$((${#comp[@]}/2 - 1));
    while [[ ${#} -ge 2 ]]; do
        _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;
    _ver_compare "${va}" "${vb}";
    test $? "${op}" 2
}
trofi commented 4 years ago

It's caused by FEATURES=network-sandbox. Ebuild is not hermetic and needs a fix to bundle dependencies. Or as a workaround you can disable network-sandbox.

It's a dupe of Issue #618.