-
- declare -x ABI="arm64"
- declare -x ABI_MIPS=""
- declare -x ABI_PPC=""
- declare -x ABI_S390=""
- declare -x ABI_X86=""
- declare -x ALSA_CARDS=""
- declare -x APACHE2_MODULES=""
- declare -x APACHE2_MPMS=""
- declare -x ARCH="arm64"
- declare BDEPEND=""
- declare -x BOOTSTRAP_USE="cxx unicode internal-glib split-usr python_targets_python3_6 python_targets_python2_7 multilib"
- declare -x CALLIGRA_EXPERIMENTAL_FEATURES=""
- declare -x CALLIGRA_FEATURES=""
- declare -x CAMERAS=""
- declare -x CBUILD="aarch64-unknown-linux-gnu"
- declare -x CFLAGS="-march=armv8-a+crc -mtune=cortex-a53 -ftree-vectorize -O2 -pipe -fomit-frame-pointer -Wno-error"
- declare -x CFLAGS_default
- declare -x CHOST="aarch64-unknown-linux-gnu"
- declare -x CHOST_arm64="aarch64-unknown-linux-gnu"
- declare -x CHOST_default="aarch64-unknown-linux-gnu"
- declare -x COLLECTD_PLUGINS=""
- declare -x CONF_PREFIX="/usr"
- declare -x CPU_FLAGS_ARM=""
- declare -x CPU_FLAGS_X86=""
- declare -x CTARGET_default="aarch64-unknown-linux-gnu"
- declare -x CURL_SSL=""
- declare -x CXXFLAGS="-march=armv8-a+crc -mtune=cortex-a53 -ftree-vectorize -O2 -pipe -fomit-frame-pointer -Wno-error"
- declare -x DCC_EMAILLOG_WHOM_TO_BLAME=""
- declare -x DEFAULT_ABI="arm64"
- declare -x DEFINED_PHASES=" compile configure install prepare setup"
- declare DEPEND="
- dev-libs/lzo:2=
- sys-apps/util-linux:0=[static-libs(+)?]
- sys-libs/zlib:0=
- convert? (
- sys-fs/e2fsprogs:0=
- sys-libs/e2fsprogs-libs:0=
- reiserfs? (
- >=sys-fs/reiserfsprogs-3.6.27
- )
- )
- python? ( python_single_target_python3_4? ( dev-lang/python:3.4 ) python_single_target_python3_5? ( dev-lang/python:3.5 ) python_single_target_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_jython2_7(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python2_7(-),-python_single_target_python3_7(-),python_single_target_python3_4(+)?,python_single_target_python3_5(+)?,python_single_target_python3_6(+)?] )
- zstd? ( app-arch/zstd:0= )
-
- convert? ( sys-apps/acl )
- >=app-text/asciidoc-8.6.0
- app-text/docbook-xml-dtd:4.5
- app-text/xmlto
- python? ( dev-python/setuptools[python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_jython2_7(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python2_7(-),-python_single_target_python3_7(-),python_single_target_python3_4(+)?,python_single_target_python3_5(+)?,python_single_target_python3_6(+)?] )
- static? (
- dev-libs/lzo:2[static-libs(+)]
- sys-apps/util-linux:0[static-libs(+)]
- sys-libs/zlib:0[static-libs(+)]
- convert? (
- sys-fs/e2fsprogs:0[static-libs(+)]
- sys-libs/e2fsprogs-libs:0[static-libs(+)]
- reiserfs? (
- >=sys-fs/reiserfsprogs-3.6.27[static-libs(+)]
- )
- )
- zstd? ( app-arch/zstd:0[static-libs(+)] )
- )
- "
- declare DESCRIPTION="Btrfs filesystem utilities"
- declare -x DESTTREE="/usr"
- declare -x DIROPTIONS="-m0755"
- declare -x EAPI="6"
- declare -- ECONF_SOURCE="."
- declare -x ELIBC="glibc"
- declare -x ENLIGHTENMENT_MODULES=""
- declare -x ENV_UNSET="DBUS_SESSION_BUS_ADDRESS DISPLAY 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 -x EVCS_OFFLINE="1"
- declare -x EXEOPTIONS="-m0755"
- declare -x FCFLAGS="-O2"
- 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"
- declare -x FFTOOLS=""
- declare -x GCC_SPECS=""
- declare -x GENTOO_WS="/home/Necktwi/workspace/Gentoo/"
- declare -x GPSD_PROTOCOLS=""
- declare -x GRUB_PLATFORMS=""
- declare HDEPEND=""
- declare HOMEPAGE="https://btrfs.wiki.kernel.org"
- declare -x INCLUDE_SERVER_DIR="/tmp/distcc-pump.2CxOJT"
- declare -x INCLUDE_SERVER_PID="19648"
- declare -x INCLUDE_SERVER_PORT="/tmp/distcc-pump.2CxOJT/socket"
- declare -x INHERITED=" toolchain-funcs multilib bash-completion-r1 python-utils-r1 python-single-r1"
- declare -x INPUT_DEVICES=""
- declare -x INSDESTTREE=""
- declare -x INSOPTIONS="-m0644"
- declare IUSE="+convert python reiserfs static static-libs +zstd python_targets_python3_4 python_targets_python3_5 python_targets_python3_6 python_single_target_python3_4 python_single_target_python3_5 python_single_target_python3_6"
- declare -x IUSE_EFFECTIVE="alpha amd64 amd64-fbsd amd64-linux arm arm64 convert elibc_AIX elibc_Cygwin elibc_Darwin elibc_DragonFly elibc_FreeBSD elibc_HPUX elibc_Interix elibc_NetBSD elibc_OpenBSD elibc_SunOS elibc_Winnt elibc_bionic elibc_glibc elibc_mingw elibc_mintlib elibc_musl elibc_uclibc hppa ia64 kernel_AIX kernel_Darwin kernel_FreeBSD kernel_HPUX kernel_NetBSD kernel_OpenBSD kernel_SunOS kernel_Winnt kernel_freemint kernel_linux m68k m68k-mint mips ppc ppc-aix ppc-macos ppc64 ppc64-linux prefix prefix-chain prefix-guest python python_single_target_python3_4 python_single_target_python3_5 python_single_target_python3_6 python_targets_python3_4 python_targets_python3_5 python_targets_python3_6 reiserfs s390 sh sparc sparc-solaris sparc64-solaris static static-libs userland_BSD userland_GNU x64-cygwin x64-macos x64-solaris x86 x86-cygwin x86-fbsd x86-linux x86-macos x86-solaris x86-winnt zstd"
- declare -x IUSE_IMPLICIT="prefix prefix-chain prefix-guest"
- declare -x KERNEL="linux"
- declare -x KERNEL_ABI="arm64"
- declare -x KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86"
- declare -x L10N=""
- declare -x LANG="en_US.utf8"
- declare -x LANGUAGE="en_US.utf8"
- declare -x LCD_DEVICES=""
- declare -x LC_ADDRESS="en_US.utf8"
- declare -x LC_COLLATE="C"
- declare -x LC_CTYPE="en_US.utf8"
- declare -x LC_IDENTIFICATION="en_US.utf8"
- declare -x LC_MEASUREMENT="en_US.utf8"
- declare -x LC_MESSAGES="en_US.utf8"
- declare -x LC_MONETARY="en_US.utf8"
- declare -x LC_NAME="en_US.utf8"
- declare -x LC_NUMERIC="en_US.utf8"
- declare -x LC_PAPER="en_US.utf8"
- declare -x LC_TELEPHONE="en_US.utf8"
- declare -x LC_TIME="en_US.utf8"
- declare -x LDFLAGS="-Wl,-O1 -Wl,--as-needed"
- declare -x LDFLAGS_default
- declare -x LIBDIR_arm64="lib64"
- declare -x LIBDIR_default="lib"
- declare -x LIBOPTIONS="-m0644"
- declare -x LIBREOFFICE_EXTENSIONS=""
- declare -x LICENSE="GPL-2"
- declare -x LIRC_DEVICES=""
- declare -x LLVM_TARGETS=""
- declare -x MAIL="/var/mail/Necktwi"
- declare -x MAKEOPTS="-j1"
- declare -x MANPAGER="manpager"
- declare -x MONKEYD_PLUGINS=""
- declare -x MULTILIB_ABIS="arm64"
- declare -x MULTILIB_STRICT_DENY="64-bit.*shared object"
- declare -x MULTILIB_STRICT_DIRS="/lib32 /lib /usr/lib32 /usr/lib /usr/kde/*/lib32 /usr/kde/*/lib /usr/qt/*/lib32 /usr/qt/*/lib /usr/X11R6/lib32 /usr/X11R6/lib"
- declare -x MULTILIB_STRICT_EXEMPT="(perl5|gcc|gcc-lib|binutils|eclipse-3|debug|portage|udev|systemd|clang|python-exec|llvm)"
- declare -- MY_PV="v4.17.1"
- declare -x NETBEANS="apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml"
- declare -x NETBEANS_MODULES=""
- declare -x NGINX_MODULES_HTTP=""
- declare -x NGINX_MODULES_MAIL=""
- declare -x NGINX_MODULES_STREAM=""
- declare -x OFED_DRIVERS=""
- declare -x OFFICE_IMPLEMENTATION=""
- declare -x OPENMPI_FABRICS=""
- declare -x OPENMPI_OFED_FEATURES=""
- declare -x OPENMPI_RM=""
- declare -a PATCHES=([0]="/var/tmp/portage/sys-fs/btrfs-progs-4.17.1/files/btrfs-progs-man-no-gz.patch")
- declare -x PATH="/usr/lib/ccache/bin:/usr/lib64/distcc/bin:/usr/lib/portage/python3.6/ebuild-helpers/xattr:/usr/lib/portage/python3.6/ebuild-helpers:/usr/aarch64-RPi3B-linux-musl/gcc-bin/8.2.0:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin"
- declare PDEPEND=""
- declare -x PHP_TARGETS=""
- declare -x PKG_CONFIG_PATH="/usr/lib/pkgconfig/"
- 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/btrfs-progs-4.17.1/html")
- declare -a PORTAGE_DOSTRIP=([0]="/")
- declare -a PORTAGE_DOSTRIP_SKIP=()
- declare -x POSTGRES_TARGETS=""
- 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 PYTHONDONTWRITEBYTECODE="1"
- declare -a PYTHON_COMPAT=([0]="python3_4" [1]="python3_5" [2]="python3_6")
- declare -- PYTHON_DEPS="python_single_target_python3_4? ( dev-lang/python:3.4 ) python_single_target_python3_5? ( dev-lang/python:3.5 ) python_single_target_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_jython2_7(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python2_7(-),-python_single_target_python3_7(-),python_single_target_python3_4(+)?,python_single_target_python3_5(+)?,python_single_target_python3_6(+)?]"
- declare -- PYTHON_REQUIRED_USE="^^ ( python_single_target_python3_4 python_single_target_python3_5 python_single_target_python3_6 ) python_single_target_python3_4? ( python_targets_python3_4 ) python_single_target_python3_5? ( python_targets_python3_5 ) python_single_target_python3_6? ( python_targets_python3_6 )"
- declare -x PYTHON_SINGLE_TARGET="python3_6"
- declare -x PYTHON_TARGETS="python3_6"
- declare -- PYTHON_USEDEP="python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_jython2_7(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python2_7(-),-python_single_target_python3_7(-),python_single_target_python3_4(+)?,python_single_target_python3_5(+)?,python_single_target_python3_6(+)?"
- declare -x QEMU_SOFTMMU_TARGETS=""
- declare -x QEMU_USER_TARGETS=""
- declare RDEPEND="
- dev-libs/lzo:2=
- sys-apps/util-linux:0=[static-libs(+)?]
- sys-libs/zlib:0=
- convert? (
- sys-fs/e2fsprogs:0=
- sys-libs/e2fsprogs-libs:0=
- reiserfs? (
- >=sys-fs/reiserfsprogs-3.6.27
- )
- )
- python? ( python_single_target_python3_4? ( dev-lang/python:3.4 ) python_single_target_python3_5? ( dev-lang/python:3.5 ) python_single_target_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_jython2_7(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python2_7(-),-python_single_target_python3_7(-),python_single_target_python3_4(+)?,python_single_target_python3_5(+)?,python_single_target_python3_6(+)?] )
- zstd? ( app-arch/zstd:0= )
- "
- declare REPOSITORY
- declare REQUIRED_USE="python? ( ^^ ( python_single_target_python3_4 python_single_target_python3_5 python_single_target_python3_6 ) python_single_target_python3_4? ( python_targets_python3_4 ) python_single_target_python3_5? ( python_targets_python3_5 ) python_single_target_python3_6? ( python_targets_python3_6 ) ) "
- declare -x RESTRICT="test"
- declare -x RESUMECOMMAND_SSH="bash -c \"x=\\\${2#ssh://} ; host=\\\${x%%/*} ; port=\\\${host##*:} ; host=\\\${host%:*} ; [[ \\\${host} = \\\${port} ]] && port= ; exec rsync --rsh=\\\"ssh \\\${port:+-p\\\${port}} \\\${3}\\\" -avP \\\"\\\${host}:/\\\${x#*/}\\\" \\\"\\\$1\\\"\" rsync \"\${DISTDIR}/\${FILE}\" \"\${URI}\" \"\${PORTAGE_SSH_OPTS}\""
- declare -x ROS_MESSAGES=""
- declare -x RUBY_TARGETS=""
- declare -x S="/var/tmp/portage/sys-fs/btrfs-progs-4.17.1/work/btrfs-progs-v4.17.1"
- declare -x SANDBOX_DEBUG="0"
- declare -x SANDBOX_DENY=""
- declare -x SANDBOX_PREDICT="/var/tmp/portage/sys-fs/btrfs-progs-4.17.1/homedir"
- declare -x SANDBOX_READ="/:/var/CCache:/var/tmp"
- declare -x SANDBOX_VERBOSE="1"
- declare -x SANDBOX_WRITE=":/dev/console:/dev/fd:/dev/full:/dev/null:/dev/ptmx:/dev/pts/:/dev/pty:/dev/shm:/dev/tts:/dev/tty:/dev/vc/:/dev/zero:/proc/self/fd:/tmp/:/usr/lib/cf:/usr/lib/conftest:/usr/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/tmp/cf:/usr/tmp/conftest:/var/CCache:/var/tmp:/var/tmp/:/var/tmp/portage/sys-fs/btrfs-progs-4.17.1/homedir/.bash_history:/var/tmp/portage/.distcc/"
- declare -x SANE_BACKENDS=""
- declare -x SHELL="/bin/bash"
- declare -x SLOT="0/0"
- declare SRC_URI="https://www.kernel.org/pub/linux/kernel/people/kdave/btrfs-progs/btrfs-progs-v4.17.1.tar.xz"
- declare -x SSH_CLIENT="192.168.2.21 50679 22"
- declare -x SSH_CONNECTION="192.168.2.21 50679 192.168.2.23 22"
- declare -x SSH_TTY="/dev/pts/0"
- declare -x TWISTED_DISABLE_WRITING_OF_PLUGIN_CACHE="1"
- declare -x UNCACHED_ERR_FD=""
- declare -x USE="arm64 convert elibc_glibc kernel_linux python_single_target_python3_6 python_targets_python3_6 userland_GNU zstd"
- 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 hppa ia64 m68k m68k-mint mips ppc ppc64 ppc64-linux ppc-aix ppc-macos s390 sh sparc sparc64-solaris sparc-solaris x64-cygwin x64-macos x64-solaris x86 x86-cygwin x86-fbsd x86-linux x86-macos x86-solaris x86-winnt"
- declare -x USE_EXPAND_VALUES_ELIBC="AIX bionic Cygwin Darwin DragonFly FreeBSD glibc HPUX Interix mingw mintlib musl NetBSD OpenBSD SunOS uclibc Winnt"
- declare -x USE_EXPAND_VALUES_KERNEL="AIX Darwin FreeBSD freemint HPUX linux NetBSD OpenBSD SunOS Winnt"
- declare -x USE_EXPAND_VALUES_USERLAND="BSD GNU"
- declare -x UWSGI_PLUGINS=""
- declare -x VIDEO_CARDS=""
- declare -x VISUAL="emacs"
- declare -x VOICEMAIL_STORAGE=""
- declare -x XFCE_PLUGINS=""
- declare -x XTABLES_ADDONS=""
- declare -x _E_DOCDESTTREE_=""
- declare -x _E_EXEDESTTREE_=""
- declare -- _MULTILIB_ECLASS="1"
- declare -a _PYTHON_ALL_IMPLS=([0]="jython2_7" [1]="pypy" [2]="pypy3" [3]="python2_7" [4]="python3_4" [5]="python3_5" [6]="python3_6" [7]="python3_7")
- declare -- _PYTHON_SINGLE_R1="1"
- declare -a _PYTHON_SUPPORTED_IMPLS=([0]="python3_4" [1]="python3_5" [2]="python3_6")
- declare -a _PYTHON_UNSUPPORTED_IMPLS=([0]="jython2_7" [1]="pypy" [2]="pypy3" [3]="python2_7" [4]="python3_7")
- declare -- _PYTHON_UTILS_R1="1"
- declare -- _TOOLCHAIN_FUNCS_ECLASS="1"
- declare -x export
- declare -- libbtrfs_soname="0"
- declare -- phase_func
- declare -- started_applying="1"
- PYTHON ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#.24.28PYTHON.29.2C_.24.7BEPYTHON.7D"
- }
- __eapi6_src_install ()
- {
- if [[ -f Makefile || -f GNUmakefile || -f makefile ]]; then
- emake DESTDIR="${D}" install;
- fi;
- einstalldocs
- }
- __eapi6_src_prepare ()
- {
- if [[ $(declare -p PATCHES 2>/dev/null) == "declare -a"* ]]; then
- [[ ${#PATCHES[@]} -gt 0 ]] && eapply "${PATCHES[@]}";
- else
- if [[ -n ${PATCHES} ]]; then
- eapply ${PATCHES};
- fi;
- fi;
- eapply_user
- }
- _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"
- }
- _eapply_patch ()
- {
- local f=${1};
- local prefix=${2};
- started_applying=1;
- ebegin "${prefix:-Applying }${f##*/}";
- ${patch_cmd} -p1 -f -s -g0 --no-backup-if-mismatch "${patch_options[@]}" < "${f}";
- failed=${?};
- if ! eend "${failed}"; then
- __helpers_die "patch -p1 ${patch_options[*]} failed with ${f}";
- fi
- }
- _gcc-install-dir ()
- {
- echo "$(LC_ALL=C $(tc-getCC) -print-search-dirs 2> /dev/null | awk '$1=="install:" {print $2}')"
- }
- _gcc-specs-directive_raw ()
- {
- local cc=$(tc-getCC);
- local specfiles=$(LC_ALL=C ${cc} -v 2>&1 | awk '$1=="Reading" {print $NF}');
- ${cc} -dumpspecs 2> /dev/null | cat - ${specfiles} | awk -v directive=$1 'BEGIN { pspec=""; spec=""; outside=1 }
- $1=="*"directive":" { pspec=spec; spec=""; outside=0; next }
- outside || NF==0 || ( substr($1,1,1)=="*" && substr($1,length($1),1)==":" ) { outside=1; next }
- spec=="" && substr($0,1,1)=="+" { spec=pspec " " substr($0,2); next }
- { spec=spec $0 }
- END { print spec }';
- return 0
- }
- _gcc-specs-exists ()
- {
- [[ -f $(_gcc-install-dir)/$1 ]]
- }
- _gcc_fullversion ()
- {
- local ver="$1";
- shift;
- set -- $($(tc-getCPP "$@") -E -P - <<<"__GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__");
- eval echo "$ver"
- }
- _python_check_dead_variables ()
- {
- local v;
- for v in PYTHON_DEPEND PYTHON_USE_WITH{,_OR,_OPT} {RESTRICT,SUPPORT}_PYTHON_ABIS;
- do
- if [[ -n ${!v} ]]; then
- die "${v} is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#Ebuild_head";
- fi;
- done;
- for v in PYTHON_{CPPFLAGS,CFLAGS,CXXFLAGS,LDFLAGS};
- do
- if [[ -n ${!v} ]]; then
- die "${v} is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#PYTHON_CFLAGS";
- fi;
- done;
- for v in PYTHON_TESTS_RESTRICTED_ABIS PYTHON_EXPORT_PHASE_FUNCTIONS PYTHON_VERSIONED_{SCRIPTS,EXECUTABLES} PYTHON_NONVERSIONED_EXECUTABLES;
- do
- if [[ -n ${!v} ]]; then
- die "${v} is invalid for python-r1 suite";
- fi;
- done;
- for v in DISTUTILS_USE_SEPARATE_SOURCE_DIRECTORIES DISTUTILS_SETUP_FILES DISTUTILS_GLOBAL_OPTIONS DISTUTILS_SRC_TEST PYTHON_MODNAME;
- do
- if [[ -n ${!v} ]]; then
- die "${v} is invalid for distutils-r1, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#${v}";
- fi;
- done;
- if [[ -n ${DISTUTILS_DISABLE_TEST_DEPENDENCY} ]]; then
- die "${v} is invalid for distutils-r1, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#DISTUTILS_SRC_TEST";
- fi;
- for v in PYTHON_BDEPEND PYTHON_MULTIPLE_ABIS PYTHON_ABI_TYPE PYTHON_RESTRICTED_ABIS PYTHON_TESTS_FAILURES_TOLERANT_ABIS PYTHON_CFFI_MODULES_GENERATION_COMMANDS;
- do
- if [[ -n ${!v} ]]; then
- die "${v} is invalid for python-r1 suite";
- fi;
- done
- }
- _python_check_locale_sanity ()
- {
- local -x LC_ALL=${1};
- local IFS=;
- local lc=({a..z});
- local uc=({A..Z});
- local input="${lc[*]}${uc[*]}";
- local output=$(tr '[:lower:][:upper:]' '[:upper:][:lower:]' <<<"${input}");
- [[ ${output} == "${uc[*]}${lc[*]}" ]]
- }
- _python_impl_matches ()
- {
- [[ ${#} -ge 2 ]] || die "${FUNCNAME}: takes at least 2 parameters";
- local impl=${1} pattern;
- shift;
- for pattern in "$@";
- do
- if [[ ${pattern} == -2 ]]; then
- ! python_is_python3 "${impl}";
- return;
- else
- if [[ ${pattern} == -3 ]]; then
- python_is_python3 "${impl}";
- return;
- else
- if [[ ${impl/./_} == ${pattern/./_} ]]; then
- return 0;
- fi;
- fi;
- fi;
- done;
- return 1
- }
- _python_impl_supported ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- [[ ${#} -eq 1 ]] || die "${FUNCNAME}: takes exactly 1 argument (impl).";
- local impl=${1};
- case "${impl}" in
- python2_7 | python3_[4567] | jython2_7)
- return 0
- ;;
- pypy1_[89] | pypy2_0 | python2_[56] | python3_[123])
- return 1
- ;;
- pypy | pypy3)
- if [[ ${EAPI:-0} == [01234] ]]; then
- die "PyPy is supported in EAPI 5 and newer only.";
- fi
- ;;
- *)
- [[ -n ${PYTHON_COMPAT_NO_STRICT} ]] && return 1;
- die "Invalid implementation in PYTHON_COMPAT: ${impl}"
- ;;
- esac
- }
- _python_ln_rel ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local target=${1};
- local symname=${2};
- local tgpath=${target%/*}/;
- local sympath=${symname%/*}/;
- local rel_target=;
- while [[ -n ${sympath} ]]; do
- local tgseg= symseg=;
- while [[ ! -n ${tgseg} && -n ${tgpath} ]]; do
- tgseg=${tgpath%%/*};
- tgpath=${tgpath#${tgseg}/};
- done;
- while [[ ! -n ${symseg} && -n ${sympath} ]]; do
- symseg=${sympath%%/*};
- sympath=${sympath#${symseg}/};
- done;
- if [[ ${tgseg} != ${symseg} ]]; then
- rel_target=../${rel_target}${tgseg:+${tgseg}/};
- fi;
- done;
- rel_target+=${tgpath}${target##*/};
- debug-print "${FUNCNAME}: ${symname} -> ${target}";
- debug-print "${FUNCNAME}: rel_target = ${rel_target}";
- ln -fs "${rel_target}" "${symname}"
- }
- _python_set_impls ()
- {
- local i;
- if ! declare -p PYTHON_COMPAT &> /dev/null; then
- die 'PYTHON_COMPAT not declared.';
- fi;
- if [[ $(declare -p PYTHON_COMPAT) != "declare -a"* ]]; then
- die 'PYTHON_COMPAT must be an array.';
- fi;
- for i in "${PYTHON_COMPAT[@]}";
- do
- _python_impl_supported "${i}";
- done;
- 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
- die "No supported implementation in PYTHON_COMPAT.";
- 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
- }
- _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}"
- }
- 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
- }
- 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' "$@"
- }
- dobashcomp ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- ( insopts -m 0644;
- insinto "$(_bash-completion-r1_get_bashcompdir)";
- doins "${@}" )
- }
- 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};
- started_applying=1;
- ebegin "${prefix:-Applying }${f##*/}";
- ${patch_cmd} -p1 -f -s -g0 --no-backup-if-mismatch "${patch_options[@]}" < "${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."
- }
- econf_build ()
- {
- local CBUILD=${CBUILD:-${CHOST}};
- tc-env_build econf --build=${CBUILD} --host=${CBUILD} "$@"
- }
- einstalldocs ()
- {
- ( if ! declare -p DOCS &> /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 [[ $(declare -p DOCS) == "declare -a"* ]]; then
- [[ ${#DOCS[@]} -gt 0 ]] && docinto / && dodoc -r "${DOCS[@]}";
- else
- [[ -n ${DOCS} ]] && docinto / && dodoc -r ${DOCS};
- fi;
- fi );
- ( if [[ $(declare -p HTML_DOCS 2>/dev/null) == "declare -a"* ]]; then
- [[ ${#HTML_DOCS[@]} -gt 0 ]] && docinto html && dodoc -r "${HTML_DOCS[@]}";
- else
- [[ -n ${HTML_DOCS} ]] && docinto html && dodoc -r ${HTML_DOCS};
- fi )
- }
- gcc-fullversion ()
- {
- _gcc_fullversion '$1.$2.$3' "$@"
- }
- gcc-major-version ()
- {
- _gcc_fullversion '$1' "$@"
- }
- gcc-micro-version ()
- {
- _gcc_fullversion '$3' "$@"
- }
- gcc-minor-version ()
- {
- _gcc_fullversion '$2' "$@"
- }
- gcc-specs-directive ()
- {
- local directive subdname subdirective;
- directive="$(_gcc-specs-directive_raw $1)";
- while [[ ${directive} == *%\(*\)* ]]; do
- subdname=${directive/*%\(};
- subdname=${subdname/\)*};
- subdirective="$(_gcc-specs-directive_raw ${subdname})";
- directive="${directive//\%(${subdname})/${subdirective}}";
- done;
- echo "${directive}";
- return 0
- }
- gcc-specs-nostrict ()
- {
- local directive;
- directive=$(gcc-specs-directive cc1);
- [[ "${directive/\{!fstrict-overflow:}" != "${directive}" ]]
- }
- gcc-specs-now ()
- {
- local directive;
- directive=$(gcc-specs-directive link_command);
- [[ "${directive/\{!nonow:}" != "${directive}" ]]
- }
- gcc-specs-pie ()
- {
- local directive;
- directive=$(gcc-specs-directive cc1);
- [[ "${directive/\{!nopie:}" != "${directive}" ]]
- }
- gcc-specs-relro ()
- {
- local directive;
- directive=$(gcc-specs-directive link_command);
- [[ "${directive/\{!norelro:}" != "${directive}" ]]
- }
- gcc-specs-ssp ()
- {
- local directive;
- directive=$(gcc-specs-directive cc1);
- [[ "${directive/\{!fno-stack-protector:}" != "${directive}" ]]
- }
- gcc-specs-ssp-to-all ()
- {
- local directive;
- directive=$(gcc-specs-directive cc1);
- [[ "${directive/\{!fno-stack-protector-all:}" != "${directive}" ]]
- }
- gcc-specs-stack-check ()
- {
- local directive;
- directive=$(gcc-specs-directive cc1);
- [[ "${directive/\{!fno-stack-check:}" != "${directive}" ]]
- }
- gcc-version ()
- {
- _gcc_fullversion '$1.$2' "$@"
- }
- gen_usr_ldscript ()
- {
- local lib libdir=$(get_libdir) output_format="" auto=false suffix=$(get_libname);
- [[ -z ${ED+set} ]] && local ED=${D%/}${EPREFIX}/;
- tc-is-static-only && return;
- if [[ $(type -t multilib_is_native_abi) == "function" ]]; then
- multilib_is_native_abi || return 0;
- fi;
- case ${CTARGET:-${CHOST}} in
- *-darwin*)
-
- ;;
- *-android*)
- return 0
- ;;
- *linux* | *-freebsd* | *-openbsd* | *-netbsd*)
- use prefix && return 0
- ;;
- *)
- return 0
- ;;
- esac;
- dodir /usr/${libdir};
- if [[ $1 == "-a" ]]; then
- auto=true;
- shift;
- dodir /${libdir};
- fi;
- local flags=(${CFLAGS} ${LDFLAGS} -Wl,--verbose);
- if $(tc-getLD) --version | grep -q 'GNU gold'; then
- local d="${T}/bfd-linker";
- mkdir -p "${d}";
- ln -sf $(which ${CHOST}-ld.bfd) "${d}"/ld;
- flags+=(-B"${d}");
- fi;
- output_format=$($(tc-getCC) "${flags[@]}" 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/\1/p');
- [[ -n ${output_format} ]] && output_format="OUTPUT_FORMAT ( ${output_format} )";
- for lib in "$@";
- do
- local tlib;
- if ${auto}; then
- lib="lib${lib}${suffix}";
- else
- [[ -r ${ED}/${libdir}/${lib} ]] || continue;
- fi;
- case ${CTARGET:-${CHOST}} in
- *-darwin*)
- if ${auto}; then
- tlib=$(scanmacho -qF'%S#F' "${ED}"/usr/${libdir}/${lib});
- else
- tlib=$(scanmacho -qF'%S#F' "${ED}"/${libdir}/${lib});
- fi;
- [[ -z ${tlib} ]] && die "unable to read install_name from ${lib}";
- tlib=${tlib##*/};
- if ${auto}; then
- mv "${ED}"/usr/${libdir}/${lib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die;
- if [[ ${tlib} != ${lib%${suffix}}.*${suffix#.} ]]; then
- mv "${ED}"/usr/${libdir}/${tlib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die;
- fi;
- rm -f "${ED}"/${libdir}/${lib};
- fi;
- if [[ ! -w "${ED}/${libdir}/${tlib}" ]]; then
- chmod u+w "${ED}${libdir}/${tlib}";
- local nowrite=yes;
- fi;
- install_name_tool -id "${EPREFIX}"/${libdir}/${tlib} "${ED}"/${libdir}/${tlib} || die "install_name_tool failed";
- [[ -n ${nowrite} ]] && chmod u-w "${ED}${libdir}/${tlib}";
- pushd "${ED}/usr/${libdir}" > /dev/null;
- ln -snf "../../${libdir}/${tlib}" "${lib}";
- popd > /dev/null
- ;;
- *)
- if ${auto}; then
- tlib=$(scanelf -qF'%S#F' "${ED}"/usr/${libdir}/${lib});
- [[ -z ${tlib} ]] && die "unable to read SONAME from ${lib}";
- mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die;
- if [[ ${tlib} != ${lib}* ]]; then
- mv "${ED}"/usr/${libdir}/${tlib}* "${ED}"/${libdir}/ || die;
- fi;
- rm -f "${ED}"/${libdir}/${lib};
- else
- tlib=${lib};
- fi;
- cat > "${ED}/usr/${libdir}/${lib}" <<-END_LDSCRIPT
- /* GNU ld script
- Since Gentoo has critical dynamic libraries in /lib, and the static versions
- in /usr/lib, we need to have a "fake" dynamic lib in /usr/lib, otherwise we
- run into linking problems. This "fake" dynamic lib is a linker script that
- redirects the linker to the real lib. And yes, this works in the cross-
- compiling scenario as the sysroot-ed linker will prepend the real path.
-
- See bug https://bugs.gentoo.org/4411 for more info.
- */
- ${output_format}
- GROUP ( ${EPREFIX}/${libdir}/${tlib} )
- END_LDSCRIPT
-
- ;;
- esac
- fperms a+x "/usr/${libdir}/${lib}" || die "could not change perms on ${lib}";
- done
- }
- get_abi_CFLAGS ()
- {
- get_abi_var CFLAGS "$@"
- }
- get_abi_CHOST ()
- {
- get_abi_var CHOST "$@"
- }
- get_abi_CTARGET ()
- {
- get_abi_var CTARGET "$@"
- }
- get_abi_FAKE_TARGETS ()
- {
- get_abi_var FAKE_TARGETS "$@"
- }
- get_abi_LDFLAGS ()
- {
- get_abi_var LDFLAGS "$@"
- }
- get_abi_LIBDIR ()
- {
- get_abi_var LIBDIR "$@"
- }
- get_abi_var ()
- {
- local flag=$1;
- local abi=${2:-${ABI:-${DEFAULT_ABI:-default}}};
- local var="${flag}_${abi}";
- echo ${!var}
- }
- get_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}"
- }
- 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[@]#[+-]}"
- }
- is_final_abi ()
- {
- has_multilib_profile || return 0;
- set -- $(get_install_abis);
- local LAST_ABI=$#;
- [[ ${!LAST_ABI} == ${ABI} ]]
- }
- multilib_env ()
- {
- local CTARGET=${1:-${CTARGET}};
- local cpu=${CTARGET%%*-};
- case ${cpu} in
- aarch64*)
- export CFLAGS_arm=${CFLAGS_arm-};
- case ${cpu} in
- aarch64*be)
- export CHOST_arm="armv8b-${CTARGET#*-}"
- ;;
- *)
- export CHOST_arm="armv8l-${CTARGET#*-}"
- ;;
- esac;
- CHOST_arm=${CHOST_arm/%-gnu/-gnueabi};
- export CTARGET_arm=${CHOST_arm};
- export LIBDIR_arm="lib";
- export CFLAGS_arm64=${CFLAGS_arm64-};
- export CHOST_arm64=${CTARGET};
- export CTARGET_arm64=${CHOST_arm64};
- export LIBDIR_arm64="lib64";
- : ${MULTILIB_ABIS=arm64};
- : ${DEFAULT_ABI=arm64}
- ;;
- x86_64*)
- export CFLAGS_x86=${CFLAGS_x86--m32};
- export CHOST_x86=${CTARGET/x86_64/i686};
- CHOST_x86=${CHOST_x86/%-gnux32/-gnu};
- export CTARGET_x86=${CHOST_x86};
- if [[ ${SYMLINK_LIB} == "yes" ]]; then
- export LIBDIR_x86="lib32";
- else
- export LIBDIR_x86="lib";
- fi;
- export CFLAGS_amd64=${CFLAGS_amd64--m64};
- export CHOST_amd64=${CTARGET/%-gnux32/-gnu};
- export CTARGET_amd64=${CHOST_amd64};
- export LIBDIR_amd64="lib64";
- export CFLAGS_x32=${CFLAGS_x32--mx32};
- export CHOST_x32=${CTARGET/%-gnu/-gnux32};
- export CTARGET_x32=${CHOST_x32};
- export LIBDIR_x32="libx32";
- case ${CTARGET} in
- *-gnux32)
- : ${MULTILIB_ABIS=x32 amd64 x86};
- : ${DEFAULT_ABI=x32}
- ;;
- *)
- : ${MULTILIB_ABIS=amd64 x86};
- : ${DEFAULT_ABI=amd64}
- ;;
- esac
- ;;
- mips64* | 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}
- ;;
- s390x*)
- export CFLAGS_s390=${CFLAGS_s390--m31};
- export CHOST_s390=${CTARGET/s390x/s390};
- export CTARGET_s390=${CHOST_s390};
- export LIBDIR_s390="lib";
- export CFLAGS_s390x=${CFLAGS_s390x--m64};
- export CHOST_s390x=${CTARGET};
- export CTARGET_s390x=${CHOST_s390x};
- export LIBDIR_s390x="lib64";
- : ${MULTILIB_ABIS=s390x s390};
- : ${DEFAULT_ABI=s390x}
- ;;
- sparc64*)
- export CFLAGS_sparc32=${CFLAGS_sparc32--m32};
- export CHOST_sparc32=${CTARGET/sparc64/sparc};
- export CTARGET_sparc32=${CHOST_sparc32};
- export LIBDIR_sparc32="lib";
- export CFLAGS_sparc64=${CFLAGS_sparc64--m64};
- export CHOST_sparc64=${CTARGET};
- export CTARGET_sparc64=${CHOST_sparc64};
- export LIBDIR_sparc64="lib64";
- : ${MULTILIB_ABIS=sparc64 sparc32};
- : ${DEFAULT_ABI=sparc64}
- ;;
- *)
- : ${MULTILIB_ABIS=default};
- : ${DEFAULT_ABI=default}
- ;;
- esac;
- export MULTILIB_ABIS DEFAULT_ABI
- }
- multilib_toolchain_setup ()
- {
- local v vv;
- export ABI=$1;
- if [[ ${_DEFAULT_ABI_SAVED} == "true" ]]; then
- for v in CHOST CBUILD AS CC CXX F77 FC LD PKG_CONFIG_{LIBDIR,PATH};
- do
- vv="_abi_saved_${v}";
- [[ ${!vv+set} == "set" ]] && export ${v}="${!vv}" || unset ${v};
- unset ${vv};
- done;
- unset _DEFAULT_ABI_SAVED;
- fi;
- if [[ ${ABI} != ${DEFAULT_ABI} ]]; then
- for v in CHOST CBUILD AS CC CXX F77 FC LD PKG_CONFIG_{LIBDIR,PATH};
- do
- vv="_abi_saved_${v}";
- [[ ${!v+set} == "set" ]] && export ${vv}="${!v}" || unset ${vv};
- done;
- export _DEFAULT_ABI_SAVED="true";
- if [[ ${CBUILD} == "${CHOST}" ]]; then
- export CBUILD=$(get_abi_CHOST $1);
- fi;
- export CHOST=$(get_abi_CHOST ${DEFAULT_ABI});
- export CC="$(tc-getCC) $(get_abi_CFLAGS)";
- export CXX="$(tc-getCXX) $(get_abi_CFLAGS)";
- export F77="$(tc-getF77) $(get_abi_CFLAGS)";
- export FC="$(tc-getFC) $(get_abi_CFLAGS)";
- export LD="$(tc-getLD) $(get_abi_LDFLAGS)";
- export CHOST=$(get_abi_CHOST $1);
- export PKG_CONFIG_LIBDIR=${EPREFIX}/usr/$(get_libdir)/pkgconfig;
- export PKG_CONFIG_PATH=${EPREFIX}/usr/share/pkgconfig;
- fi
- }
- newbashcomp ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- ( insopts -m 0644;
- insinto "$(_bash-completion-r1_get_bashcompdir)";
- newins "${@}" )
- }
- number_abis ()
- {
- set -- `get_install_abis`;
- echo $#
- }
- pkg_nofetch ()
- {
- default
- }
- pkg_setup ()
- {
- use python && python-single-r1_pkg_setup
- }
- python-single-r1_pkg_setup ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- [[ ${MERGE_TYPE} != binary ]] && python_setup
- }
- python_abi_depend ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_byte-compile_modules ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_clean_byte-compiled_modules ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_clean_installation_image ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_clean_py-compile_files ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_convert_shebangs ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#python_convert_shebangs"
- }
- python_disable_pyc ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_doexe ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local f;
- for f in "$@";
- do
- python_newexe "${f}" "${f##*/}";
- done
- }
- python_doheader ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- [[ -n ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).';
- if [[ ${EAPI:-0} == [0123] ]]; then
- die "python_do* and python_new* helpers are banned in EAPIs older than 4.";
- fi;
- local d PYTHON_INCLUDEDIR=${PYTHON_INCLUDEDIR};
- [[ -n ${PYTHON_INCLUDEDIR} ]] || python_export PYTHON_INCLUDEDIR;
- d=${PYTHON_INCLUDEDIR#${EPREFIX}};
- ( insopts -m 0644;
- insinto "${d}";
- doins -r "${@}" || return ${?} )
- }
- python_domodule ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- [[ -n ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).';
- if [[ ${EAPI:-0} == [0123] ]]; then
- die "python_do* and python_new* helpers are banned in EAPIs older than 4.";
- fi;
- local d;
- if [[ ${python_moduleroot} == /* ]]; then
- d=${python_moduleroot};
- else
- local PYTHON_SITEDIR=${PYTHON_SITEDIR};
- [[ -n ${PYTHON_SITEDIR} ]] || python_export PYTHON_SITEDIR;
- d=${PYTHON_SITEDIR#${EPREFIX}}/${python_moduleroot//.//};
- fi;
- ( 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} "${@}";
- local impl var;
- case "${1}" in
- python* | jython*)
- impl=${1/_/.};
- shift
- ;;
- pypy | pypy3)
- impl=${1};
- shift
- ;;
- *)
- impl=${EPYTHON};
- if [[ -z ${impl} ]]; then
- die "python_export called without a python implementation and EPYTHON is unset";
- fi
- ;;
- esac;
- debug-print "${FUNCNAME}: implementation: ${impl}";
- for var in "$@";
- do
- case "${var}" in
- EPYTHON)
- export EPYTHON=${impl};
- debug-print "${FUNCNAME}: EPYTHON = ${EPYTHON}"
- ;;
- PYTHON)
- export PYTHON=${EPREFIX}/usr/bin/${impl};
- debug-print "${FUNCNAME}: PYTHON = ${PYTHON}"
- ;;
- PYTHON_SITEDIR)
- [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it";
- PYTHON_SITEDIR=$("${PYTHON}" -c 'import distutils.sysconfig; print(distutils.sysconfig.get_python_lib())') || die;
- export PYTHON_SITEDIR;
- debug-print "${FUNCNAME}: PYTHON_SITEDIR = ${PYTHON_SITEDIR}"
- ;;
- PYTHON_INCLUDEDIR)
- [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it";
- PYTHON_INCLUDEDIR=$("${PYTHON}" -c 'import distutils.sysconfig; print(distutils.sysconfig.get_python_inc())') || die;
- export PYTHON_INCLUDEDIR;
- debug-print "${FUNCNAME}: PYTHON_INCLUDEDIR = ${PYTHON_INCLUDEDIR}";
- if [[ ! -d ${PYTHON_INCLUDEDIR} ]]; then
- die "${impl} does not install any header files!";
- fi
- ;;
- PYTHON_LIBPATH)
- [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it";
- PYTHON_LIBPATH=$("${PYTHON}" -c 'import os.path, sysconfig; print(os.path.join(sysconfig.get_config_var("LIBDIR"), sysconfig.get_config_var("LDLIBRARY")) if sysconfig.get_config_var("LDLIBRARY") else "")') || die;
- export PYTHON_LIBPATH;
- debug-print "${FUNCNAME}: PYTHON_LIBPATH = ${PYTHON_LIBPATH}";
- if [[ ! -n ${PYTHON_LIBPATH} ]]; then
- die "${impl} lacks a (usable) dynamic library";
- fi
- ;;
- PYTHON_CFLAGS)
- local val;
- case "${impl}" in
- python*)
- val=$($(tc-getPKG_CONFIG) --cflags ${impl/n/n-}) || die
- ;;
- *)
- die "${impl}: obtaining ${var} not supported"
- ;;
- esac;
- export PYTHON_CFLAGS=${val};
- debug-print "${FUNCNAME}: PYTHON_CFLAGS = ${PYTHON_CFLAGS}"
- ;;
- PYTHON_LIBS)
- local val;
- case "${impl}" in
- python*)
- val=$($(tc-getPKG_CONFIG) --libs ${impl/n/n-}) || die
- ;;
- *)
- die "${impl}: obtaining ${var} not supported"
- ;;
- esac;
- export PYTHON_LIBS=${val};
- debug-print "${FUNCNAME}: PYTHON_LIBS = ${PYTHON_LIBS}"
- ;;
- PYTHON_CONFIG)
- local flags val;
- case "${impl}" in
- python*)
- [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it";
- flags=$("${PYTHON}" -c 'import sysconfig; print(sysconfig.get_config_var("ABIFLAGS") or "")') || die;
- val=${PYTHON}${flags}-config
- ;;
- *)
- die "${impl}: obtaining ${var} not supported"
- ;;
- esac;
- export PYTHON_CONFIG=${val};
- debug-print "${FUNCNAME}: PYTHON_CONFIG = ${PYTHON_CONFIG}"
- ;;
- PYTHON_PKG_DEP)
- local d;
- case ${impl} in
- python2.7)
- PYTHON_PKG_DEP='>=dev-lang/python-2.7.5-r2:2.7'
- ;;
- python3.3)
- PYTHON_PKG_DEP='>=dev-lang/python-3.3.2-r2:3.3'
- ;;
- python*)
- PYTHON_PKG_DEP="dev-lang/python:${impl#python}"
- ;;
- pypy)
- PYTHON_PKG_DEP='>=virtual/pypy-5:0='
- ;;
- pypy3)
- PYTHON_PKG_DEP='>=virtual/pypy3-5:0='
- ;;
- jython2.7)
- PYTHON_PKG_DEP='dev-java/jython:2.7'
- ;;
- *)
- die "Invalid implementation: ${impl}"
- ;;
- esac;
- if [[ -n ${PYTHON_REQ_USE} ]]; then
- PYTHON_PKG_DEP+=[${PYTHON_REQ_USE}];
- fi;
- export PYTHON_PKG_DEP;
- debug-print "${FUNCNAME}: PYTHON_PKG_DEP = ${PYTHON_PKG_DEP}"
- ;;
- PYTHON_SCRIPTDIR)
- local dir;
- export PYTHON_SCRIPTDIR=${EPREFIX}/usr/lib/python-exec/${impl};
- debug-print "${FUNCNAME}: PYTHON_SCRIPTDIR = ${PYTHON_SCRIPTDIR}"
- ;;
- *)
- die "python_export: unknown variable ${var}"
- ;;
- esac;
- done
- }
- python_export_utf8_locale ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- type locale > /dev/null || return 0;
- if [[ $(locale charmap) != UTF-8 ]]; then
- local lang locales="C.UTF-8 en_US.UTF-8 en_GB.UTF-8 $(locale -a)";
- for lang in ${locales};
- do
- if [[ $(LC_ALL=${lang} locale charmap 2>/dev/null) == UTF-8 ]]; then
- if _python_check_locale_sanity "${lang}"; then
- export LC_CTYPE=${lang};
- if [[ -n ${LC_ALL} ]]; then
- export LC_NUMERIC=${LC_ALL};
- export LC_TIME=${LC_ALL};
- export LC_COLLATE=${LC_ALL};
- export LC_MONETARY=${LC_ALL};
- export LC_MESSAGES=${LC_ALL};
- export LC_PAPER=${LC_ALL};
- export LC_NAME=${LC_ALL};
- export LC_ADDRESS=${LC_ALL};
- export LC_TELEPHONE=${LC_ALL};
- export LC_MEASUREMENT=${LC_ALL};
- export LC_IDENTIFICATION=${LC_ALL};
- export LC_ALL=;
- fi;
- return 0;
- fi;
- fi;
- done;
- ewarn "Could not find a UTF-8 locale. This may trigger build failures in";
- ewarn "some python packages. Please ensure that a UTF-8 locale is listed in";
- ewarn "/etc/locale.gen and run locale-gen.";
- return 1;
- fi;
- return 0
- }
- python_fix_shebang ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- [[ -n ${EPYTHON} ]] || die "${FUNCNAME}: EPYTHON unset (pkg_setup not called?)";
- local force quiet;
- while [[ -n ${@} ]]; do
- case "${1}" in
- -f | --force)
- force=1;
- shift
- ;;
- -q | --quiet)
- quiet=1;
- shift
- ;;
- --)
- shift;
- break
- ;;
- *)
- break
- ;;
- esac;
- done;
- [[ -n ${1} ]] || die "${FUNCNAME}: no paths given";
- local path f;
- for path in "$@";
- do
- local any_correct any_fixed is_recursive;
- [[ -d ${path} ]] && is_recursive=1;
- while IFS= read -r -d '' f; do
- local shebang i;
- local error= from=;
- IFS= read -r shebang < "${f}";
- if [[ ${shebang} == '#!'* ]]; then
- local split_shebang=();
- read -r -a split_shebang <<< ${shebang} || die;
- for i in "${split_shebang[@]}";
- do
- case "${i}" in
- *"${EPYTHON}")
- debug-print "${FUNCNAME}: in file ${f#${D%/}}";
- debug-print "${FUNCNAME}: shebang matches EPYTHON: ${shebang}";
- any_correct=1;
- from=${EPYTHON};
- break
- ;;
- *python | *python[23])
- debug-print "${FUNCNAME}: in file ${f#${D%/}}";
- debug-print "${FUNCNAME}: rewriting shebang: ${shebang}";
- if [[ ${i} == *python2 ]]; then
- from=python2;
- if [[ ! -n ${force} ]]; then
- python_is_python3 "${EPYTHON}" && error=1;
- fi;
- else
- if [[ ${i} == *python3 ]]; then
- from=python3;
- if [[ ! -n ${force} ]]; then
- python_is_python3 "${EPYTHON}" || error=1;
- fi;
- else
- from=python;
- fi;
- fi;
- break
- ;;
- *python[23].[0123456789] | *pypy | *pypy3 | *jython[23].[0123456789])
- if [[ ! -n ${force} ]]; then
- error=1;
- else
- case "${i}" in
- *python[23].[0123456789])
- from="python[23].[0123456789]"
- ;;
- *pypy)
- from="pypy"
- ;;
- *pypy3)
- from="pypy3"
- ;;
- *jython[23].[0123456789])
- from="jython[23].[0123456789]"
- ;;
- *)
- die "${FUNCNAME}: internal error in 2nd pattern match"
- ;;
- esac;
- fi;
- break
- ;;
- esac;
- done;
- fi;
- if [[ ! -n ${error} && ! -n ${from} ]]; then
- [[ -n ${is_recursive} ]] && continue;
- error=1;
- fi;
- if [[ ! -n ${quiet} ]]; then
- einfo "Fixing shebang in ${f#${D%/}}.";
- fi;
- if [[ ! -n ${error} ]]; then
- if [[ ${shebang} == *${from}" "* ]]; then
- sed -i -e "1s:${from} :${EPYTHON} :" "${f}" || die;
- else
- sed -i -e "1s:${from}$:${EPYTHON}:" "${f}" || die;
- fi;
- any_fixed=1;
- else
- eerror "The file has incompatible shebang:";
- eerror " file: ${f#${D%/}}";
- eerror " current shebang: ${shebang}";
- eerror " requested impl: ${EPYTHON}";
- die "${FUNCNAME}: conversion of incompatible shebang requested";
- fi;
- done < <(find -H "${path}" -type f -print0 || die);
- if [[ ! -n ${any_fixed} ]]; then
- local cmd=eerror;
- [[ ${EAPI:-0} == [012345] ]] && cmd=eqawarn;
- "${cmd}" "QA warning: ${FUNCNAME}, ${path#${D%/}} did not match any fixable files.";
- if [[ -n ${any_correct} ]]; then
- "${cmd}" "All files have ${EPYTHON} shebang already.";
- else
- "${cmd}" "There are no Python files in specified directory.";
- fi;
- [[ ${cmd} == eerror ]] && die "${FUNCNAME} did not match any fixable files (QA warning fatal in EAPI ${EAPI})";
- fi;
- done
- }
- python_gen_cond_dep ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local flag_prefix impl matches=();
- if [[ ${#_PYTHON_SUPPORTED_IMPLS[@]} -eq 1 ]]; then
- flag_prefix=python_targets;
- else
- flag_prefix=python_single_target;
- fi;
- local dep=${1};
- shift;
- for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}";
- do
- if _python_impl_matches "${impl}" "${@}"; then
- if [[ ${dep} == *'${PYTHON_USEDEP}'* ]]; then
- local usedep=$(python_gen_usedep "${@}");
- dep=${dep//\$\{PYTHON_USEDEP\}/${usedep}};
- fi;
- matches+=("${flag_prefix}_${impl}? ( ${dep} )");
- fi;
- done;
- echo "${matches[@]}"
- }
- python_gen_impl_dep ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local impl pattern;
- local matches=();
- if [[ ${#_PYTHON_SUPPORTED_IMPLS[@]} -eq 1 ]]; then
- flag_prefix=python_targets;
- else
- flag_prefix=python_single_target;
- fi;
- local PYTHON_REQ_USE=${1};
- shift;
- local patterns=("${@-*}");
- for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}";
- do
- if _python_impl_matches "${impl}" "${patterns[@]}"; then
- local PYTHON_PKG_DEP;
- python_export "${impl}" PYTHON_PKG_DEP;
- matches+=("${flag_prefix}_${impl}? ( ${PYTHON_PKG_DEP} )");
- fi;
- done;
- echo "${matches[@]}"
- }
- python_gen_usedep ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local impl matches=();
- 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_gen_useflags ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local flag_prefix impl matches=();
- if [[ ${#_PYTHON_SUPPORTED_IMPLS[@]} -eq 1 ]]; then
- flag_prefix=python_targets;
- else
- flag_prefix=python_single_target;
- fi;
- for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}";
- do
- if _python_impl_matches "${impl}" "${@}"; then
- matches+=("${flag_prefix}_${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:-0} in
- 0 | 1 | 2 | 3 | 4)
- local -x ROOT=/
- ;;
- 5 | 6)
- hasv_args+=(--host-root)
- ;;
- *)
- hasv_args+=(-b)
- ;;
- esac;
- case "${impl}" in
- pypy | pypy3)
- local append=;
- if [[ -n ${PYTHON_REQ_USE} ]]; then
- append=[${PYTHON_REQ_USE}];
- fi;
- has_version "${hasv_args[@]}" "dev-python/${impl}${append}" || has_version "${hasv_args[@]}" "dev-python/${impl}-bin${append}"
- ;;
- *)
- local PYTHON_PKG_DEP;
- python_export "${impl}" PYTHON_PKG_DEP;
- has_version "${hasv_args[@]}" "${PYTHON_PKG_DEP}"
- ;;
- esac
- }
- python_is_python3 ()
- {
- local impl=${1:-${EPYTHON}};
- [[ -n ${impl} ]] || die "python_is_python3: no impl nor EPYTHON";
- [[ ${impl} == python3* || ${impl} == pypy3 ]]
- }
- python_merge_intermediate_installation_images ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_mod_cleanup ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#Python_byte-code_compilation"
- }
- python_mod_optimize ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#Python_byte-code_compilation"
- }
- python_moduleinto ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- python_moduleroot=${1}
- }
- python_need_rebuild ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite"
- }
- python_newexe ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- [[ -n ${EPYTHON} ]] || die 'No Python implementation set (EPYTHON is null).';
- [[ ${#} -eq 2 ]] || die "Usage: ${FUNCNAME} <path> <new-name>";
- if [[ ${EAPI:-0} == [0123] ]]; then
- die "python_do* and python_new* helpers are banned in EAPIs older than 4.";
- fi;
- local wrapd=${python_scriptroot:-/usr/bin};
- local f=${1};
- local newfn=${2};
- local PYTHON_SCRIPTDIR d;
- python_export PYTHON_SCRIPTDIR;
- d=${PYTHON_SCRIPTDIR#${EPREFIX}};
- ( dodir "${wrapd}";
- 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;
- if [[ ${#} -eq 0 ]]; then
- local f;
- while IFS= read -r -d '' f; do
- if [[ ${f} == /* && -d ${D%/}${f} ]]; then
- set -- "${D%/}${f}" "${@}";
- fi;
- done < <("${PYTHON}" -c 'import sys; print("\0".join(sys.path))' || die);
- debug-print "${FUNCNAME}: using sys.path: ${*/%/;}";
- fi;
- local d;
- for d in "$@";
- do
- local instpath=${d#${D%/}};
- instpath=/${instpath##/};
- case "${EPYTHON}" in
- python2.7 | python3.[34])
- "${PYTHON}" -m compileall -q -f -d "${instpath}" "${d}";
- "${PYTHON}" -OO -m compileall -q -f -d "${instpath}" "${d}"
- ;;
- python* | 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_scriptinto ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- python_scriptroot=${1}
- }
- python_set_active_version ()
- {
- die "${FUNCNAME}() is invalid for python-r1 suite, please take a look @ https://wiki.gentoo.org/wiki/Project:Python/Python.eclass_conversion#pkg_setup"
- }
- python_setup ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- unset EPYTHON;
- if [[ -n ${PYTHON_COMPAT_OVERRIDE} ]]; then
- local impls=(${PYTHON_COMPAT_OVERRIDE});
- [[ ${#impls[@]} -eq 1 ]] || die "PYTHON_COMPAT_OVERRIDE must name exactly one implementation for python-single-r1";
- ewarn "WARNING: PYTHON_COMPAT_OVERRIDE in effect. The following Python";
- ewarn "implementation will be used:";
- ewarn;
- ewarn " ${PYTHON_COMPAT_OVERRIDE}";
- ewarn;
- ewarn "Dependencies won't be satisfied, and PYTHON_SINGLE_TARGET flags will be ignored.";
- python_export "${impls[0]}" EPYTHON PYTHON;
- python_wrapper_setup;
- return;
- fi;
- if [[ ${#_PYTHON_SUPPORTED_IMPLS[@]} -eq 1 ]]; then
- if use "python_targets_${_PYTHON_SUPPORTED_IMPLS[0]}"; then
- python_export "${_PYTHON_SUPPORTED_IMPLS[0]}" EPYTHON PYTHON;
- python_wrapper_setup;
- fi;
- else
- local impl;
- for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}";
- do
- if use "python_single_target_${impl}"; then
- if [[ -n ${EPYTHON} ]]; then
- eerror "Your PYTHON_SINGLE_TARGET setting lists more than a single Python";
- eerror "implementation. Please set it to just one value. If you need";
- eerror "to override the value for a single package, please use package.env";
- eerror "or an equivalent solution (man 5 portage).";
- echo;
- die "More than one implementation in PYTHON_SINGLE_TARGET.";
- fi;
- if ! use "python_targets_${impl}"; then
- eerror "The implementation chosen as PYTHON_SINGLE_TARGET must be added";
- eerror "to PYTHON_TARGETS as well. This is in order to ensure that";
- eerror "dependencies are satisfied correctly. We're sorry";
- eerror "for the inconvenience.";
- echo;
- die "Build target (${impl}) not in PYTHON_TARGETS.";
- fi;
- python_export "${impl}" EPYTHON PYTHON;
- python_wrapper_setup;
- fi;
- done;
- fi;
- if [[ ! -n ${EPYTHON} ]]; then
- eerror "No Python implementation selected for the build. Please set";
- if [[ ${#_PYTHON_SUPPORTED_IMPLS[@]} -eq 1 ]]; then
- eerror "the PYTHON_TARGETS variable in your make.conf to include one";
- else
- eerror "the PYTHON_SINGLE_TARGET variable in your make.conf to one";
- fi;
- eerror "of the following values:";
- eerror;
- eerror "${_PYTHON_SUPPORTED_IMPLS[@]}";
- echo;
- die "No supported Python implementation in PYTHON_SINGLE_TARGET/PYTHON_TARGETS.";
- fi
- }
- python_wrapper_setup ()
- {
- debug-print-function ${FUNCNAME} "${@}";
- local workdir=${1:-${T}/${EPYTHON}};
- local impl=${2:-${EPYTHON}};
- [[ -n ${workdir} ]] || die "${FUNCNAME}: no workdir specified.";
- [[ -n ${impl} ]] || die "${FUNCNAME}: no impl nor EPYTHON specified.";
- if [[ ! -x ${workdir}/bin/python ]]; then
- _python_check_dead_variables;
- mkdir -p "${workdir}"/{bin,pkgconfig} || die;
- rm -f "${workdir}"/bin/python{,2,3}{,-config} || die;
- rm -f "${workdir}"/bin/2to3 || die;
- rm -f "${workdir}"/pkgconfig/python{,2,3}.pc || die;
- local EPYTHON PYTHON;
- python_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.pc || die;
- ln -s python.pc "${workdir}"/pkgconfig/python${pyver}.pc || die;
- else
- nonsupp+=(2to3 python-config "python${pyver}-config");
- fi;
- local x;
- for x in "${nonsupp[@]}";
- do
- cat > "${workdir}"/bin/${x} <<-_EOF_ ||
- #!/bin/sh
- echo "${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
- }
- src_compile ()
- {
- emake V=1 all $(usev static)
- }
- src_configure ()
- {
- local myeconfargs=(--bindir="${EPREFIX}"/sbin $(use_enable convert) $(use_enable elibc_glibc backtrace) $(use_enable python) $(use_enable static-libs static) $(use_enable zstd) --with-convert=ext2$(usex reiserfs ',reiserfs' ''));
- econf "${myeconfargs[@]}"
- }
- src_install ()
- {
- local makeargs=($(usex python install_python '') $(usex static install-static ''));
- emake V=1 DESTDIR="${D}" install "${makeargs[@]}";
- newbashcomp btrfs-completion btrfs;
- use python && python_optimize
- }
- src_prepare ()
- {
- default;
- if [[ ${PV} == 9999 ]]; then
- AT_M4DIR=m4 eautoreconf;
- mkdir config || die;
- local automakedir="$(autotools_run_tool --at-output automake --print-libdir)";
- [[ -e ${automakedir} ]] || die "Could not locate automake directory";
- ln -s "${automakedir}"/install-sh config/install-sh || die;
- ln -s "${EPREFIX}"/usr/share/gnuconfig/config.guess config/config.guess || die;
- ln -s "${EPREFIX}"/usr/share/gnuconfig/config.sub config/config.sub || die;
- fi
- }
- src_test ()
- {
- default
- }
- src_unpack ()
- {
- default
- }
- 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;
- local RESULT=$($(tc-getTARGET_CPP) "${@}" -P - <<-EOF 2>/dev/null
- #if ${CONDITION}
- true
- #endif
- EOF
- );
- [[ ${RESULT} == true ]]
- }
- 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
- ;;
- s390*)
- echo big
- ;;
- sh*b*)
- echo big
- ;;
- sh*)
- echo little
- ;;
- sparc*)
- echo big
- ;;
- x86_64*)
- echo little
- ;;
- *)
- echo wtf
- ;;
- esac
- }
- tc-env_build ()
- {
- tc-export_build_env;
- CFLAGS=${BUILD_CFLAGS} CXXFLAGS=${BUILD_CXXFLAGS} CPPFLAGS=${BUILD_CPPFLAGS} LDFLAGS=${BUILD_LDFLAGS} AR=$(tc-getBUILD_AR) AS=$(tc-getBUILD_AS) CC=$(tc-getBUILD_CC) CPP=$(tc-getBUILD_CPP) CXX=$(tc-getBUILD_CXX) LD=$(tc-getBUILD_LD) NM=$(tc-getBUILD_NM) PKG_CONFIG=$(tc-getBUILD_PKG_CONFIG) RANLIB=$(tc-getBUILD_RANLIB) "$@"
- }
- tc-export ()
- {
- local var;
- for var in "$@";
- do
- [[ $(type -t "tc-get${var}") != "function" ]] && die "tc-export: invalid export variable '${var}'";
- "tc-get${var}" > /dev/null;
- done
- }
- tc-export_build_env ()
- {
- tc-export "$@";
- 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_STRIP ()
- {
- tc-getBUILD_PROG STRIP strip "$@"
- }
- tc-getCC ()
- {
- tc-getPROG CC gcc "$@"
- }
- tc-getCPP ()
- {
- tc-getPROG CPP "${CC:-gcc} -E" "$@"
- }
- tc-getCXX ()
- {
- tc-getPROG CXX g++ "$@"
- }
- tc-getDLLWRAP ()
- {
- tc-getPROG DLLWRAP dllwrap "$@"
- }
- tc-getF77 ()
- {
- tc-getPROG F77 gfortran "$@"
- }
- tc-getFC ()
- {
- tc-getPROG FC gfortran "$@"
- }
- tc-getGCJ ()
- {
- tc-getPROG GCJ gcj "$@"
- }
- tc-getGO ()
- {
- tc-getPROG GO gccgo "$@"
- }
- tc-getLD ()
- {
- tc-getPROG LD ld "$@"
- }
- tc-getNM ()
- {
- tc-getPROG NM nm "$@"
- }
- tc-getOBJCOPY ()
- {
- tc-getPROG OBJCOPY objcopy "$@"
- }
- tc-getOBJDUMP ()
- {
- tc-getPROG OBJDUMP objdump "$@"
- }
- tc-getPKG_CONFIG ()
- {
- tc-getPROG PKG_CONFIG pkg-config "$@"
- }
- tc-getPROG ()
- {
- _tc-getPROG CHOST "$@"
- }
- tc-getRANLIB ()
- {
- tc-getPROG RANLIB ranlib "$@"
- }
- tc-getRC ()
- {
- tc-getPROG RC windres "$@"
- }
- tc-getSTRIP ()
- {
- tc-getPROG STRIP strip "$@"
- }
- tc-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 > "${base}.c" <<-EOF
- #include <omp.h>
- int main() {
- int nthreads, tid, ret = 0;
- #pragma omp parallel private(nthreads, tid)
- {
- tid = omp_get_thread_num();
- nthreads = omp_get_num_threads(); ret += tid + nthreads;
- }
- return ret;
- }
- EOF
-
- $(tc-getCC "$@") -fopenmp "${base}.c" -o "${base}" &> /dev/null;
- local ret=$?;
- rm -f "${base}"*;
- return ${ret}
- }
- tc-has-tls ()
- {
- local base="${T}/test-tc-tls";
- cat > "${base}.c" <<-EOF
- int foo(int *i) {
- static __thread int j = 0;
- return *i ? j : *i;
- }
- EOF
-
- local flags;
- case $1 in
- -s)
- flags="-S"
- ;;
- -c)
- flags="-c"
- ;;
- -l)
-
- ;;
- -*)
- die "Usage: tc-has-tls [-c|-l] [toolchain prefix]"
- ;;
- esac;
- : ${flags:=-fPIC -shared -Wl,-z,defs};
- [[ $1 == -* ]] && shift;
- $(tc-getCC "$@") ${flags} "${base}.c" -o "${base}" &> /dev/null;
- local ret=$?;
- rm -f "${base}"*;
- return ${ret}
- }
- tc-is-clang ()
- {
- [[ $(tc-get-compiler-type) == clang ]]
- }
- tc-is-cross-compiler ()
- {
- [[ ${CBUILD:-${CHOST}} != ${CHOST} ]]
- }
- tc-is-gcc ()
- {
- [[ $(tc-get-compiler-type) == gcc ]]
- }
- tc-is-softfloat ()
- {
- tc-detect-is-softfloat || tc-tuple-is-softfloat
- }
- tc-is-static-only ()
- {
- local host=${CTARGET:-${CHOST}};
- [[ ${host} == *-mint* ]]
- }
- tc-ld-disable-gold ()
- {
- if ! tc-ld-is-gold "$@"; then
- return;
- fi;
- ewarn "Forcing usage of the BFD linker instead of GOLD";
- local ld=$(tc-getLD "$@");
- local bfd_ld="${ld%% *}.bfd";
- local path_ld=$(which "${bfd_ld}" 2>/dev/null);
- [[ -e ${path_ld} ]] && export LD=${bfd_ld};
- local 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 to bypass gold";
- 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 > "${base}.c" <<-EOF
- int main() { return 0; }
- EOF
-
- out=$($(tc-getCC "$@") ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} -Wl,--version "${base}.c" -o "${base}" 2>&1);
- rm -f "${base}"*;
- if [[ ${out} == *"GNU gold"* ]]; then
- return 0;
- fi;
- return 1
- }
- tc-ninja_magic_to_arch ()
- {
- function ninj ()
- {
- [[ ${type} == "kern" ]] && echo $1 || echo $2
- };
- local type=$1;
- local host=$2;
- [[ -z ${host} ]] && host=${CTARGET:-${CHOST}};
- case ${host} in
- aarch64*)
- echo arm64
- ;;
- alpha*)
- echo alpha
- ;;
- arm*)
- echo arm
- ;;
- avr*)
- ninj avr32 avr
- ;;
- bfin*)
- ninj blackfin bfin
- ;;
- c6x*)
- echo c6x
- ;;
- cris*)
- echo cris
- ;;
- frv*)
- echo frv
- ;;
- hexagon*)
- echo hexagon
- ;;
- hppa*)
- ninj parisc hppa
- ;;
- i?86*)
- if [[ ${type} == "kern" && ${host} == *freebsd* ]]; then
- echo i386;
- else
- echo x86;
- fi
- ;;
- ia64*)
- echo ia64
- ;;
- m68*)
- echo m68k
- ;;
- metag*)
- echo metag
- ;;
- microblaze*)
- echo microblaze
- ;;
- mips*)
- echo mips
- ;;
- nios2*)
- echo nios2
- ;;
- nios*)
- echo nios
- ;;
- or1k | or32*)
- echo openrisc
- ;;
- powerpc*)
- if [[ ${type} == "kern" ]]; then
- echo powerpc;
- else
- if [[ ${host} == powerpc64* ]]; then
- echo ppc64;
- else
- echo ppc;
- fi;
- fi
- ;;
- riscv*)
- echo riscv
- ;;
- s390*)
- echo s390
- ;;
- score*)
- echo score
- ;;
- sh64*)
- ninj sh64 sh
- ;;
- sh*)
- echo sh
- ;;
- sparc64*)
- ninj sparc64 sparc
- ;;
- sparc*)
- [[ ${PROFILE_ARCH} == "sparc64" ]] && ninj sparc64 sparc || echo sparc
- ;;
- tile*)
- echo tile
- ;;
- vax*)
- echo vax
- ;;
- x86_64*freebsd*)
- echo amd64
- ;;
- x86_64*)
- if [[ ${type} == "kern" ]]; then
- echo x86;
- else
- echo amd64;
- fi
- ;;
- xtensa*)
- echo xtensa
- ;;
- *)
- echo unknown
- ;;
- esac
- }
- tc-stack-grows-down ()
- {
- case ${ARCH} in
- hppa | metag)
- return 1
- ;;
- esac;
- return 0
- }
- 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
- }
-