Created
May 27, 2012 10:19
-
-
Save anonymous/2803191 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
A=eiskaltdcpp-2.2.6.tar.xz | |
ABI=amd64 | |
ACCEPT_LICENSE='GPL-2 GPL-3' | |
ALSA_CARDS= | |
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='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' | |
BASE_EXPF='src_unpack src_compile src_install src_prepare src_configure' | |
BASH=/bin/bash | |
BASHOPTS=cmdhist:expand_aliases:extdebug:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath | |
BASHPID=11815 | |
BASH_ALIASES=() | |
BASH_ARGC=([0]="1" [1]="0" [2]="1" [3]="1" [4]="0" [5]="1" [6]="1") | |
BASH_ARGV=([0]="Sorry, but gcc-4.4 and earlier won't work." [1]="pkg_pretend" [2]="pkg_pretend" [3]="pretend" [4]="pretend") | |
BASH_CMDS=() | |
BASH_LINENO=([0]="95" [1]="85" [2]="201" [3]="218" [4]="969" [5]="687" [6]="0") | |
BASH_SOURCE=([0]="/usr/lib64/portage/bin/isolated-functions.sh" [1]="/usr/portage/net-p2p/eiskaltdcpp/eiskaltdcpp-2.2.6.ebuild" [2]="/usr/lib64/portage/bin/ebuild.sh" [3]="/usr/lib64/portage/bin/phase-functions.sh" [4]="/usr/lib64/portage/bin/phase-functions.sh" [5]="/usr/lib64/portage/bin/phase-functions.sh" [6]="/usr/lib64/portage/bin/ebuild.sh") | |
BASH_VERSINFO=([0]="4" [1]="2" [2]="20" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") | |
BASH_VERSION='4.2.20(1)-release' | |
BOOTSTRAP_USE='cxx unicode multilib' | |
BRACKET=$'\E[34;01m' | |
BUILD_PREFIX=/var/tmp/portage | |
CALLIGRA_FEATURES='kexi words flow plan sheets stage tables krita karbon braindump' | |
CAMERAS='adc65 agfa_cl20 aox ax203 barbie canon casio_qv clicksmart310 digigr8 digita dimagev dimera3500 directory enigma13 fuji gsmart300 hp215 iclick jamcam jd11 jl2005a kodak_dc120 kodak_dc210 kodak_dc240 kodak_dc3200 kodak_ez200 konica konica_qm150 largan lg_gsm mars mustek panasonic_coolshot panasonic_dc1000 panasonic_dc1580 panasonic_l859 pccam300 pccam600 polaroid_pdc320 polaroid_pdc640 polaroid_pdc700 ptp2 ricoh ricoh_g3 samsung sierra sipix_blink sipix_blink2 sipix_web2 smal sonix sony_dscf1 sony_dscf55 soundvision spca50x sq905 st2205 stv0674 stv0680 sx330z template topfield toshiba_pdrm11' | |
CATEGORY=net-p2p | |
CBUILD=x86_64-pc-linux-gnu | |
CCACHE_DISABLE=1 | |
CFLAGS='-O2 -march=core2 -mtune=core2 -pipe -fomit-frame-pointer -mmmx -msse -msse2 -mssse3 -mcx16 -msahf -mavx -mpclmul -mpopcnt' | |
CFLAGS_amd64=-m64 | |
CFLAGS_x32=-mx32 | |
CFLAGS_x86=-m32 | |
CG_COMPILER_EXE=/usr/bin/cgc | |
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-gnu | |
CHOST_x86=i686-pc-linux-gnu | |
CMAKE_BINARY=cmake | |
CMAKE_BUILD_TYPE=Gentoo | |
CMAKE_EXPF='src_compile src_test src_install src_configure' | |
CMAKE_MIN_VERSION=2.8.4 | |
CMAKE_REMOVE_MODULES=yes | |
CMAKE_REMOVE_MODULES_LIST='FindBLAS FindLAPACK' | |
CMAKE_VERBOSE=ON | |
COLLECTD_PLUGINS='df interface irq load memory rrdtool swap syslog' | |
COLS=168 | |
COLUMNS=168 | |
CROSSCOMPILE_OPTS= | |
CTARGET_default=x86_64-pc-linux-gnu | |
CXXFLAGS='-O2 -march=core2 -mtune=core2 -pipe -fomit-frame-pointer -mmmx -msse -msse2 -mssse3 -mcx16 -msahf -mavx -mpclmul -mpopcnt' | |
D=/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6/image/ | |
DEFAULT_ABI=amd64 | |
DEFINED_PHASES=' compile configure install prepare pretend test unpack' | |
DEPEND=$'\n\tapp-arch/bzip2\n\t>=dev-libs/openssl-0.9.8\n\tsys-apps/attr\n\tsys-devel/gettext\n\tsys-libs/zlib\n\tvirtual/libiconv\n\tidn? ( net-dns/libidn )\n\tlua? ( >=dev-lang/lua-5.1 )\n\tpcre? ( >=dev-libs/libpcre-4.2 )\n\tupnp? ( >=net-libs/miniupnpc-1.6 )\n\tcli? (\n\t\t>=dev-lang/perl-5.10\n\t\tperl-core/Getopt-Long\n\t\tdev-perl/Data-Dump\n\t\tdev-perl/Term-ShellUI\n\t\tjson? ( dev-perl/JSON-RPC dev-perl/Data-Dump )\n\t\txmlrpc? ( dev-perl/RPC-XML )\n\t)\n\tdaemon? ( xmlrpc? ( >=dev-libs/xmlrpc-c-1.19.0[abyss,cxx] ) )\n\tgtk? (\n\t\tx11-libs/pango\n\t\tgtk3? ( x11-libs/gtk+:3 )\n\t\t!gtk3? ( >=x11-libs/gtk+-2.24:2 )\n\t\t>=dev-libs/glib-2.24:2\n\t\tx11-themes/hicolor-icon-theme\n\t\tgnome? ( gnome-base/libgnome )\n\t\tlibcanberra? ( media-libs/libcanberra )\n\t\tlibnotify? ( >=x11-libs/libnotify-0.4.1 )\n\t)\n\tqt4? (\n\t\t>=x11-libs/qt-gui-4.4.0:4[dbus?]\n\t\tjavascript? (\n\t\t\tx11-libs/qt-script\n\t\t\tx11-libs/qtscriptgenerator\n\t\t)\n\t\tspell? ( app-text/aspell )\n\t\tsqlite? ( x11-libs/qt-sql:4[sqlite] )\n\t)\n\n\t>=dev-libs/boost-1.34.1\n\tvirtual/pkgconfig\n >=dev-util/cmake-2.8.4 userland_GNU? ( >=sys-apps/findutils-4.4.0 )' | |
DESCRIPTION='Qt4 based client for DirectConnect and ADC protocols, based on DC++ library' | |
DESTTREE=/usr | |
DIROPTIONS=-m0755 | |
DIRSTACK=() | |
DISPLAY=:0 | |
DISTDIR=/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6/distdir | |
DOCS='AUTHORS ChangeLog.txt' | |
DRACUT_MODULES=plymouth | |
EAPI=4 | |
EBUILD=/usr/portage/net-p2p/eiskaltdcpp/eiskaltdcpp-2.2.6.ebuild | |
EBUILD_MASTER_PID=11815 | |
EBUILD_PHASE=pretend | |
EBUILD_SH_ARGS=pretend | |
ECLASSDIR=/usr/portage/eclass | |
ECLASS_DEPTH=0 | |
ED=/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6/image/ | |
ELIBC=glibc | |
EMERGE_FROM=ebuild | |
ENDCOL=$'\E[A\E[160C' | |
EPATCH_COMMON_OPTS='-g0 -E --no-backup-if-mismatch' | |
EPATCH_EXCLUDE= | |
EPATCH_FORCE=no | |
EPATCH_MULTI_MSG='Applying various patches (bugfixes/updates) ...' | |
EPATCH_OPTS= | |
EPATCH_SINGLE_MSG= | |
EPATCH_SOURCE=/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6/work/patch | |
EPATCH_SUFFIX=patch.bz2 | |
EPREFIX= | |
EROOT=/ | |
EUID=0 | |
EXEOPTIONS=-m0755 | |
FCFLAGS= | |
FEATURES='assume-digests binpkg-logs distlocks ebuild-locks fixlafiles news parallel-fetch protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch' | |
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= | |
FILESDIR=/usr/portage/net-p2p/eiskaltdcpp/files | |
FUNCNAME=([0]="die" [1]="pkg_pretend" [2]="qa_call" [3]="ebuild_phase" [4]="dyn_pretend" [5]="ebuild_main" [6]="main") | |
GCC_SPECS= | |
GDK_USE_XFT=1 | |
GOOD=$'\E[32;01m' | |
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=gconf | |
GUILE_LOAD_PATH=/usr/share/guile/1.8 | |
HG=/usr/bin/hg | |
HILITE=$'\E[36m' | |
HOME=/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6/homedir | |
HOMEPAGE=http://eiskaltdc.googlecode.com/ | |
HOSTNAME=vordhosbn | |
HOSTTYPE=x86_64 | |
IFS=$' \t\n' | |
INHERITED=' toolchain-funcs multilib user eutils flag-o-matic base cmake-utils' | |
INPUT_DEVICES=evdev | |
INSDESTTREE= | |
INSOPTIONS=-m0644 | |
IUSE='cli daemon dbus +dht +emoticons examples -gnome -gtk -gtk3 idn -javascript json libcanberra libnotify lua +minimal pcre +qt4 sound spell sqlite upnp xmlrpc linguas_be linguas_bg linguas_cs linguas_de linguas_el linguas_en linguas_es linguas_fr linguas_hu linguas_it linguas_pl linguas_ru linguas_sk linguas_sr@latin linguas_uk ' | |
JAVACC_HOME=/usr/share/javacc/ | |
KERNEL=linux | |
KERNEL_ABI=amd64 | |
KEYWORDS='~amd64 ~x86' | |
LADSPA_PATH=/usr/lib64/ladspa | |
LANG=ru_RU.UTF-8 | |
LANGS='be bg cs de el en es fr hu it pl ru sk sr@latin uk' | |
LANGUAGE= | |
LAST_E_CMD=eerror | |
LCD_DEVICES= | |
LC_ALL= | |
LDFLAGS=-Wl,-O1,--hash-style=gnu,--as-needed | |
LDFLAGS_amd64='-m elf_x86_64' | |
LDFLAGS_x32='-m elf32_x86_64' | |
LDFLAGS_x86='-m elf_i386' | |
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 | |
LIBOPTIONS=-m0644 | |
LIBREOFFICE_EXTENSIONS='presenter-console presenter-minimizer' | |
LICENSE='GPL-2 GPL-3' | |
LINGUAS='ru en' | |
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 | |
MERGE_TYPE=source | |
MINICOM='-c on' | |
MOPREFIX=eiskaltdcpp | |
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=/usr/portage/net-p2p/eiskaltdcpp | |
OPENCL_PROFILE=nvidia | |
OPENGL_PROFILE=xorg-x11 | |
OPTERR=1 | |
OPTIND=1 | |
OSTYPE=linux-gnu | |
P=eiskaltdcpp-2.2.6 | |
PATH=/usr/lib64/portage/bin/ebuild-helpers/4:/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/arm-elf/gcc-bin/4.6.3:/usr/x86_64-pc-linux-gnu/gcc-bin/4.4.5:/usr/x86_64-pc-linux-gnu/gcc-bin/4.5.3:/opt/eagle-5.11.0/bin | |
PDEPEND= | |
PF=eiskaltdcpp-2.2.6 | |
PHP_TARGETS= | |
PIPESTATUS=([0]="0") | |
PKGDIR=/usr/portage/packages | |
PKGUSE='dbus emoticons gtk kde libnotify qt4 spell examples javascript lua sounds upnp xmlrpc' | |
PKG_LOGDIR=/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6/temp/logging | |
PKG_TMPDIR=/var/tmp/portage/._unmerge_ | |
PM_EBUILD_HOOK_DIR=/etc/portage/env | |
PN=eiskaltdcpp | |
PORTAGE_ACTUAL_DISTDIR=/usr/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=/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6 | |
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\'' | |
PORTAGE_COMPRESS_EXCLUDE_SUFFIXES='css gif htm[l]? jp[e]?g js pdf png' | |
PORTAGE_CONFIGROOT=/ | |
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/eiskaltdcpp-2.2.6/html") | |
PORTAGE_FEATURES='assume-digests binpkg-logs distlocks ebuild-locks fixlafiles news parallel-fetch protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch' | |
PORTAGE_GID=250 | |
PORTAGE_INST_GID=0 | |
PORTAGE_INST_UID=0 | |
PORTAGE_IPC_DAEMON=1 | |
PORTAGE_IUSE='^(3dfx|adabas|alpha|alsa\_cards\_aoa|alsa\_cards\_aoa\-fabric\-layout|alsa\_cards\_aoa\-onyx|alsa\_cards\_aoa\-soundbus|alsa\_cards\_aoa\-soundbus\-i2s|alsa\_cards\_aoa\-tas|alsa\_cards\_aoa\-toonie|alsa\_cards\_armaaci|alsa\_cards\_at91\-soc|alsa\_cards\_at91\-soc\-eti\-b1\-wm8731|alsa\_cards\_au1x00|alsa\_cards\_cs5535audio|alsa\_cards\_harmony|alsa\_cards\_powermac|alsa\_cards\_pxa2xx\-i2sound|alsa\_cards\_pxa2xx\-soc|alsa\_cards\_pxa2xx\-soc\-corgi|alsa\_cards\_pxa2xx\-soc\-poodle|alsa\_cards\_pxa2xx\-soc\-spitz|alsa\_cards\_pxa2xx\-soc\-tosa|alsa\_cards\_sa11xx\-uda1341ts|alsa\_cards\_sun\-amd7930|alsa\_cards\_sun\-cs4231|alsa\_cards\_sun\-dbri|altivec|amd64|amd64\-fbsd|amd64\-linux|aqua|arm|arm\-linux|ayatana|birdstep|bootstrap|build|capslib|cli|cmucl|consolekit|coreaudio|crosscompile\_opts\_.*|daemon|dbmaker|dbus|dht|drac|elibc\_AIX|elibc\_Darwin|elibc\_DragonFly|elibc\_FreeBSD|elibc\_HPUX|elibc\_Interix|elibc\_NetBSD|elibc\_OpenBSD|elibc\_SunOS|elibc\_.*|elibc\_glibc|elibc\_mintlib|elibc\_uclibc|emoticons|empress|empress\-bcs|esoob|examples|fdftk|filepro|firebird|fixed\-point|frontbase|gamess|gcc64|gluon|gnome|gtk|gtk3|gulm|hppa|hppa\-hpux|ia64|ia64\-hpux|ia64\-linux|ibm|idn|informix|ingres|iwmmxt|javascript|json|kdeprefix|kernel\_AIX|kernel\_Darwin|kernel\_FreeBSD|kernel\_HPUX|kernel\_Interix|kernel\_NetBSD|kernel\_OpenBSD|kernel\_SunOS|kernel\_.*|kernel\_freemint|kernel\_linux|kqueue|lcd\_devices\_svga|libcanberra|libnotify|linguas\_be|linguas\_bg|linguas\_cs|linguas\_de|linguas\_el|linguas\_en|linguas\_es|linguas\_fr|linguas\_hu|linguas\_it|linguas\_pl|linguas\_ru|linguas\_sk|linguas\_sr\@latin|linguas\_uk|lua|m68k|m68k\-mint|macbook|minimal|mips|multilib|n32|n64|neon|osp|packagekit|pam\_console|pbbuttonsd|pcre|pfpro|php\_targets\_php5\-2|policykit|ppc|ppc64|ppc64\-linux|ppc\-aix|ppc\-macos|ppc\-openbsd|ppcsha1|prefix|ps3|psyco|pvm|qt4|real|s390|selinux|sh|solid|sound|sparc|sparc64\-freebsd|sparc64\-solaris|sparc\-fbsd|sparc\-solaris|spell|sqlite|svga|sybase|sybase\-ct|tcb|tcc|test|uclibc|ultra1|upnp|userland\_BSD|userland\_GNU|userland\_.*|video\_cards\_geode|video\_cards\_i740|video\_cards\_impact|video\_cards\_newport|video\_cards\_nsc|video\_cards\_omap|video\_cards\_omapfb|video\_cards\_sunbw2|video\_cards\_suncg14|video\_cards\_suncg3|video\_cards\_suncg6|video\_cards\_sunffb|video\_cards\_sunleo|video\_cards\_suntcx|video\_cards\_voodoo|video\_cards\_xgi|vidix|vis|win32codecs|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|xmlrpc|yellownet)$' | |
PORTAGE_LOG_FILE=/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6/temp/build.log | |
PORTAGE_MUTABLE_FILTERED_VARS='AA HOSTNAME' | |
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 HOMEPAGE INHERITED IUSE REQUIRED_USE KEYWORDS LICENSE\n\tPDEPEND PROVIDE RDEPEND REPOSITORY RESTRICT SLOT SRC_URI' | |
PORTAGE_READONLY_VARS=$'D EBUILD EBUILD_PHASE \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_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_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=/var/tmp | |
PORTAGE_VERBOSE=1 | |
PORTAGE_WORKDIR_MODE=0700 | |
PORTDIR=/usr/portage | |
PORTDIR_OVERLAY= | |
PPID=11714 | |
PR=r0 | |
PREFIX=/usr | |
PRELINK_PATH_MASK=/usr/lib64/klibc:/opt/eagle-5.11.0:/usr/lib64/libfreebl3.so:/usr/lib64/libnssdbm3.so:/usr/lib64/libsoftokn3.so | |
PROFILE_ONLY_VARIABLES='ARCH ELIBC KERNEL USERLAND' | |
PROFILE_PATHS=$'/usr/portage/profiles/base\n/usr/portage/profiles/default/linux\n/usr/portage/profiles/arch/base\n/usr/portage/profiles/features/multilib\n/usr/portage/profiles/features/multilib/lib32\n/usr/portage/profiles/arch/amd64\n/usr/portage/profiles/default/linux/amd64\n/usr/portage/profiles/releases\n/usr/portage/profiles/releases/10.0\n/usr/portage/profiles/default/linux/amd64/10.0\n/usr/portage/profiles/targets/desktop\n/usr/portage/profiles/default/linux/amd64/10.0/desktop\n/usr/portage/profiles/targets/desktop\n/usr/portage/profiles/targets/desktop/kde\n/usr/portage/profiles/default/linux/amd64/10.0/desktop/kde\n/etc/portage/profile' | |
PROPERTIES= | |
PROVIDE= | |
PS4='+ ' | |
PV=2.2.6 | |
PVR=2.2.6 | |
PWD=/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6 | |
PYTHONDOCS=/usr/share/doc/python-docs-2.7.1/html/library | |
PYTHONDOCS_2_5=/usr/share/doc/python-docs-2.5.4-r1/html | |
PYTHONDOCS_2_6=/usr/share/doc/python-docs-2.6.6/html/library | |
PYTHONDOCS_2_7=/usr/share/doc/python-docs-2.7.2/html/library | |
PYTHONDOCS_3_1=/usr/share/doc/python-docs-3.1.3/html/library | |
PYTHONDOCS_3_2=/usr/share/doc/python-docs-3.2.2/html/library | |
PYTHONDONTWRITEBYTECODE=1 | |
PYTHON_TARGETS=python3_2 | |
QT_GRAPHICSSYSTEM=raster | |
QT_PLUGIN_PATH=/usr/lib64/kde4/plugins | |
RC_DEFAULT_INDENT=2 | |
RC_DOT_PATTERN= | |
RC_ENDCOL=yes | |
RC_INDENTATION= | |
RDEPEND=$'\n\tapp-arch/bzip2\n\t>=dev-libs/openssl-0.9.8\n\tsys-apps/attr\n\tsys-devel/gettext\n\tsys-libs/zlib\n\tvirtual/libiconv\n\tidn? ( net-dns/libidn )\n\tlua? ( >=dev-lang/lua-5.1 )\n\tpcre? ( >=dev-libs/libpcre-4.2 )\n\tupnp? ( >=net-libs/miniupnpc-1.6 )\n\tcli? (\n\t\t>=dev-lang/perl-5.10\n\t\tperl-core/Getopt-Long\n\t\tdev-perl/Data-Dump\n\t\tdev-perl/Term-ShellUI\n\t\tjson? ( dev-perl/JSON-RPC dev-perl/Data-Dump )\n\t\txmlrpc? ( dev-perl/RPC-XML )\n\t)\n\tdaemon? ( xmlrpc? ( >=dev-libs/xmlrpc-c-1.19.0[abyss,cxx] ) )\n\tgtk? (\n\t\tx11-libs/pango\n\t\tgtk3? ( x11-libs/gtk+:3 )\n\t\t!gtk3? ( >=x11-libs/gtk+-2.24:2 )\n\t\t>=dev-libs/glib-2.24:2\n\t\tx11-themes/hicolor-icon-theme\n\t\tgnome? ( gnome-base/libgnome )\n\t\tlibcanberra? ( media-libs/libcanberra )\n\t\tlibnotify? ( >=x11-libs/libnotify-0.4.1 )\n\t)\n\tqt4? (\n\t\t>=x11-libs/qt-gui-4.4.0:4[dbus?]\n\t\tjavascript? (\n\t\t\tx11-libs/qt-script\n\t\t\tx11-libs/qtscriptgenerator\n\t\t)\n\t\tspell? ( app-text/aspell )\n\t\tsqlite? ( x11-libs/qt-sql:4[sqlite] )\n\t)\n ' | |
REPLACING_VERSIONS=2.2.4 | |
REQUIRED_USE=$'\n\tcli? ( ^^ ( json xmlrpc ) )\n\temoticons? ( || ( gtk qt4 ) )\n\tdbus? ( qt4 )\n\tgnome? ( gtk )\n\tgtk3? ( gtk )\n\tjavascript? ( qt4 )\n\tjson? ( !xmlrpc )\n\tlibcanberra? ( !gnome gtk )\n\tlibnotify? ( gtk )\n\tspell? ( qt4 )\n\tsound? ( || ( gtk qt4 ) )\n\tsqlite? ( qt4 )\n ' | |
RESTRICT= | |
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/arm-elf/gcc-bin/4.6.3:/usr/x86_64-pc-linux-gnu/gcc-bin/4.4.5:/usr/x86_64-pc-linux-gnu/gcc-bin/4.5.3:/opt/eagle-5.11.0/bin | |
RPMDIR=/usr/portage/rpm | |
RUBY_TARGETS='ruby18 ruby19' | |
R_HOME=/usr/lib/R | |
S=/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6/work/eiskaltdcpp-2.2.6 | |
SANDBOX_LOG=net-p2p_-_eiskaltdcpp-2.2.6 | |
SANDBOX_ON=0 | |
SANDBOX_READ=/:/var/tmp | |
SANDBOX_WRITE=/var/tmp | |
SANE_CONFIG_DIR=/etc/sane.d | |
SCVIM_DIR=/usr/share/vim/scvim | |
SGML_CATALOG_FILES=/etc/sgml/xml-simple-docbook-1.0.cat:/etc/sgml/openjade-1.3.2.cat:/etc/sgml/sgml-ent.cat:/etc/sgml/sgml-docbook-3.1.cat:/etc/sgml/sgml-docbook.cat:/etc/sgml/sgml-docbook-3.0.cat:/etc/sgml/xml-docbook-4.5.cat:/etc/sgml/sgml-lite.cat:/etc/sgml/xml-docbook-4.2.cat:/etc/sgml/dsssl-docbook-stylesheets.cat:/etc/sgml/sgml-docbook-4.2.cat:/etc/sgml/xml-docbook-4.3.cat:/etc/sgml/sgml-docbook-4.1.cat:/etc/sgml/sgml-docbook-4.0.cat:/etc/sgml/xml-simple-docbook-4.1.2.4.cat:/etc/sgml/xml-docbook-4.1.2.cat:/etc/sgml/sgml-docbook-4.4.cat:/etc/sgml/xml-docbook-4.4.cat | |
SHELL=/bin/bash | |
SHELLOPTS=braceexpand:hashall:interactive-comments | |
SHLVL=3 | |
SLOT=0 | |
SRC_URI=http://eiskaltdc.googlecode.com/files/eiskaltdcpp-2.2.6.tar.xz | |
SSH_ASKPASS=/usr/bin/ssh-askpass-fullscreen | |
SUDO_COMMAND=/bin/bash | |
SUDO_GID=1000 | |
SUDO_UID=1000 | |
SUDO_USER=zerom | |
SYMLINK_LIB=yes | |
T=/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6/temp | |
TEMP=/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6/temp | |
TERM=xterm | |
TMP=/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6/temp | |
TMPDIR=/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6/temp | |
UID=0 | |
USB_DEVFS_PATH=/dev/bus/usb | |
USE='amd64 cli consolekit dbus dht elibc_glibc emoticons examples gtk javascript kernel_linux libnotify linguas_en linguas_ru lua minimal multilib pcre policykit qt4 spell upnp userland_GNU xmlrpc' | |
USERLAND=GNU | |
USERNAME=root | |
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 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_TARGETS QEMU_SOFTMMU_TARGETS QEMU_USER_TARGETS RUBY_TARGETS SANE_BACKENDS USERLAND VIDEO_CARDS XFCE_PLUGINS XTABLES_ADDONS' | |
VBOX_APP_HOME=/opt/VirtualBox | |
VCS_ECLASS= | |
VIDEO_CARDS= | |
WANT_CMAKE=always | |
WARN=$'\E[33;01m' | |
WORKDIR=/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6/work | |
XARGS='xargs -r' | |
XDG_CONFIG_DIRS=/etc/xdg | |
XDG_DATA_DIRS=/usr/local/share:/usr/share | |
XDG_SESSION_COOKIE=c8a48c54cc04643cc96e93600000006a-1338030056.621950-1236308238 | |
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' | |
_=']' | |
_E_DOCDESTTREE_= | |
_E_EXEDESTTREE_= | |
_RC_GET_KV_CACHE= | |
___ECLASS_ONCE_BASE='recur -_+^+_- spank' | |
___ECLASS_ONCE_EUTILS='recur -_+^+_- spank' | |
___ECLASS_ONCE_FLAG_O_MATIC='recur -_+^+_- spank' | |
___ECLASS_ONCE_MULTILIB='recur -_+^+_- spank' | |
___ECLASS_ONCE_TOOLCHAIN_FUNCS='recur -_+^+_- spank' | |
___ECLASS_ONCE_USER='recur -_+^+_- spank' | |
args= | |
filespacing=24 | |
j=1 | |
lineno=85 | |
linespacing=3 | |
main_index=6 | |
n=0 | |
phase_str=' (pretend phase)' | |
portdir_repo_name=gentoo | |
shopts=$'autocd \toff\ncdable_vars \toff\ncdspell \toff\ncheckhash \toff\ncheckjobs \toff\ncheckwinsize \toff\ncmdhist \ton\ncompat31 \toff\ncompat32 \toff\ncompat40 \toff\ncompat41 \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=eiskaltdcpp-2.2.6.ebuild | |
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 | |
} | |
_assert_pkg_ebuild_phase () | |
{ | |
case ${EBUILD_PHASE} in | |
setup | preinst | postinst) | |
;; | |
*) | |
eerror "'$1()' called from '${EBUILD_PHASE}' phase which is not OK:"; | |
eerror "You may only call from pkg_{setup,preinst,postinst} functions."; | |
eerror "Package fails at QA and at life. Please file a bug."; | |
die "Bad package! $1 is only for use in some pkg_* functions!" | |
;; | |
esac | |
} | |
_check_build_dir () | |
{ | |
: ${CMAKE_USE_DIR:=${S}}; | |
if [[ -n ${CMAKE_IN_SOURCE_BUILD} ]]; then | |
CMAKE_BUILD_DIR="${CMAKE_USE_DIR}"; | |
else | |
: ${CMAKE_BUILD_DIR:=${WORKDIR}/${P}_build}; | |
fi; | |
mkdir -p "${CMAKE_BUILD_DIR}"; | |
echo ">>> Working in BUILD_DIR: \"$CMAKE_BUILD_DIR\"" | |
} | |
_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}"; | |
if $emake_cmd -j1 check -n &>/dev/null; then | |
vecho ">>> Test phase [check]: ${CATEGORY}/${PF}"; | |
$emake_cmd -j1 check || die "Make check failed. See above for details."; | |
else | |
if $emake_cmd -j1 test -n &>/dev/null; then | |
vecho ">>> Test phase [test]: ${CATEGORY}/${PF}"; | |
$emake_cmd -j1 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 2 ] && die "expected exactly 2 args, got $#: $*"; | |
local eapi=$1; | |
local arg=$2; | |
local phase_func=""; | |
case "$arg" in | |
pretend) | |
! has $eapi 0 1 2 3 3_pre2 && phase_func=pkg_pretend | |
;; | |
setup) | |
phase_func=pkg_setup | |
;; | |
nofetch) | |
phase_func=pkg_nofetch | |
;; | |
unpack) | |
phase_func=src_unpack | |
;; | |
prepare) | |
! has $eapi 0 1 && phase_func=src_prepare | |
;; | |
configure) | |
! has $eapi 0 1 && 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_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 3_pre2 || 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 | |
} | |
_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} | |
} | |
_execute_optionaly () | |
{ | |
local phase="$1"; | |
shift; | |
if [[ ${WANT_CMAKE} = always ]]; then | |
enable_cmake-utils_${phase} "$@"; | |
else | |
use ${WANT_CMAKE} && enable_cmake-utils_${phase} "$@"; | |
fi | |
} | |
_filter-hardened () | |
{ | |
local f; | |
for f in "$@"; | |
do | |
case "${f}" in | |
-fPIC | -fpic | -fPIE | -fpie | -Wl,pie | -pie) | |
gcc-specs-pie || continue; | |
is-flagq -nopie || append-flags -nopie | |
;; | |
-fstack-protector) | |
gcc-specs-ssp || continue; | |
is-flagq -fno-stack-protector || append-flags $(test-flags -fno-stack-protector) | |
;; | |
-fstack-protector-all) | |
gcc-specs-ssp-to-all || continue; | |
is-flagq -fno-stack-protector-all || append-flags $(test-flags -fno-stack-protector-all) | |
;; | |
-fno-strict-overflow) | |
gcc-specs-nostrict || continue; | |
is-flagq -fstrict-overflow || append-flags $(test-flags -fstrict-overflow) | |
;; | |
esac; | |
done | |
} | |
_filter-var () | |
{ | |
local f x var=$1 new=(); | |
shift; | |
for f in ${!var}; | |
do | |
for x in "$@"; | |
do | |
[[ ${f} == ${x} ]] && continue 2; | |
done; | |
new+=("${f}"); | |
done; | |
eval export ${var}=\""${new[*]}"\" | |
} | |
_gcc-install-dir () | |
{ | |
echo "$(LC_ALL=C $(tc-getCC) -print-search-dirs 2> /dev/null | awk '$1=="install:" {print $2}')" | |
} | |
_gcc-specs-directive_raw () | |
{ | |
local cc=$(tc-getCC); | |
local specfiles=$(LC_ALL=C ${cc} -v 2>&1 | awk '$1=="Reading" {print $NF}'); | |
${cc} -dumpspecs 2> /dev/null | cat - ${specfiles} | awk -v directive=$1 'BEGIN { pspec=""; spec=""; outside=1 } | |
$1=="*"directive":" { pspec=spec; spec=""; outside=0; next } | |
outside || NF==0 || ( substr($1,1,1)=="*" && substr($1,length($1),1)==":" ) { outside=1; next } | |
spec=="" && substr($0,1,1)=="+" { spec=pspec " " substr($0,2); next } | |
{ spec=spec $0 } | |
END { print spec }'; | |
return 0 | |
} | |
_gcc-specs-exists () | |
{ | |
[[ -f $(_gcc-install-dir)/$1 ]] | |
} | |
_gcc_fullversion () | |
{ | |
local ver="$1"; | |
shift; | |
set -- `$(tc-getCPP "$@") -E -P - <<<"__GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__"`; | |
eval echo "$ver" | |
} | |
_is_flagq () | |
{ | |
local x; | |
for x in ${!1}; | |
do | |
[[ ${x} == $2 ]] && return 0; | |
done; | |
return 1 | |
} | |
_modify-cmakelists () | |
{ | |
debug-print-function ${FUNCNAME} "$@"; | |
grep -qs "<<< Gentoo configuration >>>" CMakeLists.txt && return 0; | |
find "${CMAKE_USE_DIR}" -name CMakeLists.txt -exec sed -i -e '/^[[:space:]]*[sS][eE][tT][[:space:]]*([[:space:]]*CMAKE_BUILD_TYPE.*)/{s/^/#IGNORE /g}' {} + -exec sed -i -e '/^[[:space:]]*[sS][eE][tT][[:space:]]*([[:space:]]*CMAKE_COLOR_MAKEFILE.*)/{s/^/#IGNORE /g}' {} + -exec sed -i -e '/^[[:space:]]*[sS][eE][tT][[:space:]]*([[:space:]]*CMAKE_INSTALL_PREFIX.*)/{s/^/#IGNORE /g}' {} + -exec sed -i -e '/^[[:space:]]*[sS][eE][tT][[:space:]]*([[:space:]]*CMAKE_VERBOSE_MAKEFILE.*)/{s/^/#IGNORE /g}' {} + || die "${LINENO}: failed to disable hardcoded settings"; | |
cat >> "${CMAKE_USE_DIR}"/CMakeLists.txt <<-_EOF_ | |
MESSAGE(STATUS "<<< Gentoo configuration >>> | |
Build type \${CMAKE_BUILD_TYPE} | |
Install path \${CMAKE_INSTALL_PREFIX} | |
Compiler flags: | |
C \${CMAKE_C_FLAGS} | |
C++ \${CMAKE_CXX_FLAGS} | |
Linker flags: | |
Executable \${CMAKE_EXE_LINKER_FLAGS} | |
Module \${CMAKE_MODULE_LINKER_FLAGS} | |
Shared \${CMAKE_SHARED_LINKER_FLAGS}\n") | |
_EOF_ | |
} | |
_sb_append_var () | |
{ | |
local _v=$1; | |
shift; | |
local var="SANDBOX_${_v}"; | |
[[ -z $1 || -n $2 ]] && die "Usage: add$(echo ${_v} | LC_ALL=C tr [:upper:] [:lower:]) <colon-delimited list of paths>"; | |
export ${var}="${!var:+${!var}:}$1" | |
} | |
_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}" | |
} | |
_use_me_now () | |
{ | |
debug-print-function ${FUNCNAME} "$@"; | |
local uper capitalised x; | |
[[ -z $2 ]] && die "cmake-utils_use-$1 <USE flag> [<flag name>]"; | |
if [[ ! -z $3 ]]; then | |
echo "-D$1$3=$(use $2 && echo ON || echo OFF)"; | |
else | |
uper=$(echo ${2} | tr '[:lower:]' '[:upper:]'); | |
capitalised=$(echo ${2} | sed 's/\<\(.\)\([^ ]*\)/\u\1\L\2/g'); | |
for x in $2 $uper $capitalised; | |
do | |
echo "-D$1$x=$(use $2 && echo ON || echo OFF) "; | |
done; | |
fi | |
} | |
_use_me_now_inverted () | |
{ | |
debug-print-function ${FUNCNAME} "$@"; | |
local uper capitalised x; | |
[[ -z $2 ]] && die "cmake-utils_use-$1 <USE flag> [<flag name>]"; | |
if [[ ! -z $3 ]]; then | |
echo "-D$1$3=$(use $2 && echo OFF || echo ON)"; | |
else | |
uper=$(echo ${2} | tr '[:lower:]' '[:upper:]'); | |
capitalised=$(echo ${2} | sed 's/\<\(.\)\([^ ]*\)/\u\1\L\2/g'); | |
for x in $2 $uper $capitalised; | |
do | |
echo "-D$1$x=$(use $2 && echo OFF || echo ON) "; | |
done; | |
fi | |
} | |
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 | |
} | |
adddeny () | |
{ | |
_sb_append_var DENY "$@" | |
} | |
addpredict () | |
{ | |
_sb_append_var PREDICT "$@" | |
} | |
addread () | |
{ | |
_sb_append_var READ "$@" | |
} | |
addwrite () | |
{ | |
_sb_append_var WRITE "$@" | |
} | |
all-flag-vars () | |
{ | |
echo {C,CPP,CXX,CCAS,F,FC,LD}FLAGS | |
} | |
append-cflags () | |
{ | |
[[ $# -eq 0 ]] && return 0; | |
export CFLAGS=$(test-flags-CC ${CFLAGS} "$@"); | |
return 0 | |
} | |
append-cppflags () | |
{ | |
[[ $# -eq 0 ]] && return 0; | |
export CPPFLAGS="${CPPFLAGS} $*"; | |
return 0 | |
} | |
append-cxxflags () | |
{ | |
[[ $# -eq 0 ]] && return 0; | |
export CXXFLAGS=$(test-flags-CXX ${CXXFLAGS} "$@"); | |
return 0 | |
} | |
append-fflags () | |
{ | |
[[ $# -eq 0 ]] && return 0; | |
export FFLAGS=$(test-flags-F77 ${FFLAGS} "$@"); | |
export FCFLAGS=$(test-flags-FC ${FCFLAGS} "$@"); | |
return 0 | |
} | |
append-flags () | |
{ | |
[[ $# -eq 0 ]] && return 0; | |
case " $* " in | |
*' '-[DIU]*) | |
eqawarn 'please use append-cppflags for preprocessor flags' | |
;; | |
*' '-L*) | |
eqawarn 'please use append-ldflags for linker flags' | |
;; | |
esac; | |
append-cflags "$@"; | |
append-cxxflags "$@"; | |
append-fflags "$@"; | |
return 0 | |
} | |
append-ldflags () | |
{ | |
[[ $# -eq 0 ]] && return 0; | |
local flag; | |
for flag in "$@"; | |
do | |
[[ ${flag} == -l* ]] && ewarn "Appending a library link instruction (${flag}); libraries to link to should not be passed through LDFLAGS"; | |
done; | |
export LDFLAGS="${LDFLAGS} $*"; | |
return 0 | |
} | |
append-lfs-flags () | |
{ | |
[[ $# -ne 0 ]] && die "append-lfs-flags takes no arguments"; | |
append-cppflags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE | |
} | |
append-libs () | |
{ | |
[[ $# -eq 0 ]] && return 0; | |
local flag; | |
for flag in "$@"; | |
do | |
[[ ${flag} == -l* ]] && flag=${flag#-l}; | |
export LIBS="${LIBS} -l${flag}"; | |
done; | |
return 0 | |
} | |
assert () | |
{ | |
local x pipestatus=${PIPESTATUS[*]}; | |
for x in $pipestatus; | |
do | |
[[ $x -eq 0 ]] || die "$@"; | |
done | |
} | |
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 "$@" | |
} | |
base_src_compile () | |
{ | |
debug-print-function $FUNCNAME "$@"; | |
has src_configure ${BASE_EXPF} || base_src_configure; | |
base_src_make "$@" | |
} | |
base_src_configure () | |
{ | |
debug-print-function $FUNCNAME "$@"; | |
[[ -x ${ECONF_SOURCE:-.}/configure ]] && econf "$@" | |
} | |
base_src_install () | |
{ | |
debug-print-function $FUNCNAME "$@"; | |
emake DESTDIR="${D}" "$@" install || die "died running make install, $FUNCNAME"; | |
base_src_install_docs | |
} | |
base_src_install_docs () | |
{ | |
debug-print-function $FUNCNAME "$@"; | |
local x; | |
pushd "${S}" > /dev/null; | |
if [[ "$(declare -p DOCS 2>/dev/null 2>&1)" == "declare -a"* ]]; then | |
for x in "${DOCS[@]}"; | |
do | |
debug-print "$FUNCNAME: docs: creating document from ${x}"; | |
dodoc "${x}" || die "dodoc failed"; | |
done; | |
fi; | |
if [[ "$(declare -p HTML_DOCS 2>/dev/null 2>&1)" == "declare -a"* ]]; then | |
for x in "${HTML_DOCS[@]}"; | |
do | |
debug-print "$FUNCNAME: docs: creating html document from ${x}"; | |
dohtml -r "${x}" || die "dohtml failed"; | |
done; | |
fi; | |
popd > /dev/null | |
} | |
base_src_make () | |
{ | |
debug-print-function $FUNCNAME "$@"; | |
if [[ -f Makefile || -f GNUmakefile || -f makefile ]]; then | |
emake "$@" || die "died running emake, $FUNCNAME"; | |
fi | |
} | |
base_src_prepare () | |
{ | |
debug-print-function $FUNCNAME "$@"; | |
debug-print "$FUNCNAME: PATCHES=$PATCHES"; | |
local patches_failed=0; | |
pushd "${S}" > /dev/null; | |
if [[ "$(declare -p PATCHES 2>/dev/null 2>&1)" == "declare -a"* ]]; then | |
for x in "${PATCHES[@]}"; | |
do | |
debug-print "$FUNCNAME: applying patch from ${x}"; | |
if [[ -d "${x}" ]]; then | |
EPATCH_SUFFIX=${EPATCH_SUFFIX:=patch}; | |
oldval=${EPATCH_SOURCE}; | |
EPATCH_SOURCE=${x}; | |
EPATCH_FORCE=yes; | |
epatch; | |
EPATCH_SOURCE=${oldval}; | |
else | |
if [[ -f "${x}" ]]; then | |
epatch "${x}"; | |
else | |
ewarn "QA: File or directory \"${x}\" does not exist."; | |
ewarn "QA: Check your PATCHES array or add missing file/directory."; | |
patches_failed=1; | |
fi; | |
fi; | |
done; | |
[[ ${patches_failed} -eq 1 ]] && die "Some patches failed. See above messages."; | |
else | |
for x in ${PATCHES}; | |
do | |
debug-print "$FUNCNAME: patching from ${x}"; | |
epatch "${x}"; | |
done; | |
fi; | |
debug-print "$FUNCNAME: applying user patches"; | |
epatch_user; | |
popd > /dev/null | |
} | |
base_src_unpack () | |
{ | |
debug-print-function $FUNCNAME "$@"; | |
pushd "${WORKDIR}" > /dev/null; | |
if [[ $(type -t unpacker_src_unpack) == "function" ]]; then | |
unpacker_src_unpack; | |
else | |
if [[ -n ${A} ]]; then | |
unpack ${A}; | |
fi; | |
fi; | |
has src_prepare ${BASE_EXPF} || base_src_prepare; | |
popd > /dev/null | |
} | |
best_version () | |
{ | |
local eroot; | |
case "$EAPI" in | |
0 | 1 | 2) | |
[[ " ${FEATURES} " == *" force-prefix "* ]] && eroot=${ROOT%/}${EPREFIX}/ || eroot=${ROOT} | |
;; | |
*) | |
eroot=${ROOT%/}${EPREFIX}/ | |
;; | |
esac; | |
if [[ -n $PORTAGE_IPC_DAEMON ]]; then | |
"$PORTAGE_BIN_PATH"/ebuild-ipc best_version "${eroot}" "$1"; | |
else | |
PYTHONPATH=${PORTAGE_PYM_PATH}${PYTHONPATH:+:}${PYTHONPATH} "${PORTAGE_PYTHON:-/usr/bin/python}" "${PORTAGE_BIN_PATH}/portageq" best_version "${eroot}" "$1"; | |
fi; | |
local retval=$?; | |
case "${retval}" in | |
0 | 1) | |
return ${retval} | |
;; | |
*) | |
die "unexpected portageq exit code: ${retval}" | |
;; | |
esac | |
} | |
built_with_use () | |
{ | |
local hidden="no"; | |
if [[ $1 == "--hidden" ]]; then | |
hidden="yes"; | |
shift; | |
fi; | |
local missing_action="die"; | |
if [[ $1 == "--missing" ]]; then | |
missing_action=$2; | |
shift; | |
shift; | |
case ${missing_action} in | |
true | false | die) | |
;; | |
*) | |
die "unknown action '${missing_action}'" | |
;; | |
esac; | |
fi; | |
local opt=$1; | |
[[ ${opt:0:1} = "-" ]] && shift || opt="-a"; | |
local PKG=$(best_version $1); | |
[[ -z ${PKG} ]] && die "Unable to resolve $1 to an installed package"; | |
shift; | |
local USEFILE=${ROOT}/var/db/pkg/${PKG}/USE; | |
local IUSEFILE=${ROOT}/var/db/pkg/${PKG}/IUSE; | |
if [[ ! -e ${USEFILE} ]] || [[ ! -e ${IUSEFILE} && ${hidden} == "no" ]]; then | |
case ${missing_action} in | |
true) | |
return 0 | |
;; | |
false) | |
return 1 | |
;; | |
die) | |
die "Unable to determine what USE flags $PKG was built with" | |
;; | |
esac; | |
fi; | |
if [[ ${hidden} == "no" ]]; then | |
local IUSE_BUILT=($(<"${IUSEFILE}")); | |
local expand; | |
for expand in $(echo ${USE_EXPAND} | tr '[:upper:]' '[:lower:]'); | |
do | |
if [[ $1 == ${expand}_* ]]; then | |
expand=""; | |
break; | |
fi; | |
done; | |
if [[ -n ${expand} ]]; then | |
if ! has $1 ${IUSE_BUILT[@]#[-+]}; then | |
case ${missing_action} in | |
true) | |
return 0 | |
;; | |
false) | |
return 1 | |
;; | |
die) | |
die "$PKG does not actually support the $1 USE flag!" | |
;; | |
esac; | |
fi; | |
fi; | |
fi; | |
local USE_BUILT=$(<${USEFILE}); | |
while [[ $# -gt 0 ]]; do | |
if [[ ${opt} = "-o" ]]; then | |
has $1 ${USE_BUILT} && return 0; | |
else | |
has $1 ${USE_BUILT} || return 1; | |
fi; | |
shift; | |
done; | |
[[ ${opt} = "-a" ]] | |
} | |
check_license () | |
{ | |
die "you no longer need this as portage supports ACCEPT_LICENSE itself" | |
} | |
cmake-utils_src_compile () | |
{ | |
_execute_optionaly "src_compile" "$@" | |
} | |
cmake-utils_src_configure () | |
{ | |
_execute_optionaly "src_configure" "$@" | |
} | |
cmake-utils_src_install () | |
{ | |
_execute_optionaly "src_install" "$@" | |
} | |
cmake-utils_src_make () | |
{ | |
debug-print-function ${FUNCNAME} "$@"; | |
_check_build_dir; | |
pushd "${CMAKE_BUILD_DIR}" > /dev/null; | |
[[ -e Makefile ]] || die "Makefile not found. Error during configure stage."; | |
if [[ "${CMAKE_VERBOSE}" != "OFF" ]]; then | |
emake VERBOSE=1 "$@" || die "Make failed!"; | |
else | |
emake "$@" || die "Make failed!"; | |
fi; | |
popd > /dev/null | |
} | |
cmake-utils_src_test () | |
{ | |
_execute_optionaly "src_test" "$@" | |
} | |
cmake-utils_use () | |
{ | |
_use_me_now "" "$@" | |
} | |
cmake-utils_use_build () | |
{ | |
_use_me_now BUILD_ "$@" | |
} | |
cmake-utils_use_disable () | |
{ | |
_use_me_now_inverted DISABLE_ "$@" | |
} | |
cmake-utils_use_enable () | |
{ | |
_use_me_now ENABLE_ "$@" | |
} | |
cmake-utils_use_has () | |
{ | |
_use_me_now HAVE_ "$@" | |
} | |
cmake-utils_use_no () | |
{ | |
_use_me_now_inverted NO_ "$@" | |
} | |
cmake-utils_use_use () | |
{ | |
_use_me_now USE_ "$@" | |
} | |
cmake-utils_use_want () | |
{ | |
_use_me_now WANT_ "$@" | |
} | |
cmake-utils_use_with () | |
{ | |
_use_me_now WITH_ "$@" | |
} | |
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 "${T}/eclass-debug.log" &>/dev/null; | |
chmod g+w "${T}/eclass-debug.log" &>/dev/null; | |
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='4' during phase pkg_pretend" | |
} | |
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 () | |
{ | |
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; | |
[[ -n ${PORTAGE_LOG_FILE} ]] && eerror "The complete build log is located at '${PORTAGE_LOG_FILE}'."; | |
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 "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 | |
} | |
diefunc () | |
{ | |
die "${@}" | |
} | |
diropts () | |
{ | |
export DIROPTIONS="$@" | |
} | |
docinto () | |
{ | |
if [ "$1" == "/" ]; then | |
export _E_DOCDESTTREE_=""; | |
else | |
export _E_DOCDESTTREE_="$1"; | |
[[ " ${FEATURES} " == *" force-prefix "* ]] || case "$EAPI" in | |
0 | 1 | 2) | |
local ED=${D} | |
;; | |
esac; | |
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 () | |
{ | |
has "${EAPI}" 0 1 2 3 && 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 | |
} | |
doicon () | |
{ | |
( local i j ret; | |
insinto /usr/share/pixmaps; | |
for i in "$@"; | |
do | |
if [[ -f ${i} ]]; then | |
doins "${i}"; | |
((ret+=$?)); | |
else | |
if [[ -d ${i} ]]; then | |
for j in "${i}"/*.png; | |
do | |
doins "${j}"; | |
((ret+=$?)); | |
done; | |
else | |
((++ret)); | |
fi; | |
fi; | |
done; | |
exit ${ret} ) | |
} | |
domenu () | |
{ | |
( local i j ret=0; | |
insinto /usr/share/applications; | |
for i in "$@"; | |
do | |
if [[ -f ${i} ]]; then | |
doins "${i}"; | |
((ret+=$?)); | |
else | |
if [[ -d ${i} ]]; then | |
for j in "${i}"/*.desktop; | |
do | |
doins "${j}"; | |
((ret+=$?)); | |
done; | |
else | |
((++ret)); | |
fi; | |
fi; | |
done; | |
exit ${ret} ) | |
} | |
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 has $EAPI 0 1 2 3 3_pre2; 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 has $EAPI 0 1 2 3 3_pre2; 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; | |
_x=${ED}; | |
[[ " ${FEATURES} " == *" force-prefix "* ]] || case "$EAPI" in | |
0 | 1 | 2) | |
_x=${D} | |
;; | |
esac; | |
rm -rf "${D}"; | |
mkdir -p "${_x}"; | |
unset _x; | |
if [[ -d $S ]]; then | |
cd "${S}"; | |
else | |
if has $EAPI 0 1 2 3 3_pre2; 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; | |
do | |
x=$(echo -n ${!f}); | |
[[ -n $x ]] && echo "$x" > $f; | |
done; | |
fi; | |
echo "${USE}" > USE; | |
echo "${EAPI:-0}" > EAPI; | |
case "${EAPI:-0}" in | |
0 | 1 | 2) | |
[[ " ${FEATURES} " == *" force-prefix "* ]] && [ -n "${EPREFIX}" ] && echo "${EPREFIX}" > EPREFIX | |
;; | |
*) | |
[ -n "${EPREFIX}" ] && echo "${EPREFIX}" > EPREFIX | |
;; | |
esac; | |
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_preinst () | |
{ | |
if [ -z "${D}" ]; then | |
eerror "${FUNCNAME}: D is unset"; | |
return 1; | |
fi; | |
ebuild_phase_with_hooks pkg_preinst | |
} | |
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 has $EAPI 0 1 2 3 3_pre2; 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" ]; 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 | |
} | |
ebeep () | |
{ | |
ewarn "QA Notice: ebeep is not defined in EAPI=${EAPI}, please file a bug at http://bugs.gentoo.org" | |
} | |
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 | |
} | |
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 "$EAPI" "$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 | 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 [[ $EBUILD_PHASE == postinst ]] && [[ -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 | preinst) | |
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"; | |
chown portage:portage "$T/environment" &>/dev/null; | |
chmod g+w "$T/environment" &>/dev/null; | |
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_with_hooks () | |
{ | |
local x phase_name=${1}; | |
for x in {pre_,,post_}${phase_name}; | |
do | |
ebuild_phase ${x}; | |
done | |
} | |
econf () | |
{ | |
local x; | |
[[ " ${FEATURES} " == *" force-prefix "* ]] || case "$EAPI" in | |
0 | 1 | 2) | |
local EPREFIX= | |
;; | |
esac; | |
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 "$EAPI" "$EBUILD_PHASE"); | |
if [[ -n $phase_func ]]; then | |
if has "$EAPI" 0 1; 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 ! has "$EAPI" 0 1 2 3 3_pre2 && "${ECONF_SOURCE}/configure" --help 2> /dev/null | grep -q disable-dependency-tracking; then | |
set -- --disable-dependency-tracking "$@"; | |
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}} "$@" | |
} | |
ecvs_clean () | |
{ | |
[[ -z $* ]] && set -- .; | |
find "$@" -type d -name 'CVS' -prune -print0 | xargs -0 rm -rf; | |
find "$@" -type f -name '.cvs*' -print0 | xargs -0 rm -rf | |
} | |
edos2unix () | |
{ | |
[[ $# -eq 0 ]] && return 0; | |
sed -i 's/\r$//' -- "$@" || die | |
} | |
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 | |
} | |
egetent () | |
{ | |
local db=$1 key=$2; | |
[[ $# -ge 3 ]] && die "usage: egetent <database> <key>"; | |
case ${db} in | |
passwd | group) | |
;; | |
*) | |
die "sorry, database '${db}' not yet supported; file a bug" | |
;; | |
esac; | |
case ${CHOST} in | |
*-darwin[678]) | |
case ${key} in | |
*[!0-9]*) | |
nidump ${db} . | awk -F: "(\$1 ~ /^${key}\$/) {print;exit;}" | |
;; | |
*) | |
nidump ${db} . | awk -F: "(\$3 == ${key}) {print;exit;}" | |
;; | |
esac | |
;; | |
*-darwin*) | |
local mykey; | |
case ${db} in | |
passwd) | |
db="Users" mykey="UniqueID" | |
;; | |
group) | |
db="Groups" mykey="PrimaryGroupID" | |
;; | |
esac; | |
case ${key} in | |
*[!0-9]*) | |
dscl . -read /${db}/${key} 2> /dev/null | grep RecordName | |
;; | |
*) | |
dscl . -search /${db} ${mykey} ${key} 2> /dev/null | |
;; | |
esac | |
;; | |
*-freebsd* | *-dragonfly*) | |
case ${db} in | |
passwd) | |
db="user" | |
;; | |
*) | |
;; | |
esac; | |
local opts; | |
if [[ ${key} == [[:digit:]]* ]]; then | |
[[ ${db} == "user" ]] && opts="-u" || opts="-g"; | |
fi; | |
pw show ${db} ${opts} "${key}" -q | |
;; | |
*-netbsd* | *-openbsd*) | |
grep "${key}:\*:" /etc/${db} | |
;; | |
*) | |
nscd -i "${db}" 2> /dev/null; | |
getent "${db}" "${key}" | |
;; | |
esac | |
} | |
egethome () | |
{ | |
local pos; | |
[[ $# -eq 1 ]] || die "usage: egethome <user>"; | |
case ${CHOST} in | |
*-darwin* | *-freebsd* | *-dragonfly*) | |
pos=9 | |
;; | |
*) | |
pos=6 | |
;; | |
esac; | |
egetent passwd "$1" | cut -d: -f${pos} | |
} | |
egetshell () | |
{ | |
local pos; | |
[[ $# -eq 1 ]] || die "usage: egetshell <user>"; | |
case ${CHOST} in | |
*-darwin* | *-freebsd* | *-dragonfly*) | |
pos=10 | |
;; | |
*) | |
pos=7 | |
;; | |
esac; | |
egetent passwd "$1" | cut -d: -f${pos} | |
} | |
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}"; | |
[[ " ${FEATURES} " == *" force-prefix "* ]] || case "$EAPI" in | |
0 | 1 | 2) | |
local ED=${D} | |
;; | |
esac; | |
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 | |
} | |
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 | |
} | |
emktemp () | |
{ | |
local exe="touch"; | |
[[ $1 == -d ]] && exe="mkdir" && shift; | |
local topdir=$1; | |
if [[ -z ${topdir} ]]; then | |
[[ -z ${T} ]] && topdir="/tmp" || topdir=${T}; | |
fi; | |
if ! type -P mktemp > /dev/null; then | |
local tmp=/; | |
while [[ -e ${tmp} ]]; do | |
tmp=${topdir}/tmp.${RANDOM}.${RANDOM}.${RANDOM}; | |
done; | |
${exe} "${tmp}" || ${exe} -p "${tmp}"; | |
echo "${tmp}"; | |
else | |
if [[ ${exe} == "touch" ]]; then | |
TMPDIR="${topdir}" mktemp -t tmp.XXXXXXXXXX; | |
else | |
TMPDIR="${topdir}" mktemp -dt tmp.XXXXXXXXXX; | |
fi; | |
fi | |
} | |
enable_cmake-utils_src_compile () | |
{ | |
debug-print-function ${FUNCNAME} "$@"; | |
has src_configure ${CMAKE_EXPF} || cmake-utils_src_configure; | |
cmake-utils_src_make "$@" | |
} | |
enable_cmake-utils_src_configure () | |
{ | |
debug-print-function ${FUNCNAME} "$@"; | |
[[ "${CMAKE_REMOVE_MODULES}" == "yes" ]] && { | |
local name; | |
for name in ${CMAKE_REMOVE_MODULES_LIST}; | |
do | |
find "${S}" -name ${name}.cmake -exec rm -v {} +; | |
done | |
}; | |
_check_build_dir; | |
if [[ ! -e ${CMAKE_USE_DIR}/CMakeLists.txt ]]; then | |
eerror "Unable to locate CMakeLists.txt under:"; | |
eerror "\"${CMAKE_USE_DIR}/CMakeLists.txt\""; | |
eerror "Consider not inheriting the cmake eclass."; | |
die "FATAL: Unable to find CMakeLists.txt"; | |
fi; | |
_modify-cmakelists; | |
export XDG_CONFIG_HOME="${T}"; | |
if [[ ${CMAKE_BUILD_TYPE} = Gentoo ]]; then | |
if ! has debug ${IUSE//+} || ! use debug; then | |
append-cppflags -DNDEBUG; | |
fi; | |
fi; | |
local build_rules=${CMAKE_BUILD_DIR}/gentoo_rules.cmake; | |
cat > "${build_rules}" <<-_EOF_ | |
SET (CMAKE_C_COMPILER $(type -P $(tc-getCC)) CACHE FILEPATH "C compiler" FORCE) | |
SET (CMAKE_C_COMPILE_OBJECT "<CMAKE_C_COMPILER> <DEFINES> ${CPPFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "C compile command" FORCE) | |
SET (CMAKE_CXX_COMPILER $(type -P $(tc-getCXX)) CACHE FILEPATH "C++ compiler" FORCE) | |
SET (CMAKE_CXX_COMPILE_OBJECT "<CMAKE_CXX_COMPILER> <DEFINES> ${CPPFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "C++ compile command" FORCE) | |
_EOF_ | |
has "${EAPI:-0}" 0 1 2 && ! use prefix && EPREFIX=; | |
if [[ -n ${EPREFIX} ]]; then | |
cat >> "${build_rules}" <<-_EOF_ | |
# in Prefix we need rpath and must ensure cmake gets our default linker path | |
# right ... except for Darwin hosts | |
IF (NOT APPLE) | |
SET (CMAKE_SKIP_RPATH OFF CACHE BOOL "" FORCE) | |
SET (CMAKE_PLATFORM_REQUIRED_RUNTIME_PATH "${EPREFIX}/usr/${CHOST}/lib/gcc;${EPREFIX}/usr/${CHOST}/lib;${EPREFIX}/usr/$(get_libdir);${EPREFIX}/$(get_libdir)" | |
CACHE STRING "" FORCE) | |
ELSE () | |
SET(CMAKE_PREFIX_PATH "${EPREFIX}${PREFIX}" CACHE STRING ""FORCE) | |
SET(CMAKE_SKIP_BUILD_RPATH OFF CACHE BOOL "" FORCE) | |
SET(CMAKE_SKIP_RPATH OFF CACHE BOOL "" FORCE) | |
SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE CACHE BOOL "") | |
SET(CMAKE_INSTALL_RPATH "${EPREFIX}${PREFIX}/lib;${EPREFIX}/usr/${CHOST}/lib/gcc;${EPREFIX}/usr/${CHOST}/lib;${EPREFIX}/usr/$(get_libdir);${EPREFIX}/$(get_libdir)" CACHE STRING "" FORCE) | |
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE CACHE BOOL "" FORCE) | |
SET(CMAKE_INSTALL_NAME_DIR "${EPREFIX}${PREFIX}/lib" CACHE STRING "" FORCE) | |
ENDIF (NOT APPLE) | |
_EOF_ | |
fi | |
local common_config=${CMAKE_BUILD_DIR}/gentoo_common_config.cmake; | |
local libdir=$(get_libdir); | |
cat > "${common_config}" <<-_EOF_ | |
SET (LIB_SUFFIX ${libdir/lib} CACHE STRING "library path suffix" FORCE) | |
SET (CMAKE_INSTALL_LIBDIR ${PREFIX}/${libdir} CACHE PATH "Output directory for libraries") | |
_EOF_ | |
[[ "${NOCOLOR}" = true || "${NOCOLOR}" = yes ]] && echo 'SET (CMAKE_COLOR_MAKEFILE OFF CACHE BOOL "pretty colors during make" FORCE)' >> "${common_config}"; | |
if [[ $(declare -p mycmakeargs 2>&-) != "declare -a mycmakeargs="* ]]; then | |
local mycmakeargs_local=(${mycmakeargs}); | |
else | |
local mycmakeargs_local=("${mycmakeargs[@]}"); | |
fi; | |
local cmakeargs=(--no-warn-unused-cli -C "${common_config}" -DCMAKE_INSTALL_PREFIX="${EPREFIX}${PREFIX}" "${mycmakeargs_local[@]}" -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" -DCMAKE_INSTALL_DO_STRIP=OFF -DCMAKE_USER_MAKE_RULES_OVERRIDE="${build_rules}" "${MYCMAKEARGS}"); | |
pushd "${CMAKE_BUILD_DIR}" > /dev/null; | |
debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: mycmakeargs is ${mycmakeargs_local[*]}"; | |
echo "${CMAKE_BINARY}" "${cmakeargs[@]}" "${CMAKE_USE_DIR}"; | |
"${CMAKE_BINARY}" "${cmakeargs[@]}" "${CMAKE_USE_DIR}" || die "cmake failed"; | |
popd > /dev/null | |
} | |
enable_cmake-utils_src_install () | |
{ | |
debug-print-function ${FUNCNAME} "$@"; | |
_check_build_dir; | |
pushd "${CMAKE_BUILD_DIR}" > /dev/null; | |
base_src_install "$@"; | |
popd > /dev/null; | |
if [[ -n "${DOCS}" ]] && [[ "$(declare -p DOCS 2>/dev/null 2>&1)" != "declare -a"* ]]; then | |
dodoc ${DOCS} || die "dodoc failed"; | |
fi; | |
if [[ -n "${HTML_DOCS}" ]] && [[ "$(declare -p HTML_DOCS 2>/dev/null 2>&1)" != "declare -a"* ]]; then | |
dohtml -r ${HTML_DOCS} || die "dohtml failed"; | |
fi | |
} | |
enable_cmake-utils_src_test () | |
{ | |
debug-print-function ${FUNCNAME} "$@"; | |
local ctestargs; | |
_check_build_dir; | |
pushd "${CMAKE_BUILD_DIR}" > /dev/null; | |
[[ -e CTestTestfile.cmake ]] || { | |
echo "No tests found. Skipping."; | |
return 0 | |
}; | |
[[ -n ${TEST_VERBOSE} ]] && ctestargs="--extra-verbose --output-on-failure"; | |
if ctest ${ctestargs} "$@"; then | |
einfo "Tests succeeded."; | |
else | |
if [[ -n "${CMAKE_YES_I_WANT_TO_SEE_THE_TEST_LOG}" ]]; then | |
eerror "Tests failed. Test log ${CMAKE_BUILD_DIR}/Testing/Temporary/LastTest.log follows:"; | |
eerror "--START TEST LOG--------------------------------------------------------------"; | |
cat "${CMAKE_BUILD_DIR}/Testing/Temporary/LastTest.log"; | |
eerror "--END TEST LOG----------------------------------------------------------------"; | |
die "Tests failed."; | |
else | |
die "Tests failed. When you file a bug, please attach the following file: \n\t${CMAKE_BUILD_DIR}/Testing/Temporary/LastTest.log"; | |
fi; | |
fi; | |
popd > /dev/null | |
} | |
enewgroup () | |
{ | |
_assert_pkg_ebuild_phase ${FUNCNAME}; | |
local egroup=$1; | |
shift; | |
if [[ -z ${egroup} ]]; then | |
eerror "No group specified !"; | |
die "Cannot call enewgroup without a group"; | |
fi; | |
if [[ -n $(egetent group "${egroup}") ]]; then | |
return 0; | |
fi; | |
einfo "Adding group '${egroup}' to your system ..."; | |
local egid=$1; | |
shift; | |
if [[ ! -z ${egid} ]]; then | |
if [[ ${egid} -gt 0 ]]; then | |
if [[ -n $(egetent group ${egid}) ]]; then | |
egid="next available; requested gid taken"; | |
fi; | |
else | |
eerror "Groupid given but is not greater than 0 !"; | |
die "${egid} is not a valid GID"; | |
fi; | |
else | |
egid="next available"; | |
fi; | |
einfo " - Groupid: ${egid}"; | |
if [[ $# -gt 0 ]]; then | |
die "extra arguments no longer supported; please file a bug"; | |
fi; | |
function _enewgroup_next_gid () | |
{ | |
if [[ ${egid} == *[!0-9]* ]]; then | |
for ((egid = 101; egid <= 999; egid++)) | |
do | |
[[ -z $(egetent group ${egid}) ]] && break; | |
done; | |
fi | |
}; | |
case ${CHOST} in | |
*-darwin*) | |
_enewgroup_next_gid; | |
dscl . create "/groups/${egroup}" gid ${egid}; | |
dscl . create "/groups/${egroup}" passwd '*' | |
;; | |
*-freebsd* | *-dragonfly*) | |
_enewgroup_next_gid; | |
pw groupadd "${egroup}" -g ${egid} || die | |
;; | |
*-netbsd*) | |
_enewgroup_next_gid; | |
groupadd -g ${egid} "${egroup}" || die | |
;; | |
*) | |
local opts; | |
if [[ ${egid} == *[!0-9]* ]]; then | |
opts=""; | |
else | |
opts="-g ${egid}"; | |
fi; | |
groupadd -r ${opts} "${egroup}" || die | |
;; | |
esac | |
} | |
enewuser () | |
{ | |
_assert_pkg_ebuild_phase ${FUNCNAME}; | |
local euser=$1; | |
shift; | |
if [[ -z ${euser} ]]; then | |
eerror "No username specified !"; | |
die "Cannot call enewuser without a username"; | |
fi; | |
if [[ -n $(egetent passwd "${euser}") ]]; then | |
return 0; | |
fi; | |
einfo "Adding user '${euser}' to your system ..."; | |
local opts=(); | |
local euid=$1; | |
shift; | |
if [[ -n ${euid} && ${euid} != -1 ]]; then | |
if [[ ${euid} -gt 0 ]]; then | |
if [[ -n $(egetent passwd ${euid}) ]]; then | |
euid="next"; | |
fi; | |
else | |
eerror "Userid given but is not greater than 0 !"; | |
die "${euid} is not a valid UID"; | |
fi; | |
else | |
euid="next"; | |
fi; | |
if [[ ${euid} == "next" ]]; then | |
for ((euid = 101; euid <= 999; euid++)) | |
do | |
[[ -z $(egetent passwd ${euid}) ]] && break; | |
done; | |
fi; | |
opts+=(-u ${euid}); | |
einfo " - Userid: ${euid}"; | |
local eshell=$1; | |
shift; | |
if [[ ! -z ${eshell} ]] && [[ ${eshell} != "-1" ]]; then | |
if [[ ! -e ${ROOT}${eshell} ]]; then | |
eerror "A shell was specified but it does not exist !"; | |
die "${eshell} does not exist in ${ROOT}"; | |
fi; | |
if [[ ${eshell} == */false || ${eshell} == */nologin ]]; then | |
eerror "Do not specify ${eshell} yourself, use -1"; | |
die "Pass '-1' as the shell parameter"; | |
fi; | |
else | |
for eshell in /sbin/nologin /usr/sbin/nologin /bin/false /usr/bin/false /dev/null; | |
do | |
[[ -x ${ROOT}${eshell} ]] && break; | |
done; | |
if [[ ${eshell} == "/dev/null" ]]; then | |
eerror "Unable to identify the shell to use, proceeding with userland default."; | |
case ${USERLAND} in | |
GNU) | |
eshell="/bin/false" | |
;; | |
BSD) | |
eshell="/sbin/nologin" | |
;; | |
Darwin) | |
eshell="/usr/sbin/nologin" | |
;; | |
*) | |
die "Unable to identify the default shell for userland ${USERLAND}" | |
;; | |
esac; | |
fi; | |
fi; | |
einfo " - Shell: ${eshell}"; | |
opts+=(-s "${eshell}"); | |
local ehome=$1; | |
shift; | |
if [[ -z ${ehome} ]] || [[ ${ehome} == "-1" ]]; then | |
ehome="/dev/null"; | |
fi; | |
einfo " - Home: ${ehome}"; | |
opts+=(-d "${ehome}"); | |
local egroups=$1; | |
shift; | |
local g egroups_arr; | |
IFS="," read -r -a egroups_arr <<< "${egroups}"; | |
shift; | |
if [[ ${#egroups_arr[@]} -gt 0 ]]; then | |
local defgroup exgroups; | |
for g in "${egroups_arr[@]}"; | |
do | |
if [[ -z $(egetent group "${g}") ]]; then | |
eerror "You must add group ${g} to the system first"; | |
die "${g} is not a valid GID"; | |
fi; | |
if [[ -z ${defgroup} ]]; then | |
defgroup=${g}; | |
else | |
exgroups+=",${g}"; | |
fi; | |
done; | |
opts+=(-g "${defgroup}"); | |
if [[ ! -z ${exgroups} ]]; then | |
opts+=(-G "${exgroups:1}"); | |
fi; | |
fi; | |
einfo " - Groups: ${egroups:-(none)}"; | |
if [[ $# -gt 0 ]]; then | |
die "extra arguments no longer supported; please file a bug"; | |
else | |
local comment="added by portage for ${PN}"; | |
opts+=(-c "${comment}"); | |
einfo " - GECOS: ${comment}"; | |
fi; | |
case ${CHOST} in | |
*-darwin*) | |
dscl . create "/users/${euser}" uid ${euid}; | |
dscl . create "/users/${euser}" shell "${eshell}"; | |
dscl . create "/users/${euser}" home "${ehome}"; | |
dscl . create "/users/${euser}" realname "added by portage for ${PN}"; | |
for g in "${egroups_arr[@]}"; | |
do | |
dscl . merge "/groups/${g}" users "${euser}"; | |
done | |
;; | |
*-freebsd* | *-dragonfly*) | |
pw useradd "${euser}" "${opts[@]}" || die | |
;; | |
*-netbsd*) | |
useradd "${opts[@]}" "${euser}" || die | |
;; | |
*-openbsd*) | |
useradd -u ${euid} -s "${eshell}" -d "${ehome}" -g "${egroups}" "${euser}" || die | |
;; | |
*) | |
useradd -r "${opts[@]}" "${euser}" || die | |
;; | |
esac; | |
if [[ ! -e ${ROOT}/${ehome} ]]; then | |
einfo " - Creating ${ehome} in ${ROOT}"; | |
mkdir -p "${ROOT}/${ehome}"; | |
chown "${euser}" "${ROOT}/${ehome}"; | |
chmod 755 "${ROOT}/${ehome}"; | |
fi | |
} | |
epatch () | |
{ | |
function _epatch_draw_line () | |
{ | |
[[ -z $1 ]] && set "$(printf "%65s" '')"; | |
echo "${1//?/=}" | |
}; | |
unset P4CONFIG P4PORT P4USER; | |
local EPATCH_OPTS=(${EPATCH_OPTS[*]}); | |
while [[ $# -gt 0 ]]; do | |
case $1 in | |
-*) | |
EPATCH_OPTS+=("$1") | |
;; | |
*) | |
break | |
;; | |
esac; | |
shift; | |
done; | |
if [[ $# -gt 1 ]]; then | |
local m; | |
for m in "$@"; | |
do | |
epatch "${m}"; | |
done; | |
return 0; | |
fi; | |
local SINGLE_PATCH="no"; | |
[[ $# -eq 0 ]] && set -- "${EPATCH_SOURCE}"; | |
if [[ -f $1 ]]; then | |
SINGLE_PATCH="yes"; | |
set -- "$1"; | |
local EPATCH_SUFFIX=$1; | |
else | |
if [[ -d $1 ]]; then | |
set -- "$1"/*${EPATCH_SUFFIX:+."${EPATCH_SUFFIX}"}; | |
else | |
if [[ -f ${EPATCH_SOURCE}/$1 ]]; then | |
epatch "${EPATCH_SOURCE}/$1"; | |
return $?; | |
else | |
[[ $# -ne 0 ]] && EPATCH_SOURCE=$1; | |
echo; | |
eerror "Cannot find \$EPATCH_SOURCE! Value for \$EPATCH_SOURCE is:"; | |
eerror; | |
eerror " ${EPATCH_SOURCE}"; | |
eerror " ( ${EPATCH_SOURCE##*/} )"; | |
echo; | |
die "Cannot find \$EPATCH_SOURCE!"; | |
fi; | |
fi; | |
fi; | |
EPATCH_OPTS="${EPATCH_COMMON_OPTS} ${EPATCH_OPTS[*]}"; | |
local PIPE_CMD; | |
case ${EPATCH_SUFFIX##*\.} in | |
xz) | |
PIPE_CMD="xz -dc" | |
;; | |
lzma) | |
PIPE_CMD="lzma -dc" | |
;; | |
bz2) | |
PIPE_CMD="bzip2 -dc" | |
;; | |
gz | Z | z) | |
PIPE_CMD="gzip -dc" | |
;; | |
ZIP | zip) | |
PIPE_CMD="unzip -p" | |
;; | |
*) | |
;; | |
esac; | |
[[ ${SINGLE_PATCH} == "no" ]] && einfo "${EPATCH_MULTI_MSG}"; | |
local x; | |
for x in "$@"; | |
do | |
[[ ! -f ${x} ]] && continue; | |
local patchname=${x##*/}; | |
local a=${patchname#*_}; | |
a=${a%%_*}; | |
if ! [[ ${SINGLE_PATCH} == "yes" || ${EPATCH_FORCE} == "yes" || ${a} == all || ${a} == ${ARCH} ]]; then | |
continue; | |
fi; | |
if [[ -n ${EPATCH_EXCLUDE} ]]; then | |
eshopts_push -o noglob; | |
local ex; | |
for ex in ${EPATCH_EXCLUDE}; | |
do | |
if [[ ${patchname} == ${ex} ]]; then | |
eshopts_pop; | |
continue 2; | |
fi; | |
done; | |
eshopts_pop; | |
fi; | |
if [[ ${SINGLE_PATCH} == "yes" ]]; then | |
if [[ -n ${EPATCH_SINGLE_MSG} ]]; then | |
einfo "${EPATCH_SINGLE_MSG}"; | |
else | |
einfo "Applying ${patchname} ..."; | |
fi; | |
else | |
einfo " ${patchname} ..."; | |
fi; | |
local STDERR_TARGET="${T}/${patchname}.out"; | |
if [[ -e ${STDERR_TARGET} ]]; then | |
STDERR_TARGET="${T}/${patchname}-$$.out"; | |
fi; | |
printf "***** %s *****\nPWD: %s\n\n" "${patchname}" "${PWD}" > "${STDERR_TARGET}"; | |
local count=0; | |
local PATCH_TARGET; | |
if [[ -n ${PIPE_CMD} ]]; then | |
PATCH_TARGET="${T}/$$.patch"; | |
echo "PIPE_COMMAND: ${PIPE_CMD} ${x} > ${PATCH_TARGET}" >> "${STDERR_TARGET}"; | |
if ! ( ${PIPE_CMD} "${x}" > "${PATCH_TARGET}" ) >> "${STDERR_TARGET}" 2>&1; then | |
echo; | |
eerror "Could not extract patch!"; | |
count=5; | |
break; | |
fi; | |
else | |
PATCH_TARGET=${x}; | |
fi; | |
local abs_paths=$(egrep -n '^[-+]{3} /' "${PATCH_TARGET}" | awk '$2 != "/dev/null" { print }'); | |
if [[ -n ${abs_paths} ]]; then | |
count=1; | |
printf "NOTE: skipping -p0 due to absolute paths in patch:\n%s\n" "${abs_paths}" >> "${STDERR_TARGET}"; | |
fi; | |
local rel_paths=$(egrep -n '^[-+]{3} [^ ]*[.][.]/' "${PATCH_TARGET}"); | |
if [[ -n ${rel_paths} ]]; then | |
eqawarn "QA Notice: Your patch uses relative paths '../'."; | |
eqawarn " In the future this will cause a failure."; | |
eqawarn "${rel_paths}"; | |
fi; | |
local patch_cmd; | |
while [[ ${count} -lt 5 ]]; do | |
patch_cmd="${BASH_ALIASES[patch]:-patch} -p${count} ${EPATCH_OPTS}"; | |
( _epatch_draw_line "***** ${patchname} *****"; | |
echo; | |
echo "PATCH COMMAND: ${patch_cmd} < '${PATCH_TARGET}'"; | |
echo; | |
_epatch_draw_line "***** ${patchname} *****"; | |
${patch_cmd} --dry-run -f < "${PATCH_TARGET}" 2>&1; | |
ret=$?; | |
echo; | |
echo "patch program exited with status ${ret}"; | |
exit ${ret} ) >> "${STDERR_TARGET}"; | |
if [ $? -eq 0 ]; then | |
( _epatch_draw_line "***** ${patchname} *****"; | |
echo; | |
echo "ACTUALLY APPLYING ${patchname} ..."; | |
echo; | |
_epatch_draw_line "***** ${patchname} *****"; | |
${patch_cmd} < "${PATCH_TARGET}" 2>&1; | |
ret=$?; | |
echo; | |
echo "patch program exited with status ${ret}"; | |
exit ${ret} ) >> "${STDERR_TARGET}"; | |
if [ $? -ne 0 ]; then | |
echo; | |
eerror "A dry-run of patch command succeeded, but actually"; | |
eerror "applying the patch failed!"; | |
count=5; | |
fi; | |
break; | |
fi; | |
: $(( count++ )); | |
done; | |
if [[ -n ${PIPE_CMD} ]]; then | |
rm -f "${PATCH_TARGET}"; | |
fi; | |
if [[ ${count} -ge 5 ]]; then | |
echo; | |
eerror "Failed Patch: ${patchname} !"; | |
eerror " ( ${PATCH_TARGET} )"; | |
eerror; | |
eerror "Include in your bugreport the contents of:"; | |
eerror; | |
eerror " ${STDERR_TARGET}"; | |
echo; | |
die "Failed Patch: ${patchname}!"; | |
fi; | |
rm -f "${STDERR_TARGET}"; | |
cat >> "${T}/epatch.log" <<-EOF | |
PATCH: ${x} | |
CMD: ${patch_cmd} | |
PWD: ${PWD} | |
EOF | |
eend 0; | |
done; | |
[[ ${SINGLE_PATCH} == "no" ]] && einfo "Done with patching"; | |
: | |
} | |
epatch_user () | |
{ | |
[[ $# -ne 0 ]] && die "epatch_user takes no options"; | |
local applied="${T}/epatch_user.log"; | |
[[ -e ${applied} ]] && return 2; | |
local EPATCH_SOURCE check base=${PORTAGE_CONFIGROOT%/}/etc/portage/patches; | |
for check in ${CATEGORY}/{${P}-${PR},${P},${PN}}; | |
do | |
EPATCH_SOURCE=${base}/${CTARGET}/${check}; | |
[[ -r ${EPATCH_SOURCE} ]] || EPATCH_SOURCE=${base}/${CHOST}/${check}; | |
[[ -r ${EPATCH_SOURCE} ]] || EPATCH_SOURCE=${base}/${check}; | |
if [[ -d ${EPATCH_SOURCE} ]]; then | |
EPATCH_SOURCE=${EPATCH_SOURCE} EPATCH_SUFFIX="patch" EPATCH_FORCE="yes" EPATCH_MULTI_MSG="Applying user patches from ${EPATCH_SOURCE} ..." epatch; | |
echo "${EPATCH_SOURCE}" > "${applied}"; | |
return 0; | |
fi; | |
done; | |
echo "none" > "${applied}"; | |
return 1 | |
} | |
epause () | |
{ | |
ewarn "QA Notice: epause is not defined in EAPI=${EAPI}, please file a bug at http://bugs.gentoo.org" | |
} | |
epunt_cxx () | |
{ | |
local dir=$1; | |
[[ -z ${dir} ]] && dir=${S}; | |
ebegin "Removing useless C++ checks"; | |
local f; | |
find "${dir}" -name configure | while read f; do | |
patch --no-backup-if-mismatch -p0 "${f}" "${PORTDIR}/eclass/ELT-patches/nocxx/nocxx.patch" > /dev/null; | |
done; | |
eend 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 | |
} | |
eshopts_pop () | |
{ | |
local s; | |
estack_pop eshopts s || die "${FUNCNAME}: unbalanced push"; | |
if [[ ${s} == "shopt -"* ]]; then | |
eval "${s}" || die "${FUNCNAME}: sanity: invalid shopt options: ${s}"; | |
else | |
set +$- || die "${FUNCNAME}: sanity: invalid shell settings: $-"; | |
set -${s} || die "${FUNCNAME}: sanity: unable to restore saved shell settings: ${s}"; | |
fi | |
} | |
eshopts_push () | |
{ | |
if [[ $1 == -[su] ]]; then | |
estack_push eshopts "$(shopt -p)"; | |
[[ $# -eq 0 ]] && return 0; | |
shopt "$@" || die "${FUNCNAME}: bad options to shopt: $*"; | |
else | |
estack_push eshopts $-; | |
[[ $# -eq 0 ]] && return 0; | |
set "$@" || die "${FUNCNAME}: bad options to set: $*"; | |
fi | |
} | |
estack_pop () | |
{ | |
[[ $# -eq 0 || $# -gt 2 ]] && die "estack_pop: incorrect # of arguments"; | |
local __estack_name="__ESTACK_$1__"; | |
shift; | |
local __estack_retvar=$1; | |
shift; | |
eval local __estack_i=\${#${__estack_name}\[@\]}; | |
[[ $(( --__estack_i )) -eq -1 ]] && return 1; | |
if [[ -n ${__estack_retvar} ]]; then | |
eval ${__estack_retvar}=\"\${${__estack_name}\[${__estack_i}\]}\"; | |
fi; | |
eval unset ${__estack_name}\[${__estack_i}\] | |
} | |
estack_push () | |
{ | |
[[ $# -eq 0 ]] && die "estack_push: incorrect # of arguments"; | |
local stack_name="__ESTACK_$1__"; | |
shift; | |
eval ${stack_name}+=\( \"\$@\" \) | |
} | |
esvn_clean () | |
{ | |
[[ -z $* ]] && set -- .; | |
find "$@" -type d -name '.svn' -prune -print0 | xargs -0 rm -rf | |
} | |
esyslog () | |
{ | |
return 0 | |
} | |
eumask_pop () | |
{ | |
[[ $# -eq 0 ]] || die "${FUNCNAME}: we take no options"; | |
local s; | |
estack_pop eumask s || die "${FUNCNAME}: unbalanced push"; | |
umask ${s} || die "${FUNCNAME}: sanity: could not restore umask: ${s}" | |
} | |
eumask_push () | |
{ | |
estack_push eumask "$(umask)"; | |
umask "$@" || die "${FUNCNAME}: bad options to umask: $*" | |
} | |
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"; | |
[[ " ${FEATURES} " == *" force-prefix "* ]] || case "$EAPI" in | |
0 | 1 | 2) | |
local ED=${D} | |
;; | |
esac; | |
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" | |
} | |
filter-flags () | |
{ | |
_filter-hardened "$@"; | |
local v; | |
for v in $(all-flag-vars); | |
do | |
_filter-var ${v} "$@"; | |
done; | |
return 0 | |
} | |
filter-ldflags () | |
{ | |
_filter-var LDFLAGS "$@"; | |
return 0 | |
} | |
filter-lfs-flags () | |
{ | |
[[ $# -ne 0 ]] && die "filter-lfs-flags takes no arguments"; | |
filter-flags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE | |
} | |
filter-mfpmath () | |
{ | |
local orig_mfpmath new_math prune_math; | |
orig_mfpmath=$(get-flag -mfpmath); | |
new_math=$(get-flag mfpmath); | |
new_math=" ${new_math//,/ } "; | |
prune_math=""; | |
for prune_math in "$@"; | |
do | |
new_math=${new_math/ ${prune_math} / }; | |
done; | |
new_math=$(echo ${new_math}); | |
new_math=${new_math// /,}; | |
if [[ -z ${new_math} ]]; then | |
filter-flags ${orig_mfpmath}; | |
else | |
replace-flags ${orig_mfpmath} -mfpmath=${new_math}; | |
fi; | |
return 0 | |
} | |
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"; | |
case "${EAPI:-0}" in | |
0 | 1 | 2) | |
[[ " ${FEATURES} " == *" force-prefix "* ]] && filtered_vars+=" ED EPREFIX EROOT" | |
;; | |
*) | |
filtered_vars+=" ED EPREFIX EROOT" | |
;; | |
esac; | |
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" | |
} | |
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; | |
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 | |
;; | |
*-aix* | *-irix* | *64*-hpux* | *-interix* | *-winnt*) | |
if ${auto}; then | |
mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die; | |
tlib=$(readlink "${ED}"/${libdir}/${lib}); | |
tlib=${tlib##*/}; | |
if [[ -z ${tlib} ]]; then | |
tlib=${lib}; | |
else | |
rm -f "${ED}"/${libdir}/${lib}; | |
fi; | |
else | |
tlib=${lib}; | |
fi; | |
pushd "${ED}/usr/${libdir}" > /dev/null; | |
ln -snf "../../${libdir}/${tlib}" "${lib}"; | |
popd > /dev/null | |
;; | |
hppa*-hpux*) | |
if ${auto}; then | |
tlib=$(chatr "${ED}"/usr/${libdir}/${lib} | sed -n '/internal name:/{n;s/^ *//;p;q}'); | |
[[ -z ${tlib} ]] && tlib=${lib}; | |
tlib=${tlib##*/}; | |
mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die; | |
if [[ ${tlib} != ${lib}* ]]; then | |
mv "${ED}"/usr/${libdir}/${tlib}* "${ED}"/${libdir}/ || die; | |
fi; | |
[[ ${tlib} != ${lib} ]] && rm -f "${ED}"/${libdir}/${lib}; | |
else | |
tlib=$(chatr "${ED}"/${libdir}/${lib} | sed -n '/internal name:/{n;s/^ *//;p;q}'); | |
[[ -z ${tlib} ]] && tlib=${lib}; | |
tlib=${tlib##*/}; | |
fi; | |
pushd "${ED}"/usr/${libdir} > /dev/null; | |
ln -snf "../../${libdir}/${tlib}" "${lib}"; | |
[[ ${tlib} != ${lib} ]] && ln -snf "../../${libdir}/${tlib}" "${tlib}"; | |
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-flag () | |
{ | |
local f var findflag="$1"; | |
for var in $(all-flag-vars); | |
do | |
for f in ${!var}; | |
do | |
if [ "${f/${findflag}}" != "${f}" ]; then | |
printf "%s\n" "${f/-${findflag}=}"; | |
return 0; | |
fi; | |
done; | |
done; | |
return 1 | |
} | |
get_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 order=""; | |
if [[ -z ${MULTILIB_ABIS} ]]; then | |
echo "default"; | |
return 0; | |
fi; | |
for x in ${MULTILIB_ABIS}; | |
do | |
if [[ ${x} != ${DEFAULT_ABI} ]]; then | |
order="${order:+${order} }${x}"; | |
fi; | |
done; | |
order="${order:+${order} }${DEFAULT_ABI}"; | |
echo ${order}; | |
return 0 | |
} | |
get_all_libdirs () | |
{ | |
local libdirs; | |
local abi; | |
local dir; | |
for abi in ${MULTILIB_ABIS}; | |
do | |
libdirs+=" $(get_abi_LIBDIR ${abi})"; | |
done; | |
[[ " ${libdirs} " != *" lib "* ]] && libdirs+=" lib"; | |
echo "${libdirs}" | |
} | |
get_install_abis () | |
{ | |
local 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_m32 () | |
{ | |
die "${FUNCNAME}: don't use this anymore" | |
} | |
has_m64 () | |
{ | |
eqawarn "${FUNCNAME}: don't use this anymore"; | |
local temp="$(emktemp)"; | |
echo "int main() { return(0); }" > "${temp}".c; | |
MY_CC=$(tc-getCC); | |
${MY_CC/ .*/} -m64 -o "$(emktemp)" "${temp}".c > /dev/null 2>&1; | |
local ret=$?; | |
rm -f "${temp}".c; | |
[[ ${ret} != 1 ]] && return 0; | |
return 1 | |
} | |
has_multilib_profile () | |
{ | |
[ -n "${MULTILIB_ABIS}" -a "${MULTILIB_ABIS}" != "${MULTILIB_ABIS/ /}" ] | |
} | |
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 | |
} | |
has_version () | |
{ | |
local eroot; | |
case "$EAPI" in | |
0 | 1 | 2) | |
[[ " ${FEATURES} " == *" force-prefix "* ]] && eroot=${ROOT%/}${EPREFIX}/ || eroot=${ROOT} | |
;; | |
*) | |
eroot=${ROOT%/}${EPREFIX}/ | |
;; | |
esac; | |
if [[ -n $PORTAGE_IPC_DAEMON ]]; then | |
"$PORTAGE_BIN_PATH"/ebuild-ipc has_version "${eroot}" "$1"; | |
else | |
PYTHONPATH=${PORTAGE_PYM_PATH}${PYTHONPATH:+:}${PYTHONPATH} "${PORTAGE_PYTHON:-/usr/bin/python}" "${PORTAGE_BIN_PATH}/portageq" has_version "${eroot}" "$1"; | |
fi; | |
local retval=$?; | |
case "${retval}" in | |
0 | 1) | |
return ${retval} | |
;; | |
*) | |
die "unexpected portageq exit code: ${retval}" | |
;; | |
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 | |
} | |
helpers_die () | |
{ | |
case "${EAPI:-0}" in | |
0 | 1 | 2 | 3) | |
echo -e "$@" 1>&2 | |
;; | |
*) | |
die "$@" | |
;; | |
esac | |
} | |
in_iuse () | |
{ | |
debug-print-function ${FUNCNAME} "${@}"; | |
[[ ${#} -eq 1 ]] || die "Invalid args to ${FUNCNAME}()"; | |
local flag=${1}; | |
local liuse=(${IUSE}); | |
has "${flag}" "${liuse[@]#[+-]}" | |
} | |
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; | |
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} != *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; | |
[ "${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}"; | |
unset IUSE REQUIRED_USE DEPEND RDEPEND PDEPEND; | |
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}"; | |
[ "${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; | |
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; | |
[[ " ${FEATURES} " == *" force-prefix "* ]] || case "$EAPI" in | |
0 | 1 | 2) | |
local ED=${D} | |
;; | |
esac; | |
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; | |
[[ " ${FEATURES} " == *" force-prefix "* ]] || case "$EAPI" in | |
0 | 1 | 2) | |
local ED=${D} | |
;; | |
esac; | |
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-flag () | |
{ | |
is-flagq "$@" && echo true | |
} | |
is-flagq () | |
{ | |
[[ -n $2 ]] && die "Usage: is-flag <flag>"; | |
local var; | |
for var in $(all-flag-vars); | |
do | |
_is_flagq ${var} "$1" && return 0; | |
done; | |
return 1 | |
} | |
is-ldflag () | |
{ | |
is-ldflagq "$@" && echo true | |
} | |
is-ldflagq () | |
{ | |
[[ -n $2 ]] && die "Usage: is-ldflag <flag>"; | |
_is_flagq LDFLAGS $1 | |
} | |
is_final_abi () | |
{ | |
has_multilib_profile || return 0; | |
set -- $(get_install_abis); | |
local LAST_ABI=$#; | |
[[ ${!LAST_ABI} == ${ABI} ]] | |
} | |
keepdir () | |
{ | |
dodir "$@"; | |
local x; | |
[[ " ${FEATURES} " == *" force-prefix "* ]] || case "$EAPI" in | |
0 | 1 | 2) | |
local ED=${D} | |
;; | |
esac; | |
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" | |
} | |
make_desktop_entry () | |
{ | |
[[ -z $1 ]] && die "make_desktop_entry: You must specify the executable"; | |
local exec=${1}; | |
local name=${2:-${PN}}; | |
local icon=${3:-${PN}}; | |
local type=${4}; | |
local fields=${5}; | |
if [[ -z ${type} ]]; then | |
local catmaj=${CATEGORY%%-*}; | |
local catmin=${CATEGORY##*-}; | |
case ${catmaj} in | |
app) | |
case ${catmin} in | |
accessibility) | |
type="Utility;Accessibility" | |
;; | |
admin) | |
type=System | |
;; | |
antivirus) | |
type=System | |
;; | |
arch) | |
type="Utility;Archiving" | |
;; | |
backup) | |
type="Utility;Archiving" | |
;; | |
cdr) | |
type="AudioVideo;DiscBurning" | |
;; | |
dicts) | |
type="Office;Dictionary" | |
;; | |
doc) | |
type=Documentation | |
;; | |
editors) | |
type="Utility;TextEditor" | |
;; | |
emacs) | |
type="Development;TextEditor" | |
;; | |
emulation) | |
type="System;Emulator" | |
;; | |
laptop) | |
type="Settings;HardwareSettings" | |
;; | |
office) | |
type=Office | |
;; | |
pda) | |
type="Office;PDA" | |
;; | |
vim) | |
type="Development;TextEditor" | |
;; | |
xemacs) | |
type="Development;TextEditor" | |
;; | |
esac | |
;; | |
dev) | |
type="Development" | |
;; | |
games) | |
case ${catmin} in | |
action | fps) | |
type=ActionGame | |
;; | |
arcade) | |
type=ArcadeGame | |
;; | |
board) | |
type=BoardGame | |
;; | |
emulation) | |
type=Emulator | |
;; | |
kids) | |
type=KidsGame | |
;; | |
puzzle) | |
type=LogicGame | |
;; | |
roguelike) | |
type=RolePlaying | |
;; | |
rpg) | |
type=RolePlaying | |
;; | |
simulation) | |
type=Simulation | |
;; | |
sports) | |
type=SportsGame | |
;; | |
strategy) | |
type=StrategyGame | |
;; | |
esac; | |
type="Game;${type}" | |
;; | |
gnome) | |
type="Gnome;GTK" | |
;; | |
kde) | |
type="KDE;Qt" | |
;; | |
mail) | |
type="Network;Email" | |
;; | |
media) | |
case ${catmin} in | |
gfx) | |
type=Graphics | |
;; | |
*) | |
case ${catmin} in | |
radio) | |
type=Tuner | |
;; | |
sound) | |
type=Audio | |
;; | |
tv) | |
type=TV | |
;; | |
video) | |
type=Video | |
;; | |
esac; | |
type="AudioVideo;${type}" | |
;; | |
esac | |
;; | |
net) | |
case ${catmin} in | |
dialup) | |
type=Dialup | |
;; | |
ftp) | |
type=FileTransfer | |
;; | |
im) | |
type=InstantMessaging | |
;; | |
irc) | |
type=IRCClient | |
;; | |
mail) | |
type=Email | |
;; | |
news) | |
type=News | |
;; | |
nntp) | |
type=News | |
;; | |
p2p) | |
type=FileTransfer | |
;; | |
voip) | |
type=Telephony | |
;; | |
esac; | |
type="Network;${type}" | |
;; | |
sci) | |
case ${catmin} in | |
astro*) | |
type=Astronomy | |
;; | |
bio*) | |
type=Biology | |
;; | |
calc*) | |
type=Calculator | |
;; | |
chem*) | |
type=Chemistry | |
;; | |
elec*) | |
type=Electronics | |
;; | |
geo*) | |
type=Geology | |
;; | |
math*) | |
type=Math | |
;; | |
physics) | |
type=Physics | |
;; | |
visual*) | |
type=DataVisualization | |
;; | |
esac; | |
type="Education;Science;${type}" | |
;; | |
sys) | |
type="System" | |
;; | |
www) | |
case ${catmin} in | |
client) | |
type=WebBrowser | |
;; | |
esac; | |
type="Network;${type}" | |
;; | |
*) | |
type= | |
;; | |
esac; | |
fi; | |
if [ "${SLOT}" == "0" ]; then | |
local desktop_name="${PN}"; | |
else | |
local desktop_name="${PN}-${SLOT}"; | |
fi; | |
local desktop="${T}/$(echo ${exec} | sed 's:[[:space:]/:]:_:g')-${desktop_name}.desktop"; | |
type=${type%;}${type:+;}; | |
eshopts_push -s extglob; | |
if [[ -n ${icon} && ${icon} != /* ]] && [[ ${icon} == *.xpm || ${icon} == *.png || ${icon} == *.svg ]]; then | |
ewarn "As described in the Icon Theme Specification, icon file extensions are not"; | |
ewarn "allowed in .desktop files if the value is not an absolute path."; | |
icon=${icon%.@(xpm|png|svg)}; | |
fi; | |
eshopts_pop; | |
cat > "${desktop}" <<-EOF | |
[Desktop Entry] | |
Name=${name} | |
Type=Application | |
Comment=${DESCRIPTION} | |
Exec=${exec} | |
TryExec=${exec%% *} | |
Icon=${icon} | |
Categories=${type} | |
EOF | |
if [[ ${fields:-=} != *=* ]]; then | |
ewarn "make_desktop_entry: update your 5th arg to read Path=${fields}"; | |
fields="Path=${fields}"; | |
fi; | |
[[ -n ${fields} ]] && printf '%b\n' "${fields}" >> "${desktop}"; | |
( insinto /usr/share/applications; | |
doins "${desktop}" ) || die "installing desktop file failed" | |
} | |
make_session_desktop () | |
{ | |
[[ -z $1 ]] && eerror "$0: You must specify the title" && return 1; | |
[[ -z $2 ]] && eerror "$0: You must specify the command" && return 1; | |
local title=$1; | |
local command=$2; | |
local desktop=${T}/${wm:-${PN}}.desktop; | |
shift 2; | |
cat > "${desktop}" <<-EOF | |
[Desktop Entry] | |
Name=${title} | |
Comment=This session logs you into ${title} | |
Exec=${command} $* | |
TryExec=${command} | |
Type=XSession | |
EOF | |
( insinto /usr/share/xsessions; | |
doins "${desktop}" ) | |
} | |
make_wrapper () | |
{ | |
local wrapper=$1 bin=$2 chdir=$3 libdir=$4 path=$5; | |
local tmpwrapper=$(emktemp); | |
cat > "${tmpwrapper}" <<EOF | |
#!/bin/sh | |
cd "${chdir:-.}" | |
if [ -n "${libdir}" ] ; then | |
if [ "\${LD_LIBRARY_PATH+set}" = "set" ] ; then | |
export LD_LIBRARY_PATH="\${LD_LIBRARY_PATH}:${libdir}" | |
else | |
export LD_LIBRARY_PATH="${libdir}" | |
fi | |
fi | |
exec ${bin} "\$@" | |
EOF | |
chmod go+rx "${tmpwrapper}"; | |
if [[ -n ${path} ]]; then | |
( exeinto "${path}"; | |
newexe "${tmpwrapper}" "${wrapper}" ) || die; | |
else | |
newbin "${tmpwrapper}" "${wrapper}" || die; | |
fi | |
} | |
makeopts_jobs () | |
{ | |
[[ $# -eq 0 ]] && set -- ${MAKEOPTS}; | |
local jobs=$(echo " $* " | sed -r -n -e 's:.*[[:space:]](-j|--jobs[=[:space:]])[[:space:]]*([0-9]+).*:\2:p' -e 's:.*[[:space:]](-j|--jobs)[[:space:]].*:999:p'); | |
echo ${jobs:-1} | |
} | |
multilib_env () | |
{ | |
local CTARGET=${1:-${CTARGET}}; | |
case ${CTARGET} in | |
x86_64*) | |
export CFLAGS_x86=${CFLAGS_x86--m32}; | |
export CHOST_x86=${CTARGET/x86_64/i686}; | |
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}; | |
export CTARGET_amd64=${CHOST_amd64}; | |
export LIBDIR_amd64="lib64"; | |
export CFLAGS_x32=${CFLAGS_x32--mx32}; | |
export CHOST_x32=${CTARGET}; | |
export CTARGET_x32=${CHOST_x32}; | |
export LIBDIR_x32="libx32"; | |
: ${MULTILIB_ABIS=amd64 x86}; | |
: ${DEFAULT_ABI=amd64} | |
;; | |
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} | |
;; | |
sparc*) | |
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 | |
} | |
newicon () | |
{ | |
( insinto /usr/share/pixmaps; | |
newins "$@" ) | |
} | |
newmenu () | |
{ | |
( insinto /usr/share/applications; | |
newins "$@" ) | |
} | |
no-as-needed () | |
{ | |
case $($(tc-getLD) -v 2>&1 </dev/null) in | |
*GNU*) | |
echo "-Wl,--no-as-needed" | |
;; | |
esac | |
} | |
nonfatal () | |
{ | |
if has "${EAPI:-0}" 0 1 2 3 3_pre2; 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 $# | |
} | |
path_exists () | |
{ | |
local opt=$1; | |
[[ ${opt} == -[ao] ]] && shift || opt="-a"; | |
[[ $# -eq 0 ]] && return 1; | |
local p r=0; | |
for p in "$@"; | |
do | |
[[ -e ${p} ]]; | |
: $(( r += $? )); | |
done; | |
case ${opt} in | |
-a) | |
return $(( r != 0 )) | |
;; | |
-o) | |
return $(( r == $# )) | |
;; | |
esac | |
} | |
pkg_nofetch () | |
{ | |
_eapi0_pkg_nofetch "$@" | |
} | |
pkg_pretend () | |
{ | |
if [[ ${MERGE_TYPE} != binary ]]; then | |
[[ $(gcc-major-version) -lt 4 ]] || ( [[ $(gcc-major-version) -eq 4 && $(gcc-minor-version) -le 4 ]] ) && die "Sorry, but gcc-4.4 and earlier won't work."; | |
fi | |
} | |
portageq () | |
{ | |
PYTHONPATH=${PORTAGE_PYM_PATH}${PYTHONPATH:+:}${PYTHONPATH} "${PORTAGE_PYTHON:-/usr/bin/python}" "${PORTAGE_BIN_PATH}/portageq" "$@" | |
} | |
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} | |
} | |
preserve_old_lib () | |
{ | |
if [[ ${EBUILD_PHASE} != "preinst" ]]; then | |
eerror "preserve_old_lib() must be called from pkg_preinst() only"; | |
die "Invalid preserve_old_lib() usage"; | |
fi; | |
[[ -z $1 ]] && die "Usage: preserve_old_lib <library to preserve> [more libraries to preserve]"; | |
has preserve-libs ${FEATURES} && return 0; | |
local lib dir; | |
for lib in "$@"; | |
do | |
[[ -e ${ROOT}/${lib} ]] || continue; | |
dir=${lib%/*}; | |
dodir ${dir} || die "dodir ${dir} failed"; | |
cp "${ROOT}"/${lib} "${D}"/${lib} || die "cp ${lib} failed"; | |
touch "${D}"/${lib}; | |
done | |
} | |
preserve_old_lib_notify () | |
{ | |
if [[ ${EBUILD_PHASE} != "postinst" ]]; then | |
eerror "preserve_old_lib_notify() must be called from pkg_postinst() only"; | |
die "Invalid preserve_old_lib_notify() usage"; | |
fi; | |
has preserve-libs ${FEATURES} && return 0; | |
local lib notice=0; | |
for lib in "$@"; | |
do | |
[[ -e ${ROOT}/${lib} ]] || continue; | |
if [[ ${notice} -eq 0 ]]; then | |
notice=1; | |
ewarn "Old versions of installed libraries were detected on your system."; | |
ewarn "In order to avoid breaking packages that depend on these old libs,"; | |
ewarn "the libraries are not being removed. You need to run revdep-rebuild"; | |
ewarn "in order to remove these old dependencies. If you do not have this"; | |
ewarn "helper program, simply emerge the 'gentoolkit' package."; | |
ewarn; | |
fi; | |
[[ ${PN} == "mpfr" ]] && lib=${lib##*/}; | |
ewarn " # revdep-rebuild --library '${lib}'"; | |
done; | |
if [[ ${notice} -eq 1 ]]; then | |
ewarn; | |
ewarn "Once you've finished running revdep-rebuild, it should be safe to"; | |
ewarn "delete the old libraries. Here is a copy & paste for the lazy:"; | |
for lib in "$@"; | |
do | |
ewarn " # rm '${lib}'"; | |
done; | |
fi | |
} | |
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 ]] | |
} | |
raw-ldflags () | |
{ | |
local x input="$@"; | |
[[ -z ${input} ]] && input=${LDFLAGS}; | |
set --; | |
for x in ${input}; | |
do | |
x=${x#-Wl,}; | |
set -- "$@" ${x//,/ }; | |
done; | |
echo "$@" | |
} | |
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 | |
} | |
remove_path_entry () | |
{ | |
[ "${IFS:-unset}" != "unset" ] && old_IFS="${IFS}"; | |
IFS=":"; | |
stripped_path="${PATH}"; | |
while [ -n "$1" ]; do | |
cur_path=""; | |
for p in ${stripped_path}; | |
do | |
if [ "${p/${1}}" == "${p}" ]; then | |
cur_path="${cur_path}:${p}"; | |
fi; | |
done; | |
stripped_path="${cur_path#:*}"; | |
shift; | |
done; | |
if [ "${old_IFS:-unset}" != "unset" ]; then | |
IFS="${old_IFS}"; | |
unset old_IFS; | |
else | |
unset IFS; | |
fi; | |
PATH="${stripped_path}" | |
} | |
replace-cpu-flags () | |
{ | |
local newcpu="$#"; | |
newcpu="${!newcpu}"; | |
while [ $# -gt 1 ]; do | |
replace-flags "-march=${1}" "-march=${newcpu}"; | |
replace-flags "-mcpu=${1}" "-mcpu=${newcpu}"; | |
replace-flags "-mtune=${1}" "-mtune=${newcpu}"; | |
shift; | |
done; | |
return 0 | |
} | |
replace-flags () | |
{ | |
[[ $# != 2 ]] && die "Usage: replace-flags <old flag> <new flag>"; | |
local f var new; | |
for var in $(all-flag-vars); | |
do | |
new=(); | |
for f in ${!var}; | |
do | |
[[ ${f} == ${1} ]] && f=${2}; | |
new+=("${f}"); | |
done; | |
eval export ${var}=\""${new[*]}"\"; | |
done; | |
return 0 | |
} | |
replace-sparc64-flags () | |
{ | |
local SPARC64_CPUS="ultrasparc3 ultrasparc v9"; | |
if [ "${CFLAGS/mtune}" != "${CFLAGS}" ]; then | |
for x in ${SPARC64_CPUS}; | |
do | |
CFLAGS="${CFLAGS/-mcpu=${x}/-mcpu=v8}"; | |
done; | |
else | |
for x in ${SPARC64_CPUS}; | |
do | |
CFLAGS="${CFLAGS/-mcpu=${x}/-mcpu=v8 -mtune=${x}}"; | |
done; | |
fi; | |
if [ "${CXXFLAGS/mtune}" != "${CXXFLAGS}" ]; then | |
for x in ${SPARC64_CPUS}; | |
do | |
CXXFLAGS="${CXXFLAGS/-mcpu=${x}/-mcpu=v8}"; | |
done; | |
else | |
for x in ${SPARC64_CPUS}; | |
do | |
CXXFLAGS="${CXXFLAGS/-mcpu=${x}/-mcpu=v8 -mtune=${x}}"; | |
done; | |
fi; | |
export CFLAGS CXXFLAGS | |
} | |
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 diefunc quiet_mode vecho elog_base eqawarn elog esyslog einfo einfon ewarn eerror ebegin _eend eend KV_major KV_minor KV_micro KV_to_int get_KV unset_colors set_colors 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_preinst dyn_pretend dyn_help debug-print debug-print-function debug-print-section helpers_die inherit EXPORT_FUNCTIONS nonfatal register_success_hook remove_path_entry save_ebuild_env filter_readonly_variables preprocess_ebuild_env set_unless_changed unset_unless_changed source_all_bashrcs ebuild_main ebuild_phase ebuild_phase_with_hooks _ebuild_arg_to_phase _ebuild_phase_funcs default _hasg _hasgq _unpack_tar ${QA_INTERCEPTORS}; | |
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_EXCLUDE_SUFFIXES 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 ) | |
} | |
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'; | |
fi; | |
NORMAL='[0m' | |
} | |
set_unless_changed () | |
{ | |
if [[ $# -lt 1 ]]; then | |
die "${FUNCNAME}() requires at least 1 argument: VARIABLE=VALUE"; | |
fi; | |
local argument value variable; | |
for argument in "$@"; | |
do | |
if [[ ${argument} != *=* ]]; then | |
die "${FUNCNAME}(): Argument '${argument}' has incorrect syntax"; | |
fi; | |
variable="${argument%%=*}"; | |
value="${argument#*=}"; | |
if eval "[[ \${${variable}} == \$(env -u ${variable} portageq envvar ${variable}) ]]"; then | |
eval "${variable}=\"\${value}\""; | |
fi; | |
done | |
} | |
setup-allowed-flags () | |
{ | |
ALLOWED_FLAGS="-pipe"; | |
ALLOWED_FLAGS+=" -O -O1 -O2 -Os -mcpu -march -mtune"; | |
ALLOWED_FLAGS+=" -fstack-protector -fstack-protector-all"; | |
ALLOWED_FLAGS+=" -fbounds-checking -fno-strict-overflow"; | |
ALLOWED_FLAGS+=" -fno-PIE -fno-pie -fno-unit-at-a-time"; | |
ALLOWED_FLAGS+=" -g -g[0-9] -ggdb -ggdb[0-9] -gstabs -gstabs+"; | |
ALLOWED_FLAGS+=" -fno-ident -fpermissive"; | |
ALLOWED_FLAGS+=" -W* -w"; | |
ALLOWED_FLAGS+=" -fno-stack-protector -fno-stack-protector-all -fno-strict-aliasing -fno-bounds-checking -fstrict-overflow -fno-omit-frame-pointer"; | |
ALLOWED_FLAGS+=" -mregparm -mno-app-regs -mapp-regs -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-ssse3 -mno-sse4 -mno-sse4.1 -mno-sse4.2 -mno-avx -mno-aes -mno-pclmul -mno-sse4a -mno-3dnow -mno-popcnt -mno-abm -mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 -mplt -msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu -mieee -mieee-with-inexact -mschedule -mfloat-gprs -mspe -mno-spe -mtls-direct-seg-refs -mno-tls-direct-seg-refs -mflat -mno-flat -mno-faster-structs -mfaster-structs -m32 -m64 -mx32 -mabi -mlittle-endian -mbig-endian -EL -EB -fPIC -mlive-g0 -mcmodel -mstack-bias -mno-stack-bias -msecure-plt -m*-toc -D* -U*"; | |
ALLOWED_FLAGS+=" -mno-fma4 -mno-movbe -mno-xop -mno-lwp"; | |
ALLOWED_FLAGS+=" -mno-fsgsbase -mno-rdrnd -mno-f16c -mno-bmi -mno-tbm"; | |
export ALLOWED_FLAGS; | |
return 0 | |
} | |
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; | |
for x in "${PORTAGE_BASHRC}" "${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; | |
[ ! -z "${OCC}" ] && export CC="${OCC}"; | |
[ ! -z "${OCXX}" ] && export CXX="${OCXX}" | |
} | |
src_compile () | |
{ | |
cmake-utils_src_compile "$@" | |
} | |
src_configure () | |
{ | |
local langs x; | |
for x in ${LANGS}; | |
do | |
use linguas_${x} && langs+=" ${x}"; | |
done; | |
local mycmakeargs=(-DLIB_INSTALL_DIR="$(get_libdir)" -Dlinguas="${langs}" -DLOCAL_MINIUPNP=OFF "$(use cli && cmake-utils_use json USE_CLI_JSONRPC)" "$(use cli && cmake-utils_use xmlrpc USE_CLI_XMLRPC)" "$(cmake-utils_use daemon NO_UI_DAEMON)" "$(use daemon && cmake-utils_use json JSONRPC_DAEMON)" "$(use daemon && cmake-utils_use xmlrpc XMLRPC_DAEMON)" "$(cmake-utils_use dbus DBUS_NOTIFY)" "$(cmake-utils_use dht WITH_DHT)" "$(cmake-utils_use emoticons WITH_EMOTICONS)" "$(cmake-utils_use examples WITH_EXAMPLES)" "$(cmake-utils_use gnome USE_LIBGNOME2)" "$(cmake-utils_use gtk USE_GTK)" "$(cmake-utils_use gtk3 USE_GTK3)" "$(cmake-utils_use idn USE_IDNA)" "$(cmake-utils_use javascript USE_JS)" "$(cmake-utils_use libcanberra LIBCANBERRA)" "$(cmake-utils_use libnotify USE_LIBNOTIFY)" "$(cmake-utils_use lua LUA_SCRIPT)" "$(cmake-utils_use lua WITH_LUASCRIPTS)" "$(cmake-utils_use !minimal WITH_DEV_FILES)" "$(cmake-utils_use pcre PERL_REGEX)" "$(cmake-utils_use qt4 USE_QT)" "$(cmake-utils_use sound WITH_SOUNDS)" "$(cmake-utils_use spell USE_ASPELL)" "$(cmake-utils_use sqlite USE_QT_SQLITE)" "$(cmake-utils_use upnp USE_MINIUPNP)"); | |
cmake-utils_src_configure | |
} | |
src_install () | |
{ | |
cmake-utils_src_install "$@" | |
} | |
src_prepare () | |
{ | |
base_src_prepare "$@" | |
} | |
src_test () | |
{ | |
cmake-utils_src_test "$@" | |
} | |
src_unpack () | |
{ | |
base_src_unpack "$@" | |
} | |
strip-flags () | |
{ | |
local x y var; | |
setup-allowed-flags; | |
set -f; | |
for var in $(all-flag-vars); | |
do | |
local new=(); | |
for x in ${!var}; | |
do | |
local flag=${x%%=*}; | |
for y in ${ALLOWED_FLAGS}; | |
do | |
if [[ -z ${flag%%${y}} ]]; then | |
new+=("${x}"); | |
break; | |
fi; | |
done; | |
done; | |
if _is_flagq ${var} "-O*" && ! _is_flagq new "-O*"; then | |
new+=(-O2); | |
fi; | |
eval export ${var}=\""${new[*]}"\"; | |
done; | |
set +f; | |
return 0 | |
} | |
strip-linguas () | |
{ | |
local ls newls nols; | |
if [[ $1 == "-i" ]] || [[ $1 == "-u" ]]; then | |
local op=$1; | |
shift; | |
ls=$(find "$1" -name '*.po' -exec basename {} .po ';'); | |
shift; | |
local d f; | |
for d in "$@"; | |
do | |
if [[ ${op} == "-u" ]]; then | |
newls=${ls}; | |
else | |
newls=""; | |
fi; | |
for f in $(find "$d" -name '*.po' -exec basename {} .po ';'); | |
do | |
if [[ ${op} == "-i" ]]; then | |
has ${f} ${ls} && newls="${newls} ${f}"; | |
else | |
has ${f} ${ls} || newls="${newls} ${f}"; | |
fi; | |
done; | |
ls=${newls}; | |
done; | |
else | |
ls="$@"; | |
fi; | |
nols=""; | |
newls=""; | |
for f in ${LINGUAS}; | |
do | |
if has ${f} ${ls}; then | |
newls="${newls} ${f}"; | |
else | |
nols="${nols} ${f}"; | |
fi; | |
done; | |
[[ -n ${nols} ]] && einfo "Sorry, but ${PN} does not support the LINGUAS:" ${nols}; | |
export LINGUAS=${newls:1} | |
} | |
strip-unsupported-flags () | |
{ | |
export CFLAGS=$(test-flags-CC ${CFLAGS}); | |
export CXXFLAGS=$(test-flags-CXX ${CXXFLAGS}); | |
export FFLAGS=$(test-flags-F77 ${FFLAGS}); | |
export FCFLAGS=$(test-flags-FC ${FCFLAGS}) | |
} | |
strip_duplicate_slashes () | |
{ | |
if [[ -n $1 ]]; then | |
local removed=$1; | |
while [[ ${removed} == *//* ]]; do | |
removed=${removed//\/\///}; | |
done; | |
echo ${removed}; | |
fi | |
} | |
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 | |
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 () | |
{ | |
CFLAGS=${BUILD_CFLAGS:--O1 -pipe} CXXFLAGS=${BUILD_CXXFLAGS:--O1 -pipe} 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-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-hardfloat () | |
{ | |
[[ ${CTARGET//_/-} == *-hardfloat-* ]] && echo "yes" || echo "no" | |
} | |
tc-is-softfloat () | |
{ | |
local CTARGET=${CTARGET:-${CHOST}}; | |
case ${CTARGET} in | |
bfin* | h8300*) | |
echo "only" | |
;; | |
*) | |
[[ ${CTARGET//_/-} == *-softfloat-* ]] && echo "yes" || echo "no" | |
;; | |
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}}; | |
case ${host} in | |
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 | |
} | |
test-flag-CC () | |
{ | |
test-flag-PROG "CC" "$1" | |
} | |
test-flag-CXX () | |
{ | |
test-flag-PROG "CXX" "$1" | |
} | |
test-flag-F77 () | |
{ | |
test-flag-PROG "F77" "$1" | |
} | |
test-flag-FC () | |
{ | |
test-flag-PROG "FC" "$1" | |
} | |
test-flag-PROG () | |
{ | |
local comp=$1; | |
local flag=$2; | |
[[ -z ${comp} || -z ${flag} ]] && return 1; | |
local PROG=$(tc-get${comp}); | |
${PROG} "${flag}" -c -o /dev/null -xc /dev/null > /dev/null 2>&1 | |
} | |
test-flags () | |
{ | |
test-flags-CC "$@" | |
} | |
test-flags-CC () | |
{ | |
test-flags-PROG "CC" "$@" | |
} | |
test-flags-CXX () | |
{ | |
test-flags-PROG "CXX" "$@" | |
} | |
test-flags-F77 () | |
{ | |
test-flags-PROG "F77" "$@" | |
} | |
test-flags-FC () | |
{ | |
test-flags-PROG "FC" "$@" | |
} | |
test-flags-PROG () | |
{ | |
local comp=$1; | |
local flags; | |
local x; | |
shift; | |
[[ -z ${comp} ]] && return 1; | |
for x in "$@"; | |
do | |
test-flag-${comp} "${x}" && flags="${flags}${flags:+ }${x}"; | |
done; | |
echo "${flags}"; | |
[[ -n ${flags} ]] | |
} | |
test_version_info () | |
{ | |
if [[ $($(tc-getCC) --version 2>&1) == *$1* ]]; then | |
return 0; | |
else | |
return 1; | |
fi | |
} | |
unpack () | |
{ | |
local srcdir; | |
local x; | |
local y; | |
local myfail; | |
local eapi=${EAPI:-0}; | |
[ -z "$*" ] && die "Nothing passed to the 'unpack' command"; | |
for x in "$@"; | |
do | |
vecho ">>> Unpacking ${x} to ${PWD}"; | |
y=${x%.*}; | |
y=${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 "${x##*.}" 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 | zip | jar) | |
( set +x; | |
while true; do | |
echo n || break; | |
done ) | unzip -qo "${srcdir}${x}" || die "$myfail" | |
;; | |
gz | Z | z) | |
_unpack_tar "gzip -d" | |
;; | |
bz2 | bz) | |
_unpack_tar "${PORTAGE_BUNZIP2_COMMAND:-${PORTAGE_BZIP2_COMMAND} -d}" | |
;; | |
7Z | 7z) | |
local my_output; | |
my_output="$(7z x -y "${srcdir}${x}")"; | |
if [ $? -ne 0 ]; then | |
echo "${my_output}" 1>&2; | |
die "$myfail"; | |
fi | |
;; | |
RAR | rar) | |
unrar x -idq -o+ "${srcdir}${x}" || die "$myfail" | |
;; | |
LHa | LHA | 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 has $eapi 0 1 2; then | |
vecho "unpack ${x}: file format not recognized. Ignoring."; | |
else | |
_unpack_tar "xz -d"; | |
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 | |
} | |
unset_colors () | |
{ | |
COLS=80; | |
ENDCOL=; | |
GOOD=; | |
WARN=; | |
BAD=; | |
NORMAL=; | |
HILITE=; | |
BRACKET= | |
} | |
unset_unless_changed () | |
{ | |
if [[ $# -lt 1 ]]; then | |
die "${FUNCNAME}() requires at least 1 argument: VARIABLE"; | |
fi; | |
local variable; | |
for variable in "$@"; | |
do | |
if eval "[[ \${${variable}} == \$(env -u ${variable} portageq envvar ${variable}) ]]"; then | |
unset ${variable}; | |
fi; | |
done | |
} | |
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; | |
if has ${u} ${USE}; then | |
return ${found}; | |
else | |
return $((!found)); | |
fi | |
} | |
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 ! has "${EAPI:-0}" 0 1 2 3; 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_if_iuse () | |
{ | |
in_iuse $1 || return 1; | |
use $1 | |
} | |
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 ! has "${EAPI:-0}" 0 1 2 3; 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 () | |
{ | |
use "$1" && echo "${2-yes}$4" || echo "${3-no}$5" | |
} | |
validate_desktop_entries () | |
{ | |
if [[ -x /usr/bin/desktop-file-validate ]]; then | |
einfo "Checking desktop entry validity"; | |
local directories=""; | |
for d in /usr/share/applications $@; | |
do | |
[[ -d ${D}${d} ]] && directories="${directories} ${D}${d}"; | |
done; | |
if [[ -n ${directories} ]]; then | |
for FILE in $(find ${directories} -name "*\.desktop" -not -path '*.hidden*' | sort -u 2>/dev/null); | |
do | |
local temp=$(desktop-file-validate ${FILE} | grep -v "warning:" | sed -e "s|error: ||" -e "s|${FILE}:|--|g" ); | |
[[ -n $temp ]] && elog ${temp/--/${FILE/${D}/}:}; | |
done; | |
fi; | |
echo ""; | |
else | |
einfo "Passing desktop entry validity check. Install dev-util/desktop-file-utils, if you want to help to improve Gentoo."; | |
fi | |
} | |
vecho () | |
{ | |
quiet_mode || echo "$@" | |
} | |
declare -x A="eiskaltdcpp-2.2.6.tar.xz" | |
declare -x ABI="amd64" | |
declare -x ACCEPT_LICENSE="GPL-2 GPL-3" | |
declare -x ALSA_CARDS="" | |
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="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="/var/tmp/portage" | |
declare -x CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump" | |
declare -x CAMERAS="adc65 agfa_cl20 aox ax203 barbie canon casio_qv clicksmart310 digigr8 digita dimagev dimera3500 directory enigma13 fuji gsmart300 hp215 iclick jamcam jd11 jl2005a kodak_dc120 kodak_dc210 kodak_dc240 kodak_dc3200 kodak_ez200 konica konica_qm150 largan lg_gsm mars mustek panasonic_coolshot panasonic_dc1000 panasonic_dc1580 panasonic_l859 pccam300 pccam600 polaroid_pdc320 polaroid_pdc640 polaroid_pdc700 ptp2 ricoh ricoh_g3 samsung sierra sipix_blink sipix_blink2 sipix_web2 smal sonix sony_dscf1 sony_dscf55 soundvision spca50x sq905 st2205 stv0674 stv0680 sx330z template topfield toshiba_pdrm11" | |
declare -x CATEGORY="net-p2p" | |
declare -x CBUILD="x86_64-pc-linux-gnu" | |
declare -x CCACHE_DISABLE="1" | |
declare -x CFLAGS="-O2 -march=core2 -mtune=core2 -pipe -fomit-frame-pointer -mmmx -msse -msse2 -mssse3 -mcx16 -msahf -mavx -mpclmul -mpopcnt" | |
declare -x CFLAGS_amd64="-m64" | |
declare -x CFLAGS_default | |
declare -x CFLAGS_x32="-mx32" | |
declare -x CFLAGS_x86="-m32" | |
declare -x CG_COMPILER_EXE="/usr/bin/cgc" | |
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-gnu" | |
declare -x CHOST_x86="i686-pc-linux-gnu" | |
declare -x COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" | |
declare -x COLUMNS="168" | |
declare -x CROSSCOMPILE_OPTS="" | |
declare -x CTARGET_default="x86_64-pc-linux-gnu" | |
declare -x CXXFLAGS="-O2 -march=core2 -mtune=core2 -pipe -fomit-frame-pointer -mmmx -msse -msse2 -mssse3 -mcx16 -msahf -mavx -mpclmul -mpopcnt" | |
declare -rx D="/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6/image/" | |
declare -x DEFAULT_ABI="amd64" | |
declare -rx DEFINED_PHASES=" compile configure install prepare pretend test unpack" | |
declare -x DESTTREE="/usr" | |
declare -x DIROPTIONS="-m0755" | |
declare -x DISPLAY=":0" | |
declare -x DISTDIR="/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6/distdir" | |
declare -x DRACUT_MODULES="plymouth" | |
declare -rx EAPI="4" | |
declare -rx EBUILD="/usr/portage/net-p2p/eiskaltdcpp/eiskaltdcpp-2.2.6.ebuild" | |
declare -x EBUILD_MASTER_PID="11815" | |
declare -rx EBUILD_PHASE="pretend" | |
declare -rx ECLASSDIR="/usr/portage/eclass" | |
declare -ix ECLASS_DEPTH="0" | |
declare -rx ED="/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6/image/" | |
declare -x ELIBC="glibc" | |
declare -rx EMERGE_FROM="ebuild" | |
declare -rx EPREFIX="" | |
declare -rx EROOT="/" | |
declare -x EXEOPTIONS="-m0755" | |
declare -x FCFLAGS="" | |
declare -x FEATURES="assume-digests binpkg-logs distlocks ebuild-locks fixlafiles news parallel-fetch protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch" | |
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="" | |
declare -rx FILESDIR="/usr/portage/net-p2p/eiskaltdcpp/files" | |
declare -x GCC_SPECS="" | |
declare -x GDK_USE_XFT="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="gconf" | |
declare -x GUILE_LOAD_PATH="/usr/share/guile/1.8" | |
declare -x HG="/usr/bin/hg" | |
declare -x HOME="/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6/homedir" | |
declare -rx INHERITED=" toolchain-funcs multilib user eutils flag-o-matic base cmake-utils" | |
declare -x INPUT_DEVICES="evdev" | |
declare -x INSDESTTREE="" | |
declare -x INSOPTIONS="-m0644" | |
declare -x JAVACC_HOME="/usr/share/javacc/" | |
declare -x KERNEL="linux" | |
declare -x KERNEL_ABI="amd64" | |
declare -rx KEYWORDS="~amd64 ~x86" | |
declare -x LADSPA_PATH="/usr/lib64/ladspa" | |
declare -x LANG="ru_RU.UTF-8" | |
declare -x LANGUAGE="" | |
declare -x LCD_DEVICES="" | |
declare -x LC_ALL="" | |
declare -x LDFLAGS="-Wl,-O1,--hash-style=gnu,--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 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 LIBOPTIONS="-m0644" | |
declare -x LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" | |
declare -rx LICENSE="GPL-2 GPL-3" | |
declare -x LINGUAS="ru en" | |
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 -rx MERGE_TYPE="source" | |
declare -x MINICOM="-c on" | |
declare -x MOPREFIX="eiskaltdcpp" | |
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="/usr/portage/net-p2p/eiskaltdcpp" | |
declare -x OPENCL_PROFILE="nvidia" | |
declare -x OPENGL_PROFILE="xorg-x11" | |
declare -x P="eiskaltdcpp-2.2.6" | |
declare -x PATH="/usr/lib64/portage/bin/ebuild-helpers/4:/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/arm-elf/gcc-bin/4.6.3:/usr/x86_64-pc-linux-gnu/gcc-bin/4.4.5:/usr/x86_64-pc-linux-gnu/gcc-bin/4.5.3:/opt/eagle-5.11.0/bin" | |
declare -x PF="eiskaltdcpp-2.2.6" | |
declare -x PHP_TARGETS="" | |
declare -x PKGDIR="/usr/portage/packages" | |
declare -x PKGUSE="dbus emoticons gtk kde libnotify qt4 spell examples javascript lua sounds upnp xmlrpc" | |
declare -x PKG_LOGDIR="/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6/temp/logging" | |
declare -x PKG_TMPDIR="/var/tmp/portage/._unmerge_" | |
declare -rx PM_EBUILD_HOOK_DIR="/etc/portage/env" | |
declare -x PN="eiskaltdcpp" | |
declare -rx PORTAGE_ACTUAL_DISTDIR="/usr/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="/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6" | |
declare -rx PORTAGE_BZIP2_COMMAND="bzip2" | |
declare -rx PORTAGE_COLORMAP="GOOD=\$'[32;01m' | |
WARN=\$'[33;01m' | |
BAD=\$'[31;01m' | |
HILITE=\$'[36m' | |
BRACKET=\$'[34;01m'" | |
declare -x PORTAGE_COMPRESS_EXCLUDE_SUFFIXES="css gif htm[l]? jp[e]?g js pdf png" | |
declare -rx PORTAGE_CONFIGROOT="/" | |
declare -rx PORTAGE_DEPCACHEDIR="/var/cache/edb/dep" | |
declare -x PORTAGE_FEATURES="assume-digests binpkg-logs distlocks ebuild-locks fixlafiles news parallel-fetch protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch" | |
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="^(3dfx|adabas|alpha|alsa\\_cards\\_aoa|alsa\\_cards\\_aoa\\-fabric\\-layout|alsa\\_cards\\_aoa\\-onyx|alsa\\_cards\\_aoa\\-soundbus|alsa\\_cards\\_aoa\\-soundbus\\-i2s|alsa\\_cards\\_aoa\\-tas|alsa\\_cards\\_aoa\\-toonie|alsa\\_cards\\_armaaci|alsa\\_cards\\_at91\\-soc|alsa\\_cards\\_at91\\-soc\\-eti\\-b1\\-wm8731|alsa\\_cards\\_au1x00|alsa\\_cards\\_cs5535audio|alsa\\_cards\\_harmony|alsa\\_cards\\_powermac|alsa\\_cards\\_pxa2xx\\-i2sound|alsa\\_cards\\_pxa2xx\\-soc|alsa\\_cards\\_pxa2xx\\-soc\\-corgi|alsa\\_cards\\_pxa2xx\\-soc\\-poodle|alsa\\_cards\\_pxa2xx\\-soc\\-spitz|alsa\\_cards\\_pxa2xx\\-soc\\-tosa|alsa\\_cards\\_sa11xx\\-uda1341ts|alsa\\_cards\\_sun\\-amd7930|alsa\\_cards\\_sun\\-cs4231|alsa\\_cards\\_sun\\-dbri|altivec|amd64|amd64\\-fbsd|amd64\\-linux|aqua|arm|arm\\-linux|ayatana|birdstep|bootstrap|build|capslib|cli|cmucl|consolekit|coreaudio|crosscompile\\_opts\\_.*|daemon|dbmaker|dbus|dht|drac|elibc\\_AIX|elibc\\_Darwin|elibc\\_DragonFly|elibc\\_FreeBSD|elibc\\_HPUX|elibc\\_Interix|elibc\\_NetBSD|elibc\\_OpenBSD|elibc\\_SunOS|elibc\\_.*|elibc\\_glibc|elibc\\_mintlib|elibc\\_uclibc|emoticons|empress|empress\\-bcs|esoob|examples|fdftk|filepro|firebird|fixed\\-point|frontbase|gamess|gcc64|gluon|gnome|gtk|gtk3|gulm|hppa|hppa\\-hpux|ia64|ia64\\-hpux|ia64\\-linux|ibm|idn|informix|ingres|iwmmxt|javascript|json|kdeprefix|kernel\\_AIX|kernel\\_Darwin|kernel\\_FreeBSD|kernel\\_HPUX|kernel\\_Interix|kernel\\_NetBSD|kernel\\_OpenBSD|kernel\\_SunOS|kernel\\_.*|kernel\\_freemint|kernel\\_linux|kqueue|lcd\\_devices\\_svga|libcanberra|libnotify|linguas\\_be|linguas\\_bg|linguas\\_cs|linguas\\_de|linguas\\_el|linguas\\_en|linguas\\_es|linguas\\_fr|linguas\\_hu|linguas\\_it|linguas\\_pl|linguas\\_ru|linguas\\_sk|linguas\\_sr\\@latin|linguas\\_uk|lua|m68k|m68k\\-mint|macbook|minimal|mips|multilib|n32|n64|neon|osp|packagekit|pam\\_console|pbbuttonsd|pcre|pfpro|php\\_targets\\_php5\\-2|policykit|ppc|ppc64|ppc64\\-linux|ppc\\-aix|ppc\\-macos|ppc\\-openbsd|ppcsha1|prefix|ps3|psyco|pvm|qt4|real|s390|selinux|sh|solid|sound|sparc|sparc64\\-freebsd|sparc64\\-solaris|sparc\\-fbsd|sparc\\-solaris|spell|sqlite|svga|sybase|sybase\\-ct|tcb|tcc|test|uclibc|ultra1|upnp|userland\\_BSD|userland\\_GNU|userland\\_.*|video\\_cards\\_geode|video\\_cards\\_i740|video\\_cards\\_impact|video\\_cards\\_newport|video\\_cards\\_nsc|video\\_cards\\_omap|video\\_cards\\_omapfb|video\\_cards\\_sunbw2|video\\_cards\\_suncg14|video\\_cards\\_suncg3|video\\_cards\\_suncg6|video\\_cards\\_sunffb|video\\_cards\\_sunleo|video\\_cards\\_suntcx|video\\_cards\\_voodoo|video\\_cards\\_xgi|vidix|vis|win32codecs|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|xmlrpc|yellownet)\$" | |
declare -rx PORTAGE_LOG_FILE="/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6/temp/build.log" | |
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="/var/tmp" | |
declare -rx PORTAGE_VERBOSE="1" | |
declare -rx PORTAGE_WORKDIR_MODE="0700" | |
declare -rx PORTDIR="/usr/portage" | |
declare -rx PORTDIR_OVERLAY="" | |
declare -x PR="r0" | |
declare -x PRELINK_PATH_MASK="/usr/lib64/klibc:/opt/eagle-5.11.0:/usr/lib64/libfreebl3.so:/usr/lib64/libnssdbm3.so:/usr/lib64/libsoftokn3.so" | |
declare -x PROFILE_ONLY_VARIABLES="ARCH ELIBC KERNEL USERLAND" | |
declare -rx PROFILE_PATHS="/usr/portage/profiles/base | |
/usr/portage/profiles/default/linux | |
/usr/portage/profiles/arch/base | |
/usr/portage/profiles/features/multilib | |
/usr/portage/profiles/features/multilib/lib32 | |
/usr/portage/profiles/arch/amd64 | |
/usr/portage/profiles/default/linux/amd64 | |
/usr/portage/profiles/releases | |
/usr/portage/profiles/releases/10.0 | |
/usr/portage/profiles/default/linux/amd64/10.0 | |
/usr/portage/profiles/targets/desktop | |
/usr/portage/profiles/default/linux/amd64/10.0/desktop | |
/usr/portage/profiles/targets/desktop | |
/usr/portage/profiles/targets/desktop/kde | |
/usr/portage/profiles/default/linux/amd64/10.0/desktop/kde | |
/etc/portage/profile" | |
declare -x PROPERTIES="" | |
declare -rx PROVIDE="" | |
declare -x PV="2.2.6" | |
declare -x PVR="2.2.6" | |
declare -x PWD="/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6" | |
declare -x PYTHONDOCS="/usr/share/doc/python-docs-2.7.1/html/library" | |
declare -x PYTHONDOCS_2_5="/usr/share/doc/python-docs-2.5.4-r1/html" | |
declare -x PYTHONDOCS_2_6="/usr/share/doc/python-docs-2.6.6/html/library" | |
declare -x PYTHONDOCS_2_7="/usr/share/doc/python-docs-2.7.2/html/library" | |
declare -x PYTHONDOCS_3_1="/usr/share/doc/python-docs-3.1.3/html/library" | |
declare -x PYTHONDOCS_3_2="/usr/share/doc/python-docs-3.2.2/html/library" | |
declare -x PYTHONDONTWRITEBYTECODE="1" | |
declare -x PYTHON_TARGETS="python3_2" | |
declare -x QT_GRAPHICSSYSTEM="raster" | |
declare -x QT_PLUGIN_PATH="/usr/lib64/kde4/plugins" | |
declare -rx REPLACING_VERSIONS="2.2.4" | |
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/arm-elf/gcc-bin/4.6.3:/usr/x86_64-pc-linux-gnu/gcc-bin/4.4.5:/usr/x86_64-pc-linux-gnu/gcc-bin/4.5.3:/opt/eagle-5.11.0/bin" | |
declare -x RPMDIR="/usr/portage/rpm" | |
declare -x RUBY_TARGETS="ruby18 ruby19" | |
declare -x R_HOME="/usr/lib/R" | |
declare -x S="/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6/work/eiskaltdcpp-2.2.6" | |
declare -x SANDBOX_LOG="net-p2p_-_eiskaltdcpp-2.2.6" | |
declare -x SANDBOX_ON="0" | |
declare -x SANDBOX_READ="/:/var/tmp" | |
declare -x SANDBOX_WRITE="/var/tmp" | |
declare -x SANE_CONFIG_DIR="/etc/sane.d" | |
declare -x SCVIM_DIR="/usr/share/vim/scvim" | |
declare -x SGML_CATALOG_FILES="/etc/sgml/xml-simple-docbook-1.0.cat:/etc/sgml/openjade-1.3.2.cat:/etc/sgml/sgml-ent.cat:/etc/sgml/sgml-docbook-3.1.cat:/etc/sgml/sgml-docbook.cat:/etc/sgml/sgml-docbook-3.0.cat:/etc/sgml/xml-docbook-4.5.cat:/etc/sgml/sgml-lite.cat:/etc/sgml/xml-docbook-4.2.cat:/etc/sgml/dsssl-docbook-stylesheets.cat:/etc/sgml/sgml-docbook-4.2.cat:/etc/sgml/xml-docbook-4.3.cat:/etc/sgml/sgml-docbook-4.1.cat:/etc/sgml/sgml-docbook-4.0.cat:/etc/sgml/xml-simple-docbook-4.1.2.4.cat:/etc/sgml/xml-docbook-4.1.2.cat:/etc/sgml/sgml-docbook-4.4.cat:/etc/sgml/xml-docbook-4.4.cat" | |
declare -x SHELL="/bin/bash" | |
declare -x SHLVL="3" | |
declare -rx SLOT="0" | |
declare -x SSH_ASKPASS="/usr/bin/ssh-askpass-fullscreen" | |
declare -x SUDO_COMMAND="/bin/bash" | |
declare -x SUDO_GID="1000" | |
declare -x SUDO_UID="1000" | |
declare -x SUDO_USER="zerom" | |
declare -x SYMLINK_LIB="yes" | |
declare -rx T="/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6/temp" | |
declare -x TEMP="/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6/temp" | |
declare -x TERM="xterm" | |
declare -x TMP="/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6/temp" | |
declare -x TMPDIR="/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6/temp" | |
declare -x USB_DEVFS_PATH="/dev/bus/usb" | |
declare -x USE="amd64 cli consolekit dbus dht elibc_glibc emoticons examples gtk javascript kernel_linux libnotify linguas_en linguas_ru lua minimal multilib pcre policykit qt4 spell upnp userland_GNU xmlrpc" | |
declare -x USERLAND="GNU" | |
declare -x USERNAME="root" | |
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 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_TARGETS QEMU_SOFTMMU_TARGETS QEMU_USER_TARGETS RUBY_TARGETS SANE_BACKENDS USERLAND VIDEO_CARDS XFCE_PLUGINS XTABLES_ADDONS" | |
declare -x VBOX_APP_HOME="/opt/VirtualBox" | |
declare -x VIDEO_CARDS="" | |
declare -rx WORKDIR="/var/tmp/portage/net-p2p/eiskaltdcpp-2.2.6/work" | |
declare -x XARGS="xargs -r" | |
declare -x XDG_CONFIG_DIRS="/etc/xdg" | |
declare -x XDG_DATA_DIRS="/usr/local/share:/usr/share" | |
declare -x XDG_SESSION_COOKIE="c8a48c54cc04643cc96e93600000006a-1338030056.621950-1236308238" | |
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_="" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment