Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 690690 Details for
Bug 775413
sci-libs/gdal-3.2.2 - configure: error: cannot find required auxiliary files: config.rpath
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
environment
environment (text/plain), 227.52 KB, created by
Toralf Förster
on 2021-03-11 09:12:38 UTC
(
hide
)
Description:
environment
Filename:
MIME Type:
Creator:
Toralf Förster
Created:
2021-03-11 09:12:38 UTC
Size:
227.52 KB
patch
obsolete
>declare -x ABI="amd64" >declare -x ABI_MIPS="" >declare -x ABI_PPC="" >declare -x ABI_RISCV="" >declare -x ABI_S390="" >declare -x ABI_X86="64" >declare -x ADA_TARGET="" >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="" >declare -x ANT_HOME="/usr/share/ant" >declare -x APACHE2_MODULES="" >declare -x APACHE2_MPMS="" >declare -x ARCH="amd64" >declare -- AT_M4DIR="" >declare -- AT_SYS_M4DIR="" >declare -x AUTOJUMP_ERROR_PATH="/root/.local/share/autojump/errors.log" >declare -x AUTOJUMP_SOURCED="1" >declare -- AUTOTOOLS_AUTO_DEPEND="yes" >declare -- AUTOTOOLS_DEPEND="|| ( >=sys-devel/automake-1.16.2-r1:1.16 ) > >=sys-devel/autoconf-2.69 > >=sys-devel/libtool-2.4" >declare BDEPEND=" > virtual/pkgconfig > doc? ( app-doc/doxygen ) > java? ( > dev-java/ant-core > dev-lang/swig:0 > >=virtual/jdk-1.7:* > ) > perl? ( dev-lang/swig:0 ) > python? ( > dev-lang/swig:0 > dev-python/setuptools[python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] > ) > >=app-portage/elt-patches-20170815 || ( >=sys-devel/automake-1.16.2-r1:1.16 ) > >=sys-devel/autoconf-2.69 > >=sys-devel/libtool-2.4" >declare -x BOOTSTRAP_USE="unicode internal-glib pkg-config split-usr python_targets_python3_8 multilib hardened pic xtpax -jit -orc" >declare -x CALLIGRA_FEATURES="" >declare -x CAMERAS="" >declare -x CARGO_TERM_COLOR="never" >declare -x CATKIN_PREFIX_PATH="/usr" >declare -x CBUILD="x86_64-pc-linux-gnu" >declare -x CFLAGS="-O2 -pipe -march=native -fno-diagnostics-color " >declare -x CFLAGS_amd64="-m64" >declare -x CFLAGS_default >declare -x CFLAGS_x32="-mx32" >declare -x CFLAGS_x86="-m32" >declare -x CHOST="x86_64-pc-linux-gnu" >declare -x CHOST_amd64="x86_64-pc-linux-gnu" >declare -x CHOST_default="x86_64-pc-linux-gnu" >declare -x CHOST_x32="x86_64-pc-linux-gnux32" >declare -x CHOST_x86="i686-pc-linux-gnu" >declare -x COLLECTD_PLUGINS="" >declare -x CPU_FLAGS_ARM="" >declare -x CPU_FLAGS_PPC="" >declare -x CPU_FLAGS_X86="sse avx ssse3" >declare -x CTARGET_default="x86_64-pc-linux-gnu" >declare -x CURL_SSL="" >declare -x CXXFLAGS="-O2 -pipe -march=native -fno-diagnostics-color " >declare -x DEFAULT_ABI="amd64" >declare -x DEFINED_PHASES=" compile configure install postinst preinst prepare setup test" >declare DEPEND=" > dev-libs/expat > dev-libs/json-c:= > dev-libs/libpcre > dev-libs/libxml2:2 > dev-libs/openssl:= > media-libs/tiff > >=sci-libs/libgeotiff-1.5.1-r1:= > >=sci-libs/proj-6.0.0:= > sys-libs/zlib[minizip(+)] > armadillo? ( sci-libs/armadillo:=[lapack] ) > curl? ( net-misc/curl ) > fits? ( sci-libs/cfitsio:= ) > geos? ( >=sci-libs/geos-3.8.0 ) > gif? ( media-libs/giflib:= ) > gml? ( >=dev-libs/xerces-c-3.1 ) > hdf5? ( >=sci-libs/hdf5-1.6.4:=[szip] ) > jpeg? ( virtual/jpeg:0= ) > jpeg2k? ( media-libs/openjpeg:2= ) > lzma? ( || ( > app-arch/xz-utils > app-arch/lzma > ) ) > mdb? ( dev-java/jackcess:1 ) > mysql? ( virtual/mysql ) > netcdf? ( sci-libs/netcdf:= ) > odbc? ( dev-db/unixODBC ) > ogdi? ( sci-libs/ogdi ) > opencl? ( virtual/opencl ) > oracle? ( dev-db/oracle-instantclient:= ) > pdf? ( app-text/poppler:= ) > perl? ( dev-lang/perl:= ) > png? ( media-libs/libpng:0= ) > postgres? ( >=dev-db/postgresql-8.4:= ) > python? ( > python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) python_targets_python3_9? ( dev-lang/python:3.9 ) >=dev-lang/python-exec-2:=[python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] > dev-python/numpy[python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] > ) > spatialite? ( dev-db/spatialite ) > sqlite? ( dev-db/sqlite:3 ) > webp? ( media-libs/libwebp:= ) > xls? ( dev-libs/freexl ) > zstd? ( app-arch/zstd:= ) > java? ( >=dev-java/java-config-2.2.0-r3 )" >declare DESCRIPTION="Translator library for raster geospatial data formats (includes OGR support)" >declare -x DIROPTIONS="-m0755" >declare -- DISTUTILS_OPTIONAL="1" >declare -- DISTUTILS_USE_SETUPTOOLS="bdepend" >declare -- DIST_A="gdal-3.2.2.tar.gz" >declare -- DIST_NAME="gdal" >declare -- DIST_P="gdal-3.2.2" >declare -x EAPI="7" >declare -- EBUILD_DEATH_HOOKS=" java-pkg_die" >declare -x EGO_BUILD_FLAGS="-p 1" >declare -x ELIBC="glibc" >declare -x ENLIGHTENMENT_MODULES="" >declare -x ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR" >declare -- EPOCHREALTIME="1615451039.394168" >declare -- EPOCHSECONDS="1615451039" >declare -x EXEOPTIONS="-m0755" >declare -x FCFLAGS="-O2 -pipe -march=native -fno-diagnostics-color" >declare -x FETCHCOMMAND_SSH="bash -c \"x=\\\${2#ssh://} ; host=\\\${x%%/*} ; port=\\\${host##*:} ; host=\\\${host%:*} ; [[ \\\${host} = \\\${port} ]] && port= ; exec rsync --rsh=\\\"ssh \\\${port:+-p\\\${port}} \\\${3}\\\" -avP \\\"\\\${host}:/\\\${x#*/}\\\" \\\"\\\$1\\\"\" rsync \"\${DISTDIR}/\${FILE}\" \"\${URI}\" \"\${PORTAGE_SSH_OPTS}\"" >declare -x FFLAGS="-O2 -pipe -march=native -fno-diagnostics-color" >declare -x FFTOOLS="" >declare -x GCC_COLORS="" >declare -x GCC_SPECS="" >declare -- GENTOO_DEPEND_ON_PERL="no" >declare -x GO19CONCURRENTCOMPILATION="0" >declare -x GOMAXPROCS="1" >declare -x GPSD_PROTOCOLS="" >declare -x GRUB_PLATFORMS="" >declare HOMEPAGE="https://gdal.org/" >declare -x INHERITED=" toolchain-funcs multilib libtool autotools bash-completion-r1 multiprocessing multibuild python-utils-r1 python-r1 distutils-r1 edos2unix l10n wrapper eutils flag-o-matic java-utils-2 java-pkg-opt-2 perl-functions perl-module" >declare -x INPUT_DEVICES="" >declare -x INSOPTIONS="-m0644" >declare IUSE="armadillo +aux-xml curl cpu_flags_x86_avx cpu_flags_x86_sse cpu_flags_x86_ssse3 debug doc fits geos gif gml hdf5 java jpeg jpeg2k lzma mdb mysql netcdf odbc ogdi opencl oracle pdf perl png postgres python spatialite sqlite threads webp xls zstd python_targets_python3_7 python_targets_python3_8 python_targets_python3_9 elibc_FreeBSD java" >declare -x IUSE_EFFECTIVE="abi_x86_64 alpha amd64 amd64-fbsd amd64-linux arm arm64 arm64-macos armadillo aux-xml cpu_flags_x86_avx cpu_flags_x86_sse cpu_flags_x86_ssse3 curl debug 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 fits geos gif gml hdf5 hppa ia64 java jpeg jpeg2k kernel_AIX kernel_Darwin kernel_FreeBSD kernel_HPUX kernel_NetBSD kernel_OpenBSD kernel_SunOS kernel_Winnt kernel_freemint kernel_linux lzma m68k mdb mips mysql netcdf odbc ogdi opencl oracle pdf perl png postgres ppc ppc-macos ppc64 ppc64-linux prefix prefix-guest prefix-stack python python_targets_python3_7 python_targets_python3_8 python_targets_python3_9 riscv s390 sparc sparc-solaris sparc64-solaris spatialite sqlite threads userland_BSD userland_GNU webp x64-cygwin x64-macos x64-solaris x64-winnt x86 x86-fbsd x86-linux x86-solaris x86-winnt xls zstd" >declare -x IUSE_IMPLICIT="abi_x86_64 prefix prefix-guest prefix-stack" >declare -x JAVAC="/etc/java-config-2/current-system-vm/bin/javac" >declare -x JAVACC_HOME="/usr/share/javacc/" >declare -x JAVA_HOME="/etc/java-config-2/current-system-vm" >declare -- JAVA_PKG_ALLOW_VM_CHANGE="yes" >declare -- JAVA_PKG_BUILD_DEPEND_FILE="/var/tmp/portage/sci-libs/gdal-3.2.2/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/sci-libs/gdal-3.2.2/temp/java-pkg-depend" >declare -- JAVA_PKG_EXTRA_ENV="/var/tmp/portage/sci-libs/gdal-3.2.2/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/sci-libs/gdal-3.2.2/temp/java-pkg-optional-depend" >declare -- JAVA_PKG_OPT_USE="java" >declare -- JAVA_PKG_QA_VIOLATIONS="0" >declare -x JDK_HOME="/etc/java-config-2/current-system-vm" >declare -x KERNEL="linux" >declare -x KERNEL_ABI="amd64" >declare -x KEYWORDS="~amd64 ~arm ~arm64 ~ia64 ~ppc ~ppc64 ~x86 ~amd64-linux ~x86-linux ~ppc-macos" >declare -x L10N="" >declare -x LADSPA_PATH="/usr/lib64/ladspa" >declare -x LANG="C.UTF-8" >declare -x LCD_DEVICES="" >declare -x LC_COLLATE="C" >declare -x LC_MESSAGES="C" >declare -x LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,--defsym=__gentoo_check_ldflags__=0" >declare -x LDFLAGS_amd64="-m elf_x86_64" >declare -x LDFLAGS_default >declare -x LDFLAGS_x32="-m elf32_x86_64" >declare -x LDFLAGS_x86="-m elf_i386" >declare -x LIBDIR_amd64="lib64" >declare -x LIBDIR_default="lib" >declare -x LIBDIR_x32="libx32" >declare -x LIBDIR_x86="lib" >declare -x LIBOPTIONS="-m0644" >declare -x LIBREOFFICE_EXTENSIONS="" >declare -x LICENSE="BSD Info-ZIP MIT" >declare -x LIRC_DEVICES="" >declare -x LLVM_TARGETS="" >declare -x LUA_SINGLE_TARGET="" >declare -x LUA_TARGETS="" >declare -x MAKEOPTS="-j 1" >declare -x MANPAGER="manpager" >declare -x MONKEYD_PLUGINS="" >declare -x MULTILIB_ABIS="amd64" >declare -x MULTILIB_STRICT_DENY="64-bit.*shared object" >declare -x MULTILIB_STRICT_DIRS="/lib32 /lib /usr/lib32 /usr/lib /usr/kde/*/lib32 /usr/kde/*/lib /usr/qt/*/lib32 /usr/qt/*/lib /usr/X11R6/lib32 /usr/X11R6/lib" >declare -x MULTILIB_STRICT_EXEMPT="(perl5|gcc|binutils|eclipse-3|debug|portage|udev|systemd|clang|python-exec|llvm)" >declare -x NGINX_MODULES_HTTP="" >declare -x NGINX_MODULES_MAIL="" >declare -x NGINX_MODULES_STREAM="" >declare -x OCAML_COLOR="never" >declare -x OFED_DRIVERS="" >declare -x OFFICE_IMPLEMENTATION="" >declare -x OMNIORB_CONFIG="/etc/omniorb/omniORB.cfg" >declare -x OMP_DYNAMIC="FALSE" >declare -x OMP_NESTED="FALSE" >declare -x OMP_NUM_THREADS="1" >declare -x OPENMPI_FABRICS="" >declare -x OPENMPI_OFED_FEATURES="" >declare -x OPENMPI_RM="" >declare -a PATCHES=([0]="/var/tmp/portage/sci-libs/gdal-3.2.2/files/gdal-2.2.3-soname.patch" [1]="/var/tmp/portage/sci-libs/gdal-3.2.2/files/gdal-2.3.0-curl.patch" [2]="/var/tmp/portage/sci-libs/gdal-3.2.2/files/gdal-3.2.1-libdir.patch") >declare -x PATH="/usr/lib/portage/python3.8/ebuild-helpers/xattr:/usr/lib/portage/python3.8/ebuild-helpers:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/lib/llvm/11/bin" >declare -x PAX_MARKINGS="none" >declare PDEPEND="" >declare -- PERL_EXPF="src_prepare src_configure src_compile src_test src_install" >declare -x PHP_TARGETS="" >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/gdal-3.2.2/html") >declare -a PORTAGE_DOSTRIP=([0]="/") >declare -a PORTAGE_DOSTRIP_SKIP=() >declare -x PORTAGE_TMPFS="/dev/shm" >declare -x PORT_LOGDIR="/var/log/portage" >declare -x POSTGRES_TARGETS="" >declare -- PREFER_BUILDPL="yes" >declare -x PROFILE_IS_HARDENED="1" >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 PYTEST_ADDOPTS="--color=no" >declare -x PYTHIA8DATA="/usr/share/pythia8/xmldoc" >declare -x PYTHONDONTWRITEBYTECODE="1" >declare -a PYTHON_COMPAT=([0]="python3_7" [1]="python3_8" [2]="python3_9") >declare -- PYTHON_DEPS="python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) python_targets_python3_9? ( dev-lang/python:3.9 ) >=dev-lang/python-exec-2:=[python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)]" >declare -- PYTHON_REQUIRED_USE="|| ( python_targets_python3_7 python_targets_python3_8 python_targets_python3_9 )" >declare -x PYTHON_SINGLE_TARGET="" >declare -x PYTHON_TARGETS="python3_8" >declare -- PYTHON_USEDEP="python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)" >declare -x PY_FORCE_COLOR="0" >declare -x QEMU_SOFTMMU_TARGETS="" >declare -x QEMU_USER_TARGETS="" >declare RDEPEND=" > dev-libs/expat > dev-libs/json-c:= > dev-libs/libpcre > dev-libs/libxml2:2 > dev-libs/openssl:= > media-libs/tiff > >=sci-libs/libgeotiff-1.5.1-r1:= > >=sci-libs/proj-6.0.0:= > sys-libs/zlib[minizip(+)] > armadillo? ( sci-libs/armadillo:=[lapack] ) > curl? ( net-misc/curl ) > fits? ( sci-libs/cfitsio:= ) > geos? ( >=sci-libs/geos-3.8.0 ) > gif? ( media-libs/giflib:= ) > gml? ( >=dev-libs/xerces-c-3.1 ) > hdf5? ( >=sci-libs/hdf5-1.6.4:=[szip] ) > jpeg? ( virtual/jpeg:0= ) > jpeg2k? ( media-libs/openjpeg:2= ) > lzma? ( || ( > app-arch/xz-utils > app-arch/lzma > ) ) > mdb? ( dev-java/jackcess:1 ) > mysql? ( virtual/mysql ) > netcdf? ( sci-libs/netcdf:= ) > odbc? ( dev-db/unixODBC ) > ogdi? ( sci-libs/ogdi ) > opencl? ( virtual/opencl ) > oracle? ( dev-db/oracle-instantclient:= ) > pdf? ( app-text/poppler:= ) > perl? ( dev-lang/perl:= ) > png? ( media-libs/libpng:0= ) > postgres? ( >=dev-db/postgresql-8.4:= ) > python? ( > python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) python_targets_python3_9? ( dev-lang/python:3.9 ) >=dev-lang/python-exec-2:=[python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] > dev-python/numpy[python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] > ) > spatialite? ( dev-db/spatialite ) > sqlite? ( dev-db/sqlite:3 ) > webp? ( media-libs/libwebp:= ) > xls? ( dev-libs/freexl ) > zstd? ( app-arch/zstd:= ) > > java? ( >=virtual/jre-1.7:* ) > java? ( >=dev-java/java-config-2.2.0-r3 )" >declare REPOSITORY >declare REQUIRED_USE=" > mdb? ( java ) > python? ( || ( python_targets_python3_7 python_targets_python3_8 python_targets_python3_9 ) ) > spatialite? ( sqlite ) > " >declare -x RESTRICT="" >declare -x RESUMECOMMAND_SSH="bash -c \"x=\\\${2#ssh://} ; host=\\\${x%%/*} ; port=\\\${host##*:} ; host=\\\${host%:*} ; [[ \\\${host} = \\\${port} ]] && port= ; exec rsync --rsh=\\\"ssh \\\${port:+-p\\\${port}} \\\${3}\\\" -avP \\\"\\\${host}:/\\\${x#*/}\\\" \\\"\\\$1\\\"\" rsync \"\${DISTDIR}/\${FILE}\" \"\${URI}\" \"\${PORTAGE_SSH_OPTS}\"" >declare -x ROS_MESSAGES="" >declare -x ROS_PACKAGE_PATH="/usr/share/ros_packages" >declare -x ROS_ROOT="/usr/share/ros" >declare -x RUBY_TARGETS="" >declare -x RUSTFLAGS="-C codegen-units=1" >declare -x RUST_TEST_TASKS="1" >declare -x RUST_TEST_THREADS="1" >declare -x S="/var/tmp/portage/sci-libs/gdal-3.2.2/work/gdal-3.2.2" >declare -x SANDBOX_DEBUG="0" >declare -x SANDBOX_DENY="" >declare -x SANDBOX_PREDICT="/var/tmp/portage/sci-libs/gdal-3.2.2/homedir:/dev/crypto:/var/cache/man:/dev/random:/proc/self/coredump_filter:/var/cache/fontconfig" >declare -x SANDBOX_READ="/:/var/tmp/portage" >declare -x SANDBOX_VERBOSE="1" >declare -x SANDBOX_WRITE=":/dev/console:/dev/fd:/dev/full:/dev/null:/dev/ptmx:/dev/pts/:/dev/pty:/dev/shm:/dev/tts:/dev/tty:/dev/vc/:/dev/zero:/proc/self/fd:/tmp/:/usr/lib/cf:/usr/lib/conftest:/usr/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/tmp/cf:/usr/tmp/conftest:/var/tmp/:/var/tmp/portage:/var/tmp/portage/sci-libs/gdal-3.2.2/homedir/.bash_history" >declare -x SANE_BACKENDS="" >declare -x SCHEME_LIBRARY_PATH="/usr/share/slib/" >declare -x SHELL="/bin/bash" >declare -x SLOT="0/3.2" >declare -i SRANDOM="3593112173" >declare -- SRC_PREP="no" >declare SRC_URI="https://download.osgeo.org/gdal/3.2.2/gdal-3.2.2.tar.gz" >declare -x SYMLINK_LIB="no" >declare -x TERMINFO="/etc/terminfo" >declare -x TWISTED_DISABLE_WRITING_OF_PLUGIN_CACHE="1" >declare -x USE="abi_x86_64 amd64 aux-xml cpu_flags_x86_avx cpu_flags_x86_sse cpu_flags_x86_ssse3 elibc_glibc kernel_linux mysql python_targets_python3_8 userland_GNU" >declare -x USERLAND="GNU" >declare -x USE_EXPAND_IMPLICIT="ARCH ELIBC KERNEL USERLAND" >declare -x USE_EXPAND_UNPREFIXED="ARCH" >declare -x USE_EXPAND_VALUES_ARCH="alpha amd64 amd64-fbsd amd64-linux arm arm64 arm64-macos hppa ia64 m68k mips ppc ppc64 ppc64-linux ppc-macos riscv s390 sparc sparc64-solaris sparc-solaris x64-cygwin x64-macos x64-solaris x64-winnt x86 x86-fbsd x86-linux 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 UWSGI_PLUGINS="" >declare -x VIDEO_CARDS="" >declare -x VOICEMAIL_STORAGE="" >declare -x WANT_AUTOCONF="2.5" >declare -x WANT_AUTOMAKE="1.16" >declare -x WANT_JAVA_CONFIG="2" >declare -x WANT_LIBTOOL="latest" >declare -x XERCESC_NLS_HOME="/usr/share/xerces-c/msg" >declare -x XFCE_PLUGINS="" >declare -x XTABLES_ADDONS="" >declare -- _AUTOTOOLS_ECLASS="1" >declare -- _DISTUTILS_R1="1" >declare -- _EUTILS_ECLASS="1" >declare -x _E_DESTTREE_="/usr" >declare -x _E_DOCDESTTREE_="" >declare -x _E_EXEDESTTREE_="" >declare -x _E_INSDESTTREE_="" >declare -- _FLAG_O_MATIC_ECLASS="1" >declare -- _L10N_ECLASS="1" >declare -a _LATEST_AUTOMAKE=([0]="1.16.2-r1:1.16") >declare -- _LIBTOOL_ECLASS="1" >declare -- _MULTIBUILD="1" >declare -- _MULTILIB_ECLASS="1" >declare -- _MULTIPROCESSING_ECLASS="1" >declare -a _PYTHON_ALL_IMPLS=([0]="pypy3" [1]="python3_7" [2]="python3_8" [3]="python3_9") >declare -a _PYTHON_HISTORICAL_IMPLS=([0]="jython2_7" [1]="pypy" [2]="pypy1_8" [3]="pypy1_9" [4]="pypy2_0" [5]="python2_5" [6]="python2_6" [7]="python2_7" [8]="python3_1" [9]="python3_2" [10]="python3_3" [11]="python3_4" [12]="python3_5" [13]="python3_6") >declare -- _PYTHON_R1="1" >declare -a _PYTHON_SUPPORTED_IMPLS=([0]="python3_7" [1]="python3_8" [2]="python3_9") >declare -a _PYTHON_UNSUPPORTED_IMPLS=([0]="pypy3") >declare -- _PYTHON_UTILS_R1="1" >declare -- _TOOLCHAIN_FUNCS_ECLASS="1" >declare -- _WRAPPER_ECLASS="1" >declare -- __AUTOTOOLS_AUTO_DEPEND="yes" >declare -- _libtool_atom=">=sys-devel/libtool-2.4" >declare -- perlinfo_done="false" >declare -- pm_echovar="" >PYTHON () >{ > die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#.24.28PYTHON.29.2C_.24.7BEPYTHON.7D" >} >__eapi6_src_install () >{ > if [[ -f Makefile || -f GNUmakefile || -f makefile ]]; then > emake DESTDIR="${D}" install; > fi; > einstalldocs >} >__eapi6_src_prepare () >{ > if ___is_indexed_array_var PATCHES; then > [[ ${#PATCHES[@]} -gt 0 ]] && eapply "${PATCHES[@]}"; > else > if [[ -n ${PATCHES} ]]; then > eapply ${PATCHES}; > fi; > fi; > eapply_user >} >__eapi7_ver_compare () >{ > local va=${1} vb=${2} a an al as ar b bn bl bs br re LC_ALL=C; > re="^([0-9]+(\.[0-9]+)*)([a-z]?)((_(alpha|beta|pre|rc|p)[0-9]*)*)(-r[0-9]+)?$"; > [[ ${va} =~ ${re} ]] || die "${FUNCNAME}: invalid version: ${va}"; > an=${BASH_REMATCH[1]}; > al=${BASH_REMATCH[3]}; > as=${BASH_REMATCH[4]}; > ar=${BASH_REMATCH[7]}; > [[ ${vb} =~ ${re} ]] || die "${FUNCNAME}: invalid version: ${vb}"; > bn=${BASH_REMATCH[1]}; > bl=${BASH_REMATCH[3]}; > bs=${BASH_REMATCH[4]}; > br=${BASH_REMATCH[7]}; > __eapi7_ver_compare_int "${an%%.*}" "${bn%%.*}" || return; > while [[ ${an} == *.* && ${bn} == *.* ]]; do > an=${an#*.}; > bn=${bn#*.}; > a=${an%%.*}; > b=${bn%%.*}; > if [[ ${a} == 0* || ${b} == 0* ]]; then > [[ ${a} =~ 0+$ ]] && a=${a%"${BASH_REMATCH[0]}"}; > [[ ${b} =~ 0+$ ]] && b=${b%"${BASH_REMATCH[0]}"}; > [[ ${a} > ${b} ]] && return 3; > [[ ${a} < ${b} ]] && return 1; > else > __eapi7_ver_compare_int "${a}" "${b}" || return; > fi; > done; > [[ ${an} == *.* ]] && return 3; > [[ ${bn} == *.* ]] && return 1; > [[ ${al} > ${bl} ]] && return 3; > [[ ${al} < ${bl} ]] && return 1; > as=${as#_}${as:+_}; > bs=${bs#_}${bs:+_}; > while [[ -n ${as} && -n ${bs} ]]; do > a=${as%%_*}; > b=${bs%%_*}; > if [[ ${a%%[0-9]*} == "${b%%[0-9]*}" ]]; then > __eapi7_ver_compare_int "${a##*[a-z]}" "${b##*[a-z]}" || return; > else > [[ ${a%%[0-9]*} == p ]] && return 3; > [[ ${b%%[0-9]*} == p ]] && return 1; > [[ ${a} > ${b} ]] && return 3 || return 1; > fi; > as=${as#*_}; > bs=${bs#*_}; > done; > if [[ -n ${as} ]]; then > [[ ${as} == p[_0-9]* ]] && return 3 || return 1; > else > if [[ -n ${bs} ]]; then > [[ ${bs} == p[_0-9]* ]] && return 1 || return 3; > fi; > fi; > __eapi7_ver_compare_int "${ar#-r}" "${br#-r}" || return; > return 2 >} >__eapi7_ver_compare_int () >{ > local a=$1 b=$2 d=$(( ${#1}-${#2} )); > if [[ ${d} -gt 0 ]]; then > printf -v b "%0${d}d%s" 0 "${b}"; > else > if [[ ${d} -lt 0 ]]; then > printf -v a "%0$(( -d ))d%s" 0 "${a}"; > fi; > fi; > [[ ${a} > ${b} ]] && return 3; > [[ ${a} == "${b}" ]] >} >__eapi7_ver_parse_range () >{ > local range=${1}; > local max=${2}; > [[ ${range} == [0-9]* ]] || die "${FUNCNAME}: range must start with a number"; > start=${range%-*}; > [[ ${range} == *-* ]] && end=${range#*-} || end=${start}; > if [[ -n ${end} ]]; then > [[ ${start} -le ${end} ]] || die "${FUNCNAME}: end of range must be >= start"; > [[ ${end} -le ${max} ]] || end=${max}; > else > end=${max}; > fi >} >__eapi7_ver_split () >{ > local v=${1} LC_ALL=C; > comp=(); > local s c; > while [[ -n ${v} ]]; do > s=${v%%[a-zA-Z0-9]*}; > v=${v:${#s}}; > [[ ${v} == [0-9]* ]] && c=${v%%[^0-9]*} || c=${v%%[^a-zA-Z]*}; > v=${v:${#c}}; > comp+=("${s}" "${c}"); > done >} >_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} >} >_bash-completion-r1_get_bashcompdir () >{ > debug-print-function ${FUNCNAME} "${@}"; > _bash-completion-r1_get_bashdir completionsdir /usr/share/bash-completion/completions >} >_bash-completion-r1_get_bashdir () >{ > debug-print-function ${FUNCNAME} "${@}"; > if $(tc-getPKG_CONFIG) --exists bash-completion &> /dev/null; then > local path; > path=$($(tc-getPKG_CONFIG) --variable="${1}" bash-completion) || die; > echo "${path#${EPREFIX}}"; > else > echo "${2}"; > fi >} >_bash-completion-r1_get_bashhelpersdir () >{ > debug-print-function ${FUNCNAME} "${@}"; > _bash-completion-r1_get_bashdir helpersdir /usr/share/bash-completion/helpers >} >_clang_fullversion () >{ > local ver="$1"; > shift; > set -- $($(tc-getCPP "$@") -E -P - <<<"__clang_major__ __clang_minor__ __clang_patchlevel__"); > eval echo "$ver" >} >_distutils-r1_check_namespace_pth () >{ > local f pth=(); > while IFS= read -r -d '' f; do > pth+=("${f}"); > done < <(find "${ED%/}" -name '*-nspkg.pth' -print0); > if [[ -n ${pth[@]} ]]; then > ewarn "The following *-nspkg.pth files were found installed:"; > ewarn; > for f in "${pth[@]}"; > do > ewarn " ${f#${ED%/}}"; > done; > ewarn; > ewarn "The presence of those files may break namespaces in Python 3.5+. Please"; > ewarn "read our documentation on reliable handling of namespaces and update"; > ewarn "the ebuild accordingly:"; > ewarn; > ewarn " https://wiki.gentoo.org/wiki/Project:Python/Namespace_packages"; > fi >} >_distutils-r1_clean_egg_info () >{ > rm -rf "${BUILD_DIR}"/lib/*.egg-info || die >} >_distutils-r1_copy_egg_info () >{ > mkdir -p "${BUILD_DIR}" || die; > find -name '*.egg-info' -type d -exec cp -R -p {} "${BUILD_DIR}"/ ';' || die >} >_distutils-r1_create_setup_cfg () >{ > cat > "${HOME}"/.pydistutils.cfg <<-_EOF_ || >[build] >build-base = ${BUILD_DIR} > ># using a single directory for them helps us export ># ${PYTHONPATH} and ebuilds find the sources independently ># of whether the package installs extensions or not ># ># note: due to some packages (wxpython) relying on separate ># platlib & purelib dirs, we do not set --build-lib (which ># can not be overridden with --build-*lib) >build-platlib = %(build-base)s/lib >build-purelib = %(build-base)s/lib > ># make the ebuild writer lives easier >build-scripts = %(build-base)s/scripts > ># this is needed by distutils_install_for_testing since ># setuptools like to create .egg files for install --home. >[bdist_egg] >dist-dir = ${BUILD_DIR}/dist >_EOF_ > die > if [[ ${EBUILD_PHASE} == install ]]; then > cat >> "${HOME}"/.pydistutils.cfg <<-_EOF_ || > ># installation paths -- allow calling extra install targets ># without the default 'install' >[install] >compile = True >optimize = 2 >root = ${D%/} >_EOF_ > die > if [[ ! -n ${DISTUTILS_SINGLE_IMPL} ]]; then > cat >> "${HOME}"/.pydistutils.cfg <<-_EOF_ || >install-scripts = $(python_get_scriptdir) >_EOF_ > die; > fi; > fi >} >_distutils-r1_disable_ez_setup () >{ > local stub="def use_setuptools(*args, **kwargs): pass"; > if [[ -f ez_setup.py ]]; then > echo "${stub}" > ez_setup.py || die; > fi; > if [[ -f distribute_setup.py ]]; then > echo "${stub}" > distribute_setup.py || die; > fi >} >_distutils-r1_handle_pyproject_toml () >{ > if [[ ! -f setup.py && -f pyproject.toml ]]; then > if [[ ${DISTUTILS_USE_SETUPTOOLS} != pyproject.toml ]]; then > eerror "No setup.py found but pyproject.toml is present. In order to enable"; > eerror "pyproject.toml support in distutils-r1, set:"; > eerror " DISTUTILS_USE_SETUPTOOLS=pyproject.toml"; > die "No setup.py found and DISTUTILS_USE_SETUPTOOLS!=pyproject.toml"; > fi; > fi >} >_distutils-r1_run_common_phase () >{ > local DISTUTILS_ORIG_BUILD_DIR=${BUILD_DIR}; > if [[ -n ${DISTUTILS_SINGLE_IMPL} ]]; then > _distutils-r1_run_foreach_impl "${@}"; > else > local -x EPYTHON PYTHON; > local -x PATH=${PATH} PKG_CONFIG_PATH=${PKG_CONFIG_PATH}; > python_setup "${DISTUTILS_ALL_SUBPHASE_IMPLS[@]}"; > local MULTIBUILD_VARIANTS=("${EPYTHON/./_}"); > local _DISTUTILS_INITIAL_CWD=${PWD}; > multibuild_foreach_variant distutils-r1_run_phase "${@}"; > fi >} >_distutils-r1_run_foreach_impl () >{ > debug-print-function ${FUNCNAME} "${@}"; > local _DISTUTILS_INITIAL_CWD=${PWD}; > set -- distutils-r1_run_phase "${@}"; > if [[ ! -n ${DISTUTILS_SINGLE_IMPL} ]]; then > python_foreach_impl "${@}"; > else > if [[ ! -n ${EPYTHON} ]]; then > die "EPYTHON unset, python-single-r1_pkg_setup not called?!"; > fi; > local BUILD_DIR=${BUILD_DIR:-${S}}; > BUILD_DIR=${BUILD_DIR%%/}_${EPYTHON}; > "${@}"; > fi >} >_distutils-r1_wrap_scripts () >{ > debug-print-function ${FUNCNAME} "${@}"; > [[ ${#} -eq 2 ]] || die "usage: ${FUNCNAME} <path> <bindir>"; > local path=${1}; > local bindir=${2}; > local scriptdir=$(python_get_scriptdir); > local f python_files=() non_python_files=(); > if [[ -d ${path}${scriptdir} ]]; then > for f in "${path}${scriptdir}"/*; > do > [[ -d ${f} ]] && die "Unexpected directory: ${f}"; > debug-print "${FUNCNAME}: found executable at ${f#${path}/}"; > local shebang; > read -r shebang < "${f}"; > if [[ ${shebang} == '#!'*${EPYTHON}* ]]; then > debug-print "${FUNCNAME}: matching shebang: ${shebang}"; > python_files+=("${f}"); > else > debug-print "${FUNCNAME}: non-matching shebang: ${shebang}"; > non_python_files+=("${f}"); > fi; > mkdir -p "${path}${bindir}" || die; > done; > for f in "${python_files[@]}"; > do > local basename=${f##*/}; > debug-print "${FUNCNAME}: installing wrapper at ${bindir}/${basename}"; > _python_ln_rel "${path}${EPREFIX}"/usr/lib/python-exec/python-exec2 "${path}${bindir}/${basename}" || die; > done; > for f in "${non_python_files[@]}"; > do > local basename=${f##*/}; > debug-print "${FUNCNAME}: moving ${f#${path}/} to ${bindir}/${basename}"; > mv "${f}" "${path}${bindir}/${basename}" || die; > done; > fi >} >_eapply_patch () >{ > local f=${1}; > local prefix=${2}; > ebegin "${prefix:-Applying }${f##*/}"; > local all_opts=(-p1 -f -g0 --no-backup-if-mismatch "${patch_options[@]}"); > if ${patch_cmd} "${all_opts[@]}" --dry-run -s -F0 < "${f}" &> /dev/null; then > all_opts+=(-s -F0); > fi; > ${patch_cmd} "${all_opts[@]}" < "${f}"; > failed=${?}; > if ! eend "${failed}"; then > __helpers_die "patch -p1 ${patch_options[*]} failed with ${f}"; > fi >} >_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} "$@" >} >_filter-hardened () >{ > local f; > for f in "$@"; > do > case "${f}" in > -fPIC | -fpic | -fPIE | -fpie | -Wl,pie | -pie) > gcc-specs-pie || continue; > if ! is-flagq -nopie && ! is-flagq -no-pie; then > if test-flags -nopie > /dev/null; then > append-flags -nopie; > else > append-flags -no-pie; > fi; > fi > ;; > -fstack-protector) > gcc-specs-ssp || continue; > is-flagq -fno-stack-protector || append-flags $(test-flags -fno-stack-protector) > ;; > -fstack-protector-all) > gcc-specs-ssp-to-all || continue; > is-flagq -fno-stack-protector-all || append-flags $(test-flags -fno-stack-protector-all) > ;; > -fno-strict-overflow) > gcc-specs-nostrict || continue; > is-flagq -fstrict-overflow || append-flags $(test-flags -fstrict-overflow) > ;; > esac; > done >} >_filter-var () >{ > local f x var=$1 new=(); > shift; > for f in ${!var}; > do > for x in "$@"; > do > [[ ${f} == ${x} ]] && continue 2; > done; > new+=("${f}"); > done; > export ${var}="${new[*]}" >} >_gcc-install-dir () >{ > echo "$(LC_ALL=C $(tc-getCC) -print-search-dirs 2> /dev/null | awk '$1=="install:" {print $2}')" >} >_gcc-specs-directive_raw () >{ > local cc=$(tc-getCC); > local specfiles=$(LC_ALL=C ${cc} -v 2>&1 | awk '$1=="Reading" {print $NF}'); > ${cc} -dumpspecs 2> /dev/null | cat - ${specfiles} | awk -v directive=$1 'BEGIN { pspec=""; spec=""; outside=1 } >$1=="*"directive":" { pspec=spec; spec=""; outside=0; next } > outside || NF==0 || ( substr($1,1,1)=="*" && substr($1,length($1),1)==":" ) { outside=1; next } > spec=="" && substr($0,1,1)=="+" { spec=pspec " " substr($0,2); next } > { spec=spec $0 } >END { print spec }'; > return 0 >} >_gcc-specs-exists () >{ > [[ -f $(_gcc-install-dir)/$1 ]] >} >_gcc_fullversion () >{ > local ver="$1"; > shift; > set -- $($(tc-getCPP "$@") -E -P - <<<"__GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__"); > eval echo "$ver" >} >_is_flagq () >{ > local x var="$1[*]"; > for x in ${!var}; > do > [[ ${x} == $2 ]] && return 0; > done; > return 1 >} >_python_check_dead_variables () >{ > local v; > for v in PYTHON_DEPEND PYTHON_USE_WITH{,_OR,_OPT} {RESTRICT,SUPPORT}_PYTHON_ABIS; > do > if [[ -n ${!v} ]]; then > die "${v} is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#Ebuild_head"; > fi; > done; > for v in PYTHON_{CPPFLAGS,CFLAGS,CXXFLAGS,LDFLAGS}; > do > if [[ -n ${!v} ]]; then > die "${v} is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#PYTHON_CFLAGS"; > fi; > done; > for v in PYTHON_TESTS_RESTRICTED_ABIS PYTHON_EXPORT_PHASE_FUNCTIONS PYTHON_VERSIONED_{SCRIPTS,EXECUTABLES} PYTHON_NONVERSIONED_EXECUTABLES; > do > if [[ -n ${!v} ]]; then > die "${v} is invalid for python-r1 suite"; > fi; > done; > for v in DISTUTILS_USE_SEPARATE_SOURCE_DIRECTORIES DISTUTILS_SETUP_FILES DISTUTILS_GLOBAL_OPTIONS DISTUTILS_SRC_TEST PYTHON_MODNAME; > do > if [[ -n ${!v} ]]; then > die "${v} is invalid for distutils-r1, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#${v}"; > fi; > done; > if [[ -n ${DISTUTILS_DISABLE_TEST_DEPENDENCY} ]]; then > die "${v} is invalid for distutils-r1, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#DISTUTILS_SRC_TEST"; > fi; > for v in PYTHON_BDEPEND PYTHON_MULTIPLE_ABIS PYTHON_ABI_TYPE PYTHON_RESTRICTED_ABIS PYTHON_TESTS_FAILURES_TOLERANT_ABIS PYTHON_CFFI_MODULES_GENERATION_COMMANDS; > do > if [[ -n ${!v} ]]; then > die "${v} is invalid for python-r1 suite"; > fi; > done >} >_python_check_locale_sanity () >{ > local -x LC_ALL=${1}; > local IFS=; > local lc=({a..z}); > local uc=({A..Z}); > local input="${lc[*]}${uc[*]}"; > local output=$(tr '[:lower:][:upper:]' '[:upper:][:lower:]' <<<"${input}"); > [[ ${output} == "${uc[*]}${lc[*]}" ]] >} >_python_export () >{ > debug-print-function ${FUNCNAME} "${@}"; > local impl var; > case "${1}" in > python* | jython*) > impl=${1/_/.}; > shift > ;; > pypy | pypy3) > impl=${1}; > shift > ;; > *) > impl=${EPYTHON}; > if [[ -z ${impl} ]]; then > die "_python_export called without a python implementation and EPYTHON is unset"; > fi > ;; > esac; > debug-print "${FUNCNAME}: implementation: ${impl}"; > for var in "$@"; > do > case "${var}" in > EPYTHON) > export EPYTHON=${impl}; > debug-print "${FUNCNAME}: EPYTHON = ${EPYTHON}" > ;; > PYTHON) > export PYTHON=${EPREFIX}/usr/bin/${impl}; > debug-print "${FUNCNAME}: PYTHON = ${PYTHON}" > ;; > PYTHON_SITEDIR) > [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it"; > PYTHON_SITEDIR=$("${PYTHON}" -c 'import distutils.sysconfig; print(distutils.sysconfig.get_python_lib())') || die; > export PYTHON_SITEDIR; > debug-print "${FUNCNAME}: PYTHON_SITEDIR = ${PYTHON_SITEDIR}" > ;; > PYTHON_INCLUDEDIR) > [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it"; > PYTHON_INCLUDEDIR=$("${PYTHON}" -c 'import distutils.sysconfig; print(distutils.sysconfig.get_python_inc())') || die; > export PYTHON_INCLUDEDIR; > debug-print "${FUNCNAME}: PYTHON_INCLUDEDIR = ${PYTHON_INCLUDEDIR}"; > if [[ ! -d ${PYTHON_INCLUDEDIR} ]]; then > die "${impl} does not install any header files!"; > fi > ;; > PYTHON_LIBPATH) > [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it"; > PYTHON_LIBPATH=$("${PYTHON}" -c 'import os.path, sysconfig; print(os.path.join(sysconfig.get_config_var("LIBDIR"), sysconfig.get_config_var("LDLIBRARY")) if sysconfig.get_config_var("LDLIBRARY") else "")') || die; > export PYTHON_LIBPATH; > debug-print "${FUNCNAME}: PYTHON_LIBPATH = ${PYTHON_LIBPATH}"; > if [[ ! -n ${PYTHON_LIBPATH} ]]; then > die "${impl} lacks a (usable) dynamic library"; > fi > ;; > PYTHON_CFLAGS) > local val; > case "${impl}" in > python*) > val=$($(tc-getPKG_CONFIG) --cflags ${impl/n/n-}) || die > ;; > *) > die "${impl}: obtaining ${var} not supported" > ;; > esac; > export PYTHON_CFLAGS=${val}; > debug-print "${FUNCNAME}: PYTHON_CFLAGS = ${PYTHON_CFLAGS}" > ;; > PYTHON_LIBS) > local val; > case "${impl}" in > python2* | python3.6 | python3.7*) > val=$($(tc-getPKG_CONFIG) --libs ${impl/n/n-}) || die > ;; > python*) > val=$($(tc-getPKG_CONFIG) --libs ${impl/n/n-}-embed) || die > ;; > *) > die "${impl}: obtaining ${var} not supported" > ;; > esac; > export PYTHON_LIBS=${val}; > debug-print "${FUNCNAME}: PYTHON_LIBS = ${PYTHON_LIBS}" > ;; > PYTHON_CONFIG) > local flags val; > case "${impl}" in > python*) > [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it"; > flags=$("${PYTHON}" -c 'import sysconfig; print(sysconfig.get_config_var("ABIFLAGS") or "")') || die; > val=${PYTHON}${flags}-config > ;; > *) > die "${impl}: obtaining ${var} not supported" > ;; > esac; > export PYTHON_CONFIG=${val}; > debug-print "${FUNCNAME}: PYTHON_CONFIG = ${PYTHON_CONFIG}" > ;; > PYTHON_PKG_DEP) > local d; > case ${impl} in > python2.7) > PYTHON_PKG_DEP='>=dev-lang/python-2.7.5-r2:2.7' > ;; > python*) > PYTHON_PKG_DEP="dev-lang/python:${impl#python}" > ;; > pypy) > PYTHON_PKG_DEP='>=dev-python/pypy-7.3.0:0=' > ;; > pypy3) > PYTHON_PKG_DEP='>=dev-python/pypy3-7.3.0:0=' > ;; > *) > die "Invalid implementation: ${impl}" > ;; > esac; > if [[ -n ${PYTHON_REQ_USE} ]]; then > PYTHON_PKG_DEP+=[${PYTHON_REQ_USE}]; > fi; > export PYTHON_PKG_DEP; > debug-print "${FUNCNAME}: PYTHON_PKG_DEP = ${PYTHON_PKG_DEP}" > ;; > PYTHON_SCRIPTDIR) > local dir; > export PYTHON_SCRIPTDIR=${EPREFIX}/usr/lib/python-exec/${impl}; > debug-print "${FUNCNAME}: PYTHON_SCRIPTDIR = ${PYTHON_SCRIPTDIR}" > ;; > *) > die "_python_export: unknown variable ${var}" > ;; > esac; > done >} >_python_gen_usedep () >{ > debug-print-function ${FUNCNAME} "${@}"; > local impl matches=(); > _python_verify_patterns "${@}"; > for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}"; > do > if _python_impl_matches "${impl}" "${@}"; then > matches+=("python_targets_${impl}(-)?" "-python_single_target_${impl}(-)"); > fi; > done; > [[ -n ${matches[@]} ]] || die "No supported implementations match python_gen_usedep patterns: ${@}"; > local out=${matches[@]}; > echo "${out// /,}" >} >_python_impl_matches () >{ > [[ ${#} -ge 1 ]] || die "${FUNCNAME}: takes at least 1 parameter"; > [[ ${#} -eq 1 ]] && return 0; > local impl=${1} pattern; > shift; > for pattern in "$@"; > do > if [[ ${pattern} == -2 ]]; then > python_is_python3 "${impl}" || return 0; > else > if [[ ${pattern} == -3 ]]; then > python_is_python3 "${impl}" && return 0; > return; > else > if [[ ${impl/./_} == ${pattern/./_} ]]; then > return 0; > fi; > fi; > fi; > done; > return 1 >} >_python_ln_rel () >{ > debug-print-function ${FUNCNAME} "${@}"; > local target=${1}; > local symname=${2}; > local tgpath=${target%/*}/; > local sympath=${symname%/*}/; > local rel_target=; > while [[ -n ${sympath} ]]; do > local tgseg= symseg=; > while [[ ! -n ${tgseg} && -n ${tgpath} ]]; do > tgseg=${tgpath%%/*}; > tgpath=${tgpath#${tgseg}/}; > done; > while [[ ! -n ${symseg} && -n ${sympath} ]]; do > symseg=${sympath%%/*}; > sympath=${sympath#${symseg}/}; > done; > if [[ ${tgseg} != ${symseg} ]]; then > rel_target=../${rel_target}${tgseg:+${tgseg}/}; > fi; > done; > rel_target+=${tgpath}${target##*/}; > debug-print "${FUNCNAME}: ${symname} -> ${target}"; > debug-print "${FUNCNAME}: rel_target = ${rel_target}"; > ln -fs "${rel_target}" "${symname}" >} >_python_multibuild_wrapper () >{ > debug-print-function ${FUNCNAME} "${@}"; > local -x EPYTHON PYTHON; > local -x PATH=${PATH} PKG_CONFIG_PATH=${PKG_CONFIG_PATH}; > _python_export "${MULTIBUILD_VARIANT}" EPYTHON PYTHON; > _python_wrapper_setup; > "${@}" >} >_python_obtain_impls () >{ > _python_validate_useflags; > if [[ -n ${PYTHON_COMPAT_OVERRIDE} ]]; then > MULTIBUILD_VARIANTS=(${PYTHON_COMPAT_OVERRIDE}); > return; > fi; > MULTIBUILD_VARIANTS=(); > local impl; > for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}"; > do > has "${impl}" "${PYTHON_COMPAT[@]}" && use "python_targets_${impl}" && MULTIBUILD_VARIANTS+=("${impl}"); > done >} >_python_set_impls () >{ > local i; > if ! declare -p PYTHON_COMPAT &> /dev/null; then > die 'PYTHON_COMPAT not declared.'; > fi; > if [[ $(declare -p PYTHON_COMPAT) != "declare -a"* ]]; then > die 'PYTHON_COMPAT must be an array.'; > fi; > if [[ ! -n ${PYTHON_COMPAT_NO_STRICT} ]]; then > for i in "${PYTHON_COMPAT[@]}"; > do > case ${i} in > jython2_7 | pypy | pypy1_[89] | pypy2_0 | pypy3 | python2_[5-7] | python3_[1-9]) > > ;; > *) > if has "${i}" "${_PYTHON_ALL_IMPLS[@]}" "${_PYTHON_HISTORICAL_IMPLS[@]}"; then > die "Mis-synced patterns in _python_set_impls: missing ${i}"; > else > die "Invalid implementation in PYTHON_COMPAT: ${i}"; > fi > ;; > esac; > done; > fi; > local supp=() unsupp=(); > for i in "${_PYTHON_ALL_IMPLS[@]}"; > do > if has "${i}" "${PYTHON_COMPAT[@]}"; then > supp+=("${i}"); > else > unsupp+=("${i}"); > fi; > done; > if [[ ! -n ${supp[@]} ]]; then > if [[ -n ${_PYTHON_ALLOW_PY27} ]] && has python2_7 "${PYTHON_COMPAT[@]}"; then > supp+=(python2_7); > else > die "No supported implementation in PYTHON_COMPAT."; > fi; > fi; > if [[ -n ${_PYTHON_SUPPORTED_IMPLS[@]} ]]; then > if [[ ${_PYTHON_SUPPORTED_IMPLS[@]} != ${supp[@]} ]]; then > eerror "Supported impls (PYTHON_COMPAT) changed between inherits!"; > eerror "Before: ${_PYTHON_SUPPORTED_IMPLS[*]}"; > eerror "Now : ${supp[*]}"; > die "_PYTHON_SUPPORTED_IMPLS integrity check failed"; > fi; > if [[ ${_PYTHON_UNSUPPORTED_IMPLS[@]} != ${unsupp[@]} ]]; then > eerror "Unsupported impls changed between inherits!"; > eerror "Before: ${_PYTHON_UNSUPPORTED_IMPLS[*]}"; > eerror "Now : ${unsupp[*]}"; > die "_PYTHON_UNSUPPORTED_IMPLS integrity check failed"; > fi; > else > _PYTHON_SUPPORTED_IMPLS=("${supp[@]}"); > _PYTHON_UNSUPPORTED_IMPLS=("${unsupp[@]}"); > readonly _PYTHON_SUPPORTED_IMPLS _PYTHON_UNSUPPORTED_IMPLS; > fi >} >_python_validate_useflags () >{ > debug-print-function ${FUNCNAME} "${@}"; > if [[ -n ${PYTHON_COMPAT_OVERRIDE} ]]; then > if [[ ! -n ${_PYTHON_COMPAT_OVERRIDE_WARNED} ]]; then > ewarn "WARNING: PYTHON_COMPAT_OVERRIDE in effect. The following Python"; > ewarn "implementations will be enabled:"; > ewarn; > ewarn " ${PYTHON_COMPAT_OVERRIDE}"; > ewarn; > ewarn "Dependencies won't be satisfied, and PYTHON_TARGETS will be ignored."; > _PYTHON_COMPAT_OVERRIDE_WARNED=1; > fi; > return; > fi; > local i; > for i in "${_PYTHON_SUPPORTED_IMPLS[@]}"; > do > use "python_targets_${i}" && return 0; > done; > eerror "No Python implementation selected for the build. Please add one"; > eerror "of the following values to your PYTHON_TARGETS (in make.conf):"; > eerror; > eerror "${PYTHON_COMPAT[@]}"; > echo; > die "No supported Python implementation in PYTHON_TARGETS." >} >_python_verify_patterns () >{ > debug-print-function ${FUNCNAME} "${@}"; > local impl pattern; > for pattern in "$@"; > do > [[ ${pattern} == -[23] ]] && continue; > for impl in "${_PYTHON_ALL_IMPLS[@]}" "${_PYTHON_HISTORICAL_IMPLS[@]}"; > do > [[ ${impl} == ${pattern/./_} ]] && continue 2; > done; > die "Invalid implementation pattern: ${pattern}"; > done >} >_python_wrapper_setup () >{ > debug-print-function ${FUNCNAME} "${@}"; > local workdir=${1:-${T}/${EPYTHON}}; > local impl=${2:-${EPYTHON}}; > [[ -n ${workdir} ]] || die "${FUNCNAME}: no workdir specified."; > [[ -n ${impl} ]] || die "${FUNCNAME}: no impl nor EPYTHON specified."; > if [[ ! -x ${workdir}/bin/python ]]; then > _python_check_dead_variables; > mkdir -p "${workdir}"/{bin,pkgconfig} || die; > rm -f "${workdir}"/bin/python{,2,3}{,-config} || die; > rm -f "${workdir}"/bin/2to3 || die; > rm -f "${workdir}"/pkgconfig/python{2,3}{,-embed}.pc || die; > local EPYTHON PYTHON; > _python_export "${impl}" EPYTHON PYTHON; > local pyver pyother; > if python_is_python3; then > pyver=3; > pyother=2; > else > pyver=2; > pyother=3; > fi; > cat > "${workdir}/bin/python" <<-_EOF_ || >#!/bin/sh >exec "${PYTHON}" "\${@}" >_EOF_ > die > cp "${workdir}/bin/python" "${workdir}/bin/python${pyver}" || die; > chmod +x "${workdir}/bin/python" "${workdir}/bin/python${pyver}" || die; > local nonsupp=("python${pyother}" "python${pyother}-config"); > if [[ ${EPYTHON} == python* ]]; then > cat > "${workdir}/bin/python-config" <<-_EOF_ || >#!/bin/sh >exec "${PYTHON}-config" "\${@}" >_EOF_ > die > cp "${workdir}/bin/python-config" "${workdir}/bin/python${pyver}-config" || die; > chmod +x "${workdir}/bin/python-config" "${workdir}/bin/python${pyver}-config" || die; > ln -s "${PYTHON/python/2to3-}" "${workdir}"/bin/2to3 || die; > ln -s "${EPREFIX}"/usr/$(get_libdir)/pkgconfig/${EPYTHON/n/n-}.pc "${workdir}"/pkgconfig/python${pyver}.pc || die; > if [[ ${EPYTHON} != python[23].[67] ]]; then > ln -s "${EPREFIX}"/usr/$(get_libdir)/pkgconfig/${EPYTHON/n/n-}-embed.pc "${workdir}"/pkgconfig/python${pyver}-embed.pc || die; > fi; > else > nonsupp+=(2to3 python-config "python${pyver}-config"); > fi; > local x; > for x in "${nonsupp[@]}"; > do > cat > "${workdir}"/bin/${x} <<-_EOF_ || >#!/bin/sh >echo "${ECLASS}: ${FUNCNAME}: ${x} is not supported by ${EPYTHON} (PYTHON_COMPAT)" >&2 >exit 127 >_EOF_ > die > chmod +x "${workdir}"/bin/${x} || die; > done; > fi; > if [[ ${PATH##:*} != ${workdir}/bin ]]; then > PATH=${workdir}/bin${PATH:+:${PATH}}; > fi; > if [[ ${PKG_CONFIG_PATH##:*} != ${workdir}/pkgconfig ]]; then > PKG_CONFIG_PATH=${workdir}/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}; > fi; > export PATH PKG_CONFIG_PATH >} >_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}" >} >all-flag-vars () >{ > echo {ADA,C,CPP,CXX,CCAS,F,FC,LD}FLAGS >} >append-cflags () >{ > [[ $# -eq 0 ]] && return 0; > export CFLAGS+=" $*"; > return 0 >} >append-cppflags () >{ > [[ $# -eq 0 ]] && return 0; > export CPPFLAGS+=" $*"; > return 0 >} >append-cxxflags () >{ > [[ $# -eq 0 ]] && return 0; > export CXXFLAGS+=" $*"; > return 0 >} >append-fflags () >{ > [[ $# -eq 0 ]] && return 0; > export FFLAGS+=" $*"; > export FCFLAGS+=" $*"; > return 0 >} >append-flags () >{ > [[ $# -eq 0 ]] && return 0; > case " $* " in > *' '-[DIU]*) > eqawarn 'please use append-cppflags for preprocessor flags' > ;; > *' '-L* | *' '-Wl,*) > eqawarn 'please use append-ldflags for linker flags' > ;; > esac; > append-cflags "$@"; > append-cxxflags "$@"; > append-fflags "$@"; > return 0 >} >append-ldflags () >{ > [[ $# -eq 0 ]] && return 0; > local flag; > for flag in "$@"; > do > [[ ${flag} == -l* ]] && eqawarn "Appending a library link instruction (${flag}); libraries to link to should not be passed through LDFLAGS"; > done; > export LDFLAGS="${LDFLAGS} $*"; > return 0 >} >append-lfs-flags () >{ > [[ $# -ne 0 ]] && die "append-lfs-flags takes no arguments"; > append-cppflags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE >} >append-libs () >{ > [[ $# -eq 0 ]] && return 0; > local flag; > for flag in "$@"; > do > if [[ -z "${flag// }" ]]; then > eqawarn "Appending an empty argument to LIBS is invalid! Skipping."; > continue; > fi; > case $flag in > -[lL]*) > export LIBS="${LIBS} ${flag}" > ;; > -*) > eqawarn "Appending non-library to LIBS (${flag}); Other linker flags should be passed via LDFLAGS"; > export LIBS="${LIBS} ${flag}" > ;; > *) > export LIBS="${LIBS} -l${flag}" > ;; > esac; > done; > return 0 >} >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 > local hv_args=""; > case ${EAPI:-0} in > 5 | 6) > hv_args="--host-root" > ;; > 7) > hv_args="-b" > ;; > esac; > ROOT=/ has_version ${hv_args} "=sys-devel/automake-${pv}*" && export WANT_AUTOMAKE="${pv}" && break; > 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) $(autotools_m4sysdir_include) "${@:2}"; > 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 >} >bashcomp_alias () >{ > debug-print-function ${FUNCNAME} "${@}"; > [[ ${#} -lt 2 ]] && die "Usage: ${FUNCNAME} <basename> <alias>..."; > local base=${1} f; > shift; > for f in "$@"; > do > dosym "${base}" "$(_bash-completion-r1_get_bashcompdir)/${f}" || return; > done >} >build_sphinx () >{ > debug-print-function ${FUNCNAME} "${@}"; > [[ ${#} -eq 1 ]] || die "${FUNCNAME} takes 1 arg: <directory>"; > local dir=${1}; > sed -i -e 's:^intersphinx_mapping:disabled_&:' "${dir}"/conf.py || die; > sphinx-build -b html -d "${dir}"/_build/doctrees "${dir}" "${dir}"/_build/html || die; > HTML_DOCS+=("${dir}/_build/html/.") >} >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" >} >distutils-r1_python_compile () >{ > debug-print-function ${FUNCNAME} "${@}"; > _distutils-r1_copy_egg_info; > local jobs=$(makeopts_jobs "${MAKEOPTS}" INF); > if [[ ${jobs} == INF ]]; then > local nproc=$(get_nproc); > jobs=$(( nproc + 1 )); > fi; > esetup.py build -j "${jobs}" "${@}" >} >distutils-r1_python_configure () >{ > debug-print-function ${FUNCNAME} "${@}"; > [[ ${EAPI} == [45] ]] || die "${FUNCNAME} is banned in EAPI 6 (it was a no-op)" >} >distutils-r1_python_install () >{ > debug-print-function ${FUNCNAME} "${@}"; > local args=("${@}"); > local -x PYTHONDONTWRITEBYTECODE=; > addpredict "${EPREFIX}/usr/lib/${EPYTHON}"; > addpredict /usr/lib/pypy3.6; > addpredict /usr/lib/pypy3.7; > addpredict /usr/lib/portage/pym; > addpredict /usr/local; > if [[ ! -n ${DISTUTILS_SINGLE_IMPL} ]]; then > local mydistutilsargs=("${mydistutilsargs[@]}"); > local scriptdir=${EPREFIX}/usr/bin; > local arg arg_vars; > [[ -n ${mydistutilsargs[@]} ]] && eval arg_vars+=('mydistutilsargs['{0..$(( ${#mydistutilsargs[@]} - 1 ))}']'); > [[ -n ${args[@]} ]] && eval arg_vars+=('args['{0..$(( ${#args[@]} - 1 ))}']'); > set -- "${arg_vars[@]}"; > while [[ -n ${@} ]]; do > local arg_var=${1}; > shift; > local a=${!arg_var}; > case "${a}" in > --install-scripts=*) > scriptdir=${a#--install-scripts=}; > unset "${arg_var}" > ;; > --install-scripts) > scriptdir=${!1}; > unset "${arg_var}" "${1}"; > shift > ;; > esac; > done; > fi; > local root=${D%/}/_${EPYTHON}; > [[ -n ${DISTUTILS_SINGLE_IMPL} ]] && root=${D%/}; > esetup.py install --skip-build --root="${root}" "${args[@]}"; > local forbidden_package_names=(examples test tests .pytest_cache); > local p; > for p in "${forbidden_package_names[@]}"; > do > if [[ -d ${root}$(python_get_sitedir)/${p} ]]; then > die "Package installs '${p}' package which is forbidden and likely a bug in the build system."; > fi; > done; > local shopt_save=$(shopt -p nullglob); > shopt -s nullglob; > local pypy_dirs=("${root}/usr/$(get_libdir)"/pypy*/share "${root}/usr/lib"/pypy*/share); > ${shopt_save}; > if [[ -n ${pypy_dirs} ]]; then > die "Package installs 'share' in PyPy prefix, see bug #465546."; > fi; > if [[ ! -n ${DISTUTILS_SINGLE_IMPL} ]]; then > _distutils-r1_wrap_scripts "${root}" "${scriptdir}"; > multibuild_merge_root "${root}" "${D%/}"; > fi >} >distutils-r1_python_install_all () >{ > debug-print-function ${FUNCNAME} "${@}"; > einstalldocs; > if declare -p EXAMPLES &> /dev/null; then > [[ ${EAPI} != [45] ]] && die "EXAMPLES are banned in EAPI ${EAPI}"; > ( docinto examples; > dodoc -r "${EXAMPLES[@]}" ); > docompress -x "/usr/share/doc/${PF}/examples"; > fi >} >distutils-r1_python_prepare () >{ > debug-print-function ${FUNCNAME} "${@}"; > [[ ${EAPI} == [45] ]] || die "${FUNCNAME} is banned in EAPI 6 (it was a no-op)" >} >distutils-r1_python_prepare_all () >{ > debug-print-function ${FUNCNAME} "${@}"; > if [[ ! -n ${DISTUTILS_OPTIONAL} ]]; then > if [[ ${EAPI} != [45] ]]; then > default; > else > [[ -n ${PATCHES} ]] && epatch "${PATCHES[@]}"; > epatch_user; > fi; > fi; > if [[ ! -n ${DISTUTILS_IN_SOURCE_BUILD+1} ]]; then > if declare -f python_prepare > /dev/null; then > DISTUTILS_IN_SOURCE_BUILD=1; > fi; > fi; > _distutils-r1_disable_ez_setup; > _distutils-r1_handle_pyproject_toml; > if [[ -n ${DISTUTILS_IN_SOURCE_BUILD} && ! -n ${DISTUTILS_SINGLE_IMPL} ]]; then > python_copy_sources; > fi; > _DISTUTILS_DEFAULT_CALLED=1 >} >distutils-r1_run_phase () >{ > debug-print-function ${FUNCNAME} "${@}"; > if [[ -n ${DISTUTILS_IN_SOURCE_BUILD} ]]; then > if [[ ! -n ${DISTUTILS_SINGLE_IMPL} ]] && has "${EPYTHON/./_}" ${PYTHON_TARGETS}; then > cd "${BUILD_DIR}" || die; > fi; > local BUILD_DIR=${BUILD_DIR}/build; > fi; > local -x PYTHONPATH="${BUILD_DIR}/lib:${PYTHONPATH}"; > local -x PATH=${PATH}; > mkdir -p "${BUILD_DIR}/lib" || die; > local -x AR=${AR} CC=${CC} CPP=${CPP} CXX=${CXX}; > tc-export AR CC CPP CXX; > local ldopts; > case "${CHOST}" in > *-aix*) > ldopts='-shared -Wl,-berok' > ;; > *-darwin*) > ldopts='-bundle -undefined dynamic_lookup' > ;; > *) > ldopts='-shared' > ;; > esac; > local -x LDSHARED="${CC} ${ldopts}" LDCXXSHARED="${CXX} ${ldopts}"; > "${@}"; > cd "${_DISTUTILS_INITIAL_CWD}" || die >} >distutils-r1_src_compile () >{ > debug-print-function ${FUNCNAME} "${@}"; > if declare -f python_compile > /dev/null; then > _distutils-r1_run_foreach_impl python_compile; > else > _distutils-r1_run_foreach_impl distutils-r1_python_compile; > fi; > if declare -f python_compile_all > /dev/null; then > _distutils-r1_run_common_phase python_compile_all; > fi >} >distutils-r1_src_configure () >{ > python_export_utf8_locale; > [[ ${EAPI} == [56] ]] && xdg_environment_reset; > if declare -f python_configure > /dev/null; then > _distutils-r1_run_foreach_impl python_configure; > fi; > if declare -f python_configure_all > /dev/null; then > _distutils-r1_run_common_phase python_configure_all; > fi >} >distutils-r1_src_install () >{ > debug-print-function ${FUNCNAME} "${@}"; > if declare -f python_install > /dev/null; then > _distutils-r1_run_foreach_impl python_install; > else > _distutils-r1_run_foreach_impl distutils-r1_python_install; > fi; > if declare -f python_install_all > /dev/null; then > _distutils-r1_run_common_phase python_install_all; > else > _distutils-r1_run_common_phase distutils-r1_python_install_all; > fi; > _distutils-r1_check_namespace_pth >} >distutils-r1_src_prepare () >{ > debug-print-function ${FUNCNAME} "${@}"; > local _DISTUTILS_DEFAULT_CALLED; > if declare -f python_prepare_all > /dev/null; then > python_prepare_all; > else > distutils-r1_python_prepare_all; > fi; > if [[ ! -n ${_DISTUTILS_DEFAULT_CALLED} ]]; then > local cmd=die; > [[ ${EAPI} == [45] ]] && cmd=eqawarn; > "${cmd}" "QA: python_prepare_all() didn't call distutils-r1_python_prepare_all"; > fi; > if declare -f python_prepare > /dev/null; then > _distutils-r1_run_foreach_impl python_prepare; > fi >} >distutils-r1_src_test () >{ > debug-print-function ${FUNCNAME} "${@}"; > if declare -f python_test > /dev/null; then > _distutils-r1_run_foreach_impl python_test; > _distutils-r1_run_foreach_impl _distutils-r1_clean_egg_info; > fi; > if declare -f python_test_all > /dev/null; then > _distutils-r1_run_common_phase python_test_all; > fi >} >distutils_enable_sphinx () >{ > debug-print-function ${FUNCNAME} "${@}"; > [[ ${#} -ge 1 ]] || die "${FUNCNAME} takes at least one arg: <subdir>"; > _DISTUTILS_SPHINX_SUBDIR=${1}; > shift; > _DISTUTILS_SPHINX_PLUGINS=("${@}"); > local deps autodoc=1 d; > deps="dev-python/sphinx[\${PYTHON_USEDEP}]"; > for d in "$@"; > do > if [[ ${d} == --no-autodoc ]]; then > autodoc=; > else > deps+=" > ${d}[\${PYTHON_USEDEP}]"; > if [[ ! -n ${autodoc} ]]; then > die "${FUNCNAME}: do not pass --no-autodoc if external plugins are used"; > fi; > fi; > done; > if [[ -n ${autodoc} ]]; then > if [[ -n ${DISTUTILS_SINGLE_IMPL} ]]; then > deps="$(python_gen_cond_dep "${deps}")"; > else > deps="$(python_gen_any_dep "${deps}")"; > fi; > function python_check_deps () > { > use doc || return 0; > local p; > for p in dev-python/sphinx "${_DISTUTILS_SPHINX_PLUGINS[@]}"; > do > has_version "${p}[${PYTHON_USEDEP}]" || return 1; > done > }; > else > deps="dev-python/sphinx"; > fi; > function sphinx_compile_all () > { > use doc || return; > local confpy=${_DISTUTILS_SPHINX_SUBDIR}/conf.py; > [[ -f ${confpy} ]] || die "${confpy} not found, distutils_enable_sphinx call wrong"; > if [[ ${_DISTUTILS_SPHINX_PLUGINS[0]} == --no-autodoc ]]; then > if grep -F -q 'sphinx.ext.autodoc' "${confpy}"; then > die "distutils_enable_sphinx: --no-autodoc passed but sphinx.ext.autodoc found in ${confpy}"; > fi; > else > if [[ -z ${_DISTUTILS_SPHINX_PLUGINS[@]} ]]; then > if ! grep -F -q 'sphinx.ext.autodoc' "${confpy}"; then > die "distutils_enable_sphinx: sphinx.ext.autodoc not found in ${confpy}, pass --no-autodoc"; > fi; > fi; > fi; > build_sphinx "${_DISTUTILS_SPHINX_SUBDIR}" > }; > function python_compile_all () > { > sphinx_compile_all > }; > IUSE+=" doc"; > if [[ ${EAPI} == [56] ]]; then > DEPEND+=" doc? ( ${deps} )"; > else > BDEPEND+=" doc? ( ${deps} )"; > fi; > return 0 >} >distutils_enable_tests () >{ > debug-print-function ${FUNCNAME} "${@}"; > local do_install=; > case ${1} in > --install) > do_install=1; > shift > ;; > esac; > [[ ${#} -eq 1 ]] || die "${FUNCNAME} takes exactly one argument: test-runner"; > local test_pkg; > case ${1} in > nose) > test_pkg=">=dev-python/nose-1.3.7-r4"; > if [[ -n ${do_install} ]]; then > function python_test () > { > distutils_install_for_testing --via-root; > nosetests -v || die "Tests fail with ${EPYTHON}" > }; > else > function python_test () > { > nosetests -v || die "Tests fail with ${EPYTHON}" > }; > fi > ;; > pytest) > test_pkg=">=dev-python/pytest-4.5.0"; > if [[ -n ${do_install} ]]; then > function python_test () > { > distutils_install_for_testing --via-root; > epytest > }; > else > function python_test () > { > epytest > }; > fi > ;; > setup.py) > if [[ -n ${do_install} ]]; then > function python_test () > { > distutils_install_for_testing --via-root; > nonfatal esetup.py test --verbose || die "Tests fail with ${EPYTHON}" > }; > else > function python_test () > { > nonfatal esetup.py test --verbose || die "Tests fail with ${EPYTHON}" > }; > fi > ;; > unittest) > if [[ -n ${do_install} ]]; then > function python_test () > { > distutils_install_for_testing --via-root; > "${EPYTHON}" -m unittest discover -v || die "Tests fail with ${EPYTHON}" > }; > else > function python_test () > { > "${EPYTHON}" -m unittest discover -v || die "Tests fail with ${EPYTHON}" > }; > fi > ;; > *) > die "${FUNCNAME}: unsupported argument: ${1}" > ;; > esac; > local test_deps=${RDEPEND}; > if [[ -n ${test_pkg} ]]; then > if [[ ! -n ${DISTUTILS_SINGLE_IMPL} ]]; then > test_deps+=" ${test_pkg}[${PYTHON_USEDEP}]"; > else > test_deps+=" $(python_gen_cond_dep " > ${test_pkg}[\${PYTHON_MULTI_USEDEP}] > ")"; > fi; > fi; > if [[ -n ${test_deps} ]]; then > IUSE+=" test"; > RESTRICT+=" !test? ( test )"; > if [[ ${EAPI} == [56] ]]; then > DEPEND+=" test? ( ${test_deps} )"; > else > BDEPEND+=" test? ( ${test_deps} )"; > fi; > fi; > return 0 >} >distutils_get_intermediate_installation_image () >{ > die "${FUNCNAME}() is invalid for distutils-r1" >} >distutils_install_for_testing () >{ > debug-print-function ${FUNCNAME} "${@}"; > TEST_DIR=${BUILD_DIR}/test; > local bindir=${TEST_DIR}/scripts; > local libdir=${TEST_DIR}/lib; > PATH=${bindir}:${PATH}; > PYTHONPATH=${libdir}:${PYTHONPATH}; > local install_method=root; > case ${1} in > --via-home) > install_method=home; > shift > ;; > --via-root) > install_method=root; > shift > ;; > esac; > local -a add_args; > case ${install_method} in > home) > add_args=(install --home="${TEST_DIR}" --install-lib="${libdir}" --install-scripts="${bindir}"); > mkdir -p "${libdir}" || die > ;; > root) > add_args=(install --root="${TEST_DIR}" --install-lib=lib --install-scripts=scripts) > ;; > esac; > esetup.py "${add_args[@]}" "${@}" >} >distutils_pkg_postinst () >{ > die "${FUNCNAME}() is invalid for distutils-r1, and pkg_postinst is unnecessary" >} >distutils_pkg_postrm () >{ > die "${FUNCNAME}() is invalid for distutils-r1, and pkg_postrm is unnecessary" >} >distutils_src_compile () >{ > die "${FUNCNAME}() is invalid for distutils-r1, you probably want: ${FUNCNAME/_/-r1_}" >} >distutils_src_install () >{ > die "${FUNCNAME}() is invalid for distutils-r1, you probably want: ${FUNCNAME/_/-r1_}" >} >distutils_src_prepare () >{ > die "${FUNCNAME}() is invalid for distutils-r1, you probably want: ${FUNCNAME/_/-r1_}" >} >distutils_src_test () >{ > die "${FUNCNAME}() is invalid for distutils-r1, you probably want: ${FUNCNAME/_/-r1_}" >} >distutils_src_unpack () >{ > die "${FUNCNAME}() is invalid for distutils-r1, and you don't want it in EAPI ${EAPI} anyway" >} >dobashcomp () >{ > debug-print-function ${FUNCNAME} "${@}"; > ( insopts -m 0644; > insinto "$(_bash-completion-r1_get_bashcompdir)"; > doins "${@}" ) >} >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" >} >eapply () >{ > local failed patch_cmd=patch; > local -x LC_COLLATE=POSIX; > type -P gpatch > /dev/null && patch_cmd=gpatch; > function _eapply_patch () > { > local f=${1}; > local prefix=${2}; > ebegin "${prefix:-Applying }${f##*/}"; > local all_opts=(-p1 -f -g0 --no-backup-if-mismatch "${patch_options[@]}"); > if ${patch_cmd} "${all_opts[@]}" --dry-run -s -F0 < "${f}" &> /dev/null; then > all_opts+=(-s -F0); > fi; > ${patch_cmd} "${all_opts[@]}" < "${f}"; > failed=${?}; > if ! eend "${failed}"; then > __helpers_die "patch -p1 ${patch_options[*]} failed with ${f}"; > fi > }; > local patch_options=() files=(); > local i found_doublehyphen; > for ((i = 1; i <= ${#@}; ++i )) > do > if [[ ${@:i:1} == -- ]]; then > patch_options=("${@:1:i-1}"); > files=("${@:i+1}"); > found_doublehyphen=1; > break; > fi; > done; > if [[ -z ${found_doublehyphen} ]]; then > for ((i = 1; i <= ${#@}; ++i )) > do > if [[ ${@:i:1} != -* ]]; then > patch_options=("${@:1:i-1}"); > files=("${@:i}"); > break; > fi; > done; > for i in "${files[@]}"; > do > if [[ ${i} == -* ]]; then > die "eapply: all options must be passed before non-options"; > fi; > done; > fi; > if [[ ${#files[@]} -eq 0 ]]; then > die "eapply: no files specified"; > fi; > local f; > for f in "${files[@]}"; > do > if [[ -d ${f} ]]; then > function _eapply_get_files () > { > local LC_ALL=POSIX; > local prev_shopt=$(shopt -p nullglob); > shopt -s nullglob; > local f; > for f in "${1}"/*; > do > if [[ ${f} == *.diff || ${f} == *.patch ]]; then > files+=("${f}"); > fi; > done; > ${prev_shopt} > }; > local files=(); > _eapply_get_files "${f}"; > [[ ${#files[@]} -eq 0 ]] && die "No *.{patch,diff} files in directory ${f}"; > einfo "Applying patches from ${f} ..."; > local f2; > for f2 in "${files[@]}"; > do > _eapply_patch "${f2}" ' '; > [[ ${failed} -ne 0 ]] && return "${failed}"; > done; > else > _eapply_patch "${f}"; > [[ ${failed} -ne 0 ]] && return "${failed}"; > fi; > done; > return 0 >} >eapply_user () >{ > [[ ${EBUILD_PHASE} == prepare ]] || die "eapply_user() called during invalid phase: ${EBUILD_PHASE}"; > local tagfile=${T}/.portage_user_patches_applied; > [[ -f ${tagfile} ]] && return; > >> "${tagfile}"; > local basedir=${PORTAGE_CONFIGROOT%/}/etc/portage/patches; > local applied d f; > local -A _eapply_user_patches; > local prev_shopt=$(shopt -p nullglob); > shopt -s nullglob; > for d in "${basedir}"/${CATEGORY}/{${P}-${PR},${P},${PN}}{:${SLOT%/*},}; > do > for f in "${d}"/*; > do > if [[ ( ${f} == *.diff || ${f} == *.patch ) && -z ${_eapply_user_patches[${f##*/}]} ]]; then > _eapply_user_patches[${f##*/}]=${f}; > fi; > done; > done; > if [[ ${#_eapply_user_patches[@]} -gt 0 ]]; then > while read -r -d '' f; do > f=${_eapply_user_patches[${f}]}; > if [[ -s ${f} ]]; then > eapply "${f}"; > applied=1; > fi; > done < <(printf -- '%s\0' "${!_eapply_user_patches[@]}" | > LC_ALL=C sort -z); > fi; > ${prev_shopt}; > [[ -n ${applied} ]] && ewarn "User patches applied." >} >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; > local _gnuconfig; > case ${EAPI:-0} in > 0 | 1 | 2 | 3 | 4 | 5 | 6) > _gnuconfig="${EPREFIX}/usr/share/gnuconfig" > ;; > *) > _gnuconfig="${BROOT}/usr/share/gnuconfig" > ;; > esac; > cp "${_gnuconfig}"/config.{guess,sub} . || die; > 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; > [[ ${AT_NOEAUTOHEADER} != "yes" ]] && eautoheader; > [[ ${AT_NOEAUTOMAKE} != "yes" ]] && FROM_EAUTORECONF="yes" eautomake ${AM_OPTS}; > if [[ ${AT_NOELIBTOOLIZE} != "yes" ]]; then > elibtoolize --force "${PWD}"; > fi; > return 0 >} >econf_build () >{ > local CBUILD=${CBUILD:-${CHOST}}; > tc-env_build econf --build=${CBUILD} --host=${CBUILD} "$@" >} >edos2unix () >{ > [[ $# -eq 0 ]] && return 0; > sed -i 's/\r$//' -- "$@" || die >} >einstalldocs () >{ > ( if [[ $(declare -p DOCS 2>/dev/null) != *=* ]]; then > local d; > for d in README* ChangeLog AUTHORS NEWS TODO CHANGES THANKS BUGS FAQ CREDITS CHANGELOG; > do > [[ -f ${d} && -s ${d} ]] && docinto / && dodoc "${d}"; > done; > else > if ___is_indexed_array_var DOCS; then > [[ ${#DOCS[@]} -gt 0 ]] && docinto / && dodoc -r "${DOCS[@]}"; > else > [[ -n ${DOCS} ]] && docinto / && dodoc -r ${DOCS}; > fi; > fi ); > ( if ___is_indexed_array_var HTML_DOCS; then > [[ ${#HTML_DOCS[@]} -gt 0 ]] && docinto html && dodoc -r "${HTML_DOCS[@]}"; > else > [[ -n ${HTML_DOCS} ]] && docinto html && dodoc -r ${HTML_DOCS}; > fi ) >} >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 () >{ > eqawarn "emktemp is deprecated. Create a temporary file in \${T} instead."; > 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 >} >epytest () >{ > debug-print-function ${FUNCNAME} "${@}"; > [[ -n ${EPYTHON} ]] || die "EPYTHON unset, invalid call context"; > local die_args=(); > [[ ${EAPI} != [45] ]] && die_args+=(-n); > set -- "${EPYTHON}" -m pytest -vv -ra "${@}"; > echo "${@}" 1>&2; > "${@}" || die "${die_args[@]}" "pytest failed with ${EPYTHON}"; > return ${?} >} >esetup.py () >{ > debug-print-function ${FUNCNAME} "${@}"; > [[ -n ${EPYTHON} ]] || die "EPYTHON unset, invalid call context"; > local die_args=(); > [[ ${EAPI} != [45] ]] && die_args+=(-n); > [[ -n ${BUILD_DIR} ]] && _distutils-r1_create_setup_cfg; > local setup_py=(setup.py); > if [[ ${DISTUTILS_USE_SETUPTOOLS} == pyproject.toml ]]; then > setup_py=(-m pyproject2setuppy.main); > fi; > set -- "${EPYTHON}" "${setup_py[@]}" "${mydistutilsargs[@]}" "${@}"; > echo "${@}" 1>&2; > "${@}" || die "${die_args[@]}"; > local ret=${?}; > if [[ -n ${BUILD_DIR} ]]; then > rm "${HOME}"/.pydistutils.cfg || die "${die_args[@]}"; > fi; > return ${ret} >} >etestng () >{ > debug-print-function ${FUNCNAME} $*; > local runner=org.testng.TestNG; > local cp=$(java-pkg_getjars --with-dependencies testng); > local tests; > if [[ ${1} = -cp || ${1} = -classpath ]]; then > cp="${cp}:${2}"; > shift 2; > else > cp="${cp}:."; > fi; > for test in ${@}; > do > tests+="${test},"; > done; > debug-print "java -cp \"${cp}\" -Djava.io.tmpdir=\"${T}\"" "-Djava.awt.headless=true ${runner}" "-usedefaultlisteners false -testclass ${tests}"; > java -cp "${cp}" -Djava.io.tmpdir=\"${T}\" -Djava.awt.headless=true ${runner} -usedefaultlisteners false -testclass ${tests} || die "Running TestNG failed." >} >filter-flags () >{ > _filter-hardened "$@"; > local v; > for v in $(all-flag-vars); > do > _filter-var ${v} "$@"; > done; > return 0 >} >filter-ldflags () >{ > _filter-var LDFLAGS "$@"; > return 0 >} >filter-lfs-flags () >{ > [[ $# -ne 0 ]] && die "filter-lfs-flags takes no arguments"; > filter-flags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE >} >filter-mfpmath () >{ > local orig_mfpmath new_math prune_math; > orig_mfpmath=$(get-flag -mfpmath); > new_math=$(get-flag mfpmath); > new_math=${new_math/both/387,sse}; > new_math=" ${new_math//[,+]/ } "; > prune_math=""; > for prune_math in "$@"; > do > new_math=${new_math/ ${prune_math} / }; > done; > new_math=$(echo ${new_math}); > new_math=${new_math// /,}; > if [[ -z ${new_math} ]]; then > filter-flags ${orig_mfpmath}; > else > replace-flags ${orig_mfpmath} -mfpmath=${new_math}; > fi; > return 0 >} >gcc-fullversion () >{ > _gcc_fullversion '$1.$2.$3' "$@" >} >gcc-major-version () >{ > _gcc_fullversion '$1' "$@" >} >gcc-micro-version () >{ > _gcc_fullversion '$3' "$@" >} >gcc-minor-version () >{ > _gcc_fullversion '$2' "$@" >} >gcc-specs-directive () >{ > local directive subdname subdirective; > directive="$(_gcc-specs-directive_raw $1)"; > while [[ ${directive} == *%\(*\)* ]]; do > subdname=${directive/*%\(}; > subdname=${subdname/\)*}; > subdirective="$(_gcc-specs-directive_raw ${subdname})"; > directive="${directive//\%(${subdname})/${subdirective}}"; > done; > echo "${directive}"; > return 0 >} >gcc-specs-nostrict () >{ > local directive; > directive=$(gcc-specs-directive cc1); > [[ "${directive/\{!fstrict-overflow:}" != "${directive}" ]] >} >gcc-specs-now () >{ > local directive; > directive=$(gcc-specs-directive link_command); > [[ "${directive/\{!nonow:}" != "${directive}" ]] >} >gcc-specs-pie () >{ > local directive; > directive=$(gcc-specs-directive cc1); > [[ "${directive/\{!nopie:}" != "${directive}" ]] >} >gcc-specs-relro () >{ > local directive; > directive=$(gcc-specs-directive link_command); > [[ "${directive/\{!norelro:}" != "${directive}" ]] >} >gcc-specs-ssp () >{ > local directive; > directive=$(gcc-specs-directive cc1); > [[ "${directive/\{!fno-stack-protector:}" != "${directive}" ]] >} >gcc-specs-ssp-to-all () >{ > local directive; > directive=$(gcc-specs-directive cc1); > [[ "${directive/\{!fno-stack-protector-all:}" != "${directive}" ]] >} >gcc-specs-stack-check () >{ > local directive; > directive=$(gcc-specs-directive cc1); > [[ "${directive/\{!fno-stack-check:}" != "${directive}" ]] >} >gcc-version () >{ > _gcc_fullversion '$1.$2' "$@" >} >gen_usr_ldscript () >{ > ewarn "${FUNCNAME}: Please migrate to usr-ldscript.eclass"; > local lib libdir=$(get_libdir) output_format="" auto=false suffix=$(get_libname); > [[ -z ${ED+set} ]] && local ED=${D%/}${EPREFIX}/; > tc-is-static-only && return; > if [[ $(type -t multilib_is_native_abi) == "function" ]]; then > multilib_is_native_abi || return 0; > fi; > case ${CTARGET:-${CHOST}} in > *-darwin*) > > ;; > *-android*) > return 0 > ;; > *linux* | *-freebsd* | *-openbsd* | *-netbsd*) > use prefix && return 0 > ;; > *) > return 0 > ;; > esac; > dodir /usr/${libdir}; > if [[ $1 == "-a" ]]; then > auto=true; > shift; > dodir /${libdir}; > fi; > local flags=(${CFLAGS} ${LDFLAGS} -Wl,--verbose); > if $(tc-getLD) --version | grep -q 'GNU gold'; then > local d="${T}/bfd-linker"; > mkdir -p "${d}"; > ln -sf $(which ${CHOST}-ld.bfd) "${d}"/ld; > flags+=(-B"${d}"); > fi; > output_format=$($(tc-getCC) "${flags[@]}" 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/\1/p'); > [[ -n ${output_format} ]] && output_format="OUTPUT_FORMAT ( ${output_format} )"; > for lib in "$@"; > do > local tlib; > if ${auto}; then > lib="lib${lib}${suffix}"; > else > [[ -r ${ED}/${libdir}/${lib} ]] || continue; > fi; > case ${CTARGET:-${CHOST}} in > *-darwin*) > if ${auto}; then > tlib=$(scanmacho -qF'%S#F' "${ED}"/usr/${libdir}/${lib}); > else > tlib=$(scanmacho -qF'%S#F' "${ED}"/${libdir}/${lib}); > fi; > [[ -z ${tlib} ]] && die "unable to read install_name from ${lib}"; > tlib=${tlib##*/}; > if ${auto}; then > mv "${ED}"/usr/${libdir}/${lib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die; > if [[ ${tlib} != ${lib%${suffix}}.*${suffix#.} ]]; then > mv "${ED}"/usr/${libdir}/${tlib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die; > fi; > rm -f "${ED}"/${libdir}/${lib}; > fi; > if [[ ! -w "${ED}/${libdir}/${tlib}" ]]; then > chmod u+w "${ED}${libdir}/${tlib}"; > local nowrite=yes; > fi; > install_name_tool -id "${EPREFIX}"/${libdir}/${tlib} "${ED}"/${libdir}/${tlib} || die "install_name_tool failed"; > [[ -n ${nowrite} ]] && chmod u-w "${ED}${libdir}/${tlib}"; > pushd "${ED}/usr/${libdir}" > /dev/null; > ln -snf "../../${libdir}/${tlib}" "${lib}"; > popd > /dev/null > ;; > *) > if ${auto}; then > tlib=$(scanelf -qF'%S#F' "${ED}"/usr/${libdir}/${lib}); > [[ -z ${tlib} ]] && die "unable to read SONAME from ${lib}"; > mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die; > if [[ ${tlib} != ${lib}* ]]; then > mv "${ED}"/usr/${libdir}/${tlib}* "${ED}"/${libdir}/ || die; > fi; > rm -f "${ED}"/${libdir}/${lib}; > else > tlib=${lib}; > fi; > cat > "${ED}/usr/${libdir}/${lib}" <<-END_LDSCRIPT >/* GNU ld script > Since Gentoo has critical dynamic libraries in /lib, and the static versions > in /usr/lib, we need to have a "fake" dynamic lib in /usr/lib, otherwise we > run into linking problems. This "fake" dynamic lib is a linker script that > redirects the linker to the real lib. And yes, this works in the cross- > compiling scenario as the sysroot-ed linker will prepend the real path. > > See bug https://bugs.gentoo.org/4411 for more info. > */ >${output_format} >GROUP ( ${EPREFIX}/${libdir}/${tlib} ) >END_LDSCRIPT > > ;; > esac > fperms a+x "/usr/${libdir}/${lib}" || die "could not change perms on ${lib}"; > done >} >get-flag () >{ > [[ $# -ne 1 ]] && die "usage: <flag>"; > local f var findflag="$1"; > for var in $(all-flag-vars); > do > for f in ${!var}; > do > if [ "${f/${findflag}}" != "${f}" ]; then > printf "%s\n" "${f/-${findflag}=}"; > return 0; > fi; > done; > done; > return 1 >} >get_abi_CFLAGS () >{ > get_abi_var CFLAGS "$@" >} >get_abi_CHOST () >{ > get_abi_var CHOST "$@" >} >get_abi_CTARGET () >{ > get_abi_var CTARGET "$@" >} >get_abi_FAKE_TARGETS () >{ > get_abi_var FAKE_TARGETS "$@" >} >get_abi_LDFLAGS () >{ > get_abi_var LDFLAGS "$@" >} >get_abi_LIBDIR () >{ > get_abi_var LIBDIR "$@" >} >get_abi_var () >{ > local flag=$1; > local abi=${2:-${ABI:-${DEFAULT_ABI:-default}}}; > local var="${flag}_${abi}"; > echo ${!var} >} >get_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_bashcompdir () >{ > debug-print-function ${FUNCNAME} "${@}"; > echo "${EPREFIX}$(_bash-completion-r1_get_bashcompdir)" >} >get_bashhelpersdir () >{ > debug-print-function ${FUNCNAME} "${@}"; > echo "${EPREFIX}$(_bash-completion-r1_get_bashhelpersdir)" >} >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_libdir () >{ > local libdir_var="LIBDIR_${ABI}"; > local libdir="lib"; > [[ -n ${ABI} && -n ${!libdir_var} ]] && libdir=${!libdir_var}; > echo "${libdir}" >} >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_modname () >{ > local modname; > local ver=$1; > case ${CHOST} in > *-darwin*) > modname="bundle" > ;; > *) > modname="so" > ;; > esac; > echo ".${modname}" >} >get_nproc () >{ > local nproc; > if type -P nproc &> /dev/null; then > nproc=$(nproc); > fi; > if [[ -z ${nproc} ]] && type -P sysctl &> /dev/null; then > nproc=$(sysctl -n hw.ncpu 2>/dev/null); > fi; > if [[ -z ${nproc} ]] && type -P python &> /dev/null; then > nproc=$(python -c 'import multiprocessing; print(multiprocessing.cpu_count());' 2>/dev/null); > fi; > if [[ -n ${nproc} ]]; then > echo "${nproc}"; > else > echo "${1:-1}"; > fi >} >has_multilib_profile () >{ > [ -n "${MULTILIB_ABIS}" -a "${MULTILIB_ABIS}" != "${MULTILIB_ABIS/ /}" ] >} >in_iuse () >{ > local use=${1}; > if [[ -z "${use}" ]]; then > echo "!!! in_iuse() called without a parameter." 1>&2; > echo "!!! in_iuse <USEFLAG>" 1>&2; > die "in_iuse() called without a parameter"; > fi; > local liuse=(${IUSE_EFFECTIVE}); > has "${use}" "${liuse[@]#[+-]}" >} >increment-qa-violations () >{ > let "JAVA_PKG_QA_VIOLATIONS+=1"; > export JAVA_PKG_QA_VIOLATIONS >} >is-flag () >{ > is-flagq "$@" && echo true >} >is-flagq () >{ > [[ -n $2 ]] && die "Usage: is-flag <flag>"; > local var; > for var in $(all-flag-vars); > do > _is_flagq ${var} "$1" && return 0; > done; > return 1 >} >is-java-strict () >{ > [[ -n ${JAVA_PKG_STRICT} ]]; > return $? >} >is-ldflag () >{ > is-ldflagq "$@" && echo true >} >is-ldflagq () >{ > [[ -n $2 ]] && die "Usage: is-ldflag <flag>"; > _is_flagq LDFLAGS $1 >} >is_final_abi () >{ > has_multilib_profile || return 0; > set -- $(get_install_abis); > local LAST_ABI=$#; > [[ ${!LAST_ABI} == ${ABI} ]] >} >java-pkg-opt-2_pkg_preinst () >{ > use ${JAVA_PKG_OPT_USE} && java-utils-2_pkg_preinst >} >java-pkg-opt-2_pkg_setup () >{ > use ${JAVA_PKG_OPT_USE} && java-pkg_init >} >java-pkg-opt-2_src_prepare () >{ > use ${JAVA_PKG_OPT_USE} && java-utils-2_src_prepare; > case "${EAPI:-0}" in > [0-5]) > > ;; > *) > use ${JAVA_PKG_OPT_USE} || eapply_user > ;; > esac >} >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 \"eselect java-vm set system\" 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 \"eselect java-vm set system\" 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 \"eselect java-vm set system\" 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="$(ver_cut 1-2 "${vm_version}")"; > needed_version="$(ver_cut 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 ver_test "${vm_version}" -ge "${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-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_1="${EPREFIX}/usr/$(get_libdir)/javatoolkit/bin/class-version-verify.py"; > local version_verify_2="${EPREFIX}/usr/libexec/javatoolkit/class-version-verify.py"; > if [[ -x "${version_verify_1}" ]]; then > local version_verify=${version_verify_1}; > else > local version_verify=${version_verify_2}; > 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 >} >l10n_find_plocales_changes () >{ > [[ $# -ne 3 ]] && die "Exactly 3 arguments are needed!"; > ebegin "Looking in ${1} for new locales"; > pushd "${1}" > /dev/null || die "Cannot access ${1}"; > local current= x=; > for x in ${2}*${3}; > do > x=${x#"${2}"}; > x=${x%"${3}"}; > current+="${x} "; > done; > popd > /dev/null; > if [[ "$(printf '%s\n' ${PLOCALES} | LC_ALL=C sort)" != "$(printf '%s\n' ${current} | LC_ALL=C sort)" ]]; then > eend 1 "There are changes in locales! This ebuild should be updated to:"; > eerror "PLOCALES=\"${current%[[:space:]]}\""; > return 1; > else > eend 0; > fi >} >l10n_for_each_disabled_locale_do () >{ > local locs x; > locs=$(l10n_get_locales disabled); > for x in ${locs}; > do > "${@}" ${x} || die "failed to process disabled ${x} locale"; > done >} >l10n_for_each_locale_do () >{ > local locs x; > locs=$(l10n_get_locales); > for x in ${locs}; > do > "${@}" ${x} || die "failed to process enabled ${x} locale"; > done >} >l10n_get_locales () >{ > local loc locs; > if [[ -z ${LINGUAS+set} ]]; then > locs=${PLOCALES}; > else > for loc in ${LINGUAS}; > do > has ${loc} ${PLOCALES} && locs+="${loc} "; > done; > fi; > [[ -z ${locs} ]] && locs=${PLOCALE_BACKUP}; > if [[ ${1} == disabled ]]; then > local disabled_locs; > for loc in ${PLOCALES}; > do > has ${loc} ${locs} || disabled_locs+="${loc} "; > done; > locs=${disabled_locs}; > fi; > printf "%s" "${locs}" >} >make_wrapper () >{ > local wrapper=$1 bin=$2 chdir=$3 libdir=$4 path=$5; > local tmpwrapper="${T}/tmp.wrapper.${wrapper##*/}"; > has "${EAPI:-0}" 0 1 2 && local EPREFIX=""; > ( echo '#!/bin/sh'; > 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 > [[ -n ${chdir} ]] && printf 'cd "%s" &&\n' "${EPREFIX}${chdir}"; > printf 'exec %s "$@"\n' "${bin/#\//${EPREFIX}/}" ) > "${tmpwrapper}"; > chmod go+rx "${tmpwrapper}"; > if [[ -n ${path} ]]; then > ( exeopts -m 0755; > exeinto "${path}"; > newexe "${tmpwrapper}" "${wrapper}" ) || die; > else > newbin "${tmpwrapper}" "${wrapper}" || die; > fi >} >makeopts_jobs () >{ > [[ $# -eq 0 ]] && set -- "${MAKEOPTS}"; > local jobs=$(echo " $* " | sed -r -n -e 's:.*[[:space:]](-[a-z]*j|--jobs[=[:space:]])[[:space:]]*([0-9]+).*:\2:p' -e "s:.*[[:space:]](-[a-z]*j|--jobs)[[:space:]].*:${2:-999}:p"); > echo ${jobs:-1} >} >makeopts_loadavg () >{ > [[ $# -eq 0 ]] && set -- "${MAKEOPTS}"; > local lavg=$(echo " $* " | sed -r -n -e 's:.*[[:space:]](-[a-z]*l|--(load-average|max-load)[=[:space:]])[[:space:]]*([0-9]+(\.[0-9]+)?)[[:space:]].*:\3:p' -e "s:.*[[:space:]](-[a-z]*l|--(load-average|max-load))[[:space:]].*:${2:-999}:p"); > echo ${lavg:-${2:-999}} >} >multibuild_copy_sources () >{ > debug-print-function ${FUNCNAME} "${@}"; > local _MULTIBUILD_INITIAL_BUILD_DIR=${BUILD_DIR:-${S}}; > einfo "Will copy sources from ${_MULTIBUILD_INITIAL_BUILD_DIR}"; > local cp_args=(); > if cp --reflink=auto --version &> /dev/null; then > cp_args+=(--reflink=auto); > fi; > function _multibuild_create_source_copy () > { > einfo "${MULTIBUILD_VARIANT}: copying to ${BUILD_DIR}"; > cp -p -R "${cp_args[@]}" "${_MULTIBUILD_INITIAL_BUILD_DIR}" "${BUILD_DIR}" || die > }; > multibuild_foreach_variant _multibuild_create_source_copy >} >multibuild_for_best_variant () >{ > debug-print-function ${FUNCNAME} "${@}"; > [[ -n ${MULTIBUILD_VARIANTS} ]] || die "MULTIBUILD_VARIANTS need to be set"; > local MULTIBUILD_VARIANTS=("${MULTIBUILD_VARIANTS[$(( ${#MULTIBUILD_VARIANTS[@]} - 1 ))]}"); > multibuild_foreach_variant "${@}" >} >multibuild_foreach_variant () >{ > debug-print-function ${FUNCNAME} "${@}"; > [[ -n ${MULTIBUILD_VARIANTS} ]] || die "MULTIBUILD_VARIANTS need to be set"; > local bdir=${BUILD_DIR:-${S}}; > [[ ${bdir%%/} == ${WORKDIR%%/} ]] && bdir=${WORKDIR}/build; > local prev_id=${MULTIBUILD_ID:+${MULTIBUILD_ID}-}; > local ret=0 lret=0 v; > debug-print "${FUNCNAME}: initial build_dir = ${bdir}"; > for v in "${MULTIBUILD_VARIANTS[@]}"; > do > local MULTIBUILD_VARIANT=${v}; > local MULTIBUILD_ID=${prev_id}${v}; > local BUILD_DIR=${bdir%%/}-${v}; > function _multibuild_run () > { > local i=1; > while [[ ${!i} == _* ]]; do > (( i += 1 )); > done; > [[ ${i} -le ${#} ]] && einfo "${v}: running ${@:${i}}"; > "${@}" > }; > _multibuild_run "${@}" > >(exec tee -a "${T}/build-${MULTIBUILD_ID}.log") 2>&1; > lret=${?}; > done; > [[ ${ret} -eq 0 && ${lret} -ne 0 ]] && ret=${lret}; > return ${ret} >} >multibuild_merge_root () >{ > local src=${1}; > local dest=${2}; > local ret; > if use userland_BSD; then > tar -C "${src}" -f - -c . | tar -x -f - -C "${dest}"; > [[ ${PIPESTATUS[*]} == '0 0' ]]; > ret=${?}; > else > local cp_args=(); > if cp -a --version &> /dev/null; then > cp_args+=(-a); > else > cp_args+=(-P -R -p); > fi; > if cp --reflink=auto --version &> /dev/null; then > cp_args+=(--reflink=auto); > fi; > cp "${cp_args[@]}" "${src}"/. "${dest}"/; > ret=${?}; > fi; > if [[ ${ret} -ne 0 ]]; then > die "${MULTIBUILD_VARIANT:-(unknown)}: merging image failed."; > fi; > rm -rf "${src}" >} >multibuild_parallel_foreach_variant () >{ > debug-print-function ${FUNCNAME} "${@}"; > [[ ${EAPI} == [45] ]] || die "${FUNCNAME} is banned in EAPI ${EAPI}"; > multibuild_foreach_variant "${@}" >} >multilib_env () >{ > local CTARGET=${1:-${CTARGET}}; > local cpu=${CTARGET%%*-}; > if [[ ${CTARGET} = *-musl* ]]; then > : ${MULTILIB_ABIS=default}; > : ${DEFAULT_ABI=default}; > export MULTILIB_ABIS DEFAULT_ABI; > return; > fi; > 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* | mipsisa64*) > export CFLAGS_o32=${CFLAGS_o32--mabi=32}; > export CHOST_o32=${CTARGET/mips64/mips}; > export CHOST_o32=${CHOST_o32/mipsisa64/mipsisa32}; > 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} > ;; > riscv64*) > export CFLAGS_lp64d=${CFLAGS_lp64d--mabi=lp64d -march=rv64imafdc}; > export CHOST_lp64d=${CTARGET}; > export CTARGET_lp64d=${CTARGET}; > export LIBDIR_lp64d="lib64/lp64d"; > export CFLAGS_lp64=${CFLAGS_lp64--mabi=lp64 -march=rv64imac}; > export CHOST_lp64=${CTARGET}; > export CTARGET_lp64=${CTARGET}; > export LIBDIR_lp64="lib64/lp64"; > export CFLAGS_ilp32d=${CFLAGS_ilp32d--mabi=ilp32d -march=rv32imafdc}; > export CHOST_ilp32d=${CTARGET/riscv64/riscv32}; > export CTARGET_ilp32d=${CTARGET/riscv64/riscv32}; > export LIBDIR_ilp32d="lib32/ilp32d"; > export CFLAGS_ilp32=${CFLAGS_ilp32--mabi=ilp32 -march=rv32imac}; > export CHOST_ilp32=${CTARGET/riscv64/riscv32}; > export CTARGET_ilp32=${CTARGET/riscv64/riscv32}; > export LIBDIR_ilp32="lib32/ilp32"; > : ${MULTILIB_ABIS=lp64d lp64 ilp32d ilp32}; > : ${DEFAULT_ABI=lp64d} > ;; > riscv32*) > export CFLAGS_ilp32d=${CFLAGS_ilp32d--mabi=ilp32d}; > export CHOST_ilp32d=${CTARGET}; > export CTARGET_ilp32d=${CTARGET}; > export LIBDIR_ilp32d="lib32/ilp32d"; > export CFLAGS_ilp32=${CFLAGS_ilp32--mabi=ilp32 -march=rv32imac}; > export CHOST_ilp32=${CTARGET}; > export CTARGET_ilp32=${CTARGET}; > export LIBDIR_ilp32="lib32/ilp32"; > : ${MULTILIB_ABIS=ilp32d ilp32}; > : ${DEFAULT_ABI=ilp32d} > ;; > 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; > local save_restore_variables=(CBUILD CHOST AR CC CXX F77 FC LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRINGS STRIP PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG_SYSTEM_INCLUDE_PATH PKG_CONFIG_SYSTEM_LIBRARY_PATH); > if [[ ${_DEFAULT_ABI_SAVED} == "true" ]]; then > for v in "${save_restore_variables[@]}"; > 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 "${save_restore_variables[@]}"; > 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 AR="$(tc-getAR)"; > 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 NM="$(tc-getNM)"; > export OBJDUMP="$(tc-getOBJDUMP)"; > export PKG_CONFIG="$(tc-getPKG_CONFIG)"; > export RANLIB="$(tc-getRANLIB)"; > export READELF="$(tc-getREADELF)"; > export STRINGS="$(tc-getSTRINGS)"; > export STRIP="$(tc-getSTRIP)"; > export CHOST=$(get_abi_CHOST $1); > export PKG_CONFIG_LIBDIR=${EPREFIX}/usr/$(get_libdir)/pkgconfig; > export PKG_CONFIG_PATH=${EPREFIX}/usr/share/pkgconfig; > export PKG_CONFIG_SYSTEM_INCLUDE_PATH=${EPREFIX}/usr/include; > export PKG_CONFIG_SYSTEM_LIBRARY_PATH=${EPREFIX}/$(get_libdir):${EPREFIX}/usr/$(get_libdir); > fi >} >newbashcomp () >{ > debug-print-function ${FUNCNAME} "${@}"; > ( insopts -m 0644; > insinto "$(_bash-completion-r1_get_bashcompdir)"; > newins "${@}" ) >} >no-as-needed () >{ > [[ $# -ne 0 ]] && die "no-as-needed takes no arguments"; > case $($(tc-getLD) -v 2>&1 </dev/null) in > *GNU*) > echo "-Wl,--no-as-needed" > ;; > esac >} >number_abis () >{ > set -- `get_install_abis`; > echo $# >} >path_exists () >{ > eerror "path_exists has been removed. Please see the following post"; > eerror "for a replacement snippet:"; > eerror "https://blogs.gentoo.org/mgorny/2018/08/09/inlining-path_exists/"; > die "path_exists is banned" >} >perl-module_pkg_postinst () >{ > debug-print-function $FUNCNAME "$@"; > if [[ ${CATEGORY} != perl-core ]]; then > eerror "perl-module.eclass: You are calling perl-module_pkg_postinst outside the perl-core category."; > die " This does not do anything; the call can be removed."; > fi; > perl_link_duallife_scripts >} >perl-module_pkg_postrm () >{ > debug-print-function $FUNCNAME "$@"; > if [[ ${CATEGORY} != perl-core ]]; then > eerror "perl-module.eclass: You are calling perl-module_pkg_postrm outside the perl-core category."; > die " This does not do anything; the call can be removed."; > fi; > perl_link_duallife_scripts >} >perl-module_src_compile () >{ > debug-print-function $FUNCNAME "$@"; > perl_set_version; > if [[ $(declare -p mymake 2>&-) != "declare -a mymake="* ]]; then > local mymake_local=(${mymake}); > else > local mymake_local=("${mymake[@]}"); > fi; > if [[ -f Build ]]; then > ./Build build || die "Compilation failed"; > else > if [[ -f Makefile ]]; then > set -- OTHERLDFLAGS="${LDFLAGS}" "${mymake_local[@]}"; > einfo "emake" "$@"; > emake "$@" || die "Compilation failed"; > fi; > fi >} >perl-module_src_configure () >{ > debug-print-function $FUNCNAME "$@"; > if [[ ${EAPI:-0} == 5 && ${SRC_PREP} == yes ]]; then > return 0; > fi; > SRC_PREP="yes"; > perl_check_env; > perl_set_version; > [[ -z ${pm_echovar} ]] && export PERL_MM_USE_DEFAULT=1; > export PERL_EXTUTILS_AUTOINSTALL="--skipdeps"; > if [[ $(declare -p myconf 2>&-) != "declare -a myconf="* ]]; then > local myconf_local=(${myconf}); > else > local myconf_local=("${myconf[@]}"); > fi; > if [[ ( ${PREFER_BUILDPL} == yes || ! -f Makefile.PL ) && -f Build.PL ]]; then > if grep -q '\(use\|require\)\s*Module::Build::Tiny' Build.PL; then > einfo "Using Module::Build::Tiny"; > if [[ ${DEPEND} != *dev-perl/Module-Build-Tiny* && ${PN} != Module-Build-Tiny ]]; then > eerror "QA Notice: The ebuild uses Module::Build::Tiny but doesn't depend on it."; > die " Add dev-perl/Module-Build-Tiny to DEPEND!"; > fi; > else > einfo "Using Module::Build"; > if [[ ${DEPEND} != *virtual/perl-Module-Build* && ${DEPEND} != *dev-perl/Module-Build* && ${PN} != Module-Build ]]; then > eerror "QA Notice: The ebuild uses Module::Build but doesn't depend on it."; > die " Add dev-perl/Module-Build to DEPEND!"; > fi; > fi; > set -- --installdirs=vendor --libdoc= --destdir="${D}" --create_packlist=1 "${myconf_local[@]}"; > einfo "perl Build.PL" "$@"; > perl Build.PL "$@" <<< "${pm_echovar}" || die "Unable to build!"; > else > if [[ -f Makefile.PL ]]; then > einfo "Using ExtUtils::MakeMaker"; > set -- PREFIX=${EPREFIX}/usr INSTALLDIRS=vendor INSTALLMAN3DIR='none' DESTDIR="${D}" "${myconf_local[@]}"; > einfo "perl Makefile.PL" "$@"; > perl Makefile.PL "$@" <<< "${pm_echovar}" || die "Unable to build!"; > fi; > fi; > if [[ ! -f Build.PL && ! -f Makefile.PL ]]; then > einfo "No Make or Build file detected..."; > return; > fi >} >perl-module_src_install () >{ > debug-print-function $FUNCNAME "$@"; > perl_set_version; > local f; > if [[ -f Build ]]; then > mytargets="${mytargets:-install}"; > mbparams="${mbparams:---pure}"; > einfo "./Build ${mytargets} ${mbparams}"; > ./Build ${mytargets} ${mbparams} || die "./Build ${mytargets} ${mbparams} failed"; > else > if [[ -f Makefile ]]; then > case "${CATEGORY}" in > dev-perl | perl-core) > mytargets="pure_install" > ;; > *) > mytargets="install" > ;; > esac; > if [[ $(declare -p myinst 2>&-) != "declare -a myinst="* ]]; then > local myinst_local=(${myinst}); > else > local myinst_local=("${myinst[@]}"); > fi; > emake "${myinst_local[@]}" ${mytargets} || die "emake ${myinst_local[@]} ${mytargets} failed"; > fi; > fi; > perl_delete_module_manpages; > perl_delete_localpod; > if [[ ${EAPI:-0} == 5 ]]; then > perl_delete_packlist; > else > perl_fix_packlist; > perl_delete_emptybsdir; > fi; > perl_remove_temppath; > for f in Change* CHANGES README* TODO FAQ ${mydoc}; > do > [[ -s ${f} ]] && dodoc ${f}; > done; > if [[ ${EAPI:-0} != 5 ]]; then > if in_iuse examples && use examples; then > [[ ${#DIST_EXAMPLES[@]} -eq 0 ]] || perl_doexamples "${DIST_EXAMPLES[@]}"; > fi; > fi; > perl_link_duallife_scripts >} >perl-module_src_prepare () >{ > debug-print-function $FUNCNAME "$@"; > if [[ ${EAPI:-0} == 5 ]]; then > [[ -n ${PATCHES[@]} ]] && epatch "${PATCHES[@]}"; > debug-print "$FUNCNAME: applying user patches"; > epatch_user; > else > default; > fi; > if [[ -n ${PERL_RM_FILES[@]} ]]; then > debug-print "$FUNCNAME: stripping unneeded files"; > perl_rm_files "${PERL_RM_FILES[@]}"; > fi; > perl_fix_osx_extra >} >perl-module_src_test () >{ > debug-print-function $FUNCNAME "$@"; > local my_test_control; > local my_test_verbose; > if [[ ${EAPI:-0} == 5 ]]; then > my_test_control=${SRC_TEST}; > my_test_verbose=${TEST_VERBOSE:-0}; > if has 'do' ${my_test_control} || has 'parallel' ${my_test_control}; then > if has "${my_test_verbose}" 0 && has 'parallel' ${my_test_control}; then > export HARNESS_OPTIONS=j$(makeopts_jobs); > einfo "Test::Harness Jobs=$(makeopts_jobs)"; > fi; > else > einfo Skipping tests due to SRC_TEST=${SRC_TEST}; > return 0; > fi; > else > [[ -n "${DIST_TEST_OVERRIDE}" ]] && ewarn DIST_TEST_OVERRIDE is set to ${DIST_TEST_OVERRIDE}; > my_test_control=${DIST_TEST_OVERRIDE:-${DIST_TEST:-do parallel}}; > if ! has 'do' ${my_test_control} && ! has 'parallel' ${my_test_control}; then > einfo Skipping tests due to DIST_TEST=${my_test_control}; > return 0; > fi; > if has verbose ${my_test_control}; then > my_test_verbose=1; > else > my_test_verbose=0; > fi; > if has parallel ${my_test_control}; then > export HARNESS_OPTIONS=j$(makeopts_jobs); > einfo "Test::Harness Jobs=$(makeopts_jobs)"; > fi; > if ! has network ${my_test_control}; then > export NO_NETWORK_TESTING=1; > fi; > fi; > perl_set_version; > if [[ -f Build ]]; then > ./Build test verbose=${my_test_verbose} || die "test failed"; > else > if [[ -f Makefile ]]; then > emake test TEST_VERBOSE=${my_test_verbose} || die "test failed"; > fi; > fi >} >perl-module_src_unpack () >{ > debug-print-function $FUNCNAME "$@"; > [[ ${EAPI:-0} == 5 ]] || die "perl-module_src_unpack is banned in EAPI=6 or later"; > unpacker_src_unpack >} >perl_check_env () >{ > local errored value; > for i in PERL_MM_OPT PERL5LIB PERL5OPT PERL_MB_OPT PERL_CORE PERLPREFIX; > do > [ -v $i ] || continue; > if [ ${errored:-0} == 0 ]; then > if [ -n "${I_KNOW_WHAT_I_AM_DOING}" ]; then > elog "perl-module.eclass: Suspicious environment values found."; > else > eerror "perl-module.eclass: Suspicious environment values found."; > fi; > fi; > errored=1; > value=${!i}; > if [ -n "${I_KNOW_WHAT_I_AM_DOING}" ]; then > elog " $i=\"$value\""; > else > eerror " $i=\"$value\""; > fi; > done; > [ ${errored:-0} == 0 ] && return; > if [ -n "${I_KNOW_WHAT_I_AM_DOING}" ]; then > elog "Continuing anyway, seems you know what you're doing."; > return; > fi; > eerror "Your environment settings may lead to undefined behavior and/or build failures."; > die "Please fix your environment ( ~/.bashrc, package.env, ... ), see above for details." >} >perl_delete_emptybsdir () >{ > debug-print-function $FUNCNAME "$@"; > perl_set_version; > if [[ -d ${D}/${VENDOR_ARCH} ]]; then > find "${D}/${VENDOR_ARCH}" -type f -a -name '*.bs' -a -empty -delete; > find "${D}" -depth -mindepth 1 -type d -empty -delete; > fi >} >perl_delete_localpod () >{ > debug-print-function $FUNCNAME "$@"; > find "${D}" -type f -name perllocal.pod -delete; > find "${D}" -depth -mindepth 1 -type d -empty -delete >} >perl_delete_module_manpages () >{ > debug-print-function $FUNCNAME "$@"; > if [[ -d "${ED}"/usr/share/man ]]; then > find "${ED}"/usr/share/man -type f -name "*.3pm" -delete; > find "${ED}"/usr/share/man -depth -type d -empty -delete; > fi >} >perl_delete_packlist () >{ > debug-print-function $FUNCNAME "$@"; > perl_set_version; > if [[ -d ${D}/${VENDOR_ARCH} ]]; then > find "${D}/${VENDOR_ARCH}" -type f -a -name .packlist -delete; > perl_delete_emptybsdir; > fi >} >perl_doexamples () >{ > debug-print-function $FUNCNAME "$@"; > einfo "Installing examples into /usr/share/doc/${PF}/examples"; > docompress -x /usr/share/doc/${PF}/examples; > docinto examples/; > dodoc -r $@ >} >perl_domodule () >{ > local target_prefix=""; > local files=(); > local doins_opts=(); > local recursive="false"; > local target; > local file; > while [[ $# -gt 0 ]]; do > case $1 in > -C | --target-prefix) > [[ -z "${2}" || "${2:0:1}" == "-" ]] && die "${FUNCNAME}: -C|--target-prefix expects an argument, got \"$2\"!"; > target_prefix="${2}"; > shift 2 > ;; > -r) > recursive="true"; > shift > ;; > *) > [[ -z "${1}" || "${1:0:1}" == "-" ]] && die "${FUNCNAME}: Unknown argument \"${1}\"!"; > files+=("${1}"); > shift 1 > ;; > esac; > done; > if [[ "true" == $recursive ]]; then > doins_opts+=("-r"); > fi; > for file in "${files[@]}"; > do > [[ -e "${file}" ]] || die "$FUNCNAME: Argument \"${file}\" is not an existing file"; > [[ "false" == ${recursive} && -d "${file}" ]] && die "$FUNCNAME: Argument \"${file}\" is a directory ( needs -r parameter )"; > done; > target="$(perl_get_vendorlib)"; > [[ -z "${target_prefix}" ]] || target="${target%/}/${target_prefix#/}"; > insinto "/${target#/}"; > doins "${doins_opts[@]}" "${files[@]}" >} >perl_fix_osx_extra () >{ > debug-print-function $FUNCNAME "$@"; > local f; > find "${S}" -type f -name "._*" -print0 | while read -rd '' f; do > einfo "Removing AppleDouble encoded Macintosh file: ${f#${S}/}"; > rm -f "${f}"; > f=${f#${S}/}; > grep -q "${f}" "${S}"/MANIFEST && elog "AppleDouble encoded Macintosh file in MANIFEST: ${f#${S}/}"; > done >} >perl_fix_packlist () >{ > debug-print-function $FUNCNAME "$@"; > local packlist_temp="${T}/.gentoo_packlist_temp"; > find "${D}" -type f -name '.packlist' -print0 | while read -rd '' f; do > if file "${f}" | grep -q -i " text"; then > einfo "Fixing packlist file /${f#${D}}"; > sed -i -e "s:${D%/}/:/:g" "${f}"; > sort -u "${f}" > "${packlist_temp}"; > mv "${packlist_temp}" "${f}"; > cat "${f}" | while read -r entry; do > if [ ! -e "${D}/${entry}" ]; then > einfo "Pruning surplus packlist entry ${entry}"; > grep -v -x -F "${entry}" "${f}" > "${packlist_temp}"; > mv "${packlist_temp}" "${f}"; > fi; > done; > fi; > done >} >perl_get_module_version () >{ > debug-print-function $FUNCNAME "$@"; > [[ $# -gt 0 ]] || die "${FUNCNAME}: No module name provided"; > [[ $# -lt 2 ]] || die "${FUNCNAME}: Too many parameters ($#)"; > if ! perl_has_module "$@"; then > echo "(Not Installed)"; > return 1; > fi; > perl -we 'my $mn = $ARGV[0]; > $mn =~ s{(::|\x{27})}{/}g; > local $@; > eval { require qq[${mn}.pm]; 1 } or do { > print q[(Compilation failed in require)]; > exit 1; > }; > my $stash = \%{ $ARGV[0] . q[::] }; > if ( not exists $stash->{VERSION} ) { > print q[(No VERSION property)]; > exit 0; > } > if ( not defined ${$stash->{VERSION}} ) { > print q[(undef)]; > exit 0; > } > print ${$stash->{VERSION}}; > exit 0; ' "$@" >} >perl_get_raw_vendorlib () >{ > debug-print-function $FUNCNAME "$@"; > [[ $# -lt 1 ]] || die "${FUNCNAME}: Too many parameters ($#)"; > perl -MConfig -e'exists $Config{$ARGV[0]} || die qq{No such Config key "$ARGV[0]"}; > print $Config{$ARGV[0]}; > exit 0' -- "installvendorlib" || die "Can't extract installvendorlib from Perl Configuration" >} >perl_get_vendorlib () >{ > debug-print-function $FUNCNAME "$@"; > [[ $# -lt 1 ]] || die "${FUNCNAME}: Too many parameters ($#)"; > perl -M5.014 -MConfig -e'exists $Config{$ARGV[0]} || die qq{No such Config key "$ARGV[0]"}; > print $Config{$ARGV[0]} =~ s{\A\Q$ARGV[1]\E}{}r; > exit 0' -- "installvendorlib" "$EPREFIX" || die "Can't extract installvendorlib from Perl Configuration" >} >perl_has_module () >{ > debug-print-function $FUNCNAME "$@"; > [[ $# -gt 0 ]] || die "${FUNCNAME}: No module name provided"; > [[ $# -lt 2 ]] || die "${FUNCNAME}: Too many parameters ($#)"; > perl -we 'my $mn = $ARGV[0]; > $mn =~ s{(::|\x{27})}{/}g; > for(@INC){ > next if ref $_; > exit 0 if -r $_ . q[/] . $mn . q[.pm] > } > exit 1' "$@" >} >perl_has_module_version () >{ > debug-print-function $FUNCNAME "$@"; > [[ $# -gt 0 ]] || die "${FUNCNAME}: No module name provided"; > [[ $# -gt 1 ]] || die "${FUNCNAME}: No module version provided"; > [[ $# -lt 3 ]] || die "${FUNCNAME}: Too many parameters ($#)"; > perl -we 'my $mn = $ARGV[0]; > $mn =~ s{(::|\x{27})}{/}g; > exit ( eval { > require qq[${mn}.pm]; > $ARGV[0]->VERSION($ARGV[1]); > 1 > } ? 0 : 1 )' "$@" >} >perl_link_duallife_scripts () >{ > debug-print-function $FUNCNAME "$@"; > if [[ ${CATEGORY} != perl-core ]] || ! has_version ">=dev-lang/perl-5.8.8-r8"; then > return 0; > fi; > local i ff; > if has "${EBUILD_PHASE:-none}" "postinst" "postrm"; then > for i in "${DUALLIFESCRIPTS[@]}"; > do > alternatives_auto_makesym "/${i}" "/${i}-[0-9]*"; > done; > for i in "${DUALLIFEMAN[@]}"; > do > ff=`echo "${EROOT}"/${i%.1}-${PV}-${P}.1*`; > ff=${ff##*.1}; > alternatives_auto_makesym "/${i}${ff}" "/${i%.1}-[0-9]*"; > done; > else > pushd "${ED}" > /dev/null; > for i in $(find usr/bin -maxdepth 1 -type f 2>/dev/null); > do > mv ${i}{,-${PV}-${P}} || die; > DUALLIFESCRIPTS[${#DUALLIFESCRIPTS[*]}]=${i}; > done; > for i in $(find usr/share/man/man1 -maxdepth 1 -type f 2>/dev/null); > do > mv ${i} ${i%.1}-${PV}-${P}.1 || die; > DUALLIFEMAN[${#DUALLIFEMAN[*]}]=${i}; > done; > popd > /dev/null; > fi >} >perl_remove_temppath () >{ > debug-print-function $FUNCNAME "$@"; > find "${D}" -type f -not -name '*.so' -print0 | while read -rd '' f; do > if file "${f}" | grep -q -i " text"; then > grep -q "${D}" "${f}" && ewarn "QA: File contains a temporary path ${f}"; > sed -i -e "s:${D%/}/:/:g" "${f}"; > fi; > done >} >perl_rm_files () >{ > debug-print-function $FUNCNAME "$@"; > local skipfile="${T}/.gentoo_makefile_skip"; > local manifile="${S}/MANIFEST"; > local manitemp="${T}/.gentoo_manifest_temp"; > oldifs="$IFS"; > IFS="\n"; > for filename in "$@"; > do > einfo "Removing un-needed ${filename}"; > rm -f "${S}/${filename}"; > [[ -e "${manifile}" ]] && echo "${filename}" >> "${skipfile}"; > done; > if [[ -e "${manifile}" && -e "${skipfile}" ]]; then > einfo "Fixing Manifest"; > grep -v -F -f "${skipfile}" "${manifile}" > "${manitemp}"; > mv -f -- "${manitemp}" "${manifile}"; > rm -- "${skipfile}"; > fi; > IFS="$oldifs" >} >perl_set_version () >{ > debug-print-function $FUNCNAME "$@"; > debug-print "$FUNCNAME: perlinfo_done=${perlinfo_done}"; > ${perlinfo_done} && return 0; > perlinfo_done=true; > local f version install{{site,vendor}{arch,lib},archlib}; > eval "$(perl -V:{version,install{{site,vendor}{arch,lib},archlib}} )"; > PERL_VERSION=${version}; > SITE_ARCH=${installsitearch}; > SITE_LIB=${installsitelib}; > ARCH_LIB=${installarchlib}; > VENDOR_LIB=${installvendorlib}; > VENDOR_ARCH=${installvendorarch} >} >pkg_nofetch () >{ > default >} >pkg_postinst () >{ > elog "Check available image and data formats after building with"; > elog "gdalinfo and ogrinfo (using the --formats switch)." >} >pkg_preinst () >{ > java-pkg-opt-2_pkg_preinst "$@" >} >pkg_setup () >{ > java-pkg-opt-2_pkg_setup "$@" >} >python_abi_depend () >{ > die "${FUNCNAME}() is invalid for python-r1 suite" >} >python_byte-compile_modules () >{ > die "${FUNCNAME}() is invalid for python-r1 suite" >} >python_clean_byte-compiled_modules () >{ > die "${FUNCNAME}() is invalid for python-r1 suite" >} >python_clean_installation_image () >{ > die "${FUNCNAME}() is invalid for python-r1 suite" >} >python_clean_py-compile_files () >{ > die "${FUNCNAME}() is invalid for python-r1 suite" >} >python_convert_shebangs () >{ > die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#python_convert_shebangs" >} >python_copy_sources () >{ > debug-print-function ${FUNCNAME} "${@}"; > local MULTIBUILD_VARIANTS; > _python_obtain_impls; > multibuild_copy_sources >} >python_disable_pyc () >{ > die "${FUNCNAME}() is invalid for python-r1 suite" >} >python_doexe () >{ > debug-print-function ${FUNCNAME} "${@}"; > local f; > for f in "$@"; > do > python_newexe "${f}" "${f##*/}"; > done >} >python_doheader () >{ > debug-print-function ${FUNCNAME} "${@}"; > [[ -n ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).'; > local includedir=$(python_get_includedir); > local d=${includedir#${EPREFIX}}; > ( insopts -m 0644; > insinto "${d}"; > doins -r "${@}" || return ${?} ) >} >python_domodule () >{ > debug-print-function ${FUNCNAME} "${@}"; > [[ -n ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).'; > local d; > if [[ ${python_moduleroot} == /* ]]; then > d=${python_moduleroot}; > else > local sitedir=$(python_get_sitedir); > d=${sitedir#${EPREFIX}}/${python_moduleroot//.//}; > fi; > ( insopts -m 0644; > insinto "${d}"; > doins -r "${@}" || return ${?} ); > python_optimize "${ED%/}/${d}" >} >python_doscript () >{ > debug-print-function ${FUNCNAME} "${@}"; > local _PYTHON_REWRITE_SHEBANG=1; > python_doexe "${@}" >} >python_enable_pyc () >{ > die "${FUNCNAME}() is invalid for python-r1 suite" >} >python_execute_function () >{ > die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#python_execute_function" >} >python_execute_nosetests () >{ > die "${FUNCNAME}() is invalid for python-r1 suite" >} >python_execute_py.test () >{ > die "${FUNCNAME}() is invalid for python-r1 suite" >} >python_execute_trial () >{ > die "${FUNCNAME}() is invalid for python-r1 suite" >} >python_export () >{ > debug-print-function ${FUNCNAME} "${@}"; > eqawarn "python_export() is part of private eclass API."; > eqawarn "Please call python_get*() instead."; > _python_export "${@}" >} >python_export_utf8_locale () >{ > debug-print-function ${FUNCNAME} "${@}"; > type locale > /dev/null || return 0; > if [[ $(locale charmap) != UTF-8 ]]; then > local lang locales="C.UTF-8 en_US.UTF-8 en_GB.UTF-8 $(locale -a)"; > for lang in ${locales}; > do > if [[ $(LC_ALL=${lang} locale charmap 2>/dev/null) == UTF-8 ]]; then > if _python_check_locale_sanity "${lang}"; then > export LC_CTYPE=${lang}; > if [[ -n ${LC_ALL} ]]; then > export LC_NUMERIC=${LC_ALL}; > export LC_TIME=${LC_ALL}; > export LC_COLLATE=${LC_ALL}; > export LC_MONETARY=${LC_ALL}; > export LC_MESSAGES=${LC_ALL}; > export LC_PAPER=${LC_ALL}; > export LC_NAME=${LC_ALL}; > export LC_ADDRESS=${LC_ALL}; > export LC_TELEPHONE=${LC_ALL}; > export LC_MEASUREMENT=${LC_ALL}; > export LC_IDENTIFICATION=${LC_ALL}; > export LC_ALL=; > fi; > return 0; > fi; > fi; > done; > ewarn "Could not find a UTF-8 locale. This may trigger build failures in"; > ewarn "some python packages. Please ensure that a UTF-8 locale is listed in"; > ewarn "/etc/locale.gen and run locale-gen."; > return 1; > fi; > return 0 >} >python_fix_shebang () >{ > debug-print-function ${FUNCNAME} "${@}"; > [[ -n ${EPYTHON} ]] || die "${FUNCNAME}: EPYTHON unset (pkg_setup not called?)"; > local force quiet; > while [[ -n ${@} ]]; do > case "${1}" in > -f | --force) > force=1; > shift > ;; > -q | --quiet) > quiet=1; > shift > ;; > --) > shift; > break > ;; > *) > break > ;; > esac; > done; > [[ -n ${1} ]] || die "${FUNCNAME}: no paths given"; > local path f; > for path in "$@"; > do > local any_correct any_fixed is_recursive; > [[ -d ${path} ]] && is_recursive=1; > while IFS= read -r -d '' f; do > local shebang i; > local error= from=; > IFS= read -r shebang < "${f}"; > if [[ ${shebang} == '#!'* ]]; then > local split_shebang=(); > read -r -a split_shebang <<< ${shebang} || die; > for i in "${split_shebang[@]}"; > do > case "${i}" in > *"${EPYTHON}") > debug-print "${FUNCNAME}: in file ${f#${D%/}}"; > debug-print "${FUNCNAME}: shebang matches EPYTHON: ${shebang}"; > any_correct=1; > from=${EPYTHON}; > break > ;; > *python | *python[23]) > debug-print "${FUNCNAME}: in file ${f#${D%/}}"; > debug-print "${FUNCNAME}: rewriting shebang: ${shebang}"; > if [[ ${i} == *python2 ]]; then > from=python2; > if [[ ! -n ${force} ]]; then > python_is_python3 "${EPYTHON}" && error=1; > fi; > else > if [[ ${i} == *python3 ]]; then > from=python3; > if [[ ! -n ${force} ]]; then > python_is_python3 "${EPYTHON}" || error=1; > fi; > else > from=python; > fi; > fi; > break > ;; > *python[23].[0123456789] | *pypy | *pypy3 | *jython[23].[0123456789]) > if [[ ! -n ${force} ]]; then > error=1; > else > case "${i}" in > *python[23].[0123456789]) > from="python[23].[0123456789]" > ;; > *pypy) > from="pypy" > ;; > *pypy3) > from="pypy3" > ;; > *jython[23].[0123456789]) > from="jython[23].[0123456789]" > ;; > *) > die "${FUNCNAME}: internal error in 2nd pattern match" > ;; > esac; > fi; > break > ;; > esac; > done; > fi; > if [[ ! -n ${error} && ! -n ${from} ]]; then > [[ -n ${is_recursive} ]] && continue; > error=1; > fi; > if [[ ! -n ${quiet} ]]; then > einfo "Fixing shebang in ${f#${D%/}}."; > fi; > if [[ ! -n ${error} ]]; then > if [[ ${shebang} == *${from}" "* ]]; then > sed -i -e "1s:${from} :${EPYTHON} :" "${f}" || die; > else > sed -i -e "1s:${from}$:${EPYTHON}:" "${f}" || die; > fi; > any_fixed=1; > else > eerror "The file has incompatible shebang:"; > eerror " file: ${f#${D%/}}"; > eerror " current shebang: ${shebang}"; > eerror " requested impl: ${EPYTHON}"; > die "${FUNCNAME}: conversion of incompatible shebang requested"; > fi; > done < <(find -H "${path}" -type f -print0 || die); > if [[ ! -n ${any_fixed} ]]; then > local cmd=eerror; > [[ ${EAPI} == 5 ]] && cmd=eqawarn; > "${cmd}" "QA warning: ${FUNCNAME}, ${path#${D%/}} did not match any fixable files."; > if [[ -n ${any_correct} ]]; then > "${cmd}" "All files have ${EPYTHON} shebang already."; > else > "${cmd}" "There are no Python files in specified directory."; > fi; > [[ ${cmd} == eerror ]] && die "${FUNCNAME} did not match any fixable files (QA warning fatal in EAPI ${EAPI})"; > fi; > done >} >python_foreach_impl () >{ > debug-print-function ${FUNCNAME} "${@}"; > local MULTIBUILD_VARIANTS; > _python_obtain_impls; > multibuild_foreach_variant _python_multibuild_wrapper "${@}" >} >python_gen_any_dep () >{ > debug-print-function ${FUNCNAME} "${@}"; > local depstr=${1}; > shift; > local i PYTHON_PKG_DEP out=; > _python_verify_patterns "${@}"; > for i in "${_PYTHON_SUPPORTED_IMPLS[@]}"; > do > if _python_impl_matches "${i}" "${@}"; then > local PYTHON_USEDEP="python_targets_${i}(-),-python_single_target_${i}(-)"; > local PYTHON_SINGLE_USEDEP="python_single_target_${i}(-)"; > _python_export "${i}" PYTHON_PKG_DEP; > local i_depstr=${depstr//\$\{PYTHON_USEDEP\}/${PYTHON_USEDEP}}; > i_depstr=${i_depstr//\$\{PYTHON_SINGLE_USEDEP\}/${PYTHON_SINGLE_USEDEP}}; > out="( ${PYTHON_PKG_DEP/:0=/:0} ${i_depstr} ) ${out}"; > fi; > done; > echo "|| ( ${out})" >} >python_gen_cond_dep () >{ > debug-print-function ${FUNCNAME} "${@}"; > local impl matches=(); > local dep=${1}; > shift; > _python_verify_patterns "${@}"; > for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}"; > do > if _python_impl_matches "${impl}" "${@}"; then > if [[ ${dep} == *'${PYTHON_USEDEP}'* ]]; then > local usedep=$(_python_gen_usedep "${@}"); > dep=${dep//\$\{PYTHON_USEDEP\}/${usedep}}; > fi; > matches+=("python_targets_${impl}? ( ${dep} )"); > fi; > done; > echo "${matches[@]}" >} >python_gen_impl_dep () >{ > debug-print-function ${FUNCNAME} "${@}"; > local impl matches=(); > local PYTHON_REQ_USE=${1}; > shift; > _python_verify_patterns "${@}"; > for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}"; > do > if _python_impl_matches "${impl}" "${@}"; then > local PYTHON_PKG_DEP; > _python_export "${impl}" PYTHON_PKG_DEP; > matches+=("python_targets_${impl}? ( ${PYTHON_PKG_DEP} )"); > fi; > done; > echo "${matches[@]}" >} >python_gen_usedep () >{ > debug-print-function ${FUNCNAME} "${@}"; > if [[ ${EBUILD_PHASE} == setup ]]; then > eqawarn "python_gen_usedep() is deprecated. Please use python_gen_cond_dep instead."; > fi; > _python_gen_usedep "${@}" >} >python_gen_useflags () >{ > debug-print-function ${FUNCNAME} "${@}"; > local impl matches=(); > _python_verify_patterns "${@}"; > for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}"; > do > if _python_impl_matches "${impl}" "${@}"; then > matches+=("python_targets_${impl}"); > fi; > done; > echo "${matches[@]}" >} >python_generate_cffi_modules () >{ > die "${FUNCNAME}() is invalid for python-r1 suite" >} >python_generate_wrapper_scripts () >{ > die "${FUNCNAME}() is invalid for python-r1 suite" >} >python_get_CFLAGS () >{ > debug-print-function ${FUNCNAME} "${@}"; > _python_export "${@}" PYTHON_CFLAGS; > echo "${PYTHON_CFLAGS}" >} >python_get_LIBS () >{ > debug-print-function ${FUNCNAME} "${@}"; > _python_export "${@}" PYTHON_LIBS; > echo "${PYTHON_LIBS}" >} >python_get_PYTHON_CONFIG () >{ > debug-print-function ${FUNCNAME} "${@}"; > _python_export "${@}" PYTHON_CONFIG; > echo "${PYTHON_CONFIG}" >} >python_get_extension_module_suffix () >{ > die "${FUNCNAME}() is invalid for python-r1 suite" >} >python_get_implementation () >{ > die "${FUNCNAME}() is invalid for python-r1 suite" >} >python_get_implementation_and_version () >{ > die "${FUNCNAME}() is invalid for python-r1 suite" >} >python_get_implementational_package () >{ > die "${FUNCNAME}() is invalid for python-r1 suite" >} >python_get_includedir () >{ > debug-print-function ${FUNCNAME} "${@}"; > _python_export "${@}" PYTHON_INCLUDEDIR; > echo "${PYTHON_INCLUDEDIR}" >} >python_get_libdir () >{ > die "${FUNCNAME}() is invalid for python-r1 suite" >} >python_get_library () >{ > die "${FUNCNAME}() is invalid for python-r1 suite" >} >python_get_library_path () >{ > debug-print-function ${FUNCNAME} "${@}"; > _python_export "${@}" PYTHON_LIBPATH; > echo "${PYTHON_LIBPATH}" >} >python_get_scriptdir () >{ > debug-print-function ${FUNCNAME} "${@}"; > _python_export "${@}" PYTHON_SCRIPTDIR; > echo "${PYTHON_SCRIPTDIR}" >} >python_get_sitedir () >{ > debug-print-function ${FUNCNAME} "${@}"; > _python_export "${@}" PYTHON_SITEDIR; > echo "${PYTHON_SITEDIR}" >} >python_get_version () >{ > die "${FUNCNAME}() is invalid for python-r1 suite" >} >python_install_executables () >{ > die "${FUNCNAME}() is invalid for python-r1 suite" >} >python_is_installed () >{ > local impl=${1:-${EPYTHON}}; > [[ -n ${impl} ]] || die "${FUNCNAME}: no impl nor EPYTHON"; > local hasv_args=(); > case ${EAPI} in > 5 | 6) > hasv_args+=(--host-root) > ;; > *) > hasv_args+=(-b) > ;; > esac; > local PYTHON_PKG_DEP; > _python_export "${impl}" PYTHON_PKG_DEP; > has_version "${hasv_args[@]}" "${PYTHON_PKG_DEP}" >} >python_is_python3 () >{ > local impl=${1:-${EPYTHON}}; > [[ -n ${impl} ]] || die "python_is_python3: no impl nor EPYTHON"; > [[ ${impl} == python3* || ${impl} == pypy3 ]] >} >python_merge_intermediate_installation_images () >{ > die "${FUNCNAME}() is invalid for python-r1 suite" >} >python_mod_cleanup () >{ > die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#Python_byte-code_compilation" >} >python_mod_optimize () >{ > die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#Python_byte-code_compilation" >} >python_moduleinto () >{ > debug-print-function ${FUNCNAME} "${@}"; > python_moduleroot=${1} >} >python_need_rebuild () >{ > die "${FUNCNAME}() is invalid for python-r1 suite" >} >python_newexe () >{ > debug-print-function ${FUNCNAME} "${@}"; > [[ -n ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).'; > [[ ${#} -eq 2 ]] || die "Usage: ${FUNCNAME} <path> <new-name>"; > local wrapd=${python_scriptroot:-/usr/bin}; > local f=${1}; > local newfn=${2}; > local scriptdir=$(python_get_scriptdir); > local d=${scriptdir#${EPREFIX}}; > ( dodir "${wrapd}"; > exeopts -m 0755; > exeinto "${d}"; > newexe "${f}" "${newfn}" || return ${?} ); > _python_ln_rel "${ED%/}"/usr/lib/python-exec/python-exec2 "${ED%/}/${wrapd}/${newfn}" || die; > if [[ -n ${_PYTHON_REWRITE_SHEBANG} ]]; then > python_fix_shebang -q "${ED%/}/${d}/${newfn}"; > fi >} >python_newscript () >{ > debug-print-function ${FUNCNAME} "${@}"; > local _PYTHON_REWRITE_SHEBANG=1; > python_newexe "${@}" >} >python_optimize () >{ > debug-print-function ${FUNCNAME} "${@}"; > if [[ ${EBUILD_PHASE} == pre* || ${EBUILD_PHASE} == post* ]]; then > eerror "The new Python eclasses expect the compiled Python files to"; > eerror "be controlled by the Package Manager. For this reason,"; > eerror "the python_optimize function can be used only during src_* phases"; > eerror "(src_install most commonly) and not during pkg_* phases."; > echo; > die "python_optimize is not to be used in pre/post* phases"; > fi; > [[ -n ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).'; > local PYTHON=${PYTHON}; > [[ -n ${PYTHON} ]] || _python_export PYTHON; > [[ -x ${PYTHON} ]] || die "PYTHON (${PYTHON}) is not executable"; > if [[ ${#} -eq 0 ]]; then > local f; > while IFS= read -r -d '' f; do > if [[ ${f} == /* && -d ${D%/}${f} ]]; then > set -- "${D%/}${f}" "${@}"; > fi; > done < <("${PYTHON}" -c 'import sys; print("".join(x + "\0" for x in sys.path))' || die); > debug-print "${FUNCNAME}: using sys.path: ${*/%/;}"; > fi; > local d; > for d in "$@"; > do > local instpath=${d#${D%/}}; > instpath=/${instpath##/}; > case "${EPYTHON}" in > python2.7 | python3.[34]) > "${PYTHON}" -m compileall -q -f -d "${instpath}" "${d}"; > "${PYTHON}" -OO -m compileall -q -f -d "${instpath}" "${d}" > ;; > python* | pypy3) > "${PYTHON}" -m compileall -q -f -d "${instpath}" "${d}"; > "${PYTHON}" -O -m compileall -q -f -d "${instpath}" "${d}"; > "${PYTHON}" -OO -m compileall -q -f -d "${instpath}" "${d}" > ;; > *) > "${PYTHON}" -m compileall -q -f -d "${instpath}" "${d}" > ;; > esac; > done >} >python_pkg_setup () >{ > die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#pkg_setup" >} >python_replicate_script () >{ > debug-print-function ${FUNCNAME} "${@}"; > function _python_replicate_script () > { > local _PYTHON_FIX_SHEBANG_QUIET=1; > local PYTHON_SCRIPTDIR; > _python_export PYTHON_SCRIPTDIR; > ( exeopts -m 0755; > exeinto "${PYTHON_SCRIPTDIR#${EPREFIX}}"; > doexe "${files[@]}" ); > python_fix_shebang -q "${files[@]/*\//${D%/}/${PYTHON_SCRIPTDIR}/}" > }; > local files=("${@}"); > python_foreach_impl _python_replicate_script; > unset -f _python_replicate_script; > local f; > for f in "$@"; > do > _python_ln_rel "${ED%/}/usr/lib/python-exec/python-exec2" "${f}" || die; > done >} >python_scriptinto () >{ > debug-print-function ${FUNCNAME} "${@}"; > python_scriptroot=${1} >} >python_set_active_version () >{ > die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#pkg_setup" >} >python_setup () >{ > debug-print-function ${FUNCNAME} "${@}"; > _python_validate_useflags; > local pycompat=("${PYTHON_COMPAT[@]}"); > if [[ -n ${PYTHON_COMPAT_OVERRIDE} ]]; then > pycompat=(${PYTHON_COMPAT_OVERRIDE}); > fi; > local has_check_deps; > declare -f python_check_deps > /dev/null && has_check_deps=1; > local found; > _python_verify_patterns "${@}"; > for ((i = ${#_PYTHON_SUPPORTED_IMPLS[@]} - 1; i >= 0; i-- )) > do > local impl=${_PYTHON_SUPPORTED_IMPLS[i]}; > has "${impl}" "${pycompat[@]}" || continue; > if [[ ! -n ${PYTHON_COMPAT_OVERRIDE} && ! -n ${has_check_deps} ]]; then > use "python_targets_${impl}" || continue; > fi; > _python_impl_matches "${impl}" "${@}" || continue; > _python_export "${impl}" EPYTHON PYTHON; > if [[ -n ${has_check_deps} ]]; then > python_is_installed "${impl}" || continue; > local PYTHON_USEDEP="python_targets_${impl}(-),-python_single_target_${impl}(-)"; > local PYTHON_SINGLE_USEDEP="python_single_target_${impl}(-)"; > python_check_deps || continue; > fi; > found=1; > break; > done; > if [[ ! -n ${found} ]]; then > eerror "${FUNCNAME}: none of the enabled implementation matched the patterns."; > eerror " patterns: ${@-'(*)'}"; > eerror "Likely a REQUIRED_USE constraint (possibly USE-conditional) is missing."; > eerror " suggested: || ( \$(python_gen_useflags ${@}) )"; > eerror "(remember to quote all the patterns with '')"; > die "${FUNCNAME}: no enabled implementation satisfy requirements"; > fi; > _python_wrapper_setup; > einfo "Using ${EPYTHON} in global scope" >} >python_wrapper_setup () >{ > debug-print-function ${FUNCNAME} "${@}"; > eqawarn "python_wrapper_setup() is part of private eclass API."; > eqawarn "Please call python_setup() instead."; > _python_wrapper_setup "${@}" >} >raw-ldflags () >{ > local x input="$@"; > [[ -z ${input} ]] && input=${LDFLAGS}; > set --; > for x in ${input}; > do > case ${x} in > -Wl,*) > x=${x#-Wl,}; > set -- "$@" ${x//,/ } > ;; > *) > > ;; > esac; > done; > echo "$@" >} >replace-cpu-flags () >{ > local newcpu="$#"; > newcpu="${!newcpu}"; > while [ $# -gt 1 ]; do > replace-flags "-march=${1}" "-march=${newcpu}"; > replace-flags "-mcpu=${1}" "-mcpu=${newcpu}"; > replace-flags "-mtune=${1}" "-mtune=${newcpu}"; > shift; > done; > return 0 >} >replace-flags () >{ > [[ $# != 2 ]] && die "Usage: replace-flags <old flag> <new flag>"; > local f var new; > for var in $(all-flag-vars); > do > new=(); > for f in ${!var}; > do > [[ ${f} == ${1} ]] && f=${2}; > new+=("${f}"); > done; > export ${var}="${new[*]}"; > done; > return 0 >} >replace-sparc64-flags () >{ > [[ $# -ne 0 ]] && die "replace-sparc64-flags takes no arguments"; > local SPARC64_CPUS="ultrasparc3 ultrasparc v9"; > if [ "${CFLAGS/mtune}" != "${CFLAGS}" ]; then > for x in ${SPARC64_CPUS}; > do > CFLAGS="${CFLAGS/-mcpu=${x}/-mcpu=v8}"; > done; > else > for x in ${SPARC64_CPUS}; > do > CFLAGS="${CFLAGS/-mcpu=${x}/-mcpu=v8 -mtune=${x}}"; > done; > fi; > if [ "${CXXFLAGS/mtune}" != "${CXXFLAGS}" ]; then > for x in ${SPARC64_CPUS}; > do > CXXFLAGS="${CXXFLAGS/-mcpu=${x}/-mcpu=v8}"; > done; > else > for x in ${SPARC64_CPUS}; > do > CXXFLAGS="${CXXFLAGS/-mcpu=${x}/-mcpu=v8 -mtune=${x}}"; > done; > fi; > export CFLAGS CXXFLAGS >} >run_in_build_dir () >{ > debug-print-function ${FUNCNAME} "${@}"; > local ret; > [[ ${#} -ne 0 ]] || die "${FUNCNAME}: no command specified."; > [[ -n ${BUILD_DIR} ]] || die "${FUNCNAME}: BUILD_DIR not set."; > mkdir -p "${BUILD_DIR}" || die; > pushd "${BUILD_DIR}" > /dev/null || die; > "${@}"; > ret=${?}; > popd > /dev/null || die; > return ${ret} >} >setup-allowed-flags () >{ > ALLOWED_FLAGS=(-pipe -O '-O[12sg]' -mcpu -march -mtune '-fstack-protector*' '-fsanitize*' '-fstack-check*' -fno-stack-check -fbounds-check -fbounds-checking -fno-strict-overflow -fno-PIE -fno-pie -nopie -no-pie -fno-unit-at-a-time -g '-g[0-9]' -ggdb '-ggdb[0-9]' -gdwarf '-gdwarf-*' -gstabs -gstabs+ -gz -fno-ident -fpermissive -frecord-gcc-switches '-fdiagnostics*' '-fplugin*' '-W*' -w '-[DUILR]*' '-Wl,*' '-fuse-ld'); > ALLOWED_FLAGS+=('-fno-stack-protector*' '-fabi-version=*' -fno-strict-aliasing -fno-bounds-check -fno-bounds-checking -fstrict-overflow -fno-omit-frame-pointer '-fno-builtin*'); > ALLOWED_FLAGS+=(-mregparm -mno-app-regs -mapp-regs -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-ssse3 -mno-sse4 -mno-sse4.1 -mno-sse4.2 -mno-avx -mno-aes -mno-pclmul -mno-sse4a -mno-3dnow -mno-popcnt -mno-abm -mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 -mplt -msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu -mieee -mieee-with-inexact -mschedule -mfloat-gprs -mspe -mno-spe -mtls-direct-seg-refs -mno-tls-direct-seg-refs -mflat -mno-flat -mno-faster-structs -mfaster-structs -m32 -m64 -mx32 -mabi -mlittle-endian -mbig-endian -EL -EB -fPIC -mlive-g0 -mcmodel -mstack-bias -mno-stack-bias -msecure-plt '-m*-toc' -mfloat-abi -mfix-r4000 -mno-fix-r4000 -mfix-r4400 -mno-fix-r4400 -mfix-rm7000 -mno-fix-rm7000 -mfix-r10000 -mno-fix-r10000 -mr10k-cache-barrier -mthumb -marm -mno-fma4 -mno-movbe -mno-xop -mno-lwp -mno-fsgsbase -mno-rdrnd -mno-f16c -mno-bmi -mno-tbm -mno-avx2 -mno-bmi2 -mno-fma -mno-lzcnt -mno-fxsr -mno-hle -mno-rtm -mno-xsave -mno-xsaveopt -mno-avx512cd -mno-avx512er -mno-avx512f -mno-avx512pf -mno-sha); > ALLOWED_FLAGS+=(-mstackrealign) >} >src_compile () >{ > if use perl; then > rm "${S}"/swig/perl/*_wrap.cpp || die; > emake -C "${S}"/swig/perl generate; > fi; > default; > if use java; then > pushd "${S}"/swig/java > /dev/null || die; > emake; > popd > /dev/null || die; > fi; > if use perl; then > pushd "${S}"/swig/perl > /dev/null || die; > perl-module_src_configure; > perl-module_src_compile; > popd > /dev/null || die; > fi; > if use python; then > rm -f "${S}"/swig/python/*_wrap.cpp || die; > emake -C "${S}"/swig/python generate; > pushd "${S}"/swig/python > /dev/null || die; > distutils-r1_src_compile; > popd > /dev/null || die; > fi; > use doc && emake docs >} >src_configure () >{ > local myconf=(--includedir="${EPREFIX}"/usr/include/${PN} --disable-lto --disable-static --disable-driver-bsb --disable-driver-mrf --disable-pdf-plugin --enable-shared --enable-driver-grib --with-bash-completion="$(get_bashcompdir)" --with-cpp14 --with-crypto --with-cryptopp=no --with-expat --with-geotiff --with-gnm --with-hide-internal-symbols --with-libjson-c="${EPREFIX}"/usr --with-libtiff --with-libtool --with-libz="${EPREFIX}"/usr --without-charls --without-dods-root --without-ecw --without-epsilon --without-fgdb --without-fme --without-gta --without-grass --without-hdf4 --without-idb --without-ingres --without-jasper --without-jp2lura --without-jp2mrsid --without-kakadu --without-kea --without-libkml --without-mongocxx --without-mrsid --without-mrsid_lidar --without-msg --without-rasdaman --without-rasterlite2 --without-pcraster --without-pdfium --without-perl --without-podofo --without-python --without-qhull --without-sfcgal --without-sosi --without-teigha $(use_enable debug) $(use_with armadillo) $(use_with aux-xml pam) $(use_with curl) $(use_with cpu_flags_x86_avx avx) $(use_with cpu_flags_x86_sse sse) $(use_with cpu_flags_x86_ssse3 ssse3) $(use_with fits cfitsio) $(use_with geos) $(use_with gif) $(use_with gml xerces) $(use_with hdf5) $(use_with jpeg pcidsk) $(use_with jpeg) $(use_with jpeg2k openjpeg) $(use_with lzma liblzma) $(use_with mysql mysql "${EPREFIX}"/usr/bin/mysql_config) $(use_with netcdf) $(use_with oracle oci) $(use_with odbc) $(use_with ogdi ogdi "${EPREFIX}"/usr) $(use_with opencl) $(use_with pdf poppler) $(use_with png) $(use_with postgres pg) $(use_with spatialite) $(use_with sqlite sqlite3 "${EPREFIX}"/usr) $(use_with threads) $(use_with webp) $(use_with xls freexl) $(use_with zstd)); > tc-export AR RANLIB; > if use java; then > myconf+=(--with-java=$(java-config --jdk-home 2>/dev/null) --with-jvm-lib=dlopen $(use_with mdb)); > else > myconf+=(--without-java --without-mdb); > fi; > if use sqlite; then > append-libs -lsqlite3; > fi; > if use ogdi; then > append-cflags $($(tc-getPKG_CONFIG) --cflags libtirpc); > append-cxxflags $($(tc-getPKG_CONFIG) --cflags libtirpc); > fi; > ECONF_SOURCE="${S}" econf "${myconf[@]}"; > if use mysql; then > sed -e "s: -rdynamic : :" -i GDALmake.opt || die "sed LIBS failed"; > fi >} >src_install () >{ > local DOCS=(NEWS); > use doc && local HTML_DOCS=(html/.); > default; > use java && java-pkg_dojar "${S}"/swig/java/gdal.jar; > if use perl; then > pushd "${S}"/swig/perl > /dev/null || die; > myinst=(DESTDIR="${D}"); > perl-module_src_install; > popd > /dev/null || die; > perl_delete_localpod; > fi; > if use python; then > unset DOCS HTML_DOCS; > pushd "${S}"/swig/python > /dev/null || die; > distutils-r1_src_install; > popd > /dev/null || die; > newdoc swig/python/README.rst README-python.rst; > insinto /usr/share/${PN}/samples; > doins -r swig/python/samples/.; > fi; > doman "${S}"/man/man*/*; > find "${ED}" -name '*.la' -type f -delete || die >} >src_prepare () >{ > default; > sed -e '/\$ADD_PREFIX\/lib/d' -i configure.ac || die; > sed -e "s: /usr/: \"${EPREFIX}\"/usr/:g" -i configure.ac || die; > sed -e 's:^ar:$(AR):g' -i ogr/ogrsf_frmts/sdts/install-libs.sh || die; > sed -e "s: gdal_array.i: ../include/gdal_array.i:" -i swig/python/GNUmakefile || die "sed python makefile failed"; > eautoreconf >} >src_test () >{ > perl-module_src_test "$@" >} >src_unpack () >{ > default >} >strip-flags () >{ > [[ $# -ne 0 ]] && die "strip-flags takes no arguments"; > local x y var; > local ALLOWED_FLAGS; > setup-allowed-flags; > set -f; > for var in $(all-flag-vars); > do > local new=(); > for x in ${!var}; > do > local flag=${x%%=*}; > for y in "${ALLOWED_FLAGS[@]}"; > do > if [[ -z ${flag%%${y}} ]]; then > new+=("${x}"); > break; > fi; > done; > done; > if _is_flagq ${var} "-O*" && ! _is_flagq new "-O*"; then > new+=(-O2); > fi; > if [[ ${!var} != "${new[*]}" ]]; then > einfo "strip-flags: ${var}: changed '${!var}' to '${new[*]}'"; > fi; > export ${var}="${new[*]}"; > done; > set +f; > return 0 >} >strip-linguas () >{ > local ls newls nols; > if [[ $1 == "-i" ]] || [[ $1 == "-u" ]]; then > local op=$1; > shift; > ls=$(find "$1" -name '*.po' -exec basename {} .po ';'); > shift; > local d f; > for d in "$@"; > do > if [[ ${op} == "-u" ]]; then > newls=${ls}; > else > newls=""; > fi; > for f in $(find "$d" -name '*.po' -exec basename {} .po ';'); > do > if [[ ${op} == "-i" ]]; then > has ${f} ${ls} && newls="${newls} ${f}"; > else > has ${f} ${ls} || newls="${newls} ${f}"; > fi; > done; > ls=${newls}; > done; > else > ls="$@"; > fi; > nols=""; > newls=""; > for f in ${LINGUAS}; > do > if has ${f} ${ls}; then > newls="${newls} ${f}"; > else > nols="${nols} ${f}"; > fi; > done; > [[ -n ${nols} ]] && einfo "Sorry, but ${PN} does not support the LINGUAS:" ${nols}; > export LINGUAS=${newls:1} >} >strip-unsupported-flags () >{ > [[ $# -ne 0 ]] && die "strip-unsupported-flags takes no arguments"; > export CFLAGS=$(test-flags-CC ${CFLAGS}); > export CXXFLAGS=$(test-flags-CXX ${CXXFLAGS}); > export FFLAGS=$(test-flags-F77 ${FFLAGS}); > export FCFLAGS=$(test-flags-FC ${FCFLAGS}); > export LDFLAGS=$(test-flags-CCLD ${LDFLAGS}) >} >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-cpp-is-true () >{ > local CONDITION=${1}; > shift; > $(tc-getTARGET_CPP) "${@}" -P - <<-EOF > /dev/null 2>&1 >#if ${CONDITION} >true >#else >#error false >#endif >EOF > >} >tc-detect-is-softfloat () >{ > [[ $(tc-getTARGET_CPP) == "gcc -E" ]] && return 1; > case ${CTARGET:-${CHOST}} in > *-newlib | *-elf | *-eabi) > return 1 > ;; > arm*) > if tc-cpp-is-true "defined(__ARM_PCS_VFP)"; then > echo "no"; > else > if tc-cpp-is-true "defined(__SOFTFP__)"; then > echo "yes"; > else > echo "softfp"; > fi; > fi; > return 0 > ;; > *) > return 1 > ;; > esac >} >tc-enables-pie () >{ > tc-cpp-is-true "defined(__PIE__)" ${CPPFLAGS} ${CFLAGS} >} >tc-enables-ssp () >{ > tc-cpp-is-true "defined(__SSP__) || defined(__SSP_STRONG__) || defined(__SSP_ALL__)" ${CPPFLAGS} ${CFLAGS} >} >tc-enables-ssp-all () >{ > tc-cpp-is-true "defined(__SSP_ALL__)" ${CPPFLAGS} ${CFLAGS} >} >tc-enables-ssp-strong () >{ > tc-cpp-is-true "defined(__SSP_STRONG__) || defined(__SSP_ALL__)" ${CPPFLAGS} ${CFLAGS} >} >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 > ;; > riscv*) > echo little > ;; > 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) READELF=$(tc-getBUILD_READELF) "$@" >} >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 "$@"; > if tc-is-cross-compiler; then > : ${BUILD_CFLAGS:=-O1 -pipe}; > : ${BUILD_CXXFLAGS:=-O1 -pipe}; > : ${BUILD_CPPFLAGS:= }; > : ${BUILD_LDFLAGS:= }; > else > : ${BUILD_CFLAGS:=${CFLAGS}}; > : ${BUILD_CXXFLAGS:=${CXXFLAGS}}; > : ${BUILD_CPPFLAGS:=${CPPFLAGS}}; > : ${BUILD_LDFLAGS:=${LDFLAGS}}; > fi; > 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_READELF () >{ > tc-getBUILD_PROG READELF readelf "$@" >} >tc-getBUILD_STRINGS () >{ > tc-getBUILD_PROG STRINGS strings "$@" >} >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-getREADELF () >{ > tc-getPROG READELF readelf "$@" >} >tc-getSTRINGS () >{ > tc-getPROG STRINGS strings "$@" >} >tc-getSTRIP () >{ > tc-getPROG STRIP strip "$@" >} >tc-getTARGET_CPP () >{ > if [[ -n ${CTARGET} ]]; then > _tc-getPROG CTARGET TARGET_CPP "gcc -E" "$@"; > else > tc-getCPP "$@"; > fi >} >tc-has-openmp () >{ > local base="${T}/test-tc-openmp"; > cat <<-EOF > "${base}.c" >#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 <<-EOF > "${base}.c" >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 () >{ > tc-detect-is-softfloat || tc-tuple-is-softfloat >} >tc-is-static-only () >{ > local host=${CTARGET:-${CHOST}}; > [[ ${host} == *-mint* ]] >} >tc-ld-disable-gold () >{ > tc-ld-is-gold "$@" && tc-ld-force-bfd "$@" >} >tc-ld-force-bfd () >{ > if ! tc-ld-is-gold "$@" && ! tc-ld-is-lld "$@"; then > return; > fi; > ewarn "Forcing usage of the BFD linker"; > 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 fallback="true"; > if tc-is-gcc; then > local major=$(gcc-major-version "$@"); > local minor=$(gcc-minor-version "$@"); > if [[ ${major} -gt 4 ]] || [[ ${major} -eq 4 && ${minor} -ge 8 ]]; then > export LDFLAGS="${LDFLAGS} -fuse-ld=bfd"; > fallback="false"; > fi; > else > if tc-is-clang; then > local major=$(clang-major-version "$@"); > local minor=$(clang-minor-version "$@"); > if [[ ${major} -gt 3 ]] || [[ ${major} -eq 3 && ${minor} -ge 5 ]]; then > export LDFLAGS="${LDFLAGS} -fuse-ld=bfd"; > fallback="false"; > fi; > fi; > fi; > if [[ ${fallback} == "true" ]]; 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"; > fi; > 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 <<-EOF > "${base}.c" >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-ld-is-lld () >{ > local out; > out=$($(tc-getLD "$@") --version 2>&1); > if [[ ${out} == *"LLD"* ]]; then > return 0; > fi; > local base="${T}/test-tc-lld"; > cat <<-EOF > "${base}.c" >int main() { return 0; } >EOF > > out=$($(tc-getCC "$@") ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} -Wl,--version "${base}.c" -o "${base}" 2>&1); > rm -f "${base}"*; > if [[ ${out} == *"LLD"* ]]; 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 >} >tc-tuple-is-softfloat () >{ > local CTARGET=${CTARGET:-${CHOST}}; > case ${CTARGET//_/-} in > bfin* | h8300*) > echo "only" > ;; > *-softfloat-*) > echo "yes" > ;; > *-softfp-*) > echo "softfp" > ;; > arm*-hardfloat-* | arm*eabihf) > echo "no" > ;; > *-newlib | *-elf | *-eabi) > echo "no" > ;; > arm*) > echo "yes" > ;; > *) > echo "no" > ;; > esac >} >test-flag-CC () >{ > test-flag-PROG "CC" c "$@" >} >test-flag-CCLD () >{ > test-flag-PROG "CC" c+ld "$@" >} >test-flag-CXX () >{ > test-flag-PROG "CXX" c++ "$@" >} >test-flag-F77 () >{ > test-flag-PROG "F77" f77 "$@" >} >test-flag-FC () >{ > test-flag-PROG "FC" f95 "$@" >} >test-flag-PROG () >{ > local comp=$1; > local lang=$2; > shift 2; > if [[ -z ${comp} ]]; then > return 1; > fi; > if [[ -z $1 ]]; then > return 1; > fi; > comp=($(tc-get${comp})); > if ! type -p ${comp[0]} > /dev/null; then > return 1; > fi; > local in_src in_ext cmdline_extra=(); > case "${lang}" in > c) > in_ext='c'; > in_src='int main(void) { return 0; }'; > cmdline_extra+=(-xc -c) > ;; > c++) > in_ext='cc'; > in_src='int main(void) { return 0; }'; > cmdline_extra+=(-xc++ -c) > ;; > f77) > in_ext='f'; > in_src=' end'; > cmdline_extra+=(-xf77 -c) > ;; > f95) > in_ext='f90'; > in_src='end'; > cmdline_extra+=(-xf95 -c) > ;; > c+ld) > in_ext='c'; > in_src='int main(void) { return 0; }'; > cmdline_extra+=(-xc) > ;; > esac; > local test_in=${T}/test-flag.${in_ext}; > local test_out=${T}/test-flag.exe; > printf "%s\n" "${in_src}" > "${test_in}" || die "Failed to create '${test_in}'"; > local cmdline=("${comp[@]}" -Werror "$@" "${cmdline_extra[@]}" "${test_in}" -o "${test_out}"); > if ! "${cmdline[@]}" &> /dev/null; then > cmdline+=(-Qunused-arguments); > "${cmdline[@]}" &> /dev/null; > fi >} >test-flags () >{ > test-flags-CC "$@" >} >test-flags-CC () >{ > test-flags-PROG "CC" "$@" >} >test-flags-CCLD () >{ > test-flags-PROG "CCLD" "$@" >} >test-flags-CXX () >{ > test-flags-PROG "CXX" "$@" >} >test-flags-F77 () >{ > test-flags-PROG "F77" "$@" >} >test-flags-FC () >{ > test-flags-PROG "FC" "$@" >} >test-flags-PROG () >{ > local comp=$1; > local flags=(); > local x; > shift; > [[ -z ${comp} ]] && return 1; > while (( $# )); do > case "$1" in > --param | -B) > if test-flag-${comp} "$1" "$2"; then > flags+=("$1" "$2"); > fi; > shift 2 > ;; > *) > if test-flag-${comp} "$1"; then > flags+=("$1"); > fi; > shift 1 > ;; > esac; > done; > echo "${flags[*]}"; > [[ ${#flags[@]} -gt 0 ]] >} >test_version_info () >{ > if [[ $($(tc-getCC) --version 2>&1) == *$1* ]]; then > return 0; > else > return 1; > fi >} >uclibctoolize () >{ > die "Use elibtoolize" >} >use_doc () >{ > use doc && echo ${@:-javadoc} >} >use_if_iuse () >{ > eqawarn "use_if_iuse is deprecated."; > eqawarn "Define it as a local function, or inline it:"; > eqawarn " in_iuse foo && use foo"; > in_iuse $1 || return 1; > use $1 >} >ver_cut () >{ > local range=${1}; > local v=${2:-${PV}}; > local start end; > local -a comp; > __eapi7_ver_split "${v}"; > local max=$((${#comp[@]}/2)); > __eapi7_ver_parse_range "${range}" "${max}"; > local IFS=; > if [[ ${start} -gt 0 ]]; then > start=$(( start*2 - 1 )); > fi; > echo "${comp[*]:start:end*2-start}" >} >ver_rs () >{ > local v; > (( ${#} & 1 )) && v=${@: -1} || v=${PV}; > local start end i; > local -a comp; > __eapi7_ver_split "${v}"; > local max=$((${#comp[@]}/2 - 1)); > while [[ ${#} -ge 2 ]]; do > __eapi7_ver_parse_range "${1}" "${max}"; > for ((i = start*2; i <= end*2; i+=2 )) > do > [[ ${i} -eq 0 && -z ${comp[i]} ]] && continue; > comp[i]=${2}; > done; > shift 2; > done; > local IFS=; > echo "${comp[*]}" >} >ver_test () >{ > local va op vb; > if [[ $# -eq 3 ]]; then > va=${1}; > shift; > else > va=${PVR}; > fi; > [[ $# -eq 2 ]] || die "${FUNCNAME}: bad number of arguments"; > op=${1}; > vb=${2}; > case ${op} in > -eq | -ne | -lt | -le | -gt | -ge) > > ;; > *) > die "${FUNCNAME}: invalid operator: ${op}" > ;; > esac; > __eapi7_ver_compare "${va}" "${vb}"; > test $? "${op}" 2 >}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 775413
:
690684
|
690687
| 690690 |
690693
|
690696
|
690699
|
690702