Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- declare -x ABI="x86"
- declare -x ABI_X86="32"
- declare -a ALL_AUTOTOOLS_MACROS=([0]="AC_PROG_LIBTOOL" [1]="AM_PROG_LIBTOOL" [2]="LT_INIT" [3]="LT_CONFIG_LTDL_DIR" [4]="AC_CONFIG_HEADERS" [5]="AC_CONFIG_HEADER" [6]="AM_CONFIG_HEADERS" [7]="AM_CONFIG_HEADER" [8]="AC_CONFIG_SUBDIRS" [9]="AC_CONFIG_AUX_DIR" [10]="AC_CONFIG_MACRO_DIR" [11]="AM_INIT_AUTOMAKE" [12]="AM_GLIB_GNU_GETTEXT" [13]="AM_GNU_GETTEXT_VERSION" [14]="AM_GNU_GETTEXT_REQUIRE_VERSION" [15]="AC_PROG_INTLTOOL" [16]="IT_PROG_INTLTOOL" [17]="GTK_DOC_CHECK" [18]="GNOME_DOC_INIT")
- declare -x ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1 emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci"
- declare -x ANT_HOME="/usr/share/ant"
- declare -x ANT_OPTS=""
- declare -x ANT_RESPECT_JAVA_HOME=""
- declare -x ANT_TASKS=""
- declare -x APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias"
- declare -x ARCH="x86"
- declare -- AT_M4DIR=""
- declare -- AT_SYS_M4DIR=""
- declare -- AUTOTOOLS_AUTO_DEPEND="yes"
- declare -- AUTOTOOLS_DEPEND="!<sys-devel/gettext-0.18.1.1-r3
- || ( >=sys-devel/automake-1.15:1.15 )
- >=sys-devel/autoconf-2.69
- >=sys-devel/libtool-2.4"
- declare -x BOOTSTRAP_USE="cxx unicode internal-glib python_targets_python3_5 python_targets_python2_7"
- declare -x CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author"
- declare -x CBUILD="i686-pc-linux-gnu"
- declare -- CDEPEND="javascript? ( dev-java/rhino:1.6 )
- nsplugin? ( >=dev-libs/glib-2.16:2= )
- tagsoup? ( dev-java/tagsoup:0 )"
- declare -x CFLAGS="-O2 -march=native -pipe"
- declare -x CFLAGS_default
- declare -x CHOST="i686-pc-linux-gnu"
- declare -x CHOST_default="i686-pc-linux-gnu"
- declare -x CHOST_x86="i686-pc-linux-gnu"
- declare -x CLASSPATH=""
- declare -x COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog"
- declare -x COLORFGBG="15;0"
- declare -x CPU_FLAGS_X86="aes avx fma3 fma4 mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 xop"
- declare -x CTARGET_default="i686-pc-linux-gnu"
- declare -x CXXFLAGS="-O2 -march=native -pipe"
- declare -x DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-qGtIBJR5BR,guid=1e0d2f58fbec3b846ffaf83a5a501491"
- declare -x DEFAULT_ABI="x86"
- declare -x DEFINED_PHASES=" compile configure install postinst preinst prepare setup"
- declare DEPEND="javascript? ( dev-java/rhino:1.6 )
- nsplugin? ( >=dev-libs/glib-2.16:2= )
- tagsoup? ( dev-java/tagsoup:0 )
- app-arch/zip
- >=virtual/jdk-1.7
- virtual/pkgconfig
- nsplugin? ( net-misc/npapi-sdk )
- test? ( >=dev-java/junit-4.8:4 ) >=app-portage/elt-patches-20170422 !<sys-devel/gettext-0.18.1.1-r3
- || ( >=sys-devel/automake-1.15:1.15 )
- >=sys-devel/autoconf-2.69
- >=sys-devel/libtool-2.4 >=dev-java/java-config-2.2.0-r3 "
- declare DESCRIPTION="FOSS Java browser plugin and Web Start implementation"
- declare -- DESKTOP_DATABASE_DIR="/usr/share/applications"
- declare -- DESKTOP_DATABASE_UPDATE_BIN="/usr/bin/update-desktop-database"
- 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=""
- declare -- EPATCH_FORCE="no"
- declare -- EPATCH_MULTI_MSG="Applying various patches (bugfixes/updates) ..."
- declare -- EPATCH_N_APPLIED_PATCHES="5"
- declare -- EPATCH_OPTS=""
- declare -- EPATCH_SINGLE_MSG=""
- declare -- EPATCH_SOURCE="/var/tmp/portage/dev-java/icedtea-web-1.6.1-r1/work/patch"
- declare -- EPATCH_SUFFIX="patch.bz2"
- declare -- EPATCH_USER_SOURCE="/etc/portage/patches"
- declare -x EXEOPTIONS="-m0755"
- declare -x FCFLAGS="-O2 -march=i686 -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 -march=i686 -pipe"
- declare -x GCC_SPECS=""
- declare -x GENTOO_VM="icedtea-bin-8"
- declare -x GNOME_KEYRING_CONTROL="/home/pas/.cache/keyring-AH7XCZ"
- declare -x GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx"
- declare -x GRUB_PLATFORMS=""
- declare -x GSETTINGS_BACKEND="dconf"
- declare -x GS_LIB="/home/pas/.fonts"
- declare -x GTK2_RC_FILES="/etc/gtk-2.0/gtkrc:/home/pas/.gtkrc-2.0:/home/pas/.config/gtkrc-2.0"
- declare -x GTK_RC_FILES="/etc/gtk/gtkrc:/home/pas/.gtkrc:/home/pas/.config/gtkrc"
- declare HDEPEND=""
- declare HOMEPAGE="http://icedtea.classpath.org"
- declare -x INHERITED=" toolchain-funcs multilib libtool autotools desktop estack epatch ltprune eutils readme.gentoo-r1 versionator java-utils-2 java-pkg-2 xdg-utils"
- declare -x INPUT_DEVICES="evdev"
- declare -x INSDESTTREE=""
- declare -x INSOPTIONS="-m0644"
- declare IUSE="doc javascript nsplugin tagsoup test elibc_FreeBSD "
- declare -x IUSE_EFFECTIVE="abi_x86_32 alpha 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 hppa ia64 javascript kernel_AIX kernel_Darwin kernel_FreeBSD kernel_HPUX kernel_NetBSD kernel_OpenBSD kernel_SunOS kernel_Winnt kernel_freemint kernel_linux m68k m68k-mint mips nios2 nsplugin ppc ppc-aix ppc-macos ppc64 ppc64-linux prefix prefix-chain prefix-guest riscv s390 sh sparc sparc-fbsd sparc-solaris sparc64-solaris tagsoup test userland_BSD userland_GNU x64-cygwin x64-macos x64-solaris x86 x86-cygwin x86-fbsd x86-linux x86-macos x86-solaris x86-winnt"
- declare -x IUSE_IMPLICIT="abi_x86_32 prefix prefix-chain prefix-guest"
- declare -- I_WANT_GLOBAL_JAVA_OPTIONS="true"
- declare -x JAVA="/opt/icedtea-bin-3.6.0/bin/java"
- declare -x JAVAC="/opt/icedtea-bin-3.6.0/bin/javac"
- declare -x JAVACC_HOME="/usr/share/javacc/"
- declare -x JAVACFLAGS="-source 1.7 -target 1.7"
- declare -x JAVA_HOME="/opt/icedtea-bin-3.6.0"
- declare -- JAVA_PKG_ALLOW_VM_CHANGE="yes"
- declare -- JAVA_PKG_BUILD_DEPEND_FILE="/var/tmp/portage/dev-java/icedtea-web-1.6.1-r1/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/dev-java/icedtea-web-1.6.1-r1/temp/java-pkg-depend"
- declare -- JAVA_PKG_EXTRA_ENV="/var/tmp/portage/dev-java/icedtea-web-1.6.1-r1/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/dev-java/icedtea-web-1.6.1-r1/temp/java-pkg-optional-depend"
- declare -- JAVA_PKG_QA_VIOLATIONS="0"
- declare -x JDK_HOME="/opt/icedtea-bin-3.6.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="x86"
- declare -x KEYWORDS="amd64 ~arm ppc64 x86"
- declare -x KONSOLE_DBUS_SERVICE=":1.37"
- declare -x KONSOLE_DBUS_SESSION="/Sessions/1"
- declare -x KONSOLE_PROFILE_NAME="Командная оболочка"
- declare -x L10N="ru en ru_RU"
- declare -x LANG="ru_RU.utf8"
- declare -x LANGUAGE=""
- declare -x LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text"
- declare -x LC_MESSAGES="C"
- declare -x LDFLAGS="-Wl,-O1 -Wl,--as-needed"
- declare -x LDFLAGS_default
- declare -x LD_LIBRARY_PATH="/opt/icedtea-bin-3.6.0/jre/lib/i386/:/opt/icedtea-bin-3.6.0/jre/lib/i386/server/"
- declare -x LIBDIR_default="lib"
- declare -x LIBDIR_x86="lib"
- declare -x LIBOPTIONS="-m0644"
- declare -x LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer"
- declare -x LICENSE="GPL-2 GPL-2-with-linking-exception LGPL-2"
- declare -x LINGUAS="ru en ru_RU"
- declare -x LIRC_DEVICES="avermedia avermedia98 avermedia_vdomate commandir devinput"
- declare -x MAIL="/var/mail/pas"
- declare -x MAKEOPTS="-j7"
- declare -- MIMEINFO_DATABASE_DIR="/usr/share/mime"
- declare -- MIMEINFO_DATABASE_UPDATE_BIN="/usr/bin/update-mime-database"
- declare -x MULTILIB_ABIS="x86"
- declare -x NETBEANS="apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml"
- declare -x OFFICE_IMPLEMENTATION="libreoffice"
- declare -x OPENCL_PROFILE="nvidia"
- declare -x OPENGL_PROFILE="nvidia"
- declare -x PAM_KWALLET5_LOGIN="/tmp/kwallet5_pas.socket"
- declare -x PATH="/opt/icedtea-bin-3.6.0/bin:/var/tmp/portage/._portage_reinstall_.gse8kxm9/bin/ebuild-helpers/xattr:/usr/lib/portage/python3.5/ebuild-helpers/xattr:/var/tmp/portage/._portage_reinstall_.gse8kxm9/bin/ebuild-helpers:/usr/lib/portage/python3.5/ebuild-helpers:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/i686-pc-linux-gnu/gcc-bin/6.4.0:/usr/lib/llvm/4/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin"
- declare PDEPEND=""
- declare -x PHP_TARGETS="php5-6 php7-0"
- declare -x PORTAGE_COMPRESSION_COMMAND="bzip2"
- declare -a PORTAGE_DOCOMPRESS=([0]="/usr/share/doc" [1]="/usr/share/info" [2]="/usr/share/man")
- declare -x PORTAGE_DOCOMPRESS_SIZE_LIMIT="128"
- declare -a PORTAGE_DOCOMPRESS_SKIP=([0]="/usr/share/doc/icedtea-web-1.6.1-r1/html")
- declare -x POSTGRES_TARGETS="postgres9_5"
- declare -x PRELINK_PATH_MASK="/usr/lib/klibc"
- 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 PYTHONDONTWRITEBYTECODE="1"
- declare -x PYTHON_SINGLE_TARGET="python3_5"
- declare -x PYTHON_TARGETS="python2_7 python3_5"
- declare -x QT_AUTO_SCREEN_SCALE_FACTOR="0"
- declare -x QT_GRAPHICSSYSTEM="native"
- declare -x QT_PLUGIN_PATH="/usr/lib/kde4/plugins"
- declare -x QT_QUICK_CONTROLS_STYLE="org.kde.desktop"
- declare RDEPEND="javascript? ( dev-java/rhino:1.6 )
- nsplugin? ( >=dev-libs/glib-2.16:2= )
- tagsoup? ( dev-java/tagsoup:0 )
- >=app-eselect/eselect-java-0.2.0
- >=virtual/jre-1.7
- nsplugin? (
- !dev-java/oracle-jdk-bin[nsplugin]
- !dev-java/oracle-jre-bin[nsplugin]
- ) >=dev-java/java-config-2.2.0-r3 "
- declare -- README_GENTOO_SUFFIX="-r1"
- declare REPOSITORY
- declare REQUIRED_USE=""
- declare -x RESTRICT="test"
- 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="ruby22"
- declare -x S="/var/tmp/portage/dev-java/icedtea-web-1.6.1-r1/work/icedtea-web-1.6.1"
- declare -x SANDBOX_DEBUG="0"
- declare -x SANDBOX_DENY=""
- declare -x SANDBOX_PREDICT="/dev/crypto:/dev/random:/proc/self/coredump_filter:/var/cache/fontconfig:/var/tmp/portage/dev-java/icedtea-web-1.6.1-r1/homedir"
- 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/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/lib/cf:/usr/lib/conftest:/usr/tmp/cf:/usr/tmp/conftest:/var/tmp:/var/tmp/:/var/tmp/portage/dev-java/icedtea-web-1.6.1-r1/homedir/.bash_history"
- declare -x SANE_BACKENDS="snapscan net"
- declare -x SESSION_MANAGER="local/pas-1G:@/tmp/.ICE-unix/7109,unix/pas-1G:/tmp/.ICE-unix/7109"
- declare -x SHELL="/bin/bash"
- declare -x SHELL_SESSION_ID="cc88b96d01444300a35b2c4f8a7abd78"
- declare -x SLOT="0"
- declare SRC_URI="http://icedtea.classpath.org/download/source/icedtea-web-1.6.1.tar.gz"
- declare -x SSH_ASKPASS="/usr/bin/ksshaskpass"
- declare -x TWISTED_DISABLE_WRITING_OF_PLUGIN_CACHE="1"
- declare -x USE="abi_x86_32 elibc_glibc kernel_linux nsplugin userland_GNU x86"
- 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 ia64 m68k m68k-mint mips nios2 ppc ppc64 ppc64-linux ppc-aix ppc-macos riscv s390 sh sparc sparc64-solaris sparc-fbsd sparc-solaris x64-cygwin x64-macos x64-solaris x86 x86-cygwin x86-fbsd x86-linux x86-macos x86-solaris x86-winnt"
- declare -x USE_EXPAND_VALUES_ELIBC="AIX bionic Cygwin Darwin DragonFly FreeBSD glibc HPUX Interix mingw mintlib musl NetBSD OpenBSD SunOS uclibc Winnt"
- declare -x USE_EXPAND_VALUES_KERNEL="AIX Darwin FreeBSD freemint HPUX linux NetBSD OpenBSD SunOS Winnt"
- declare -x USE_EXPAND_VALUES_USERLAND="BSD GNU"
- declare -x VBOX_APP_HOME="/usr/lib/virtualbox"
- declare -x VIDEO_CARDS="nvidia"
- declare -x WANT_AUTOCONF="2.5"
- declare -x WANT_AUTOMAKE="1.15"
- declare -x WANT_JAVA_CONFIG="2"
- declare -x WANT_LIBTOOL="latest"
- declare -x WINDOWID="67108870"
- declare -x XCURSOR_SIZE="0"
- declare -x XCURSOR_THEME="Adwaita"
- declare -x XDG_CONFIG_DIRS="/etc/xdg"
- 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="pas-1G-1515197588.177705-536763511"
- declare -x XDG_SESSION_DESKTOP="KDE"
- declare -x XDG_SESSION_PATH="/org/freedesktop/DisplayManager/Session1"
- 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 -- _AUTOTOOLS_ECLASS="1"
- declare -- _DESKTOP_ECLASS="1"
- declare -- _EPATCH_ECLASS="1"
- declare -- _ESTACK_ECLASS="1"
- declare -a _ESTACK_eshopts_=()
- declare -- _EUTILS_ECLASS="1"
- declare -x _E_DOCDESTTREE_=""
- declare -x _E_EXEDESTTREE_=""
- declare -a _LATEST_AUTOMAKE=([0]="1.15:1.15")
- declare -- _LIBTOOL_ECLASS="1"
- declare -- _LTPRUNE_ECLASS="1"
- declare -- _MULTILIB_ECLASS="1"
- declare -- _README_GENTOO_ECLASS="1"
- declare -- _TOOLCHAIN_FUNCS_ECLASS="1"
- declare -- _VERSIONATOR_ECLASS="1"
- declare -- __AUTOTOOLS_AUTO_DEPEND="yes"
- declare -- _libtool_atom=">=sys-devel/libtool-2.4"
- declare -- phase_func
- __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
- }
- _at_uses_autoheader ()
- {
- _at_uses_pkg A{C,M}_CONFIG_HEADER{S,}
- }
- _at_uses_automake ()
- {
- _at_uses_pkg AM_INIT_AUTOMAKE
- }
- _at_uses_gettext ()
- {
- _at_uses_pkg AM_GNU_GETTEXT_{,REQUIRE_}VERSION
- }
- _at_uses_glibgettext ()
- {
- _at_uses_pkg AM_GLIB_GNU_GETTEXT
- }
- _at_uses_gnomedoc ()
- {
- _at_uses_pkg GNOME_DOC_INIT
- }
- _at_uses_gtkdoc ()
- {
- _at_uses_pkg GTK_DOC_CHECK
- }
- _at_uses_intltool ()
- {
- _at_uses_pkg {AC,IT}_PROG_INTLTOOL
- }
- _at_uses_libltdl ()
- {
- _at_uses_pkg LT_CONFIG_LTDL_DIR
- }
- _at_uses_libtool ()
- {
- _at_uses_pkg A{C,M}_PROG_LIBTOOL LT_INIT
- }
- _at_uses_pkg ()
- {
- if [[ -n $(autotools_check_macro "$@") ]]; then
- return 0;
- else
- local macro args=();
- for macro in "$@";
- do
- args+=(-e "^[[:space:]]*${macro}\>");
- done;
- egrep -q "${args[@]}" configure.??;
- fi
- }
- _automake_version ()
- {
- autotools_run_tool --at-output automake --version 2> /dev/null | sed -n -e '1{s:.*(GNU automake) ::p;q}'
- }
- _autotools_m4dir_include ()
- {
- local x include_opts flag;
- [[ ${WANT_AUTOCONF} == "2.1" ]] && flag="l" || flag="I";
- for x in "$@";
- do
- case ${x} in
- -${flag})
- ;;
- *)
- [[ ! -d ${x} ]] && ewarn "autotools.eclass: '${x}' does not exist";
- include_opts+=" -${flag} ${x}"
- ;;
- esac;
- done;
- echo ${include_opts}
- }
- _clang_fullversion ()
- {
- local ver="$1";
- shift;
- set -- $($(tc-getCPP "$@") -E -P - <<<"__clang_major__ __clang_minor__ __clang_patchlevel__");
- eval echo "$ver"
- }
- _elibtoolize ()
- {
- local LIBTOOLIZE=${LIBTOOLIZE:-$(type -P glibtoolize > /dev/null && echo glibtoolize || echo libtoolize)};
- if [[ $1 == "--auto-ltdl" ]]; then
- shift;
- _at_uses_libltdl && set -- "$@" --ltdl;
- fi;
- [[ -f GNUmakefile.am || -f Makefile.am ]] && set -- "$@" --automake;
- autotools_run_tool ${LIBTOOLIZE} "$@"
- }
- _epatch_draw_line ()
- {
- [[ -z $1 ]] && set "$(printf "%65s" '')";
- echo "${1//?/=}"
- }
- _eutils_eprefix_init ()
- {
- has "${EAPI:-0}" 0 1 2 && : ${ED:=${D}} ${EPREFIX:=} ${EROOT:=${ROOT}}
- }
- _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
- }
- _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}"
- }
- autotools_check_macro ()
- {
- [[ -f configure.ac || -f configure.in ]] || return 0;
- local trace_file=".__autoconf_trace_data";
- if [[ ! -e ${trace_file} ]] || [[ ! aclocal.m4 -ot ${trace_file} ]]; then
- WANT_AUTOCONF="2.5" autoconf $(autotools_m4dir_include) ${ALL_AUTOTOOLS_MACROS[@]/#/--trace=} > ${trace_file} 2> /dev/null;
- fi;
- local macro args=();
- for macro in "$@";
- do
- has ${macro} ${ALL_AUTOTOOLS_MACROS[@]} || die "internal error: add ${macro} to ALL_AUTOTOOLS_MACROS";
- args+=(-e ":${macro}:");
- done;
- grep "${args[@]}" ${trace_file}
- }
- autotools_check_macro_val ()
- {
- local macro scan_out;
- for macro in "$@";
- do
- autotools_check_macro "${macro}" | gawk -v macro="${macro}" '($0 !~ /^[[:space:]]*(#|dnl)/) {
- if (match($0, macro ":(.*)$", res))
- print res[1]
- }' | uniq;
- done;
- return 0
- }
- autotools_env_setup ()
- {
- if [[ ${WANT_AUTOMAKE} == "latest" ]]; then
- local pv;
- for pv in ${_LATEST_AUTOMAKE[@]/#*:};
- do
- ROOT=/ has_version "=sys-devel/automake-${pv}*" && export WANT_AUTOMAKE="${pv}";
- done;
- [[ ${WANT_AUTOMAKE} == "latest" ]] && die "Cannot find the latest automake! Tried ${_LATEST_AUTOMAKE[*]}";
- fi;
- [[ ${WANT_AUTOCONF} == "latest" ]] && export WANT_AUTOCONF=2.5
- }
- autotools_m4dir_include ()
- {
- _autotools_m4dir_include ${AT_M4DIR}
- }
- autotools_m4sysdir_include ()
- {
- local paths=($(eval echo ${AT_SYS_M4DIR}));
- if [[ ${#paths[@]} -eq 0 && -n ${SYSROOT} ]]; then
- local path="${SYSROOT}/usr/share/aclocal";
- [[ -d ${path} ]] && paths+=("${path}");
- fi;
- _autotools_m4dir_include "${paths[@]}"
- }
- autotools_run_tool ()
- {
- local autofail=true m4flags=false missing_ok=false return_output=false;
- while [[ -n $1 ]]; do
- case $1 in
- --at-no-fail)
- autofail=false
- ;;
- --at-m4flags)
- m4flags=true
- ;;
- --at-missing)
- missing_ok=true
- ;;
- --at-output)
- return_output=true
- ;;
- *)
- break
- ;;
- esac;
- shift;
- done;
- if [[ ${EBUILD_PHASE} != "unpack" && ${EBUILD_PHASE} != "prepare" ]]; then
- ewarn "QA Warning: running $1 in ${EBUILD_PHASE} phase";
- fi;
- if ${missing_ok} && ! type -P ${1} > /dev/null; then
- einfo "Skipping '$*' due $1 not installed";
- return 0;
- fi;
- autotools_env_setup;
- local STDERR_TARGET="${T}/${1##*/}.out";
- if [[ -e ${STDERR_TARGET} ]]; then
- local i=1;
- while :; do
- STDERR_TARGET="${T}/${1##*/}-${i}.out";
- [[ -e ${STDERR_TARGET} ]] || break;
- : $(( i++ ));
- done;
- fi;
- if ${m4flags}; then
- set -- "${1}" $(autotools_m4dir_include) "${@:2}" $(autotools_m4sysdir_include);
- fi;
- if ${return_output}; then
- "$@";
- return;
- fi;
- printf "***** $1 *****\n***** PWD: ${PWD}\n***** $*\n\n" > "${STDERR_TARGET}";
- ebegin "Running $@";
- "$@" >> "${STDERR_TARGET}" 2>&1;
- if ! eend $? && ${autofail}; then
- echo;
- eerror "Failed Running $1 !";
- eerror;
- eerror "Include in your bugreport the contents of:";
- eerror;
- eerror " ${STDERR_TARGET}";
- echo;
- die "Failed Running $1 !";
- fi
- }
- 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" ]]
- }
- 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' "$@"
- }
- config_rpath_update ()
- {
- local dst src=$(type -P gettext | sed 's:bin/gettext:share/gettext/config.rpath:');
- [[ $# -eq 0 ]] && set -- $(find -name config.rpath);
- [[ $# -eq 0 ]] && return 0;
- einfo "Updating all config.rpath files";
- for dst in "$@";
- do
- einfo " ${dst}";
- cp "${src}" "${dst}" || die;
- done
- }
- darwintoolize ()
- {
- die "Use elibtoolize"
- }
- 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} )
- }
- eaclocal ()
- {
- [[ ! -f aclocal.m4 || -n $(grep -e 'generated.*by aclocal' aclocal.m4) ]] && autotools_run_tool --at-m4flags aclocal "$@" $(eaclocal_amflags)
- }
- eaclocal_amflags ()
- {
- local aclocal_opts amflags_file;
- for amflags_file in GNUmakefile.am Makefile.am GNUmakefile.in Makefile.in;
- do
- [[ -e ${amflags_file} ]] || continue;
- autotools_env_setup;
- aclocal_opts=$(sed -n "/^ACLOCAL_AMFLAGS[[:space:]]*=/{ # match the first line
- s:[^=]*=::p; # then gobble up all escaped lines
- : nextline /\\\\$/{ n; p; b nextline; } }" ${amflags_file});
- eval aclocal_opts=\""${aclocal_opts}"\";
- break;
- done;
- echo ${aclocal_opts}
- }
- 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"
- }
- eautoconf ()
- {
- if [[ ! -f configure.ac && ! -f configure.in ]]; then
- echo;
- eerror "No configure.{ac,in} present in '${PWD}'!";
- echo;
- die "No configure.{ac,in} present!";
- fi;
- if [[ ${WANT_AUTOCONF} != "2.1" && -e configure.in ]]; then
- eqawarn "This package has a configure.in file which has long been deprecated. Please";
- eqawarn "update it to use configure.ac instead as newer versions of autotools will die";
- eqawarn "when it finds this file. See https://bugs.gentoo.org/426262 for details.";
- fi;
- autotools_run_tool --at-m4flags autoconf "$@"
- }
- eautoheader ()
- {
- _at_uses_autoheader || return 0;
- autotools_run_tool --at-no-fail --at-m4flags autoheader "$@"
- }
- eautomake ()
- {
- local extra_opts=();
- local makefile_name;
- for makefile_name in {GNUmakefile,{M,m}akefile}.am "";
- do
- [[ -f ${makefile_name} ]] && break;
- done;
- function _automake_version ()
- {
- autotools_run_tool --at-output automake --version 2> /dev/null | sed -n -e '1{s:.*(GNU automake) ::p;q}'
- };
- if [[ -z ${makefile_name} ]]; then
- _at_uses_automake || return 0;
- else
- if [[ -z ${FROM_EAUTORECONF} && -f ${makefile_name%.am}.in ]]; then
- local used_automake;
- local installed_automake;
- installed_automake=$(WANT_AUTOMAKE= _automake_version);
- used_automake=$(head -n 1 < ${makefile_name%.am}.in | sed -e 's:.*by automake \(.*\) from .*:\1:');
- if [[ ${installed_automake} != ${used_automake} ]]; then
- ewarn "Automake used for the package (${used_automake}) differs from" "the installed version (${installed_automake}).";
- ewarn "Forcing a full rebuild of the autotools to workaround.";
- eautoreconf;
- return 0;
- fi;
- fi;
- fi;
- [[ -f INSTALL && -f AUTHORS && -f ChangeLog && -f NEWS && -f README ]] || extra_opts+=(--foreign);
- case $(_automake_version) in
- 1.4 | 1.4[.-]*)
- ;;
- *)
- extra_opts+=(--force-missing)
- ;;
- esac;
- autotools_run_tool automake --add-missing --copy "${extra_opts[@]}" "$@"
- }
- eautopoint ()
- {
- autotools_run_tool autopoint "$@"
- }
- eautoreconf ()
- {
- local x g;
- if [[ -z ${AT_NO_RECURSIVE} ]]; then
- for x in $(autotools_check_macro_val AC_CONFIG_SUBDIRS);
- do
- if [[ -d ${x} ]]; then
- pushd "${x}" > /dev/null;
- AT_NOELIBTOOLIZE="yes" eautoreconf || die;
- popd > /dev/null;
- fi;
- done;
- fi;
- einfo "Running eautoreconf in '${PWD}' ...";
- local m4dirs=$(autotools_check_macro_val AC_CONFIG_{AUX,MACRO}_DIR);
- [[ -n ${m4dirs} ]] && mkdir -p ${m4dirs};
- local i tools=(glibgettext false "autotools_run_tool glib-gettextize --copy --force" gettext false "autotools_run_tool --at-missing autopoint --force" intltool false "autotools_run_tool intltoolize --automake --copy --force" gtkdoc false "autotools_run_tool --at-missing gtkdocize --copy" gnomedoc false "autotools_run_tool --at-missing gnome-doc-prepare --copy --force" libtool false "_elibtoolize --auto-ltdl --install --copy --force");
- for ((i = 0; i < ${#tools[@]}; i += 3 ))
- do
- if _at_uses_${tools[i]}; then
- tools[i+1]=true;
- ${tools[i+2]};
- fi;
- done;
- local rerun_aclocal=false;
- eaclocal;
- for ((i = 0; i < ${#tools[@]}; i += 3 ))
- do
- if ! ${tools[i+1]} && _at_uses_${tools[i]}; then
- ${tools[i+2]};
- rerun_aclocal=true;
- fi;
- done;
- ${rerun_aclocal} && eaclocal;
- if [[ ${WANT_AUTOCONF} = 2.1 ]]; then
- eautoconf;
- else
- eautoconf --force;
- fi;
- eautoheader;
- [[ ${AT_NOEAUTOMAKE} != "yes" ]] && FROM_EAUTORECONF="yes" eautomake ${AM_OPTS};
- if [[ ${AT_NOELIBTOOLIZE} != "yes" ]]; then
- elibtoolize --force "${PWD}";
- fi;
- return 0
- }
- 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"
- }
- elibtoolize ()
- {
- type -P eltpatch &> /dev/null || die "eltpatch not found; is app-portage/elt-patches installed?";
- ELT_LOGDIR=${T} LD=$(tc-getLD) eltpatch "${@}" || die "eltpatch 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"
- }
- eshopts_pop ()
- {
- local s;
- estack_pop eshopts s || die "${FUNCNAME}: unbalanced push";
- eval "${s}" || die "${FUNCNAME}: sanity: invalid shopt options: ${s}"
- }
- 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 "$(shopt -p -o)";
- [[ $# -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: $*"
- }
- 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
- }
- 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_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_major_version ()
- {
- local c=($(get_all_version_components "${1:-${PV}}"));
- echo ${c[0]}
- }
- get_modname ()
- {
- local modname;
- local ver=$1;
- case ${CHOST} in
- *-darwin*)
- modname="bundle"
- ;;
- *)
- modname="so"
- ;;
- esac;
- echo ".${modname}"
- }
- get_version_component_count ()
- {
- local a=($(get_version_components "${1:-${PV}}"));
- echo ${#a[@]}
- }
- get_version_component_range ()
- {
- eshopts_push -s extglob;
- local c v="${2:-${PV}}" range="${1}" range_start range_end;
- local -i i=-1 j=0;
- c=($(get_all_version_components "${v}"));
- range_start=${range%-*};
- range_start=${range_start:-1};
- range_end=${range#*-};
- range_end=${range_end:-${#c[@]}};
- while ((j < range_start)); do
- i+=1;
- ((i > ${#c[@]})) && eshopts_pop && return;
- [[ -n "${c[i]//[-._]}" ]] && j+=1;
- done;
- while ((j <= range_end)); do
- echo -n ${c[i]};
- ((i > ${#c[@]})) && eshopts_pop && return;
- [[ -n "${c[i]//[-._]}" ]] && j+=1;
- i+=1;
- done;
- eshopts_pop
- }
- get_version_components ()
- {
- local c=$(get_all_version_components "${1:-${PV}}");
- echo ${c//[-._]/ }
- }
- has_multilib_profile ()
- {
- [ -n "${MULTILIB_ABIS}" -a "${MULTILIB_ABIS}" != "${MULTILIB_ABIS/ /}" ]
- }
- 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-java-strict ()
- {
- [[ -n ${JAVA_PKG_STRICT} ]];
- return $?
- }
- 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-2_pkg_preinst ()
- {
- java-utils-2_pkg_preinst
- }
- java-pkg-2_pkg_setup ()
- {
- java-pkg_init
- }
- java-pkg-2_src_compile ()
- {
- if [[ -e "${EANT_BUILD_XML:=build.xml}" ]]; then
- java-pkg_gen-cp EANT_GENTOO_CLASSPATH;
- [[ -n "${EANT_FILTER_COMPILER}" ]] && java-pkg_filter-compiler ${EANT_FILTER_COMPILER};
- local antflags="${EANT_BUILD_TARGET:=jar}";
- if has doc ${IUSE} && [[ -n "${EANT_DOC_TARGET=javadoc}" ]]; then
- antflags="${antflags} $(use_doc ${EANT_DOC_TARGET})";
- fi;
- local tasks;
- [[ -n ${EANT_ANT_TASKS} ]] && tasks="${ANT_TASKS} ${EANT_ANT_TASKS}";
- ANT_TASKS="${tasks:-${ANT_TASKS}}" eant ${antflags} -f "${EANT_BUILD_XML}" ${EANT_EXTRA_ARGS} "${@}";
- else
- echo "${FUNCNAME}: ${EANT_BUILD_XML} not found so nothing to do.";
- fi
- }
- java-pkg-2_src_prepare ()
- {
- java-utils-2_src_prepare
- }
- java-pkg-2_src_test ()
- {
- [[ -e "${EANT_BUILD_XML:=build.xml}" ]] || return;
- if [[ -n ${EANT_TEST_TARGET} ]] || tr -d "\n" < "${EANT_BUILD_XML}" | grep -Eq "<target\b[^>]*\bname=[\"']test[\"']"; then
- local opts task_re junit_re pkg;
- if [[ -n ${EANT_TEST_JUNIT_INTO} ]]; then
- java-pkg_jar-from --into "${EANT_TEST_JUNIT_INTO}" junit;
- fi;
- if [[ -n ${EANT_TEST_GENTOO_CLASSPATH} ]]; then
- EANT_GENTOO_CLASSPATH="${EANT_TEST_GENTOO_CLASSPATH}";
- fi;
- ANT_TASKS=${EANT_TEST_ANT_TASKS:-${ANT_TASKS:-${EANT_ANT_TASKS}}};
- task_re="\bdev-java/ant-junit(4)?(-[^:]+)?(:\S+)\b";
- junit_re="\bdev-java/junit(-[^:]+)?(:\S+)\b";
- if [[ ${DEPEND} =~ ${task_re} ]]; then
- pkg="ant-junit${BASH_REMATCH[1]}${BASH_REMATCH[3]}";
- pkg="${pkg%:0}";
- if [[ -n ${ANT_TASKS} && "${ANT_TASKS}" != none ]]; then
- ANT_TASKS="${ANT_TASKS} ${pkg}";
- else
- ANT_TASKS="${pkg}";
- fi;
- else
- if [[ ${DEPEND} =~ ${junit_re} ]]; then
- pkg="junit${BASH_REMATCH[2]}";
- pkg="${pkg%:0}";
- opts="-Djunit.jar=\"$(java-pkg_getjar ${pkg} junit.jar)\"";
- if [[ -n ${EANT_GENTOO_CLASSPATH} ]]; then
- EANT_GENTOO_CLASSPATH+=",${pkg}";
- else
- EANT_GENTOO_CLASSPATH="${pkg}";
- fi;
- fi;
- fi;
- eant ${opts} -f "${EANT_BUILD_XML}" ${EANT_EXTRA_ARGS} ${EANT_TEST_EXTRA_ARGS} ${EANT_TEST_TARGET:-test};
- else
- echo "${FUNCNAME}: No test target in ${EANT_BUILD_XML}";
- fi
- }
- 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}";
- docinto html;
- dodoc "$@";
- 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="${ED}${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 "${EPREFIX}/${JAVA_PKG_JARDEST}/${jar_basename}";
- debug-print "installed ${jar} to ${ED}${JAVA_PKG_JARDEST}";
- else
- ln -s "$(readlink "${jar}")" "${ED}${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 ${EPREFIX}/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="${ED}${JAVA_PKG_SHAREPATH}/package.env";
- JAVA_PKG_VIRTUALS_PATH="/usr/share/java-config-2/virtuals";
- JAVA_PKG_VIRTUAL_PROVIDER="${ED}${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 "${ED}/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
- }
- 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:+;};
- 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%.*};
- fi;
- 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";
- if [[ ${CBUILD} == "${CHOST}" ]]; then
- export CBUILD=$(get_abi_CHOST $1);
- fi;
- 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 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 "$@" )
- }
- 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
- }
- pkg_nofetch ()
- {
- default
- }
- pkg_postinst ()
- {
- readme.gentoo_print_elog
- }
- pkg_preinst ()
- {
- java-pkg-2_pkg_preinst "$@"
- }
- pkg_setup ()
- {
- java-pkg-2_pkg_setup "$@"
- }
- 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;
- 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
- eerror "${FUNCNAME}: variable substitution likely failed in ${pc}";
- eerror "(arg: ${arg})";
- eerror "Most likely, you need to add virtual/pkgconfig to DEPEND.";
- die "${FUNCNAME}: unsubstituted variable found in .pc";
- 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 "${D}" -xtype f -name '*.la' -print0);
- if [[ -n ${queue[@]} ]]; then
- rm -f "${queue[@]}";
- fi
- }
- readme.gentoo_create_doc ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- if [[ -n "${DOC_CONTENTS}" ]]; then
- if [[ -n "${DISABLE_AUTOFORMATTING}" ]]; then
- echo "${DOC_CONTENTS}" > "${T}"/README.gentoo || die;
- else
- local saved_flags=$-;
- set -f;
- echo -e ${DOC_CONTENTS} | fold -s -w 70 | sed 's/[[:space:]]*$//' > "${T}"/README.gentoo;
- assert;
- set +f -${saved_flags};
- fi;
- else
- if [[ -f "${FILESDIR}/README.gentoo-${SLOT%/*}" ]]; then
- cp "${FILESDIR}/README.gentoo-${SLOT%/*}" "${T}"/README.gentoo || die;
- else
- if [[ -f "${FILESDIR}/README.gentoo${README_GENTOO_SUFFIX}" ]]; then
- cp "${FILESDIR}/README.gentoo${README_GENTOO_SUFFIX}" "${T}"/README.gentoo || die;
- else
- die "You are not specifying README.gentoo contents!";
- fi;
- fi;
- fi;
- dodoc "${T}"/README.gentoo;
- README_GENTOO_DOC_VALUE=$(< "${T}/README.gentoo")
- }
- readme.gentoo_print_elog ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- if [[ -z "${README_GENTOO_DOC_VALUE}" ]]; then
- die "readme.gentoo_print_elog invoked without matching readme.gentoo_create_doc call!";
- else
- if ! [[ -n "${REPLACING_VERSIONS}" ]] || [[ -n "${FORCE_PRINT_ELOG}" ]]; then
- echo -e "${README_GENTOO_DOC_VALUE}" | while read -r ELINE; do
- elog "${ELINE}";
- done;
- elog "";
- elog "(Note: Above message is only printed the first time package is";
- elog "installed. Please look at ${EPREFIX}/usr/share/doc/${PF}/README.gentoo*";
- elog "for future reference)";
- fi;
- fi
- }
- replace_all_version_separators ()
- {
- local c=($(get_all_version_components "${2:-${PV}}"));
- c=${c[@]//[-._]/$1};
- echo ${c// }
- }
- replace_version_separator ()
- {
- eshopts_push -s extglob;
- local w c v="${3:-${PV}}";
- declare -i i found=0;
- w=${1:-1};
- c=($(get_all_version_components ${v}));
- if [[ ${w} != *[[:digit:]]* ]]; then
- for ((i = 0; i < ${#c[@]}; i++))
- do
- if [[ ${c[i]} == ${w} ]]; then
- c[i]=${2};
- break;
- fi;
- done;
- else
- for ((i = 0; i < ${#c[@]}; i++))
- do
- if [[ -n "${c[i]//[^-._]}" ]]; then
- found+=1;
- if ((found == w)); then
- c[i]=${2};
- break;
- fi;
- fi;
- done;
- fi;
- c=${c[*]};
- echo ${c// };
- eshopts_pop
- }
- src_compile ()
- {
- default
- }
- src_configure ()
- {
- local tagsoup;
- use tagsoup && tagsoup="$(java-pkg_getjars tagsoup)";
- local config=(--program-transform-name='s/^javaws$/itweb-javaws/' --libdir="${EPREFIX}"/usr/$(get_libdir)/nsbrowser/plugins --with-java="${EPREFIX}"/usr/bin/java --with-jdk-home="${JAVA_HOME}" $(use_enable doc docs) $(use_enable nsplugin plugin) $(use_with javascript rhino) $(use_with tagsoup tagsoup "${tagsoup}"));
- xdg_environment_reset;
- unset JAVA_HOME JDK_HOME CLASSPATH JAVAC JAVACFLAGS;
- econf "${config[@]}"
- }
- src_install ()
- {
- default;
- readme.gentoo_create_doc
- }
- src_prepare ()
- {
- epatch "${FILESDIR}"/${PN}-1.6-{javadoc,no-hg,launchers,respect-ldflags,unused-libs}.patch;
- if java-pkg_is-vm-version-ge "1.8"; then
- sed -i 's/JAVADOC_OPTS=/\0-Xdoclint:none /g' Makefile.am || die;
- fi;
- eautoreconf
- }
- src_test ()
- {
- default
- }
- src_unpack ()
- {
- default
- }
- 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}
- }
- 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-enables-pie ()
- {
- local ret="$($(tc-getCC) ${CPPFLAGS} ${CFLAGS} -E -P - <<-EOF 2> /dev/null | grep '^true$'
- #if defined(__PIE__)
- true
- #endif
- EOF
- )";
- [[ ${ret} == true ]]
- }
- tc-enables-ssp ()
- {
- local ret="$($(tc-getCC) ${CPPFLAGS} ${CFLAGS} -E -P - <<-EOF 2> /dev/null | grep '^true$'
- #if defined(__SSP__) || defined(__SSP_STRONG__) || defined(__SSP_ALL__)
- true
- #endif
- EOF
- )";
- [[ ${ret} == true ]]
- }
- tc-enables-ssp-all ()
- {
- local ret="$($(tc-getCC) ${CPPFLAGS} ${CFLAGS} -E -P - <<-EOF 2> /dev/null | grep '^true$'
- #if defined(__SSP_ALL__)
- true
- #endif
- EOF
- )";
- [[ ${ret} == true ]]
- }
- tc-enables-ssp-strong ()
- {
- local ret="$($(tc-getCC) ${CPPFLAGS} ${CFLAGS} -E -P - <<-EOF 2> /dev/null | grep '^true$'
- #if defined(__SSP_STRONG__) || defined(__SSP_ALL__)
- true
- #endif
- EOF
- )";
- [[ ${ret} == true ]]
- }
- tc-endian ()
- {
- local host=$1;
- [[ -z ${host} ]] && host=${CTARGET:-${CHOST}};
- host=${host%%-*};
- case ${host} in
- aarch64*be)
- echo big
- ;;
- aarch64)
- echo little
- ;;
- alpha*)
- echo little
- ;;
- arm*b*)
- echo big
- ;;
- arm*)
- echo little
- ;;
- cris*)
- echo little
- ;;
- hppa*)
- echo big
- ;;
- i?86*)
- echo little
- ;;
- ia64*)
- echo little
- ;;
- m68*)
- echo big
- ;;
- mips*l*)
- echo little
- ;;
- mips*)
- echo big
- ;;
- powerpc*le)
- echo little
- ;;
- powerpc*)
- echo big
- ;;
- 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}'";
- "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 ()
- {
- local vars="BUILD_$1 $1_FOR_BUILD HOST$1";
- tc-is-cross-compiler || vars+=" $1";
- _tc-getPROG CBUILD "${vars}" "${@:2}"
- }
- tc-getBUILD_RANLIB ()
- {
- tc-getBUILD_PROG RANLIB ranlib "$@"
- }
- tc-getBUILD_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
- }
- uclibctoolize ()
- {
- die "Use elibtoolize"
- }
- use_doc ()
- {
- use doc && echo ${@:-javadoc}
- }
- use_if_iuse ()
- {
- in_iuse $1 || return 1;
- use $1
- }
- 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
- }
- xdg_desktop_database_update ()
- {
- local updater="${EROOT}${DESKTOP_DATABASE_UPDATE_BIN}";
- if [[ ${EBUILD_PHASE} != post* ]]; then
- die "xdg_desktop_database_update must be used in pkg_post* phases.";
- fi;
- if [[ ! -x "${updater}" ]]; then
- debug-print "${updater} is not executable";
- return;
- fi;
- ebegin "Updating .desktop files database";
- "${updater}" -q "${EROOT}${DESKTOP_DATABASE_DIR}";
- eend $?
- }
- xdg_environment_reset ()
- {
- export XDG_DATA_HOME="${HOME}/.local/share";
- export XDG_CONFIG_HOME="${HOME}/.config";
- export XDG_CACHE_HOME="${HOME}/.cache";
- export XDG_RUNTIME_DIR="${T}/run";
- mkdir -p "${XDG_DATA_HOME}" "${XDG_CONFIG_HOME}" "${XDG_CACHE_HOME}" "${XDG_RUNTIME_DIR}" || die;
- chmod 0700 "${XDG_RUNTIME_DIR}" || die;
- unset DBUS_SESSION_BUS_ADDRESS
- }
- xdg_mimeinfo_database_update ()
- {
- local updater="${EROOT}${MIMEINFO_DATABASE_UPDATE_BIN}";
- if [[ ${EBUILD_PHASE} != post* ]]; then
- die "xdg_mimeinfo_database_update must be used in pkg_post* phases.";
- fi;
- if [[ ! -x "${updater}" ]]; then
- debug-print "${updater} is not executable";
- return;
- fi;
- ebegin "Updating shared mime info database";
- "${updater}" "${EROOT}${MIMEINFO_DATABASE_DIR}";
- eend $?
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement