Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Installing sysbench fails due to luajit build error #207

Open
tiborh opened this issue Oct 18, 2020 · 6 comments
Open

Installing sysbench fails due to luajit build error #207

tiborh opened this issue Oct 18, 2020 · 6 comments
Labels

Comments

@tiborh
Copy link

tiborh commented Oct 18, 2020

Interestingly, Ubuntu Mate for raspberry pi does not need luajit to install sysbench. (That system has one minor version older systbench: 1.0.18+ds-1 but luajit is not installed.)
had a look into Manjaro for Raspberry PI too:
sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)

sudo emerge sysbench
Password: 

Local copy of remote index is up-to-date and will be used.

Local copy of remote index is up-to-date and will be used.
Calculating dependencies... done!
>>> Verifying ebuild manifests
>>> Emerging (1 of 2) dev-lang/luajit-2.0.5-r2::gentoo
>>> Failed to emerge dev-lang/luajit-2.0.5-r2, Log file:
>>>  '/var/tmp/portage/dev-lang/luajit-2.0.5-r2/temp/build.log'
>>> Jobs: 0 of 2 complete, 1 failed                 Load avg: 1.91, 2.77, 2.16
 * Package:    dev-lang/luajit-2.0.5-r2
 * Repository: gentoo
 * Maintainer: [email protected]
 * USE:        arm64 elibc_glibc kernel_linux userland_GNU
 * FEATURES:   network-sandbox preserve-libs sandbox userpriv usersandbox
>>> Unpacking source...
>>> Unpacking LuaJIT-2.0.5.tar.gz to /var/tmp/portage/dev-lang/luajit-2.0.5-r2/work
>>> Source unpacked in /var/tmp/portage/dev-lang/luajit-2.0.5-r2/work
>>> Preparing source in /var/tmp/portage/dev-lang/luajit-2.0.5-r2/work/LuaJIT-2.0.5 ...
 * Applying luajit-2-ldconfig.patch ...
 [ ok ]
 * Applying CVE-2020-15890.patch ...
 [ ok ]
>>> Source prepared.
>>> Configuring source in /var/tmp/portage/dev-lang/luajit-2.0.5-r2/work/LuaJIT-2.0.5 ...
>>> Source configured.
>>> Compiling source in /var/tmp/portage/dev-lang/luajit-2.0.5-r2/work/LuaJIT-2.0.5 ...
make -j5 -l4 Q= PREFIX=/usr MULTILIB=lib64 DESTDIR=/var/tmp/portage/dev-lang/luajit-2.0.5-r2/image/ HOST_CC=aarch64-unknown-linux-gnu-gcc STATIC_CC=aarch64-unknown-linux-gnu-gcc 'DYNAMIC_CC=aarch64-unknown-linux-gnu-gcc -fPIC' TARGET_LD=aarch64-unknown-linux-gnu-gcc 'TARGET_AR=aarch64-unknown-linux-gnu-ar rcus' BUILDMODE=dynamic TARGET_STRIP=true INSTALL_LIB=/var/tmp/portage/dev-lang/luajit-2.0.5-r2/image/usr/lib64 XCFLAGS= 
==== Building LuaJIT 2.0.5 ====
make -C src
make[1]: Entering directory '/var/tmp/portage/dev-lang/luajit-2.0.5-r2/work/LuaJIT-2.0.5/src'
lj_arch.h:55:2: error: #error "No support for this architecture (yet)"
   55 | #error "No support for this architecture (yet)"
      |  ^~~~~
lj_arch.h:294:2: error: #error "No target architecture defined"
  294 | #error "No target architecture defined"
      |  ^~~~~
lj_arch.h:55:2: error: #error "No support for this architecture (yet)"
   55 | #error "No support for this architecture (yet)"
      |  ^~~~~
lj_arch.h:294:2: error: #error "No target architecture defined"
  294 | #error "No target architecture defined"
      |  ^~~~~
lj_arch.h:55:2: error: #error "No support for this architecture (yet)"
   55 | #error "No support for this architecture (yet)"
      |  ^~~~~
lj_arch.h:294:2: error: #error "No target architecture defined"
  294 | #error "No target architecture defined"
      |  ^~~~~
lj_arch.h:55:2: error: #error "No support for this architecture (yet)"
   55 | #error "No support for this architecture (yet)"
      |  ^~~~~
lj_arch.h:294:2: error: #error "No target architecture defined"
  294 | #error "No target architecture defined"
      |  ^~~~~
lj_arch.h:55:2: error: #error "No support for this architecture (yet)"
   55 | #error "No support for this architecture (yet)"
      |  ^~~~~
lj_arch.h:294:2: error: #error "No target architecture defined"
  294 | #error "No target architecture defined"
      |  ^~~~~
lj_arch.h:55:2: error: #error "No support for this architecture (yet)"
   55 | #error "No support for this architecture (yet)"
      |  ^~~~~
lj_arch.h:294:2: error: #error "No target architecture defined"
  294 | #error "No target architecture defined"
      |  ^~~~~
Makefile:254: *** Unsupported target architecture.  Stop.
make[1]: Leaving directory '/var/tmp/portage/dev-lang/luajit-2.0.5-r2/work/LuaJIT-2.0.5/src'
make: *** [Makefile:110: default] Error 2
 * ERROR: dev-lang/luajit-2.0.5-r2::gentoo failed (compile phase):
 *   emake failed
 * 
 * If you need support, post the output of `emerge --info '=dev-lang/luajit-2.0.5-r2::gentoo'`,
 * the complete build log and the output of `emerge -pqv '=dev-lang/luajit-2.0.5-r2::gentoo'`.
 * The complete build log is located at '/var/tmp/portage/dev-lang/luajit-2.0.5-r2/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/dev-lang/luajit-2.0.5-r2/temp/environment'.
 * Working directory: '/var/tmp/portage/dev-lang/luajit-2.0.5-r2/work/LuaJIT-2.0.5'
 * S: '/var/tmp/portage/dev-lang/luajit-2.0.5-r2/work/LuaJIT-2.0.5'

 * Messages for package dev-lang/luajit-2.0.5-r2:

 * ERROR: dev-lang/luajit-2.0.5-r2::gentoo failed (compile phase):
 *   emake failed
 * 
 * If you need support, post the output of `emerge --info '=dev-lang/luajit-2.0.5-r2::gentoo'`,
 * the complete build log and the output of `emerge -pqv '=dev-lang/luajit-2.0.5-r2::gentoo'`.
 * The complete build log is located at '/var/tmp/portage/dev-lang/luajit-2.0.5-r2/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/dev-lang/luajit-2.0.5-r2/temp/environment'.
 * Working directory: '/var/tmp/portage/dev-lang/luajit-2.0.5-r2/work/LuaJIT-2.0.5'
 * S: '/var/tmp/portage/dev-lang/luajit-2.0.5-r2/work/LuaJIT-2.0.5'

@tiborh
Copy link
Author

tiborh commented Oct 18, 2020

emerge --info '=dev-lang/luajit-2.0.5-r2::gentoo'
Portage 3.0.8 (python 3.6.12-final-0, default/linux/arm64/17.0/desktop, gcc-10.2.0, glibc-2.32-r2, 5.4.45-v8-3b41649ff96d-p4-bis+ aarch64)
=================================================================
                         System Settings
=================================================================
System uname: Linux-5.4.45-v8-3b41649ff96d-p4-bis+-aarch64-with-gentoo-2.7
KiB Mem:     7949164 total,   2734032 free
KiB Swap:          0 total,         0 free
Timestamp of repository gentoo: Tue, 06 Oct 2020 09:30:01 +0000
Head commit of repository gentoo: 3be8e67027b4ef698281a9971313896de0d91adf
Head commit of repository sakaki-tools: c97a6c18c4278fe1f487262e09640b6f9f580ab1

Head commit of repository genpi64: 2b1562ecb39733a19e588b54d8fd7221f2e88653

sh bash 5.0_p18
ld GNU ld (Gentoo 2.35.1 p1) 2.35.1
distcc 3.3.3 aarch64-unknown-linux-gnu [disabled]
app-shells/bash:          5.0_p18::gentoo
dev-java/java-config:     2.3.1::gentoo
dev-lang/perl:            5.30.3-r1::gentoo
dev-lang/python:          2.7.18-r4::gentoo, 3.6.12::gentoo, 3.7.9::genpi64, 3.8.6::gentoo, 3.9.0::gentoo
dev-util/cmake:           3.18.3::gentoo
dev-util/pkgconfig:       0.29.2::gentoo
sys-apps/baselayout:      2.7::gentoo
sys-apps/openrc:          0.42.1-r3::genpi64
sys-apps/sandbox:         2.20::gentoo
sys-devel/autoconf:       2.13-r1::gentoo, 2.69-r5::gentoo
sys-devel/automake:       1.16.2::gentoo
sys-devel/binutils:       2.35.1::gentoo
sys-devel/gcc:            10.2.0-r2::gentoo
sys-devel/gcc-config:     2.3.2::gentoo
sys-devel/libtool:        2.4.6-r6::gentoo
sys-devel/make:           4.3::gentoo
sys-kernel/linux-headers: 5.4-r1::gentoo (virtual/os-headers)
sys-libs/glibc:           2.32-r2::gentoo
Repositories:

gentoo
    location: /var/db/repos/gentoo
    sync-type: rsync
    sync-uri: rsync://isshoni.org/gentoo-portage-pi64-gem
    priority: -1000
    sync-rsync-verify-metamanifest: yes
    sync-rsync-verify-max-age: 24
    sync-rsync-verify-jobs: 1
    sync-rsync-extra-opts: 

sakaki-tools
    location: /var/db/repos/sakaki-tools
    sync-type: git
    sync-uri: https://github.com/sakaki-/sakaki-tools.git
    masters: gentoo
    priority: 50

genpi64
    location: /var/db/repos/genpi64
    sync-type: git
    sync-uri: https://github.com/sakaki-/genpi64-overlay.git
    masters: gentoo
    priority: 100

ACCEPT_KEYWORDS="* arm64 ~* ~arm64"
ACCEPT_LICENSE="@BINARY-REDISTRIBUTABLE"
CBUILD="aarch64-unknown-linux-gnu"
CFLAGS="-march=armv8-a+crc -mtune=cortex-a72 -ftree-vectorize -O2 -pipe"
CHOST="aarch64-unknown-linux-gnu"
CONFIG_PROTECT="/boot/cmdline.txt /boot/config.txt /boot/startup.sh /etc /usr/lib64/libreoffice/program/sofficerc /usr/share/gnupg/qualified.txt /usr/share/maven-bin-3.6/conf"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-march=armv8-a+crc -mtune=cortex-a72 -ftree-vectorize -O2 -pipe"
DISTDIR="/var/cache/distfiles"
EMERGE_DEFAULT_OPTS="--jobs=5 --load-average=4"
ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR"
FCFLAGS="-O2"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs buildpkg config-protect-if-modified distlocks ebuild-locks fixlafiles getbinpkg ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2"
GENTOO_MIRRORS="http://gentoo.osuosl.org/ http://trumpetti.atm.tut.fi/gentoo/ http://distfiles.gentoo.org"
LANG="en_GB.utf8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j5 -l4"
PKGDIR="/var/cache/binpkgs"
PORTAGE_BINHOST="https://isshoni.org/pi64pie"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"
PORTAGE_TMPDIR="/var/tmp"
USE="X a52 aac acl acpi alsa arm64 berkdb bluetooth branding bzip2 cairo cdda cdr cli crypt cups dbus dri dts dvdr egl elogind emboss encode exif ffmpeg flac fortran gdbm ghcbootstrap gif gles1 gles2 gpm gtk gui iconv icu ipv6 jpeg lcms libglvnd libnotify libtirpc lock mad mng mp3 mp4 mpeg ncurses nls nptl ogg opengl openmp pam pango pcre pdf png policykit ppds pulseaudio qt4 qt5 readline sdl seccomp spell split-usr ssl startup-notification svg tcpd thunar tiff truetype udev udisks unicode upower usb vorbis wxwidgets x264 xattr xcb xml xv xvid zlib" ADA_TARGET="gnat_2018" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_ARM="edsp thumb thumb2 v4 v5 v6 v7 v8 vfp vfp-d32 vfpv3 vfpv4" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="evdev synaptics" KERNEL="linux" L10N="en en-GB" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LLVM_TARGETS="WebAssembly BPF" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php7-2" POSTGRES_TARGETS="postgres10 postgres11" PYTHON_SINGLE_TARGET="python3_7" PYTHON_TARGETS="python3_5 python3_6 python3_7 python2_7" QEMU_SOFTMMU_TARGETS="aarch64 arm i386 x86_64" QEMU_USER_TARGETS="aarch64" RUBY_TARGETS="ruby25 ruby27 ruby26" USERLAND="GNU" VIDEO_CARDS="fbdev vc4 v3d" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  CC, CPPFLAGS, CTARGET, CXX, INSTALL_MASK, LC_ALL, LINGUAS, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS

@tiborh
Copy link
Author

tiborh commented Oct 18, 2020

$ sudo emerge -pqv '=dev-lang/luajit-2.0.5-r2::gentoo'
Password: 

Local copy of remote index is up-to-date and will be used.
[ebuild  N    ] dev-lang/luajit-2.0.5-r2  USE="-lua52compat -static-libs" 

@tiborh
Copy link
Author

tiborh commented Oct 18, 2020

$ sudo cat /var/tmp/portage/dev-lang/luajit-2.0.5-r2/temp/build.log
Password: 
 * Package:    dev-lang/luajit-2.0.5-r2
 * Repository: gentoo
 * Maintainer: [email protected]
 * USE:        arm64 elibc_glibc kernel_linux userland_GNU
 * FEATURES:   network-sandbox preserve-libs sandbox userpriv usersandbox
>>> Unpacking source...
>>> Unpacking LuaJIT-2.0.5.tar.gz to /var/tmp/portage/dev-lang/luajit-2.0.5-r2/work
>>> Source unpacked in /var/tmp/portage/dev-lang/luajit-2.0.5-r2/work
>>> Preparing source in /var/tmp/portage/dev-lang/luajit-2.0.5-r2/work/LuaJIT-2.0.5 ...
 * Applying luajit-2-ldconfig.patch ...
 [ ok ]
 * Applying CVE-2020-15890.patch ...
 [ ok ]
>>> Source prepared.
>>> Configuring source in /var/tmp/portage/dev-lang/luajit-2.0.5-r2/work/LuaJIT-2.0.5 ...
>>> Source configured.
>>> Compiling source in /var/tmp/portage/dev-lang/luajit-2.0.5-r2/work/LuaJIT-2.0.5 ...
make -j5 -l4 Q= PREFIX=/usr MULTILIB=lib64 DESTDIR=/var/tmp/portage/dev-lang/luajit-2.0.5-r2/image/ HOST_CC=aarch64-unknown-linux-gnu-gcc STATIC_CC=aarch64-unknown-linux-gnu-gcc 'DYNAMIC_CC=aarch64-unknown-linux-gnu-gcc -fPIC' TARGET_LD=aarch64-unknown-linux-gnu-gcc 'TARGET_AR=aarch64-unknown-linux-gnu-ar rcus' BUILDMODE=dynamic TARGET_STRIP=true INSTALL_LIB=/var/tmp/portage/dev-lang/luajit-2.0.5-r2/image/usr/lib64 XCFLAGS= 
==== Building LuaJIT 2.0.5 ====
make -C src
make[1]: Entering directory '/var/tmp/portage/dev-lang/luajit-2.0.5-r2/work/LuaJIT-2.0.5/src'
lj_arch.h:55:2: error: #error "No support for this architecture (yet)"
   55 | #error "No support for this architecture (yet)"
      |  ^~~~~
lj_arch.h:294:2: error: #error "No target architecture defined"
  294 | #error "No target architecture defined"
      |  ^~~~~
lj_arch.h:55:2: error: #error "No support for this architecture (yet)"
   55 | #error "No support for this architecture (yet)"
      |  ^~~~~
lj_arch.h:294:2: error: #error "No target architecture defined"
  294 | #error "No target architecture defined"
      |  ^~~~~
lj_arch.h:55:2: error: #error "No support for this architecture (yet)"
   55 | #error "No support for this architecture (yet)"
      |  ^~~~~
lj_arch.h:294:2: error: #error "No target architecture defined"
  294 | #error "No target architecture defined"
      |  ^~~~~
lj_arch.h:55:2: error: #error "No support for this architecture (yet)"
   55 | #error "No support for this architecture (yet)"
      |  ^~~~~
lj_arch.h:294:2: error: #error "No target architecture defined"
  294 | #error "No target architecture defined"
      |  ^~~~~
lj_arch.h:55:2: error: #error "No support for this architecture (yet)"
   55 | #error "No support for this architecture (yet)"
      |  ^~~~~
lj_arch.h:294:2: error: #error "No target architecture defined"
  294 | #error "No target architecture defined"
      |  ^~~~~
lj_arch.h:55:2: error: #error "No support for this architecture (yet)"
   55 | #error "No support for this architecture (yet)"
      |  ^~~~~
lj_arch.h:294:2: error: #error "No target architecture defined"
  294 | #error "No target architecture defined"
      |  ^~~~~
Makefile:254: *** Unsupported target architecture.  Stop.
make[1]: Leaving directory '/var/tmp/portage/dev-lang/luajit-2.0.5-r2/work/LuaJIT-2.0.5/src'
make: *** [Makefile:110: default] Error 2
 * ERROR: dev-lang/luajit-2.0.5-r2::gentoo failed (compile phase):
 *   emake failed
 * 
 * If you need support, post the output of `emerge --info '=dev-lang/luajit-2.0.5-r2::gentoo'`,
 * the complete build log and the output of `emerge -pqv '=dev-lang/luajit-2.0.5-r2::gentoo'`.
 * The complete build log is located at '/var/tmp/portage/dev-lang/luajit-2.0.5-r2/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/dev-lang/luajit-2.0.5-r2/temp/environment'.
 * Working directory: '/var/tmp/portage/dev-lang/luajit-2.0.5-r2/work/LuaJIT-2.0.5'
 * S: '/var/tmp/portage/dev-lang/luajit-2.0.5-r2/work/LuaJIT-2.0.5'

@tiborh
Copy link
Author

tiborh commented Oct 18, 2020

Content of /var/tmp/portage/dev-lang/luajit-2.0.5-r2/temp/environment

declare -x ABI="arm64"
declare -x ABI_MIPS=""
declare -x ABI_PPC=""
declare -x ABI_RISCV=""
declare -x ABI_S390=""
declare -x ABI_X86=""
declare -x ADA_TARGET=""
declare -x ALSA_CARDS=""
declare -x ANT_HOME="/usr/share/ant"
declare -x APACHE2_MODULES=""
declare -x APACHE2_MPMS=""
declare -x ARCH="arm64"
declare BDEPEND=""
declare -x BOOTSTRAP_USE="unicode internal-glib pkg-config split-usr python_targets_python3_7 python_targets_python2_7"
declare -x CALLIGRA_FEATURES=""
declare -x CAMERAS=""
declare -x CBUILD="aarch64-unknown-linux-gnu"
declare -x CFLAGS="-march=armv8-a+crc -mtune=cortex-a72 -ftree-vectorize -O2 -pipe"
declare -x CFLAGS_default
declare -x CHOST="aarch64-unknown-linux-gnu"
declare -x CHOST_arm64="aarch64-unknown-linux-gnu"
declare -x CHOST_default="aarch64-unknown-linux-gnu"
declare -x COLLECTD_PLUGINS=""
declare -x CPU_FLAGS_ARM=""
declare -x CPU_FLAGS_PPC=""
declare -x CPU_FLAGS_X86=""
declare -x CTARGET_default="aarch64-unknown-linux-gnu"
declare -x CURL_SSL=""
declare -x CXXFLAGS="-march=armv8-a+crc -mtune=cortex-a72 -ftree-vectorize -O2 -pipe"
declare -x DCC_EMAILLOG_WHOM_TO_BLAME=""
declare -x DEFAULT_ABI="arm64"
declare -x DEFINED_PHASES=" compile install prepare"
declare DEPEND=""
declare DESCRIPTION="Just-In-Time Compiler for the Lua programming language"
declare -x DESTTREE="/usr"
declare -x DIROPTIONS="-m0755"
declare -x EAPI="6"
declare -x ELIBC="glibc"
declare -x ENLIGHTENMENT_MODULES=""
declare -x ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR"
declare -- EPOCHREALTIME="1603038145.241246"
declare -- EPOCHSECONDS="1603038145"
declare -x EXEOPTIONS="-m0755"
declare -x FCFLAGS="-O2"
declare -x FETCHCOMMAND_SSH="bash -c \"x=\\\${2#ssh://} ; host=\\\${x%%/*} ; port=\\\${host##*:} ; host=\\\${host%:*} ; [[ \\\${host} = \\\${port} ]] && port= ; exec rsync --rsh=\\\"ssh \\\${port:+-p\\\${port}} \\\${3}\\\" -avP \\\"\\\${host}:/\\\${x#*/}\\\" \\\"\\\$1\\\"\" rsync \"\${DISTDIR}/\${FILE}\" \"\${URI}\" \"\${PORTAGE_SSH_OPTS}\""
declare -x FFLAGS="-O2"
declare -x FFTOOLS=""
declare -x FLTK_DOCDIR="/usr/share/doc/fltk-1.3.5-r4/html"
declare -x GCC_SPECS=""
declare -x GPSD_PROTOCOLS=""
declare -x GRUB_PLATFORMS=""
declare -x GSETTINGS_BACKEND="dconf"
declare HOMEPAGE="http://luajit.org/"
declare -x INHERITED=" pax-utils toolchain-funcs multilib estack versionator"
declare -x INPUT_DEVICES=""
declare -x INSDESTTREE=""
declare -x INSOPTIONS="-m0644"
declare IUSE="lua52compat static-libs "
declare -x IUSE_EFFECTIVE="alpha amd64 amd64-fbsd amd64-linux arm arm64 elibc_AIX elibc_Cygwin elibc_Darwin elibc_DragonFly elibc_FreeBSD elibc_HPUX elibc_Interix elibc_NetBSD elibc_OpenBSD elibc_SunOS elibc_Winnt elibc_bionic elibc_glibc elibc_mingw elibc_mintlib elibc_musl elibc_uclibc hppa ia64 kernel_AIX kernel_Darwin kernel_FreeBSD kernel_HPUX kernel_NetBSD kernel_OpenBSD kernel_SunOS kernel_Winnt kernel_freemint kernel_linux lua52compat m68k m68k-mint mips ppc ppc-aix ppc-macos ppc64 ppc64-linux prefix prefix-guest prefix-stack riscv s390 sparc sparc-solaris sparc64-solaris static-libs userland_BSD userland_GNU x64-cygwin x64-macos x64-solaris x64-winnt x86 x86-cygwin x86-fbsd x86-linux x86-macos x86-solaris x86-winnt"
declare -x IUSE_IMPLICIT="prefix prefix-guest prefix-stack"
declare -x KERNEL="linux"
declare -x KERNEL_ABI="arm64"
declare -x KEYWORDS="amd64 arm ppc x86 ~amd64-linux ~x86-linux"
declare -x L10N=""
declare -x LANG="en_GB.utf8"
declare -x LCD_DEVICES=""
declare -x LC_COLLATE="C"
declare -x LC_MESSAGES="C"
declare -x LDFLAGS="-Wl,-O1 -Wl,--as-needed"
declare -x LDFLAGS_default
declare -x LIBDIR_arm64="lib64"
declare -x LIBDIR_default="lib"
declare -x LIBOPTIONS="-m0644"
declare -x LIBREOFFICE_EXTENSIONS=""
declare -x LICENSE="MIT"
declare -x LIRC_DEVICES=""
declare -x LLVM_TARGETS=""
declare -x MAIL="/var/mail/root"
declare -x MAKEOPTS="-j5 -l4"
declare -x MANPAGER="manpager"
declare -x MONKEYD_PLUGINS=""
declare -x MULTILIB_ABIS="arm64"
declare -- MY_P="LuaJIT-2.0.5"
declare -- MY_PV="2.0.5"
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 -a PATCHES=([0]="/var/tmp/portage/dev-lang/luajit-2.0.5-r2/files/luajit-2-ldconfig.patch" [1]="/var/tmp/portage/dev-lang/luajit-2.0.5-r2/files/CVE-2020-15890.patch")
declare -x PATH="/usr/lib/portage/python3.6/ebuild-helpers/xattr:/usr/lib/portage/python3.6/ebuild-helpers:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/lib/llvm/10/bin"
declare -- PAX_MARKINGS="none"
declare PDEPEND=""
declare -x PHP_TARGETS=""
declare -x PORTAGE_BINHOST_HEADER_URI="https://github.com/spreequalle/gentoo-binhost/releases/download/aarch64-unknown-linux-gnu"
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/luajit-2.0.5-r2/html")
declare -a PORTAGE_DOSTRIP=([0]="/")
declare -a PORTAGE_DOSTRIP_SKIP=()
declare -x POSTGRES_TARGETS=""
declare -x PROFILE_ONLY_VARIABLES="ARCH ELIBC IUSE_IMPLICIT KERNEL USERLAND USE_EXPAND_IMPLICIT USE_EXPAND_UNPREFIXED USE_EXPAND_VALUES_ARCH USE_EXPAND_VALUES_ELIBC USE_EXPAND_VALUES_KERNEL USE_EXPAND_VALUES_USERLAND"
declare -x PROPERTIES=""
declare -x PYTHONDONTWRITEBYTECODE="1"
declare -x PYTHON_SINGLE_TARGET=""
declare -x PYTHON_TARGETS=""
declare -x QEMU_SOFTMMU_TARGETS=""
declare -x QEMU_USER_TARGETS=""
declare -x QT_GRAPHICSSYSTEM="raster"
declare RDEPEND=""
declare REPOSITORY
declare REQUIRED_USE=""
declare -x RESTRICT=""
declare -x RESUMECOMMAND_SSH="bash -c \"x=\\\${2#ssh://} ; host=\\\${x%%/*} ; port=\\\${host##*:} ; host=\\\${host%:*} ; [[ \\\${host} = \\\${port} ]] && port= ; exec rsync --rsh=\\\"ssh \\\${port:+-p\\\${port}} \\\${3}\\\" -avP \\\"\\\${host}:/\\\${x#*/}\\\" \\\"\\\$1\\\"\" rsync \"\${DISTDIR}/\${FILE}\" \"\${URI}\" \"\${PORTAGE_SSH_OPTS}\""
declare -x ROS_MESSAGES=""
declare -x RUBY_TARGETS=""
declare -x S="/var/tmp/portage/dev-lang/luajit-2.0.5-r2/work/LuaJIT-2.0.5"
declare -x SANDBOX_DEBUG="0"
declare -x SANDBOX_DENY=""
declare -x SANDBOX_PREDICT="/var/tmp/portage/dev-lang/luajit-2.0.5-r2/homedir:/dev/crypto:/var/cache/man:/proc/self/coredump_filter:/var/cache/fontconfig"
declare -x SANDBOX_READ="/:/var/tmp/portage"
declare -x SANDBOX_VERBOSE="1"
declare -x SANDBOX_WRITE=":/dev/console:/dev/fd:/dev/full:/dev/null:/dev/ptmx:/dev/pts/:/dev/pty:/dev/shm:/dev/tts:/dev/tty:/dev/vc/:/dev/zero:/proc/self/fd:/tmp/:/usr/lib/cf:/usr/lib/conftest:/usr/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/tmp/cf:/usr/tmp/conftest:/var/tmp/:/var/tmp/portage:/var/tmp/portage/dev-lang/luajit-2.0.5-r2/homedir/.bash_history"
declare -x SANE_BACKENDS=""
declare -x SHELL="/bin/bash"
declare -x SLOT="2"
declare SRC_URI="http://luajit.org/download/LuaJIT-2.0.5.tar.gz
	"
declare -x SUDO_COMMAND="/usr/bin/emerge sysbench"
declare -x SUDO_GID="1000"
declare -x SUDO_UID="1000"
declare -x SUDO_USER="demouser"
declare -x TWISTED_DISABLE_WRITING_OF_PLUGIN_CACHE="1"
declare -x UNCACHED_ERR_FD=""
declare -x USE="arm64 elibc_glibc kernel_linux userland_GNU"
declare -x USERLAND="GNU"
declare -x USE_EXPAND_IMPLICIT="ARCH ELIBC KERNEL USERLAND"
declare -x USE_EXPAND_UNPREFIXED="ARCH"
declare -x USE_EXPAND_VALUES_ARCH="alpha amd64 amd64-fbsd amd64-linux arm arm64 hppa ia64 m68k m68k-mint mips ppc ppc64 ppc64-linux ppc-aix ppc-macos riscv s390 sparc sparc64-solaris sparc-solaris x64-cygwin x64-macos x64-solaris x64-winnt x86 x86-cygwin x86-fbsd x86-linux x86-macos x86-solaris x86-winnt"
declare -x USE_EXPAND_VALUES_ELIBC="AIX bionic Cygwin Darwin DragonFly FreeBSD glibc HPUX Interix mingw mintlib musl NetBSD OpenBSD SunOS uclibc Winnt"
declare -x USE_EXPAND_VALUES_KERNEL="AIX Darwin FreeBSD freemint HPUX linux NetBSD OpenBSD SunOS Winnt"
declare -x USE_EXPAND_VALUES_USERLAND="BSD GNU"
declare -x UWSGI_PLUGINS=""
declare -x VIDEO_CARDS=""
declare -x VOICEMAIL_STORAGE=""
declare -x XDG_CONFIG_DIRS="/etc/xdg"
declare -x XDG_DATA_DIRS="/usr/local/share:/usr/share"
declare -x XFCE_PLUGINS=""
declare -x XSESSION="Xfce4"
declare -x XTABLES_ADDONS=""
declare -- _ESTACK_ECLASS="1"
declare -x _E_DOCDESTTREE_=""
declare -x _E_EXEDESTTREE_=""
declare -- _MULTILIB_ECLASS="1"
declare -- _PAX_UTILS_ECLASS="1"
declare -- _TOOLCHAIN_FUNCS_ECLASS="1"
declare -- _VERSIONATOR_ECLASS="1"
__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"
}
_eapply_patch () 
{ 
    local f=${1};
    local prefix=${2};
    ebegin "${prefix:-Applying }${f##*/}";
    local all_opts=(-p1 -f -g0 --no-backup-if-mismatch "${patch_options[@]}");
    if ${patch_cmd} "${all_opts[@]}" --dry-run -s -F0 < "${f}" &> /dev/null; then
        all_opts+=(-s -F0);
    fi;
    ${patch_cmd} "${all_opts[@]}" < "${f}";
    failed=${?};
    if ! eend "${failed}"; then
        __helpers_die "patch -p1 ${patch_options[*]} failed with ${f}";
    fi
}
_emake () 
{ 
    emake Q= PREFIX="${EPREFIX}/usr" MULTILIB="$(get_libdir)" DESTDIR="${D}" HOST_CC="$(tc-getBUILD_CC)" STATIC_CC="$(tc-getCC)" DYNAMIC_CC="$(tc-getCC) -fPIC" TARGET_LD="$(tc-getCC)" TARGET_AR="$(tc-getAR) rcus" BUILDMODE="$(usex static-libs mixed dynamic)" TARGET_STRIP="true" INSTALL_LIB="${ED%/}/usr/$(get_libdir)" "$@"
}
_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"
}
_pax_list_files () 
{ 
    local f cmd;
    cmd=$1;
    shift;
    for f in "$@";
    do
        ${cmd} "     ${f}";
    done
}
_tc-getPROG () 
{ 
    local tuple=$1;
    local v var vars=$2;
    local prog=($3);
    var=${vars%% *};
    for v in ${vars};
    do
        if [[ -n ${!v} ]]; then
            export ${var}="${!v}";
            echo "${!v}";
            return 0;
        fi;
    done;
    local search=;
    [[ -n $4 ]] && search=$(type -p $4-${prog[0]});
    [[ -z ${search} && -n ${!tuple} ]] && search=$(type -p ${!tuple}-${prog[0]});
    [[ -n ${search} ]] && prog[0]=${search##*/};
    export ${var}="${prog[*]}";
    echo "${!var}"
}
clang-fullversion () 
{ 
    _clang_fullversion '$1.$2.$3' "$@"
}
clang-major-version () 
{ 
    _clang_fullversion '$1' "$@"
}
clang-micro-version () 
{ 
    _clang_fullversion '$3' "$@"
}
clang-minor-version () 
{ 
    _clang_fullversion '$2' "$@"
}
clang-version () 
{ 
    _clang_fullversion '$1.$2' "$@"
}
delete_all_version_separators () 
{ 
    replace_all_version_separators "" "${1}"
}
delete_version_separator () 
{ 
    replace_version_separator "${1}" "" "${2}"
}
eapply () 
{ 
    local failed patch_cmd=patch;
    local -x LC_COLLATE=POSIX;
    type -P gpatch > /dev/null && patch_cmd=gpatch;
    function _eapply_patch () 
    { 
        local f=${1};
        local prefix=${2};
        ebegin "${prefix:-Applying }${f##*/}";
        local all_opts=(-p1 -f -g0 --no-backup-if-mismatch "${patch_options[@]}");
        if ${patch_cmd} "${all_opts[@]}" --dry-run -s -F0 < "${f}" &> /dev/null; then
            all_opts+=(-s -F0);
        fi;
        ${patch_cmd} "${all_opts[@]}" < "${f}";
        failed=${?};
        if ! eend "${failed}"; then
            __helpers_die "patch -p1 ${patch_options[*]} failed with ${f}";
        fi
    };
    local patch_options=() files=();
    local i found_doublehyphen;
    for ((i = 1; i <= ${#@}; ++i ))
    do
        if [[ ${@:i:1} == -- ]]; then
            patch_options=("${@:1:i-1}");
            files=("${@:i+1}");
            found_doublehyphen=1;
            break;
        fi;
    done;
    if [[ -z ${found_doublehyphen} ]]; then
        for ((i = 1; i <= ${#@}; ++i ))
        do
            if [[ ${@:i:1} != -* ]]; then
                patch_options=("${@:1:i-1}");
                files=("${@:i}");
                break;
            fi;
        done;
        for i in "${files[@]}";
        do
            if [[ ${i} == -* ]]; then
                die "eapply: all options must be passed before non-options";
            fi;
        done;
    fi;
    if [[ ${#files[@]} -eq 0 ]]; then
        die "eapply: no files specified";
    fi;
    local f;
    for f in "${files[@]}";
    do
        if [[ -d ${f} ]]; then
            function _eapply_get_files () 
            { 
                local LC_ALL=POSIX;
                local prev_shopt=$(shopt -p nullglob);
                shopt -s nullglob;
                local f;
                for f in "${1}"/*;
                do
                    if [[ ${f} == *.diff || ${f} == *.patch ]]; then
                        files+=("${f}");
                    fi;
                done;
                ${prev_shopt}
            };
            local files=();
            _eapply_get_files "${f}";
            [[ ${#files[@]} -eq 0 ]] && die "No *.{patch,diff} files in directory ${f}";
            einfo "Applying patches from ${f} ...";
            local f2;
            for f2 in "${files[@]}";
            do
                _eapply_patch "${f2}" '  ';
                [[ ${failed} -ne 0 ]] && return "${failed}";
            done;
        else
            _eapply_patch "${f}";
            [[ ${failed} -ne 0 ]] && return "${failed}";
        fi;
    done;
    return 0
}
eapply_user () 
{ 
    [[ ${EBUILD_PHASE} == prepare ]] || die "eapply_user() called during invalid phase: ${EBUILD_PHASE}";
    local tagfile=${T}/.portage_user_patches_applied;
    [[ -f ${tagfile} ]] && return;
     >> "${tagfile}";
    local basedir=${PORTAGE_CONFIGROOT%/}/etc/portage/patches;
    local applied d f;
    local -A _eapply_user_patches;
    local prev_shopt=$(shopt -p nullglob);
    shopt -s nullglob;
    for d in "${basedir}"/${CATEGORY}/{${P}-${PR},${P},${PN}}{:${SLOT%/*},};
    do
        for f in "${d}"/*;
        do
            if [[ ( ${f} == *.diff || ${f} == *.patch ) && -z ${_eapply_user_patches[${f##*/}]} ]]; then
                _eapply_user_patches[${f##*/}]=${f};
            fi;
        done;
    done;
    if [[ ${#_eapply_user_patches[@]} -gt 0 ]]; then
        while read -r -d '' f; do
            f=${_eapply_user_patches[${f}]};
            if [[ -s ${f} ]]; then
                eapply "${f}";
                applied=1;
            fi;
        done < <(printf -- '%s\0' "${!_eapply_user_patches[@]}" |
				LC_ALL=C sort -z);
    fi;
    ${prev_shopt};
    [[ -n ${applied} ]] && ewarn "User patches applied."
}
econf_build () 
{ 
    local CBUILD=${CBUILD:-${CHOST}};
    tc-env_build econf --build=${CBUILD} --host=${CBUILD} "$@"
}
einstalldocs () 
{ 
    ( if [[ $(declare -p DOCS 2>/dev/null) != *=* ]]; then
        local d;
        for d in README* ChangeLog AUTHORS NEWS TODO CHANGES THANKS BUGS FAQ CREDITS CHANGELOG;
        do
            [[ -f ${d} && -s ${d} ]] && docinto / && dodoc "${d}";
        done;
    else
        if ___is_indexed_array_var DOCS; then
            [[ ${#DOCS[@]} -gt 0 ]] && docinto / && dodoc -r "${DOCS[@]}";
        else
            [[ -n ${DOCS} ]] && docinto / && dodoc -r ${DOCS};
        fi;
    fi );
    ( if ___is_indexed_array_var HTML_DOCS; then
        [[ ${#HTML_DOCS[@]} -gt 0 ]] && docinto html && dodoc -r "${HTML_DOCS[@]}";
    else
        [[ -n ${HTML_DOCS} ]] && docinto html && dodoc -r ${HTML_DOCS};
    fi )
}
eshopts_pop () 
{ 
    local s;
    estack_pop eshopts s || die "${FUNCNAME}: unbalanced push";
    eval "${s}" || die "${FUNCNAME}: sanity: invalid shopt options: ${s}"
}
eshopts_push () 
{ 
    estack_push eshopts "$(shopt -p -o) $(shopt -p)";
    if [[ $1 == -[su] ]]; then
        [[ $# -le 1 ]] && return 0;
        shopt "$@" || die "${FUNCNAME}: bad options to shopt: $*";
    else
        [[ $# -eq 0 ]] && return 0;
        set "$@" || die "${FUNCNAME}: bad options to set: $*";
    fi
}
estack_pop () 
{ 
    [[ $# -eq 0 || $# -gt 2 ]] && die "estack_pop: incorrect # of arguments";
    local _estack_name="_ESTACK_$1_";
    shift;
    local _estack_retvar=$1;
    shift;
    eval local _estack_i=\${#${_estack_name}\[@\]};
    [[ $(( --_estack_i )) -eq -1 ]] && return 1;
    if [[ -n ${_estack_retvar} ]]; then
        eval ${_estack_retvar}=\"\${${_estack_name}\[${_estack_i}\]}\";
    fi;
    eval unset \"${_estack_name}\[${_estack_i}\]\"
}
estack_push () 
{ 
    [[ $# -eq 0 ]] && die "estack_push: incorrect # of arguments";
    local stack_name="_ESTACK_$1_";
    shift;
    eval ${stack_name}+=\( \"\$@\" \)
}
eumask_pop () 
{ 
    [[ $# -eq 0 ]] || die "${FUNCNAME}: we take no options";
    local s;
    estack_pop eumask s || die "${FUNCNAME}: unbalanced push";
    umask ${s} || die "${FUNCNAME}: sanity: could not restore umask: ${s}"
}
eumask_push () 
{ 
    estack_push eumask "$(umask)";
    umask "$@" || die "${FUNCNAME}: bad options to umask: $*"
}
evar_pop () 
{ 
    local cnt=${1:-bad};
    case $# in 
        0)
            cnt=1
        ;;
        1)
            [[ -z ${cnt//[0-9]} ]] || die "${FUNCNAME}: first arg must be a number: $*"
        ;;
        *)
            die "${FUNCNAME}: only accepts one arg: $*"
        ;;
    esac;
    local var val;
    while (( cnt-- )); do
        estack_pop evar val || die "${FUNCNAME}: unbalanced push";
        estack_pop evar var || die "${FUNCNAME}: unbalanced push";
        [[ ${val} == "unset_76fc3c462065bb4ca959f939e6793f94" ]] && unset ${var} || printf -v "${var}" '%s' "${val}";
    done
}
evar_push () 
{ 
    local var val;
    for var in "$@";
    do
        [[ ${!var+set} == "set" ]] && val=${!var} || val="unset_76fc3c462065bb4ca959f939e6793f94";
        estack_push evar "${var}" "${val}";
    done
}
evar_push_set () 
{ 
    local var=$1;
    evar_push ${var};
    case $# in 
        1)
            unset ${var}
        ;;
        2)
            printf -v "${var}" '%s' "$2"
        ;;
        *)
            die "${FUNCNAME}: incorrect # of args: $*"
        ;;
    esac
}
gcc-fullversion () 
{ 
    _gcc_fullversion '$1.$2.$3' "$@"
}
gcc-major-version () 
{ 
    _gcc_fullversion '$1' "$@"
}
gcc-micro-version () 
{ 
    _gcc_fullversion '$3' "$@"
}
gcc-minor-version () 
{ 
    _gcc_fullversion '$2' "$@"
}
gcc-specs-directive () 
{ 
    local directive subdname subdirective;
    directive="$(_gcc-specs-directive_raw $1)";
    while [[ ${directive} == *%\(*\)* ]]; do
        subdname=${directive/*%\(};
        subdname=${subdname/\)*};
        subdirective="$(_gcc-specs-directive_raw ${subdname})";
        directive="${directive//\%(${subdname})/${subdirective}}";
    done;
    echo "${directive}";
    return 0
}
gcc-specs-nostrict () 
{ 
    local directive;
    directive=$(gcc-specs-directive cc1);
    [[ "${directive/\{!fstrict-overflow:}" != "${directive}" ]]
}
gcc-specs-now () 
{ 
    local directive;
    directive=$(gcc-specs-directive link_command);
    [[ "${directive/\{!nonow:}" != "${directive}" ]]
}
gcc-specs-pie () 
{ 
    local directive;
    directive=$(gcc-specs-directive cc1);
    [[ "${directive/\{!nopie:}" != "${directive}" ]]
}
gcc-specs-relro () 
{ 
    local directive;
    directive=$(gcc-specs-directive link_command);
    [[ "${directive/\{!norelro:}" != "${directive}" ]]
}
gcc-specs-ssp () 
{ 
    local directive;
    directive=$(gcc-specs-directive cc1);
    [[ "${directive/\{!fno-stack-protector:}" != "${directive}" ]]
}
gcc-specs-ssp-to-all () 
{ 
    local directive;
    directive=$(gcc-specs-directive cc1);
    [[ "${directive/\{!fno-stack-protector-all:}" != "${directive}" ]]
}
gcc-specs-stack-check () 
{ 
    local directive;
    directive=$(gcc-specs-directive cc1);
    [[ "${directive/\{!fno-stack-check:}" != "${directive}" ]]
}
gcc-version () 
{ 
    _gcc_fullversion '$1.$2' "$@"
}
gen_usr_ldscript () 
{ 
    ewarn "${FUNCNAME}: Please migrate to usr-ldscript.eclass";
    local lib libdir=$(get_libdir) output_format="" auto=false suffix=$(get_libname);
    [[ -z ${ED+set} ]] && local ED=${D%/}${EPREFIX}/;
    tc-is-static-only && return;
    if [[ $(type -t multilib_is_native_abi) == "function" ]]; then
        multilib_is_native_abi || return 0;
    fi;
    case ${CTARGET:-${CHOST}} in 
        *-darwin*)

        ;;
        *-android*)
            return 0
        ;;
        *linux* | *-freebsd* | *-openbsd* | *-netbsd*)
            use prefix && return 0
        ;;
        *)
            return 0
        ;;
    esac;
    dodir /usr/${libdir};
    if [[ $1 == "-a" ]]; then
        auto=true;
        shift;
        dodir /${libdir};
    fi;
    local flags=(${CFLAGS} ${LDFLAGS} -Wl,--verbose);
    if $(tc-getLD) --version | grep -q 'GNU gold'; then
        local d="${T}/bfd-linker";
        mkdir -p "${d}";
        ln -sf $(which ${CHOST}-ld.bfd) "${d}"/ld;
        flags+=(-B"${d}");
    fi;
    output_format=$($(tc-getCC) "${flags[@]}" 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/\1/p');
    [[ -n ${output_format} ]] && output_format="OUTPUT_FORMAT ( ${output_format} )";
    for lib in "$@";
    do
        local tlib;
        if ${auto}; then
            lib="lib${lib}${suffix}";
        else
            [[ -r ${ED}/${libdir}/${lib} ]] || continue;
        fi;
        case ${CTARGET:-${CHOST}} in 
            *-darwin*)
                if ${auto}; then
                    tlib=$(scanmacho -qF'%S#F' "${ED}"/usr/${libdir}/${lib});
                else
                    tlib=$(scanmacho -qF'%S#F' "${ED}"/${libdir}/${lib});
                fi;
                [[ -z ${tlib} ]] && die "unable to read install_name from ${lib}";
                tlib=${tlib##*/};
                if ${auto}; then
                    mv "${ED}"/usr/${libdir}/${lib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die;
                    if [[ ${tlib} != ${lib%${suffix}}.*${suffix#.} ]]; then
                        mv "${ED}"/usr/${libdir}/${tlib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die;
                    fi;
                    rm -f "${ED}"/${libdir}/${lib};
                fi;
                if [[ ! -w "${ED}/${libdir}/${tlib}" ]]; then
                    chmod u+w "${ED}${libdir}/${tlib}";
                    local nowrite=yes;
                fi;
                install_name_tool -id "${EPREFIX}"/${libdir}/${tlib} "${ED}"/${libdir}/${tlib} || die "install_name_tool failed";
                [[ -n ${nowrite} ]] && chmod u-w "${ED}${libdir}/${tlib}";
                pushd "${ED}/usr/${libdir}" > /dev/null;
                ln -snf "../../${libdir}/${tlib}" "${lib}";
                popd > /dev/null
            ;;
            *)
                if ${auto}; then
                    tlib=$(scanelf -qF'%S#F' "${ED}"/usr/${libdir}/${lib});
                    [[ -z ${tlib} ]] && die "unable to read SONAME from ${lib}";
                    mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die;
                    if [[ ${tlib} != ${lib}* ]]; then
                        mv "${ED}"/usr/${libdir}/${tlib}* "${ED}"/${libdir}/ || die;
                    fi;
                    rm -f "${ED}"/${libdir}/${lib};
                else
                    tlib=${lib};
                fi;
                cat > "${ED}/usr/${libdir}/${lib}" <<-END_LDSCRIPT
/* GNU ld script
   Since Gentoo has critical dynamic libraries in /lib, and the static versions
   in /usr/lib, we need to have a "fake" dynamic lib in /usr/lib, otherwise we
   run into linking problems.  This "fake" dynamic lib is a linker script that
   redirects the linker to the real lib.  And yes, this works in the cross-
   compiling scenario as the sysroot-ed linker will prepend the real path.

   See bug https://bugs.gentoo.org/4411 for more info.
 */
${output_format}
GROUP ( ${EPREFIX}/${libdir}/${tlib} )
END_LDSCRIPT

            ;;
        esac
        fperms a+x "/usr/${libdir}/${lib}" || die "could not change perms on ${lib}";
    done
}
get_abi_CFLAGS () 
{ 
    get_abi_var CFLAGS "$@"
}
get_abi_CHOST () 
{ 
    get_abi_var CHOST "$@"
}
get_abi_CTARGET () 
{ 
    get_abi_var CTARGET "$@"
}
get_abi_FAKE_TARGETS () 
{ 
    get_abi_var FAKE_TARGETS "$@"
}
get_abi_LDFLAGS () 
{ 
    get_abi_var LDFLAGS "$@"
}
get_abi_LIBDIR () 
{ 
    get_abi_var LIBDIR "$@"
}
get_abi_var () 
{ 
    local flag=$1;
    local abi=${2:-${ABI:-${DEFAULT_ABI:-default}}};
    local var="${flag}_${abi}";
    echo ${!var}
}
get_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_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//[-._]/ }
}
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_final_abi () 
{ 
    has_multilib_profile || return 0;
    set -- $(get_install_abis);
    local LAST_ABI=$#;
    [[ ${!LAST_ABI} == ${ABI} ]]
}
list-paxables () 
{ 
    file "$@" 2> /dev/null | grep -E 'ELF.*(executable|shared object)' | sed -e 's/: .*$//'
}
multilib_env () 
{ 
    local CTARGET=${1:-${CTARGET}};
    local cpu=${CTARGET%%*-};
    if [[ ${CTARGET} = *-musl* ]]; then
        : ${MULTILIB_ABIS=default};
        : ${DEFAULT_ABI=default};
        export MULTILIB_ABIS DEFAULT_ABI;
        return;
    fi;
    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 -march=rv64imafdc};
            export CHOST_lp64d=${CTARGET};
            export CTARGET_lp64d=${CTARGET};
            export LIBDIR_lp64d="lib64/lp64d";
            export CFLAGS_lp64=${CFLAGS_lp64--mabi=lp64 -march=rv64imac};
            export CHOST_lp64=${CTARGET};
            export CTARGET_lp64=${CTARGET};
            export LIBDIR_lp64="lib64/lp64";
            export CFLAGS_ilp32d=${CFLAGS_ilp32d--mabi=ilp32d -march=rv32imafdc};
            export CHOST_ilp32d=${CTARGET/riscv64/riscv32};
            export CTARGET_ilp32d=${CTARGET/riscv64/riscv32};
            export LIBDIR_ilp32d="lib32/ilp32d";
            export CFLAGS_ilp32=${CFLAGS_ilp32--mabi=ilp32 -march=rv32imac};
            export CHOST_ilp32=${CTARGET/riscv64/riscv32};
            export CTARGET_ilp32=${CTARGET/riscv64/riscv32};
            export LIBDIR_ilp32="lib32/ilp32";
            : ${MULTILIB_ABIS=lp64d lp64 ilp32d ilp32};
            : ${DEFAULT_ABI=lp64d}
        ;;
        riscv32*)
            export CFLAGS_ilp32d=${CFLAGS_ilp32d--mabi=ilp32d};
            export CHOST_ilp32d=${CTARGET};
            export CTARGET_ilp32d=${CTARGET};
            export LIBDIR_ilp32d="lib32/ilp32d";
            export CFLAGS_ilp32=${CFLAGS_ilp32--mabi=ilp32 -march=rv32imac};
            export CHOST_ilp32=${CTARGET};
            export CTARGET_ilp32=${CTARGET};
            export LIBDIR_ilp32="lib32/ilp32";
            : ${MULTILIB_ABIS=ilp32d ilp32};
            : ${DEFAULT_ABI=ilp32d}
        ;;
        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;
    local save_restore_variables=(CBUILD CHOST AR CC CXX F77 FC LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRINGS STRIP PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG_SYSTEM_LIBRARY_PATH);
    if [[ ${_DEFAULT_ABI_SAVED} == "true" ]]; then
        for v in "${save_restore_variables[@]}";
        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 "${save_restore_variables[@]}";
        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 AR="$(tc-getAR)";
        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 NM="$(tc-getNM)";
        export OBJDUMP="$(tc-getOBJDUMP)";
        export PKG_CONFIG="$(tc-getPKG_CONFIG)";
        export RANLIB="$(tc-getRANLIB)";
        export READELF="$(tc-getREADELF)";
        export STRINGS="$(tc-getSTRINGS)";
        export STRIP="$(tc-getSTRIP)";
        export CHOST=$(get_abi_CHOST $1);
        export PKG_CONFIG_LIBDIR=${EPREFIX}/usr/$(get_libdir)/pkgconfig;
        export PKG_CONFIG_PATH=${EPREFIX}/usr/share/pkgconfig;
        export PKG_CONFIG_SYSTEM_LIBRARY_PATH=${EPREFIX}/usr/$(get_libdir);
    fi
}
number_abis () 
{ 
    set -- `get_install_abis`;
    echo $#
}
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
}
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
}
src_compile () 
{ 
    _emake XCFLAGS="$(usex lua52compat "-DLUAJIT_ENABLE_LUA52COMPAT" "")"
}
src_configure () 
{ 
    default
}
src_install () 
{ 
    _emake install;
    pax-mark m "${ED}usr/bin/luajit-${MY_PV}";
    HTML_DOCS="doc/." einstalldocs
}
src_prepare () 
{ 
    if [[ -n ${HOTFIX} ]]; then
        eapply "${DISTDIR}/${HOTFIX}";
    fi;
    default
}
src_test () 
{ 
    default
}
src_unpack () 
{ 
    default
}
tc-arch () 
{ 
    tc-ninja_magic_to_arch portage "$@"
}
tc-arch-kernel () 
{ 
    tc-ninja_magic_to_arch kern "$@"
}
tc-check-openmp () 
{ 
    if ! tc-has-openmp; then
        eerror "Your current compiler does not support OpenMP!";
        if tc-is-gcc; then
            eerror "Enable OpenMP support by building sys-devel/gcc with USE=\"openmp\".";
        else
            if tc-is-clang; then
                eerror "OpenMP support in sys-devel/clang is provided by sys-libs/libomp.";
            fi;
        fi;
        die "Active compiler does not have required support for OpenMP";
    fi
}
tc-cpp-is-true () 
{ 
    local CONDITION=${1};
    shift;
    $(tc-getTARGET_CPP) "${@}" -P - <<-EOF > /dev/null 2>&1
#if ${CONDITION}
true
#else
#error false
#endif
EOF

}
tc-detect-is-softfloat () 
{ 
    [[ $(tc-getTARGET_CPP) == "gcc -E" ]] && return 1;
    case ${CTARGET:-${CHOST}} in 
        *-newlib | *-elf | *-eabi)
            return 1
        ;;
        arm*)
            if tc-cpp-is-true "defined(__ARM_PCS_VFP)"; then
                echo "no";
            else
                if tc-cpp-is-true "defined(__SOFTFP__)"; then
                    echo "yes";
                else
                    echo "softfp";
                fi;
            fi;
            return 0
        ;;
        *)
            return 1
        ;;
    esac
}
tc-enables-pie () 
{ 
    tc-cpp-is-true "defined(__PIE__)" ${CPPFLAGS} ${CFLAGS}
}
tc-enables-ssp () 
{ 
    tc-cpp-is-true "defined(__SSP__) || defined(__SSP_STRONG__) || defined(__SSP_ALL__)" ${CPPFLAGS} ${CFLAGS}
}
tc-enables-ssp-all () 
{ 
    tc-cpp-is-true "defined(__SSP_ALL__)" ${CPPFLAGS} ${CFLAGS}
}
tc-enables-ssp-strong () 
{ 
    tc-cpp-is-true "defined(__SSP_STRONG__) || defined(__SSP_ALL__)" ${CPPFLAGS} ${CFLAGS}
}
tc-endian () 
{ 
    local host=$1;
    [[ -z ${host} ]] && host=${CTARGET:-${CHOST}};
    host=${host%%-*};
    case ${host} in 
        aarch64*be)
            echo big
        ;;
        aarch64)
            echo little
        ;;
        alpha*)
            echo little
        ;;
        arm*b*)
            echo big
        ;;
        arm*)
            echo little
        ;;
        cris*)
            echo little
        ;;
        hppa*)
            echo big
        ;;
        i?86*)
            echo little
        ;;
        ia64*)
            echo little
        ;;
        m68*)
            echo big
        ;;
        mips*l*)
            echo little
        ;;
        mips*)
            echo big
        ;;
        powerpc*le)
            echo little
        ;;
        powerpc*)
            echo big
        ;;
        riscv*)
            echo little
        ;;
        s390*)
            echo big
        ;;
        sh*b*)
            echo big
        ;;
        sh*)
            echo little
        ;;
        sparc*)
            echo big
        ;;
        x86_64*)
            echo little
        ;;
        *)
            echo wtf
        ;;
    esac
}
tc-env_build () 
{ 
    tc-export_build_env;
    CFLAGS=${BUILD_CFLAGS} CXXFLAGS=${BUILD_CXXFLAGS} CPPFLAGS=${BUILD_CPPFLAGS} LDFLAGS=${BUILD_LDFLAGS} AR=$(tc-getBUILD_AR) AS=$(tc-getBUILD_AS) CC=$(tc-getBUILD_CC) CPP=$(tc-getBUILD_CPP) CXX=$(tc-getBUILD_CXX) LD=$(tc-getBUILD_LD) NM=$(tc-getBUILD_NM) PKG_CONFIG=$(tc-getBUILD_PKG_CONFIG) RANLIB=$(tc-getBUILD_RANLIB) READELF=$(tc-getBUILD_READELF) "$@"
}
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_READELF () 
{ 
    tc-getBUILD_PROG READELF readelf "$@"
}
tc-getBUILD_STRINGS () 
{ 
    tc-getBUILD_PROG STRINGS strings "$@"
}
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-getREADELF () 
{ 
    tc-getPROG READELF readelf "$@"
}
tc-getSTRINGS () 
{ 
    tc-getPROG STRINGS strings "$@"
}
tc-getSTRIP () 
{ 
    tc-getPROG STRIP strip "$@"
}
tc-getTARGET_CPP () 
{ 
    if [[ -n ${CTARGET} ]]; then
        _tc-getPROG CTARGET TARGET_CPP "gcc -E" "$@";
    else
        tc-getCPP "$@";
    fi
}
tc-has-openmp () 
{ 
    local base="${T}/test-tc-openmp";
    cat <<-EOF > "${base}.c"
#include <omp.h>
int main() {
int nthreads, tid, ret = 0;
#pragma omp parallel private(nthreads, tid)
{
tid = omp_get_thread_num();
nthreads = omp_get_num_threads(); ret += tid + nthreads;
}
return ret;
}
EOF

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

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

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

    out=$($(tc-getCC "$@") ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} -Wl,--version "${base}.c" -o "${base}" 2>&1);
    rm -f "${base}"*;
    if [[ ${out} == *"GNU gold"* ]]; then
        return 0;
    fi;
    return 1
}
tc-ld-is-lld () 
{ 
    local out;
    out=$($(tc-getLD "$@") --version 2>&1);
    if [[ ${out} == *"LLD"* ]]; then
        return 0;
    fi;
    local base="${T}/test-tc-lld";
    cat <<-EOF > "${base}.c"
int main() { return 0; }
EOF

    out=$($(tc-getCC "$@") ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} -Wl,--version "${base}.c" -o "${base}" 2>&1);
    rm -f "${base}"*;
    if [[ ${out} == *"LLD"* ]]; then
        return 0;
    fi;
    return 1
}
tc-ninja_magic_to_arch () 
{ 
    function ninj () 
    { 
        [[ ${type} == "kern" ]] && echo $1 || echo $2
    };
    local type=$1;
    local host=$2;
    [[ -z ${host} ]] && host=${CTARGET:-${CHOST}};
    case ${host} in 
        aarch64*)
            echo arm64
        ;;
        alpha*)
            echo alpha
        ;;
        arm*)
            echo arm
        ;;
        avr*)
            ninj avr32 avr
        ;;
        bfin*)
            ninj blackfin bfin
        ;;
        c6x*)
            echo c6x
        ;;
        cris*)
            echo cris
        ;;
        frv*)
            echo frv
        ;;
        hexagon*)
            echo hexagon
        ;;
        hppa*)
            ninj parisc hppa
        ;;
        i?86*)
            if [[ ${type} == "kern" && ${host} == *freebsd* ]]; then
                echo i386;
            else
                echo x86;
            fi
        ;;
        ia64*)
            echo ia64
        ;;
        m68*)
            echo m68k
        ;;
        metag*)
            echo metag
        ;;
        microblaze*)
            echo microblaze
        ;;
        mips*)
            echo mips
        ;;
        nios2*)
            echo nios2
        ;;
        nios*)
            echo nios
        ;;
        or1k | or32*)
            echo openrisc
        ;;
        powerpc*)
            if [[ ${type} == "kern" ]]; then
                echo powerpc;
            else
                if [[ ${host} == powerpc64* ]]; then
                    echo ppc64;
                else
                    echo ppc;
                fi;
            fi
        ;;
        riscv*)
            echo riscv
        ;;
        s390*)
            echo s390
        ;;
        score*)
            echo score
        ;;
        sh64*)
            ninj sh64 sh
        ;;
        sh*)
            echo sh
        ;;
        sparc64*)
            ninj sparc64 sparc
        ;;
        sparc*)
            [[ ${PROFILE_ARCH} == "sparc64" ]] && ninj sparc64 sparc || echo sparc
        ;;
        tile*)
            echo tile
        ;;
        vax*)
            echo vax
        ;;
        x86_64*freebsd*)
            echo amd64
        ;;
        x86_64*)
            if [[ ${type} == "kern" ]]; then
                echo x86;
            else
                echo amd64;
            fi
        ;;
        xtensa*)
            echo xtensa
        ;;
        *)
            echo unknown
        ;;
    esac
}
tc-stack-grows-down () 
{ 
    case ${ARCH} in 
        hppa | metag)
            return 1
        ;;
    esac;
    return 0
}
tc-tuple-is-softfloat () 
{ 
    local CTARGET=${CTARGET:-${CHOST}};
    case ${CTARGET//_/-} in 
        bfin* | h8300*)
            echo "only"
        ;;
        *-softfloat-*)
            echo "yes"
        ;;
        *-softfp-*)
            echo "softfp"
        ;;
        arm*-hardfloat-* | arm*eabihf)
            echo "no"
        ;;
        *-newlib | *-elf | *-eabi)
            echo "no"
        ;;
        arm*)
            echo "yes"
        ;;
        *)
            echo "no"
        ;;
    esac
}
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
}

@tiborh
Copy link
Author

tiborh commented Oct 18, 2020

$ sudo ls -lR /var/tmp/portage/dev-lang/luajit-2.0.5-r2/work/LuaJIT-2.0.5
/var/tmp/portage/dev-lang/luajit-2.0.5-r2/work/LuaJIT-2.0.5:
total 32
-rw-r--r-- 1 portage portage 2932 May  1  2017 COPYRIGHT
-rw-r--r-- 1 portage portage 5616 Oct 18 18:22 Makefile
-rw-r--r-- 1 portage portage  441 May  1  2017 README
drwxr-xr-x 3 portage portage 4096 May  1  2017 doc
drwxr-xr-x 2 portage portage 4096 May  1  2017 dynasm
drwxr-xr-x 2 portage portage 4096 May  1  2017 etc
drwxr-xr-x 4 portage portage 4096 Oct 18 18:22 src

/var/tmp/portage/dev-lang/luajit-2.0.5-r2/work/LuaJIT-2.0.5/doc:
total 272
-rw-r--r-- 1 portage portage  2514 May  1  2017 bluequad-print.css
-rw-r--r-- 1 portage portage  5575 May  1  2017 bluequad.css
-rw-r--r-- 1 portage portage 48265 May  1  2017 changes.html
-rw-r--r-- 1 portage portage  2938 May  1  2017 contact.html
-rw-r--r-- 1 portage portage  5991 May  1  2017 ext_c_api.html
-rw-r--r-- 1 portage portage 10285 May  1  2017 ext_ffi.html
-rw-r--r-- 1 portage portage 21296 May  1  2017 ext_ffi_api.html
-rw-r--r-- 1 portage portage 53100 May  1  2017 ext_ffi_semantics.html
-rw-r--r-- 1 portage portage 22506 May  1  2017 ext_ffi_tutorial.html
-rw-r--r-- 1 portage portage  5844 May  1  2017 ext_jit.html
-rw-r--r-- 1 portage portage 15247 May  1  2017 extensions.html
-rw-r--r-- 1 portage portage  7634 May  1  2017 faq.html
drwxr-xr-x 2 portage portage  4096 May  1  2017 img
-rw-r--r-- 1 portage portage 23195 May  1  2017 install.html
-rw-r--r-- 1 portage portage  8011 May  1  2017 luajit.html
-rw-r--r-- 1 portage portage 13567 May  1  2017 running.html
-rw-r--r-- 1 portage portage  3283 May  1  2017 status.html

/var/tmp/portage/dev-lang/luajit-2.0.5-r2/work/LuaJIT-2.0.5/doc/img:
total 4
-rw-r--r-- 1 portage portage 1340 May  1  2017 contact.png

/var/tmp/portage/dev-lang/luajit-2.0.5-r2/work/LuaJIT-2.0.5/dynasm:
total 260
-rw-r--r-- 1 portage portage 13423 May  1  2017 dasm_arm.h
-rw-r--r-- 1 portage portage 34598 May  1  2017 dasm_arm.lua
-rw-r--r-- 1 portage portage 12200 May  1  2017 dasm_mips.h
-rw-r--r-- 1 portage portage 28080 May  1  2017 dasm_mips.lua
-rw-r--r-- 1 portage portage 12110 May  1  2017 dasm_ppc.h
-rw-r--r-- 1 portage portage 37064 May  1  2017 dasm_ppc.lua
-rw-r--r-- 1 portage portage  2062 May  1  2017 dasm_proto.h
-rw-r--r-- 1 portage portage   568 May  1  2017 dasm_x64.lua
-rw-r--r-- 1 portage portage 15310 May  1  2017 dasm_x86.h
-rw-r--r-- 1 portage portage 59029 May  1  2017 dasm_x86.lua
-rw-r--r-- 1 portage portage 30989 May  1  2017 dynasm.lua

/var/tmp/portage/dev-lang/luajit-2.0.5-r2/work/LuaJIT-2.0.5/etc:
total 8
-rw-r--r-- 1 portage portage 2339 May  1  2017 luajit.1
-rw-r--r-- 1 portage portage  592 May  1  2017 luajit.pc

/var/tmp/portage/dev-lang/luajit-2.0.5-r2/work/LuaJIT-2.0.5/src:
total 2760
-rw-r--r-- 1 portage portage  22092 May  1  2017 Makefile
-rw-r--r-- 1 portage portage  13790 May  1  2017 Makefile.dep
drwxr-xr-x 2 portage portage   4096 May  1  2017 host
drwxr-xr-x 2 portage portage   4096 May  1  2017 jit
-rw-r--r-- 1 portage portage   6006 May  1  2017 lauxlib.h
-rw-r--r-- 1 portage portage   8949 May  1  2017 lib_aux.c
-rw-r--r-- 1 portage portage  17039 May  1  2017 lib_base.c
-rw-r--r-- 1 portage portage   1858 May  1  2017 lib_bit.c
-rw-r--r-- 1 portage portage   9503 May  1  2017 lib_debug.c
-rw-r--r-- 1 portage portage  22541 May  1  2017 lib_ffi.c
-rw-r--r-- 1 portage portage   1355 May  1  2017 lib_init.c
-rw-r--r-- 1 portage portage  13724 May  1  2017 lib_io.c
-rw-r--r-- 1 portage portage  17724 May  1  2017 lib_jit.c
-rw-r--r-- 1 portage portage   6190 May  1  2017 lib_math.c
-rw-r--r-- 1 portage portage   6421 May  1  2017 lib_os.c
-rw-r--r-- 1 portage portage  17881 May  1  2017 lib_package.c
-rw-r--r-- 1 portage portage  25059 May  1  2017 lib_string.c
-rw-r--r-- 1 portage portage   7655 May  1  2017 lib_table.c
-rw-r--r-- 1 portage portage    589 May  1  2017 lj.supp
-rw-r--r-- 1 portage portage  40648 May  1  2017 lj_alloc.c
-rw-r--r-- 1 portage portage    330 May  1  2017 lj_alloc.h
-rw-r--r-- 1 portage portage  28933 May  1  2017 lj_api.c
-rw-r--r-- 1 portage portage  11997 May  1  2017 lj_arch.h
-rw-r--r-- 1 portage portage  57535 May  1  2017 lj_asm.c
-rw-r--r-- 1 portage portage    356 May  1  2017 lj_asm.h
-rw-r--r-- 1 portage portage  75531 May  1  2017 lj_asm_arm.h
-rw-r--r-- 1 portage portage  65507 May  1  2017 lj_asm_mips.h
-rw-r--r-- 1 portage portage  70862 May  1  2017 lj_asm_ppc.h
-rw-r--r-- 1 portage portage  98374 May  1  2017 lj_asm_x86.h
-rw-r--r-- 1 portage portage    261 May  1  2017 lj_bc.c
-rw-r--r-- 1 portage portage   8223 May  1  2017 lj_bc.h
-rw-r--r-- 1 portage portage   1936 May  1  2017 lj_bcdump.h
-rw-r--r-- 1 portage portage  13412 May  1  2017 lj_bcread.c
-rw-r--r-- 1 portage portage  11396 May  1  2017 lj_bcwrite.c
-rw-r--r-- 1 portage portage  10127 May  1  2017 lj_carith.c
-rw-r--r-- 1 portage portage    674 May  1  2017 lj_carith.h
-rw-r--r-- 1 portage portage  27435 May  1  2017 lj_ccall.c
-rw-r--r-- 1 portage portage   4125 May  1  2017 lj_ccall.h
-rw-r--r-- 1 portage portage  18816 May  1  2017 lj_ccallback.c
-rw-r--r-- 1 portage portage    631 May  1  2017 lj_ccallback.h
-rw-r--r-- 1 portage portage  24392 May  1  2017 lj_cconv.c
-rw-r--r-- 1 portage portage   2025 May  1  2017 lj_cconv.h
-rw-r--r-- 1 portage portage   8669 May  1  2017 lj_cdata.c
-rw-r--r-- 1 portage portage   2079 May  1  2017 lj_cdata.h
-rw-r--r-- 1 portage portage   1980 May  1  2017 lj_char.c
-rw-r--r-- 1 portage portage   1437 May  1  2017 lj_char.h
-rw-r--r-- 1 portage portage  10343 May  1  2017 lj_clib.c
-rw-r--r-- 1 portage portage    754 May  1  2017 lj_clib.h
-rw-r--r-- 1 portage portage  56756 May  1  2017 lj_cparse.c
-rw-r--r-- 1 portage portage   2187 May  1  2017 lj_cparse.h
-rw-r--r-- 1 portage portage  54181 May  1  2017 lj_crecord.c
-rw-r--r-- 1 portage portage   1384 May  1  2017 lj_crecord.h
-rw-r--r-- 1 portage portage  18135 May  1  2017 lj_ctype.c
-rw-r--r-- 1 portage portage  16925 May  1  2017 lj_ctype.h
-rw-r--r-- 1 portage portage  16923 May  1  2017 lj_debug.c
-rw-r--r-- 1 portage portage   1794 May  1  2017 lj_debug.h
-rw-r--r-- 1 portage portage  10381 May  1  2017 lj_def.h
-rw-r--r-- 1 portage portage  15075 May  1  2017 lj_dispatch.c
-rw-r--r-- 1 portage portage   4351 May  1  2017 lj_dispatch.h
-rw-r--r-- 1 portage portage  10779 May  1  2017 lj_emit_arm.h
-rw-r--r-- 1 portage portage   6087 May  1  2017 lj_emit_mips.h
-rw-r--r-- 1 portage portage   6999 May  1  2017 lj_emit_ppc.h
-rw-r--r-- 1 portage portage  11905 May  1  2017 lj_emit_x86.h
-rw-r--r-- 1 portage portage  23949 Oct 18 18:22 lj_err.c
-rw-r--r-- 1 portage portage   1496 May  1  2017 lj_err.h
-rw-r--r-- 1 portage portage   7953 May  1  2017 lj_errmsg.h
-rw-r--r-- 1 portage portage    364 May  1  2017 lj_ff.h
-rw-r--r-- 1 portage portage  27797 May  1  2017 lj_ffrecord.c
-rw-r--r-- 1 portage portage    637 May  1  2017 lj_ffrecord.h
-rw-r--r-- 1 portage portage   5869 May  1  2017 lj_frame.h
-rw-r--r-- 1 portage portage   5750 May  1  2017 lj_func.c
-rw-r--r-- 1 portage portage    776 May  1  2017 lj_func.h
-rw-r--r-- 1 portage portage  26426 May  1  2017 lj_gc.c
-rw-r--r-- 1 portage portage   4913 May  1  2017 lj_gc.h
-rw-r--r-- 1 portage portage  21550 May  1  2017 lj_gdbjit.c
-rw-r--r-- 1 portage portage    464 May  1  2017 lj_gdbjit.h
-rw-r--r-- 1 portage portage  13568 May  1  2017 lj_ir.c
-rw-r--r-- 1 portage portage  17621 May  1  2017 lj_ir.h
-rw-r--r-- 1 portage portage   8828 May  1  2017 lj_ircall.h
-rw-r--r-- 1 portage portage   5953 May  1  2017 lj_iropt.h
-rw-r--r-- 1 portage portage  15280 May  1  2017 lj_jit.h
-rw-r--r-- 1 portage portage  12702 May  1  2017 lj_lex.c
-rw-r--r-- 1 portage portage   3082 May  1  2017 lj_lex.h
-rw-r--r-- 1 portage portage   6275 May  1  2017 lj_lib.c
-rw-r--r-- 1 portage portage   3613 May  1  2017 lj_lib.h
-rw-r--r-- 1 portage portage   4093 May  1  2017 lj_load.c
-rw-r--r-- 1 portage portage  10157 May  1  2017 lj_mcode.c
-rw-r--r-- 1 portage portage    691 May  1  2017 lj_mcode.h
-rw-r--r-- 1 portage portage  14446 May  1  2017 lj_meta.c
-rw-r--r-- 1 portage portage   1455 May  1  2017 lj_meta.h
-rw-r--r-- 1 portage portage    956 May  1  2017 lj_obj.c
-rw-r--r-- 1 portage portage  30508 May  1  2017 lj_obj.h
-rw-r--r-- 1 portage portage   2031 May  1  2017 lj_opt_dce.c
-rw-r--r-- 1 portage portage  62593 May  1  2017 lj_opt_fold.c
-rw-r--r-- 1 portage portage  15208 May  1  2017 lj_opt_loop.c
-rw-r--r-- 1 portage portage  30721 May  1  2017 lj_opt_mem.c
-rw-r--r-- 1 portage portage  25676 May  1  2017 lj_opt_narrow.c
-rw-r--r-- 1 portage portage   7092 May  1  2017 lj_opt_sink.c
-rw-r--r-- 1 portage portage  23326 May  1  2017 lj_opt_split.c
-rw-r--r-- 1 portage portage  80421 May  1  2017 lj_parse.c
-rw-r--r-- 1 portage portage    417 May  1  2017 lj_parse.h
-rw-r--r-- 1 portage portage  75108 May  1  2017 lj_record.c
-rw-r--r-- 1 portage portage   1578 May  1  2017 lj_record.h
-rw-r--r-- 1 portage portage  27767 May  1  2017 lj_snap.c
-rw-r--r-- 1 portage portage    921 May  1  2017 lj_snap.h
-rw-r--r-- 1 portage portage   8888 May  1  2017 lj_state.c
-rw-r--r-- 1 portage portage   1045 May  1  2017 lj_state.h
-rw-r--r-- 1 portage portage   9720 May  1  2017 lj_str.c
-rw-r--r-- 1 portage portage   1719 May  1  2017 lj_str.h
-rw-r--r-- 1 portage portage  15372 May  1  2017 lj_strscan.c
-rw-r--r-- 1 portage portage   1088 May  1  2017 lj_strscan.h
-rw-r--r-- 1 portage portage  18063 May  1  2017 lj_tab.c
-rw-r--r-- 1 portage portage   2370 May  1  2017 lj_tab.h
-rw-r--r-- 1 portage portage   5953 May  1  2017 lj_target.h
-rw-r--r-- 1 portage portage   7243 May  1  2017 lj_target_arm.h
-rw-r--r-- 1 portage portage   7461 May  1  2017 lj_target_mips.h
-rw-r--r-- 1 portage portage   7517 May  1  2017 lj_target_ppc.h
-rw-r--r-- 1 portage portage  10064 May  1  2017 lj_target_x86.h
-rw-r--r-- 1 portage portage  23777 May  1  2017 lj_trace.c
-rw-r--r-- 1 portage portage   1505 May  1  2017 lj_trace.h
-rw-r--r-- 1 portage portage   2103 May  1  2017 lj_traceerr.h
-rw-r--r-- 1 portage portage    848 May  1  2017 lj_udata.c
-rw-r--r-- 1 portage portage    307 May  1  2017 lj_udata.h
-rw-r--r-- 1 portage portage   3466 May  1  2017 lj_vm.h
-rw-r--r-- 1 portage portage   1515 May  1  2017 lj_vmevent.c
-rw-r--r-- 1 portage portage   1571 May  1  2017 lj_vmevent.h
-rw-r--r-- 1 portage portage   3212 May  1  2017 lj_vmmath.c
-rw-r--r-- 1 portage portage   2300 May  1  2017 ljamalg.c
-rw-r--r-- 1 portage portage  11964 May  1  2017 lua.h
-rw-r--r-- 1 portage portage    135 May  1  2017 lua.hpp
-rw-r--r-- 1 portage portage   4762 May  1  2017 luaconf.h
-rw-r--r-- 1 portage portage  14800 May  1  2017 luajit.c
-rw-r--r-- 1 portage portage   2573 May  1  2017 luajit.h
-rw-r--r-- 1 portage portage   1113 May  1  2017 lualib.h
-rw-r--r-- 1 portage portage   3732 May  1  2017 msvcbuild.bat
-rw-r--r-- 1 portage portage   3251 May  1  2017 ps4build.bat
-rw-r--r-- 1 portage portage   3108 May  1  2017 psvitabuild.bat
-rw-r--r-- 1 portage portage 122923 May  1  2017 vm_arm.dasc
-rw-r--r-- 1 portage portage 118694 May  1  2017 vm_mips.dasc
-rw-r--r-- 1 portage portage 138697 May  1  2017 vm_ppc.dasc
-rw-r--r-- 1 portage portage 104315 May  1  2017 vm_ppcspe.dasc
-rw-r--r-- 1 portage portage 170409 May  1  2017 vm_x86.dasc
-rw-r--r-- 1 portage portage   3135 May  1  2017 xedkbuild.bat

/var/tmp/portage/dev-lang/luajit-2.0.5-r2/work/LuaJIT-2.0.5/src/host:
total 252
-rw-r--r-- 1 portage portage    193 May  1  2017 README
-rw-r--r-- 1 portage portage  12936 May  1  2017 buildvm.c
-rw-r--r-- 1 portage portage   2561 May  1  2017 buildvm.h
-rw-r--r-- 1 portage portage   8321 May  1  2017 buildvm_asm.c
-rw-r--r-- 1 portage portage   6478 May  1  2017 buildvm_fold.c
-rw-r--r-- 1 portage portage  10654 May  1  2017 buildvm_lib.c
-rw-r--r-- 1 portage portage  11357 May  1  2017 buildvm_peobj.c
-rw-r--r-- 1 portage portage  12039 May  1  2017 genminilua.lua
-rw-r--r-- 1 portage portage 174364 May  1  2017 minilua.c

/var/tmp/portage/dev-lang/luajit-2.0.5-r2/work/LuaJIT-2.0.5/src/jit:
total 152
-rw-r--r-- 1 portage portage  5606 May  1  2017 bc.lua
-rw-r--r-- 1 portage portage 18146 May  1  2017 bcsave.lua
-rw-r--r-- 1 portage portage 19345 May  1  2017 dis_arm.lua
-rw-r--r-- 1 portage portage 13186 May  1  2017 dis_mips.lua
-rw-r--r-- 1 portage portage   710 May  1  2017 dis_mipsel.lua
-rw-r--r-- 1 portage portage 20302 May  1  2017 dis_ppc.lua
-rw-r--r-- 1 portage portage   707 May  1  2017 dis_x64.lua
-rw-r--r-- 1 portage portage 29330 May  1  2017 dis_x86.lua
-rw-r--r-- 1 portage portage 19588 May  1  2017 dump.lua
-rw-r--r-- 1 portage portage  5614 May  1  2017 v.lua

@tiborh tiborh changed the title Installing sysbench fails due to luajit error Installing sysbench fails due to luajit build error Oct 18, 2020
@sakaki- sakaki- added the EOL label Oct 30, 2020
@sakaki-
Copy link
Owner

sakaki- commented Oct 30, 2020

30 Oct 2020: sadly, due legal obligations arising from a recent change in my 'real world' job, I must announce I am standing down as maintainer of this project with immediate effect. For the meantime, I will leave the repo up (for historical interest, and since the images may be of use still in certain applications); however, there will be no further updates to the underlying binhost etc., nor will I be accepting / actioning further pull requests or bug reports from this point. Email requests for support will also have to be politely declined, so, please treat this as an effective EOL notice.

For further details, please see my post here.

Many thanks for your interest in this project!

With sincere apologies, sakaki ><

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants