Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 334250 Details for
Bug 450062
=dev-python/simplejson-3.0.4 - Setup phase - Active version of CPython 3 is not supported by dev-python/simplejson-3.0.4
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
Environment
die.env (text/plain), 256.61 KB, created by
Gary E. Miller
on 2013-01-03 22:37:00 UTC
(
hide
)
Description:
Environment
Filename:
MIME Type:
Creator:
Gary E. Miller
Created:
2013-01-03 22:37:00 UTC
Size:
256.61 KB
patch
obsolete
>A=simplejson-3.0.4.tar.gz >ABI=amd64 >ACCEPT_LICENSE=MIT >ALSA_CARDS='ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci' >ALSA_PCM_PLUGINS='adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol' >ANT_HOME=/usr/share/ant >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' >ARCH=amd64 >BAD=$'\E[31;01m' >BASH=/bin/bash >BASHOPTS=cmdhist:expand_aliases:extdebug:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath >BASHPID=10518 >BASH_ALIASES=() >BASH_ARGC=([0]="1" [1]="0" [2]="0" [3]="0" [4]="1" [5]="1" [6]="0" [7]="1" [8]="1") >BASH_ARGV=([0]="Active version of CPython 3 is not supported by dev-python/simplejson-3.0.4" [1]="pkg_setup" [2]="pkg_setup" [3]="setup" [4]="setup") >BASH_CMDS=() >BASH_LINENO=([0]="839" [1]="427" [2]="326" [3]="93" [4]="196" [5]="226" [6]="952" [7]="717" [8]="0") >BASH_REMATCH=([0]="3.2") >BASH_SOURCE=([0]="/usr/lib64/portage/bin/isolated-functions.sh" [1]="/u1/portage/eclass/python.eclass" [2]="/u1/portage/eclass/python.eclass" [3]="/usr/lib64/portage/bin/ebuild.sh" [4]="/usr/lib64/portage/bin/ebuild.sh" [5]="/usr/lib64/portage/bin/phase-functions.sh" [6]="/usr/lib64/portage/bin/phase-functions.sh" [7]="/usr/lib64/portage/bin/phase-functions.sh" [8]="/usr/lib64/portage/bin/ebuild.sh") >BASH_VERSINFO=([0]="4" [1]="2" [2]="42" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") >BASH_VERSION='4.2.42(1)-release' >BOOTSTRAP_USE='cxx unicode multilib' >BRACKET=$'\E[34;01m' >BUILD_PREFIX=/tmp/portage >CALLIGRA_FEATURES='kexi words flow plan sheets stage tables krita karbon braindump' >CAMERAS=ptp2 >CATEGORY=dev-python >CBUILD=x86_64-pc-linux-gnu >CCACHE_DISABLE=1 >CFLAGS='-march=amdfam10 -O2 -pipe -g' >CFLAGS_amd64=-m64 >CFLAGS_x32=-mx32 >CFLAGS_x86=-m32 >CG_COMPILER_EXE=/opt/bin/cgc >CG_INC_PATH=/opt/nvidia-cg-toolkit/include >CG_LIB_PATH=/opt/nvidia-cg-toolkit/lib64:/opt/nvidia-cg-toolkit/lib32 >CHOST=x86_64-pc-linux-gnu >CHOST_amd64=x86_64-pc-linux-gnu >CHOST_default=x86_64-pc-linux-gnu >CHOST_x32=x86_64-pc-linux-gnux32 >CHOST_x86=i686-pc-linux-gnu >COLLECTD_PLUGINS='df interface irq load memory rrdtool swap syslog' >COLORTERM=xfce4-terminal >COLS=80 >COLUMNS=80 >CTARGET_default=x86_64-pc-linux-gnu >CVS_RSH=ssh >CXXFLAGS='-march=amdfam10 -O2 -pipe -g' >D=/tmp/portage/dev-python/simplejson-3.0.4/image/ >DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-GQjuu0fgqz,guid=7440297610a1de31676c214650e4751f >DCCC_PATH=/usr/lib64/distcc/bin >DEFAULT_ABI=amd64 >DEFINED_PHASES=' compile install postinst postrm prepare setup test' >DEPEND='|| ( =dev-lang/python-3.3* =dev-lang/python-2* )' >DESCRIPTION='Simple, fast, extensible JSON encoder/decoder for Python' >DESTTREE=/usr >DIROPTIONS=-m0755 >DIRSTACK=() >DISPLAY=:0.1 >DISTCC_LOG=/var/log/distcc >DISTCC_VERBOSE=1 >DISTDIR=/tmp/portage/dev-python/simplejson-3.0.4/distdir >EAPI=5 >EBUILD=/u1/portage/dev-python/simplejson/simplejson-3.0.4.ebuild >EBUILD_MASTER_PID=10518 >EBUILD_PHASE=setup >EBUILD_PHASE_FUNC=pkg_setup >EBUILD_SH_ARGS=setup >ECLASSDIR=/u1/portage/eclass >ECLASS_DEPTH=0 >ED=/tmp/portage/dev-python/simplejson-3.0.4/image/ >EDITOR=/usr/bin/vim >ELIBC=glibc >EMERGE_FROM=ebuild >ENDCOL=$'\E[A\E[72C' >EPREFIX= >EROOT=/ >EUID=0 >EXEOPTIONS=-m0755 >EXINIT='syntax off' >FCFLAGS='-O2 -pipe' >FEATURES='assume-digests binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch xattr' >FETCHCOMMAND_SSH='bash -c "x=\${2#ssh://} ; host=\${x%%/*} ; port=\${host##*:} ; host=\${host%:*} ; [[ \${host} = \${port} ]] && port=22 ; exec rsync --rsh=\"ssh -p\${port}\" -avP \"\${host}:/\${x#*/}\" \"\$1\"" rsync "${DISTDIR}/${FILE}" "${URI}"' >FFLAGS='-O2 -pipe' >FILESDIR=/u1/portage/dev-python/simplejson/files >FLTK_DOCDIR=/usr/share/doc/fltk-1.3.2/html >FUNCNAME=([0]="die" [1]="_python_calculate_PYTHON_ABIS" [2]="python_pkg_setup" [3]="pkg_setup" [4]="__qa_call" [5]="__ebuild_phase" [6]="__dyn_setup" [7]="__ebuild_main" [8]="main") >GCC_SPECS= >GOOD=$'\E[32;01m' >GPG_AGENT_INFO=/tmp/gpg-Dj0G71/S.gpg-agent:4560:1 >GPSD_PROTOCOLS='ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx' >GROUPS=() >GRUB_PLATFORMS= >GSETTINGS_BACKEND=dconf >GUILE_LOAD_PATH=/usr/share/guile/1.8 >HDEPEND= >HG=/usr/bin/hg >HILITE=$'\E[36m' >HOME=/tmp/portage/dev-python/simplejson-3.0.4/homedir >HOMEPAGE='http://undefined.org/python/#simplejson http://pypi.python.org/pypi/simplejson' >HOSTNAME=kong >HOSTTYPE=x86_64 >HUSHLOGIN=FALSE >IFS=$' \t\n' >INCLUDE_SERVER_PORT=/tmp/distcc-pump.xsHmD1/socket >INHERITED=' multilib toolchain-funcs python distutils' >INPUT_DEVICES='keyboard mouse wacom evdev' >INSDESTTREE= >INSOPTIONS=-m0644 >IUSE= >IUSE_EFFECTIVE='alpha amd64 amd64-fbsd amd64-linux arm arm-linux elibc_AIX elibc_Cygwin elibc_Darwin elibc_FreeBSD elibc_HPUX elibc_Interix elibc_NetBSD elibc_OpenBSD elibc_SunOS elibc_Winnt elibc_glibc elibc_mintlib elibc_uclibc hppa hppa-hpux ia64 ia64-hpux ia64-linux kernel_AIX kernel_Cygwin kernel_Darwin kernel_FreeBSD kernel_HPUX kernel_Interix kernel_NetBSD kernel_OpenBSD kernel_SunOS kernel_Winnt kernel_freemint kernel_linux m68k m68k-mint mips ppc ppc-aix ppc-macos ppc-openbsd ppc64 ppc64-linux prefix s390 sh sparc sparc-fbsd sparc-solaris sparc64-freebsd sparc64-solaris userland_BSD userland_GNU x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt' >IUSE_IMPLICIT=prefix >JAVAC=/etc/java-config-2/current-system-vm/bin/javac >JAVA_HOME=/etc/java-config-2/current-system-vm >JDK_HOME=/etc/java-config-2/current-system-vm >JYTHON_SYSTEM_CACHEDIR=1 >KERNEL=linux >KERNEL_ABI=amd64 >KEYWORDS='~amd64 ~arm ~ppc ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos' >LADSPA_PATH=/usr/lib64/ladspa >LANG=en_US.utf8 >LAST_E_CMD=eerror >LCD_DEVICES='bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text' >LDFLAGS='-Wl,-O1 -Wl,--as-needed' >LDFLAGS_amd64='-m elf_x86_64' >LDFLAGS_x32='-m elf32_x86_64' >LDFLAGS_x86='-m elf_i386' >LD_LIBRARY_PATH=/usr/local/mysql/lib/mysql:/usr/local/apache2/lib >LESS='-R -M --shift 5' >LESSOPEN='|lesspipe %s' >LIBDIR_amd64=lib64 >LIBDIR_amd64_fbsd=lib64 >LIBDIR_default=lib >LIBDIR_n32=lib32 >LIBDIR_n64=lib64 >LIBDIR_o32=lib >LIBDIR_ppc=lib32 >LIBDIR_ppc64=lib64 >LIBDIR_s390=lib32 >LIBDIR_s390x=lib64 >LIBDIR_sparc32=lib32 >LIBDIR_sparc64=lib64 >LIBDIR_x32=libx32 >LIBDIR_x86=lib32 >LIBDIR_x86_fbsd=lib32 >LIBGL_DEBUG=verbose >LIBOPTIONS=-m0644 >LIBREOFFICE_EXTENSIONS='presenter-console presenter-minimizer nlpsolver pdfimport' >LIBXCB_ALLOW_SLOPPY_LOCK=1 >LICENSE=MIT >LINGUAS='en en_US' >LOGNAME=root >LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.pdf=00;32:*.ps=00;32:*.txt=00;32:*.patch=00;32:*.diff=00;32:*.log=00;32:*.tex=00;32:*.doc=00;32:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:' >MACHTYPE=x86_64-pc-linux-gnu >MAIL=/var/mail/root >MAKE_OPTS=-j3 >MALLOC_CHECK_=1 >MERGE_TYPE=source >MOPREFIX=simplejson >MOZ_GLX_IGNORE_BLACKLIST=1 >MULTILIB_ABIS='amd64 x86' >MULTILIB_STRICT_DENY='64-bit.*shared object' >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' >MULTILIB_STRICT_EXEMPT='(perl5|gcc|gcc-lib|binutils|eclipse-3|debug|portage|udev)' >NETBEANS='apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml' >NORMAL=$'\E[0m' >OLDIFS=$' \t\n' >OLDPWD=/root >OPENGL_PROFILE=xorg-x11 >OPTERR=1 >OPTIND=1 >OSTYPE=linux-gnu >P=simplejson-3.0.4 >PAGER=/usr/bin/less >PARINIT='rTbgqR B=.,?_A_a Q=_s>|' >PATH=/usr/lib64/portage/bin/ebuild-helpers:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.3:/opt/nvidia-cg-toolkit/bin:/usr/local/mysql/bin:/usr/local/mysql/libexec:/usr/local/apache2/bin:/etc/ssl/misc:/usr/games/bin:. >PDEPEND= >PF=simplejson-3.0.4 >PHP_TARGETS=php5-3 >PIPESTATUS=([0]="0") >PKGDIR=/usr/portage/packages >PKGUSE= >PKG_CONFIG_PATH=/usr/local/lib/pkgconfig >PKG_LOGDIR=/tmp/portage/dev-python/simplejson-3.0.4/temp/logging >PKG_TMPDIR=/tmp/portage/._unmerge_ >PM_EBUILD_HOOK_DIR=/etc/portage/env >PN=simplejson >PORTAGE_ACTUAL_DISTDIR=/u1/portage/distfiles >PORTAGE_ARCHLIST='ppc sparc64-freebsd ppc-openbsd x86-openbsd ppc64 x86-winnt x86-fbsd ppc-aix alpha arm x86-freebsd s390 amd64 arm-linux x86-macos x64-openbsd ia64-hpux hppa x86-netbsd ppc64-linux x86-cygwin amd64-linux ia64-linux x86 sparc-solaris x64-freebsd sparc64-solaris x86-linux x64-macos sparc m68k-mint ia64 mips ppc-macos x86-interix hppa-hpux amd64-fbsd x64-solaris m68k sh x86-solaris sparc-fbsd' >PORTAGE_BASHRC=/etc/portage/bashrc >PORTAGE_BASHRCS_SOURCED=1 >PORTAGE_BIN_PATH=/usr/lib64/portage/bin >PORTAGE_BUILDDIR=/tmp/portage/dev-python/simplejson-3.0.4 >PORTAGE_BUILD_GROUP=root >PORTAGE_BUILD_USER=root >PORTAGE_BZIP2_COMMAND=bzip2 >PORTAGE_COLORMAP=$'GOOD=$\'\E[32;01m\'\nWARN=$\'\E[33;01m\'\nBAD=$\'\E[31;01m\'\nHILITE=$\'\E[36m\'\nBRACKET=$\'\E[34;01m\'\nNORMAL=$\'\E[0m\'' >PORTAGE_COMPRESS_EXCLUDE_SUFFIXES='css gif htm[l]? jp[e]?g js pdf png' >PORTAGE_CONFIGROOT=/ >PORTAGE_DEBUG=0 >PORTAGE_DEPCACHEDIR=/var/cache/edb/dep >PORTAGE_DOCOMPRESS=([0]="/usr/share/doc" [1]="/usr/share/info" [2]="/usr/share/man") >PORTAGE_DOCOMPRESS_SKIP=([0]="/usr/share/doc/simplejson-3.0.4/html") >PORTAGE_FEATURES='assume-digests binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch xattr' >PORTAGE_GID=250 >PORTAGE_INST_GID=0 >PORTAGE_INST_UID=0 >PORTAGE_IPC_DAEMON=1 >PORTAGE_IUSE='^(alpha|amd64|amd64\-fbsd|amd64\-linux|arm|arm\-linux|elibc\_AIX|elibc\_Cygwin|elibc\_Darwin|elibc\_FreeBSD|elibc\_HPUX|elibc\_Interix|elibc\_NetBSD|elibc\_OpenBSD|elibc\_SunOS|elibc\_Winnt|elibc\_glibc|elibc\_mintlib|elibc\_uclibc|hppa|hppa\-hpux|ia64|ia64\-hpux|ia64\-linux|kernel\_AIX|kernel\_Cygwin|kernel\_Darwin|kernel\_FreeBSD|kernel\_HPUX|kernel\_Interix|kernel\_NetBSD|kernel\_OpenBSD|kernel\_SunOS|kernel\_Winnt|kernel\_freemint|kernel\_linux|m68k|m68k\-mint|mips|ppc|ppc64|ppc64\-linux|ppc\-aix|ppc\-macos|ppc\-openbsd|prefix|s390|sh|sparc|sparc64\-freebsd|sparc64\-solaris|sparc\-fbsd|sparc\-solaris|userland\_BSD|userland\_GNU|x64\-freebsd|x64\-macos|x64\-openbsd|x64\-solaris|x86|x86\-cygwin|x86\-fbsd|x86\-freebsd|x86\-interix|x86\-linux|x86\-macos|x86\-netbsd|x86\-openbsd|x86\-solaris|x86\-winnt)$' >PORTAGE_LOG_FILE=/tmp/portage/dev-python/simplejson-3.0.4/temp/build.log >PORTAGE_MUTABLE_FILTERED_VARS='AA HOSTNAME' >PORTAGE_NICENESS=0 >PORTAGE_OVERRIDE_EPREFIX= >PORTAGE_PYM_PATH=/usr/lib64/portage/pym >PORTAGE_PYTHON=/usr/bin/python2.7 >PORTAGE_READONLY_METADATA=$'DEFINED_PHASES DEPEND DESCRIPTION\n\tEAPI HDEPEND HOMEPAGE INHERITED IUSE REQUIRED_USE KEYWORDS LICENSE\n\tPDEPEND PROVIDE RDEPEND REPOSITORY RESTRICT SLOT SRC_URI' >PORTAGE_READONLY_VARS=$'D EBUILD EBUILD_PHASE EBUILD_PHASE_FUNC \tEBUILD_SH_ARGS ECLASSDIR EMERGE_FROM FILESDIR MERGE_TYPE \tPM_EBUILD_HOOK_DIR \tPORTAGE_ACTUAL_DISTDIR PORTAGE_ARCHLIST PORTAGE_BASHRC \tPORTAGE_BINPKG_FILE PORTAGE_BINPKG_TAR_OPTS PORTAGE_BINPKG_TMPFILE \tPORTAGE_BIN_PATH PORTAGE_BUILDDIR PORTAGE_BUILD_GROUP \tPORTAGE_BUILD_USER PORTAGE_BUNZIP2_COMMAND \tPORTAGE_BZIP2_COMMAND PORTAGE_COLORMAP PORTAGE_CONFIGROOT \tPORTAGE_DEBUG PORTAGE_DEPCACHEDIR PORTAGE_EBUILD_EXIT_FILE \tPORTAGE_GID PORTAGE_GRPNAME PORTAGE_INST_GID PORTAGE_INST_UID \tPORTAGE_IPC_DAEMON PORTAGE_IUSE PORTAGE_LOG_FILE \tPORTAGE_MUTABLE_FILTERED_VARS PORTAGE_OVERRIDE_EPREFIX \tPORTAGE_PYM_PATH PORTAGE_PYTHON \tPORTAGE_READONLY_METADATA PORTAGE_READONLY_VARS \tPORTAGE_REPO_NAME PORTAGE_RESTRICT \tPORTAGE_SAVED_READONLY_VARS PORTAGE_SIGPIPE_STATUS \tPORTAGE_TMPDIR PORTAGE_UPDATE_ENV PORTAGE_USERNAME \tPORTAGE_VERBOSE PORTAGE_WORKDIR_MODE PORTDIR PORTDIR_OVERLAY \tPROFILE_PATHS REPLACING_VERSIONS REPLACED_BY_VERSION T WORKDIR \t__PORTAGE_HELPER __PORTAGE_TEST_HARDLINK_LOCKS' >PORTAGE_REPO_NAME=gentoo >PORTAGE_RESTRICT= >PORTAGE_SAVED_READONLY_VARS='A CATEGORY P PF PN PR PV PVR' >PORTAGE_SIGPIPE_STATUS=141 >PORTAGE_TMPDIR=/tmp >PORTAGE_WORKDIR_MODE=0700 >PORTDIR=/u1/portage >PORTDIR_OVERLAY= >PPID=10334 >PR=r0 >PRELINK_PATH_MASK=/usr/lib64/libfreebl3.so:/usr/lib64/libnssdbm3.so:/usr/lib64/libsoftokn3.so:/opt/bin/skype >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' >PROFILE_PATHS=$'/u1/portage/profiles/base\n/u1/portage/profiles/default/linux\n/u1/portage/profiles/arch/base\n/u1/portage/profiles/features/multilib\n/u1/portage/profiles/features/multilib/lib32\n/u1/portage/profiles/arch/amd64\n/u1/portage/profiles/default/linux/amd64\n/u1/portage/profiles/releases\n/u1/portage/profiles/releases/10.0\n/u1/portage/profiles/default/linux/amd64/10.0\n/u1/portage/profiles/targets/desktop\n/u1/portage/profiles/default/linux/amd64/10.0/desktop\n/etc/portage/profile' >PROPERTIES= >PROVIDE= >PS4='+ ' >PV=3.0.4 >PVR=3.0.4 >PWD=/tmp/portage/dev-python/simplejson-3.0.4 >PYTHONDONTWRITEBYTECODE=1 >PYTHONPATH=/usr/lib/portage/pym:/usr/local/lib64/python2.7/site-packages >PYTHON_ABI=3.3 >PYTHON_CFLAGS=([0]="2.* + -fno-strict-aliasing") >PYTHON_COLORS=0 >PYTHON_DEPEND='2 3:3.3' >PYTHON_SINGLE_TARGET=python2_7 >PYTHON_TARGETS='python2_7 python3_2' >PYTHON_TEST_VERBOSITY=1 >QT_GRAPHICSSYSTEM=raster >QT_PLUGIN_PATH=/usr/lib64/kde4/plugins >RC_DEFAULT_INDENT=2 >RC_DOT_PATTERN= >RC_ENDCOL=yes >RC_INDENTATION= >RDEPEND='|| ( =dev-lang/python-3.3* =dev-lang/python-2* )' >REPLACING_VERSIONS=3.0.0 >REQUIRED_USE= >RESTRICT= >RESTRICT_PYTHON_ABIS='3.1 3.2' >RESUMECOMMAND_SSH='bash -c "x=\${2#ssh://} ; host=\${x%%/*} ; port=\${host##*:} ; host=\${host%:*} ; [[ \${host} = \${port} ]] && port=22 ; exec rsync --rsh=\"ssh -p\${port}\" -avP \"\${host}:/\${x#*/}\" \"\$1\"" rsync "${DISTDIR}/${FILE}" "${URI}"' >ROOT=/ >ROOTPATH=/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.3:/opt/nvidia-cg-toolkit/bin:/usr/local/mysql/bin:/usr/local/mysql/libexec:/usr/local/apache2/bin:/etc/ssl/misc:/usr/games/bin:. >RPMDIR=/u1/portage/rpm >RUBYOPT=-rauto_gem >RUBY_TARGETS='ruby18 ruby19' >S=/tmp/portage/dev-python/simplejson-3.0.4/work/simplejson-3.0.4 >SANDBOX_LOG=dev-python_-_simplejson-3.0.4 >SANDBOX_ON=0 >SANDBOX_READ=/:/tmp >SANDBOX_WRITE=/tmp:/var/cache/jython >SANE_BACKENDS='gphoto2 abaton agfafocus apple artec artec_eplus48u as6e avision bh canon canon630u canon_dr canon_pp cardscan coolscan coolscan2 coolscan3 dc25 dc210 dc240 dell1600n_net dmc epjitsu epson epson2 fujitsu genesys gt68xx hp hp3500 hp3900 hp4200 hp5400 hp5590 hpsj5s hpljm1005 hs2p ibm kodak kodakaio kvs1025 kvs20xx leo lexmark ma1509 magicolor matsushita microtek microtek2 mustek mustek_pp mustek_usb nec net niash p5 pie pixma plustek plustek_pp qcam ricoh rts8891 s9036 sceptre sharp sm3600 sm3840 snapscan sp15c st400 stv680 tamarack teco1 teco2 teco3 test u12 umax umax_pp umax1220u xerox_mfp' >SESSION_MANAGER=local/kong:@/tmp/.ICE-unix/4561,unix/kong:/tmp/.ICE-unix/4561,inet6/kong:55602,inet/kong:49065 >SGML_CATALOG_FILES=/etc/sgml/sgml-lite.cat:/etc/sgml/sgml-docbook-4.0.cat:/etc/sgml/sgml-docbook.cat:/etc/sgml/xml-docbook-4.1.2.cat:/etc/sgml/sgml-docbook-3.1.cat:/etc/sgml/gentoo-guide.cat:/etc/sgml/sgml-docbook-4.1.cat:/etc/sgml/xml-docbook-4.3.cat:/etc/sgml/sgml-docbook-4.5.cat:/etc/sgml/xml-simple-docbook-4.1.2.4.cat:/etc/sgml/openjade-1.3.2.cat:/etc/sgml/xml-simple-docbook-1.0.cat:/etc/sgml/xml-docbook-4.5.cat:/etc/sgml/sgml-docbook-4.2.cat:/etc/sgml/sgml-docbook-4.4.cat:/etc/sgml/xml-docbook-4.2.cat:/etc/sgml/sgml-ent.cat:/etc/sgml/sgml-docbook-3.0.cat:/etc/sgml/dsssl-docbook-stylesheets.cat:/etc/sgml/xml-docbook-4.4.cat >SHELL=/bin/bash >SHELLOPTS=braceexpand:hashall:interactive-comments >SHLVL=7 >SLOT=0 >SRC_URI=mirror://pypi/s/simplejson/simplejson-3.0.4.tar.gz >SSH_AGENT_PID=4558 >SSH_AUTH_SOCK=/tmp/ssh-Efz0sk3jIBKo/agent.4557 >SUPPORT_PYTHON_ABIS=1 >SYMLINK_LIB=yes >T=/tmp/portage/dev-python/simplejson-3.0.4/temp >TEMP=/tmp/portage/dev-python/simplejson-3.0.4/temp >TERM=xterm >TMP=/tmp/portage/dev-python/simplejson-3.0.4/temp >TMPDIR=/tmp/portage/dev-python/simplejson-3.0.4/temp >TZ=PST8PDT >UID=0 >USE='amd64 elibc_glibc kernel_linux userland_GNU' >USERLAND=GNU >USE_EXPAND='ALSA_CARDS ALSA_PCM_PLUGINS APACHE2_MODULES APACHE2_MPMS CALLIGRA_FEATURES CAMERAS COLLECTD_PLUGINS CROSSCOMPILE_OPTS CURL_SSL DRACUT_MODULES DVB_CARDS ELIBC ENLIGHTENMENT_MODULES FCDSL_CARDS FFTOOLS FOO2ZJS_DEVICES FRITZCAPI_CARDS GPSD_PROTOCOLS GRUB_PLATFORMS INPUT_DEVICES KERNEL LCD_DEVICES LIBREOFFICE_EXTENSIONS LINGUAS LIRC_DEVICES MISDN_CARDS NETBEANS_MODULES NGINX_MODULES_HTTP NGINX_MODULES_MAIL OFED_DRIVERS OPENMPI_FABRICS OPENMPI_OFED_FEATURES OPENMPI_RM PHP_TARGETS PYTHON_SINGLE_TARGET PYTHON_TARGETS QEMU_SOFTMMU_TARGETS QEMU_USER_TARGETS RUBY_TARGETS SANE_BACKENDS USERLAND VIDEO_CARDS VOICEMAIL_STORAGE XFCE_PLUGINS XTABLES_ADDONS' >USE_EXPAND_IMPLICIT='ARCH ELIBC KERNEL USERLAND' >USE_EXPAND_UNPREFIXED=ARCH >USE_EXPAND_VALUES_ARCH='alpha amd64 amd64-fbsd amd64-linux arm arm-linux hppa hppa-hpux ia64 ia64-hpux ia64-linux m68k m68k-mint mips ppc ppc64 ppc64-linux ppc-aix ppc-macos ppc-openbsd s390 sh sparc sparc64-freebsd sparc64-solaris sparc-fbsd sparc-solaris x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt' >USE_EXPAND_VALUES_ELIBC='AIX Cygwin Darwin FreeBSD glibc HPUX Interix mintlib NetBSD OpenBSD SunOS uclibc Winnt' >USE_EXPAND_VALUES_KERNEL='AIX Cygwin Darwin FreeBSD freemint HPUX Interix linux NetBSD OpenBSD SunOS Winnt' >USE_EXPAND_VALUES_USERLAND='BSD GNU' >VBOX_APP_HOME=/usr/lib64/virtualbox >VIDEO_CARDS='vesa nouveau radeon' >WARN=$'\E[33;01m' >WINDOWID=77594629 >WINDOWPATH=7 >WORKDIR=/tmp/portage/dev-python/simplejson-3.0.4/work >XARGS='xargs -r' >XAUTHORITY=/root/.Xauthority >XDG_CONFIG_DIRS=/etc/xdg >XDG_DATA_DIRS=/usr/local/share:/usr/share:/usr/share/gdm >XDG_SESSION_COOKIE=bc0bfd054aa15bc9e83f515200069dc9-1357149440.431251-898173449 >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' >_=']' >_CPYTHON2_GLOBALLY_SUPPORTED_ABIS=([0]="2.4" [1]="2.5" [2]="2.6" [3]="2.7") >_CPYTHON3_GLOBALLY_SUPPORTED_ABIS=([0]="3.1" [1]="3.2" [2]="3.3") >_E_DOCDESTTREE_= >_E_EXEDESTTREE_= >_JYTHON_GLOBALLY_SUPPORTED_ABIS=([0]="2.5-jython") >_PYPY_GLOBALLY_SUPPORTED_ABIS=([0]="2.7-pypy-1.7" [1]="2.7-pypy-1.8" [2]="2.7-pypy-1.9" [3]="2.7-pypy-2.0") >_PYTHON_ABI_EXTRACTION_COMMAND=$'import platform\nimport sys\nsys.stdout.write(".".join(str(x) for x in sys.version_info[:2]))\nif platform.system()[:4] == "Java":\n\tsys.stdout.write("-jython")\nelif hasattr(platform, "python_implementation") and platform.python_implementation() == "PyPy":\n\tsys.stdout.write("-pypy-" + ".".join(str(x) for x in sys.pypy_version_info[:2]))' >_PYTHON_ABI_PATTERN_REGEX='([[:alnum:]]|\.|-|\*|\[|\])+' >_PYTHON_ECLASS_INHERITED=1 >_PYTHON_GLOBALLY_SUPPORTED_ABIS=([0]="2.4" [1]="2.5" [2]="2.6" [3]="2.7" [4]="3.1" [5]="3.2" [6]="3.3" [7]="2.5-jython" [8]="2.7-pypy-1.7" [9]="2.7-pypy-1.8" [10]="2.7-pypy-1.9" [11]="2.7-pypy-2.0") >_PYTHON_SHEBANG_BASE_PART_REGEX='^#![[:space:]]*([^[:space:]]*/usr/bin/env[[:space:]]+)?([^[:space:]]*/)?(jython|pypy-c|python)' >_RC_GET_KV_CACHE= >___ECLASS_ONCE_MULTILIB='recur -_+^+_- spank' >___ECLASS_ONCE_TOOLCHAIN_FUNCS='recur -_+^+_- spank' >args= >filespacing=13 >j=1 >lineno=427 >linespacing=3 >main_index=8 >n=0 >phase_str=' (setup phase)' >portdir_repo_name=gentoo >python=die >python2_version=2.7 >python3_version=3.2 >python_version=2.7 >shopts=$'autocd \toff\ncdable_vars \toff\ncdspell \toff\ncheckhash \toff\ncheckjobs \toff\ncheckwinsize \toff\ncmdhist \ton\ncompat31 \toff\ncompat32 \toff\ncompat40 \toff\ncompat41 \toff\ndirexpand \toff\ndirspell \toff\ndotglob \toff\nexecfail \toff\nexpand_aliases \ton\nextdebug \ton\nextglob \toff\nextquote \ton\nfailglob \toff\nforce_fignore \ton\nglobstar \toff\ngnu_errfmt \toff\nhistappend \toff\nhistreedit \toff\nhistverify \toff\nhostcomplete \ton\nhuponexit \toff\ninteractive_comments\ton\nlastpipe \toff\nlithist \toff\nlogin_shell \toff\nmailwarn \toff\nno_empty_cmd_completion\toff\nnocaseglob \toff\nnocasematch \toff\nnullglob \toff\nprogcomp \ton\npromptvars \ton\nrestricted_shell\toff\nshift_verbose \toff\nsourcepath \ton\nxpg_echo \toff' >sourcefile=python.eclass >support_python_major_version=1 >EXPORT_FUNCTIONS () >{ > if [ -z "$ECLASS" ]; then > die "EXPORT_FUNCTIONS without a defined ECLASS"; > fi; > eval $__export_funcs_var+=\" $*\" >} >KV_major () >{ > [[ -z $1 ]] && return 1; > local KV=$@; > echo "${KV%%.*}" >} >KV_micro () >{ > [[ -z $1 ]] && return 1; > local KV=$@; > KV=${KV#*.*.}; > echo "${KV%%[^[:digit:]]*}" >} >KV_minor () >{ > [[ -z $1 ]] && return 1; > local KV=$@; > KV=${KV#*.}; > echo "${KV%%.*}" >} >KV_to_int () >{ > [[ -z $1 ]] && return 1; > local KV_MAJOR=$(KV_major "$1"); > local KV_MINOR=$(KV_minor "$1"); > local KV_MICRO=$(KV_micro "$1"); > local KV_int=$(( KV_MAJOR * 65536 + KV_MINOR * 256 + KV_MICRO )); > if [[ ${KV_int} -ge 131584 ]]; then > echo "${KV_int}"; > return 0; > fi; > return 1 >} >PYTHON () >{ > _python_check_python_pkg_setup_execution; > local ABI_output="0" absolute_path_output="0" final_ABI="0" PYTHON_ABI="${PYTHON_ABI}" python_interpreter python2="0" python3="0"; > while (($#)); do > case "$1" in > -2) > python2="1" > ;; > -3) > python3="1" > ;; > --ABI) > ABI_output="1" > ;; > -a | --absolute-path) > absolute_path_output="1" > ;; > -f | --final-ABI) > final_ABI="1" > ;; > --) > shift; > break > ;; > -*) > die "${FUNCNAME}(): Unrecognized option '$1'" > ;; > *) > break > ;; > esac; > shift; > done; > if [[ "${ABI_output}" == "1" && "${absolute_path_output}" == "1" ]]; then > die "${FUNCNAME}(): '--ABI' and '--absolute-path' options cannot be specified simultaneously"; > fi; > if [[ "$((${python2} + ${python3} + ${final_ABI}))" -gt 1 ]]; then > die "${FUNCNAME}(): '-2', '-3' or '--final-ABI' options cannot be specified simultaneously"; > fi; > if [[ "$#" -eq 0 ]]; then > if [[ "${final_ABI}" == "1" ]]; then > if ! _python_package_supporting_installation_for_multiple_python_abis; then > die "${FUNCNAME}(): '--final-ABI' option cannot be used in ebuilds of packages not supporting installation for multiple Python ABIs"; > fi; > _python_calculate_PYTHON_ABIS; > PYTHON_ABI="${PYTHON_ABIS##* }"; > else > if [[ "${python2}" == "1" ]]; then > PYTHON_ABI="$(ROOT="/" eselect python show --python2 --ABI)"; > if [[ -z "${PYTHON_ABI}" ]]; then > die "${FUNCNAME}(): Active version of CPython 2 not set"; > else > if [[ "${PYTHON_ABI}" != "2."* ]]; then > die "${FUNCNAME}(): Internal error in \`eselect python show --python2\`"; > fi; > fi; > else > if [[ "${python3}" == "1" ]]; then > PYTHON_ABI="$(ROOT="/" eselect python show --python3 --ABI)"; > if [[ -z "${PYTHON_ABI}" ]]; then > die "${FUNCNAME}(): Active version of CPython 3 not set"; > else > if [[ "${PYTHON_ABI}" != "3."* ]]; then > die "${FUNCNAME}(): Internal error in \`eselect python show --python3\`"; > fi; > fi; > else > if _python_package_supporting_installation_for_multiple_python_abis; then > if ! _python_abi-specific_local_scope; then > die "${FUNCNAME}() should be used in ABI-specific local scope"; > fi; > else > PYTHON_ABI="$("${EPREFIX}/usr/bin/python" -c "${_PYTHON_ABI_EXTRACTION_COMMAND}")"; > if [[ -z "${PYTHON_ABI}" ]]; then > die "${FUNCNAME}(): Failure of extraction of locally active version of Python"; > fi; > fi; > fi; > fi; > fi; > else > if [[ "$#" -eq 1 ]]; then > if [[ "${final_ABI}" == "1" ]]; then > die "${FUNCNAME}(): '--final-ABI' option and Python ABI cannot be specified simultaneously"; > fi; > if [[ "${python2}" == "1" ]]; then > die "${FUNCNAME}(): '-2' option and Python ABI cannot be specified simultaneously"; > fi; > if [[ "${python3}" == "1" ]]; then > die "${FUNCNAME}(): '-3' option and Python ABI cannot be specified simultaneously"; > fi; > PYTHON_ABI="$1"; > else > die "${FUNCNAME}(): Invalid usage"; > fi; > fi; > if [[ "${ABI_output}" == "1" ]]; then > echo -n "${PYTHON_ABI}"; > return; > else > if [[ "$(_python_get_implementation "${PYTHON_ABI}")" == "CPython" ]]; then > python_interpreter="python${PYTHON_ABI}"; > else > if [[ "$(_python_get_implementation "${PYTHON_ABI}")" == "Jython" ]]; then > python_interpreter="jython${PYTHON_ABI%-jython}"; > else > if [[ "$(_python_get_implementation "${PYTHON_ABI}")" == "PyPy" ]]; then > python_interpreter="pypy-c${PYTHON_ABI#*-pypy-}"; > fi; > fi; > fi; > if [[ "${absolute_path_output}" == "1" ]]; then > echo -n "${EPREFIX}/usr/bin/${python_interpreter}"; > else > echo -n "${python_interpreter}"; > fi; > fi; > if [[ -n "${ABI}" && "${ABI}" != "${DEFAULT_ABI}" && "${DEFAULT_ABI}" != "default" ]]; then > echo -n "-${ABI}"; > fi >} >___eapi_best_version_and_has_version_support_--host-root () >{ > [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]] >} >___eapi_default_src_test_disables_parallel_jobs () >{ > [[ ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]] >} >___eapi_disallows_helpers_in_global_scope () >{ > [[ ${1-${EAPI}} =~ ^(4-python|5-progress)$ ]] >} >___eapi_dodoc_supports_-r () >{ > [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]] >} >___eapi_doins_and_newins_preserve_symlinks () >{ > [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]] >} >___eapi_econf_passes_--disable-dependency-tracking () >{ > [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]] >} >___eapi_econf_passes_--disable-silent-rules () >{ > [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]] >} >___eapi_enables_globstar () >{ > [[ ${1-${EAPI}} =~ ^(4-python|5-progress)$ ]] >} >___eapi_has_HDEPEND () >{ > [[ ${1-${EAPI}} =~ ^(5-hdepend)$ ]] >} >___eapi_has_RDEPEND_DEPEND_fallback () >{ > [[ ${1-${EAPI}} =~ ^(0|1|2|3)$ ]] >} >___eapi_has_S_WORKDIR_fallback () >{ > [[ ${1-${EAPI}} =~ ^(0|1|2|3)$ ]] >} >___eapi_has_available_eclasses () >{ > [[ ${1-${EAPI}} =~ ^(5-progress)$ ]] >} >___eapi_has_docompress () >{ > [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]] >} >___eapi_has_dohard () >{ > [[ ${1-${EAPI}} =~ ^(0|1|2|3)$ ]] >} >___eapi_has_doheader () >{ > [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]] >} >___eapi_has_dosed () >{ > [[ ${1-${EAPI}} =~ ^(0|1|2|3)$ ]] >} >___eapi_has_eclass_path () >{ > [[ ${1-${EAPI}} =~ ^(5-progress)$ ]] >} >___eapi_has_license_path () >{ > [[ ${1-${EAPI}} =~ ^(5-progress)$ ]] >} >___eapi_has_master_repositories () >{ > [[ ${1-${EAPI}} =~ ^(5-progress)$ ]] >} >___eapi_has_nonfatal () >{ > [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]] >} >___eapi_has_package_manager_build_group () >{ > [[ ${1-${EAPI}} =~ ^(5-progress)$ ]] >} >___eapi_has_package_manager_build_user () >{ > [[ ${1-${EAPI}} =~ ^(5-progress)$ ]] >} >___eapi_has_pkg_pretend () >{ > [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]] >} >___eapi_has_prefix_variables () >{ > [[ ! ${1-${EAPI}} =~ ^(0|1|2)$ || " ${FEATURES} " == *" force-prefix "* ]] >} >___eapi_has_repository_path () >{ > [[ ${1-${EAPI}} =~ ^(5-progress)$ ]] >} >___eapi_has_src_configure () >{ > [[ ! ${1-${EAPI}} =~ ^(0|1)$ ]] >} >___eapi_has_src_prepare () >{ > [[ ! ${1-${EAPI}} =~ ^(0|1)$ ]] >} >___eapi_has_usex () >{ > [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]] >} >___eapi_helpers_can_die () >{ > [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]] >} >___eapi_newins_supports_reading_from_standard_input () >{ > [[ ! ${1-${EAPI}} =~ ^(0|1|2|3|4|4-python|4-slot-abi)$ ]] >} >___eapi_unpack_supports_xz () >{ > [[ ! ${1-${EAPI}} =~ ^(0|1|2)$ ]] >} >___eapi_use_enable_and_use_with_support_empty_third_argument () >{ > [[ ! ${1-${EAPI}} =~ ^(0|1|2|3)$ ]] >} >__abort_compile () >{ > __abort_handler "src_compile" $1; > rm -f "${PORTAGE_BUILDDIR}/.compiled"; > exit 1 >} >__abort_configure () >{ > __abort_handler src_configure $1; > rm -f "$PORTAGE_BUILDDIR/.configured"; > exit 1 >} >__abort_handler () >{ > local msg; > if [ "$2" != "fail" ]; then > msg="${EBUILD}: ${1} aborted; exiting."; > else > msg="${EBUILD}: ${1} failed; exiting."; > fi; > echo; > echo "$msg"; > echo; > eval ${3}; > trap - SIGINT SIGQUIT >} >__abort_install () >{ > __abort_handler "src_install" $1; > rm -rf "${PORTAGE_BUILDDIR}/image"; > exit 1 >} >__abort_prepare () >{ > __abort_handler src_prepare $1; > rm -f "$PORTAGE_BUILDDIR/.prepared"; > exit 1 >} >__abort_test () >{ > __abort_handler "__dyn_test" $1; > rm -f "${PORTAGE_BUILDDIR}/.tested"; > exit 1 >} >__assert_sigpipe_ok () >{ > local x pipestatus=${PIPESTATUS[*]}; > for x in $pipestatus; > do > [[ $x -ne 0 && $x -ne ${PORTAGE_SIGPIPE_STATUS:-141} ]] && die "$@"; > done; > [[ $x -eq 0 ]] || die "$@" >} >__dump_trace () >{ > local funcname="" sourcefile="" lineno="" s="yes" n p; > declare -i strip=${1:-1}; > local filespacing=$2 linespacing=$3; > (( n = ${#FUNCNAME[@]} - 1 )); > (( p = ${#BASH_ARGV[@]} )); > while (( n > 0 )); do > [ "${FUNCNAME[${n}]}" == "__qa_call" ] && break; > (( p -= ${BASH_ARGC[${n}]} )); > (( n-- )); > done; > if (( n == 0 )); then > (( n = ${#FUNCNAME[@]} - 1 )); > (( p = ${#BASH_ARGV[@]} )); > fi; > eerror "Call stack:"; > while (( n > ${strip} )); do > funcname=${FUNCNAME[${n} - 1]}; > sourcefile=$(basename "${BASH_SOURCE[${n}]}"); > lineno=${BASH_LINENO[${n} - 1]}; > args=; > if [[ -n "${BASH_ARGV[@]}" ]]; then > for ((j = 1 ; j <= ${BASH_ARGC[${n} - 1]} ; ++j )) > do > newarg=${BASH_ARGV[$(( p - j - 1 ))]}; > args="${args:+${args} }'${newarg}'"; > done; > (( p -= ${BASH_ARGC[${n} - 1]} )); > fi; > eerror " $(printf "%${filespacing}s" "${sourcefile}"), line $(printf "%${linespacing}s" "${lineno}"): Called ${funcname}${args:+ ${args}}"; > (( n-- )); > done >} >__dyn_clean () >{ > if [ -z "${PORTAGE_BUILDDIR}" ]; then > echo "Aborting clean phase because PORTAGE_BUILDDIR is unset!"; > return 1; > else > if [ ! -d "${PORTAGE_BUILDDIR}" ]; then > return 0; > fi; > fi; > if has chflags $FEATURES; then > chflags -R noschg,nouchg,nosappnd,nouappnd "${PORTAGE_BUILDDIR}"; > chflags -R nosunlnk,nouunlnk "${PORTAGE_BUILDDIR}" 2> /dev/null; > fi; > rm -rf "${PORTAGE_BUILDDIR}/image" "${PORTAGE_BUILDDIR}/homedir"; > rm -f "${PORTAGE_BUILDDIR}/.installed"; > if [[ $EMERGE_FROM = binary ]] || ! has keeptemp $FEATURES && ! has keepwork $FEATURES; then > rm -rf "${T}"; > fi; > if [[ $EMERGE_FROM = binary ]] || ! has keepwork $FEATURES; then > rm -f "$PORTAGE_BUILDDIR"/.{ebuild_changed,logid,pretended,setuped,unpacked,prepared} "$PORTAGE_BUILDDIR"/.{configured,compiled,tested,packaged} "$PORTAGE_BUILDDIR"/.die_hooks "$PORTAGE_BUILDDIR"/.ipc_{in,out,lock} "$PORTAGE_BUILDDIR"/.exit_status; > rm -rf "${PORTAGE_BUILDDIR}/build-info"; > rm -rf "${WORKDIR}"; > fi; > if [ -f "${PORTAGE_BUILDDIR}/.unpacked" ]; then > find "${PORTAGE_BUILDDIR}" -type d ! -regex "^${WORKDIR}" | sort -r | tr "\n" "\0" | $XARGS -0 rmdir &>/dev/null; > fi; > rm -rf "${PORTAGE_BUILDDIR}/distdir"; > cd "$PORTAGE_BUILDDIR"/../..; > rmdir "$PORTAGE_BUILDDIR" 2> /dev/null; > true >} >__dyn_compile () >{ > if [[ -e $PORTAGE_BUILDDIR/.compiled ]]; then > __vecho ">>> It appears that '${PF}' is already compiled; skipping."; > __vecho ">>> Remove '$PORTAGE_BUILDDIR/.compiled' to force compilation."; > return 0; > fi; > if [[ -d $S ]]; then > cd "${S}"; > else > if ___eapi_has_S_WORKDIR_fallback; then > cd "${WORKDIR}"; > else > if [[ -z ${A} ]] && ! __has_phase_defined_up_to compile; then > cd "${WORKDIR}"; > else > die "The source directory '${S}' doesn't exist"; > fi; > fi; > fi; > trap __abort_compile SIGINT SIGQUIT; > if has distcc $FEATURES && has distcc-pump $FEATURES; then > if [[ -z $INCLUDE_SERVER_PORT ]] || [[ ! -w $INCLUDE_SERVER_PORT ]]; then > eval $(pump --startup); > trap "pump --shutdown" EXIT; > fi; > fi; > __ebuild_phase pre_src_compile; > __vecho ">>> Compiling source in $PWD ..."; > __ebuild_phase src_compile; > >> "$PORTAGE_BUILDDIR/.compiled" || die "Failed to create $PORTAGE_BUILDDIR/.compiled"; > __vecho ">>> Source compiled."; > __ebuild_phase post_src_compile; > trap - SIGINT SIGQUIT >} >__dyn_configure () >{ > if [[ -e $PORTAGE_BUILDDIR/.configured ]]; then > __vecho ">>> It appears that '$PF' is already configured; skipping."; > __vecho ">>> Remove '$PORTAGE_BUILDDIR/.configured' to force configuration."; > return 0; > fi; > if [[ -d $S ]]; then > cd "${S}"; > else > if ___eapi_has_S_WORKDIR_fallback; then > cd "${WORKDIR}"; > else > if [[ -z ${A} ]] && ! __has_phase_defined_up_to configure; then > cd "${WORKDIR}"; > else > die "The source directory '${S}' doesn't exist"; > fi; > fi; > fi; > trap __abort_configure SIGINT SIGQUIT; > __ebuild_phase pre_src_configure; > __vecho ">>> Configuring source in $PWD ..."; > __ebuild_phase src_configure; > >> "$PORTAGE_BUILDDIR/.configured" || die "Failed to create $PORTAGE_BUILDDIR/.configured"; > __vecho ">>> Source configured."; > __ebuild_phase post_src_configure; > trap - SIGINT SIGQUIT >} >__dyn_help () >{ > echo; > echo "Portage"; > echo "Copyright 1999-2010 Gentoo Foundation"; > echo; > echo "How to use the ebuild command:"; > echo; > echo "The first argument to ebuild should be an existing .ebuild file."; > echo; > echo "One or more of the following options can then be specified. If more"; > echo "than one option is specified, each will be executed in order."; > echo; > echo " help : show this help screen"; > echo " pretend : execute package specific pretend actions"; > echo " setup : execute package specific setup actions"; > echo " fetch : download source archive(s) and patches"; > echo " digest : create a manifest file for the package"; > echo " manifest : create a manifest file for the package"; > echo " unpack : unpack sources (auto-dependencies if needed)"; > echo " prepare : prepare sources (auto-dependencies if needed)"; > echo " configure : configure sources (auto-fetch/unpack if needed)"; > echo " compile : compile sources (auto-fetch/unpack/configure if needed)"; > echo " test : test package (auto-fetch/unpack/configure/compile if needed)"; > echo " preinst : execute pre-install instructions"; > echo " postinst : execute post-install instructions"; > echo " install : install the package to the temporary install directory"; > echo " qmerge : merge image into live filesystem, recording files in db"; > echo " merge : do fetch, unpack, compile, install and qmerge"; > echo " prerm : execute pre-removal instructions"; > echo " postrm : execute post-removal instructions"; > echo " unmerge : remove package from live filesystem"; > echo " config : execute package specific configuration actions"; > echo " package : create a tarball package in ${PKGDIR}/All"; > echo " rpm : build a RedHat RPM package"; > echo " clean : clean up all source and temporary files"; > echo; > echo "The following settings will be used for the ebuild process:"; > echo; > echo " package : ${PF}"; > echo " slot : ${SLOT}"; > echo " category : ${CATEGORY}"; > echo " description : ${DESCRIPTION}"; > echo " system : ${CHOST}"; > echo " c flags : ${CFLAGS}"; > echo " c++ flags : ${CXXFLAGS}"; > echo " make flags : ${MAKEOPTS}"; > echo -n " build mode : "; > if has nostrip ${FEATURES} ${RESTRICT} || has strip ${RESTRICT}; then > echo "debug (large)"; > else > echo "production (stripped)"; > fi; > echo " merge to : ${ROOT}"; > echo; > if [ -n "$USE" ]; then > echo "Additionally, support for the following optional features will be enabled:"; > echo; > echo " ${USE}"; > fi; > echo >} >__dyn_install () >{ > [ -z "$PORTAGE_BUILDDIR" ] && die "${FUNCNAME}: PORTAGE_BUILDDIR is unset"; > if has noauto $FEATURES; then > rm -f "${PORTAGE_BUILDDIR}/.installed"; > else > if [[ -e $PORTAGE_BUILDDIR/.installed ]]; then > __vecho ">>> It appears that '${PF}' is already installed; skipping."; > __vecho ">>> Remove '${PORTAGE_BUILDDIR}/.installed' to force install."; > return 0; > fi; > fi; > trap "__abort_install" SIGINT SIGQUIT; > __ebuild_phase pre_src_install; > if ___eapi_has_prefix_variables; then > _x=${ED}; > else > _x=${D}; > fi; > rm -rf "${D}"; > mkdir -p "${_x}"; > unset _x; > if [[ -d $S ]]; then > cd "${S}"; > else > if ___eapi_has_S_WORKDIR_fallback; then > cd "${WORKDIR}"; > else > if [[ -z ${A} ]] && ! __has_phase_defined_up_to install; then > cd "${WORKDIR}"; > else > die "The source directory '${S}' doesn't exist"; > fi; > fi; > fi; > __vecho; > __vecho ">>> Install ${PF} into ${D} category ${CATEGORY}"; > export S D; > export DESTTREE=/usr; > export INSDESTTREE=""; > export _E_EXEDESTTREE_=""; > export _E_DOCDESTTREE_=""; > __ebuild_phase src_install; > >> "$PORTAGE_BUILDDIR/.installed" || die "Failed to create $PORTAGE_BUILDDIR/.installed"; > __vecho ">>> Completed installing ${PF} into ${D}"; > __vecho; > __ebuild_phase post_src_install; > cd "${PORTAGE_BUILDDIR}"/build-info; > set -f; > local f x; > IFS=' > '; > for f in CATEGORY DEFINED_PHASES FEATURES INHERITED IUSE PF PKGUSE SLOT KEYWORDS HOMEPAGE DESCRIPTION; > do > x=$(echo -n ${!f}); > [[ -n $x ]] && echo "$x" > $f; > done; > if [[ $CATEGORY != virtual ]]; then > for f in ASFLAGS CBUILD CC CFLAGS CHOST CTARGET CXX CXXFLAGS EXTRA_ECONF EXTRA_EINSTALL EXTRA_MAKE LDFLAGS LIBCFLAGS LIBCXXFLAGS QA_CONFIGURE_OPTIONS QA_DESKTOP_FILE; > do > x=$(echo -n ${!f}); > [[ -n $x ]] && echo "$x" > $f; > done; > fi; > echo "${USE}" > USE; > echo "${EAPI:-0}" > EAPI; > if ___eapi_has_prefix_variables && [[ -n ${EPREFIX} ]]; then > echo "${EPREFIX}" > EPREFIX; > fi; > set +f; > unset f; > __save_ebuild_env --exclude-init-phases | __filter_readonly_variables --filter-path --filter-sandbox --allow-extra-vars > environment; > assert "__save_ebuild_env failed"; > ${PORTAGE_BZIP2_COMMAND} -f9 environment; > cp "${EBUILD}" "${PF}.ebuild"; > [ -n "${PORTAGE_REPO_NAME}" ] && echo "${PORTAGE_REPO_NAME}" > repository; > if has nostrip ${FEATURES} ${RESTRICT} || has strip ${RESTRICT}; then > >> DEBUGBUILD; > fi; > trap - SIGINT SIGQUIT >} >__dyn_prepare () >{ > if [[ -e $PORTAGE_BUILDDIR/.prepared ]]; then > __vecho ">>> It appears that '$PF' is already prepared; skipping."; > __vecho ">>> Remove '$PORTAGE_BUILDDIR/.prepared' to force prepare."; > return 0; > fi; > if [[ -d $S ]]; then > cd "${S}"; > else > if ___eapi_has_S_WORKDIR_fallback; then > cd "${WORKDIR}"; > else > if [[ -z ${A} ]] && ! __has_phase_defined_up_to prepare; then > cd "${WORKDIR}"; > else > die "The source directory '${S}' doesn't exist"; > fi; > fi; > fi; > trap __abort_prepare SIGINT SIGQUIT; > __ebuild_phase pre_src_prepare; > __vecho ">>> Preparing source in $PWD ..."; > __ebuild_phase src_prepare; > >> "$PORTAGE_BUILDDIR/.prepared" || die "Failed to create $PORTAGE_BUILDDIR/.prepared"; > __vecho ">>> Source prepared."; > __ebuild_phase post_src_prepare; > trap - SIGINT SIGQUIT >} >__dyn_pretend () >{ > if [[ -e $PORTAGE_BUILDDIR/.pretended ]]; then > __vecho ">>> It appears that '$PF' is already pretended; skipping."; > __vecho ">>> Remove '$PORTAGE_BUILDDIR/.pretended' to force pretend."; > return 0; > fi; > __ebuild_phase pre_pkg_pretend; > __ebuild_phase pkg_pretend; > >> "$PORTAGE_BUILDDIR/.pretended" || die "Failed to create $PORTAGE_BUILDDIR/.pretended"; > __ebuild_phase post_pkg_pretend >} >__dyn_setup () >{ > if [[ -e $PORTAGE_BUILDDIR/.setuped ]]; then > __vecho ">>> It appears that '$PF' is already setup; skipping."; > __vecho ">>> Remove '$PORTAGE_BUILDDIR/.setuped' to force setup."; > return 0; > fi; > __ebuild_phase pre_pkg_setup; > __ebuild_phase pkg_setup; > >> "$PORTAGE_BUILDDIR/.setuped" || die "Failed to create $PORTAGE_BUILDDIR/.setuped"; > __ebuild_phase post_pkg_setup >} >__dyn_test () >{ > if [[ -e $PORTAGE_BUILDDIR/.tested ]]; then > __vecho ">>> It appears that ${PN} has already been tested; skipping."; > __vecho ">>> Remove '${PORTAGE_BUILDDIR}/.tested' to force test."; > return; > fi; > if [[ ${EBUILD_FORCE_TEST} == 1 && test =~ $PORTAGE_IUSE ]]; then > ! has test ${USE} && export USE="${USE} test"; > fi; > trap "__abort_test" SIGINT SIGQUIT; > if [ -d "${S}" ]; then > cd "${S}"; > else > cd "${WORKDIR}"; > fi; > if ! has test $FEATURES && [ "${EBUILD_FORCE_TEST}" != "1" ]; then > __vecho ">>> Test phase [not enabled]: ${CATEGORY}/${PF}"; > else > if has test $RESTRICT; then > einfo "Skipping make test/check due to ebuild restriction."; > __vecho ">>> Test phase [explicitly disabled]: ${CATEGORY}/${PF}"; > else > local save_sp=${SANDBOX_PREDICT}; > addpredict /; > __ebuild_phase pre_src_test; > __ebuild_phase src_test; > >> "$PORTAGE_BUILDDIR/.tested" || die "Failed to create $PORTAGE_BUILDDIR/.tested"; > __ebuild_phase post_src_test; > SANDBOX_PREDICT=${save_sp}; > fi; > fi; > trap - SIGINT SIGQUIT >} >__dyn_unpack () >{ > if [[ -f ${PORTAGE_BUILDDIR}/.unpacked ]]; then > __vecho ">>> WORKDIR is up-to-date, keeping..."; > return 0; > fi; > if [ ! -d "${WORKDIR}" ]; then > install -m${PORTAGE_WORKDIR_MODE:-0700} -d "${WORKDIR}" || die "Failed to create dir '${WORKDIR}'"; > fi; > cd "${WORKDIR}" || die "Directory change failed: \`cd '${WORKDIR}'\`"; > __ebuild_phase pre_src_unpack; > __vecho ">>> Unpacking source..."; > __ebuild_phase src_unpack; > >> "$PORTAGE_BUILDDIR/.unpacked" || die "Failed to create $PORTAGE_BUILDDIR/.unpacked"; > __vecho ">>> Source unpacked in ${WORKDIR}"; > __ebuild_phase post_src_unpack >} >__eapi0_pkg_nofetch () >{ > [ -z "${SRC_URI}" ] && return; > elog "The following are listed in SRC_URI for ${PN}:"; > local x; > for x in $(echo ${SRC_URI}); > do > elog " ${x}"; > done >} >__eapi0_src_compile () >{ > if [ -x ./configure ]; then > econf; > fi; > __eapi2_src_compile >} >__eapi0_src_test () >{ > local emake_cmd="${MAKE:-make} ${MAKEOPTS} ${EXTRA_EMAKE}"; > local internal_opts=; > if ___eapi_default_src_test_disables_parallel_jobs; then > internal_opts+=" -j1"; > fi; > if $emake_cmd ${internal_opts} check -n &>/dev/null; then > __vecho ">>> Test phase [check]: ${CATEGORY}/${PF}"; > $emake_cmd ${internal_opts} check || die "Make check failed. See above for details."; > else > if $emake_cmd ${internal_opts} test -n &>/dev/null; then > __vecho ">>> Test phase [test]: ${CATEGORY}/${PF}"; > $emake_cmd ${internal_opts} test || die "Make test failed. See above for details."; > else > __vecho ">>> Test phase [none]: ${CATEGORY}/${PF}"; > fi; > fi >} >__eapi0_src_unpack () >{ > [[ -n ${A} ]] && unpack ${A} >} >__eapi1_src_compile () >{ > __eapi2_src_configure; > __eapi2_src_compile >} >__eapi2_src_compile () >{ > if [ -f Makefile ] || [ -f GNUmakefile ] || [ -f makefile ]; then > emake || die "emake failed"; > fi >} >__eapi2_src_configure () >{ > if [[ -x ${ECONF_SOURCE:-.}/configure ]]; then > econf; > fi >} >__eapi4_src_install () >{ > if [[ -f Makefile || -f GNUmakefile || -f makefile ]]; then > emake DESTDIR="${D}" install; > fi; > if ! declare -p DOCS &>/dev/null; then > local d; > for d in README* ChangeLog AUTHORS NEWS TODO CHANGES THANKS BUGS FAQ CREDITS CHANGELOG; > do > [[ -s "${d}" ]] && dodoc "${d}"; > done; > else > if [[ $(declare -p DOCS) == "declare -a "* ]]; then > dodoc "${DOCS[@]}"; > else > dodoc ${DOCS}; > fi; > fi >} >__ebuild_arg_to_phase () >{ > [ $# -ne 1 ] && die "expected exactly 1 arg, got $#: $*"; > local arg=$1; > local phase_func=""; > case "$arg" in > pretend) > ___eapi_has_pkg_pretend && phase_func=pkg_pretend > ;; > setup) > phase_func=pkg_setup > ;; > nofetch) > phase_func=pkg_nofetch > ;; > unpack) > phase_func=src_unpack > ;; > prepare) > ___eapi_has_src_prepare && phase_func=src_prepare > ;; > configure) > ___eapi_has_src_configure && phase_func=src_configure > ;; > compile) > phase_func=src_compile > ;; > test) > phase_func=src_test > ;; > install) > phase_func=src_install > ;; > preinst) > phase_func=pkg_preinst > ;; > postinst) > phase_func=pkg_postinst > ;; > prerm) > phase_func=pkg_prerm > ;; > postrm) > phase_func=pkg_postrm > ;; > esac; > [[ -z $phase_func ]] && return 1; > echo "$phase_func"; > return 0 >} >__ebuild_main () >{ > export EBUILD_MASTER_PID=$BASHPID; > trap 'exit 1' SIGTERM; > [[ -z ${S} ]] && export S=${WORKDIR}/${P}; > if [[ -s $SANDBOX_LOG ]]; then > local x=; > if [[ -n SANDBOX_ON ]]; then > x=$SANDBOX_ON; > export SANDBOX_ON=0; > fi; > rm -f "$SANDBOX_LOG" || die "failed to remove stale sandbox log: '$SANDBOX_LOG'"; > if [[ -n $x ]]; then > export SANDBOX_ON=$x; > fi; > unset x; > fi; > has ccache $FEATURES || export CCACHE_DISABLE=1; > local phase_func=$(__ebuild_arg_to_phase "$EBUILD_PHASE"); > [[ -n $phase_func ]] && __ebuild_phase_funcs "$EAPI" "$phase_func"; > unset phase_func; > __source_all_bashrcs; > case ${1} in > nofetch) > __ebuild_phase_with_hooks pkg_nofetch > ;; > prerm | postrm | preinst | postinst | config | info) > if has "${1}" config info && ! declare -F "pkg_${1}" > /dev/null; then > ewarn "pkg_${1}() is not defined: '${EBUILD##*/}'"; > fi; > export SANDBOX_ON="0"; > if [ "${PORTAGE_DEBUG}" != "1" ] || [ "${-/x/}" != "$-" ]; then > __ebuild_phase_with_hooks pkg_${1}; > else > set -x; > __ebuild_phase_with_hooks pkg_${1}; > set +x; > fi; > if [[ -n $PORTAGE_UPDATE_ENV ]]; then > __save_ebuild_env --exclude-init-phases | __filter_readonly_variables --filter-path --filter-sandbox --allow-extra-vars | ${PORTAGE_BZIP2_COMMAND} -c -f9 > "$PORTAGE_UPDATE_ENV"; > assert "__save_ebuild_env failed"; > fi > ;; > unpack | prepare | configure | compile | test | clean | install) > if [[ ${SANDBOX_DISABLED:-0} = 0 ]]; then > export SANDBOX_ON="1"; > else > export SANDBOX_ON="0"; > fi; > case "${1}" in > configure | compile) > local x; > for x in ASFLAGS CCACHE_DIR CCACHE_SIZE CFLAGS CXXFLAGS LDFLAGS LIBCFLAGS LIBCXXFLAGS; > do > [[ ${!x+set} = set ]] && export $x; > done; > unset x; > has distcc $FEATURES && [[ -n $DISTCC_DIR ]] && [[ ${SANDBOX_WRITE/$DISTCC_DIR} = $SANDBOX_WRITE ]] && addwrite "$DISTCC_DIR"; > x=LIBDIR_$ABI; > [ -z "$PKG_CONFIG_PATH" -a -n "$ABI" -a -n "${!x}" ] && export PKG_CONFIG_PATH=/usr/${!x}/pkgconfig; > if has noauto $FEATURES && [[ ! -f $PORTAGE_BUILDDIR/.unpacked ]]; then > echo; > echo "!!! We apparently haven't unpacked..." "This is probably not what you"; > echo "!!! want to be doing... You are using" "FEATURES=noauto so I'll assume"; > echo "!!! that you know what you are doing..." "You have 5 seconds to abort..."; > echo; > local x; > for x in 1 2 3 4 5 6 7 8; > do > LC_ALL=C sleep 0.25; > done; > sleep 3; > fi; > cd "$PORTAGE_BUILDDIR"; > if [ ! -d build-info ]; then > mkdir build-info; > cp "$EBUILD" "build-info/$PF.ebuild"; > fi; > export S D > ;; > esac; > if [ "${PORTAGE_DEBUG}" != "1" ] || [ "${-/x/}" != "$-" ]; then > __dyn_${1}; > else > set -x; > __dyn_${1}; > set +x; > fi; > export SANDBOX_ON="0" > ;; > help | pretend | setup) > export SANDBOX_ON="0"; > if [ "${PORTAGE_DEBUG}" != "1" ] || [ "${-/x/}" != "$-" ]; then > __dyn_${1}; > else > set -x; > __dyn_${1}; > set +x; > fi > ;; > _internal_test) > > ;; > *) > export SANDBOX_ON="1"; > echo "Unrecognized arg '${1}'"; > echo; > __dyn_help; > exit 1 > ;; > esac; > if ! has "${1}" clean help info nofetch; then > umask 002; > __save_ebuild_env | __filter_readonly_variables --filter-features > "$T/environment"; > assert "__save_ebuild_env failed"; > chgrp "${PORTAGE_GRPNAME:-portage}" "$T/environment"; > chmod g+w "$T/environment"; > fi; > [[ -n $PORTAGE_EBUILD_EXIT_FILE ]] && > "$PORTAGE_EBUILD_EXIT_FILE"; > if [[ -n $PORTAGE_IPC_DAEMON ]]; then > [[ ! -s $SANDBOX_LOG ]]; > "$PORTAGE_BIN_PATH"/ebuild-ipc exit $?; > fi >} >__ebuild_phase () >{ > declare -F "$1" > /dev/null && __qa_call $1 >} >__ebuild_phase_funcs () >{ > [ $# -ne 2 ] && die "expected exactly 2 args, got $#: $*"; > local eapi=$1; > local phase_func=$2; > local default_phases="pkg_nofetch src_unpack src_prepare src_configure > src_compile src_install src_test"; > local x y default_func=""; > for x in pkg_nofetch src_unpack src_test; > do > declare -F $x > /dev/null || eval "$x() { __eapi0_$x \"\$@\" ; }"; > done; > case "$eapi" in > 0 | 1) > if ! declare -F src_compile > /dev/null; then > case "$eapi" in > 0) > function src_compile () > { > __eapi0_src_compile "$@" > } > ;; > *) > function src_compile () > { > __eapi1_src_compile "$@" > } > ;; > esac; > fi; > for x in $default_phases; > do > eval "default_$x() { > die \"default_$x() is not supported with EAPI='$eapi' during phase $phase_func\" > }"; > done; > eval "default() { > die \"default() is not supported with EAPI='$eapi' during phase $phase_func\" > }" > ;; > *) > declare -F src_configure > /dev/null || function src_configure () > { > __eapi2_src_configure "$@" > }; > declare -F src_compile > /dev/null || function src_compile () > { > __eapi2_src_compile "$@" > }; > has $eapi 2 3 || declare -F src_install > /dev/null || function src_install () > { > __eapi4_src_install "$@" > }; > if has $phase_func $default_phases; then > function __eapi2_pkg_nofetch () > { > __eapi0_pkg_nofetch "$@" > }; > function __eapi2_src_unpack () > { > __eapi0_src_unpack "$@" > }; > function __eapi2_src_prepare () > { > true > }; > function __eapi2_src_test () > { > __eapi0_src_test "$@" > }; > function __eapi2_src_install () > { > die "$FUNCNAME is not supported" > }; > for x in $default_phases; > do > eval "default_$x() { __eapi2_$x \"\$@\" ; }"; > done; > eval "default() { __eapi2_$phase_func \"\$@\" ; }"; > case "$eapi" in > 2 | 3) > > ;; > *) > eval "default_src_install() { __eapi4_src_install \"\$@\" ; }"; > [[ $phase_func = src_install ]] && eval "default() { __eapi4_$phase_func \"\$@\" ; }" > ;; > esac; > else > for x in $default_phases; > do > eval "default_$x() { > die \"default_$x() is not supported in phase $default_func\" > }"; > done; > eval "default() { > die \"default() is not supported with EAPI='$eapi' during phase $phase_func\" > }"; > fi > ;; > esac >} >__ebuild_phase_with_hooks () >{ > local x phase_name=${1}; > for x in {pre_,,post_}${phase_name}; > do > __ebuild_phase ${x}; > done >} >__eend () >{ > local retval=${1:-0} efunc=${2:-eerror} msg; > shift 2; > if [[ ${retval} == "0" ]]; then > msg="${BRACKET}[ ${GOOD}ok${BRACKET} ]${NORMAL}"; > else > if [[ -n $* ]]; then > ${efunc} "$*"; > fi; > msg="${BRACKET}[ ${BAD}!!${BRACKET} ]${NORMAL}"; > fi; > if [[ ${RC_ENDCOL} == "yes" ]]; then > echo -e "${ENDCOL} ${msg}"; > else > [[ ${LAST_E_CMD} == ebegin ]] || LAST_E_LEN=0; > printf "%$(( COLS - LAST_E_LEN - 7 ))s%b\n" '' "${msg}"; > fi; > return ${retval} >} >__elog_base () >{ > local messagetype; > [ -z "${1}" -o -z "${T}" -o ! -d "${T}/logging" ] && return 1; > case "${1}" in > INFO | WARN | ERROR | LOG | QA) > messagetype="${1}"; > shift > ;; > *) > __vecho -e " ${BAD}*${NORMAL} Invalid use of internal function __elog_base(), next message will not be logged"; > return 1 > ;; > esac; > echo -e "$@" | while read -r; do > echo "$messagetype $REPLY" >> "${T}/logging/${EBUILD_PHASE:-other}"; > done; > return 0 >} >__filter_readonly_variables () >{ > local x filtered_vars; > local readonly_bash_vars="BASHOPTS BASHPID DIRSTACK EUID > FUNCNAME GROUPS PIPESTATUS PPID SHELLOPTS UID"; > local bash_misc_vars="BASH BASH_.* COLUMNS COMP_WORDBREAKS HISTCMD > HISTFILE HOSTNAME HOSTTYPE IFS LINENO MACHTYPE OLDPWD > OPTERR OPTIND OSTYPE POSIXLY_CORRECT PS4 PWD RANDOM > SECONDS SHELL SHLVL _"; > local filtered_sandbox_vars="SANDBOX_ACTIVE SANDBOX_BASHRC > SANDBOX_DEBUG_LOG SANDBOX_DISABLED SANDBOX_LIB > SANDBOX_LOG SANDBOX_ON"; > local binpkg_untrusted_vars="CATEGORY P PF PN PR PV PVR"; > local misc_garbage_vars="_portage_filter_opts"; > filtered_vars="$readonly_bash_vars $bash_misc_vars > $PORTAGE_READONLY_VARS $misc_garbage_vars"; > if ___eapi_has_prefix_variables; then > filtered_vars+=" ED EPREFIX EROOT"; > fi; > if has --filter-sandbox $*; then > filtered_vars="${filtered_vars} SANDBOX_.*"; > else > filtered_vars="${filtered_vars} ${filtered_sandbox_vars}"; > fi; > if has --filter-features $*; then > filtered_vars="${filtered_vars} FEATURES PORTAGE_FEATURES"; > fi; > if has --filter-path $*; then > filtered_vars+=" PATH"; > fi; > if has --filter-locale $*; then > filtered_vars+=" LANG LC_ALL LC_COLLATE > LC_CTYPE LC_MESSAGES LC_MONETARY > LC_NUMERIC LC_PAPER LC_TIME"; > fi; > if ! has --allow-extra-vars $*; then > if [ "${EMERGE_FROM}" = binary ]; then > filtered_vars+=" ${binpkg_untrusted_vars}"; > else > filtered_vars+=" ${PORTAGE_SAVED_READONLY_VARS}"; > filtered_vars+=" ${PORTAGE_MUTABLE_FILTERED_VARS}"; > fi; > fi; > "${PORTAGE_PYTHON:-/usr/bin/python}" "${PORTAGE_BIN_PATH}"/filter-bash-environment.py "${filtered_vars}" || die "filter-bash-environment.py failed" >} >__has_phase_defined_up_to () >{ > local phase; > for phase in unpack prepare configure compile install; > do > has ${phase} ${DEFINED_PHASES} && return 0; > [[ ${phase} == $1 ]] && return 1; > done; > return 1 >} >__helpers_die () >{ > if ___eapi_helpers_can_die; then > die "$@"; > else > echo -e "$@" 1>&2; > fi >} >__preprocess_ebuild_env () >{ > local _portage_filter_opts="--filter-features --filter-locale --filter-path --filter-sandbox"; > [ -f "${T}/environment.raw" ] || return 0; > __filter_readonly_variables $_portage_filter_opts < "${T}"/environment >> "$T/environment.filtered" || return $?; > unset _portage_filter_opts; > mv "${T}"/environment.filtered "${T}"/environment || return $?; > rm -f "${T}/environment.success" || return $?; > ( export SANDBOX_ON=1; > source "${T}/environment" || exit $?; > export SANDBOX_ON=0; > source "${PORTAGE_BIN_PATH}/save-ebuild-env.sh" || exit $?; > __save_ebuild_env || exit $?; > >> "$T/environment.success" || exit $? ) > "${T}/environment.filtered"; > local retval; > if [ -e "${T}/environment.success" ]; then > __filter_readonly_variables --filter-features < "${T}/environment.filtered" > "${T}/environment"; > retval=$?; > else > retval=1; > fi; > rm -f "${T}"/environment.{filtered,raw,success}; > return ${retval} >} >__qa_call () >{ > local shopts=$(shopt) OLDIFS="$IFS"; > local retval; > "$@"; > retval=$?; > set +e; > [[ $shopts != $(shopt) ]] && eqawarn "QA Notice: Global shell options changed and were not restored while calling '$*'"; > [[ "$IFS" != "$OLDIFS" ]] && eqawarn "QA Notice: Global IFS changed and was not restored while calling '$*'"; > return $retval >} >__qa_source () >{ > local shopts=$(shopt) OLDIFS="$IFS"; > local retval; > source "$@"; > retval=$?; > set +e; > [[ $shopts != $(shopt) ]] && eqawarn "QA Notice: Global shell options changed and were not restored while sourcing '$*'"; > [[ "$IFS" != "$OLDIFS" ]] && eqawarn "QA Notice: Global IFS changed and was not restored while sourcing '$*'"; > return $retval >} >__quiet_mode () >{ > [[ ${PORTAGE_QUIET} -eq 1 ]] >} >__save_ebuild_env () >{ > ( if has --exclude-init-phases $*; then > unset S _E_DOCDESTTREE_ _E_EXEDESTTREE_ PORTAGE_DOCOMPRESS PORTAGE_DOCOMPRESS_SKIP; > if [[ -n $PYTHONPATH && ${PYTHONPATH%%:*} -ef $PORTAGE_PYM_PATH ]]; then > if [[ $PYTHONPATH == *:* ]]; then > export PYTHONPATH=${PYTHONPATH#*:}; > else > unset PYTHONPATH; > fi; > fi; > fi; > unset COLORTERM DISPLAY EDITOR LESS LESSOPEN LOGNAME LS_COLORS PAGER TERM TERMCAP USER ftp_proxy http_proxy no_proxy; > unset CVS_RSH ECHANGELOG_USER GPG_AGENT_INFO SSH_AGENT_PID SSH_AUTH_SOCK STY WINDOW XAUTHORITY; > unset ${!CCACHE_*} ${!DISTCC_*}; > for x in pkg_setup pkg_nofetch src_unpack src_prepare src_configure src_compile src_test src_install pkg_preinst pkg_postinst pkg_prerm pkg_postrm; > do > unset -f default_$x __eapi{0,1,2,3,4}_$x; > done; > unset x; > unset -f assert __assert_sigpipe_ok __dump_trace die __quiet_mode __vecho __elog_base eqawarn elog einfo einfon ewarn eerror ebegin __eend eend KV_major KV_minor KV_micro KV_to_int get_KV __1 __1 has __has_phase_defined_up_to hasv hasq __qa_source __qa_call addread addwrite adddeny addpredict __sb_append_var use usev useq has_version portageq best_version use_with use_enable register_die_hook keepdir unpack __strip_duplicate_slashes econf einstall __dyn_setup __dyn_unpack __dyn_clean into insinto exeinto docinto insopts diropts exeopts libopts docompress __abort_handler __abort_prepare __abort_configure __abort_compile __abort_test __abort_install __dyn_prepare __dyn_configure __dyn_compile __dyn_test __dyn_install __dyn_pretend __dyn_help debug-print debug-print-function debug-print-section __helpers_die inherit EXPORT_FUNCTIONS nonfatal register_success_hook __hasg __hasgq __save_ebuild_env __set_colors __filter_readonly_variables __preprocess_ebuild_env __source_all_bashrcs __ebuild_main __ebuild_phase __ebuild_phase_with_hooks __ebuild_arg_to_phase __ebuild_phase_funcs default __unpack_tar __unset_colors ${QA_INTERCEPTORS}; > ___eapi_has_usex && unset -f usex; > ___eapi_has_master_repositories && unset -f master_repositories; > ___eapi_has_repository_path && unset -f repository_path; > ___eapi_has_available_eclasses && unset -f available_eclasses; > ___eapi_has_eclass_path && unset -f eclass_path; > ___eapi_has_license_path && unset -f license_path; > ___eapi_has_package_manager_build_user && unset -f package_manager_build_user; > ___eapi_has_package_manager_build_group && unset -f package_manager_build_group; > unset -f $(compgen -A function ___eapi_); > unset ACCEPT_LICENSE BAD BRACKET BUILD_PREFIX COLS DISTCC_DIR DISTDIR DOC_SYMLINKS_DIR EBUILD_FORCE_TEST EBUILD_MASTER_PID ECLASS_DEPTH ENDCOL FAKEROOTKEY GOOD HILITE HOME LAST_E_CMD LAST_E_LEN LD_PRELOAD MISC_FUNCTIONS_ARGS MOPREFIX NOCOLOR NORMAL PKGDIR PKGUSE PKG_LOGDIR PKG_TMPDIR PORTAGE_BASHRCS_SOURCED PORTAGE_COMPRESS PORTAGE_COMPRESS_EXCLUDE_SUFFIXES PORTAGE_DOHTML_UNWARNED_SKIPPED_EXTENSIONS PORTAGE_DOHTML_UNWARNED_SKIPPED_FILES PORTAGE_DOHTML_WARN_ON_SKIPPED_FILES PORTAGE_NONFATAL PORTAGE_QUIET PORTAGE_SANDBOX_DENY PORTAGE_SANDBOX_PREDICT PORTAGE_SANDBOX_READ PORTAGE_SANDBOX_WRITE PREROOTPATH QA_INTERCEPTORS RC_DEFAULT_INDENT RC_DOT_PATTERN RC_ENDCOL RC_INDENTATION ROOT ROOTPATH RPMDIR TEMP TMP TMPDIR USE_EXPAND WARN XARGS _RC_GET_KV_CACHE; > unset DOC_SYMLINKS_DIR INSTALL_MASK PKG_INSTALL_MASK; > declare -p; > declare -fp; > if [[ ${BASH_VERSINFO[0]} == 3 ]]; then > export; > fi ) >} >__sb_append_var () >{ > local _v=$1; > shift; > local var="SANDBOX_${_v}"; > [[ -z $1 || -n $2 ]] && die "Usage: add$(LC_ALL=C tr "[:upper:]" "[:lower:]" <<< "${_v}") <colon-delimited list of paths>"; > export ${var}="${!var:+${!var}:}$1" >} >__set_colors () >{ > COLS=${COLUMNS:-0}; > [[ $COLS == 0 && $EBUILD_PHASE != depend ]] && COLS=$(set -- $( ( stty size </dev/tty ) 2>/dev/null || echo 24 80 ) ; echo $2); > (( COLS > 0 )) || (( COLS = 80 )); > ENDCOL='[A['$(( COLS - 8 ))'C'; > if [ -n "${PORTAGE_COLORMAP}" ]; then > eval ${PORTAGE_COLORMAP}; > else > GOOD='[32;01m'; > WARN='[33;01m'; > BAD='[31;01m'; > HILITE='[36;01m'; > BRACKET='[34;01m'; > NORMAL='[0m'; > fi >} >__source_all_bashrcs () >{ > [[ $PORTAGE_BASHRCS_SOURCED = 1 ]] && return 0; > PORTAGE_BASHRCS_SOURCED=1; > local x; > local OCC="${CC}" OCXX="${CXX}"; > if [[ $EBUILD_PHASE != depend ]]; then > [ "${IFS:-unset}" != "unset" ] && old_IFS="${IFS}"; > IFS=' >'; > local path_array=($PROFILE_PATHS); > if [ "${old_IFS:-unset}" != "unset" ]; then > IFS="${old_IFS}"; > unset old_IFS; > else > unset IFS; > fi; > for x in "${path_array[@]}"; > do > [ -f "$x/profile.bashrc" ] && __qa_source "$x/profile.bashrc"; > done; > fi; > if [ -r "${PORTAGE_BASHRC}" ]; then > if [ "$PORTAGE_DEBUG" != "1" ] || [ "${-/x/}" != "$-" ]; then > source "${PORTAGE_BASHRC}"; > else > set -x; > source "${PORTAGE_BASHRC}"; > set +x; > fi; > fi; > if [[ $EBUILD_PHASE != depend ]]; then > for x in "${PM_EBUILD_HOOK_DIR}"/${CATEGORY}/{${PN},${PN}:${SLOT%/*},${P},${PF}}; > do > if [ -r "${x}" ]; then > if [ "$PORTAGE_DEBUG" != "1" ] || [ "${-/x/}" != "$-" ]; then > source "${x}"; > else > set -x; > source "${x}"; > set +x; > fi; > fi; > done; > fi; > [ ! -z "${OCC}" ] && export CC="${OCC}"; > [ ! -z "${OCXX}" ] && export CXX="${OCXX}" >} >__strip_duplicate_slashes () >{ > if [[ -n $1 ]]; then > local removed=$1; > while [[ ${removed} == *//* ]]; do > removed=${removed//\/\///}; > done; > echo "${removed}"; > fi >} >__unset_colors () >{ > COLS=80; > ENDCOL=; > GOOD=; > WARN=; > BAD=; > NORMAL=; > HILITE=; > BRACKET= >} >__vecho () >{ > __quiet_mode || echo "$@" >} >_distutils_get_PYTHONPATH () >{ > if _python_package_supporting_installation_for_multiple_python_abis && [[ -z "${DISTUTILS_USE_SEPARATE_SOURCE_DIRECTORIES}" ]]; then > ls -d build-${PYTHON_ABI}/lib* 2> /dev/null; > else > ls -d build/lib* 2> /dev/null; > fi >} >_distutils_get_build_dir () >{ > if _python_package_supporting_installation_for_multiple_python_abis && [[ -z "${DISTUTILS_USE_SEPARATE_SOURCE_DIRECTORIES}" ]]; then > echo "build-${PYTHON_ABI}"; > else > echo "build"; > fi >} >_distutils_hook () >{ > if [[ "$#" -ne 1 ]]; then > die "${FUNCNAME}() requires 1 argument"; > fi; > if [[ "$(type -t "distutils_src_${EBUILD_PHASE}_$1_hook")" == "function" ]]; then > "distutils_src_${EBUILD_PHASE}_$1_hook"; > fi >} >_distutils_prepare_current_working_directory () >{ > if [[ "$1" == *"|"*"|"* ]]; then > die "Element '$1' of DISTUTILS_SETUP_FILES array has invalid syntax"; > fi; > if [[ "$1" == *"|"* ]]; then > echo "${_BOLD}[${1%|*}]${_NORMAL}"; > pushd "${1%|*}" > /dev/null || die "Entering directory '${1%|*}' failed"; > fi >} >_distutils_prepare_global_options () >{ > local element option pattern; > if [[ -n "$(declare -p DISTUTILS_GLOBAL_OPTIONS 2> /dev/null)" && "$(declare -p DISTUTILS_GLOBAL_OPTIONS)" != "declare -a DISTUTILS_GLOBAL_OPTIONS="* ]]; then > die "DISTUTILS_GLOBAL_OPTIONS should be indexed array"; > fi; > if has "${EAPI:-0}" 0 1 2 3; then > _DISTUTILS_GLOBAL_OPTIONS=("${DISTUTILS_GLOBAL_OPTIONS[@]}"); > else > _DISTUTILS_GLOBAL_OPTIONS=(); > for element in "${DISTUTILS_GLOBAL_OPTIONS[@]}"; > do > if [[ ! "${element}" =~ ^[^[:space:]]+\ . ]]; then > die "Element '${element}' of DISTUTILS_GLOBAL_OPTIONS array has invalid syntax"; > fi; > pattern="${element%% *}"; > option="${element#* }"; > if _python_check_python_abi_matching "${PYTHON_ABI}" "${pattern}"; then > _DISTUTILS_GLOBAL_OPTIONS+=("${option}"); > fi; > done; > fi >} >_distutils_restore_current_working_directory () >{ > if [[ "$1" == *"|"* ]]; then > popd > /dev/null || die "Leaving directory '${1%|*}' failed"; > fi >} >_distutils_src_test_hook () >{ > if [[ "$#" -ne 1 ]]; then > die "${FUNCNAME}() requires 1 arguments"; > fi; > if ! _python_package_supporting_installation_for_multiple_python_abis; then > return; > fi; > if [[ "$(type -t "distutils_src_test_pre_hook")" == "function" ]]; then > eval "python_execute_$1_pre_hook() { > distutils_src_test_pre_hook > }"; > fi; > if [[ "$(type -t "distutils_src_test_post_hook")" == "function" ]]; then > eval "python_execute_$1_post_hook() { > distutils_src_test_post_hook > }"; > fi >} >_gcc-install-dir () >{ > echo "$(LC_ALL=C $(tc-getCC) -print-search-dirs 2> /dev/null | awk '$1=="install:" {print $2}')" >} >_gcc-specs-directive_raw () >{ > local cc=$(tc-getCC); > local specfiles=$(LC_ALL=C ${cc} -v 2>&1 | awk '$1=="Reading" {print $NF}'); > ${cc} -dumpspecs 2> /dev/null | cat - ${specfiles} | awk -v directive=$1 'BEGIN { pspec=""; spec=""; outside=1 } >$1=="*"directive":" { pspec=spec; spec=""; outside=0; next } > outside || NF==0 || ( substr($1,1,1)=="*" && substr($1,length($1),1)==":" ) { outside=1; next } > spec=="" && substr($0,1,1)=="+" { spec=pspec " " substr($0,2); next } > { spec=spec $0 } >END { print spec }'; > return 0 >} >_gcc-specs-exists () >{ > [[ -f $(_gcc-install-dir)/$1 ]] >} >_gcc_fullversion () >{ > local ver="$1"; > shift; > set -- `$(tc-getCPP "$@") -E -P - <<<"__GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__"`; > eval echo "$ver" >} >_python_abi-specific_local_scope () >{ > [[ " ${FUNCNAME[@]:2} " =~ " "(_python_final_sanity_checks|python_execute_function|python_mod_optimize|python_mod_cleanup)" " ]] >} >_python_calculate_PYTHON_ABIS () >{ > if ! _python_package_supporting_installation_for_multiple_python_abis; then > die "${FUNCNAME}() cannot be used in ebuilds of packages not supporting installation for multiple Python ABIs"; > fi; > _python_initial_sanity_checks; > if [[ "$(declare -p PYTHON_ABIS 2> /dev/null)" != "declare -x PYTHON_ABIS="* ]]; then > local PYTHON_ABI; > if [[ "$(declare -p USE_PYTHON 2> /dev/null)" == "declare -x USE_PYTHON="* ]]; then > local cpython_enabled="0"; > if [[ -z "${USE_PYTHON}" ]]; then > die "USE_PYTHON variable is empty"; > fi; > for PYTHON_ABI in ${USE_PYTHON}; > do > if ! has "${PYTHON_ABI}" "${_PYTHON_GLOBALLY_SUPPORTED_ABIS[@]}"; then > die "USE_PYTHON variable contains invalid value '${PYTHON_ABI}'"; > fi; > if has "${PYTHON_ABI}" "${_CPYTHON2_GLOBALLY_SUPPORTED_ABIS[@]}" "${_CPYTHON3_GLOBALLY_SUPPORTED_ABIS[@]}"; then > cpython_enabled="1"; > fi; > if ! _python_check_python_abi_matching --patterns-list "${PYTHON_ABI}" "${RESTRICT_PYTHON_ABIS}"; then > export PYTHON_ABIS+="${PYTHON_ABIS:+ }${PYTHON_ABI}"; > fi; > done; > if [[ -z "${PYTHON_ABIS//[${IFS}]/}" ]]; then > die "USE_PYTHON variable does not enable any Python ABI supported by ${CATEGORY}/${PF}"; > fi; > if [[ "${cpython_enabled}" == "0" ]]; then > die "USE_PYTHON variable does not enable any CPython ABI"; > fi; > else > local python_version python2_version python3_version support_python_major_version; > if ! has_version "dev-lang/python"; then > die "${FUNCNAME}(): 'dev-lang/python' is not installed"; > fi; > python_version="$("${EPREFIX}/usr/bin/python" -c 'from sys import version_info; print(".".join(str(x) for x in version_info[:2]))')"; > if has_version "=dev-lang/python-2*"; then > if [[ "$(readlink "${EPREFIX}/usr/bin/python2")" != "python2."* ]]; then > die "'${EPREFIX}/usr/bin/python2' is not valid symlink"; > fi; > python2_version="$("${EPREFIX}/usr/bin/python2" -c 'from sys import version_info; print(".".join(str(x) for x in version_info[:2]))')"; > support_python_major_version="0"; > for PYTHON_ABI in "${_CPYTHON2_GLOBALLY_SUPPORTED_ABIS[@]}"; > do > if ! _python_check_python_abi_matching --patterns-list "${PYTHON_ABI}" "${RESTRICT_PYTHON_ABIS}"; then > support_python_major_version="1"; > break; > fi; > done; > if [[ "${support_python_major_version}" == "1" ]]; then > if _python_check_python_abi_matching --patterns-list "${python2_version}" "${RESTRICT_PYTHON_ABIS}"; then > die "Active version of CPython 2 is not supported by ${CATEGORY}/${PF}"; > fi; > else > python2_version=""; > fi; > fi; > if has_version "=dev-lang/python-3*"; then > if [[ "$(readlink "${EPREFIX}/usr/bin/python3")" != "python3."* ]]; then > die "'${EPREFIX}/usr/bin/python3' is not valid symlink"; > fi; > python3_version="$("${EPREFIX}/usr/bin/python3" -c 'from sys import version_info; print(".".join(str(x) for x in version_info[:2]))')"; > support_python_major_version="0"; > for PYTHON_ABI in "${_CPYTHON3_GLOBALLY_SUPPORTED_ABIS[@]}"; > do > if ! _python_check_python_abi_matching --patterns-list "${PYTHON_ABI}" "${RESTRICT_PYTHON_ABIS}"; then > support_python_major_version="1"; > break; > fi; > done; > if [[ "${support_python_major_version}" == "1" ]]; then > if _python_check_python_abi_matching --patterns-list "${python3_version}" "${RESTRICT_PYTHON_ABIS}"; then > die "Active version of CPython 3 is not supported by ${CATEGORY}/${PF}"; > fi; > else > python3_version=""; > fi; > fi; > if [[ -z "${python2_version}" && -z "${python3_version}" ]]; then > eerror "${CATEGORY}/${PF} requires at least one of the following packages:"; > for PYTHON_ABI in "${_CPYTHON2_GLOBALLY_SUPPORTED_ABIS[@]}" "${_CPYTHON3_GLOBALLY_SUPPORTED_ABIS[@]}"; > do > if ! _python_check_python_abi_matching --patterns-list "${PYTHON_ABI}" "${RESTRICT_PYTHON_ABIS}"; then > eerror " dev-lang/python:${PYTHON_ABI}"; > fi; > done; > die "No supported version of CPython installed"; > fi; > if [[ -n "${python2_version}" && "${python_version}" == "2."* && "${python_version}" != "${python2_version}" ]]; then > eerror "Python wrapper is configured incorrectly or '${EPREFIX}/usr/bin/python2' symlink"; > eerror "is set incorrectly. Use \`eselect python\` to fix configuration."; > die "Incorrect configuration of Python"; > fi; > if [[ -n "${python3_version}" && "${python_version}" == "3."* && "${python_version}" != "${python3_version}" ]]; then > eerror "Python wrapper is configured incorrectly or '${EPREFIX}/usr/bin/python3' symlink"; > eerror "is set incorrectly. Use \`eselect python\` to fix configuration."; > die "Incorrect configuration of Python"; > fi; > PYTHON_ABIS="${python2_version} ${python3_version}"; > PYTHON_ABIS="${PYTHON_ABIS# }"; > export PYTHON_ABIS="${PYTHON_ABIS% }"; > fi; > fi; > _python_final_sanity_checks >} >_python_check_python_abi_matching () >{ > local pattern patterns patterns_list="0" PYTHON_ABI; > while (($#)); do > case "$1" in > --patterns-list) > patterns_list="1" > ;; > --) > shift; > break > ;; > -*) > die "${FUNCNAME}(): Unrecognized option '$1'" > ;; > *) > break > ;; > esac; > shift; > done; > if [[ "$#" -ne 2 ]]; then > die "${FUNCNAME}() requires 2 arguments"; > fi; > PYTHON_ABI="$1"; > if [[ "${patterns_list}" == "0" ]]; then > pattern="$2"; > if [[ "${pattern}" == *"-cpython" ]]; then > [[ "${PYTHON_ABI}" =~ ^[[:digit:]]+\.[[:digit:]]+$ && "${PYTHON_ABI}" == ${pattern%-cpython} ]]; > else > if [[ "${pattern}" == *"-jython" ]]; then > [[ "${PYTHON_ABI}" == ${pattern} ]]; > else > if [[ "${pattern}" == *"-pypy-"* ]]; then > [[ "${PYTHON_ABI}" == ${pattern} ]]; > else > if [[ "${PYTHON_ABI}" =~ ^[[:digit:]]+\.[[:digit:]]+$ ]]; then > [[ "${PYTHON_ABI}" == ${pattern} ]]; > else > if [[ "${PYTHON_ABI}" =~ ^[[:digit:]]+\.[[:digit:]]+-jython$ ]]; then > [[ "${PYTHON_ABI%-jython}" == ${pattern} ]]; > else > if [[ "${PYTHON_ABI}" =~ ^[[:digit:]]+\.[[:digit:]]+-pypy-[[:digit:]]+\.[[:digit:]]+$ ]]; then > [[ "${PYTHON_ABI%-pypy-*}" == ${pattern} ]]; > else > die "${FUNCNAME}(): Unrecognized Python ABI '${PYTHON_ABI}'"; > fi; > fi; > fi; > fi; > fi; > fi; > else > patterns="${2// / >}"; > while read pattern; do > if _python_check_python_abi_matching "${PYTHON_ABI}" "${pattern}"; then > return 0; > fi; > done <<< "${patterns}"; > return 1; > fi >} >_python_check_python_pkg_setup_execution () >{ > [[ " ${FUNCNAME[@]:1} " =~ " "(python_set_active_version|python_pkg_setup)" " ]] && return; > if ! has "${EAPI:-0}" 0 1 2 3 && [[ -z "${PYTHON_PKG_SETUP_EXECUTED}" ]]; then > die "python_pkg_setup() not called"; > fi >} >_python_clean_compiled_modules () >{ > _python_initialize_prefix_variables; > _python_set_color_variables; > [[ "${FUNCNAME[1]}" =~ ^(python_mod_optimize|python_mod_cleanup)$ ]] || die "${FUNCNAME}(): Invalid usage"; > local base_module_name compiled_file compiled_files=() dir path py_file root; > root="${EROOT%/}"; > for path in "$@"; > do > compiled_files=(); > if [[ -d "${path}" ]]; then > while read -d '' -r compiled_file; do > compiled_files+=("${compiled_file}"); > done < <(find "${path}" "(" -name "*.py[co]" -o -name "*\$py.class" ")" -print0); > if [[ "${EBUILD_PHASE}" == "postrm" ]]; then > find "${path}" -type d | sort -r | while read -r dir; do > if rmdir "${dir}" 2> /dev/null; then > _python_vecho "<<< ${dir}"; > fi; > done; > fi; > else > if [[ "${path}" == *.py ]]; then > base_module_name="${path##*/}"; > base_module_name="${base_module_name%.py}"; > if [[ -d "${path%/*}/__pycache__" ]]; then > while read -d '' -r compiled_file; do > compiled_files+=("${compiled_file}"); > done < <(find "${path%/*}/__pycache__" "(" -name "${base_module_name}.*.py[co]" -o -name "${base_module_name}\$py.class" ")" -print0); > fi; > compiled_files+=("${path}c" "${path}o" "${path%.py}\$py.class"); > fi; > fi; > for compiled_file in "${compiled_files[@]}"; > do > [[ ! -f "${compiled_file}" ]] && continue; > dir="${compiled_file%/*}"; > dir="${dir##*/}"; > if [[ "${compiled_file}" == *.py[co] ]]; then > if [[ "${dir}" == "__pycache__" ]]; then > base_module_name="${compiled_file##*/}"; > base_module_name="${base_module_name%.*py[co]}"; > base_module_name="${base_module_name%.*}"; > py_file="${compiled_file%__pycache__/*}${base_module_name}.py"; > else > py_file="${compiled_file%[co]}"; > fi; > if [[ "${EBUILD_PHASE}" == "postinst" ]]; then > [[ -f "${py_file}" && "${compiled_file}" -nt "${py_file}" ]] && continue; > else > [[ -f "${py_file}" ]] && continue; > fi; > _python_vecho "<<< ${compiled_file%[co]}[co]"; > rm -f "${compiled_file%[co]}"[co]; > else > if [[ "${compiled_file}" == *\$py.class ]]; then > if [[ "${dir}" == "__pycache__" ]]; then > base_module_name="${compiled_file##*/}"; > base_module_name="${base_module_name%\$py.class}"; > py_file="${compiled_file%__pycache__/*}${base_module_name}.py"; > else > py_file="${compiled_file%\$py.class}.py"; > fi; > if [[ "${EBUILD_PHASE}" == "postinst" ]]; then > [[ -f "${py_file}" && "${compiled_file}" -nt "${py_file}" ]] && continue; > else > [[ -f "${py_file}" ]] && continue; > fi; > _python_vecho "<<< ${compiled_file}"; > rm -f "${compiled_file}"; > else > die "${FUNCNAME}(): Unrecognized file type: '${compiled_file}'"; > fi; > fi; > dir="${compiled_file%/*}"; > while [[ "${dir}" != "${root}" ]]; do > if rmdir "${dir}" 2> /dev/null; then > _python_vecho "<<< ${dir}"; > else > break; > fi; > dir="${dir%/*}"; > done; > done; > done >} >_python_final_sanity_checks () >{ > if ! _python_implementation && [[ "$(declare -p PYTHON_SANITY_CHECKS_EXECUTED 2> /dev/null)" != "declare -- PYTHON_SANITY_CHECKS_EXECUTED="* || " ${FUNCNAME[@]:1} " =~ " "(python_set_active_version|python_pkg_setup)" " && -z "${PYTHON_SKIP_SANITY_CHECKS}" ]]; then > local PYTHON_ABI="${PYTHON_ABI}"; > for PYTHON_ABI in ${PYTHON_ABIS-${PYTHON_ABI}}; > do > if ! has_version "$(python_get_implementational_package)"; then > die "$(python_get_implementational_package) is not installed"; > fi; > if [[ "$(EPYTHON="$(PYTHON)" python -c "${_PYTHON_ABI_EXTRACTION_COMMAND}")" != "${PYTHON_ABI}" ]]; then > eerror "Path to 'python': '$(type -p python)'"; > eerror "ABI: '${ABI}'"; > eerror "DEFAULT_ABI: '${DEFAULT_ABI}'"; > eerror "EPYTHON: '$(PYTHON)'"; > eerror "PYTHON_ABI: '${PYTHON_ABI}'"; > eerror "Locally active version of Python: '$(EPYTHON="$(PYTHON)" python -c "${_PYTHON_ABI_EXTRACTION_COMMAND}")'"; > die "'python' does not respect EPYTHON variable"; > fi; > done; > fi; > PYTHON_SANITY_CHECKS_EXECUTED="1" >} >_python_get_implementation () >{ > local ignore_invalid="0"; > while (($#)); do > case "$1" in > --ignore-invalid) > ignore_invalid="1" > ;; > --) > shift; > break > ;; > -*) > die "${FUNCNAME}(): Unrecognized option '$1'" > ;; > *) > break > ;; > esac; > shift; > done; > if [[ "$#" -ne 1 ]]; then > die "${FUNCNAME}() requires 1 argument"; > fi; > if [[ "$1" =~ ^[[:digit:]]+\.[[:digit:]]+$ ]]; then > echo "CPython"; > else > if [[ "$1" =~ ^[[:digit:]]+\.[[:digit:]]+-jython$ ]]; then > echo "Jython"; > else > if [[ "$1" =~ ^[[:digit:]]+\.[[:digit:]]+-pypy-[[:digit:]]+\.[[:digit:]]+$ ]]; then > echo "PyPy"; > else > if [[ "${ignore_invalid}" == "0" ]]; then > die "${FUNCNAME}(): Unrecognized Python ABI '$1'"; > fi; > fi; > fi; > fi >} >_python_implementation () >{ > if [[ "${CATEGORY}/${PN}" == "dev-lang/python" ]]; then > return 0; > else > if [[ "${CATEGORY}/${PN}" == "dev-java/jython" ]]; then > return 0; > else > if [[ "${CATEGORY}/${PN}" == "dev-python/pypy" ]]; then > return 0; > else > return 1; > fi; > fi; > fi >} >_python_initial_sanity_checks () >{ > if [[ "$(declare -p PYTHON_SANITY_CHECKS_EXECUTED 2> /dev/null)" != "declare -- PYTHON_SANITY_CHECKS_EXECUTED="* || " ${FUNCNAME[@]:1} " =~ " "(python_set_active_version|python_pkg_setup)" " && -z "${PYTHON_SKIP_SANITY_CHECKS}" ]]; then > if [[ "$(readlink "${EPREFIX}/usr/bin/python")" != "python-wrapper" ]]; then > eerror "'${EPREFIX}/usr/bin/python' is not valid symlink."; > eerror "Use \`eselect python set \${python_interpreter}\` to fix this problem."; > die "'${EPREFIX}/usr/bin/python' is not valid symlink"; > fi; > if [[ "$(<"${EPREFIX}/usr/bin/python-config")" != *"Gentoo python-config wrapper script"* ]]; then > eerror "'${EPREFIX}/usr/bin/python-config' is not valid script"; > eerror "Use \`eselect python set \${python_interpreter}\` to fix this problem."; > die "'${EPREFIX}/usr/bin/python-config' is not valid script"; > fi; > fi >} >_python_initialize_prefix_variables () >{ > if has "${EAPI:-0}" 0 1 2; then > if [[ -n "${ROOT}" && -z "${EROOT}" ]]; then > EROOT="${ROOT%/}${EPREFIX}/"; > fi; > if [[ -n "${D}" && -z "${ED}" ]]; then > ED="${D%/}${EPREFIX}/"; > fi; > fi >} >_python_package_supporting_installation_for_multiple_python_abis () >{ > [[ -n "${SUPPORT_PYTHON_ABIS}" ]] >} >_python_prepare_flags () >{ > local array=() deleted_flag element flags new_value old_flag old_value operator pattern prefix variable; > for variable in CPPFLAGS CFLAGS CXXFLAGS LDFLAGS; > do > eval "_PYTHON_SAVED_${variable}=\"\${!variable}\""; > for prefix in PYTHON_USER_ PYTHON_; > do > if [[ "$(declare -p ${prefix}${variable} 2> /dev/null)" == "declare -a ${prefix}${variable}="* ]]; then > eval "array=(\"\${${prefix}${variable}[@]}\")"; > for element in "${array[@]}"; > do > if [[ "${element}" =~ ^${_PYTHON_ABI_PATTERN_REGEX}\ (\+|-)\ .+ ]]; then > pattern="${element%% *}"; > element="${element#* }"; > operator="${element%% *}"; > flags="${element#* }"; > if _python_check_python_abi_matching "${PYTHON_ABI}" "${pattern}"; then > if [[ "${operator}" == "+" ]]; then > eval "export ${variable}+=\"\${variable:+ }${flags}\""; > else > if [[ "${operator}" == "-" ]]; then > flags="${flags// / >}"; > old_value="${!variable// / >}"; > new_value=""; > while read old_flag; do > while read deleted_flag; do > if [[ "${old_flag}" == ${deleted_flag} ]]; then > continue 2; > fi; > done <<< "${flags}"; > new_value+="${new_value:+ }${old_flag}"; > done <<< "${old_value}"; > eval "export ${variable}=\"\${new_value}\""; > fi; > fi; > fi; > else > die "Element '${element}' of ${prefix}${variable} array has invalid syntax"; > fi; > done; > else > if [[ -n "$(declare -p ${prefix}${variable} 2> /dev/null)" ]]; then > die "${prefix}${variable} should be indexed array"; > fi; > fi; > done; > done >} >_python_restore_flags () >{ > local variable; > for variable in CPPFLAGS CFLAGS CXXFLAGS LDFLAGS; > do > eval "${variable}=\"\${_PYTHON_SAVED_${variable}}\""; > unset _PYTHON_SAVED_${variable}; > done >} >_python_set_color_variables () >{ > if [[ "${PYTHON_COLORS}" != "0" && "${NOCOLOR:-false}" =~ ^(false|no)$ ]]; then > _BOLD='[1m'; > _RED='[1;31m'; > _GREEN='[1;32m'; > _BLUE='[1;34m'; > _CYAN='[1;36m'; > _NORMAL='[0m'; > else > _BOLD=; > _RED=; > _GREEN=; > _BLUE=; > _CYAN=; > _NORMAL=; > fi >} >_python_test_hook () >{ > if [[ "$#" -ne 1 ]]; then > die "${FUNCNAME}() requires 1 argument"; > fi; > if _python_package_supporting_installation_for_multiple_python_abis && [[ "$(type -t "${_PYTHON_TEST_FUNCTION}_$1_hook")" == "function" ]]; then > "${_PYTHON_TEST_FUNCTION}_$1_hook"; > fi >} >_python_vecho () >{ > [[ -z ${PORTAGE_VERBOSE} ]] || echo "$@" >} >_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}"); > [[ -z ${search} && -n ${!tuple} ]] && search=$(type -p "${!tuple}-${prog}"); > [[ -n ${search} ]] && prog=${search##*/}; > export ${var}=${prog}; > echo "${!var}" >} >adddeny () >{ > __sb_append_var DENY "$@" >} >addpredict () >{ > __sb_append_var PREDICT "$@" >} >addread () >{ > __sb_append_var READ "$@" >} >addwrite () >{ > __sb_append_var WRITE "$@" >} >assert () >{ > local x pipestatus=${PIPESTATUS[*]}; > for x in $pipestatus; > do > [[ $x -eq 0 ]] || die "$@"; > done >} >best_version () >{ > local atom eroot host_root=false root=${ROOT}; > if [[ $1 == --host-root ]]; then > host_root=true; > shift; > fi; > atom=$1; > shift; > [ $# -gt 0 ] && die "${FUNCNAME[0]}: unused argument(s): $*"; > if ${host_root}; then > if ! ___eapi_best_version_and_has_version_support_--host-root; then > die "${FUNCNAME[0]}: option --host-root is not supported with EAPI ${EAPI}"; > fi; > root=/; > fi; > if ___eapi_has_prefix_variables; then > eroot=${root%/}${EPREFIX}/; > else > eroot=${root}; > fi; > if [[ -n $PORTAGE_IPC_DAEMON ]]; then > "$PORTAGE_BIN_PATH"/ebuild-ipc best_version "${eroot}" "${atom}"; > else > PYTHONPATH=${PORTAGE_PYM_PATH}${PYTHONPATH:+:}${PYTHONPATH} "${PORTAGE_PYTHON:-/usr/bin/python}" "${PORTAGE_BIN_PATH}/portageq" best_version "${eroot}" "${atom}"; > fi; > local retval=$?; > case "${retval}" in > 0 | 1) > return ${retval} > ;; > 2) > die "${FUNCNAME[0]}: invalid atom: ${atom}" > ;; > *) > if [[ -n ${PORTAGE_IPC_DAEMON} ]]; then > die "${FUNCNAME[0]}: unexpected ebuild-ipc exit code: ${retval}"; > else > die "${FUNCNAME[0]}: unexpected portageq exit code: ${retval}"; > fi > ;; > esac >} >debug-print () >{ > [[ $EBUILD_PHASE = depend || ! -d ${T} || ${#} -eq 0 ]] && return 0; > if [[ ${ECLASS_DEBUG_OUTPUT} == on ]]; then > printf 'debug: %s\n' "${@}" 1>&2; > else > if [[ -n ${ECLASS_DEBUG_OUTPUT} ]]; then > printf 'debug: %s\n' "${@}" >> "${ECLASS_DEBUG_OUTPUT}"; > fi; > fi; > if [[ -w $T ]]; then > printf '%s\n' "${@}" >> "${T}/eclass-debug.log"; > chgrp "${PORTAGE_GRPNAME:-portage}" "${T}/eclass-debug.log"; > chmod g+w "${T}/eclass-debug.log"; > fi >} >debug-print-function () >{ > debug-print "${1}: entering function, parameters: ${*:2}" >} >debug-print-section () >{ > debug-print "now in section ${*}" >} >default () >{ > die "default() is not supported with EAPI='5' during phase pkg_setup" >} >default_pkg_nofetch () >{ > die "default_pkg_nofetch() is not supported in phase " >} >default_src_compile () >{ > die "default_src_compile() is not supported in phase " >} >default_src_configure () >{ > die "default_src_configure() is not supported in phase " >} >default_src_install () >{ > die "default_src_install() is not supported in phase " >} >default_src_prepare () >{ > die "default_src_prepare() is not supported in phase " >} >default_src_test () >{ > die "default_src_test() is not supported in phase " >} >default_src_unpack () >{ > die "default_src_unpack() is not supported in phase " >} >die () >{ > local IFS=' >'; > if [[ $PORTAGE_NONFATAL -eq 1 ]]; then > echo -e " $WARN*$NORMAL ${FUNCNAME[1]}: WARNING: $@" 1>&2; > return 1; > fi; > set +e; > if [ -n "${QA_INTERCEPTORS}" ]; then > unset -f ${QA_INTERCEPTORS}; > unset QA_INTERCEPTORS; > fi; > local n filespacing=0 linespacing=0; > (( n = ${#FUNCNAME[@]} - 1 )); > while (( n > 0 )); do > [ "${FUNCNAME[${n}]}" == "__qa_call" ] && break; > (( n-- )); > done; > (( n == 0 )) && (( n = ${#FUNCNAME[@]} - 1 )); > while (( n > 0 )); do > sourcefile=${BASH_SOURCE[${n}]} sourcefile=${sourcefile##*/}; > lineno=${BASH_LINENO[${n}]}; > ((filespacing < ${#sourcefile})) && filespacing=${#sourcefile}; > ((linespacing < ${#lineno})) && linespacing=${#lineno}; > (( n-- )); > done; > local phase_str=; > [[ -n $EBUILD_PHASE ]] && phase_str=" ($EBUILD_PHASE phase)"; > eerror "ERROR: $CATEGORY/$PF failed${phase_str}:"; > eerror " ${*:-(no error message)}"; > eerror; > local main_index; > (( main_index = ${#BASH_SOURCE[@]} - 1 )); > if has ${BASH_SOURCE[$main_index]##*/} ebuild.sh misc-functions.sh; then > __dump_trace 2 ${filespacing} ${linespacing}; > eerror " $(printf "%${filespacing}s" "${BASH_SOURCE[1]##*/}"), line $(printf "%${linespacing}s" "${BASH_LINENO[0]}"): Called die"; > eerror "The specific snippet of code:"; > sed -n -e "# When we get to the line that failed, append it to the > # hold space, move the hold space to the pattern space, > # then print out the pattern space and quit immediately > ${BASH_LINENO[0]}{H;g;p;q}" -e '# If this line ends with a line continuation, append it > # to the hold space > /\\$/H' -e '# If this line does not end with a line continuation, > # erase the line and set the hold buffer to it (thus > # erasing the hold buffer in the process) > /[^\]$/{s:^.*$::;h}' "${BASH_SOURCE[1]}" | sed -e '1d' -e 's:^:RETAIN-LEADING-SPACE:' | while read -r n; do > eerror " ${n#RETAIN-LEADING-SPACE}"; > done; > eerror; > fi; > eerror "If you need support, post the output of \`emerge --info '=$CATEGORY/$PF'\`,"; > eerror "the complete build log and the output of \`emerge -pqv '=$CATEGORY/$PF'\`."; > if [[ -n ${EBUILD_OVERLAY_ECLASSES} ]]; then > eerror "This ebuild used the following eclasses from overlays:"; > local x; > for x in ${EBUILD_OVERLAY_ECLASSES}; > do > eerror " ${x}"; > done; > fi; > if [ "${EMERGE_FROM}" != "binary" ] && ! has ${EBUILD_PHASE} prerm postrm && [ "${EBUILD#${PORTDIR}/}" == "${EBUILD}" ]; then > local overlay=${EBUILD%/*}; > overlay=${overlay%/*}; > overlay=${overlay%/*}; > if [[ -n $PORTAGE_REPO_NAME ]]; then > eerror "This ebuild is from an overlay named" "'$PORTAGE_REPO_NAME': '${overlay}/'"; > else > eerror "This ebuild is from an overlay: '${overlay}/'"; > fi; > else > if [[ -n $PORTAGE_REPO_NAME && -f "$PORTDIR"/profiles/repo_name ]]; then > local portdir_repo_name=$(<"$PORTDIR"/profiles/repo_name); > if [[ -n $portdir_repo_name && $portdir_repo_name != $PORTAGE_REPO_NAME ]]; then > eerror "This ebuild is from a repository" "named '$PORTAGE_REPO_NAME'"; > fi; > fi; > fi; > if has ${BASH_SOURCE[$main_index]##*/} ebuild.sh misc-functions.sh && [[ ${EBUILD_PHASE} != depend ]]; then > local x; > for x in $EBUILD_DEATH_HOOKS; > do > ${x} "$@" 1>&2 1>&2; > done; > > "$PORTAGE_BUILDDIR/.die_hooks"; > fi; > if [[ -n ${PORTAGE_LOG_FILE} ]]; then > eerror "The complete build log is located at '${PORTAGE_LOG_FILE}'."; > if [[ ${PORTAGE_LOG_FILE} != ${T}/* ]]; then > local log_ext=log; > [[ ${PORTAGE_LOG_FILE} != *.log ]] && log_ext+=.${PORTAGE_LOG_FILE##*.}; > eerror "For convenience, a symlink to the build log is located at '${T}/build.${log_ext}'."; > fi; > fi; > if [ -f "${T}/environment" ]; then > eerror "The ebuild environment file is located at '${T}/environment'."; > else > if [ -d "${T}" ]; then > { > set; > export > } > "${T}/die.env"; > eerror "The ebuild environment file is located at '${T}/die.env'."; > fi; > fi; > eerror "Working directory: '$(pwd)'"; > eerror "S: '${S}'"; > [[ -n $PORTAGE_EBUILD_EXIT_FILE ]] && > "$PORTAGE_EBUILD_EXIT_FILE"; > [[ -n $PORTAGE_IPC_DAEMON ]] && "$PORTAGE_BIN_PATH"/ebuild-ipc exit 1; > [[ $BASHPID = $EBUILD_MASTER_PID ]] || kill -s SIGTERM $EBUILD_MASTER_PID; > exit 1 >} >diropts () >{ > export DIROPTIONS="$@" >} >distutils_get_intermediate_installation_image () >{ > if [[ "${EBUILD_PHASE}" != "install" ]]; then > die "${FUNCNAME}() can be used only in src_install() phase"; > fi; > if ! _python_package_supporting_installation_for_multiple_python_abis; then > die "${FUNCNAME}() cannot be used in ebuilds of packages not supporting installation for multiple Python ABIs"; > fi; > _python_check_python_pkg_setup_execution; > if [[ ! "${FUNCNAME[1]}" =~ ^distutils_src_install_(pre|post)_hook$ ]]; then > die "${FUNCNAME}() can be used only in distutils_src_install_pre_hook() and distutils_src_install_post_hook()"; > fi; > if [[ "$#" -ne 0 ]]; then > die "${FUNCNAME}() does not accept arguments"; > fi; > echo "${T}/images/${PYTHON_ABI}" >} >distutils_pkg_postinst () >{ > if [[ "${EBUILD_PHASE}" != "postinst" ]]; then > die "${FUNCNAME}() can be used only in pkg_postinst() phase"; > fi; > _python_check_python_pkg_setup_execution; > _python_initialize_prefix_variables; > if [[ -z "${DISTUTILS_SRC_INSTALL_EXECUTED}" ]]; then > die "${FUNCNAME}() called illegally"; > fi; > local pylibdir pymod; > if [[ "$#" -ne 0 ]]; then > die "${FUNCNAME}() does not accept arguments"; > fi; > if [[ -z "$(declare -p PYTHON_MODNAME 2> /dev/null)" ]]; then > for pylibdir in "${EROOT}"usr/$(get_libdir)/python* "${EROOT}"usr/share/jython-*/Lib; > do > if [[ -d "${pylibdir}/site-packages/${PN}" ]]; then > PYTHON_MODNAME="${PN}"; > fi; > done; > fi; > if [[ -n "${PYTHON_MODNAME}" ]]; then > if ! has "${EAPI:-0}" 0 1 2 || _python_package_supporting_installation_for_multiple_python_abis; then > python_mod_optimize ${PYTHON_MODNAME}; > else > for pymod in ${PYTHON_MODNAME}; > do > python_mod_optimize "$(python_get_sitedir)/${pymod}"; > done; > fi; > fi >} >distutils_pkg_postrm () >{ > if [[ "${EBUILD_PHASE}" != "postrm" ]]; then > die "${FUNCNAME}() can be used only in pkg_postrm() phase"; > fi; > _python_check_python_pkg_setup_execution; > _python_initialize_prefix_variables; > if [[ -z "${DISTUTILS_SRC_INSTALL_EXECUTED}" ]]; then > die "${FUNCNAME}() called illegally"; > fi; > local pylibdir pymod; > if [[ "$#" -ne 0 ]]; then > die "${FUNCNAME}() does not accept arguments"; > fi; > if [[ -z "$(declare -p PYTHON_MODNAME 2> /dev/null)" ]]; then > for pylibdir in "${EROOT}"usr/$(get_libdir)/python* "${EROOT}"usr/share/jython-*/Lib; > do > if [[ -d "${pylibdir}/site-packages/${PN}" ]]; then > PYTHON_MODNAME="${PN}"; > fi; > done; > fi; > if [[ -n "${PYTHON_MODNAME}" ]]; then > if ! has "${EAPI:-0}" 0 1 2 || _python_package_supporting_installation_for_multiple_python_abis; then > python_mod_cleanup ${PYTHON_MODNAME}; > else > for pymod in ${PYTHON_MODNAME}; > do > for pylibdir in "${EROOT}"usr/$(get_libdir)/python*; > do > if [[ -d "${pylibdir}/site-packages/${pymod}" ]]; then > python_mod_cleanup "${pylibdir#${EROOT%/}}/site-packages/${pymod}"; > fi; > done; > done; > fi; > fi >} >distutils_src_compile () >{ > if [[ "${EBUILD_PHASE}" != "compile" ]]; then > die "${FUNCNAME}() can be used only in src_compile() phase"; > fi; > _python_check_python_pkg_setup_execution; > _python_set_color_variables; > local setup_file; > if _python_package_supporting_installation_for_multiple_python_abis; then > function distutils_building () > { > _distutils_hook pre; > _distutils_prepare_global_options; > for setup_file in "${DISTUTILS_SETUP_FILES[@]-setup.py}"; > do > _distutils_prepare_current_working_directory "${setup_file}"; > echo ${_BOLD}"$(PYTHON)" "${setup_file#*|}" "${_DISTUTILS_GLOBAL_OPTIONS[@]}" build -b "$(_distutils_get_build_dir)" "$@"${_NORMAL}; > "$(PYTHON)" "${setup_file#*|}" "${_DISTUTILS_GLOBAL_OPTIONS[@]}" build -b "$(_distutils_get_build_dir)" "$@" || return "$?"; > _distutils_restore_current_working_directory "${setup_file}"; > done; > _distutils_hook post > }; > python_execute_function ${DISTUTILS_USE_SEPARATE_SOURCE_DIRECTORIES:+-s} distutils_building "$@"; > unset -f distutils_building; > else > _distutils_prepare_global_options; > for setup_file in "${DISTUTILS_SETUP_FILES[@]-setup.py}"; > do > _distutils_prepare_current_working_directory "${setup_file}"; > echo ${_BOLD}"$(PYTHON)" "${setup_file#*|}" "${_DISTUTILS_GLOBAL_OPTIONS[@]}" build "$@"${_NORMAL}; > "$(PYTHON)" "${setup_file#*|}" "${_DISTUTILS_GLOBAL_OPTIONS[@]}" build "$@" || die "Building failed"; > _distutils_restore_current_working_directory "${setup_file}"; > done; > fi >} >distutils_src_install () >{ > if [[ "${EBUILD_PHASE}" != "install" ]]; then > die "${FUNCNAME}() can be used only in src_install() phase"; > fi; > _python_check_python_pkg_setup_execution; > _python_initialize_prefix_variables; > _python_set_color_variables; > local default_docs doc line nspkg_pth_file nspkg_pth_files=() setup_file; > if _python_package_supporting_installation_for_multiple_python_abis; then > function distutils_installation () > { > _distutils_hook pre; > _distutils_prepare_global_options; > for setup_file in "${DISTUTILS_SETUP_FILES[@]-setup.py}"; > do > _distutils_prepare_current_working_directory "${setup_file}"; > echo ${_BOLD}"$(PYTHON)" "${setup_file#*|}" "${_DISTUTILS_GLOBAL_OPTIONS[@]}" $([[ -z "${DISTUTILS_USE_SEPARATE_SOURCE_DIRECTORIES}" ]] && echo build -b "$(_distutils_get_build_dir)") install --no-compile --root="${T}/images/${PYTHON_ABI}" "$@"${_NORMAL}; > "$(PYTHON)" "${setup_file#*|}" "${_DISTUTILS_GLOBAL_OPTIONS[@]}" $([[ -z "${DISTUTILS_USE_SEPARATE_SOURCE_DIRECTORIES}" ]] && echo build -b "$(_distutils_get_build_dir)") install --no-compile --root="${T}/images/${PYTHON_ABI}" "$@" || return "$?"; > _distutils_restore_current_working_directory "${setup_file}"; > done; > _distutils_hook post > }; > python_execute_function ${DISTUTILS_USE_SEPARATE_SOURCE_DIRECTORIES:+-s} distutils_installation "$@"; > unset -f distutils_installation; > python_merge_intermediate_installation_images "${T}/images"; > else > python_need_rebuild; > _distutils_prepare_global_options; > for setup_file in "${DISTUTILS_SETUP_FILES[@]-setup.py}"; > do > _distutils_prepare_current_working_directory "${setup_file}"; > echo ${_BOLD}"$(PYTHON)" "${setup_file#*|}" "${_DISTUTILS_GLOBAL_OPTIONS[@]}" install --root="${D}" --no-compile "$@"${_NORMAL}; > "$(PYTHON)" "${setup_file#*|}" "${_DISTUTILS_GLOBAL_OPTIONS[@]}" install --root="${D}" --no-compile "$@" || die "Installation failed"; > _distutils_restore_current_working_directory "${setup_file}"; > done; > fi; > while read -d '' -r nspkg_pth_file; do > nspkg_pth_files+=("${nspkg_pth_file}"); > done < <(find "${ED}" -name "*-nspkg.pth" -type f -print0); > if [[ "${#nspkg_pth_files[@]}" -gt 0 ]]; then > einfo; > einfo "Python namespaces:"; > for nspkg_pth_file in "${nspkg_pth_files[@]}"; > do > einfo " '${nspkg_pth_file#${ED%/}}':"; > while read -r line; do > einfo " $(echo "${line}" | sed -e "s/.*types\.ModuleType('\([^']\+\)').*/\1/")"; > done < "${nspkg_pth_file}"; > done; > einfo; > fi; > if [[ -e "${ED}usr/local" ]]; then > die "Illegal installation into /usr/local"; > fi; > default_docs="AUTHORS Change* CHANGELOG CONTRIBUTORS KNOWN_BUGS MAINTAINERS NEWS README* TODO"; > for doc in ${default_docs}; > do > [[ -s "${doc}" ]] && dodoc "${doc}"; > done; > if has "${EAPI:-0}" 0 1 2 3; then > if [[ -n "${DOCS}" ]]; then > dodoc ${DOCS} || die "dodoc failed"; > fi; > else > if [[ -n "${DOCS}" ]]; then > dodoc -r ${DOCS} || die "dodoc failed"; > fi; > fi; > DISTUTILS_SRC_INSTALL_EXECUTED="1" >} >distutils_src_prepare () >{ > if ! has "${EAPI:-0}" 0 1 && [[ "${EBUILD_PHASE}" != "prepare" ]]; then > die "${FUNCNAME}() can be used only in src_prepare() phase"; > fi; > _python_check_python_pkg_setup_execution; > local distribute_setup_existence="0" ez_setup_existence="0"; > if [[ "$#" -ne 0 ]]; then > die "${FUNCNAME}() does not accept arguments"; > fi; > [[ -d ez_setup || -f ez_setup.py ]] && ez_setup_existence="1"; > rm -fr ez_setup*; > if [[ "${ez_setup_existence}" == "1" ]]; then > echo "def use_setuptools(*args, **kwargs): pass" > ez_setup.py; > fi; > [[ -d distribute_setup || -f distribute_setup.py ]] && distribute_setup_existence="1"; > rm -fr distribute_setup*; > if [[ "${distribute_setup_existence}" == "1" ]]; then > echo "def use_setuptools(*args, **kwargs): pass" > distribute_setup.py; > fi; > if [[ -n "${DISTUTILS_USE_SEPARATE_SOURCE_DIRECTORIES}" ]]; then > python_copy_sources; > fi >} >distutils_src_test () >{ > if [[ "${EBUILD_PHASE}" != "test" ]]; then > die "${FUNCNAME}() can be used only in src_test() phase"; > fi; > _python_check_python_pkg_setup_execution; > _python_set_color_variables; > local arguments setup_file; > if [[ "${DISTUTILS_SRC_TEST}" == "setup.py" ]]; then > if _python_package_supporting_installation_for_multiple_python_abis; then > function distutils_testing () > { > _distutils_hook pre; > _distutils_prepare_global_options; > for setup_file in "${DISTUTILS_SETUP_FILES[@]-setup.py}"; > do > _distutils_prepare_current_working_directory "${setup_file}"; > echo ${_BOLD}PYTHONPATH="$(_distutils_get_PYTHONPATH)" "$(PYTHON)" "${setup_file#*|}" "${_DISTUTILS_GLOBAL_OPTIONS[@]}" $([[ -z "${DISTUTILS_USE_SEPARATE_SOURCE_DIRECTORIES}" ]] && echo build -b "$(_distutils_get_build_dir)") test "$@"${_NORMAL}; > PYTHONPATH="$(_distutils_get_PYTHONPATH)" "$(PYTHON)" "${setup_file#*|}" "${_DISTUTILS_GLOBAL_OPTIONS[@]}" $([[ -z "${DISTUTILS_USE_SEPARATE_SOURCE_DIRECTORIES}" ]] && echo build -b "$(_distutils_get_build_dir)") test "$@" || return "$?"; > _distutils_restore_current_working_directory "${setup_file}"; > done; > _distutils_hook post > }; > python_execute_function ${DISTUTILS_USE_SEPARATE_SOURCE_DIRECTORIES:+-s} distutils_testing "$@"; > unset -f distutils_testing; > else > _distutils_prepare_global_options; > for setup_file in "${DISTUTILS_SETUP_FILES[@]-setup.py}"; > do > _distutils_prepare_current_working_directory "${setup_file}"; > echo ${_BOLD}PYTHONPATH="$(_distutils_get_PYTHONPATH)" "$(PYTHON)" "${setup_file#*|}" "${_DISTUTILS_GLOBAL_OPTIONS[@]}" test "$@"${_NORMAL}; > PYTHONPATH="$(_distutils_get_PYTHONPATH)" "$(PYTHON)" "${setup_file#*|}" "${_DISTUTILS_GLOBAL_OPTIONS[@]}" test "$@" || die "Testing failed"; > _distutils_restore_current_working_directory "${setup_file}"; > done; > fi; > else > if [[ "${DISTUTILS_SRC_TEST}" == "nosetests" ]]; then > _distutils_src_test_hook nosetests; > python_execute_nosetests -P '$(_distutils_get_PYTHONPATH)' ${DISTUTILS_USE_SEPARATE_SOURCE_DIRECTORIES:+-s} -- "$@"; > else > if [[ "${DISTUTILS_SRC_TEST}" == "py.test" ]]; then > _distutils_src_test_hook py.test; > python_execute_py.test -P '$(_distutils_get_PYTHONPATH)' ${DISTUTILS_USE_SEPARATE_SOURCE_DIRECTORIES:+-s} -- "$@"; > else > if [[ "${DISTUTILS_SRC_TEST}" =~ ^trial(\ .*)?$ ]]; then > if [[ "${DISTUTILS_SRC_TEST}" == "trial "* ]]; then > arguments="${DISTUTILS_SRC_TEST#trial }"; > else > arguments="${PN}"; > fi; > _distutils_src_test_hook trial; > python_execute_trial -P '$(_distutils_get_PYTHONPATH)' ${DISTUTILS_USE_SEPARATE_SOURCE_DIRECTORIES:+-s} -- ${arguments} "$@"; > else > die "'DISTUTILS_SRC_TEST' variable has unsupported value '${DISTUTILS_SRC_TEST}'"; > fi; > fi; > fi; > fi >} >distutils_src_unpack () >{ > if ! has "${EAPI:-0}" 0 1; then > die "${FUNCNAME}() cannot be used in this EAPI"; > fi; > if [[ "${EBUILD_PHASE}" != "unpack" ]]; then > die "${FUNCNAME}() can be used only in src_unpack() phase"; > fi; > unpack ${A}; > cd "${S}"; > distutils_src_prepare >} >docinto () >{ > if [ "$1" == "/" ]; then > export _E_DOCDESTTREE_=""; > else > export _E_DOCDESTTREE_="$1"; > if ! ___eapi_has_prefix_variables; then > local ED=${D}; > fi; > if [ ! -d "${ED}usr/share/doc/${PF}/${_E_DOCDESTTREE_}" ]; then > install -d "${ED}usr/share/doc/${PF}/${_E_DOCDESTTREE_}"; > local ret=$?; > if [[ $ret -ne 0 ]]; then > __helpers_die "${FUNCNAME[0]} failed"; > return $ret; > fi; > fi; > fi >} >docompress () >{ > ___eapi_has_docompress || die "'docompress' not supported in this EAPI"; > local f g; > if [[ $1 = "-x" ]]; then > shift; > for f in "$@"; > do > f=$(__strip_duplicate_slashes "${f}"); > f=${f%/}; > [[ ${f:0:1} = / ]] || f="/${f}"; > for g in "${PORTAGE_DOCOMPRESS_SKIP[@]}"; > do > [[ ${f} = "${g}" ]] && continue 2; > done; > PORTAGE_DOCOMPRESS_SKIP[${#PORTAGE_DOCOMPRESS_SKIP[@]}]=${f}; > done; > else > for f in "$@"; > do > f=$(__strip_duplicate_slashes "${f}"); > f=${f%/}; > [[ ${f:0:1} = / ]] || f="/${f}"; > for g in "${PORTAGE_DOCOMPRESS[@]}"; > do > [[ ${f} = "${g}" ]] && continue 2; > done; > PORTAGE_DOCOMPRESS[${#PORTAGE_DOCOMPRESS[@]}]=${f}; > done; > fi >} >ebegin () >{ > local msg="$*" dots spaces=${RC_DOT_PATTERN//?/ }; > if [[ -n ${RC_DOT_PATTERN} ]]; then > dots=$(printf "%$(( COLS - 3 - ${#RC_INDENTATION} - ${#msg} - 7 ))s" ''); > dots=${dots//${spaces}/${RC_DOT_PATTERN}}; > msg="${msg}${dots}"; > else > msg="${msg} ..."; > fi; > einfon "${msg}"; > [[ ${RC_ENDCOL} == "yes" ]] && echo; > LAST_E_LEN=$(( 3 + ${#RC_INDENTATION} + ${#msg} )); > LAST_E_CMD="ebegin"; > return 0 >} >econf () >{ > local x; > if ! ___eapi_has_prefix_variables; then > local EPREFIX=; > fi; > function __hasg () > { > local x s=$1; > shift; > for x in "$@"; > do > [[ ${x} == ${s} ]] && echo "${x}" && return 0; > done; > return 1 > }; > function __hasgq () > { > __hasg "$@" > /dev/null > }; > local phase_func=$(__ebuild_arg_to_phase "$EBUILD_PHASE"); > if [[ -n $phase_func ]]; then > if ! ___eapi_has_src_configure; then > [[ $phase_func != src_compile ]] && eqawarn "QA Notice: econf called in" "$phase_func instead of src_compile"; > else > [[ $phase_func != src_configure ]] && eqawarn "QA Notice: econf called in" "$phase_func instead of src_configure"; > fi; > fi; > : ${ECONF_SOURCE:=.}; > if [ -x "${ECONF_SOURCE}/configure" ]; then > if [[ -n $CONFIG_SHELL && "$(head -n1 "$ECONF_SOURCE/configure")" =~ ^'#!'[[:space:]]*/bin/sh([[:space:]]|$) ]]; then > sed -e "1s:^#![[:space:]]*/bin/sh:#!$CONFIG_SHELL:" -i "$ECONF_SOURCE/configure" || die "Substition of shebang in '$ECONF_SOURCE/configure' failed"; > fi; > if [ -e "${EPREFIX}"/usr/share/gnuconfig/ ]; then > find "${WORKDIR}" -type f '(' -name config.guess -o -name config.sub ')' -print0 | while read -r -d '' x; do > __vecho " * econf: updating ${x/${WORKDIR}\/} with ${EPREFIX}/usr/share/gnuconfig/${x##*/}"; > cp -f "${EPREFIX}"/usr/share/gnuconfig/"${x##*/}" "${x}"; > done; > fi; > if ___eapi_econf_passes_--disable-dependency-tracking || ___eapi_econf_passes_--disable-silent-rules; then > local conf_help=$("${ECONF_SOURCE}/configure" --help 2>/dev/null); > if ___eapi_econf_passes_--disable-dependency-tracking; then > case "${conf_help}" in > *--disable-dependency-tracking*) > set -- --disable-dependency-tracking "$@" > ;; > esac; > fi; > if ___eapi_econf_passes_--disable-silent-rules; then > case "${conf_help}" in > *--disable-silent-rules*) > set -- --disable-silent-rules "$@" > ;; > esac; > fi; > fi; > local CONF_LIBDIR LIBDIR_VAR="LIBDIR_${ABI}"; > if [[ -n ${ABI} && -n ${!LIBDIR_VAR} ]]; then > CONF_LIBDIR=${!LIBDIR_VAR}; > fi; > if [[ -n ${CONF_LIBDIR} ]] && ! __hasgq --libdir=\* "$@"; then > export CONF_PREFIX=$(__hasg --exec-prefix=\* "$@"); > [[ -z ${CONF_PREFIX} ]] && CONF_PREFIX=$(__hasg --prefix=\* "$@"); > : ${CONF_PREFIX:=${EPREFIX}/usr}; > CONF_PREFIX=${CONF_PREFIX#*=}; > [[ ${CONF_PREFIX} != /* ]] && CONF_PREFIX="/${CONF_PREFIX}"; > [[ ${CONF_LIBDIR} != /* ]] && CONF_LIBDIR="/${CONF_LIBDIR}"; > set -- --libdir="$(__strip_duplicate_slashes "${CONF_PREFIX}${CONF_LIBDIR}")" "$@"; > fi; > set -- --prefix="${EPREFIX}"/usr ${CBUILD:+--build=${CBUILD}} --host=${CHOST} ${CTARGET:+--target=${CTARGET}} --mandir="${EPREFIX}"/usr/share/man --infodir="${EPREFIX}"/usr/share/info --datadir="${EPREFIX}"/usr/share --sysconfdir="${EPREFIX}"/etc --localstatedir="${EPREFIX}"/var/lib "$@" ${EXTRA_ECONF}; > __vecho "${ECONF_SOURCE}/configure" "$@"; > if ! "${ECONF_SOURCE}/configure" "$@"; then > if [ -s config.log ]; then > echo; > echo "!!! Please attach the following file when seeking support:"; > echo "!!! ${PWD}/config.log"; > fi; > die "econf failed"; > fi; > else > if [ -f "${ECONF_SOURCE}/configure" ]; then > die "configure is not executable"; > else > die "no configure script found"; > fi; > fi >} >econf_build () >{ > tc-env_build econf --build=${CBUILD:-${CHOST}} "$@" >} >eend () >{ > local retval=${1:-0}; > shift; > __eend ${retval} eerror "$*"; > LAST_E_CMD="eend"; > return ${retval} >} >eerror () >{ > __elog_base ERROR "$*"; > [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo; > echo -e "$@" | while read -r; do > echo " $BAD*$NORMAL $RC_INDENTATION$REPLY" 1>&2; > done; > LAST_E_CMD="eerror"; > return 0 >} >einfo () >{ > __elog_base INFO "$*"; > [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo; > echo -e "$@" | while read -r; do > echo " $GOOD*$NORMAL $REPLY"; > done; > LAST_E_CMD="einfo"; > return 0 >} >einfon () >{ > __elog_base INFO "$*"; > [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo; > echo -ne " ${GOOD}*${NORMAL} $*"; > LAST_E_CMD="einfon"; > return 0 >} >einstall () >{ > local LOCAL_EXTRA_EINSTALL="${EXTRA_EINSTALL}"; > if ! ___eapi_has_prefix_variables; then > local ED=${D}; > fi; > LIBDIR_VAR="LIBDIR_${ABI}"; > if [ -n "${ABI}" -a -n "${!LIBDIR_VAR}" ]; then > CONF_LIBDIR="${!LIBDIR_VAR}"; > fi; > unset LIBDIR_VAR; > if [ -n "${CONF_LIBDIR}" ] && [ "${CONF_PREFIX:+set}" = set ]; then > EI_DESTLIBDIR="${D}/${CONF_PREFIX}/${CONF_LIBDIR}"; > EI_DESTLIBDIR="$(__strip_duplicate_slashes "${EI_DESTLIBDIR}")"; > LOCAL_EXTRA_EINSTALL="libdir=${EI_DESTLIBDIR} ${LOCAL_EXTRA_EINSTALL}"; > unset EI_DESTLIBDIR; > fi; > if [ -f ./[mM]akefile -o -f ./GNUmakefile ]; then > if [ "${PORTAGE_DEBUG}" == "1" ]; then > ${MAKE:-make} -n prefix="${ED}usr" datadir="${ED}usr/share" infodir="${ED}usr/share/info" localstatedir="${ED}var/lib" mandir="${ED}usr/share/man" sysconfdir="${ED}etc" ${LOCAL_EXTRA_EINSTALL} ${MAKEOPTS} ${EXTRA_EMAKE} -j1 "$@" install; > fi; > ${MAKE:-make} prefix="${ED}usr" datadir="${ED}usr/share" infodir="${ED}usr/share/info" localstatedir="${ED}var/lib" mandir="${ED}usr/share/man" sysconfdir="${ED}etc" ${LOCAL_EXTRA_EINSTALL} ${MAKEOPTS} ${EXTRA_EMAKE} -j1 "$@" install || die "einstall failed"; > else > die "no Makefile found"; > fi >} >elog () >{ > __elog_base LOG "$*"; > [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo; > echo -e "$@" | while read -r; do > echo " $GOOD*$NORMAL $REPLY"; > done; > LAST_E_CMD="elog"; > return 0 >} >eqawarn () >{ > __elog_base QA "$*"; > [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo; > echo -e "$@" | while read -r; do > __vecho " $WARN*$NORMAL $REPLY" 1>&2; > done; > LAST_E_CMD="eqawarn"; > return 0 >} >ewarn () >{ > __elog_base WARN "$*"; > [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo; > echo -e "$@" | while read -r; do > echo " $WARN*$NORMAL $RC_INDENTATION$REPLY" 1>&2; > done; > LAST_E_CMD="ewarn"; > return 0 >} >exeinto () >{ > if [ "$1" == "/" ]; then > export _E_EXEDESTTREE_=""; > else > export _E_EXEDESTTREE_="$1"; > if ! ___eapi_has_prefix_variables; then > local ED=${D}; > fi; > if [ ! -d "${ED}${_E_EXEDESTTREE_}" ]; then > install -d "${ED}${_E_EXEDESTTREE_}"; > local ret=$?; > if [[ $ret -ne 0 ]]; then > __helpers_die "${FUNCNAME[0]} failed"; > return $ret; > fi; > fi; > fi >} >exeopts () >{ > export EXEOPTIONS="$@"; > has -s ${EXEOPTIONS} && die "Never call exeopts() with -s" >} >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); > return $([[ "${directive/\{!fstrict-overflow:}" != "${directive}" ]]) >} >gcc-specs-now () >{ > local directive; > directive=$(gcc-specs-directive link_command); > return $([[ "${directive/\{!nonow:}" != "${directive}" ]]) >} >gcc-specs-pie () >{ > local directive; > directive=$(gcc-specs-directive cc1); > return $([[ "${directive/\{!nopie:}" != "${directive}" ]]) >} >gcc-specs-relro () >{ > local directive; > directive=$(gcc-specs-directive link_command); > return $([[ "${directive/\{!norelro:}" != "${directive}" ]]) >} >gcc-specs-ssp () >{ > local directive; > directive=$(gcc-specs-directive cc1); > return $([[ "${directive/\{!fno-stack-protector:}" != "${directive}" ]]) >} >gcc-specs-ssp-to-all () >{ > local directive; > directive=$(gcc-specs-directive cc1); > return $([[ "${directive/\{!fno-stack-protector-all:}" != "${directive}" ]]) >} >gcc-version () >{ > _gcc_fullversion '$1.$2' "$@" >} >gen_usr_ldscript () >{ > local lib libdir=$(get_libdir) output_format="" auto=false suffix=$(get_libname); > [[ -z ${ED+set} ]] && local ED=${D%/}${EPREFIX}/; > tc-is-static-only && return; > case ${CTARGET:-${CHOST}} in > *-darwin*) > > ;; > *linux* | *-freebsd* | *-openbsd* | *-netbsd*) > use prefix && return 0 > ;; > *) > return 0 > ;; > esac; > dodir /usr/${libdir}; > if [[ $1 == "-a" ]]; then > auto=true; > shift; > dodir /${libdir}; > fi; > output_format=$($(tc-getCC) ${CFLAGS} ${LDFLAGS} -Wl,--verbose 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 http://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_KV () >{ > [[ -z ${_RC_GET_KV_CACHE} ]] && _RC_GET_KV_CACHE=$(uname -r); > echo $(KV_to_int "${_RC_GET_KV_CACHE}"); > return $? >} >get_abi_CFLAGS () >{ > get_abi_var CFLAGS "$@" >} >get_abi_CHOST () >{ > get_abi_var CHOST "$@" >} >get_abi_CTARGET () >{ > get_abi_var CTARGET "$@" >} >get_abi_FAKE_TARGETS () >{ > get_abi_var FAKE_TARGETS "$@" >} >get_abi_LDFLAGS () >{ > get_abi_var LDFLAGS "$@" >} >get_abi_LIBDIR () >{ > get_abi_var LIBDIR "$@" >} >get_abi_var () >{ > local flag=$1; > local abi=${2:-${ABI:-${DEFAULT_ABI:-default}}}; > local var="${flag}_${abi}"; > echo ${!var} >} >get_all_abis () >{ > local x order="" mvar dvar; > mvar="MULTILIB_ABIS"; > dvar="DEFAULT_ABI"; > if [[ -n $1 ]]; then > mvar="$1_${mvar}"; > dvar="$1_${dvar}"; > fi; > if [[ -z ${!mvar} ]]; then > echo "default"; > return 0; > fi; > for x in ${!mvar}; > do > if [[ ${x} != ${!dvar} ]]; then > order="${order:+${order} }${x}"; > fi; > done; > order="${order:+${order} }${!dvar}"; > echo ${order}; > return 0 >} >get_all_libdirs () >{ > local libdirs abi; > for abi in ${MULTILIB_ABIS}; > do > libdirs+=" $(get_abi_LIBDIR ${abi})"; > done; > [[ " ${libdirs} " != *" lib "* ]] && libdirs+=" lib"; > echo "${libdirs}" >} >get_install_abis () >{ > local x order=""; > if [[ -z ${MULTILIB_ABIS} ]]; then > echo "default"; > return 0; > fi; > if [[ ${EMULTILIB_PKG} == "true" ]]; then > for x in ${MULTILIB_ABIS}; > do > if [[ ${x} != "${DEFAULT_ABI}" ]]; then > has ${x} ${ABI_DENY} || order="${order} ${x}"; > fi; > done; > has ${DEFAULT_ABI} ${ABI_DENY} || order="${order} ${DEFAULT_ABI}"; > if [[ -n ${ABI_ALLOW} ]]; then > local ordera=""; > for x in ${order}; > do > if has ${x} ${ABI_ALLOW}; then > ordera="${ordera} ${x}"; > fi; > done; > order=${ordera}; > fi; > else > order=${DEFAULT_ABI}; > fi; > if [[ -z ${order} ]]; then > die "The ABI list is empty. Are you using a proper multilib profile? Perhaps your USE flags or MULTILIB_ABIS are too restrictive for this package."; > fi; > echo ${order}; > return 0 >} >get_libdir () >{ > local CONF_LIBDIR; > if [ -n "${CONF_LIBDIR_OVERRIDE}" ]; then > echo ${CONF_LIBDIR_OVERRIDE}; > else > get_abi_LIBDIR; > fi >} >get_libname () >{ > local libname; > local ver=$1; > case ${CHOST} in > *-cygwin | 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 > *-darwin*) > echo ".${ver}.${libname}" > ;; > *-mint*) > echo ".${libname}" > ;; > *) > echo ".${libname}.${ver}" > ;; > esac; > done; > fi >} >get_modname () >{ > local modname; > local ver=$1; > case ${CHOST} in > *-darwin*) > modname="bundle" > ;; > *) > modname="so" > ;; > esac; > echo ".${modname}" >} >has () >{ > local needle=$1; > shift; > local x; > for x in "$@"; > do > [ "${x}" = "${needle}" ] && return 0; > done; > return 1 >} >has_multilib_profile () >{ > [ -n "${MULTILIB_ABIS}" -a "${MULTILIB_ABIS}" != "${MULTILIB_ABIS/ /}" ] >} >has_version () >{ > local atom eroot host_root=false root=${ROOT}; > if [[ $1 == --host-root ]]; then > host_root=true; > shift; > fi; > atom=$1; > shift; > [ $# -gt 0 ] && die "${FUNCNAME[0]}: unused argument(s): $*"; > if ${host_root}; then > if ! ___eapi_best_version_and_has_version_support_--host-root; then > die "${FUNCNAME[0]}: option --host-root is not supported with EAPI ${EAPI}"; > fi; > root=/; > fi; > if ___eapi_has_prefix_variables; then > eroot=${root%/}${EPREFIX}/; > else > eroot=${root}; > fi; > if [[ -n $PORTAGE_IPC_DAEMON ]]; then > "$PORTAGE_BIN_PATH"/ebuild-ipc has_version "${eroot}" "${atom}"; > else > PYTHONPATH=${PORTAGE_PYM_PATH}${PYTHONPATH:+:}${PYTHONPATH} "${PORTAGE_PYTHON:-/usr/bin/python}" "${PORTAGE_BIN_PATH}/portageq" has_version "${eroot}" "${atom}"; > fi; > local retval=$?; > case "${retval}" in > 0 | 1) > return ${retval} > ;; > 2) > die "${FUNCNAME[0]}: invalid atom: ${atom}" > ;; > *) > if [[ -n ${PORTAGE_IPC_DAEMON} ]]; then > die "${FUNCNAME[0]}: unexpected ebuild-ipc exit code: ${retval}"; > else > die "${FUNCNAME[0]}: unexpected portageq exit code: ${retval}"; > fi > ;; > esac >} >hasq () >{ > has $EBUILD_PHASE prerm postrm || eqawarn "QA Notice: The 'hasq' function is deprecated (replaced by 'has')"; > has "$@" >} >hasv () >{ > if has "$@"; then > echo "$1"; > return 0; > fi; > return 1 >} >inherit () >{ > ECLASS_DEPTH=$(($ECLASS_DEPTH + 1)); > if [[ ${ECLASS_DEPTH} > 1 ]]; then > debug-print "*** Multiple Inheritence (Level: ${ECLASS_DEPTH})"; > fi; > if [[ -n $ECLASS && -n ${!__export_funcs_var} ]]; then > echo "QA Notice: EXPORT_FUNCTIONS is called before inherit in" "$ECLASS.eclass. For compatibility with <=portage-2.1.6.7," "only call EXPORT_FUNCTIONS after inherit(s)." | fmt -w 75 | while read -r; do > eqawarn "$REPLY"; > done; > fi; > local location; > local olocation; > local x; > local PECLASS=$ECLASS; > local prev_export_funcs_var=$__export_funcs_var; > local B_IUSE; > local B_REQUIRED_USE; > local B_DEPEND; > local B_RDEPEND; > local B_PDEPEND; > local B_HDEPEND; > while [ "$1" ]; do > location="${ECLASSDIR}/${1}.eclass"; > olocation=""; > export ECLASS="$1"; > __export_funcs_var=__export_functions_$ECLASS_DEPTH; > unset $__export_funcs_var; > if [ "${EBUILD_PHASE}" != "depend" ] && [ "${EBUILD_PHASE}" != "nofetch" ] && [[ ${EBUILD_PHASE} != *rm ]] && [[ ${EMERGE_FROM} != "binary" ]]; then > if ! has $ECLASS $INHERITED $__INHERITED_QA_CACHE; then > eqawarn "QA Notice: ECLASS '$ECLASS' inherited illegally in $CATEGORY/$PF $EBUILD_PHASE"; > fi; > fi; > if [ -n "$PORTDIR_OVERLAY" ]; then > local overlay; > for overlay in ${PORTDIR_OVERLAY}; > do > olocation="${overlay}/eclass/${1}.eclass"; > if [ -e "$olocation" ]; then > location="${olocation}"; > debug-print " eclass exists: ${location}"; > fi; > done; > fi; > debug-print "inherit: $1 -> $location"; > [ ! -e "$location" ] && die "${1}.eclass could not be found by inherit()"; > if [ "${location}" == "${olocation}" ] && ! has "${location}" ${EBUILD_OVERLAY_ECLASSES}; then > EBUILD_OVERLAY_ECLASSES="${EBUILD_OVERLAY_ECLASSES} ${location}"; > fi; > set -f; > unset B_IUSE B_REQUIRED_USE B_DEPEND B_RDEPEND B_PDEPEND B_HDEPEND; > [ "${IUSE+set}" = set ] && B_IUSE="${IUSE}"; > [ "${REQUIRED_USE+set}" = set ] && B_REQUIRED_USE="${REQUIRED_USE}"; > [ "${DEPEND+set}" = set ] && B_DEPEND="${DEPEND}"; > [ "${RDEPEND+set}" = set ] && B_RDEPEND="${RDEPEND}"; > [ "${PDEPEND+set}" = set ] && B_PDEPEND="${PDEPEND}"; > [ "${HDEPEND+set}" = set ] && B_HDEPEND="${HDEPEND}"; > unset IUSE REQUIRED_USE DEPEND RDEPEND PDEPEND HDEPEND; > set +f; > __qa_source "$location" || die "died sourcing $location in inherit()"; > set -f; > [ "${IUSE+set}" = set ] && E_IUSE+="${E_IUSE:+ }${IUSE}"; > [ "${REQUIRED_USE+set}" = set ] && E_REQUIRED_USE+="${E_REQUIRED_USE:+ }${REQUIRED_USE}"; > [ "${DEPEND+set}" = set ] && E_DEPEND+="${E_DEPEND:+ }${DEPEND}"; > [ "${RDEPEND+set}" = set ] && E_RDEPEND+="${E_RDEPEND:+ }${RDEPEND}"; > [ "${PDEPEND+set}" = set ] && E_PDEPEND+="${E_PDEPEND:+ }${PDEPEND}"; > [ "${HDEPEND+set}" = set ] && E_HDEPEND+="${E_HDEPEND:+ }${HDEPEND}"; > [ "${B_IUSE+set}" = set ] && IUSE="${B_IUSE}"; > [ "${B_IUSE+set}" = set ] || unset IUSE; > [ "${B_REQUIRED_USE+set}" = set ] && REQUIRED_USE="${B_REQUIRED_USE}"; > [ "${B_REQUIRED_USE+set}" = set ] || unset REQUIRED_USE; > [ "${B_DEPEND+set}" = set ] && DEPEND="${B_DEPEND}"; > [ "${B_DEPEND+set}" = set ] || unset DEPEND; > [ "${B_RDEPEND+set}" = set ] && RDEPEND="${B_RDEPEND}"; > [ "${B_RDEPEND+set}" = set ] || unset RDEPEND; > [ "${B_PDEPEND+set}" = set ] && PDEPEND="${B_PDEPEND}"; > [ "${B_PDEPEND+set}" = set ] || unset PDEPEND; > [ "${B_HDEPEND+set}" = set ] && HDEPEND="${B_HDEPEND}"; > [ "${B_HDEPEND+set}" = set ] || unset HDEPEND; > set +f; > if [[ -n ${!__export_funcs_var} ]]; then > for x in ${!__export_funcs_var}; > do > debug-print "EXPORT_FUNCTIONS: $x -> ${ECLASS}_$x"; > declare -F "${ECLASS}_$x" > /dev/null || die "EXPORT_FUNCTIONS: ${ECLASS}_$x is not defined"; > eval "$x() { ${ECLASS}_$x \"\$@\" ; }" > /dev/null; > done; > fi; > unset $__export_funcs_var; > has $1 $INHERITED || export INHERITED="$INHERITED $1"; > shift; > done; > ((--ECLASS_DEPTH)); > if (( ECLASS_DEPTH > 0 )); then > export ECLASS=$PECLASS; > __export_funcs_var=$prev_export_funcs_var; > else > unset ECLASS __export_funcs_var; > fi; > return 0 >} >insinto () >{ > if [ "$1" == "/" ]; then > export INSDESTTREE=""; > else > export INSDESTTREE=$1; > if ! ___eapi_has_prefix_variables; then > local ED=${D}; > fi; > if [ ! -d "${ED}${INSDESTTREE}" ]; then > install -d "${ED}${INSDESTTREE}"; > local ret=$?; > if [[ $ret -ne 0 ]]; then > __helpers_die "${FUNCNAME[0]} failed"; > return $ret; > fi; > fi; > fi >} >insopts () >{ > export INSOPTIONS="$@"; > has -s ${INSOPTIONS} && die "Never call insopts() with -s" >} >into () >{ > if [ "$1" == "/" ]; then > export DESTTREE=""; > else > export DESTTREE=$1; > if ! ___eapi_has_prefix_variables; then > local ED=${D}; > fi; > if [ ! -d "${ED}${DESTTREE}" ]; then > install -d "${ED}${DESTTREE}"; > local ret=$?; > if [[ $ret -ne 0 ]]; then > __helpers_die "${FUNCNAME[0]} failed"; > return $ret; > fi; > fi; > fi >} >is_final_abi () >{ > has_multilib_profile || return 0; > set -- $(get_install_abis); > local LAST_ABI=$#; > [[ ${!LAST_ABI} == ${ABI} ]] >} >keepdir () >{ > dodir "$@"; > local x; > if ! ___eapi_has_prefix_variables; then > local ED=${D}; > fi; > if [ "$1" == "-R" ] || [ "$1" == "-r" ]; then > shift; > find "$@" -type d -printf "${ED}%p/.keep_${CATEGORY}_${PN}-${SLOT%/*}\n" | tr "\n" "\0" | while read -r -d ''; do > >> "$REPLY" || die "Failed to recursively create .keep files"; > done; > else > for x in "$@"; > do > >> "${ED}${x}/.keep_${CATEGORY}_${PN}-${SLOT%/*}" || die "Failed to create .keep in ${ED}${x}"; > done; > fi >} >libopts () >{ > export LIBOPTIONS="$@"; > has -s ${LIBOPTIONS} && die "Never call libopts() with -s" >} >multilib_env () >{ > local CTARGET=${1:-${CTARGET}}; > case ${CTARGET} in > 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*) > export CFLAGS_o32=${CFLAGS_o32--mabi=32}; > export CHOST_o32=${CTARGET/mips64/mips}; > 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} > ;; > s390x*) > export CFLAGS_s390=${CFLAGS_s390--m31}; > export CHOST_s390=${CTARGET/s390x/s390}; > export CTARGET_s390=${CHOST_s390}; > export LIBDIR_s390="lib"; > export CFLAGS_s390x=${CFLAGS_s390x--m64}; > export CHOST_s390x=${CTARGET}; > export CTARGET_s390x=${CHOST_s390x}; > export LIBDIR_s390x="lib64"; > : ${MULTILIB_ABIS=s390x s390}; > : ${DEFAULT_ABI=s390x} > ;; > sparc64*) > export CFLAGS_sparc32=${CFLAGS_sparc32--m32}; > export CHOST_sparc32=${CTARGET/sparc64/sparc}; > export CTARGET_sparc32=${CHOST_sparc32}; > export LIBDIR_sparc32="lib"; > export CFLAGS_sparc64=${CFLAGS_sparc64--m64}; > export CHOST_sparc64=${CTARGET}; > export CTARGET_sparc64=${CHOST_sparc64}; > export LIBDIR_sparc64="lib64"; > : ${MULTILIB_ABIS=sparc64 sparc32}; > : ${DEFAULT_ABI=sparc64} > ;; > *) > : ${MULTILIB_ABIS=default}; > : ${DEFAULT_ABI=default} > ;; > esac; > export MULTILIB_ABIS DEFAULT_ABI >} >multilib_toolchain_setup () >{ > local v vv; > export ABI=$1; > if [[ ${__DEFAULT_ABI_SAVED} == "true" ]]; then > for v in CHOST CBUILD AS CC CXX LD; > do > vv="__abi_saved_${v}"; > export ${v}="${!vv}"; > unset ${vv}; > done; > unset __DEFAULT_ABI_SAVED; > fi; > if [[ ${ABI} != ${DEFAULT_ABI} ]]; then > for v in CHOST CBUILD AS CC CXX LD; > do > export __abi_saved_${v}="${!v}"; > done; > export __DEFAULT_ABI_SAVED="true"; > export CHOST=$(get_abi_CHOST ${DEFAULT_ABI}); > export CC="$(tc-getCC) $(get_abi_CFLAGS)"; > export CXX="$(tc-getCXX) $(get_abi_CFLAGS)"; > export LD="$(tc-getLD) $(get_abi_LDFLAGS)"; > export CHOST=$(get_abi_CHOST $1); > export CBUILD=$(get_abi_CHOST $1); > fi >} >nonfatal () >{ > if ! ___eapi_has_nonfatal; then > die "$FUNCNAME() not supported in this EAPI"; > fi; > if [[ $# -lt 1 ]]; then > die "$FUNCNAME(): Missing argument"; > fi; > PORTAGE_NONFATAL=1 "$@" >} >number_abis () >{ > set -- `get_install_abis`; > echo $# >} >pkg_nofetch () >{ > __eapi0_pkg_nofetch "$@" >} >pkg_postinst () >{ > distutils_pkg_postinst "$@" >} >pkg_postrm () >{ > distutils_pkg_postrm "$@" >} >pkg_setup () >{ > python_pkg_setup "$@" >} >portageq () >{ > PYTHONPATH=${PORTAGE_PYM_PATH}${PYTHONPATH:+:}${PYTHONPATH} "${PORTAGE_PYTHON:-/usr/bin/python}" "${PORTAGE_BIN_PATH}/portageq" "$@" >} >python_clean_installation_image () >{ > if [[ "${EBUILD_PHASE}" != "install" ]]; then > die "${FUNCNAME}() can be used only in src_install() phase"; > fi; > _python_check_python_pkg_setup_execution; > _python_initialize_prefix_variables; > local file files=() quiet="0"; > while (($#)); do > case "$1" in > -q | --quiet) > quiet="1" > ;; > -*) > die "${FUNCNAME}(): Unrecognized option '$1'" > ;; > *) > die "${FUNCNAME}(): Invalid usage" > ;; > esac; > shift; > done; > while read -d '' -r file; do > files+=("${file}"); > done < <(find "${ED}" "(" -name "*.py[co]" -o -name "*\$py.class" ")" -type f -print0); > if [[ "${#files[@]}" -gt 0 ]]; then > if [[ "${quiet}" == "0" ]]; then > ewarn "Deleting byte-compiled Python modules needlessly generated by build system:"; > fi; > for file in "${files[@]}"; > do > if [[ "${quiet}" == "0" ]]; then > ewarn " ${file}"; > fi; > rm -f "${file}"; > if [[ "${file%/*}" == *"/__pycache__" ]]; then > rmdir "${file%/*}" 2> /dev/null; > fi; > done; > fi; > function python_clean_sitedirs () > { > if [[ -d "${ED}$(python_get_sitedir)" ]]; then > find "${ED}$(python_get_sitedir)" "(" -name "*.c" -o -name "*.h" -o -name "*.la" ")" -type f -print0 | xargs -0 rm -f; > fi > }; > if _python_package_supporting_installation_for_multiple_python_abis; then > python_execute_function -q python_clean_sitedirs; > else > python_clean_sitedirs; > fi; > unset -f python_clean_sitedirs >} >python_clean_py-compile_files () >{ > _python_check_python_pkg_setup_execution; > local file files=() quiet="0"; > while (($#)); do > case "$1" in > -q | --quiet) > quiet="1" > ;; > -*) > die "${FUNCNAME}(): Unrecognized option '$1'" > ;; > *) > die "${FUNCNAME}(): Invalid usage" > ;; > esac; > shift; > done; > while read -d '' -r file; do > files+=("${file#./}"); > done < <(find -name py-compile -type f -print0); > for file in "${files[@]}"; > do > if [[ "${quiet}" == "0" ]]; then > einfo "Cleaning '${file}' file"; > fi; > echo "#!/bin/sh" > "${file}"; > done >} >python_convert_shebangs () >{ > _python_check_python_pkg_setup_execution; > local argument file files=() only_executables="0" python_interpreter quiet="0" recursive="0" shebangs_converted="0"; > while (($#)); do > case "$1" in > -r | --recursive) > recursive="1" > ;; > -q | --quiet) > quiet="1" > ;; > -x | --only-executables) > only_executables="1" > ;; > --) > shift; > break > ;; > -*) > die "${FUNCNAME}(): Unrecognized option '$1'" > ;; > *) > break > ;; > esac; > shift; > done; > if [[ "$#" -eq 0 ]]; then > die "${FUNCNAME}(): Missing Python version and files or directories"; > else > if [[ "$#" -eq 1 ]]; then > die "${FUNCNAME}(): Missing files or directories"; > fi; > fi; > if [[ -n "$(_python_get_implementation --ignore-invalid "$1")" ]]; then > python_interpreter="$(PYTHON "$1")"; > else > python_interpreter="python$1"; > fi; > shift; > for argument in "$@"; > do > if [[ ! -e "${argument}" ]]; then > die "${FUNCNAME}(): '${argument}' does not exist"; > else > if [[ -f "${argument}" ]]; then > files+=("${argument}"); > else > if [[ -d "${argument}" ]]; then > if [[ "${recursive}" == "1" ]]; then > while read -d '' -r file; do > files+=("${file}"); > done < <(find "${argument}" $([[ "${only_executables}" == "1" ]] && echo -perm /111) -type f -print0); > else > die "${FUNCNAME}(): '${argument}' is not a regular file"; > fi; > else > die "${FUNCNAME}(): '${argument}' is not a regular file or a directory"; > fi; > fi; > fi; > done; > for file in "${files[@]}"; > do > file="${file#./}"; > [[ "${only_executables}" == "1" && ! -x "${file}" ]] && continue; > if [[ "$(head -n1 "${file}")" =~ ${_PYTHON_SHEBANG_BASE_PART_REGEX} ]]; then > [[ "$(sed -ne "2p" "${file}")" =~ ^"# Gentoo '".*"' wrapper script generated by python_generate_wrapper_scripts()"$ ]] && continue; > shebangs_converted="1"; > if [[ "${quiet}" == "0" ]]; then > einfo "Converting shebang in '${file}'"; > fi; > sed -e "1s:^#![[:space:]]*\([^[:space:]]*/usr/bin/env[[:space:]]\)\?[[:space:]]*\([^[:space:]]*/\)\?\(jython\|pypy-c\|python\)\([[:digit:]]\+\(\.[[:digit:]]\+\)\?\)\?\(\$\|[[:space:]].*\):#!\1\2${python_interpreter}\6:" -i "${file}" || die "Conversion of shebang in '${file}' failed"; > fi; > done; > if [[ "${shebangs_converted}" == "0" ]]; then > ewarn "${FUNCNAME}(): Python scripts not found"; > fi >} >python_copy_sources () >{ > if ! _python_package_supporting_installation_for_multiple_python_abis; then > die "${FUNCNAME}() cannot be used in ebuilds of packages not supporting installation for multiple Python ABIs"; > fi; > _python_check_python_pkg_setup_execution; > local dir dirs=() PYTHON_ABI; > if [[ "$#" -eq 0 ]]; then > if [[ "${WORKDIR}" == "${S}" ]]; then > die "${FUNCNAME}() cannot be used with current value of S variable"; > fi; > dirs=("${S%/}"); > else > dirs=("$@"); > fi; > _python_calculate_PYTHON_ABIS; > for PYTHON_ABI in ${PYTHON_ABIS}; > do > for dir in "${dirs[@]}"; > do > cp -pr "${dir}" "${dir}-${PYTHON_ABI}" > /dev/null || die "Copying of sources failed"; > done; > done >} >python_disable_pyc () >{ > _python_check_python_pkg_setup_execution; > if [[ "$#" -ne 0 ]]; then > die "${FUNCNAME}() does not accept arguments"; > fi; > export PYTHONDONTWRITEBYTECODE="1" >} >python_enable_pyc () >{ > _python_check_python_pkg_setup_execution; > if [[ "$#" -ne 0 ]]; then > die "${FUNCNAME}() does not accept arguments"; > fi; > unset PYTHONDONTWRITEBYTECODE >} >python_execute_function () >{ > if ! _python_package_supporting_installation_for_multiple_python_abis; then > die "${FUNCNAME}() cannot be used in ebuilds of packages not supporting installation for multiple Python ABIs"; > fi; > _python_check_python_pkg_setup_execution; > _python_set_color_variables; > local action action_message action_message_template default_function="0" failure_message failure_message_template final_ABI="0" function iterated_PYTHON_ABIS nonfatal="0" previous_directory previous_directory_stack previous_directory_stack_length PYTHON_ABI quiet="0" return_code separate_build_dirs="0" source_dir; > while (($#)); do > case "$1" in > --action-message) > action_message_template="$2"; > shift > ;; > -d | --default-function) > default_function="1" > ;; > --failure-message) > failure_message_template="$2"; > shift > ;; > -f | --final-ABI) > final_ABI="1" > ;; > --nonfatal) > nonfatal="1" > ;; > -q | --quiet) > quiet="1" > ;; > -s | --separate-build-dirs) > separate_build_dirs="1" > ;; > --source-dir) > source_dir="$2"; > shift > ;; > --) > shift; > break > ;; > -*) > die "${FUNCNAME}(): Unrecognized option '$1'" > ;; > *) > break > ;; > esac; > shift; > done; > if [[ -n "${source_dir}" && "${separate_build_dirs}" == 0 ]]; then > die "${FUNCNAME}(): '--source-dir' option can be specified only with '--separate-build-dirs' option"; > fi; > if [[ "${default_function}" == "0" ]]; then > if [[ "$#" -eq 0 ]]; then > die "${FUNCNAME}(): Missing function name"; > fi; > function="$1"; > shift; > if [[ -z "$(type -t "${function}")" ]]; then > die "${FUNCNAME}(): '${function}' function is not defined"; > fi; > else > if has "${EAPI:-0}" 0 1; then > die "${FUNCNAME}(): '--default-function' option cannot be used in this EAPI"; > fi; > if [[ "${EBUILD_PHASE}" == "configure" ]]; then > if has "${EAPI}" 2 3; then > function python_default_function () > { > econf "$@" > }; > else > function python_default_function () > { > nonfatal econf "$@" > }; > fi; > else > if [[ "${EBUILD_PHASE}" == "compile" ]]; then > function python_default_function () > { > emake "$@" > }; > else > if [[ "${EBUILD_PHASE}" == "test" ]]; then > function python_default_function () > { > local emake_cmd="${MAKE:-make} ${MAKEOPTS} ${EXTRA_EMAKE}"; > if ${emake_cmd} -j1 -n check &>/dev/null; then > ${emake_cmd} -j1 check "$@"; > else > if ${emake_cmd} -j1 -n test &>/dev/null; then > ${emake_cmd} -j1 test "$@"; > fi; > fi > }; > else > if [[ "${EBUILD_PHASE}" == "install" ]]; then > function python_default_function () > { > emake DESTDIR="${D}" install "$@" > }; > else > die "${FUNCNAME}(): '--default-function' option cannot be used in this ebuild phase"; > fi; > fi; > fi; > fi; > function="python_default_function"; > fi; > if _python_abi-specific_local_scope; then > die "${FUNCNAME}(): Invalid call stack"; > fi; > if [[ "${quiet}" == "0" ]]; then > [[ "${EBUILD_PHASE}" == "setup" ]] && action="Setting up"; > [[ "${EBUILD_PHASE}" == "unpack" ]] && action="Unpacking"; > [[ "${EBUILD_PHASE}" == "prepare" ]] && action="Preparation"; > [[ "${EBUILD_PHASE}" == "configure" ]] && action="Configuration"; > [[ "${EBUILD_PHASE}" == "compile" ]] && action="Building"; > [[ "${EBUILD_PHASE}" == "test" ]] && action="Testing"; > [[ "${EBUILD_PHASE}" == "install" ]] && action="Installation"; > [[ "${EBUILD_PHASE}" == "preinst" ]] && action="Preinstallation"; > [[ "${EBUILD_PHASE}" == "postinst" ]] && action="Postinstallation"; > [[ "${EBUILD_PHASE}" == "prerm" ]] && action="Preuninstallation"; > [[ "${EBUILD_PHASE}" == "postrm" ]] && action="Postuninstallation"; > fi; > _python_calculate_PYTHON_ABIS; > if [[ "${final_ABI}" == "1" ]]; then > iterated_PYTHON_ABIS="$(PYTHON -f --ABI)"; > else > iterated_PYTHON_ABIS="${PYTHON_ABIS}"; > fi; > for PYTHON_ABI in ${iterated_PYTHON_ABIS}; > do > if [[ "${EBUILD_PHASE}" == "test" ]] && _python_check_python_abi_matching --patterns-list "${PYTHON_ABI}" "${PYTHON_TESTS_RESTRICTED_ABIS}"; then > if [[ "${quiet}" == "0" ]]; then > echo " ${_GREEN}*${_NORMAL} ${_BLUE}Testing of ${CATEGORY}/${PF} with $(python_get_implementation_and_version) skipped${_NORMAL}"; > fi; > continue; > fi; > _python_prepare_flags; > if [[ "${quiet}" == "0" ]]; then > if [[ -n "${action_message_template}" ]]; then > eval "action_message=\"${action_message_template}\""; > else > action_message="${action} of ${CATEGORY}/${PF} with $(python_get_implementation_and_version)..."; > fi; > echo " ${_GREEN}*${_NORMAL} ${_BLUE}${action_message}${_NORMAL}"; > fi; > if [[ "${separate_build_dirs}" == "1" ]]; then > if [[ -n "${source_dir}" ]]; then > export BUILDDIR="${S}/${source_dir}-${PYTHON_ABI}"; > else > export BUILDDIR="${S}-${PYTHON_ABI}"; > fi; > pushd "${BUILDDIR}" > /dev/null || die "pushd failed"; > else > export BUILDDIR="${S}"; > fi; > previous_directory="$(pwd)"; > previous_directory_stack="$(dirs -p)"; > previous_directory_stack_length="$(dirs -p | wc -l)"; > if ! has "${EAPI}" 0 1 2 3 && has "${PYTHON_ABI}" ${FAILURE_TOLERANT_PYTHON_ABIS}; then > EPYTHON="$(PYTHON)" nonfatal "${function}" "$@"; > else > EPYTHON="$(PYTHON)" "${function}" "$@"; > fi; > return_code="$?"; > _python_restore_flags; > if [[ "${return_code}" -ne 0 ]]; then > if [[ -n "${failure_message_template}" ]]; then > eval "failure_message=\"${failure_message_template}\""; > else > failure_message="${action} failed with $(python_get_implementation_and_version) in ${function}() function"; > fi; > if [[ "${nonfatal}" == "1" ]]; then > if [[ "${quiet}" == "0" ]]; then > ewarn "${failure_message}"; > fi; > else > if [[ "${final_ABI}" == "0" ]] && has "${PYTHON_ABI}" ${FAILURE_TOLERANT_PYTHON_ABIS}; then > if [[ "${EBUILD_PHASE}" != "test" ]] || ! has test-fail-continue ${FEATURES}; then > local enabled_PYTHON_ABIS= other_PYTHON_ABI; > for other_PYTHON_ABI in ${PYTHON_ABIS}; > do > [[ "${other_PYTHON_ABI}" != "${PYTHON_ABI}" ]] && enabled_PYTHON_ABIS+="${enabled_PYTHON_ABIS:+ }${other_PYTHON_ABI}"; > done; > export PYTHON_ABIS="${enabled_PYTHON_ABIS}"; > fi; > if [[ "${quiet}" == "0" ]]; then > ewarn "${failure_message}"; > fi; > if [[ -z "${PYTHON_ABIS}" ]]; then > die "${function}() function failed with all enabled Python ABIs"; > fi; > else > die "${failure_message}"; > fi; > fi; > fi; > if [[ "$(dirs -p | wc -l)" -lt "${previous_directory_stack_length}" ]]; then > die "Directory stack decreased illegally"; > fi; > while [[ "$(dirs -p | wc -l)" -gt "${previous_directory_stack_length}" ]]; do > popd > /dev/null || die "popd failed"; > done; > cd "${previous_directory}"; > if [[ "$(dirs -p)" != "${previous_directory_stack}" ]]; then > die "Directory stack changed illegally"; > fi; > if [[ "${separate_build_dirs}" == "1" ]]; then > popd > /dev/null || die "popd failed"; > fi; > unset BUILDDIR; > done; > if [[ "${default_function}" == "1" ]]; then > unset -f python_default_function; > fi >} >python_execute_nosetests () >{ > _python_check_python_pkg_setup_execution; > _python_set_color_variables; > local PYTHONPATH_template separate_build_dirs; > while (($#)); do > case "$1" in > -P | --PYTHONPATH) > PYTHONPATH_template="$2"; > shift > ;; > -s | --separate-build-dirs) > separate_build_dirs="1" > ;; > --) > shift; > break > ;; > -*) > die "${FUNCNAME}(): Unrecognized option '$1'" > ;; > *) > break > ;; > esac; > shift; > done; > function python_test_function () > { > local evaluated_PYTHONPATH; > eval "evaluated_PYTHONPATH=\"${PYTHONPATH_template}\""; > _PYTHON_TEST_FUNCTION="python_execute_nosetests" _python_test_hook pre; > if [[ -n "${evaluated_PYTHONPATH}" ]]; then > echo ${_BOLD}PYTHONPATH="${evaluated_PYTHONPATH}" nosetests --verbosity="${PYTHON_TEST_VERBOSITY}" "$@"${_NORMAL}; > PYTHONPATH="${evaluated_PYTHONPATH}" nosetests --verbosity="${PYTHON_TEST_VERBOSITY}" "$@" || return "$?"; > else > echo ${_BOLD}nosetests --verbosity="${PYTHON_TEST_VERBOSITY}" "$@"${_NORMAL}; > nosetests --verbosity="${PYTHON_TEST_VERBOSITY}" "$@" || return "$?"; > fi; > _PYTHON_TEST_FUNCTION="python_execute_nosetests" _python_test_hook post > }; > if _python_package_supporting_installation_for_multiple_python_abis; then > python_execute_function ${separate_build_dirs:+-s} python_test_function "$@"; > else > if [[ -n "${separate_build_dirs}" ]]; then > die "${FUNCNAME}(): Invalid usage"; > fi; > python_test_function "$@" || die "Testing failed"; > fi; > unset -f python_test_function >} >python_execute_py.test () >{ > _python_check_python_pkg_setup_execution; > _python_set_color_variables; > local PYTHONPATH_template separate_build_dirs; > while (($#)); do > case "$1" in > -P | --PYTHONPATH) > PYTHONPATH_template="$2"; > shift > ;; > -s | --separate-build-dirs) > separate_build_dirs="1" > ;; > --) > shift; > break > ;; > -*) > die "${FUNCNAME}(): Unrecognized option '$1'" > ;; > *) > break > ;; > esac; > shift; > done; > function python_test_function () > { > local evaluated_PYTHONPATH; > eval "evaluated_PYTHONPATH=\"${PYTHONPATH_template}\""; > _PYTHON_TEST_FUNCTION="python_execute_py.test" _python_test_hook pre; > if [[ -n "${evaluated_PYTHONPATH}" ]]; then > echo ${_BOLD}PYTHONPATH="${evaluated_PYTHONPATH}" py.test $([[ "${PYTHON_TEST_VERBOSITY}" -ge 2 ]] && echo -v) "$@"${_NORMAL}; > PYTHONPATH="${evaluated_PYTHONPATH}" py.test $([[ "${PYTHON_TEST_VERBOSITY}" -ge 2 ]] && echo -v) "$@" || return "$?"; > else > echo ${_BOLD}py.test $([[ "${PYTHON_TEST_VERBOSITY}" -gt 1 ]] && echo -v) "$@"${_NORMAL}; > py.test $([[ "${PYTHON_TEST_VERBOSITY}" -gt 1 ]] && echo -v) "$@" || return "$?"; > fi; > _PYTHON_TEST_FUNCTION="python_execute_py.test" _python_test_hook post > }; > if _python_package_supporting_installation_for_multiple_python_abis; then > python_execute_function ${separate_build_dirs:+-s} python_test_function "$@"; > else > if [[ -n "${separate_build_dirs}" ]]; then > die "${FUNCNAME}(): Invalid usage"; > fi; > python_test_function "$@" || die "Testing failed"; > fi; > unset -f python_test_function >} >python_execute_trial () >{ > _python_check_python_pkg_setup_execution; > _python_set_color_variables; > local PYTHONPATH_template separate_build_dirs; > while (($#)); do > case "$1" in > -P | --PYTHONPATH) > PYTHONPATH_template="$2"; > shift > ;; > -s | --separate-build-dirs) > separate_build_dirs="1" > ;; > --) > shift; > break > ;; > -*) > die "${FUNCNAME}(): Unrecognized option '$1'" > ;; > *) > break > ;; > esac; > shift; > done; > function python_test_function () > { > local evaluated_PYTHONPATH; > eval "evaluated_PYTHONPATH=\"${PYTHONPATH_template}\""; > _PYTHON_TEST_FUNCTION="python_execute_trial" _python_test_hook pre; > if [[ -n "${evaluated_PYTHONPATH}" ]]; then > echo ${_BOLD}PYTHONPATH="${evaluated_PYTHONPATH}" trial $([[ "${PYTHON_TEST_VERBOSITY}" -ge 4 ]] && echo --spew) "$@"${_NORMAL}; > PYTHONPATH="${evaluated_PYTHONPATH}" trial $([[ "${PYTHON_TEST_VERBOSITY}" -ge 4 ]] && echo --spew) "$@" || return "$?"; > else > echo ${_BOLD}trial $([[ "${PYTHON_TEST_VERBOSITY}" -ge 4 ]] && echo --spew) "$@"${_NORMAL}; > trial $([[ "${PYTHON_TEST_VERBOSITY}" -ge 4 ]] && echo --spew) "$@" || return "$?"; > fi; > _PYTHON_TEST_FUNCTION="python_execute_trial" _python_test_hook post > }; > if _python_package_supporting_installation_for_multiple_python_abis; then > python_execute_function ${separate_build_dirs:+-s} python_test_function "$@"; > else > if [[ -n "${separate_build_dirs}" ]]; then > die "${FUNCNAME}(): Invalid usage"; > fi; > python_test_function "$@" || die "Testing failed"; > fi; > unset -f python_test_function >} >python_generate_wrapper_scripts () >{ > if [[ "${EBUILD_PHASE}" != "install" ]]; then > die "${FUNCNAME}() can be used only in src_install() phase"; > fi; > if ! _python_package_supporting_installation_for_multiple_python_abis; then > die "${FUNCNAME}() cannot be used in ebuilds of packages not supporting installation for multiple Python ABIs"; > fi; > _python_check_python_pkg_setup_execution; > _python_initialize_prefix_variables; > local eselect_python_option file force="0" quiet="0" PYTHON_ABI PYTHON_ABIS_list python2_enabled="0" python3_enabled="0" respect_EPYTHON="0"; > while (($#)); do > case "$1" in > -E | --respect-EPYTHON) > respect_EPYTHON="1" > ;; > -f | --force) > force="1" > ;; > -q | --quiet) > quiet="1" > ;; > --) > shift; > break > ;; > -*) > die "${FUNCNAME}(): Unrecognized option '$1'" > ;; > *) > break > ;; > esac; > shift; > done; > if [[ "$#" -eq 0 ]]; then > die "${FUNCNAME}(): Missing arguments"; > fi; > _python_calculate_PYTHON_ABIS; > for PYTHON_ABI in "${_CPYTHON2_GLOBALLY_SUPPORTED_ABIS[@]}"; > do > if has "${PYTHON_ABI}" ${PYTHON_ABIS}; then > python2_enabled="1"; > fi; > done; > for PYTHON_ABI in "${_CPYTHON3_GLOBALLY_SUPPORTED_ABIS[@]}"; > do > if has "${PYTHON_ABI}" ${PYTHON_ABIS}; then > python3_enabled="1"; > fi; > done; > if [[ "${python2_enabled}" == "1" && "${python3_enabled}" == "1" ]]; then > eselect_python_option=; > else > if [[ "${python2_enabled}" == "1" && "${python3_enabled}" == "0" ]]; then > eselect_python_option="--python2"; > else > if [[ "${python2_enabled}" == "0" && "${python3_enabled}" == "1" ]]; then > eselect_python_option="--python3"; > else > die "${FUNCNAME}(): Unsupported environment"; > fi; > fi; > fi; > PYTHON_ABIS_list="$("$(PYTHON -f)" -c "print(', '.join('\"%s\"' % x for x in reversed('${PYTHON_ABIS}'.split())))")"; > for file in "$@"; > do > if [[ -f "${file}" && "${force}" == "0" ]]; then > die "${FUNCNAME}(): '${file}' already exists"; > fi; > if [[ "${quiet}" == "0" ]]; then > einfo "Generating '${file#${ED%/}}' wrapper script"; > fi; > cat > "${file}" <<EOF >#!/usr/bin/env python ># Gentoo '${file##*/}' wrapper script generated by python_generate_wrapper_scripts() > >import os >import re >import subprocess >import sys > >cpython_ABI_re = re.compile(r"^(\d+\.\d+)$") >jython_ABI_re = re.compile(r"^(\d+\.\d+)-jython$") >pypy_ABI_re = re.compile(r"^\d+\.\d+-pypy-(\d+\.\d+)$") >cpython_interpreter_re = re.compile(r"^python(\d+\.\d+)$") >jython_interpreter_re = re.compile(r"^jython(\d+\.\d+)$") >pypy_interpreter_re = re.compile(r"^pypy-c(\d+\.\d+)$") >cpython_shebang_re = re.compile(r"^#![ \t]*(?:${EPREFIX}/usr/bin/python|(?:${EPREFIX})?/usr/bin/env[ \t]+(?:${EPREFIX}/usr/bin/)?python)") >python_shebang_options_re = re.compile(r"^#![ \t]*${EPREFIX}/usr/bin/(?:jython|pypy-c|python)(?:\d+(?:\.\d+)?)?[ \t]+(-\S)") >python_verification_output_re = re.compile("^GENTOO_PYTHON_TARGET_SCRIPT_PATH supported\n$") > >#pypy_versions_mapping = { ># "1.5": "2.7", ># "1.6": "2.7", ># "1.7": "2.7", ># "1.8": "2.7", ># "1.9": "2.7", ># "2.0": "2.7", >#} > >def get_PYTHON_ABI(python_interpreter): > cpython_matched = cpython_interpreter_re.match(python_interpreter) > jython_matched = jython_interpreter_re.match(python_interpreter) > pypy_matched = pypy_interpreter_re.match(python_interpreter) > if cpython_matched is not None: > PYTHON_ABI = cpython_matched.group(1) > elif jython_matched is not None: > PYTHON_ABI = jython_matched.group(1) + "-jython" > elif pypy_matched is not None: > #PYTHON_ABI = pypy_versions_mapping[pypy_matched.group(1)] + "-pypy-" + pypy_matched.group(1) > PYTHON_ABI = "2.7-pypy-" + pypy_matched.group(1) > else: > PYTHON_ABI = None > return PYTHON_ABI > >def get_python_interpreter(PYTHON_ABI): > cpython_matched = cpython_ABI_re.match(PYTHON_ABI) > jython_matched = jython_ABI_re.match(PYTHON_ABI) > pypy_matched = pypy_ABI_re.match(PYTHON_ABI) > if cpython_matched is not None: > python_interpreter = "python" + cpython_matched.group(1) > elif jython_matched is not None: > python_interpreter = "jython" + jython_matched.group(1) > elif pypy_matched is not None: > python_interpreter = "pypy-c" + pypy_matched.group(1) > else: > python_interpreter = None > return python_interpreter > >EOF > > if [[ "$?" != "0" ]]; then > die "${FUNCNAME}(): Generation of '$1' failed"; > fi; > if [[ "${respect_EPYTHON}" == "1" ]]; then > cat >> "${file}" <<EOF >python_interpreter = os.environ.get("EPYTHON") >if python_interpreter: > PYTHON_ABI = get_PYTHON_ABI(python_interpreter) > if PYTHON_ABI is None: > sys.stderr.write("%s: EPYTHON variable has unrecognized value '%s'\n" % (sys.argv[0], python_interpreter)) > sys.exit(1) >else: > try: > environment = os.environ.copy() > environment["ROOT"] = "/" > eselect_process = subprocess.Popen(["${EPREFIX}/usr/bin/eselect", "python", "show"${eselect_python_option:+, $(echo "\"")}${eselect_python_option}${eselect_python_option:+$(echo "\"")}], env=environment, stdout=subprocess.PIPE) > if eselect_process.wait() != 0: > raise ValueError > except (OSError, ValueError): > sys.stderr.write("%s: Execution of 'eselect python show${eselect_python_option:+ }${eselect_python_option}' failed\n" % sys.argv[0]) > sys.exit(1) > > python_interpreter = eselect_process.stdout.read() > if not isinstance(python_interpreter, str): > # Python 3 > python_interpreter = python_interpreter.decode() > python_interpreter = python_interpreter.rstrip("\n") > > PYTHON_ABI = get_PYTHON_ABI(python_interpreter) > if PYTHON_ABI is None: > sys.stderr.write("%s: 'eselect python show${eselect_python_option:+ }${eselect_python_option}' printed unrecognized value '%s'\n" % (sys.argv[0], python_interpreter)) > sys.exit(1) > >wrapper_script_path = os.path.realpath(sys.argv[0]) >target_executable_path = "%s-%s" % (wrapper_script_path, PYTHON_ABI) >if not os.path.exists(target_executable_path): > sys.stderr.write("%s: '%s' does not exist\n" % (sys.argv[0], target_executable_path)) > sys.exit(1) >EOF > > if [[ "$?" != "0" ]]; then > die "${FUNCNAME}(): Generation of '$1' failed"; > fi; > else > cat >> "${file}" <<EOF >try: > environment = os.environ.copy() > environment["ROOT"] = "/" > eselect_process = subprocess.Popen(["${EPREFIX}/usr/bin/eselect", "python", "show"${eselect_python_option:+, $(echo "\"")}${eselect_python_option}${eselect_python_option:+$(echo "\"")}], env=environment, stdout=subprocess.PIPE) > if eselect_process.wait() != 0: > raise ValueError >except (OSError, ValueError): > sys.stderr.write("%s: Execution of 'eselect python show${eselect_python_option:+ }${eselect_python_option}' failed\n" % sys.argv[0]) > sys.exit(1) > >python_interpreter = eselect_process.stdout.read() >if not isinstance(python_interpreter, str): > # Python 3 > python_interpreter = python_interpreter.decode() >python_interpreter = python_interpreter.rstrip("\n") > >PYTHON_ABI = get_PYTHON_ABI(python_interpreter) >if PYTHON_ABI is None: > sys.stderr.write("%s: 'eselect python show${eselect_python_option:+ }${eselect_python_option}' printed unrecognized value '%s'\n" % (sys.argv[0], python_interpreter)) > sys.exit(1) > >wrapper_script_path = os.path.realpath(sys.argv[0]) >for PYTHON_ABI in [PYTHON_ABI, ${PYTHON_ABIS_list}]: > target_executable_path = "%s-%s" % (wrapper_script_path, PYTHON_ABI) > if os.path.exists(target_executable_path): > break >else: > sys.stderr.write("%s: No target script exists for '%s'\n" % (sys.argv[0], wrapper_script_path)) > sys.exit(1) > >python_interpreter = get_python_interpreter(PYTHON_ABI) >if python_interpreter is None: > sys.stderr.write("%s: Unrecognized Python ABI '%s'\n" % (sys.argv[0], PYTHON_ABI)) > sys.exit(1) >EOF > > if [[ "$?" != "0" ]]; then > die "${FUNCNAME}(): Generation of '$1' failed"; > fi; > fi > cat >> "${file}" <<EOF > >target_executable = open(target_executable_path, "rb") >target_executable_first_line = target_executable.readline() >target_executable.close() >if not isinstance(target_executable_first_line, str): > # Python 3 > target_executable_first_line = target_executable_first_line.decode("utf_8", "replace") > >options = [] >python_shebang_options_matched = python_shebang_options_re.match(target_executable_first_line) >if python_shebang_options_matched is not None: > options = [python_shebang_options_matched.group(1)] > >cpython_shebang_matched = cpython_shebang_re.match(target_executable_first_line) > >if cpython_shebang_matched is not None: > try: > python_interpreter_path = "${EPREFIX}/usr/bin/%s" % python_interpreter > os.environ["GENTOO_PYTHON_TARGET_SCRIPT_PATH_VERIFICATION"] = "1" > python_verification_process = subprocess.Popen([python_interpreter_path, "-c", "pass"], stdout=subprocess.PIPE) > del os.environ["GENTOO_PYTHON_TARGET_SCRIPT_PATH_VERIFICATION"] > if python_verification_process.wait() != 0: > raise ValueError > > python_verification_output = python_verification_process.stdout.read() > if not isinstance(python_verification_output, str): > # Python 3 > python_verification_output = python_verification_output.decode() > > if not python_verification_output_re.match(python_verification_output): > raise ValueError > > if cpython_interpreter_re.match(python_interpreter) is not None: > os.environ["GENTOO_PYTHON_PROCESS_NAME"] = os.path.basename(sys.argv[0]) > os.environ["GENTOO_PYTHON_WRAPPER_SCRIPT_PATH"] = sys.argv[0] > os.environ["GENTOO_PYTHON_TARGET_SCRIPT_PATH"] = target_executable_path > > if hasattr(os, "execv"): > os.execv(python_interpreter_path, [python_interpreter_path] + options + sys.argv) > else: > sys.exit(subprocess.Popen([python_interpreter_path] + options + sys.argv).wait()) > except (KeyboardInterrupt, SystemExit): > raise > except: > pass > for variable in ("GENTOO_PYTHON_PROCESS_NAME", "GENTOO_PYTHON_WRAPPER_SCRIPT_PATH", "GENTOO_PYTHON_TARGET_SCRIPT_PATH", "GENTOO_PYTHON_TARGET_SCRIPT_PATH_VERIFICATION"): > if variable in os.environ: > del os.environ[variable] > >if hasattr(os, "execv"): > os.execv(target_executable_path, sys.argv) >else: > sys.exit(subprocess.Popen([target_executable_path] + sys.argv[1:]).wait()) >EOF > > if [[ "$?" != "0" ]]; then > die "${FUNCNAME}(): Generation of '$1' failed"; > fi; > fperms +x "${file#${ED%/}}" || die "fperms '${file}' failed"; > done >} >python_get_implementation () >{ > _python_check_python_pkg_setup_execution; > local final_ABI="0" PYTHON_ABI="${PYTHON_ABI}"; > while (($#)); do > case "$1" in > -f | --final-ABI) > final_ABI="1" > ;; > -*) > die "${FUNCNAME}(): Unrecognized option '$1'" > ;; > *) > die "${FUNCNAME}(): Invalid usage" > ;; > esac; > shift; > done; > if [[ "${final_ABI}" == "1" ]]; then > if ! _python_package_supporting_installation_for_multiple_python_abis; then > die "${FUNCNAME}(): '--final-ABI' option cannot be used in ebuilds of packages not supporting installation for multiple Python ABIs"; > fi; > PYTHON_ABI="$(PYTHON -f --ABI)"; > else > if _python_package_supporting_installation_for_multiple_python_abis; then > if ! _python_abi-specific_local_scope; then > die "${FUNCNAME}() should be used in ABI-specific local scope"; > fi; > else > PYTHON_ABI="${PYTHON_ABI:-$(PYTHON --ABI)}"; > fi; > fi; > echo "$(_python_get_implementation "${PYTHON_ABI}")" >} >python_get_implementation_and_version () >{ > _python_check_python_pkg_setup_execution; > local final_ABI="0" PYTHON_ABI="${PYTHON_ABI}"; > while (($#)); do > case "$1" in > -f | --final-ABI) > final_ABI="1" > ;; > -*) > die "${FUNCNAME}(): Unrecognized option '$1'" > ;; > *) > die "${FUNCNAME}(): Invalid usage" > ;; > esac; > shift; > done; > if [[ "${final_ABI}" == "1" ]]; then > if ! _python_package_supporting_installation_for_multiple_python_abis; then > die "${FUNCNAME}(): '--final-ABI' option cannot be used in ebuilds of packages not supporting installation for multiple Python ABIs"; > fi; > PYTHON_ABI="$(PYTHON -f --ABI)"; > else > if _python_package_supporting_installation_for_multiple_python_abis; then > if ! _python_abi-specific_local_scope; then > die "${FUNCNAME}() should be used in ABI-specific local scope"; > fi; > else > PYTHON_ABI="${PYTHON_ABI:-$(PYTHON --ABI)}"; > fi; > fi; > if [[ "${PYTHON_ABI}" =~ ^[[:digit:]]+\.[[:digit:]]+-[[:alnum:]]+-[[:digit:]]+\.[[:digit:]]+$ ]]; then > echo "$(_python_get_implementation "${PYTHON_ABI}") ${PYTHON_ABI##*-} (Python ${PYTHON_ABI%%-*})"; > else > echo "$(_python_get_implementation "${PYTHON_ABI}") ${PYTHON_ABI%%-*}"; > fi >} >python_get_implementational_package () >{ > _python_check_python_pkg_setup_execution; > local final_ABI="0" PYTHON_ABI="${PYTHON_ABI}"; > while (($#)); do > case "$1" in > -f | --final-ABI) > final_ABI="1" > ;; > -*) > die "${FUNCNAME}(): Unrecognized option '$1'" > ;; > *) > die "${FUNCNAME}(): Invalid usage" > ;; > esac; > shift; > done; > if [[ "${final_ABI}" == "1" ]]; then > if ! _python_package_supporting_installation_for_multiple_python_abis; then > die "${FUNCNAME}(): '--final-ABI' option cannot be used in ebuilds of packages not supporting installation for multiple Python ABIs"; > fi; > PYTHON_ABI="$(PYTHON -f --ABI)"; > else > if _python_package_supporting_installation_for_multiple_python_abis; then > if ! _python_abi-specific_local_scope; then > die "${FUNCNAME}() should be used in ABI-specific local scope"; > fi; > else > PYTHON_ABI="${PYTHON_ABI:-$(PYTHON --ABI)}"; > fi; > fi; > if [[ "${EAPI:-0}" == "0" ]]; then > if [[ "$(_python_get_implementation "${PYTHON_ABI}")" == "CPython" ]]; then > echo "=dev-lang/python-${PYTHON_ABI}*"; > else > if [[ "$(_python_get_implementation "${PYTHON_ABI}")" == "Jython" ]]; then > echo "=dev-java/jython-${PYTHON_ABI%-jython}*"; > else > if [[ "$(_python_get_implementation "${PYTHON_ABI}")" == "PyPy" ]]; then > echo "=dev-python/pypy-${PYTHON_ABI#*-pypy-}*"; > fi; > fi; > fi; > else > if [[ "$(_python_get_implementation "${PYTHON_ABI}")" == "CPython" ]]; then > echo "dev-lang/python:${PYTHON_ABI}"; > else > if [[ "$(_python_get_implementation "${PYTHON_ABI}")" == "Jython" ]]; then > echo "dev-java/jython:${PYTHON_ABI%-jython}"; > else > if [[ "$(_python_get_implementation "${PYTHON_ABI}")" == "PyPy" ]]; then > echo "dev-python/pypy:${PYTHON_ABI#*-pypy-}"; > fi; > fi; > fi; > fi >} >python_get_includedir () >{ > _python_check_python_pkg_setup_execution; > local base_path="0" final_ABI="0" prefix PYTHON_ABI="${PYTHON_ABI}"; > while (($#)); do > case "$1" in > -b | --base-path) > base_path="1" > ;; > -f | --final-ABI) > final_ABI="1" > ;; > -*) > die "${FUNCNAME}(): Unrecognized option '$1'" > ;; > *) > die "${FUNCNAME}(): Invalid usage" > ;; > esac; > shift; > done; > if [[ "${base_path}" == "0" ]]; then > prefix="/"; > fi; > if [[ "${final_ABI}" == "1" ]]; then > if ! _python_package_supporting_installation_for_multiple_python_abis; then > die "${FUNCNAME}(): '--final-ABI' option cannot be used in ebuilds of packages not supporting installation for multiple Python ABIs"; > fi; > PYTHON_ABI="$(PYTHON -f --ABI)"; > else > if _python_package_supporting_installation_for_multiple_python_abis; then > if ! _python_abi-specific_local_scope; then > die "${FUNCNAME}() should be used in ABI-specific local scope"; > fi; > else > PYTHON_ABI="${PYTHON_ABI:-$(PYTHON --ABI)}"; > fi; > fi; > if [[ "$(_python_get_implementation "${PYTHON_ABI}")" == "CPython" ]]; then > echo "${prefix}usr/include/python${PYTHON_ABI}"; > else > if [[ "$(_python_get_implementation "${PYTHON_ABI}")" == "Jython" ]]; then > echo "${prefix}usr/share/jython-${PYTHON_ABI%-jython}/Include"; > else > if [[ "$(_python_get_implementation "${PYTHON_ABI}")" == "PyPy" ]]; then > echo "${prefix}usr/$(get_libdir)/pypy${PYTHON_ABI#*-pypy-}/include"; > fi; > fi; > fi >} >python_get_libdir () >{ > _python_check_python_pkg_setup_execution; > local base_path="0" final_ABI="0" prefix PYTHON_ABI="${PYTHON_ABI}"; > while (($#)); do > case "$1" in > -b | --base-path) > base_path="1" > ;; > -f | --final-ABI) > final_ABI="1" > ;; > -*) > die "${FUNCNAME}(): Unrecognized option '$1'" > ;; > *) > die "${FUNCNAME}(): Invalid usage" > ;; > esac; > shift; > done; > if [[ "${base_path}" == "0" ]]; then > prefix="/"; > fi; > if [[ "${final_ABI}" == "1" ]]; then > if ! _python_package_supporting_installation_for_multiple_python_abis; then > die "${FUNCNAME}(): '--final-ABI' option cannot be used in ebuilds of packages not supporting installation for multiple Python ABIs"; > fi; > PYTHON_ABI="$(PYTHON -f --ABI)"; > else > if _python_package_supporting_installation_for_multiple_python_abis; then > if ! _python_abi-specific_local_scope; then > die "${FUNCNAME}() should be used in ABI-specific local scope"; > fi; > else > PYTHON_ABI="${PYTHON_ABI:-$(PYTHON --ABI)}"; > fi; > fi; > if [[ "$(_python_get_implementation "${PYTHON_ABI}")" == "CPython" ]]; then > echo "${prefix}usr/$(get_libdir)/python${PYTHON_ABI}"; > else > if [[ "$(_python_get_implementation "${PYTHON_ABI}")" == "Jython" ]]; then > echo "${prefix}usr/share/jython-${PYTHON_ABI%-jython}/Lib"; > else > if [[ "$(_python_get_implementation "${PYTHON_ABI}")" == "PyPy" ]]; then > die "${FUNCNAME}(): PyPy has multiple standard library directories"; > fi; > fi; > fi >} >python_get_library () >{ > _python_check_python_pkg_setup_execution; > local base_path="0" final_ABI="0" linker_option="0" prefix PYTHON_ABI="${PYTHON_ABI}"; > while (($#)); do > case "$1" in > -b | --base-path) > base_path="1" > ;; > -f | --final-ABI) > final_ABI="1" > ;; > -l | --linker-option) > linker_option="1" > ;; > -*) > die "${FUNCNAME}(): Unrecognized option '$1'" > ;; > *) > die "${FUNCNAME}(): Invalid usage" > ;; > esac; > shift; > done; > if [[ "${base_path}" == "0" ]]; then > prefix="/"; > fi; > if [[ "${base_path}" == "1" && "${linker_option}" == "1" ]]; then > die "${FUNCNAME}(): '--base-path' and '--linker-option' options cannot be specified simultaneously"; > fi; > if [[ "${final_ABI}" == "1" ]]; then > if ! _python_package_supporting_installation_for_multiple_python_abis; then > die "${FUNCNAME}(): '--final-ABI' option cannot be used in ebuilds of packages not supporting installation for multiple Python ABIs"; > fi; > PYTHON_ABI="$(PYTHON -f --ABI)"; > else > if _python_package_supporting_installation_for_multiple_python_abis; then > if ! _python_abi-specific_local_scope; then > die "${FUNCNAME}() should be used in ABI-specific local scope"; > fi; > else > PYTHON_ABI="${PYTHON_ABI:-$(PYTHON --ABI)}"; > fi; > fi; > if [[ "$(_python_get_implementation "${PYTHON_ABI}")" == "CPython" ]]; then > if [[ "${linker_option}" == "1" ]]; then > echo "-lpython${PYTHON_ABI}"; > else > echo "${prefix}usr/$(get_libdir)/libpython${PYTHON_ABI}$(get_libname)"; > fi; > else > if [[ "$(_python_get_implementation "${PYTHON_ABI}")" == "Jython" ]]; then > die "${FUNCNAME}(): Jython does not have shared library"; > else > if [[ "$(_python_get_implementation "${PYTHON_ABI}")" == "PyPy" ]]; then > die "${FUNCNAME}(): PyPy does not have shared library"; > fi; > fi; > fi >} >python_get_sitedir () >{ > _python_check_python_pkg_setup_execution; > local base_path="0" final_ABI="0" prefix PYTHON_ABI="${PYTHON_ABI}"; > while (($#)); do > case "$1" in > -b | --base-path) > base_path="1" > ;; > -f | --final-ABI) > final_ABI="1" > ;; > -*) > die "${FUNCNAME}(): Unrecognized option '$1'" > ;; > *) > die "${FUNCNAME}(): Invalid usage" > ;; > esac; > shift; > done; > if [[ "${base_path}" == "0" ]]; then > prefix="/"; > fi; > if [[ "${final_ABI}" == "1" ]]; then > if ! _python_package_supporting_installation_for_multiple_python_abis; then > die "${FUNCNAME}(): '--final-ABI' option cannot be used in ebuilds of packages not supporting installation for multiple Python ABIs"; > fi; > PYTHON_ABI="$(PYTHON -f --ABI)"; > else > if _python_package_supporting_installation_for_multiple_python_abis; then > if ! _python_abi-specific_local_scope; then > die "${FUNCNAME}() should be used in ABI-specific local scope"; > fi; > else > PYTHON_ABI="${PYTHON_ABI:-$(PYTHON --ABI)}"; > fi; > fi; > if [[ "$(_python_get_implementation "${PYTHON_ABI}")" == "CPython" ]]; then > echo "${prefix}usr/$(get_libdir)/python${PYTHON_ABI}/site-packages"; > else > if [[ "$(_python_get_implementation "${PYTHON_ABI}")" == "Jython" ]]; then > echo "${prefix}usr/share/jython-${PYTHON_ABI%-jython}/Lib/site-packages"; > else > if [[ "$(_python_get_implementation "${PYTHON_ABI}")" == "PyPy" ]]; then > echo "${prefix}usr/$(get_libdir)/pypy${PYTHON_ABI#*-pypy-}/site-packages"; > fi; > fi; > fi >} >python_get_version () >{ > _python_check_python_pkg_setup_execution; > local final_ABI="0" language="0" language_version full="0" major="0" minor="0" micro="0" PYTHON_ABI="${PYTHON_ABI}" python_command; > while (($#)); do > case "$1" in > -f | --final-ABI) > final_ABI="1" > ;; > -l | --language) > language="1" > ;; > --full) > full="1" > ;; > --major) > major="1" > ;; > --minor) > minor="1" > ;; > --micro) > micro="1" > ;; > -*) > die "${FUNCNAME}(): Unrecognized option '$1'" > ;; > *) > die "${FUNCNAME}(): Invalid usage" > ;; > esac; > shift; > done; > if [[ "${final_ABI}" == "1" ]]; then > if ! _python_package_supporting_installation_for_multiple_python_abis; then > die "${FUNCNAME}(): '--final-ABI' option cannot be used in ebuilds of packages not supporting installation for multiple Python ABIs"; > fi; > else > if _python_package_supporting_installation_for_multiple_python_abis && ! _python_abi-specific_local_scope; then > die "${FUNCNAME}() should be used in ABI-specific local scope"; > fi; > fi; > if [[ "$((${full} + ${major} + ${minor} + ${micro}))" -gt 1 ]]; then > die "${FUNCNAME}(): '--full', '--major', '--minor' or '--micro' options cannot be specified simultaneously"; > fi; > if [[ "${language}" == "1" ]]; then > if [[ "${final_ABI}" == "1" ]]; then > PYTHON_ABI="$(PYTHON -f --ABI)"; > else > if [[ -z "${PYTHON_ABI}" ]]; then > PYTHON_ABI="$(PYTHON --ABI)"; > fi; > fi; > language_version="${PYTHON_ABI%%-*}"; > if [[ "${full}" == "1" ]]; then > die "${FUNCNAME}(): '--language' and '--full' options cannot be specified simultaneously"; > else > if [[ "${major}" == "1" ]]; then > echo "${language_version%.*}"; > else > if [[ "${minor}" == "1" ]]; then > echo "${language_version#*.}"; > else > if [[ "${micro}" == "1" ]]; then > die "${FUNCNAME}(): '--language' and '--micro' options cannot be specified simultaneously"; > else > echo "${language_version}"; > fi; > fi; > fi; > fi; > else > if [[ "${full}" == "1" ]]; then > python_command="import sys; print('.'.join(str(x) for x in getattr(sys, 'pypy_version_info', sys.version_info)[:3]))"; > else > if [[ "${major}" == "1" ]]; then > python_command="import sys; print(getattr(sys, 'pypy_version_info', sys.version_info)[0])"; > else > if [[ "${minor}" == "1" ]]; then > python_command="import sys; print(getattr(sys, 'pypy_version_info', sys.version_info)[1])"; > else > if [[ "${micro}" == "1" ]]; then > python_command="import sys; print(getattr(sys, 'pypy_version_info', sys.version_info)[2])"; > else > if [[ -n "${PYTHON_ABI}" && "${final_ABI}" == "0" ]]; then > if [[ "$(_python_get_implementation "${PYTHON_ABI}")" == "CPython" ]]; then > echo "${PYTHON_ABI}"; > else > if [[ "$(_python_get_implementation "${PYTHON_ABI}")" == "Jython" ]]; then > echo "${PYTHON_ABI%-jython}"; > else > if [[ "$(_python_get_implementation "${PYTHON_ABI}")" == "PyPy" ]]; then > echo "${PYTHON_ABI#*-pypy-}"; > fi; > fi; > fi; > return; > fi; > python_command="from sys import version_info; print('.'.join(str(x) for x in version_info[:2]))"; > fi; > fi; > fi; > fi; > if [[ "${final_ABI}" == "1" ]]; then > "$(PYTHON -f)" -c "${python_command}"; > else > "$(PYTHON ${PYTHON_ABI})" -c "${python_command}"; > fi; > fi >} >python_merge_intermediate_installation_images () >{ > if [[ "${EBUILD_PHASE}" != "install" ]]; then > die "${FUNCNAME}() can be used only in src_install() phase"; > fi; > if ! _python_package_supporting_installation_for_multiple_python_abis; then > die "${FUNCNAME}() cannot be used in ebuilds of packages not supporting installation for multiple Python ABIs"; > fi; > _python_check_python_pkg_setup_execution; > _python_initialize_prefix_variables; > local absolute_file b file files=() intermediate_installation_images_directory PYTHON_ABI quiet="0" regex shebang version_executable wrapper_scripts=() wrapper_scripts_set=(); > while (($#)); do > case "$1" in > -q | --quiet) > quiet="1" > ;; > --) > shift; > break > ;; > -*) > die "${FUNCNAME}(): Unrecognized option '$1'" > ;; > *) > break > ;; > esac; > shift; > done; > if [[ "$#" -ne 1 ]]; then > die "${FUNCNAME}() requires 1 argument"; > fi; > intermediate_installation_images_directory="$1"; > if [[ ! -d "${intermediate_installation_images_directory}" ]]; then > die "${FUNCNAME}(): Intermediate installation images directory '${intermediate_installation_images_directory}' does not exist"; > fi; > _python_calculate_PYTHON_ABIS; > if [[ "$(PYTHON -f --ABI)" == 3.* ]]; then > b="b"; > fi; > while read -d '' -r file; do > files+=("${file}"); > done < <("$(PYTHON -f)" -c "import os >import sys > >if hasattr(sys.stdout, 'buffer'): > # Python 3 > stdout = sys.stdout.buffer >else: > # Python 2 > stdout = sys.stdout > >files_set = set() > >os.chdir(${b}'${intermediate_installation_images_directory}') > >for PYTHON_ABI in ${b}'${PYTHON_ABIS}'.split(): > for root, dirs, files in os.walk(PYTHON_ABI + ${b}'${EPREFIX}'): > root = root[len(PYTHON_ABI + ${b}'${EPREFIX}')+1:] > files_set.update(root + ${b}'/' + file for file in files) > >for file in sorted(files_set): > stdout.write(file) > stdout.write(${b}'\x00')" || die "${FUNCNAME}(): Failure of extraction of files in intermediate installation images"); > for PYTHON_ABI in ${PYTHON_ABIS}; > do > if [[ ! -d "${intermediate_installation_images_directory}/${PYTHON_ABI}" ]]; then > die "${FUNCNAME}(): Intermediate installation image for Python ABI '${PYTHON_ABI}' does not exist"; > fi; > pushd "${intermediate_installation_images_directory}/${PYTHON_ABI}${EPREFIX}" > /dev/null || die "pushd failed"; > for file in "${files[@]}"; > do > version_executable="0"; > for regex in "/usr/bin/.*" "/usr/sbin/.*" "${PYTHON_VERSIONED_SCRIPTS[@]}"; > do > if [[ "/${file}" =~ ^${regex}$ ]]; then > version_executable="1"; > break; > fi; > done; > for regex in "${PYTHON_VERSIONED_EXECUTABLES[@]}"; > do > if [[ "/${file}" =~ ^${regex}$ ]]; then > version_executable="2"; > break; > fi; > done; > if [[ "${version_executable}" != "0" ]]; then > for regex in "${PYTHON_NONVERSIONED_EXECUTABLES[@]}"; > do > if [[ "/${file}" =~ ^${regex}$ ]]; then > version_executable="0"; > break; > fi; > done; > fi; > [[ "${version_executable}" == "0" ]] && continue; > if [[ -L "${file}" ]]; then > absolute_file="$(readlink "${file}")"; > if [[ "${absolute_file}" == /* ]]; then > absolute_file="${intermediate_installation_images_directory}/${PYTHON_ABI}${EPREFIX}/${absolute_file##/}"; > else > if [[ "${file}" == */* ]]; then > absolute_file="${intermediate_installation_images_directory}/${PYTHON_ABI}${EPREFIX}/${file%/*}/${absolute_file}"; > else > absolute_file="${intermediate_installation_images_directory}/${PYTHON_ABI}${EPREFIX}/${absolute_file}"; > fi; > fi; > else > absolute_file="${intermediate_installation_images_directory}/${PYTHON_ABI}${EPREFIX}/${file}"; > fi; > [[ ! -x "${absolute_file}" ]] && continue; > shebang="$(head -n1 "${absolute_file}")" || die "Extraction of shebang from '${absolute_file}' failed"; > if [[ "${version_executable}" == "2" ]]; then > wrapper_scripts+=("${ED}${file}"); > else > if [[ "${version_executable}" == "1" ]]; then > if [[ "${shebang}" =~ ${_PYTHON_SHEBANG_BASE_PART_REGEX}([[:digit:]]+(\.[[:digit:]]+)?)?($|[[:space:]]+) ]]; then > wrapper_scripts+=("${ED}${file}"); > else > version_executable="0"; > fi; > fi; > fi; > [[ "${version_executable}" == "0" ]] && continue; > if [[ -e "${file}-${PYTHON_ABI}" ]]; then > die "${FUNCNAME}(): '${EPREFIX}/${file}-${PYTHON_ABI}' already exists"; > fi; > mv "${file}" "${file}-${PYTHON_ABI}" || die "Renaming of '${file}' failed"; > if [[ "${shebang}" =~ ${_PYTHON_SHEBANG_BASE_PART_REGEX}[[:digit:]]*($|[[:space:]]+) ]]; then > if [[ -L "${file}-${PYTHON_ABI}" ]]; then > python_convert_shebangs $([[ "${quiet}" == "1" ]] && echo --quiet) "${PYTHON_ABI}" "${absolute_file}"; > else > python_convert_shebangs $([[ "${quiet}" == "1" ]] && echo --quiet) "${PYTHON_ABI}" "${file}-${PYTHON_ABI}"; > fi; > fi; > done; > popd > /dev/null || die "popd failed"; > if ROOT="/" has_version '>=sys-apps/coreutils-6.9.90'; then > cp -fr --preserve=all --no-preserve=context "${intermediate_installation_images_directory}/${PYTHON_ABI}/"* "${D}" || die "Merging of intermediate installation image for Python ABI '${PYTHON_ABI} into installation image failed"; > else > if ROOT="/" has_version sys-apps/coreutils; then > cp -fr --preserve=all "${intermediate_installation_images_directory}/${PYTHON_ABI}/"* "${D}" || die "Merging of intermediate installation image for Python ABI '${PYTHON_ABI} into installation image failed"; > else > cp -fpr "${intermediate_installation_images_directory}/${PYTHON_ABI}/"* "${D}" || die "Merging of intermediate installation image for Python ABI '${PYTHON_ABI} into installation image failed"; > fi; > fi; > done; > rm -fr "${intermediate_installation_images_directory}"; > if [[ "${#wrapper_scripts[@]}" -ge 1 ]]; then > rm -f "${T}/python_wrapper_scripts"; > for file in "${wrapper_scripts[@]}"; > do > echo -n "${file}" >> "${T}/python_wrapper_scripts"; > echo -en "\x00" >> "${T}/python_wrapper_scripts"; > done; > while read -d '' -r file; do > wrapper_scripts_set+=("${file}"); > done < <("$(PYTHON -f)" -c "import sys > >if hasattr(sys.stdout, 'buffer'): > # Python 3 > stdout = sys.stdout.buffer >else: > # Python 2 > stdout = sys.stdout > >python_wrapper_scripts_file = open('${T}/python_wrapper_scripts', 'rb') >files = set(python_wrapper_scripts_file.read().rstrip(${b}'\x00').split(${b}'\x00')) >python_wrapper_scripts_file.close() > >for file in sorted(files): > stdout.write(file) > stdout.write(${b}'\x00')" || die "${FUNCNAME}(): Failure of extraction of set of wrapper scripts"); > python_generate_wrapper_scripts $([[ "${quiet}" == "1" ]] && echo --quiet) "${wrapper_scripts_set[@]}"; > fi >} >python_mod_cleanup () >{ > if [[ "${EBUILD_PHASE}" != "postrm" ]]; then > die "${FUNCNAME}() can be used only in pkg_postrm() phase"; > fi; > _python_check_python_pkg_setup_execution; > _python_initialize_prefix_variables; > local allow_evaluated_non_sitedir_paths="0" dir iterated_PYTHON_ABIS PYTHON_ABI="${PYTHON_ABI}" root search_paths=() sitedir; > if _python_package_supporting_installation_for_multiple_python_abis; then > if has "${EAPI:-0}" 0 1 2 3 && [[ -z "${PYTHON_ABIS}" ]]; then > die "${FUNCNAME}(): python_pkg_setup() or python_execute_function() not called"; > fi; > iterated_PYTHON_ABIS="${PYTHON_ABIS}"; > else > if has "${EAPI:-0}" 0 1 2 3; then > iterated_PYTHON_ABIS="${PYTHON_ABI:-$(PYTHON --ABI)}"; > else > iterated_PYTHON_ABIS="${PYTHON_ABI}"; > fi; > fi; > root="${EROOT%/}"; > while (($#)); do > case "$1" in > --allow-evaluated-non-sitedir-paths) > allow_evaluated_non_sitedir_paths="1" > ;; > --) > shift; > break > ;; > -*) > die "${FUNCNAME}(): Unrecognized option '$1'" > ;; > *) > break > ;; > esac; > shift; > done; > if [[ "${allow_evaluated_non_sitedir_paths}" == "1" ]] && ! _python_package_supporting_installation_for_multiple_python_abis; then > die "${FUNCNAME}(): '--allow-evaluated-non-sitedir-paths' option cannot be used in ebuilds of packages not supporting installation for multiple Python ABIs"; > fi; > if [[ "$#" -eq 0 ]]; then > die "${FUNCNAME}(): Missing files or directories"; > fi; > if ! has "${EAPI:-0}" 0 1 2 || _python_package_supporting_installation_for_multiple_python_abis || _python_implementation || [[ "${CATEGORY}/${PN}" == "sys-apps/portage" ]]; then > while (($#)); do > if [[ "$1" =~ ^($|(\.|\.\.|/)($|/)) ]]; then > die "${FUNCNAME}(): Invalid argument '$1'"; > else > if ! _python_implementation && [[ "$1" =~ ^/usr/lib(32|64)?/python[[:digit:]]+\.[[:digit:]]+ ]]; then > die "${FUNCNAME}(): Paths of directories / files in site-packages directories must be relative to site-packages directories"; > else > if [[ "$1" =~ ^/ ]]; then > if _python_package_supporting_installation_for_multiple_python_abis; then > if [[ "${allow_evaluated_non_sitedir_paths}" != "1" ]]; then > die "${FUNCNAME}(): Absolute paths cannot be used in ebuilds of packages supporting installation for multiple Python ABIs"; > fi; > if [[ "$1" != *\$* ]]; then > die "${FUNCNAME}(): '$1' has invalid syntax"; > fi; > for PYTHON_ABI in ${iterated_PYTHON_ABIS}; > do > eval "search_paths+=(\"\${root}$1\")"; > done; > else > search_paths+=("${root}$1"); > fi; > else > for PYTHON_ABI in ${iterated_PYTHON_ABIS}; > do > search_paths+=("${root}$(python_get_sitedir)/$1"); > done; > fi; > fi; > fi; > shift; > done; > else > ewarn; > ewarn "Deprecation Warning: Usage of ${FUNCNAME}() in packages not supporting installation"; > ewarn "for multiple Python ABIs in EAPI <=2 is deprecated and will be disallowed on 2011-08-01."; > ewarn "Use EAPI >=3 and call ${FUNCNAME}() with paths having appropriate syntax."; > ewarn "The ebuild needs to be fixed. Please report a bug, if it has not been already reported."; > ewarn; > search_paths=("${@#/}"); > search_paths=("${search_paths[@]/#/${root}/}"); > fi; > _python_clean_compiled_modules "${search_paths[@]}" >} >python_mod_optimize () >{ > if [[ "${EBUILD_PHASE}" != "postinst" ]]; then > die "${FUNCNAME}() can be used only in pkg_postinst() phase"; > fi; > _python_check_python_pkg_setup_execution; > _python_initialize_prefix_variables; > if ! has "${EAPI:-0}" 0 1 2 || _python_package_supporting_installation_for_multiple_python_abis || _python_implementation || [[ "${CATEGORY}/${PN}" == "sys-apps/portage" ]]; then > local allow_evaluated_non_sitedir_paths="0" dir dirs=() evaluated_dirs=() evaluated_files=() file files=() iterated_PYTHON_ABIS options=() other_dirs=() other_files=() previous_PYTHON_ABI="${PYTHON_ABI}" return_code root site_packages_dirs=() site_packages_files=() stderr stderr_line; > if _python_package_supporting_installation_for_multiple_python_abis; then > if has "${EAPI:-0}" 0 1 2 3 && [[ -z "${PYTHON_ABIS}" ]]; then > die "${FUNCNAME}(): python_pkg_setup() or python_execute_function() not called"; > fi; > iterated_PYTHON_ABIS="${PYTHON_ABIS}"; > else > if has "${EAPI:-0}" 0 1 2 3; then > iterated_PYTHON_ABIS="${PYTHON_ABI:=$(PYTHON --ABI)}"; > else > iterated_PYTHON_ABIS="${PYTHON_ABI}"; > fi; > fi; > root="${EROOT%/}"; > while (($#)); do > case "$1" in > --allow-evaluated-non-sitedir-paths) > allow_evaluated_non_sitedir_paths="1" > ;; > -l | -f | -q) > options+=("$1") > ;; > -d | -x) > options+=("$1" "$2"); > shift > ;; > --) > shift; > break > ;; > -*) > die "${FUNCNAME}(): Unrecognized option '$1'" > ;; > *) > break > ;; > esac; > shift; > done; > if [[ "${allow_evaluated_non_sitedir_paths}" == "1" ]] && ! _python_package_supporting_installation_for_multiple_python_abis; then > die "${FUNCNAME}(): '--allow-evaluated-non-sitedir-paths' option cannot be used in ebuilds of packages not supporting installation for multiple Python ABIs"; > fi; > if [[ "$#" -eq 0 ]]; then > die "${FUNCNAME}(): Missing files or directories"; > fi; > while (($#)); do > if [[ "$1" =~ ^($|(\.|\.\.|/)($|/)) ]]; then > die "${FUNCNAME}(): Invalid argument '$1'"; > else > if ! _python_implementation && [[ "$1" =~ ^/usr/lib(32|64)?/python[[:digit:]]+\.[[:digit:]]+ ]]; then > die "${FUNCNAME}(): Paths of directories / files in site-packages directories must be relative to site-packages directories"; > else > if [[ "$1" =~ ^/ ]]; then > if _python_package_supporting_installation_for_multiple_python_abis; then > if [[ "${allow_evaluated_non_sitedir_paths}" != "1" ]]; then > die "${FUNCNAME}(): Absolute paths cannot be used in ebuilds of packages supporting installation for multiple Python ABIs"; > fi; > if [[ "$1" != *\$* ]]; then > die "${FUNCNAME}(): '$1' has invalid syntax"; > fi; > if [[ "$1" == *.py ]]; then > evaluated_files+=("$1"); > else > evaluated_dirs+=("$1"); > fi; > else > if [[ -d "${root}$1" ]]; then > other_dirs+=("${root}$1"); > else > if [[ -f "${root}$1" ]]; then > other_files+=("${root}$1"); > else > if [[ -e "${root}$1" ]]; then > eerror "${FUNCNAME}(): '${root}$1' is not a regular file or a directory"; > else > eerror "${FUNCNAME}(): '${root}$1' does not exist"; > fi; > fi; > fi; > fi; > else > for PYTHON_ABI in ${iterated_PYTHON_ABIS}; > do > if [[ -d "${root}$(python_get_sitedir)/$1" ]]; then > site_packages_dirs+=("$1"); > break; > else > if [[ -f "${root}$(python_get_sitedir)/$1" ]]; then > site_packages_files+=("$1"); > break; > else > if [[ -e "${root}$(python_get_sitedir)/$1" ]]; then > eerror "${FUNCNAME}(): '$1' is not a regular file or a directory"; > else > eerror "${FUNCNAME}(): '$1' does not exist"; > fi; > fi; > fi; > done; > fi; > fi; > fi; > shift; > done; > options+=("-q"); > for PYTHON_ABI in ${iterated_PYTHON_ABIS}; > do > if ((${#site_packages_dirs[@]})) || ((${#site_packages_files[@]})) || ((${#evaluated_dirs[@]})) || ((${#evaluated_files[@]})); then > return_code="0"; > stderr=""; > ebegin "Compilation and optimization of Python modules for $(python_get_implementation_and_version)"; > if ((${#site_packages_dirs[@]})) || ((${#evaluated_dirs[@]})); then > for dir in "${site_packages_dirs[@]}"; > do > dirs+=("${root}$(python_get_sitedir)/${dir}"); > done; > for dir in "${evaluated_dirs[@]}"; > do > eval "dirs+=(\"\${root}${dir}\")"; > done; > stderr+="${stderr:+ >}$("$(PYTHON)" -m compileall "${options[@]}" "${dirs[@]}" 2>&1)" || return_code="1"; > if ! has "$(_python_get_implementation "${PYTHON_ABI}")" Jython PyPy; then > "$(PYTHON)" -O -m compileall "${options[@]}" "${dirs[@]}" &>/dev/null || return_code="1"; > fi; > _python_clean_compiled_modules "${dirs[@]}"; > fi; > if ((${#site_packages_files[@]})) || ((${#evaluated_files[@]})); then > for file in "${site_packages_files[@]}"; > do > files+=("${root}$(python_get_sitedir)/${file}"); > done; > for file in "${evaluated_files[@]}"; > do > eval "files+=(\"\${root}${file}\")"; > done; > stderr+="${stderr:+ >}$("$(PYTHON)" -m py_compile "${files[@]}" 2>&1)" || return_code="1"; > if ! has "$(_python_get_implementation "${PYTHON_ABI}")" Jython PyPy; then > "$(PYTHON)" -O -m py_compile "${files[@]}" &>/dev/null || return_code="1"; > fi; > _python_clean_compiled_modules "${files[@]}"; > fi; > eend "${return_code}"; > if [[ -n "${stderr}" ]]; then > eerror "Syntax errors / warnings in Python modules for $(python_get_implementation_and_version):" &>/dev/null; > while read stderr_line; do > eerror " ${stderr_line}"; > done <<< "${stderr}"; > fi; > fi; > unset dirs files; > done; > if _python_package_supporting_installation_for_multiple_python_abis; then > if [[ -n "${previous_PYTHON_ABI}" ]]; then > PYTHON_ABI="${previous_PYTHON_ABI}"; > else > unset PYTHON_ABI; > fi; > fi; > if ((${#other_dirs[@]})) || ((${#other_files[@]})); then > return_code="0"; > stderr=""; > ebegin "Compilation and optimization of Python modules placed outside of site-packages directories for $(python_get_implementation_and_version)"; > if ((${#other_dirs[@]})); then > stderr+="${stderr:+ >}$("$(PYTHON ${PYTHON_ABI})" -m compileall "${options[@]}" "${other_dirs[@]}" 2>&1)" || return_code="1"; > if ! has "$(_python_get_implementation "${PYTHON_ABI}")" Jython PyPy; then > "$(PYTHON ${PYTHON_ABI})" -O -m compileall "${options[@]}" "${other_dirs[@]}" &>/dev/null || return_code="1"; > fi; > _python_clean_compiled_modules "${other_dirs[@]}"; > fi; > if ((${#other_files[@]})); then > stderr+="${stderr:+ >}$("$(PYTHON ${PYTHON_ABI})" -m py_compile "${other_files[@]}" 2>&1)" || return_code="1"; > if ! has "$(_python_get_implementation "${PYTHON_ABI}")" Jython PyPy; then > "$(PYTHON ${PYTHON_ABI})" -O -m py_compile "${other_files[@]}" &>/dev/null || return_code="1"; > fi; > _python_clean_compiled_modules "${other_files[@]}"; > fi; > eend "${return_code}"; > if [[ -n "${stderr}" ]]; then > eerror "Syntax errors / warnings in Python modules placed outside of site-packages directories for $(python_get_implementation_and_version):" &>/dev/null; > while read stderr_line; do > eerror " ${stderr_line}"; > done <<< "${stderr}"; > fi; > fi; > else > ewarn; > ewarn "Deprecation Warning: Usage of ${FUNCNAME}() in packages not supporting installation"; > ewarn "for multiple Python ABIs in EAPI <=2 is deprecated and will be disallowed on 2011-08-01."; > ewarn "Use EAPI >=3 and call ${FUNCNAME}() with paths having appropriate syntax."; > ewarn "The ebuild needs to be fixed. Please report a bug, if it has not been already reported."; > ewarn; > local myroot mydirs=() myfiles=() myopts=() return_code="0"; > myroot="${EROOT%/}"; > while (($#)); do > case "$1" in > -l | -f | -q) > myopts+=("$1") > ;; > -d | -x) > myopts+=("$1" "$2"); > shift > ;; > --) > shift; > break > ;; > -*) > die "${FUNCNAME}(): Unrecognized option '$1'" > ;; > *) > break > ;; > esac; > shift; > done; > if [[ "$#" -eq 0 ]]; then > die "${FUNCNAME}(): Missing files or directories"; > fi; > while (($#)); do > if [[ "$1" =~ ^($|(\.|\.\.|/)($|/)) ]]; then > die "${FUNCNAME}(): Invalid argument '$1'"; > else > if [[ -d "${myroot}/${1#/}" ]]; then > mydirs+=("${myroot}/${1#/}"); > else > if [[ -f "${myroot}/${1#/}" ]]; then > myfiles+=("${myroot}/${1#/}"); > else > if [[ -e "${myroot}/${1#/}" ]]; then > eerror "${FUNCNAME}(): ${myroot}/${1#/} is not a regular file or directory"; > else > eerror "${FUNCNAME}(): ${myroot}/${1#/} does not exist"; > fi; > fi; > fi; > fi; > shift; > done; > myopts+=(-q); > PYTHON_ABI="${PYTHON_ABI:-$(PYTHON --ABI)}"; > ebegin "Compilation and optimization of Python modules for $(python_get_implementation) $(python_get_version)"; > if ((${#mydirs[@]})); then > "$(PYTHON ${PYTHON_ABI})" "${myroot}$(python_get_libdir)/compileall.py" "${myopts[@]}" "${mydirs[@]}" || return_code="1"; > "$(PYTHON ${PYTHON_ABI})" -O "${myroot}$(python_get_libdir)/compileall.py" "${myopts[@]}" "${mydirs[@]}" &>/dev/null || return_code="1"; > _python_clean_compiled_modules "${mydirs[@]}"; > fi; > if ((${#myfiles[@]})); then > "$(PYTHON ${PYTHON_ABI})" "${myroot}$(python_get_libdir)/py_compile.py" "${myfiles[@]}" || return_code="1"; > "$(PYTHON ${PYTHON_ABI})" -O "${myroot}$(python_get_libdir)/py_compile.py" "${myfiles[@]}" &>/dev/null || return_code="1"; > _python_clean_compiled_modules "${myfiles[@]}"; > fi; > eend "${return_code}"; > fi >} >python_need_rebuild () >{ > if _python_package_supporting_installation_for_multiple_python_abis; then > die "${FUNCNAME}() cannot be used in ebuilds of packages supporting installation for multiple Python ABIs"; > fi; > _python_check_python_pkg_setup_execution; > if [[ "$#" -ne 0 ]]; then > die "${FUNCNAME}() does not accept arguments"; > fi; > export PYTHON_NEED_REBUILD="$(PYTHON --ABI)" >} >python_pkg_setup () >{ > if [[ "${EBUILD_PHASE}" != "setup" ]]; then > die "${FUNCNAME}() can be used only in pkg_setup() phase"; > fi; > if [[ "$#" -ne 0 ]]; then > die "${FUNCNAME}() does not accept arguments"; > fi; > export JYTHON_SYSTEM_CACHEDIR="1"; > addwrite "${EPREFIX}/var/cache/jython"; > if _python_package_supporting_installation_for_multiple_python_abis; then > _python_calculate_PYTHON_ABIS; > export EPYTHON="$(PYTHON -f)"; > else > PYTHON_ABI="${PYTHON_ABI:-$(PYTHON --ABI)}"; > fi; > if ! has "${EAPI:-0}" 0 1 && [[ -n "${PYTHON_USE_WITH}" || -n "${PYTHON_USE_WITH_OR}" ]]; then > if [[ -n "${PYTHON_USE_WITH_OPT}" ]]; then > if [[ "${PYTHON_USE_WITH_OPT}" == !* ]]; then > use ${PYTHON_USE_WITH_OPT#!} && return; > else > use !${PYTHON_USE_WITH_OPT} && return; > fi; > fi; > function python_pkg_setup_check_USE_flags () > { > local python_atom USE_flag; > python_atom="$(python_get_implementational_package)"; > for USE_flag in ${PYTHON_USE_WITH}; > do > if ! has_version "${python_atom}[${USE_flag}]"; then > eerror "Please rebuild ${python_atom} with the following USE flags enabled: ${PYTHON_USE_WITH}"; > die "Please rebuild ${python_atom} with the following USE flags enabled: ${PYTHON_USE_WITH}"; > fi; > done; > for USE_flag in ${PYTHON_USE_WITH_OR}; > do > if has_version "${python_atom}[${USE_flag}]"; then > return; > fi; > done; > if [[ -n ${PYTHON_USE_WITH_OR} ]]; then > eerror "Please rebuild ${python_atom} with at least one of the following USE flags enabled: ${PYTHON_USE_WITH_OR}"; > die "Please rebuild ${python_atom} with at least one of the following USE flags enabled: ${PYTHON_USE_WITH_OR}"; > fi > }; > if _python_package_supporting_installation_for_multiple_python_abis; then > PYTHON_SKIP_SANITY_CHECKS="1" python_execute_function -q python_pkg_setup_check_USE_flags; > else > python_pkg_setup_check_USE_flags; > fi; > unset -f python_pkg_setup_check_USE_flags; > fi; > PYTHON_PKG_SETUP_EXECUTED="1" >} >python_set_active_version () >{ > if [[ "${EBUILD_PHASE}" != "setup" ]]; then > die "${FUNCNAME}() can be used only in pkg_setup() phase"; > fi; > if _python_package_supporting_installation_for_multiple_python_abis; then > die "${FUNCNAME}() cannot be used in ebuilds of packages supporting installation for multiple Python ABIs"; > fi; > if [[ "$#" -ne 1 ]]; then > die "${FUNCNAME}() requires 1 argument"; > fi; > _python_initial_sanity_checks; > if [[ -z "${PYTHON_ABI}" ]]; then > if [[ -n "$(_python_get_implementation --ignore-invalid "$1")" ]]; then > PYTHON_ABI="$1"; > if ! _python_implementation && ! has_version "$(python_get_implementational_package)"; then > die "${FUNCNAME}(): '$(python_get_implementational_package)' is not installed"; > fi; > export EPYTHON="$(PYTHON "$1")"; > else > if [[ "$1" == "2" ]]; then > if ! _python_implementation && ! has_version "=dev-lang/python-2*"; then > die "${FUNCNAME}(): '=dev-lang/python-2*' is not installed"; > fi; > export EPYTHON="$(PYTHON -2)"; > PYTHON_ABI="${EPYTHON#python}"; > PYTHON_ABI="${PYTHON_ABI%%-*}"; > else > if [[ "$1" == "3" ]]; then > if ! _python_implementation && ! has_version "=dev-lang/python-3*"; then > die "${FUNCNAME}(): '=dev-lang/python-3*' is not installed"; > fi; > export EPYTHON="$(PYTHON -3)"; > PYTHON_ABI="${EPYTHON#python}"; > PYTHON_ABI="${PYTHON_ABI%%-*}"; > else > die "${FUNCNAME}(): Unrecognized argument '$1'"; > fi; > fi; > fi; > fi; > _python_final_sanity_checks; > PYTHON_REQUESTED_ACTIVE_VERSION="$1" >} >python_src_compile () >{ > if [[ "${EBUILD_PHASE}" != "compile" ]]; then > die "${FUNCNAME}() can be used only in src_compile() phase"; > fi; > if ! _python_package_supporting_installation_for_multiple_python_abis; then > die "${FUNCNAME}() cannot be used in ebuilds of packages not supporting installation for multiple Python ABIs"; > fi; > _python_check_python_pkg_setup_execution; > python_execute_function -d -s -- "$@" >} >python_src_configure () >{ > if [[ "${EBUILD_PHASE}" != "configure" ]]; then > die "${FUNCNAME}() can be used only in src_configure() phase"; > fi; > if ! _python_package_supporting_installation_for_multiple_python_abis; then > die "${FUNCNAME}() cannot be used in ebuilds of packages not supporting installation for multiple Python ABIs"; > fi; > _python_check_python_pkg_setup_execution; > python_execute_function -d -s -- "$@" >} >python_src_install () >{ > if [[ "${EBUILD_PHASE}" != "install" ]]; then > die "${FUNCNAME}() can be used only in src_install() phase"; > fi; > if ! _python_package_supporting_installation_for_multiple_python_abis; then > die "${FUNCNAME}() cannot be used in ebuilds of packages not supporting installation for multiple Python ABIs"; > fi; > _python_check_python_pkg_setup_execution; > if has "${EAPI:-0}" 0 1 2 3; then > python_execute_function -d -s -- "$@"; > else > function python_installation () > { > emake DESTDIR="${T}/images/${PYTHON_ABI}" install "$@" > }; > python_execute_function -s python_installation "$@"; > unset python_installation; > python_merge_intermediate_installation_images "${T}/images"; > fi >} >python_src_prepare () >{ > if [[ "${EBUILD_PHASE}" != "prepare" ]]; then > die "${FUNCNAME}() can be used only in src_prepare() phase"; > fi; > if ! _python_package_supporting_installation_for_multiple_python_abis; then > die "${FUNCNAME}() cannot be used in ebuilds of packages not supporting installation for multiple Python ABIs"; > fi; > _python_check_python_pkg_setup_execution; > if [[ "$#" -ne 0 ]]; then > die "${FUNCNAME}() does not accept arguments"; > fi; > python_copy_sources >} >python_src_test () >{ > if [[ "${EBUILD_PHASE}" != "test" ]]; then > die "${FUNCNAME}() can be used only in src_test() phase"; > fi; > if ! _python_package_supporting_installation_for_multiple_python_abis; then > die "${FUNCNAME}() cannot be used in ebuilds of packages not supporting installation for multiple Python ABIs"; > fi; > _python_check_python_pkg_setup_execution; > python_execute_function -d -s -- "$@" >} >register_die_hook () >{ > local x; > for x in $*; > do > has $x $EBUILD_DEATH_HOOKS || export EBUILD_DEATH_HOOKS="$EBUILD_DEATH_HOOKS $x"; > done >} >register_success_hook () >{ > local x; > for x in $*; > do > has $x $EBUILD_SUCCESS_HOOKS || export EBUILD_SUCCESS_HOOKS="$EBUILD_SUCCESS_HOOKS $x"; > done >} >src_compile () >{ > distutils_src_compile "$@" >} >src_configure () >{ > __eapi2_src_configure "$@" >} >src_install () >{ > distutils_src_install; > function delete_tests () > { > rm -fr "${ED}$(python_get_sitedir)/simplejson/tests" > }; > python_execute_function -q delete_tests >} >src_prepare () >{ > distutils_src_prepare "$@" >} >src_test () >{ > function testing () > { > if [[ "$(python_get_implementation)" != "Jython" ]]; then > ln -fs ../$(ls -d build-${PYTHON_ABI}/lib*)/simplejson/_speedups.so simplejson/_speedups.so || return 1; > fi; > PYTHONPATH="build-${PYTHON_ABI}/lib" "$(PYTHON)" simplejson/tests/__init__.py > }; > python_execute_function testing >} >src_unpack () >{ > __eapi0_src_unpack "$@" >} >tc-arch () >{ > tc-ninja_magic_to_arch portage "$@" >} >tc-arch-kernel () >{ > tc-ninja_magic_to_arch kern "$@" >} >tc-endian () >{ > local host=$1; > [[ -z ${host} ]] && host=${CTARGET:-${CHOST}}; > host=${host%%-*}; > case ${host} in > aarch64*be) > echo big > ;; > aarch64) > echo little > ;; > alpha*) > echo big > ;; > 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*) > echo big > ;; > s390*) > echo big > ;; > sh*b*) > echo big > ;; > sh*) > echo little > ;; > sparc*) > echo big > ;; > x86_64*) > echo little > ;; > *) > echo wtf > ;; > esac >} >tc-env_build () >{ > tc-export_build_env; > CFLAGS=${BUILD_CFLAGS} CXXFLAGS=${BUILD_CXXFLAGS} CPPFLAGS=${BUILD_CPPFLAGS} LDFLAGS=${BUILD_LDFLAGS} AR=$(tc-getBUILD_AR) AS=$(tc-getBUILD_AS) CC=$(tc-getBUILD_CC) CPP=$(tc-getBUILD_CPP) CXX=$(tc-getBUILD_CXX) LD=$(tc-getBUILD_LD) NM=$(tc-getBUILD_NM) PKG_CONFIG=$(tc-getBUILD_PKG_CONFIG) RANLIB=$(tc-getBUILD_RANLIB) "$@" >} >tc-export () >{ > local var; > for var in "$@"; > do > [[ $(type -t tc-get${var}) != "function" ]] && die "tc-export: invalid export variable '${var}'"; > eval tc-get${var} > /dev/null; > done >} >tc-export_build_env () >{ > tc-export "$@"; > : ${BUILD_CFLAGS:=-O1 -pipe}; > : ${BUILD_CXXFLAGS:=-O1 -pipe}; > : ${BUILD_CPPFLAGS:=}; > : ${BUILD_LDFLAGS:=}; > export BUILD_{C,CXX,CPP,LD}FLAGS >} >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 cpp "$@" >} >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 () >{ > _tc-getPROG CBUILD "BUILD_$1 $1_FOR_BUILD HOST$1" "${@:2}" >} >tc-getBUILD_RANLIB () >{ > tc-getBUILD_PROG RANLIB ranlib "$@" >} >tc-getBUILD_STRIP () >{ > tc-getBUILD_PROG STRIP strip "$@" >} >tc-getCC () >{ > tc-getPROG CC gcc "$@" >} >tc-getCPP () >{ > tc-getPROG CPP cpp "$@" >} >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-getLD () >{ > tc-getPROG LD ld "$@" >} >tc-getNM () >{ > tc-getPROG NM nm "$@" >} >tc-getOBJCOPY () >{ > tc-getPROG OBJCOPY objcopy "$@" >} >tc-getPKG_CONFIG () >{ > tc-getPROG PKG_CONFIG pkg-config "$@" >} >tc-getPROG () >{ > _tc-getPROG CHOST "$@" >} >tc-getRANLIB () >{ > tc-getPROG RANLIB ranlib "$@" >} >tc-getRC () >{ > tc-getPROG RC windres "$@" >} >tc-getSTRIP () >{ > tc-getPROG STRIP strip "$@" >} >tc-has-openmp () >{ > local base="${T}/test-tc-openmp"; > cat > "${base}.c" <<-EOF >#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 > "${base}.c" <<-EOF >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-cross-compiler () >{ > return $([[ ${CBUILD:-${CHOST}} != ${CHOST} ]]) >} >tc-is-softfloat () >{ > local CTARGET=${CTARGET:-${CHOST}}; > case ${CTARGET} in > bfin* | h8300*) > echo "only" > ;; > *) > if [[ ${CTARGET//_/-} == *-softfloat-* ]]; then > echo "yes"; > else > if [[ ${CTARGET//_/-} == *-softfp-* ]]; then > echo "softfp"; > else > echo "no"; > fi; > fi > ;; > esac >} >tc-is-static-only () >{ > local host=${CTARGET:-${CHOST}}; > return $([[ ${host} == *-mint* ]]) >} >tc-ninja_magic_to_arch () >{ > function ninj () > { > [[ ${type} == "kern" ]] && echo $1 || echo $2 > }; > local type=$1; > local host=$2; > [[ -z ${host} ]] && host=${CTARGET:-${CHOST}}; > local KV=${KV:-${KV_FULL}}; > [[ ${type} == "kern" ]] && [[ -z ${KV} ]] && ewarn "QA: Kernel version could not be determined, please inherit kernel-2 or linux-info"; > case ${host} in > aarch64*) > ninj arm64 arm > ;; > alpha*) > echo alpha > ;; > arm*) > echo arm > ;; > avr*) > ninj avr32 avr > ;; > bfin*) > ninj blackfin bfin > ;; > cris*) > echo cris > ;; > hppa*) > ninj parisc hppa > ;; > i?86*) > if [[ ${type} == "kern" ]] && [[ $(KV_to_int ${KV}) -lt $(KV_to_int 2.6.24) || ${host} == *freebsd* ]]; then > echo i386; > else > echo x86; > fi > ;; > ia64*) > echo ia64 > ;; > m68*) > echo m68k > ;; > mips*) > echo mips > ;; > nios2*) > echo nios2 > ;; > nios*) > echo nios > ;; > powerpc*) > if [[ ${type} == "kern" ]] && [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.6.16) ]]; then > echo powerpc; > else > if [[ ${type} == "kern" ]] && [[ $(KV_to_int ${KV}) -eq $(KV_to_int 2.6.15) ]]; then > if [[ ${host} == powerpc64* ]] || [[ ${PROFILE_ARCH} == "ppc64" ]]; then > echo powerpc; > else > echo ppc; > fi; > else > if [[ ${host} == powerpc64* ]]; then > echo ppc64; > else > if [[ ${PROFILE_ARCH} == "ppc64" ]]; then > ninj ppc64 ppc; > else > echo ppc; > fi; > fi; > fi; > fi > ;; > s390*) > echo s390 > ;; > sh64*) > ninj sh64 sh > ;; > sh*) > echo sh > ;; > sparc64*) > ninj sparc64 sparc > ;; > sparc*) > [[ ${PROFILE_ARCH} == "sparc64" ]] && ninj sparc64 sparc || echo sparc > ;; > vax*) > echo vax > ;; > x86_64*freebsd*) > echo amd64 > ;; > x86_64*) > if [[ ${type} == "kern" ]] && [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.6.24) ]]; then > echo x86; > else > ninj x86_64 amd64; > fi > ;; > *) > echo unknown > ;; > esac >} >unpack () >{ > local srcdir; > local x; > local y; > local suffix; > local myfail; > local eapi=${EAPI:-0}; > [ -z "$*" ] && die "Nothing passed to the 'unpack' command"; > for x in "$@"; > do > __vecho ">>> Unpacking ${x} to ${PWD}"; > suffix=${x##*.}; > suffix=$(LC_ALL=C tr "[:upper:]" "[:lower:]" <<< "${suffix}"); > y=${x%.*}; > y=${y##*.}; > y=$(LC_ALL=C tr "[:upper:]" "[:lower:]" <<< "${y}"); > if [[ ${x} == "./"* ]]; then > srcdir=""; > else > if [[ ${x} == ${DISTDIR%/}/* ]]; then > die "Arguments to unpack() cannot begin with \${DISTDIR}."; > else > if [[ ${x} == "/"* ]]; then > die "Arguments to unpack() cannot be absolute"; > else > srcdir="${DISTDIR}/"; > fi; > fi; > fi; > [[ ! -s ${srcdir}${x} ]] && die "${x} does not exist"; > function __unpack_tar () > { > if [ "${y}" == "tar" ]; then > $1 -c -- "$srcdir$x" | tar xof -; > __assert_sigpipe_ok "$myfail"; > else > local cwd_dest=${x##*/}; > cwd_dest=${cwd_dest%.*}; > $1 -c -- "${srcdir}${x}" > "${cwd_dest}" || die "$myfail"; > fi > }; > myfail="failure unpacking ${x}"; > case "${suffix}" in > tar) > tar xof "$srcdir$x" || die "$myfail" > ;; > tgz) > tar xozf "$srcdir$x" || die "$myfail" > ;; > tbz | tbz2) > ${PORTAGE_BUNZIP2_COMMAND:-${PORTAGE_BZIP2_COMMAND} -d} -c -- "$srcdir$x" | tar xof -; > __assert_sigpipe_ok "$myfail" > ;; > zip | jar) > ( set +x; > while true; do > echo n || break; > done ) | unzip -qo "${srcdir}${x}" || die "$myfail" > ;; > gz | z) > __unpack_tar "gzip -d" > ;; > bz2 | bz) > __unpack_tar "${PORTAGE_BUNZIP2_COMMAND:-${PORTAGE_BZIP2_COMMAND} -d}" > ;; > 7z) > local my_output; > my_output="$(7z x -y "${srcdir}${x}")"; > if [ $? -ne 0 ]; then > echo "${my_output}" 1>&2; > die "$myfail"; > fi > ;; > rar) > unrar x -idq -o+ "${srcdir}${x}" || die "$myfail" > ;; > lha | lzh) > lha xfq "${srcdir}${x}" || die "$myfail" > ;; > a) > ar x "${srcdir}${x}" || die "$myfail" > ;; > deb) > if type -P deb2targz > /dev/null; then > y=${x##*/}; > local created_symlink=0; > if [ ! "$srcdir$x" -ef "$y" ]; then > ln -sf "$srcdir$x" "$y" || die "$myfail"; > created_symlink=1; > fi; > deb2targz "$y" || die "$myfail"; > if [ $created_symlink = 1 ]; then > rm -f "$y"; > fi; > mv -f "${y%.deb}".tar.gz data.tar.gz || die "$myfail"; > else > ar x "$srcdir$x" || die "$myfail"; > fi > ;; > lzma) > __unpack_tar "lzma -d" > ;; > xz) > if ___eapi_unpack_supports_xz; then > __unpack_tar "xz -d"; > else > __vecho "unpack ${x}: file format not recognized. Ignoring."; > fi > ;; > *) > __vecho "unpack ${x}: file format not recognized. Ignoring." > ;; > esac; > done; > find . -mindepth 1 -maxdepth 1 ! -type l -print0 | ${XARGS} -0 chmod -fR a+rX,u+w,g-w,o-w >} >use () >{ > local u=$1; > local found=0; > if [[ ${u:0:1} == "!" ]]; then > u=${u:1}; > found=1; > fi; > if [[ $EBUILD_PHASE = depend ]]; then > true; > else > if [[ -n $PORTAGE_IUSE && -n $EBUILD_PHASE ]]; then > [[ $u =~ $PORTAGE_IUSE ]] || eqawarn "QA Notice: USE Flag '${u}' not" "in IUSE for ${CATEGORY}/${PF}"; > fi; > fi; > local IFS=' >' prev_shopts=$- ret; > set -f; > if has ${u} ${USE}; then > ret=${found}; > else > ret=$((!found)); > fi; > [[ ${prev_shopts} == *f* ]] || set +f; > return ${ret} >} >use_enable () >{ > if [ -z "$1" ]; then > echo "!!! use_enable() called without a parameter." 1>&2; > echo "!!! use_enable <USEFLAG> [<flagname> [value]]" 1>&2; > return 1; > fi; > if ___eapi_use_enable_and_use_with_support_empty_third_argument; then > local UE_SUFFIX=${3+=$3}; > else > local UE_SUFFIX=${3:+=$3}; > fi; > local UWORD=${2:-$1}; > if use $1; then > echo "--enable-${UWORD}${UE_SUFFIX}"; > else > echo "--disable-${UWORD}"; > fi; > return 0 >} >use_with () >{ > if [ -z "$1" ]; then > echo "!!! use_with() called without a parameter." 1>&2; > echo "!!! use_with <USEFLAG> [<flagname> [value]]" 1>&2; > return 1; > fi; > if ___eapi_use_enable_and_use_with_support_empty_third_argument; then > local UW_SUFFIX=${3+=$3}; > else > local UW_SUFFIX=${3:+=$3}; > fi; > local UWORD=${2:-$1}; > if use $1; then > echo "--with-${UWORD}${UW_SUFFIX}"; > else > echo "--without-${UWORD}"; > fi; > return 0 >} >useq () >{ > has $EBUILD_PHASE prerm postrm || eqawarn "QA Notice: The 'useq' function is deprecated (replaced by 'use')"; > use ${1} >} >usev () >{ > if use ${1}; then > echo "${1#!}"; > return 0; > fi; > return 1 >} >usex () >{ > if use "$1"; then > echo "${2-yes}$4"; > else > echo "${3-no}$5"; > fi; > return 0 >} >declare -x A="simplejson-3.0.4.tar.gz" >declare -x ABI="amd64" >declare -x ACCEPT_LICENSE="MIT" >declare -x ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" >declare -x ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" >declare -x ANT_HOME="/usr/share/ant" >declare -x 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" >declare -x ARCH="amd64" >declare -x BOOTSTRAP_USE="cxx unicode multilib" >declare -x BUILD_PREFIX="/tmp/portage" >declare -x CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump" >declare -x CAMERAS="ptp2" >declare -x CATEGORY="dev-python" >declare -x CBUILD="x86_64-pc-linux-gnu" >declare -x CCACHE_DISABLE="1" >declare -x CFLAGS="-march=amdfam10 -O2 -pipe -g" >declare -x CFLAGS_amd64="-m64" >declare -x CFLAGS_default >declare -x CFLAGS_x32="-mx32" >declare -x CFLAGS_x86="-m32" >declare -x CG_COMPILER_EXE="/opt/bin/cgc" >declare -x CG_INC_PATH="/opt/nvidia-cg-toolkit/include" >declare -x CG_LIB_PATH="/opt/nvidia-cg-toolkit/lib64:/opt/nvidia-cg-toolkit/lib32" >declare -x CHOST="x86_64-pc-linux-gnu" >declare -x CHOST_amd64="x86_64-pc-linux-gnu" >declare -x CHOST_default="x86_64-pc-linux-gnu" >declare -x CHOST_x32="x86_64-pc-linux-gnux32" >declare -x CHOST_x86="i686-pc-linux-gnu" >declare -x COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" >declare -x COLORTERM="xfce4-terminal" >declare -x COLUMNS="80" >declare -x CTARGET_default="x86_64-pc-linux-gnu" >declare -x CVS_RSH="ssh" >declare -x CXXFLAGS="-march=amdfam10 -O2 -pipe -g" >declare -rx D="/tmp/portage/dev-python/simplejson-3.0.4/image/" >declare -x DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-GQjuu0fgqz,guid=7440297610a1de31676c214650e4751f" >declare -x DCCC_PATH="/usr/lib64/distcc/bin" >declare -x DEFAULT_ABI="amd64" >declare -rx DEFINED_PHASES=" compile install postinst postrm prepare setup test" >declare -x DESTTREE="/usr" >declare -x DIROPTIONS="-m0755" >declare -x DISPLAY=":0.1" >declare -x DISTCC_LOG="/var/log/distcc" >declare -x DISTCC_VERBOSE="1" >declare -x DISTDIR="/tmp/portage/dev-python/simplejson-3.0.4/distdir" >declare -rx EAPI="5" >declare -rx EBUILD="/u1/portage/dev-python/simplejson/simplejson-3.0.4.ebuild" >declare -x EBUILD_MASTER_PID="10518" >declare -rx EBUILD_PHASE="setup" >declare -rx EBUILD_PHASE_FUNC="pkg_setup" >declare -rx ECLASSDIR="/u1/portage/eclass" >declare -ix ECLASS_DEPTH="0" >declare -rx ED="/tmp/portage/dev-python/simplejson-3.0.4/image/" >declare -x EDITOR="/usr/bin/vim" >declare -x ELIBC="glibc" >declare -rx EMERGE_FROM="ebuild" >declare -rx EPREFIX="" >declare -rx EROOT="/" >declare -x EXEOPTIONS="-m0755" >declare -x EXINIT="syntax off" >declare -x FCFLAGS="-O2 -pipe" >declare -x FEATURES="assume-digests binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch xattr" >declare -x FETCHCOMMAND_SSH="bash -c \"x=\\\${2#ssh://} ; host=\\\${x%%/*} ; port=\\\${host##*:} ; host=\\\${host%:*} ; [[ \\\${host} = \\\${port} ]] && port=22 ; exec rsync --rsh=\\\"ssh -p\\\${port}\\\" -avP \\\"\\\${host}:/\\\${x#*/}\\\" \\\"\\\$1\\\"\" rsync \"\${DISTDIR}/\${FILE}\" \"\${URI}\"" >declare -x FFLAGS="-O2 -pipe" >declare -rx FILESDIR="/u1/portage/dev-python/simplejson/files" >declare -x FLTK_DOCDIR="/usr/share/doc/fltk-1.3.2/html" >declare -x GCC_SPECS="" >declare -x GPG_AGENT_INFO="/tmp/gpg-Dj0G71/S.gpg-agent:4560:1" >declare -x GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx" >declare -x GRUB_PLATFORMS="" >declare -x GSETTINGS_BACKEND="dconf" >declare -x GUILE_LOAD_PATH="/usr/share/guile/1.8" >declare -x HG="/usr/bin/hg" >declare -x HOME="/tmp/portage/dev-python/simplejson-3.0.4/homedir" >declare -x HUSHLOGIN="FALSE" >declare -x INCLUDE_SERVER_PORT="/tmp/distcc-pump.xsHmD1/socket" >declare -rx INHERITED=" multilib toolchain-funcs python distutils" >declare -x INPUT_DEVICES="keyboard mouse wacom evdev" >declare -x INSDESTTREE="" >declare -x INSOPTIONS="-m0644" >declare -x IUSE_EFFECTIVE="alpha amd64 amd64-fbsd amd64-linux arm arm-linux elibc_AIX elibc_Cygwin elibc_Darwin elibc_FreeBSD elibc_HPUX elibc_Interix elibc_NetBSD elibc_OpenBSD elibc_SunOS elibc_Winnt elibc_glibc elibc_mintlib elibc_uclibc hppa hppa-hpux ia64 ia64-hpux ia64-linux kernel_AIX kernel_Cygwin kernel_Darwin kernel_FreeBSD kernel_HPUX kernel_Interix kernel_NetBSD kernel_OpenBSD kernel_SunOS kernel_Winnt kernel_freemint kernel_linux m68k m68k-mint mips ppc ppc-aix ppc-macos ppc-openbsd ppc64 ppc64-linux prefix s390 sh sparc sparc-fbsd sparc-solaris sparc64-freebsd sparc64-solaris userland_BSD userland_GNU x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt" >declare -x IUSE_IMPLICIT="prefix" >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 JYTHON_SYSTEM_CACHEDIR="1" >declare -x KERNEL="linux" >declare -x KERNEL_ABI="amd64" >declare -rx KEYWORDS="~amd64 ~arm ~ppc ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos" >declare -x LADSPA_PATH="/usr/lib64/ladspa" >declare -x LANG="en_US.utf8" >declare -x LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" >declare -x LDFLAGS="-Wl,-O1 -Wl,--as-needed" >declare -x LDFLAGS_amd64="-m elf_x86_64" >declare -x LDFLAGS_default >declare -x LDFLAGS_x32="-m elf32_x86_64" >declare -x LDFLAGS_x86="-m elf_i386" >declare -x LD_LIBRARY_PATH="/usr/local/mysql/lib/mysql:/usr/local/apache2/lib" >declare -x LESS="-R -M --shift 5" >declare -x LESSOPEN="|lesspipe %s" >declare -x LIBDIR_amd64="lib64" >declare -x LIBDIR_amd64_fbsd="lib64" >declare -x LIBDIR_default="lib" >declare -x LIBDIR_n32="lib32" >declare -x LIBDIR_n64="lib64" >declare -x LIBDIR_o32="lib" >declare -x LIBDIR_ppc="lib32" >declare -x LIBDIR_ppc64="lib64" >declare -x LIBDIR_s390="lib32" >declare -x LIBDIR_s390x="lib64" >declare -x LIBDIR_sparc32="lib32" >declare -x LIBDIR_sparc64="lib64" >declare -x LIBDIR_x32="libx32" >declare -x LIBDIR_x86="lib32" >declare -x LIBDIR_x86_fbsd="lib32" >declare -x LIBGL_DEBUG="verbose" >declare -x LIBOPTIONS="-m0644" >declare -x LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer nlpsolver pdfimport" >declare -x LIBXCB_ALLOW_SLOPPY_LOCK="1" >declare -rx LICENSE="MIT" >declare -x LINGUAS="en en_US" >declare -x LOGNAME="root" >declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.pdf=00;32:*.ps=00;32:*.txt=00;32:*.patch=00;32:*.diff=00;32:*.log=00;32:*.tex=00;32:*.doc=00;32:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:" >declare -x MAIL="/var/mail/root" >declare -x MAKE_OPTS="-j3" >declare -x MALLOC_CHECK_="1" >declare -rx MERGE_TYPE="source" >declare -x MOPREFIX="simplejson" >declare -x MOZ_GLX_IGNORE_BLACKLIST="1" >declare -x MULTILIB_ABIS="amd64 x86" >declare -x MULTILIB_STRICT_DENY="64-bit.*shared object" >declare -x MULTILIB_STRICT_DIRS="/lib32 /lib /usr/lib32 /usr/lib /usr/kde/*/lib32 /usr/kde/*/lib /usr/qt/*/lib32 /usr/qt/*/lib /usr/X11R6/lib32 /usr/X11R6/lib" >declare -x MULTILIB_STRICT_EXEMPT="(perl5|gcc|gcc-lib|binutils|eclipse-3|debug|portage|udev)" >declare -x NETBEANS="apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml" >declare -x OLDPWD="/root" >declare -x OPENGL_PROFILE="xorg-x11" >declare -x P="simplejson-3.0.4" >declare -x PAGER="/usr/bin/less" >declare -x PARINIT="rTbgqR B=.,?_A_a Q=_s>|" >declare -x PATH="/usr/lib64/portage/bin/ebuild-helpers:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.3:/opt/nvidia-cg-toolkit/bin:/usr/local/mysql/bin:/usr/local/mysql/libexec:/usr/local/apache2/bin:/etc/ssl/misc:/usr/games/bin:." >declare -x PF="simplejson-3.0.4" >declare -x PHP_TARGETS="php5-3" >declare -x PKGDIR="/usr/portage/packages" >declare -x PKGUSE="" >declare -x PKG_CONFIG_PATH="/usr/local/lib/pkgconfig" >declare -x PKG_LOGDIR="/tmp/portage/dev-python/simplejson-3.0.4/temp/logging" >declare -x PKG_TMPDIR="/tmp/portage/._unmerge_" >declare -rx PM_EBUILD_HOOK_DIR="/etc/portage/env" >declare -x PN="simplejson" >declare -rx PORTAGE_ACTUAL_DISTDIR="/u1/portage/distfiles" >declare -rx PORTAGE_ARCHLIST="ppc sparc64-freebsd ppc-openbsd x86-openbsd ppc64 x86-winnt x86-fbsd ppc-aix alpha arm x86-freebsd s390 amd64 arm-linux x86-macos x64-openbsd ia64-hpux hppa x86-netbsd ppc64-linux x86-cygwin amd64-linux ia64-linux x86 sparc-solaris x64-freebsd sparc64-solaris x86-linux x64-macos sparc m68k-mint ia64 mips ppc-macos x86-interix hppa-hpux amd64-fbsd x64-solaris m68k sh x86-solaris sparc-fbsd" >declare -rx PORTAGE_BASHRC="/etc/portage/bashrc" >declare -rx PORTAGE_BIN_PATH="/usr/lib64/portage/bin" >declare -rx PORTAGE_BUILDDIR="/tmp/portage/dev-python/simplejson-3.0.4" >declare -rx PORTAGE_BUILD_GROUP="root" >declare -rx PORTAGE_BUILD_USER="root" >declare -rx PORTAGE_BZIP2_COMMAND="bzip2" >declare -rx PORTAGE_COLORMAP="GOOD=\$'[32;01m' >WARN=\$'[33;01m' >BAD=\$'[31;01m' >HILITE=\$'[36m' >BRACKET=\$'[34;01m' >NORMAL=\$'[0m'" >declare -x PORTAGE_COMPRESS_EXCLUDE_SUFFIXES="css gif htm[l]? jp[e]?g js pdf png" >declare -rx PORTAGE_CONFIGROOT="/" >declare -rx PORTAGE_DEBUG="0" >declare -rx PORTAGE_DEPCACHEDIR="/var/cache/edb/dep" >declare -x PORTAGE_FEATURES="assume-digests binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch xattr" >declare -rx PORTAGE_GID="250" >declare -rx PORTAGE_INST_GID="0" >declare -rx PORTAGE_INST_UID="0" >declare -rx PORTAGE_IPC_DAEMON="1" >declare -rx PORTAGE_IUSE="^(alpha|amd64|amd64\\-fbsd|amd64\\-linux|arm|arm\\-linux|elibc\\_AIX|elibc\\_Cygwin|elibc\\_Darwin|elibc\\_FreeBSD|elibc\\_HPUX|elibc\\_Interix|elibc\\_NetBSD|elibc\\_OpenBSD|elibc\\_SunOS|elibc\\_Winnt|elibc\\_glibc|elibc\\_mintlib|elibc\\_uclibc|hppa|hppa\\-hpux|ia64|ia64\\-hpux|ia64\\-linux|kernel\\_AIX|kernel\\_Cygwin|kernel\\_Darwin|kernel\\_FreeBSD|kernel\\_HPUX|kernel\\_Interix|kernel\\_NetBSD|kernel\\_OpenBSD|kernel\\_SunOS|kernel\\_Winnt|kernel\\_freemint|kernel\\_linux|m68k|m68k\\-mint|mips|ppc|ppc64|ppc64\\-linux|ppc\\-aix|ppc\\-macos|ppc\\-openbsd|prefix|s390|sh|sparc|sparc64\\-freebsd|sparc64\\-solaris|sparc\\-fbsd|sparc\\-solaris|userland\\_BSD|userland\\_GNU|x64\\-freebsd|x64\\-macos|x64\\-openbsd|x64\\-solaris|x86|x86\\-cygwin|x86\\-fbsd|x86\\-freebsd|x86\\-interix|x86\\-linux|x86\\-macos|x86\\-netbsd|x86\\-openbsd|x86\\-solaris|x86\\-winnt)\$" >declare -rx PORTAGE_LOG_FILE="/tmp/portage/dev-python/simplejson-3.0.4/temp/build.log" >declare -x PORTAGE_NICENESS="0" >declare -rx PORTAGE_OVERRIDE_EPREFIX="" >declare -rx PORTAGE_PYM_PATH="/usr/lib64/portage/pym" >declare -rx PORTAGE_PYTHON="/usr/bin/python2.7" >declare -rx PORTAGE_REPO_NAME="gentoo" >declare -rx PORTAGE_RESTRICT="" >declare -rx PORTAGE_SIGPIPE_STATUS="141" >declare -rx PORTAGE_TMPDIR="/tmp" >declare -rx PORTAGE_WORKDIR_MODE="0700" >declare -rx PORTDIR="/u1/portage" >declare -rx PORTDIR_OVERLAY="" >declare -x PR="r0" >declare -x PRELINK_PATH_MASK="/usr/lib64/libfreebl3.so:/usr/lib64/libnssdbm3.so:/usr/lib64/libsoftokn3.so:/opt/bin/skype" >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 -rx PROFILE_PATHS="/u1/portage/profiles/base >/u1/portage/profiles/default/linux >/u1/portage/profiles/arch/base >/u1/portage/profiles/features/multilib >/u1/portage/profiles/features/multilib/lib32 >/u1/portage/profiles/arch/amd64 >/u1/portage/profiles/default/linux/amd64 >/u1/portage/profiles/releases >/u1/portage/profiles/releases/10.0 >/u1/portage/profiles/default/linux/amd64/10.0 >/u1/portage/profiles/targets/desktop >/u1/portage/profiles/default/linux/amd64/10.0/desktop >/etc/portage/profile" >declare -x PROPERTIES="" >declare -rx PROVIDE="" >declare -x PV="3.0.4" >declare -x PVR="3.0.4" >declare -x PWD="/tmp/portage/dev-python/simplejson-3.0.4" >declare -x PYTHONDONTWRITEBYTECODE="1" >declare -x PYTHONPATH="/usr/lib/portage/pym:/usr/local/lib64/python2.7/site-packages" >declare -x PYTHON_SINGLE_TARGET="python2_7" >declare -x PYTHON_TARGETS="python2_7 python3_2" >declare -x QT_GRAPHICSSYSTEM="raster" >declare -x QT_PLUGIN_PATH="/usr/lib64/kde4/plugins" >declare -rx REPLACING_VERSIONS="3.0.0" >declare -rx RESTRICT="" >declare -x RESUMECOMMAND_SSH="bash -c \"x=\\\${2#ssh://} ; host=\\\${x%%/*} ; port=\\\${host##*:} ; host=\\\${host%:*} ; [[ \\\${host} = \\\${port} ]] && port=22 ; exec rsync --rsh=\\\"ssh -p\\\${port}\\\" -avP \\\"\\\${host}:/\\\${x#*/}\\\" \\\"\\\$1\\\"\" rsync \"\${DISTDIR}/\${FILE}\" \"\${URI}\"" >declare -x ROOT="/" >declare -x ROOTPATH="/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.3:/opt/nvidia-cg-toolkit/bin:/usr/local/mysql/bin:/usr/local/mysql/libexec:/usr/local/apache2/bin:/etc/ssl/misc:/usr/games/bin:." >declare -x RPMDIR="/u1/portage/rpm" >declare -x RUBYOPT="-rauto_gem" >declare -x RUBY_TARGETS="ruby18 ruby19" >declare -x S="/tmp/portage/dev-python/simplejson-3.0.4/work/simplejson-3.0.4" >declare -x SANDBOX_LOG="dev-python_-_simplejson-3.0.4" >declare -x SANDBOX_ON="0" >declare -x SANDBOX_READ="/:/tmp" >declare -x SANDBOX_WRITE="/tmp:/var/cache/jython" >declare -x SANE_BACKENDS="gphoto2 abaton agfafocus apple artec artec_eplus48u as6e avision bh canon canon630u canon_dr canon_pp cardscan coolscan coolscan2 coolscan3 dc25 dc210 dc240 dell1600n_net dmc epjitsu epson epson2 fujitsu genesys gt68xx hp hp3500 hp3900 hp4200 hp5400 hp5590 hpsj5s hpljm1005 hs2p ibm kodak kodakaio kvs1025 kvs20xx leo lexmark ma1509 magicolor matsushita microtek microtek2 mustek mustek_pp mustek_usb nec net niash p5 pie pixma plustek plustek_pp qcam ricoh rts8891 s9036 sceptre sharp sm3600 sm3840 snapscan sp15c st400 stv680 tamarack teco1 teco2 teco3 test u12 umax umax_pp umax1220u xerox_mfp" >declare -x SESSION_MANAGER="local/kong:@/tmp/.ICE-unix/4561,unix/kong:/tmp/.ICE-unix/4561,inet6/kong:55602,inet/kong:49065" >declare -x SGML_CATALOG_FILES="/etc/sgml/sgml-lite.cat:/etc/sgml/sgml-docbook-4.0.cat:/etc/sgml/sgml-docbook.cat:/etc/sgml/xml-docbook-4.1.2.cat:/etc/sgml/sgml-docbook-3.1.cat:/etc/sgml/gentoo-guide.cat:/etc/sgml/sgml-docbook-4.1.cat:/etc/sgml/xml-docbook-4.3.cat:/etc/sgml/sgml-docbook-4.5.cat:/etc/sgml/xml-simple-docbook-4.1.2.4.cat:/etc/sgml/openjade-1.3.2.cat:/etc/sgml/xml-simple-docbook-1.0.cat:/etc/sgml/xml-docbook-4.5.cat:/etc/sgml/sgml-docbook-4.2.cat:/etc/sgml/sgml-docbook-4.4.cat:/etc/sgml/xml-docbook-4.2.cat:/etc/sgml/sgml-ent.cat:/etc/sgml/sgml-docbook-3.0.cat:/etc/sgml/dsssl-docbook-stylesheets.cat:/etc/sgml/xml-docbook-4.4.cat" >declare -x SHELL="/bin/bash" >declare -x SHLVL="7" >declare -rx SLOT="0" >declare -x SSH_AGENT_PID="4558" >declare -x SSH_AUTH_SOCK="/tmp/ssh-Efz0sk3jIBKo/agent.4557" >declare -x SYMLINK_LIB="yes" >declare -rx T="/tmp/portage/dev-python/simplejson-3.0.4/temp" >declare -x TEMP="/tmp/portage/dev-python/simplejson-3.0.4/temp" >declare -x TERM="xterm" >declare -x TMP="/tmp/portage/dev-python/simplejson-3.0.4/temp" >declare -x TMPDIR="/tmp/portage/dev-python/simplejson-3.0.4/temp" >declare -x TZ="PST8PDT" >declare -x USE="amd64 elibc_glibc kernel_linux userland_GNU" >declare -x USERLAND="GNU" >declare -x USE_EXPAND="ALSA_CARDS ALSA_PCM_PLUGINS APACHE2_MODULES APACHE2_MPMS CALLIGRA_FEATURES CAMERAS COLLECTD_PLUGINS CROSSCOMPILE_OPTS CURL_SSL DRACUT_MODULES DVB_CARDS ELIBC ENLIGHTENMENT_MODULES FCDSL_CARDS FFTOOLS FOO2ZJS_DEVICES FRITZCAPI_CARDS GPSD_PROTOCOLS GRUB_PLATFORMS INPUT_DEVICES KERNEL LCD_DEVICES LIBREOFFICE_EXTENSIONS LINGUAS LIRC_DEVICES MISDN_CARDS NETBEANS_MODULES NGINX_MODULES_HTTP NGINX_MODULES_MAIL OFED_DRIVERS OPENMPI_FABRICS OPENMPI_OFED_FEATURES OPENMPI_RM PHP_TARGETS PYTHON_SINGLE_TARGET PYTHON_TARGETS QEMU_SOFTMMU_TARGETS QEMU_USER_TARGETS RUBY_TARGETS SANE_BACKENDS USERLAND VIDEO_CARDS VOICEMAIL_STORAGE XFCE_PLUGINS XTABLES_ADDONS" >declare -x USE_EXPAND_IMPLICIT="ARCH ELIBC KERNEL USERLAND" >declare -x USE_EXPAND_UNPREFIXED="ARCH" >declare -x USE_EXPAND_VALUES_ARCH="alpha amd64 amd64-fbsd amd64-linux arm arm-linux hppa hppa-hpux ia64 ia64-hpux ia64-linux m68k m68k-mint mips ppc ppc64 ppc64-linux ppc-aix ppc-macos ppc-openbsd s390 sh sparc sparc64-freebsd sparc64-solaris sparc-fbsd sparc-solaris x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt" >declare -x USE_EXPAND_VALUES_ELIBC="AIX Cygwin Darwin FreeBSD glibc HPUX Interix mintlib NetBSD OpenBSD SunOS uclibc Winnt" >declare -x USE_EXPAND_VALUES_KERNEL="AIX Cygwin Darwin FreeBSD freemint HPUX Interix linux NetBSD OpenBSD SunOS Winnt" >declare -x USE_EXPAND_VALUES_USERLAND="BSD GNU" >declare -x VBOX_APP_HOME="/usr/lib64/virtualbox" >declare -x VIDEO_CARDS="vesa nouveau radeon" >declare -x WINDOWID="77594629" >declare -x WINDOWPATH="7" >declare -rx WORKDIR="/tmp/portage/dev-python/simplejson-3.0.4/work" >declare -x XARGS="xargs -r" >declare -x XAUTHORITY="/root/.Xauthority" >declare -x XDG_CONFIG_DIRS="/etc/xdg" >declare -x XDG_DATA_DIRS="/usr/local/share:/usr/share:/usr/share/gdm" >declare -x XDG_SESSION_COOKIE="bc0bfd054aa15bc9e83f515200069dc9-1357149440.431251-898173449" >declare -x 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" >declare -x _E_DOCDESTTREE_="" >declare -x _E_EXEDESTTREE_=""
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 450062
:
334248
| 334250