Jump to content
Read the Funtoo Newsletter: Summer 2023 ×
  • 0

Errors syncing and compiling gnome-kit ( failed )


freefog

Question

8 answers to this question

Recommended Posts

  • 0

Tried ego sync latter today and no error.

To compile sysprof I added dev-util/sysprof -gtk to package.use, I feel this is not the right thing to do.

But now I get a similar error with gnome-extra/sushi

Screenshot_20191122_211128.png.4962d43ce18dd73ab0efea231171a689.png

 

What should I do? What's the correct way to approach this?.

Thanks in advance.

Link to comment
Share on other sites

  • 0

Hi if I am missing anything relevant plz let me know:

 

 

+ I removed dev-util/sysprof -gtk to package.use to obtain the errors again:

sysprof.thumb.png.99fad756bc62530065b747e3a723b221.png

webkit-gtk.png.31f24409f957de1a11235ac0cfa57217.png

 

 

+ My make.conf file is as follows and I try to use "euse" to mod it:

USE="dbus udisks -bindist -systemd -gnome -dvdr -cups -bluetooth \
     -smartcard alsa pulseaudio qt5 introspection consolekit kde xinerama"

L10N="en_US"
LINGUAS="en_US"

( I have tons of questions about xinerama but that is outside the scope of this post )

 

 

+ emerge --info gnome-extra/sushi

=================================================================
                         System Settings
=================================================================
System uname: Linux-4.19.27-gentoo-r1-x86_64-Intel-R-_Core-TM-_i7_CPU_920_@_2.67GHz-with-gentoo-1.4
KiB Mem:    12281736 total,   3019316 free
KiB Swap:   18874364 total,  18874364 free
sh bash 5.0_p7
ld GNU ld (Gentoo 2.32 p2) 2.32.0
app-shells/bash:          5.0_p7::core-kit
dev-lang/perl:            5.28.2-r1::perl-kit
dev-lang/python:          2.7.15::python-kit, 3.6.8::python-kit, 3.7.3::python-kit
dev-util/cmake:           3.14.5::core-kit
sys-apps/baselayout:      2.6.1-r1::core-kit
sys-apps/openrc:          0.41.2-r2::core-kit
sys-apps/sandbox:         2.17::core-kit
sys-devel/autoconf:       2.13-r1::core-kit, 2.69-r4::core-kit
sys-devel/automake:       1.11.6-r3::core-kit, 1.16.1-r1::core-kit
sys-devel/binutils:       2.32-r1::core-kit
sys-devel/gcc:            9.2.0::core-kit
sys-devel/gcc-config:     2.0::core-kit
sys-devel/libtool:        2.4.6-r5::core-kit
sys-devel/make:           4.2.1-r4::core-kit
sys-kernel/linux-headers: 4.14::core-kit (virtual/os-headers)
sys-libs/glibc:           2.29-r3::core-kit
Repositories:

nokit
    location: /var/git/meta-repo/kits/nokit
    masters: core-kit
    priority: -500

core-gl-kit
    location: /var/git/meta-repo/kits/core-gl-kit
    masters: core-kit
    priority: 1

core-hw-kit
    location: /var/git/meta-repo/kits/core-hw-kit
    masters: core-kit
    priority: 1

core-kit
    location: /var/git/meta-repo/kits/core-kit
    masters: core-kit
    priority: 1
    aliases: gentoo

core-server-kit
    location: /var/git/meta-repo/kits/core-server-kit
    masters: core-kit
    priority: 1

core-ui-kit
    location: /var/git/meta-repo/kits/core-ui-kit
    masters: core-kit
    priority: 1

desktop-kit
    location: /var/git/meta-repo/kits/desktop-kit
    masters: core-kit
    priority: 1

dev-kit
    location: /var/git/meta-repo/kits/dev-kit
    masters: core-kit
    priority: 1

editors-kit
    location: /var/git/meta-repo/kits/editors-kit
    masters: core-kit
    priority: 1

games-kit
    location: /var/git/meta-repo/kits/games-kit
    masters: core-kit
    priority: 1

gnome-kit
    location: /var/git/meta-repo/kits/gnome-kit
    masters: core-kit
    priority: 1

haskell-kit
    location: /var/git/meta-repo/kits/haskell-kit
    masters: core-kit
    priority: 1

java-kit
    location: /var/git/meta-repo/kits/java-kit
    masters: core-kit
    priority: 1

kde-kit
    location: /var/git/meta-repo/kits/kde-kit
    masters: core-kit
    priority: 1

lang-kit
    location: /var/git/meta-repo/kits/lang-kit
    masters: core-kit
    priority: 1

lisp-scheme-kit
    location: /var/git/meta-repo/kits/lisp-scheme-kit
    masters: core-kit
    priority: 1

llvm-kit
    location: /var/git/meta-repo/kits/llvm-kit
    masters: core-kit
    priority: 1

media-kit
    location: /var/git/meta-repo/kits/media-kit
    masters: core-kit
    priority: 1

ml-lang-kit
    location: /var/git/meta-repo/kits/ml-lang-kit
    masters: core-kit
    priority: 1

net-kit
    location: /var/git/meta-repo/kits/net-kit
    masters: core-kit
    priority: 1

perl-kit
    location: /var/git/meta-repo/kits/perl-kit
    masters: core-kit
    priority: 1

python-kit
    location: /var/git/meta-repo/kits/python-kit
    masters: core-kit
    priority: 1

python-modules-kit
    location: /var/git/meta-repo/kits/python-modules-kit
    masters: core-kit
    priority: 1

ruby-kit
    location: /var/git/meta-repo/kits/ruby-kit
    masters: core-kit
    priority: 1

rust-kit
    location: /var/git/meta-repo/kits/rust-kit
    masters: core-kit
    priority: 1

science-kit
    location: /var/git/meta-repo/kits/science-kit
    masters: core-kit
    priority: 1

security-kit
    location: /var/git/meta-repo/kits/security-kit
    masters: core-kit
    priority: 1

text-kit
    location: /var/git/meta-repo/kits/text-kit
    masters: core-kit
    priority: 1

xfce-kit
    location: /var/git/meta-repo/kits/xfce-kit
    masters: core-kit
    priority: 1

xorg-kit
    location: /var/git/meta-repo/kits/xorg-kit
    masters: core-kit
    priority: 1

flatpak-overlay
    location: /var/lib/layman/flatpak-overlay
    sync-type: laymansync
    sync-uri: https://github.com/fosero/flatpak-overlay.git
    masters: core-kit
    priority: 50

ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="* -@EULA Oracle-BCLA-JavaSE"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=nehalem -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-march=nehalem -O2 -pipe"
DISTDIR="/var/cache/portage/distfiles"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-march=nehalem -O2 -pipe"
GENTOO_MIRRORS="https://fastpull-us.funtoo.org"
LANG="en_US.UTF-8"
LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed"
LINGUAS="en_US"
PKGDIR="/var/cache/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_TMPDIR="/var/tmp"
USE="X a52 aac acl alsa amd64 apng berkdb bluray bzip2 cdda cddb cdio cdr colord consolekit cracklib crypt curl cxx dbus declarative dnssd dri dts dvd dvdread eds egl elogind encode evo exif faac faad ffmpeg flac gdbm gif glamor glvnd gnome-keyring gnome-online-accounts gpm gstreamer gtk gtk3 gtkstyle ico iconv icu ieee1394 introspection ios ipod ipv6 jpeg jpeg2k kde kipi lame libass libguess libmpeg2 libnotify mad matroska mjpeg mmx modules mp3 mpeg mtp mudflap nautilus ncurses networkmanager nls nptl nsplugin ogg opengl openmp openrc-force pam pcre pdf phonon plasma png policykit postproc pppd pulseaudio python qml qt5 quicktime readline resolvconf sdl sdl1 semantic-desktop sndfile sse sse2 ssl startup-notification svg taglib tcpd theora tiff tracker truetype twolame udev udisks unicode v4l vaapi vdpau vorbis vpx vulkan wav wavpack wayland webp widgets win32codecs wmf x264 x265 xa xattr xcomposite xinerama xml xscreensaver xvid xvmc zeroconf zlib" ABI_X86="64" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel ice1724 intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="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 authn_core authz_core socache_shmcb unixd" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" GRUB_PLATFORMS="efi-64 pc" INPUT_DEVICES="evdev synaptics keyboard mouse" KERNEL="linux" L10N="en_US" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php7-3" POSTGRES_TARGETS="postgres9_5" PYTHON_SINGLE_TARGET="python3_7" PYTHON_TARGETS="python3_7 python2_7" QEMU_SOFTMMU_TARGETS="i386 x86_64" QEMU_USER_TARGETS="i386 x86_64" RUBY_TARGETS="ruby25 ruby26" USERLAND="GNU" VIDEO_CARDS="xa xvmc vaapi vdpau fbdev amdgpu gallium-radeonsi osmesa radeon radeonsi swrast vulkan-amdgpu" 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:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, ENV_UNSET, INSTALL_MASK, LC_ALL, MAKEOPTS, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS

=================================================================
                        Package Settings
=================================================================

gnome-extra/sushi-3.32.1::gnome-kit was built with the following:
USE="-office"

 

 

+ emerge -pvq gnome-extra/sushi

[ebuild     U ] gnome-extra/sushi-3.34.0-r1 [3.32.1] USE="wayland%* -office" 

 

 

+ /var/tmp/portage/gnome-extra/sushi-3.34.0-r1/temp/build.log

 * Package:    gnome-extra/sushi-3.34.0-r1
 * Repository: gnome-kit
 * Maintainer: gnome@gentoo.org
 * USE:        amd64 elibc_glibc kernel_linux userland_GNU
 * FEATURES:   network-sandbox preserve-libs sandbox userpriv usersandbox
>>> Unpacking source...
>>> Unpacking sushi-3.34.0.tar.xz to /var/tmp/portage/gnome-extra/sushi-3.34.0-r1/work
>>> Source unpacked in /var/tmp/portage/gnome-extra/sushi-3.34.0-r1/work
>>> Preparing source in /var/tmp/portage/gnome-extra/sushi-3.34.0-r1/work/sushi-3.34.0 ...
 * Applying gdk-wayland-fix.patch ...
 [ ok ]
>>> Source prepared.
>>> Configuring source in /var/tmp/portage/gnome-extra/sushi-3.34.0-r1/work/sushi-3.34.0 ...
meson --buildtype plain --libdir lib64 --localstatedir /var/lib --prefix /usr --sysconfdir /etc --wrap-mode nodownload /var/tmp/portage/gnome-extra/sushi-3.34.0-r1/work/sushi-3.34.0 /var/tmp/portage/gnome-extra/sushi-3.34.0-r1/work/sushi-3.34.0-build
[1mThe Meson build system[0m
Version: 0.50.1
Source dir: [1m/var/tmp/portage/gnome-extra/sushi-3.34.0-r1/work/sushi-3.34.0[0m
Build dir: [1m/var/tmp/portage/gnome-extra/sushi-3.34.0-r1/work/sushi-3.34.0-build[0m
Build type: [1mnative build[0m
Project name: [1msushi[0m
Project version: [1m3.34.0[0m
Appending CFLAGS from environment: '-march=nehalem -O2 -pipe'
Appending LDFLAGS from environment: '-Wl,-O1 -Wl,--sort-common -Wl,--as-needed'
Native C compiler: [1mx86_64-pc-linux-gnu-gcc[0m (gcc 9.2.0 "x86_64-pc-linux-gnu-gcc (Funtoo 9.2.0) 9.2.0")
Build machine cpu family: [1mx86_64[0m
Build machine cpu: [1mx86_64[0m
Found pkg-config: [1m/usr/bin/x86_64-pc-linux-gnu-pkg-config[0m (1.5.4)
Dependency [1mepoxy[0m found: [1;32mYES[0m 1.5.2
Dependency [1mevince-document-3.0[0m found: [1;32mYES[0m 3.34.1
Dependency [1mevince-view-3.0[0m found: [1;32mYES[0m 3.34.1
Dependency [1mfreetype2[0m found: [1;32mYES[0m 22.1.16
Dependency [1mgdk-pixbuf-2.0[0m found: [1;32mYES[0m 2.39.2
Dependency [1mgio-unix-2.0[0m found: [1;32mYES[0m 2.62.2
Dependency [1mglib-2.0[0m found: [1;32mYES[0m 2.62.2
Dependency [1mgstreamer-1.0[0m found: [1;32mYES[0m 1.14.4
Dependency [1mgstreamer-audio-1.0[0m found: [1;32mYES[0m 1.14.4
Dependency [1mgstreamer-tag-1.0[0m found: [1;32mYES[0m 1.14.4
Dependency [1mgstreamer-video-1.0[0m found: [1;32mYES[0m 1.14.4
Dependency [1mgtk+-3.0[0m found: [1;32mYES[0m 3.24.12
Dependency [1mgtk+-x11-3.0[0m found: [1;32mYES[0m 3.24.12
Dependency [1mgtk+-wayland-3.0[0m found: [1;32mYES[0m 3.24.12
Found CMake: [1m/usr/bin/cmake[0m (3.14.5)
Dependency [1mgtksourceview-4[0m found: [1;31mNO[0m (tried pkgconfig and cmake)

meson.build:22:0: [1;31mERROR:[0m Dependency "gtksourceview-4" not found, tried pkgconfig and cmake

A full log can be found at [1m/var/tmp/portage/gnome-extra/sushi-3.34.0-r1/work/sushi-3.34.0-build/meson-logs/meson-log.txt[0m
 * ERROR: gnome-extra/sushi-3.34.0-r1::gnome-kit failed (configure phase):
 *   (no error message)
 * 
 * Call stack:
 *     ebuild.sh, line   93:  Called src_configure
 *   environment, line 3751:  Called meson_src_configure
 *   environment, line 2617:  Called die
 * The specific snippet of code:
 *       tc-env_build "$@" || die
 * 
 * If you need support, post the output of `emerge --info '=gnome-extra/sushi-3.34.0-r1::gnome-kit'`,
 * the complete build log and the output of `emerge -pqv '=gnome-extra/sushi-3.34.0-r1::gnome-kit'`.
 * The complete build log is located at '/var/tmp/portage/gnome-extra/sushi-3.34.0-r1/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/gnome-extra/sushi-3.34.0-r1/temp/environment'.
 * Working directory: '/var/tmp/portage/gnome-extra/sushi-3.34.0-r1/work/sushi-3.34.0'
 * S: '/var/tmp/portage/gnome-extra/sushi-3.34.0-r1/work/sushi-3.34.0'

 

 

+  emerge --info '=dev-util/sysprof-3.34.1::gnome-kit'

Portage 2.3.78 (python 2.7.15-final-0, funtoo/1.0/linux-gnu/arch/x86-64bit, gcc-9.2.0, glibc-2.29-r3, 4.19.27-gentoo-r1 x86_64)
=================================================================
                         System Settings
=================================================================
System uname: Linux-4.19.27-gentoo-r1-x86_64-Intel-R-_Core-TM-_i7_CPU_920_@_2.67GHz-with-gentoo-1.4
KiB Mem:    12281744 total,   5427716 free
KiB Swap:   18874364 total,  18874364 free
sh bash 5.0_p7
ld GNU ld (Gentoo 2.32 p2) 2.32.0
app-shells/bash:          5.0_p7::core-kit
dev-lang/perl:            5.28.2-r1::perl-kit
dev-lang/python:          2.7.15::python-kit, 3.6.8::python-kit, 3.7.3::python-kit
dev-util/cmake:           3.14.5::core-kit
sys-apps/baselayout:      2.6.1-r1::core-kit
sys-apps/openrc:          0.41.2-r2::core-kit
sys-apps/sandbox:         2.17::core-kit
sys-devel/autoconf:       2.13-r1::core-kit, 2.69-r4::core-kit
sys-devel/automake:       1.11.6-r3::core-kit, 1.16.1-r1::core-kit
sys-devel/binutils:       2.32-r1::core-kit
sys-devel/gcc:            9.2.0::core-kit
sys-devel/gcc-config:     2.0::core-kit
sys-devel/libtool:        2.4.6-r5::core-kit
sys-devel/make:           4.2.1-r4::core-kit
sys-kernel/linux-headers: 4.14::core-kit (virtual/os-headers)
sys-libs/glibc:           2.29-r3::core-kit
Repositories:

nokit
    location: /var/git/meta-repo/kits/nokit
    masters: core-kit
    priority: -500

core-gl-kit
    location: /var/git/meta-repo/kits/core-gl-kit
    masters: core-kit
    priority: 1

core-hw-kit
    location: /var/git/meta-repo/kits/core-hw-kit
    masters: core-kit
    priority: 1

core-kit
    location: /var/git/meta-repo/kits/core-kit
    masters: core-kit
    priority: 1
    aliases: gentoo

core-server-kit
    location: /var/git/meta-repo/kits/core-server-kit
    masters: core-kit
    priority: 1

core-ui-kit
    location: /var/git/meta-repo/kits/core-ui-kit
    masters: core-kit
    priority: 1

desktop-kit
    location: /var/git/meta-repo/kits/desktop-kit
    masters: core-kit
    priority: 1

dev-kit
    location: /var/git/meta-repo/kits/dev-kit
    masters: core-kit
    priority: 1

editors-kit
    location: /var/git/meta-repo/kits/editors-kit
    masters: core-kit
    priority: 1

games-kit
    location: /var/git/meta-repo/kits/games-kit
    masters: core-kit
    priority: 1

gnome-kit
    location: /var/git/meta-repo/kits/gnome-kit
    masters: core-kit
    priority: 1

haskell-kit
    location: /var/git/meta-repo/kits/haskell-kit
    masters: core-kit
    priority: 1

java-kit
    location: /var/git/meta-repo/kits/java-kit
    masters: core-kit
    priority: 1

kde-kit
    location: /var/git/meta-repo/kits/kde-kit
    masters: core-kit
    priority: 1

lang-kit
    location: /var/git/meta-repo/kits/lang-kit
    masters: core-kit
    priority: 1

lisp-scheme-kit
    location: /var/git/meta-repo/kits/lisp-scheme-kit
    masters: core-kit
    priority: 1

llvm-kit
    location: /var/git/meta-repo/kits/llvm-kit
    masters: core-kit
    priority: 1

media-kit
    location: /var/git/meta-repo/kits/media-kit
    masters: core-kit
    priority: 1

ml-lang-kit
    location: /var/git/meta-repo/kits/ml-lang-kit
    masters: core-kit
    priority: 1

net-kit
    location: /var/git/meta-repo/kits/net-kit
    masters: core-kit
    priority: 1

perl-kit
    location: /var/git/meta-repo/kits/perl-kit
    masters: core-kit
    priority: 1

python-kit
    location: /var/git/meta-repo/kits/python-kit
    masters: core-kit
    priority: 1

python-modules-kit
    location: /var/git/meta-repo/kits/python-modules-kit
    masters: core-kit
    priority: 1

ruby-kit
    location: /var/git/meta-repo/kits/ruby-kit
    masters: core-kit
    priority: 1

rust-kit
    location: /var/git/meta-repo/kits/rust-kit
    masters: core-kit
    priority: 1

science-kit
    location: /var/git/meta-repo/kits/science-kit
    masters: core-kit
    priority: 1

security-kit
    location: /var/git/meta-repo/kits/security-kit
    masters: core-kit
    priority: 1

text-kit
    location: /var/git/meta-repo/kits/text-kit
    masters: core-kit
    priority: 1

xfce-kit
    location: /var/git/meta-repo/kits/xfce-kit
    masters: core-kit
    priority: 1

xorg-kit
    location: /var/git/meta-repo/kits/xorg-kit
    masters: core-kit
    priority: 1

flatpak-overlay
    location: /var/lib/layman/flatpak-overlay
    sync-type: laymansync
    sync-uri: https://github.com/fosero/flatpak-overlay.git
    masters: core-kit
    priority: 50

ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="* -@EULA Oracle-BCLA-JavaSE"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=nehalem -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-march=nehalem -O2 -pipe"
DISTDIR="/var/cache/portage/distfiles"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-march=nehalem -O2 -pipe"
GENTOO_MIRRORS="https://fastpull-us.funtoo.org"
LANG="en_US.UTF-8"
LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed"
LINGUAS="en_US"
PKGDIR="/var/cache/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_TMPDIR="/var/tmp"
USE="X a52 aac acl alsa amd64 apng berkdb bluray bzip2 cdda cddb cdio cdr colord consolekit cracklib crypt curl cxx dbus declarative dnssd dri dts dvd dvdread eds egl elogind encode evo exif faac faad ffmpeg flac gdbm gif glamor glvnd gnome-keyring gnome-online-accounts gpm gstreamer gtk gtk3 gtkstyle ico iconv icu ieee1394 introspection ios ipod ipv6 jpeg jpeg2k kde kipi lame libass libguess libmpeg2 libnotify mad matroska mjpeg mmx modules mp3 mpeg mtp mudflap nautilus ncurses networkmanager nls nptl nsplugin ogg opengl openmp openrc-force pam pcre pdf phonon plasma png policykit postproc pppd pulseaudio python qml qt5 quicktime readline resolvconf sdl sdl1 semantic-desktop sndfile sse sse2 ssl startup-notification svg taglib tcpd theora tiff tracker truetype twolame udev udisks unicode v4l vaapi vdpau vorbis vpx vulkan wav wavpack wayland webp widgets win32codecs wmf x264 x265 xa xattr xcomposite xinerama xml xscreensaver xvid xvmc zeroconf zlib" ABI_X86="64" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel ice1724 intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="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 authn_core authz_core socache_shmcb unixd" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" GRUB_PLATFORMS="efi-64 pc" INPUT_DEVICES="evdev synaptics keyboard mouse" KERNEL="linux" L10N="en_US" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php7-3" POSTGRES_TARGETS="postgres9_5" PYTHON_SINGLE_TARGET="python3_7" PYTHON_TARGETS="python3_7 python2_7" QEMU_SOFTMMU_TARGETS="i386 x86_64" QEMU_USER_TARGETS="i386 x86_64" RUBY_TARGETS="ruby25 ruby26" USERLAND="GNU" VIDEO_CARDS="xa xvmc vaapi vdpau fbdev amdgpu gallium-radeonsi osmesa radeon radeonsi swrast vulkan-amdgpu" 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:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, ENV_UNSET, INSTALL_MASK, LC_ALL, MAKEOPTS, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS

=================================================================
                        Package Settings
=================================================================

dev-util/sysprof-3.34.1::gnome-kit was built with the following:
USE="elogind -gtk -systemd"

 

 

+ emerge -pqv '=dev-util/sysprof-3.34.1::gnome-kit'

[ebuild   R   ] dev-util/sysprof-3.34.1  USE="elogind gtk* -systemd"

 

 

+ /var/tmp/portage/dev-util/sysprof-3.34.1/temp/build.log

 * Package:    dev-util/sysprof-3.34.1
 * Repository: gnome-kit
 * Maintainer: tetromino@gentoo.org leio@gentoo.org
 * USE:        amd64 elibc_glibc elogind gtk kernel_linux userland_GNU
 * FEATURES:   network-sandbox preserve-libs sandbox userpriv usersandbox
 * Determining the location of the kernel source code
 * Found kernel source directory:
 *     /usr/src/linux
 * Found sources for kernel version:
 *     4.19.27-gentoo-r1
/var/tmp/portage/dev-util/sysprof-3.34.1/temp/environment: line 140: warning: setlocale: LC_TIME: cannot change locale (en_GB.UTF-8)
>>> Unpacking source...
>>> Unpacking sysprof-3.34.1.tar.xz to /var/tmp/portage/dev-util/sysprof-3.34.1/work
>>> Source unpacked in /var/tmp/portage/dev-util/sysprof-3.34.1/work
/var/tmp/portage/dev-util/sysprof-3.34.1/temp/environment: line 140: warning: setlocale: LC_TIME: cannot change locale (en_GB.UTF-8)
>>> Preparing source in /var/tmp/portage/dev-util/sysprof-3.34.1/work/sysprof-3.34.1 ...
>>> Source prepared.
/var/tmp/portage/dev-util/sysprof-3.34.1/temp/environment: line 139: warning: setlocale: LC_TIME: cannot change locale (en_GB.UTF-8)
>>> Configuring source in /var/tmp/portage/dev-util/sysprof-3.34.1/work/sysprof-3.34.1 ...
locale: Cannot set LC_ALL to default locale: No such file or directory
meson --buildtype plain --libdir lib64 --localstatedir /var/lib --prefix /usr --sysconfdir /etc --wrap-mode nodownload -Dsystemdunitdir=/lib/systemd/system -Dwith_sysprofd=bundled -Denable_gtk=true /var/tmp/portage/dev-util/sysprof-3.34.1/work/sysprof-3.34.1 /var/tmp/portage/dev-util/sysprof-3.34.1/work/sysprof-3.34.1-build
[1mThe Meson build system[0m
Version: 0.50.1
Source dir: [1m/var/tmp/portage/dev-util/sysprof-3.34.1/work/sysprof-3.34.1[0m
Build dir: [1m/var/tmp/portage/dev-util/sysprof-3.34.1/work/sysprof-3.34.1-build[0m
Build type: [1mnative build[0m
Project name: [1msysprof[0m
Project version: [1m3.34.1[0m
Appending CFLAGS from environment: '-march=nehalem -O2 -pipe'
Appending LDFLAGS from environment: '-Wl,-O1 -Wl,--sort-common -Wl,--as-needed'
Native C compiler: [1mx86_64-pc-linux-gnu-gcc[0m (gcc 9.2.0 "x86_64-pc-linux-gnu-gcc (Funtoo 9.2.0) 9.2.0")
Appending CXXFLAGS from environment: '-march=nehalem -O2 -pipe'
Appending LDFLAGS from environment: '-Wl,-O1 -Wl,--sort-common -Wl,--as-needed'
Native C++ compiler: [1mx86_64-pc-linux-gnu-g++[0m (gcc 9.2.0 "x86_64-pc-linux-gnu-g++ (Funtoo 9.2.0) 9.2.0")
Build machine cpu family: [1mx86_64[0m
Build machine cpu: [1mx86_64[0m
Compiler for C supports arguments -fvisibility=hidden: [1;32mYES[0m
Found pkg-config: [1m/usr/bin/x86_64-pc-linux-gnu-pkg-config[0m (1.5.4)
Dependency [1mglib-2.0[0m found: [1;32mYES[0m 2.62.2
Dependency [1mgio-2.0[0m found: [1;32mYES[0m 2.62.2
Dependency [1mgio-unix-2.0[0m found: [1;32mYES[0m 2.62.2
Dependency [1mgtk+-3.0[0m found: [1;32mYES[0m 3.24.12
Found CMake: [1m/usr/bin/cmake[0m (3.14.5)
Dependency [1mlibdazzle-1.0[0m found: [1;31mNO[0m (tried pkgconfig and cmake)

meson.build:57:2: [1;31mERROR:[0m Dependency "libdazzle-1.0" not found, tried pkgconfig and cmake

A full log can be found at [1m/var/tmp/portage/dev-util/sysprof-3.34.1/work/sysprof-3.34.1-build/meson-logs/meson-log.txt[0m
 * ERROR: dev-util/sysprof-3.34.1::gnome-kit failed (configure phase):
 *   (no error message)
 * 
 * Call stack:
 *     ebuild.sh, line   93:  Called src_configure
 *   environment, line 4372:  Called meson_src_configure
 *   environment, line 3170:  Called die
 * The specific snippet of code:
 *       tc-env_build "$@" || die
 * 
 * If you need support, post the output of `emerge --info '=dev-util/sysprof-3.34.1::gnome-kit'`,
 * the complete build log and the output of `emerge -pqv '=dev-util/sysprof-3.34.1::gnome-kit'`.
 * The complete build log is located at '/var/tmp/portage/dev-util/sysprof-3.34.1/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/dev-util/sysprof-3.34.1/temp/environment'.
 * Working directory: '/var/tmp/portage/dev-util/sysprof-3.34.1/work/sysprof-3.34.1'
 * S: '/var/tmp/portage/dev-util/sysprof-3.34.1/work/sysprof-3.34.1'
/var/tmp/portage/dev-util/sysprof-3.34.1/temp/environment: line 139: warning: setlocale: LC_TIME: cannot change locale (en_GB.UTF-8)

 

 

+ emerge --info '=net-libs/webkit-gtk-2.26.2::gnome-kit'

Portage 2.3.78 (python 2.7.15-final-0, funtoo/1.0/linux-gnu/arch/x86-64bit, gcc-9.2.0, glibc-2.29-r3, 4.19.27-gentoo-r1 x86_64)
=================================================================
                         System Settings
=================================================================
System uname: Linux-4.19.27-gentoo-r1-x86_64-Intel-R-_Core-TM-_i7_CPU_920_@_2.67GHz-with-gentoo-1.4
KiB Mem:    12281744 total,   5159812 free
KiB Swap:   18874364 total,  18874364 free
sh bash 5.0_p7
ld GNU ld (Gentoo 2.32 p2) 2.32.0
app-shells/bash:          5.0_p7::core-kit
dev-lang/perl:            5.28.2-r1::perl-kit
dev-lang/python:          2.7.15::python-kit, 3.6.8::python-kit, 3.7.3::python-kit
dev-util/cmake:           3.14.5::core-kit
sys-apps/baselayout:      2.6.1-r1::core-kit
sys-apps/openrc:          0.41.2-r2::core-kit
sys-apps/sandbox:         2.17::core-kit
sys-devel/autoconf:       2.13-r1::core-kit, 2.69-r4::core-kit
sys-devel/automake:       1.11.6-r3::core-kit, 1.16.1-r1::core-kit
sys-devel/binutils:       2.32-r1::core-kit
sys-devel/gcc:            9.2.0::core-kit
sys-devel/gcc-config:     2.0::core-kit
sys-devel/libtool:        2.4.6-r5::core-kit
sys-devel/make:           4.2.1-r4::core-kit
sys-kernel/linux-headers: 4.14::core-kit (virtual/os-headers)
sys-libs/glibc:           2.29-r3::core-kit
Repositories:

nokit
    location: /var/git/meta-repo/kits/nokit
    masters: core-kit
    priority: -500

core-gl-kit
    location: /var/git/meta-repo/kits/core-gl-kit
    masters: core-kit
    priority: 1

core-hw-kit
    location: /var/git/meta-repo/kits/core-hw-kit
    masters: core-kit
    priority: 1

core-kit
    location: /var/git/meta-repo/kits/core-kit
    masters: core-kit
    priority: 1
    aliases: gentoo

core-server-kit
    location: /var/git/meta-repo/kits/core-server-kit
    masters: core-kit
    priority: 1

core-ui-kit
    location: /var/git/meta-repo/kits/core-ui-kit
    masters: core-kit
    priority: 1

desktop-kit
    location: /var/git/meta-repo/kits/desktop-kit
    masters: core-kit
    priority: 1

dev-kit
    location: /var/git/meta-repo/kits/dev-kit
    masters: core-kit
    priority: 1

editors-kit
    location: /var/git/meta-repo/kits/editors-kit
    masters: core-kit
    priority: 1

games-kit
    location: /var/git/meta-repo/kits/games-kit
    masters: core-kit
    priority: 1

gnome-kit
    location: /var/git/meta-repo/kits/gnome-kit
    masters: core-kit
    priority: 1

haskell-kit
    location: /var/git/meta-repo/kits/haskell-kit
    masters: core-kit
    priority: 1

java-kit
    location: /var/git/meta-repo/kits/java-kit
    masters: core-kit
    priority: 1

kde-kit
    location: /var/git/meta-repo/kits/kde-kit
    masters: core-kit
    priority: 1

lang-kit
    location: /var/git/meta-repo/kits/lang-kit
    masters: core-kit
    priority: 1

lisp-scheme-kit
    location: /var/git/meta-repo/kits/lisp-scheme-kit
    masters: core-kit
    priority: 1

llvm-kit
    location: /var/git/meta-repo/kits/llvm-kit
    masters: core-kit
    priority: 1

media-kit
    location: /var/git/meta-repo/kits/media-kit
    masters: core-kit
    priority: 1

ml-lang-kit
    location: /var/git/meta-repo/kits/ml-lang-kit
    masters: core-kit
    priority: 1

net-kit
    location: /var/git/meta-repo/kits/net-kit
    masters: core-kit
    priority: 1

perl-kit
    location: /var/git/meta-repo/kits/perl-kit
    masters: core-kit
    priority: 1

python-kit
    location: /var/git/meta-repo/kits/python-kit
    masters: core-kit
    priority: 1

python-modules-kit
    location: /var/git/meta-repo/kits/python-modules-kit
    masters: core-kit
    priority: 1

ruby-kit
    location: /var/git/meta-repo/kits/ruby-kit
    masters: core-kit
    priority: 1

rust-kit
    location: /var/git/meta-repo/kits/rust-kit
    masters: core-kit
    priority: 1

science-kit
    location: /var/git/meta-repo/kits/science-kit
    masters: core-kit
    priority: 1

security-kit
    location: /var/git/meta-repo/kits/security-kit
    masters: core-kit
    priority: 1

text-kit
    location: /var/git/meta-repo/kits/text-kit
    masters: core-kit
    priority: 1

xfce-kit
    location: /var/git/meta-repo/kits/xfce-kit
    masters: core-kit
    priority: 1

xorg-kit
    location: /var/git/meta-repo/kits/xorg-kit
    masters: core-kit
    priority: 1

flatpak-overlay
    location: /var/lib/layman/flatpak-overlay
    sync-type: laymansync
    sync-uri: https://github.com/fosero/flatpak-overlay.git
    masters: core-kit
    priority: 50

ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="* -@EULA Oracle-BCLA-JavaSE"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=nehalem -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-march=nehalem -O2 -pipe"
DISTDIR="/var/cache/portage/distfiles"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-march=nehalem -O2 -pipe"
GENTOO_MIRRORS="https://fastpull-us.funtoo.org"
LANG="en_US.UTF-8"
LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed"
LINGUAS="en_US"
PKGDIR="/var/cache/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_TMPDIR="/var/tmp"
USE="X a52 aac acl alsa amd64 apng berkdb bluray bzip2 cdda cddb cdio cdr colord consolekit cracklib crypt curl cxx dbus declarative dnssd dri dts dvd dvdread eds egl elogind encode evo exif faac faad ffmpeg flac gdbm gif glamor glvnd gnome-keyring gnome-online-accounts gpm gstreamer gtk gtk3 gtkstyle ico iconv icu ieee1394 introspection ios ipod ipv6 jpeg jpeg2k kde kipi lame libass libguess libmpeg2 libnotify mad matroska mjpeg mmx modules mp3 mpeg mtp mudflap nautilus ncurses networkmanager nls nptl nsplugin ogg opengl openmp openrc-force pam pcre pdf phonon plasma png policykit postproc pppd pulseaudio python qml qt5 quicktime readline resolvconf sdl sdl1 semantic-desktop sndfile sse sse2 ssl startup-notification svg taglib tcpd theora tiff tracker truetype twolame udev udisks unicode v4l vaapi vdpau vorbis vpx vulkan wav wavpack wayland webp widgets win32codecs wmf x264 x265 xa xattr xcomposite xinerama xml xscreensaver xvid xvmc zeroconf zlib" ABI_X86="64" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel ice1724 intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="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 authn_core authz_core socache_shmcb unixd" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" GRUB_PLATFORMS="efi-64 pc" INPUT_DEVICES="evdev synaptics keyboard mouse" KERNEL="linux" L10N="en_US" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php7-3" POSTGRES_TARGETS="postgres9_5" PYTHON_SINGLE_TARGET="python3_7" PYTHON_TARGETS="python3_7 python2_7" QEMU_SOFTMMU_TARGETS="i386 x86_64" QEMU_USER_TARGETS="i386 x86_64" RUBY_TARGETS="ruby25 ruby26" USERLAND="GNU" VIDEO_CARDS="xa xvmc vaapi vdpau fbdev amdgpu gallium-radeonsi osmesa radeon radeonsi swrast vulkan-amdgpu" 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:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, ENV_UNSET, INSTALL_MASK, LC_ALL, MAKEOPTS, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS

 

 

+ emerge -pqv '=net-libs/webkit-gtk-2.26.2::gnome-kit'

[ebuild     U ] net-libs/webkit-gtk-2.26.2 [2.24.3] USE="(X) bwrap%* egl geolocation gnome-keyring gstreamer introspection jpeg2k libnotify nsplugin opengl wayland webgl (-aqua) -coverage -doc -gles2 -spell -test (-jit%*)"

 

 

+ /var/tmp/portage/net-libs/webkit-gtk-2.26.2/temp/build.log

 * Package:    net-libs/webkit-gtk-2.26.2
 * Repository: gnome-kit
 * USE:        X amd64 bwrap egl elibc_glibc geolocation gnome-keyring gstreamer introspection jpeg2k kernel_linux libnotify nsplugin opengl userland_GNU wayland webgl
 * FEATURES:   network-sandbox preserve-libs sandbox userpriv usersandbox
/var/tmp/portage/net-libs/webkit-gtk-2.26.2/temp/environment: line 197: warning: setlocale: LC_TIME: cannot change locale (en_GB.UTF-8)
>>> Unpacking source...
>>> Unpacking webkitgtk-2.26.2.tar.xz to /var/tmp/portage/net-libs/webkit-gtk-2.26.2/work
>>> Source unpacked in /var/tmp/portage/net-libs/webkit-gtk-2.26.2/work
/var/tmp/portage/net-libs/webkit-gtk-2.26.2/temp/environment: line 197: warning: setlocale: LC_TIME: cannot change locale (en_GB.UTF-8)
>>> Preparing source in /var/tmp/portage/net-libs/webkit-gtk-2.26.2/work/webkitgtk-2.26.2 ...
 * Hardcoded definition(s) removed in CMakeLists.txt:
 *      set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of bu
 * Disabling deprecation warnings ...
 [ ok ]
>>> Source prepared.
/var/tmp/portage/net-libs/webkit-gtk-2.26.2/temp/environment: line 200: warning: setlocale: LC_TIME: cannot change locale (en_GB.UTF-8)
>>> Configuring source in /var/tmp/portage/net-libs/webkit-gtk-2.26.2/work/webkitgtk-2.26.2 ...
>>> Working in BUILD_DIR: "/var/tmp/portage/net-libs/webkit-gtk-2.26.2/work/webkit-gtk-2.26.2_build"
cmake -C /var/tmp/portage/net-libs/webkit-gtk-2.26.2/work/webkit-gtk-2.26.2_build/gentoo_common_config.cmake -G Ninja -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_QUARTZ_TARGET=no -DENABLE_API_TESTS=no -DENABLE_GTKDOC=no -DENABLE_GEOLOCATION=yes -DCMAKE_DISABLE_FIND_PACKAGE_OpenGLES2=ON -DENABLE_GLES2=no -DENABLE_VIDEO=yes -DENABLE_WEB_AUDIO=yes -DENABLE_INTROSPECTION=yes -DUSE_LIBNOTIFY=yes -DUSE_LIBSECRET=yes -DUSE_OPENJPEG=yes -DUSE_WOFF2=ON -DENABLE_BUBBLEWRAP_SANDBOX=yes -DENABLE_PLUGIN_PROCESS_GTK2=yes -DENABLE_SPELLCHECK=no -DENABLE_WAYLAND_TARGET=yes -DENABLE_WEBGL=yes -DCMAKE_DISABLE_FIND_PACKAGE_EGL=OFF -DCMAKE_DISABLE_FIND_PACKAGE_OpenGL=OFF -DENABLE_X11_TARGET=yes -DENABLE_OPENGL=ON -DCMAKE_BUILD_TYPE=Release -DPORT=GTK -DRUBY_EXECUTABLE=/usr/bin/ruby26 -DCMAKE_BUILD_TYPE=Gentoo -DCMAKE_TOOLCHAIN_FILE=/var/tmp/portage/net-libs/webkit-gtk-2.26.2/work/webkit-gtk-2.26.2_build/gentoo_toolchain.cmake  /var/tmp/portage/net-libs/webkit-gtk-2.26.2/work/webkitgtk-2.26.2
loading initial cache file /var/tmp/portage/net-libs/webkit-gtk-2.26.2/work/webkit-gtk-2.26.2_build/gentoo_common_config.cmake
-- The C compiler identification is GNU 9.2.0
-- The CXX compiler identification is GNU 9.2.0
-- Check for working C compiler: /usr/bin/x86_64-pc-linux-gnu-gcc
-- Check for working C compiler: /usr/bin/x86_64-pc-linux-gnu-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/x86_64-pc-linux-gnu-g++
-- Check for working CXX compiler: /usr/bin/x86_64-pc-linux-gnu-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- The CMake build type is: Gentoo
-- Found Perl: /usr/bin/perl (found suitable version "5.28.2", minimum required is "5.10.0") 
-- Found PerlModules_JSON::PP: TRUE  
-- Found PerlModules: TRUE  found components:  JSON::PP 
-- Found PythonInterp: /var/tmp/portage/net-libs/webkit-gtk-2.26.2/temp/python2.7/bin/python (found suitable version "2.7.15", minimum required is "2.7.0") 
-- Found Ruby: /usr/bin/ruby26 (found suitable version "2.6.3", minimum required is "1.9") 
-- Performing Test C_COMPILER_SUPPORTS_-fno-strict-aliasing
-- Performing Test C_COMPILER_SUPPORTS_-fno-strict-aliasing - Success
-- Performing Test CXX_COMPILER_SUPPORTS_-fno-strict-aliasing
-- Performing Test CXX_COMPILER_SUPPORTS_-fno-strict-aliasing - Success
-- Performing Test C_COMPILER_SUPPORTS_-fno-exceptions
-- Performing Test C_COMPILER_SUPPORTS_-fno-exceptions - Success
-- Performing Test CXX_COMPILER_SUPPORTS_-fno-exceptions
-- Performing Test CXX_COMPILER_SUPPORTS_-fno-exceptions - Success
-- Performing Test CXX_COMPILER_SUPPORTS_-fno-rtti
-- Performing Test CXX_COMPILER_SUPPORTS_-fno-rtti - Success
-- Performing Test C_COMPILER_SUPPORTS_-Wcast-align
-- Performing Test C_COMPILER_SUPPORTS_-Wcast-align - Success
-- Performing Test C_COMPILER_SUPPORTS_-Wformat-security
-- Performing Test C_COMPILER_SUPPORTS_-Wformat-security - Success
-- Performing Test C_COMPILER_SUPPORTS_-Wmissing-format-attribute
-- Performing Test C_COMPILER_SUPPORTS_-Wmissing-format-attribute - Success
-- Performing Test C_COMPILER_SUPPORTS_-Wpointer-arith
-- Performing Test C_COMPILER_SUPPORTS_-Wpointer-arith - Success
-- Performing Test C_COMPILER_SUPPORTS_-Wundef
-- Performing Test C_COMPILER_SUPPORTS_-Wundef - Success
-- Performing Test C_COMPILER_SUPPORTS_-Wwrite-strings
-- Performing Test C_COMPILER_SUPPORTS_-Wwrite-strings - Success
-- Performing Test CXX_COMPILER_SUPPORTS_-Wcast-align
-- Performing Test CXX_COMPILER_SUPPORTS_-Wcast-align - Success
-- Performing Test CXX_COMPILER_SUPPORTS_-Wformat-security
-- Performing Test CXX_COMPILER_SUPPORTS_-Wformat-security - Success
-- Performing Test CXX_COMPILER_SUPPORTS_-Wmissing-format-attribute
-- Performing Test CXX_COMPILER_SUPPORTS_-Wmissing-format-attribute - Success
-- Performing Test CXX_COMPILER_SUPPORTS_-Wpointer-arith
-- Performing Test CXX_COMPILER_SUPPORTS_-Wpointer-arith - Success
-- Performing Test CXX_COMPILER_SUPPORTS_-Wundef
-- Performing Test CXX_COMPILER_SUPPORTS_-Wundef - Success
-- Performing Test CXX_COMPILER_SUPPORTS_-Wwrite-strings
-- Performing Test CXX_COMPILER_SUPPORTS_-Wwrite-strings - Success
-- Performing Test C_COMPILER_SUPPORTS_-Qunused-arguments
-- Performing Test C_COMPILER_SUPPORTS_-Qunused-arguments - Failed
-- Performing Test C_COMPILER_SUPPORTS_-Wno-maybe-uninitialized
-- Performing Test C_COMPILER_SUPPORTS_-Wno-maybe-uninitialized - Success
-- Performing Test C_COMPILER_SUPPORTS_-Wno-noexcept-type
-- Performing Test C_COMPILER_SUPPORTS_-Wno-noexcept-type - Failed
-- Performing Test C_COMPILER_SUPPORTS_-Wno-parentheses-equality
-- Performing Test C_COMPILER_SUPPORTS_-Wno-parentheses-equality - Failed
-- Performing Test C_COMPILER_SUPPORTS_-Wno-psabi
-- Performing Test C_COMPILER_SUPPORTS_-Wno-psabi - Success
-- Performing Test CXX_COMPILER_SUPPORTS_-Qunused-arguments
-- Performing Test CXX_COMPILER_SUPPORTS_-Qunused-arguments - Failed
-- Performing Test CXX_COMPILER_SUPPORTS_-Wno-maybe-uninitialized
-- Performing Test CXX_COMPILER_SUPPORTS_-Wno-maybe-uninitialized - Success
-- Performing Test CXX_COMPILER_SUPPORTS_-Wno-noexcept-type
-- Performing Test CXX_COMPILER_SUPPORTS_-Wno-noexcept-type - Success
-- Performing Test CXX_COMPILER_SUPPORTS_-Wno-parentheses-equality
-- Performing Test CXX_COMPILER_SUPPORTS_-Wno-parentheses-equality - Failed
-- Performing Test CXX_COMPILER_SUPPORTS_-Wno-psabi
-- Performing Test CXX_COMPILER_SUPPORTS_-Wno-psabi - Success
-- Performing Test C_COMPILER_SUPPORTS_-Wno-expansion-to-defined
-- Performing Test C_COMPILER_SUPPORTS_-Wno-expansion-to-defined - Success
-- Performing Test CXX_COMPILER_SUPPORTS_-Wno-expansion-to-defined
-- Performing Test CXX_COMPILER_SUPPORTS_-Wno-expansion-to-defined - Success
-- Performing Test C_COMPILER_SUPPORTS_-Wall
-- Performing Test C_COMPILER_SUPPORTS_-Wall - Success
-- Performing Test C_COMPILER_SUPPORTS_-Wextra
-- Performing Test C_COMPILER_SUPPORTS_-Wextra - Success
-- Performing Test CXX_COMPILER_SUPPORTS_-Wall
-- Performing Test CXX_COMPILER_SUPPORTS_-Wall - Success
-- Performing Test CXX_COMPILER_SUPPORTS_-Wextra
-- Performing Test CXX_COMPILER_SUPPORTS_-Wextra - Success
-- Performing Test C_COMPILER_SUPPORTS_-fcolor-diagnostics
-- Performing Test C_COMPILER_SUPPORTS_-fcolor-diagnostics - Failed
-- Performing Test C_COMPILER_SUPPORTS_-fdiagnostics-color=always
-- Performing Test C_COMPILER_SUPPORTS_-fdiagnostics-color=always - Success
-- Performing Test CXX_COMPILER_SUPPORTS_-fcolor-diagnostics
-- Performing Test CXX_COMPILER_SUPPORTS_-fcolor-diagnostics - Failed
-- Performing Test CXX_COMPILER_SUPPORTS_-fdiagnostics-color=always
-- Performing Test CXX_COMPILER_SUPPORTS_-fdiagnostics-color=always - Success
-- Performing Test ATOMIC_INT64_IS_BUILTIN
-- Performing Test ATOMIC_INT64_IS_BUILTIN - Success
-- Looking for features.h
-- Looking for features.h - found
-- Looking for errno.h
-- Looking for errno.h - found
-- Looking for langinfo.h
-- Looking for langinfo.h - found
-- Looking for sys/mman.h
-- Looking for sys/mman.h - found
-- Looking for pthread_np.h
-- Looking for pthread_np.h - not found
-- Looking for strings.h
-- Looking for strings.h - found
-- Looking for sys/param.h
-- Looking for sys/param.h - found
-- Looking for sys/time.h
-- Looking for sys/time.h - found
-- Looking for sys/timeb.h
-- Looking for sys/timeb.h - found
-- Looking for linux/memfd.h
-- Looking for linux/memfd.h - found
-- Looking for _aligned_malloc
-- Looking for _aligned_malloc - not found
-- Looking for IsDebuggerPresent
-- Looking for IsDebuggerPresent - not found
-- Looking for localtime_r
-- Looking for localtime_r - found
-- Looking for malloc_trim
-- Looking for malloc_trim - found
-- Looking for strnstr
-- Looking for strnstr - not found
-- Looking for timegm
-- Looking for timegm - found
-- Looking for vasprintf
-- Looking for vasprintf - found
-- Looking for regexec
-- Looking for regexec - found
-- Looking for pthread_main_np
-- Looking for pthread_main_np - not found
-- Looking for SIGTRAP
-- Looking for SIGTRAP - found
-- Performing Test HAVE_STAT_BIRTHTIME_value
-- Performing Test HAVE_STAT_BIRTHTIME_value - Failed
-- Performing Test HAVE_TM_GMTOFF_value
-- Performing Test HAVE_TM_GMTOFF_value - Success
-- Performing Test HAVE_TM_ZONE_value
-- Performing Test HAVE_TM_ZONE_value - Success
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of __int128_t
-- Check size of __int128_t - done
-- Found PkgConfig: x86_64-pc-linux-gnu-pkg-config (found version "1.5.4") 
-- Found Cairo: /usr/include/cairo (found suitable version "1.16.0", minimum required is "1.14.0") 
-- Checking for module 'fontconfig'
--   Found fontconfig, version 2.13.0
-- Found Fontconfig: /usr/lib/libfontconfig.so (Required is at least version "2.8.0") 
-- Found Freetype: /usr/lib/libfreetype.so (found suitable version "2.9.1", minimum required is "2.4.2") 
-- Found LibGcrypt: /usr/lib/libgcrypt.so (found suitable version "1.8.4", minimum required is "1.6.0") 
-- Found GLIB: /usr/include/glib-2.0;/usr/lib64/glib-2.0/include (found suitable version "2.62.2", minimum required is "2.44.0") 
-- Checking for module 'gtk+-3.0'
--   Found gtk+-3.0, version 3.24.12
-- Checking for module 'gtk+-quartz-3.0'
--   Package 'gtk+-quartz-3.0', required by 'virtual:world', not found
-- Checking for module 'gtk+-x11-3.0'
--   Found gtk+-x11-3.0, version 3.24.12
-- Checking for module 'gtk+-wayland-3.0'
--   Found gtk+-wayland-3.0, version 3.24.12
-- Found GTK3: /usr/include/gtk-3.0;/usr/include/pango-1.0;/usr/include/glib-2.0;/usr/lib64/glib-2.0/include;/usr/lib64/libffi-3.3_rc0/include;/usr/include/harfbuzz;/usr/include/fribidi;/usr/include/freetype2;/usr/include/uuid;/usr/include/cairo;/usr/include/pixman-1;/usr/include/libpng16;/usr/include/gdk-pixbuf-2.0;/usr/include/libmount;/usr/include/blkid;/usr/include/gio-unix-2.0;/usr/include/atk-1.0;/usr/include/at-spi2-atk/2.0;/usr/include/at-spi-2.0;/usr/include/dbus-1.0;/usr/lib64/dbus-1.0/include (Required is at least version "3.22.0") 
-- Checking for module 'gdk-3.0'
--   Found gdk-3.0, version 3.24.12
-- Found GDK3: /usr/include/gtk-3.0;/usr/include/pango-1.0;/usr/include/glib-2.0;/usr/lib64/glib-2.0/include;/usr/lib64/libffi-3.3_rc0/include;/usr/include/harfbuzz;/usr/include/fribidi;/usr/include/freetype2;/usr/include/uuid;/usr/include/cairo;/usr/include/pixman-1;/usr/include/libpng16;/usr/include/gdk-pixbuf-2.0;/usr/include/libmount;/usr/include/blkid;/usr/include/gio-unix-2.0 (Required is at least version "3.22.0") 
-- Found Harfbuzz: /usr/include/harfbuzz (found version "2.5.3") 
-- Found the following ICU libraries:
--   data (required)
--   i18n (required)
--   uc (required)
-- Found ICU: /usr/include (found version "64.2") 
-- Found JPEG: /usr/lib/libjpeg.so (found version "62") 
-- Found LibSoup: /usr/include/libsoup-2.4 (found suitable version "2.68.2", minimum required is "2.54.0") 
-- Found LibXml2: /usr/lib64/libxml2.so (found suitable version "2.9.9", minimum required is "2.8.0") 
-- Found ZLIB: /usr/lib/libz.so (found version "1.2.11") 
-- Found PNG: /usr/lib/libpng.so (found version "1.6.37+apng") 
-- Checking for module 'sqlite3'
--   Found sqlite3, version 3.28.0
-- Found Sqlite: /usr/include  
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Checking for module 'atk'
--   Found atk, version 2.35.1
-- Found ATK: /usr/include/atk-1.0 (found suitable version "2.35.1", minimum required is "2.16.0") 
-- Found WebP: /usr/include;/usr/include  
-- Checking for module 'atspi-2'
--   Found atspi-2, version 2.34.0
-- Found ATSPI: /usr/include/at-spi-2.0;/usr/include/dbus-1.0;/usr/lib64/dbus-1.0/include;/usr/include/glib-2.0;/usr/lib64/glib-2.0/include;/usr/lib64/libffi-3.3_rc0/include (Required is at least version "2.5.3") 
-- Checking for module 'egl'
--   Found egl, version 1.5
-- Found EGL: /usr/include  
-- Checking for module 'gtk+-unix-print-3.0'
--   Found gtk+-unix-print-3.0, version 3.24.12
-- Found GTKUnixPrint: /usr/include/gtk-3.0/unix-print;/usr/include/gtk-3.0;/usr/include/pango-1.0;/usr/include/glib-2.0;/usr/lib64/glib-2.0/include;/usr/lib64/libffi-3.3_rc0/include;/usr/include/harfbuzz;/usr/include/fribidi;/usr/include/freetype2;/usr/include/uuid;/usr/include/cairo;/usr/include/pixman-1;/usr/include/libpng16;/usr/include/gdk-pixbuf-2.0;/usr/include/libmount;/usr/include/blkid;/usr/include/gio-unix-2.0;/usr/include/atk-1.0;/usr/include/at-spi2-atk/2.0;/usr/include/at-spi-2.0;/usr/include/dbus-1.0;/usr/lib64/dbus-1.0/include  
-- Checking for module 'gl'
--   Found gl, version 1.2
-- Found OpenGL: /usr/include  
-- Looking for include file GL/glx.h
-- Looking for include file GL/glx.h - found
-- Could NOT find WPE (missing: WPE_INCLUDE_DIRS WPE_LIBRARIES) (Required is at least version "1.3.0")
CMake Error at Source/cmake/OptionsGTK.cmake:203 (message):
  libwpe is required for USE_WPE_RENDERER
Call Stack (most recent call first):
  Source/cmake/WebKitCommon.cmake:56 (include)
  CMakeLists.txt:169 (include)


-- Configuring incomplete, errors occurred!
See also "/var/tmp/portage/net-libs/webkit-gtk-2.26.2/work/webkit-gtk-2.26.2_build/CMakeFiles/CMakeOutput.log".
See also "/var/tmp/portage/net-libs/webkit-gtk-2.26.2/work/webkit-gtk-2.26.2_build/CMakeFiles/CMakeError.log".
 * ERROR: net-libs/webkit-gtk-2.26.2::gnome-kit failed (configure phase):
 *   cmake failed
 * 
 * Call stack:
 *     ebuild.sh, line   93:  Called src_configure
 *   environment, line 5008:  Called cmake-utils_src_configure
 *   environment, line 1613:  Called die
 * The specific snippet of code:
 *       "${CMAKE_BINARY}" "${cmakeargs[@]}" "${CMAKE_USE_DIR}" || die "cmake failed";
 * 
 * If you need support, post the output of `emerge --info '=net-libs/webkit-gtk-2.26.2::gnome-kit'`,
 * the complete build log and the output of `emerge -pqv '=net-libs/webkit-gtk-2.26.2::gnome-kit'`.
 * The complete build log is located at '/var/tmp/portage/net-libs/webkit-gtk-2.26.2/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/net-libs/webkit-gtk-2.26.2/temp/environment'.
 * Working directory: '/var/tmp/portage/net-libs/webkit-gtk-2.26.2/work/webkit-gtk-2.26.2_build'
 * S: '/var/tmp/portage/net-libs/webkit-gtk-2.26.2/work/webkitgtk-2.26.2'
/var/tmp/portage/net-libs/webkit-gtk-2.26.2/temp/environment: line 200: warning: setlocale: LC_TIME: cannot change locale (en_GB.UTF-8)

 

 

+ /var/tmp/portage/net-libs/webkit-gtk-2.26.2/temp/environment

declare -x ABI="amd64"
declare -x ABI_MIPS=""
declare -x ABI_PPC=""
declare -x ABI_S390=""
declare -x ABI_X86=""
declare -x ALSA_CARDS=""
declare -x ALSA_PCM_PLUGINS=""
declare -x APACHE2_MODULES=""
declare -x APACHE2_MPMS=""
declare -x ARCH="amd64"
declare -x ASFLAGS_x86="--32"
declare BDEPEND="dev-util/ninja >=dev-util/cmake-3.9.6"
declare -x CALLIGRA_EXPERIMENTAL_FEATURES=""
declare -x CALLIGRA_FEATURES=""
declare -x CAMERAS=""
declare -x CBUILD="x86_64-pc-linux-gnu"
declare -x CDEFINE_amd64="__x86_64__"
declare -x CDEFINE_x86="__i386__"
declare -x CFLAGS="-march=nehalem -O2 -pipe"
declare -x CFLAGS_default
declare -x CFLAGS_x86="-m32"
declare -- CHECKREQS_DISK_BUILD="18G"
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_x86="i686-pc-linux-gnu"
declare -- CMAKE_BINARY="cmake"
declare -- CMAKE_BUILD_TYPE="Gentoo"
declare -- CMAKE_MAKEFILE_GENERATOR="ninja"
declare -- CMAKE_MIN_VERSION="3.9.6"
declare -- CMAKE_REMOVE_MODULES="yes"
declare -- CMAKE_REMOVE_MODULES_LIST="FindBLAS FindLAPACK"
declare -- CMAKE_USE_DIR="/var/tmp/portage/net-libs/webkit-gtk-2.26.2/work/webkitgtk-2.26.2"
declare -- CMAKE_VERBOSE="ON"
declare -- CMAKE_WARN_UNUSED_CLI="yes"
declare -x COLLECTD_PLUGINS=""
declare -x COLORFGBG="15;0"
declare -x CPU_FLAGS_ARM=""
declare -x CPU_FLAGS_X86=""
declare -x CROSSCOMPILE_OPTS=""
declare -x CTARGET_default="x86_64-pc-linux-gnu"
declare -x CURL_SSL=""
declare -x CXXFLAGS="-march=nehalem -O2 -pipe"
declare -x DEFAULT_ABI="amd64"
declare -x DEFINED_PHASES=" compile configure install postinst postrm preinst prepare pretend setup test"
declare DEPEND="
	>=x11-libs/cairo-1.16.0:=[X?]
	>=media-libs/fontconfig-2.13.0:1.0
	>=media-libs/freetype-2.9.0:2
	>=dev-libs/libgcrypt-1.7.0:0=
	>=x11-libs/gtk+-3.22:3[aqua?,introspection?,wayland?,X?]
	>=media-libs/harfbuzz-1.4.2:=[icu(+)]
	>=dev-libs/icu-3.8.1-r1:=
	virtual/jpeg:0=
	>=net-libs/libsoup-2.48:2.4[introspection?]
	>=dev-libs/libxml2-2.8.0:2
	>=media-libs/libpng-1.4:0=
	dev-db/sqlite:3=
	sys-libs/zlib:0
	>=dev-libs/atk-2.8.0
	media-libs/libwebp:=

	>=dev-libs/glib-2.40:2
	>=dev-libs/libxslt-1.1.7
	media-libs/woff2
	bwrap? ( >=sys-apps/bubblewrap-0.3.1:0 )
	gnome-keyring? ( app-crypt/libsecret )
	geolocation? ( >=app-misc/geoclue-2.1.5:2.0 )
	introspection? ( >=dev-libs/gobject-introspection-1.32.0:= )
	dev-libs/libtasn1:=
	nsplugin? ( >=x11-libs/gtk+-2.24.10:2 )
	spell? ( >=app-text/enchant-0.22:= )
	gstreamer? (
		>=media-libs/gstreamer-1.14:1.0
		>=media-libs/gst-plugins-base-1.14:1.0[egl?,gles2?,opengl?]
		>=media-plugins/gst-plugins-opus-1.14.4-r1:1.0
		>=media-libs/gst-plugins-bad-1.14:1.0 )

	X? (
		x11-libs/libX11
		x11-libs/libXcomposite
		x11-libs/libXdamage
		x11-libs/libXrender
		x11-libs/libXt )

	libnotify? ( x11-libs/libnotify )
	dev-libs/hyphen
	jpeg2k? ( >=media-libs/openjpeg-2.2.0:2= )

	egl? ( media-libs/mesa[egl] )
	gles2? ( media-libs/mesa[gles2] )
	opengl? ( virtual/opengl )
	webgl? (
		x11-libs/libXcomposite
		x11-libs/libXdamage )

	|| ( dev-lang/python:3.7 dev-lang/python:3.6 dev-lang/python:3.5 >=dev-lang/python-2.7.5-r2:2.7 )
	|| (  dev-lang/ruby:2.4 dev-lang/ruby:2.5 dev-lang/ruby:2.6 ) virtual/rubygems
	dev-util/xdg-dbus-proxy
	>=app-accessibility/at-spi2-core-2.5.3
	dev-util/glib-utils
	>=dev-util/gtk-doc-am-1.10
	>=dev-util/gperf-3.0.1
	>=sys-devel/bison-2.4.3
	|| ( >=sys-devel/gcc-6.0 >=sys-devel/clang-3.3 )
	sys-devel/gettext
	virtual/pkgconfig

	>=dev-lang/perl-5.10
	virtual/perl-Data-Dumper
	virtual/perl-Carp
	virtual/perl-JSON-PP

	doc? ( >=dev-util/gtk-doc-1.10 )
	geolocation? ( dev-util/gdbus-codegen )
  dev-util/ninja >=dev-util/cmake-3.9.6 >=app-portage/elt-patches-20170815 app-arch/xz-utils 
	dev-util/desktop-file-utils
	x11-misc/shared-mime-info
 test? ( 
	!prefix? ( x11-base/xorg-server[xvfb] )
	x11-apps/xhost
 )"
declare DESCRIPTION="Open source web browser engine"
declare -- DESKTOP_DATABASE_DIR="/usr/share/applications"
declare -x DESKTOP_SESSION="/usr/share/xsessions/plasma"
declare -x DESTTREE="/usr"
declare -x DIROPTIONS="-m0755"
declare -x DVB_CARDS=""
declare -x EAPI="6"
declare -x ELIBC="glibc"
declare -- ELTCONF=""
declare -x ENLIGHTENMENT_MODULES=""
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/net-libs/webkit-gtk-2.26.2/work/patch"
declare -- EPATCH_SUFFIX="patch.bz2"
declare -- EPOCHREALTIME="1574622602.796167"
declare -- EPOCHSECONDS="1574622602"
declare -x EPYTHON="python2.7"
declare -x EXEOPTIONS="-m0755"
declare -x FCDSL_CARDS=""
declare -x FCFLAGS="-march=nehalem -O2 -pipe"
declare -x FETCHCOMMAND_SSH="bash -c \"x=\\\${2#ssh://} ; host=\\\${x%%/*} ; port=\\\${host##*:} ; host=\\\${host%:*} ; [[ \\\${host} = \\\${port} ]] && port= ; exec rsync --rsh=\\\"ssh \\\${port:+-p\\\${port}} \\\${3}\\\" -avP \\\"\\\${host}:/\\\${x#*/}\\\" \\\"\\\$1\\\"\" rsync \"\${DISTDIR}/\${FILE}\" \"\${URI}\" \"\${PORTAGE_SSH_OPTS}\""
declare -x FFLAGS="-march=nehalem -O2 -pipe"
declare -x FFTOOLS=""
declare -x FLATPAK_USER_DIR="/root/MO/L/app/sandbox/flatpak"
declare -x FOO2ZJS_DEVICES=""
declare -x FRITZCAPI_CARDS=""
declare -x GCC_SPECS=""
declare -- GCONFTOOL_BIN="/usr/bin/gconftool-2"
declare -- GLIB_COMPILE_SCHEMAS="/usr/bin/glib-compile-schemas"
declare -- GNOME2_EAUTORECONF=""
declare -- GNOME2_LA_PUNT=""
declare -- GNOME_ORG_MODULE="webkit-gtk"
declare -- GNOME_ORG_PVP="2.26"
declare -- GNOME_TARBALL_SUFFIX="xz"
declare -x GPSD_PROTOCOLS=""
declare -x GRUB_PLATFORMS=""
declare -x GSETTINGS_BACKEND="memory"
declare -x GST_INSPECT="/bin/true"
declare -x GST_REGISTRY="/var/tmp/portage/net-libs/webkit-gtk-2.26.2/temp/registry.xml"
declare -x GS_LIB="/home/nabawe/.fonts"
declare -x GTK2_RC_FILES="/etc/gtk-2.0/gtkrc:/home/nabawe/.gtkrc-2.0:/home/nabawe/.config/gtkrc-2.0"
declare -x GTK_MODULES="canberra-gtk-module"
declare -x GTK_RC_FILES="/etc/gtk/gtkrc:/home/nabawe/.gtkrc:/home/nabawe/.config/gtkrc"
declare -x G_HOME="/var/tmp/portage/net-libs/webkit-gtk-2.26.2/temp"
declare HDEPEND=""
declare HOMEPAGE="https://www.webkitgtk.org"
declare -x INHERITED=" check-reqs toolchain-funcs multilib multiprocessing ninja-utils desktop epatch estack ltprune preserve-libs vcs-clean eutils flag-o-matic xdg-utils cmake-utils libtool eapi7-ver versionator gnome.org gnome2-utils xdg gnome2 pax-utils python-utils-r1 python-any-r1 ruby-utils ruby-single virtualx"
declare -x INPUT_DEVICES=""
declare -x INSDESTTREE=""
declare -x INSOPTIONS="-m0644"
declare IUSE="aqua +bwrap coverage doc +egl +geolocation gles2 gnome-keyring +gstreamer +introspection +jpeg2k libnotify nsplugin +opengl spell wayland +webgl +X test"
declare -x IUSE_EFFECTIVE="X alpha amd64 amd64-fbsd amd64-linux aqua arm arm-linux arm64 bwrap coverage doc egl 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 geolocation gles2 gnome-keyring gstreamer hppa ia64 introspection jpeg2k kernel_AIX kernel_Darwin kernel_FreeBSD kernel_HPUX kernel_NetBSD kernel_OpenBSD kernel_SunOS kernel_Winnt kernel_freemint kernel_linux libnotify m68k m68k-mint mips nios2 nsplugin opengl ppc ppc-aix ppc-macos ppc64 ppc64-linux prefix prefix-chain prefix-guest riscv s390 sh sparc sparc-fbsd sparc-solaris sparc64-solaris spell test userland_BSD userland_GNU wayland webgl x64-cygwin x64-macos x64-solaris x86 x86-cygwin x86-fbsd x86-linux x86-macos x86-solaris x86-winnt"
declare -x IUSE_IMPLICIT="prefix prefix-chain prefix-guest"
declare -x KDE_FULL_SESSION="true"
declare -x KDE_SESSION_UID="1000"
declare -x KDE_SESSION_VERSION="5"
declare -x KERNEL="linux"
declare -x KERNEL_ABI="amd64"
declare -x KEYWORDS="*"
declare -x KONSOLE_DBUS_SERVICE=":1.24"
declare -x KONSOLE_DBUS_SESSION="/Sessions/2"
declare -x KONSOLE_PROFILE_NAME="Default"
declare -x KONSOLE_VERSION="190402"
declare -x L10N=""
declare -x LADSPA_PATH="/usr/lib64/ladspa"
declare -x LANG="en_US.UTF-8"
declare -x LANGUAGE="en_US"
declare -x LCD_DEVICES=""
declare -x LC_COLLATE="C"
declare -x LC_MEASUREMENT="C"
declare -x LC_MESSAGES="C"
declare -x LC_MONETARY="C"
declare -x LC_NUMERIC="C"
declare -x LC_TIME="en_GB.UTF-8"
declare -x LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed"
declare -x LDFLAGS_default
declare -x LDFLAGS_x86="-m elf_i386"
declare -x LIBDIR_amd64="lib64"
declare -x LIBDIR_amd64_fbsd="lib64"
declare -x LIBDIR_default="lib"
declare -x LIBDIR_ppc="lib32"
declare -x LIBDIR_ppc64="lib64"
declare -x LIBDIR_sparc32="lib32"
declare -x LIBDIR_sparc64="lib64"
declare -x LIBDIR_x86="lib32"
declare -x LIBDIR_x86_fbsd="lib32"
declare -x LIBOPTIONS="-m0644"
declare -x LIBREOFFICE_EXTENSIONS=""
declare -x LICENSE="LGPL-2+ BSD"
declare -x LINGUAS="en_US"
declare -x LIRC_DEVICES=""
declare -x LLVM_TARGETS=""
declare -x MAIL="/var/mail/nabawe"
declare -x MAKEOPTS="-j8"
declare -x MANPAGER="manpager"
declare -- MIMEINFO_DATABASE_DIR="/usr/share/mime"
declare -x MISDN_CARDS=""
declare -x MONKEYD_PLUGINS=""
declare -x MULTILIB_ABIS="amd64"
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)"
declare -- MY_P="webkitgtk-2.26.2"
declare -x NETBEANS="apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml"
declare -x NETBEANS_MODULES=""
declare -x NGINX_MODULES_EXTERNAL=""
declare -x NGINX_MODULES_HTTP=""
declare -x NGINX_MODULES_MAIL=""
declare -x NGINX_MODULES_STREAM=""
declare -x OFED_DRIVERS=""
declare -x OFFICE_IMPLEMENTATION=""
declare -x OPENGL_PROFILE="xorg-x11"
declare -x OPENMPI_FABRICS=""
declare -x OPENMPI_OFED_FEATURES=""
declare -x OPENMPI_RM=""
declare -x OSS_CARDS=""
declare -x PAM_KWALLET5_LOGIN="/run/user/1000/kwallet5.socket"
declare -x PATH="/var/tmp/portage/net-libs/webkit-gtk-2.26.2/temp/python2.7/bin:/usr/lib/portage/python2.7/ebuild-helpers/xattr:/usr/lib/portage/python2.7/ebuild-helpers:/usr/lib/llvm/8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin"
declare -- PAX_MARKINGS="none"
declare PDEPEND=""
declare -x PHP_TARGETS=""
declare -x PKG_CONFIG_PATH="/var/tmp/portage/net-libs/webkit-gtk-2.26.2/temp/python2.7/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/webkit-gtk-2.26.2/html")
declare -a PORTAGE_DOSTRIP=([0]="/")
declare -a PORTAGE_DOSTRIP_SKIP=()
declare -x POSTGRES_TARGETS=""
declare -x PROFILEHOME=""
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 PYTHON="/usr/bin/python2.7"
declare -x PYTHONDONTWRITEBYTECODE="1"
declare -a PYTHON_COMPAT=([0]="python2_7" [1]="python3_5" [2]="python3_6" [3]="python3_7")
declare -- PYTHON_DEPS="|| ( dev-lang/python:3.7 dev-lang/python:3.6 dev-lang/python:3.5 >=dev-lang/python-2.7.5-r2:2.7 )"
declare -x PYTHON_SINGLE_TARGET=""
declare -x PYTHON_TARGETS=""
declare -x QEMU_SOFTMMU_TARGETS=""
declare -x QEMU_USER_TARGETS=""
declare -x QT_AUTO_SCREEN_SCALE_FACTOR="0"
declare RDEPEND="
	>=x11-libs/cairo-1.16.0:=[X?]
	>=media-libs/fontconfig-2.13.0:1.0
	>=media-libs/freetype-2.9.0:2
	>=dev-libs/libgcrypt-1.7.0:0=
	>=x11-libs/gtk+-3.22:3[aqua?,introspection?,wayland?,X?]
	>=media-libs/harfbuzz-1.4.2:=[icu(+)]
	>=dev-libs/icu-3.8.1-r1:=
	virtual/jpeg:0=
	>=net-libs/libsoup-2.48:2.4[introspection?]
	>=dev-libs/libxml2-2.8.0:2
	>=media-libs/libpng-1.4:0=
	dev-db/sqlite:3=
	sys-libs/zlib:0
	>=dev-libs/atk-2.8.0
	media-libs/libwebp:=

	>=dev-libs/glib-2.40:2
	>=dev-libs/libxslt-1.1.7
	media-libs/woff2
	bwrap? ( >=sys-apps/bubblewrap-0.3.1:0 )
	gnome-keyring? ( app-crypt/libsecret )
	geolocation? ( >=app-misc/geoclue-2.1.5:2.0 )
	introspection? ( >=dev-libs/gobject-introspection-1.32.0:= )
	dev-libs/libtasn1:=
	nsplugin? ( >=x11-libs/gtk+-2.24.10:2 )
	spell? ( >=app-text/enchant-0.22:= )
	gstreamer? (
		>=media-libs/gstreamer-1.14:1.0
		>=media-libs/gst-plugins-base-1.14:1.0[egl?,gles2?,opengl?]
		>=media-plugins/gst-plugins-opus-1.14.4-r1:1.0
		>=media-libs/gst-plugins-bad-1.14:1.0 )

	X? (
		x11-libs/libX11
		x11-libs/libXcomposite
		x11-libs/libXdamage
		x11-libs/libXrender
		x11-libs/libXt )

	libnotify? ( x11-libs/libnotify )
	dev-libs/hyphen
	jpeg2k? ( >=media-libs/openjpeg-2.2.0:2= )

	egl? ( media-libs/mesa[egl] )
	gles2? ( media-libs/mesa[gles2] )
	opengl? ( virtual/opengl )
	webgl? (
		x11-libs/libXcomposite
		x11-libs/libXdamage )
 "
declare REPOSITORY
declare REQUIRED_USE="
	geolocation? ( introspection )
	gles2? ( egl !opengl )
	gstreamer? ( opengl? ( egl ) )
	nsplugin? ( X )
	webgl? ( gstreamer
		|| ( gles2 opengl ) )
	wayland? ( egl )
	|| ( aqua wayland X )
 "
declare -x RESTRICT="test userpriv"
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 -- RUBY_DEPS="|| (  dev-lang/ruby:2.4 dev-lang/ruby:2.5 dev-lang/ruby:2.6 ) virtual/rubygems"
declare -x RUBY_TARGETS=""
declare -- RUBY_TARGETS_PREFERENCE="ruby24 ruby23 ruby25 ruby26"
declare -x S="/var/tmp/portage/net-libs/webkit-gtk-2.26.2/work/webkitgtk-2.26.2"
declare -x SANDBOX_DEBUG="0"
declare -x SANDBOX_DENY=""
declare -x SANDBOX_PREDICT="/var/tmp/portage/net-libs/webkit-gtk-2.26.2/homedir:/dev/crypto:/var/cache/man:/var/cache/fontconfig"
declare -x SANDBOX_READ="/:/var/tmp/portage"
declare -x SANDBOX_VERBOSE="1"
declare -x SANDBOX_WRITE=":/dev/console:/dev/fd:/dev/full:/dev/null:/dev/ptmx:/dev/pts/:/dev/pty:/dev/shm:/dev/tts:/dev/tty:/dev/vc/:/dev/zero:/proc/self/fd:/tmp/:/usr/lib/cf:/usr/lib/conftest:/usr/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/tmp/cf:/usr/tmp/conftest:/var/tmp/:/var/tmp/portage:/var/tmp/portage/net-libs/webkit-gtk-2.26.2/homedir/.bash_history"
declare -x SANE_BACKENDS=""
declare -- SCROLLKEEPER_DIR="/var/lib/scrollkeeper"
declare -- SCROLLKEEPER_UPDATE_BIN="/usr/bin/scrollkeeper-update"
declare -x SESSION_MANAGER="local/einm:@/tmp/.ICE-unix/5308,unix/einm:/tmp/.ICE-unix/5308"
declare -x SHELL="/bin/bash"
declare -x SHELL_SESSION_ID="afe185a1887d44cfa38f1652385ea049"
declare -x SLOT="4/37"
declare SRC_URI="https://www.webkitgtk.org/releases/webkitgtk-2.26.2.tar.xz"
declare -x SSH_ASKPASS="/usr/bin/ksshaskpass"
declare -x STAGE1_USE="multilib nptl nptlonly unicode"
declare -x SYMLINK_LIB="yes"
declare -x TWISTED_DISABLE_WRITING_OF_PLUGIN_CACHE="1"
declare -x USE="X amd64 bwrap egl elibc_glibc geolocation gnome-keyring gstreamer introspection jpeg2k kernel_linux libnotify nsplugin opengl userland_GNU wayland webgl"
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 arm-linux arm64 hppa ia64 m68k m68k-mint mips nios2 ppc ppc64 ppc64-linux ppc-aix ppc-macos riscv s390 sh sparc sparc64-solaris sparc-fbsd sparc-solaris x64-cygwin x64-macos x64-solaris x86 x86-cygwin x86-fbsd x86-linux x86-macos x86-solaris x86-winnt"
declare -x USE_EXPAND_VALUES_ELIBC="AIX bionic Cygwin Darwin DragonFly FreeBSD glibc HPUX Interix mingw mintlib musl NetBSD OpenBSD SunOS uclibc Winnt"
declare -x USE_EXPAND_VALUES_KERNEL="AIX Darwin FreeBSD freemint HPUX linux NetBSD OpenBSD SunOS Winnt"
declare -x USE_EXPAND_VALUES_USERLAND="BSD GNU"
declare -- USE_RUBY="ruby24 ruby25 ruby26"
declare -x UWSGI_PLUGINS=""
declare -x VIDEO_CARDS=""
declare -- VIRTUALX_COMMAND="emake"
declare -- VIRTUALX_DEPEND="
	!prefix? ( x11-base/xorg-server[xvfb] )
	x11-apps/xhost
"
declare -- VIRTUALX_REQUIRED="test"
declare -x VOICEMAIL_STORAGE=""
declare -x WINDOWID="50331655"
declare -x XCURSOR_THEME="breeze_cursors"
declare -x XDG_CACHE_HOME="/var/tmp/portage/net-libs/webkit-gtk-2.26.2/homedir/.cache"
declare -x XDG_CONFIG_DIRS="/etc/xdg"
declare -x XDG_CONFIG_HOME="/var/tmp/portage/net-libs/webkit-gtk-2.26.2/homedir/.config"
declare -x XDG_CURRENT_DESKTOP="KDE"
declare -x XDG_DATA_DIRS="/home/nabawe/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share"
declare -x XDG_DATA_HOME="/var/tmp/portage/net-libs/webkit-gtk-2.26.2/homedir/.local/share"
declare -x XDG_RUNTIME_DIR="/var/tmp/portage/net-libs/webkit-gtk-2.26.2/temp/run"
declare -x XDG_SEAT="seat0"
declare -x XDG_SEAT_PATH="/org/freedesktop/DisplayManager/Seat0"
declare -x XDG_SESSION_CLASS="user"
declare -x XDG_SESSION_COOKIE="einm-1574622109.789813-1667262517"
declare -x XDG_SESSION_DESKTOP="KDE"
declare -x XDG_SESSION_ID="1"
declare -x XDG_SESSION_PATH="/org/freedesktop/DisplayManager/Session0"
declare -x XDG_SESSION_TYPE="x11"
declare -x XDG_VTNR="7"
declare -x XFCE_PLUGINS=""
declare -x XTABLES_ADDONS=""
declare -- _CHECK_REQS_ECLASS_="1"
declare -- _CMAKE_UTILS_ECLASS="1"
declare -- _CMAKE_UTILS_SRC_PREPARE_HAS_RUN="1"
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 -- _FLAG_O_MATIC_ECLASS="1"
declare -- _LIBTOOL_ECLASS="1"
declare -- _LTPRUNE_ECLASS="1"
declare -- _MULTILIB_ECLASS="1"
declare -- _MULTIPROCESSING_ECLASS="1"
declare -- _NINJA_UTILS_ECLASS="1"
declare -- _PAX_UTILS_ECLASS="1"
declare -- _PRESERVE_LIBS_ECLASS="1"
declare -a _PYTHON_ALL_IMPLS=([0]="jython2_7" [1]="pypy" [2]="pypy3" [3]="python2_7" [4]="python3_5" [5]="python3_6" [6]="python3_7")
declare -- _PYTHON_ANY_R1="1"
declare -a _PYTHON_SUPPORTED_IMPLS=([0]="python2_7" [1]="python3_5" [2]="python3_6" [3]="python3_7")
declare -a _PYTHON_UNSUPPORTED_IMPLS=([0]="jython2_7" [1]="pypy" [2]="pypy3")
declare -- _PYTHON_UTILS_R1="1"
declare -- _RUBY_SINGLE="1"
declare -- _RUBY_UTILS="1"
declare -- _TOOLCHAIN_FUNCS_ECLASS="1"
declare -- _VERSIONATOR_ECLASS="1"
declare -- _VIRTUAL_X="1"
declare -- conf="webkit-gtk-2.26.2-r0"
PYTHON () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#.24.28PYTHON.29.2C_.24.7BEPYTHON.7D"
}
Xeconf () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    [[ ${EAPI} == [45] ]] || die "${FUNCNAME} is unsupported in EAPI > 5, please use 'virtx econf ....'";
    VIRTUALX_COMMAND="econf" virtualmake "$@"
}
Xemake () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    [[ ${EAPI} == [45] ]] || die "${FUNCNAME} is unsupported in EAPI > 5, please use 'virtx emake ....'";
    VIRTUALX_COMMAND="emake" virtualmake "$@"
}
Xmake () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    [[ ${EAPI} == [45] ]] || die "${FUNCNAME} is unsupported in EAPI > 5, please use 'virtx emake -j1 ....'";
    eqawarn "you should not execute make directly";
    eqawarn "rather execute Xemake -j1 if you have issues with parallel make";
    VIRTUALX_COMMAND="emake -j1" virtualmake "$@"
}
__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"
}
_cmake_check_build_dir () 
{ 
    : ${CMAKE_USE_DIR:=${S}};
    if [[ -n ${CMAKE_IN_SOURCE_BUILD} ]]; then
        BUILD_DIR="${CMAKE_USE_DIR}";
    else
        if [[ ! -n ${BUILD_DIR} && -n ${CMAKE_BUILD_DIR} ]]; then
            if [[ ${EAPI} != [56] ]]; then
                eerror "The CMAKE_BUILD_DIR variable has been renamed to BUILD_DIR.";
                die "The ebuild must be migrated to BUILD_DIR.";
            else
                eqawarn "The CMAKE_BUILD_DIR variable has been renamed to BUILD_DIR.";
                eqawarn "Please migrate the ebuild to use the new one.";
            fi;
            _RESPECT_CMAKE_BUILD_DIR=1;
        fi;
        if [[ -n ${_RESPECT_CMAKE_BUILD_DIR} ]]; then
            BUILD_DIR=${CMAKE_BUILD_DIR:-${WORKDIR}/${P}_build};
        else
            : ${BUILD_DIR:=${WORKDIR}/${P}_build};
        fi;
    fi;
    [[ ${EAPI} == [56] ]] && CMAKE_BUILD_DIR=${BUILD_DIR};
    mkdir -p "${BUILD_DIR}" || die;
    echo ">>> Working in BUILD_DIR: \"$BUILD_DIR\""
}
_cmake_cleanup_cmake () 
{ 
    : ${CMAKE_USE_DIR:=${S}};
    if [[ "${CMAKE_REMOVE_MODULES}" == "yes" ]]; then
        local name;
        for name in ${CMAKE_REMOVE_MODULES_LIST};
        do
            find "${S}" -name ${name}.cmake -exec rm -v {} + || die;
        done;
    fi;
    if [[ ! -e ${CMAKE_USE_DIR}/CMakeLists.txt ]]; then
        eerror "Unable to locate CMakeLists.txt under:";
        eerror "\"${CMAKE_USE_DIR}/CMakeLists.txt\"";
        eerror "Consider not inheriting the cmake eclass.";
        die "FATAL: Unable to find CMakeLists.txt";
    fi;
    _cmake_modify-cmakelists
}
_cmake_emake_src_make () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    [[ -e Makefile ]] || die "Makefile not found. Error during configure stage.";
    if [[ "${CMAKE_VERBOSE}" != "OFF" ]]; then
        emake VERBOSE=1 "$@" || die;
    else
        emake "$@" || die;
    fi
}
_cmake_generator_to_use () 
{ 
    local generator_name;
    case ${CMAKE_MAKEFILE_GENERATOR} in 
        ninja)
            case ${EAPI} in 
                5 | 6)
                    if ! ROOT=/ has_version dev-util/ninja; then
                        die "CMAKE_MAKEFILE_GENERATOR is set to ninja, but ninja is not installed. Please install dev-util/ninja or unset CMAKE_MAKEFILE_GENERATOR.";
                    fi
                ;;
                *)
                    if ! has_version -b dev-util/ninja; then
                        die "CMAKE_MAKEFILE_GENERATOR is set to ninja, but ninja is not installed. Please install dev-util/ninja or unset CMAKE_MAKEFILE_GENERATOR.";
                    fi
                ;;
            esac;
            generator_name="Ninja"
        ;;
        emake)
            generator_name="Unix Makefiles"
        ;;
        *)
            eerror "Unknown value for \${CMAKE_MAKEFILE_GENERATOR}";
            die "Value ${CMAKE_MAKEFILE_GENERATOR} is not supported"
        ;;
    esac;
    echo ${generator_name}
}
_cmake_modify-cmakelists () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    grep -qs "<<< Gentoo configuration >>>" "${CMAKE_USE_DIR}"/CMakeLists.txt && return 0;
    find "${CMAKE_USE_DIR}" -name CMakeLists.txt -exec sed -e '/^[[:space:]]*set[[:space:]]*([[:space:]]*CMAKE_BUILD_TYPE[[:space:]].*)/I{s/^/#_cmake_modify_IGNORE /g}' -e '/^[[:space:]]*set[[:space:]]*([[:space:]]*CMAKE_COLOR_MAKEFILE[[:space:]].*)/I{s/^/#_cmake_modify_IGNORE /g}' -e '/^[[:space:]]*set[[:space:]]*([[:space:]]*CMAKE_INSTALL_PREFIX[[:space:]].*)/I{s/^/#_cmake_modify_IGNORE /g}' -e '/^[[:space:]]*set[[:space:]]*([[:space:]]*CMAKE_VERBOSE_MAKEFILE[[:space:]].*)/I{s/^/#G_cmake_modify_IGNORE /g}' -i {} + || die "${LINENO}: failed to disable hardcoded settings";
    local x;
    for x in $(find "${CMAKE_USE_DIR}" -name CMakeLists.txt -exec grep -l "^#_cmake_modify_IGNORE" {} +;);
    do
        einfo "Hardcoded definition(s) removed in $(echo "${x}" | cut -c $((${#CMAKE_USE_DIR}+2))-):";
        einfo "$(grep -se '^#_cmake_modify_IGNORE' ${x} | cut -c 22-99)";
    done;
    cat >> "${CMAKE_USE_DIR}"/CMakeLists.txt <<-_EOF_ || 

MESSAGE(STATUS "<<< Gentoo configuration >>>
Build type      \${CMAKE_BUILD_TYPE}
Install path    \${CMAKE_INSTALL_PREFIX}
Compiler flags:
C               \${CMAKE_C_FLAGS}
C++             \${CMAKE_CXX_FLAGS}
Linker flags:
Executable      \${CMAKE_EXE_LINKER_FLAGS}
Module          \${CMAKE_MODULE_LINKER_FLAGS}
Shared          \${CMAKE_SHARED_LINKER_FLAGS}\n")
_EOF_
 die
}
_cmake_ninja_src_make () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    [[ -e build.ninja ]] || die "build.ninja not found. Error during configure stage.";
    eninja "$@"
}
_cmake_use_me_now () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    local arg=$2;
    [[ ! -z $3 ]] && arg=$3;
    [[ ${EAPI} == 5 ]] || die "${FUNCNAME[1]} is banned in EAPI 6 and later: use -D$1<related_CMake_variable>=\"\$(usex $2)\" instead";
    local uper capitalised x;
    [[ -z $2 ]] && die "cmake-utils_use-$1 <USE flag> [<flag name>]";
    if [[ ! -z $3 ]]; then
        echo "-D$1$3=$(use $2 && echo ON || echo OFF)";
    else
        uper=$(echo ${2} | tr '[:lower:]' '[:upper:]');
        capitalised=$(echo ${2} | sed 's/\<\(.\)\([^ ]*\)/\u\1\L\2/g');
        for x in $2 $uper $capitalised;
        do
            echo "-D$1$x=$(use $2 && echo ON || echo OFF) ";
        done;
    fi
}
_cmake_use_me_now_inverted () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    local arg=$2;
    [[ ! -z $3 ]] && arg=$3;
    if [[ ${EAPI} != 5 && "${FUNCNAME[1]}" != cmake-utils_use_find_package ]]; then
        die "${FUNCNAME[1]} is banned in EAPI 6 and later: use -D$1<related_CMake_variable>=\"\$(usex $2)\" instead";
    fi;
    local uper capitalised x;
    [[ -z $2 ]] && die "cmake-utils_use-$1 <USE flag> [<flag name>]";
    if [[ ! -z $3 ]]; then
        echo "-D$1$3=$(use $2 && echo OFF || echo ON)";
    else
        uper=$(echo ${2} | tr '[:lower:]' '[:upper:]');
        capitalised=$(echo ${2} | sed 's/\<\(.\)\([^ ]*\)/\u\1\L\2/g');
        for x in $2 $uper $capitalised;
        do
            echo "-D$1$x=$(use $2 && echo OFF || echo ON) ";
        done;
    fi
}
_filter-hardened () 
{ 
    local f;
    for f in "$@";
    do
        case "${f}" in 
            -fPIC | -fpic | -fPIE | -fpie | -Wl,pie | -pie)
                gcc-specs-pie || continue;
                if ! is-flagq -nopie && ! is-flagq -no-pie; then
                    if test-flags -nopie > /dev/null; then
                        append-flags -nopie;
                    else
                        append-flags -no-pie;
                    fi;
                fi
            ;;
            -fstack-protector)
                gcc-specs-ssp || continue;
                is-flagq -fno-stack-protector || append-flags $(test-flags -fno-stack-protector)
            ;;
            -fstack-protector-all)
                gcc-specs-ssp-to-all || continue;
                is-flagq -fno-stack-protector-all || append-flags $(test-flags -fno-stack-protector-all)
            ;;
            -fno-strict-overflow)
                gcc-specs-nostrict || continue;
                is-flagq -fstrict-overflow || append-flags $(test-flags -fstrict-overflow)
            ;;
        esac;
    done
}
_filter-var () 
{ 
    local f x var=$1 new=();
    shift;
    for f in ${!var};
    do
        for x in "$@";
        do
            [[ ${f} == ${x} ]] && continue 2;
        done;
        new+=("${f}");
    done;
    export ${var}="${new[*]}"
}
_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
}
_is_flagq () 
{ 
    local x var="$1[*]";
    for x in ${!var};
    do
        [[ ${x} == $2 ]] && return 0;
    done;
    return 1
}
_pax_list_files () 
{ 
    local f cmd;
    cmd=$1;
    shift;
    for f in "$@";
    do
        ${cmd} "     ${f}";
    done
}
_python_EPYTHON_supported () 
{ 
    debug-print-function ${FUNCNAME} "${@}";
    local EPYTHON=${1};
    local i=${EPYTHON/./_};
    case "${i}" in 
        python* | jython* | pypy*)

        ;;
        *)
            ewarn "Invalid EPYTHON: ${EPYTHON}";
            return 1
        ;;
    esac;
    if has "${i}" "${_PYTHON_SUPPORTED_IMPLS[@]}"; then
        if python_is_installed "${i}"; then
            if declare -f python_check_deps > /dev/null; then
                local PYTHON_USEDEP="python_targets_${i}(-),python_single_target_${i}(+)";
                python_check_deps;
                return ${?};
            fi;
            return 0;
        fi;
    else
        if ! has "${i}" "${_PYTHON_ALL_IMPLS[@]}"; then
            ewarn "Invalid EPYTHON: ${EPYTHON}";
        fi;
    fi;
    return 1
}
_python_check_dead_variables () 
{ 
    local v;
    for v in PYTHON_DEPEND PYTHON_USE_WITH{,_OR,_OPT} {RESTRICT,SUPPORT}_PYTHON_ABIS;
    do
        if [[ -n ${!v} ]]; then
            die "${v} is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#Ebuild_head";
        fi;
    done;
    for v in PYTHON_{CPPFLAGS,CFLAGS,CXXFLAGS,LDFLAGS};
    do
        if [[ -n ${!v} ]]; then
            die "${v} is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#PYTHON_CFLAGS";
        fi;
    done;
    for v in PYTHON_TESTS_RESTRICTED_ABIS PYTHON_EXPORT_PHASE_FUNCTIONS PYTHON_VERSIONED_{SCRIPTS,EXECUTABLES} PYTHON_NONVERSIONED_EXECUTABLES;
    do
        if [[ -n ${!v} ]]; then
            die "${v} is invalid for python-r1 suite";
        fi;
    done;
    for v in DISTUTILS_USE_SEPARATE_SOURCE_DIRECTORIES DISTUTILS_SETUP_FILES DISTUTILS_GLOBAL_OPTIONS DISTUTILS_SRC_TEST PYTHON_MODNAME;
    do
        if [[ -n ${!v} ]]; then
            die "${v} is invalid for distutils-r1, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#${v}";
        fi;
    done;
    if [[ -n ${DISTUTILS_DISABLE_TEST_DEPENDENCY} ]]; then
        die "${v} is invalid for distutils-r1, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#DISTUTILS_SRC_TEST";
    fi;
    for v in PYTHON_BDEPEND PYTHON_MULTIPLE_ABIS PYTHON_ABI_TYPE PYTHON_RESTRICTED_ABIS PYTHON_TESTS_FAILURES_TOLERANT_ABIS PYTHON_CFFI_MODULES_GENERATION_COMMANDS;
    do
        if [[ -n ${!v} ]]; then
            die "${v} is invalid for python-r1 suite";
        fi;
    done
}
_python_check_locale_sanity () 
{ 
    local -x LC_ALL=${1};
    local IFS=;
    local lc=({a..z});
    local uc=({A..Z});
    local input="${lc[*]}${uc[*]}";
    local output=$(tr '[:lower:][:upper:]' '[:upper:][:lower:]' <<<"${input}");
    [[ ${output} == "${uc[*]}${lc[*]}" ]]
}
_python_impl_matches () 
{ 
    [[ ${#} -ge 2 ]] || die "${FUNCNAME}: takes at least 2 parameters";
    local impl=${1} pattern;
    shift;
    for pattern in "$@";
    do
        if [[ ${pattern} == -2 ]]; then
            ! python_is_python3 "${impl}";
            return;
        else
            if [[ ${pattern} == -3 ]]; then
                python_is_python3 "${impl}";
                return;
            else
                if [[ ${impl/./_} == ${pattern/./_} ]]; then
                    return 0;
                fi;
            fi;
        fi;
    done;
    return 1
}
_python_impl_supported () 
{ 
    debug-print-function ${FUNCNAME} "${@}";
    [[ ${#} -eq 1 ]] || die "${FUNCNAME}: takes exactly 1 argument (impl).";
    local impl=${1};
    case "${impl}" in 
        python2_7 | python3_[567] | jython2_7)
            return 0
        ;;
        pypy1_[89] | pypy2_0 | python2_[56] | python3_[1234])
            return 1
        ;;
        pypy | pypy3)
            if [[ ${EAPI:-0} == [01234] ]]; then
                die "PyPy is supported in EAPI 5 and newer only.";
            fi
        ;;
        *)
            [[ -n ${PYTHON_COMPAT_NO_STRICT} ]] && return 1;
            die "Invalid implementation in PYTHON_COMPAT: ${impl}"
        ;;
    esac
}
_python_ln_rel () 
{ 
    debug-print-function ${FUNCNAME} "${@}";
    local target=${1};
    local symname=${2};
    local tgpath=${target%/*}/;
    local sympath=${symname%/*}/;
    local rel_target=;
    while [[ -n ${sympath} ]]; do
        local tgseg= symseg=;
        while [[ ! -n ${tgseg} && -n ${tgpath} ]]; do
            tgseg=${tgpath%%/*};
            tgpath=${tgpath#${tgseg}/};
        done;
        while [[ ! -n ${symseg} && -n ${sympath} ]]; do
            symseg=${sympath%%/*};
            sympath=${sympath#${symseg}/};
        done;
        if [[ ${tgseg} != ${symseg} ]]; then
            rel_target=../${rel_target}${tgseg:+${tgseg}/};
        fi;
    done;
    rel_target+=${tgpath}${target##*/};
    debug-print "${FUNCNAME}: ${symname} -> ${target}";
    debug-print "${FUNCNAME}: rel_target = ${rel_target}";
    ln -fs "${rel_target}" "${symname}"
}
_python_set_impls () 
{ 
    local i;
    if ! declare -p PYTHON_COMPAT &> /dev/null; then
        die 'PYTHON_COMPAT not declared.';
    fi;
    if [[ $(declare -p PYTHON_COMPAT) != "declare -a"* ]]; then
        die 'PYTHON_COMPAT must be an array.';
    fi;
    for i in "${PYTHON_COMPAT[@]}";
    do
        _python_impl_supported "${i}";
    done;
    local supp=() unsupp=();
    for i in "${_PYTHON_ALL_IMPLS[@]}";
    do
        if has "${i}" "${PYTHON_COMPAT[@]}"; then
            supp+=("${i}");
        else
            unsupp+=("${i}");
        fi;
    done;
    if [[ ! -n ${supp[@]} ]]; then
        die "No supported implementation in PYTHON_COMPAT.";
    fi;
    if [[ -n ${_PYTHON_SUPPORTED_IMPLS[@]} ]]; then
        if [[ ${_PYTHON_SUPPORTED_IMPLS[@]} != ${supp[@]} ]]; then
            eerror "Supported impls (PYTHON_COMPAT) changed between inherits!";
            eerror "Before: ${_PYTHON_SUPPORTED_IMPLS[*]}";
            eerror "Now   : ${supp[*]}";
            die "_PYTHON_SUPPORTED_IMPLS integrity check failed";
        fi;
        if [[ ${_PYTHON_UNSUPPORTED_IMPLS[@]} != ${unsupp[@]} ]]; then
            eerror "Unsupported impls changed between inherits!";
            eerror "Before: ${_PYTHON_UNSUPPORTED_IMPLS[*]}";
            eerror "Now   : ${unsupp[*]}";
            die "_PYTHON_UNSUPPORTED_IMPLS integrity check failed";
        fi;
    else
        _PYTHON_SUPPORTED_IMPLS=("${supp[@]}");
        _PYTHON_UNSUPPORTED_IMPLS=("${unsupp[@]}");
        readonly _PYTHON_SUPPORTED_IMPLS _PYTHON_UNSUPPORTED_IMPLS;
    fi
}
_ruby_implementation_depend () 
{ 
    local rubypn=;
    local rubyslot=;
    case $1 in 
        ruby18)
            rubypn="dev-lang/ruby";
            rubyslot=":1.8"
        ;;
        ruby19)
            rubypn="dev-lang/ruby";
            rubyslot=":1.9"
        ;;
        ruby20)
            rubypn="dev-lang/ruby";
            rubyslot=":2.0"
        ;;
        ruby21)
            rubypn="dev-lang/ruby";
            rubyslot=":2.1"
        ;;
        ruby22)
            rubypn="dev-lang/ruby";
            rubyslot=":2.2"
        ;;
        ruby23)
            rubypn="dev-lang/ruby";
            rubyslot=":2.3"
        ;;
        ruby24)
            rubypn="dev-lang/ruby";
            rubyslot=":2.4"
        ;;
        ruby25)
            rubypn="dev-lang/ruby";
            rubyslot=":2.5"
        ;;
        ruby26)
            rubypn="dev-lang/ruby";
            rubyslot=":2.6"
        ;;
        ree18)
            rubypn="dev-lang/ruby-enterprise";
            rubyslot=":1.8"
        ;;
        jruby)
            rubypn="dev-java/jruby";
            rubyslot=""
        ;;
        rbx)
            rubypn="dev-lang/rubinius";
            rubyslot=""
        ;;
        *)
            die "$1: unknown Ruby implementation"
        ;;
    esac;
    echo "$2${rubypn}$3${rubyslot}"
}
_ruby_single_implementations_depend () 
{ 
    local depend;
    for _ruby_implementation in ${RUBY_TARGETS_PREFERENCE};
    do
        if [[ ${USE_RUBY} =~ ${_ruby_implementation} ]]; then
            depend="${depend} $(_ruby_implementation_depend $_ruby_implementation)";
        fi;
    done;
    echo "|| ( ${depend} ) virtual/rubygems"
}
_ruby_single_set_globals () 
{ 
    RUBY_DEPS=$(_ruby_single_implementations_depend)
}
_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
}
all-flag-vars () 
{ 
    echo {ADA,C,CPP,CXX,CCAS,F,FC,LD}FLAGS
}
append-cflags () 
{ 
    [[ $# -eq 0 ]] && return 0;
    export CFLAGS+=" $*";
    return 0
}
append-cppflags () 
{ 
    [[ $# -eq 0 ]] && return 0;
    export CPPFLAGS+=" $*";
    return 0
}
append-cxxflags () 
{ 
    [[ $# -eq 0 ]] && return 0;
    export CXXFLAGS+=" $*";
    return 0
}
append-fflags () 
{ 
    [[ $# -eq 0 ]] && return 0;
    export FFLAGS+=" $*";
    export FCFLAGS+=" $*";
    return 0
}
append-flags () 
{ 
    [[ $# -eq 0 ]] && return 0;
    case " $* " in 
        *' '-[DIU]*)
            eqawarn 'please use append-cppflags for preprocessor flags'
        ;;
        *' '-L* | *' '-Wl,*)
            eqawarn 'please use append-ldflags for linker flags'
        ;;
    esac;
    append-cflags "$@";
    append-cxxflags "$@";
    append-fflags "$@";
    return 0
}
append-ldflags () 
{ 
    [[ $# -eq 0 ]] && return 0;
    local flag;
    for flag in "$@";
    do
        [[ ${flag} == -l* ]] && eqawarn "Appending a library link instruction (${flag}); libraries to link to should not be passed through LDFLAGS";
    done;
    export LDFLAGS="${LDFLAGS} $*";
    return 0
}
append-lfs-flags () 
{ 
    [[ $# -ne 0 ]] && die "append-lfs-flags takes no arguments";
    append-cppflags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
}
append-libs () 
{ 
    [[ $# -eq 0 ]] && return 0;
    local flag;
    for flag in "$@";
    do
        if [[ -z "${flag// }" ]]; then
            eqawarn "Appending an empty argument to LIBS is invalid! Skipping.";
            continue;
        fi;
        case $flag in 
            -[lL]*)
                export LIBS="${LIBS} ${flag}"
            ;;
            -*)
                eqawarn "Appending non-library to LIBS (${flag}); Other linker flags should be passed via LDFLAGS";
                export LIBS="${LIBS} ${flag}"
            ;;
            *)
                export LIBS="${LIBS} -l${flag}"
            ;;
        esac;
    done;
    return 0
}
check-reqs_disk () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    [[ -z ${2} ]] && die "Usage: ${FUNCNAME} [path] [size]";
    local path=${1};
    local size=${2};
    local space_kbi;
    check-reqs_start_phase ${size} "disk space at \"${path}\"";
    space_kbi=$(df -Pk "${1}" 2>/dev/null | awk 'FNR == 2 {print $4}');
    if [[ $? == 0 && -n ${space_kbi} ]]; then
        if [[ ${space_kbi} -lt $(check-reqs_get_kibibytes ${size}) ]]; then
            eend 1;
            check-reqs_unsatisfied ${size} "disk space at \"${path}\"";
        else
            eend 0;
        fi;
    else
        eend 1;
        ewarn "Couldn't determine disk space, skipping...";
    fi
}
check-reqs_get_kibibytes () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    [[ -z ${1} ]] && die "Usage: ${FUNCNAME} [size]";
    local unit=${1:(-1)};
    local size=${1%[GMT]};
    case ${unit} in 
        M)
            echo $((1024 * size))
        ;;
        G)
            echo $((1024 * 1024 * size))
        ;;
        T)
            echo $((1024 * 1024 * 1024 * size))
        ;;
        *)
            die "${FUNCNAME}: Unknown unit: ${unit}"
        ;;
    esac
}
check-reqs_get_number () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    [[ -z ${1} ]] && die "Usage: ${FUNCNAME} [size]";
    local size=${1%[GMT]};
    [[ ${size} == ${1} ]] && die "${FUNCNAME}: Missing unit: ${1}";
    echo ${size}
}
check-reqs_get_unit () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    [[ -z ${1} ]] && die "Usage: ${FUNCNAME} [size]";
    local unit=${1:(-1)};
    case ${unit} in 
        M)
            echo "MiB"
        ;;
        G)
            echo "GiB"
        ;;
        T)
            echo "TiB"
        ;;
        *)
            die "${FUNCNAME}: Unknown unit: ${unit}"
        ;;
    esac
}
check-reqs_memory () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    [[ -z ${1} ]] && die "Usage: ${FUNCNAME} [size]";
    local size=${1};
    local actual_memory;
    check-reqs_start_phase ${size} "RAM";
    if [[ -r /proc/meminfo ]]; then
        actual_memory=$(awk '/MemTotal/ { print $2 }' /proc/meminfo);
    else
        actual_memory=$(sysctl hw.physmem 2>/dev/null );
        [[ "$?" == "0" ]] && actual_memory=$(echo $actual_memory | sed -e 's/^[^:=]*[:=]//' );
    fi;
    if [[ -n ${actual_memory} ]]; then
        if [[ ${actual_memory} -lt $(check-reqs_get_kibibytes ${size}) ]]; then
            eend 1;
            check-reqs_unsatisfied ${size} "RAM";
        else
            eend 0;
        fi;
    else
        eend 1;
        ewarn "Couldn't determine amount of memory, skipping...";
    fi
}
check-reqs_output () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    local msg="ewarn";
    [[ ${EBUILD_PHASE} == "pretend" && -z ${I_KNOW_WHAT_I_AM_DOING} ]] && msg="eerror";
    if [[ -n ${CHECKREQS_FAILED} ]]; then
        ${msg};
        ${msg} "Space constraints set in the ebuild were not met!";
        ${msg} "The build will most probably fail, you should enhance the space";
        ${msg} "as per failed tests.";
        ${msg};
        [[ ${EBUILD_PHASE} == "pretend" && -z ${I_KNOW_WHAT_I_AM_DOING} ]] && die "Build requirements not met!";
    fi
}
check-reqs_pkg_pretend () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    check-reqs_pkg_setup "$@"
}
check-reqs_pkg_setup () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    check-reqs_prepare;
    check-reqs_run;
    check-reqs_output
}
check-reqs_prepare () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    if [[ -z ${CHECKREQS_MEMORY} && -z ${CHECKREQS_DISK_BUILD} && -z ${CHECKREQS_DISK_USR} && -z ${CHECKREQS_DISK_VAR} ]]; then
        eerror "Set some check-reqs eclass variables if you want to use it.";
        eerror "If you are user and see this message file a bug against the package.";
        die "${FUNCNAME}: check-reqs eclass called but not actualy used!";
    fi
}
check-reqs_run () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    unset CHECKREQS_FAILED;
    [[ ${EAPI:-0} == [0123] ]] && local MERGE_TYPE="";
    if [[ ${MERGE_TYPE} != binary ]]; then
        [[ -n ${CHECKREQS_MEMORY} ]] && check-reqs_memory ${CHECKREQS_MEMORY};
        [[ -n ${CHECKREQS_DISK_BUILD} ]] && check-reqs_disk "${T}" "${CHECKREQS_DISK_BUILD}";
    fi;
    if [[ ${MERGE_TYPE} != buildonly ]]; then
        [[ -n ${CHECKREQS_DISK_USR} ]] && check-reqs_disk "${EROOT}/usr" "${CHECKREQS_DISK_USR}";
        [[ -n ${CHECKREQS_DISK_VAR} ]] && check-reqs_disk "${EROOT}/var" "${CHECKREQS_DISK_VAR}";
    fi
}
check-reqs_start_phase () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    [[ -z ${2} ]] && die "Usage: ${FUNCNAME} [size] [location]";
    local size=${1};
    local location=${2};
    local sizeunit="$(check-reqs_get_number ${size}) $(check-reqs_get_unit ${size})";
    ebegin "Checking for at least ${sizeunit} ${location}"
}
check-reqs_unsatisfied () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    [[ -z ${2} ]] && die "Usage: ${FUNCNAME} [size] [location]";
    local msg="ewarn";
    local size=${1};
    local location=${2};
    local sizeunit="$(check-reqs_get_number ${size}) $(check-reqs_get_unit ${size})";
    [[ ${EBUILD_PHASE} == "pretend" && -z ${I_KNOW_WHAT_I_AM_DOING} ]] && msg="eerror";
    ${msg} "There is NOT at least ${sizeunit} ${location}";
    CHECKREQS_FAILED="true"
}
check_reqs () 
{ 
    eerror "Package calling old ${FUNCNAME} function.";
    eerror "It should call check-reqs_pkg_pretend and check-reqs_pkg_setup.";
    die "${FUNCNAME} is banned"
}
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' "$@"
}
cmake-utils_src_compile () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    cmake-utils_src_make "$@"
}
cmake-utils_src_configure () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    if [[ ! -n ${_CMAKE_UTILS_SRC_PREPARE_HAS_RUN} ]]; then
        if [[ ${EAPI} != [56] ]]; then
            die "FATAL: cmake-utils_src_prepare has not been run";
        else
            eqawarn "cmake-utils_src_prepare has not been run, please open a bug on https://bugs.gentoo.org/";
        fi;
    fi;
    [[ ${EAPI} == 5 ]] && _cmake_cleanup_cmake;
    _cmake_check_build_dir;
    xdg_environment_reset;
    if [[ ${CMAKE_BUILD_TYPE} = Gentoo ]]; then
        if ! has debug ${IUSE//+} || ! use debug; then
            local CPPFLAGS=${CPPFLAGS};
            append-cppflags -DNDEBUG;
        fi;
    fi;
    local build_rules=${BUILD_DIR}/gentoo_rules.cmake;
    cat > "${build_rules}" <<-_EOF_ || 
SET (CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> <DEFINES> <INCLUDES> ${CPPFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "ASM compile command" FORCE)
SET (CMAKE_ASM-ATT_COMPILE_OBJECT "<CMAKE_ASM-ATT_COMPILER> <DEFINES> <INCLUDES> ${CPPFLAGS} <FLAGS> -o <OBJECT> -c -x assembler <SOURCE>" CACHE STRING "ASM-ATT compile command" FORCE)
SET (CMAKE_ASM-ATT_LINK_FLAGS "-nostdlib" CACHE STRING "ASM-ATT link flags" FORCE)
SET (CMAKE_C_COMPILE_OBJECT "<CMAKE_C_COMPILER> <DEFINES> <INCLUDES> ${CPPFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "C compile command" FORCE)
SET (CMAKE_CXX_COMPILE_OBJECT "<CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> ${CPPFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "C++ compile command" FORCE)
SET (CMAKE_Fortran_COMPILE_OBJECT "<CMAKE_Fortran_COMPILER> <DEFINES> <INCLUDES> ${FCFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "Fortran compile command" FORCE)
_EOF_
 die
    local myCC=$(tc-getCC) myCXX=$(tc-getCXX) myFC=$(tc-getFC);
    local toolchain_file=${BUILD_DIR}/gentoo_toolchain.cmake;
    cat > ${toolchain_file} <<-_EOF_ || 
SET (CMAKE_ASM_COMPILER "${myCC/ /;}")
SET (CMAKE_ASM-ATT_COMPILER "${myCC/ /;}")
SET (CMAKE_C_COMPILER "${myCC/ /;}")
SET (CMAKE_CXX_COMPILER "${myCXX/ /;}")
SET (CMAKE_Fortran_COMPILER "${myFC/ /;}")
SET (CMAKE_AR $(type -P $(tc-getAR)) CACHE FILEPATH "Archive manager" FORCE)
SET (CMAKE_RANLIB $(type -P $(tc-getRANLIB)) CACHE FILEPATH "Archive index generator" FORCE)
SET (CMAKE_SYSTEM_PROCESSOR "${CHOST%%-*}")
_EOF_
 die
    local -x ASMFLAGS=${CFLAGS};
    local -x PKG_CONFIG=$(tc-getPKG_CONFIG);
    if tc-is-cross-compiler; then
        local sysname;
        case "${KERNEL:-linux}" in 
            Cygwin)
                sysname="CYGWIN_NT-5.1"
            ;;
            HPUX)
                sysname="HP-UX"
            ;;
            linux)
                sysname="Linux"
            ;;
            Winnt)
                sysname="Windows";
                cat >> "${toolchain_file}" <<-_EOF_ || 
SET (CMAKE_RC_COMPILER $(tc-getRC))
_EOF_
 die
            ;;
            *)
                sysname="${KERNEL}"
            ;;
        esac
        cat >> "${toolchain_file}" <<-_EOF_ || 
SET (CMAKE_SYSTEM_NAME "${sysname}")
_EOF_
 die
        if [ "${SYSROOT:-/}" != "/" ]; then
            cat >> "${toolchain_file}" <<-_EOF_ || 
SET (CMAKE_FIND_ROOT_PATH "${SYSROOT}")
SET (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
_EOF_
 die;
        fi;
    fi
    if [[ -n ${EPREFIX} ]]; then
        cat >> "${build_rules}" <<-_EOF_ || 
# in Prefix we need rpath and must ensure cmake gets our default linker path
# right ... except for Darwin hosts
IF (NOT APPLE)
SET (CMAKE_SKIP_RPATH OFF CACHE BOOL "" FORCE)
SET (CMAKE_PLATFORM_REQUIRED_RUNTIME_PATH "${EPREFIX}/usr/${CHOST}/lib/gcc;${EPREFIX}/usr/${CHOST}/lib;${EPREFIX}/usr/$(get_libdir);${EPREFIX}/$(get_libdir)"
CACHE STRING "" FORCE)

ELSE ()

SET (CMAKE_PREFIX_PATH "${EPREFIX}/usr" CACHE STRING "" FORCE)
SET (CMAKE_MACOSX_RPATH ON CACHE BOOL "" FORCE)
SET (CMAKE_SKIP_BUILD_RPATH OFF CACHE BOOL "" FORCE)
SET (CMAKE_SKIP_RPATH OFF CACHE BOOL "" FORCE)
SET (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE CACHE BOOL "" FORCE)

ENDIF (NOT APPLE)
_EOF_
 die;
    fi
    local common_config=${BUILD_DIR}/gentoo_common_config.cmake;
    local libdir=$(get_libdir);
    cat > "${common_config}" <<-_EOF_ || 
SET (CMAKE_GENTOO_BUILD ON CACHE BOOL "Indicate Gentoo package build")
SET (LIB_SUFFIX ${libdir/lib} CACHE STRING "library path suffix" FORCE)
SET (CMAKE_INSTALL_LIBDIR ${libdir} CACHE PATH "Output directory for libraries")
SET (CMAKE_INSTALL_INFODIR "${EPREFIX}/usr/share/info" CACHE PATH "")
SET (CMAKE_INSTALL_MANDIR "${EPREFIX}/usr/share/man" CACHE PATH "")
SET (CMAKE_USER_MAKE_RULES_OVERRIDE "${build_rules}" CACHE FILEPATH "Gentoo override rules")
_EOF_
 die
    [[ "${NOCOLOR}" = true || "${NOCOLOR}" = yes ]] && echo 'SET (CMAKE_COLOR_MAKEFILE OFF CACHE BOOL "pretty colors during make" FORCE)' >> "${common_config}";
    if [[ ${EAPI} != [56] ]]; then
        cat >> "${common_config}" <<-_EOF_ || 
SET (CMAKE_INSTALL_DOCDIR "${EPREFIX}/usr/share/doc/${PF}" CACHE PATH "")
SET (BUILD_SHARED_LIBS ON CACHE BOOLEAN "")
_EOF_
 die;
    fi
    if [[ ${CMAKE_BUILD_TYPE} != Gentoo && ${EAPI} != 5 ]]; then
        cat >> ${common_config} <<-_EOF_ || 
SET (CMAKE_ASM_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "")
SET (CMAKE_ASM-ATT_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "")
SET (CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "")
SET (CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "")
SET (CMAKE_Fortran_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "")
SET (CMAKE_EXE_LINKER_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "")
SET (CMAKE_MODULE_LINKER_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "")
SET (CMAKE_SHARED_LINKER_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "")
SET (CMAKE_STATIC_LINKER_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "")
_EOF_
 die;
    fi
    local mycmakeargstype=$(declare -p mycmakeargs 2>&-);
    if [[ "${mycmakeargstype}" != "declare -a mycmakeargs="* ]]; then
        if [[ -n "${mycmakeargstype}" ]]; then
            if [[ ${EAPI} == 5 ]]; then
                eqawarn "Declaring mycmakeargs as a variable is deprecated. Please use an array instead.";
            else
                die "Declaring mycmakeargs as a variable is banned in EAPI=${EAPI}. Please use an array instead.";
            fi;
        fi;
        local mycmakeargs_local=(${mycmakeargs});
    else
        local mycmakeargs_local=("${mycmakeargs[@]}");
    fi;
    if [[ ${CMAKE_WARN_UNUSED_CLI} == no ]]; then
        local warn_unused_cli="--no-warn-unused-cli";
    else
        local warn_unused_cli="";
    fi;
    local cmakeargs=(${warn_unused_cli} -C "${common_config}" -G "$(_cmake_generator_to_use)" -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr" "${mycmakeargs_local[@]}" -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" $([[ ${EAPI} == 5 ]] && echo -DCMAKE_INSTALL_DO_STRIP=OFF) -DCMAKE_TOOLCHAIN_FILE="${toolchain_file}" "${MYCMAKEARGS}");
    if [[ -n "${CMAKE_EXTRA_CACHE_FILE}" ]]; then
        cmakeargs+=(-C "${CMAKE_EXTRA_CACHE_FILE}");
    fi;
    pushd "${BUILD_DIR}" > /dev/null || die;
    debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: mycmakeargs is ${mycmakeargs_local[*]}";
    echo "${CMAKE_BINARY}" "${cmakeargs[@]}" "${CMAKE_USE_DIR}";
    "${CMAKE_BINARY}" "${cmakeargs[@]}" "${CMAKE_USE_DIR}" || die "cmake failed";
    popd > /dev/null || die
}
cmake-utils_src_install () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    _cmake_check_build_dir;
    pushd "${BUILD_DIR}" > /dev/null || die;
    DESTDIR="${D}" ${CMAKE_MAKEFILE_GENERATOR} install "$@" || die "died running ${CMAKE_MAKEFILE_GENERATOR} install";
    popd > /dev/null || die;
    pushd "${S}" > /dev/null || die;
    einstalldocs;
    popd > /dev/null || die
}
cmake-utils_src_make () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    _cmake_check_build_dir;
    pushd "${BUILD_DIR}" > /dev/null || die;
    _cmake_${CMAKE_MAKEFILE_GENERATOR}_src_make "$@";
    popd > /dev/null || die
}
cmake-utils_src_prepare () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    pushd "${S}" > /dev/null || die;
    if [[ ${EAPI} != 5 ]]; then
        default_src_prepare;
        _cmake_cleanup_cmake;
    else
        debug-print "$FUNCNAME: PATCHES=$PATCHES";
        [[ -n ${PATCHES[@]} ]] && epatch "${PATCHES[@]}";
        debug-print "$FUNCNAME: applying user patches";
        epatch_user;
    fi;
    popd > /dev/null || die;
    if [[ -n ${CMAKE_UTILS_QA_SRC_DIR_READONLY} && ! -n ${CMAKE_IN_SOURCE_BUILD} ]]; then
        chmod -R a-w "${S}";
    fi;
    _CMAKE_UTILS_SRC_PREPARE_HAS_RUN=1
}
cmake-utils_src_test () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    _cmake_check_build_dir;
    pushd "${BUILD_DIR}" > /dev/null || die;
    [[ -e CTestTestfile.cmake ]] || { 
        echo "No tests found. Skipping.";
        return 0
    };
    [[ -n ${TEST_VERBOSE} ]] && myctestargs+=(--extra-verbose --output-on-failure);
    set -- ctest -j "$(makeopts_jobs)" --test-load "$(makeopts_loadavg)" "${myctestargs[@]}" "$@";
    echo "$@" 1>&2;
    if "$@"; then
        einfo "Tests succeeded.";
        popd > /dev/null || die;
        return 0;
    else
        if [[ -n "${CMAKE_YES_I_WANT_TO_SEE_THE_TEST_LOG}" ]]; then
            eerror "Tests failed. Test log ${BUILD_DIR}/Testing/Temporary/LastTest.log follows:";
            eerror "--START TEST LOG--------------------------------------------------------------";
            cat "${BUILD_DIR}/Testing/Temporary/LastTest.log";
            eerror "--END TEST LOG----------------------------------------------------------------";
            die "Tests failed.";
        else
            die "Tests failed. When you file a bug, please attach the following file: \n\t${BUILD_DIR}/Testing/Temporary/LastTest.log";
        fi;
        popd > /dev/null || die;
        return 1;
    fi
}
cmake-utils_use () 
{ 
    _cmake_use_me_now "" "$@"
}
cmake-utils_use_build () 
{ 
    _cmake_use_me_now BUILD_ "$@"
}
cmake-utils_use_disable () 
{ 
    _cmake_use_me_now_inverted DISABLE_ "$@"
}
cmake-utils_use_enable () 
{ 
    _cmake_use_me_now ENABLE_ "$@"
}
cmake-utils_use_find_package () 
{ 
    if [[ ${EAPI} != 5 && "$#" != 2 ]]; then
        die "Usage: cmake-utils_use_find_package <USE flag> <package name>";
    fi;
    _cmake_use_me_now_inverted CMAKE_DISABLE_FIND_PACKAGE_ "$@"
}
cmake-utils_use_has () 
{ 
    _cmake_use_me_now HAVE_ "$@"
}
cmake-utils_use_no () 
{ 
    _cmake_use_me_now_inverted NO_ "$@"
}
cmake-utils_use_use () 
{ 
    _cmake_use_me_now USE_ "$@"
}
cmake-utils_use_want () 
{ 
    _cmake_use_me_now WANT_ "$@"
}
cmake-utils_use_with () 
{ 
    _cmake_use_me_now WITH_ "$@"
}
cmake-utils_useno () 
{ 
    _cmake_use_me_now_inverted "" "$@"
}
cmake_comment_add_subdirectory () 
{ 
    if [[ -z ${1} ]]; then
        die "comment_add_subdirectory must be passed at least one directory name to comment";
    fi;
    if [[ -e "CMakeLists.txt" ]]; then
        local d;
        for d in $@;
        do
            sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${d//\//\\/}[[:space:]]*)/I s/^/#DONOTCOMPILE /" -i CMakeLists.txt || die "failed to comment add_subdirectory(${d})";
        done;
    fi
}
comment_add_subdirectory () 
{ 
    [[ ${EAPI} == 5 ]] || die "comment_add_subdirectory is banned in EAPI 6 and later - use cmake_comment_add_subdirectory instead";
    cmake_comment_add_subdirectory "$@"
}
darwintoolize () 
{ 
    die "Use elibtoolize"
}
delete_all_version_separators () 
{ 
    replace_all_version_separators "" "${1}"
}
delete_version_separator () 
{ 
    replace_version_separator "${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##*/}";
        ${patch_cmd} -p1 -f -s -g0 --no-backup-if-mismatch "${patch_options[@]}" < "${f}";
        failed=${?};
        if ! eend "${failed}"; then
            __helpers_die "patch -p1 ${patch_options[*]} failed with ${f}";
        fi
    };
    local patch_options=() files=();
    local i found_doublehyphen;
    for ((i = 1; i <= ${#@}; ++i ))
    do
        if [[ ${@:i:1} == -- ]]; then
            patch_options=("${@:1:i-1}");
            files=("${@:i+1}");
            found_doublehyphen=1;
            break;
        fi;
    done;
    if [[ -z ${found_doublehyphen} ]]; then
        for ((i = 1; i <= ${#@}; ++i ))
        do
            if [[ ${@:i:1} != -* ]]; then
                patch_options=("${@:1:i-1}");
                files=("${@:i}");
                break;
            fi;
        done;
        for i in "${files[@]}";
        do
            if [[ ${i} == -* ]]; then
                die "eapply: all options must be passed before non-options";
            fi;
        done;
    fi;
    if [[ ${#files[@]} -eq 0 ]]; then
        die "eapply: no files specified";
    fi;
    local f;
    for f in "${files[@]}";
    do
        if [[ -d ${f} ]]; then
            function _eapply_get_files () 
            { 
                local LC_ALL=POSIX;
                local prev_shopt=$(shopt -p nullglob);
                shopt -s nullglob;
                local f;
                for f in "${1}"/*;
                do
                    if [[ ${f} == *.diff || ${f} == *.patch ]]; then
                        files+=("${f}");
                    fi;
                done;
                ${prev_shopt}
            };
            local files=();
            _eapply_get_files "${f}";
            [[ ${#files[@]} -eq 0 ]] && die "No *.{patch,diff} files in directory ${f}";
            einfo "Applying patches from ${f} ...";
            local f2;
            for f2 in "${files[@]}";
            do
                _eapply_patch "${f2}" '  ';
                [[ ${failed} -ne 0 ]] && return "${failed}";
            done;
        else
            _eapply_patch "${f}";
            [[ ${failed} -ne 0 ]] && return "${failed}";
        fi;
    done;
    return 0
}
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."
}
ebeep () 
{ 
    ewarn "QA Notice: ebeep is not defined in EAPI=${EAPI}, please file a bug at https://bugs.gentoo.org"
}
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 &> /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 )
}
elibtoolize () 
{ 
    type -P eltpatch &> /dev/null || die "eltpatch not found; is app-portage/elt-patches installed?";
    ELT_LOGDIR=${T} LD=$(tc-getLD) eltpatch "${@}" || die "eltpatch failed"
}
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
}
eninja () 
{ 
    local nonfatal_args=();
    [[ ${EAPI:-0} != [245] ]] && nonfatal_args+=(-n);
    if [[ -z ${NINJAOPTS+set} ]]; then
        NINJAOPTS="-j$(makeopts_jobs) -l$(makeopts_loadavg "${MAKEOPTS}" 0)";
    fi;
    set -- ninja -v ${NINJAOPTS} "$@";
    echo "$@" 1>&2;
    "$@" || die "${nonfatal_args[@]}" "${*} failed"
}
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
            local prev_noglob=$(shopt -p -o noglob);
            set -o noglob;
            local ex;
            for ex in ${EPATCH_EXCLUDE};
            do
                if [[ ${patchname} == ${ex} ]]; then
                    einfo "  Skipping ${patchname} due to EPATCH_EXCLUDE ...";
                    ${prev_noglob};
                    continue 2;
                fi;
            done;
            for ex in ${EPATCH_USER_EXCLUDE};
            do
                if [[ ${patchname} == ${ex} ]]; then
                    einfo "  Skipping ${patchname} due to EPATCH_USER_EXCLUDE ...";
                    ${prev_noglob};
                    continue 2;
                fi;
            done;
            ${prev_noglob};
        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";
    :
}
epause () 
{ 
    ewarn "QA Notice: epause is not defined in EAPI=${EAPI}, please file a bug at https://bugs.gentoo.org"
}
eshopts_pop () 
{ 
    local s;
    estack_pop eshopts s || die "${FUNCNAME}: unbalanced push";
    eval "${s}" || die "${FUNCNAME}: sanity: invalid shopt options: ${s}"
}
eshopts_push () 
{ 
    if [[ $1 == -[su] ]]; then
        estack_push eshopts "$(shopt -p)";
        [[ $# -eq 0 ]] && return 0;
        shopt "$@" || die "${FUNCNAME}: bad options to shopt: $*";
    else
        estack_push eshopts "$(shopt -p -o)";
        [[ $# -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)
            isdigit "${cnt}" || 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
}
filter-flags () 
{ 
    _filter-hardened "$@";
    local v;
    for v in $(all-flag-vars);
    do
        _filter-var ${v} "$@";
    done;
    return 0
}
filter-ldflags () 
{ 
    _filter-var LDFLAGS "$@";
    return 0
}
filter-lfs-flags () 
{ 
    [[ $# -ne 0 ]] && die "filter-lfs-flags takes no arguments";
    filter-flags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
}
filter-mfpmath () 
{ 
    local orig_mfpmath new_math prune_math;
    orig_mfpmath=$(get-flag -mfpmath);
    new_math=$(get-flag mfpmath);
    new_math=${new_math/both/387,sse};
    new_math=" ${new_math//[,+]/ } ";
    prune_math="";
    for prune_math in "$@";
    do
        new_math=${new_math/ ${prune_math} / };
    done;
    new_math=$(echo ${new_math});
    new_math=${new_math// /,};
    if [[ -z ${new_math} ]]; then
        filter-flags ${orig_mfpmath};
    else
        replace-flags ${orig_mfpmath} -mfpmath=${new_math};
    fi;
    return 0
}
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 () 
{ 
    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-flag () 
{ 
    local f var findflag="$1";
    for var in $(all-flag-vars);
    do
        for f in ${!var};
        do
            if [ "${f/${findflag}}" != "${f}" ]; then
                printf "%s\n" "${f/-${findflag}=}";
                return 0;
            fi;
        done;
    done;
    return 1
}
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_after_major_version () 
{ 
    echo $(get_version_component_range 2- "${1:-${PV}}")
}
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_all_version_components () 
{ 
    eshopts_push -s extglob;
    local ver_str=${1:-${PV}} result;
    result=();
    if [[ ${VERSIONATOR_CACHE_VER_STR} == ${ver_str} ]]; then
        echo ${VERSIONATOR_CACHE_RESULT};
        eshopts_pop;
        return;
    fi;
    export VERSIONATOR_CACHE_VER_STR=${ver_str};
    while [[ -n $ver_str ]]; do
        case "${ver_str::1}" in 
            [[:digit:]])
                result+=("${ver_str%%[^[:digit:]]*}");
                ver_str=${ver_str##+([[:digit:]])}
            ;;
            [-_.])
                result+=("${ver_str::1}");
                ver_str=${ver_str:1}
            ;;
            [[:alpha:]])
                local not_match=${ver_str##+([[:alpha:]])*([[:digit:]])};
                result+=("${ver_str::${#ver_str} - ${#not_match}}");
                ver_str=${not_match}
            ;;
            *)
                result+=("${ver_str::1}");
                ver_str=${ver_str:1}
            ;;
        esac;
    done;
    export VERSIONATOR_CACHE_RESULT=${result[*]};
    echo ${result[@]};
    eshopts_pop
}
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_last_version_component_index () 
{ 
    echo $(($(get_version_component_count "${1:-${PV}}" ) - 1))
}
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_major_version () 
{ 
    local c=($(get_all_version_components "${1:-${PV}}"));
    echo ${c[0]}
}
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
}
get_version_component_count () 
{ 
    local a=($(get_version_components "${1:-${PV}}"));
    echo ${#a[@]}
}
get_version_component_range () 
{ 
    eshopts_push -s extglob;
    local c v="${2:-${PV}}" range="${1}" range_start range_end;
    local -i i=-1 j=0;
    c=($(get_all_version_components "${v}"));
    range_start=${range%-*};
    range_start=${range_start:-1};
    range_end=${range#*-};
    range_end=${range_end:-${#c[@]}};
    while ((j < range_start)); do
        i+=1;
        ((i > ${#c[@]})) && eshopts_pop && return;
        [[ -n "${c[i]//[-._]}" ]] && j+=1;
    done;
    while ((j <= range_end)); do
        echo -n ${c[i]};
        ((i > ${#c[@]})) && eshopts_pop && return;
        [[ -n "${c[i]//[-._]}" ]] && j+=1;
        i+=1;
    done;
    eshopts_pop
}
get_version_components () 
{ 
    local c=$(get_all_version_components "${1:-${PV}}");
    echo ${c//[-._]/ }
}
gnome2_disable_deprecation_warning () 
{ 
    local retval=0;
    local fails=();
    local makefile;
    ebegin "Disabling deprecation warnings";
    while read makefile; do
        if ! grep -qE "(DISABLE_DEPRECATED|GSEAL_ENABLE)" "${makefile}"; then
            continue;
        fi;
        LC_ALL=C sed -r -i -e 's:-D[A-Z_]+_DISABLE_DEPRECATED:$(/bin/true):g' -e 's:-DGSEAL_ENABLE(=[A-Za-z0-9_]*)?:$(/bin/true):g' -i "${makefile}";
        if [[ $? -ne 0 ]]; then
            fails+=("${makefile}");
            retval=2;
        fi;
    done < <(find "${S}" -name "Makefile.in" 		-o -name "Makefile.am" -o -name "Makefile.decl" 		| sort; [[ -f "${S}"/configure ]] && echo configure);
    eend ${retval};
    for makefile in "${fails[@]}";
    do
        ewarn "Failed to disable deprecation warnings in ${makefile}";
    done
}
gnome2_environment_reset () 
{ 
    xdg_environment_reset;
    export G_HOME="${T}";
    export GST_REGISTRY="${T}/registry.xml";
    export GSETTINGS_BACKEND="memory";
    if has ${EAPI:-0} 6 7; then
        export GST_INSPECT="$(type -P true)";
        unset DISPLAY;
    fi
}
gnome2_gconf_install () 
{ 
    has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}";
    local updater="${EROOT}${GCONFTOOL_BIN}";
    if [[ ! -x "${updater}" ]]; then
        debug-print "${updater} is not executable";
        return;
    fi;
    if [[ -z "${GNOME2_ECLASS_SCHEMAS}" ]]; then
        debug-print "No GNOME 2 GConf schemas found";
        return;
    fi;
    unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL;
    export GCONF_CONFIG_SOURCE="$("${updater}" --get-default-source | sed "s;:/;:${ROOT};")";
    einfo "Installing GNOME 2 GConf schemas";
    local F;
    for F in ${GNOME2_ECLASS_SCHEMAS};
    do
        if [[ -e "${EROOT}${F}" ]]; then
            debug-print "Installing schema: ${F}";
            "${updater}" --makefile-install-rule "${EROOT}${F}" > /dev/null;
        fi;
    done;
    pids=$(pgrep -x gconfd-2);
    if [[ $? == 0 ]]; then
        ebegin "Reloading GConf schemas";
        kill -HUP ${pids};
        eend $?;
    fi
}
gnome2_gconf_savelist () 
{ 
    has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}";
    pushd "${ED}" > /dev/null || die;
    export GNOME2_ECLASS_SCHEMAS=$(find 'etc/gconf/schemas/' -name '*.schemas' 2> /dev/null);
    popd > /dev/null || die
}
gnome2_gconf_uninstall () 
{ 
    has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}";
    local updater="${EROOT}${GCONFTOOL_BIN}";
    if [[ ! -x "${updater}" ]]; then
        debug-print "${updater} is not executable";
        return;
    fi;
    if [[ -z "${GNOME2_ECLASS_SCHEMAS}" ]]; then
        debug-print "No GNOME 2 GConf schemas found";
        return;
    fi;
    unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL;
    export GCONF_CONFIG_SOURCE="$("${updater}" --get-default-source | sed "s;:/;:${ROOT};")";
    einfo "Uninstalling GNOME 2 GConf schemas";
    local F;
    for F in ${GNOME2_ECLASS_SCHEMAS};
    do
        if [[ -e "${EROOT}${F}" ]]; then
            debug-print "Uninstalling gconf schema: ${F}";
            "${updater}" --makefile-uninstall-rule "${EROOT}${F}" > /dev/null;
        fi;
    done;
    pids=$(pgrep -x gconfd-2);
    if [[ $? == 0 ]]; then
        ebegin "Reloading GConf schemas";
        kill -HUP ${pids};
        eend $?;
    fi
}
gnome2_gdk_pixbuf_savelist () 
{ 
    has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}";
    pushd "${ED}" > /dev/null || die;
    export GNOME2_ECLASS_GDK_PIXBUF_LOADERS=$(find usr/lib*/gdk-pixbuf-2.0 -type f 2>/dev/null);
    popd > /dev/null || die
}
gnome2_gdk_pixbuf_update () 
{ 
    has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}";
    local updater="${EROOT}/usr/bin/${CHOST}-gdk-pixbuf-query-loaders";
    if [[ ! -x ${updater} ]]; then
        updater="${EROOT}/usr/bin/gdk-pixbuf-query-loaders";
    fi;
    if [[ ! -x ${updater} ]]; then
        debug-print "${updater} is not executable";
        return;
    fi;
    if [[ -z ${GNOME2_ECLASS_GDK_PIXBUF_LOADERS} ]]; then
        debug-print "gdk-pixbuf loader cache does not need an update";
        return;
    fi;
    ebegin "Updating gdk-pixbuf loader cache";
    local tmp_file=$(emktemp);
    ${updater} > "${tmp_file}" && chmod 0644 "${tmp_file}" && cp -f "${tmp_file}" "${EROOT}usr/$(get_libdir)/gdk-pixbuf-2.0/2.10.0/loaders.cache" && rm "${tmp_file}";
    eend $?
}
gnome2_giomodule_cache_update () 
{ 
    has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}";
    local updater="${EROOT}/usr/bin/${CHOST}-gio-querymodules";
    if [[ ! -x ${updater} ]]; then
        updater="${EROOT}/usr/bin/gio-querymodules";
    fi;
    if [[ ! -x ${updater} ]]; then
        debug-print "${updater} is not executable";
        return;
    fi;
    ebegin "Updating GIO modules cache";
    ${updater} "${EROOT%/}"/usr/$(get_libdir)/gio/modules;
    eend $?
}
gnome2_icon_cache_update () 
{ 
    xdg_icon_cache_update
}
gnome2_icon_savelist () 
{ 
    has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}";
    pushd "${ED}" > /dev/null || die;
    export GNOME2_ECLASS_ICONS=$(find 'usr/share/icons' -maxdepth 1 -mindepth 1 -type d 2> /dev/null);
    popd > /dev/null || die
}
gnome2_omf_fix () 
{ 
    local omf_makefiles filename;
    omf_makefiles="$@";
    if [[ -f ${S}/omf.make ]]; then
        omf_makefiles="${omf_makefiles} ${S}/omf.make";
    fi;
    if [[ -f ${S}/gnome-doc-utils.make ]]; then
        omf_makefiles="${omf_makefiles} ${S}/gnome-doc-utils.make";
    fi;
    for filename in $(find "${S}" -name "Makefile.in" -o -name "Makefile.am" |sort);
    do
        omf_makefiles="${omf_makefiles} ${filename}";
    done;
    ebegin "Fixing OMF Makefiles";
    local retval=0;
    local fails=();
    for omf in ${omf_makefiles};
    do
        sed -i -e 's:scrollkeeper-update:true:' "${omf}";
        retval=$?;
        if [[ $retval -ne 0 ]]; then
            debug-print "updating of ${omf} failed";
            fails[$(( ${#fails[@]} + 1 ))]=$omf;
            retval=2;
        fi;
    done;
    eend $retval;
    for f in "${fails[@]}";
    do
        eerror "Failed to update OMF Makefile $f";
    done
}
gnome2_pkg_postinst () 
{ 
    xdg_pkg_postinst;
    gnome2_gconf_install;
    if [[ -n ${GNOME2_ECLASS_GLIB_SCHEMAS} ]]; then
        gnome2_schemas_update;
    fi;
    gnome2_scrollkeeper_update;
    gnome2_gdk_pixbuf_update;
    if [[ ${#GNOME2_ECLASS_GIO_MODULES[@]} -gt 0 ]]; then
        gnome2_giomodule_cache_update;
    fi
}
gnome2_pkg_postrm () 
{ 
    xdg_pkg_postrm;
    if [[ -n ${GNOME2_ECLASS_GLIB_SCHEMAS} ]]; then
        gnome2_schemas_update;
    fi;
    gnome2_scrollkeeper_update;
    if [[ ${#GNOME2_ECLASS_GIO_MODULES[@]} -gt 0 ]]; then
        gnome2_giomodule_cache_update;
    fi
}
gnome2_pkg_preinst () 
{ 
    xdg_pkg_preinst;
    gnome2_gconf_savelist;
    gnome2_schemas_savelist;
    gnome2_scrollkeeper_savelist;
    gnome2_gdk_pixbuf_savelist;
    local f;
    GNOME2_ECLASS_GIO_MODULES=();
    while IFS= read -r -d '' f; do
        GNOME2_ECLASS_GIO_MODULES+=(${f});
    done < <(cd "${D}" && find usr/$(get_libdir)/gio/modules -type f -print0 2>/dev/null);
    export GNOME2_ECLASS_GIO_MODULES
}
gnome2_query_immodules_gtk2 () 
{ 
    local updater=${EPREFIX}/usr/bin/${CHOST}-gtk-query-immodules-2.0;
    [[ ! -x ${updater} ]] && updater=${EPREFIX}/usr/bin/gtk-query-immodules-2.0;
    ebegin "Updating gtk2 input method module cache";
    GTK_IM_MODULE_FILE="${EROOT}usr/$(get_libdir)/gtk-2.0/2.10.0/immodules.cache" "${updater}" --update-cache;
    eend $?
}
gnome2_query_immodules_gtk3 () 
{ 
    local updater=${EPREFIX}/usr/bin/${CHOST}-gtk-query-immodules-3.0;
    [[ ! -x ${updater} ]] && updater=${EPREFIX}/usr/bin/gtk-query-immodules-3.0;
    ebegin "Updating gtk3 input method module cache";
    GTK_IM_MODULE_FILE="${EROOT}usr/$(get_libdir)/gtk-3.0/3.0.0/immodules.cache" "${updater}" --update-cache;
    eend $?
}
gnome2_schemas_savelist () 
{ 
    has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}";
    pushd "${ED}" > /dev/null || die;
    export GNOME2_ECLASS_GLIB_SCHEMAS=$(find 'usr/share/glib-2.0/schemas' -name '*.gschema.xml' 2>/dev/null);
    popd > /dev/null || die
}
gnome2_schemas_update () 
{ 
    has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}";
    local updater="${EROOT}${GLIB_COMPILE_SCHEMAS}";
    if [[ ! -x ${updater} ]]; then
        debug-print "${updater} is not executable";
        return;
    fi;
    ebegin "Updating GSettings schemas";
    ${updater} --allow-any-name "$@" "${EROOT%/}/usr/share/glib-2.0/schemas" &> /dev/null;
    eend $?
}
gnome2_scrollkeeper_savelist () 
{ 
    has ${EAPI:-0} 0 1 2 && ! use prefix && ED="${D}";
    pushd "${ED}" > /dev/null || die;
    export GNOME2_ECLASS_SCROLLS=$(find 'usr/share/omf' -type f -name "*.omf" 2> /dev/null);
    popd > /dev/null || die
}
gnome2_scrollkeeper_update () 
{ 
    has ${EAPI:-0} 0 1 2 && ! use prefix && EROOT="${ROOT}";
    local updater="${EROOT}${SCROLLKEEPER_UPDATE_BIN}";
    if [[ ! -x "${updater}" ]]; then
        debug-print "${updater} is not executable";
        return;
    fi;
    if [[ -z "${GNOME2_ECLASS_SCROLLS}" ]]; then
        debug-print "No scroll cache to update";
        return;
    fi;
    ebegin "Updating scrollkeeper database ...";
    "${updater}" -q -p "${EROOT}${SCROLLKEEPER_DIR}";
    eend $?
}
gnome2_src_compile () 
{ 
    if has ${EAPI:-0} 4 5; then
        emake;
    else
        default;
    fi
}
gnome2_src_configure () 
{ 
    if [[ -n ${G2CONF} ]]; then
        if has ${EAPI:-0} 4 5; then
            eqawarn "G2CONF set, please review documentation at https://wiki.gentoo.org/wiki/Project:GNOME/Gnome_Team_Ebuild_Policies#G2CONF_and_src_configure";
        else
            die "G2CONF set, please review documentation at https://wiki.gentoo.org/wiki/Project:GNOME/Gnome_Team_Ebuild_Policies#G2CONF_and_src_configure";
        fi;
    fi;
    local g2conf=();
    if has ${EAPI:-0} 4 5; then
        if [[ ${GCONF_DEBUG} != 'no' ]]; then
            if use debug; then
                g2conf+=(--enable-debug=yes);
            fi;
        fi;
    else
        if [[ -n ${GCONF_DEBUG} ]]; then
            die "GCONF_DEBUG is banned since eapi6 in favor of each ebuild taking care of the proper handling of debug configure option";
        fi;
    fi;
    if grep -q "enable-gtk-doc" "${ECONF_SOURCE:-.}"/configure; then
        if has ${EAPI:-0} 4 && in_iuse doc; then
            g2conf+=($(use_enable doc gtk-doc));
        else
            g2conf+=(--disable-gtk-doc);
        fi;
    fi;
    if grep -q "^[[:space:]]*AM_MAINTAINER_MODE(\[enable\])" "${ECONF_SOURCE:-.}"/configure.*; then
        g2conf+=(--disable-maintainer-mode);
    fi;
    if grep -q "disable-scrollkeeper" "${ECONF_SOURCE:-.}"/configure; then
        g2conf+=(--disable-scrollkeeper);
    fi;
    if has ${EAPI:-0} 4; then
        if grep -q "disable-silent-rules" "${ECONF_SOURCE:-.}"/configure; then
            g2conf+=(--disable-silent-rules);
        fi;
    fi;
    if grep -q "disable-schemas-install" "${ECONF_SOURCE:-.}"/configure; then
        g2conf+=(--disable-schemas-install);
    fi;
    if grep -q "disable-schemas-compile" "${ECONF_SOURCE:-.}"/configure; then
        g2conf+=(--disable-schemas-compile);
    fi;
    if grep -q "disable-update-mimedb" "${ECONF_SOURCE:-.}"/configure; then
        g2conf+=(--disable-update-mimedb);
    fi;
    if grep -q "enable-compile-warnings" "${ECONF_SOURCE:-.}"/configure; then
        g2conf+=(--enable-compile-warnings=minimum);
    fi;
    if has ${EAPI:-0} 4 5; then
        if grep -q "^ *--docdir=" "${ECONF_SOURCE:-.}"/configure; then
            g2conf+=(--docdir="${EPREFIX}"/usr/share/doc/${PF});
        fi;
    fi;
    if has ${EAPI:-0} 4 5; then
        addwrite "$(unset HOME; echo ~)/.gnome2";
    else
        addpredict "$(unset HOME; echo ~)/.gnome2";
    fi;
    if has ${EAPI:-0} 4 5; then
        econf ${g2conf[@]} ${G2CONF} "$@";
    else
        econf ${g2conf[@]} "$@";
    fi
}
gnome2_src_install () 
{ 
    export GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL="1";
    local sk_tmp_dir="/var/lib/scrollkeeper";
    if has ${EAPI:-0} 4 5; then
        dodir "${sk_tmp_dir}" || die "dodir failed";
        emake DESTDIR="${D}" "scrollkeeper_localstate_dir=${ED}${sk_tmp_dir} " "$@" install || die "install failed";
    else
        default;
    fi;
    unset GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL;
    if has ${EAPI:-0} 4; then
        if [[ -n "${DOCS}" ]]; then
            dodoc ${DOCS} || die "dodoc failed";
        fi;
    else
        if has ${EAPI:-0} 5; then
            einstalldocs;
        else
            local d;
            for d in HACKING MAINTAINERS;
            do
                [[ -s "${d}" ]] && dodoc "${d}";
            done;
        fi;
    fi;
    rm -rf "${ED}${sk_tmp_dir}";
    rmdir "${ED}/var/lib" 2> /dev/null;
    rmdir "${ED}/var" 2> /dev/null;
    rm -fr "${ED}/usr/share/applications/mimeinfo.cache";
    if has ${EAPI:-0} 4; then
        if [[ "${GNOME2_LA_PUNT}" != "no" ]]; then
            ebegin "Removing .la files";
            if ! use_if_iuse static-libs; then
                find "${D}" -name '*.la' -exec rm -f {} + || die "la file removal failed";
            fi;
            eend;
        fi;
    else
        case "${GNOME2_LA_PUNT}" in 
            yes)
                prune_libtool_files --modules
            ;;
            no)

            ;;
            *)
                prune_libtool_files
            ;;
        esac;
    fi
}
gnome2_src_prepare () 
{ 
    xdg_src_prepare;
    gnome2_environment_reset;
    has ${EAPI:-0} 4 5 && gnome2_omf_fix;
    gnome2_disable_deprecation_warning;
    if [[ ${GNOME2_EAUTORECONF} == 'yes' ]]; then
        eautoreconf;
    else
        elibtoolize ${ELTCONF};
    fi
}
gnome2_src_unpack () 
{ 
    if has ${EAPI:-0} 4 5; then
        unpack ${A};
        cd "${S}";
    else
        die "gnome2_src_unpack is banned from eapi6";
    fi
}
has_m32 () 
{ 
    die "${FUNCNAME}: don't use this anymore"
}
has_m64 () 
{ 
    die "${FUNCNAME}: don't use this anymore"
}
has_multilib_profile () 
{ 
    [ -n "${MULTILIB_ABIS}" -a "${MULTILIB_ABIS}" != "${MULTILIB_ABIS/ /}" ]
}
host-is-pax () 
{ 
    grep -qs ^PaX: /proc/self/status
}
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-flag () 
{ 
    is-flagq "$@" && echo true
}
is-flagq () 
{ 
    [[ -n $2 ]] && die "Usage: is-flag <flag>";
    local var;
    for var in $(all-flag-vars);
    do
        _is_flagq ${var} "$1" && return 0;
    done;
    return 1
}
is-ldflag () 
{ 
    is-ldflagq "$@" && echo true
}
is-ldflagq () 
{ 
    [[ -n $2 ]] && die "Usage: is-ldflag <flag>";
    _is_flagq LDFLAGS $1
}
is_final_abi () 
{ 
    has_multilib_profile || return 0;
    set -- $(get_install_abis);
    local LAST_ABI=$#;
    [[ ${!LAST_ABI} == ${ABI} ]]
}
isdigit () 
{ 
    local d;
    for d in "$@";
    do
        [[ ${d:-bad} == *[!0-9]* ]] && return 1;
    done;
    return 0
}
list-paxables () 
{ 
    file "$@" 2> /dev/null | grep -E 'ELF.*(executable|shared object)' | sed -e 's/: .*$//'
}
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_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 "$@" )
}
no-as-needed () 
{ 
    case $($(tc-getLD) -v 2>&1 </dev/null) in 
        *GNU*)
            echo "-Wl,--no-as-needed"
        ;;
    esac
}
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"
}
pax-mark () 
{ 
    local f;
    local flags;
    local ret=0;
    flags="${1//[!zPpEeMmRrSs]}";
    [[ -n "${flags}" ]] || return 0;
    shift;
    local dodefault="";
    [[ -n "${flags//[!z]}" ]] && dodefault="yes";
    if has PT ${PAX_MARKINGS}; then
        for f in "$@";
        do
            if type -p paxctl > /dev/null; then
                einfo "PT_PAX marking -${flags} ${f} with paxctl";
                paxctl -q${flags} "${f}" > /dev/null 2>&1 && continue;
            fi;
            if type -p paxctl-ng > /dev/null && paxctl-ng -L; then
                einfo "PT_PAX marking -${flags} ${f} with paxctl-ng";
                flags="${flags//z}";
                [[ ${dodefault} == "yes" ]] && paxctl-ng -L -z "${f}" > /dev/null 2>&1;
                [[ -n "${flags}" ]] || continue;
                paxctl-ng -L -${flags} "${f}" > /dev/null 2>&1 && continue;
            fi;
            if type -p scanelf > /dev/null && [[ ${PAX_MARKINGS} != "none" ]]; then
                einfo "PT_PAX marking -${flags} ${f} with scanelf";
                scanelf -Xxz ${flags} "$f" > /dev/null 2>&1;
            else
                if [[ ${PAX_MARKINGS} != "none" ]]; then
                    elog "Failed to set PT_PAX markings -${flags} ${f}.";
                    ret=1;
                fi;
            fi;
        done;
    fi;
    if has XT ${PAX_MARKINGS}; then
        flags="${flags//z}";
        for f in "$@";
        do
            if type -p paxctl-ng > /dev/null && paxctl-ng -l; then
                einfo "XATTR_PAX marking -${flags} ${f} with paxctl-ng";
                [[ ${dodefault} == "yes" ]] && paxctl-ng -d "${f}" > /dev/null 2>&1;
                [[ -n "${flags}" ]] || continue;
                paxctl-ng -l -${flags} "${f}" > /dev/null 2>&1 && continue;
            fi;
            if type -p setfattr > /dev/null; then
                [[ -n "${flags//[!Ee]}" ]] || flags+="e";
                einfo "XATTR_PAX marking -${flags} ${f} with setfattr";
                [[ ${dodefault} == "yes" ]] && setfattr -x "user.pax.flags" "${f}" > /dev/null 2>&1;
                setfattr -n "user.pax.flags" -v "${flags}" "${f}" > /dev/null 2>&1 && continue;
            fi;
            if [[ ${PAX_MARKINGS} != "none" ]]; then
                elog "Failed to set XATTR_PAX markings -${flags} ${f}.";
                ret=1;
            fi;
        done;
    fi;
    return ${ret}
}
pkg_nofetch () 
{ 
    default
}
pkg_postinst () 
{ 
    gnome2_pkg_postinst "$@"
}
pkg_postrm () 
{ 
    gnome2_pkg_postrm "$@"
}
pkg_preinst () 
{ 
    gnome2_pkg_preinst "$@"
}
pkg_pretend () 
{ 
    if [[ ${MERGE_TYPE} != "binary" ]]; then
        if is-flagq "-g*" && ! is-flagq "-g*0"; then
            einfo "Checking for sufficient disk space to build ${PN} with debugging CFLAGS";
            check-reqs_pkg_pretend;
        fi;
        if ! test-flag-CXX -std=c++11; then
            die "You need at least GCC 4.9.x or Clang >= 3.3 for C++11-specific compiler flags";
        fi;
        if tc-is-gcc && [[ $(gcc-version) < 4.9 ]]; then
            die 'The active compiler needs to be gcc 4.9 (or newer)';
        fi;
    fi;
    if ! use opengl && ! use gles2; then
        ewarn;
        ewarn "You are disabling OpenGL usage (USE=opengl or USE=gles) completely.";
        ewarn "This is an unsupported configuration meant for very specific embedded";
        ewarn "use cases, where there truly is no GL possible (and even that use case";
        ewarn "is very unlikely to come by). If you have GL (even software-only), you";
        ewarn "really really should be enabling OpenGL!";
        ewarn;
    fi
}
pkg_setup () 
{ 
    if [[ ${MERGE_TYPE} != "binary" ]] && is-flagq "-g*" && ! is-flagq "-g*0"; then
        check-reqs_pkg_setup;
    fi;
    python-any-r1_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
}
python-any-r1_pkg_setup () 
{ 
    debug-print-function ${FUNCNAME} "${@}";
    [[ ${MERGE_TYPE} != binary ]] && python_setup
}
python_abi_depend () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite"
}
python_byte-compile_modules () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite"
}
python_clean_byte-compiled_modules () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite"
}
python_clean_installation_image () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite"
}
python_clean_py-compile_files () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite"
}
python_convert_shebangs () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#python_convert_shebangs"
}
python_disable_pyc () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite"
}
python_doexe () 
{ 
    debug-print-function ${FUNCNAME} "${@}";
    local f;
    for f in "$@";
    do
        python_newexe "${f}" "${f##*/}";
    done
}
python_doheader () 
{ 
    debug-print-function ${FUNCNAME} "${@}";
    [[ -n ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).';
    if [[ ${EAPI:-0} == [0123] ]]; then
        die "python_do* and python_new* helpers are banned in EAPIs older than 4.";
    fi;
    local d PYTHON_INCLUDEDIR=${PYTHON_INCLUDEDIR};
    [[ -n ${PYTHON_INCLUDEDIR} ]] || python_export PYTHON_INCLUDEDIR;
    d=${PYTHON_INCLUDEDIR#${EPREFIX}};
    ( insopts -m 0644;
    insinto "${d}";
    doins -r "${@}" || return ${?} )
}
python_domodule () 
{ 
    debug-print-function ${FUNCNAME} "${@}";
    [[ -n ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).';
    if [[ ${EAPI:-0} == [0123] ]]; then
        die "python_do* and python_new* helpers are banned in EAPIs older than 4.";
    fi;
    local d;
    if [[ ${python_moduleroot} == /* ]]; then
        d=${python_moduleroot};
    else
        local PYTHON_SITEDIR=${PYTHON_SITEDIR};
        [[ -n ${PYTHON_SITEDIR} ]] || python_export PYTHON_SITEDIR;
        d=${PYTHON_SITEDIR#${EPREFIX}}/${python_moduleroot//.//};
    fi;
    ( insopts -m 0644;
    insinto "${d}";
    doins -r "${@}" || return ${?} );
    python_optimize "${ED%/}/${d}"
}
python_doscript () 
{ 
    debug-print-function ${FUNCNAME} "${@}";
    local _PYTHON_REWRITE_SHEBANG=1;
    python_doexe "${@}"
}
python_enable_pyc () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite"
}
python_execute_function () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#python_execute_function"
}
python_execute_nosetests () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite"
}
python_execute_py.test () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite"
}
python_execute_trial () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite"
}
python_export () 
{ 
    debug-print-function ${FUNCNAME} "${@}";
    local impl var;
    case "${1}" in 
        python* | jython*)
            impl=${1/_/.};
            shift
        ;;
        pypy | pypy3)
            impl=${1};
            shift
        ;;
        *)
            impl=${EPYTHON};
            if [[ -z ${impl} ]]; then
                die "python_export called without a python implementation and EPYTHON is unset";
            fi
        ;;
    esac;
    debug-print "${FUNCNAME}: implementation: ${impl}";
    for var in "$@";
    do
        case "${var}" in 
            EPYTHON)
                export EPYTHON=${impl};
                debug-print "${FUNCNAME}: EPYTHON = ${EPYTHON}"
            ;;
            PYTHON)
                export PYTHON=${EPREFIX}/usr/bin/${impl};
                debug-print "${FUNCNAME}: PYTHON = ${PYTHON}"
            ;;
            PYTHON_SITEDIR)
                [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it";
                PYTHON_SITEDIR=$("${PYTHON}" -c 'import distutils.sysconfig; print(distutils.sysconfig.get_python_lib())') || die;
                export PYTHON_SITEDIR;
                debug-print "${FUNCNAME}: PYTHON_SITEDIR = ${PYTHON_SITEDIR}"
            ;;
            PYTHON_INCLUDEDIR)
                [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it";
                PYTHON_INCLUDEDIR=$("${PYTHON}" -c 'import distutils.sysconfig; print(distutils.sysconfig.get_python_inc())') || die;
                export PYTHON_INCLUDEDIR;
                debug-print "${FUNCNAME}: PYTHON_INCLUDEDIR = ${PYTHON_INCLUDEDIR}";
                if [[ ! -d ${PYTHON_INCLUDEDIR} ]]; then
                    die "${impl} does not install any header files!";
                fi
            ;;
            PYTHON_LIBPATH)
                [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it";
                PYTHON_LIBPATH=$("${PYTHON}" -c 'import os.path, sysconfig; print(os.path.join(sysconfig.get_config_var("LIBDIR"), sysconfig.get_config_var("LDLIBRARY")) if sysconfig.get_config_var("LDLIBRARY") else "")') || die;
                export PYTHON_LIBPATH;
                debug-print "${FUNCNAME}: PYTHON_LIBPATH = ${PYTHON_LIBPATH}";
                if [[ ! -n ${PYTHON_LIBPATH} ]]; then
                    die "${impl} lacks a (usable) dynamic library";
                fi
            ;;
            PYTHON_CFLAGS)
                local val;
                case "${impl}" in 
                    python*)
                        val=$($(tc-getPKG_CONFIG) --cflags ${impl/n/n-}) || die
                    ;;
                    *)
                        die "${impl}: obtaining ${var} not supported"
                    ;;
                esac;
                export PYTHON_CFLAGS=${val};
                debug-print "${FUNCNAME}: PYTHON_CFLAGS = ${PYTHON_CFLAGS}"
            ;;
            PYTHON_LIBS)
                local val;
                case "${impl}" in 
                    python*)
                        val=$($(tc-getPKG_CONFIG) --libs ${impl/n/n-}) || die
                    ;;
                    *)
                        die "${impl}: obtaining ${var} not supported"
                    ;;
                esac;
                export PYTHON_LIBS=${val};
                debug-print "${FUNCNAME}: PYTHON_LIBS = ${PYTHON_LIBS}"
            ;;
            PYTHON_CONFIG)
                local flags val;
                case "${impl}" in 
                    python*)
                        [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it";
                        flags=$("${PYTHON}" -c 'import sysconfig; print(sysconfig.get_config_var("ABIFLAGS") or "")') || die;
                        val=${PYTHON}${flags}-config
                    ;;
                    *)
                        die "${impl}: obtaining ${var} not supported"
                    ;;
                esac;
                export PYTHON_CONFIG=${val};
                debug-print "${FUNCNAME}: PYTHON_CONFIG = ${PYTHON_CONFIG}"
            ;;
            PYTHON_PKG_DEP)
                local d;
                case ${impl} in 
                    python2.7)
                        PYTHON_PKG_DEP='>=dev-lang/python-2.7.5-r2:2.7'
                    ;;
                    python3.3)
                        PYTHON_PKG_DEP='>=dev-lang/python-3.3.2-r2:3.3'
                    ;;
                    python*)
                        PYTHON_PKG_DEP="dev-lang/python:${impl#python}"
                    ;;
                    pypy)
                        PYTHON_PKG_DEP='>=virtual/pypy-5:0='
                    ;;
                    pypy3)
                        PYTHON_PKG_DEP='>=virtual/pypy3-5:0='
                    ;;
                    jython2.7)
                        PYTHON_PKG_DEP='dev-java/jython:2.7'
                    ;;
                    *)
                        die "Invalid implementation: ${impl}"
                    ;;
                esac;
                if [[ -n ${PYTHON_REQ_USE} ]]; then
                    PYTHON_PKG_DEP+=[${PYTHON_REQ_USE}];
                fi;
                export PYTHON_PKG_DEP;
                debug-print "${FUNCNAME}: PYTHON_PKG_DEP = ${PYTHON_PKG_DEP}"
            ;;
            PYTHON_SCRIPTDIR)
                local dir;
                export PYTHON_SCRIPTDIR=${EPREFIX}/usr/lib/python-exec/${impl};
                debug-print "${FUNCNAME}: PYTHON_SCRIPTDIR = ${PYTHON_SCRIPTDIR}"
            ;;
            *)
                die "python_export: unknown variable ${var}"
            ;;
        esac;
    done
}
python_export_utf8_locale () 
{ 
    debug-print-function ${FUNCNAME} "${@}";
    type locale > /dev/null || return 0;
    if [[ $(locale charmap) != UTF-8 ]]; then
        local lang locales="C.UTF-8 en_US.UTF-8 en_GB.UTF-8 $(locale -a)";
        for lang in ${locales};
        do
            if [[ $(LC_ALL=${lang} locale charmap 2>/dev/null) == UTF-8 ]]; then
                if _python_check_locale_sanity "${lang}"; then
                    export LC_CTYPE=${lang};
                    if [[ -n ${LC_ALL} ]]; then
                        export LC_NUMERIC=${LC_ALL};
                        export LC_TIME=${LC_ALL};
                        export LC_COLLATE=${LC_ALL};
                        export LC_MONETARY=${LC_ALL};
                        export LC_MESSAGES=${LC_ALL};
                        export LC_PAPER=${LC_ALL};
                        export LC_NAME=${LC_ALL};
                        export LC_ADDRESS=${LC_ALL};
                        export LC_TELEPHONE=${LC_ALL};
                        export LC_MEASUREMENT=${LC_ALL};
                        export LC_IDENTIFICATION=${LC_ALL};
                        export LC_ALL=;
                    fi;
                    return 0;
                fi;
            fi;
        done;
        ewarn "Could not find a UTF-8 locale. This may trigger build failures in";
        ewarn "some python packages. Please ensure that a UTF-8 locale is listed in";
        ewarn "/etc/locale.gen and run locale-gen.";
        return 1;
    fi;
    return 0
}
python_fix_shebang () 
{ 
    debug-print-function ${FUNCNAME} "${@}";
    [[ -n ${EPYTHON} ]] || die "${FUNCNAME}: EPYTHON unset (pkg_setup not called?)";
    local force quiet;
    while [[ -n ${@} ]]; do
        case "${1}" in 
            -f | --force)
                force=1;
                shift
            ;;
            -q | --quiet)
                quiet=1;
                shift
            ;;
            --)
                shift;
                break
            ;;
            *)
                break
            ;;
        esac;
    done;
    [[ -n ${1} ]] || die "${FUNCNAME}: no paths given";
    local path f;
    for path in "$@";
    do
        local any_correct any_fixed is_recursive;
        [[ -d ${path} ]] && is_recursive=1;
        while IFS= read -r -d '' f; do
            local shebang i;
            local error= from=;
            IFS= read -r shebang < "${f}";
            if [[ ${shebang} == '#!'* ]]; then
                local split_shebang=();
                read -r -a split_shebang <<< ${shebang} || die;
                for i in "${split_shebang[@]}";
                do
                    case "${i}" in 
                        *"${EPYTHON}")
                            debug-print "${FUNCNAME}: in file ${f#${D%/}}";
                            debug-print "${FUNCNAME}: shebang matches EPYTHON: ${shebang}";
                            any_correct=1;
                            from=${EPYTHON};
                            break
                        ;;
                        *python | *python[23])
                            debug-print "${FUNCNAME}: in file ${f#${D%/}}";
                            debug-print "${FUNCNAME}: rewriting shebang: ${shebang}";
                            if [[ ${i} == *python2 ]]; then
                                from=python2;
                                if [[ ! -n ${force} ]]; then
                                    python_is_python3 "${EPYTHON}" && error=1;
                                fi;
                            else
                                if [[ ${i} == *python3 ]]; then
                                    from=python3;
                                    if [[ ! -n ${force} ]]; then
                                        python_is_python3 "${EPYTHON}" || error=1;
                                    fi;
                                else
                                    from=python;
                                fi;
                            fi;
                            break
                        ;;
                        *python[23].[0123456789] | *pypy | *pypy3 | *jython[23].[0123456789])
                            if [[ ! -n ${force} ]]; then
                                error=1;
                            else
                                case "${i}" in 
                                    *python[23].[0123456789])
                                        from="python[23].[0123456789]"
                                    ;;
                                    *pypy)
                                        from="pypy"
                                    ;;
                                    *pypy3)
                                        from="pypy3"
                                    ;;
                                    *jython[23].[0123456789])
                                        from="jython[23].[0123456789]"
                                    ;;
                                    *)
                                        die "${FUNCNAME}: internal error in 2nd pattern match"
                                    ;;
                                esac;
                            fi;
                            break
                        ;;
                    esac;
                done;
            fi;
            if [[ ! -n ${error} && ! -n ${from} ]]; then
                [[ -n ${is_recursive} ]] && continue;
                error=1;
            fi;
            if [[ ! -n ${quiet} ]]; then
                einfo "Fixing shebang in ${f#${D%/}}.";
            fi;
            if [[ ! -n ${error} ]]; then
                if [[ ${shebang} == *${from}" "* ]]; then
                    sed -i -e "1s:${from} :${EPYTHON} :" "${f}" || die;
                else
                    sed -i -e "1s:${from}$:${EPYTHON}:" "${f}" || die;
                fi;
                any_fixed=1;
            else
                eerror "The file has incompatible shebang:";
                eerror "  file: ${f#${D%/}}";
                eerror "  current shebang: ${shebang}";
                eerror "  requested impl: ${EPYTHON}";
                die "${FUNCNAME}: conversion of incompatible shebang requested";
            fi;
        done < <(find -H "${path}" -type f -print0 || die);
        if [[ ! -n ${any_fixed} ]]; then
            local cmd=eerror;
            [[ ${EAPI:-0} == [012345] ]] && cmd=eqawarn;
            "${cmd}" "QA warning: ${FUNCNAME}, ${path#${D%/}} did not match any fixable files.";
            if [[ -n ${any_correct} ]]; then
                "${cmd}" "All files have ${EPYTHON} shebang already.";
            else
                "${cmd}" "There are no Python files in specified directory.";
            fi;
            [[ ${cmd} == eerror ]] && die "${FUNCNAME} did not match any fixable files (QA warning fatal in EAPI ${EAPI})";
        fi;
    done
}
python_gen_any_dep () 
{ 
    debug-print-function ${FUNCNAME} "${@}";
    local depstr=${1};
    [[ -n ${depstr} ]] || die "No dependency string provided";
    local i PYTHON_PKG_DEP out=;
    for i in "${_PYTHON_SUPPORTED_IMPLS[@]}";
    do
        local PYTHON_USEDEP="python_targets_${i}(-),python_single_target_${i}(+)";
        python_export "${i}" PYTHON_PKG_DEP;
        local i_depstr=${depstr//\$\{PYTHON_USEDEP\}/${PYTHON_USEDEP}};
        out="( ${PYTHON_PKG_DEP%=} ${i_depstr} ) ${out}";
    done;
    echo "|| ( ${out})"
}
python_generate_cffi_modules () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite"
}
python_generate_wrapper_scripts () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite"
}
python_get_CFLAGS () 
{ 
    debug-print-function ${FUNCNAME} "${@}";
    python_export "${@}" PYTHON_CFLAGS;
    echo "${PYTHON_CFLAGS}"
}
python_get_LIBS () 
{ 
    debug-print-function ${FUNCNAME} "${@}";
    python_export "${@}" PYTHON_LIBS;
    echo "${PYTHON_LIBS}"
}
python_get_PYTHON_CONFIG () 
{ 
    debug-print-function ${FUNCNAME} "${@}";
    python_export "${@}" PYTHON_CONFIG;
    echo "${PYTHON_CONFIG}"
}
python_get_extension_module_suffix () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite"
}
python_get_implementation () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite"
}
python_get_implementation_and_version () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite"
}
python_get_implementational_package () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite"
}
python_get_includedir () 
{ 
    debug-print-function ${FUNCNAME} "${@}";
    python_export "${@}" PYTHON_INCLUDEDIR;
    echo "${PYTHON_INCLUDEDIR}"
}
python_get_libdir () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite"
}
python_get_library () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite"
}
python_get_library_path () 
{ 
    debug-print-function ${FUNCNAME} "${@}";
    python_export "${@}" PYTHON_LIBPATH;
    echo "${PYTHON_LIBPATH}"
}
python_get_scriptdir () 
{ 
    debug-print-function ${FUNCNAME} "${@}";
    python_export "${@}" PYTHON_SCRIPTDIR;
    echo "${PYTHON_SCRIPTDIR}"
}
python_get_sitedir () 
{ 
    debug-print-function ${FUNCNAME} "${@}";
    python_export "${@}" PYTHON_SITEDIR;
    echo "${PYTHON_SITEDIR}"
}
python_get_version () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite"
}
python_install_executables () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite"
}
python_is_installed () 
{ 
    local impl=${1:-${EPYTHON}};
    [[ -n ${impl} ]] || die "${FUNCNAME}: no impl nor EPYTHON";
    local hasv_args=();
    case ${EAPI:-0} in 
        0 | 1 | 2 | 3 | 4)
            local -x ROOT=/
        ;;
        5 | 6)
            hasv_args+=(--host-root)
        ;;
        *)
            hasv_args+=(-b)
        ;;
    esac;
    case "${impl}" in 
        pypy | pypy3)
            local append=;
            if [[ -n ${PYTHON_REQ_USE} ]]; then
                append=[${PYTHON_REQ_USE}];
            fi;
            has_version "${hasv_args[@]}" "dev-python/${impl}${append}" || has_version "${hasv_args[@]}" "dev-python/${impl}-bin${append}"
        ;;
        *)
            local PYTHON_PKG_DEP;
            python_export "${impl}" PYTHON_PKG_DEP;
            has_version "${hasv_args[@]}" "${PYTHON_PKG_DEP}"
        ;;
    esac
}
python_is_python3 () 
{ 
    local impl=${1:-${EPYTHON}};
    [[ -n ${impl} ]] || die "python_is_python3: no impl nor EPYTHON";
    [[ ${impl} == python3* || ${impl} == pypy3 ]]
}
python_merge_intermediate_installation_images () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite"
}
python_mod_cleanup () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#Python_byte-code_compilation"
}
python_mod_optimize () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#Python_byte-code_compilation"
}
python_moduleinto () 
{ 
    debug-print-function ${FUNCNAME} "${@}";
    python_moduleroot=${1}
}
python_need_rebuild () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite"
}
python_newexe () 
{ 
    debug-print-function ${FUNCNAME} "${@}";
    [[ -n ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).';
    [[ ${#} -eq 2 ]] || die "Usage: ${FUNCNAME} <path> <new-name>";
    if [[ ${EAPI:-0} == [0123] ]]; then
        die "python_do* and python_new* helpers are banned in EAPIs older than 4.";
    fi;
    local wrapd=${python_scriptroot:-/usr/bin};
    local f=${1};
    local newfn=${2};
    local PYTHON_SCRIPTDIR d;
    python_export PYTHON_SCRIPTDIR;
    d=${PYTHON_SCRIPTDIR#${EPREFIX}};
    ( dodir "${wrapd}";
    exeopts -m 0755;
    exeinto "${d}";
    newexe "${f}" "${newfn}" || return ${?} );
    _python_ln_rel "${ED%/}"/usr/lib/python-exec/python-exec2 "${ED%/}/${wrapd}/${newfn}" || die;
    if [[ -n ${_PYTHON_REWRITE_SHEBANG} ]]; then
        python_fix_shebang -q "${ED%/}/${d}/${newfn}";
    fi
}
python_newscript () 
{ 
    debug-print-function ${FUNCNAME} "${@}";
    local _PYTHON_REWRITE_SHEBANG=1;
    python_newexe "${@}"
}
python_optimize () 
{ 
    debug-print-function ${FUNCNAME} "${@}";
    if [[ ${EBUILD_PHASE} == pre* || ${EBUILD_PHASE} == post* ]]; then
        eerror "The new Python eclasses expect the compiled Python files to";
        eerror "be controlled by the Package Manager. For this reason,";
        eerror "the python_optimize function can be used only during src_* phases";
        eerror "(src_install most commonly) and not during pkg_* phases.";
        echo;
        die "python_optimize is not to be used in pre/post* phases";
    fi;
    [[ -n ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).';
    local PYTHON=${PYTHON};
    [[ -n ${PYTHON} ]] || python_export PYTHON;
    if [[ ${#} -eq 0 ]]; then
        local f;
        while IFS= read -r -d '' f; do
            if [[ ${f} == /* && -d ${D%/}${f} ]]; then
                set -- "${D%/}${f}" "${@}";
            fi;
        done < <("${PYTHON}" -c 'import sys; print("\0".join(sys.path))' || die);
        debug-print "${FUNCNAME}: using sys.path: ${*/%/;}";
    fi;
    local d;
    for d in "$@";
    do
        local instpath=${d#${D%/}};
        instpath=/${instpath##/};
        case "${EPYTHON}" in 
            python2.7 | python3.[34])
                "${PYTHON}" -m compileall -q -f -d "${instpath}" "${d}";
                "${PYTHON}" -OO -m compileall -q -f -d "${instpath}" "${d}"
            ;;
            python* | pypy3)
                "${PYTHON}" -m compileall -q -f -d "${instpath}" "${d}";
                "${PYTHON}" -O -m compileall -q -f -d "${instpath}" "${d}";
                "${PYTHON}" -OO -m compileall -q -f -d "${instpath}" "${d}"
            ;;
            *)
                "${PYTHON}" -m compileall -q -f -d "${instpath}" "${d}"
            ;;
        esac;
    done
}
python_pkg_setup () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#pkg_setup"
}
python_scriptinto () 
{ 
    debug-print-function ${FUNCNAME} "${@}";
    python_scriptroot=${1}
}
python_set_active_version () 
{ 
    die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#pkg_setup"
}
python_setup () 
{ 
    debug-print-function ${FUNCNAME} "${@}";
    if [[ -n ${PYTHON_COMPAT_OVERRIDE} ]]; then
        local impls=(${PYTHON_COMPAT_OVERRIDE});
        [[ ${#impls[@]} -eq 1 ]] || die "PYTHON_COMPAT_OVERRIDE must name exactly one implementation for python-any-r1";
        ewarn "WARNING: PYTHON_COMPAT_OVERRIDE in effect. The following Python";
        ewarn "implementation will be used:";
        ewarn;
        ewarn "	${PYTHON_COMPAT_OVERRIDE}";
        ewarn;
        ewarn "Dependencies won't be satisfied, and EPYTHON/eselect-python will be ignored.";
        python_export "${impls[0]}" EPYTHON PYTHON;
        python_wrapper_setup;
        return;
    fi;
    if [[ -n ${EPYTHON} ]]; then
        if _python_EPYTHON_supported "${EPYTHON}"; then
            python_export EPYTHON PYTHON;
            python_wrapper_setup;
            return;
        fi;
    fi;
    local variant i;
    for variant in '' '--python2' '--python3';
    do
        i=$(eselect python --show ${variant} 2>/dev/null);
        if [[ ! -n ${i} ]]; then
            break;
        else
            if _python_EPYTHON_supported "${i}"; then
                python_export "${i}" EPYTHON PYTHON;
                python_wrapper_setup;
                return;
            fi;
        fi;
    done;
    for ((i = ${#_PYTHON_SUPPORTED_IMPLS[@]} - 1; i >= 0; i-- ))
    do
        python_export "${_PYTHON_SUPPORTED_IMPLS[i]}" EPYTHON PYTHON;
        if _python_EPYTHON_supported "${EPYTHON}"; then
            python_wrapper_setup;
            return;
        fi;
    done;
    eerror "No Python implementation found for the build. This is usually";
    eerror "a bug in the ebuild. Please report it to bugs.gentoo.org";
    eerror "along with the build log.";
    echo;
    die "No supported Python implementation installed."
}
python_wrapper_setup () 
{ 
    debug-print-function ${FUNCNAME} "${@}";
    local workdir=${1:-${T}/${EPYTHON}};
    local impl=${2:-${EPYTHON}};
    [[ -n ${workdir} ]] || die "${FUNCNAME}: no workdir specified.";
    [[ -n ${impl} ]] || die "${FUNCNAME}: no impl nor EPYTHON specified.";
    if [[ ! -x ${workdir}/bin/python ]]; then
        _python_check_dead_variables;
        mkdir -p "${workdir}"/{bin,pkgconfig} || die;
        rm -f "${workdir}"/bin/python{,2,3}{,-config} || die;
        rm -f "${workdir}"/bin/2to3 || die;
        rm -f "${workdir}"/pkgconfig/python{,2,3}.pc || die;
        local EPYTHON PYTHON;
        python_export "${impl}" EPYTHON PYTHON;
        local pyver pyother;
        if python_is_python3; then
            pyver=3;
            pyother=2;
        else
            pyver=2;
            pyother=3;
        fi;
        cat > "${workdir}/bin/python" <<-_EOF_ || 
#!/bin/sh
exec "${PYTHON}" "\${@}"
_EOF_
 die
        cp "${workdir}/bin/python" "${workdir}/bin/python${pyver}" || die;
        chmod +x "${workdir}/bin/python" "${workdir}/bin/python${pyver}" || die;
        local nonsupp=("python${pyother}" "python${pyother}-config");
        if [[ ${EPYTHON} == python* ]]; then
            cat > "${workdir}/bin/python-config" <<-_EOF_ || 
#!/bin/sh
exec "${PYTHON}-config" "\${@}"
_EOF_
 die
            cp "${workdir}/bin/python-config" "${workdir}/bin/python${pyver}-config" || die;
            chmod +x "${workdir}/bin/python-config" "${workdir}/bin/python${pyver}-config" || die;
            ln -s "${PYTHON/python/2to3-}" "${workdir}"/bin/2to3 || die;
            ln -s "${EPREFIX}"/usr/$(get_libdir)/pkgconfig/${EPYTHON/n/n-}.pc "${workdir}"/pkgconfig/python.pc || die;
            ln -s python.pc "${workdir}"/pkgconfig/python${pyver}.pc || die;
        else
            nonsupp+=(2to3 python-config "python${pyver}-config");
        fi;
        local x;
        for x in "${nonsupp[@]}";
        do
            cat > "${workdir}"/bin/${x} <<-_EOF_ || 
#!/bin/sh
echo "${ECLASS}: ${FUNCNAME}: ${x} is not supported by ${EPYTHON} (PYTHON_COMPAT)" >&2
exit 127
_EOF_
 die
            chmod +x "${workdir}"/bin/${x} || die;
        done;
    fi;
    if [[ ${PATH##:*} != ${workdir}/bin ]]; then
        PATH=${workdir}/bin${PATH:+:${PATH}};
    fi;
    if [[ ${PKG_CONFIG_PATH##:*} != ${workdir}/pkgconfig ]]; then
        PKG_CONFIG_PATH=${workdir}/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}};
    fi;
    export PATH PKG_CONFIG_PATH
}
raw-ldflags () 
{ 
    local x input="$@";
    [[ -z ${input} ]] && input=${LDFLAGS};
    set --;
    for x in ${input};
    do
        case ${x} in 
            -Wl,*)
                x=${x#-Wl,};
                set -- "$@" ${x//,/ }
            ;;
            *)

            ;;
        esac;
    done;
    echo "$@"
}
replace-cpu-flags () 
{ 
    local newcpu="$#";
    newcpu="${!newcpu}";
    while [ $# -gt 1 ]; do
        replace-flags "-march=${1}" "-march=${newcpu}";
        replace-flags "-mcpu=${1}" "-mcpu=${newcpu}";
        replace-flags "-mtune=${1}" "-mtune=${newcpu}";
        shift;
    done;
    return 0
}
replace-flags () 
{ 
    [[ $# != 2 ]] && die "Usage: replace-flags <old flag> <new flag>";
    local f var new;
    for var in $(all-flag-vars);
    do
        new=();
        for f in ${!var};
        do
            [[ ${f} == ${1} ]] && f=${2};
            new+=("${f}");
        done;
        export ${var}="${new[*]}";
    done;
    return 0
}
replace-sparc64-flags () 
{ 
    local SPARC64_CPUS="ultrasparc3 ultrasparc v9";
    if [ "${CFLAGS/mtune}" != "${CFLAGS}" ]; then
        for x in ${SPARC64_CPUS};
        do
            CFLAGS="${CFLAGS/-mcpu=${x}/-mcpu=v8}";
        done;
    else
        for x in ${SPARC64_CPUS};
        do
            CFLAGS="${CFLAGS/-mcpu=${x}/-mcpu=v8 -mtune=${x}}";
        done;
    fi;
    if [ "${CXXFLAGS/mtune}" != "${CXXFLAGS}" ]; then
        for x in ${SPARC64_CPUS};
        do
            CXXFLAGS="${CXXFLAGS/-mcpu=${x}/-mcpu=v8}";
        done;
    else
        for x in ${SPARC64_CPUS};
        do
            CXXFLAGS="${CXXFLAGS/-mcpu=${x}/-mcpu=v8 -mtune=${x}}";
        done;
    fi;
    export CFLAGS CXXFLAGS
}
replace_all_version_separators () 
{ 
    local c=($(get_all_version_components "${2:-${PV}}"));
    c=${c[@]//[-._]/$1};
    echo ${c// }
}
replace_version_separator () 
{ 
    eshopts_push -s extglob;
    local w c v="${3:-${PV}}";
    declare -i i found=0;
    w=${1:-1};
    c=($(get_all_version_components ${v}));
    if [[ ${w} != *[[:digit:]]* ]]; then
        for ((i = 0; i < ${#c[@]}; i++))
        do
            if [[ ${c[i]} == ${w} ]]; then
                c[i]=${2};
                break;
            fi;
        done;
    else
        for ((i = 0; i < ${#c[@]}; i++))
        do
            if [[ -n "${c[i]//[^-._]}" ]]; then
                found+=1;
                if ((found == w)); then
                    c[i]=${2};
                    break;
                fi;
            fi;
        done;
    fi;
    c=${c[*]};
    echo ${c// };
    eshopts_pop
}
setup-allowed-flags () 
{ 
    ALLOWED_FLAGS=(-pipe -O '-O[12sg]' -mcpu -march -mtune '-fstack-protector*' '-fsanitize*' '-fstack-check*' -fno-stack-check -fbounds-check -fbounds-checking -fno-strict-overflow -fno-PIE -fno-pie -nopie -no-pie -fno-unit-at-a-time -g '-g[0-9]' -ggdb '-ggdb[0-9]' '-gdwarf-*' gstabs -gstabs+ -gz -fno-ident -fpermissive -frecord-gcc-switches '-fdiagnostics*' '-fplugin*' '-W*' -w '-[DUILR]*' '-Wl,*' '-fuse-ld');
    ALLOWED_FLAGS+=('-fno-stack-protector*' '-fabi-version=*' -fno-strict-aliasing -fno-bounds-check -fno-bounds-checking -fstrict-overflow -fno-omit-frame-pointer '-fno-builtin*');
    ALLOWED_FLAGS+=(-mregparm -mno-app-regs -mapp-regs -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-ssse3 -mno-sse4 -mno-sse4.1 -mno-sse4.2 -mno-avx -mno-aes -mno-pclmul -mno-sse4a -mno-3dnow -mno-popcnt -mno-abm -mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 -mplt -msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu -mieee -mieee-with-inexact -mschedule -mfloat-gprs -mspe -mno-spe -mtls-direct-seg-refs -mno-tls-direct-seg-refs -mflat -mno-flat -mno-faster-structs -mfaster-structs -m32 -m64 -mx32 -mabi -mlittle-endian -mbig-endian -EL -EB -fPIC -mlive-g0 -mcmodel -mstack-bias -mno-stack-bias -msecure-plt '-m*-toc' -mfloat-abi -mfix-r10000 -mno-fix-r10000 -mthumb -marm -mno-fma4 -mno-movbe -mno-xop -mno-lwp -mno-fsgsbase -mno-rdrnd -mno-f16c -mno-bmi -mno-tbm -mno-avx2 -mno-bmi2 -mno-fma -mno-lzcnt -mno-fxsr -mno-hle -mno-rtm -mno-xsave -mno-xsaveopt -mno-avx512cd -mno-avx512er -mno-avx512f -mno-avx512pf -mno-sha);
    ALLOWED_FLAGS+=(-mstackrealign)
}
src_compile () 
{ 
    cmake-utils_src_compile
}
src_configure () 
{ 
    tc-export CC;
    use alpha && append-ldflags "-Wl,--no-relax";
    use ia64 && append-ldflags "-Wl,--no-as-needed";
    use sparc && filter-flags "-mvis";
    use ppc64 && append-flags "-mminimal-toc";
    if ! use ia64; then
        append-ldflags "-Wl,--no-keep-memory";
    fi;
    append-flags $(test-flags -fno-strict-aliasing);
    local rubyimpl;
    local ruby_interpreter="";
    for rubyimpl in ${USE_RUBY};
    do
        if has_version "virtual/rubygems[ruby_targets_${rubyimpl}]"; then
            ruby_interpreter="-DRUBY_EXECUTABLE=$(type -P ${rubyimpl})";
        fi;
    done;
    [[ -z $ruby_interpreter ]] && die "No suitable ruby interpreter found";
    local opengl_enabled;
    if use opengl || use gles2; then
        opengl_enabled=ON;
    else
        opengl_enabled=OFF;
    fi;
    local mycmakeargs=(-DENABLE_QUARTZ_TARGET=$(usex aqua) -DENABLE_API_TESTS=$(usex test) -DENABLE_GTKDOC=$(usex doc) -DENABLE_GEOLOCATION=$(usex geolocation) $(cmake-utils_use_find_package gles2 OpenGLES2) -DENABLE_GLES2=$(usex gles2) -DENABLE_VIDEO=$(usex gstreamer) -DENABLE_WEB_AUDIO=$(usex gstreamer) -DENABLE_INTROSPECTION=$(usex introspection) -DUSE_LIBNOTIFY=$(usex libnotify) -DUSE_LIBSECRET=$(usex gnome-keyring) -DUSE_OPENJPEG=$(usex jpeg2k) -DUSE_WOFF2=ON -DENABLE_BUBBLEWRAP_SANDBOX=$(usex bwrap) -DENABLE_PLUGIN_PROCESS_GTK2=$(usex nsplugin) -DENABLE_SPELLCHECK=$(usex spell) -DENABLE_WAYLAND_TARGET=$(usex wayland) -DENABLE_WEBGL=$(usex webgl) $(cmake-utils_use_find_package egl EGL) $(cmake-utils_use_find_package opengl OpenGL) -DENABLE_X11_TARGET=$(usex X) -DENABLE_OPENGL=${opengl_enabled} -DCMAKE_BUILD_TYPE=Release -DPORT=GTK ${ruby_interpreter});
    cmake-utils_src_configure
}
src_install () 
{ 
    cmake-utils_src_install;
    pax-mark m "${ED}usr/libexec/webkit2gtk-4.0/jsc" "${ED}usr/libexec/webkit2gtk-4.0/WebKitWebProcess";
    pax-mark m "${ED}usr/libexec/webkit2gtk-4.0/WebKitPluginProcess";
    use nsplugin && pax-mark m "${ED}usr/libexec/webkit2gtk-4.0/WebKitPluginProcess"2
}
src_prepare () 
{ 
    cmake-utils_src_prepare;
    gnome2_src_prepare
}
src_test () 
{ 
    pax-mark m $(list-paxables Programs/*[Tt]ests/*);
    cmake-utils_src_test
}
src_unpack () 
{ 
    default
}
strip-flags () 
{ 
    local x y var;
    local ALLOWED_FLAGS;
    setup-allowed-flags;
    set -f;
    for var in $(all-flag-vars);
    do
        local new=();
        for x in ${!var};
        do
            local flag=${x%%=*};
            for y in "${ALLOWED_FLAGS[@]}";
            do
                if [[ -z ${flag%%${y}} ]]; then
                    new+=("${x}");
                    break;
                fi;
            done;
        done;
        if _is_flagq ${var} "-O*" && ! _is_flagq new "-O*"; then
            new+=(-O2);
        fi;
        if [[ ${!var} != "${new[*]}" ]]; then
            einfo "strip-flags: ${var}: changed '${!var}' to '${new[*]}'";
        fi;
        export ${var}="${new[*]}";
    done;
    set +f;
    return 0
}
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}
}
strip-unsupported-flags () 
{ 
    export CFLAGS=$(test-flags-CC ${CFLAGS});
    export CXXFLAGS=$(test-flags-CXX ${CXXFLAGS});
    export FFLAGS=$(test-flags-F77 ${FFLAGS});
    export FCFLAGS=$(test-flags-FC ${FCFLAGS});
    export LDFLAGS=$(test-flags-CC ${LDFLAGS})
}
tc-arch () 
{ 
    tc-ninja_magic_to_arch portage "$@"
}
tc-arch-kernel () 
{ 
    tc-ninja_magic_to_arch kern "$@"
}
tc-check-openmp () 
{ 
    if ! tc-has-openmp; then
        eerror "Your current compiler does not support OpenMP!";
        if tc-is-gcc; then
            eerror "Enable OpenMP support by building sys-devel/gcc with USE=\"openmp\".";
        else
            if tc-is-clang; then
                eerror "OpenMP support in sys-devel/clang is provided by sys-libs/libomp.";
            fi;
        fi;
        die "Active compiler does not have required support for OpenMP";
    fi
}
tc-cpp-is-true () 
{ 
    local CONDITION=${1};
    shift;
    local RESULT=$($(tc-getTARGET_CPP) "${@}" -P - <<-EOF 2>/dev/null
			#if ${CONDITION}
			true
			#endif
		EOF
	);
    [[ ${RESULT} == true ]]
}
tc-detect-is-softfloat () 
{ 
    [[ $(tc-getTARGET_CPP) == "gcc -E" ]] && return 1;
    case ${CTARGET:-${CHOST}} in 
        *-newlib | *-elf | *-eabi)
            return 1
        ;;
        arm*)
            if tc-cpp-is-true "defined(__ARM_PCS_VFP)"; then
                echo "no";
            else
                if tc-cpp-is-true "defined(__SOFTFP__)"; then
                    echo "yes";
                else
                    echo "softfp";
                fi;
            fi;
            return 0
        ;;
        *)
            return 1
        ;;
    esac
}
tc-enables-pie () 
{ 
    tc-cpp-is-true "defined(__PIE__)" ${CPPFLAGS} ${CFLAGS}
}
tc-enables-ssp () 
{ 
    tc-cpp-is-true "defined(__SSP__) || defined(__SSP_STRONG__) || defined(__SSP_ALL__)" ${CPPFLAGS} ${CFLAGS}
}
tc-enables-ssp-all () 
{ 
    tc-cpp-is-true "defined(__SSP_ALL__)" ${CPPFLAGS} ${CFLAGS}
}
tc-enables-ssp-strong () 
{ 
    tc-cpp-is-true "defined(__SSP_STRONG__) || defined(__SSP_ALL__)" ${CPPFLAGS} ${CFLAGS}
}
tc-endian () 
{ 
    local host=$1;
    [[ -z ${host} ]] && host=${CTARGET:-${CHOST}};
    host=${host%%-*};
    case ${host} in 
        aarch64*be)
            echo big
        ;;
        aarch64)
            echo little
        ;;
        alpha*)
            echo little
        ;;
        arm*b*)
            echo big
        ;;
        arm*)
            echo little
        ;;
        cris*)
            echo little
        ;;
        hppa*)
            echo big
        ;;
        i?86*)
            echo little
        ;;
        ia64*)
            echo little
        ;;
        m68*)
            echo big
        ;;
        mips*l*)
            echo little
        ;;
        mips*)
            echo big
        ;;
        powerpc*le)
            echo little
        ;;
        powerpc*)
            echo big
        ;;
        riscv*)
            echo little
        ;;
        s390*)
            echo big
        ;;
        sh*b*)
            echo big
        ;;
        sh*)
            echo little
        ;;
        sparc*)
            echo big
        ;;
        x86_64*)
            echo little
        ;;
        *)
            echo wtf
        ;;
    esac
}
tc-env_build () 
{ 
    tc-export_build_env;
    CFLAGS=${BUILD_CFLAGS} CXXFLAGS=${BUILD_CXXFLAGS} CPPFLAGS=${BUILD_CPPFLAGS} LDFLAGS=${BUILD_LDFLAGS} AR=$(tc-getBUILD_AR) AS=$(tc-getBUILD_AS) CC=$(tc-getBUILD_CC) CPP=$(tc-getBUILD_CPP) CXX=$(tc-getBUILD_CXX) LD=$(tc-getBUILD_LD) NM=$(tc-getBUILD_NM) PKG_CONFIG=$(tc-getBUILD_PKG_CONFIG) RANLIB=$(tc-getBUILD_RANLIB) "$@"
}
tc-export () 
{ 
    local var;
    for var in "$@";
    do
        [[ $(type -t "tc-get${var}") != "function" ]] && die "tc-export: invalid export variable '${var}'";
        "tc-get${var}" > /dev/null;
    done
}
tc-export_build_env () 
{ 
    tc-export "$@";
    if tc-is-cross-compiler; then
        : ${BUILD_CFLAGS:=-O1 -pipe};
        : ${BUILD_CXXFLAGS:=-O1 -pipe};
        : ${BUILD_CPPFLAGS:= };
        : ${BUILD_LDFLAGS:= };
    else
        : ${BUILD_CFLAGS:=${CFLAGS}};
        : ${BUILD_CXXFLAGS:=${CXXFLAGS}};
        : ${BUILD_CPPFLAGS:=${CPPFLAGS}};
        : ${BUILD_LDFLAGS:=${LDFLAGS}};
    fi;
    export BUILD_{C,CXX,CPP,LD}FLAGS;
    local v;
    for v in BUILD_{C,CXX,CPP,LD}FLAGS;
    do
        export ${v#BUILD_}_FOR_BUILD="${!v}";
    done
}
tc-get-compiler-type () 
{ 
    local code='
#if defined(__PATHSCALE__)
	HAVE_PATHCC
#elif defined(__clang__)
	HAVE_CLANG
#elif defined(__GNUC__)
	HAVE_GCC
#endif
';
    local res=$($(tc-getCPP "$@") -E -P - <<<"${code}");
    case ${res} in 
        *HAVE_PATHCC*)
            echo pathcc
        ;;
        *HAVE_CLANG*)
            echo clang
        ;;
        *HAVE_GCC*)
            echo gcc
        ;;
        *)
            echo unknown
        ;;
    esac
}
tc-getAR () 
{ 
    tc-getPROG AR ar "$@"
}
tc-getAS () 
{ 
    tc-getPROG AS as "$@"
}
tc-getBUILD_AR () 
{ 
    tc-getBUILD_PROG AR ar "$@"
}
tc-getBUILD_AS () 
{ 
    tc-getBUILD_PROG AS as "$@"
}
tc-getBUILD_CC () 
{ 
    tc-getBUILD_PROG CC gcc "$@"
}
tc-getBUILD_CPP () 
{ 
    tc-getBUILD_PROG CPP "$(tc-getBUILD_CC) -E" "$@"
}
tc-getBUILD_CXX () 
{ 
    tc-getBUILD_PROG CXX g++ "$@"
}
tc-getBUILD_LD () 
{ 
    tc-getBUILD_PROG LD ld "$@"
}
tc-getBUILD_NM () 
{ 
    tc-getBUILD_PROG NM nm "$@"
}
tc-getBUILD_OBJCOPY () 
{ 
    tc-getBUILD_PROG OBJCOPY objcopy "$@"
}
tc-getBUILD_PKG_CONFIG () 
{ 
    tc-getBUILD_PROG PKG_CONFIG pkg-config "$@"
}
tc-getBUILD_PROG () 
{ 
    local vars="BUILD_$1 $1_FOR_BUILD HOST$1";
    tc-is-cross-compiler || vars+=" $1";
    _tc-getPROG CBUILD "${vars}" "${@:2}"
}
tc-getBUILD_RANLIB () 
{ 
    tc-getBUILD_PROG RANLIB ranlib "$@"
}
tc-getBUILD_STRIP () 
{ 
    tc-getBUILD_PROG STRIP strip "$@"
}
tc-getCC () 
{ 
    tc-getPROG CC gcc "$@"
}
tc-getCPP () 
{ 
    tc-getPROG CPP "${CC:-gcc} -E" "$@"
}
tc-getCXX () 
{ 
    tc-getPROG CXX g++ "$@"
}
tc-getDLLWRAP () 
{ 
    tc-getPROG DLLWRAP dllwrap "$@"
}
tc-getF77 () 
{ 
    tc-getPROG F77 gfortran "$@"
}
tc-getFC () 
{ 
    tc-getPROG FC gfortran "$@"
}
tc-getGCJ () 
{ 
    tc-getPROG GCJ gcj "$@"
}
tc-getGO () 
{ 
    tc-getPROG GO gccgo "$@"
}
tc-getLD () 
{ 
    tc-getPROG LD ld "$@"
}
tc-getNM () 
{ 
    tc-getPROG NM nm "$@"
}
tc-getOBJCOPY () 
{ 
    tc-getPROG OBJCOPY objcopy "$@"
}
tc-getOBJDUMP () 
{ 
    tc-getPROG OBJDUMP objdump "$@"
}
tc-getPKG_CONFIG () 
{ 
    tc-getPROG PKG_CONFIG pkg-config "$@"
}
tc-getPROG () 
{ 
    _tc-getPROG CHOST "$@"
}
tc-getRANLIB () 
{ 
    tc-getPROG RANLIB ranlib "$@"
}
tc-getRC () 
{ 
    tc-getPROG RC windres "$@"
}
tc-getSTRIP () 
{ 
    tc-getPROG STRIP strip "$@"
}
tc-getTARGET_CPP () 
{ 
    if [[ -n ${CTARGET} ]]; then
        _tc-getPROG CTARGET TARGET_CPP "gcc -E" "$@";
    else
        tc-getCPP "$@";
    fi
}
tc-has-openmp () 
{ 
    local base="${T}/test-tc-openmp";
    cat <<-EOF > "${base}.c"
#include <omp.h>
int main() {
int nthreads, tid, ret = 0;
#pragma omp parallel private(nthreads, tid)
{
tid = omp_get_thread_num();
nthreads = omp_get_num_threads(); ret += tid + nthreads;
}
return ret;
}
EOF

    $(tc-getCC "$@") -fopenmp "${base}.c" -o "${base}" &> /dev/null;
    local ret=$?;
    rm -f "${base}"*;
    return ${ret}
}
tc-has-tls () 
{ 
    local base="${T}/test-tc-tls";
    cat <<-EOF > "${base}.c"
int foo(int *i) {
static __thread int j = 0;
return *i ? j : *i;
}
EOF

    local flags;
    case $1 in 
        -s)
            flags="-S"
        ;;
        -c)
            flags="-c"
        ;;
        -l)

        ;;
        -*)
            die "Usage: tc-has-tls [-c|-l] [toolchain prefix]"
        ;;
    esac;
    : ${flags:=-fPIC -shared -Wl,-z,defs};
    [[ $1 == -* ]] && shift;
    $(tc-getCC "$@") ${flags} "${base}.c" -o "${base}" &> /dev/null;
    local ret=$?;
    rm -f "${base}"*;
    return ${ret}
}
tc-is-clang () 
{ 
    [[ $(tc-get-compiler-type) == clang ]]
}
tc-is-cross-compiler () 
{ 
    [[ ${CBUILD:-${CHOST}} != ${CHOST} ]]
}
tc-is-gcc () 
{ 
    [[ $(tc-get-compiler-type) == gcc ]]
}
tc-is-softfloat () 
{ 
    tc-detect-is-softfloat || tc-tuple-is-softfloat
}
tc-is-static-only () 
{ 
    local host=${CTARGET:-${CHOST}};
    [[ ${host} == *-mint* ]]
}
tc-ld-disable-gold () 
{ 
    if ! tc-ld-is-gold "$@"; then
        return;
    fi;
    ewarn "Forcing usage of the BFD linker instead of GOLD";
    local ld=$(tc-getLD "$@");
    local bfd_ld="${ld%% *}.bfd";
    local path_ld=$(which "${bfd_ld}" 2>/dev/null);
    [[ -e ${path_ld} ]] && export LD=${bfd_ld};
    local fallback="true";
    if tc-is-gcc; then
        local major=$(gcc-major-version "$@");
        local minor=$(gcc-minor-version "$@");
        if [[ ${major} -gt 4 ]] || [[ ${major} -eq 4 && ${minor} -ge 8 ]]; then
            export LDFLAGS="${LDFLAGS} -fuse-ld=bfd";
            fallback="false";
        fi;
    else
        if tc-is-clang; then
            local major=$(clang-major-version "$@");
            local minor=$(clang-minor-version "$@");
            if [[ ${major} -gt 3 ]] || [[ ${major} -eq 3 && ${minor} -ge 5 ]]; then
                export LDFLAGS="${LDFLAGS} -fuse-ld=bfd";
                fallback="false";
            fi;
        fi;
    fi;
    if [[ ${fallback} == "true" ]]; then
        if [[ -e ${path_ld} ]]; then
            local d="${T}/bfd-linker";
            mkdir -p "${d}";
            ln -sf "${path_ld}" "${d}"/ld;
            export LDFLAGS="${LDFLAGS} -B${d}";
        else
            die "unable to locate a BFD linker to bypass gold";
        fi;
    fi
}
tc-ld-is-gold () 
{ 
    local out;
    out=$($(tc-getLD "$@") --version 2>&1);
    if [[ ${out} == *"GNU gold"* ]]; then
        return 0;
    fi;
    local base="${T}/test-tc-gold";
    cat <<-EOF > "${base}.c"
int main() { return 0; }
EOF

    out=$($(tc-getCC "$@") ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} -Wl,--version "${base}.c" -o "${base}" 2>&1);
    rm -f "${base}"*;
    if [[ ${out} == *"GNU gold"* ]]; then
        return 0;
    fi;
    return 1
}
tc-ninja_magic_to_arch () 
{ 
    function ninj () 
    { 
        [[ ${type} == "kern" ]] && echo $1 || echo $2
    };
    local type=$1;
    local host=$2;
    [[ -z ${host} ]] && host=${CTARGET:-${CHOST}};
    case ${host} in 
        aarch64*)
            echo arm64
        ;;
        alpha*)
            echo alpha
        ;;
        arm*)
            echo arm
        ;;
        avr*)
            ninj avr32 avr
        ;;
        bfin*)
            ninj blackfin bfin
        ;;
        c6x*)
            echo c6x
        ;;
        cris*)
            echo cris
        ;;
        frv*)
            echo frv
        ;;
        hexagon*)
            echo hexagon
        ;;
        hppa*)
            ninj parisc hppa
        ;;
        i?86*)
            if [[ ${type} == "kern" && ${host} == *freebsd* ]]; then
                echo i386;
            else
                echo x86;
            fi
        ;;
        ia64*)
            echo ia64
        ;;
        m68*)
            echo m68k
        ;;
        metag*)
            echo metag
        ;;
        microblaze*)
            echo microblaze
        ;;
        mips*)
            echo mips
        ;;
        nios2*)
            echo nios2
        ;;
        nios*)
            echo nios
        ;;
        or1k | or32*)
            echo openrisc
        ;;
        powerpc*)
            if [[ ${type} == "kern" ]]; then
                echo powerpc;
            else
                if [[ ${host} == powerpc64* ]]; then
                    echo ppc64;
                else
                    echo ppc;
                fi;
            fi
        ;;
        riscv*)
            echo riscv
        ;;
        s390*)
            echo s390
        ;;
        score*)
            echo score
        ;;
        sh64*)
            ninj sh64 sh
        ;;
        sh*)
            echo sh
        ;;
        sparc64*)
            ninj sparc64 sparc
        ;;
        sparc*)
            [[ ${PROFILE_ARCH} == "sparc64" ]] && ninj sparc64 sparc || echo sparc
        ;;
        tile*)
            echo tile
        ;;
        vax*)
            echo vax
        ;;
        x86_64*freebsd*)
            echo amd64
        ;;
        x86_64*)
            if [[ ${type} == "kern" ]]; then
                echo x86;
            else
                echo amd64;
            fi
        ;;
        xtensa*)
            echo xtensa
        ;;
        *)
            echo unknown
        ;;
    esac
}
tc-stack-grows-down () 
{ 
    case ${ARCH} in 
        hppa | metag)
            return 1
        ;;
    esac;
    return 0
}
tc-tuple-is-softfloat () 
{ 
    local CTARGET=${CTARGET:-${CHOST}};
    case ${CTARGET//_/-} in 
        bfin* | h8300*)
            echo "only"
        ;;
        *-softfloat-*)
            echo "yes"
        ;;
        *-softfp-*)
            echo "softfp"
        ;;
        arm*-hardfloat-* | arm*eabihf)
            echo "no"
        ;;
        *-newlib | *-elf | *-eabi)
            echo "no"
        ;;
        arm*)
            echo "yes"
        ;;
        *)
            echo "no"
        ;;
    esac
}
test-flag-CC () 
{ 
    test-flag-PROG "CC" c "$@"
}
test-flag-CXX () 
{ 
    test-flag-PROG "CXX" c++ "$@"
}
test-flag-F77 () 
{ 
    test-flag-PROG "F77" f77 "$@"
}
test-flag-FC () 
{ 
    test-flag-PROG "FC" f95 "$@"
}
test-flag-PROG () 
{ 
    local comp=$1;
    local lang=$2;
    shift 2;
    [[ -z ${comp} || -z $1 ]] && return 1;
    local cmdline=($(tc-get${comp}) -Werror -c -o /dev/null);
    if "${cmdline[@]}" -x${lang} - < /dev/null &> /dev/null; then
        cmdline+=("$@" -x${lang} -);
    else
        cmdline+=("$@" -c -o /dev/null /dev/null);
    fi;
    if ! "${cmdline[@]}" < /dev/null &> /dev/null; then
        cmdline+=(-Qunused-arguments);
        "${cmdline[@]}" < /dev/null &> /dev/null;
    fi
}
test-flags () 
{ 
    test-flags-CC "$@"
}
test-flags-CC () 
{ 
    test-flags-PROG "CC" "$@"
}
test-flags-CXX () 
{ 
    test-flags-PROG "CXX" "$@"
}
test-flags-F77 () 
{ 
    test-flags-PROG "F77" "$@"
}
test-flags-FC () 
{ 
    test-flags-PROG "FC" "$@"
}
test-flags-PROG () 
{ 
    local comp=$1;
    local flags=();
    local x;
    shift;
    [[ -z ${comp} ]] && return 1;
    while (( $# )); do
        case "$1" in 
            --param)
                if test-flag-${comp} "$1" "$2"; then
                    flags+=("$1" "$2");
                fi;
                shift 2
            ;;
            *)
                if test-flag-${comp} "$1"; then
                    flags+=("$1");
                fi;
                shift 1
            ;;
        esac;
    done;
    echo "${flags[*]}";
    [[ ${#flags[@]} -gt 0 ]]
}
test_version_info () 
{ 
    if [[ $($(tc-getCC) --version 2>&1) == *$1* ]]; then
        return 0;
    else
        return 1;
    fi
}
uclibctoolize () 
{ 
    die "Use elibtoolize"
}
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
}
version_compare () 
{ 
    eshopts_push -s extglob;
    local ver_a=${1} ver_b=${2} parts_a parts_b;
    local cur_tok_a cur_tok_b num_part_a num_part_b;
    local -i cur_idx_a=0 cur_idx_b=0 prev_idx_a prev_idx_b;
    parts_a=($(get_all_version_components "${ver_a}" ));
    parts_b=($(get_all_version_components "${ver_b}" ));
    local -i inf_loop=0;
    while true; do
        inf_loop+=1;
        ((inf_loop > 20)) && die "versionator compare bug [numbers, ${ver_a}, ${ver_b}]";
        prev_idx_a=cur_idx_a;
        prev_idx_b=cur_idx_b;
        cur_tok_a=${parts_a[cur_idx_a]};
        cur_tok_b=${parts_b[cur_idx_b]};
        if [[ -n ${cur_tok_a} ]] && [[ -z ${cur_tok_a//[[:digit:]]} ]]; then
            cur_idx_a+=1;
            [[ ${parts_a[cur_idx_a]} == . ]] && cur_idx_a+=1;
        else
            cur_tok_a=;
        fi;
        if [[ -n ${cur_tok_b} ]] && [[ -z ${cur_tok_b//[[:digit:]]} ]]; then
            cur_idx_b+=1;
            [[ ${parts_b[cur_idx_b]} == . ]] && cur_idx_b+=1;
        else
            cur_tok_b=;
        fi;
        [[ -z ${cur_tok_a} && -z ${cur_tok_b} ]] && break;
        [[ -z ${cur_tok_a} ]] && eshopts_pop && return 1;
        [[ -z ${cur_tok_b} ]] && eshopts_pop && return 3;
        if (( prev_idx_a != 0 && prev_idx_b != 0 )) && [[ ${cur_tok_a} == 0* || ${cur_tok_b} == 0* ]]; then
            cur_tok_a=${cur_tok_a%%+(0)};
            cur_tok_b=${cur_tok_b%%+(0)};
            [[ ${cur_tok_a} < ${cur_tok_b} ]] && eshopts_pop && return 1;
            [[ ${cur_tok_a} > ${cur_tok_b} ]] && eshopts_pop && return 3;
        else
            cur_tok_a=${cur_tok_a##+(0)};
            cur_tok_b=${cur_tok_b##+(0)};
            : ${cur_tok_a:=0};
            : ${cur_tok_b:=0};
            ((cur_tok_a < cur_tok_b)) && eshopts_pop && return 1;
            ((cur_tok_a > cur_tok_b)) && eshopts_pop && return 3;
        fi;
    done;
    local letter_a=;
    letter_a=${parts_a[cur_idx_a]};
    if [[ ${#letter_a} -eq 1 && -z ${letter_a/[a-z]} ]]; then
        cur_idx_a+=1;
    else
        letter_a=@;
    fi;
    local letter_b=;
    letter_b=${parts_b[cur_idx_b]};
    if [[ ${#letter_b} -eq 1 && -z ${letter_b/[a-z]} ]]; then
        cur_idx_b+=1;
    else
        letter_b=@;
    fi;
    [[ ${letter_a} < ${letter_b} ]] && eshopts_pop && return 1;
    [[ ${letter_a} > ${letter_b} ]] && eshopts_pop && return 3;
    inf_loop=0;
    while true; do
        inf_loop+=1;
        ((inf_loop > 20)) && die "versionator compare bug [numbers, ${ver_a}, ${ver_b}]";
        [[ ${parts_a[cur_idx_a]} == _ ]] && ((cur_idx_a++));
        [[ ${parts_b[cur_idx_b]} == _ ]] && ((cur_idx_b++));
        cur_tok_a=${parts_a[cur_idx_a]};
        cur_tok_b=${parts_b[cur_idx_b]};
        num_part_a=0;
        num_part_b=0;
        if has ${cur_tok_a%%+([0-9])} "alpha" "beta" "pre" "rc" "p"; then
            cur_idx_a+=1;
            num_part_a=${cur_tok_a##+([a-z])};
            num_part_a=${num_part_a##+(0)};
            : ${num_part_a:=0};
            cur_tok_a=${cur_tok_a%%+([0-9])};
        else
            cur_tok_a=;
        fi;
        if has ${cur_tok_b%%+([0-9])} alpha beta pre rc p; then
            cur_idx_b+=1;
            num_part_b=${cur_tok_b##+([a-z])};
            num_part_b=${num_part_b##+(0)};
            : ${num_part_b:=0};
            cur_tok_b=${cur_tok_b%%+([0-9])};
        else
            cur_tok_b=;
        fi;
        if [[ ${cur_tok_a} != ${cur_tok_b} ]]; then
            local suffix;
            for suffix in alpha beta pre rc "" p;
            do
                [[ ${cur_tok_a} == ${suffix} ]] && eshopts_pop && return 1;
                [[ ${cur_tok_b} == ${suffix} ]] && eshopts_pop && return 3;
            done;
        else
            if [[ -z ${cur_tok_a} && -z ${cur_tok_b} ]]; then
                break;
            else
                ((num_part_a < num_part_b)) && eshopts_pop && return 1;
                ((num_part_a > num_part_b)) && eshopts_pop && return 3;
            fi;
        fi;
    done;
    [[ ${parts_a[cur_idx_a]} == - ]] && ((cur_idx_a++));
    [[ ${parts_b[cur_idx_b]} == - ]] && ((cur_idx_b++));
    if [[ -n ${parts_a[cur_idx_a]/r+([0-9])} || -n ${parts_b[cur_idx_b]/r+([0-9])} ]]; then
        die "versionator compare bug [revisions, ${ver_a}, ${ver_b}]";
    fi;
    num_part_a=${parts_a[cur_idx_a]#r};
    num_part_a=${num_part_a##+(0)};
    : ${num_part_a:=0};
    num_part_b=${parts_b[cur_idx_b]#r};
    num_part_b=${num_part_b##+(0)};
    : ${num_part_b:=0};
    ((num_part_a < num_part_b)) && eshopts_pop && return 1;
    ((num_part_a > num_part_b)) && eshopts_pop && return 3;
    eshopts_pop;
    return 2
}
version_format_string () 
{ 
    local fstr=$1;
    shift;
    set -- $(get_version_components "$@");
    eval echo "${fstr}"
}
version_is_at_least () 
{ 
    local want_s="$1" have_s="${2:-${PVR}}" r;
    version_compare "${want_s}" "${have_s}";
    r=$?;
    case $r in 
        1 | 2)
            return 0
        ;;
        3)
            return 1
        ;;
        *)
            die "versionator compare bug [atleast, ${want_s}, ${have_s}, ${r}]"
        ;;
    esac
}
version_sort () 
{ 
    eshopts_push -s extglob;
    local items=;
    local -i left=0;
    items=("$@");
    while ((left < ${#items[@]})); do
        local -i lowest_idx=left;
        local -i idx=lowest_idx+1;
        while ((idx < ${#items[@]})); do
            version_compare "${items[lowest_idx]}" "${items[idx]}";
            [[ $? -eq 3 ]] && lowest_idx=idx;
            idx+=1;
        done;
        local tmp=${items[lowest_idx]};
        items[lowest_idx]=${items[left]};
        items[left]=${tmp};
        left+=1;
    done;
    echo ${items[@]};
    eshopts_pop
}
virtualmake () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    [[ ${EAPI} == [45] ]] || die "${FUNCNAME} is unsupported in EAPI > 5, please use virtx";
    if [[ -n ${maketype} ]]; then
        [[ ${EAPI} == [45] ]] || die "maketype is banned in EAPI > 5";
        eqawarn "ebuild is exporting \$maketype=${maketype}";
        eqawarn "Ebuild should be migrated to use 'virtx command' instead.";
        VIRTUALX_COMMAND=${maketype};
    fi;
    virtx "${VIRTUALX_COMMAND}" "${@}"
}
virtx () 
{ 
    debug-print-function ${FUNCNAME} "$@";
    [[ $# -lt 1 ]] && die "${FUNCNAME} needs at least one argument";
    local i=0;
    local retval=0;
    local OLD_SANDBOX_ON="${SANDBOX_ON}";
    local XVFB XHOST XDISPLAY;
    local xvfbargs="-screen 0 1280x1024x24 +extension RANDR";
    XVFB=$(type -p Xvfb) || die;
    XHOST=$(type -p xhost) || die;
    debug-print "${FUNCNAME}: running Xvfb hack";
    export XAUTHORITY=;
    einfo "Scanning for an open DISPLAY to start Xvfb ...";
    XDISPLAY=$(i=0; while [[ -f /tmp/.X${i}-lock ]] ; do ((i++));done; echo ${i});
    debug-print "${FUNCNAME}: XDISPLAY=${XDISPLAY}";
    export SANDBOX_ON="0";
    debug-print "${FUNCNAME}: ${XVFB} :${XDISPLAY} ${xvfbargs}";
    ${XVFB} :${XDISPLAY} ${xvfbargs} &> /dev/null & sleep 2;
    local start=${XDISPLAY};
    while [[ ! -f /tmp/.X${XDISPLAY}-lock ]]; do
        if ((XDISPLAY - start > 15)); then
            eerror "'${XVFB} :${XDISPLAY} ${xvfbargs}' returns:";
            echo;
            ${XVFB} :${XDISPLAY} ${xvfbargs};
            echo;
            eerror "If possible, correct the above error and try your emerge again.";
            die "Unable to start Xvfb";
        fi;
        ((XDISPLAY++));
        debug-print "${FUNCNAME}: ${XVFB} :${XDISPLAY} ${xvfbargs}";
        ${XVFB} :${XDISPLAY} ${xvfbargs} &> /dev/null & sleep 2;
    done;
    export SANDBOX_ON="${OLD_SANDBOX_ON}";
    einfo "Starting Xvfb on \$DISPLAY=${XDISPLAY} ...";
    export DISPLAY=:${XDISPLAY};
    debug-print "${FUNCNAME}: $@";
    nonfatal "$@";
    retval=$?;
    kill $(cat /tmp/.X${XDISPLAY}-lock);
    [[ ${retval} -ne 0 ]] && die "Failed to run '$@'";
    return 0
}
xdg_desktop_database_update () 
{ 
    if [[ ${EBUILD_PHASE} != post* ]]; then
        die "xdg_desktop_database_update must be used in pkg_post* phases.";
    fi;
    if ! type update-desktop-database &> /dev/null; then
        debug-print "update-desktop-database is not found";
        return;
    fi;
    ebegin "Updating .desktop files database";
    update-desktop-database -q "${EROOT%/}${DESKTOP_DATABASE_DIR}";
    eend $?
}
xdg_environment_reset () 
{ 
    export XDG_DATA_HOME="${HOME}/.local/share";
    export XDG_CONFIG_HOME="${HOME}/.config";
    export XDG_CACHE_HOME="${HOME}/.cache";
    export XDG_RUNTIME_DIR="${T}/run";
    mkdir -p "${XDG_DATA_HOME}" "${XDG_CONFIG_HOME}" "${XDG_CACHE_HOME}" "${XDG_RUNTIME_DIR}" || die;
    chmod 0700 "${XDG_RUNTIME_DIR}" || die;
    unset DBUS_SESSION_BUS_ADDRESS
}
xdg_icon_cache_update () 
{ 
    if [[ ${EBUILD_PHASE} != post* ]]; then
        die "xdg_icon_cache_update must be used in pkg_post* phases.";
    fi;
    if ! type gtk-update-icon-cache &> /dev/null; then
        debug-print "gtk-update-icon-cache is not found";
        return;
    fi;
    ebegin "Updating icons cache";
    local retval=0;
    local fails=();
    for dir in "${EROOT%/}"/usr/share/icons/*;
    do
        if [[ -f "${dir}/index.theme" ]]; then
            local rv=0;
            gtk-update-icon-cache -qf "${dir}";
            rv=$?;
            if [[ ! $rv -eq 0 ]]; then
                debug-print "Updating cache failed on ${dir}";
                fails+=("${dir}");
                retval=2;
            fi;
        else
            if [[ $(ls "${dir}") = "icon-theme.cache" ]]; then
                rm "${dir}/icon-theme.cache";
            fi;
        fi;
        if [[ -z $(ls "${dir}") ]]; then
            rmdir "${dir}";
        fi;
    done;
    eend ${retval};
    for f in "${fails[@]}";
    do
        eerror "Failed to update cache with icon $f";
    done
}
xdg_mimeinfo_database_update () 
{ 
    if [[ ${EBUILD_PHASE} != post* ]]; then
        die "xdg_mimeinfo_database_update must be used in pkg_post* phases.";
    fi;
    if ! type update-mime-database &> /dev/null; then
        debug-print "update-mime-database is not found";
        return;
    fi;
    ebegin "Updating shared mime info database";
    update-mime-database "${EROOT%/}${MIMEINFO_DATABASE_DIR}";
    eend $?
}
xdg_pkg_postinst () 
{ 
    if [[ ${#XDG_ECLASS_DESKTOPFILES[@]} -gt 0 ]]; then
        xdg_desktop_database_update;
    else
        debug-print "No .desktop files to add to database";
    fi;
    if [[ ${#XDG_ECLASS_ICONFILES[@]} -gt 0 ]]; then
        xdg_icon_cache_update;
    else
        debug-print "No icon files to add to cache";
    fi;
    if [[ ${#XDG_ECLASS_MIMEINFOFILES[@]} -gt 0 ]]; then
        xdg_mimeinfo_database_update;
    else
        debug-print "No mime info files to add to database";
    fi
}
xdg_pkg_postrm () 
{ 
    if [[ ${#XDG_ECLASS_DESKTOPFILES[@]} -gt 0 ]]; then
        xdg_desktop_database_update;
    else
        debug-print "No .desktop files to add to database";
    fi;
    if [[ ${#XDG_ECLASS_ICONFILES[@]} -gt 0 ]]; then
        xdg_icon_cache_update;
    else
        debug-print "No icon files to add to cache";
    fi;
    if [[ ${#XDG_ECLASS_MIMEINFOFILES[@]} -gt 0 ]]; then
        xdg_mimeinfo_database_update;
    else
        debug-print "No mime info files to add to database";
    fi
}
xdg_pkg_preinst () 
{ 
    local f;
    XDG_ECLASS_DESKTOPFILES=();
    while IFS= read -r -d '' f; do
        XDG_ECLASS_DESKTOPFILES+=(${f});
    done < <(cd "${ED}" && find 'usr/share/applications' -type f -print0 2>/dev/null);
    XDG_ECLASS_ICONFILES=();
    while IFS= read -r -d '' f; do
        XDG_ECLASS_ICONFILES+=(${f});
    done < <(cd "${ED}" && find 'usr/share/icons' -type f -print0 2>/dev/null);
    XDG_ECLASS_MIMEINFOFILES=();
    while IFS= read -r -d '' f; do
        XDG_ECLASS_MIMEINFOFILES+=(${f});
    done < <(cd "${ED}" && find 'usr/share/mime' -type f -print0 2>/dev/null)
}
xdg_src_prepare () 
{ 
    xdg_environment_reset;
    [[ ${EAPI:-0} != [45] ]] && default
}

 

 

+ Thanks a lot for your time.

 

 

 

Link to comment
Share on other sites

  • 0
On 11/22/2019 at 12:23 PM, freefog said:

Should I post a bug report or am I the only one affected?.

You are not the only one.

Fresh 1.4-release install prods this error, as well as a subsequent retrograde-nuke-re-install...

...I don't use (or intend to use) Gnome, so I'm not that concerned, but...

...multiple searches o/in the interwebs showed multiple bugs with multiple ('resolved') scenarios.

I do not currently have the where-with-all to appropriately file reports on this bug.

Just wanted to let you know that you are not alone.

Regards, splifingate

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...