Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 881539 Details for
Bug 921488
games-fps/doomsday-2.3.1 - [clang] /.../src_core_turbo.cpp: error: non-constant-expression cannot be narrowed from type double to float in initializer list [-
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
environment
environment (text/plain), 149.99 KB, created by
Toralf Förster
on 2024-01-06 09:22:08 UTC
(
hide
)
Description:
environment
Filename:
MIME Type:
Creator:
Toralf Förster
Created:
2024-01-06 09:22:08 UTC
Size:
149.99 KB
patch
obsolete
>declare -x ABI="amd64" >declare -x ABI_MIPS="" >declare -x ABI_S390="" >declare -x ABI_X86="64" >declare -x ADA_TARGET="" >declare -x ALSA_CARDS="" >declare -x AMDGPU_TARGETS="" >declare -x ANT_HOME="/usr/share/ant" >declare -x APACHE2_MODULES="" >declare -x APACHE2_MPMS="" >declare -x ARCH="amd64" >declare BDEPEND=$'|| ( dev-lang/python:3.10 )\n\tvirtual/pkgconfig\n app-alternatives/ninja >=dev-util/cmake-3.20.5' >declare -x BINPKG_FORMAT="xpak" >declare -x BINPKG_GPG_SIGNING_BASE_COMMAND="/usr/bin/flock /run/lock/portage-binpkg-gpg.lock /usr/bin/gpg --sign --armor [PORTAGE_CONFIG]" >declare -x BINPKG_GPG_SIGNING_DIGEST="SHA512" >declare -x BINPKG_GPG_VERIFY_BASE_COMMAND="/usr/bin/gpg --verify --batch --no-tty --no-auto-check-trustdb --status-fd 2 [PORTAGE_CONFIG] [SIGNATURE]" >declare -x BINPKG_GPG_VERIFY_GPG_HOME="/etc/portage/gnupg" >declare -x BOOTSTRAP_USE="unicode internal-glib pkg-config split-usr xml python_targets_python3_11 python_single_target_python3_11 multilib" >declare -- BUILD_DIR="/var/tmp/portage/games-fps/doomsday-2.3.1/work/doomsday-2.3.1/doomsday_build" >declare -x CALLIGRA_FEATURES="" >declare -x CAMERAS="" >declare -x CARGO_TERM_COLOR="never" >declare -x CBUILD="x86_64-pc-linux-gnu" >declare -x CC="clang" >declare -x CCL_DEFAULT_DIRECTORY="/usr/lib64/clozurecl" >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 -mfpmath=sse" >declare -x CG_COMPILER_EXE="/opt/bin/cgc" >declare -x CG_INC_PATH="/opt/nvidia-cg-toolkit/include" >declare -x CG_LIB_PATH="/opt/nvidia-cg-toolkit/lib64" >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 -- CMAKE_BINARY="cmake" >declare -- CMAKE_BUILD_TYPE="RelWithDebInfo" >declare -x CMAKE_COLOR_DIAGNOSTICS="OFF" >declare -x CMAKE_COLOR_MAKEFILE="OFF" >declare -- CMAKE_MAKEFILE_GENERATOR="ninja" >declare -a CMAKE_REMOVE_MODULES_LIST=([0]="FindBLAS" [1]="FindLAPACK") >declare -- CMAKE_USE_DIR="/var/tmp/portage/games-fps/doomsday-2.3.1/work/doomsday-2.3.1/doomsday" >declare -- CMAKE_VERBOSE="ON" >declare -- CMAKE_WARN_UNUSED_CLI="yes" >declare -x COLLECTD_PLUGINS="" >declare -x CPU_FLAGS_ARM="" >declare -x CPU_FLAGS_PPC="" >declare -x CPU_FLAGS_X86="" >declare -x CTARGET_default="x86_64-pc-linux-gnu" >declare -x CURL_SSL="" >declare -x CXX="clang++" >declare -x CXXFLAGS="-O2 -pipe -march=native -fno-diagnostics-color" >declare -x DEFAULT_ABI="amd64" >declare -x DEFINED_PHASES=" compile configure install postinst postrm preinst prepare setup test" >declare DEPEND=$'\n\tdev-qt/qtcore:5=\n\tdev-qt/qtgui:5=[-gles2-only]\n\tdev-qt/qtnetwork:5=\n\tdev-qt/qtopengl:5=\n\tdev-qt/qtwidgets:5=\n\tdev-qt/qtx11extras:5=\n\tmedia-libs/assimp:=\n\tnet-misc/curl\n\tsys-libs/zlib\n\tx11-libs/libX11\n\tdisplay-mode? (\n\t\tx11-libs/libXrandr\n\t\tx11-libs/libXxf86vm\n\t)\n\tfluidsynth? ( media-sound/fluidsynth:= )\n\topenal? ( media-libs/openal )\n\ttools? ( sys-libs/ncurses:0= )\n ' >declare DESCRIPTION="A modern gaming engine for Doom, Heretic, and Hexen" >declare -- DESKTOP_DATABASE_DIR="/usr/share/applications" >declare -x DIALIGN2_DIR="/usr/share/dialign2" >declare -x DIROPTIONS="-m0755" >declare -- DOC_CONTENTS="You need to copy Doom, Doom 2, Chex Quest, Heretic, Hexen, HexenDD, or Doom64 wads to a folder of your choice and then tell the game engine where that folder is. This is different to older versions, which had separate launchers for each game and required the files to be in a specific place." >declare -x DSM_CONFIG="/etc/tivoli/dsm.opt" >declare -x DSM_DIR="/opt/tivoli/tsm/client/ba/bin" >declare -x DSM_LOG="/var/log/tsm" >declare -x EAPI="8" >declare -x EGO_BUILD_FLAGS="-p 4" >declare -x ELIBC="glibc" >declare -x ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GDK_PIXBUF_MODULE_FILE 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 XDG_STATE_HOME" >declare -- EPOCHREALTIME="1704527367.758248" >declare -- EPOCHSECONDS="1704527367" >declare -x EPYTHON="python3.10" >declare -x EXEOPTIONS="-m0755" >declare -- E_IDEPEND=$'\n\tdev-util/desktop-file-utils\n\tx11-misc/shared-mime-info\n' >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 FLTK_DOCDIR="/usr/share/doc/fltk-1.3.8/html" >declare -x FPATH="/usr/local/share/zsh/site-functions:/usr/share/zsh/site-functions:/usr/share/zsh/5.9/functions/Calendar:/usr/share/zsh/5.9/functions/Chpwd:/usr/share/zsh/5.9/functions/Completion:/usr/share/zsh/5.9/functions/Completion/AIX:/usr/share/zsh/5.9/functions/Completion/BSD:/usr/share/zsh/5.9/functions/Completion/Base:/usr/share/zsh/5.9/functions/Completion/Cygwin:/usr/share/zsh/5.9/functions/Completion/Darwin:/usr/share/zsh/5.9/functions/Completion/Debian:/usr/share/zsh/5.9/functions/Completion/Linux:/usr/share/zsh/5.9/functions/Completion/Mandriva:/usr/share/zsh/5.9/functions/Completion/Redhat:/usr/share/zsh/5.9/functions/Completion/Solaris:/usr/share/zsh/5.9/functions/Completion/Unix:/usr/share/zsh/5.9/functions/Completion/X:/usr/share/zsh/5.9/functions/Completion/Zsh:/usr/share/zsh/5.9/functions/Completion/openSUSE:/usr/share/zsh/5.9/functions/Exceptions:/usr/share/zsh/5.9/functions/MIME:/usr/share/zsh/5.9/functions/Math:/usr/share/zsh/5.9/functions/Misc:/usr/share/zsh/5.9/functions/Newuser:/usr/share/zsh/5.9/functions/Prompts:/usr/share/zsh/5.9/functions/TCP:/usr/share/zsh/5.9/functions/VCS_Info:/usr/share/zsh/5.9/functions/VCS_Info/Backends:/usr/share/zsh/5.9/functions/Zftp:/usr/share/zsh/5.9/functions/Zle:/usr/share/Lmod/init/ksh_funcs" >declare -x GCC_COLORS="" >declare -x GCC_SPECS="" >declare -x GIT_PAGER="cat" >declare -x GO19CONCURRENTCOMPILATION="0" >declare -x GOMAXPROCS="4" >declare -x GPG_VERIFY_GROUP_DROP="nogroup" >declare -x GPG_VERIFY_USER_DROP="nobody" >declare -x GPSD_PROTOCOLS="" >declare -x GRUB_PLATFORMS="" >declare -x GSETTINGS_BACKEND="dconf" >declare HOMEPAGE="https://www.dengine.net" >declare IDEPEND=$'\n\tdev-util/desktop-file-utils\n\tx11-misc/shared-mime-info\n' >declare -x INHERITED=" toolchain-funcs multilib flag-o-matic multiprocessing ninja-utils xdg-utils cmake python-utils-r1 python-any-r1 qmake-utils readme.gentoo-r1 xdg" >declare -x INPUT_DEVICES="" >declare -x INSOPTIONS="-m0644" >declare IUSE="demo +display-mode freedoom fluidsynth openal tools " >declare -x IUSE_EFFECTIVE="abi_x86_64 alpha amd64 amd64-linux arm arm64 arm64-macos demo display-mode elibc_Darwin elibc_SunOS elibc_bionic elibc_glibc elibc_mingw elibc_musl fluidsynth freedoom hppa ia64 kernel_Darwin kernel_SunOS kernel_linux loong m68k mips openal ppc ppc-macos ppc64 ppc64-linux prefix prefix-guest prefix-stack riscv s390 sparc tools x64-macos x64-solaris x86 x86-linux" >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 -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 ~ppc64 ~x86" >declare -x L10N="" >declare -x LANG="C.UTF8" >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 LEX="flex" >declare -x LE_CONFIG_HOME="/etc/acme-sh/" >declare -x LE_WORKING_DIR="/etc/acme-sh/" >declare -x LIBDIR_amd64="lib64" >declare -x LIBDIR_default="lib" >declare -x LIBDIR_x32="libx32" >declare -x LIBDIR_x86="lib" >declare -x LIBGUESTFS_PATH="/usr/share/guestfs/appliance/" >declare -x LIBOPTIONS="-m0644" >declare -x LIBREOFFICE_EXTENSIONS="" >declare -x LICENSE="GPL-3+ LGPL-3+" >declare -x LLVM_TARGETS="" >declare -x LMOD_CACHED_LOADS="yes" >declare -x LMOD_CMD="/usr/share/Lmod/libexec/lmod" >declare -x LMOD_DIR="/usr/share/Lmod/libexec" >declare -x LMOD_PKG="/usr/share/Lmod" >declare -x LMOD_ROOT="/usr/share/Lmod/.." >declare -x LMOD_SETTARG_FULL_SUPPORT="no" >declare -x LMOD_VERSION="8.7.23" >declare -x LMOD_sys="Linux" >declare -x LOGTALKHOME="/usr/share/logtalk-3.47.0" >declare -x LUA_SINGLE_TARGET="" >declare -x LUA_TARGETS="" >declare -x MAILTO="tinderbox" >declare -x MAKEOPTS=" -j4" >declare -x MANPAGER="manpager" >declare -- MIMEINFO_DATABASE_DIR="/usr/share/mime" >declare -x MODULEPATH="/etc/modulefiles/Linux:/etc/modulefiles/Core:/usr/share/Lmod/modulefiles/Core" >declare -x MODULEPATH_ROOT="/etc/modulefiles" >declare -x MODULESHOME="/usr/share/Lmod" >declare -x MONKEYD_PLUGINS="" >declare -x MOZ_GMP_PATH="/usr/lib64/nsbrowser/plugins/gmp-gmpopenh264/system-installed" >declare -x MULTILIB_ABIS="amd64 x86" >declare -x MULTILIB_STRICT_DENY="64-bit.*shared object" >declare -x MULTILIB_STRICT_DIRS="/lib32 /lib /usr/lib32 /usr/lib /usr/kde/*/lib32 /usr/kde/*/lib /usr/qt/*/lib32 /usr/qt/*/lib /usr/X11R6/lib32 /usr/X11R6/lib" >declare -x MULTILIB_STRICT_EXEMPT="(perl5|gcc|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 -- NINJA="ninja" >declare -- NINJA_DEPEND="app-alternatives/ninja" >declare -- NINJA_VERBOSE="ON" >declare -x NPM_CONFIG_GLOBALCONFIG="/etc/npm/npmrc" >declare -x NX_SYSTEM="/opt/NX" >declare -x OCAML_COLOR="never" >declare -x OFFICE_IMPLEMENTATION="" >declare -x OMP_DYNAMIC="FALSE" >declare -x OMP_NESTED="FALSE" >declare -x OMP_NUM_THREADS="4" >declare -x OPENMPI_FABRICS="" >declare -x OPENMPI_OFED_FEATURES="" >declare -x OPENMPI_RM="" >declare -x ORACLE_HOME="/usr/lib64/oracle/client" >declare -x PATH="/var/tmp/portage/games-fps/doomsday-2.3.1/temp/python3.10/bin:/usr/lib/portage/python3.11/ebuild-helpers/xattr:/usr/lib/portage/python3.11/ebuild-helpers:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/lib/llvm/17/bin:/usr/lib/llvm/16/bin:/usr/lib/llvm/15/bin:/opt/nvidia-cg-toolkit/bin:/etc/eselect/wine/bin:/usr/bin/cdsclient:/usr/lib64/julia-1.9.4/bin:/opt/zookeeper-bin/bin" >declare PDEPEND=$'\n\tdemo? ( games-fps/doom-data )\n\tfreedoom? ( games-fps/freedoom )\n ' >declare -x PHP_TARGETS="" >declare -x PKGSYSTEM_ENABLE_FSYNC="0" >declare -x PKG_CONFIG_PATH="/var/tmp/portage/games-fps/doomsday-2.3.1/temp/python3.10/pkgconfig" >declare -x PORTAGE_COMPRESSION_COMMAND="zstd -T4" >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/doomsday-2.3.1/html") >declare -a PORTAGE_DOSTRIP=([0]="/") >declare -a PORTAGE_DOSTRIP_SKIP=() >declare -x PORTAGE_TMPFS="/dev/shm" >declare -- PORTAGE_USE_CLANG_HOOK="1" >declare -x PORT_LOGDIR="/var/log/portage" >declare -x POSTGRES_TARGETS="" >declare -x PROFILE_ONLY_VARIABLES="ARCH ELIBC IUSE_IMPLICIT KERNEL USE_EXPAND_IMPLICIT USE_EXPAND_UNPREFIXED USE_EXPAND_VALUES_ARCH USE_EXPAND_VALUES_ELIBC USE_EXPAND_VALUES_KERNEL" >declare -- PROPERTIES="" >declare -x PYTEST_ADDOPTS="--color=no" >declare -x PYTHON="/usr/bin/python3.10" >declare -x PYTHONDONTWRITEBYTECODE="1" >declare -a PYTHON_COMPAT=([0]="python3_9" [1]="python3_10") >declare -- PYTHON_DEPS="|| ( dev-lang/python:3.10 )" >declare -- PYTHON_REQUIRED_USE="I-DO-NOT-EXIST-IN-PYTHON-ANY-R1" >declare -x PYTHON_SINGLE_TARGET="" >declare -x PYTHON_TARGETS="" >declare -x PY_FORCE_COLOR="0" >declare -x QEMU_SOFTMMU_TARGETS="" >declare -x QEMU_USER_TARGETS="" >declare RDEPEND=$'\n\tdev-qt/qtcore:5=\n\tdev-qt/qtgui:5=[-gles2-only]\n\tdev-qt/qtnetwork:5=\n\tdev-qt/qtopengl:5=\n\tdev-qt/qtwidgets:5=\n\tdev-qt/qtx11extras:5=\n\tmedia-libs/assimp:=\n\tnet-misc/curl\n\tsys-libs/zlib\n\tx11-libs/libX11\n\tdisplay-mode? (\n\t\tx11-libs/libXrandr\n\t\tx11-libs/libXxf86vm\n\t)\n\tfluidsynth? ( media-sound/fluidsynth:= )\n\topenal? ( media-libs/openal )\n\ttools? ( sys-libs/ncurses:0= )\n ' >declare -- README_GENTOO_SUFFIX="" >declare REPOSITORY >declare REQUIRED_USE="" >declare 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 RNAVIEW="/usr/share/rnaview" >declare -x RUBY_TARGETS="" >declare -x RUST_TEST_TASKS="4" >declare -x RUST_TEST_THREADS="4" >declare -x R_HOME="/usr/lib64/R" >declare -x S="/var/tmp/portage/games-fps/doomsday-2.3.1/work/doomsday-2.3.1/doomsday" >declare -x SANDBOX_DEBUG="0" >declare -x SANDBOX_DENY="" >declare -x SANDBOX_METHOD="any" >declare -x SANDBOX_PREDICT="/var/tmp/portage/games-fps/doomsday-2.3.1/homedir:/dev/crypto:/var/cache/man:/proc/self/coredump_filter:/dev/random:/proc/self/coredump_filter:/dev/random:/proc/self/coredump_filter:/dev/random:/proc/self/coredump_filter:/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/:/usr/tmp/cf:/usr/tmp/conftest:/var/tmp/:/var/tmp/portage:/var/tmp/portage/games-fps/doomsday-2.3.1/homedir/.bash_history" >declare -x SANE_BACKENDS="" >declare -x SCHEME_LIBRARY_PATH="/usr/share/slib/" >declare -x SHELL="/bin/bash" >declare -x SLOT="0" >declare -i SRANDOM="251882240" >declare SRC_URI="https://downloads.sourceforge.net/project/deng/Doomsday%20Engine/2.3.1/doomsday-2.3.1.tar.gz" >declare -x SSH_ASKPASS="/usr/bin/ssh-askpass-fullscreen" >declare -x SYMLINK_LIB="no" >declare -x TERMINFO="/etc/terminfo" >declare -x TERMINFO_DIRS="/usr/share/st/terminfo" >declare -x TINYSCHEMEINIT="/usr/share/tinyscheme/init.scm" >declare -x TMAKEPATH="/usr/lib/tmake/linux-g++" >declare -x TNS_ADMIN="/etc/oracle/" >declare -x TWISTED_DISABLE_WRITING_OF_PLUGIN_CACHE="1" >declare -x USE="abi_x86_64 amd64 display-mode elibc_glibc kernel_linux" >declare -x USERLAND="GNU" >declare -x USE_EXPAND_IMPLICIT="ARCH ELIBC KERNEL" >declare -x USE_EXPAND_UNPREFIXED="ARCH" >declare -x USE_EXPAND_VALUES_ARCH="alpha amd64 amd64-linux arm arm64 arm64-macos hppa ia64 loong m68k mips ppc ppc64 ppc64-linux ppc-macos riscv s390 sparc x64-macos x64-solaris x86 x86-linux" >declare -x USE_EXPAND_VALUES_ELIBC="bionic Darwin glibc mingw musl SunOS" >declare -x USE_EXPAND_VALUES_KERNEL="Darwin linux SunOS" >declare -x UWSGI_PLUGINS="" >declare -x VIDEO_CARDS="" >declare -x VOICEMAIL_STORAGE="" >declare -x WCDHOME="/root/.wcd" >declare -x XDG_CACHE_HOME="/var/tmp/portage/games-fps/doomsday-2.3.1/homedir/.cache" >declare -x XDG_CONFIG_DIRS="/etc/xdg:/usr/share" >declare -x XDG_CONFIG_HOME="/var/tmp/portage/games-fps/doomsday-2.3.1/homedir/.config" >declare -x XDG_DATA_DIRS="/usr/local/share:/usr/share:/etc/eselect/wine/share" >declare -x XDG_DATA_HOME="/var/tmp/portage/games-fps/doomsday-2.3.1/homedir/.local/share" >declare -x XDG_RUNTIME_DIR="/var/tmp/portage/games-fps/doomsday-2.3.1/temp/run" >declare -x XDG_STATE_HOME="/var/tmp/portage/games-fps/doomsday-2.3.1/homedir/.local/state" >declare -x XEHELPURL="/usr/share/doc/xephem-4.1.0-r1/html/xephem.html" >declare -x XTABLES_ADDONS="" >declare -x XZ_OPT="-9 -T4" >declare -- _CMAKE_ECLASS="1" >declare -- _CMAKE_SRC_PREPARE_HAS_RUN="1" >declare -- _FLAG_O_MATIC_ECLASS="1" >declare -- _MULTILIB_ECLASS="1" >declare -- _MULTIPROCESSING_ECLASS="1" >declare -- _NINJA_UTILS_ECLASS="1" >declare -a _PYTHON_ALL_IMPLS=([0]="pypy3" [1]="python3_10" [2]="python3_11" [3]="python3_12") >declare -- _PYTHON_ANY_R1_ECLASS="1" >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" [14]="python3_7" [15]="python3_8" [16]="python3_9") >declare -a _PYTHON_SUPPORTED_IMPLS=([0]="python3_10") >declare -a _PYTHON_UNSUPPORTED_IMPLS=([0]="pypy3" [1]="python3_11" [2]="python3_12") >declare -- _PYTHON_UTILS_R1_ECLASS="1" >declare -- _QMAKE_UTILS_ECLASS="1" >declare -- _README_GENTOO_ECLASS="1" >declare -- _TOOLCHAIN_FUNCS_ECLASS="1" >declare -- _XDG_ECLASS="1" >declare -x __E_DESTTREE="/usr" >declare -x __E_DOCDESTTREE="" >declare -x __E_EXEDESTTREE="" >declare -x __E_INSDESTTREE="" >declare -x __LMOD_SET_FPATH="1" >declare -- __PORTAGE_HOOK_CLANG="/usr/lib/llvm/17/bin/clang-17" >declare -x ac_cv_c_undeclared_builtin_options="none needed" >declare -x ac_cv_have_decl_strerror_r="yes" >declare -x enable_year2038="no" >declare -x gl_cv_compiler_check_decl_option="-Werror=implicit-function-declaration" >declare -- hook_timestamp="2023-11-30T22:24" >declare -- hv_args="-b" >SwitchGCC () >{ > local highest=$(gcc-config --list-profiles --nocolor | cut -f 3 -d ' ' -s | grep -E 'x86_64-(pc|gentoo)-linux-(gnu|musl)-.*[0-9]$' | tail -n 1); > if [[ -z $highest ]]; then > Mail "${FUNCNAME[0]}: cannot get GCC version"; > return; > fi; > if ! gcc-config --list-profiles --nocolor | grep -q -F "$highest *"; then > local current; > current=$(gcc -dumpversion); > echo "major version change of gcc: $current -> $highest" | tee -a $taskfile.history; > gcc-config --nocolor $highest; > source_profile; > add2backlog "sys-devel/libtool"; > if grep -q '^LIBTOOL="rdlibtool"' /etc/portage/make.conf; then > add2backlog "sys-devel/slibtool"; > fi; > add2backlog "%emerge --unmerge sys-devel/gcc:$(cut -f 1 -d '.' <<< $current)"; > fi >} >declare -fx SwitchGCC >__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 >} >__eapi8_src_prepare () >{ > local f; > if ___is_indexed_array_var PATCHES; then > [[ ${#PATCHES[@]} -gt 0 ]] && eapply -- "${PATCHES[@]}"; > else > if [[ -n ${PATCHES} ]]; then > eapply -- ${PATCHES}; > fi; > fi; > eapply_user >} >__tinderbox_checkEOL () >{ > if [[ -f /var/tmp/tb/EOL || -f /var/tmp/tb/STOP ]]; then > exit 42; > fi >} >__tinderbox_meson () >{ > ( if grep -E -q 'internal compiler error' "${WORKDIR}"/*/config.log &> /dev/null; then > echo "${CATEGORY}/${PF}: Found ICE in config.log?!"; > fi; > if [[ -f "${S}"/meson.build ]] && ! grep -q "dev-util/meson" <<< "${BDEPEND}"; then > echo "${CATEGORY}/${PF}: meson.build found but ebuild doesn't use meson?"; > fi; > if grep -r -q "dejagnu" "${S}" &> /dev/null && ! grep -q "dejagnu" <<< "${BDEPEND}"; then > echo "${CATEGORY}/${PF}: Missing dejagnu tests?"; > fi; > if grep -r -q "test" "${S}/meson_options.txt" &> /dev/null && ! grep -q "test" <<< "${IUSE}"; then > echo "${CATEGORY}/${PF}: Missing test option wiring for meson?"; > fi; > if grep -E -r -q -- "(disable|enable|with(out)?)-(unit)?test(s?)" configure.ac &> /dev/null && ! grep -q "test" <<< "${IUSE}"; then > echo "${CATEGORY}/${PF}: Missing test option wiring for autoconf?"; > fi; > if grep -E -r -q -- "(disable|enable)-valgrind" configure.ac &> /dev/null && ! grep -q "valgrind" <<< "${IUSE}"; then > echo "${CATEGORY}/${PF}: Missing valgrind option wiring for autoconf?"; > fi; > if grep -r -q "valgrind" "${S}/meson_options.txt" &> /dev/null && ! grep -q "valgrind" <<< "${IUSE}"; then > echo "${CATEGORY}/${PF}: Missing valgrind option wiring for meson?"; > fi; > if grep -E -r -q -- "(disable|enable)-fuzz" configure.ac &> /dev/null && ! grep -q "fuzz" <<< "${EBUILD}"; then > echo "${CATEGORY}/${PF}: Missing fuzz option wiring for autoconf?"; > fi; > if grep -r -q "fuzz" "${S}/meson_options.txt" &> /dev/null && ! grep -q "fuzz" <<< "${EBUILD}"; then > echo "${CATEGORY}/${PF}: Missing fuzz option wiring for meson?"; > fi ) &>> /var/tmp/sam.txt >} >_clang_fullversion () >{ > local ver="$1"; > shift; > set -- $($(tc-getCPP "$@") -E -P - <<< "__clang_major__ __clang_minor__ __clang_patchlevel__"); > eval echo "${ver}" >} >_cmake_banned_func () >{ > die "${FUNCNAME[1]} is banned. use -D$1<related_CMake_variable>=\"\$(usex $2)\" instead" >} >_cmake_check_build_dir () >{ > if [[ ${EAPI} == 7 ]]; then > : "${CMAKE_USE_DIR:=${S}}"; > else > : "${CMAKE_USE_DIR:=${PWD}}"; > fi; > if [[ -n ${CMAKE_IN_SOURCE_BUILD} ]]; then > BUILD_DIR="${CMAKE_USE_DIR}"; > else > : "${BUILD_DIR:=${CMAKE_USE_DIR}_build}"; > if [[ ${S} == "${WORKDIR}" && ${BUILD_DIR} == "${WORKDIR}_build" ]]; then > eqawarn "QA notice: S=WORKDIR is deprecated for cmake.eclass."; > eqawarn "Please relocate the sources in src_unpack."; > BUILD_DIR="${WORKDIR}"/${P}_build; > fi; > fi; > einfo "Source directory (CMAKE_USE_DIR): \"${CMAKE_USE_DIR}\""; > einfo "Build directory (BUILD_DIR): \"${BUILD_DIR}\""; > mkdir -p "${BUILD_DIR}" || die >} >_cmake_modify-cmakelists () >{ > debug-print-function ${FUNCNAME} "$@"; > grep -qs "<<< Gentoo configuration >>>" "${CMAKE_USE_DIR}"/CMakeLists.txt && return 0; > find "${CMAKE_USE_DIR}" -name CMakeLists.txt -exec sed -e '/^[[:space:]]*set[[:space:]]*([[:space:]]*CMAKE_BUILD_TYPE\([[:space:]].*)\|)\)/I{s/^/#_cmake_modify_IGNORE /g}' -e '/^[[:space:]]*set[[:space:]]*([[:space:]]*CMAKE_COLOR_MAKEFILE[[:space:]].*)/I{s/^/#_cmake_modify_IGNORE /g}' -e '/^[[:space:]]*set[[:space:]]*([[:space:]]*CMAKE_INSTALL_PREFIX[[:space:]].*)/I{s/^/#_cmake_modify_IGNORE /g}' -e '/^[[:space:]]*set[[:space:]]*([[:space:]]*CMAKE_VERBOSE_MAKEFILE[[:space:]].*)/I{s/^/#_cmake_modify_IGNORE /g}' -i {} + || die "${LINENO}: failed to disable hardcoded settings"; > local x; > for x in $(find "${CMAKE_USE_DIR}" -name CMakeLists.txt -exec grep -l "^#_cmake_modify_IGNORE" {} +); > do > einfo "Hardcoded definition(s) removed in $(echo "${x}" | cut -c $((${#CMAKE_USE_DIR}+2))-):"; > einfo "$(grep -se '^#_cmake_modify_IGNORE' ${x} | cut -c 22-99)"; > done; > cat >> "${CMAKE_USE_DIR}"/CMakeLists.txt <<-_EOF_ || > >message(STATUS "<<< Gentoo configuration >>> >Build type \${CMAKE_BUILD_TYPE} >Install path \${CMAKE_INSTALL_PREFIX} >Compiler flags: >C \${CMAKE_C_FLAGS} >C++ \${CMAKE_CXX_FLAGS} >Linker flags: >Executable \${CMAKE_EXE_LINKER_FLAGS} >Module \${CMAKE_MODULE_LINKER_FLAGS} >Shared \${CMAKE_SHARED_LINKER_FLAGS}\n") >_EOF_ > die >} >_filter-hardened () >{ > local f; > for f in "$@"; > do > case "${f}" in > -fPIC | -fpic | -fPIE | -fpie | -Wl,pie | -pie) > if ! gcc-specs-pie && ! tc-enables-pie; then > continue; > fi; > 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 | -fstack-protector-strong) > if ! gcc-specs-ssp && ! tc-enables-ssp && ! tc-enables-ssp-strong; then > continue; > fi; > is-flagq -fno-stack-protector || append-flags $(test-flags -fno-stack-protector) > ;; > -fstack-protector-all) > if ! gcc-specs-ssp-to-all && ! tc-enables-ssp-all; then > continue; > fi; > 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) > ;; > -D_GLIBCXX_ASSERTIONS | -D_LIBCPP_ENABLE_ASSERTIONS | -D_LIBCPP_ENABLE_HARDENED_MODE) > tc-enables-cxx-assertions || continue; > append-cppflags -U_GLIBCXX_ASSERTIONS -U_LIBCPP_ENABLE_ASSERTIONS -U_LIBCPP_ENABLE_HARDENED_MODE > ;; > -D_FORTIFY_SOURCE=*) > tc-enables-fortify-source || continue; > append-cppflags -U_FORTIFY_SOURCE > ;; > 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}" >} >_get_all_makeopts () >{ > echo "${MAKEOPTS} ${GNUMAKEFLAGS} ${MAKEFLAGS}" >} >_is_flagq () >{ > local x var="$1[*]"; > for x in ${!var}; > do > [[ ${x} == $2 ]] && return 0; > done; > return 1 >} >_python_check_EPYTHON () >{ > if [[ -z ${EPYTHON} ]]; then > die "EPYTHON unset, invalid call context"; > fi >} >_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_check_occluded_packages () >{ > debug-print-function ${FUNCNAME} "${@}"; > [[ -z ${BUILD_DIR} || ! -d ${BUILD_DIR}/install ]] && return; > local sitedir="${BUILD_DIR}/install$(python_get_sitedir)"; > [[ ${sitedir} -ef . ]] && return; > local f fn diff l; > for f in "${sitedir}"/*/; > do > f=${f%/}; > fn=${f##*/}; > [[ ${fn} == *.dist-info || ${fn} == *.egg-info ]] && continue; > if [[ -d ${fn} ]]; then > diff=$(comm -1 -3 <(find "${fn}" -type f -not -path '*/__pycache__/*' | sort >assert) <(cd "${sitedir}" && find "${fn}" -type f -not -path '*/__pycache__/*' | sort >assert)); > if [[ -n ${diff} ]]; then > eqawarn "The directory ${fn} occludes package installed for ${EPYTHON}."; > eqawarn "The installed package includes additional files:"; > eqawarn; > while IFS= read -r l; do > eqawarn " ${l}"; > done <<< "${diff}"; > eqawarn; > if [[ ! -n ${_PYTHON_WARNED_OCCLUDED_PACKAGES} ]]; then > eqawarn "For more information on occluded packages, please see:"; > eqawarn "https://projects.gentoo.org/python/guide/test.html#importerrors-for-c-extensions"; > _PYTHON_WARNED_OCCLUDED_PACKAGES=1; > fi; > fi; > fi; > done >} >_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=${BROOT-${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}" - "${EPREFIX}/usr" <<-EOF || >import sys, sysconfig >print(sysconfig.get_path("purelib", vars={"base": sys.argv[1]})) >EOF > 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}" - "${ESYSROOT}/usr" <<-EOF || >import sys, sysconfig >print(sysconfig.get_path("platinclude", vars={"installed_platbase": sys.argv[1]})) >EOF > 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}" - <<-EOF || >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 "") >EOF > 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-}-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}" - <<-EOF || >import sysconfig >print(sysconfig.get_config_var("ABIFLAGS") >or "") >EOF > 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 > python*) > PYTHON_PKG_DEP="dev-lang/python:${impl#python}" > ;; > pypy3) > PYTHON_PKG_DEP="dev-python/${impl}:=" > ;; > *) > 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_impl_matches () >{ > [[ ${#} -ge 1 ]] || die "${FUNCNAME}: takes at least 1 parameter"; > [[ ${#} -eq 1 ]] && return 0; > local impl=${1/./_} pattern; > shift; > for pattern in "$@"; > do > case ${pattern} in > -2 | python2* | pypy) > if [[ ${EAPI} != 7 ]]; then > eerror; > eerror "Python 2 is no longer supported in Gentoo, please remove Python 2"; > eerror "${FUNCNAME[1]} calls."; > die "Passing ${pattern} to ${FUNCNAME[1]} is banned in EAPI ${EAPI}"; > fi > ;; > -3) > if [[ ${EAPI} != 7 ]]; then > eerror; > eerror "Python 2 is no longer supported in Gentoo, please remove Python 2"; > eerror "${FUNCNAME[1]} calls."; > die "Passing ${pattern} to ${FUNCNAME[1]} is banned in EAPI ${EAPI}"; > fi; > return 0 > ;; > 3.10) > [[ ${impl} == python${pattern/./_} || ${impl} == pypy3 ]] && return 0 > ;; > 3.8 | 3.9 | 3.1[1-2]) > [[ ${impl} == python${pattern/./_} ]] && return 0 > ;; > *) > [[ ${impl} == ${pattern/./_} ]] && return 0 > ;; > esac; > done; > return 1 >} >_python_run_check_deps () >{ > debug-print-function ${FUNCNAME} "${@}"; > local impl=${1}; > einfo "Checking whether ${impl} is suitable ..."; > local PYTHON_PKG_DEP; > _python_export "${impl}" PYTHON_PKG_DEP; > ebegin " ${PYTHON_PKG_DEP}"; > has_version -b "${PYTHON_PKG_DEP}"; > eend ${?} || return 1; > declare -f python_check_deps > /dev/null || return 0; > local PYTHON_USEDEP="python_targets_${impl}(-)"; > local PYTHON_SINGLE_USEDEP="python_single_target_${impl}(-)"; > ebegin " python_check_deps"; > python_check_deps; > eend ${?} >} >_python_set_impls () >{ > local i; > if [[ ${BASH_VERSINFO[0]} -ge 5 ]]; then > [[ ${PYTHON_COMPAT@a} == *a* ]]; > else > [[ $(declare -p PYTHON_COMPAT) == "declare -a"* ]]; > fi; > if [[ ${?} -ne 0 ]]; then > if ! declare -p PYTHON_COMPAT &> /dev/null; then > die 'PYTHON_COMPAT not declared.'; > else > die 'PYTHON_COMPAT must be an array.'; > fi; > fi; > local obsolete=(); > if [[ ! -n ${PYTHON_COMPAT_NO_STRICT} ]]; then > for i in "${PYTHON_COMPAT[@]}"; > do > case ${i} in > pypy3 | python3_9 | python3_1[0-2]) > > ;; > jython2_7 | pypy | pypy1_[89] | pypy2_0 | python2_[5-7] | python3_[1-9]) > obsolete+=("${i}") > ;; > *) > 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 > 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 >} >_python_verify_patterns () >{ > debug-print-function ${FUNCNAME} "${@}"; > local impl pattern; > for pattern in "$@"; > do > case ${pattern} in > -[23] | 3.[89] | 3.1[012]) > continue > ;; > esac; > 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 > 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; > cat > "${workdir}/bin/python" <<-_EOF_ || >#!/bin/sh >exec "${PYTHON}" "\${@}" >_EOF_ > die > cp "${workdir}/bin/python" "${workdir}/bin/python3" || die; > chmod +x "${workdir}/bin/python" "${workdir}/bin/python3" || die; > local nonsupp=(python2 python2-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/python3-config" || die; > chmod +x "${workdir}/bin/python-config" "${workdir}/bin/python3-config" || die; > ln -s "${PYTHON/python/2to3-}" "${workdir}"/bin/2to3 || die; > ln -s "${EPREFIX}"/usr/$(get_libdir)/pkgconfig/${EPYTHON/n/n-}.pc "${workdir}"/pkgconfig/python3.pc || die; > ln -s "${EPREFIX}"/usr/$(get_libdir)/pkgconfig/${EPYTHON/n/n-}-embed.pc "${workdir}"/pkgconfig/python3-embed.pc || die; > else > nonsupp+=(2to3 python-config python3-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 >} >_setup-allowed-flags () >{ > ALLOWED_FLAGS=(-pipe -O '-O[123szg]' '-mcpu=*' '-march=*' '-mtune=*' '-mfpmath=*' -flto '-flto=*' -fno-lto '-fstack-protector*' -fstack-clash-protection '-fcf-protection=*' -fbounds-check -fbounds-checking -fno-PIE -fno-pie -nopie -no-pie -fharden-compares -fharden-conditional-branches -fharden-control-flow-redundancy -fno-harden-control-flow-redundancy -fhardcfr-skip-leaf -fhardcfr-check-exceptions -fhardcfr-check-returning-calls '-fhardcfr-check-noreturn-calls=*' '-mindirect-branch=*' -mindirect-branch-register '-mfunction-return=*' -mretpoline '-mharden-sls=*' '-mbranch-protection=*' -fno-unit-at-a-time -fno-strict-overflow '-fsanitize*' '-fno-sanitize*' -g '-g[0-9]' -ggdb '-ggdb[0-9]' -gdwarf '-gdwarf-*' -gstabs -gstabs+ -gz -glldb '-fdebug-default-version=*' -fno-diagnostics-color '-fmessage-length=*' -fno-ident -fpermissive -frecord-gcc-switches -frecord-command-line '-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*' -mno-omit-leaf-frame-pointer); > ALLOWED_FLAGS+=('-mregparm=*' -mno-app-regs -mapp-regs -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-ssse3 -mno-sse4 -mno-sse4.1 -mno-sse4.2 -mno-avx -mno-aes -mno-pclmul -mno-sse4a -mno-3dnow -mno-popcnt -mno-abm -mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 -mplt -msoft-float -mno-soft-float -mhard-float -mno-hard-float '-mfpu=*' -mieee -mieee-with-inexact '-mschedule=*' -mfloat-gprs -mspe -mno-spe -mtls-direct-seg-refs -mno-tls-direct-seg-refs -mflat -mno-flat -mno-faster-structs -mfaster-structs -m32 -m64 -mx32 '-mabi=*' -mlittle-endian -mbig-endian -EL -EB -fPIC -mlive-g0 '-mcmodel=*' -mstack-bias -mno-stack-bias -msecure-plt '-m*-toc' '-mfloat-abi=*' '-mtls-dialect=*' -mfix-24k -mno-fix-24k -mfix-r4000 -mno-fix-r4000 -mfix-r4400 -mno-fix-r4400 -mfix-r5900 -mno-fix-r5900 -mfix-rm7000 -mno-fix-rm7000 -mfix-r9500 -mno-fix-r9500 -mfix-r10000 -mno-fix-r10000 -mfix-vr4120 -mno-fix-vr4120 -mfix-vr4130 -mfix-sb1 -mno-fix-sb1 '-Wa,-mfix-loongson2f-nop' '-mr10k-cache-barrier=*' -mthumb -marm -ffixed-x18 -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 '-mpreferred-stack-boundary=*' '-mincoming-stack-boundary=*'); > ALLOWED_FLAGS+=('--unwindlib=*' '--rtlib=*' '--stdlib=*') >} >_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}" >} >_tc-has-openmp () >{ > local base="${T}/test-tc-openmp"; > cat <<-EOF > "${base}.c" >#include <omp.h> >int main(void) { >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} >} >_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; }'; > if is-ldflagq -fuse-ld=*; then > fuse_ld_value=$(get-flag -fuse-ld=*); > cmdline_extra+=(${fuse_ld_value}); > fi; > 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}"); > "${cmdline[@]}" &> /dev/null >} >_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 ]] >} >add2backlog () >{ > local bl=/var/tmp/tb/backlog.1st; > if [[ $1 == '@preserved-rebuild' ]]; then > sed -i -e "/@preserved-rebuild/d" $bl; > sed -i -e "1 i\@preserved-rebuild" $bl; > else > if [[ $1 =~ ^@ || $1 =~ ^% ]]; then > if [[ "$(tail -n 1 $bl)" != "$1" ]]; then > echo "$1" >> $bl; > fi; > else > if ! grep -q "^${1}$" $bl; then > echo "$1" >> $bl; > fi; > fi; > fi >} >declare -fx add2backlog >all-flag-vars () >{ > echo {ADA,C,CPP,CXX,CCAS,F,FC,LD}FLAGS >} >append-atomic-flags () >{ > local code; > read -r -d '' code <<-EOF >int main(void) >{ >return 0; >} >EOF > > test-compile "c+ld" "${code}" || return; > local bytesizes; > [[ "${#}" == "0" ]] && bytesizes=("1" "2" "4" "8") || bytesizes="${@}"; > for bytesize in ${bytesizes[@]}; > do > read -r -d '' code <<-EOF >#include <stdint.h> >int main(void) >{ >uint$((${bytesize} * 8))_t a = 0; >__atomic_add_fetch(&a, 3, __ATOMIC_RELAXED); >__atomic_compare_exchange_n(&a, &a, 2, 1, __ATOMIC_RELAXED, __ATOMIC_RELAXED); >return 0; >} >EOF > > test-compile "c+ld" "${code}" && continue > test-flags-CCLD "-latomic" &> /dev/null || die "-latomic is required but not supported by $(tc-getCC)"; > append-libs "-latomic"; > test-compile "c+ld" "${code}" || die "libatomic does not include an implementation of ${bytesize}-byte atomics for this toolchain"; > return; > done >} >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 >} >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; > local command=("${EPYTHON}" -m sphinx.cmd.build); > if ! "${EPYTHON}" -c "import sphinx.cmd.build" 2> /dev/null; then > command=(sphinx-build); > fi; > command+=(-b html -d "${dir}"/_build/doctrees "${dir}" "${dir}"/_build/html); > echo "${command[@]}" 1>&2; > "${command[@]}" || 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' "$@" >} >cmake-utils_src_make () >{ > die "cmake-utils_src_make is banned. Use cmake_build instead" >} >cmake-utils_use () >{ > _cmake_banned_func "" "$@" >} >cmake-utils_use_build () >{ > _cmake_banned_func BUILD_ "$@" >} >cmake-utils_use_disable () >{ > _cmake_banned_func DISABLE_ "$@" >} >cmake-utils_use_enable () >{ > _cmake_banned_func ENABLE_ "$@" >} >cmake-utils_use_has () >{ > _cmake_banned_func HAVE_ "$@" >} >cmake-utils_use_no () >{ > _cmake_banned_func NO_ "$@" >} >cmake-utils_use_use () >{ > _cmake_banned_func USE_ "$@" >} >cmake-utils_use_want () >{ > _cmake_banned_func WANT_ "$@" >} >cmake-utils_use_with () >{ > _cmake_banned_func WITH_ "$@" >} >cmake-utils_useno () >{ > _cmake_banned_func "" "$@" >} >cmake_build () >{ > debug-print-function ${FUNCNAME} "$@"; > _cmake_check_build_dir; > pushd "${BUILD_DIR}" > /dev/null || die; > case ${CMAKE_MAKEFILE_GENERATOR} in > emake) > [[ -e Makefile ]] || die "Makefile not found. Error during configure stage."; > case ${CMAKE_VERBOSE} in > OFF) > emake "$@" > ;; > *) > emake VERBOSE=1 "$@" > ;; > esac > ;; > ninja) > [[ -e build.ninja ]] || die "build.ninja not found. Error during configure stage."; > case ${CMAKE_VERBOSE} in > OFF) > NINJA_VERBOSE=OFF eninja "$@" > ;; > *) > eninja "$@" > ;; > esac > ;; > esac; > popd > /dev/null || die >} >cmake_comment_add_subdirectory () >{ > if [[ -z ${1} ]]; then > die "${FUNCNAME[0]} must be passed at least one directory name to comment"; > fi; > [[ -e "CMakeLists.txt" ]] || return; > local d; > for d in $@; > do > d=${d//\//\\/}; > sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${d}[[:space:]]*)/I s/^/#DONOTCOMPILE /" -i CMakeLists.txt || die "failed to comment add_subdirectory(${d})"; > done >} >cmake_run_in () >{ > if [[ -z ${2} ]]; then > die "${FUNCNAME[0]} must be passed at least two arguments"; > fi; > [[ -e ${1} ]] || die "${FUNCNAME[0]}: Nonexistent path: ${1}"; > pushd ${1} > /dev/null || die; > "${@:2}"; > popd > /dev/null || die >} >cmake_src_compile () >{ > debug-print-function ${FUNCNAME} "$@"; > cmake_build "$@" >} >cmake_src_configure () >{ > debug-print-function ${FUNCNAME} "$@"; > [[ -n ${_CMAKE_SRC_PREPARE_HAS_RUN} ]] || die "FATAL: cmake_src_prepare has not been run"; > _cmake_check_build_dir; > xdg_environment_reset; > local build_rules=${BUILD_DIR}/gentoo_rules.cmake; > cat > "${build_rules}" <<-_EOF_ || >set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> <DEFINES> <INCLUDES> ${CPPFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "ASM compile command" FORCE) >set(CMAKE_ASM-ATT_COMPILE_OBJECT "<CMAKE_ASM-ATT_COMPILER> <DEFINES> <INCLUDES> ${CPPFLAGS} <FLAGS> -o <OBJECT> -c -x assembler <SOURCE>" CACHE STRING "ASM-ATT compile command" FORCE) >set(CMAKE_ASM-ATT_LINK_FLAGS "-nostdlib" CACHE STRING "ASM-ATT link flags" FORCE) >set(CMAKE_C_COMPILE_OBJECT "<CMAKE_C_COMPILER> <DEFINES> <INCLUDES> ${CPPFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "C compile command" FORCE) >set(CMAKE_CXX_COMPILE_OBJECT "<CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> ${CPPFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "C++ compile command" FORCE) >set(CMAKE_Fortran_COMPILE_OBJECT "<CMAKE_Fortran_COMPILER> <DEFINES> <INCLUDES> ${FCFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "Fortran compile command" FORCE) >_EOF_ > die > local myCC=$(tc-getCC) myCXX=$(tc-getCXX) myFC=$(tc-getFC); > local toolchain_file=${BUILD_DIR}/gentoo_toolchain.cmake; > cat > ${toolchain_file} <<-_EOF_ || >set(CMAKE_ASM_COMPILER "${myCC/ /;}") >set(CMAKE_ASM-ATT_COMPILER "${myCC/ /;}") >set(CMAKE_C_COMPILER "${myCC/ /;}") >set(CMAKE_CXX_COMPILER "${myCXX/ /;}") >set(CMAKE_Fortran_COMPILER "${myFC/ /;}") >set(CMAKE_AR $(type -P $(tc-getAR)) CACHE FILEPATH "Archive manager" FORCE) >set(CMAKE_RANLIB $(type -P $(tc-getRANLIB)) CACHE FILEPATH "Archive index generator" FORCE) >set(CMAKE_SYSTEM_PROCESSOR "${CHOST%%-*}") >_EOF_ > die > local -x ASMFLAGS=${CFLAGS}; > local -x PKG_CONFIG=$(tc-getPKG_CONFIG); > if tc-is-cross-compiler; then > local sysname; > case "${KERNEL:-linux}" in > Cygwin) > sysname="CYGWIN_NT-5.1" > ;; > HPUX) > sysname="HP-UX" > ;; > linux) > sysname="Linux" > ;; > Winnt) > sysname="Windows"; > cat >> "${toolchain_file}" <<-_EOF_ || >set(CMAKE_RC_COMPILER $(tc-getRC)) >_EOF_ > die > ;; > *) > sysname="${KERNEL}" > ;; > esac > cat >> "${toolchain_file}" <<-_EOF_ || >set(CMAKE_SYSTEM_NAME "${sysname}") >_EOF_ > die; > fi > if [[ ${SYSROOT:-/} != / ]]; then > cat >> "${toolchain_file}" <<-_EOF_ || >set(CMAKE_SYSROOT "${ESYSROOT}") >set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) >set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) >set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) >_EOF_ > die; > fi > if use prefix-guest; then > cat >> "${build_rules}" <<-_EOF_ || ># in Prefix we need rpath and must ensure cmake gets our default linker path ># right ... except for Darwin hosts >if(NOT APPLE) >set(CMAKE_SKIP_RPATH OFF CACHE BOOL "" FORCE) >set(CMAKE_PLATFORM_REQUIRED_RUNTIME_PATH "${EPREFIX}/usr/${CHOST}/lib/gcc;${EPREFIX}/usr/${CHOST}/lib;${EPREFIX}/usr/$(get_libdir);${EPREFIX}/$(get_libdir)" CACHE STRING "" FORCE) >else() >set(CMAKE_PREFIX_PATH "${EPREFIX}/usr" CACHE STRING "" FORCE) >set(CMAKE_MACOSX_RPATH ON CACHE BOOL "" FORCE) >set(CMAKE_SKIP_BUILD_RPATH OFF CACHE BOOL "" FORCE) >set(CMAKE_SKIP_RPATH OFF CACHE BOOL "" FORCE) >set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE CACHE BOOL "" FORCE) >endif() >_EOF_ > die; > fi > local common_config=${BUILD_DIR}/gentoo_common_config.cmake; > local libdir=$(get_libdir); > cat > "${common_config}" <<-_EOF_ || >set(CMAKE_GENTOO_BUILD ON CACHE BOOL "Indicate Gentoo package build") >set(LIB_SUFFIX ${libdir/lib} CACHE STRING "library path suffix" FORCE) >set(CMAKE_INSTALL_LIBDIR ${libdir} CACHE PATH "Output directory for libraries") >set(CMAKE_INSTALL_INFODIR "${EPREFIX}/usr/share/info" CACHE PATH "") >set(CMAKE_INSTALL_MANDIR "${EPREFIX}/usr/share/man" CACHE PATH "") >set(CMAKE_USER_MAKE_RULES_OVERRIDE "${build_rules}" CACHE FILEPATH "Gentoo override rules") >set(CMAKE_INSTALL_DOCDIR "${EPREFIX}/usr/share/doc/${PF}" CACHE PATH "") >set(BUILD_SHARED_LIBS ON CACHE BOOL "") >set(Python3_FIND_UNVERSIONED_NAMES FIRST CACHE STRING "") >_EOF_ > die > if [[ -n ${_ECM_ECLASS} ]]; then > echo 'set(ECM_DISABLE_QMLPLUGINDUMP ON CACHE BOOL "")' >> "${common_config}" || die; > fi; > if [[ "${ARCH}" == riscv ]]; then > echo 'set(CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX '"${libdir#lib}"' CACHE STRING "library search suffix" FORCE)' >> "${common_config}" || die; > fi; > if [[ "${NOCOLOR}" = true || "${NOCOLOR}" = yes ]]; then > echo 'set(CMAKE_COLOR_MAKEFILE OFF CACHE BOOL "pretty colors during make" FORCE)' >> "${common_config}" || die; > fi; > if [[ ${EAPI} != 7 ]]; then > echo 'set(CMAKE_INSTALL_ALWAYS 1)' >> "${common_config}" || die; > fi; > if [[ ${CMAKE_BUILD_TYPE} != Gentoo ]]; then > cat >> ${common_config} <<-_EOF_ || >set(CMAKE_ASM_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "") >set(CMAKE_ASM-ATT_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "") >set(CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "") >set(CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "") >set(CMAKE_Fortran_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "") >set(CMAKE_EXE_LINKER_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "") >set(CMAKE_MODULE_LINKER_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "") >set(CMAKE_SHARED_LINKER_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "") >set(CMAKE_STATIC_LINKER_FLAGS_${CMAKE_BUILD_TYPE^^} "" CACHE STRING "") >_EOF_ > die; > fi > [[ -z ${mycmakeargs} ]] && declare -a mycmakeargs=(); > local mycmakeargstype=$(declare -p mycmakeargs 2>&-); > if [[ "${mycmakeargstype}" != "declare -a mycmakeargs="* ]]; then > die "mycmakeargs must be declared as array"; > fi; > local mycmakeargs_local=("${mycmakeargs[@]}"); > local warn_unused_cli=""; > if [[ ${CMAKE_WARN_UNUSED_CLI} == no ]]; then > warn_unused_cli="--no-warn-unused-cli"; > fi; > local generator_name; > case ${CMAKE_MAKEFILE_GENERATOR} in > ninja) > generator_name="Ninja" > ;; > emake) > generator_name="Unix Makefiles" > ;; > esac; > local cmakeargs=(${warn_unused_cli} -C "${common_config}" -G "${generator_name}" -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr" "${mycmakeargs_local[@]}" -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" -DCMAKE_TOOLCHAIN_FILE="${toolchain_file}"); > eval "local -a MYCMAKEARGS=( ${MYCMAKEARGS} )"; > cmakeargs+=("${MYCMAKEARGS[@]}"); > if [[ -n "${CMAKE_EXTRA_CACHE_FILE}" ]]; then > cmakeargs+=(-C "${CMAKE_EXTRA_CACHE_FILE}"); > fi; > pushd "${BUILD_DIR}" > /dev/null || die; > debug-print "${LINENO} ${ECLASS} ${FUNCNAME}: mycmakeargs is ${mycmakeargs_local[*]}"; > echo "${CMAKE_BINARY}" "${cmakeargs[@]}" "${CMAKE_USE_DIR}"; > "${CMAKE_BINARY}" "${cmakeargs[@]}" "${CMAKE_USE_DIR}" || die "cmake failed"; > popd > /dev/null || die >} >cmake_src_install () >{ > debug-print-function ${FUNCNAME} "$@"; > DESTDIR="${D}" cmake_build install "$@"; > if [[ ${EAPI} == 7 ]]; then > pushd "${S}" > /dev/null || die; > einstalldocs; > popd > /dev/null || die; > else > pushd "${CMAKE_USE_DIR}" > /dev/null || die; > einstalldocs; > popd > /dev/null || die; > fi >} >cmake_src_prepare () >{ > debug-print-function ${FUNCNAME} "$@"; > if [[ ${EAPI} == 7 ]]; then > pushd "${S}" > /dev/null || die; > fi; > _cmake_check_build_dir; > default_src_prepare; > if [[ ! -e ${CMAKE_USE_DIR}/CMakeLists.txt ]]; then > eerror "Unable to locate CMakeLists.txt under:"; > eerror "\"${CMAKE_USE_DIR}/CMakeLists.txt\""; > eerror "Consider not inheriting the cmake eclass."; > die "FATAL: Unable to find CMakeLists.txt"; > fi; > local modules_list; > if [[ ${EAPI} == 7 && $(declare -p CMAKE_REMOVE_MODULES_LIST) != "declare -a"* ]]; then > modules_list=(${CMAKE_REMOVE_MODULES_LIST}); > else > modules_list=("${CMAKE_REMOVE_MODULES_LIST[@]}"); > fi; > local name; > for name in "${modules_list[@]}"; > do > if [[ ${EAPI} == 7 ]]; then > find "${S}" -name ${name}.cmake -exec rm -v {} + || die; > else > find -name "${name}.cmake" -exec rm -v {} + || die; > fi; > done; > _cmake_modify-cmakelists; > if [[ ${EAPI} == 7 ]]; then > popd > /dev/null || die; > fi; > if [[ -n ${CMAKE_QA_SRC_DIR_READONLY} && ! -n ${CMAKE_IN_SOURCE_BUILD} ]]; then > if [[ ${EAPI} == 7 ]]; then > chmod -R a-w "${S}"; > else > chmod -R a-w "${CMAKE_USE_DIR}"; > fi; > fi; > _CMAKE_SRC_PREPARE_HAS_RUN=1 >} >cmake_src_test () >{ > debug-print-function ${FUNCNAME} "$@"; > _cmake_check_build_dir; > pushd "${BUILD_DIR}" > /dev/null || die; > [[ -e CTestTestfile.cmake ]] || { > echo "No tests found. Skipping."; > return 0 > }; > [[ -n ${TEST_VERBOSE} ]] && myctestargs+=(--extra-verbose --output-on-failure); > [[ -n ${CMAKE_SKIP_TESTS} ]] && myctestargs+=(-E '('$(IFS='|'; echo "${CMAKE_SKIP_TESTS[*]}")')'); > set -- ctest -j "$(makeopts_jobs "${MAKEOPTS}" 999)" --test-load "$(makeopts_loadavg)" "${myctestargs[@]}" "$@"; > echo "$@" 1>&2; > if "$@"; then > einfo "Tests succeeded."; > popd > /dev/null || die; > return 0; > else > if [[ -n "${CMAKE_YES_I_WANT_TO_SEE_THE_TEST_LOG}" ]]; then > eerror "Tests failed. Test log ${BUILD_DIR}/Testing/Temporary/LastTest.log follows:"; > eerror "--START TEST LOG--------------------------------------------------------------"; > cat "${BUILD_DIR}/Testing/Temporary/LastTest.log"; > eerror "--END TEST LOG----------------------------------------------------------------"; > die "Tests failed."; > else > die "Tests failed. When you file a bug, please attach the following file: \n\t${BUILD_DIR}/Testing/Temporary/LastTest.log"; > fi; > popd > /dev/null || die; > return 1; > fi >} >cmake_use_find_package () >{ > debug-print-function ${FUNCNAME} "$@"; > if [[ "$#" != 2 || -z $1 ]]; then > die "Usage: cmake_use_find_package <USE flag> <package name>"; > fi; > echo "-DCMAKE_DISABLE_FIND_PACKAGE_$2=$(use $1 && echo OFF || echo ON)" >} >comment_add_subdirectory () >{ > die "comment_add_subdirectory is banned. Use cmake_comment_add_subdirectory instead" >} >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 columns=${COLUMNS:-0}; > [[ ${columns} == 0 ]] && columns=$(set -- $( ( stty size < /dev/tty ) 2> /dev/null || echo 24 80); echo $2); > (( columns > 0 )) || (( columns = 80 )); > 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 > if [[ -z ${applied} ]]; then > einfo "${PORTAGE_COLOR_INFO}$(for ((column = 0; column < ${columns} - 3; column++)) >do > echo -n =; >done)${PORTAGE_COLOR_NORMAL}"; > einfo "Applying user patches from ${basedir} ..."; > fi; > eapply "${f}"; > applied=1; > fi; > done < <(printf -- '%s\0' "${!_eapply_user_patches[@]}" | LC_ALL=C sort -z); > fi; > ${prev_shopt}; > if [[ -n ${applied} ]]; then > einfo "User patches applied."; > einfo "${PORTAGE_COLOR_INFO}$(for ((column = 0; column < ${columns} - 3; column++)) >do > echo -n =; >done)${PORTAGE_COLOR_NORMAL}"; > fi >} >econf_build () >{ > local CBUILD=${CBUILD:-${CHOST}}; > function econf_env () > { > CHOST=${CBUILD} econf "$@" > }; > tc-env_build econf_env "$@" >} >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 ) >} >eninja () >{ > case "${NINJA}" in > ninja | samu) > > ;; > *) > ewarn "Unknown value '${NINJA}' for \${NINJA}" > ;; > esac; > local v; > case "${NINJA_VERBOSE}" in > OFF) > > ;; > *) > v="-v" > ;; > esac; > set -- "${NINJA}" ${v} $(get_NINJAOPTS) "$@"; > echo "$@" 1>&2; > "$@" || die -n "${*} failed" >} >epytest () >{ > debug-print-function ${FUNCNAME} "${@}"; > _python_check_EPYTHON; > _python_check_occluded_packages; > local color=yes; > [[ -n ${NO_COLOR} ]] && color=no; > local args=(-vv -ra -l -Wdefault "--color=${color}" -o console_output_style=count -o tmp_path_retention_count=0 -o tmp_path_retention_policy=failed); > if [[ ! -n ${PYTEST_DISABLE_PLUGIN_AUTOLOAD} ]]; then > args+=(-p no:cov -p no:flake8 -p no:flakes -p no:pylint -p no:markdown -p no:sugar -p no:xvfb -p no:pytest-describe -p no:plus -p no:tavern -p no:salt-factories); > fi; > if [[ -n ${EPYTEST_TIMEOUT} ]]; then > if [[ ${PYTEST_PLUGINS} != *pytest_timeout* ]]; then > args+=(-p timeout); > fi; > args+=("--timeout=${EPYTEST_TIMEOUT}"); > fi; > if [[ -n ${EPYTEST_XDIST} ]]; then > local jobs=${EPYTEST_JOBS:-$(makeopts_jobs)}; > if [[ ${jobs} -gt 1 ]]; then > if [[ ${PYTEST_PLUGINS} != *xdist.plugin* ]]; then > args+=(-p xdist); > fi; > args+=(-n "${jobs}" --dist=worksteal); > fi; > fi; > local x; > for x in "${EPYTEST_DESELECT[@]}"; > do > args+=(--deselect "${x}"); > done; > for x in "${EPYTEST_IGNORE[@]}"; > do > args+=(--ignore "${x}"); > done; > set -- "${EPYTHON}" -m pytest "${args[@]}" "${@}"; > echo "${@}" 1>&2; > "${@}" || die -n "pytest failed with ${EPYTHON}"; > local ret=${?}; > rm -rf .hypothesis .pytest_cache || die; > if [[ -n ${BUILD_DIR} && -d ${BUILD_DIR} ]]; then > find "${BUILD_DIR}" -name '*-pytest-*.pyc' -delete || die; > fi; > return ${ret} >} >eqmake5 () >{ > debug-print-function ${FUNCNAME} "$@"; > ebegin "Running qmake"; > local -a args; > mapfile -t args <<< "$(qt5_get_qmake_args)"; > "$(qt5_get_bindir)"/qmake -makefile "${args[@]}" "$@"; > if ! eend $?; then > echo; > eerror "Running qmake has failed! (see above for details)"; > eerror "This shouldn't happen - please send a bug report to https://bugs.gentoo.org/"; > echo; > die "eqmake5 failed"; > fi >} >eqmake6 () >{ > debug-print-function ${FUNCNAME} "$@"; > ebegin "Running qmake"; > local -a args; > mapfile -t args <<< "$(qt6_get_qmake_args)"; > "$(qt6_get_bindir)"/qmake -makefile "${args[@]}" "$@"; > if ! eend $?; then > echo; > eerror "Running qmake has failed! (see above for details)"; > eerror "This shouldn't happen - please send a bug report to https://bugs.gentoo.org/"; > echo; > die "eqmake6 failed"; > fi >} >eunittest () >{ > debug-print-function ${FUNCNAME} "${@}"; > _python_check_EPYTHON; > _python_check_occluded_packages; > local runner=unittest; > if _python_impl_matches "${EPYTHON}" 3.{9..11}; then > runner=unittest_or_fail; > fi; > set -- "${EPYTHON}" -m "${runner}" discover -v "${@}"; > echo "${@}" 1>&2; > "${@}" || die -n "Tests failed with ${EPYTHON}"; > return ${?} >} >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 -D_TIME_BITS=64 >} >filter-lto () >{ > [[ $# -ne 0 ]] && die "filter-lto takes no arguments"; > filter-flags '-flto*' -fwhole-program-vtables '-fsanitize=cfi*' >} >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*) > 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 $(type -P ${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_NINJAOPTS () >{ > if [[ -z ${NINJAOPTS+set} ]]; then > NINJAOPTS="-j$(get_makeopts_jobs 999) -l$(get_makeopts_loadavg 0)"; > fi; > echo "${NINJAOPTS}" >} >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_exeext () >{ > case ${CHOST} in > 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 > mingw* | *-mingw*) > libname="dll" > ;; > *-darwin*) > libname="dylib" > ;; > *) > libname="so" > ;; > esac; > if [[ -z $* ]]; then > echo ".${libname}"; > else > for ver in "$@"; > do > case ${CHOST} in > *-darwin*) > echo ".${ver}.${libname}" > ;; > *) > echo ".${libname}.${ver}" > ;; > esac; > done; > fi >} >get_makeopts_jobs () >{ > makeopts_jobs "$(_get_all_makeopts)" "${1:-1}" >} >get_makeopts_loadavg () >{ > makeopts_loadavg "$(_get_all_makeopts)" "${1:-999}" >} >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[@]#[+-]}" >} >is-flag () >{ > is-flagq "$@" && echo true >} >is-flagq () >{ > [[ -n $2 ]] && die "Usage: is-flag <flag>"; > local var; > for var in $(all-flag-vars); > do > _is_flagq ${var} "$1" && return 0; > done; > return 1 >} >is-ldflag () >{ > is-ldflagq "$@" && echo true >} >is-ldflagq () >{ > [[ -n $2 ]] && die "Usage: is-ldflag <flag>"; > _is_flagq LDFLAGS $1 >} >is_final_abi () >{ > has_multilib_profile || return 0; > set -- $(get_install_abis); > local LAST_ABI=$#; > [[ ${!LAST_ABI} == ${ABI} ]] >} >makeopts_jobs () >{ > [[ $# -eq 0 ]] && set -- "$(_get_all_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:-$(( $(get_nproc) + 1 ))}:p"); > echo ${jobs:-1} >} >makeopts_loadavg () >{ > [[ $# -eq 0 ]] && set -- "$(_get_all_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}} >} >ml () >{ > eval "$($LMOD_DIR/ml_cmd "$@")" >} >declare -fx ml >module () >{ > if [ -z "${LMOD_SH_DBG_ON+x}" ]; then > case "$-" in > *v*x*) > __lmod_sh_dbg='vx' > ;; > *v*) > __lmod_sh_dbg='v' > ;; > *x*) > __lmod_sh_dbg='x' > ;; > esac; > fi; > if [ -n "${__lmod_sh_dbg:-}" ]; then > set +$__lmod_sh_dbg; > echo "Shell debugging temporarily silenced: export LMOD_SH_DBG_ON=1 for Lmod's output" 1>&2; > fi; > eval "$($LMOD_CMD shell "$@")" && eval "$(${LMOD_SETTARG_CMD:-:} -s sh)"; > __lmod_my_status=$?; > if [ -n "${__lmod_sh_dbg:-}" ]; then > echo "Shell debugging restarted" 1>&2; > set -$__lmod_sh_dbg; > fi; > unset __lmod_sh_dbg; > return $__lmod_my_status >} >declare -fx module >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 > ;; > loongarch64*) > export CFLAGS_lp64d=${CFLAGS_lp64d--mabi=lp64d}; > export CHOST_lp64d=${CTARGET}; > export CTARGET_lp64d=${CTARGET}; > export LIBDIR_lp64d=${LIBDIR_lp64d-lib64}; > : "${MULTILIB_ABIS=lp64d}"; > : "${DEFAULT_ABI=lp64d}" > ;; > 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*) > : "${MULTILIB_ABIS=lp64d lp64 ilp32d ilp32}"; > : "${DEFAULT_ABI=lp64d}"; > local _libdir_riscvdefaultabi_variable="LIBDIR_${DEFAULT_ABI}"; > local _libdir_riscvdefaultabi=${!_libdir_riscvdefaultabi_variable}; > export ${_libdir_riscvdefaultabi_variable}=${_libdir_riscvdefaultabi:-lib64}; > export CFLAGS_lp64d=${CFLAGS_lp64d--mabi=lp64d -march=rv64gc}; > export CHOST_lp64d=${CTARGET}; > export CTARGET_lp64d=${CTARGET}; > export LIBDIR_lp64d=${LIBDIR_lp64d-lib64/lp64d}; > export CFLAGS_lp64=${CFLAGS_lp64--mabi=lp64 -march=rv64imac}; > export CHOST_lp64=${CTARGET}; > export CTARGET_lp64=${CTARGET}; > export LIBDIR_lp64=${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=${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=${LIBDIR_ilp32-lib32/ilp32} > ;; > riscv32*) > : "${MULTILIB_ABIS=ilp32d ilp32}"; > : "${DEFAULT_ABI=ilp32d}"; > local _libdir_riscvdefaultabi_variable="LIBDIR_${DEFAULT_ABI}"; > local _libdir_riscvdefaultabi=${!_libdir_riscvdefaultabi_variable}; > export ${_libdir_riscvdefaultabi_variable}=${_libdir_riscvdefaultabi:-lib}; > export CFLAGS_ilp32d=${CFLAGS_ilp32d--mabi=ilp32d -march=rv32imafdc}; > export CHOST_ilp32d=${CTARGET}; > export CTARGET_ilp32d=${CTARGET}; > export LIBDIR_ilp32d=${LIBDIR_ilp32d-lib32/ilp32d}; > export CFLAGS_ilp32=${CFLAGS_ilp32--mabi=ilp32 -march=rv32imac}; > export CHOST_ilp32=${CTARGET}; > export CTARGET_ilp32=${CTARGET}; > export LIBDIR_ilp32=${LIBDIR_ilp32-lib32/ilp32} > ;; > 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 OBJCOPY 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 OBJCOPY="$(tc-getOBJCOPY)"; > 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 >} >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 $# >} >pkg_nofetch () >{ > default >} >pkg_postinst () >{ > xdg_pkg_postinst; > readme.gentoo_print_elog; > if use tools; then > einfo "In order to prevent a file collision with games-fps/eduke32[tools],"; > einfo "the utility md2tool has been renamed to md2tool.doomsday."; > fi >} >pkg_postrm () >{ > xdg_pkg_postrm "$@" >} >pkg_preinst () >{ > xdg_pkg_preinst "$@" >} >pkg_setup () >{ > python-any-r1_pkg_setup "$@" >} >post_src_install () >{ > if [[ ${PORTAGE_USE_CLANG_HOOK} == 1 && -f "${EROOT}"/var/tmp/clang/${CATEGORY}/${PF}/clang16-broken ]]; then > if grep -q "error:.*C99" "${EROOT}"/var/tmp/clang/${CATEGORY}/${PF}/clang.diff; then > eqawarn "Clang 16 testing: Found possible issues in configure!"; > eqawarn "Clang 16 testing: Please check "${EROOT}"/var/tmp/clang/${CATEGORY}/${PF}/clang.diff"; > fi; > fi; > __tinderbox_meson >} >pre_src_compile () >{ > if [[ -f "${T}"/clang16-errors.log ]]; then > rm -rf "${EROOT}"/var/tmp/clang/${CATEGORY}/${PF}; > mkdir -p "${EROOT}"/var/tmp/clang/${CATEGORY}/${PF}; > cp -rv "${T}"/clang16-{errors,safe}.log "${EROOT}"/var/tmp/clang/${CATEGORY}/${PF}; > if diff -ruN "${T}"/clang16-{safe,errors}.log > "${EROOT}"/var/tmp/clang/${CATEGORY}/${PF}/clang.diff; then > rm "${EROOT}"/var/tmp/clang/${CATEGORY}/${PF}/clang.diff; > fi; > [[ -f "${T}"/clang16-broken ]] && touch "${EROOT}"/var/tmp/clang/${CATEGORY}/${PF}/clang16-broken; > fi; > export PORTAGE_CLANG_HOOK_USE_REAL_COMPILER=1 >} >pre_src_configure () >{ > if [[ ${PORTAGE_USE_CLANG_HOOK} == 1 ]]; then > if [[ -n ${CC} && ${CC} != *clang* && -z ${PORTAGE_USE_CLANG_HOOK_GCC} ]]; then > return; > fi; > if ! type -P ansifilter &> /dev/null; then > return; > fi; > ewarn "Modern C testing: this build is using a /etc/portage/bashrc hook ($hook_timestamp)!"; > ewarn "Modern C testing: see https://wiki.gentoo.org/wiki/Modern_C_porting for more info."; > export ac_cv_c_undeclared_builtin_options="none needed"; > export gl_cv_compiler_check_decl_option="-Werror=implicit-function-declaration"; > if [[ ${CHOST} == *musl* ]]; then > if has_version dev-libs/libbsd; then > export ac_cv_func___fpurge=yes; > export ac_cv_func_fpurge=yes; > export ac_cv_have_decl_fpurge=no; > export gl_cv_func_fpurge_works=no; > fi; > export ac_cv_header_sys_types_h_makedev=no; > export gl_cv_minmax_in_limits_h=no; > else > export ac_cv_have_decl_strerror_r="yes"; > fi; > has waf-utils ${INHERITED} && return; > has qmake-utils ${INHERITED} && return; > has qt5-build ${INHERITED} && return; > if grep -q "x11-misc/imake" <<< "${BDEPEND}"; then > return; > fi; > __PORTAGE_HOOK_CLANG=$(type -P "${__PORTAGE_HOOK_CLANG}"); > mkdir "${T}"/clang-wrappers; > cat <<-EOF > "${T}"/clang-wrappers/clang >#!/usr/bin/env bash >hook_clang=${__PORTAGE_HOOK_CLANG} >real_compiler=${__PORTAGE_HOOK_CLANG} > >if [[ -n \${PORTAGE_USE_CLANG_HOOK_GCC} ]] ; then >if [[ -n \${CC} && \${CC##*/} == *clang* ]] ; then >:; >else >real_compiler="${BROOT:-/}"/usr/bin/${CHOST}-gcc >fi >fi > >if [[ \$0 == *++ ]]; then >real_compiler=\${real_compiler/clang/clang++} >real_compiler=\${real_compiler/gcc/g++} >hook_clang=\${hook_clang/clang/clang++} >hook_clang=\${hook_clang/gcc/g++} >fi > >if [[ \${PORTAGE_CLANG_HOOK_USE_REAL_COMPILER} -gt 1 ]]; then ># clang's self recursing... try your best! >case "\${real_compiler}" in >*++*) real_compiler="/usr/bin/\${CHOST+\${CHOST}-}g++" ;; >*) real_compiler="/usr/bin/\${CHOST+\${CHOST}-}gcc" ;; >esac >real_compiler="\${real_compiler/clang/gcc}" >fi > ># Safety net against recursive calls >PORTAGE_orig_USE_REAL_COMP="\${PORTAGE_CLANG_HOOK_USE_REAL_COMPILER}" >export PORTAGE_CLANG_HOOK_USE_REAL_COMPILER=\$((PORTAGE_CLANG_HOOK_USE_REAL_COMPILER+1)) > >if [[ \${PORTAGE_orig_USE_REAL_COMP} ]]; then >exec \${real_compiler} "\$@" >fi > >export CFLAGS="${CFLAGS/-fdiagnostics-color=always}" >export CFLAGS="${CFLAGS/-fdiagnostics-urls=never}" > ># - Need > /dev/null for sys-libs/musl ># - No LTO because of the noise it generates in diffs (temps) >cl1() { >\${hook_clang} -fno-lto -Wno-unused-command-line-argument -Wno-error=implicit-function-declaration -Wno-error=implicit-int -Wno-error=int-conversion -Wno-error=incompatible-function-pointer-types -Wno-error=incompatible-pointer-types -Wno-error=return-type ${CFLAGS} \$@ 2>&1 -fdiagnostics-color=never | ansifilter | sed -e "s:14.0.6:14.ignoreme:g" -e "s:15.0.0:14.ignoreme:g" -e "s:clang-\(14\|15\|16\|17\):clang-ignoreme:g" -e 's:clang version \([0-9]\+\)\.[0-9]\.[0-9]:clang version ignoreme:' -e "s:/usr/lib/llvm/\(14\|15\|16\|17\)/:/usr/lib/llvm/ignoreme/:g" -e "s:conftest-.*\.o:conftest.o:g" -e "s_conftest\.c\:[0-9]\+\:[0-9]\+_ignoreme_g" -e "s:garbage2:ignoreme:" -e "s:garbage:ignoreme:" -e "/ac_nonexistent.h/d" -e '/clang-\(14\|15\|16\|17\|ignoreme\): error: no input files/d' -e '/clang-\(14\|15\|16\|17\|ignoreme\): error: unsupported option/d' -e '/clang-\(14\|15\|16\|17\|ignoreme\): error: unknown argument/d' -e '/clang-\(14\|15\|16\|17\|ignoreme\): error: no such file or directory/d' -e '/clang-\(14\|15\|16\|17\|ignoreme\): error: linker command failed/d' -e '/[0-9]\+ \(warning\|error\) generated/d' | tee -a "${T}"/clang16-safe.log > /dev/null > >if ! [[ \${PIPESTATUS[0]} -eq 0 ]] ; then >touch "${T}"/clang16-safe-failed >fi >} ># TODO: No -Werror=strict-prototypes here for now as AC_PROG_LEX, AC_CHECK_FUNCS rely on it ># also, I think Clang 15.0.1 (which reverts the other bits) keeps that in anyway. >cl2() { >\${hook_clang} -fno-lto -Wno-unused-command-line-argument -Werror=implicit-function-declaration -Werror=implicit-int -Werror=int-conversion -Werror=incompatible-function-pointer-types -Werror=incompatible-pointer-types -Werror=return-type ${CFLAGS} \$@ 2>&1 -fdiagnostics-color=never | ansifilter | sed -e "s:14.0.6:14.ignoreme:g" -e "s:15.0.0:14.ignoreme:g" -e "s:clang-\(14\|15\|16\|17\):clang-ignoreme:g" -e 's:clang version \([0-9]\+\)\.[0-9]\.[0-9]:clang version ignoreme:' -e "s:/usr/lib/llvm/\(14\|15\|16\|17\)/:/usr/lib/llvm/ignoreme/:g" -e "s:15:14:g" -e "s:conftest-.*\.o:conftest.o:g" -e "s_conftest\.c\:[0-9]\+\:[0-9]\+_ignoreme_g" -e "s:garbage2:ignoreme:" -e "s:garbage:ignoreme:" -e "/ac_nonexistent.h/d" -e '/clang-\(14\|15\|16\|17\|ignoreme\): error: no input files/d' -e '/clang-\(14\|15\|16\|17\|ignoreme\): error: unsupported option/d' -e '/clang-\(14\|15\|16\|17\|ignoreme\): error: unknown argument/d' -e '/clang-\(14\|15\|16\|17\|ignoreme\): error: no such file or directory/d' -e '/clang-\(14\|15\|16\|17\|ignoreme\): error: linker command failed/d' -e '/[0-9]\+ \(warning\|error\) generated/d' | tee -a "${T}"/clang16-errors.log > /dev/null > >if ! [[ \${PIPESTATUS[0]} -eq 0 ]] ; then >touch "${T}"/clang16-errors-failed >fi >} > ># Safety net against recursive calls >export PORTAGE_CLANG_HOOK_USE_REAL_COMPILER=1 ># Because clang can invoke GCC >export PORTAGE_USE_CLANG_HOOK_GCC=1 > ># - Just run it again as it's easier for anything which wants to parse stdout/stderr, ># and we're not concerned about performance for this experiment anyway. ># - We have to do the tee & pipe dance to not greedily consume stdin: bug 870985. ># - Timeout as a safety net because we don't ever want to make a build hang. Occurs ># with waf sometimes (being investigated), but we should keep the timeout after that anyway. >timeout --preserve-status -s PIPE 10 tee -p >(cl1 "\$@" -o "${T}"/garbage.\$\$) >(cl2 "\$@" -o "${T}"/garbage2.\$\$) | \${real_compiler} "\$@" >ret="\${PIPESTATUS[1]}" > ># If at least one of them succeeded, then complain if *only* one of them did. >if [[ -f "${T}"/clang16-safe-failed || -f "${T}"/clang16-errors-failed ]] ; then >if ! [[ -f "${T}"/clang16-safe-failed && -f "${T}"/clang16-errors-failed ]] ; then >touch "${T}"/clang16-broken >fi >fi > >rm -f "${T}"/clang16-safe-failed "${T}"/clang16-errors-failed >exit \${ret} >EOF > > chmod +x "${T}"/clang-wrappers/clang; > if in_iuse clang; then > :; > else > for alias in ${CHOST}-gcc gcc ${CHOST}-clang ${CHOST}-g++ g++ ${CHOST}-clang++; > do > ln -s "${T}"/clang-wrappers/clang "${T}"/clang-wrappers/${alias} || exit 1; > chmod +x "${T}"/clang-wrappers/${alias}; > done; > export CFLAGS="${CFLAGS} -Werror=implicit-function-declaration -Werror=implicit-int"; > export PATH="${T}/clang-wrappers:${PATH}"; > fi; > fi >} >pre_src_prepare () >{ > if [[ -n ${CC} && ${CC} != *clang* ]]; then > return; > fi; > case ${EAPI} in > [0123456]) > hv_args="--host-root" > ;; > *) > hv_args="-b" > ;; > esac; > local ver; > for ver in 15 16 17; > do > has_version ${hv_args} sys-devel/clang:${ver} && __PORTAGE_HOOK_CLANG=clang-${ver}; > done; > __PORTAGE_HOOK_CLANG=$(type -P "${__PORTAGE_HOOK_CLANG}"); > if ! type -P ansifilter &> /dev/null; then > return; > fi; > if [[ -z ${__PORTAGE_HOOK_CLANG} ]] || ! type -P ${__PORTAGE_HOOK_CLANG} &> /dev/null; then > export CC=gcc; > export CXX=g++; > return; > fi >} >python-any-r1_pkg_setup () >{ > debug-print-function ${FUNCNAME} "${@}"; > [[ ${MERGE_TYPE} != binary ]] && python_setup >} >python_doexe () >{ > debug-print-function ${FUNCNAME} "${@}"; > [[ ${EBUILD_PHASE} != install ]] && die "${FUNCNAME} can only be used in src_install"; > local f; > for f in "$@"; > do > python_newexe "${f}" "${f##*/}"; > done >} >python_doheader () >{ > debug-print-function ${FUNCNAME} "${@}"; > [[ ${EBUILD_PHASE} != install ]] && die "${FUNCNAME} can only be used in src_install"; > [[ -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; > if [[ ${EBUILD_PHASE} == install ]]; then > ( insopts -m 0644; > insinto "${d}"; > doins -r "${@}" || return ${?} ); > python_optimize "${ED%/}/${d}"; > else > if [[ -n ${BUILD_DIR} ]]; then > local dest=${BUILD_DIR}/install${EPREFIX}/${d}; > mkdir -p "${dest}" || die; > cp -pR "${@}" "${dest}/" || die; > ( cd "${dest}" && chmod -R a+rX "${@##*/}" ) || die; > else > die "${FUNCNAME} can only be used in src_install or with BUILD_DIR set"; > fi; > fi >} >python_doscript () >{ > debug-print-function ${FUNCNAME} "${@}"; > [[ ${EBUILD_PHASE} != install ]] && die "${FUNCNAME} can only be used in src_install"; > local _PYTHON_REWRITE_SHEBANG=1; > python_doexe "${@}" >} >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_fixed is_recursive; > [[ -d ${path} ]] && is_recursive=1; > while IFS= read -r -d '' f; do > local shebang i; > local error= match=; > IFS= read -r shebang < "${f}"; > if [[ ${shebang} == '#!'* ]]; then > local split_shebang=(); > read -r -a split_shebang <<< ${shebang#"#!"} || die; > local in_path=${split_shebang[0]}; > local from='^#! *[^ ]*'; > if [[ ${in_path} == */env ]]; then > in_path=${split_shebang[1]}; > from+=' *[^ ]*'; > fi; > case ${in_path##*/} in > "${EPYTHON}") > match=1 > ;; > python | python3) > match=1 > ;; > python2 | python[23].[0-9] | python3.[1-9][0-9] | pypy | pypy3 | jython[23].[0-9]) > match=1; > error=1 > ;; > esac; > fi; > [[ -n ${force} ]] && error=; > if [[ ! -n ${match} ]]; then > [[ -n ${is_recursive} ]] && continue; > error=1; > fi; > if [[ ! -n ${quiet} ]]; then > einfo "Fixing shebang in ${f#${D%/}}."; > fi; > if [[ ! -n ${error} ]]; then > debug-print "${FUNCNAME}: in file ${f#${D%/}}"; > debug-print "${FUNCNAME}: rewriting shebang: ${shebang}"; > sed -i -e "1s@${from}@#!${EPREFIX}/usr/bin/${EPYTHON}@" "${f}" || die; > 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 > eerror "QA error: ${FUNCNAME}, ${path#${D%/}} did not match any fixable files."; > eerror "There are no Python files in specified directory."; > die "${FUNCNAME} did not match any fixable files"; > fi; > done >} >python_gen_any_dep () >{ > debug-print-function ${FUNCNAME} "${@}"; > local depstr=${1}; > [[ -n ${depstr} ]] || die "No dependency string provided"; > local i PYTHON_PKG_DEP out=; > for i in "${_PYTHON_SUPPORTED_IMPLS[@]}"; > do > local PYTHON_USEDEP="python_targets_${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%:=} ${i_depstr} ) ${out}"; > done; > echo "|| ( ${out})" >} >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_includedir () >{ > debug-print-function ${FUNCNAME} "${@}"; > _python_export "${@}" PYTHON_INCLUDEDIR; > echo "${PYTHON_INCLUDEDIR}" >} >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_has_version () >{ > debug-print-function ${FUNCNAME} "${@}"; > local root_arg=(-b); > case ${1} in > -b | -d | -r) > root_arg=("${1}"); > shift > ;; > esac; > local pkg; > for pkg in "$@"; > do > ebegin " ${pkg}"; > has_version "${root_arg[@]}" "${pkg}"; > eend ${?} || return; > done; > return 0 >} >python_moduleinto () >{ > debug-print-function ${FUNCNAME} "${@}"; > _PYTHON_MODULEROOT=${1} >} >python_newexe () >{ > debug-print-function ${FUNCNAME} "${@}"; > [[ ${EBUILD_PHASE} != install ]] && die "${FUNCNAME} can only be used in src_install"; > [[ -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 ${?} ); > local dosym=dosym; > [[ ${EAPI} == 7 ]] && dosym=dosym8; > "${dosym}" -r /usr/lib/python-exec/python-exec2 "${wrapd}/${newfn}"; > if [[ -n ${_PYTHON_REWRITE_SHEBANG} ]]; then > python_fix_shebang -q "${ED%/}/${d}/${newfn}"; > fi >} >python_newscript () >{ > debug-print-function ${FUNCNAME} "${@}"; > [[ ${EBUILD_PHASE} != install ]] && die "${FUNCNAME} can only be used in src_install"; > local _PYTHON_REWRITE_SHEBANG=1; > python_newexe "${@}" >} >python_optimize () >{ > debug-print-function ${FUNCNAME} "${@}"; > [[ -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}" - <<-EOF || >import sys >print("".join(x + "\0" for x in sys.path)) >EOF > die); > debug-print "${FUNCNAME}: using sys.path: ${*/%/;}"; > fi; > local jobs=$(makeopts_jobs); > local d; > for d in "$@"; > do > local instpath=${d#${D%/}}; > instpath=/${instpath##/}; > einfo "Optimize Python modules for ${instpath}"; > case "${EPYTHON}" in > python3.8) > "${PYTHON}" -m compileall -j "${jobs}" -q -f -d "${instpath}" "${d}"; > "${PYTHON}" -O -m compileall -j "${jobs}" -q -f -d "${instpath}" "${d}"; > "${PYTHON}" -OO -m compileall -j "${jobs}" -q -f -d "${instpath}" "${d}" > ;; > python* | pypy3) > "${PYTHON}" -m compileall -j "${jobs}" -o 0 -o 1 -o 2 --hardlink-dupes -q -f -d "${instpath}" "${d}" > ;; > pypy | jython2.7) > "${PYTHON}" -m compileall -q -f -d "${instpath}" "${d}" > ;; > *) > die "${FUNCNAME}: unexpected EPYTHON=${EPYTHON}" > ;; > esac; > done >} >python_scriptinto () >{ > debug-print-function ${FUNCNAME} "${@}"; > _PYTHON_SCRIPTROOT=${1} >} >python_setup () >{ > debug-print-function ${FUNCNAME} "${@}"; > 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-any-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 EPYTHON/eselect-python will be ignored."; > _python_export "${impls[0]}" EPYTHON PYTHON; > _python_wrapper_setup; > einfo "Using ${EPYTHON} to build (via PYTHON_COMPAT_OVERRIDE)"; > return; > fi; > local epython_impl=${EPYTHON/./_}; > if [[ -n ${epython_impl} ]]; then > if ! has "${epython_impl}" "${_PYTHON_SUPPORTED_IMPLS[@]}"; then > if ! has "${epython_impl}" "${_PYTHON_ALL_IMPLS[@]}"; then > ewarn "Invalid EPYTHON: ${EPYTHON}"; > else > einfo "EPYTHON (${EPYTHON}) not supported by the package"; > fi; > else > if _python_run_check_deps "${epython_impl}"; then > _python_export EPYTHON PYTHON; > _python_wrapper_setup; > einfo "Using ${EPYTHON} to build (via EPYTHON)"; > return; > fi; > fi; > fi; > local i; > for ((i = ${#_PYTHON_SUPPORTED_IMPLS[@]} - 1; i >= 0; i-- )) > do > local impl=${_PYTHON_SUPPORTED_IMPLS[i]}; > [[ ${impl} == ${epython_impl} ]] && continue; > _python_export "${impl}" EPYTHON PYTHON; > if _python_run_check_deps "${impl}"; then > _python_wrapper_setup; > einfo "Using ${EPYTHON} to build (via PYTHON_COMPAT iteration)"; > return; > fi; > done; > eerror "No Python implementation found for the build. This is usually"; > eerror "a bug in the ebuild. Please report it to bugs.gentoo.org"; > eerror "along with the build log."; > echo; > die "No supported Python implementation installed." >} >qt5_get_bindir () >{ > echo ${EPREFIX}$(qt5_get_libdir)/qt5/bin >} >qt5_get_headerdir () >{ > echo /usr/include/qt5 >} >qt5_get_libdir () >{ > echo /usr/$(get_libdir) >} >qt5_get_mkspecsdir () >{ > echo $(qt5_get_libdir)/qt5/mkspecs >} >qt5_get_plugindir () >{ > echo $(qt5_get_libdir)/qt5/plugins >} >qt5_get_qmake_args () >{ > cat <<-EOF >QMAKE_AR="$(tc-getAR) cqs" >QMAKE_CC="$(tc-getCC)" >QMAKE_LINK_C="$(tc-getCC)" >QMAKE_LINK_C_SHLIB="$(tc-getCC)" >QMAKE_CXX="$(tc-getCXX)" >QMAKE_LINK="$(tc-getCXX)" >QMAKE_LINK_SHLIB="$(tc-getCXX)" >QMAKE_OBJCOPY="$(tc-getOBJCOPY)" >QMAKE_RANLIB= >QMAKE_STRIP= >QMAKE_CFLAGS="${CFLAGS}" >QMAKE_CFLAGS_RELEASE= >QMAKE_CFLAGS_DEBUG= >QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO= >QMAKE_CXXFLAGS="${CXXFLAGS}" >QMAKE_CXXFLAGS_RELEASE= >QMAKE_CXXFLAGS_DEBUG= >QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO= >QMAKE_LFLAGS="${LDFLAGS}" >QMAKE_LFLAGS_RELEASE= >QMAKE_LFLAGS_DEBUG= >QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO= >EOF > >} >qt6_get_bindir () >{ > echo ${EPREFIX}$(qt6_get_libdir)/qt6/bin >} >qt6_get_headerdir () >{ > echo /usr/include/qt6 >} >qt6_get_libdir () >{ > echo /usr/$(get_libdir) >} >qt6_get_mkspecsdir () >{ > echo $(qt6_get_libdir)/qt6/mkspecs >} >qt6_get_plugindir () >{ > echo $(qt6_get_libdir)/qt6/plugins >} >qt6_get_qmake_args () >{ > cat <<-EOF >QMAKE_AR="$(tc-getAR) cqs" >QMAKE_CC="$(tc-getCC)" >QMAKE_LINK_C="$(tc-getCC)" >QMAKE_LINK_C_SHLIB="$(tc-getCC)" >QMAKE_CXX="$(tc-getCXX)" >QMAKE_LINK="$(tc-getCXX)" >QMAKE_LINK_SHLIB="$(tc-getCXX)" >QMAKE_OBJCOPY="$(tc-getOBJCOPY)" >QMAKE_RANLIB= >QMAKE_STRIP= >QMAKE_CFLAGS="${CFLAGS}" >QMAKE_CFLAGS_RELEASE= >QMAKE_CFLAGS_DEBUG= >QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO= >QMAKE_CXXFLAGS="${CXXFLAGS}" >QMAKE_CXXFLAGS_RELEASE= >QMAKE_CXXFLAGS_DEBUG= >QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO= >QMAKE_LFLAGS="${LDFLAGS}" >QMAKE_LFLAGS_RELEASE= >QMAKE_LFLAGS_DEBUG= >QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO= >EOF > >} >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 "$@" >} >readme.gentoo_create_doc () >{ > debug-print-function ${FUNCNAME} "${@}"; > if [[ -n "${DOC_CONTENTS}" ]]; then > if [[ -n "${DISABLE_AUTOFORMATTING}" ]]; then > echo "${DOC_CONTENTS}" > "${T}"/README.gentoo || die; > else > local saved_flags=$-; > set -f; > echo -e ${DOC_CONTENTS} | fold -s -w 70 | sed 's/[[:space:]]*$//' > "${T}"/README.gentoo; > assert; > set +f -${saved_flags}; > fi; > else > if [[ -f "${FILESDIR}/README.gentoo-${SLOT%/*}" ]]; then > cp "${FILESDIR}/README.gentoo-${SLOT%/*}" "${T}"/README.gentoo || die; > else > if [[ -f "${FILESDIR}/README.gentoo${README_GENTOO_SUFFIX}" ]]; then > cp "${FILESDIR}/README.gentoo${README_GENTOO_SUFFIX}" "${T}"/README.gentoo || die; > else > die "You are not specifying README.gentoo contents!"; > fi; > fi; > fi; > ( docinto .; > dodoc "${T}"/README.gentoo ) || die; > README_GENTOO_DOC_VALUE=$(< "${T}/README.gentoo") >} >readme.gentoo_print_elog () >{ > debug-print-function ${FUNCNAME} "${@}"; > if [[ -z "${README_GENTOO_DOC_VALUE}" ]]; then > die "readme.gentoo_print_elog invoked without matching readme.gentoo_create_doc call!"; > else > if ! [[ -n "${REPLACING_VERSIONS}" ]] || [[ -n "${FORCE_PRINT_ELOG}" ]]; then > echo -e "${README_GENTOO_DOC_VALUE}" | while read -r ELINE; do > elog "${ELINE}"; > done; > elog ""; > elog "(Note: Above message is only printed the first time package is"; > elog "installed. Please look at ${EPREFIX}/usr/share/doc/${PF}/README.gentoo*"; > elog "for future reference)"; > fi; > fi >} >replace-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 >} >setup-allowed-flags () >{ > [[ ${EAPI} == [67] ]] || die "Internal function ${FUNCNAME} is not available in EAPI ${EAPI}."; > _setup-allowed-flags "$@" >} >source_profile () >{ > set +u; > source /etc/profile; > set -u >} >declare -fx source_profile >src_compile () >{ > cmake_src_compile "$@" >} >src_configure () >{ > local mycmakeargs=(-DDENG_ASSIMP_EMBEDDED=OFF -DDENG_ENABLE_DISPLAYMODE=$(usex display-mode) -DDENG_ENABLE_TOOLS=$(usex tools) -DPYTHON_EXECUTABLE="${PYTHON}" -DQMAKE=$(qt5_get_bindir)/qmake); > cmake_src_configure >} >src_install () >{ > cmake_src_install; > if use tools; then > mv -v "${ED}"/usr/bin/md2tool{,.${PN}} || die; > fi; > readme.gentoo_create_doc >} >src_prepare () >{ > cmake_src_prepare; > sed -e "10s:/texc:/${PF}:" -i tools/texc/CMakeLists.txt || die >} >src_test () >{ > cmake_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 > for y in "${ALLOWED_FLAGS[@]}"; > do > if [[ ${x} == ${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-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}) >} >syncRepo () >{ > cd /var/db/repos/gentoo; > local synclog=/var/tmp/tb/sync.log; > local curr_time=$EPOCHSECONDS; > if ! emaint sync --auto &> $synclog; then > if grep -q -e 'git fetch error' -e ': Failed to connect to ' -e ': SSL connection timeout' -e ': Connection timed out' -e 'The requested URL returned error:' $synclog; then > return 0; > else > if ! emaint merges --fix &>> $synclog; then > ReachedEOL "broken repo, cannot be fixed" $synclog; > else > if ! emaint sync --auto &>> $synclog; then > ReachedEOL "broken sync of repo" $synclog; > fi; > fi; > fi; > fi; > if grep -q -F '* An update to portage is available.' $synclog; then > add2backlog "sys-apps/portage"; > fi; > if ! grep -B 1 '=== Sync completed for gentoo' $synclog | grep -q 'Already up to date.'; then > git diff --diff-filter="ACM" --name-only "@{ $((EPOCHSECONDS - last_sync + 2 * 3600)) second ago }..@{ 2 hour ago }" 2> /dev/null | grep -F -e '/files/' -e '.ebuild' -e 'Manifest' | cut -f 1-2 -d '/' -s | grep -v -f /mnt/tb/data/IGNORE_PACKAGES | sort -u > /tmp/syncRepo.upd; > if [[ -s /tmp/syncRepo.upd ]]; then > sort -u /tmp/syncRepo.upd /var/tmp/tb/backlog.upd | shuf > /tmp/backlog.upd; > cp /tmp/backlog.upd /var/tmp/tb/backlog.upd; > fi; > fi; > last_sync=$curr_time; > cd - > /dev/null >} >declare -fx syncRepo >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-cxx-assertions () >{ > tc-cpp-is-true "defined(_GLIBCXX_ASSERTIONS) || defined(_LIBCPP_ENABLE_ASSERTIONS) || defined(_LIBCPP_ENABLE_HARDENED_MODE)" ${CPPFLAGS} ${CXXFLAGS} >} >tc-enables-fortify-source () >{ > tc-cpp-is-true "defined(_FORTIFY_SOURCE)" ${CPPFLAGS} ${CFLAGS} ${CXXFLAGS} >} >tc-enables-pie () >{ > tc-cpp-is-true "defined(__PIE__)" ${CPPFLAGS} ${CFLAGS} ${CXXFLAGS} >} >tc-enables-ssp () >{ > tc-cpp-is-true "defined(__SSP__) || defined(__SSP_STRONG__) || defined(__SSP_ALL__)" ${CPPFLAGS} ${CFLAGS} ${CXXFLAGS} >} >tc-enables-ssp-all () >{ > tc-cpp-is-true "defined(__SSP_ALL__)" ${CPPFLAGS} ${CFLAGS} ${CXXFLAGS} >} >tc-enables-ssp-strong () >{ > tc-cpp-is-true "defined(__SSP_STRONG__) || defined(__SSP_ALL__)" ${CPPFLAGS} ${CFLAGS} ${CXXFLAGS} >} >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 > ;; > arc*b*) > echo big > ;; > arc*) > echo little > ;; > arm*b*) > echo big > ;; > arm*) > echo little > ;; > cris*) > echo little > ;; > hppa*) > echo big > ;; > i?86*) > echo little > ;; > ia64*) > echo little > ;; > loongarch*) > 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-build-ptr-size () >{ > $(tc-getBUILD_CPP) -P - <<< __SIZEOF_POINTER__ || die "Could not determine CBUILD pointer size" >} >tc-get-c-rtlib () >{ > local res=$($(tc-getCC) ${CPPFLAGS} ${CFLAGS} ${LDFLAGS} -print-libgcc-file-name 2> /dev/null); > case ${res} in > *libclang_rt*) > echo compiler-rt > ;; > *libgcc*) > echo libgcc > ;; > *) > return 1 > ;; > esac; > return 0 >} >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-get-cxx-stdlib () >{ > local code='#include <ciso646> > >#if defined(_LIBCPP_VERSION) > HAVE_LIBCXX >#elif defined(__GLIBCXX__) > HAVE_LIBSTDCPP >#endif >'; > local res=$($(tc-getCXX) ${CPPFLAGS} ${CXXFLAGS} -x c++ -E -P - <<< "${code}" 2> /dev/null); > case ${res} in > *HAVE_LIBCXX*) > echo libc++ > ;; > *HAVE_LIBSTDCPP*) > echo libstdc++ > ;; > *) > return 1 > ;; > esac; > return 0 >} >tc-get-ptr-size () >{ > $(tc-getCPP) -P - <<< __SIZEOF_POINTER__ || die "Could not determine CHOST pointer size" >} >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-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-lto () >{ > local f="${T}/test-lto.o"; > case $(tc-get-compiler-type) in > clang) > $(tc-getCC) ${CFLAGS} -c -o "${f}" -x c - <<< "" || die; > llvm-bcanalyzer "${f}" &> /dev/null && return 0 > ;; > gcc) > $(tc-getCC) ${CFLAGS} -c -o "${f}" -x c - <<< "" || die; > [[ $($(tc-getREADELF) -S "${f}") == *.gnu.lto* ]] && return 0 > ;; > esac; > return 1 >} >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=$(unset LD; tc-getLD "$@"); > local bfd_ld="${ld}.bfd"; > local path_ld=$(type -P "${bfd_ld}" 2> /dev/null); > [[ -e ${path_ld} ]] && export LD=${bfd_ld}; > if tc-is-gcc || tc-is-clang; then > export LDFLAGS="${LDFLAGS} -fuse-ld=bfd"; > fi >} >tc-ld-is-gold () >{ > local out; > local -x LC_ALL=C; > 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(void) { 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; > local -x LC_ALL=C; > 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(void) { 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 _tc_echo_kernel_alias () > { > [[ ${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 > ;; > arc*) > echo arc > ;; > arm*) > echo arm > ;; > avr*) > _tc_echo_kernel_alias avr32 avr > ;; > bfin*) > _tc_echo_kernel_alias blackfin bfin > ;; > c6x*) > echo c6x > ;; > cris*) > echo cris > ;; > frv*) > echo frv > ;; > hexagon*) > echo hexagon > ;; > hppa*) > _tc_echo_kernel_alias parisc hppa > ;; > i?86*) > echo x86 > ;; > ia64*) > echo ia64 > ;; > loongarch*) > _tc_echo_kernel_alias loongarch loong > ;; > 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*) > _tc_echo_kernel_alias sh64 sh > ;; > sh*) > echo sh > ;; > sparc64*) > _tc_echo_kernel_alias sparc64 sparc > ;; > sparc*) > [[ ${PROFILE_ARCH} == "sparc64" ]] && _tc_echo_kernel_alias sparc64 sparc || echo sparc > ;; > tile*) > echo tile > ;; > vax*) > echo vax > ;; > 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-compile () >{ > local lang=$1; > local code=$2; > shift 2; > [[ -z "${lang}" ]] && return 1; > [[ -z "${code}" ]] && return 1; > local compiler filename_in filename_out args=() libs=(); > case "${lang}" in > c) > compiler="$(tc-getCC)"; > filename_in="${T}/test.c"; > filename_out="${T}/test.o"; > args+=(${CFLAGS[@]} -xc -c) > ;; > c++) > compiler="$(tc-getCXX)"; > filename_in="${T}/test.cc"; > filename_out="${T}/test.o"; > args+=(${CXXFLAGS[@]} -xc++ -c) > ;; > f77) > compiler="$(tc-getF77)"; > filename_in="${T}/test.f"; > filename_out="${T}/test.o"; > args+=(${FFFLAGS[@]} -xf77 -c) > ;; > f95) > compiler="$(tc-getFC)"; > filename_in="${T}/test.f90"; > filename_out="${T}/test.o"; > args+=(${FCFLAGS[@]} -xf95 -c) > ;; > c+ld) > compiler="$(tc-getCC)"; > filename_in="${T}/test.c"; > filename_out="${T}/test.exe"; > args+=(${CFLAGS[@]} ${LDFLAGS[@]} -xc); > libs+=(${LIBS[@]}) > ;; > c+++ld) > compiler="$(tc-getCXX)"; > filename_in="${T}/test.cc"; > filename_out="${T}/test.exe"; > args+=(${CXXFLAGS[@]} ${LDFLAGS[@]} -xc++); > libs+=(${LIBS[@]}) > ;; > f77+ld) > compiler="$(tc-getF77)"; > filename_in="${T}/test.f"; > filename_out="${T}/test.exe"; > args+=(${FFLAGS[@]} ${LDFLAGS[@]} -xf77); > libs+=(${LIBS[@]}) > ;; > f95+ld) > compiler="$(tc-getFC)"; > filename_in="${T}/test.f90"; > filename_out="${T}/test.exe"; > args+=(${FCFLAGS[@]} ${LDFLAGS[@]} -xf95); > libs+=(${LIBS[@]}) > ;; > *) > die "Unknown compiled language ${lang}" > ;; > esac; > printf "%s\n" "${code}" > "${filename_in}" || die "Failed to create '${test_in}'"; > "${compiler}" ${args[@]} "${filename_in}" -o "${filename_out}" ${libs[@]} &> /dev/null >} >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 () >{ > [[ ${EAPI} == [67] ]] || die "Internal function ${FUNCNAME} is not available in EAPI ${EAPI}."; > _test-flag-PROG "$@" >} >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 () >{ > [[ ${EAPI} == [67] ]] || die "Internal function ${FUNCNAME} is not available in EAPI ${EAPI}."; > _test-flags-PROG "$@" >} >test_version_info () >{ > if [[ $($(tc-getCC) --version 2>&1) == *$1* ]]; then > return 0; > else > return 1; > fi >} >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 >} >xdg_desktop_database_update () >{ > if [[ ${EBUILD_PHASE} != post* ]]; then > die "xdg_desktop_database_update must be used in pkg_post* phases."; > fi; > if ! type update-desktop-database &> /dev/null; then > debug-print "update-desktop-database is not found"; > return; > fi; > ebegin "Updating .desktop files database"; > update-desktop-database -q "${EROOT%/}${DESKTOP_DATABASE_DIR}"; > eend $? >} >xdg_environment_reset () >{ > export XDG_DATA_HOME="${HOME}/.local/share"; > export XDG_CONFIG_HOME="${HOME}/.config"; > export XDG_CACHE_HOME="${HOME}/.cache"; > export XDG_STATE_HOME="${HOME}/.local/state"; > export XDG_RUNTIME_DIR="${T}/run"; > mkdir -p "${XDG_DATA_HOME}" "${XDG_CONFIG_HOME}" "${XDG_CACHE_HOME}" "${XDG_STATE_HOME}" "${XDG_RUNTIME_DIR}" || die; > chmod 0700 "${XDG_RUNTIME_DIR}" || die; > unset DBUS_SESSION_BUS_ADDRESS >} >xdg_icon_cache_update () >{ > if [[ ${EBUILD_PHASE} != post* ]]; then > die "xdg_icon_cache_update must be used in pkg_post* phases."; > fi; > if ! type gtk-update-icon-cache &> /dev/null; then > debug-print "gtk-update-icon-cache is not found"; > return; > fi; > ebegin "Updating icons cache"; > local dir retval=0; > local fails=(); > for dir in "${EROOT%/}"/usr/share/icons/*; > do > if [[ -f ${dir}/index.theme ]]; then > if ! gtk-update-icon-cache -qf "${dir}"; then > debug-print "Updating cache failed on ${dir}"; > fails+=("${dir}"); > retval=2; > fi; > else > if [[ $(ls "${dir}") = icon-theme.cache ]]; then > rm "${dir}/icon-theme.cache"; > fi; > fi; > if [[ -z $(ls "${dir}") ]]; then > rmdir "${dir}"; > fi; > done; > eend ${retval}; > for dir in "${fails[@]}"; > do > eerror "Failed to update cache with icon ${dir}"; > done >} >xdg_mimeinfo_database_update () >{ > if [[ ${EBUILD_PHASE} != post* ]]; then > die "xdg_mimeinfo_database_update must be used in pkg_post* phases."; > fi; > if ! type update-mime-database &> /dev/null; then > debug-print "update-mime-database is not found"; > return; > fi; > local -x PKGSYSTEM_ENABLE_FSYNC=0; > ebegin "Updating shared mime info database"; > update-mime-database "${EROOT%/}${MIMEINFO_DATABASE_DIR}"; > eend $? >} >xdg_pkg_postinst () >{ > if [[ ${#XDG_ECLASS_DESKTOPFILES[@]} -gt 0 ]]; then > xdg_desktop_database_update; > else > debug-print "No .desktop files to add to database"; > fi; > if [[ ${#XDG_ECLASS_ICONFILES[@]} -gt 0 ]]; then > xdg_icon_cache_update; > else > debug-print "No icon files to add to cache"; > fi; > if [[ ${#XDG_ECLASS_MIMEINFOFILES[@]} -gt 0 ]]; then > xdg_mimeinfo_database_update; > else > debug-print "No mime info files to add to database"; > fi >} >xdg_pkg_postrm () >{ > if [[ ${#XDG_ECLASS_DESKTOPFILES[@]} -gt 0 ]]; then > xdg_desktop_database_update; > else > debug-print "No .desktop files to add to database"; > fi; > if [[ ${#XDG_ECLASS_ICONFILES[@]} -gt 0 ]]; then > xdg_icon_cache_update; > else > debug-print "No icon files to add to cache"; > fi; > if [[ ${#XDG_ECLASS_MIMEINFOFILES[@]} -gt 0 ]]; then > xdg_mimeinfo_database_update; > else > debug-print "No mime info files to add to database"; > fi >} >xdg_pkg_preinst () >{ > local f; > XDG_ECLASS_DESKTOPFILES=(); > while IFS= read -r -d '' f; do > XDG_ECLASS_DESKTOPFILES+=(${f}); > done < <(cd "${ED}" && find 'usr/share/applications' -type f -print0 2> /dev/null); > XDG_ECLASS_ICONFILES=(); > while IFS= read -r -d '' f; do > XDG_ECLASS_ICONFILES+=(${f}); > done < <(cd "${ED}" && find 'usr/share/icons' -type f -print0 2> /dev/null); > XDG_ECLASS_MIMEINFOFILES=(); > while IFS= read -r -d '' f; do > XDG_ECLASS_MIMEINFOFILES+=(${f}); > done < <(cd "${ED}" && find 'usr/share/mime' -type f -print0 2> /dev/null) >} >xdg_src_prepare () >{ > die "Called xdg_src_prepare in EAPI >= 8" >}
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 921488
:
881537
|
881538
| 881539 |
881540
|
881541
|
881542
|
881543