declare -x ABI="amd64" declare -x ABI_MIPS="" declare -x ABI_S390="" declare -x ABI_X86="64" declare -x ADA_TARGET="" declare -x ALSA_CARDS="" declare -x AMDGPU_TARGETS="" declare -x ANT_HOME="/usr/share/ant" declare -x APACHE2_MODULES="" declare -x APACHE2_MPMS="" declare -x ARCH="amd64" declare BDEPEND="" declare -x BINPKG_FORMAT="xpak" declare -x BINPKG_GPG_SIGNING_BASE_COMMAND="/usr/bin/flock /run/lock/portage-binpkg-gpg.lock /usr/bin/gpg --sign --armor [PORTAGE_CONFIG]" declare -x BINPKG_GPG_SIGNING_DIGEST="SHA512" declare -x BINPKG_GPG_VERIFY_BASE_COMMAND="/usr/bin/gpg --verify --batch --no-tty --no-auto-check-trustdb --status-fd 2 [PORTAGE_CONFIG] [SIGNATURE]" declare -x BINPKG_GPG_VERIFY_GPG_HOME="/etc/portage/gnupg" declare -x BOOTSTRAP_USE="unicode internal-glib pkg-config split-usr xml python_targets_python3_11 python_single_target_python3_11 multilib systemd sysv-utils udev" declare -x CALLIGRA_FEATURES="" declare -x CAMERAS="" declare -x CARGO_TERM_COLOR="never" declare -x CBUILD="x86_64-pc-linux-gnu" declare -x CFLAGS="-O3 -pipe -march=native -fno-diagnostics-color" declare -x CFLAGS_amd64="-m64" declare -x CFLAGS_x32="-mx32" declare -x CFLAGS_x86="-m32 -mfpmath=sse" declare -x CHOST="x86_64-pc-linux-gnu" declare -x CHOST_amd64="x86_64-pc-linux-gnu" declare -x CHOST_x32="x86_64-pc-linux-gnux32" declare -x CHOST_x86="i686-pc-linux-gnu" declare -x CMAKE_COLOR_DIAGNOSTICS="OFF" declare -x CMAKE_COLOR_MAKEFILE="OFF" declare -x COLLECTD_PLUGINS="" declare -x CPU_FLAGS_ARM="" declare -x CPU_FLAGS_PPC="" declare -x CPU_FLAGS_X86="" declare -x CURL_SSL="" declare -x CXXFLAGS="-O3 -pipe -march=native -fno-diagnostics-color" declare -x DEFAULT_ABI="amd64" declare -x DEFINED_PHASES=" compile install prepare test" declare DEPEND=$'\n\t\n\t|| (\n\t\t>=dev-python/pypy-exe-bin-7.3.14:7.3.14\n\t\t>=dev-python/pypy-exe-7.3.14:7.3.14[bzip2?,ncurses?]\n\t)\n\tdev-libs/openssl:0=\n\tgdbm? ( sys-libs/gdbm:0= )\n\tsqlite? ( dev-db/sqlite:3= )\n\ttk? (\n\t\tdev-lang/tk:0=\n\t\tdev-tcltk/tix:0=\n\t)\n\n ' declare DESCRIPTION="A fast, compliant alternative implementation of the Python language" declare -x DIALIGN2_DIR="/usr/share/dialign2" declare -x DIROPTIONS="-m0755" declare -x EAPI="8" declare -x EGO_BUILD_FLAGS="-p 4" declare -x ELIBC="glibc" declare -x ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GDK_PIXBUF_MODULE_FILE 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 XDG_STATE_HOME" declare -- EPOCHREALTIME="1703644483.169819" declare -- EPOCHSECONDS="1703644483" declare -x EXEOPTIONS="-m0755" declare -x FCFLAGS="-O3 -pipe -march=native -fno-diagnostics-color" 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="-O3 -pipe -march=native -fno-diagnostics-color" declare -x FFTOOLS="" declare -x FLTK_DOCDIR="/usr/share/doc/fltk-1.3.8/html" declare -x GCC_COLORS="" declare -x GCC_SPECS="" declare -x GIT_PAGER="cat" declare -x GO19CONCURRENTCOMPILATION="0" declare -x GOMAXPROCS="4" declare -x GPG_VERIFY_GROUP_DROP="nogroup" declare -x GPG_VERIFY_USER_DROP="nobody" declare -x GPSD_PROTOCOLS="" declare -x GRUB_PLATFORMS="" declare -x GSETTINGS_BACKEND="dconf" declare HOMEPAGE="https://www.pypy.org/" declare IDEPEND="" declare -x INHERITED=" pax-utils" declare -x INPUT_DEVICES="" declare -x INSOPTIONS="-m0644" declare IUSE="bzip2 full-stdlib gdbm +jit ncurses sqlite tk " declare -x IUSE_EFFECTIVE="abi_x86_64 alpha amd64 amd64-linux arm arm64 arm64-macos bzip2 elibc_Darwin elibc_SunOS elibc_bionic elibc_glibc elibc_mingw elibc_musl full-stdlib gdbm hppa ia64 jit kernel_Darwin kernel_SunOS kernel_linux loong m68k mips ncurses ppc ppc-macos ppc64 ppc64-linux prefix prefix-guest prefix-stack riscv s390 sparc sqlite tk x64-macos x64-solaris x86 x86-linux" declare -x IUSE_IMPLICIT="abi_x86_64 prefix prefix-guest prefix-stack" declare -x JAVAC="/etc/java-config-2/current-system-vm/bin/javac" declare -x JAVA_HOME="/etc/java-config-2/current-system-vm" declare -x JDK_HOME="/etc/java-config-2/current-system-vm" declare -x KERNEL="linux" declare -x KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86 ~amd64-linux ~x86-linux" declare -x L10N="" declare -x LADSPA_PATH="/usr/lib64/ladspa" declare -x LANG="C.UTF8" declare -x LCD_DEVICES="" declare -x LC_COLLATE="C" declare -x LC_MESSAGES="C" declare -x LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,--defsym=__gentoo_check_ldflags__=0" declare -x LDFLAGS_amd64="-m elf_x86_64" declare -x LDFLAGS_x32="-m elf32_x86_64" declare -x LDFLAGS_x86="-m elf_i386" declare -x LEX="reflex" declare -x LIBDIR_amd64="lib64" declare -x LIBDIR_x32="libx32" declare -x LIBDIR_x86="lib" declare -x LIBOPTIONS="-m0644" declare -x LIBREOFFICE_EXTENSIONS="" declare -x LICENSE="MIT" declare -x LLVM_TARGETS="" declare -x LUA_SINGLE_TARGET="" declare -x LUA_TARGETS="" declare -x MAILTO="tinderbox" declare -x MAKEOPTS=" -j4" declare -x MONKEYD_PLUGINS="" declare -x MULTILIB_ABIS="amd64 x86" declare -x MULTILIB_STRICT_DENY="64-bit.*shared object" declare -x MULTILIB_STRICT_DIRS="/lib32 /lib /usr/lib32 /usr/lib /usr/kde/*/lib32 /usr/kde/*/lib /usr/qt/*/lib32 /usr/qt/*/lib /usr/X11R6/lib32 /usr/X11R6/lib" declare -x MULTILIB_STRICT_EXEMPT="(perl5|gcc|binutils|eclipse-3|debug|portage|udev|systemd|clang|python-exec|llvm)" declare -- MY_P="pypy2.7-v7.3.14" declare -x NGINX_MODULES_HTTP="" declare -x NGINX_MODULES_MAIL="" declare -x NGINX_MODULES_STREAM="" declare -x OCAML_COLOR="never" declare -x OFFICE_IMPLEMENTATION="" declare -x OMNIORB_CONFIG="/etc/omniorb/omniORB.cfg" declare -x OMP_DYNAMIC="FALSE" declare -x OMP_NESTED="FALSE" declare -x OMP_NUM_THREADS="4" declare -x OPENMPI_FABRICS="" declare -x OPENMPI_OFED_FEATURES="" declare -x OPENMPI_RM="" declare -x ORACLE_HOME="/usr/lib64/oracle/client" declare -- PATCHSET="pypy2.7-gentoo-patches-7.3.14" declare -x PATH="/usr/lib/portage/python3.11/ebuild-helpers/xattr:/usr/lib/portage/python3.11/ebuild-helpers:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/lib/llvm/17/bin:/usr/lib/llvm/16/bin:/usr/share/omniORB/bin/scripts:/opt/hermes/bin" declare -- PAX_MARKINGS="none" declare PDEPEND="" declare -x PHP_TARGETS="" declare -x PKGSYSTEM_ENABLE_FSYNC="0" declare -x PORTAGE_COMPRESSION_COMMAND="zstd -T4" 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/pypy-7.3.14/html") declare -a PORTAGE_DOSTRIP=([0]="/") declare -a PORTAGE_DOSTRIP_SKIP=() declare -x PORTAGE_TMPFS="/dev/shm" declare -x PORT_LOGDIR="/var/log/portage" declare -x POSTGRES_TARGETS="" declare -x PROFILE_ONLY_VARIABLES="ARCH ELIBC IUSE_IMPLICIT KERNEL USE_EXPAND_IMPLICIT USE_EXPAND_UNPREFIXED USE_EXPAND_VALUES_ARCH USE_EXPAND_VALUES_ELIBC USE_EXPAND_VALUES_KERNEL" declare -- PROPERTIES="" declare -- PYPY_PV="7.3.14" declare -x PYTEST_ADDOPTS="--color=no" declare -x PYTHONDONTWRITEBYTECODE="1" declare -x PYTHON_SINGLE_TARGET="" declare -x PYTHON_TARGETS="" declare -x PY_FORCE_COLOR="0" declare -x QEMU_SOFTMMU_TARGETS="" declare -x QEMU_USER_TARGETS="" declare RDEPEND=$'\n\t|| (\n\t\t>=dev-python/pypy-exe-bin-7.3.14:7.3.14\n\t\t>=dev-python/pypy-exe-7.3.14:7.3.14[bzip2?,ncurses?]\n\t)\n\tdev-libs/openssl:0=\n\tgdbm? ( sys-libs/gdbm:0= )\n\tsqlite? ( dev-db/sqlite:3= )\n\ttk? (\n\t\tdev-lang/tk:0=\n\t\tdev-tcltk/tix:0=\n\t)\n ' declare REPOSITORY declare REQUIRED_USE="" declare 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 RUBY_TARGETS="" declare -x RUST_TEST_TASKS="4" declare -x RUST_TEST_THREADS="4" declare -x S="/var/tmp/portage/dev-python/pypy-7.3.14/work/pypy2.7-v7.3.14-src" declare -x SANDBOX_DEBUG="0" declare -x SANDBOX_DENY="" declare -x SANDBOX_METHOD="any" declare -x SANDBOX_PREDICT="/var/tmp/portage/dev-python/pypy-7.3.14/homedir:/dev/crypto:/var/cache/man:/dev/random:/proc/self/coredump_filter:/dev/random:/proc/self/coredump_filter:/dev/random:/proc/self/coredump_filter:/var/cache/fontconfig" 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/:/usr/tmp/cf:/usr/tmp/conftest:/var/tmp/:/var/tmp/portage:/var/tmp/portage/dev-python/pypy-7.3.14/homedir/.bash_history" declare -x SANE_BACKENDS="" declare -x SHELL="/bin/bash" declare -x SLOT="0/73" declare -i SRANDOM="4107852176" declare SRC_URI=$'\n\thttps://buildbot.pypy.org/pypy/pypy2.7-v7.3.14-src.tar.bz2\n\thttps://dev.gentoo.org/~mgorny/dist/python/pypy2.7-gentoo-patches-7.3.14.tar.xz\n' declare -x STUDIO_JDK="/opt/android-studio/jbr" declare -x SYMLINK_LIB="no" declare -x TERMINFO="/etc/terminfo" declare -x TEXINPUTS="/usr/lib64/ocaml/ocamldoc:" declare -x TINYSCHEMEINIT="/usr/share/tinyscheme/init.scm" declare -x TNS_ADMIN="/etc/oracle/" declare -x TWISTED_DISABLE_WRITING_OF_PLUGIN_CACHE="1" declare -x USE="abi_x86_64 amd64 bzip2 elibc_glibc full-stdlib gdbm jit kernel_linux ncurses" declare -x USERLAND="GNU" declare -x USE_EXPAND_IMPLICIT="ARCH ELIBC KERNEL" declare -x USE_EXPAND_UNPREFIXED="ARCH" declare -x USE_EXPAND_VALUES_ARCH="alpha amd64 amd64-linux arm arm64 arm64-macos hppa ia64 loong m68k mips ppc ppc64 ppc64-linux ppc-macos riscv s390 sparc x64-macos x64-solaris x86 x86-linux" declare -x USE_EXPAND_VALUES_ELIBC="bionic Darwin glibc mingw musl SunOS" declare -x USE_EXPAND_VALUES_KERNEL="Darwin linux SunOS" 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 XTABLES_ADDONS="" declare -x XZ_OPT="-9 -T4" declare -- _PAX_UTILS_ECLASS="1" declare -x __E_DESTTREE="/usr" declare -x __E_DOCDESTTREE="" declare -x __E_EXEDESTTREE="" declare -x __E_INSDESTTREE="" declare -x ac_cv_c_undeclared_builtin_options="none needed" declare -x enable_year2038="no" declare -x gl_cv_compiler_check_decl_option="-Werror=implicit-function-declaration" SwitchGCC () { local highest=$(gcc-config --list-profiles --nocolor | cut -f 3 -d ' ' -s | grep -E 'x86_64-(pc|gentoo)-linux-(gnu|musl)-.*[0-9]$' | tail -n 1); if ! gcc-config --list-profiles --nocolor | grep -q -F "$highest *"; then local current; current=$(gcc -dumpversion); echo "major version change of gcc: $current -> $highest" | tee -a $taskfile.history; gcc-config --nocolor $highest; source_profile; add2backlog "sys-devel/libtool"; if grep -q '^LIBTOOL="rdlibtool"' /etc/portage/make.conf; then add2backlog "sys-devel/slibtool"; fi; add2backlog "%emerge --unmerge sys-devel/gcc:$(cut -f 1 -d '.' <<< $current)"; fi } declare -fx SwitchGCC __eapi6_src_install () { if [[ -f Makefile || -f GNUmakefile || -f makefile ]]; then emake DESTDIR="${D}" install; fi; einstalldocs } __eapi6_src_prepare () { if ___is_indexed_array_var PATCHES; then [[ ${#PATCHES[@]} -gt 0 ]] && eapply "${PATCHES[@]}"; else if [[ -n ${PATCHES} ]]; then eapply ${PATCHES}; fi; fi; eapply_user } __eapi7_ver_compare () { local va=${1} vb=${2} a an al as ar b bn bl bs br re LC_ALL=C; re="^([0-9]+(\.[0-9]+)*)([a-z]?)((_(alpha|beta|pre|rc|p)[0-9]*)*)(-r[0-9]+)?$"; [[ ${va} =~ ${re} ]] || die "${FUNCNAME}: invalid version: ${va}"; an=${BASH_REMATCH[1]}; al=${BASH_REMATCH[3]}; as=${BASH_REMATCH[4]}; ar=${BASH_REMATCH[7]}; [[ ${vb} =~ ${re} ]] || die "${FUNCNAME}: invalid version: ${vb}"; bn=${BASH_REMATCH[1]}; bl=${BASH_REMATCH[3]}; bs=${BASH_REMATCH[4]}; br=${BASH_REMATCH[7]}; __eapi7_ver_compare_int "${an%%.*}" "${bn%%.*}" || return; while [[ ${an} == *.* && ${bn} == *.* ]]; do an=${an#*.}; bn=${bn#*.}; a=${an%%.*}; b=${bn%%.*}; if [[ ${a} == 0* || ${b} == 0* ]]; then [[ ${a} =~ 0+$ ]] && a=${a%"${BASH_REMATCH[0]}"}; [[ ${b} =~ 0+$ ]] && b=${b%"${BASH_REMATCH[0]}"}; [[ ${a} > ${b} ]] && return 3; [[ ${a} < ${b} ]] && return 1; else __eapi7_ver_compare_int "${a}" "${b}" || return; fi; done; [[ ${an} == *.* ]] && return 3; [[ ${bn} == *.* ]] && return 1; [[ ${al} > ${bl} ]] && return 3; [[ ${al} < ${bl} ]] && return 1; as=${as#_}${as:+_}; bs=${bs#_}${bs:+_}; while [[ -n ${as} && -n ${bs} ]]; do a=${as%%_*}; b=${bs%%_*}; if [[ ${a%%[0-9]*} == "${b%%[0-9]*}" ]]; then __eapi7_ver_compare_int "${a##*[a-z]}" "${b##*[a-z]}" || return; else [[ ${a%%[0-9]*} == p ]] && return 3; [[ ${b%%[0-9]*} == p ]] && return 1; [[ ${a} > ${b} ]] && return 3 || return 1; fi; as=${as#*_}; bs=${bs#*_}; done; if [[ -n ${as} ]]; then [[ ${as} == p[_0-9]* ]] && return 3 || return 1; else if [[ -n ${bs} ]]; then [[ ${bs} == p[_0-9]* ]] && return 1 || return 3; fi; fi; __eapi7_ver_compare_int "${ar#-r}" "${br#-r}" || return; return 2 } __eapi7_ver_compare_int () { local a=$1 b=$2 d=$(( ${#1}-${#2} )); if [[ ${d} -gt 0 ]]; then printf -v b "%0${d}d%s" 0 "${b}"; else if [[ ${d} -lt 0 ]]; then printf -v a "%0$(( -d ))d%s" 0 "${a}"; fi; fi; [[ ${a} > ${b} ]] && return 3; [[ ${a} == "${b}" ]] } __eapi7_ver_parse_range () { local range=${1}; local max=${2}; [[ ${range} == [0-9]* ]] || die "${FUNCNAME}: range must start with a number"; start=${range%-*}; [[ ${range} == *-* ]] && end=${range#*-} || end=${start}; if [[ -n ${end} ]]; then [[ ${start} -le ${end} ]] || die "${FUNCNAME}: end of range must be >= start"; [[ ${end} -le ${max} ]] || end=${max}; else end=${max}; fi } __eapi7_ver_split () { local v=${1} LC_ALL=C; comp=(); local s c; while [[ -n ${v} ]]; do s=${v%%[a-zA-Z0-9]*}; v=${v:${#s}}; [[ ${v} == [0-9]* ]] && c=${v%%[^0-9]*} || c=${v%%[^a-zA-Z]*}; v=${v:${#c}}; comp+=("${s}" "${c}"); done } __eapi8_src_prepare () { local f; if ___is_indexed_array_var PATCHES; then [[ ${#PATCHES[@]} -gt 0 ]] && eapply -- "${PATCHES[@]}"; else if [[ -n ${PATCHES} ]]; then eapply -- ${PATCHES}; fi; fi; eapply_user } _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} } _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 } _pax_list_files () { local f cmd; cmd=$1; shift; for f in "$@"; do ${cmd} " ${f}"; done } add2backlog () { local bl=/var/tmp/tb/backlog.1st; if [[ $1 == '@preserved-rebuild' ]]; then sed -i -e "/@preserved-rebuild/d" $bl; sed -i -e "1 i\@preserved-rebuild" $bl; else if [[ $1 =~ ^@ || $1 =~ ^% ]]; then if [[ "$(tail -n 1 $bl)" != "$1" ]]; then echo "$1" >> $bl; fi; else if ! grep -q "^${1}$" $bl; then echo "$1" >> $bl; fi; fi; fi } declare -fx add2backlog checkEOL () { if [[ -f /var/tmp/tb/EOL || -f /var/tmp/tb/STOP ]]; then exit 42; fi } 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 columns=${COLUMNS:-0}; [[ ${columns} == 0 ]] && columns=$(set -- $( ( stty size < /dev/tty ) 2> /dev/null || echo 24 80); echo $2); (( columns > 0 )) || (( columns = 80 )); 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 if [[ -z ${applied} ]]; then einfo "${PORTAGE_COLOR_INFO}$(for ((column = 0; column < ${columns} - 3; column++)) do echo -n =; done)${PORTAGE_COLOR_NORMAL}"; einfo "Applying user patches from ${basedir} ..."; fi; eapply "${f}"; applied=1; fi; done < <(printf -- '%s\0' "${!_eapply_user_patches[@]}" | LC_ALL=C sort -z); fi; ${prev_shopt}; if [[ -n ${applied} ]]; then einfo "User patches applied."; einfo "${PORTAGE_COLOR_INFO}$(for ((column = 0; column < ${columns} - 3; column++)) do echo -n =; done)${PORTAGE_COLOR_NORMAL}"; fi } 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 ) } get_libdir () { local libdir_var="LIBDIR_${ABI}"; local libdir="lib"; [[ -n ${ABI} && -n ${!libdir_var} ]] && libdir=${!libdir_var}; echo "${libdir}" } 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 " 1>&2; die "in_iuse() called without a parameter"; fi; local liuse=(${IUSE_EFFECTIVE}); has "${use}" "${liuse[@]#[+-]}" } list-paxables () { file "$@" 2> /dev/null | grep -E 'ELF.*(executable|shared object)' | sed -e 's/: .*$//' } 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 } post_src_install () { ( if grep -E -q 'internal compiler error' "${WORKDIR}"/*/config.log &> /dev/null; then echo "${CATEGORY}/${PF}: Found ICE in config.log?!"; fi; if [[ -f "${S}"/meson.build ]] && ! grep -q "dev-util/meson" <<< "${BDEPEND}"; then echo "${CATEGORY}/${PF}: meson.build found but ebuild doesn't use meson?"; fi; if grep -r -q "dejagnu" "${S}" &> /dev/null && ! grep -q "dejagnu" <<< "${BDEPEND}"; then echo "${CATEGORY}/${PF}: Missing dejagnu tests?"; fi; if grep -r -q "test" "${S}/meson_options.txt" &> /dev/null && ! grep -q "test" <<< "${IUSE}"; then echo "${CATEGORY}/${PF}: Missing test option wiring for meson?"; fi; if grep -E -r -q -- "(disable|enable|with(out)?)-(unit)?test(s?)" configure.ac &> /dev/null && ! grep -q "test" <<< "${IUSE}"; then echo "${CATEGORY}/${PF}: Missing test option wiring for autoconf?"; fi; if grep -E -r -q -- "(disable|enable)-valgrind" configure.ac &> /dev/null && ! grep -q "valgrind" <<< "${IUSE}"; then echo "${CATEGORY}/${PF}: Missing valgrind option wiring for autoconf?"; fi; if grep -r -q "valgrind" "${S}/meson_options.txt" &> /dev/null && ! grep -q "valgrind" <<< "${IUSE}"; then echo "${CATEGORY}/${PF}: Missing valgrind option wiring for meson?"; fi; if grep -E -r -q -- "(disable|enable)-fuzz" configure.ac &> /dev/null && ! grep -q "fuzz" <<< "${EBUILD}"; then echo "${CATEGORY}/${PF}: Missing fuzz option wiring for autoconf?"; fi; if grep -r -q "fuzz" "${S}/meson_options.txt" &> /dev/null && ! grep -q "fuzz" <<< "${EBUILD}"; then echo "${CATEGORY}/${PF}: Missing fuzz option wiring for meson?"; fi ) &>> /var/tmp/sam.txt } source_profile () { set +u; source /etc/profile 2> /dev/null; set -u } declare -fx source_profile src_compile () { cp -p "${BROOT}"/usr/lib/pypy2.7/pypy-c-${PYPY_PV} pypy-c || die; cp -p "${BROOT}"/usr/lib/pypy2.7/include/${PYPY_PV}/* include/ || die; rm pypy/module/cpyext/include/_numpypy/numpy/README || die; mv pypy/module/cpyext/include/* include/ || die; mv pypy/module/cpyext/parse/*.h include/ || die; pax-mark m pypy-c; local soabi=$(./pypy-c - <<-EOF import sysconfig print sysconfig.get_config_var("SOABI") EOF ); [[ ${soabi#pypy-} == ${SLOT#*/} ]] || die "update subslot to ${soabi}"; einfo "Generating caches and CFFI modules ..."; if use full-stdlib; then ./pypy-c - <<-EOF || import lib2to3.pygram import lib2to3.patcomp lib2to3.patcomp.PatternCompiler() EOF die "Generation of Grammar and PatternGrammar pickles failed" cffi_targets=(pypy_util ssl audioop syslog pwdgrp resource); use gdbm && cffi_targets+=(gdbm); use ncurses && cffi_targets+=(curses); use sqlite && cffi_targets+=(sqlite3); use tk && cffi_targets+=(tkinter/tklib); local t; cd lib_pypy || die; for t in "${cffi_targets[@]}"; do ../pypy-c "_${t}_build.py" || die "Failed to build CFFI bindings for ${t}"; done; local expected_cksum=2d3acf18; local local_cksum=$(../pypy-c - <<-EOF import binascii import json from pypy_tools.build_cffi_imports import cffi_build_scripts as x print("%08x" % (binascii.crc32(json.dumps(x)),)) EOF ); if [[ ${local_cksum} != ${expected_cksum} ]]; then die "Please verify cffi_targets and update checksum to ${local_cksum}"; fi; find -name "_cffi_*.[co]" -delete || die; find -type d -empty -delete || die; fi } src_configure () { default } src_install () { local dest=/usr/lib/pypy2.7; einfo "Installing PyPy ..."; dosym pypy-c-${PYPY_PV} "${dest}/pypy-c"; insinto "${dest}"; insopts -p; if use full-stdlib; then doins -r include lib_pypy lib-python; for x in "${BROOT}"/usr/lib/pypy2.7/include/${PYPY_PV}/*; do dosym "${PYPY_PV}/${x##*/}" "${dest}/include/${x##*/}"; done; if ! use gdbm; then rm -r "${ED}${dest}"/lib_pypy/gdbm.py "${ED}${dest}"/lib-python/*2.7/test/test_gdbm.py || die; fi; if ! use sqlite; then rm -r "${ED}${dest}"/lib-python/*2.7/sqlite3 "${ED}${dest}"/lib_pypy/_sqlite3.py "${ED}${dest}"/lib-python/*2.7/test/test_sqlite.py || die; fi; if ! use tk; then rm -r "${ED}${dest}"/lib-python/*2.7/{idlelib,lib-tk} "${ED}${dest}"/lib_pypy/_tkinter "${ED}${dest}"/lib-python/*2.7/test/test_{tcl,tk,ttk*}.py || die; fi; else local lib_py_modules=(codecs.py copy_reg.py encodings genericpath.py linecache.py os.py pkgutil.py posixpath.py re.py runpy.py site.py sre_compile.py sre_constants.py sre_parse.py stat.py string.py sysconfig.py traceback.py warnings.py UserDict.py compileall.py getopt.py py_compile.py struct.py argparse.py atexit.py base64.py bdb.py bisect.py cmd.py code.py codeop.py collections.py colorsys.py contextlib.py copy.py ctypes dis.py fnmatch.py functools.py gettext.py hashlib.py heapq.py inspect.py io.py json keyword.py locale.py logging new.py opcode.py optparse.py pdb.py pickle.py platform.py pprint.py random.py repr.py shlex.py shutil.py StringIO.py subprocess.py tempfile.py textwrap.py threading.py tokenize.py weakref.py zipfile.py); local distutils_modules=(__init__.py errors.py sysconfig.py sysconfig_cpython.py sysconfig_pypy.py); local lib_pypy_modules=(_sysconfigdata.py cffi _ctypes _ffi.py _functools.py _sha.py _sha256.py _sha512.py); cd lib-python/2.7 || die; insinto "${dest}/lib-python/2.7"; doins -r "${lib_py_modules[@]}"; cd - > /dev/null || die; cd lib-python/2.7/distutils || die; insinto "${dest}/lib-python/2.7/distutils"; doins -r "${distutils_modules[@]}"; cd - > /dev/null || die; cd lib_pypy || die; insinto "${dest}/lib_pypy"; doins -r "${lib_pypy_modules[@]}"; cd - > /dev/null || die; fi; dosym ../lib/pypy2.7/pypy-c /usr/bin/pypy; dodoc README.rst; local -x PYTHON=${ED}${dest}/pypy-c-${PYPY_PV}; cp -p "${BROOT}${dest}/pypy-c-${PYPY_PV}" "${PYTHON}" || die; einfo "Byte-compiling Python standard library..."; "${PYTHON}" -m compileall -x 'bad_coding|badsyntax|make_ssl_data|lib2to3/tests/data' -q -f -d "${dest}" "${ED}/${dest}" || die; rm "${PYTHON}" || die } src_prepare () { local PATCHES=("${WORKDIR}/${PATCHSET}"); default } src_test () { local -x PYTHONDONTWRITEBYTECODE=; local -x COLUMNS=80; local ignored_tests=(--ignore=lib-python/2.7/test/test_urllibnet.py --ignore=lib-python/2.7/test/test_urllib2net.py --ignore=lib-python/2.7/test/test_zipfile64.py --ignore=lib-python/2.7/test/test_minidom.py --ignore=lib-python/2.7/test/test_xml_etree.py --ignore=lib-python/2.7/test/test_xml_etree_c.py); ./pypy-c ./pypy/test_all.py --pypy=./pypy-c -vv "${ignored_tests[@]}" lib-python || die } src_unpack () { default } ver_cut () { local range=${1}; local v=${2:-${PV}}; local start end; local -a comp; __eapi7_ver_split "${v}"; local max=$((${#comp[@]}/2)); __eapi7_ver_parse_range "${range}" "${max}"; local IFS=; if [[ ${start} -gt 0 ]]; then start=$(( start*2 - 1 )); fi; echo "${comp[*]:start:end*2-start}" } ver_rs () { local v; (( ${#} & 1 )) && v=${@: -1} || v=${PV}; local start end i; local -a comp; __eapi7_ver_split "${v}"; local max=$((${#comp[@]}/2 - 1)); while [[ ${#} -ge 2 ]]; do __eapi7_ver_parse_range "${1}" "${max}"; for ((i = start*2; i <= end*2; i+=2 )) do [[ ${i} -eq 0 && -z ${comp[i]} ]] && continue; comp[i]=${2}; done; shift 2; done; local IFS=; echo "${comp[*]}" } ver_test () { local va op vb; if [[ $# -eq 3 ]]; then va=${1}; shift; else va=${PVR}; fi; [[ $# -eq 2 ]] || die "${FUNCNAME}: bad number of arguments"; op=${1}; vb=${2}; case ${op} in -eq | -ne | -lt | -le | -gt | -ge) ;; *) die "${FUNCNAME}: invalid operator: ${op}" ;; esac; __eapi7_ver_compare "${va}" "${vb}"; test $? "${op}" 2 }