Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- declare -x ABI="amd64"
- declare -x ABI_X86="64"
- declare -x ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci"
- declare -x APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias"
- declare -x AR="x86_64-pc-linux-gnu-ar"
- declare -x ARCH="amd64"
- declare -- BASE_EXPF="src_unpack src_compile src_install src_prepare src_configure"
- declare -x BLENDERDIR="/usr/local/blender1.70_Linux_i386_libc6-dyn/"
- declare -x BOOTSTRAP_USE="cxx unicode internal-glib python_targets_python3_4 python_targets_python2_7 multilib"
- declare -x CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author"
- declare -x CAMERAS="ptp2"
- declare -x CBUILD="x86_64-pc-linux-gnu"
- declare -x CC="x86_64-pc-linux-gnu-gcc"
- declare -x CFLAGS="-march=native -O2"
- declare -x CFLAGS_amd64="-m64"
- declare -x CFLAGS_default
- declare -x CFLAGS_x32="-mx32"
- declare -x CFLAGS_x86="-m32"
- declare -x CHOST="x86_64-pc-linux-gnu"
- declare -x CHOST_amd64="x86_64-pc-linux-gnu"
- declare -x CHOST_default="x86_64-pc-linux-gnu"
- declare -x CHOST_x32="x86_64-pc-linux-gnux32"
- declare -x CHOST_x86="i686-pc-linux-gnu"
- declare -x COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog"
- declare -x COLORFGBG="15;0"
- declare -x CPU_FLAGS_X86="mmx sse sse2 mmxext"
- declare -x CTARGET_default="x86_64-pc-linux-gnu"
- declare -x CVSROOT=":pserver:cvs@tor:/cvs"
- declare -x CXX="x86_64-pc-linux-gnu-g++"
- declare -x CXXFLAGS="-march=native -O2"
- declare -x DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-7CTG8bvbyW,guid=459d72670c1690d0de64cbc6586ebcf1"
- declare -x DEFAULT_ABI="amd64"
- declare -x DEFINED_PHASES=" compile configure install postinst postrm preinst prepare setup unpack"
- declare DEPEND="!app-emulation/virtualbox-bin
- ~app-emulation/virtualbox-modules-4.3.38
- dev-libs/libIDL
- >=dev-libs/libxslt-1.1.19
- net-misc/curl
- !libressl? ( dev-libs/openssl:0= )
- libressl? ( dev-libs/libressl:= )
- dev-libs/libxml2
- media-libs/libpng:0=
- media-libs/libvpx:0=
- sys-libs/zlib
- !headless? (
- qt4? (
- dev-qt/qtgui:4
- dev-qt/qtcore:4
- opengl? ( dev-qt/qtopengl:4 )
- x11-libs/libXinerama
- )
- opengl? ( virtual/opengl media-libs/freeglut )
- x11-libs/libX11
- x11-libs/libXcursor
- x11-libs/libXext
- x11-libs/libXmu
- x11-libs/libXt
- media-libs/libsdl:0[X,video]
- )
- java? ( >=virtual/jre-1.6:= )
- udev? ( >=virtual/udev-171 )
- vnc? ( >=net-libs/libvncserver-0.9.9 )
- >=dev-util/kbuild-0.1.9998_pre20131130
- >=dev-lang/yasm-0.6.2
- sys-devel/bin86
- sys-power/iasl
- pam? ( sys-libs/pam )
- sys-libs/libcap
- doc? (
- dev-texlive/texlive-basic
- dev-texlive/texlive-latex
- dev-texlive/texlive-latexrecommended
- dev-texlive/texlive-latexextra
- dev-texlive/texlive-fontsrecommended
- dev-texlive/texlive-fontsextra
- )
- java? ( >=virtual/jre-1.6:= )
- virtual/pkgconfig
- alsa? ( >=media-libs/alsa-lib-1.0.13 )
- !headless? ( x11-libs/libXinerama )
- pulseaudio? ( media-sound/pulseaudio )
- vboxwebsrv? ( net-libs/gsoap[-gnutls(-)] )
- >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,-python_single_target_jython2_7(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),python_single_target_python2_7(+)] java? ( >=dev-java/java-config-2.2.0-r3 ) virtual/pkgconfig"
- declare DESCRIPTION="Family of powerful x86 virtualization products for enterprise and home use"
- declare -x DESKTOP_SESSION="/usr/share/xsessions/plasma"
- declare -x DESTTREE="/usr"
- declare -x DIROPTIONS="-m0755"
- declare -x EAPI="5"
- declare -- EBUILD_DEATH_HOOKS=" java-pkg_die"
- declare -x ELIBC="glibc"
- declare -- EPATCH_COMMON_OPTS="-g0 -E --no-backup-if-mismatch"
- declare -- EPATCH_EXCLUDE="050_virtualbox-4.3.14-nopie.patch"
- declare -- EPATCH_FORCE="no"
- declare -- EPATCH_MULTI_MSG="Applying various patches (bugfixes/updates) ..."
- declare -- EPATCH_N_APPLIED_PATCHES="8"
- declare -- EPATCH_OPTS=""
- declare -- EPATCH_SINGLE_MSG=""
- declare -- EPATCH_SOURCE="/var/tmp/portage/app-emulation/virtualbox-4.3.38/work/patch"
- declare -- EPATCH_SUFFIX="patch.bz2"
- declare -- EPATCH_USER_SOURCE="/etc/portage/patches"
- declare -x EPYTHON="python2.7"
- declare -x EXEOPTIONS="-m0755"
- declare -x FCFLAGS="-O2 -pipe"
- declare -x FETCHCOMMAND_SSH="bash -c \"x=\\\${2#ssh://} ; host=\\\${x%%/*} ; port=\\\${host##*:} ; host=\\\${host%:*} ; [[ \\\${host} = \\\${port} ]] && port= ; exec rsync --rsh=\\\"ssh \\\${port:+-p\\\${port}} \\\${3}\\\" -avP \\\"\\\${host}:/\\\${x#*/}\\\" \\\"\\\$1\\\"\" rsync \"\${DISTDIR}/\${FILE}\" \"\${URI}\" \"\${PORTAGE_SSH_OPTS}\""
- declare -x FFLAGS="-O2 -pipe"
- declare -x GCC_SPECS=""
- declare -x GIA_ARCH="linux"
- declare -x GIT_EDITOR="vim"
- 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 ublox ubx"
- declare -x GRUB_PLATFORMS=""
- declare -x GSETTINGS_BACKEND="dconf"
- declare -x GS_LIB="/home/daf/.fonts"
- declare -x GTK2_RC_FILES="/etc/gtk-2.0/gtkrc:/home/daf/.gtkrc-2.0:/home/daf/.config/gtkrc-2.0"
- declare -x GTK_MODULES="canberra-gtk-module"
- declare -x GTK_RC_FILES="/etc/gtk/gtkrc:/home/daf/.gtkrc:/home/daf/.config/gtkrc"
- declare -x GUILE_LOAD_PATH="/usr/share/guile/1.8"
- declare HDEPEND=""
- declare HOMEPAGE="http://www.virtualbox.org/"
- declare -x HOST_CC="x86_64-pc-linux-gnu-gcc"
- declare -x INHERITED=" multilib toolchain-funcs eutils fdo-mime flag-o-matic versionator java-utils-2 java-pkg-opt-2 linux-info pax-utils python-utils-r1 python-single-r1 base qmake-utils qt4-r2 udev"
- declare -x INPUT_DEVICES="keyboard mouse evdev"
- declare -x INSDESTTREE=""
- declare -x INSOPTIONS="-m0644"
- declare IUSE="+additions alsa doc extensions headless java libressl pam pulseaudio +opengl python +qt4 +sdk +udev vboxwebsrv vnc elibc_FreeBSD java python_targets_python2_7"
- declare -x IUSE_EFFECTIVE="abi_x86_64 additions alpha alsa amd64 amd64-fbsd amd64-linux arm arm-linux arm64 doc elibc_AIX elibc_Cygwin elibc_Darwin elibc_DragonFly elibc_FreeBSD elibc_HPUX elibc_Interix elibc_NetBSD elibc_OpenBSD elibc_SunOS elibc_Winnt elibc_bionic elibc_glibc elibc_mingw elibc_mintlib elibc_musl elibc_uclibc extensions headless hppa hppa-hpux ia64 ia64-hpux ia64-linux java kernel_AIX kernel_Darwin kernel_FreeBSD kernel_HPUX kernel_Interix kernel_NetBSD kernel_OpenBSD kernel_SunOS kernel_Winnt kernel_freemint kernel_linux libressl m68k m68k-mint mips nios2 opengl pam ppc ppc-aix ppc-macos ppc-openbsd ppc64 ppc64-linux prefix prefix-guest pulseaudio python python_targets_python2_7 qt4 riscv s390 sdk sh sparc sparc-fbsd sparc-solaris sparc64-freebsd sparc64-solaris udev userland_BSD userland_GNU vboxwebsrv vnc x64-cygwin x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt"
- declare -x IUSE_IMPLICIT="abi_x86_64 prefix prefix-guest"
- declare -- JAVA_PKG_ALLOW_VM_CHANGE="yes"
- declare -- JAVA_PKG_BUILD_DEPEND_FILE="/var/tmp/portage/app-emulation/virtualbox-4.3.38/temp/java-pkg-build-depend"
- declare -- JAVA_PKG_COMPILERS_CONF="/etc/java-config-2/build/compilers.conf"
- declare -- JAVA_PKG_COMPILER_DIR="/usr/share/java-config-2/compiler"
- declare -- JAVA_PKG_DEPEND_FILE="/var/tmp/portage/app-emulation/virtualbox-4.3.38/temp/java-pkg-depend"
- declare -- JAVA_PKG_EXTRA_ENV="/var/tmp/portage/app-emulation/virtualbox-4.3.38/temp/java-pkg-extra-env"
- declare -- JAVA_PKG_EXTRA_ENV_VARS=""
- declare -- JAVA_PKG_E_DEPEND=">=dev-java/java-config-2.2.0-r3 "
- declare -- JAVA_PKG_OPTIONAL_DEPEND_FILE="/var/tmp/portage/app-emulation/virtualbox-4.3.38/temp/java-pkg-optional-depend"
- declare -- JAVA_PKG_OPT_USE="java"
- declare -- JAVA_PKG_QA_VIOLATIONS="0"
- declare -x KDE_FULL_SESSION="true"
- declare -x KDE_MULTIHEAD="false"
- declare -x KDE_SESSION_UID="1000"
- declare -x KDE_SESSION_VERSION="5"
- declare -x KERNEL="linux"
- declare -x KERNEL_ABI="amd64"
- declare -- KERNEL_DIR="/usr/src/linux"
- declare -x KEYWORDS="amd64 x86"
- declare -x KONSOLE_DBUS_SERVICE=":1.58"
- declare -x KONSOLE_DBUS_SESSION="/Sessions/7"
- declare -x KONSOLE_DBUS_WINDOW="/Windows/6"
- declare -x KONSOLE_PROFILE_NAME="default"
- declare -x LADSPA_PATH="/usr/lib64/ladspa"
- declare -x LANG="en_US.utf8"
- declare -x LANGUAGE=""
- declare -x LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text"
- declare -x LC_ALL="C"
- declare -x LC_MESSAGES="C"
- declare -x LC_TIME="en_ZA.UTF-8"
- declare -x LD="x86_64-pc-linux-gnu-ld"
- declare -x LDFLAGS="-Wl,-O1 -Wl,--as-needed"
- declare -x LDFLAGS_amd64="-m elf_x86_64"
- declare -x LDFLAGS_default
- declare -x LDFLAGS_x32="-m elf32_x86_64"
- declare -x LDFLAGS_x86="-m elf_i386"
- declare -x LIBDIR_amd64="lib64"
- declare -x LIBDIR_amd64_fbsd="lib64"
- declare -x LIBDIR_arm="lib"
- declare -x LIBDIR_arm64="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 -x LICENSE="GPL-2"
- declare -x LIGHTFLOWPATH="/root/dl/lightflow/Lightflow"
- declare -x MAIL="/var/mail/daf"
- declare -x MAKEOPTS="-j7"
- declare -x MANPAGER="manpager"
- declare -x MOZILLA_FIVE_HOME="/usr/lib/mozilla"
- declare -x MPEGTABLES="/root/lib/tables"
- 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|systemd|clang|python-exec)"
- declare -x MULTIOSDIRS="../lib64:../lib32"
- declare -- MY_P="VirtualBox-4.3.38"
- declare -- MY_PV="4.3.38"
- declare -x NDS_LDEV_DIR="/root/ldev"
- declare -x NETBEANS="apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml"
- declare -x NODE_PATH="/usr/local/lib/node_modules"
- declare -x OFFICE_IMPLEMENTATION="libreoffice"
- declare -x OPENCL_PROFILE="nvidia"
- declare -x OPENGL_PROFILE="nvidia"
- declare -x PATH="/var/tmp/portage/app-emulation/virtualbox-4.3.38/temp/python2.7/bin:/usr/lib/portage/python2.7/ebuild-helpers/xattr:/usr/lib/portage/python2.7/ebuild-helpers:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.9.4"
- declare -- PAX_MARKINGS="PT XT"
- declare PDEPEND="additions? ( ~app-emulation/virtualbox-additions-4.3.38 )
- extensions? ( =app-emulation/virtualbox-extpack-oracle-4.3.38* ) "
- declare -x PHP_TARGETS="php5-6"
- declare -x PILOTRATE="38400"
- declare -x PKG_CONFIG_PATH="/var/tmp/portage/app-emulation/virtualbox-4.3.38/temp/python2.7/pkgconfig"
- declare -a PORTAGE_DOCOMPRESS='([0]="/usr/share/doc" [1]="/usr/share/info" [2]="/usr/share/man")'
- declare -x PORTAGE_DOCOMPRESS_SIZE_LIMIT="128"
- declare -a PORTAGE_DOCOMPRESS_SKIP='([0]="/usr/share/doc/virtualbox-4.3.38/html")'
- declare -x PORTAGE_NICENESS="19"
- declare -x PROFILEHOME=""
- declare -x PROFILE_ONLY_VARIABLES="ARCH ELIBC IUSE_IMPLICIT KERNEL USERLAND USE_EXPAND_IMPLICIT USE_EXPAND_UNPREFIXED USE_EXPAND_VALUES_ARCH USE_EXPAND_VALUES_ELIBC USE_EXPAND_VALUES_KERNEL USE_EXPAND_VALUES_USERLAND"
- declare -x PROPERTIES=""
- declare -x PROVIDE=""
- declare -x PYTHON="/usr/bin/python2.7"
- declare -x PYTHONDOCS_2_7="/usr/share/doc/python-docs-2.7.10/html/library"
- declare -x PYTHONDONTWRITEBYTECODE="1"
- declare -x PYTHONSTARTUP="/root/.pythonrc"
- declare -a PYTHON_COMPAT='([0]="python2_7")'
- declare -- PYTHON_DEPS=">=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,-python_single_target_jython2_7(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),python_single_target_python2_7(+)]"
- declare -- PYTHON_REQUIRED_USE="python_targets_python2_7"
- declare -x PYTHON_SINGLE_TARGET="python2_7"
- declare -x PYTHON_TARGETS="python2_7"
- declare -- PYTHON_USEDEP="python_targets_python2_7(-)?,-python_single_target_jython2_7(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),python_single_target_python2_7(+)"
- declare -- QA_TEXTRELS_x86="usr/lib/virtualbox-ose/VBoxGuestPropSvc.so
- usr/lib/virtualbox/VBoxSDL.so
- usr/lib/virtualbox/VBoxSharedFolders.so
- usr/lib/virtualbox/VBoxDD2.so
- usr/lib/virtualbox/VBoxOGLrenderspu.so
- usr/lib/virtualbox/VBoxPython.so
- usr/lib/virtualbox/VBoxDD.so
- usr/lib/virtualbox/VBoxDDU.so
- usr/lib/virtualbox/VBoxREM64.so
- usr/lib/virtualbox/VBoxSharedClipboard.so
- usr/lib/virtualbox/VBoxHeadless.so
- usr/lib/virtualbox/VBoxRT.so
- usr/lib/virtualbox/VBoxREM.so
- usr/lib/virtualbox/VBoxSettings.so
- usr/lib/virtualbox/VBoxKeyboard.so
- usr/lib/virtualbox/VBoxSharedCrOpenGL.so
- usr/lib/virtualbox/VBoxVMM.so
- usr/lib/virtualbox/VirtualBox.so
- usr/lib/virtualbox/VBoxOGLhosterrorspu.so
- usr/lib/virtualbox/components/VBoxC.so
- usr/lib/virtualbox/components/VBoxSVCM.so
- usr/lib/virtualbox/components/VBoxDDU.so
- usr/lib/virtualbox/components/VBoxRT.so
- usr/lib/virtualbox/components/VBoxREM.so
- usr/lib/virtualbox/components/VBoxVMM.so
- usr/lib/virtualbox/VBoxREM32.so
- usr/lib/virtualbox/VBoxPython2_4.so
- usr/lib/virtualbox/VBoxPython2_5.so
- usr/lib/virtualbox/VBoxPython2_6.so
- usr/lib/virtualbox/VBoxPython2_7.so
- usr/lib/virtualbox/VBoxXPCOMC.so
- usr/lib/virtualbox/VBoxOGLhostcrutil.so
- usr/lib/virtualbox/VBoxNetDHCP.so
- usr/lib/virtualbox/VBoxNetNAT.so"
- declare -x QT_AUTO_SCREEN_SCALE_FACTOR="0"
- declare -x QT_GRAPHICSSYSTEM="raster"
- declare -x QT_PLUGIN_PATH="/usr/lib64/kde4/plugins"
- declare -x RANLIB="x86_64-pc-linux-gnu-ranlib"
- declare RDEPEND="!app-emulation/virtualbox-bin
- ~app-emulation/virtualbox-modules-4.3.38
- dev-libs/libIDL
- >=dev-libs/libxslt-1.1.19
- net-misc/curl
- !libressl? ( dev-libs/openssl:0= )
- libressl? ( dev-libs/libressl:= )
- dev-libs/libxml2
- media-libs/libpng:0=
- media-libs/libvpx:0=
- sys-libs/zlib
- !headless? (
- qt4? (
- dev-qt/qtgui:4
- dev-qt/qtcore:4
- opengl? ( dev-qt/qtopengl:4 )
- x11-libs/libXinerama
- )
- opengl? ( virtual/opengl media-libs/freeglut )
- x11-libs/libX11
- x11-libs/libXcursor
- x11-libs/libXext
- x11-libs/libXmu
- x11-libs/libXt
- media-libs/libsdl:0[X,video]
- )
- java? ( >=virtual/jre-1.6:= )
- udev? ( >=virtual/udev-171 )
- vnc? ( >=net-libs/libvncserver-0.9.9 ) java? ( >=dev-java/java-config-2.2.0-r3 ) "
- declare REPOSITORY
- declare REQUIRED_USE="
- java? ( sdk )
- python? (
- ( sdk )
- )
- vboxwebsrv? ( java )
- python_targets_python2_7
- "
- declare -x RESTRICT=""
- declare -x RESUMECOMMAND_SSH="bash -c \"x=\\\${2#ssh://} ; host=\\\${x%%/*} ; port=\\\${host##*:} ; host=\\\${host%:*} ; [[ \\\${host} = \\\${port} ]] && port= ; exec rsync --rsh=\\\"ssh \\\${port:+-p\\\${port}} \\\${3}\\\" -avP \\\"\\\${host}:/\\\${x#*/}\\\" \\\"\\\$1\\\"\" rsync \"\${DISTDIR}/\${FILE}\" \"\${URI}\" \"\${PORTAGE_SSH_OPTS}\""
- declare -x RUBY_TARGETS="ruby21"
- declare -x S="/var/tmp/portage/app-emulation/virtualbox-4.3.38/work/VirtualBox-4.3.38"
- declare -x SANDBOX_DEBUG="0"
- declare -x SANDBOX_DENY=""
- declare -x SANDBOX_PREDICT="/var/tmp/portage/app-emulation/virtualbox-4.3.38/homedir:/dev/crypto:/var/cache/fontconfig"
- declare -x SANDBOX_READ="/:/var/tmp"
- declare -x SANDBOX_VERBOSE="1"
- declare -x SANDBOX_WRITE=":/dev/console:/dev/fd:/dev/full:/dev/null:/dev/ptmx:/dev/pts/:/dev/pty:/dev/shm:/dev/tts:/dev/tty:/dev/vc/:/dev/zero:/proc/self/fd:/tmp/:/usr/lib/cf:/usr/lib/conftest:/usr/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/tmp/cf:/usr/tmp/conftest:/var/tmp:/var/tmp/:/var/tmp/portage/app-emulation/virtualbox-4.3.38/homedir/.bash_history"
- declare -x SESSION_MANAGER="local/nea:@/tmp/.ICE-unix/4580,unix/nea:/tmp/.ICE-unix/4580"
- declare -x SHELL="/bin/zsh"
- declare -x SHELL_SESSION_ID="8ef954531753400093fe494c70fda1d4"
- declare -x SLOT="0"
- declare SRC_URI="http://download.virtualbox.org/virtualbox/4.3.38/VirtualBox-4.3.38.tar.bz2
- https://dev.gentoo.org/~polynomial-c/virtualbox/patchsets/virtualbox-4.3.16-patches-01.tar.xz"
- declare -x SSH_ASKPASS="/usr/bin/ksshaskpass"
- declare -x STEAM_FRAME_FORCE_CLOSE="1"
- declare -x SVN_EDITOR="vim"
- declare -x SYMLINK_LIB="yes"
- declare -x USE="abi_x86_64 amd64 elibc_glibc kernel_linux python_targets_python2_7 qt4 userland_GNU"
- declare -x USERLAND="GNU"
- declare -x USE_EXPAND_IMPLICIT="ARCH ELIBC KERNEL USERLAND"
- declare -x USE_EXPAND_UNPREFIXED="ARCH"
- declare -x USE_EXPAND_VALUES_ARCH="alpha amd64 amd64-fbsd amd64-linux arm arm-linux arm64 hppa hppa-hpux ia64 ia64-hpux ia64-linux m68k m68k-mint mips nios2 ppc ppc64 ppc64-linux ppc-aix ppc-macos ppc-openbsd riscv s390 sh sparc sparc64-freebsd sparc64-solaris sparc-fbsd sparc-solaris x64-cygwin x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt"
- declare -x USE_EXPAND_VALUES_ELIBC="AIX bionic Cygwin Darwin DragonFly FreeBSD glibc HPUX Interix mingw mintlib musl NetBSD OpenBSD SunOS uclibc Winnt"
- declare -x USE_EXPAND_VALUES_KERNEL="AIX Darwin FreeBSD freemint HPUX Interix linux NetBSD OpenBSD SunOS Winnt"
- declare -x USE_EXPAND_VALUES_USERLAND="BSD GNU"
- declare -x VIDEO_CARDS="nvidia nouveau"
- declare -x WANT_JAVA_CONFIG="2"
- declare -x WINDOWID="79691837"
- declare -x X11HOME="/usr/X11R6"
- declare -x XCURSOR_THEME="breeze_cursors"
- declare -x XDG_CONFIG_DIRS="/etc/xdg"
- declare -x XDG_CONFIG_HOME="/var/tmp/portage/app-emulation/virtualbox-4.3.38/temp"
- declare -x XDG_CURRENT_DESKTOP="KDE"
- declare -x XDG_DATA_DIRS="/usr/local/share:/usr/share"
- declare -x XDG_RUNTIME_DIR="/var/run/user/1000"
- declare -x XDG_SEAT="seat0"
- declare -x XDG_SEAT_PATH="/org/freedesktop/DisplayManager/Seat0"
- declare -x XDG_SESSION_CLASS="user"
- declare -x XDG_SESSION_COOKIE="nea-1483652340.963238-601008492"
- declare -x XDG_SESSION_DESKTOP="KDE"
- declare -x XDG_SESSION_PATH="/org/freedesktop/DisplayManager/Session0"
- declare -x XDG_SESSION_TYPE="x11"
- declare -x XDG_VTNR="7"
- 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 -- _BASE_ECLASS="1"
- declare -a _ESTACK_eshopts_='()'
- declare -a _ESTACK_evar_='()'
- declare -- _EUTILS_ECLASS="1"
- declare -- _EUTILS_ECLASSDIR_LOCAL="/usr/portage/eclass"
- declare -x _E_DOCDESTTREE_=""
- declare -x _E_EXEDESTTREE_=""
- declare -- _FLAG_O_MATIC_ECLASS="1"
- declare -- _LINUX_CONFIG_EXISTS_DONE=""
- declare -- _MULTILIB_ECLASS="1"
- declare -- _PAX_UTILS_ECLASS="1"
- declare -a _PYTHON_ALL_IMPLS='([0]="jython2_7" [1]="pypy" [2]="pypy3" [3]="python2_7" [4]="python3_4" [5]="python3_5")'
- declare -- _PYTHON_SINGLE_R1="1"
- declare -a _PYTHON_SUPPORTED_IMPLS='([0]="python2_7")'
- declare -a _PYTHON_UNSUPPORTED_IMPLS='([0]="jython2_7" [1]="pypy" [2]="pypy3" [3]="python3_4" [4]="python3_5")'
- declare -- _PYTHON_UTILS_R1="1"
- declare -- _QMAKE_UTILS_ECLASS="1"
- declare -- _TOOLCHAIN_FUNCS_ECLASS="1"
- declare -- _VERSIONATOR_ECLASS="1"
- declare -- get_version_warning_done=""
- declare -- phase_func
- PYTHON ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#.24.28PYTHON.29.2C_.24.7BEPYTHON.7D"
- }
- __eapi6_src_install ()
- {
- if [[ -f Makefile || -f GNUmakefile || -f makefile ]]; then
- emake DESTDIR="${D}" install;
- fi;
- einstalldocs
- }
- __eapi6_src_prepare ()
- {
- if [[ $(declare -p PATCHES 2>/dev/null) == "declare -a"* ]]; then
- [[ -n ${PATCHES[@]} ]] && eapply "${PATCHES[@]}";
- else
- if [[ -n ${PATCHES} ]]; then
- eapply ${PATCHES};
- fi;
- fi;
- eapply_user
- }
- _clang_fullversion ()
- {
- local ver="$1";
- shift;
- set -- $($(tc-getCPP "$@") -E -P - <<<"__clang_major__ __clang_minor__ __clang_patchlevel__");
- eval echo "$ver"
- }
- _epatch_draw_line ()
- {
- [[ -z $1 ]] && set "$(printf "%65s" '')";
- echo "${1//?/=}"
- }
- _eutils_eprefix_init ()
- {
- has "${EAPI:-0}" 0 1 2 && : ${ED:=${D}} ${EPREFIX:=} ${EROOT:=${ROOT}}
- }
- _filter-hardened ()
- {
- local f;
- for f in "$@";
- do
- case "${f}" in
- -fPIC | -fpic | -fPIE | -fpie | -Wl,pie | -pie)
- gcc-specs-pie || continue;
- if ! is-flagq -nopie && ! is-flagq -no-pie; then
- if test-flags -nopie > /dev/null; then
- append-flags -nopie;
- else
- append-flags -no-pie;
- fi;
- fi
- ;;
- -fstack-protector)
- gcc-specs-ssp || continue;
- is-flagq -fno-stack-protector || append-flags $(test-flags -fno-stack-protector)
- ;;
- -fstack-protector-all)
- gcc-specs-ssp-to-all || continue;
- is-flagq -fno-stack-protector-all || append-flags $(test-flags -fno-stack-protector-all)
- ;;
- -fno-strict-overflow)
- gcc-specs-nostrict || continue;
- is-flagq -fstrict-overflow || append-flags $(test-flags -fstrict-overflow)
- ;;
- esac;
- done
- }
- _filter-var ()
- {
- local f x var=$1 new=();
- shift;
- for f in ${!var};
- do
- for x in "$@";
- do
- [[ ${f} == ${x} ]] && continue 2;
- done;
- new+=("${f}");
- done;
- 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"
- }
- _iconins ()
- {
- ( local funcname=$1;
- shift;
- local size dir;
- local context=apps;
- local theme=hicolor;
- while [[ $# -gt 0 ]]; do
- case $1 in
- -s | --size)
- if [[ ${2%%x*}x${2%%x*} == "$2" ]]; then
- size=${2%%x*};
- else
- size=${2};
- fi;
- case ${size} in
- 16 | 22 | 24 | 32 | 36 | 48 | 64 | 72 | 96 | 128 | 192 | 256 | 512)
- size=${size}x${size}
- ;;
- scalable)
- ;;
- *)
- eerror "${size} is an unsupported icon size!";
- exit 1
- ;;
- esac;
- shift 2
- ;;
- -t | --theme)
- theme=${2};
- shift 2
- ;;
- -c | --context)
- context=${2};
- shift 2
- ;;
- *)
- if [[ -z ${size} ]]; then
- insinto /usr/share/pixmaps;
- else
- insinto /usr/share/icons/${theme}/${size}/${context};
- fi;
- if [[ ${funcname} == doicon ]]; then
- if [[ -f $1 ]]; then
- doins "${1}";
- else
- if [[ -d $1 ]]; then
- shopt -s nullglob;
- doins "${1}"/*.{png,svg};
- shopt -u nullglob;
- else
- eerror "${1} is not a valid file/directory!";
- exit 1;
- fi;
- fi;
- else
- break;
- fi;
- shift 1
- ;;
- esac;
- done;
- if [[ ${funcname} == newicon ]]; then
- newins "$@";
- fi ) || die
- }
- _is_flagq ()
- {
- local x var;
- eval var=\""\${$1[*]}"\";
- for x in ${var};
- do
- [[ ${x} == $2 ]] && return 0;
- done;
- return 1
- }
- _pax_list_files ()
- {
- local f cmd;
- cmd=$1;
- shift;
- for f in "$@";
- do
- ${cmd} " ${f}";
- done
- }
- _python_check_dead_variables ()
- {
- local v;
- for v in PYTHON_DEPEND PYTHON_USE_WITH{,_OR,_OPT} {RESTRICT,SUPPORT}_PYTHON_ABIS;
- do
- if [[ -n ${!v} ]]; then
- die "${v} is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#Ebuild_head";
- fi;
- done;
- for v in PYTHON_{CPPFLAGS,CFLAGS,CXXFLAGS,LDFLAGS};
- do
- if [[ -n ${!v} ]]; then
- die "${v} is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#PYTHON_CFLAGS";
- fi;
- done;
- for v in PYTHON_TESTS_RESTRICTED_ABIS PYTHON_EXPORT_PHASE_FUNCTIONS PYTHON_VERSIONED_{SCRIPTS,EXECUTABLES} PYTHON_NONVERSIONED_EXECUTABLES;
- do
- if [[ -n ${!v} ]]; then
- die "${v} is invalid for python-r1 suite";
- fi;
- done;
- for v in DISTUTILS_USE_SEPARATE_SOURCE_DIRECTORIES DISTUTILS_SETUP_FILES DISTUTILS_GLOBAL_OPTIONS DISTUTILS_SRC_TEST PYTHON_MODNAME;
- do
- if [[ -n ${!v} ]]; then
- die "${v} is invalid for distutils-r1, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#${v}";
- fi;
- done;
- if [[ -n ${DISTUTILS_DISABLE_TEST_DEPENDENCY} ]]; then
- die "${v} is invalid for distutils-r1, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#DISTUTILS_SRC_TEST";
- fi;
- for v in PYTHON_BDEPEND PYTHON_MULTIPLE_ABIS PYTHON_ABI_TYPE PYTHON_RESTRICTED_ABIS PYTHON_TESTS_FAILURES_TOLERANT_ABIS PYTHON_CFFI_MODULES_GENERATION_COMMANDS;
- do
- if [[ -n ${!v} ]]; then
- die "${v} is invalid for python-r1 suite";
- fi;
- done
- }
- _python_check_locale_sanity ()
- {
- local -x LC_ALL=${1};
- local IFS=;
- local lc=({a..z});
- local uc=({A..Z});
- local input="${lc[*]}${uc[*]}";
- local output=$(tr '[:lower:][:upper:]' '[:upper:][:lower:]' <<<"${input}");
- [[ ${output} == "${uc[*]}${lc[*]}" ]]
- }
- _python_impl_supported ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- [[ ${#} -eq 1 ]] || die "${FUNCNAME}: takes exactly 1 argument (impl).";
- local impl=${1};
- case "${impl}" in
- python2_7 | python3_[45] | jython2_7)
- return 0
- ;;
- pypy1_[89] | pypy2_0 | python2_[56] | python3_[123])
- return 1
- ;;
- pypy | pypy3)
- if [[ ${EAPI:-0} == [01234] ]]; then
- die "PyPy is supported in EAPI 5 and newer only.";
- fi
- ;;
- *)
- die "Invalid implementation in PYTHON_COMPAT: ${impl}"
- ;;
- esac
- }
- _python_ln_rel ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local target=${1};
- local symname=${2};
- local tgpath=${target%/*}/;
- local sympath=${symname%/*}/;
- local rel_target=;
- while [[ -n ${sympath} ]]; do
- local tgseg= symseg=;
- while [[ ! -n ${tgseg} && -n ${tgpath} ]]; do
- tgseg=${tgpath%%/*};
- tgpath=${tgpath#${tgseg}/};
- done;
- while [[ ! -n ${symseg} && -n ${sympath} ]]; do
- symseg=${sympath%%/*};
- sympath=${sympath#${symseg}/};
- done;
- if [[ ${tgseg} != ${symseg} ]]; then
- rel_target=../${rel_target}${tgseg:+${tgseg}/};
- fi;
- done;
- rel_target+=${tgpath}${target##*/};
- debug-print "${FUNCNAME}: ${symname} -> ${target}";
- debug-print "${FUNCNAME}: rel_target = ${rel_target}";
- ln -fs "${rel_target}" "${symname}"
- }
- _python_set_impls ()
- {
- local i;
- if ! declare -p PYTHON_COMPAT &> /dev/null; then
- die 'PYTHON_COMPAT not declared.';
- fi;
- if [[ $(declare -p PYTHON_COMPAT) != "declare -a"* ]]; then
- die 'PYTHON_COMPAT must be an array.';
- fi;
- for i in "${PYTHON_COMPAT[@]}";
- do
- _python_impl_supported "${i}";
- done;
- _PYTHON_SUPPORTED_IMPLS=();
- _PYTHON_UNSUPPORTED_IMPLS=();
- for i in "${_PYTHON_ALL_IMPLS[@]}";
- do
- if has "${i}" "${PYTHON_COMPAT[@]}"; then
- _PYTHON_SUPPORTED_IMPLS+=("${i}");
- else
- _PYTHON_UNSUPPORTED_IMPLS+=("${i}");
- fi;
- done;
- if [[ ${#_PYTHON_SUPPORTED_IMPLS[@]} -eq 0 ]]; then
- die "No supported implementation in PYTHON_COMPAT.";
- fi;
- readonly _PYTHON_SUPPORTED_IMPLS _PYTHON_UNSUPPORTED_IMPLS
- }
- _tc-getPROG ()
- {
- local tuple=$1;
- local v var vars=$2;
- local prog=($3);
- var=${vars%% *};
- for v in ${vars};
- do
- if [[ -n ${!v} ]]; then
- export ${var}="${!v}";
- echo "${!v}";
- return 0;
- fi;
- done;
- local search=;
- [[ -n $4 ]] && search=$(type -p $4-${prog[0]});
- [[ -z ${search} && -n ${!tuple} ]] && search=$(type -p ${!tuple}-${prog[0]});
- [[ -n ${search} ]] && prog[0]=${search##*/};
- export ${var}="${prog[*]}";
- echo "${!var}"
- }
- _udev_get_udevdir ()
- {
- if $($(tc-getPKG_CONFIG) --exists udev); then
- echo "$($(tc-getPKG_CONFIG) --variable=udevdir udev)";
- else
- echo /lib/udev;
- fi
- }
- all-flag-vars ()
- {
- echo {C,CPP,CXX,CCAS,F,FC,LD}FLAGS
- }
- append-cflags ()
- {
- [[ $# -eq 0 ]] && return 0;
- export CFLAGS+=" $*";
- return 0
- }
- append-cppflags ()
- {
- [[ $# -eq 0 ]] && return 0;
- export CPPFLAGS+=" $*";
- return 0
- }
- append-cxxflags ()
- {
- [[ $# -eq 0 ]] && return 0;
- export CXXFLAGS+=" $*";
- return 0
- }
- append-fflags ()
- {
- [[ $# -eq 0 ]] && return 0;
- export FFLAGS+=" $*";
- export FCFLAGS+=" $*";
- return 0
- }
- append-flags ()
- {
- [[ $# -eq 0 ]] && return 0;
- case " $* " in
- *' '-[DIU]*)
- eqawarn 'please use append-cppflags for preprocessor flags'
- ;;
- *' '-L* | *' '-Wl,*)
- eqawarn 'please use append-ldflags for linker flags'
- ;;
- esac;
- append-cflags "$@";
- append-cxxflags "$@";
- append-fflags "$@";
- return 0
- }
- append-ldflags ()
- {
- [[ $# -eq 0 ]] && return 0;
- local flag;
- for flag in "$@";
- do
- [[ ${flag} == -l* ]] && eqawarn "Appending a library link instruction (${flag}); libraries to link to should not be passed through LDFLAGS";
- done;
- export LDFLAGS="${LDFLAGS} $*";
- return 0
- }
- append-lfs-flags ()
- {
- [[ $# -ne 0 ]] && die "append-lfs-flags takes no arguments";
- append-cppflags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
- }
- append-libs ()
- {
- [[ $# -eq 0 ]] && return 0;
- local flag;
- for flag in "$@";
- do
- if [[ -z "${flag// }" ]]; then
- eqawarn "Appending an empty argument to LIBS is invalid! Skipping.";
- continue;
- fi;
- case $flag in
- -[lL]*)
- export LIBS="${LIBS} ${flag}"
- ;;
- -*)
- eqawarn "Appending non-library to LIBS (${flag}); Other linker flags should be passed via LDFLAGS";
- export LIBS="${LIBS} ${flag}"
- ;;
- *)
- export LIBS="${LIBS} -l${flag}"
- ;;
- esac;
- done;
- return 0
- }
- 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
- }
- built_with_use ()
- {
- _eutils_eprefix_init;
- 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=${EROOT}/var/db/pkg/${PKG}/USE;
- local IUSEFILE=${EROOT}/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_extra_config ()
- {
- local config negate die error reworkmodulenames;
- local soft_errors_count=0 hard_errors_count=0 config_required=0;
- local old_LINUX_CONFIG_EXISTS_DONE="${_LINUX_CONFIG_EXISTS_DONE}";
- linux-info_get_any_version;
- for config in ${CONFIG_CHECK};
- do
- if [[ "${config:0:1}" != "~" ]]; then
- config_required=1;
- break;
- fi;
- done;
- if [[ ${config_required} == 0 ]]; then
- if ! linux_config_exists; then
- ewarn "Unable to check for the following kernel config options due";
- ewarn "to absence of any configured kernel sources or compiled";
- ewarn "config:";
- for config in ${CONFIG_CHECK};
- do
- config=${config#\~};
- config=${config#\!};
- local_error="ERROR_${config}";
- msg="${!local_error}";
- if [[ -z ${msg} ]]; then
- local_error="WARNING_${config}";
- msg="${!local_error}";
- fi;
- ewarn " - ${config}${msg:+ - }${msg}";
- done;
- ewarn "You're on your own to make sure they are set if needed.";
- export LINUX_CONFIG_EXISTS_DONE="${old_LINUX_CONFIG_EXISTS_DONE}";
- return 0;
- fi;
- else
- require_configured_kernel;
- fi;
- einfo "Checking for suitable kernel configuration options...";
- for config in ${CONFIG_CHECK};
- do
- die=1;
- error=0;
- negate=0;
- reworkmodulenames=0;
- if [[ ${config:0:1} == "~" ]]; then
- die=0;
- config=${config:1};
- else
- if [[ ${config:0:1} == "@" ]]; then
- die=0;
- reworkmodulenames=1;
- config=${config:1};
- fi;
- fi;
- if [[ ${config:0:1} == "!" ]]; then
- negate=1;
- config=${config:1};
- fi;
- if [[ ${negate} == 1 ]]; then
- linux_chkconfig_present ${config} && error=2;
- else
- if [[ ${reworkmodulenames} == 1 ]]; then
- local temp_config="${config//*:}" i n;
- config="${config//:*}";
- if linux_chkconfig_present ${config}; then
- for i in ${MODULE_NAMES};
- do
- n="${i//${temp_config}}";
- [[ -z ${n//\(*} ]] && MODULE_IGNORE="${MODULE_IGNORE} ${temp_config}";
- done;
- error=2;
- fi;
- else
- linux_chkconfig_present ${config} || error=1;
- fi;
- fi;
- if [[ ${error} > 0 ]]; then
- local report_func="eerror" local_error;
- local_error="ERROR_${config}";
- local_error="${!local_error}";
- if [[ -z "${local_error}" ]]; then
- local_error="${config}_ERROR";
- local_error="${!local_error}";
- fi;
- if [[ ${die} == 0 && -z "${local_error}" ]]; then
- local_error="WARNING_${config}";
- local_error="${!local_error}";
- if [[ -n "${local_error}" ]]; then
- report_func="ewarn";
- fi;
- fi;
- if [[ -z "${local_error}" ]]; then
- [[ ${error} == 1 ]] && local_error="is not set when it should be." || local_error="should not be set. But it is.";
- local_error="CONFIG_${config}:\t ${local_error}";
- fi;
- if [[ ${die} == 0 ]]; then
- ${report_func} " ${local_error}";
- soft_errors_count=$[soft_errors_count + 1];
- else
- ${report_func} " ${local_error}";
- hard_errors_count=$[hard_errors_count + 1];
- fi;
- fi;
- done;
- if [[ ${hard_errors_count} > 0 ]]; then
- eerror "Please check to make sure these options are set correctly.";
- eerror "Failure to do so may cause unexpected problems.";
- eerror "Once you have satisfied these options, please try merging";
- eerror "this package again.";
- export LINUX_CONFIG_EXISTS_DONE="${old_LINUX_CONFIG_EXISTS_DONE}";
- die "Incorrect kernel configuration options";
- else
- if [[ ${soft_errors_count} > 0 ]]; then
- ewarn "Please check to make sure these options are set correctly.";
- ewarn "Failure to do so may cause unexpected problems.";
- else
- eend 0;
- fi;
- fi;
- export LINUX_CONFIG_EXISTS_DONE="${old_LINUX_CONFIG_EXISTS_DONE}"
- }
- check_kernel_built ()
- {
- require_configured_kernel;
- get_version;
- local versionh_path;
- if kernel_is -ge 3 7; then
- versionh_path="include/generated/uapi/linux/version.h";
- else
- versionh_path="include/linux/version.h";
- fi;
- if [ ! -f "${KV_OUT_DIR}/${versionh_path}" ]; then
- eerror "These sources have not yet been prepared.";
- eerror "We cannot build against an unprepared tree.";
- eerror "To resolve this, please type the following:";
- eerror;
- eerror "# cd ${KV_DIR}";
- eerror "# make oldconfig";
- eerror "# make modules_prepare";
- eerror;
- eerror "Then please try merging this module again.";
- die "Kernel sources need compiling first";
- fi
- }
- check_license ()
- {
- die "you no longer need this as portage supports ACCEPT_LICENSE itself"
- }
- check_modules_supported ()
- {
- require_configured_kernel;
- get_version;
- if ! linux_chkconfig_builtin "MODULES"; then
- eerror "These sources do not support loading external modules.";
- eerror "to be able to use this module please enable \"Loadable modules support\"";
- eerror "in your kernel, recompile and then try merging this module again.";
- die "No support for external modules in ${KV_FULL} config";
- fi
- }
- check_zlibinflate ()
- {
- require_configured_kernel;
- get_version;
- local INFLATE;
- local DEFLATE;
- einfo "Determining the usability of ZLIB_INFLATE support in your kernel";
- ebegin "checking ZLIB_INFLATE";
- linux_chkconfig_builtin CONFIG_ZLIB_INFLATE;
- eend $?;
- [ "$?" != 0 ] && die;
- ebegin "checking ZLIB_DEFLATE";
- linux_chkconfig_builtin CONFIG_ZLIB_DEFLATE;
- eend $?;
- [ "$?" != 0 ] && die;
- local LINENO_START;
- local LINENO_END;
- local SYMBOLS;
- local x;
- LINENO_END="$(grep -n 'CONFIG_ZLIB_INFLATE y' ${KV_DIR}/lib/Config.in | cut -d : -f 1)";
- LINENO_START="$(head -n $LINENO_END ${KV_DIR}/lib/Config.in | grep -n 'if \[' | tail -n 1 | cut -d : -f 1)";
- (( LINENO_AMOUNT = $LINENO_END - $LINENO_START ));
- (( LINENO_END = $LINENO_END - 1 ));
- SYMBOLS="$(head -n $LINENO_END ${KV_DIR}/lib/Config.in | tail -n $LINENO_AMOUNT | sed -e 's/^.*\(CONFIG_[^\" ]*\).*/\1/g;')";
- for x in $SYMBOLS;
- do
- if [ "${!x}" = "y" ]; then
- einfo "${x} ensures zlib is linked into your kernel - excellent";
- return 0;
- fi;
- done;
- eerror;
- eerror "This kernel module requires ZLIB library support.";
- eerror "You have enabled zlib support in your kernel, but haven't enabled";
- eerror "enabled any option that will ensure that zlib is linked into your";
- eerror "kernel.";
- eerror;
- eerror "Please ensure that you enable at least one of these options:";
- eerror;
- for x in $SYMBOLS;
- do
- eerror " * $x";
- done;
- eerror;
- eerror "Please remember to recompile and install your kernel, and reboot";
- eerror "into your new kernel before attempting to load this kernel module.";
- die "Kernel doesn't include zlib support"
- }
- clang-fullversion ()
- {
- _clang_fullversion '$1.$2.$3' "$@"
- }
- clang-major-version ()
- {
- _clang_fullversion '$1' "$@"
- }
- clang-micro-version ()
- {
- _clang_fullversion '$3' "$@"
- }
- clang-minor-version ()
- {
- _clang_fullversion '$2' "$@"
- }
- clang-version ()
- {
- _clang_fullversion '$1.$2' "$@"
- }
- delete_all_version_separators ()
- {
- replace_all_version_separators "" "${1}"
- }
- delete_version_separator ()
- {
- replace_version_separator "${1}" "" "${2}"
- }
- doicon ()
- {
- _iconins ${FUNCNAME} "$@"
- }
- 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} )
- }
- eant ()
- {
- debug-print-function ${FUNCNAME} $*;
- if [[ ${EBUILD_PHASE} = compile ]]; then
- java-ant-2_src_configure;
- fi;
- if ! has java-ant-2 ${INHERITED}; then
- local msg="You should inherit java-ant-2 when using eant";
- java-pkg_announce-qa-violation "${msg}";
- fi;
- local antflags="-Dnoget=true -Dmaven.mode.offline=true -Dbuild.sysclasspath=ignore";
- java-pkg_init-compiler_;
- local compiler="${GENTOO_COMPILER}";
- local compiler_env="${JAVA_PKG_COMPILER_DIR}/${compiler}";
- local build_compiler="$(source ${compiler_env} 1>/dev/null 2>&1; echo ${ANT_BUILD_COMPILER})";
- if [[ "${compiler}" != "javac" && -z "${build_compiler}" ]]; then
- die "ANT_BUILD_COMPILER undefined in ${compiler_env}";
- fi;
- if [[ ${compiler} != "javac" ]]; then
- antflags="${antflags} -Dbuild.compiler=${build_compiler}";
- local build_compiler_deps="$(source ${JAVA_PKG_COMPILER_DIR}/${compiler} 1>/dev/null 2>&1; echo ${ANT_BUILD_COMPILER_DEPS})";
- if [[ -n ${build_compiler_deps} ]]; then
- antflags="${antflags} -lib $(java-config -p ${build_compiler_deps})";
- fi;
- fi;
- for arg in "${@}";
- do
- if [[ ${arg} = -lib ]]; then
- if is-java-strict; then
- eerror "You should not use the -lib argument to eant because it will fail";
- eerror "with JAVA_PKG_STRICT. Please use for example java-pkg_jar-from";
- eerror "or ant properties to make dependencies available.";
- eerror "For ant tasks use WANT_ANT_TASKS or ANT_TASKS from.";
- eerror "split ant (>=dev-java/ant-core-1.7).";
- die "eant -lib is deprecated/forbidden";
- else
- echo "eant -lib is deprecated. Turn JAVA_PKG_STRICT on for";
- echo "more info.";
- fi;
- fi;
- done;
- local want_ant_tasks;
- for i in ${WANT_ANT_TASKS};
- do
- if [[ ${i} = */*:* ]]; then
- i=${i#*/};
- i=${i%:0};
- want_ant_tasks+="${i/:/-} ";
- else
- want_ant_tasks+="${i} ";
- fi;
- done;
- ANT_TASKS="${ANT_TASKS:-${want_ant_tasks% }}";
- ANT_TASKS="${JAVA_PKG_FORCE_ANT_TASKS:-${ANT_TASKS}}";
- ANT_TASKS="${ANT_TASKS:-none}";
- if [[ "${ANT_TASKS}" == "all" ]]; then
- einfo "Using all available ANT_TASKS";
- else
- if [[ "${ANT_TASKS}" == "none" ]]; then
- einfo "Disabling all optional ANT_TASKS";
- else
- einfo "Using following ANT_TASKS: ${ANT_TASKS}";
- fi;
- fi;
- export ANT_TASKS;
- [[ -n ${JAVA_PKG_DEBUG} ]] && antflags="${antflags} --execdebug -debug";
- [[ -n ${PORTAGE_QUIET} ]] && antflags="${antflags} -q";
- local gcp="${EANT_GENTOO_CLASSPATH}";
- local getjarsarg="";
- if [[ ${EBUILD_PHASE} = "test" ]]; then
- antflags="${antflags} -DJunit.present=true";
- getjarsarg="--with-dependencies";
- local re="\bant-junit4?([-:]\S+)?\b";
- [[ ${ANT_TASKS} =~ ${re} ]] && gcp+=" ${BASH_REMATCH[0]}";
- else
- antflags="${antflags} -Dmaven.test.skip=true";
- fi;
- local cp;
- for atom in ${gcp};
- do
- cp+=":$(java-pkg_getjars ${getjarsarg} ${atom})";
- done;
- [[ -n ${EANT_NEEDS_TOOLS} ]] && cp+=":$(java-config --tools)";
- [[ -n ${EANT_GENTOO_CLASSPATH_EXTRA} ]] && cp+=":${EANT_GENTOO_CLASSPATH_EXTRA}";
- if [[ -n ${cp#:} ]]; then
- antflags="${antflags} -Dgentoo.classpath=\"${cp#:}\"";
- fi;
- [[ -n ${JAVA_PKG_DEBUG} ]] && echo ant ${antflags} "${@}";
- debug-print "Calling ant (GENTOO_VM: ${GENTOO_VM}): ${antflags} ${@}";
- ant ${antflags} "${@}" || die "eant failed"
- }
- ebeep ()
- {
- ewarn "QA Notice: ebeep is not defined in EAPI=${EAPI}, please file a bug at https://bugs.gentoo.org"
- }
- econf_build ()
- {
- local CBUILD=${CBUILD:-${CHOST}};
- tc-env_build econf --build=${CBUILD} --host=${CBUILD} "$@"
- }
- ecvs_clean ()
- {
- [[ $# -eq 0 ]] && set -- .;
- find "$@" -type d -name 'CVS' -prune -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
- }
- egit_clean ()
- {
- [[ $# -eq 0 ]] && set -- .;
- find "$@" -type d -name '.git*' -prune -print0 | xargs -0 rm -rf
- }
- einstalldocs ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local dodoc_opts=-r;
- has ${EAPI} 0 1 2 3 && dodoc_opts=;
- if ! declare -p DOCS &> /dev/null; then
- local d;
- for d in README* ChangeLog AUTHORS NEWS TODO CHANGES THANKS BUGS FAQ CREDITS CHANGELOG;
- do
- if [[ -s ${d} ]]; then
- dodoc "${d}" || die;
- fi;
- done;
- else
- if [[ $(declare -p DOCS) == "declare -a"* ]]; then
- if [[ -n ${DOCS[@]} ]]; then
- dodoc ${dodoc_opts} "${DOCS[@]}" || die;
- fi;
- else
- if [[ -n ${DOCS} ]]; then
- dodoc ${dodoc_opts} ${DOCS} || die;
- fi;
- fi;
- fi;
- if [[ $(declare -p HTML_DOCS 2>/dev/null) == "declare -a"* ]]; then
- if [[ -n ${HTML_DOCS[@]} ]]; then
- dohtml -r "${HTML_DOCS[@]}" || die;
- fi;
- else
- if [[ -n ${HTML_DOCS} ]]; then
- dohtml -r ${HTML_DOCS} || die;
- fi;
- fi;
- return 0
- }
- ejavac ()
- {
- debug-print-function ${FUNCNAME} $*;
- local compiler_executable;
- compiler_executable=$(java-pkg_get-javac);
- local javac_args;
- javac_args="$(java-pkg_javac-args)";
- if [[ -n ${JAVA_PKG_DEBUG} ]]; then
- einfo "Verbose logging for \"${FUNCNAME}\" function";
- einfo "Compiler executable: ${compiler_executable}";
- einfo "Extra arguments: ${javac_args}";
- einfo "Complete command:";
- einfo "${compiler_executable} ${javac_args} ${@}";
- fi;
- ebegin "Compiling";
- ${compiler_executable} ${javac_args} "${@}" || die "ejavac failed"
- }
- ejavadoc ()
- {
- debug-print-function ${FUNCNAME} $*;
- local javadoc_args="";
- if java-pkg_is-vm-version-ge "1.8"; then
- javadoc_args="-Xdoclint:none";
- fi;
- if [[ -n ${JAVA_PKG_DEBUG} ]]; then
- einfo "Verbose logging for \"${FUNCNAME}\" function";
- einfo "Javadoc executable: javadoc";
- einfo "Extra arguments: ${javadoc_args}";
- einfo "Complete command:";
- einfo "javadoc ${javadoc_args} ${@}";
- fi;
- ebegin "Generating JavaDoc";
- javadoc ${javadoc_args} "${@}" || die "ejavadoc failed"
- }
- ejunit ()
- {
- debug-print-function ${FUNCNAME} $*;
- ejunit_ "junit" "${@}"
- }
- ejunit4 ()
- {
- debug-print-function ${FUNCNAME} $*;
- ejunit_ "junit-4" "${@}"
- }
- ejunit_ ()
- {
- debug-print-function ${FUNCNAME} $*;
- local pkgs;
- if [[ -f ${JAVA_PKG_DEPEND_FILE} ]]; then
- for atom in $(cat ${JAVA_PKG_DEPEND_FILE} | tr : ' ');
- do
- pkgs=${pkgs},$(echo ${atom} | sed -re "s/^.*@//");
- done;
- fi;
- local junit=${1};
- shift 1;
- local cp=$(java-pkg_getjars --with-dependencies ${junit}${pkgs});
- if [[ ${1} = -cp || ${1} = -classpath ]]; then
- cp="${2}:${cp}";
- shift 2;
- else
- cp=".:${cp}";
- fi;
- local runner=junit.textui.TestRunner;
- if [[ "${junit}" == "junit-4" ]]; then
- runner=org.junit.runner.JUnitCore;
- fi;
- debug-print "Calling: java -cp \"${cp}\" -Djava.io.tmpdir=\"${T}\" -Djava.awt.headless=true ${runner} ${@}";
- java -cp "${cp}" -Djava.io.tmpdir="${T}/" -Djava.awt.headless=true ${runner} "${@}" || die "Running junit failed"
- }
- emktemp ()
- {
- local exe="touch";
- [[ $1 == -d ]] && exe="mkdir" && shift;
- local topdir=$1;
- if [[ -z ${topdir} ]]; then
- [[ -z ${T} ]] && topdir="/tmp" || topdir=${T};
- fi;
- if ! type -P mktemp > /dev/null; then
- local tmp=/;
- while [[ -e ${tmp} ]]; do
- tmp=${topdir}/tmp.${RANDOM}.${RANDOM}.${RANDOM};
- done;
- ${exe} "${tmp}" || ${exe} -p "${tmp}";
- echo "${tmp}";
- else
- if [[ ${exe} == "touch" ]]; then
- TMPDIR="${topdir}" mktemp -t tmp.XXXXXXXXXX;
- else
- TMPDIR="${topdir}" mktemp -dt tmp.XXXXXXXXXX;
- fi;
- fi
- }
- epatch ()
- {
- function _epatch_draw_line ()
- {
- [[ -z $1 ]] && set "$(printf "%65s" '')";
- echo "${1//?/=}"
- };
- unset P4CONFIG P4PORT P4USER;
- local EPATCH_OPTS=(${EPATCH_OPTS[*]});
- while [[ $# -gt 0 ]]; do
- case $1 in
- -*)
- EPATCH_OPTS+=("$1")
- ;;
- *)
- break
- ;;
- esac;
- shift;
- done;
- if [[ $# -gt 1 ]]; then
- local m;
- for m in "$@";
- do
- epatch "${m}";
- done;
- return 0;
- fi;
- local SINGLE_PATCH="no";
- [[ $# -eq 0 ]] && set -- "${EPATCH_SOURCE}";
- if [[ -f $1 ]]; then
- SINGLE_PATCH="yes";
- set -- "$1";
- local EPATCH_SUFFIX=$1;
- else
- if [[ -d $1 ]]; then
- evar_push_set LC_COLLATE C;
- set -- "$1"/*${EPATCH_SUFFIX:+."${EPATCH_SUFFIX}"};
- evar_pop;
- else
- if [[ -f ${EPATCH_SOURCE}/$1 ]]; then
- epatch "${EPATCH_SOURCE}/$1";
- return $?;
- else
- [[ $# -ne 0 ]] && EPATCH_SOURCE=$1;
- echo;
- eerror "Cannot find \$EPATCH_SOURCE! Value for \$EPATCH_SOURCE is:";
- eerror;
- eerror " ${EPATCH_SOURCE}";
- eerror " ( ${EPATCH_SOURCE##*/} )";
- echo;
- die "Cannot find \$EPATCH_SOURCE!";
- fi;
- fi;
- fi;
- EPATCH_OPTS="${EPATCH_COMMON_OPTS} ${EPATCH_OPTS[*]}";
- local PIPE_CMD;
- case ${EPATCH_SUFFIX##*\.} in
- xz)
- PIPE_CMD="xz -dc"
- ;;
- lzma)
- PIPE_CMD="lzma -dc"
- ;;
- bz2)
- PIPE_CMD="bzip2 -dc"
- ;;
- gz | Z | z)
- PIPE_CMD="gzip -dc"
- ;;
- ZIP | zip)
- PIPE_CMD="unzip -p"
- ;;
- *)
- ;;
- esac;
- [[ ${SINGLE_PATCH} == "no" ]] && einfo "${EPATCH_MULTI_MSG}";
- local x;
- for x in "$@";
- do
- [[ ! -f ${x} ]] && continue;
- local patchname=${x##*/};
- local a=${patchname#*_};
- a=${a%%_*};
- if ! [[ ${SINGLE_PATCH} == "yes" || ${EPATCH_FORCE} == "yes" || ${a} == all || ${a} == ${ARCH} ]]; then
- continue;
- fi;
- if [[ -n ${EPATCH_EXCLUDE}${EPATCH_USER_EXCLUDE} ]]; then
- eshopts_push -o noglob;
- local ex;
- for ex in ${EPATCH_EXCLUDE};
- do
- if [[ ${patchname} == ${ex} ]]; then
- einfo " Skipping ${patchname} due to EPATCH_EXCLUDE ...";
- eshopts_pop;
- continue 2;
- fi;
- done;
- for ex in ${EPATCH_USER_EXCLUDE};
- do
- if [[ ${patchname} == ${ex} ]]; then
- einfo " Skipping ${patchname} due to EPATCH_USER_EXCLUDE ...";
- 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 patch="patch";
- eval $(alias patch 2>/dev/null | sed 's:^alias ::');
- local STDERR_TARGET="${T}/${patchname}.out";
- if [[ -e ${STDERR_TARGET} ]]; then
- STDERR_TARGET="${T}/${patchname}-$$.out";
- fi;
- printf "***** %s *****\nPWD: %s\nPATCH TOOL: %s -> %s\nVERSION INFO:\n%s\n\n" "${patchname}" "${PWD}" "${patch}" "$(type -P "${patch}")" "$(${patch} --version)" > "${STDERR_TARGET}";
- local count=0;
- local PATCH_TARGET;
- if [[ -n ${PIPE_CMD} ]]; then
- PATCH_TARGET="${T}/$$.patch";
- echo "PIPE_COMMAND: ${PIPE_CMD} ${x} > ${PATCH_TARGET}" >> "${STDERR_TARGET}";
- if ! ( ${PIPE_CMD} "${x}" > "${PATCH_TARGET}" ) >> "${STDERR_TARGET}" 2>&1; then
- echo;
- eerror "Could not extract patch!";
- count=5;
- break;
- fi;
- else
- PATCH_TARGET=${x};
- fi;
- local abs_paths=$(egrep -n '^[-+]{3} /' "${PATCH_TARGET}" | awk '$2 != "/dev/null" { print }');
- if [[ -n ${abs_paths} ]]; then
- count=1;
- printf "NOTE: skipping -p0 due to absolute paths in patch:\n%s\n" "${abs_paths}" >> "${STDERR_TARGET}";
- fi;
- local rel_paths=$(egrep -n '^[-+]{3} [^ ]*[.][.]/' "${PATCH_TARGET}");
- if [[ -n ${rel_paths} ]]; then
- echo;
- eerror "Rejected Patch: ${patchname} !";
- eerror " ( ${PATCH_TARGET} )";
- eerror;
- eerror "Your patch uses relative paths '../':";
- eerror "${rel_paths}";
- echo;
- die "you need to fix the relative paths in patch";
- fi;
- local patch_cmd;
- while [[ ${count} -lt 5 ]]; do
- patch_cmd="${patch} -p${count} ${EPATCH_OPTS}";
- ( _epatch_draw_line "***** ${patchname} *****";
- echo;
- echo "PATCH COMMAND: ${patch_cmd} --dry-run -f < '${PATCH_TARGET}'";
- echo;
- _epatch_draw_line "***** ${patchname} *****";
- ${patch_cmd} --dry-run -f < "${PATCH_TARGET}" 2>&1;
- ret=$?;
- echo;
- echo "patch program exited with status ${ret}";
- exit ${ret} ) >> "${STDERR_TARGET}";
- if [ $? -eq 0 ]; then
- ( _epatch_draw_line "***** ${patchname} *****";
- echo;
- echo "ACTUALLY APPLYING ${patchname} ...";
- echo "PATCH COMMAND: ${patch_cmd} < '${PATCH_TARGET}'";
- echo;
- _epatch_draw_line "***** ${patchname} *****";
- ${patch_cmd} < "${PATCH_TARGET}" 2>&1;
- ret=$?;
- echo;
- echo "patch program exited with status ${ret}";
- exit ${ret} ) >> "${STDERR_TARGET}";
- if [ $? -ne 0 ]; then
- echo;
- eerror "A dry-run of patch command succeeded, but actually";
- eerror "applying the patch failed!";
- count=5;
- fi;
- break;
- fi;
- : $(( count++ ));
- done;
- (( EPATCH_N_APPLIED_PATCHES++ ));
- if [[ -n ${PIPE_CMD} ]]; then
- rm -f "${PATCH_TARGET}";
- fi;
- if [[ ${count} -ge 5 ]]; then
- echo;
- eerror "Failed Patch: ${patchname} !";
- eerror " ( ${PATCH_TARGET} )";
- eerror;
- eerror "Include in your bugreport the contents of:";
- eerror;
- eerror " ${STDERR_TARGET}";
- echo;
- die "Failed Patch: ${patchname}!";
- fi;
- rm -f "${STDERR_TARGET}";
- cat >> "${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;
- for check in ${CATEGORY}/{${P}-${PR},${P},${PN}}{,:${SLOT%/*}};
- do
- EPATCH_SOURCE=${EPATCH_USER_SOURCE}/${CTARGET}/${check};
- [[ -r ${EPATCH_SOURCE} ]] || EPATCH_SOURCE=${EPATCH_USER_SOURCE}/${CHOST}/${check};
- [[ -r ${EPATCH_SOURCE} ]] || EPATCH_SOURCE=${EPATCH_USER_SOURCE}/${check};
- if [[ -d ${EPATCH_SOURCE} ]]; then
- local old_n_applied_patches=${EPATCH_N_APPLIED_PATCHES:-0};
- EPATCH_SOURCE=${EPATCH_SOURCE} EPATCH_SUFFIX="patch" EPATCH_FORCE="yes" EPATCH_MULTI_MSG="Applying user patches from ${EPATCH_SOURCE} ..." epatch;
- echo "${EPATCH_SOURCE}" > "${applied}";
- if [[ ${old_n_applied_patches} -lt ${EPATCH_N_APPLIED_PATCHES} ]]; then
- has epatch_user_death_notice ${EBUILD_DEATH_HOOKS} || EBUILD_DEATH_HOOKS+=" epatch_user_death_notice";
- fi;
- return 0;
- fi;
- done;
- echo "none" > "${applied}";
- return 1
- }
- epatch_user_death_notice ()
- {
- ewarn "!!! User patches were applied to this build!"
- }
- epause ()
- {
- ewarn "QA Notice: epause is not defined in EAPI=${EAPI}, please file a bug at https://bugs.gentoo.org"
- }
- epunt_cxx ()
- {
- local dir=$1;
- [[ -z ${dir} ]] && dir=${S};
- ebegin "Removing useless C++ checks";
- local f p any_found;
- while IFS= read -r -d '' f; do
- for p in "$(eutils_elt_patch_dir)"/nocxx/*.patch;
- do
- if patch --no-backup-if-mismatch -p1 "${f}" "${p}" > /dev/null; then
- any_found=1;
- break;
- fi;
- done;
- done < <(find "${dir}" -name configure -print0);
- if [[ -z ${any_found} ]]; then
- eqawarn "epunt_cxx called unnecessarily (no C++ checks to punt).";
- fi;
- eend 0
- }
- eqmake4 ()
- {
- debug-print-function ${FUNCNAME} "$@";
- has "${EAPI:-0}" 0 1 2 && use !prefix && EPREFIX=;
- ebegin "Running qmake";
- local qmake_args=("$@");
- local regexp='.*\.pro';
- if ! [[ ${1} =~ ${regexp} ]]; then
- local project_file=$(qmake-utils_find_pro_file);
- if [[ -z ${project_file} ]]; then
- echo;
- eerror "No project files found in '${PWD}'";
- eerror "This shouldn't happen - please send a bug report to https://bugs.gentoo.org/";
- echo;
- die "eqmake4 failed";
- fi;
- qmake_args+=("${project_file}");
- fi;
- local config_add=release;
- local config_remove=debug;
- if use_if_iuse debug; then
- config_add=debug;
- config_remove=release;
- fi;
- local awkscript='BEGIN {
- printf "### eqmake4 was here ###\n" > file;
- printf "CONFIG -= debug_and_release %s\n", remove >> file;
- printf "CONFIG += %s\n\n", add >> file;
- fixed=0;
- }
- /^[[:blank:]]*CONFIG[[:blank:]]*[\+\*]?=/ {
- if (gsub("\\<((" remove ")|(debug_and_release))\\>", "") > 0) {
- fixed=1;
- }
- }
- /^[[:blank:]]*CONFIG[[:blank:]]*-=/ {
- if (gsub("\\<" add "\\>", "") > 0) {
- fixed=1;
- }
- }
- {
- print >> file;
- }
- END {
- print fixed;
- }';
- [[ -n ${EQMAKE4_EXCLUDE} ]] && eshopts_push -o noglob;
- local file;
- while read file; do
- local excl;
- for excl in ${EQMAKE4_EXCLUDE};
- do
- [[ ${file} == ${excl} ]] && continue 2;
- done;
- grep -q '^### eqmake4 was here ###$' "${file}" && continue;
- local retval=$({
- rm -f "${file}" || echo FAIL
- awk -v file="${file}" -v add=${config_add} -v remove=${config_remove} -- "${awkscript}" || echo FAIL
- } < "${file}");
- if [[ ${retval} == 1 ]]; then
- einfo " - fixed CONFIG in ${file}";
- else
- if [[ ${retval} != 0 ]]; then
- eerror " - error while processing ${file}";
- die "eqmake4 failed to process ${file}";
- fi;
- fi;
- done < <(find . -type f -name '*.pr[io]' -printf '%P\n' 2>/dev/null);
- [[ -n ${EQMAKE4_EXCLUDE} ]] && eshopts_pop;
- "$(qt4_get_bindir)"/qmake -makefile QMAKE_AR="$(tc-getAR) cqs" QMAKE_CC="$(tc-getCC)" QMAKE_CXX="$(tc-getCXX)" QMAKE_LINK="$(tc-getCXX)" QMAKE_LINK_C="$(tc-getCC)" QMAKE_OBJCOPY="$(tc-getOBJCOPY)" QMAKE_RANLIB= QMAKE_STRIP= QMAKE_CFLAGS="${CFLAGS}" QMAKE_CFLAGS_RELEASE= QMAKE_CFLAGS_DEBUG= QMAKE_CXXFLAGS="${CXXFLAGS}" QMAKE_CXXFLAGS_RELEASE= QMAKE_CXXFLAGS_DEBUG= QMAKE_LFLAGS="${LDFLAGS}" QMAKE_LFLAGS_RELEASE= QMAKE_LFLAGS_DEBUG= QMAKE_LIBDIR_QT="${EPREFIX}$(qt4_get_libdir)" QMAKE_LIBDIR_X11="${EPREFIX}/usr/$(get_libdir)" QMAKE_LIBDIR_OPENGL="${EPREFIX}/usr/$(get_libdir)" "${qmake_args[@]}";
- if ! eend $?; then
- echo;
- eerror "Running qmake has failed! (see above for details)";
- eerror "This shouldn't happen - please send a bug report to https://bugs.gentoo.org/";
- echo;
- die "eqmake4 failed";
- fi
- }
- eqmake5 ()
- {
- debug-print-function ${FUNCNAME} "$@";
- ebegin "Running qmake";
- "$(qt5_get_bindir)"/qmake -makefile QMAKE_AR="$(tc-getAR) cqs" QMAKE_CC="$(tc-getCC)" QMAKE_LINK_C="$(tc-getCC)" QMAKE_LINK_C_SHLIB="$(tc-getCC)" QMAKE_CXX="$(tc-getCXX)" QMAKE_LINK="$(tc-getCXX)" QMAKE_LINK_SHLIB="$(tc-getCXX)" QMAKE_OBJCOPY="$(tc-getOBJCOPY)" QMAKE_RANLIB= QMAKE_STRIP= QMAKE_CFLAGS="${CFLAGS}" QMAKE_CFLAGS_RELEASE= QMAKE_CFLAGS_DEBUG= QMAKE_CXXFLAGS="${CXXFLAGS}" QMAKE_CXXFLAGS_RELEASE= QMAKE_CXXFLAGS_DEBUG= QMAKE_LFLAGS="${LDFLAGS}" QMAKE_LFLAGS_RELEASE= QMAKE_LFLAGS_DEBUG= "$@";
- if ! eend $?; then
- echo;
- eerror "Running qmake has failed! (see above for details)";
- eerror "This shouldn't happen - please send a bug report to https://bugs.gentoo.org/";
- echo;
- die "eqmake5 failed";
- fi
- }
- 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 ()
- {
- [[ $# -eq 0 ]] && set -- .;
- find "$@" -type d -name '.svn' -prune -print0 | xargs -0 rm -rf
- }
- eumask_pop ()
- {
- [[ $# -eq 0 ]] || die "${FUNCNAME}: we take no options";
- local s;
- estack_pop eumask s || die "${FUNCNAME}: unbalanced push";
- umask ${s} || die "${FUNCNAME}: sanity: could not restore umask: ${s}"
- }
- eumask_push ()
- {
- estack_push eumask "$(umask)";
- umask "$@" || die "${FUNCNAME}: bad options to umask: $*"
- }
- eutils_elt_patch_dir ()
- {
- local d="${ECLASSDIR}/ELT-patches";
- if [[ ! -d ${d} ]]; then
- d="${_EUTILS_ECLASSDIR_LOCAL}/ELT-patches";
- fi;
- echo "${d}"
- }
- evar_pop ()
- {
- local cnt=${1:-bad};
- case $# in
- 0)
- cnt=1
- ;;
- 1)
- isdigit "${cnt}" || die "${FUNCNAME}: first arg must be a number: $*"
- ;;
- *)
- die "${FUNCNAME}: only accepts one arg: $*"
- ;;
- esac;
- local var val;
- while (( cnt-- )); do
- estack_pop evar val || die "${FUNCNAME}: unbalanced push";
- estack_pop evar var || die "${FUNCNAME}: unbalanced push";
- [[ ${val} == "unset_76fc3c462065bb4ca959f939e6793f94" ]] && unset ${var} || printf -v "${var}" '%s' "${val}";
- done
- }
- evar_push ()
- {
- local var val;
- for var in "$@";
- do
- [[ ${!var+set} == "set" ]] && val=${!var} || val="unset_76fc3c462065bb4ca959f939e6793f94";
- estack_push evar "${var}" "${val}";
- done
- }
- evar_push_set ()
- {
- local var=$1;
- evar_push ${var};
- case $# in
- 1)
- unset ${var}
- ;;
- 2)
- printf -v "${var}" '%s' "$2"
- ;;
- *)
- die "${FUNCNAME}: incorrect # of args: $*"
- ;;
- esac
- }
- fdo-mime_desktop_database_update ()
- {
- has "${EAPI:-0}" 0 1 2 && ! use prefix && EPREFIX=;
- has "${EAPI:-0}" 0 1 2 && ! use prefix && EROOT="${ROOT}";
- if [ -x "${EPREFIX}/usr/bin/update-desktop-database" ]; then
- einfo "Updating desktop mime database ...";
- "${EPREFIX}/usr/bin/update-desktop-database" -q "${EROOT}usr/share/applications";
- fi
- }
- fdo-mime_mime_database_update ()
- {
- has "${EAPI:-0}" 0 1 2 && ! use prefix && EPREFIX=;
- has "${EAPI:-0}" 0 1 2 && ! use prefix && EROOT="${ROOT}";
- if [ -x "${EPREFIX}/usr/bin/update-mime-database" ]; then
- einfo "Updating shared mime info database ...";
- "${EPREFIX}/usr/bin/update-mime-database" "${EROOT}usr/share/mime";
- fi
- }
- filter-flags ()
- {
- _filter-hardened "$@";
- local v;
- for v in $(all-flag-vars);
- do
- _filter-var ${v} "$@";
- done;
- return 0
- }
- filter-ldflags ()
- {
- _filter-var LDFLAGS "$@";
- return 0
- }
- filter-lfs-flags ()
- {
- [[ $# -ne 0 ]] && die "filter-lfs-flags takes no arguments";
- filter-flags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
- }
- filter-mfpmath ()
- {
- local orig_mfpmath new_math prune_math;
- orig_mfpmath=$(get-flag -mfpmath);
- new_math=$(get-flag mfpmath);
- new_math=${new_math/both/387,sse};
- new_math=" ${new_math//[,+]/ } ";
- prune_math="";
- for prune_math in "$@";
- do
- new_math=${new_math/ ${prune_math} / };
- done;
- new_math=$(echo ${new_math});
- new_math=${new_math// /,};
- if [[ -z ${new_math} ]]; then
- filter-flags ${orig_mfpmath};
- else
- replace-flags ${orig_mfpmath} -mfpmath=${new_math};
- fi;
- return 0
- }
- gcc-fullversion ()
- {
- _gcc_fullversion '$1.$2.$3' "$@"
- }
- gcc-major-version ()
- {
- _gcc_fullversion '$1' "$@"
- }
- gcc-micro-version ()
- {
- _gcc_fullversion '$3' "$@"
- }
- gcc-minor-version ()
- {
- _gcc_fullversion '$2' "$@"
- }
- gcc-specs-directive ()
- {
- local directive subdname subdirective;
- directive="$(_gcc-specs-directive_raw $1)";
- while [[ ${directive} == *%\(*\)* ]]; do
- subdname=${directive/*%\(};
- subdname=${subdname/\)*};
- subdirective="$(_gcc-specs-directive_raw ${subdname})";
- directive="${directive//\%(${subdname})/${subdirective}}";
- done;
- echo "${directive}";
- return 0
- }
- gcc-specs-nostrict ()
- {
- local directive;
- directive=$(gcc-specs-directive cc1);
- [[ "${directive/\{!fstrict-overflow:}" != "${directive}" ]]
- }
- gcc-specs-now ()
- {
- local directive;
- directive=$(gcc-specs-directive link_command);
- [[ "${directive/\{!nonow:}" != "${directive}" ]]
- }
- gcc-specs-pie ()
- {
- local directive;
- directive=$(gcc-specs-directive cc1);
- [[ "${directive/\{!nopie:}" != "${directive}" ]]
- }
- gcc-specs-relro ()
- {
- local directive;
- directive=$(gcc-specs-directive link_command);
- [[ "${directive/\{!norelro:}" != "${directive}" ]]
- }
- gcc-specs-ssp ()
- {
- local directive;
- directive=$(gcc-specs-directive cc1);
- [[ "${directive/\{!fno-stack-protector:}" != "${directive}" ]]
- }
- gcc-specs-ssp-to-all ()
- {
- local directive;
- directive=$(gcc-specs-directive cc1);
- [[ "${directive/\{!fno-stack-protector-all:}" != "${directive}" ]]
- }
- gcc-specs-stack-check ()
- {
- local directive;
- directive=$(gcc-specs-directive cc1);
- [[ "${directive/\{!fno-stack-check:}" != "${directive}" ]]
- }
- gcc-version ()
- {
- _gcc_fullversion '$1.$2' "$@"
- }
- gen_usr_ldscript ()
- {
- local lib libdir=$(get_libdir) output_format="" auto=false suffix=$(get_libname);
- [[ -z ${ED+set} ]] && local ED=${D%/}${EPREFIX}/;
- tc-is-static-only && return;
- if [[ $(type -t multilib_is_native_abi) == "function" ]]; then
- multilib_is_native_abi || return 0;
- fi;
- case ${CTARGET:-${CHOST}} in
- *-darwin*)
- ;;
- *-android*)
- return 0
- ;;
- *linux* | *-freebsd* | *-openbsd* | *-netbsd*)
- use prefix && return 0
- ;;
- *)
- return 0
- ;;
- esac;
- dodir /usr/${libdir};
- if [[ $1 == "-a" ]]; then
- auto=true;
- shift;
- dodir /${libdir};
- fi;
- local flags=(${CFLAGS} ${LDFLAGS} -Wl,--verbose);
- if $(tc-getLD) --version | grep -q 'GNU gold'; then
- local d="${T}/bfd-linker";
- mkdir -p "${d}";
- ln -sf $(which ${CHOST}-ld.bfd) "${d}"/ld;
- flags+=(-B"${d}");
- fi;
- output_format=$($(tc-getCC) "${flags[@]}" 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/\1/p');
- [[ -n ${output_format} ]] && output_format="OUTPUT_FORMAT ( ${output_format} )";
- for lib in "$@";
- do
- local tlib;
- if ${auto}; then
- lib="lib${lib}${suffix}";
- else
- [[ -r ${ED}/${libdir}/${lib} ]] || continue;
- fi;
- case ${CTARGET:-${CHOST}} in
- *-darwin*)
- if ${auto}; then
- tlib=$(scanmacho -qF'%S#F' "${ED}"/usr/${libdir}/${lib});
- else
- tlib=$(scanmacho -qF'%S#F' "${ED}"/${libdir}/${lib});
- fi;
- [[ -z ${tlib} ]] && die "unable to read install_name from ${lib}";
- tlib=${tlib##*/};
- if ${auto}; then
- mv "${ED}"/usr/${libdir}/${lib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die;
- if [[ ${tlib} != ${lib%${suffix}}.*${suffix#.} ]]; then
- mv "${ED}"/usr/${libdir}/${tlib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die;
- fi;
- rm -f "${ED}"/${libdir}/${lib};
- fi;
- if [[ ! -w "${ED}/${libdir}/${tlib}" ]]; then
- chmod u+w "${ED}${libdir}/${tlib}";
- local nowrite=yes;
- fi;
- install_name_tool -id "${EPREFIX}"/${libdir}/${tlib} "${ED}"/${libdir}/${tlib} || die "install_name_tool failed";
- [[ -n ${nowrite} ]] && chmod u-w "${ED}${libdir}/${tlib}";
- pushd "${ED}/usr/${libdir}" > /dev/null;
- ln -snf "../../${libdir}/${tlib}" "${lib}";
- popd > /dev/null
- ;;
- *)
- if ${auto}; then
- tlib=$(scanelf -qF'%S#F' "${ED}"/usr/${libdir}/${lib});
- [[ -z ${tlib} ]] && die "unable to read SONAME from ${lib}";
- mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die;
- if [[ ${tlib} != ${lib}* ]]; then
- mv "${ED}"/usr/${libdir}/${tlib}* "${ED}"/${libdir}/ || die;
- fi;
- rm -f "${ED}"/${libdir}/${lib};
- else
- tlib=${lib};
- fi;
- cat > "${ED}/usr/${libdir}/${lib}" <<-END_LDSCRIPT
- /* GNU ld script
- Since Gentoo has critical dynamic libraries in /lib, and the static versions
- in /usr/lib, we need to have a "fake" dynamic lib in /usr/lib, otherwise we
- run into linking problems. This "fake" dynamic lib is a linker script that
- redirects the linker to the real lib. And yes, this works in the cross-
- compiling scenario as the sysroot-ed linker will prepend the real path.
- See bug https://bugs.gentoo.org/4411 for more info.
- */
- ${output_format}
- GROUP ( ${EPREFIX}/${libdir}/${tlib} )
- END_LDSCRIPT
- ;;
- esac
- fperms a+x "/usr/${libdir}/${lib}" || die "could not change perms on ${lib}";
- done
- }
- get-flag ()
- {
- local f var findflag="$1";
- for var in $(all-flag-vars);
- do
- for f in ${!var};
- do
- if [ "${f/${findflag}}" != "${f}" ]; then
- printf "%s\n" "${f/-${findflag}=}";
- return 0;
- fi;
- done;
- done;
- return 1
- }
- get_abi_CFLAGS ()
- {
- get_abi_var CFLAGS "$@"
- }
- get_abi_CHOST ()
- {
- get_abi_var CHOST "$@"
- }
- get_abi_CTARGET ()
- {
- get_abi_var CTARGET "$@"
- }
- get_abi_FAKE_TARGETS ()
- {
- get_abi_var FAKE_TARGETS "$@"
- }
- get_abi_LDFLAGS ()
- {
- get_abi_var LDFLAGS "$@"
- }
- get_abi_LIBDIR ()
- {
- get_abi_var LIBDIR "$@"
- }
- get_abi_var ()
- {
- local flag=$1;
- local abi=${2:-${ABI:-${DEFAULT_ABI:-default}}};
- local var="${flag}_${abi}";
- echo ${!var}
- }
- get_after_major_version ()
- {
- echo $(get_version_component_range 2- "${1:-${PV}}")
- }
- get_all_abis ()
- {
- local x order="" mvar dvar;
- mvar="MULTILIB_ABIS";
- dvar="DEFAULT_ABI";
- if [[ -n $1 ]]; then
- mvar="$1_${mvar}";
- dvar="$1_${dvar}";
- fi;
- if [[ -z ${!mvar} ]]; then
- echo "default";
- return 0;
- fi;
- for x in ${!mvar};
- do
- if [[ ${x} != ${!dvar} ]]; then
- order="${order:+${order} }${x}";
- fi;
- done;
- order="${order:+${order} }${!dvar}";
- echo ${order};
- return 0
- }
- get_all_libdirs ()
- {
- local libdirs abi;
- for abi in ${MULTILIB_ABIS};
- do
- libdirs+=" $(get_abi_LIBDIR ${abi})";
- done;
- [[ " ${libdirs} " != *" lib "* ]] && libdirs+=" lib";
- echo "${libdirs}"
- }
- get_all_version_components ()
- {
- eshopts_push -s extglob;
- local ver_str=${1:-${PV}} result;
- result=();
- if [[ ${VERSIONATOR_CACHE_VER_STR} == ${ver_str} ]]; then
- echo ${VERSIONATOR_CACHE_RESULT};
- eshopts_pop;
- return;
- fi;
- export VERSIONATOR_CACHE_VER_STR=${ver_str};
- while [[ -n $ver_str ]]; do
- case "${ver_str::1}" in
- [[:digit:]])
- result+=("${ver_str%%[^[:digit:]]*}");
- ver_str=${ver_str##+([[:digit:]])}
- ;;
- [-_.])
- result+=("${ver_str::1}");
- ver_str=${ver_str:1}
- ;;
- [[:alpha:]])
- local not_match=${ver_str##+([[:alpha:]])*([[:digit:]])};
- result+=("${ver_str::${#ver_str} - ${#not_match}}");
- ver_str=${not_match}
- ;;
- *)
- result+=("${ver_str::1}");
- ver_str=${ver_str:1}
- ;;
- esac;
- done;
- export VERSIONATOR_CACHE_RESULT=${result[*]};
- echo ${result[@]};
- eshopts_pop
- }
- get_exeext ()
- {
- case ${CHOST} in
- *-cygwin* | mingw* | *-mingw*)
- echo ".exe"
- ;;
- esac
- }
- get_install_abis ()
- {
- local x order="";
- if [[ -z ${MULTILIB_ABIS} ]]; then
- echo "default";
- return 0;
- fi;
- if [[ ${EMULTILIB_PKG} == "true" ]]; then
- for x in ${MULTILIB_ABIS};
- do
- if [[ ${x} != "${DEFAULT_ABI}" ]]; then
- has ${x} ${ABI_DENY} || order="${order} ${x}";
- fi;
- done;
- has ${DEFAULT_ABI} ${ABI_DENY} || order="${order} ${DEFAULT_ABI}";
- if [[ -n ${ABI_ALLOW} ]]; then
- local ordera="";
- for x in ${order};
- do
- if has ${x} ${ABI_ALLOW}; then
- ordera="${ordera} ${x}";
- fi;
- done;
- order=${ordera};
- fi;
- else
- order=${DEFAULT_ABI};
- fi;
- if [[ -z ${order} ]]; then
- die "The ABI list is empty. Are you using a proper multilib profile? Perhaps your USE flags or MULTILIB_ABIS are too restrictive for this package.";
- fi;
- echo ${order};
- return 0
- }
- get_last_version_component_index ()
- {
- echo $(($(get_version_component_count "${1:-${PV}}" ) - 1))
- }
- get_libdir ()
- {
- local 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*)
- libname="dll.a"
- ;;
- mingw* | *-mingw*)
- libname="dll"
- ;;
- *-darwin*)
- libname="dylib"
- ;;
- *-mint*)
- libname="irrelevant"
- ;;
- hppa*-hpux*)
- libname="sl"
- ;;
- *)
- libname="so"
- ;;
- esac;
- if [[ -z $* ]]; then
- echo ".${libname}";
- else
- for ver in "$@";
- do
- case ${CHOST} in
- *-cygwin*)
- echo ".${ver}.${libname}"
- ;;
- *-darwin*)
- echo ".${ver}.${libname}"
- ;;
- *-mint*)
- echo ".${libname}"
- ;;
- *)
- echo ".${libname}.${ver}"
- ;;
- esac;
- done;
- fi
- }
- get_localversion ()
- {
- local lv_list i x;
- for i in $(ls ${1}/localversion* 2>/dev/null);
- do
- [[ -n ${i//*~*} ]] && lv_list="${lv_list} ${i}";
- done;
- for i in ${lv_list};
- do
- x="${x}$(<${i})";
- done;
- x=${x/ /};
- echo ${x}
- }
- get_major_version ()
- {
- local c=($(get_all_version_components "${1:-${PV}}"));
- echo ${c[0]}
- }
- get_makefile_extract_function ()
- {
- local a='' b='' mkfunc='getfilevar';
- a="$(getfilevar VERSION ${KERNEL_MAKEFILE})";
- b="$(getfilevar_noexec VERSION ${KERNEL_MAKEFILE})";
- [[ "${a}" != "${b}" ]] && mkfunc='getfilevar_noexec';
- echo "${mkfunc}"
- }
- get_modname ()
- {
- local modname;
- local ver=$1;
- case ${CHOST} in
- *-darwin*)
- modname="bundle"
- ;;
- *)
- modname="so"
- ;;
- esac;
- echo ".${modname}"
- }
- get_running_version ()
- {
- KV_FULL=$(uname -r);
- if [[ -f ${ROOT}/lib/modules/${KV_FULL}/source/Makefile && -f ${ROOT}/lib/modules/${KV_FULL}/build/Makefile ]]; then
- KERNEL_DIR=$(readlink -f ${ROOT}/lib/modules/${KV_FULL}/source);
- KBUILD_OUTPUT=$(readlink -f ${ROOT}/lib/modules/${KV_FULL}/build);
- unset KV_FULL;
- get_version;
- return $?;
- else
- if [[ -f ${ROOT}/lib/modules/${KV_FULL}/source/Makefile ]]; then
- KERNEL_DIR=$(readlink -f ${ROOT}/lib/modules/${KV_FULL}/source);
- unset KV_FULL;
- get_version;
- return $?;
- else
- if [[ -f ${ROOT}/lib/modules/${KV_FULL}/build/Makefile ]]; then
- KERNEL_DIR=$(readlink -f ${ROOT}/lib/modules/${KV_FULL}/build);
- unset KV_FULL;
- get_version;
- return $?;
- else
- local kv_full=${KV_FULL//[-+_]*};
- KV_MAJOR=$(get_version_component_range 1 ${kv_full});
- KV_MINOR=$(get_version_component_range 2 ${kv_full});
- KV_PATCH=$(get_version_component_range 3 ${kv_full});
- KV_EXTRA="${KV_FULL#${KV_MAJOR}.${KV_MINOR}${KV_PATCH:+.${KV_PATCH}}}";
- : ${KV_PATCH:=0};
- fi;
- fi;
- fi;
- return 0
- }
- get_udevdir ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- echo "$(_udev_get_udevdir)"
- }
- get_version ()
- {
- local tmplocal;
- [ -n "${KV_FULL}" ] && return 0;
- unset KV_DIR;
- [ -z "${get_version_warning_done}" ] && qeinfo "Determining the location of the kernel source code";
- [ -d "${KERNEL_DIR}" ] && KV_DIR="${KERNEL_DIR}";
- if [ -z "${KV_DIR}" ]; then
- if [ -z "${get_version_warning_done}" ]; then
- get_version_warning_done=1;
- qewarn "Unable to find kernel sources at ${KERNEL_DIR}";
- if [ "${KERNEL_DIR}" == "/usr/src/linux" ]; then
- qeinfo "Please make sure that ${KERNEL_DIR} points at your running kernel, ";
- qeinfo "(or the kernel you wish to build against).";
- qeinfo "Alternatively, set the KERNEL_DIR environment variable to the kernel sources location";
- else
- qeinfo "Please ensure that the KERNEL_DIR environment variable points at full Linux sources of the kernel you wish to compile against.";
- fi;
- fi;
- return 1;
- fi;
- if [ -z "${KBUILD_OUTPUT}" -a -L "${KERNEL_DIR}/source" ]; then
- KBUILD_OUTPUT=${KERNEL_DIR};
- KERNEL_DIR=$(readlink -f "${KERNEL_DIR}/source");
- KV_DIR=${KERNEL_DIR};
- fi;
- if [ -z "${get_version_warning_done}" ]; then
- qeinfo "Found kernel source directory:";
- qeinfo " ${KV_DIR}";
- fi;
- if [ ! -s "${KV_DIR}/Makefile" ]; then
- if [ -z "${get_version_warning_done}" ]; then
- get_version_warning_done=1;
- qeerror "Could not find a Makefile in the kernel source directory.";
- qeerror "Please ensure that ${KERNEL_DIR} points to a complete set of Linux sources";
- fi;
- return 1;
- fi;
- local OUTPUT_DIR=${KBUILD_OUTPUT};
- KERNEL_MAKEFILE="${KV_DIR}/Makefile";
- if [[ -z ${OUTPUT_DIR} ]]; then
- local mkfunc=$(get_makefile_extract_function "${KERNEL_MAKEFILE}");
- OUTPUT_DIR=$(${mkfunc} KBUILD_OUTPUT "${KERNEL_MAKEFILE}");
- fi;
- KV_MAJOR=$(getfilevar_noexec VERSION "${KERNEL_MAKEFILE}");
- KV_MINOR=$(getfilevar_noexec PATCHLEVEL "${KERNEL_MAKEFILE}");
- KV_PATCH=$(getfilevar_noexec SUBLEVEL "${KERNEL_MAKEFILE}");
- KV_EXTRA=$(getfilevar_noexec EXTRAVERSION "${KERNEL_MAKEFILE}");
- if [ -z "${KV_MAJOR}" -o -z "${KV_MINOR}" -o -z "${KV_PATCH}" ]; then
- if [ -z "${get_version_warning_done}" ]; then
- get_version_warning_done=1;
- qeerror "Could not detect kernel version.";
- qeerror "Please ensure that ${KERNEL_DIR} points to a complete set of Linux sources.";
- fi;
- return 1;
- fi;
- if [[ -z ${OUTPUT_DIR} ]]; then
- for OUTPUT_DIR in "${SYSROOT}" "${ROOT}" "";
- do
- OUTPUT_DIR+="/lib/modules/${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${KV_EXTRA}/build";
- if [[ -e ${OUTPUT_DIR} ]]; then
- break;
- fi;
- done;
- fi;
- [ -d "${OUTPUT_DIR}" ] && KV_OUT_DIR="${OUTPUT_DIR}";
- if [ -n "${KV_OUT_DIR}" ]; then
- qeinfo "Found kernel object directory:";
- qeinfo " ${KV_OUT_DIR}";
- fi;
- KV_OUT_DIR="${KV_OUT_DIR:-${KV_DIR}}";
- if [ -s "${KV_OUT_DIR}"/include/config/kernel.release ]; then
- KV_LOCAL=$(<"${KV_OUT_DIR}"/include/config/kernel.release);
- else
- if [ -s "${KV_OUT_DIR}"/.kernelrelease ]; then
- KV_LOCAL=$(<"${KV_OUT_DIR}"/.kernelrelease);
- else
- KV_LOCAL=;
- fi;
- fi;
- tmplocal=${KV_LOCAL#${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${KV_EXTRA}};
- if [ "$KV_LOCAL" = "$tmplocal" ]; then
- KV_LOCAL=;
- else
- KV_LOCAL=$tmplocal;
- fi;
- KV_FULL="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${KV_EXTRA}${KV_LOCAL}";
- qeinfo "Found sources for kernel version:";
- qeinfo " ${KV_FULL}";
- return 0
- }
- get_version_component_count ()
- {
- local a=($(get_version_components "${1:-${PV}}"));
- echo ${#a[@]}
- }
- get_version_component_range ()
- {
- eshopts_push -s extglob;
- local c v="${2:-${PV}}" range="${1}" range_start range_end;
- local -i i=-1 j=0;
- c=($(get_all_version_components "${v}"));
- range_start=${range%-*};
- range_start=${range_start:-1};
- range_end=${range#*-};
- range_end=${range_end:-${#c[@]}};
- while ((j < range_start)); do
- i+=1;
- ((i > ${#c[@]})) && eshopts_pop && return;
- [[ -n "${c[i]//[-._]}" ]] && j+=1;
- done;
- while ((j <= range_end)); do
- echo -n ${c[i]};
- ((i > ${#c[@]})) && eshopts_pop && return;
- [[ -n "${c[i]//[-._]}" ]] && j+=1;
- i+=1;
- done;
- eshopts_pop
- }
- get_version_components ()
- {
- local c=$(get_all_version_components "${1:-${PV}}");
- echo ${c//[-._]/ }
- }
- getfilevar ()
- {
- local ERROR basefname basedname myARCH="${ARCH}" M="${S}";
- ERROR=0;
- [ -z "${1}" ] && ERROR=1;
- [ ! -f "${2}" ] && ERROR=1;
- if [ "${ERROR}" = 1 ]; then
- echo -e "\n";
- eerror "getfilevar requires 2 variables, with the second a valid file.";
- eerror " getfilevar <VARIABLE> <CONFIGFILE>";
- else
- basefname="$(basename ${2})";
- basedname="$(dirname ${2})";
- unset ARCH;
- [[ ${EAPI:-0} == [0123] ]] && function nonfatal ()
- {
- "$@"
- };
- case ${EBUILD_PHASE_FUNC} in
- pkg_info | pkg_nofetch | pkg_pretend)
- M="${T}"
- ;;
- esac;
- echo -e "e:\\n\\t@echo \$(${1})\\ninclude ${basefname}" | nonfatal emake -C "${basedname}" M="${M}" ${BUILD_FIXES} -s -f - 2> /dev/null;
- ARCH=${myARCH};
- fi
- }
- getfilevar_noexec ()
- {
- local ERROR basefname basedname mycat myARCH="${ARCH}";
- ERROR=0;
- mycat='cat';
- [ -z "${1}" ] && ERROR=1;
- [ ! -f "${2}" ] && ERROR=1;
- [ "${2%.gz}" != "${2}" ] && mycat='zcat';
- if [ "${ERROR}" = 1 ]; then
- echo -e "\n";
- eerror "getfilevar_noexec requires 2 variables, with the second a valid file.";
- eerror " getfilevar_noexec <VARIABLE> <CONFIGFILE>";
- else
- ${mycat} "${2}" | sed -n -e "/^[[:space:]]*${1}[[:space:]]*:\\?=[[:space:]]*\(.*\)\$/{
- s,^[^=]*[[:space:]]*=[[:space:]]*,,g ;
- s,[[:space:]]*\$,,g ;
- p
- }";
- fi
- }
- 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/ /}" ]
- }
- host-is-pax ()
- {
- grep -qs ^PaX: /proc/self/status
- }
- in_iuse ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- [[ ${#} -eq 1 ]] || die "Invalid args to ${FUNCNAME}()";
- local flag=${1};
- local liuse=(${IUSE});
- has "${flag}" "${liuse[@]#[+-]}"
- }
- increment-qa-violations ()
- {
- let "JAVA_PKG_QA_VIOLATIONS+=1";
- export JAVA_PKG_QA_VIOLATIONS
- }
- 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-java-strict ()
- {
- [[ -n ${JAVA_PKG_STRICT} ]];
- return $?
- }
- is-ldflag ()
- {
- is-ldflagq "$@" && echo true
- }
- is-ldflagq ()
- {
- [[ -n $2 ]] && die "Usage: is-ldflag <flag>";
- _is_flagq LDFLAGS $1
- }
- is_final_abi ()
- {
- has_multilib_profile || return 0;
- set -- $(get_install_abis);
- local LAST_ABI=$#;
- [[ ${!LAST_ABI} == ${ABI} ]]
- }
- isdigit ()
- {
- local d;
- for d in "$@";
- do
- [[ ${d:-bad} == *[!0-9]* ]] && return 1;
- done;
- return 0
- }
- java-pkg-opt-2_pkg_preinst ()
- {
- use ${JAVA_PKG_OPT_USE} && java-utils-2_pkg_preinst
- }
- java-pkg-opt-2_pkg_setup ()
- {
- use ${JAVA_PKG_OPT_USE} && java-pkg_init
- }
- java-pkg-opt-2_src_prepare ()
- {
- use ${JAVA_PKG_OPT_USE} && java-utils-2_src_prepare
- }
- java-pkg_addcp ()
- {
- java-pkg_append_ JAVA_PKG_CLASSPATH "${@}";
- java-pkg_do_write_
- }
- java-pkg_addres ()
- {
- debug-print-function ${FUNCNAME} $*;
- [[ ${#} -lt 2 ]] && die "at least two arguments needed";
- local jar=$(realpath "$1" || die "realpath $1 failed");
- local dir="$2";
- shift 2;
- pushd "${dir}" > /dev/null || die "pushd ${dir} failed";
- find -L -type f ! -path "./target/*" ! -path "./sources.lst" ! -name "MANIFEST.MF" ! -regex ".*\.\(class\|jar\|java\)" "${@}" -print0 | xargs -r0 jar uf "${jar}" || die "jar failed";
- popd > /dev/null || die "popd failed"
- }
- java-pkg_announce-qa-violation ()
- {
- local nodie;
- if [[ ${1} == "--nodie" ]]; then
- nodie="true";
- shift;
- fi;
- echo "Java QA Notice: $@" 1>&2;
- increment-qa-violations;
- [[ -z "${nodie}" ]] && is-java-strict && die "${@}"
- }
- java-pkg_ant-tasks-depend ()
- {
- debug-print-function ${FUNCNAME} ${WANT_ANT_TASKS};
- if [[ -n "${WANT_ANT_TASKS}" ]]; then
- local DEP="";
- for i in ${WANT_ANT_TASKS};
- do
- if [[ ${i} = ant-* ]]; then
- DEP="${DEP}dev-java/${i} ";
- else
- if [[ ${i} = */*:* ]]; then
- DEP="${DEP}${i} ";
- else
- echo "Invalid atom in WANT_ANT_TASKS: ${i}";
- return 1;
- fi;
- fi;
- done;
- echo ${DEP};
- return 0;
- else
- return 0;
- fi
- }
- java-pkg_append_ ()
- {
- debug-print-function ${FUNCNAME} $*;
- local var="${1}" value="${2}";
- if [[ -z "${!var}" ]]; then
- export ${var}="${value}";
- else
- local oldIFS=${IFS} cur haveit;
- IFS=':';
- for cur in ${!var};
- do
- if [[ ${cur} == ${value} ]]; then
- haveit="yes";
- break;
- fi;
- done;
- [[ -z ${haveit} ]] && export ${var}="${!var}:${value}";
- IFS=${oldIFS};
- fi
- }
- java-pkg_build-vm-from-handle ()
- {
- debug-print-function ${FUNCNAME} "$*";
- local vm;
- vm=$(java-pkg_get-current-vm 2>/dev/null);
- if [[ $? -eq 0 ]]; then
- if has ${vm} ${JAVA_PKG_WANT_BUILD_VM}; then
- echo ${vm};
- return 0;
- fi;
- fi;
- for vm in ${JAVA_PKG_WANT_BUILD_VM};
- do
- if java-config-2 --select-vm=${vm} 2> /dev/null; then
- echo ${vm};
- return 0;
- fi;
- done;
- eerror "${FUNCNAME}: No vm found for handles: ${JAVA_PKG_WANT_BUILD_VM}";
- return 1
- }
- java-pkg_check-jikes ()
- {
- if has jikes ${IUSE}; then
- java-pkg_announce-qa-violation "deprecated USE flag 'jikes' in IUSE";
- fi
- }
- java-pkg_check-phase ()
- {
- local phase=${1};
- local funcname=${FUNCNAME[1]};
- if [[ ${EBUILD_PHASE} != ${phase} ]]; then
- local msg="${funcname} used outside of src_${phase}";
- java-pkg_announce-qa-violation "${msg}";
- fi
- }
- java-pkg_check-versioned-jar ()
- {
- local jar=${1};
- if [[ ${jar} =~ ${PV} ]]; then
- java-pkg_announce-qa-violation "installing versioned jar '${jar}'";
- fi
- }
- java-pkg_clean ()
- {
- if [[ -z "${JAVA_PKG_NO_CLEAN}" ]]; then
- find "${@}" '(' -name '*.class' -o -name '*.jar' ')' -type f -delete -print || die;
- fi
- }
- java-pkg_current-vm-matches ()
- {
- has $(java-pkg_get-current-vm) ${@};
- return $?
- }
- java-pkg_die ()
- {
- echo "!!! When you file a bug report, please include the following information:" 1>&2;
- echo "GENTOO_VM=${GENTOO_VM} CLASSPATH=\"${CLASSPATH}\" JAVA_HOME=\"${JAVA_HOME}\"" 1>&2;
- echo "JAVACFLAGS=\"${JAVACFLAGS}\" COMPILER=\"${GENTOO_COMPILER}\"" 1>&2;
- echo "and of course, the output of emerge --info =${P}" 1>&2
- }
- java-pkg_do_write_ ()
- {
- debug-print-function ${FUNCNAME} $*;
- java-pkg_init_paths_;
- dodir "${JAVA_PKG_SHAREPATH}";
- ( echo "DESCRIPTION=\"${DESCRIPTION}\"";
- echo "GENERATION=\"2\"";
- echo "SLOT=\"${SLOT}\"";
- echo "CATEGORY=\"${CATEGORY}\"";
- echo "PVR=\"${PVR}\"";
- [[ -n "${JAVA_PKG_CLASSPATH}" ]] && echo "CLASSPATH=\"${JAVA_PKG_CLASSPATH}\"";
- [[ -n "${JAVA_PKG_LIBRARY}" ]] && echo "LIBRARY_PATH=\"${JAVA_PKG_LIBRARY}\"";
- [[ -n "${JAVA_PROVIDE}" ]] && echo "PROVIDES=\"${JAVA_PROVIDE}\"";
- [[ -f "${JAVA_PKG_DEPEND_FILE}" ]] && echo "DEPEND=\"$(sort -u "${JAVA_PKG_DEPEND_FILE}" | tr '\n' ':')\"";
- [[ -f "${JAVA_PKG_OPTIONAL_DEPEND_FILE}" ]] && echo "OPTIONAL_DEPEND=\"$(sort -u "${JAVA_PKG_OPTIONAL_DEPEND_FILE}" | tr '\n' ':')\"";
- echo "VM=\"$(echo ${RDEPEND} ${DEPEND} | sed -e 's/ /\n/g' | sed -n -e '/virtual\/\(jre\|jdk\)/ { p;q }')\"";
- [[ -f "${JAVA_PKG_BUILD_DEPEND_FILE}" ]] && echo "BUILD_DEPEND=\"$(sort -u "${JAVA_PKG_BUILD_DEPEND_FILE}" | tr '\n' ':')\"" ) > "${JAVA_PKG_ENV}";
- local target="$(java-pkg_get-target)";
- local source="$(java-pkg_get-source)";
- [[ -n ${target} ]] && echo "TARGET=\"${target}\"" >> "${JAVA_PKG_ENV}";
- [[ -n ${source} ]] && echo "SOURCE=\"${source}\"" >> "${JAVA_PKG_ENV}";
- [[ -n ${JAVADOC_PATH} ]] && echo "JAVADOC_PATH=\"${JAVADOC_PATH}\"" >> ${JAVA_PKG_ENV};
- [[ -n ${JAVA_SOURCES} ]] && echo "JAVA_SOURCES=\"${JAVA_SOURCES}\"" >> ${JAVA_PKG_ENV};
- echo "MERGE_VM=\"${GENTOO_VM}\"" >> "${JAVA_PKG_ENV}";
- [[ -n ${GENTOO_COMPILER} ]] && echo "MERGE_COMPILER=\"${GENTOO_COMPILER}\"" >> "${JAVA_PKG_ENV}";
- if [[ -n "${JAVA_PKG_EXTRA_ENV_VARS}" ]]; then
- cat "${JAVA_PKG_EXTRA_ENV}" >> "${JAVA_PKG_ENV}" || die;
- echo "ENV_VARS=\"$(echo ${JAVA_PKG_EXTRA_ENV_VARS})\"" >> "${JAVA_PKG_ENV}" || die;
- fi;
- sed -e "s/=\":/=\"/" -e "s/:\"$/\"/" -i "${JAVA_PKG_ENV}" || die "Did you forget to call java_init ?"
- }
- java-pkg_doexamples ()
- {
- debug-print-function ${FUNCNAME} $*;
- [[ ${#} -lt 1 ]] && die "At least one argument needed";
- java-pkg_check-phase install;
- java-pkg_init_paths_;
- local dest=/usr/share/doc/${PF}/examples;
- if [[ ${1} == --subdir ]]; then
- local dest=${dest}/${2};
- dodir ${dest};
- shift 2;
- fi;
- if [[ ${#} = 1 && -d ${1} ]]; then
- ( insinto "${dest}";
- doins -r ${1}/* ) || die "Installing examples failed";
- else
- ( insinto "${dest}";
- doins -r "$@" ) || die "Installing examples failed";
- fi;
- dosym "${dest}" "${JAVA_PKG_SHAREPATH}/examples" || die
- }
- java-pkg_dohtml ()
- {
- debug-print-function ${FUNCNAME} $*;
- [[ ${#} -lt 1 ]] && die "At least one argument required for ${FUNCNAME}";
- dohtml -f package-list "$@";
- java-pkg_recordjavadoc
- }
- java-pkg_dojar ()
- {
- debug-print-function ${FUNCNAME} $*;
- [[ ${#} -lt 1 ]] && die "At least one argument needed";
- java-pkg_check-phase install;
- java-pkg_init_paths_;
- dodir ${JAVA_PKG_JARDEST};
- local jar;
- for jar in "${@}";
- do
- local jar_basename=$(basename "${jar}");
- java-pkg_check-versioned-jar ${jar_basename};
- if [[ -e "${jar}" ]]; then
- local dest="${D}${JAVA_PKG_JARDEST}/${jar_basename}";
- if [[ -e "${dest}" ]]; then
- ewarn "Overwriting ${dest}";
- fi;
- if [[ ! -L "${jar}" ]]; then
- is-java-strict && java-pkg_verify-classes "${jar}";
- ( insinto "${JAVA_PKG_JARDEST}";
- doins "${jar}" ) || die "failed to install ${jar}";
- java-pkg_append_ JAVA_PKG_CLASSPATH "${JAVA_PKG_JARDEST}/${jar_basename}";
- debug-print "installed ${jar} to ${D}${JAVA_PKG_JARDEST}";
- else
- ln -s "$(readlink "${jar}")" "${D}${JAVA_PKG_JARDEST}/${jar_basename}";
- debug-print "${jar} is a symlink, linking accordingly";
- fi;
- else
- die "${jar} does not exist";
- fi;
- done;
- if [[ -n ${JAVA_PKG_DEBUG} ]]; then
- einfo "Verbose logging for \"${FUNCNAME}\" function";
- einfo "Jar file(s) destination: ${JAVA_PKG_JARDEST}";
- einfo "Jar file(s) created: ${@}";
- einfo "Complete command:";
- einfo "${FUNCNAME} ${@}";
- fi;
- java-pkg_do_write_
- }
- java-pkg_dojavadoc ()
- {
- debug-print-function ${FUNCNAME} $*;
- local symlink;
- if [[ ${1} = --symlink ]]; then
- symlink=${2};
- shift 2;
- fi;
- local dir="$1";
- local dest=/usr/share/doc/${PF}/html;
- java-pkg_check-phase install;
- java-pkg_init_paths_;
- [[ -z "${dir}" ]] && die "Must specify a directory!";
- [[ ! -d "${dir}" ]] && die "${dir} does not exist, or isn't a directory!";
- if [[ ! -e "${dir}/index.html" ]]; then
- local msg="No index.html in javadoc directory";
- ewarn "${msg}";
- is-java-strict && die "${msg}";
- fi;
- if [[ -e ${D}/${dest}/api ]]; then
- eerror "${dest} already exists. Will not overwrite.";
- die "${dest}";
- fi;
- local dir_to_install="${dir}";
- if [[ "$(basename "${dir}")" != "api" ]]; then
- dir_to_install="${T}/api";
- cp -r "${dir}" "${dir_to_install}" || die "cp failed";
- fi;
- java-pkg_dohtml -r "${dir_to_install}";
- dosym ${dest}/api "${JAVA_PKG_SHAREPATH}/api" || die;
- if [[ -n ${symlink} ]]; then
- debug-print "symlinking ${dest}/{api,${symlink}}";
- dosym ${dest}/{api,${symlink}} || die;
- fi;
- if [[ -n ${JAVA_PKG_DEBUG} ]]; then
- einfo "Verbose logging for \"${FUNCNAME}\" function";
- einfo "Documentation destination: ${dest}";
- einfo "Directory to install: ${dir_to_install}";
- einfo "Complete command:";
- einfo "${FUNCNAME} ${@}";
- fi
- }
- java-pkg_dolauncher ()
- {
- debug-print-function ${FUNCNAME} $*;
- java-pkg_check-phase install;
- java-pkg_init_paths_;
- if [[ ${#} = 0 ]]; then
- local name="${PN}";
- else
- local name="${1}";
- shift;
- fi;
- local target="${T}/${name}";
- local var_tmp="${T}/launcher_variables_tmp";
- local target_dir pre;
- while [[ -n "${1}" && -n "${2}" ]]; do
- local var="${1}" value="${2}";
- if [[ "${var:0:2}" == "--" ]]; then
- local var=${var:2};
- echo "gjl_${var}=\"${value}\"" >> "${var_tmp}";
- local gjl_${var}="${value}";
- else
- if [[ "${var}" == "-into" ]]; then
- target_dir="${value}";
- else
- if [[ "${var}" == "-pre" ]]; then
- pre="${value}";
- fi;
- fi;
- fi;
- shift 2;
- done;
- if [[ -z "${gjl_jar}" && -z "${gjl_main}" ]]; then
- local cp="${JAVA_PKG_CLASSPATH}";
- if [[ "${cp/:}" = "${cp}" && "${cp%.jar}" != "${cp}" ]]; then
- echo "gjl_jar=\"${JAVA_PKG_CLASSPATH}\"" >> "${var_tmp}";
- else
- local msg="Not enough information to create a launcher given.";
- msg="${msg} Please give --jar or --main argument to ${FUNCNAME}.";
- die "${msg}";
- fi;
- fi;
- echo "#!/bin/bash" > "${target}";
- if [[ -n "${pre}" ]]; then
- if [[ -f "${pre}" ]]; then
- cat "${pre}" >> "${target}";
- else
- die "-pre specified file '${pre}' does not exist";
- fi;
- fi;
- echo "gjl_package=${JAVA_PKG_NAME}" >> "${target}";
- cat "${var_tmp}" >> "${target}";
- rm -f "${var_tmp}";
- echo "source /usr/share/java-config-2/launcher/launcher.bash" >> "${target}";
- if [[ -n "${target_dir}" ]]; then
- ( into "${target_dir}";
- dobin "${target}" );
- local ret=$?;
- return ${ret};
- else
- dobin "${target}";
- fi
- }
- java-pkg_doso ()
- {
- debug-print-function ${FUNCNAME} $*;
- java-pkg_check-phase install;
- [[ ${#} -lt 1 ]] && die "${FUNCNAME} requires at least one argument";
- java-pkg_init_paths_;
- local lib;
- for lib in "$@";
- do
- if [[ -e "${lib}" ]]; then
- if [[ ! -L "${lib}" ]]; then
- ( insinto "${JAVA_PKG_LIBDEST}";
- insopts -m0755;
- doins "${lib}" ) || die "failed to install ${lib}";
- java-pkg_append_ JAVA_PKG_LIBRARY "${JAVA_PKG_LIBDEST}";
- debug-print "Installing ${lib} to ${JAVA_PKG_LIBDEST}";
- else
- dosym "$(readlink "${lib}")" "${JAVA_PKG_LIBDEST}/${lib##*/}";
- debug-print "${lib} is a symlink, linking accordantly";
- fi;
- else
- die "${lib} does not exist";
- fi;
- done;
- java-pkg_do_write_
- }
- java-pkg_dosrc ()
- {
- debug-print-function ${FUNCNAME} $*;
- [ ${#} -lt 1 ] && die "At least one argument needed";
- java-pkg_check-phase install;
- [[ ${#} -lt 1 ]] && die "At least one argument needed";
- if ! [[ ${DEPEND} = *app-arch/zip* ]]; then
- local msg="${FUNCNAME} called without app-arch/zip in DEPEND";
- java-pkg_announce-qa-violation ${msg};
- fi;
- java-pkg_init_paths_;
- local zip_name="${PN}-src.zip";
- local zip_path="${T}/${zip_name}";
- local dir;
- for dir in "${@}";
- do
- local dir_parent=$(dirname "${dir}");
- local dir_name=$(basename "${dir}");
- pushd ${dir_parent} > /dev/null || die "problem entering ${dir_parent}";
- zip -q -r ${zip_path} ${dir_name} -i '*.java';
- local result=$?;
- if [[ ${result} != 12 && ${result} != 0 ]]; then
- die "failed to zip ${dir_name}";
- fi;
- popd > /dev/null || die;
- done;
- ( insinto "${JAVA_PKG_SOURCESPATH}";
- doins ${zip_path} ) || die "Failed to install source";
- JAVA_SOURCES="${JAVA_PKG_SOURCESPATH}/${zip_name}";
- if [[ -n ${JAVA_PKG_DEBUG} ]]; then
- einfo "Verbose logging for \"${FUNCNAME}\" function";
- einfo "Zip filename created: ${zip_name}";
- einfo "Zip file destination: ${JAVA_PKG_SOURCESPATH}";
- einfo "Directories zipped: ${@}";
- einfo "Complete command:";
- einfo "${FUNCNAME} ${@}";
- fi;
- java-pkg_do_write_
- }
- java-pkg_dowar ()
- {
- debug-print-function ${FUNCNAME} $*;
- [[ ${#} -lt 1 ]] && die "At least one argument needed";
- java-pkg_check-phase install;
- java-pkg_init_paths_;
- local war;
- for war in $*;
- do
- local warpath;
- if [[ -L "${war}" ]]; then
- cp "${war}" "${T}";
- warpath="${T}$(basename "${war}")";
- else
- if [[ -d "${war}" ]]; then
- echo "dowar: warning, skipping directory ${war}";
- continue;
- else
- warpath="${war}";
- fi;
- fi;
- ( insopts -m0644;
- insinto "${JAVA_PKG_WARDEST}";
- doins ${warpath} );
- done
- }
- java-pkg_ensure-dep ()
- {
- debug-print-function ${FUNCNAME} $*;
- local limit_to="${1}";
- local target_pkg="${2}";
- local dev_error="";
- local stripped_pkg=/$(sed -r 's/[-:]?([^-:]+)$/(\0(-[^:]+)?:0|(-[^:]+)?:\1)/' <<< "${target_pkg//./\\.}")\\b;
- debug-print "Matching against: ${stripped_pkg}";
- if [[ ${limit_to} != runtime && ! ( "${DEPEND}" =~ $stripped_pkg ) ]]; then
- dev_error="The ebuild is attempting to use ${target_pkg}, which is not ";
- dev_error+="declared with a SLOT in DEPEND.";
- eqawarn "java-pkg_ensure-dep: ${dev_error}";
- else
- if [[ ${limit_to} != build && ! ( "${RDEPEND}${PDEPEND}" =~ ${stripped_pkg} ) ]]; then
- dev_error="The ebuild is attempting to use ${target_pkg}, which is not ";
- dev_error+="declared with a SLOT in [RP]DEPEND and --build-only wasn't given.";
- eqawarn "java-pkg_ensure-dep: ${dev_error}";
- fi;
- fi
- }
- java-pkg_ensure-gcj ()
- {
- die "${FUNCNAME} was removed. Use use-deps available as of EAPI 2 instead. #261562"
- }
- java-pkg_ensure-no-bundled-jars ()
- {
- debug-print-function ${FUNCNAME} $*;
- local bundled_jars=$(java-pkg_find-normal-jars);
- if [[ -n ${bundled_jars} ]]; then
- echo "Bundled jars found:";
- local jar;
- for jar in ${bundled_jars};
- do
- echo $(pwd)${jar/./};
- done;
- die "Bundled jars found!";
- fi
- }
- java-pkg_ensure-test ()
- {
- die "${FUNCNAME} was removed. Package mangers handle this already. #278965"
- }
- java-pkg_ensure-vm-version-eq ()
- {
- debug-print-function ${FUNCNAME} $*;
- if ! java-pkg_is-vm-version-eq $@; then
- debug-print "VM is not suffient";
- eerror "This package requires a Java VM version = $@";
- einfo "Please use java-config -S to set the correct one";
- die "Active Java VM too old";
- fi
- }
- java-pkg_ensure-vm-version-ge ()
- {
- debug-print-function ${FUNCNAME} $*;
- if ! java-pkg_is-vm-version-ge "$@"; then
- debug-print "vm is not suffient";
- eerror "This package requires a Java VM version >= $@";
- einfo "Please use java-config -S to set the correct one";
- die "Active Java VM too old";
- fi
- }
- java-pkg_ensure-vm-version-sufficient ()
- {
- debug-print-function ${FUNCNAME} $*;
- if ! java-pkg_is-vm-version-sufficient; then
- debug-print "VM is not suffient";
- eerror "Current Java VM cannot build this package";
- einfo "Please use java-config -S to set the correct one";
- die "Active Java VM cannot build this package";
- fi
- }
- java-pkg_expand_dir_ ()
- {
- pushd "$(dirname "${1}")" > /dev/null 2>&1 || die;
- pwd;
- popd > /dev/null 2>&1 || die
- }
- java-pkg_filter-compiler ()
- {
- JAVA_PKG_FILTER_COMPILER="${JAVA_PKG_FILTER_COMPILER} $@"
- }
- java-pkg_find-normal-jars ()
- {
- local dir=$1;
- [[ -n "${dir}" ]] || dir="${WORKDIR}";
- local found;
- for jar in $(find "${dir}" -name "*.jar" -type f);
- do
- echo "${jar}";
- found="true";
- done;
- [[ -n "${found}" ]];
- return $?
- }
- java-pkg_force-compiler ()
- {
- JAVA_PKG_FORCE_COMPILER="$@"
- }
- java-pkg_func-exists ()
- {
- declare -F ${1} > /dev/null
- }
- java-pkg_gen-cp ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local atom;
- for atom in ${CP_DEPEND};
- do
- if [[ ${atom} =~ /(([[:alnum:]+_-]+)-[0-9]+(\.[0-9]+)*[a-z]?(_[[:alnum:]]+)?(-r[0-9]*)?|[[:alnum:]+_-]+):([[:alnum:]+_.-]+) ]]; then
- atom=${BASH_REMATCH[2]:-${BASH_REMATCH[1]}};
- [[ ${BASH_REMATCH[6]} != 0 ]] && atom+=-${BASH_REMATCH[6]};
- local regex="(^|\s|,)${atom}($|\s|,)";
- [[ ${!1} =~ ${regex} ]] || declare -g ${1}+=${!1:+,}${atom};
- else
- die "Invalid CP_DEPEND atom ${atom}, ensure a SLOT is included";
- fi;
- done
- }
- java-pkg_get-bootclasspath ()
- {
- local version="${1}";
- local bcp;
- case "${version}" in
- auto)
- bcp="$(java-config -g BOOTCLASSPATH)"
- ;;
- 1.5)
- bcp="$(java-pkg_getjars --build-only gnu-classpath-0.98)"
- ;;
- *)
- eerror "unknown parameter of java-pkg_get-bootclasspath";
- die "unknown parameter of java-pkg_get-bootclasspath"
- ;;
- esac;
- echo "${bcp}"
- }
- java-pkg_get-current-vm ()
- {
- java-config -f
- }
- java-pkg_get-javac ()
- {
- debug-print-function ${FUNCNAME} $*;
- java-pkg_init-compiler_;
- local compiler="${GENTOO_COMPILER}";
- local compiler_executable;
- if [[ "${compiler}" = "javac" ]]; then
- compiler_executable="javac";
- else
- local compiler_env="/usr/share/java-config-2/compiler/${compiler}";
- if [[ -f ${compiler_env} ]]; then
- local old_javac=${JAVAC};
- unset JAVAC;
- compiler_executable="$(source ${compiler_env} 1>/dev/null 2>&1; echo ${JAVAC})";
- export JAVAC=${old_javac};
- if [[ -z ${compiler_executable} ]]; then
- die "JAVAC is empty or undefined in ${compiler_env}";
- fi;
- if [[ ! -x ${compiler_executable} ]]; then
- die "${compiler_executable} doesn't exist, or isn't executable";
- fi;
- else
- die "Could not find environment file for ${compiler}";
- fi;
- fi;
- echo ${compiler_executable}
- }
- java-pkg_get-jni-cflags ()
- {
- local flags="-I${JAVA_HOME}/include";
- local platform="linux";
- use elibc_FreeBSD && platform="freebsd";
- flags="${flags} -I${JAVA_HOME}/include/${platform}";
- echo ${flags}
- }
- java-pkg_get-source ()
- {
- echo ${JAVA_PKG_WANT_SOURCE:-$(depend-java-query --get-lowest "${DEPEND} ${RDEPEND}")}
- }
- java-pkg_get-target ()
- {
- echo ${JAVA_PKG_WANT_TARGET:-$(depend-java-query --get-lowest "${DEPEND} ${RDEPEND}")}
- }
- java-pkg_get-vm-vendor ()
- {
- debug-print-function ${FUNCNAME} $*;
- local vm="$(java-pkg_get-current-vm)";
- vm="${vm/-*/}";
- echo "${vm}"
- }
- java-pkg_get-vm-version ()
- {
- debug-print-function ${FUNCNAME} $*;
- java-config -g PROVIDES_VERSION
- }
- java-pkg_getjar ()
- {
- debug-print-function ${FUNCNAME} $*;
- local build_only="";
- local virtual="";
- local record_jar="";
- [[ "${EBUILD_PHASE}" == "test" ]] && build_only="build";
- while [[ "${1}" == --* ]]; do
- if [[ "${1}" = "--build-only" ]]; then
- build_only="build";
- else
- if [[ "${1}" == "--virtual" ]]; then
- virtual="true";
- else
- die "java-pkg_getjar called with unknown parameter: ${1}";
- fi;
- fi;
- shift;
- done;
- [[ ${#} -ne 2 ]] && die "${FUNCNAME} takes only two arguments besides --*";
- local pkg="${1}" target_jar="${2}" jar;
- if [[ "${EAPI}" == "1" ]]; then
- pkg="${pkg//:/-}";
- fi;
- [[ -z ${pkg} ]] && die "Must specify package to get a jar from";
- [[ -z ${target_jar} ]] && die "Must specify jar to get";
- local error_msg="Could not find classpath for ${pkg}. Are you sure its installed?";
- local classpath;
- classpath=$(java-config --classpath=${pkg});
- [[ $? != 0 ]] && die ${error_msg};
- java-pkg_ensure-dep "${build_only}" "${pkg}";
- if [[ -n "${virtual}" ]]; then
- if [[ -z "${build_only}" ]]; then
- java-pkg_record-jar_ "${pkg}";
- else
- java-pkg_record-jar_ --build-only "${pkg}";
- fi;
- record_jar="true";
- fi;
- for jar in ${classpath//:/ };
- do
- if [[ ! -f "${jar}" ]]; then
- die "Installation problem with jar ${jar} in ${pkg} - is it installed?";
- fi;
- if [[ "$(basename ${jar})" == "${target_jar}" ]]; then
- if [[ -z "${record_jar}" ]]; then
- if [[ -z "${build_only}" ]]; then
- java-pkg_record-jar_ "${pkg}" "${jar}";
- else
- java-pkg_record-jar_ --build-only "${pkg}" "${jar}";
- fi;
- fi;
- echo "${jar}";
- return 0;
- fi;
- done;
- die "Could not find ${target_jar} in ${pkg}";
- return 1
- }
- java-pkg_getjars ()
- {
- debug-print-function ${FUNCNAME} $*;
- local build_only="";
- local deep="";
- [[ "${EBUILD_PHASE}" == "test" ]] && build_only="build";
- while [[ "${1}" == --* ]]; do
- if [[ "${1}" = "--build-only" ]]; then
- build_only="build";
- else
- if [[ "${1}" = "--with-dependencies" ]]; then
- deep="--with-dependencies";
- else
- die "java-pkg_jar-from called with unknown parameter: ${1}";
- fi;
- fi;
- shift;
- done;
- [[ ${#} -ne 1 ]] && die "${FUNCNAME} takes only one argument besides --*";
- local pkgs="${1}";
- if [[ "${EAPI}" == "1" ]]; then
- pkgs="${pkgs//:/-}";
- fi;
- jars="$(java-config ${deep} --classpath=${pkgs})";
- [[ $? != 0 ]] && die "java-config --classpath=${pkgs} failed";
- debug-print "${pkgs}:${jars}";
- for pkg in ${pkgs//,/ };
- do
- java-pkg_ensure-dep "${build_only}" "${pkg}";
- done;
- for pkg in ${pkgs//,/ };
- do
- if [[ -z "${build_only}" ]]; then
- java-pkg_record-jar_ "${pkg}";
- else
- java-pkg_record-jar_ --build-only "${pkg}";
- fi;
- done;
- echo "${jars}"
- }
- java-pkg_init ()
- {
- debug-print-function ${FUNCNAME} $*;
- [[ "${MERGE_TYPE}" == "binary" ]] && return;
- has ${EAPI:-0} 0 1 2 3 && [[ "${EMERGE_FROM}" == "binary" ]] && return;
- unset JAVAC;
- unset JAVA_HOME;
- java-config --help > /dev/null || {
- eerror "";
- eerror "Can't run java-config --help";
- eerror "Have you upgraded python recently but haven't";
- eerror "run python-updater yet?";
- die "Can't run java-config --help"
- };
- local silence="${SILENCE_JAVA_OPTIONS_WARNING}";
- local accept="${I_WANT_GLOBAL_JAVA_OPTIONS}";
- if [[ -n ${_JAVA_OPTIONS} && -z ${accept} && -z ${silence} ]]; then
- ewarn "_JAVA_OPTIONS changes what java -version outputs at least for";
- ewarn "sun-jdk vms and and as such break configure scripts that";
- ewarn "use it (for example app-office/openoffice) so we filter it out.";
- ewarn "Use SILENCE_JAVA_OPTIONS_WARNING=true in the environment (use";
- ewarn "make.conf for example) to silence this warning or";
- ewarn "I_WANT_GLOBAL_JAVA_OPTIONS to not filter it.";
- fi;
- if [[ -z ${accept} ]]; then
- unset _JAVA_OPTIONS;
- I_WANT_GLOBAL_JAVA_OPTIONS="true";
- fi;
- java-pkg_switch-vm;
- PATH=${JAVA_HOME}/bin:${PATH};
- java-pkg_check-jikes;
- export CLASSPATH=;
- export ANT_TASKS=;
- export ANT_OPTS=;
- export ANT_RESPECT_JAVA_HOME=
- }
- java-pkg_init-compiler_ ()
- {
- debug-print-function ${FUNCNAME} $*;
- if [[ -n ${GENTOO_COMPILER} ]]; then
- debug-print "GENTOO_COMPILER already set";
- return;
- fi;
- local compilers;
- if [[ -z ${JAVA_PKG_FORCE_COMPILER} ]]; then
- compilers="$(source ${JAVA_PKG_COMPILERS_CONF} 1>/dev/null 2>&1; echo ${COMPILERS})";
- else
- compilers=${JAVA_PKG_FORCE_COMPILER};
- fi;
- debug-print "Read \"${compilers}\" from ${JAVA_PKG_COMPILERS_CONF}";
- local compiler;
- for compiler in ${compilers};
- do
- debug-print "Checking ${compiler}...";
- if [[ ${compiler} = "javac" ]]; then
- debug-print "Found javac... breaking";
- export GENTOO_COMPILER="javac";
- break;
- fi;
- if has ${compiler} ${JAVA_PKG_FILTER_COMPILER}; then
- if [[ -z ${JAVA_PKG_FORCE_COMPILER} ]]; then
- einfo "Filtering ${compiler}" 1>&2;
- continue;
- fi;
- fi;
- local compiler_env="${JAVA_PKG_COMPILER_DIR}/${compiler}";
- if [[ -f ${compiler_env} ]]; then
- local desired_target="$(java-pkg_get-target)";
- local desired_source="$(java-pkg_get-source)";
- local supported_target=$(source ${compiler_env} 1>/dev/null 2>&1; echo ${SUPPORTED_TARGET});
- if ! has ${desired_target} ${supported_target}; then
- ewarn "${compiler} does not support -target ${desired_target}, skipping";
- continue;
- fi;
- local supported_source=$(source ${compiler_env} 1>/dev/null 2>&1; echo ${SUPPORTED_SOURCE});
- if ! has ${desired_source} ${supported_source}; then
- ewarn "${compiler} does not support -source ${desired_source}, skipping";
- continue;
- fi;
- export GENTOO_COMPILER="${compiler}";
- break;
- else
- ewarn "Could not find configuration for ${compiler}, skipping";
- ewarn "Perhaps it is not installed?";
- continue;
- fi;
- done;
- if [[ -z ${GENTOO_COMPILER} ]]; then
- if [[ -n ${compilers} ]]; then
- einfo "No suitable compiler found: defaulting to JDK default for compilation" 1>&2;
- else
- :;
- fi;
- if java-config -g GENTOO_COMPILER 2> /dev/null; then
- export GENTOO_COMPILER=$(java-config -g GENTOO_COMPILER);
- else
- export GENTOO_COMPILER=javac;
- fi;
- else
- einfo "Using ${GENTOO_COMPILER} for compilation" 1>&2;
- fi
- }
- java-pkg_init_paths_ ()
- {
- debug-print-function ${FUNCNAME} $*;
- local pkg_name;
- if [[ "${SLOT%/*}" == "0" ]]; then
- JAVA_PKG_NAME="${PN}";
- else
- JAVA_PKG_NAME="${PN}-${SLOT%/*}";
- fi;
- JAVA_PKG_SHAREPATH="/usr/share/${JAVA_PKG_NAME}";
- JAVA_PKG_SOURCESPATH="${JAVA_PKG_SHAREPATH}/sources/";
- JAVA_PKG_ENV="${D}${JAVA_PKG_SHAREPATH}/package.env";
- JAVA_PKG_VIRTUALS_PATH="/usr/share/java-config-2/virtuals";
- JAVA_PKG_VIRTUAL_PROVIDER="${D}/${JAVA_PKG_VIRTUALS_PATH}/${JAVA_PKG_NAME}";
- [[ -z "${JAVA_PKG_JARDEST}" ]] && JAVA_PKG_JARDEST="${JAVA_PKG_SHAREPATH}/lib";
- [[ -z "${JAVA_PKG_LIBDEST}" ]] && JAVA_PKG_LIBDEST="/usr/$(get_libdir)/${JAVA_PKG_NAME}";
- [[ -z "${JAVA_PKG_WARDEST}" ]] && JAVA_PKG_WARDEST="${JAVA_PKG_SHAREPATH}/webapps";
- debug-print "JAVA_PKG_SHAREPATH: ${JAVA_PKG_SHAREPATH}";
- debug-print "JAVA_PKG_ENV: ${JAVA_PKG_ENV}";
- debug-print "JAVA_PKG_JARDEST: ${JAVA_PKG_JARDEST}";
- debug-print "JAVA_PKG_LIBDEST: ${JAVA_PKG_LIBDEST}";
- debug-print "JAVA_PKG_WARDEST: ${JAVA_PKG_WARDEST}"
- }
- java-pkg_is-vm-version-eq ()
- {
- debug-print-function ${FUNCNAME} $*;
- local needed_version="$@";
- [[ -z "${needed_version}" ]] && die "need an argument";
- local vm_version="$(java-pkg_get-vm-version)";
- vm_version="$(get_version_component_range 1-2 "${vm_version}")";
- needed_version="$(get_version_component_range 1-2 "${needed_version}")";
- if [[ -z "${vm_version}" ]]; then
- debug-print "Could not get JDK version from DEPEND";
- return 1;
- else
- if [[ "${vm_version}" == "${needed_version}" ]]; then
- debug-print "Detected a JDK(${vm_version}) = ${needed_version}";
- return 0;
- else
- debug-print "Detected a JDK(${vm_version}) != ${needed_version}";
- return 1;
- fi;
- fi
- }
- java-pkg_is-vm-version-ge ()
- {
- debug-print-function ${FUNCNAME} $*;
- local needed_version=$@;
- local vm_version=$(java-pkg_get-vm-version);
- if [[ -z "${vm_version}" ]]; then
- debug-print "Could not get JDK version from DEPEND";
- return 1;
- else
- if version_is_at_least "${needed_version}" "${vm_version}"; then
- debug-print "Detected a JDK(${vm_version}) >= ${needed_version}";
- return 0;
- else
- debug-print "Detected a JDK(${vm_version}) < ${needed_version}";
- return 1;
- fi;
- fi
- }
- java-pkg_is-vm-version-sufficient ()
- {
- debug-print-function ${FUNCNAME} $*;
- depend-java-query --is-sufficient "${DEPEND}" > /dev/null;
- return $?
- }
- java-pkg_jar-from ()
- {
- debug-print-function ${FUNCNAME} $*;
- local build_only="";
- local destdir=".";
- local deep="";
- local virtual="";
- local record_jar="";
- [[ "${EBUILD_PHASE}" == "test" ]] && build_only="build";
- while [[ "${1}" == --* ]]; do
- if [[ "${1}" = "--build-only" ]]; then
- build_only="build";
- else
- if [[ "${1}" = "--with-dependencies" ]]; then
- deep="--with-dependencies";
- else
- if [[ "${1}" = "--virtual" ]]; then
- virtual="true";
- else
- if [[ "${1}" = "--into" ]]; then
- destdir="${2}";
- shift;
- else
- die "java-pkg_jar-from called with unknown parameter: ${1}";
- fi;
- fi;
- fi;
- fi;
- shift;
- done;
- local target_pkg="${1}" target_jar="${2}" destjar="${3}";
- [[ -z ${target_pkg} ]] && die "Must specify a package";
- if [[ "${EAPI}" == "1" ]]; then
- target_pkg="${target_pkg//:/-}";
- fi;
- [[ -z "${destjar}" ]] && destjar="${target_jar}";
- local error_msg="There was a problem getting the classpath for ${target_pkg}.";
- local classpath;
- classpath="$(java-config ${deep} --classpath=${target_pkg})";
- [[ $? != 0 ]] && die ${error_msg};
- if [[ ${target_pkg} = *,* ]]; then
- for pkg in ${target_pkg//,/ };
- do
- java-pkg_ensure-dep "${build_only}" "${pkg}";
- [[ -z "${build_only}" ]] && java-pkg_record-jar_ "${pkg}";
- done;
- record_jar="true";
- else
- java-pkg_ensure-dep "${build_only}" "${target_pkg}";
- fi;
- if [[ -z "${build_only}" && -n "${virtual}" ]]; then
- java-pkg_record-jar_ "${target_pkg}";
- record_jar="true";
- fi;
- pushd ${destdir} > /dev/null || die "failed to change directory to ${destdir}";
- local jar;
- for jar in ${classpath//:/ };
- do
- local jar_name=$(basename "${jar}");
- if [[ ! -f "${jar}" ]]; then
- debug-print "${jar} from ${target_pkg} does not exist";
- die "Installation problems with jars in ${target_pkg} - is it installed?";
- fi;
- if [[ -z "${target_jar}" ]]; then
- [[ -f "${target_jar}" ]] && rm "${target_jar}";
- ln -snf "${jar}" || die "Failed to make symlink from ${jar} to ${jar_name}";
- if [[ -z "${record_jar}" ]]; then
- if [[ -z "${build_only}" ]]; then
- java-pkg_record-jar_ "${target_pkg}" "${jar}";
- else
- java-pkg_record-jar_ --build-only "${target_pkg}" "${jar}";
- fi;
- fi;
- else
- if [[ "${jar_name}" == "${target_jar}" ]]; then
- [[ -f "${destjar}" ]] && rm "${destjar}";
- ln -snf "${jar}" "${destjar}" || die "Failed to make symlink from ${jar} to ${destjar}";
- if [[ -z "${record_jar}" ]]; then
- if [[ -z "${build_only}" ]]; then
- java-pkg_record-jar_ "${target_pkg}" "${jar}";
- else
- java-pkg_record-jar_ --build-only "${target_pkg}" "${jar}";
- fi;
- fi;
- popd > /dev/null || die;
- return 0;
- fi;
- fi;
- done;
- popd > /dev/null || die;
- if [[ -z "${target_jar}" ]]; then
- return 0;
- else
- die "Failed to find ${target_jar:-jar} in ${target_pkg}";
- fi
- }
- java-pkg_jar-list ()
- {
- if [[ -n "${JAVA_PKG_DEBUG}" ]]; then
- einfo "Linked Jars";
- find "${S}" -type l -name '*.jar' -print0 | xargs -0 -r -n 500 ls -ald | sed -e "s,${WORKDIR},\${WORKDIR},";
- einfo "Jars";
- find "${S}" -type f -name '*.jar' -print0 | xargs -0 -r -n 500 ls -ald | sed -e "s,${WORKDIR},\${WORKDIR},";
- einfo "Classes";
- find "${S}" -type f -name '*.class' -print0 | xargs -0 -r -n 500 ls -ald | sed -e "s,${WORKDIR},\${WORKDIR},";
- fi
- }
- java-pkg_jarfrom ()
- {
- java-pkg_jar-from "$@"
- }
- java-pkg_jarinto ()
- {
- debug-print-function ${FUNCNAME} $*;
- JAVA_PKG_JARDEST="${1}"
- }
- java-pkg_javac-args ()
- {
- debug-print-function ${FUNCNAME} $*;
- local want_source="$(java-pkg_get-source)";
- local want_target="$(java-pkg_get-target)";
- local source_str="-source ${want_source}";
- local target_str="-target ${want_target}";
- debug-print "want source: ${want_source}";
- debug-print "want target: ${want_target}";
- if [[ -z "${want_source}" || -z "${want_target}" ]]; then
- die "Could not find valid -source/-target values for javac";
- else
- echo "${source_str} ${target_str}";
- fi
- }
- java-pkg_needs-vm ()
- {
- debug-print-function ${FUNCNAME} $*;
- if [[ -n "$(echo ${JAVA_PKG_NV_DEPEND:-${DEPEND}} | sed -e '\:virtual/jdk:!d')" ]]; then
- return 0;
- fi;
- [[ -n "${JAVA_PKG_WANT_BUILD_VM}" ]] && return 0;
- return 1
- }
- java-pkg_newjar ()
- {
- debug-print-function ${FUNCNAME} $*;
- local original_jar="${1}";
- local new_jar="${2:-${PN}.jar}";
- local new_jar_dest="${T}/${new_jar}";
- [[ -z ${original_jar} ]] && die "Must specify a jar to install";
- [[ ! -f ${original_jar} ]] && die "${original_jar} does not exist or is not a file!";
- rm -f "${new_jar_dest}" || die "Failed to remove ${new_jar_dest}";
- cp "${original_jar}" "${new_jar_dest}" || die "Failed to copy ${original_jar} to ${new_jar_dest}";
- java-pkg_dojar "${new_jar_dest}"
- }
- java-pkg_record-jar_ ()
- {
- debug-print-function ${FUNCNAME} $*;
- local depend_file="${JAVA_PKG_DEPEND_FILE}";
- case "${1}" in
- "--optional")
- depend_file="${JAVA_PKG_OPTIONAL_DEPEND_FILE}";
- shift
- ;;
- "--build-only")
- depend_file="${JAVA_PKG_BUILD_DEPEND_FILE}";
- shift
- ;;
- esac;
- local pkg=${1} jar=${2} append;
- if [[ -z "${jar}" ]]; then
- append="${pkg}";
- else
- append="$(basename ${jar})@${pkg}";
- fi;
- echo "${append}" >> "${depend_file}"
- }
- java-pkg_recordjavadoc ()
- {
- debug-print-function ${FUNCNAME} $*;
- JAVADOC_PATH="$(find ${D}/usr/share/doc/ -name allclasses-frame.html -printf '%h:')";
- JAVADOC_PATH="${JAVADOC_PATH//${D}}";
- if [[ -n "${JAVADOC_PATH}" ]]; then
- debug-print "javadocs found in ${JAVADOC_PATH%:}";
- java-pkg_do_write_;
- else
- debug-print "No javadocs found";
- fi
- }
- java-pkg_register-ant-task ()
- {
- local TASKS_DIR="tasks";
- while [[ -n "${1}" && -n "${2}" ]]; do
- local var="${1#--}";
- local val="${2}";
- if [[ "${var}" == "version" ]]; then
- TASKS_DIR="tasks-${val}";
- else
- die "Unknown parameter passed to java-pkg_register-ant-tasks: ${1} ${2}";
- fi;
- shift 2;
- done;
- local TASK_NAME="${1:-${JAVA_PKG_NAME}}";
- dodir /usr/share/ant/${TASKS_DIR};
- touch "${D}/usr/share/ant/${TASKS_DIR}/${TASK_NAME}"
- }
- java-pkg_register-dependency ()
- {
- debug-print-function ${FUNCNAME} $*;
- java-pkg_check-phase install;
- [[ ${#} -gt 2 ]] && die "${FUNCNAME} takes at most two arguments";
- local pkgs="${1}";
- local jar="${2}";
- [[ -z "${pkgs}" ]] && die "${FUNCNAME} called with no package(s) specified";
- if [[ "${EAPI}" == "1" ]]; then
- pkgs="${pkgs//:/-}";
- fi;
- if [[ -z "${jar}" ]]; then
- for pkg in ${pkgs//,/ };
- do
- java-pkg_ensure-dep runtime "${pkg}";
- java-pkg_record-jar_ "${pkg}";
- done;
- else
- [[ ${pkgs} == *,* ]] && die "${FUNCNAME} called with both package list and jar name";
- java-pkg_ensure-dep runtime "${pkgs}";
- java-pkg_record-jar_ "${pkgs}" "${jar}";
- fi;
- java-pkg_do_write_
- }
- java-pkg_register-environment-variable ()
- {
- debug-print-function ${FUNCNAME} $*;
- java-pkg_check-phase install;
- [[ ${#} != 2 ]] && die "${FUNCNAME} takes two arguments";
- echo "${1}=\"${2}\"" >> ${JAVA_PKG_EXTRA_ENV};
- JAVA_PKG_EXTRA_ENV_VARS="${JAVA_PKG_EXTRA_ENV_VARS} ${1}";
- java-pkg_do_write_
- }
- java-pkg_register-optional-dependency ()
- {
- debug-print-function ${FUNCNAME} $*;
- java-pkg_check-phase install;
- [[ ${#} -gt 2 ]] && die "${FUNCNAME} takes at most two arguments";
- local pkgs="${1}";
- local jar="${2}";
- [[ -z "${pkgs}" ]] && die "${FUNCNAME} called with no package(s) specified";
- if [[ "${EAPI}" == "1" ]]; then
- pkgs="${pkgs//:/-}";
- fi;
- if [[ -z "${jar}" ]]; then
- for pkg in ${pkgs//,/ };
- do
- java-pkg_record-jar_ --optional "${pkg}";
- done;
- else
- [[ ${pkgs} == *,* ]] && die "${FUNCNAME} called with both package list and jar name";
- java-pkg_record-jar_ --optional "${pkgs}" "${jar}";
- fi;
- java-pkg_do_write_
- }
- java-pkg_regjar ()
- {
- debug-print-function ${FUNCNAME} $*;
- java-pkg_check-phase install;
- [[ ${#} -lt 1 ]] && die "at least one argument needed";
- java-pkg_init_paths_;
- local jar jar_dir jar_file;
- for jar in "${@}";
- do
- if [[ -e "${jar}" || -e "${D}${jar}" ]]; then
- [[ -d "${jar}" || -d "${D}${jar}" ]] && die "Called ${FUNCNAME} on a directory $*";
- is-java-strict && java-pkg_verify-classes "${jar}";
- java-pkg_append_ JAVA_PKG_CLASSPATH "${jar#${D}}";
- else
- if [[ ${jar} = *\** ]]; then
- eerror "The argument ${jar} to ${FUNCNAME}";
- eerror "has * in it. If you want it to glob in";
- eerror '${D} add ${D} to the argument.';
- fi;
- debug-print "${jar} or ${D}${jar} not found";
- die "${jar} does not exist";
- fi;
- done;
- java-pkg_do_write_
- }
- java-pkg_regso ()
- {
- debug-print-function ${FUNCNAME} $*;
- java-pkg_check-phase install;
- [[ ${#} -lt 1 ]] && die "${FUNCNAME} requires at least one argument";
- java-pkg_init_paths_;
- local lib target_dir;
- for lib in "$@";
- do
- if [[ -e "${lib}" ]]; then
- target_dir="$(java-pkg_expand_dir_ ${lib})";
- java-pkg_append_ JAVA_PKG_LIBRARY "/${target_dir#${D}}";
- else
- if [[ -e "${D}${lib}" ]]; then
- target_dir="$(java-pkg_expand_dir_ ${D}${lib})";
- java-pkg_append_ JAVA_PKG_LIBRARY "${target_dir}";
- else
- die "${lib} does not exist";
- fi;
- fi;
- done;
- java-pkg_do_write_
- }
- java-pkg_rm_files ()
- {
- debug-print-function ${FUNCNAME} $*;
- local IFS="\n";
- for filename in "$@";
- do
- [[ ! -f "${filename}" ]] && die "${filename} is not a regular file. Aborting.";
- einfo "Removing unneeded file ${filename}";
- rm -f "${S}/${filename}" || die "cannot remove ${filename}";
- eend $?;
- done
- }
- java-pkg_set-current-vm ()
- {
- export GENTOO_VM=${1}
- }
- java-pkg_setup-vm ()
- {
- debug-print-function ${FUNCNAME} $*;
- local vendor="$(java-pkg_get-vm-vendor)";
- if [[ "${vendor}" == "sun" ]] && java-pkg_is-vm-version-ge "1.5"; then
- addpredict "/dev/random";
- else
- if [[ "${vendor}" == "ibm" ]]; then
- addpredict "/proc/self/maps";
- addpredict "/proc/cpuinfo";
- addpredict "/proc/self/coredump_filter";
- else
- if [[ "${vendor}" == "oracle" ]]; then
- addpredict "/dev/random";
- addpredict "/proc/self/coredump_filter";
- else
- if [[ "${vendor}" == icedtea* ]] && java-pkg_is-vm-version-ge "1.7"; then
- addpredict "/dev/random";
- addpredict "/proc/self/coredump_filter";
- else
- if [[ "${vendor}" == "jrockit" ]]; then
- addpredict "/proc/cpuinfo";
- fi;
- fi;
- fi;
- fi;
- fi
- }
- java-pkg_sointo ()
- {
- debug-print-function ${FUNCNAME} $*;
- JAVA_PKG_LIBDEST="${1}"
- }
- java-pkg_switch-vm ()
- {
- debug-print-function ${FUNCNAME} $*;
- if java-pkg_needs-vm; then
- if [[ -n "${JAVA_PKG_FORCE_VM}" ]]; then
- debug-print "JAVA_PKG_FORCE_VM used: ${JAVA_PKG_FORCE_VM}";
- export GENTOO_VM="${JAVA_PKG_FORCE_VM}";
- else
- if [[ "${JAVA_PKG_ALLOW_VM_CHANGE}" == "yes" ]]; then
- if [[ -n "${JAVA_PKG_WANT_BUILD_VM}" ]]; then
- debug-print "JAVA_PKG_WANT_BUILD_VM used: ${JAVA_PKG_WANT_BUILD_VM}";
- GENTOO_VM=$(java-pkg_build-vm-from-handle);
- if [[ $? != 0 ]]; then
- eerror "${FUNCNAME}: No VM found for handles: ${JAVA_PKG_WANT_BUILD_VM}";
- die "${FUNCNAME}: Failed to determine VM for building";
- fi;
- if [[ -z "${JAVA_PKG_WANT_SOURCE}" ]]; then
- eerror "JAVA_PKG_WANT_BUILD_VM specified but not JAVA_PKG_WANT_SOURCE";
- die "Specify JAVA_PKG_WANT_SOURCE";
- fi;
- if [[ -z "${JAVA_PKG_WANT_TARGET}" ]]; then
- eerror "JAVA_PKG_WANT_BUILD_VM specified but not JAVA_PKG_WANT_TARGET";
- die "Specify JAVA_PKG_WANT_TARGET";
- fi;
- else
- debug-print "depend-java-query: NV_DEPEND: ${JAVA_PKG_NV_DEPEND:-${DEPEND}}";
- GENTOO_VM="$(depend-java-query --get-vm "${JAVA_PKG_NV_DEPEND:-${DEPEND}}")";
- if [[ -z "${GENTOO_VM}" || "${GENTOO_VM}" == "None" ]]; then
- eerror "Unable to determine VM for building from dependencies:";
- echo "NV_DEPEND: ${JAVA_PKG_NV_DEPEND:-${DEPEND}}";
- die "Failed to determine VM for building.";
- fi;
- fi;
- export GENTOO_VM;
- else
- java-pkg_ensure-vm-version-sufficient;
- fi;
- fi;
- debug-print "Using: $(java-config -f)";
- java-pkg_setup-vm;
- export JAVA=$(java-config --java);
- export JAVAC=$(java-config --javac);
- JAVACFLAGS="$(java-pkg_javac-args)";
- [[ -n ${JAVACFLAGS_EXTRA} ]] && JAVACFLAGS="${JAVACFLAGS_EXTRA} ${JAVACFLAGS}";
- export JAVACFLAGS;
- export JAVA_HOME="$(java-config -g JAVA_HOME)";
- export JDK_HOME=${JAVA_HOME};
- java-pkg_append_ LD_LIBRARY_PATH "$(java-config -g LDPATH)";
- local tann="${T}/announced-vm";
- if [[ -n "${JAVA_PKG_DEBUG}" ]] || [[ ! -f "${tann}" ]]; then
- einfo "Using: $(java-config -f)";
- [[ ! -f "${tann}" ]] && touch "${tann}";
- fi;
- else
- [[ -n "${JAVA_PKG_DEBUG}" ]] && ewarn "!!! This package inherits java-pkg but doesn't depend on a JDK. -bin or broken dependency!!!";
- fi
- }
- java-pkg_verify-classes ()
- {
- local version_verify="/usr/bin/class-version-verify.py";
- if [[ ! -x "${version_verify}" ]]; then
- version_verify="/usr/$(get_libdir)/javatoolkit/bin/class-version-verify.py";
- fi;
- if [[ ! -x "${version_verify}" ]]; then
- ewarn "Unable to perform class version checks as";
- ewarn "class-version-verify.py is unavailable";
- ewarn "Please install dev-java/javatoolkit.";
- return;
- fi;
- local target=$(java-pkg_get-target);
- local result;
- local log="${T}/class-version-verify.log";
- if [[ -n "${1}" ]]; then
- ${version_verify} -v -t ${target} "${1}" > "${log}";
- result=$?;
- else
- ebegin "Verifying java class versions (target: ${target})";
- ${version_verify} -v -t ${target} -r "${D}" > "${log}";
- result=$?;
- eend ${result};
- fi;
- [[ -n ${JAVA_PKG_DEBUG} ]] && cat "${log}";
- if [[ ${result} != 0 ]]; then
- eerror "Incorrect bytecode version found";
- [[ -n "${1}" ]] && eerror "in file: ${1}";
- eerror "See ${log} for more details.";
- die "Incorrect bytecode found";
- fi
- }
- java-utils-2_pkg_preinst ()
- {
- if is-java-strict; then
- if [[ ! -e "${JAVA_PKG_ENV}" ]] || has ant-tasks ${INHERITED}; then
- return;
- fi;
- if has_version dev-java/java-dep-check; then
- local output=$(GENTOO_VM= java-dep-check --image "${D}" "${JAVA_PKG_ENV}");
- [[ -n ${output} ]] && ewarn "${output}";
- else
- eerror "Install dev-java/java-dep-check for dependency checking";
- fi;
- fi
- }
- java-utils-2_src_prepare ()
- {
- case ${EAPI:-0} in
- [0-5])
- java-pkg_func-exists java_prepare && java_prepare
- ;;
- *)
- java-pkg_func-exists java_prepare && eqawarn "java_prepare is no longer called, define src_prepare instead.";
- eapply_user
- ;;
- esac;
- if [[ -n ${JAVA_RM_FILES[@]} ]]; then
- debug-print "$FUNCNAME: removing unneeded files";
- java-pkg_rm_files "${JAVA_RM_FILES[@]}";
- fi;
- if is-java-strict; then
- echo "Searching for bundled jars:";
- java-pkg_find-normal-jars || echo "None found.";
- echo "Searching for bundled classes (no output if none found):";
- find "${WORKDIR}" -name "*.class";
- echo "Search done.";
- fi
- }
- kernel_is ()
- {
- linux-info_get_any_version;
- local operator test value;
- case ${1#-} in
- lt)
- operator="-lt";
- shift
- ;;
- gt)
- operator="-gt";
- shift
- ;;
- le)
- operator="-le";
- shift
- ;;
- ge)
- operator="-ge";
- shift
- ;;
- eq)
- operator="-eq";
- shift
- ;;
- *)
- operator="-eq"
- ;;
- esac;
- [[ $# -gt 3 ]] && die "Error in kernel-2_kernel_is(): too many parameters";
- : $(( test = (KV_MAJOR << 16) + (KV_MINOR << 8) + KV_PATCH ));
- : $(( value = (${1:-${KV_MAJOR}} << 16) + (${2:-${KV_MINOR}} << 8) + ${3:-${KV_PATCH}} ));
- [ ${test} ${operator} ${value} ]
- }
- linux-info_get_any_version ()
- {
- get_version;
- if [[ $? -ne 0 ]]; then
- ewarn "Unable to calculate Linux Kernel version for build, attempting to use running version";
- get_running_version;
- fi
- }
- linux-info_pkg_setup ()
- {
- linux-info_get_any_version;
- if kernel_is 2 4; then
- if [ "$( gcc-major-version )" -eq "4" ]; then
- echo;
- ewarn "Be warned !! >=sys-devel/gcc-4.0.0 isn't supported with";
- ewarn "linux-2.4 (or modules building against a linux-2.4 kernel)!";
- echo;
- ewarn "Either switch to another gcc-version (via gcc-config) or use a";
- ewarn "newer kernel that supports gcc-4.";
- echo;
- ewarn "Also be aware that bugreports about gcc-4 not working";
- ewarn "with linux-2.4 based ebuilds will be closed as INVALID!";
- echo;
- epause 10;
- fi;
- fi;
- [ -n "${CONFIG_CHECK}" ] && check_extra_config
- }
- linux_chkconfig_builtin ()
- {
- linux_config_qa_check linux_chkconfig_builtin;
- [[ $(getfilevar_noexec "CONFIG_$1" "$(linux_config_path)") == y ]]
- }
- linux_chkconfig_module ()
- {
- linux_config_qa_check linux_chkconfig_module;
- [[ $(getfilevar_noexec "CONFIG_$1" "$(linux_config_path)") == m ]]
- }
- linux_chkconfig_present ()
- {
- linux_config_qa_check linux_chkconfig_present;
- [[ $(getfilevar_noexec "CONFIG_$1" "$(linux_config_path)") == [my] ]]
- }
- linux_chkconfig_string ()
- {
- linux_config_qa_check linux_chkconfig_string;
- getfilevar_noexec "CONFIG_$1" "$(linux_config_path)"
- }
- linux_config_bin_exists ()
- {
- export _LINUX_CONFIG_EXISTS_DONE=1;
- [[ -s /proc/config.gz ]]
- }
- linux_config_exists ()
- {
- linux_config_src_exists || linux_config_bin_exists
- }
- linux_config_path ()
- {
- if linux_config_src_exists; then
- echo "${KV_OUT_DIR}/.config";
- else
- if linux_config_bin_exists; then
- echo "/proc/config.gz";
- else
- return 1;
- fi;
- fi
- }
- linux_config_qa_check ()
- {
- local f="$1";
- if [ -z "${_LINUX_CONFIG_EXISTS_DONE}" ]; then
- ewarn "QA: You called $f before any linux_config_exists!";
- ewarn "QA: The return value of $f will NOT guaranteed later!";
- fi
- }
- linux_config_src_exists ()
- {
- export _LINUX_CONFIG_EXISTS_DONE=1;
- [[ -n ${KV_OUT_DIR} && -s ${KV_OUT_DIR}/.config ]]
- }
- list-paxables ()
- {
- file "$@" 2> /dev/null | grep -E 'ELF.*(executable|shared object)' | sed -e 's/: .*$//'
- }
- make_desktop_entry ()
- {
- [[ -z $1 ]] && die "make_desktop_entry: You must specify the executable";
- local exec=${1};
- local name=${2:-${PN}};
- local icon=${3:-${PN}};
- local type=${4};
- local fields=${5};
- if [[ -z ${type} ]]; then
- local catmaj=${CATEGORY%%-*};
- local catmin=${CATEGORY##*-};
- case ${catmaj} in
- app)
- case ${catmin} in
- accessibility)
- type="Utility;Accessibility"
- ;;
- admin)
- type=System
- ;;
- antivirus)
- type=System
- ;;
- arch)
- type="Utility;Archiving"
- ;;
- backup)
- type="Utility;Archiving"
- ;;
- cdr)
- type="AudioVideo;DiscBurning"
- ;;
- dicts)
- type="Office;Dictionary"
- ;;
- doc)
- type=Documentation
- ;;
- editors)
- type="Utility;TextEditor"
- ;;
- emacs)
- type="Development;TextEditor"
- ;;
- emulation)
- type="System;Emulator"
- ;;
- laptop)
- type="Settings;HardwareSettings"
- ;;
- office)
- type=Office
- ;;
- pda)
- type="Office;PDA"
- ;;
- vim)
- type="Development;TextEditor"
- ;;
- xemacs)
- type="Development;TextEditor"
- ;;
- esac
- ;;
- dev)
- type="Development"
- ;;
- games)
- case ${catmin} in
- action | fps)
- type=ActionGame
- ;;
- arcade)
- type=ArcadeGame
- ;;
- board)
- type=BoardGame
- ;;
- emulation)
- type=Emulator
- ;;
- kids)
- type=KidsGame
- ;;
- puzzle)
- type=LogicGame
- ;;
- roguelike)
- type=RolePlaying
- ;;
- rpg)
- type=RolePlaying
- ;;
- simulation)
- type=Simulation
- ;;
- sports)
- type=SportsGame
- ;;
- strategy)
- type=StrategyGame
- ;;
- esac;
- type="Game;${type}"
- ;;
- gnome)
- type="Gnome;GTK"
- ;;
- kde)
- type="KDE;Qt"
- ;;
- mail)
- type="Network;Email"
- ;;
- media)
- case ${catmin} in
- gfx)
- type=Graphics
- ;;
- *)
- case ${catmin} in
- radio)
- type=Tuner
- ;;
- sound)
- type=Audio
- ;;
- tv)
- type=TV
- ;;
- video)
- type=Video
- ;;
- esac;
- type="AudioVideo;${type}"
- ;;
- esac
- ;;
- net)
- case ${catmin} in
- dialup)
- type=Dialup
- ;;
- ftp)
- type=FileTransfer
- ;;
- im)
- type=InstantMessaging
- ;;
- irc)
- type=IRCClient
- ;;
- mail)
- type=Email
- ;;
- news)
- type=News
- ;;
- nntp)
- type=News
- ;;
- p2p)
- type=FileTransfer
- ;;
- voip)
- type=Telephony
- ;;
- esac;
- type="Network;${type}"
- ;;
- sci)
- case ${catmin} in
- astro*)
- type=Astronomy
- ;;
- bio*)
- type=Biology
- ;;
- calc*)
- type=Calculator
- ;;
- chem*)
- type=Chemistry
- ;;
- elec*)
- type=Electronics
- ;;
- geo*)
- type=Geology
- ;;
- math*)
- type=Math
- ;;
- physics)
- type=Physics
- ;;
- visual*)
- type=DataVisualization
- ;;
- esac;
- type="Education;Science;${type}"
- ;;
- sys)
- type="System"
- ;;
- www)
- case ${catmin} in
- client)
- type=WebBrowser
- ;;
- esac;
- type="Network;${type}"
- ;;
- *)
- type=
- ;;
- esac;
- fi;
- local slot=${SLOT%/*};
- if [[ ${slot} == "0" ]]; then
- local desktop_name="${PN}";
- else
- local desktop_name="${PN}-${slot}";
- fi;
- local desktop="${T}/$(echo ${exec} | sed 's:[[:space:]/:]:_:g')-${desktop_name}.desktop";
- type=${type%;}${type:+;};
- 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 ()
- {
- _eutils_eprefix_init;
- local wrapper=$1 bin=$2 chdir=$3 libdir=$4 path=$5;
- local tmpwrapper=$(emktemp);
- ( echo '#!/bin/sh';
- [[ -n ${chdir} ]] && printf 'cd "%s"\n' "${EPREFIX}${chdir}";
- if [[ -n ${libdir} ]]; then
- local var;
- if [[ ${CHOST} == *-darwin* ]]; then
- var=DYLD_LIBRARY_PATH;
- else
- var=LD_LIBRARY_PATH;
- fi;
- cat <<-EOF
- if [ "\${${var}+set}" = "set" ] ; then
- export ${var}="\${${var}}:${EPREFIX}${libdir}"
- else
- export ${var}="${EPREFIX}${libdir}"
- fi
- EOF
- fi
- printf 'exec %s "$@"\n' "${bin/#\//${EPREFIX}/}" ) > "${tmpwrapper}";
- chmod go+rx "${tmpwrapper}";
- if [[ -n ${path} ]]; then
- ( exeinto "${path}";
- newexe "${tmpwrapper}" "${wrapper}" ) || die;
- else
- newbin "${tmpwrapper}" "${wrapper}" || die;
- fi
- }
- multilib_env ()
- {
- local CTARGET=${1:-${CTARGET}};
- local cpu=${CTARGET%%*-};
- case ${cpu} in
- aarch64*)
- export CFLAGS_arm=${CFLAGS_arm-};
- case ${cpu} in
- aarch64*be)
- export CHOST_arm="armv8b-${CTARGET#*-}"
- ;;
- *)
- export CHOST_arm="armv8l-${CTARGET#*-}"
- ;;
- esac;
- CHOST_arm=${CHOST_arm/%-gnu/-gnueabi};
- export CTARGET_arm=${CHOST_arm};
- export LIBDIR_arm="lib";
- export CFLAGS_arm64=${CFLAGS_arm64-};
- export CHOST_arm64=${CTARGET};
- export CTARGET_arm64=${CHOST_arm64};
- export LIBDIR_arm64="lib64";
- : ${MULTILIB_ABIS=arm64};
- : ${DEFAULT_ABI=arm64}
- ;;
- x86_64*)
- export CFLAGS_x86=${CFLAGS_x86--m32};
- export CHOST_x86=${CTARGET/x86_64/i686};
- CHOST_x86=${CHOST_x86/%-gnux32/-gnu};
- export CTARGET_x86=${CHOST_x86};
- if [[ ${SYMLINK_LIB} == "yes" ]]; then
- export LIBDIR_x86="lib32";
- else
- export LIBDIR_x86="lib";
- fi;
- export CFLAGS_amd64=${CFLAGS_amd64--m64};
- export CHOST_amd64=${CTARGET/%-gnux32/-gnu};
- export CTARGET_amd64=${CHOST_amd64};
- export LIBDIR_amd64="lib64";
- export CFLAGS_x32=${CFLAGS_x32--mx32};
- export CHOST_x32=${CTARGET/%-gnu/-gnux32};
- export CTARGET_x32=${CHOST_x32};
- export LIBDIR_x32="libx32";
- case ${CTARGET} in
- *-gnux32)
- : ${MULTILIB_ABIS=x32 amd64 x86};
- : ${DEFAULT_ABI=x32}
- ;;
- *)
- : ${MULTILIB_ABIS=amd64 x86};
- : ${DEFAULT_ABI=amd64}
- ;;
- esac
- ;;
- mips64*)
- export CFLAGS_o32=${CFLAGS_o32--mabi=32};
- export CHOST_o32=${CTARGET/mips64/mips};
- export CTARGET_o32=${CHOST_o32};
- export LIBDIR_o32="lib";
- export CFLAGS_n32=${CFLAGS_n32--mabi=n32};
- export CHOST_n32=${CTARGET};
- export CTARGET_n32=${CHOST_n32};
- export LIBDIR_n32="lib32";
- export CFLAGS_n64=${CFLAGS_n64--mabi=64};
- export CHOST_n64=${CTARGET};
- export CTARGET_n64=${CHOST_n64};
- export LIBDIR_n64="lib64";
- : ${MULTILIB_ABIS=n64 n32 o32};
- : ${DEFAULT_ABI=n32}
- ;;
- powerpc64*)
- export CFLAGS_ppc=${CFLAGS_ppc--m32};
- export CHOST_ppc=${CTARGET/powerpc64/powerpc};
- export CTARGET_ppc=${CHOST_ppc};
- export LIBDIR_ppc="lib";
- export CFLAGS_ppc64=${CFLAGS_ppc64--m64};
- export CHOST_ppc64=${CTARGET};
- export CTARGET_ppc64=${CHOST_ppc64};
- export LIBDIR_ppc64="lib64";
- : ${MULTILIB_ABIS=ppc64 ppc};
- : ${DEFAULT_ABI=ppc64}
- ;;
- s390x*)
- export CFLAGS_s390=${CFLAGS_s390--m31};
- export CHOST_s390=${CTARGET/s390x/s390};
- export CTARGET_s390=${CHOST_s390};
- export LIBDIR_s390="lib";
- export CFLAGS_s390x=${CFLAGS_s390x--m64};
- export CHOST_s390x=${CTARGET};
- export CTARGET_s390x=${CHOST_s390x};
- export LIBDIR_s390x="lib64";
- : ${MULTILIB_ABIS=s390x s390};
- : ${DEFAULT_ABI=s390x}
- ;;
- sparc64*)
- export CFLAGS_sparc32=${CFLAGS_sparc32--m32};
- export CHOST_sparc32=${CTARGET/sparc64/sparc};
- export CTARGET_sparc32=${CHOST_sparc32};
- export LIBDIR_sparc32="lib";
- export CFLAGS_sparc64=${CFLAGS_sparc64--m64};
- export CHOST_sparc64=${CTARGET};
- export CTARGET_sparc64=${CHOST_sparc64};
- export LIBDIR_sparc64="lib64";
- : ${MULTILIB_ABIS=sparc64 sparc32};
- : ${DEFAULT_ABI=sparc64}
- ;;
- *)
- : ${MULTILIB_ABIS=default};
- : ${DEFAULT_ABI=default}
- ;;
- esac;
- export MULTILIB_ABIS DEFAULT_ABI
- }
- multilib_toolchain_setup ()
- {
- local v vv;
- export ABI=$1;
- if [[ ${_DEFAULT_ABI_SAVED} == "true" ]]; then
- for v in CHOST CBUILD AS CC CXX F77 FC LD PKG_CONFIG_{LIBDIR,PATH};
- do
- vv="_abi_saved_${v}";
- [[ ${!vv+set} == "set" ]] && export ${v}="${!vv}" || unset ${v};
- unset ${vv};
- done;
- unset _DEFAULT_ABI_SAVED;
- fi;
- if [[ ${ABI} != ${DEFAULT_ABI} ]]; then
- for v in CHOST CBUILD AS CC CXX F77 FC LD PKG_CONFIG_{LIBDIR,PATH};
- do
- vv="_abi_saved_${v}";
- [[ ${!v+set} == "set" ]] && export ${vv}="${!v}" || unset ${vv};
- done;
- export _DEFAULT_ABI_SAVED="true";
- export CHOST=$(get_abi_CHOST ${DEFAULT_ABI});
- export CC="$(tc-getCC) $(get_abi_CFLAGS)";
- export CXX="$(tc-getCXX) $(get_abi_CFLAGS)";
- export F77="$(tc-getF77) $(get_abi_CFLAGS)";
- export FC="$(tc-getFC) $(get_abi_CFLAGS)";
- export LD="$(tc-getLD) $(get_abi_LDFLAGS)";
- export CHOST=$(get_abi_CHOST $1);
- export CBUILD=$(get_abi_CHOST $1);
- export PKG_CONFIG_LIBDIR=${EPREFIX}/usr/$(get_libdir)/pkgconfig;
- export PKG_CONFIG_PATH=${EPREFIX}/usr/share/pkgconfig;
- fi
- }
- newicon ()
- {
- _iconins ${FUNCNAME} "$@"
- }
- newmenu ()
- {
- ( insinto /usr/share/applications;
- newins "$@" )
- }
- no-as-needed ()
- {
- case $($(tc-getLD) -v 2>&1 </dev/null) in
- *GNU*)
- echo "-Wl,--no-as-needed"
- ;;
- esac
- }
- number_abis ()
- {
- set -- `get_install_abis`;
- echo $#
- }
- optfeature ()
- {
- debug-print-function ${FUNCNAME} "$@";
- local i j msg;
- local desc=$1;
- local flag=0;
- shift;
- for i in "$@";
- do
- for j in ${i};
- do
- if has_version "${j}"; then
- flag=1;
- else
- flag=0;
- break;
- fi;
- done;
- if [[ ${flag} -eq 1 ]]; then
- break;
- fi;
- done;
- if [[ ${flag} -eq 0 ]]; then
- for i in "$@";
- do
- msg=" ";
- for j in ${i};
- do
- msg+=" ${j} and";
- done;
- msg="${msg:0: -4} for ${desc}";
- elog "${msg}";
- done;
- fi
- }
- path_exists ()
- {
- 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
- }
- pax-mark ()
- {
- local f;
- local flags;
- local ret=0;
- flags="${1//[!zPpEeMmRrSs]}";
- [[ -n "${flags}" ]] || return 0;
- shift;
- local dodefault="";
- [[ -n "${flags//[!z]}" ]] && dodefault="yes";
- if has PT ${PAX_MARKINGS}; then
- for f in "$@";
- do
- if type -p paxctl > /dev/null; then
- einfo "PT_PAX marking -${flags} ${f} with paxctl";
- paxctl -q${flags} "${f}" > /dev/null 2>&1 && continue;
- fi;
- if type -p paxctl-ng > /dev/null && paxctl-ng -L; then
- einfo "PT_PAX marking -${flags} ${f} with paxctl-ng";
- flags="${flags//z}";
- [[ ${dodefault} == "yes" ]] && paxctl-ng -L -z "${f}" > /dev/null 2>&1;
- [[ -n "${flags}" ]] || continue;
- paxctl-ng -L -${flags} "${f}" > /dev/null 2>&1 && continue;
- fi;
- if type -p scanelf > /dev/null && [[ ${PAX_MARKINGS} != "none" ]]; then
- einfo "PT_PAX marking -${flags} ${f} with scanelf";
- scanelf -Xxz ${flags} "$f" > /dev/null 2>&1;
- else
- if [[ ${PAX_MARKINGS} != "none" ]]; then
- elog "Failed to set PT_PAX markings -${flags} ${f}.";
- ret=1;
- fi;
- fi;
- done;
- fi;
- if has XT ${PAX_MARKINGS}; then
- flags="${flags//z}";
- for f in "$@";
- do
- if type -p paxctl-ng > /dev/null && paxctl-ng -l; then
- einfo "XATTR_PAX marking -${flags} ${f} with paxctl-ng";
- [[ ${dodefault} == "yes" ]] && paxctl-ng -d "${f}" > /dev/null 2>&1;
- [[ -n "${flags}" ]] || continue;
- paxctl-ng -l -${flags} "${f}" > /dev/null 2>&1 && continue;
- fi;
- if type -p setfattr > /dev/null; then
- [[ -n "${flags//[!Ee]}" ]] || flags+="e";
- einfo "XATTR_PAX marking -${flags} ${f} with setfattr";
- [[ ${dodefault} == "yes" ]] && setfattr -x "user.pax.flags" "${f}" > /dev/null 2>&1;
- setfattr -n "user.pax.flags" -v "${flags}" "${f}" > /dev/null 2>&1 && continue;
- fi;
- if [[ ${PAX_MARKINGS} != "none" ]]; then
- elog "Failed to set XATTR_PAX markings -${flags} ${f}.";
- ret=1;
- fi;
- done;
- fi;
- return ${ret}
- }
- pkg_nofetch ()
- {
- default
- }
- pkg_postinst ()
- {
- fdo-mime_desktop_database_update;
- if use udev; then
- udevadm control --reload-rules && udevadm trigger --subsystem-match=usb;
- fi;
- if ! use headless && use qt4; then
- elog "To launch VirtualBox just type: \"VirtualBox\".";
- fi;
- elog "You must be in the vboxusers group to use VirtualBox.";
- elog "";
- elog "The latest user manual is available for download at:";
- elog "http://download.virtualbox.org/virtualbox/${PV}/UserManual.pdf";
- elog "";
- elog "For advanced networking setups you should emerge:";
- elog "net-misc/bridge-utils and sys-apps/usermode-utilities";
- elog "";
- elog "IMPORTANT!";
- elog "If you upgrade from app-emulation/virtualbox-ose make sure to run";
- elog "\"env-update\" as root and logout and relogin as the user you wish";
- elog "to run ${PN} as.";
- elog "";
- elog "Starting with version 4.0.0, ${PN} has USB-1 support.";
- elog "For USB-2 support, PXE-boot ability and VRDP support please emerge";
- elog " app-emulation/virtualbox-extpack-oracle";
- elog "package.";
- if ! use udev; then
- elog "";
- elog "WARNING!";
- elog "Without USE=udev, USB devices will likely not work in ${PN}.";
- else
- if [ -e "${ROOT}/etc/udev/rules.d/10-virtualbox.rules" ]; then
- elog "";
- elog "Please remove \"${ROOT}/etc/udev/rules.d/10-virtualbox.rules\"";
- elog "or else USB in ${PN} won't work.";
- fi;
- fi
- }
- pkg_postrm ()
- {
- fdo-mime_desktop_database_update
- }
- pkg_preinst ()
- {
- java-pkg-opt-2_pkg_preinst "$@"
- }
- pkg_setup ()
- {
- if ! use headless && ! use qt4; then
- einfo "No USE=\"qt4\" selected, this build will not include";
- einfo "any Qt frontend.";
- else
- if use headless && use qt4; then
- einfo "You selected USE=\"headless qt4\", defaulting to";
- einfo "USE=\"headless\", this build will not include any X11/Qt frontend.";
- fi;
- fi;
- if ! use opengl; then
- einfo "No USE=\"opengl\" selected, this build will lack";
- einfo "the OpenGL feature.";
- fi;
- if ! use python; then
- einfo "You have disabled the \"python\" USE flag. This will only";
- einfo "disable the python bindings being installed.";
- fi;
- java-pkg-opt-2_pkg_setup;
- python-single-r1_pkg_setup;
- tc-ld-disable-gold;
- tc-export CC CXX LD AR RANLIB;
- export HOST_CC="$(tc-getBUILD_CC)"
- }
- preserve_old_lib ()
- {
- _eutils_eprefix_init;
- 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 ${EROOT}/${lib} ]] || continue;
- dir=${lib%/*};
- dodir ${dir} || die "dodir ${dir} failed";
- cp "${EROOT}"/${lib} "${ED}"/${lib} || die "cp ${lib} failed";
- touch "${ED}"/${lib};
- done
- }
- preserve_old_lib_notify ()
- {
- if [[ ${EBUILD_PHASE} != "postinst" ]]; then
- eerror "preserve_old_lib_notify() must be called from pkg_postinst() only";
- die "Invalid preserve_old_lib_notify() usage";
- fi;
- has preserve-libs ${FEATURES} && return 0;
- _eutils_eprefix_init;
- local lib notice=0;
- for lib in "$@";
- do
- [[ -e ${EROOT}/${lib} ]] || continue;
- if [[ ${notice} -eq 0 ]]; then
- notice=1;
- ewarn "Old versions of installed libraries were detected on your system.";
- ewarn "In order to avoid breaking packages that depend on these old libs,";
- ewarn "the libraries are not being removed. You need to run revdep-rebuild";
- ewarn "in order to remove these old dependencies. If you do not have this";
- ewarn "helper program, simply emerge the 'gentoolkit' package.";
- ewarn;
- fi;
- ewarn " # revdep-rebuild --library '${lib}' && rm '${lib}'";
- done
- }
- prune_libtool_files ()
- {
- debug-print-function ${FUNCNAME} "$@";
- local removing_all removing_modules opt;
- _eutils_eprefix_init;
- for opt in "$@";
- do
- case "${opt}" in
- --all)
- removing_all=1;
- removing_modules=1
- ;;
- --modules)
- removing_modules=1
- ;;
- *)
- die "Invalid argument to ${FUNCNAME}(): ${opt}"
- ;;
- esac;
- done;
- local f;
- local queue=();
- while IFS= read -r -d '' f; do
- local archivefile=${f/%.la/.a};
- if ! sed -n -e '/^# Generated by .*libtool/q0;4q1' "${f}"; then
- continue;
- fi;
- [[ ${f} != ${archivefile} ]] || die 'regex sanity check failed';
- local reason= pkgconfig_scanned=;
- local snotlink=$(sed -n -e 's:^shouldnotlink=::p' "${f}");
- if [[ ${snotlink} == yes ]]; then
- if [[ -f ${archivefile} ]]; then
- einfo "Removing unnecessary ${archivefile#${D%/}} (static plugin)";
- queue+=("${archivefile}");
- fi;
- if [[ -n ${removing_modules} ]]; then
- reason='module';
- fi;
- else
- if [[ -n ${removing_all} ]]; then
- reason='requested';
- else
- if [[ ! -f ${archivefile} ]]; then
- reason='no static archive';
- else
- if [[ ! -n $(sed -nre "s/^(dependency_libs|inherited_linker_flags)='(.*)'$/\2/p" "${f}") ]]; then
- reason='no libs & flags';
- else
- if [[ ! -n ${pkgconfig_scanned} ]]; then
- local pc_libs=();
- if [[ ! -n ${removing_all} ]]; then
- local pc;
- local tf=${T}/prune-lt-files.pc;
- local pkgconf=$(tc-getPKG_CONFIG);
- while IFS= read -r -d '' pc; do
- local arg libs;
- if ${pkgconf} --exists "${pc}" &> /dev/null; then
- sed -e '/^Requires:/d' "${pc}" > "${tf}";
- libs=$(${pkgconf} --libs "${tf}");
- else
- libs=$(sed -ne 's/^Libs://p' "${pc}");
- fi;
- for arg in ${libs};
- do
- if [[ ${arg} == -l* ]]; then
- if [[ ${arg} == '*$*' ]]; then
- eqawarn "${FUNCNAME}: variable substitution likely failed in ${pc}";
- eqawarn "(arg: ${arg})";
- eqawarn "Most likely, you need to add virtual/pkgconfig to DEPEND.";
- fi;
- pc_libs+=(lib${arg#-l}.la);
- fi;
- done;
- done < <(find "${D}" -type f -name '*.pc' -print0);
- rm -f "${tf}";
- fi;
- pkgconfig_scanned=1;
- fi;
- has "${f##*/}" "${pc_libs[@]}" && reason='covered by .pc';
- fi;
- fi;
- fi;
- fi;
- if [[ -n ${reason} ]]; then
- einfo "Removing unnecessary ${f#${D%/}} (${reason})";
- queue+=("${f}");
- fi;
- done < <(find "${ED}" -xtype f -name '*.la' -print0);
- if [[ -n ${queue[@]} ]]; then
- rm -f "${queue[@]}";
- fi
- }
- python-single-r1_pkg_setup ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- [[ ${MERGE_TYPE} != binary ]] && python_setup
- }
- python_abi_depend ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_byte-compile_modules ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_clean_byte-compiled_modules ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_clean_installation_image ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_clean_py-compile_files ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_convert_shebangs ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#python_convert_shebangs"
- }
- python_disable_pyc ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_doexe ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local f;
- for f in "$@";
- do
- python_newexe "${f}" "${f##*/}";
- done
- }
- python_doheader ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- [[ -n ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).';
- if [[ ${EAPI:-0} == [0123] ]]; then
- die "python_do* and python_new* helpers are banned in EAPIs older than 4.";
- fi;
- local d PYTHON_INCLUDEDIR=${PYTHON_INCLUDEDIR};
- [[ -n ${PYTHON_INCLUDEDIR} ]] || python_export PYTHON_INCLUDEDIR;
- d=${PYTHON_INCLUDEDIR#${EPREFIX}};
- ( insinto "${d}";
- doins -r "${@}" || return ${?} )
- }
- python_domodule ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- [[ -n ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).';
- if [[ ${EAPI:-0} == [0123] ]]; then
- die "python_do* and python_new* helpers are banned in EAPIs older than 4.";
- fi;
- local d;
- if [[ ${python_moduleroot} == /* ]]; then
- d=${python_moduleroot};
- else
- local PYTHON_SITEDIR=${PYTHON_SITEDIR};
- [[ -n ${PYTHON_SITEDIR} ]] || python_export PYTHON_SITEDIR;
- d=${PYTHON_SITEDIR#${EPREFIX}}/${python_moduleroot};
- fi;
- ( insinto "${d}";
- doins -r "${@}" || return ${?} );
- python_optimize "${ED}/${d}"
- }
- python_doscript ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local _PYTHON_REWRITE_SHEBANG=1;
- python_doexe "${@}"
- }
- python_enable_pyc ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_execute_function ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#python_execute_function"
- }
- python_execute_nosetests ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_execute_py.test ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_execute_trial ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_export ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local impl var;
- case "${1}" in
- python* | jython*)
- impl=${1/_/.};
- shift
- ;;
- pypy | pypy3)
- impl=${1};
- shift
- ;;
- *)
- impl=${EPYTHON};
- if [[ -z ${impl} ]]; then
- die "python_export called without a python implementation and EPYTHON is unset";
- fi
- ;;
- esac;
- debug-print "${FUNCNAME}: implementation: ${impl}";
- for var in "$@";
- do
- case "${var}" in
- EPYTHON)
- export EPYTHON=${impl};
- debug-print "${FUNCNAME}: EPYTHON = ${EPYTHON}"
- ;;
- PYTHON)
- export PYTHON=${EPREFIX}/usr/bin/${impl};
- debug-print "${FUNCNAME}: PYTHON = ${PYTHON}"
- ;;
- PYTHON_SITEDIR)
- [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it";
- PYTHON_SITEDIR=$("${PYTHON}" -c 'import distutils.sysconfig; print(distutils.sysconfig.get_python_lib())') || die;
- export PYTHON_SITEDIR;
- debug-print "${FUNCNAME}: PYTHON_SITEDIR = ${PYTHON_SITEDIR}"
- ;;
- PYTHON_INCLUDEDIR)
- [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it";
- PYTHON_INCLUDEDIR=$("${PYTHON}" -c 'import distutils.sysconfig; print(distutils.sysconfig.get_python_inc())') || die;
- export PYTHON_INCLUDEDIR;
- debug-print "${FUNCNAME}: PYTHON_INCLUDEDIR = ${PYTHON_INCLUDEDIR}";
- if [[ ! -d ${PYTHON_INCLUDEDIR} ]]; then
- die "${impl} does not install any header files!";
- fi
- ;;
- PYTHON_LIBPATH)
- [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it";
- PYTHON_LIBPATH=$("${PYTHON}" -c 'import os.path, sysconfig; print(os.path.join(sysconfig.get_config_var("LIBDIR"), sysconfig.get_config_var("LDLIBRARY")) if sysconfig.get_config_var("LDLIBRARY") else "")') || die;
- export PYTHON_LIBPATH;
- debug-print "${FUNCNAME}: PYTHON_LIBPATH = ${PYTHON_LIBPATH}";
- if [[ ! -n ${PYTHON_LIBPATH} ]]; then
- die "${impl} lacks a (usable) dynamic library";
- fi
- ;;
- PYTHON_CFLAGS)
- local val;
- case "${impl}" in
- python*)
- val=$($(tc-getPKG_CONFIG) --cflags ${impl/n/n-}) || die
- ;;
- *)
- die "${impl}: obtaining ${var} not supported"
- ;;
- esac;
- export PYTHON_CFLAGS=${val};
- debug-print "${FUNCNAME}: PYTHON_CFLAGS = ${PYTHON_CFLAGS}"
- ;;
- PYTHON_LIBS)
- local val;
- case "${impl}" in
- python*)
- val=$($(tc-getPKG_CONFIG) --libs ${impl/n/n-}) || die
- ;;
- *)
- die "${impl}: obtaining ${var} not supported"
- ;;
- esac;
- export PYTHON_LIBS=${val};
- debug-print "${FUNCNAME}: PYTHON_LIBS = ${PYTHON_LIBS}"
- ;;
- PYTHON_CONFIG)
- local flags val;
- case "${impl}" in
- python*)
- [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it";
- flags=$("${PYTHON}" -c 'import sysconfig; print(sysconfig.get_config_var("ABIFLAGS") or "")') || die;
- val=${PYTHON}${flags}-config
- ;;
- *)
- die "${impl}: obtaining ${var} not supported"
- ;;
- esac;
- export PYTHON_CONFIG=${val};
- debug-print "${FUNCNAME}: PYTHON_CONFIG = ${PYTHON_CONFIG}"
- ;;
- PYTHON_PKG_DEP)
- local d;
- case ${impl} in
- python2.7)
- PYTHON_PKG_DEP='>=dev-lang/python-2.7.5-r2:2.7'
- ;;
- python3.3)
- PYTHON_PKG_DEP='>=dev-lang/python-3.3.2-r2:3.3'
- ;;
- python*)
- PYTHON_PKG_DEP="dev-lang/python:${impl#python}"
- ;;
- pypy)
- PYTHON_PKG_DEP='virtual/pypy:0='
- ;;
- pypy3)
- PYTHON_PKG_DEP='virtual/pypy3:0='
- ;;
- jython2.7)
- PYTHON_PKG_DEP='dev-java/jython:2.7'
- ;;
- *)
- die "Invalid implementation: ${impl}"
- ;;
- esac;
- if [[ -n ${PYTHON_REQ_USE} ]]; then
- PYTHON_PKG_DEP+=[${PYTHON_REQ_USE}];
- fi;
- export PYTHON_PKG_DEP;
- debug-print "${FUNCNAME}: PYTHON_PKG_DEP = ${PYTHON_PKG_DEP}"
- ;;
- PYTHON_SCRIPTDIR)
- local dir;
- export PYTHON_SCRIPTDIR=${EPREFIX}/usr/lib/python-exec/${impl};
- debug-print "${FUNCNAME}: PYTHON_SCRIPTDIR = ${PYTHON_SCRIPTDIR}"
- ;;
- *)
- die "python_export: unknown variable ${var}"
- ;;
- esac;
- done
- }
- python_export_utf8_locale ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- type locale > /dev/null || return 0;
- if [[ $(locale charmap) != UTF-8 ]]; then
- local lang locales="C.UTF-8 en_US.UTF-8 en_GB.UTF-8 $(locale -a)";
- for lang in ${locales};
- do
- if [[ $(LC_ALL=${lang} locale charmap 2>/dev/null) == UTF-8 ]]; then
- if _python_check_locale_sanity "${lang}"; then
- export LC_CTYPE=${lang};
- if [[ -n ${LC_ALL} ]]; then
- export LC_NUMERIC=${LC_ALL};
- export LC_TIME=${LC_ALL};
- export LC_COLLATE=${LC_ALL};
- export LC_MONETARY=${LC_ALL};
- export LC_MESSAGES=${LC_ALL};
- export LC_PAPER=${LC_ALL};
- export LC_NAME=${LC_ALL};
- export LC_ADDRESS=${LC_ALL};
- export LC_TELEPHONE=${LC_ALL};
- export LC_MEASUREMENT=${LC_ALL};
- export LC_IDENTIFICATION=${LC_ALL};
- export LC_ALL=;
- fi;
- return 0;
- fi;
- fi;
- done;
- ewarn "Could not find a UTF-8 locale. This may trigger build failures in";
- ewarn "some python packages. Please ensure that a UTF-8 locale is listed in";
- ewarn "/etc/locale.gen and run locale-gen.";
- return 1;
- fi;
- return 0
- }
- python_fix_shebang ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- [[ -n ${EPYTHON} ]] || die "${FUNCNAME}: EPYTHON unset (pkg_setup not called?)";
- local force quiet;
- while [[ -n ${@} ]]; do
- case "${1}" in
- -f | --force)
- force=1;
- shift
- ;;
- -q | --quiet)
- quiet=1;
- shift
- ;;
- --)
- shift;
- break
- ;;
- *)
- break
- ;;
- esac;
- done;
- [[ -n ${1} ]] || die "${FUNCNAME}: no paths given";
- local path f;
- for path in "$@";
- do
- local any_correct any_fixed is_recursive;
- [[ -d ${path} ]] && is_recursive=1;
- while IFS= read -r -d '' f; do
- local shebang i;
- local error= from=;
- IFS= read -r shebang < "${f}";
- if [[ ${shebang} == '#!'* ]]; then
- local split_shebang=();
- read -r -a split_shebang <<< ${shebang} || die;
- for i in "${split_shebang[@]}";
- do
- case "${i}" in
- *"${EPYTHON}")
- debug-print "${FUNCNAME}: in file ${f#${D}}";
- debug-print "${FUNCNAME}: shebang matches EPYTHON: ${shebang}";
- any_correct=1;
- from=${EPYTHON};
- break
- ;;
- *python | *python[23])
- debug-print "${FUNCNAME}: in file ${f#${D}}";
- debug-print "${FUNCNAME}: rewriting shebang: ${shebang}";
- if [[ ${i} == *python2 ]]; then
- from=python2;
- if [[ ! -n ${force} ]]; then
- python_is_python3 "${EPYTHON}" && error=1;
- fi;
- else
- if [[ ${i} == *python3 ]]; then
- from=python3;
- if [[ ! -n ${force} ]]; then
- python_is_python3 "${EPYTHON}" || error=1;
- fi;
- else
- from=python;
- fi;
- fi;
- break
- ;;
- *python[23].[0123456789] | *pypy | *pypy3 | *jython[23].[0123456789])
- if [[ ! -n ${force} ]]; then
- error=1;
- else
- case "${i}" in
- *python[23].[0123456789])
- from="python[23].[0123456789]"
- ;;
- *pypy)
- from="pypy"
- ;;
- *pypy3)
- from="pypy3"
- ;;
- *jython[23].[0123456789])
- from="jython[23].[0123456789]"
- ;;
- *)
- die "${FUNCNAME}: internal error in 2nd pattern match"
- ;;
- esac;
- fi;
- break
- ;;
- esac;
- done;
- fi;
- if [[ ! -n ${error} && ! -n ${from} ]]; then
- [[ -n ${is_recursive} ]] && continue;
- error=1;
- fi;
- if [[ ! -n ${quiet} ]]; then
- einfo "Fixing shebang in ${f#${D}}.";
- fi;
- if [[ ! -n ${error} ]]; then
- if [[ ${shebang} == *${from}" "* ]]; then
- sed -i -e "1s:${from} :${EPYTHON} :" "${f}" || die;
- else
- sed -i -e "1s:${from}$:${EPYTHON}:" "${f}" || die;
- fi;
- any_fixed=1;
- else
- eerror "The file has incompatible shebang:";
- eerror " file: ${f#${D}}";
- eerror " current shebang: ${shebang}";
- eerror " requested impl: ${EPYTHON}";
- die "${FUNCNAME}: conversion of incompatible shebang requested";
- fi;
- done < <(find -H "${path}" -type f -print0 || die);
- if [[ ! -n ${any_fixed} ]]; then
- local cmd=eerror;
- [[ ${EAPI:-0} == [012345] ]] && cmd=eqawarn;
- "${cmd}" "QA warning: ${FUNCNAME}, ${path#${D}} did not match any fixable files.";
- if [[ -n ${any_correct} ]]; then
- "${cmd}" "All files have ${EPYTHON} shebang already.";
- else
- "${cmd}" "There are no Python files in specified directory.";
- fi;
- [[ ${cmd} == eerror ]] && die "${FUNCNAME} did not match any fixable files (QA warning fatal in EAPI ${EAPI})";
- fi;
- done
- }
- python_gen_cond_dep ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local flag_prefix impl pattern;
- local matches=();
- if [[ ${#_PYTHON_SUPPORTED_IMPLS[@]} -eq 1 ]]; then
- flag_prefix=python_targets;
- else
- flag_prefix=python_single_target;
- fi;
- local dep=${1};
- shift;
- for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}";
- do
- for pattern in "$@";
- do
- if [[ ${impl} == ${pattern} ]]; then
- if [[ ${dep} == *'${PYTHON_USEDEP}'* ]]; then
- local usedep=$(python_gen_usedep "${@}");
- dep=${dep//\$\{PYTHON_USEDEP\}/${usedep}};
- fi;
- matches+=("${flag_prefix}_${impl}? ( ${dep} )");
- break;
- fi;
- done;
- done;
- echo "${matches[@]}"
- }
- python_gen_impl_dep ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local impl pattern;
- local matches=();
- if [[ ${#_PYTHON_SUPPORTED_IMPLS[@]} -eq 1 ]]; then
- flag_prefix=python_targets;
- else
- flag_prefix=python_single_target;
- fi;
- local PYTHON_REQ_USE=${1};
- shift;
- local patterns=("${@-*}");
- for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}";
- do
- for pattern in "${patterns[@]}";
- do
- if [[ ${impl} == ${pattern} ]]; then
- local PYTHON_PKG_DEP;
- python_export "${impl}" PYTHON_PKG_DEP;
- matches+=("${flag_prefix}_${impl}? ( ${PYTHON_PKG_DEP} )");
- break;
- fi;
- done;
- done;
- echo "${matches[@]}"
- }
- python_gen_usedep ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local impl pattern;
- local matches=();
- for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}";
- do
- for pattern in "$@";
- do
- if [[ ${impl} == ${pattern} ]]; then
- matches+=("python_targets_${impl}(-)?" "python_single_target_${impl}(+)?");
- break;
- fi;
- done;
- done;
- [[ -n ${matches[@]} ]] || die "No supported implementations match python_gen_usedep patterns: ${@}";
- local out=${matches[@]};
- echo "${out// /,}"
- }
- python_gen_useflags ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local flag_prefix impl pattern;
- local matches=();
- if [[ ${#_PYTHON_SUPPORTED_IMPLS[@]} -eq 1 ]]; then
- flag_prefix=python_targets;
- else
- flag_prefix=python_single_target;
- fi;
- for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}";
- do
- for pattern in "$@";
- do
- if [[ ${impl} == ${pattern} ]]; then
- matches+=("${flag_prefix}_${impl}");
- break;
- fi;
- done;
- done;
- echo "${matches[@]}"
- }
- python_generate_cffi_modules ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_generate_wrapper_scripts ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_get_CFLAGS ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- python_export "${@}" PYTHON_CFLAGS;
- echo "${PYTHON_CFLAGS}"
- }
- python_get_LIBS ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- python_export "${@}" PYTHON_LIBS;
- echo "${PYTHON_LIBS}"
- }
- python_get_PYTHON_CONFIG ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- python_export "${@}" PYTHON_CONFIG;
- echo "${PYTHON_CONFIG}"
- }
- python_get_extension_module_suffix ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_get_implementation ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_get_implementation_and_version ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_get_implementational_package ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_get_includedir ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- python_export "${@}" PYTHON_INCLUDEDIR;
- echo "${PYTHON_INCLUDEDIR}"
- }
- python_get_libdir ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_get_library ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_get_library_path ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- python_export "${@}" PYTHON_LIBPATH;
- echo "${PYTHON_LIBPATH}"
- }
- python_get_scriptdir ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- python_export "${@}" PYTHON_SCRIPTDIR;
- echo "${PYTHON_SCRIPTDIR}"
- }
- python_get_sitedir ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- python_export "${@}" PYTHON_SITEDIR;
- echo "${PYTHON_SITEDIR}"
- }
- python_get_version ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_install_executables ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_is_installed ()
- {
- local impl=${1:-${EPYTHON}};
- [[ -n ${impl} ]] || die "${FUNCNAME}: no impl nor EPYTHON";
- local -x ROOT=/;
- case "${impl}" in
- pypy | pypy3)
- local append=;
- if [[ -n ${PYTHON_REQ_USE} ]]; then
- append=[${PYTHON_REQ_USE}];
- fi;
- has_version "dev-python/${impl}${append}" || has_version "dev-python/${impl}-bin${append}"
- ;;
- *)
- local PYTHON_PKG_DEP;
- python_export "${impl}" PYTHON_PKG_DEP;
- has_version "${PYTHON_PKG_DEP}"
- ;;
- esac
- }
- python_is_python3 ()
- {
- local impl=${1:-${EPYTHON}};
- [[ -n ${impl} ]] || die "python_is_python3: no impl nor EPYTHON";
- [[ ${impl} == python3* || ${impl} == pypy3 ]]
- }
- python_merge_intermediate_installation_images ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_mod_cleanup ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#Python_byte-code_compilation"
- }
- python_mod_optimize ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#Python_byte-code_compilation"
- }
- python_moduleinto ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- python_moduleroot=${1}
- }
- python_need_rebuild ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_newexe ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- [[ -n ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).';
- [[ ${#} -eq 2 ]] || die "Usage: ${FUNCNAME} <path> <new-name>";
- if [[ ${EAPI:-0} == [0123] ]]; then
- die "python_do* and python_new* helpers are banned in EAPIs older than 4.";
- fi;
- local wrapd=${python_scriptroot:-/usr/bin};
- local f=${1};
- local newfn=${2};
- local PYTHON_SCRIPTDIR d;
- python_export PYTHON_SCRIPTDIR;
- d=${PYTHON_SCRIPTDIR#${EPREFIX}};
- ( dodir "${wrapd}";
- exeinto "${d}";
- newexe "${f}" "${newfn}" || return ${?} );
- _python_ln_rel "${ED%/}"/usr/lib/python-exec/python-exec2 "${ED%/}/${wrapd}/${newfn}" || die;
- if [[ -n ${_PYTHON_REWRITE_SHEBANG} ]]; then
- python_fix_shebang -q "${ED%/}/${d}/${newfn}";
- fi
- }
- python_newscript ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local _PYTHON_REWRITE_SHEBANG=1;
- python_newexe "${@}"
- }
- python_optimize ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- if [[ ${EBUILD_PHASE} == pre* || ${EBUILD_PHASE} == post* ]]; then
- eerror "The new Python eclasses expect the compiled Python files to";
- eerror "be controlled by the Package Manager. For this reason,";
- eerror "the python_optimize function can be used only during src_* phases";
- eerror "(src_install most commonly) and not during pkg_* phases.";
- echo;
- die "python_optimize is not to be used in pre/post* phases";
- fi;
- [[ -n ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).';
- local PYTHON=${PYTHON};
- [[ -n ${PYTHON} ]] || python_export PYTHON;
- if [[ ${#} -eq 0 ]]; then
- local f;
- while IFS= read -r -d '' f; do
- if [[ ${f} == /* && -d ${D}${f} ]]; then
- set -- "${D}${f}" "${@}";
- fi;
- done < <("${PYTHON}" -c 'import sys; print("\0".join(sys.path))' || die);
- debug-print "${FUNCNAME}: using sys.path: ${*/%/;}";
- fi;
- local d;
- for d in "$@";
- do
- local instpath=${d#${D}};
- instpath=/${instpath##/};
- case "${EPYTHON}" in
- python2.7 | python3.[34])
- "${PYTHON}" -m compileall -q -f -d "${instpath}" "${d}";
- "${PYTHON}" -OO -m compileall -q -f -d "${instpath}" "${d}"
- ;;
- python*)
- "${PYTHON}" -m compileall -q -f -d "${instpath}" "${d}";
- "${PYTHON}" -O -m compileall -q -f -d "${instpath}" "${d}";
- "${PYTHON}" -OO -m compileall -q -f -d "${instpath}" "${d}"
- ;;
- *)
- "${PYTHON}" -m compileall -q -f -d "${instpath}" "${d}"
- ;;
- esac;
- done
- }
- python_pkg_setup ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#pkg_setup"
- }
- python_scriptinto ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- python_scriptroot=${1}
- }
- python_set_active_version ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#pkg_setup"
- }
- python_setup ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- unset EPYTHON;
- if [[ -n ${PYTHON_COMPAT_OVERRIDE} ]]; then
- local impls=(${PYTHON_COMPAT_OVERRIDE});
- [[ ${#impls[@]} -eq 1 ]] || die "PYTHON_COMPAT_OVERRIDE must name exactly one implementation for python-single-r1";
- ewarn "WARNING: PYTHON_COMPAT_OVERRIDE in effect. The following Python";
- ewarn "implementation will be used:";
- ewarn;
- ewarn " ${PYTHON_COMPAT_OVERRIDE}";
- ewarn;
- ewarn "Dependencies won't be satisfied, and PYTHON_SINGLE_TARGET flags will be ignored.";
- python_export "${impls[0]}" EPYTHON PYTHON;
- python_wrapper_setup;
- return;
- fi;
- if [[ ${#_PYTHON_SUPPORTED_IMPLS[@]} -eq 1 ]]; then
- if use "python_targets_${_PYTHON_SUPPORTED_IMPLS[0]}"; then
- python_export "${_PYTHON_SUPPORTED_IMPLS[0]}" EPYTHON PYTHON;
- python_wrapper_setup;
- fi;
- else
- local impl;
- for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}";
- do
- if use "python_single_target_${impl}"; then
- if [[ -n ${EPYTHON} ]]; then
- eerror "Your PYTHON_SINGLE_TARGET setting lists more than a single Python";
- eerror "implementation. Please set it to just one value. If you need";
- eerror "to override the value for a single package, please use package.env";
- eerror "or an equivalent solution (man 5 portage).";
- echo;
- die "More than one implementation in PYTHON_SINGLE_TARGET.";
- fi;
- if ! use "python_targets_${impl}"; then
- eerror "The implementation chosen as PYTHON_SINGLE_TARGET must be added";
- eerror "to PYTHON_TARGETS as well. This is in order to ensure that";
- eerror "dependencies are satisfied correctly. We're sorry";
- eerror "for the inconvenience.";
- echo;
- die "Build target (${impl}) not in PYTHON_TARGETS.";
- fi;
- python_export "${impl}" EPYTHON PYTHON;
- python_wrapper_setup;
- fi;
- done;
- fi;
- if [[ ! -n ${EPYTHON} ]]; then
- eerror "No Python implementation selected for the build. Please set";
- if [[ ${#_PYTHON_SUPPORTED_IMPLS[@]} -eq 1 ]]; then
- eerror "the PYTHON_TARGETS variable in your make.conf to include one";
- else
- eerror "the PYTHON_SINGLE_TARGET variable in your make.conf to one";
- fi;
- eerror "of the following values:";
- eerror;
- eerror "${_PYTHON_SUPPORTED_IMPLS[@]}";
- echo;
- die "No supported Python implementation in PYTHON_SINGLE_TARGET/PYTHON_TARGETS.";
- fi
- }
- python_wrapper_setup ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local workdir=${1:-${T}/${EPYTHON}};
- local impl=${2:-${EPYTHON}};
- [[ -n ${workdir} ]] || die "${FUNCNAME}: no workdir specified.";
- [[ -n ${impl} ]] || die "${FUNCNAME}: no impl nor EPYTHON specified.";
- if [[ ! -x ${workdir}/bin/python ]]; then
- _python_check_dead_variables;
- mkdir -p "${workdir}"/{bin,pkgconfig} || die;
- rm -f "${workdir}"/bin/python{,2,3}{,-config} || die;
- rm -f "${workdir}"/bin/2to3 || die;
- rm -f "${workdir}"/pkgconfig/python{,2,3}.pc || die;
- local EPYTHON PYTHON PYTHON_CONFIG;
- python_export "${impl}" EPYTHON PYTHON;
- local pyver pyother;
- if python_is_python3; then
- pyver=3;
- pyother=2;
- else
- pyver=2;
- pyother=3;
- fi;
- cat > "${workdir}/bin/python" <<-_EOF_ ||
- #!/bin/sh
- exec "${PYTHON}" "\${@}"
- _EOF_
- die
- cp "${workdir}/bin/python" "${workdir}/bin/python${pyver}" || die;
- chmod +x "${workdir}/bin/python" "${workdir}/bin/python${pyver}" || die;
- local nonsupp=("python${pyother}" "python${pyother}-config");
- if [[ ${EPYTHON} == python* ]]; then
- python_export "${impl}" PYTHON_CONFIG;
- cat > "${workdir}/bin/python-config" <<-_EOF_ ||
- #!/bin/sh
- exec "${PYTHON_CONFIG}" "\${@}"
- _EOF_
- die
- cp "${workdir}/bin/python-config" "${workdir}/bin/python${pyver}-config" || die;
- chmod +x "${workdir}/bin/python-config" "${workdir}/bin/python${pyver}-config" || die;
- ln -s "${PYTHON/python/2to3-}" "${workdir}"/bin/2to3 || die;
- ln -s "${EPREFIX}"/usr/$(get_libdir)/pkgconfig/${EPYTHON/n/n-}.pc "${workdir}"/pkgconfig/python.pc || die;
- ln -s python.pc "${workdir}"/pkgconfig/python${pyver}.pc || die;
- else
- nonsupp+=(2to3 python-config "python${pyver}-config");
- fi;
- local x;
- for x in "${nonsupp[@]}";
- do
- cat > "${workdir}"/bin/${x} <<-_EOF_ ||
- #!/bin/sh
- echo "${x} is not supported by ${EPYTHON}" >&2
- exit 127
- _EOF_
- die
- chmod +x "${workdir}"/bin/${x} || die;
- done;
- if [[ ${PATH##:*} != ${workdir}/bin ]]; then
- PATH=${workdir}/bin${PATH:+:${PATH}};
- fi;
- if [[ ${PKG_CONFIG_PATH##:*} != ${workdir}/pkgconfig ]]; then
- PKG_CONFIG_PATH=${workdir}/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}};
- fi;
- export PATH PKG_CONFIG_PATH;
- fi
- }
- qeerror ()
- {
- qout eerror "${@}"
- }
- qeinfo ()
- {
- qout einfo "${@}"
- }
- qewarn ()
- {
- qout ewarn "${@}"
- }
- qmake-utils_find_pro_file ()
- {
- local dir_name=$(basename "${S}");
- eshopts_push -s nullglob;
- local pro_files=(*.pro);
- eshopts_pop;
- case ${#pro_files[@]} in
- 0)
- :
- ;;
- 1)
- echo "${pro_files}"
- ;;
- *)
- for pro_file in "${pro_files[@]}";
- do
- if [[ ${pro_file%.pro} == ${dir_name} || ${pro_file%.pro} == ${PN} ]]; then
- echo "${pro_file}";
- break;
- fi;
- done
- ;;
- esac
- }
- qout ()
- {
- local outputmsg type;
- type=${1};
- shift;
- outputmsg="${@}";
- case "${EBUILD_PHASE}" in
- depend)
- unset outputmsg
- ;;
- clean)
- unset outputmsg
- ;;
- preinst)
- unset outputmsg
- ;;
- esac;
- [ -n "${outputmsg}" ] && ${type} "${outputmsg}"
- }
- qt4-r2_src_compile ()
- {
- debug-print-function $FUNCNAME "$@";
- base_src_compile "$@"
- }
- qt4-r2_src_configure ()
- {
- debug-print-function $FUNCNAME "$@";
- local project_file=$(qmake-utils_find_pro_file);
- if [[ -n ${project_file} ]]; then
- eqmake4 "${project_file}";
- else
- base_src_configure "$@";
- fi
- }
- qt4-r2_src_install ()
- {
- debug-print-function $FUNCNAME "$@";
- base_src_install INSTALL_ROOT="${D}" "$@";
- einstalldocs
- }
- qt4-r2_src_prepare ()
- {
- debug-print-function $FUNCNAME "$@";
- base_src_prepare "$@"
- }
- qt4-r2_src_unpack ()
- {
- debug-print-function $FUNCNAME "$@";
- base_src_unpack "$@"
- }
- qt4_get_bindir ()
- {
- has "${EAPI:-0}" 0 1 2 && use !prefix && EPREFIX=;
- local qtbindir=${EPREFIX}$(qt4_get_libdir)/bin;
- if [[ -d ${qtbindir} ]]; then
- echo ${qtbindir};
- else
- echo ${EPREFIX}/usr/bin;
- fi
- }
- qt4_get_headerdir ()
- {
- echo /usr/include/qt4
- }
- qt4_get_libdir ()
- {
- echo /usr/$(get_libdir)/qt4
- }
- qt4_get_mkspecsdir ()
- {
- echo /usr/share/qt4/mkspecs
- }
- qt4_get_plugindir ()
- {
- echo $(qt4_get_libdir)/plugins
- }
- qt5_get_bindir ()
- {
- has "${EAPI:-0}" 0 1 2 && use !prefix && EPREFIX=;
- echo ${EPREFIX}$(qt5_get_libdir)/qt5/bin
- }
- qt5_get_headerdir ()
- {
- echo /usr/include/qt5
- }
- qt5_get_libdir ()
- {
- echo /usr/$(get_libdir)
- }
- qt5_get_mkspecsdir ()
- {
- echo $(qt5_get_libdir)/qt5/mkspecs
- }
- qt5_get_plugindir ()
- {
- echo $(qt5_get_libdir)/qt5/plugins
- }
- raw-ldflags ()
- {
- local x input="$@";
- [[ -z ${input} ]] && input=${LDFLAGS};
- set --;
- for x in ${input};
- do
- case ${x} in
- -Wl,*)
- x=${x#-Wl,};
- set -- "$@" ${x//,/ }
- ;;
- *)
- ;;
- esac;
- done;
- echo "$@"
- }
- replace-cpu-flags ()
- {
- local newcpu="$#";
- newcpu="${!newcpu}";
- while [ $# -gt 1 ]; do
- replace-flags "-march=${1}" "-march=${newcpu}";
- replace-flags "-mcpu=${1}" "-mcpu=${newcpu}";
- replace-flags "-mtune=${1}" "-mtune=${newcpu}";
- shift;
- done;
- return 0
- }
- replace-flags ()
- {
- [[ $# != 2 ]] && die "Usage: replace-flags <old flag> <new flag>";
- local f var new;
- for var in $(all-flag-vars);
- do
- new=();
- for f in ${!var};
- do
- [[ ${f} == ${1} ]] && f=${2};
- new+=("${f}");
- done;
- 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
- }
- replace_all_version_separators ()
- {
- local c=($(get_all_version_components "${2:-${PV}}"));
- c=${c[@]//[-._]/$1};
- echo ${c// }
- }
- replace_version_separator ()
- {
- eshopts_push -s extglob;
- local w c v="${3:-${PV}}";
- declare -i i found=0;
- w=${1:-1};
- c=($(get_all_version_components ${v}));
- if [[ ${w} != *[[:digit:]]* ]]; then
- for ((i = 0; i < ${#c[@]}; i++))
- do
- if [[ ${c[i]} == ${w} ]]; then
- c[i]=${2};
- break;
- fi;
- done;
- else
- for ((i = 0; i < ${#c[@]}; i++))
- do
- if [[ -n "${c[i]//[^-._]}" ]]; then
- found+=1;
- if ((found == w)); then
- c[i]=${2};
- break;
- fi;
- fi;
- done;
- fi;
- c=${c[*]};
- echo ${c// };
- eshopts_pop
- }
- require_configured_kernel ()
- {
- if ! linux_config_src_exists; then
- qeerror "Could not find a usable .config in the kernel source directory.";
- qeerror "Please ensure that ${KERNEL_DIR} points to a configured set of Linux sources.";
- qeerror "If you are using KBUILD_OUTPUT, please set the environment var so that";
- qeerror "it points to the necessary object directory so that it might find .config.";
- die "Kernel not configured; no .config found in ${KV_OUT_DIR}";
- fi
- }
- set_arch_to_kernel ()
- {
- export ARCH=$(tc-arch-kernel)
- }
- set_arch_to_portage ()
- {
- export ARCH=$(tc-arch)
- }
- setup-allowed-flags ()
- {
- ALLOWED_FLAGS=(-pipe -O '-O[12sg]' -mcpu -march -mtune '-fstack-protector*' '-fsanitize*' -fbounds-check -fbounds-checking -fno-strict-overflow -fno-PIE -fno-pie -nopie -no-pie -fno-unit-at-a-time -g '-g[0-9]' -ggdb '-ggdb[0-9]' '-gdwarf-*' gstabs -gstabs+ -fno-ident -fpermissive -frecord-gcc-switches '-fdiagnostics*' '-fplugin*' '-W*' -w '-[DUILR]*' '-Wl,*');
- ALLOWED_FLAGS+=('-fno-stack-protector*' '-fabi-version=*' -fno-strict-aliasing -fno-bounds-check -fno-bounds-checking -fstrict-overflow -fno-omit-frame-pointer '-fno-builtin*');
- ALLOWED_FLAGS+=(-mregparm -mno-app-regs -mapp-regs -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-ssse3 -mno-sse4 -mno-sse4.1 -mno-sse4.2 -mno-avx -mno-aes -mno-pclmul -mno-sse4a -mno-3dnow -mno-popcnt -mno-abm -mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 -mplt -msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu -mieee -mieee-with-inexact -mschedule -mfloat-gprs -mspe -mno-spe -mtls-direct-seg-refs -mno-tls-direct-seg-refs -mflat -mno-flat -mno-faster-structs -mfaster-structs -m32 -m64 -mx32 -mabi -mlittle-endian -mbig-endian -EL -EB -fPIC -mlive-g0 -mcmodel -mstack-bias -mno-stack-bias -msecure-plt '-m*-toc' -mfloat-abi -mfix-r10000 -mno-fix-r10000 -mthumb -marm -mno-fma4 -mno-movbe -mno-xop -mno-lwp -mno-fsgsbase -mno-rdrnd -mno-f16c -mno-bmi -mno-tbm -mno-avx2 -mno-bmi2 -mno-fma -mno-lzcnt -mno-fxsr -mno-hle -mno-rtm -mno-xsave -mno-xsaveopt -mno-avx512cd -mno-avx512er -mno-avx512f -mno-avx512pf -mno-sha)
- }
- src_compile ()
- {
- source ./env.sh;
- MAKEJOBS=$(echo ${MAKEOPTS} | egrep -o '(\-j|\-\-jobs)(=?|[[:space:]]*)[[:digit:]]+');
- MAKELOAD=$(echo ${MAKEOPTS} | egrep -o '(\-l|\-\-load-average)(=?|[[:space:]]*)[[:digit:]]+');
- MAKEOPTS="${MAKEJOBS} ${MAKELOAD}";
- MAKE="kmk" emake VBOX_BUILD_PUBLISHER=_Gentoo TOOL_GCC3_CC="$(tc-getCC)" TOOL_GCC3_CXX="$(tc-getCXX)" TOOL_GCC3_AS="$(tc-getCC)" TOOL_GCC3_AR="$(tc-getAR)" TOOL_GCC3_LD="$(tc-getCXX)" TOOL_GCC3_LD_SYSMOD="$(tc-getLD)" TOOL_GCC3_CFLAGS="${CFLAGS}" TOOL_GCC3_CXXFLAGS="${CXXFLAGS}" VBOX_GCC_OPT="${CXXFLAGS}" TOOL_YASM_AS=yasm KBUILD_VERBOSE=2 all
- }
- src_configure ()
- {
- local myconf;
- use alsa || myconf+=" --disable-alsa";
- use doc || myconf+=" --disable-docs";
- use java || myconf+=" --disable-java";
- use opengl || myconf+=" --disable-opengl";
- use pulseaudio || myconf+=" --disable-pulse";
- use python || myconf+=" --disable-python";
- use vboxwebsrv && myconf+=" --enable-webservice";
- use vnc && myconf+=" --enable-vnc";
- if ! use headless; then
- use qt4 || myconf+=" --disable-qt4";
- else
- myconf+=" --build-headless --disable-opengl";
- fi;
- if use amd64 && ! has_multilib_profile; then
- myconf+=" --disable-vmmraw";
- fi;
- ./configure --with-gcc="$(tc-getCC)" --with-g++="$(tc-getCXX)" --disable-kmods --disable-dbus --disable-devmapper ${myconf} || die "configure failed"
- }
- src_install ()
- {
- cd "${S}"/out/linux.${ARCH}/release/bin || die;
- insinto /etc/vbox;
- newins "${FILESDIR}/${PN}-4-config" vbox.cfg;
- sed -i -e "s@MY_LIBDIR@$(get_libdir)@" "${D}"/etc/vbox/vbox.cfg || die "vbox.cfg sed failed";
- exeinto /usr/$(get_libdir)/${PN};
- newexe "${FILESDIR}/${PN}-ose-3-wrapper" "VBox";
- fowners root:vboxusers /usr/$(get_libdir)/${PN}/VBox;
- fperms 0750 /usr/$(get_libdir)/${PN}/VBox;
- dosym /usr/$(get_libdir)/${PN}/VBox /usr/bin/VBoxManage;
- dosym /usr/$(get_libdir)/${PN}/VBox /usr/bin/VBoxVRDP;
- dosym /usr/$(get_libdir)/${PN}/VBox /usr/bin/VBoxHeadless;
- dosym /usr/$(get_libdir)/${PN}/VBoxTunctl /usr/bin/VBoxTunctl;
- insinto /usr/$(get_libdir)/${PN};
- doins -r components;
- if use sdk; then
- doins -r sdk;
- fi;
- if use vboxwebsrv; then
- doins vboxwebsrv;
- fowners root:vboxusers /usr/$(get_libdir)/${PN}/vboxwebsrv;
- fperms 0750 /usr/$(get_libdir)/${PN}/vboxwebsrv;
- dosym /usr/$(get_libdir)/${PN}/VBox /usr/bin/vboxwebsrv;
- newinitd "${FILESDIR}"/vboxwebsrv-initd vboxwebsrv;
- newconfd "${FILESDIR}"/vboxwebsrv-confd vboxwebsrv;
- fi;
- local gcfiles="*gc";
- if use amd64 && ! has_multilib_profile; then
- gcfiles="";
- fi;
- for each in VBox{Manage,SVC,XPCOMIPCD,Tunctl,ExtPackHelperApp} *so *r0 ${gcfiles};
- do
- doins ${each};
- fowners root:vboxusers /usr/$(get_libdir)/${PN}/${each};
- fperms 0750 /usr/$(get_libdir)/${PN}/${each};
- done;
- for each in VBoxNet{AdpCtl,DHCP,NAT};
- do
- doins ${each};
- fowners root:vboxusers /usr/$(get_libdir)/${PN}/${each};
- fperms 4750 /usr/$(get_libdir)/${PN}/${each};
- done;
- for each in VBox{Manage,SVC,XPCOMIPCD};
- do
- pax-mark -m "${D}"/usr/$(get_libdir)/${PN}/${each};
- done;
- if ! use headless; then
- doins VBoxSDL;
- fowners root:vboxusers /usr/$(get_libdir)/${PN}/VBoxSDL;
- fperms 4750 /usr/$(get_libdir)/${PN}/VBoxSDL;
- pax-mark -m "${D}"/usr/$(get_libdir)/${PN}/VBoxSDL;
- if use opengl && use qt4; then
- doins VBoxTestOGL;
- fowners root:vboxusers /usr/$(get_libdir)/${PN}/VBoxTestOGL;
- fperms 0750 /usr/$(get_libdir)/${PN}/VBoxTestOGL;
- pax-mark -m "${D}"/usr/$(get_libdir)/${PN}/VBoxTestOGL;
- fi;
- dosym /usr/$(get_libdir)/${PN}/VBox /usr/bin/VBoxSDL;
- if use qt4; then
- doins VirtualBox;
- fowners root:vboxusers /usr/$(get_libdir)/${PN}/VirtualBox;
- fperms 4750 /usr/$(get_libdir)/${PN}/VirtualBox;
- pax-mark -m "${D}"/usr/$(get_libdir)/${PN}/VirtualBox;
- dosym /usr/$(get_libdir)/${PN}/VBox /usr/bin/VirtualBox;
- newmenu "${FILESDIR}"/${PN}-ose.desktop-2 ${PN}.desktop;
- fi;
- pushd "${S}"/src/VBox/Resources/OSE &> /dev/null || die;
- for size in 16 32 48 64 128;
- do
- newicon -s ${size} ${PN}-${size}px.png ${PN}.png;
- done;
- newicon ${PN}-48px.png ${PN}.png;
- doicon -s scalable ${PN}.svg;
- popd &> /dev/null || die;
- fi;
- doins VBoxHeadless;
- fowners root:vboxusers /usr/$(get_libdir)/${PN}/VBoxHeadless;
- fperms 4750 /usr/$(get_libdir)/${PN}/VBoxHeadless;
- pax-mark -m "${D}"/usr/$(get_libdir)/${PN}/VBoxHeadless;
- insinto /usr/$(get_libdir)/${PN};
- pushd "${S}"/src/VBox/Devices/EFI/FirmwareBin &> /dev/null || die;
- for fwfile in VBoxEFI{32,64}.fd;
- do
- doins ${fwfile};
- fowners root:vboxusers /usr/$(get_libdir)/${PN}/${fwfile};
- done;
- popd &> /dev/null || die;
- if use udev; then
- local udevdir="$(get_udevdir)";
- insinto ${udevdir};
- doins VBoxCreateUSBNode.sh;
- fowners root:vboxusers ${udevdir}/VBoxCreateUSBNode.sh;
- fperms 0750 ${udevdir}/VBoxCreateUSBNode.sh;
- insinto ${udevdir}/rules.d;
- doins "${FILESDIR}"/10-virtualbox.rules;
- sed "s@%UDEVDIR%@${udevdir}@" -i "${D}"${udevdir}/rules.d/10-virtualbox.rules || die;
- fi;
- insinto /usr/share/${PN};
- if ! use headless && use qt4; then
- doins -r nls;
- fi;
- dosym VBoxAuth.so /usr/$(get_libdir)/${PN}/VRDPAuth.so;
- echo -n "VBOX_APP_HOME=/usr/$(get_libdir)/${PN}" > "${T}/90virtualbox";
- doenvd "${T}/90virtualbox";
- if use java; then
- java-pkg_regjar "${D}/usr/$(get_libdir)/${PN}/sdk/bindings/xpcom/java/vboxjxpcom.jar";
- java-pkg_regso "${D}/usr/$(get_libdir)/${PN}/libvboxjxpcom.so";
- fi
- }
- src_prepare ()
- {
- rm -rf kBuild/bin tools;
- sed -e "/\s*-o\s*\\\(\s*\$cc_maj\s*-eq\s*[5-9]\s*-a\s*\$cc_min\s*-gt\s*[0-5]\s*\\\)\s*\\\/d" -i configure || die;
- sed -e "s@MY_LIBDIR@$(get_libdir)@" "${FILESDIR}"/${PN}-4-localconfig > LocalConfig.kmk || die;
- sed -e "s@_LDFLAGS\.${ARCH}*.*=@& ${LDFLAGS}@g" -i Config.kmk src/libs/xpcom18a4/Config.kmk || die;
- sed -e '/QUIET)ld /s/ld /$(LD) /' -i src/VBox/Devices/PC/ipxe/Makefile.kmk || die;
- if ! use pam; then
- elog "Disabling PAM removes the possibility to use the VRDP features.";
- sed -i 's@^.*VBOX_WITH_PAM@#VBOX_WITH_PAM@' Config.kmk || die;
- sed -i 's@\(.*/auth/Makefile.kmk.*\)@#\1@' src/VBox/HostServices/Makefile.kmk || die;
- fi;
- if use java; then
- sed "s@/usr/lib/jvm/java-6-sun@$(java-config -O)@" -i "${S}"/Config.kmk || die;
- java-pkg-opt-2_src_prepare;
- fi;
- if ! gcc-specs-pie; then
- EPATCH_EXCLUDE="050_${PN}-4.3.14-nopie.patch";
- fi;
- EPATCH_SUFFIX="patch" EPATCH_FORCE="yes" epatch "${WORKDIR}/patches";
- epatch_user
- }
- src_test ()
- {
- default
- }
- src_unpack ()
- {
- qt4-r2_src_unpack "$@"
- }
- strip-flags ()
- {
- local x y var;
- local ALLOWED_FLAGS;
- setup-allowed-flags;
- set -f;
- for var in $(all-flag-vars);
- do
- local new=();
- for x in ${!var};
- do
- local flag=${x%%=*};
- for y in "${ALLOWED_FLAGS[@]}";
- do
- if [[ -z ${flag%%${y}} ]]; then
- new+=("${x}");
- break;
- fi;
- done;
- done;
- if _is_flagq ${var} "-O*" && ! _is_flagq new "-O*"; then
- new+=(-O2);
- fi;
- if [[ ${!var} != "${new[*]}" ]]; then
- einfo "strip-flags: ${var}: changed '${!var}' to '${new[*]}'";
- fi;
- 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})
- }
- tc-arch ()
- {
- tc-ninja_magic_to_arch portage "$@"
- }
- tc-arch-kernel ()
- {
- tc-ninja_magic_to_arch kern "$@"
- }
- tc-check-openmp ()
- {
- if ! tc-has-openmp; then
- eerror "Your current compiler does not support OpenMP!";
- if tc-is-gcc; then
- eerror "Enable OpenMP support by building sys-devel/gcc with USE=\"openmp\".";
- else
- if tc-is-clang; then
- eerror "OpenMP support in sys-devel/clang is provided by sys-libs/libomp.";
- fi;
- fi;
- die "Active compiler does not have required support for OpenMP";
- fi
- }
- tc-endian ()
- {
- local host=$1;
- [[ -z ${host} ]] && host=${CTARGET:-${CHOST}};
- host=${host%%-*};
- case ${host} in
- aarch64*be)
- echo big
- ;;
- aarch64)
- echo little
- ;;
- alpha*)
- echo big
- ;;
- arm*b*)
- echo big
- ;;
- arm*)
- echo little
- ;;
- cris*)
- echo little
- ;;
- hppa*)
- echo big
- ;;
- i?86*)
- echo little
- ;;
- ia64*)
- echo little
- ;;
- m68*)
- echo big
- ;;
- mips*l*)
- echo little
- ;;
- mips*)
- echo big
- ;;
- powerpc*le)
- echo little
- ;;
- powerpc*)
- echo big
- ;;
- s390*)
- echo big
- ;;
- sh*b*)
- echo big
- ;;
- sh*)
- echo little
- ;;
- sparc*)
- echo big
- ;;
- x86_64*)
- echo little
- ;;
- *)
- echo wtf
- ;;
- esac
- }
- tc-env_build ()
- {
- tc-export_build_env;
- CFLAGS=${BUILD_CFLAGS} CXXFLAGS=${BUILD_CXXFLAGS} CPPFLAGS=${BUILD_CPPFLAGS} LDFLAGS=${BUILD_LDFLAGS} AR=$(tc-getBUILD_AR) AS=$(tc-getBUILD_AS) CC=$(tc-getBUILD_CC) CPP=$(tc-getBUILD_CPP) CXX=$(tc-getBUILD_CXX) LD=$(tc-getBUILD_LD) NM=$(tc-getBUILD_NM) PKG_CONFIG=$(tc-getBUILD_PKG_CONFIG) RANLIB=$(tc-getBUILD_RANLIB) "$@"
- }
- tc-export ()
- {
- local var;
- for var in "$@";
- do
- [[ $(type -t tc-get${var}) != "function" ]] && die "tc-export: invalid export variable '${var}'";
- eval tc-get${var} > /dev/null;
- done
- }
- tc-export_build_env ()
- {
- tc-export "$@";
- : ${BUILD_CFLAGS:=-O1 -pipe};
- : ${BUILD_CXXFLAGS:=-O1 -pipe};
- : ${BUILD_CPPFLAGS:= };
- : ${BUILD_LDFLAGS:= };
- export BUILD_{C,CXX,CPP,LD}FLAGS;
- local v;
- for v in BUILD_{C,CXX,CPP,LD}FLAGS;
- do
- export ${v#BUILD_}_FOR_BUILD="${!v}";
- done
- }
- tc-get-compiler-type ()
- {
- local code='
- #if defined(__PATHSCALE__)
- HAVE_PATHCC
- #elif defined(__clang__)
- HAVE_CLANG
- #elif defined(__GNUC__)
- HAVE_GCC
- #endif
- ';
- local res=$($(tc-getCPP "$@") -E -P - <<<"${code}");
- case ${res} in
- *HAVE_PATHCC*)
- echo pathcc
- ;;
- *HAVE_CLANG*)
- echo clang
- ;;
- *HAVE_GCC*)
- echo gcc
- ;;
- *)
- echo unknown
- ;;
- esac
- }
- tc-getAR ()
- {
- tc-getPROG AR ar "$@"
- }
- tc-getAS ()
- {
- tc-getPROG AS as "$@"
- }
- tc-getBUILD_AR ()
- {
- tc-getBUILD_PROG AR ar "$@"
- }
- tc-getBUILD_AS ()
- {
- tc-getBUILD_PROG AS as "$@"
- }
- tc-getBUILD_CC ()
- {
- tc-getBUILD_PROG CC gcc "$@"
- }
- tc-getBUILD_CPP ()
- {
- tc-getBUILD_PROG CPP "$(tc-getBUILD_CC) -E" "$@"
- }
- tc-getBUILD_CXX ()
- {
- tc-getBUILD_PROG CXX g++ "$@"
- }
- tc-getBUILD_LD ()
- {
- tc-getBUILD_PROG LD ld "$@"
- }
- tc-getBUILD_NM ()
- {
- tc-getBUILD_PROG NM nm "$@"
- }
- tc-getBUILD_OBJCOPY ()
- {
- tc-getBUILD_PROG OBJCOPY objcopy "$@"
- }
- tc-getBUILD_PKG_CONFIG ()
- {
- tc-getBUILD_PROG PKG_CONFIG pkg-config "$@"
- }
- tc-getBUILD_PROG ()
- {
- _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 "${CC:-gcc} -E" "$@"
- }
- tc-getCXX ()
- {
- tc-getPROG CXX g++ "$@"
- }
- tc-getDLLWRAP ()
- {
- tc-getPROG DLLWRAP dllwrap "$@"
- }
- tc-getF77 ()
- {
- tc-getPROG F77 gfortran "$@"
- }
- tc-getFC ()
- {
- tc-getPROG FC gfortran "$@"
- }
- tc-getGCJ ()
- {
- tc-getPROG GCJ gcj "$@"
- }
- tc-getGO ()
- {
- tc-getPROG GO gccgo "$@"
- }
- tc-getLD ()
- {
- tc-getPROG LD ld "$@"
- }
- tc-getNM ()
- {
- tc-getPROG NM nm "$@"
- }
- tc-getOBJCOPY ()
- {
- tc-getPROG OBJCOPY objcopy "$@"
- }
- tc-getOBJDUMP ()
- {
- tc-getPROG OBJDUMP objdump "$@"
- }
- tc-getPKG_CONFIG ()
- {
- tc-getPROG PKG_CONFIG pkg-config "$@"
- }
- tc-getPROG ()
- {
- _tc-getPROG CHOST "$@"
- }
- tc-getRANLIB ()
- {
- tc-getPROG RANLIB ranlib "$@"
- }
- tc-getRC ()
- {
- tc-getPROG RC windres "$@"
- }
- tc-getSTRIP ()
- {
- tc-getPROG STRIP strip "$@"
- }
- tc-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-clang ()
- {
- [[ $(tc-get-compiler-type) == clang ]]
- }
- tc-is-cross-compiler ()
- {
- [[ ${CBUILD:-${CHOST}} != ${CHOST} ]]
- }
- tc-is-gcc ()
- {
- [[ $(tc-get-compiler-type) == gcc ]]
- }
- tc-is-softfloat ()
- {
- local CTARGET=${CTARGET:-${CHOST}};
- case ${CTARGET} in
- bfin* | h8300*)
- echo "only"
- ;;
- *)
- if [[ ${CTARGET//_/-} == *-softfloat-* ]]; then
- echo "yes";
- else
- if [[ ${CTARGET//_/-} == *-softfp-* ]]; then
- echo "softfp";
- else
- echo "no";
- fi;
- fi
- ;;
- esac
- }
- tc-is-static-only ()
- {
- local host=${CTARGET:-${CHOST}};
- [[ ${host} == *-mint* ]]
- }
- tc-ld-disable-gold ()
- {
- if ! tc-ld-is-gold "$@"; then
- return;
- fi;
- ewarn "Forcing usage of the BFD linker instead of GOLD";
- local ld=$(tc-getLD "$@");
- local bfd_ld="${ld%% *}.bfd";
- local path_ld=$(which "${bfd_ld}" 2>/dev/null);
- [[ -e ${path_ld} ]] && export LD=${bfd_ld};
- local major=$(gcc-major-version "$@");
- local minor=$(gcc-minor-version "$@");
- if [[ ${major} -lt 4 ]] || [[ ${major} -eq 4 && ${minor} -lt 8 ]]; then
- if [[ -e ${path_ld} ]]; then
- local d="${T}/bfd-linker";
- mkdir -p "${d}";
- ln -sf "${path_ld}" "${d}"/ld;
- export LDFLAGS="${LDFLAGS} -B${d}";
- else
- die "unable to locate a BFD linker to bypass gold";
- fi;
- else
- export LDFLAGS="${LDFLAGS} -fuse-ld=bfd";
- fi
- }
- tc-ld-is-gold ()
- {
- local out;
- out=$($(tc-getLD "$@") --version 2>&1);
- if [[ ${out} == *"GNU gold"* ]]; then
- return 0;
- fi;
- local base="${T}/test-tc-gold";
- cat > "${base}.c" <<-EOF
- int main() { return 0; }
- EOF
- out=$($(tc-getCC "$@") ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} -Wl,--version "${base}.c" -o "${base}" 2>&1);
- rm -f "${base}"*;
- if [[ ${out} == *"GNU gold"* ]]; then
- return 0;
- fi;
- return 1
- }
- tc-ninja_magic_to_arch ()
- {
- function ninj ()
- {
- [[ ${type} == "kern" ]] && echo $1 || echo $2
- };
- local type=$1;
- local host=$2;
- [[ -z ${host} ]] && host=${CTARGET:-${CHOST}};
- case ${host} in
- aarch64*)
- echo arm64
- ;;
- alpha*)
- echo alpha
- ;;
- arm*)
- echo arm
- ;;
- avr*)
- ninj avr32 avr
- ;;
- bfin*)
- ninj blackfin bfin
- ;;
- c6x*)
- echo c6x
- ;;
- cris*)
- echo cris
- ;;
- frv*)
- echo frv
- ;;
- hexagon*)
- echo hexagon
- ;;
- hppa*)
- ninj parisc hppa
- ;;
- i?86*)
- if [[ ${type} == "kern" && ${host} == *freebsd* ]]; then
- echo i386;
- else
- echo x86;
- fi
- ;;
- ia64*)
- echo ia64
- ;;
- m68*)
- echo m68k
- ;;
- metag*)
- echo metag
- ;;
- microblaze*)
- echo microblaze
- ;;
- mips*)
- echo mips
- ;;
- nios2*)
- echo nios2
- ;;
- nios*)
- echo nios
- ;;
- or1k | or32*)
- echo openrisc
- ;;
- powerpc*)
- if [[ ${type} == "kern" ]]; then
- echo powerpc;
- else
- if [[ ${host} == powerpc64* ]]; then
- echo ppc64;
- else
- echo ppc;
- fi;
- fi
- ;;
- riscv*)
- echo riscv
- ;;
- s390*)
- echo s390
- ;;
- score*)
- echo score
- ;;
- sh64*)
- ninj sh64 sh
- ;;
- sh*)
- echo sh
- ;;
- sparc64*)
- ninj sparc64 sparc
- ;;
- sparc*)
- [[ ${PROFILE_ARCH} == "sparc64" ]] && ninj sparc64 sparc || echo sparc
- ;;
- tile*)
- echo tile
- ;;
- vax*)
- echo vax
- ;;
- x86_64*freebsd*)
- echo amd64
- ;;
- x86_64*)
- if [[ ${type} == "kern" ]]; then
- echo x86;
- else
- echo amd64;
- fi
- ;;
- xtensa*)
- echo xtensa
- ;;
- *)
- echo unknown
- ;;
- esac
- }
- tc-stack-grows-down ()
- {
- case ${ARCH} in
- hppa | metag)
- return 1
- ;;
- esac;
- return 0
- }
- test-flag-CC ()
- {
- test-flag-PROG "CC" c "$1"
- }
- test-flag-CXX ()
- {
- test-flag-PROG "CXX" c++ "$1"
- }
- test-flag-F77 ()
- {
- test-flag-PROG "F77" f77 "$1"
- }
- test-flag-FC ()
- {
- test-flag-PROG "FC" f95 "$1"
- }
- test-flag-PROG ()
- {
- local comp=$1;
- local lang=$2;
- local flag=$3;
- [[ -z ${comp} || -z ${flag} ]] && return 1;
- local cmdline=($(tc-get${comp}) -Werror -c -o /dev/null);
- if "${cmdline[@]}" -x${lang} - < /dev/null > /dev/null 2>&1; then
- "${cmdline[@]}" "${flag}" -x${lang} - < /dev/null > /dev/null 2>&1;
- else
- "${cmdline[@]}" "${flag}" -c -o /dev/null /dev/null > /dev/null 2>&1;
- fi
- }
- test-flags ()
- {
- test-flags-CC "$@"
- }
- test-flags-CC ()
- {
- test-flags-PROG "CC" "$@"
- }
- test-flags-CXX ()
- {
- test-flags-PROG "CXX" "$@"
- }
- test-flags-F77 ()
- {
- test-flags-PROG "F77" "$@"
- }
- test-flags-FC ()
- {
- test-flags-PROG "FC" "$@"
- }
- test-flags-PROG ()
- {
- local comp=$1;
- local flags=();
- local x;
- shift;
- [[ -z ${comp} ]] && return 1;
- for x in "$@";
- do
- test-flag-${comp} "${x}" && flags+=("${x}");
- done;
- echo "${flags[*]}";
- [[ ${#flags[@]} -gt 0 ]]
- }
- test_version_info ()
- {
- if [[ $($(tc-getCC) --version 2>&1) == *$1* ]]; then
- return 0;
- else
- return 1;
- fi
- }
- udev_dorules ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- ( insinto "$(_udev_get_udevdir)"/rules.d;
- doins "${@}" )
- }
- udev_get_udevdir ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- eerror "This ebuild should be using the get_udevdir() function instead of the deprecated udev_get_udevdir()";
- die "Deprecated function call: udev_get_udevdir(), please report to (overlay) maintainers."
- }
- udev_newrules ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- ( insinto "$(_udev_get_udevdir)"/rules.d;
- newins "${@}" )
- }
- udev_reload ()
- {
- if [[ ${ROOT} != "" ]] && [[ ${ROOT} != "/" ]]; then
- return 0;
- fi;
- if [[ -d ${ROOT}/run/udev ]]; then
- ebegin "Running udev control --reload for reloading rules and databases";
- udevadm control --reload;
- eend $?;
- fi
- }
- use_doc ()
- {
- use doc && echo ${@:-javadoc}
- }
- use_if_iuse ()
- {
- in_iuse $1 || return 1;
- use $1
- }
- validate_desktop_entries ()
- {
- _eutils_eprefix_init;
- if [[ -x "${EPREFIX}"/usr/bin/desktop-file-validate ]]; then
- einfo "Checking desktop entry validity";
- local directories="";
- for d in /usr/share/applications $@;
- do
- [[ -d ${ED}${d} ]] && directories="${directories} ${ED}${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/${ED}/}:};
- 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
- }
- version_compare ()
- {
- eshopts_push -s extglob;
- local ver_a=${1} ver_b=${2} parts_a parts_b;
- local cur_tok_a cur_tok_b num_part_a num_part_b;
- local -i cur_idx_a=0 cur_idx_b=0 prev_idx_a prev_idx_b;
- parts_a=($(get_all_version_components "${ver_a}" ));
- parts_b=($(get_all_version_components "${ver_b}" ));
- local -i inf_loop=0;
- while true; do
- inf_loop+=1;
- ((inf_loop > 20)) && die "versionator compare bug [numbers, ${ver_a}, ${ver_b}]";
- prev_idx_a=cur_idx_a;
- prev_idx_b=cur_idx_b;
- cur_tok_a=${parts_a[cur_idx_a]};
- cur_tok_b=${parts_b[cur_idx_b]};
- if [[ -n ${cur_tok_a} ]] && [[ -z ${cur_tok_a//[[:digit:]]} ]]; then
- cur_idx_a+=1;
- [[ ${parts_a[cur_idx_a]} == . ]] && cur_idx_a+=1;
- else
- cur_tok_a=;
- fi;
- if [[ -n ${cur_tok_b} ]] && [[ -z ${cur_tok_b//[[:digit:]]} ]]; then
- cur_idx_b+=1;
- [[ ${parts_b[cur_idx_b]} == . ]] && cur_idx_b+=1;
- else
- cur_tok_b=;
- fi;
- [[ -z ${cur_tok_a} && -z ${cur_tok_b} ]] && break;
- [[ -z ${cur_tok_a} ]] && eshopts_pop && return 1;
- [[ -z ${cur_tok_b} ]] && eshopts_pop && return 3;
- if (( prev_idx_a != 0 && prev_idx_b != 0 )) && [[ ${cur_tok_a} == 0* || ${cur_tok_b} == 0* ]]; then
- cur_tok_a=${cur_tok_a%%+(0)};
- cur_tok_b=${cur_tok_b%%+(0)};
- [[ ${cur_tok_a} < ${cur_tok_b} ]] && eshopts_pop && return 1;
- [[ ${cur_tok_a} > ${cur_tok_b} ]] && eshopts_pop && return 3;
- else
- cur_tok_a=${cur_tok_a##+(0)};
- cur_tok_b=${cur_tok_b##+(0)};
- : ${cur_tok_a:=0};
- : ${cur_tok_b:=0};
- ((cur_tok_a < cur_tok_b)) && eshopts_pop && return 1;
- ((cur_tok_a > cur_tok_b)) && eshopts_pop && return 3;
- fi;
- done;
- local letter_a=;
- letter_a=${parts_a[cur_idx_a]};
- if [[ ${#letter_a} -eq 1 && -z ${letter_a/[a-z]} ]]; then
- cur_idx_a+=1;
- else
- letter_a=@;
- fi;
- local letter_b=;
- letter_b=${parts_b[cur_idx_b]};
- if [[ ${#letter_b} -eq 1 && -z ${letter_b/[a-z]} ]]; then
- cur_idx_b+=1;
- else
- letter_b=@;
- fi;
- [[ ${letter_a} < ${letter_b} ]] && eshopts_pop && return 1;
- [[ ${letter_a} > ${letter_b} ]] && eshopts_pop && return 3;
- inf_loop=0;
- while true; do
- inf_loop+=1;
- ((inf_loop > 20)) && die "versionator compare bug [numbers, ${ver_a}, ${ver_b}]";
- [[ ${parts_a[cur_idx_a]} == _ ]] && ((cur_idx_a++));
- [[ ${parts_b[cur_idx_b]} == _ ]] && ((cur_idx_b++));
- cur_tok_a=${parts_a[cur_idx_a]};
- cur_tok_b=${parts_b[cur_idx_b]};
- num_part_a=0;
- num_part_b=0;
- if has ${cur_tok_a%%+([0-9])} "alpha" "beta" "pre" "rc" "p"; then
- cur_idx_a+=1;
- num_part_a=${cur_tok_a##+([a-z])};
- num_part_a=${num_part_a##+(0)};
- : ${num_part_a:=0};
- cur_tok_a=${cur_tok_a%%+([0-9])};
- else
- cur_tok_a=;
- fi;
- if has ${cur_tok_b%%+([0-9])} alpha beta pre rc p; then
- cur_idx_b+=1;
- num_part_b=${cur_tok_b##+([a-z])};
- num_part_b=${num_part_b##+(0)};
- : ${num_part_b:=0};
- cur_tok_b=${cur_tok_b%%+([0-9])};
- else
- cur_tok_b=;
- fi;
- if [[ ${cur_tok_a} != ${cur_tok_b} ]]; then
- local suffix;
- for suffix in alpha beta pre rc "" p;
- do
- [[ ${cur_tok_a} == ${suffix} ]] && eshopts_pop && return 1;
- [[ ${cur_tok_b} == ${suffix} ]] && eshopts_pop && return 3;
- done;
- else
- if [[ -z ${cur_tok_a} && -z ${cur_tok_b} ]]; then
- break;
- else
- ((num_part_a < num_part_b)) && eshopts_pop && return 1;
- ((num_part_a > num_part_b)) && eshopts_pop && return 3;
- fi;
- fi;
- done;
- [[ ${parts_a[cur_idx_a]} == - ]] && ((cur_idx_a++));
- [[ ${parts_b[cur_idx_b]} == - ]] && ((cur_idx_b++));
- if [[ -n ${parts_a[cur_idx_a]/r+([0-9])} || -n ${parts_b[cur_idx_b]/r+([0-9])} ]]; then
- die "versionator compare bug [revisions, ${ver_a}, ${ver_b}]";
- fi;
- num_part_a=${parts_a[cur_idx_a]#r};
- num_part_a=${num_part_a##+(0)};
- : ${num_part_a:=0};
- num_part_b=${parts_b[cur_idx_b]#r};
- num_part_b=${num_part_b##+(0)};
- : ${num_part_b:=0};
- ((num_part_a < num_part_b)) && eshopts_pop && return 1;
- ((num_part_a > num_part_b)) && eshopts_pop && return 3;
- eshopts_pop;
- return 2
- }
- version_format_string ()
- {
- local fstr=$1;
- shift;
- set -- $(get_version_components "$@");
- eval echo "${fstr}"
- }
- version_is_at_least ()
- {
- local want_s="$1" have_s="${2:-${PVR}}" r;
- version_compare "${want_s}" "${have_s}";
- r=$?;
- case $r in
- 1 | 2)
- return 0
- ;;
- 3)
- return 1
- ;;
- *)
- die "versionator compare bug [atleast, ${want_s}, ${have_s}, ${r}]"
- ;;
- esac
- }
- version_sort ()
- {
- eshopts_push -s extglob;
- local items=;
- local -i left=0;
- items=("$@");
- while ((left < ${#items[@]})); do
- local -i lowest_idx=left;
- local -i idx=lowest_idx+1;
- while ((idx < ${#items[@]})); do
- version_compare "${items[lowest_idx]}" "${items[idx]}";
- [[ $? -eq 3 ]] && lowest_idx=idx;
- idx+=1;
- done;
- local tmp=${items[lowest_idx]};
- items[lowest_idx]=${items[left]};
- items[left]=${tmp};
- left+=1;
- done;
- echo ${items[@]};
- eshopts_pop
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement