Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 889541 Details for
Bug 928654
app-emulation/qemu-8.2.2 - ../.../syscall.c: error: F_GETLK64 undeclared (first use in this function)
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
environment
environment (text/plain), 177.04 KB, created by
Toralf Förster
on 2024-04-05 18:49:27 UTC
(
hide
)
Description:
environment
Filename:
MIME Type:
Creator:
Toralf Förster
Created:
2024-04-05 18:49:27 UTC
Size:
177.04 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 -- ALL_DEPEND=$'\n\tdev-libs/glib:2[static-libs(+)]\n\tsys-libs/zlib[static-libs(+)]\n\tpython? ( python_targets_python3_10? ( dev-lang/python:3.10[ncurses,readline] ) python_targets_python3_11? ( dev-lang/python:3.11[ncurses,readline] ) python_targets_python3_12? ( dev-lang/python:3.12[ncurses,readline] ) )\n\tsystemtap? ( dev-debug/systemtap )\n\txattr? ( sys-apps/attr[static-libs(+)] )\n' >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 AR="x86_64-pc-linux-musl-ar" >declare -x ARCH="amd64" >declare -x AS="x86_64-pc-linux-musl-as" >declare -x AUTOJUMP_ERROR_PATH="/root/.local/share/autojump/errors.log" >declare -x AUTOJUMP_SOURCED="1" >declare BDEPEND=$'\n\tpython_targets_python3_10? ( dev-lang/python:3.10 ) python_targets_python3_11? ( dev-lang/python:3.11 ) python_targets_python3_12? ( dev-lang/python:3.12 )\n\tdev-lang/perl\n\t>=dev-build/meson-0.63.0\n\tapp-alternatives/ninja\n\tdev-python/pip[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?]\n\tvirtual/pkgconfig\n\tdoc? (\n\t\t>=dev-python/sphinx-1.6.0[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?]\n\t\tdev-python/sphinx-rtd-theme[python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?]\n\t)\n\tgtk? ( nls? ( sys-devel/gettext ) )\n\ttest? (\n\t\tdev-libs/glib[utils]\n\t\tapp-alternatives/bc\n\t)\n virtual/pkgconfig' >declare -x BINPKG_FORMAT="gpkg" >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 zstd cet -berkdb -gdbm" >declare -x CALLIGRA_FEATURES="" >declare -x CAMERAS="" >declare -x CARGO_TARGET_X86_64_UNKNOWN_LINUX_MUSL_RUSTFLAGS="-C target-feature=-crt-static" >declare -x CARGO_TERM_COLOR="never" >declare -x CBUILD="x86_64-pc-linux-musl" >declare -- CDEPEND=$'\n\t\n\tdev-libs/glib:2\n\tsys-libs/zlib\n\tpython? ( python_targets_python3_10? ( dev-lang/python:3.10[ncurses,readline] ) python_targets_python3_11? ( dev-lang/python:3.11[ncurses,readline] ) python_targets_python3_12? ( dev-lang/python:3.12[ncurses,readline] ) )\n\tsystemtap? ( dev-debug/systemtap )\n\txattr? ( sys-apps/attr )\n\n\t\n\t>=x11-libs/pixman-0.28.0\n\taccessibility? (\n\t\tapp-accessibility/brltty[api]\n\t\tapp-accessibility/brltty\n\t)\n\taio? ( dev-libs/libaio )\n\talsa? ( >=media-libs/alsa-lib-1.0.13 )\n\tbpf? ( dev-libs/libbpf:= )\n\tbzip2? ( app-arch/bzip2 )\n\tcapstone? ( dev-libs/capstone:= )\n\tcurl? ( >=net-misc/curl-7.15.4 )\n\tfdt? ( >=sys-apps/dtc-1.5.1 )\n\tfuse? ( >=sys-fs/fuse-3.1:3 )\n\tglusterfs? ( >=sys-cluster/glusterfs-3.4.0 )\n\tgnutls? (\n\t\t>=net-libs/gnutls-3.0:=\n\t\tdev-libs/nettle:=\n\t)\n\tgtk? (\n\t\tx11-libs/gtk+:3\n\t\tvte? ( x11-libs/vte:2.91 )\n\t)\n\tinfiniband? ( sys-cluster/rdma-core )\n\tiscsi? ( net-libs/libiscsi )\n\tio-uring? ( sys-libs/liburing:= )\n\tjack? ( virtual/jack )\n\tjemalloc? ( dev-libs/jemalloc )\n\tjpeg? ( media-libs/libjpeg-turbo:= )\n\tkernel_linux? ( sys-libs/libcap-ng )\n\tkeyutils? ( sys-apps/keyutils )\n\tlzo? ( dev-libs/lzo:2 )\n\tmultipath? ( sys-fs/multipath-tools )\n\tncurses? (\n\t\tsys-libs/ncurses:=[unicode(+)]\n\t\tsys-libs/ncurses:=\n\t)\n\tnfs? ( >=net-fs/libnfs-1.9.3:= )\n\tnuma? ( sys-process/numactl )\n\topengl? (\n\t\tvirtual/opengl\n\t\tmedia-libs/libepoxy\n\t\tmedia-libs/mesa\n\t\tmedia-libs/mesa[egl(+),gbm(+)]\n\t)\n\tpam? ( sys-libs/pam )\n\tpipewire? ( >=media-video/pipewire-0.3.60 )\n\tpng? ( >=media-libs/libpng-1.6.34:= )\n\tpulseaudio? ( media-libs/libpulse )\n\trbd? ( sys-cluster/ceph )\n\tsasl? ( dev-libs/cyrus-sasl )\n\tsdl? (\n\t\tmedia-libs/libsdl2[video]\n\t\tmedia-libs/libsdl2\n\t)\n\tsdl-image? ( media-libs/sdl2-image )\n\tseccomp? ( >=sys-libs/libseccomp-2.1.0 )\n\tslirp? ( net-libs/libslirp )\n\tsmartcard? ( >=app-emulation/libcacard-2.5.0 )\n\tsnappy? ( app-arch/snappy:= )\n\tspice? (\n\t\t>=app-emulation/spice-protocol-0.14.0\n\t\t>=app-emulation/spice-0.14.0\n\t)\n\tssh? ( >=net-libs/libssh-0.8.6 )\n\tudev? ( virtual/libudev:= )\n\tusb? ( >=virtual/libusb-1-r2:1 )\n\tusbredir? ( >=sys-apps/usbredir-0.6 )\n\tvde? ( net-misc/vde )\n\tvirgl? ( media-libs/virglrenderer )\n\tvirtfs? ( sys-libs/libcap )\n\txen? ( app-emulation/xen-tools:= )\n\tzstd? ( >=app-arch/zstd-1.4.0 )\n\n\tqemu_softmmu_targets_i386? ( \n\tpin-upstream-blobs? (\n\t\t~sys-firmware/edk2-ovmf-bin-202202\n\t\t~sys-firmware/ipxe-1.21.1[binary,qemu]\n\t\t~sys-firmware/seabios-bin-1.16.0\n\t\t~sys-firmware/sgabios-0.1_pre10[binary]\n\t)\n\t!pin-upstream-blobs? (\n\t\t|| (\n\t\t\t>=sys-firmware/edk2-ovmf-202202\n\t\t\t>=sys-firmware/edk2-ovmf-bin-202202\n\t\t)\n\t\tsys-firmware/ipxe[qemu]\n\t\t|| (\n\t\t\t>=sys-firmware/seabios-1.16.0[seavgabios]\n\t\t\t>=sys-firmware/seabios-bin-1.16.0\n\t\t)\n\t\tsys-firmware/sgabios\n\t)\n )\n\tqemu_softmmu_targets_x86_64? ( \n\tpin-upstream-blobs? (\n\t\t~sys-firmware/edk2-ovmf-bin-202202\n\t\t~sys-firmware/ipxe-1.21.1[binary,qemu]\n\t\t~sys-firmware/seabios-bin-1.16.0\n\t\t~sys-firmware/sgabios-0.1_pre10[binary]\n\t)\n\t!pin-upstream-blobs? (\n\t\t|| (\n\t\t\t>=sys-firmware/edk2-ovmf-202202\n\t\t\t>=sys-firmware/edk2-ovmf-bin-202202\n\t\t)\n\t\tsys-firmware/ipxe[qemu]\n\t\t|| (\n\t\t\t>=sys-firmware/seabios-1.16.0[seavgabios]\n\t\t\t>=sys-firmware/seabios-bin-1.16.0\n\t\t)\n\t\tsys-firmware/sgabios\n\t)\n )\n\tqemu_softmmu_targets_ppc? ( \n\tpin-upstream-blobs? (\n\t\t~sys-firmware/seabios-bin-1.16.0\n\t)\n\t!pin-upstream-blobs? (\n\t\t|| (\n\t\t\t>=sys-firmware/seabios-1.16.0[seavgabios]\n\t\t\t>=sys-firmware/seabios-bin-1.16.0\n\t\t)\n\t)\n )\n\tqemu_softmmu_targets_ppc64? ( \n\tpin-upstream-blobs? (\n\t\t~sys-firmware/seabios-bin-1.16.0\n\t)\n\t!pin-upstream-blobs? (\n\t\t|| (\n\t\t\t>=sys-firmware/seabios-1.16.0[seavgabios]\n\t\t\t>=sys-firmware/seabios-bin-1.16.0\n\t\t)\n\t)\n )\n' >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 -- CHECKCONFIG_DONOTHING="" >declare -x CHOST="x86_64-pc-linux-musl" >declare -x CHOST_amd64="x86_64-pc-linux-musl" >declare -x CHOST_default="x86_64-pc-linux-musl" >declare -x CHOST_x32="x86_64-pc-linux-gnux32" >declare -x CHOST_x86="i686-pc-linux-gnu" >declare -x CMAKE_COLOR_DIAGNOSTICS="OFF" >declare -x CMAKE_COLOR_MAKEFILE="OFF" >declare -x COLLECTD_PLUGINS="" >declare -- COMMON_TARGETS=$'\n\taarch64\n\talpha\n\tarm\n\tcris\n\thppa\n\ti386\n\tloongarch64\n\tm68k\n\tmicroblaze\n\tmicroblazeel\n\tmips\n\tmips64\n\tmips64el\n\tmipsel\n\tnios2\n\tor1k\n\tppc\n\tppc64\n\triscv32\n\triscv64\n\ts390x\n\tsh4\n\tsh4eb\n\tsparc\n\tsparc64\n\tx86_64\n\txtensa\n\txtensaeb\n' >declare -x CPU_FLAGS_ARM="" >declare -x CPU_FLAGS_PPC="" >declare -x CPU_FLAGS_X86="" >declare -x CTARGET_default="x86_64-pc-linux-musl" >declare -x CURL_SSL="" >declare -x CXXFLAGS="-O2 -pipe -march=native -fno-diagnostics-color" >declare -x DEFAULT_ABI="amd64" >declare -x DEFINED_PHASES=" compile configure info install postinst postrm prepare pretend setup test unpack" >declare DEPEND=$'\n\t\n\t\n\tdev-libs/glib:2\n\tsys-libs/zlib\n\tpython? ( python_targets_python3_10? ( dev-lang/python:3.10[ncurses,readline] ) python_targets_python3_11? ( dev-lang/python:3.11[ncurses,readline] ) python_targets_python3_12? ( dev-lang/python:3.12[ncurses,readline] ) )\n\tsystemtap? ( dev-debug/systemtap )\n\txattr? ( sys-apps/attr )\n\n\t\n\t>=x11-libs/pixman-0.28.0\n\taccessibility? (\n\t\tapp-accessibility/brltty[api]\n\t\tapp-accessibility/brltty\n\t)\n\taio? ( dev-libs/libaio )\n\talsa? ( >=media-libs/alsa-lib-1.0.13 )\n\tbpf? ( dev-libs/libbpf:= )\n\tbzip2? ( app-arch/bzip2 )\n\tcapstone? ( dev-libs/capstone:= )\n\tcurl? ( >=net-misc/curl-7.15.4 )\n\tfdt? ( >=sys-apps/dtc-1.5.1 )\n\tfuse? ( >=sys-fs/fuse-3.1:3 )\n\tglusterfs? ( >=sys-cluster/glusterfs-3.4.0 )\n\tgnutls? (\n\t\t>=net-libs/gnutls-3.0:=\n\t\tdev-libs/nettle:=\n\t)\n\tgtk? (\n\t\tx11-libs/gtk+:3\n\t\tvte? ( x11-libs/vte:2.91 )\n\t)\n\tinfiniband? ( sys-cluster/rdma-core )\n\tiscsi? ( net-libs/libiscsi )\n\tio-uring? ( sys-libs/liburing:= )\n\tjack? ( virtual/jack )\n\tjemalloc? ( dev-libs/jemalloc )\n\tjpeg? ( media-libs/libjpeg-turbo:= )\n\tkernel_linux? ( sys-libs/libcap-ng )\n\tkeyutils? ( sys-apps/keyutils )\n\tlzo? ( dev-libs/lzo:2 )\n\tmultipath? ( sys-fs/multipath-tools )\n\tncurses? (\n\t\tsys-libs/ncurses:=[unicode(+)]\n\t\tsys-libs/ncurses:=\n\t)\n\tnfs? ( >=net-fs/libnfs-1.9.3:= )\n\tnuma? ( sys-process/numactl )\n\topengl? (\n\t\tvirtual/opengl\n\t\tmedia-libs/libepoxy\n\t\tmedia-libs/mesa\n\t\tmedia-libs/mesa[egl(+),gbm(+)]\n\t)\n\tpam? ( sys-libs/pam )\n\tpipewire? ( >=media-video/pipewire-0.3.60 )\n\tpng? ( >=media-libs/libpng-1.6.34:= )\n\tpulseaudio? ( media-libs/libpulse )\n\trbd? ( sys-cluster/ceph )\n\tsasl? ( dev-libs/cyrus-sasl )\n\tsdl? (\n\t\tmedia-libs/libsdl2[video]\n\t\tmedia-libs/libsdl2\n\t)\n\tsdl-image? ( media-libs/sdl2-image )\n\tseccomp? ( >=sys-libs/libseccomp-2.1.0 )\n\tslirp? ( net-libs/libslirp )\n\tsmartcard? ( >=app-emulation/libcacard-2.5.0 )\n\tsnappy? ( app-arch/snappy:= )\n\tspice? (\n\t\t>=app-emulation/spice-protocol-0.14.0\n\t\t>=app-emulation/spice-0.14.0\n\t)\n\tssh? ( >=net-libs/libssh-0.8.6 )\n\tudev? ( virtual/libudev:= )\n\tusb? ( >=virtual/libusb-1-r2:1 )\n\tusbredir? ( >=sys-apps/usbredir-0.6 )\n\tvde? ( net-misc/vde )\n\tvirgl? ( media-libs/virglrenderer )\n\tvirtfs? ( sys-libs/libcap )\n\txen? ( app-emulation/xen-tools:= )\n\tzstd? ( >=app-arch/zstd-1.4.0 )\n\n\tqemu_softmmu_targets_i386? ( \n\tpin-upstream-blobs? (\n\t\t~sys-firmware/edk2-ovmf-bin-202202\n\t\t~sys-firmware/ipxe-1.21.1[binary,qemu]\n\t\t~sys-firmware/seabios-bin-1.16.0\n\t\t~sys-firmware/sgabios-0.1_pre10[binary]\n\t)\n\t!pin-upstream-blobs? (\n\t\t|| (\n\t\t\t>=sys-firmware/edk2-ovmf-202202\n\t\t\t>=sys-firmware/edk2-ovmf-bin-202202\n\t\t)\n\t\tsys-firmware/ipxe[qemu]\n\t\t|| (\n\t\t\t>=sys-firmware/seabios-1.16.0[seavgabios]\n\t\t\t>=sys-firmware/seabios-bin-1.16.0\n\t\t)\n\t\tsys-firmware/sgabios\n\t)\n )\n\tqemu_softmmu_targets_x86_64? ( \n\tpin-upstream-blobs? (\n\t\t~sys-firmware/edk2-ovmf-bin-202202\n\t\t~sys-firmware/ipxe-1.21.1[binary,qemu]\n\t\t~sys-firmware/seabios-bin-1.16.0\n\t\t~sys-firmware/sgabios-0.1_pre10[binary]\n\t)\n\t!pin-upstream-blobs? (\n\t\t|| (\n\t\t\t>=sys-firmware/edk2-ovmf-202202\n\t\t\t>=sys-firmware/edk2-ovmf-bin-202202\n\t\t)\n\t\tsys-firmware/ipxe[qemu]\n\t\t|| (\n\t\t\t>=sys-firmware/seabios-1.16.0[seavgabios]\n\t\t\t>=sys-firmware/seabios-bin-1.16.0\n\t\t)\n\t\tsys-firmware/sgabios\n\t)\n )\n\tqemu_softmmu_targets_ppc? ( \n\tpin-upstream-blobs? (\n\t\t~sys-firmware/seabios-bin-1.16.0\n\t)\n\t!pin-upstream-blobs? (\n\t\t|| (\n\t\t\t>=sys-firmware/seabios-1.16.0[seavgabios]\n\t\t\t>=sys-firmware/seabios-bin-1.16.0\n\t\t)\n\t)\n )\n\tqemu_softmmu_targets_ppc64? ( \n\tpin-upstream-blobs? (\n\t\t~sys-firmware/seabios-bin-1.16.0\n\t)\n\t!pin-upstream-blobs? (\n\t\t|| (\n\t\t\t>=sys-firmware/seabios-1.16.0[seavgabios]\n\t\t\t>=sys-firmware/seabios-bin-1.16.0\n\t\t)\n\t)\n )\n\n\tkernel_linux? ( >=sys-kernel/linux-headers-2.6.35 )\n\tstatic-user? ( \n\tdev-libs/glib:2[static-libs(+)]\n\tsys-libs/zlib[static-libs(+)]\n\tpython? ( python_targets_python3_10? ( dev-lang/python:3.10[ncurses,readline] ) python_targets_python3_11? ( dev-lang/python:3.11[ncurses,readline] ) python_targets_python3_12? ( dev-lang/python:3.12[ncurses,readline] ) )\n\tsystemtap? ( dev-debug/systemtap )\n\txattr? ( sys-apps/attr[static-libs(+)] )\n )\n ' >declare DESCRIPTION="QEMU + Kernel-based Virtual Machine userland tools" >declare -- DESKTOP_DATABASE_DIR="/usr/share/applications" >declare -x DIROPTIONS="-m0755" >declare -- DOC_CONTENTS=$'If you don\'t have kvm compiled into the kernel, make sure you have the\nkernel module loaded before running kvm. The easiest way to ensure that the\nkernel module is loaded is to load it on boot.\n\tFor AMD CPUs the module is called \'kvm-amd\'.\n\tFor Intel CPUs the module is called \'kvm-intel\'.\nPlease review /etc/conf.d/modules for how to load these.\n\nMake sure your user is in the \'kvm\' group. Just run\n\t$ gpasswd -a <USER> kvm\nthen have <USER> re-login.\n\nFor brand new installs, the default permissions on /dev/kvm might not let\nyou access it. You can tell udev to reset ownership/perms:\n\t$ udevadm trigger -c add /dev/kvm\n\nIf you want to register binfmt handlers for qemu user targets:\nFor openrc:\n\t# rc-update add qemu-binfmt\nFor systemd:\n\t# ln -s /usr/share/qemu/binfmt.d/qemu.conf /etc/binfmt.d/qemu.conf' >declare -x DOTNET_ROOT="/opt/dotnet-sdk-bin-8.0" >declare -x EAPI="8" >declare -- EDK2_OVMF_VERSION="202202" >declare -x EGO_BUILD_FLAGS="-p 4" >declare -x ELIBC="musl" >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="1712342525.990536" >declare -- EPOCHSECONDS="1712342525" >declare -x EPYTHON="python3.11" >declare -x EXEOPTIONS="-m0755" >declare -- E_IDEPEND="filecaps? ( sys-libs/libcap )" >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 -- FIRMWARE_ABI_VERSION="7.2.0" >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 HELIX_RUNTIME="/usr/share/helix/runtime" >declare HOMEPAGE="https://www.qemu.org https://www.linux-kvm.org" >declare IDEPEND="filecaps? ( sys-libs/libcap )" >declare -x INHERITED=" toolchain-funcs multilib linux-info out-of-source-utils multibuild multiprocessing python-utils-r1 python-r1 udev fcaps readme.gentoo-r1 pax-utils xdg-utils" >declare -x INPUT_DEVICES="" >declare -x INSOPTIONS="-m0644" >declare IUSE=$'accessibility +aio alsa bpf bzip2 capstone +curl debug doc\n\t+fdt fuse glusterfs +gnutls gtk infiniband iscsi io-uring\n\tjack jemalloc +jpeg keyutils\n\tlzo multipath\n\tncurses nfs nls numa opengl +oss pam +pin-upstream-blobs pipewire\n\tplugins +png pulseaudio python rbd sasl +seccomp sdl sdl-image selinux\n\t+slirp\n\tsmartcard snappy spice ssh static-user systemtap test udev usb\n\tusbredir vde +vhost-net virgl virtfs +vnc vte xattr xen\n\tzstd qemu_softmmu_targets_aarch64 qemu_softmmu_targets_alpha qemu_softmmu_targets_arm qemu_softmmu_targets_cris qemu_softmmu_targets_hppa qemu_softmmu_targets_i386 qemu_softmmu_targets_loongarch64 qemu_softmmu_targets_m68k qemu_softmmu_targets_microblaze qemu_softmmu_targets_microblazeel qemu_softmmu_targets_mips qemu_softmmu_targets_mips64 qemu_softmmu_targets_mips64el qemu_softmmu_targets_mipsel qemu_softmmu_targets_nios2 qemu_softmmu_targets_or1k qemu_softmmu_targets_ppc qemu_softmmu_targets_ppc64 qemu_softmmu_targets_riscv32 qemu_softmmu_targets_riscv64 qemu_softmmu_targets_s390x qemu_softmmu_targets_sh4 qemu_softmmu_targets_sh4eb qemu_softmmu_targets_sparc qemu_softmmu_targets_sparc64 qemu_softmmu_targets_x86_64 qemu_softmmu_targets_xtensa qemu_softmmu_targets_xtensaeb qemu_softmmu_targets_avr qemu_softmmu_targets_rx qemu_softmmu_targets_tricore qemu_user_targets_aarch64 qemu_user_targets_alpha qemu_user_targets_arm qemu_user_targets_cris qemu_user_targets_hppa qemu_user_targets_i386 qemu_user_targets_loongarch64 qemu_user_targets_m68k qemu_user_targets_microblaze qemu_user_targets_microblazeel qemu_user_targets_mips qemu_user_targets_mips64 qemu_user_targets_mips64el qemu_user_targets_mipsel qemu_user_targets_nios2 qemu_user_targets_or1k qemu_user_targets_ppc qemu_user_targets_ppc64 qemu_user_targets_riscv32 qemu_user_targets_riscv64 qemu_user_targets_s390x qemu_user_targets_sh4 qemu_user_targets_sh4eb qemu_user_targets_sparc qemu_user_targets_sparc64 qemu_user_targets_x86_64 qemu_user_targets_xtensa qemu_user_targets_xtensaeb qemu_user_targets_aarch64_be qemu_user_targets_armeb qemu_user_targets_hexagon qemu_user_targets_mipsn32 qemu_user_targets_mipsn32el qemu_user_targets_ppc64le qemu_user_targets_sparc32plus python_targets_python3_10 python_targets_python3_11 python_targets_python3_12 +filecaps' >declare -x IUSE_EFFECTIVE="abi_x86_64 accessibility aio alpha alsa amd64 amd64-linux arm arm64 arm64-macos bpf bzip2 capstone curl debug doc elibc_Darwin elibc_SunOS elibc_bionic elibc_glibc elibc_mingw elibc_musl fdt filecaps fuse glusterfs gnutls gtk hppa ia64 infiniband io-uring iscsi jack jemalloc jpeg kernel_Darwin kernel_SunOS kernel_linux keyutils loong lzo m68k mips multipath ncurses nfs nls numa opengl oss pam pin-upstream-blobs pipewire plugins png ppc ppc-macos ppc64 ppc64-linux prefix prefix-guest prefix-stack pulseaudio python python_targets_python3_10 python_targets_python3_11 python_targets_python3_12 qemu_softmmu_targets_aarch64 qemu_softmmu_targets_alpha qemu_softmmu_targets_arm qemu_softmmu_targets_avr qemu_softmmu_targets_cris qemu_softmmu_targets_hppa qemu_softmmu_targets_i386 qemu_softmmu_targets_loongarch64 qemu_softmmu_targets_m68k qemu_softmmu_targets_microblaze qemu_softmmu_targets_microblazeel qemu_softmmu_targets_mips qemu_softmmu_targets_mips64 qemu_softmmu_targets_mips64el qemu_softmmu_targets_mipsel qemu_softmmu_targets_nios2 qemu_softmmu_targets_or1k qemu_softmmu_targets_ppc qemu_softmmu_targets_ppc64 qemu_softmmu_targets_riscv32 qemu_softmmu_targets_riscv64 qemu_softmmu_targets_rx qemu_softmmu_targets_s390x qemu_softmmu_targets_sh4 qemu_softmmu_targets_sh4eb qemu_softmmu_targets_sparc qemu_softmmu_targets_sparc64 qemu_softmmu_targets_tricore qemu_softmmu_targets_x86_64 qemu_softmmu_targets_xtensa qemu_softmmu_targets_xtensaeb qemu_user_targets_aarch64 qemu_user_targets_aarch64_be qemu_user_targets_alpha qemu_user_targets_arm qemu_user_targets_armeb qemu_user_targets_cris qemu_user_targets_hexagon qemu_user_targets_hppa qemu_user_targets_i386 qemu_user_targets_loongarch64 qemu_user_targets_m68k qemu_user_targets_microblaze qemu_user_targets_microblazeel qemu_user_targets_mips qemu_user_targets_mips64 qemu_user_targets_mips64el qemu_user_targets_mipsel qemu_user_targets_mipsn32 qemu_user_targets_mipsn32el qemu_user_targets_nios2 qemu_user_targets_or1k qemu_user_targets_ppc qemu_user_targets_ppc64 qemu_user_targets_ppc64le qemu_user_targets_riscv32 qemu_user_targets_riscv64 qemu_user_targets_s390x qemu_user_targets_sh4 qemu_user_targets_sh4eb qemu_user_targets_sparc qemu_user_targets_sparc32plus qemu_user_targets_sparc64 qemu_user_targets_x86_64 qemu_user_targets_xtensa qemu_user_targets_xtensaeb rbd riscv s390 sasl sdl sdl-image seccomp selinux slirp smartcard snappy sparc spice ssh static-user systemtap test udev usb usbredir vde vhost-net virgl virtfs vnc vte x64-macos x64-solaris x86 x86-linux xattr xen zstd" >declare -x IUSE_IMPLICIT="abi_x86_64 prefix prefix-guest prefix-stack" >declare -- IUSE_SOFTMMU_TARGETS=$'\n\t\n\taarch64\n\talpha\n\tarm\n\tcris\n\thppa\n\ti386\n\tloongarch64\n\tm68k\n\tmicroblaze\n\tmicroblazeel\n\tmips\n\tmips64\n\tmips64el\n\tmipsel\n\tnios2\n\tor1k\n\tppc\n\tppc64\n\triscv32\n\triscv64\n\ts390x\n\tsh4\n\tsh4eb\n\tsparc\n\tsparc64\n\tx86_64\n\txtensa\n\txtensaeb\n\n\tavr\n\trx\n\ttricore\n' >declare -- IUSE_USER_TARGETS=$'\n\t\n\taarch64\n\talpha\n\tarm\n\tcris\n\thppa\n\ti386\n\tloongarch64\n\tm68k\n\tmicroblaze\n\tmicroblazeel\n\tmips\n\tmips64\n\tmips64el\n\tmipsel\n\tnios2\n\tor1k\n\tppc\n\tppc64\n\triscv32\n\triscv64\n\ts390x\n\tsh4\n\tsh4eb\n\tsparc\n\tsparc64\n\tx86_64\n\txtensa\n\txtensaeb\n\n\taarch64_be\n\tarmeb\n\thexagon\n\tmipsn32\n\tmipsn32el\n\tppc64le\n\tsparc32plus\n' >declare -x JAVAC="/etc/java-config-2/current-system-vm/bin/javac" >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 -- KERNEL_DIR="/usr/src/linux" >declare -- KERNEL_MAKEFILE="/usr/src/linux/Makefile" >declare -x KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86" >declare -- KV_DIR="/usr/src/linux" >declare -- KV_EXTRA="" >declare -- KV_FULL="6.8.3-gentoo-dist" >declare -- KV_LOCAL="-gentoo-dist" >declare -- KV_MAJOR="6" >declare -- KV_MINOR="8" >declare -- KV_OUT_DIR="/usr/src/linux" >declare -- KV_PATCH="3" >declare -x L10N="" >declare -x LADSPA_PATH="/usr/lib/ladspa" >declare -x LANG="C.UTF8" >declare -x LCD_DEVICES="" >declare -x LC_COLLATE="C" >declare -x LC_MESSAGES="C" >declare -x LD="x86_64-pc-linux-musl-ld" >declare -x LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs -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 LIBDIR_amd64="lib" >declare -x LIBDIR_default="lib" >declare -x LIBDIR_x32="libx32" >declare -x LIBDIR_x86="lib" >declare -x LIBOPTIONS="-m0644" >declare -x LIBREOFFICE_EXTENSIONS="" >declare -x LICENSE="GPL-2 LGPL-2 BSD-2" >declare -x LLVM_SLOT="" >declare -x LLVM_TARGETS="" >declare -x LUA_SINGLE_TARGET="" >declare -x LUA_TARGETS="" >declare -x MAILTO="tinderbox" >declare -x MAKEOPTS=" -j4 V=1" >declare -x MANPAGER="manpager" >declare -- MIMEINFO_DATABASE_DIR="/usr/share/mime" >declare -x MONKEYD_PLUGINS="" >declare -x MULTILIB_ABIS="amd64" >declare -x MULTILIB_STRICT_DENY="64-bit.*shared object" >declare -x MULTILIB_STRICT_DIRS="/lib32 /lib /usr/lib32 /usr/lib /usr/kde/*/lib32 /usr/kde/*/lib /usr/qt/*/lib32 /usr/qt/*/lib /usr/X11R6/lib32 /usr/X11R6/lib" >declare -x MULTILIB_STRICT_EXEMPT="(perl5|gcc|binutils|eclipse-3|debug|portage|udev|systemd|clang|python-exec|llvm)" >declare -- MY_P="qemu-8.2.2" >declare -x NGINX_MODULES_HTTP="" >declare -x NGINX_MODULES_MAIL="" >declare -x NGINX_MODULES_STREAM="" >declare -x NM="x86_64-pc-linux-musl-nm" >declare -x NPM_CONFIG_GLOBALCONFIG="/etc/npm/npmrc" >declare -x OBJCOPY="x86_64-pc-linux-musl-objcopy" >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 -a PATCHES=([0]="/var/tmp/portage/app-emulation/qemu-8.2.2/files/qemu-8.0.0-disable-keymap.patch" [1]="/var/tmp/portage/app-emulation/qemu-8.2.2/files/qemu-7.1.0-capstone-include-path.patch" [2]="/var/tmp/portage/app-emulation/qemu-8.2.2/files/qemu-8.1.0-also-build-virtfs-proxy-helper.patch" [3]="/var/tmp/portage/app-emulation/qemu-8.2.2/files/qemu-8.1.0-skip-tests.patch" [4]="/var/tmp/portage/app-emulation/qemu-8.2.2/files/qemu-8.1.0-find-sphinx.patch") >declare -x PATH="/var/tmp/portage/app-emulation/qemu-8.2.2/temp/python3.11/bin:/usr/lib/portage/python3.11/ebuild-helpers/xattr:/usr/lib/portage/python3.11/ebuild-helpers:/usr/local/sbin:/usr/local/bin:/usr/bin:/opt/bin:/usr/lib/llvm/18/bin:/usr/lib/llvm/17/bin:/usr/lib/llvm/15/bin:/usr/lib/subversion/bin:/var/lib/bin" >declare -- PAX_MARKINGS="none" >declare PDEPEND="" >declare -x PGPLOT_FONT="/usr/lib/pgplot/grfont.dat" >declare -x PHP_TARGETS="" >declare -x PKGSYSTEM_ENABLE_FSYNC="0" >declare -x PKG_CONFIG="x86_64-pc-linux-musl-pkg-config" >declare -x PKG_CONFIG_PATH="/var/tmp/portage/app-emulation/qemu-8.2.2/temp/python3.11/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/qemu-8.2.2/html") >declare -a PORTAGE_DOSTRIP=([0]="/") >declare -a PORTAGE_DOSTRIP_SKIP=() >declare -x PORTAGE_LIBC="musl" >declare -x PORTAGE_TMPFS="/dev/shm" >declare -x PORT_LOGDIR="/var/log/portage" >declare -x POSTGRES_TARGETS="" >declare -- PPC_FIRMWARE_DEPEND=$'\n\tpin-upstream-blobs? (\n\t\t~sys-firmware/seabios-bin-1.16.0\n\t)\n\t!pin-upstream-blobs? (\n\t\t|| (\n\t\t\t>=sys-firmware/seabios-1.16.0[seavgabios]\n\t\t\t>=sys-firmware/seabios-bin-1.16.0\n\t\t)\n\t)\n' >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.11" >declare -x PYTHONDONTWRITEBYTECODE="1" >declare -a PYTHON_COMPAT=([0]="python3_10" [1]="python3_11" [2]="python3_12") >declare -- PYTHON_DEPS="python_targets_python3_10? ( dev-lang/python:3.10[ncurses,readline] ) python_targets_python3_11? ( dev-lang/python:3.11[ncurses,readline] ) python_targets_python3_12? ( dev-lang/python:3.12[ncurses,readline] ) " >declare -- PYTHON_REQUIRED_USE="|| ( python_targets_python3_10 python_targets_python3_11 python_targets_python3_12 )" >declare -- PYTHON_REQ_USE="ncurses,readline" >declare -x PYTHON_SINGLE_TARGET="" >declare -x PYTHON_TARGETS="python3_11" >declare -- PYTHON_USEDEP="python_targets_python3_10(-)?,python_targets_python3_11(-)?,python_targets_python3_12(-)?" >declare -x PY_FORCE_COLOR="0" >declare -- QA_PREBUILT=$'\n\tusr/share/qemu/hppa-firmware.img\n\tusr/share/qemu/openbios-ppc\n\tusr/share/qemu/openbios-sparc64\n\tusr/share/qemu/openbios-sparc32\n\tusr/share/qemu/opensbi-riscv64-generic-fw_dynamic.elf\n\tusr/share/qemu/opensbi-riscv32-generic-fw_dynamic.elf\n\tusr/share/qemu/palcode-clipper\n\tusr/share/qemu/s390-ccw.img\n\tusr/share/qemu/s390-netboot.img\n\tusr/share/qemu/u-boot.e500\n' >declare -- QA_WX_LOAD=$'\n\tusr/bin/qemu-i386\n\tusr/bin/qemu-x86_64\n\tusr/bin/qemu-alpha\n\tusr/bin/qemu-arm\n\tusr/bin/qemu-cris\n\tusr/bin/qemu-m68k\n\tusr/bin/qemu-microblaze\n\tusr/bin/qemu-microblazeel\n\tusr/bin/qemu-mips\n\tusr/bin/qemu-mipsel\n\tusr/bin/qemu-or1k\n\tusr/bin/qemu-ppc\n\tusr/bin/qemu-ppc64\n\tusr/bin/qemu-sh4\n\tusr/bin/qemu-sh4eb\n\tusr/bin/qemu-sparc\n\tusr/bin/qemu-sparc64\n\tusr/bin/qemu-armeb\n\tusr/bin/qemu-sparc32plus\n\tusr/bin/qemu-s390x\n\tusr/bin/qemu-unicore32\n' >declare -- QEMU_DOCS_PREBUILT="1" >declare -- QEMU_DOCS_PREBUILT_DEV="sam" >declare -- QEMU_DOCS_VERSION="8.2.0" >declare -- QEMU_DOC_USEFLAG="doc" >declare -x QEMU_SOFTMMU_TARGETS="x86_64" >declare -x QEMU_USER_TARGETS="x86_64" >declare -x RANLIB="x86_64-pc-linux-musl-ranlib" >declare RDEPEND=$'\n\t\n\t\n\tdev-libs/glib:2\n\tsys-libs/zlib\n\tpython? ( python_targets_python3_10? ( dev-lang/python:3.10[ncurses,readline] ) python_targets_python3_11? ( dev-lang/python:3.11[ncurses,readline] ) python_targets_python3_12? ( dev-lang/python:3.12[ncurses,readline] ) )\n\tsystemtap? ( dev-debug/systemtap )\n\txattr? ( sys-apps/attr )\n\n\t\n\t>=x11-libs/pixman-0.28.0\n\taccessibility? (\n\t\tapp-accessibility/brltty[api]\n\t\tapp-accessibility/brltty\n\t)\n\taio? ( dev-libs/libaio )\n\talsa? ( >=media-libs/alsa-lib-1.0.13 )\n\tbpf? ( dev-libs/libbpf:= )\n\tbzip2? ( app-arch/bzip2 )\n\tcapstone? ( dev-libs/capstone:= )\n\tcurl? ( >=net-misc/curl-7.15.4 )\n\tfdt? ( >=sys-apps/dtc-1.5.1 )\n\tfuse? ( >=sys-fs/fuse-3.1:3 )\n\tglusterfs? ( >=sys-cluster/glusterfs-3.4.0 )\n\tgnutls? (\n\t\t>=net-libs/gnutls-3.0:=\n\t\tdev-libs/nettle:=\n\t)\n\tgtk? (\n\t\tx11-libs/gtk+:3\n\t\tvte? ( x11-libs/vte:2.91 )\n\t)\n\tinfiniband? ( sys-cluster/rdma-core )\n\tiscsi? ( net-libs/libiscsi )\n\tio-uring? ( sys-libs/liburing:= )\n\tjack? ( virtual/jack )\n\tjemalloc? ( dev-libs/jemalloc )\n\tjpeg? ( media-libs/libjpeg-turbo:= )\n\tkernel_linux? ( sys-libs/libcap-ng )\n\tkeyutils? ( sys-apps/keyutils )\n\tlzo? ( dev-libs/lzo:2 )\n\tmultipath? ( sys-fs/multipath-tools )\n\tncurses? (\n\t\tsys-libs/ncurses:=[unicode(+)]\n\t\tsys-libs/ncurses:=\n\t)\n\tnfs? ( >=net-fs/libnfs-1.9.3:= )\n\tnuma? ( sys-process/numactl )\n\topengl? (\n\t\tvirtual/opengl\n\t\tmedia-libs/libepoxy\n\t\tmedia-libs/mesa\n\t\tmedia-libs/mesa[egl(+),gbm(+)]\n\t)\n\tpam? ( sys-libs/pam )\n\tpipewire? ( >=media-video/pipewire-0.3.60 )\n\tpng? ( >=media-libs/libpng-1.6.34:= )\n\tpulseaudio? ( media-libs/libpulse )\n\trbd? ( sys-cluster/ceph )\n\tsasl? ( dev-libs/cyrus-sasl )\n\tsdl? (\n\t\tmedia-libs/libsdl2[video]\n\t\tmedia-libs/libsdl2\n\t)\n\tsdl-image? ( media-libs/sdl2-image )\n\tseccomp? ( >=sys-libs/libseccomp-2.1.0 )\n\tslirp? ( net-libs/libslirp )\n\tsmartcard? ( >=app-emulation/libcacard-2.5.0 )\n\tsnappy? ( app-arch/snappy:= )\n\tspice? (\n\t\t>=app-emulation/spice-protocol-0.14.0\n\t\t>=app-emulation/spice-0.14.0\n\t)\n\tssh? ( >=net-libs/libssh-0.8.6 )\n\tudev? ( virtual/libudev:= )\n\tusb? ( >=virtual/libusb-1-r2:1 )\n\tusbredir? ( >=sys-apps/usbredir-0.6 )\n\tvde? ( net-misc/vde )\n\tvirgl? ( media-libs/virglrenderer )\n\tvirtfs? ( sys-libs/libcap )\n\txen? ( app-emulation/xen-tools:= )\n\tzstd? ( >=app-arch/zstd-1.4.0 )\n\n\tqemu_softmmu_targets_i386? ( \n\tpin-upstream-blobs? (\n\t\t~sys-firmware/edk2-ovmf-bin-202202\n\t\t~sys-firmware/ipxe-1.21.1[binary,qemu]\n\t\t~sys-firmware/seabios-bin-1.16.0\n\t\t~sys-firmware/sgabios-0.1_pre10[binary]\n\t)\n\t!pin-upstream-blobs? (\n\t\t|| (\n\t\t\t>=sys-firmware/edk2-ovmf-202202\n\t\t\t>=sys-firmware/edk2-ovmf-bin-202202\n\t\t)\n\t\tsys-firmware/ipxe[qemu]\n\t\t|| (\n\t\t\t>=sys-firmware/seabios-1.16.0[seavgabios]\n\t\t\t>=sys-firmware/seabios-bin-1.16.0\n\t\t)\n\t\tsys-firmware/sgabios\n\t)\n )\n\tqemu_softmmu_targets_x86_64? ( \n\tpin-upstream-blobs? (\n\t\t~sys-firmware/edk2-ovmf-bin-202202\n\t\t~sys-firmware/ipxe-1.21.1[binary,qemu]\n\t\t~sys-firmware/seabios-bin-1.16.0\n\t\t~sys-firmware/sgabios-0.1_pre10[binary]\n\t)\n\t!pin-upstream-blobs? (\n\t\t|| (\n\t\t\t>=sys-firmware/edk2-ovmf-202202\n\t\t\t>=sys-firmware/edk2-ovmf-bin-202202\n\t\t)\n\t\tsys-firmware/ipxe[qemu]\n\t\t|| (\n\t\t\t>=sys-firmware/seabios-1.16.0[seavgabios]\n\t\t\t>=sys-firmware/seabios-bin-1.16.0\n\t\t)\n\t\tsys-firmware/sgabios\n\t)\n )\n\tqemu_softmmu_targets_ppc? ( \n\tpin-upstream-blobs? (\n\t\t~sys-firmware/seabios-bin-1.16.0\n\t)\n\t!pin-upstream-blobs? (\n\t\t|| (\n\t\t\t>=sys-firmware/seabios-1.16.0[seavgabios]\n\t\t\t>=sys-firmware/seabios-bin-1.16.0\n\t\t)\n\t)\n )\n\tqemu_softmmu_targets_ppc64? ( \n\tpin-upstream-blobs? (\n\t\t~sys-firmware/seabios-bin-1.16.0\n\t)\n\t!pin-upstream-blobs? (\n\t\t|| (\n\t\t\t>=sys-firmware/seabios-1.16.0[seavgabios]\n\t\t\t>=sys-firmware/seabios-bin-1.16.0\n\t\t)\n\t)\n )\n\n\tacct-group/kvm\n\tselinux? (\n\t\tsec-policy/selinux-qemu\n\t\tsys-libs/libselinux\n\t)\n ' >declare -- README_GENTOO_SUFFIX="" >declare REPOSITORY >declare REQUIRED_USE=$'\n\t|| ( python_targets_python3_10 python_targets_python3_11 python_targets_python3_12 )\n\tqemu_softmmu_targets_arm? ( fdt )\n\tqemu_softmmu_targets_microblaze? ( fdt )\n\tqemu_softmmu_targets_mips64el? ( fdt )\n\tqemu_softmmu_targets_ppc64? ( fdt )\n\tqemu_softmmu_targets_ppc? ( fdt )\n\tqemu_softmmu_targets_riscv32? ( fdt )\n\tqemu_softmmu_targets_riscv64? ( fdt )\n\tqemu_softmmu_targets_x86_64? ( fdt )\n\tsdl-image? ( sdl )\n\tstatic-user? ( !plugins )\n\tvirgl? ( opengl )\n\tvirtfs? ( xattr )\n\tvnc? ( gnutls )\n\tvte? ( gtk )\n\tmultipath? ( udev )\n\tplugins? ( !static-user )\n qemu_softmmu_targets_aarch64? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_alpha? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_arm? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_cris? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_hppa? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_i386? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_loongarch64? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_m68k? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_microblaze? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_microblazeel? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_mips? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_mips64? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_mips64el? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_mipsel? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_nios2? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_or1k? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_ppc? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_ppc64? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_riscv32? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_riscv64? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_s390x? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_sh4? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_sh4eb? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_sparc? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_sparc64? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_x86_64? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_xtensa? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_xtensaeb? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_avr? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_rx? ( kernel_linux? ( seccomp ) ) qemu_softmmu_targets_tricore? ( kernel_linux? ( seccomp ) ) ' >declare RESTRICT="test" >declare -x RESUMECOMMAND_SSH="bash -c \"x=\\\${2#ssh://} ; host=\\\${x%%/*} ; port=\\\${host##*:} ; host=\\\${host%:*} ; [[ \\\${host} = \\\${port} ]] && port= ; exec rsync --rsh=\\\"ssh \\\${port:+-p\\\${port}} \\\${3}\\\" -avP \\\"\\\${host}:/\\\${x#*/}\\\" \\\"\\\$1\\\"\" rsync \"\${DISTDIR}/\${FILE}\" \"\${URI}\" \"\${PORTAGE_SSH_OPTS}\"" >declare -x RUBY_TARGETS="" >declare -x RUSTFLAGS="-C target-feature=-crt-static" >declare -x RUST_TEST_TASKS="4" >declare -x RUST_TEST_THREADS="4" >declare -x S="/var/tmp/portage/app-emulation/qemu-8.2.2/work/qemu-8.2.2" >declare -x SANDBOX_DEBUG="0" >declare -x SANDBOX_DENY="" >declare -x SANDBOX_METHOD="any" >declare -x SANDBOX_PREDICT="/var/tmp/portage/app-emulation/qemu-8.2.2/homedir:/dev/crypto:/var/cache/man:/dev/random:/proc/self/coredump_filter:/var/cache/fontconfig" >declare -x SANDBOX_READ="/:/var/tmp/portage" >declare -x SANDBOX_VERBOSE="1" >declare -x SANDBOX_WRITE=":/dev/console:/dev/fd:/dev/full:/dev/null:/dev/ptmx:/dev/pts/:/dev/pty:/dev/shm:/dev/tts:/dev/tty:/dev/vc/:/dev/zero:/proc/self/fd:/tmp/:/usr/lib/cf:/usr/lib/conftest:/usr/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/tmp/:/usr/tmp/cf:/usr/tmp/conftest:/var/tmp/:/var/tmp/portage:/var/tmp/portage/app-emulation/qemu-8.2.2/homedir/.bash_history" >declare -x SANE_BACKENDS="" >declare -- SEABIOS_VERSION="1.16.0" >declare -x SHELL="/bin/bash" >declare -- SKIP_KERNEL_CHECK="" >declare -x SLOT="0" >declare -- SOFTMMU_TOOLS_DEPEND=$'\n\t>=x11-libs/pixman-0.28.0[static-libs(+)]\n\taccessibility? (\n\t\tapp-accessibility/brltty[api]\n\t\tapp-accessibility/brltty[static-libs(+)]\n\t)\n\taio? ( dev-libs/libaio[static-libs(+)] )\n\talsa? ( >=media-libs/alsa-lib-1.0.13 )\n\tbpf? ( dev-libs/libbpf:= )\n\tbzip2? ( app-arch/bzip2[static-libs(+)] )\n\tcapstone? ( dev-libs/capstone:=[static-libs(+)] )\n\tcurl? ( >=net-misc/curl-7.15.4[static-libs(+)] )\n\tfdt? ( >=sys-apps/dtc-1.5.1[static-libs(+)] )\n\tfuse? ( >=sys-fs/fuse-3.1:3[static-libs(+)] )\n\tglusterfs? ( >=sys-cluster/glusterfs-3.4.0[static-libs(+)] )\n\tgnutls? (\n\t\t>=net-libs/gnutls-3.0:=[static-libs(+)]\n\t\tdev-libs/nettle:=[static-libs(+)]\n\t)\n\tgtk? (\n\t\tx11-libs/gtk+:3\n\t\tvte? ( x11-libs/vte:2.91 )\n\t)\n\tinfiniband? ( sys-cluster/rdma-core[static-libs(+)] )\n\tiscsi? ( net-libs/libiscsi )\n\tio-uring? ( sys-libs/liburing:=[static-libs(+)] )\n\tjack? ( virtual/jack )\n\tjemalloc? ( dev-libs/jemalloc )\n\tjpeg? ( media-libs/libjpeg-turbo:=[static-libs(+)] )\n\tkernel_linux? ( sys-libs/libcap-ng[static-libs(+)] )\n\tkeyutils? ( sys-apps/keyutils[static-libs(+)] )\n\tlzo? ( dev-libs/lzo:2[static-libs(+)] )\n\tmultipath? ( sys-fs/multipath-tools )\n\tncurses? (\n\t\tsys-libs/ncurses:=[unicode(+)]\n\t\tsys-libs/ncurses:=[static-libs(+)]\n\t)\n\tnfs? ( >=net-fs/libnfs-1.9.3:=[static-libs(+)] )\n\tnuma? ( sys-process/numactl[static-libs(+)] )\n\topengl? (\n\t\tvirtual/opengl\n\t\tmedia-libs/libepoxy[static-libs(+)]\n\t\tmedia-libs/mesa[static-libs(+)]\n\t\tmedia-libs/mesa[egl(+),gbm(+)]\n\t)\n\tpam? ( sys-libs/pam )\n\tpipewire? ( >=media-video/pipewire-0.3.60 )\n\tpng? ( >=media-libs/libpng-1.6.34:=[static-libs(+)] )\n\tpulseaudio? ( media-libs/libpulse )\n\trbd? ( sys-cluster/ceph )\n\tsasl? ( dev-libs/cyrus-sasl[static-libs(+)] )\n\tsdl? (\n\t\tmedia-libs/libsdl2[video]\n\t\tmedia-libs/libsdl2[static-libs(+)]\n\t)\n\tsdl-image? ( media-libs/sdl2-image[static-libs(+)] )\n\tseccomp? ( >=sys-libs/libseccomp-2.1.0[static-libs(+)] )\n\tslirp? ( net-libs/libslirp[static-libs(+)] )\n\tsmartcard? ( >=app-emulation/libcacard-2.5.0[static-libs(+)] )\n\tsnappy? ( app-arch/snappy:= )\n\tspice? (\n\t\t>=app-emulation/spice-protocol-0.14.0\n\t\t>=app-emulation/spice-0.14.0[static-libs(+)]\n\t)\n\tssh? ( >=net-libs/libssh-0.8.6[static-libs(+)] )\n\tudev? ( virtual/libudev:= )\n\tusb? ( >=virtual/libusb-1-r2:1[static-libs(+)] )\n\tusbredir? ( >=sys-apps/usbredir-0.6[static-libs(+)] )\n\tvde? ( net-misc/vde[static-libs(+)] )\n\tvirgl? ( media-libs/virglrenderer[static-libs(+)] )\n\tvirtfs? ( sys-libs/libcap )\n\txen? ( app-emulation/xen-tools:= )\n\tzstd? ( >=app-arch/zstd-1.4.0[static-libs(+)] )\n' >declare -i SRANDOM="2396859890" >declare SRC_URI="https://download.qemu.org/qemu-8.2.2.tar.xz !doc? ( https://dev.gentoo.org/~sam/distfiles/app-emulation/qemu/qemu-8.2.0-docs.tar.xz )" >declare -x STRINGS="x86_64-pc-linux-musl-strings" >declare -x SYMLINK_LIB="no" >declare -x TERMINFO="/etc/terminfo" >declare -x TWISTED_DISABLE_WRITING_OF_PLUGIN_CACHE="1" >declare -x USE="abi_x86_64 aio amd64 bzip2 curl elibc_musl fdt filecaps gnutls jemalloc jpeg kernel_linux ncurses nls oss pam pin-upstream-blobs png python_targets_python3_11 qemu_softmmu_targets_x86_64 qemu_user_targets_x86_64 seccomp slirp smartcard usb vhost-net vnc xattr zstd" >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 WINDRES="x86_64-pc-linux-musl-windres" >declare -- X86_FIRMWARE_DEPEND=$'\n\tpin-upstream-blobs? (\n\t\t~sys-firmware/edk2-ovmf-bin-202202\n\t\t~sys-firmware/ipxe-1.21.1[binary,qemu]\n\t\t~sys-firmware/seabios-bin-1.16.0\n\t\t~sys-firmware/sgabios-0.1_pre10[binary]\n\t)\n\t!pin-upstream-blobs? (\n\t\t|| (\n\t\t\t>=sys-firmware/edk2-ovmf-202202\n\t\t\t>=sys-firmware/edk2-ovmf-bin-202202\n\t\t)\n\t\tsys-firmware/ipxe[qemu]\n\t\t|| (\n\t\t\t>=sys-firmware/seabios-1.16.0[seavgabios]\n\t\t\t>=sys-firmware/seabios-bin-1.16.0\n\t\t)\n\t\tsys-firmware/sgabios\n\t)\n' >declare -x XTABLES_ADDONS="" >declare -x XZ_OPT="-9 -T4" >declare -- _FCAPS_ECLASS="1" >declare -- _LINUX_CONFIG_EXISTS_DONE="" >declare -- _LINUX_INFO_ECLASS="1" >declare -- _MULTIBUILD_ECLASS="1" >declare -- _MULTILIB_ECLASS="1" >declare -- _MULTIPROCESSING_ECLASS="1" >declare -- _OUT_OF_SOURCE_UTILS_ECLASS="1" >declare -- _PAX_UTILS_ECLASS="1" >declare -a _PYTHON_ALL_IMPLS=([0]="pypy3" [1]="python3_10" [2]="python3_11" [3]="python3_12") >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 -- _PYTHON_R1_ECLASS="1" >declare -a _PYTHON_SUPPORTED_IMPLS=([0]="python3_10" [1]="python3_11" [2]="python3_12") >declare -a _PYTHON_UNSUPPORTED_IMPLS=([0]="pypy3") >declare -- _PYTHON_UTILS_R1_ECLASS="1" >declare -- _README_GENTOO_ECLASS="1" >declare -- _TOOLCHAIN_FUNCS_ECLASS="1" >declare -- _UDEV_ECLASS="1" >declare -x __E_DESTTREE="/usr" >declare -x __E_DOCDESTTREE="" >declare -x __E_EXEDESTTREE="" >declare -x __E_INSDESTTREE="" >declare -x ac_cv_c_undeclared_builtin_options="none needed" >declare -x enable_year2038="no" >declare -- get_version_warning_done="" >declare -x gl_cv_compiler_check_decl_option="-Werror=implicit-function-declaration" >declare -x gl_cv_func_getcwd_path_max="no, but it is partly working" >declare -- smname="tricore" >declare -a softmmu_bins=([0]="qemu-system-x86_64") >declare -- softmmu_targets="x86_64-softmmu" >declare -- use_softmmu_targets=" qemu_softmmu_targets_aarch64 qemu_softmmu_targets_alpha qemu_softmmu_targets_arm qemu_softmmu_targets_cris qemu_softmmu_targets_hppa qemu_softmmu_targets_i386 qemu_softmmu_targets_loongarch64 qemu_softmmu_targets_m68k qemu_softmmu_targets_microblaze qemu_softmmu_targets_microblazeel qemu_softmmu_targets_mips qemu_softmmu_targets_mips64 qemu_softmmu_targets_mips64el qemu_softmmu_targets_mipsel qemu_softmmu_targets_nios2 qemu_softmmu_targets_or1k qemu_softmmu_targets_ppc qemu_softmmu_targets_ppc64 qemu_softmmu_targets_riscv32 qemu_softmmu_targets_riscv64 qemu_softmmu_targets_s390x qemu_softmmu_targets_sh4 qemu_softmmu_targets_sh4eb qemu_softmmu_targets_sparc qemu_softmmu_targets_sparc64 qemu_softmmu_targets_x86_64 qemu_softmmu_targets_xtensa qemu_softmmu_targets_xtensaeb qemu_softmmu_targets_avr qemu_softmmu_targets_rx qemu_softmmu_targets_tricore" >declare -- use_user_targets=" qemu_user_targets_aarch64 qemu_user_targets_alpha qemu_user_targets_arm qemu_user_targets_cris qemu_user_targets_hppa qemu_user_targets_i386 qemu_user_targets_loongarch64 qemu_user_targets_m68k qemu_user_targets_microblaze qemu_user_targets_microblazeel qemu_user_targets_mips qemu_user_targets_mips64 qemu_user_targets_mips64el qemu_user_targets_mipsel qemu_user_targets_nios2 qemu_user_targets_or1k qemu_user_targets_ppc qemu_user_targets_ppc64 qemu_user_targets_riscv32 qemu_user_targets_riscv64 qemu_user_targets_s390x qemu_user_targets_sh4 qemu_user_targets_sh4eb qemu_user_targets_sparc qemu_user_targets_sparc64 qemu_user_targets_x86_64 qemu_user_targets_xtensa qemu_user_targets_xtensaeb qemu_user_targets_aarch64_be qemu_user_targets_armeb qemu_user_targets_hexagon qemu_user_targets_mipsn32 qemu_user_targets_mipsn32el qemu_user_targets_ppc64le qemu_user_targets_sparc32plus" >declare -a user_bins=([0]="qemu-x86_64") >declare -- user_targets="x86_64-linux-user" >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 "dev-build/libtool"; > if grep -q '^LIBTOOL="rdlibtool"' /etc/portage/make.conf; then > add2backlog "dev-build/slibtool"; > fi; > add2backlog "%emerge --unmerge sys-devel/gcc:$(cut -f 1 -d '.' <<< $current)"; > fi; > if dice 1 2 && [[ $(gcc -dumpversion) -ge 14 ]]; then > sed -i -e 's,^CFLAGS=",CFLAGS="-fpermissive ,' /etc/portage/make.conf; > 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 >} >_clang_fullversion () >{ > local ver="$1"; > shift; > set -- $($(tc-getCPP "$@") -E -P - <<< "__clang_major__ __clang_minor__ __clang_patchlevel__"); > eval echo "${ver}" >} >_eapply_patch () >{ > local f=${1}; > local prefix=${2}; > 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 >} >_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}" >} >_pax_list_files () >{ > local f cmd; > cmd=$1; > shift; > for f in "$@"; > do > ${cmd} " ${f}"; > done >} >_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_gen_usedep () >{ > debug-print-function ${FUNCNAME} "${@}"; > local impl matches=(); > _python_verify_patterns "${@}"; > for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}"; > do > if _python_impl_matches "${impl}" "${@}"; then > matches+=("python_targets_${impl}(-)?"); > fi; > done; > [[ -n ${matches[@]} ]] || die "No supported implementations match python_gen_usedep patterns: ${@}"; > local out=${matches[@]}; > echo "${out// /,}" >} >_python_impl_matches () >{ > [[ ${#} -ge 1 ]] || die "${FUNCNAME}: takes at least 1 parameter"; > [[ ${#} -eq 1 ]] && return 0; > local impl=${1/./_} pattern; > shift; > for pattern in "$@"; > do > 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_multibuild_wrapper () >{ > debug-print-function ${FUNCNAME} "${@}"; > local -x EPYTHON PYTHON; > local -x PATH=${PATH} PKG_CONFIG_PATH=${PKG_CONFIG_PATH}; > _python_export "${MULTIBUILD_VARIANT}" EPYTHON PYTHON; > _python_wrapper_setup; > "${@}" >} >_python_obtain_impls () >{ > _python_validate_useflags; > if [[ -n ${PYTHON_COMPAT_OVERRIDE} ]]; then > MULTIBUILD_VARIANTS=(${PYTHON_COMPAT_OVERRIDE}); > return; > fi; > MULTIBUILD_VARIANTS=(); > local impl; > for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}"; > do > has "${impl}" "${PYTHON_COMPAT[@]}" && use "python_targets_${impl}" && MULTIBUILD_VARIANTS+=("${impl}"); > done >} >_python_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_validate_useflags () >{ > debug-print-function ${FUNCNAME} "${@}"; > if [[ -n ${PYTHON_COMPAT_OVERRIDE} ]]; then > if [[ ! -n ${_PYTHON_COMPAT_OVERRIDE_WARNED} ]]; then > ewarn "WARNING: PYTHON_COMPAT_OVERRIDE in effect. The following Python"; > ewarn "implementations will be enabled:"; > ewarn; > ewarn " ${PYTHON_COMPAT_OVERRIDE}"; > ewarn; > ewarn "Dependencies won't be satisfied, and PYTHON_TARGETS will be ignored."; > _PYTHON_COMPAT_OVERRIDE_WARNED=1; > fi; > return; > fi; > local i; > for i in "${_PYTHON_SUPPORTED_IMPLS[@]}"; > do > use "python_targets_${i}" && return 0; > done; > eerror "No Python implementation selected for the build. Please add one"; > eerror "of the following values to your PYTHON_TARGETS (in make.conf):"; > eerror; > eerror "${PYTHON_COMPAT[@]}"; > echo; > die "No supported Python implementation in PYTHON_TARGETS." >} >_python_verify_patterns () >{ > debug-print-function ${FUNCNAME} "${@}"; > local impl pattern; > for pattern in "$@"; > do > 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 >} >_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} >} >_udev_get_udevdir () >{ > local -x PKG_CONFIG_FDO_SYSROOT_RULES=1; > if $($(tc-getPKG_CONFIG) --exists udev); then > local udevdir="$($(tc-getPKG_CONFIG) --variable=udevdir udev)"; > echo "${udevdir#${EPREFIX}}"; > else > echo /lib/udev; > fi >} >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 >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/.") >} >check_extra_config () >{ > use kernel_linux || return; > local config negate die error reworkmodulenames; > local soft_errors_count=0 hard_errors_count=0 config_required=0; > local old_LINUX_CONFIG_EXISTS_DONE="${_LINUX_CONFIG_EXISTS_DONE}"; > linux-info_get_any_version; > for config in ${CONFIG_CHECK}; > do > if [[ "${config:0:1}" != "~" ]]; then > config_required=1; > break; > fi; > done; > if [[ ${config_required} == 0 ]]; then > if ! linux_config_exists; then > ewarn "Unable to check for the following kernel config options due"; > ewarn "to absence of any configured kernel sources or compiled"; > ewarn "config:"; > for config in ${CONFIG_CHECK}; > do > config=${config#\~}; > config=${config#\!}; > local_error="ERROR_${config}"; > msg="${!local_error}"; > if [[ -z ${msg} ]]; then > local_error="WARNING_${config}"; > msg="${!local_error}"; > fi; > ewarn " - ${config}${msg:+ - }${msg}"; > done; > ewarn "You're on your own to make sure they are set if needed."; > export LINUX_CONFIG_EXISTS_DONE="${old_LINUX_CONFIG_EXISTS_DONE}"; > return 0; > fi; > else > if ! linux_config_exists; then > qeerror "Could not find a neither a usable .config in the kernel source directory"; > qeerror "nor a /proc/config.gz file,"; > qeerror "Please ensure that ${KERNEL_DIR} points to a configured set of Linux sources."; > qeerror "If you are using KBUILD_OUTPUT, please set the environment var so that"; > qeerror "it points to the necessary object directory so that it might find .config"; > qeerror "or have a properly configured kernel to produce a config.gz file. (CONFIG_IKCONFIG)."; > die "Kernel not configured; no .config found in ${KV_OUT_DIR} or /proc/config.gz found"; > fi; > fi; > ebegin "Checking for suitable kernel configuration options"; > for config in ${CONFIG_CHECK}; > do > die=1; > error=0; > negate=0; > reworkmodulenames=0; > if [[ ${config:0:1} == "~" ]]; then > die=0; > config=${config:1}; > else > if [[ ${config:0:1} == "@" ]]; then > die=0; > reworkmodulenames=1; > config=${config:1}; > fi; > fi; > if [[ ${config:0:1} == "!" ]]; then > negate=1; > config=${config:1}; > fi; > if [[ ${negate} == 1 ]]; then > linux_chkconfig_present ${config} && error=2; > else > if [[ ${reworkmodulenames} == 1 ]]; then > local temp_config="${config//*:}" i n; > config="${config//:*}"; > if linux_chkconfig_present ${config}; then > for i in ${MODULE_NAMES}; > do > n="${i//${temp_config}}"; > [[ -z ${n//\(*} ]] && MODULE_IGNORE="${MODULE_IGNORE} ${temp_config}"; > done; > error=2; > fi; > else > linux_chkconfig_present ${config} || error=1; > fi; > fi; > if [[ ${error} -gt 0 ]]; then > local report_func="eerror" local_error; > local_error="ERROR_${config}"; > local_error="${!local_error}"; > if [[ -z "${local_error}" ]]; then > local_error="${config}_ERROR"; > local_error="${!local_error}"; > fi; > if [[ ${die} == 0 && -z "${local_error}" ]]; then > local_error="WARNING_${config}"; > local_error="${!local_error}"; > if [[ -n "${local_error}" ]]; then > report_func="ewarn"; > fi; > fi; > if [[ -z "${local_error}" ]]; then > [[ ${error} == 1 ]] && local_error="is not set when it should be." || local_error="should not be set. But it is."; > local_error="CONFIG_${config}:\t ${local_error}"; > fi; > if [[ ${die} == 0 ]]; then > ${report_func} " ${local_error}"; > soft_errors_count=$[soft_errors_count + 1]; > else > ${report_func} " ${local_error}"; > hard_errors_count=$[hard_errors_count + 1]; > fi; > fi; > done; > if [[ ${hard_errors_count} -gt 0 ]]; then > eend 1; > eerror "Please check to make sure these options are set correctly."; > eerror "Failure to do so may cause unexpected problems."; > eerror "Once you have satisfied these options, please try merging"; > eerror "this package again."; > export LINUX_CONFIG_EXISTS_DONE="${old_LINUX_CONFIG_EXISTS_DONE}"; > die "Incorrect kernel configuration options"; > else > if [[ ${soft_errors_count} -gt 0 ]]; then > eend 1; > ewarn "Please check to make sure these options are set correctly."; > ewarn "Failure to do so may cause unexpected problems."; > else > eend 0; > fi; > fi; > export LINUX_CONFIG_EXISTS_DONE="${old_LINUX_CONFIG_EXISTS_DONE}" >} >check_kernel_built () >{ > if ! use kernel_linux; then > die "${FUNCNAME}() called on non-Linux system, please fix the ebuild"; > fi; > [[ -n ${SKIP_KERNEL_CHECK} ]] && return; > require_configured_kernel; > local versionh_path; > if kernel_is -ge 3 7; then > versionh_path="include/generated/uapi/linux/version.h"; > else > versionh_path="include/linux/version.h"; > fi; > if [[ ! -f "${KV_OUT_DIR}/${versionh_path}" ]]; then > eerror "These sources have not yet been prepared."; > eerror "We cannot build against an unprepared tree."; > eerror "To resolve this, please type the following:"; > eerror; > eerror "# cd ${KV_DIR}"; > eerror "# make oldconfig"; > eerror "# make modules_prepare"; > eerror; > eerror "Then please try merging this module again."; > die "Kernel sources need compiling first"; > fi >} >check_modules_supported () >{ > if ! use kernel_linux; then > die "${FUNCNAME}() called on non-Linux system, please fix the ebuild"; > fi; > require_configured_kernel; > if ! linux_chkconfig_builtin "MODULES"; then > eerror "These sources do not support loading external modules."; > eerror "to be able to use this module please enable \"Loadable modules support\""; > eerror "in your kernel, recompile and then try merging this module again."; > die "No support for external modules in ${KV_FULL} config"; > fi >} >check_targets () >{ > local var=$1 mak=$2; > local detected sorted; > pushd "${S}"/configs/targets/ > /dev/null || die; > detected=$(echo $(printf '%s\n' *-${mak}.mak | sed "s:-${mak}.mak::" | LC_COLLATE=C sort -u)); > sorted=$(echo $(printf '%s\n' ${!var} | LC_COLLATE=C sort -u)); > if [[ ${sorted} != "${detected}" ]]; then > eerror "The ebuild needs to be kept in sync."; > eerror "${var}: ${sorted}"; > eerror "$(printf '%-*s' ${#var} configure): ${detected}"; > die "sync ${var} to the list of targets"; > fi; > popd > /dev/null >} >check_zlibinflate () >{ > if ! use kernel_linux; then > die "${FUNCNAME}() called on non-Linux system, please fix the ebuild"; > fi; > require_configured_kernel; > local INFLATE; > local DEFLATE; > einfo "Determining the usability of ZLIB_INFLATE support in your kernel"; > ebegin "checking ZLIB_INFLATE"; > linux_chkconfig_builtin CONFIG_ZLIB_INFLATE; > eend $? || die; > ebegin "checking ZLIB_DEFLATE"; > linux_chkconfig_builtin CONFIG_ZLIB_DEFLATE; > eend $? || die; > local LINENO_START; > local LINENO_END; > local SYMBOLS; > local x; > LINENO_END="$(grep -n 'CONFIG_ZLIB_INFLATE y' ${KV_DIR}/lib/Config.in | cut -d : -f 1)"; > LINENO_START="$(head -n $LINENO_END ${KV_DIR}/lib/Config.in | grep -n 'if \[' | tail -n 1 | cut -d : -f 1)"; > (( LINENO_AMOUNT = ${LINENO_END} - ${LINENO_START} )); > (( LINENO_END = ${LINENO_END} - 1 )); > SYMBOLS="$(head -n $LINENO_END ${KV_DIR}/lib/Config.in | tail -n $LINENO_AMOUNT | sed -e 's/^.*\(CONFIG_[^\" ]*\).*/\1/g;')"; > for x in ${SYMBOLS}; > do > if [[ "${!x}" = "y" ]]; then > einfo "${x} ensures zlib is linked into your kernel - excellent"; > return 0; > fi; > done; > eerror; > eerror "This kernel module requires ZLIB library support."; > eerror "You have enabled zlib support in your kernel, but haven't enabled"; > eerror "enabled any option that will ensure that zlib is linked into your"; > eerror "kernel."; > eerror; > eerror "Please ensure that you enable at least one of these options:"; > eerror; > for x in ${SYMBOLS}; > do > eerror " * $x"; > done; > eerror; > eerror "Please remember to recompile and install your kernel, and reboot"; > eerror "into your new kernel before attempting to load this kernel module."; > die "Kernel doesn't include zlib support" >} >clang-fullversion () >{ > _clang_fullversion '$1.$2.$3' "$@" >} >clang-major-version () >{ > _clang_fullversion '$1' "$@" >} >clang-micro-version () >{ > _clang_fullversion '$3' "$@" >} >clang-minor-version () >{ > _clang_fullversion '$2' "$@" >} >clang-version () >{ > _clang_fullversion '$1.$2' "$@" >} >conf_malloc () >{ > if [[ ! ${buildtype} == "user" ]]; then > usex "${1}" "--enable-malloc=${1}" ""; > fi >} >conf_notuser () >{ > if [[ ${buildtype} == "user" ]]; then > echo "--disable-${2:-$1}"; > else > use_enable "$@"; > fi >} >conf_softmmu () >{ > if [[ ${buildtype} == "softmmu" ]]; then > use_enable "$@"; > else > echo "--disable-${2:-$1}"; > fi >} >conf_tools () >{ > if [[ ${buildtype} == "tools" ]]; then > use_enable "$@"; > else > echo "--disable-${2:-$1}"; > fi >} >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 ) >} >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 -Werror::pytest.PytestUnhandledCoroutineWarning "--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} >} >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 ${?} >} >fcaps () >{ > debug-print-function ${FUNCNAME} "$@"; > if [[ ${EUID} -ne 0 ]]; then > einfo "Insufficient privileges to execute ${FUNCNAME}, skipping."; > return 0; > fi; > local owner='0'; > local group='0'; > local mode='4711'; > local caps_mode='711'; > while [[ $# -gt 0 ]]; do > case $1 in > -o) > owner=$2; > shift > ;; > -g) > group=$2; > shift > ;; > -m) > mode=$2; > shift > ;; > -M) > caps_mode=$2; > shift > ;; > *) > break > ;; > esac; > shift; > done; > [[ $# -lt 2 ]] && die "${FUNCNAME}: wrong arg count"; > local caps=$1; > [[ ${caps} == *[-=+]* ]] || caps+="=ep"; > shift; > local root; > case ${EBUILD_PHASE} in > compile | install | preinst) > root=${ED:-${D}} > ;; > postinst) > root=${EROOT:-${ROOT}} > ;; > esac; > root=${root%/}; > local file; > for file in "$@"; > do > [[ ${file} != /* ]] && file="${root}/${file}"; > if use filecaps; then > debug-print "${FUNCNAME}: setting caps '${caps}' on '${file}'"; > chmod ${caps_mode} "${file}" || die; > if ! out=$(LC_ALL=C setcap "${caps}" "${file}" 2>&1); then > case ${out} in > *"Not supported"* | *"Operation not supported"*) > local fstype=$(stat -f -c %T "${file}"); > ewarn "Could not set caps on '${file}' due to missing filesystem support:"; > ewarn "* enable XATTR support for '${fstype}' in your kernel (if configurable)"; > ewarn "* mount the fs with the user_xattr option (if not the default)"; > ewarn "* enable the relevant FS_SECURITY option (if configurable)" > ;; > *) > eerror "Setting caps '${caps}' on file '${file}' failed:"; > eerror "${out}"; > die "could not set caps" > ;; > esac; > else > setcap -v "${caps}" "${file}" > /dev/null || die "Checking caps '${caps}' on '${file}' failed"; > continue; > fi; > fi; > debug-print "${FUNCNAME}: setting owner/mode on '${file}'"; > chown "${owner}:${group}" "${file}" || die; > chmod ${mode} "${file}" || die; > done >} >fcaps_pkg_postinst () >{ > local arg args=(); > for arg in "${FILECAPS[@]}" "--"; > do > if [[ ${arg} == "--" ]]; then > fcaps "${args[@]}"; > args=(); > else > args+=("${arg}"); > fi; > done >} >firmware_abi_change () >{ > local pv; > for pv in ${REPLACING_VERSIONS}; > do > if ver_test ${pv} -lt ${FIRMWARE_ABI_VERSION}; then > return 0; > fi; > done; > return 1 >} >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 >} >generate_initd () >{ > local out="${T}/qemu-binfmt"; > local out_systemd="${T}/qemu.conf"; > local d="${T}/binfmt.d"; > einfo "Generating qemu binfmt scripts and configuration files"; > mkdir -p "${d}"; > "${S}"/scripts/qemu-binfmt-conf.sh --debian --exportdir "${d}" --qemu-path "${EPREFIX}/usr/bin" || die; > sed -E -i -e 's:^([^ ]+) (.*)$:\1="\2":' "${d}"/* || die; > local f qcpu package interpreter magic mask; > cat "${FILESDIR}"/qemu-binfmt.initd.head > "${out}" || die; > for f in "${d}"/qemu-*; > do > source "${f}"; > qcpu=${package#qemu-}; > case ${qcpu} in > arm*) > qcpu="arm" > ;; > mips*) > qcpu="mips" > ;; > ppc*) > qcpu="ppc" > ;; > s390*) > qcpu="s390" > ;; > sh*) > qcpu="sh" > ;; > sparc*) > qcpu="sparc" > ;; > esac; > cat <<EOF >> "${out}" > if [ "\${cpu}" != "${qcpu}" -a -x "${interpreter}" ] ; then > printf '%s\n' ':${package}:M::${magic}:${mask}:${interpreter}:'"\${QEMU_BINFMT_FLAGS}" >/proc/sys/fs/binfmt_misc/register > fi >EOF > > echo ":${package}:M::${magic}:${mask}:${interpreter}:OC" >> "${out_systemd}"; > done; > cat "${FILESDIR}"/qemu-binfmt.initd.tail >> "${out}" || die >} >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_makefile_extract_function () >{ > [[ -n ${SKIP_KERNEL_CHECK} ]] && return; > local a='' b='' mkfunc='getfilevar'; > a="$(getfilevar VERSION ${KERNEL_MAKEFILE})"; > b="$(getfilevar_noexec VERSION ${KERNEL_MAKEFILE})"; > [[ "${a}" != "${b}" ]] && mkfunc='getfilevar_noexec'; > echo "${mkfunc}" >} >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 >} >get_running_version () >{ > if ! use kernel_linux; then > die "${FUNCNAME}() called on non-Linux system, please fix the ebuild"; > fi; > local kv=$(uname -r); > if [[ -f ${ROOT%/}/lib/modules/${kv}/source/Makefile ]]; then > KERNEL_DIR=$(readlink -f "${ROOT%/}/lib/modules/${kv}/source"); > if [[ -f ${ROOT%/}/lib/modules/${kv}/build/Makefile ]]; then > KBUILD_OUTPUT=$(readlink -f "${ROOT%/}/lib/modules/${kv}/build"); > fi; > get_version && return 0; > fi; > KV_FULL=${kv}; > local kv_full=${KV_FULL//[-+_]*}; > KV_MAJOR=$(ver_cut 1 ${kv_full}); > KV_MINOR=$(ver_cut 2 ${kv_full}); > KV_PATCH=$(ver_cut 3 ${kv_full}); > KV_EXTRA="${KV_FULL#${KV_MAJOR}.${KV_MINOR}${KV_PATCH:+.${KV_PATCH}}}"; > : "${KV_PATCH:=0}"; > return 0 >} >get_udevdir () >{ > debug-print-function ${FUNCNAME} "${@}"; > echo "$(_udev_get_udevdir)" >} >get_version () >{ > if ! use kernel_linux; then > die "${FUNCNAME}() called on non-Linux system, please fix the ebuild"; > fi; > local tmplocal; > [[ -n ${SKIP_KERNEL_CHECK} ]] && return; > [[ -n "${KV_FULL}" ]] && return 0; > unset KV_DIR; > [[ -z "${get_version_warning_done}" ]] && qeinfo "Determining the location of the kernel source code"; > [[ -d "${KERNEL_DIR}" ]] && KV_DIR="${KERNEL_DIR}"; > if [[ -z "${KV_DIR}" ]]; then > if [[ -z "${get_version_warning_done}" ]]; then > get_version_warning_done=1; > qewarn "Unable to find kernel sources at ${KERNEL_DIR}"; > if [[ "${KERNEL_DIR}" == "/usr/src/linux" ]]; then > qeinfo "Please make sure that ${KERNEL_DIR} points at your running kernel, "; > qeinfo "(or the kernel you wish to build against)."; > qeinfo "Alternatively, set the KERNEL_DIR environment variable to the kernel sources location"; > else > qeinfo "Please ensure that the KERNEL_DIR environment variable points at full Linux sources of the kernel you wish to compile against."; > fi; > fi; > return 1; > fi; > if [[ -z "${KBUILD_OUTPUT}" && -L "${KERNEL_DIR}/source" ]]; then > KBUILD_OUTPUT=${KERNEL_DIR}; > KERNEL_DIR=$(readlink -f "${KERNEL_DIR}/source"); > KV_DIR=${KERNEL_DIR}; > fi; > if [[ -z "${get_version_warning_done}" ]]; then > qeinfo "Found kernel source directory:"; > qeinfo " ${KV_DIR}"; > fi; > kernel_get_makefile; > if [[ ! -s ${KERNEL_MAKEFILE} ]]; then > if [[ -z "${get_version_warning_done}" ]]; then > get_version_warning_done=1; > qeerror "Could not find a Makefile in the kernel source directory."; > qeerror "Please ensure that ${KERNEL_DIR} points to a complete set of Linux sources"; > fi; > return 1; > fi; > local OUTPUT_DIR=${KBUILD_OUTPUT}; > if [[ -z ${OUTPUT_DIR} ]]; then > local mkfunc=$(get_makefile_extract_function "${KERNEL_MAKEFILE}"); > OUTPUT_DIR=$(${mkfunc} KBUILD_OUTPUT "${KERNEL_MAKEFILE}"); > fi; > KV_MAJOR=$(getfilevar VERSION "${KERNEL_MAKEFILE}"); > KV_MINOR=$(getfilevar PATCHLEVEL "${KERNEL_MAKEFILE}"); > KV_PATCH=$(getfilevar SUBLEVEL "${KERNEL_MAKEFILE}"); > KV_EXTRA=$(getfilevar EXTRAVERSION "${KERNEL_MAKEFILE}"); > if [[ -z "${KV_MAJOR}" || -z "${KV_MINOR}" || -z "${KV_PATCH}" ]]; then > if [[ -z "${get_version_warning_done}" ]]; then > get_version_warning_done=1; > qeerror "Could not detect kernel version."; > qeerror "Please ensure that ${KERNEL_DIR} points to a complete set of Linux sources."; > fi; > return 1; > fi; > [[ -d "${OUTPUT_DIR}" ]] && KV_OUT_DIR="${OUTPUT_DIR}"; > if [[ -n "${KV_OUT_DIR}" ]]; then > qeinfo "Found kernel object directory:"; > qeinfo " ${KV_OUT_DIR}"; > fi; > KV_OUT_DIR="${KV_OUT_DIR:-${KV_DIR}}"; > if [[ -s "${KV_OUT_DIR}"/include/config/kernel.release ]]; then > KV_LOCAL=$(< "${KV_OUT_DIR}"/include/config/kernel.release); > else > if [[ -s "${KV_OUT_DIR}"/.kernelrelease ]]; then > KV_LOCAL=$(< "${KV_OUT_DIR}"/.kernelrelease); > else > KV_LOCAL=; > fi; > fi; > tmplocal=${KV_LOCAL#${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${KV_EXTRA}}; > if [[ "${KV_LOCAL}" = "${tmplocal}" ]]; then > KV_LOCAL=; > else > KV_LOCAL=${tmplocal}; > fi; > if [[ -z ${OUTPUT_DIR} ]]; then > for OUTPUT_DIR in "${SYSROOT}" "${ROOT%/}" ""; > do > OUTPUT_DIR+="/lib/modules/${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${KV_EXTRA}${KV_LOCAL}/build"; > if [[ -e ${OUTPUT_DIR} ]]; then > break; > fi; > done; > fi; > KV_FULL="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${KV_EXTRA}${KV_LOCAL}"; > qeinfo "Found sources for kernel version:"; > qeinfo " ${KV_FULL}"; > return 0 >} >getfilevar () >{ > local ERROR basefname basedname myARCH="${ARCH}"; > ERROR=0; > [[ -z "${1}" ]] && ERROR=1; > [[ ! -f "${2}" ]] && ERROR=1; > if [[ "${ERROR}" = 1 ]]; then > echo -e "\n"; > eerror "getfilevar requires 2 variables, with the second a valid file."; > eerror " getfilevar <VARIABLE> <CONFIGFILE>"; > else > basefname="$(basename ${2})"; > basedname="$(dirname ${2})"; > unset ARCH; > echo -e "e:\\n\\t@echo \$(${1})\\ninclude ${basefname}" | nonfatal emake -C "${basedname}" --no-print-directory M="${T}" dot-config=0 need-config= need-compiler= ${BUILD_FIXES} -s -f - 2> /dev/null; > ARCH=${myARCH}; > fi >} >getfilevar_noexec () >{ > local ERROR basefname basedname mycat myARCH="${ARCH}"; > ERROR=0; > mycat='cat'; > [[ -z "${1}" ]] && ERROR=1; > [[ ! -f "${2}" ]] && ERROR=1; > [[ "${2%.gz}" != "${2}" ]] && mycat='zcat'; > if [[ "${ERROR}" = 1 ]]; then > echo -e "\n"; > eerror "getfilevar_noexec requires 2 variables, with the second a valid file."; > eerror " getfilevar_noexec <VARIABLE> <CONFIGFILE>"; > else > ${mycat} "${2}" | sed -n -e "/^[[:space:]]*${1}[[:space:]]*:\\?=[[:space:]]*\(.*\)\$/{ > s,^[^=]*[[:space:]]*=[[:space:]]*,,g ; > s,[[:space:]]*\$,,g ; > p > }"; > fi >} >has_multilib_profile () >{ > [ -n "${MULTILIB_ABIS}" -a "${MULTILIB_ABIS}" != "${MULTILIB_ABIS/ /}" ] >} >host-is-pax () >{ > grep -qs ^PaX: /proc/self/status >} >in_iuse () >{ > local use=${1}; > if [[ -z "${use}" ]]; then > echo "!!! in_iuse() called without a parameter." 1>&2; > echo "!!! in_iuse <USEFLAG>" 1>&2; > die "in_iuse() called without a parameter"; > fi; > local liuse=(${IUSE_EFFECTIVE}); > has "${use}" "${liuse[@]#[+-]}" >} >is_final_abi () >{ > has_multilib_profile || return 0; > set -- $(get_install_abis); > local LAST_ABI=$#; > [[ ${!LAST_ABI} == ${ABI} ]] >} >kernel_get_makefile () >{ > [[ -s ${KV_DIR}/GNUMakefile ]] && KERNEL_MAKEFILE="${KV_DIR}/GNUMakefile" && return; > [[ -s ${KV_DIR}/makefile ]] && KERNEL_MAKEFILE="${KV_DIR}/makefile" && return; > [[ -s ${KV_DIR}/Makefile ]] && KERNEL_MAKEFILE="${KV_DIR}/Makefile" && return >} >kernel_is () >{ > if ! use kernel_linux; then > die "${FUNCNAME}() called on non-Linux system, please fix the ebuild"; > fi; > linux-info_get_any_version; > local operator; > case ${1#-} in > lt) > operator="-lt"; > shift > ;; > gt) > operator="-gt"; > shift > ;; > le) > operator="-le"; > shift > ;; > ge) > operator="-ge"; > shift > ;; > eq) > operator="-eq"; > shift > ;; > *) > operator="-eq" > ;; > esac; > [[ $# -gt 3 ]] && die "Error in ${ECLASS}_${FUNCNAME}(): too many parameters"; > ver_test "${KV_MAJOR:-0}.${KV_MINOR:-0}.${KV_PATCH:-0}" "${operator}" "${1:-${KV_MAJOR:-0}}.${2:-${KV_MINOR:-0}}.${3:-${KV_PATCH:-0}}" >} >linux-info_get_any_version () >{ > if ! use kernel_linux; then > die "${FUNCNAME}() called on non-Linux system, please fix the ebuild"; > fi; > if [[ ${MERGE_TYPE} == binary && -z ${LINUX_INFO_BINARY_RESET} ]]; then > unset KV_FULL _LINUX_CONFIG_EXISTS_DONE KV_OUT_DIR; > LINUX_INFO_BINARY_RESET=1; > fi; > if [[ ${MERGE_TYPE} != binary ]] && ! get_version; then > ewarn "Unable to calculate Linux Kernel version for build, attempting to use running version"; > fi; > if [[ -z ${KV_FULL} ]] && ! get_running_version; then > die "Unable to determine any Linux Kernel version, please report a bug"; > fi >} >linux-info_pkg_setup () >{ > use kernel_linux || return; > linux-info_get_any_version; > [[ -n "${CONFIG_CHECK}" && -z ${CHECKCONFIG_DONOTHING} ]] && check_extra_config >} >linux_chkconfig_builtin () >{ > [[ -n ${SKIP_KERNEL_CHECK} ]] && return; > linux_config_qa_check linux_chkconfig_builtin; > [[ $(getfilevar_noexec "CONFIG_$1" "$(linux_config_path)") == y ]] >} >linux_chkconfig_module () >{ > [[ -n ${SKIP_KERNEL_CHECK} ]] && return; > linux_config_qa_check linux_chkconfig_module; > [[ $(getfilevar_noexec "CONFIG_$1" "$(linux_config_path)") == m ]] >} >linux_chkconfig_present () >{ > [[ -n ${SKIP_KERNEL_CHECK} ]] && return; > linux_config_qa_check linux_chkconfig_present; > [[ $(getfilevar_noexec "CONFIG_$1" "$(linux_config_path)") == [my] ]] >} >linux_chkconfig_string () >{ > [[ -n ${SKIP_KERNEL_CHECK} ]] && return; > linux_config_qa_check linux_chkconfig_string; > getfilevar_noexec "CONFIG_$1" "$(linux_config_path)" >} >linux_config_bin_exists () >{ > export _LINUX_CONFIG_EXISTS_DONE=1; > use kernel_linux && [[ -s /proc/config.gz ]] >} >linux_config_exists () >{ > linux_config_src_exists || linux_config_bin_exists >} >linux_config_path () >{ > if linux_config_src_exists; then > echo "${KV_OUT_DIR}/.config"; > else > if linux_config_bin_exists; then > echo "/proc/config.gz"; > else > return 1; > fi; > fi >} >linux_config_qa_check () >{ > local f="$1"; > if [[ -z "${_LINUX_CONFIG_EXISTS_DONE}" ]]; then > ewarn "QA: You called $f before any linux_config_exists!"; > ewarn "QA: The return value of $f will NOT guaranteed later!"; > fi; > if ! use kernel_linux; then > die "$f called on non-Linux system, please fix the ebuild"; > fi >} >linux_config_src_exists () >{ > export _LINUX_CONFIG_EXISTS_DONE=1; > use kernel_linux && [[ -n ${KV_OUT_DIR} && -s ${KV_OUT_DIR}/.config ]] >} >list-paxables () >{ > file "$@" 2> /dev/null | grep -E 'ELF.*(executable|shared object)' | sed -e 's/: .*$//' >} >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}} >} >multibuild_copy_sources () >{ > debug-print-function ${FUNCNAME} "${@}"; > local _MULTIBUILD_INITIAL_BUILD_DIR=${BUILD_DIR:-${S}}; > einfo "Will copy sources from ${_MULTIBUILD_INITIAL_BUILD_DIR}"; > function _multibuild_create_source_copy () > { > einfo "${MULTIBUILD_VARIANT}: copying to ${BUILD_DIR}"; > cp -p -R "${_MULTIBUILD_INITIAL_BUILD_DIR}" "${BUILD_DIR}" || die > }; > multibuild_foreach_variant _multibuild_create_source_copy >} >multibuild_for_best_variant () >{ > debug-print-function ${FUNCNAME} "${@}"; > [[ -n ${MULTIBUILD_VARIANTS} ]] || die "MULTIBUILD_VARIANTS need to be set"; > local MULTIBUILD_VARIANTS=("${MULTIBUILD_VARIANTS[-1]}"); > multibuild_foreach_variant "${@}" >} >multibuild_foreach_variant () >{ > debug-print-function ${FUNCNAME} "${@}"; > [[ -n ${MULTIBUILD_VARIANTS} ]] || die "MULTIBUILD_VARIANTS need to be set"; > local bdir=${BUILD_DIR:-${S}}; > [[ ${bdir%%/} == ${WORKDIR%%/} ]] && bdir=${WORKDIR}/build; > local prev_id=${MULTIBUILD_ID:+${MULTIBUILD_ID}-}; > local ret=0 lret=0 v; > debug-print "${FUNCNAME}: initial build_dir = ${bdir}"; > for v in "${MULTIBUILD_VARIANTS[@]}"; > do > local MULTIBUILD_VARIANT=${v}; > local MULTIBUILD_ID=${prev_id}${v}; > local BUILD_DIR=${bdir%%/}-${v}; > function _multibuild_run () > { > local i=1; > while [[ ${!i} == _* ]]; do > (( i += 1 )); > done; > [[ ${i} -le ${#} ]] && einfo "${v}: running ${@:${i}}"; > "${@}" > }; > _multibuild_run "${@}" > >(exec tee -a "${T}/build-${MULTIBUILD_ID}.log") 2>&1; > lret=${?}; > [[ ${ret} -eq 0 && ${lret} -ne 0 ]] && ret=${lret}; > done; > return ${ret} >} >multibuild_merge_root () >{ > debug-print-function ${FUNCNAME} "${@}"; > local src=${1}; > local dest=${2}; > cp -a "${src}"/. "${dest}"/ || die "${MULTIBUILD_VARIANT:-(unknown)}: merging image failed"; > rm -rf "${src}" || die >} >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 >} >number_abis () >{ > set -- `get_install_abis`; > echo $# >} >pax-mark () >{ > local f; > local flags; > local ret=0; > flags="${1//[!zPpEeMmRrSs]}"; > [[ -n "${flags}" ]] || return 0; > shift; > local dodefault=""; > [[ -n "${flags//[!z]}" ]] && dodefault="yes"; > if has PT ${PAX_MARKINGS}; then > for f in "$@"; > do > if type -p paxctl > /dev/null; then > einfo "PT_PAX marking -${flags} ${f} with paxctl"; > paxctl -q${flags} "${f}" > /dev/null 2>&1 && continue; > fi; > if type -p paxctl-ng > /dev/null && paxctl-ng -L; then > einfo "PT_PAX marking -${flags} ${f} with paxctl-ng"; > flags="${flags//z}"; > [[ ${dodefault} == "yes" ]] && paxctl-ng -L -z "${f}" > /dev/null 2>&1; > [[ -n "${flags}" ]] || continue; > paxctl-ng -L -${flags} "${f}" > /dev/null 2>&1 && continue; > fi; > if type -p scanelf > /dev/null && [[ ${PAX_MARKINGS} != "none" ]]; then > einfo "PT_PAX marking -${flags} ${f} with scanelf"; > scanelf -Xxz ${flags} "$f" > /dev/null 2>&1; > else > if [[ ${PAX_MARKINGS} != "none" ]]; then > elog "Failed to set PT_PAX markings -${flags} ${f}."; > ret=1; > fi; > fi; > done; > fi; > if has XT ${PAX_MARKINGS}; then > flags="${flags//z}"; > for f in "$@"; > do > if type -p paxctl-ng > /dev/null && paxctl-ng -l; then > einfo "XATTR_PAX marking -${flags} ${f} with paxctl-ng"; > [[ ${dodefault} == "yes" ]] && paxctl-ng -d "${f}" > /dev/null 2>&1; > [[ -n "${flags}" ]] || continue; > paxctl-ng -l -${flags} "${f}" > /dev/null 2>&1 && continue; > fi; > if type -p setfattr > /dev/null; then > [[ -n "${flags//[!Ee]}" ]] || flags+="e"; > einfo "XATTR_PAX marking -${flags} ${f} with setfattr"; > [[ ${dodefault} == "yes" ]] && setfattr -x "user.pax.flags" "${f}" > /dev/null 2>&1; > setfattr -n "user.pax.flags" -v "${flags}" "${f}" > /dev/null 2>&1 && continue; > fi; > if [[ ${PAX_MARKINGS} != "none" ]]; then > elog "Failed to set XATTR_PAX markings -${flags} ${f}."; > ret=1; > fi; > done; > fi; > return ${ret} >} >pkg_info () >{ > echo "Using:"; > echo " $(best_version app-emulation/spice-protocol)"; > if has_version 'sys-firmware/edk2-ovmf-bin'; then > echo " $(best_version sys-firmware/edk2-ovmf-bin)"; > else > echo " $(best_version sys-firmware/edk2-ovmf)"; > fi; > if has_version 'sys-firmware/seabios-bin'; then > echo " $(best_version sys-firmware/seabios-bin)"; > else > echo " $(best_version sys-firmware/seabios)"; > fi; > echo " $(best_version sys-firmware/ipxe)"; > echo " $(best_version sys-firmware/sgabios)" >} >pkg_nofetch () >{ > default >} >pkg_postinst () >{ > if [[ -n ${softmmu_targets} ]] && use kernel_linux; then > udev_reload; > fi; > xdg_icon_cache_update; > [[ -z ${EPREFIX} ]] && [[ -f ${EROOT}/usr/libexec/qemu-bridge-helper ]] && fcaps cap_net_admin "${EROOT}"/usr/libexec/qemu-bridge-helper; > DISABLE_AUTOFORMATTING=true; > readme.gentoo_print_elog; > if use pin-upstream-blobs && firmware_abi_change; then > ewarn "This version of qemu pins new versions of firmware blobs:"; > if has_version 'sys-firmware/edk2-ovmf-bin'; then > ewarn " $(best_version sys-firmware/edk2-ovmf-bin)"; > else > ewarn " $(best_version sys-firmware/edk2-ovmf)"; > fi; > if has_version 'sys-firmware/seabios-bin'; then > ewarn " $(best_version sys-firmware/seabios-bin)"; > else > ewarn " $(best_version sys-firmware/seabios)"; > fi; > ewarn " $(best_version sys-firmware/ipxe)"; > ewarn " $(best_version sys-firmware/sgabios)"; > ewarn "This might break resume of hibernated guests (started with a different"; > ewarn "firmware version) and live migration to/from qemu versions with different"; > ewarn "firmware. Please (cold) restart all running guests. For functional"; > ewarn "guest migration ensure that all"; > ewarn "hosts run at least"; > ewarn " app-emulation/qemu-${FIRMWARE_ABI_VERSION}."; > fi >} >pkg_postrm () >{ > xdg_icon_cache_update; > udev_reload >} >pkg_pretend () >{ > if use kernel_linux && kernel_is lt 2 6 25; then > eerror "This version of KVM requires a host kernel of 2.6.25 or higher."; > else > if use kernel_linux; then > if ! linux_config_exists; then > eerror "Unable to check your kernel for KVM support"; > else > CONFIG_CHECK="~KVM ~TUN ~BRIDGE"; > ERROR_KVM="You must enable KVM in your kernel to continue"; > ERROR_KVM_AMD="If you have an AMD CPU, you must enable KVM_AMD in"; > ERROR_KVM_AMD+=" your kernel configuration."; > ERROR_KVM_INTEL="If you have an Intel CPU, you must enable"; > ERROR_KVM_INTEL+=" KVM_INTEL in your kernel configuration."; > ERROR_TUN="You will need the Universal TUN/TAP driver compiled"; > ERROR_TUN+=" into your kernel or loaded as a module to use the"; > ERROR_TUN+=" virtual network device if using -net tap."; > ERROR_BRIDGE="You will also need support for 802.1d"; > ERROR_BRIDGE+=" Ethernet Bridging for some network configurations."; > use vhost-net && CONFIG_CHECK+=" ~VHOST_NET"; > ERROR_VHOST_NET="You must enable VHOST_NET to have vhost-net"; > ERROR_VHOST_NET+=" support"; > if use amd64 || use x86 || use amd64-linux || use x86-linux; then > if grep -q AuthenticAMD /proc/cpuinfo; then > CONFIG_CHECK+=" ~KVM_AMD"; > else > if grep -q GenuineIntel /proc/cpuinfo; then > CONFIG_CHECK+=" ~KVM_INTEL"; > fi; > fi; > fi; > use python && CONFIG_CHECK+=" ~DEBUG_FS"; > ERROR_DEBUG_FS="debugFS support required for kvm_stat"; > check_extra_config; > fi; > fi; > fi; > if grep -qs '/usr/bin/qemu-kvm' "${EROOT}"/etc/libvirt/qemu/*.xml; then > eerror "The kvm/qemu-kvm wrappers no longer exist, but your libvirt"; > eerror "instances are still pointing to it. Please update your"; > eerror "configs in /etc/libvirt/qemu/ to use the -enable-kvm flag"; > eerror "and the right system binary (e.g. qemu-system-x86_64)."; > die "update your virt configs to not use qemu-kvm"; > fi >} >pkg_setup () >{ > linux-info_pkg_setup "$@" >} >post_src_install () >{ > ( 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 >} >python_copy_sources () >{ > debug-print-function ${FUNCNAME} "${@}"; > local MULTIBUILD_VARIANTS; > _python_obtain_impls; > multibuild_copy_sources >} >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#${ESYSROOT}}; > ( 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_foreach_impl () >{ > debug-print-function ${FUNCNAME} "${@}"; > if [[ -n ${_DISTUTILS_R1_ECLASS} ]]; then > if has "${EBUILD_PHASE}" prepare configure compile test install && [[ ! -n ${_DISTUTILS_CALLING_FOREACH_IMPL} && ! -n ${_DISTUTILS_FOREACH_IMPL_WARNED} ]]; then > eqawarn "python_foreach_impl has been called directly while using distutils-r1."; > eqawarn "Please redefine python_*() phase functions to meet your expectations"; > eqawarn "instead."; > _DISTUTILS_FOREACH_IMPL_WARNED=1; > if ! has "${EAPI}" 7 8; then > die "Calling python_foreach_impl from distutils-r1 is banned in EAPI ${EAPI}"; > fi; > fi; > local _DISTUTILS_CALLING_FOREACH_IMPL=; > fi; > local MULTIBUILD_VARIANTS; > _python_obtain_impls; > multibuild_foreach_variant _python_multibuild_wrapper "${@}" >} >python_gen_any_dep () >{ > debug-print-function ${FUNCNAME} "${@}"; > local depstr=${1}; > shift; > local i PYTHON_PKG_DEP out=; > _python_verify_patterns "${@}"; > for i in "${_PYTHON_SUPPORTED_IMPLS[@]}"; > do > if _python_impl_matches "${i}" "${@}"; then > local PYTHON_USEDEP="python_targets_${i}(-)"; > 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}"; > fi; > done; > echo "|| ( ${out})" >} >python_gen_cond_dep () >{ > debug-print-function ${FUNCNAME} "${@}"; > local impl matches=(); > local dep=${1}; > shift; > _python_verify_patterns "${@}"; > for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}"; > do > if _python_impl_matches "${impl}" "${@}"; then > if [[ ${dep} == *'${PYTHON_USEDEP}'* ]]; then > local usedep=$(_python_gen_usedep "${@}"); > dep=${dep//\$\{PYTHON_USEDEP\}/${usedep}}; > fi; > matches+=("python_targets_${impl}? ( ${dep} )"); > fi; > done; > echo "${matches[@]}" >} >python_gen_impl_dep () >{ > debug-print-function ${FUNCNAME} "${@}"; > local impl matches=(); > local PYTHON_REQ_USE=${1}; > shift; > _python_verify_patterns "${@}"; > for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}"; > do > if _python_impl_matches "${impl}" "${@}"; then > local PYTHON_PKG_DEP; > _python_export "${impl}" PYTHON_PKG_DEP; > matches+=("python_targets_${impl}? ( ${PYTHON_PKG_DEP} )"); > fi; > done; > echo "${matches[@]}" >} >python_gen_useflags () >{ > debug-print-function ${FUNCNAME} "${@}"; > local impl matches=(); > _python_verify_patterns "${@}"; > for impl in "${_PYTHON_SUPPORTED_IMPLS[@]}"; > do > if _python_impl_matches "${impl}" "${@}"; then > matches+=("python_targets_${impl}"); > fi; > done; > echo "${matches[@]}" >} >python_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_replicate_script () >{ > debug-print-function ${FUNCNAME} "${@}"; > function _python_replicate_script () > { > local _PYTHON_FIX_SHEBANG_QUIET=1; > local PYTHON_SCRIPTDIR; > _python_export PYTHON_SCRIPTDIR; > ( exeopts -m 0755; > exeinto "${PYTHON_SCRIPTDIR#${EPREFIX}}"; > doexe "${files[@]}" ); > python_fix_shebang -q "${files[@]/*\//${D%/}/${PYTHON_SCRIPTDIR}/}" > }; > local files=("${@}"); > python_foreach_impl _python_replicate_script; > unset -f _python_replicate_script; > local f; > for f in "$@"; > do > local dosym=dosym; > [[ ${EAPI} == 7 ]] && dosym=dosym8; > "${dosym}" -r /usr/lib/python-exec/python-exec2 "${f#${ED}}"; > done >} >python_scriptinto () >{ > debug-print-function ${FUNCNAME} "${@}"; > _PYTHON_SCRIPTROOT=${1} >} >python_setup () >{ > debug-print-function ${FUNCNAME} "${@}"; > local has_check_deps; > declare -f python_check_deps > /dev/null && has_check_deps=1; > if [[ ! -n ${has_check_deps} ]]; then > _python_validate_useflags; > fi; > local pycompat=("${PYTHON_COMPAT[@]}"); > if [[ -n ${PYTHON_COMPAT_OVERRIDE} ]]; then > pycompat=(${PYTHON_COMPAT_OVERRIDE}); > fi; > local found i; > _python_verify_patterns "${@}"; > for ((i = ${#_PYTHON_SUPPORTED_IMPLS[@]} - 1; i >= 0; i-- )) > do > local impl=${_PYTHON_SUPPORTED_IMPLS[i]}; > has "${impl}" "${pycompat[@]}" || continue; > if [[ ! -n ${PYTHON_COMPAT_OVERRIDE} && ! -n ${has_check_deps} ]]; then > use "python_targets_${impl}" || continue; > fi; > _python_impl_matches "${impl}" "${@}" || continue; > _python_export "${impl}" EPYTHON PYTHON; > if [[ -n ${has_check_deps} ]]; then > _python_run_check_deps "${impl}" || continue; > fi; > found=1; > break; > done; > if [[ ! -n ${found} ]]; then > eerror "${FUNCNAME}: none of the enabled implementation matched the patterns."; > eerror " patterns: ${@-'(*)'}"; > eerror "Likely a REQUIRED_USE constraint (possibly USE-conditional) is missing."; > eerror " suggested: || ( \$(python_gen_useflags ${@}) )"; > eerror "(remember to quote all the patterns with '')"; > die "${FUNCNAME}: no enabled implementation satisfy requirements"; > fi; > _python_wrapper_setup; > einfo "Using ${EPYTHON} in global scope" >} >qeerror () >{ > qout eerror "${@}" >} >qeinfo () >{ > qout einfo "${@}" >} >qemu_python_install () >{ > python_domodule "${S}/python/qemu"; > python_doscript "${S}/scripts/kvm/vmxcap"; > python_doscript "${S}/scripts/qmp/qmp-shell"; > python_doscript "${S}/scripts/qmp/qemu-ga-client" >} >qemu_src_configure () >{ > debug-print-function ${FUNCNAME} "$@"; > local buildtype=$1; > local builddir="${S}/${buildtype}-build"; > mkdir "${builddir}" || die; > local conf_opts=(--prefix=/usr --sysconfdir=/etc --bindir=/usr/bin --libdir=/usr/$(get_libdir) --datadir=/usr/share --docdir=/usr/share/doc/${PF}/html --mandir=/usr/share/man --localstatedir=/var --disable-bsd-user --disable-containers --disable-guest-agent --disable-strip --disable-download --disable-tcg-interpreter --disable-werror --disable-gcrypt --cc="$(tc-getCC)" --cxx="$(tc-getCXX)" --objcc="$(tc-getCC)" --host-cc="$(tc-getBUILD_CC)" $(use_enable alsa) $(use_enable debug debug-info) $(use_enable debug debug-tcg) $(use_enable jack) $(use_enable nls gettext) $(use_enable oss) $(use_enable pipewire) $(use_enable plugins) $(use_enable pulseaudio pa) $(use_enable selinux) $(use_enable xattr attr)); > function conf_notuser () > { > if [[ ${buildtype} == "user" ]]; then > echo "--disable-${2:-$1}"; > else > use_enable "$@"; > fi > }; > function conf_softmmu () > { > if [[ ${buildtype} == "softmmu" ]]; then > use_enable "$@"; > else > echo "--disable-${2:-$1}"; > fi > }; > function conf_tools () > { > if [[ ${buildtype} == "tools" ]]; then > use_enable "$@"; > else > echo "--disable-${2:-$1}"; > fi > }; > function conf_malloc () > { > if [[ ! ${buildtype} == "user" ]]; then > usex "${1}" "--enable-malloc=${1}" ""; > fi > }; > conf_opts+=($(conf_notuser accessibility brlapi) $(conf_notuser aio linux-aio) $(conf_softmmu bpf) $(conf_notuser bzip2) $(conf_notuser capstone) $(conf_notuser curl) $(conf_tools doc docs) $(conf_notuser fdt) $(conf_notuser fuse) $(conf_notuser glusterfs) $(conf_notuser gnutls) $(conf_notuser gnutls nettle) $(conf_notuser gtk) $(conf_notuser infiniband rdma) $(conf_notuser iscsi libiscsi) $(conf_notuser io-uring linux-io-uring) $(conf_malloc jemalloc) $(conf_notuser jpeg vnc-jpeg) $(conf_notuser kernel_linux kvm) $(conf_notuser keyutils libkeyutils) $(conf_notuser lzo) $(conf_notuser multipath mpath) $(conf_notuser ncurses curses) $(conf_notuser nfs libnfs) $(conf_notuser numa) $(conf_notuser opengl) $(conf_notuser pam auth-pam) $(conf_notuser png) $(conf_notuser rbd) $(conf_notuser sasl vnc-sasl) $(conf_notuser sdl) $(conf_softmmu sdl-image) $(conf_notuser seccomp) $(conf_notuser slirp) $(conf_notuser smartcard) $(conf_notuser snappy) $(conf_notuser spice) $(conf_notuser ssh libssh) $(conf_notuser udev libudev) $(conf_notuser usb libusb) $(conf_notuser usbredir usb-redir) $(conf_notuser vde) $(conf_notuser vhost-net) $(conf_notuser virgl virglrenderer) $(conf_softmmu virtfs) $(conf_notuser vnc) $(conf_notuser vte) $(conf_notuser xen) $(conf_notuser xen xen-pci-passthrough) --disable-xkbcommon $(conf_notuser zstd)); > if [[ ! ${buildtype} == "user" ]]; then > local audio_opts=($(usex pulseaudio pa "") $(usev pipewire) $(usev jack) $(usev sdl) $(usev alsa) $(usev oss)); > conf_opts+=(--audio-drv-list=$(IFS=,; echo "${audio_opts[*]}")); > fi; > case ${buildtype} in > user) > conf_opts+=(--enable-linux-user --disable-system --disable-tools --disable-cap-ng --disable-seccomp); > local static_flag="static-user" > ;; > softmmu) > conf_opts+=(--disable-linux-user --enable-system --disable-tools --enable-cap-ng --enable-seccomp); > local static_flag="none" > ;; > tools) > conf_opts+=(--disable-linux-user --disable-system --enable-tools --enable-cap-ng); > local static_flag="none" > ;; > esac; > local targets="${buildtype}_targets"; > [[ -n ${targets} ]] && conf_opts+=(--target-list="${!targets}"); > use systemtap && conf_opts+=(--enable-trace-backends="dtrace"); > if [[ ${static_flag} != "none" ]] && use ${static_flag}; then > conf_opts+=(--static --disable-pie); > else > tc-enables-pie && conf_opts+=(--enable-pie); > fi; > tc-is-cross-compiler && conf_opts+=(--cross-prefix="${CHOST}-"); > conf_opts+=(${EXTRA_CONF_QEMU}); > echo "../configure ${conf_opts[*]}"; > cd "${builddir}"; > ../configure "${conf_opts[@]}" || die "configure failed" >} >qewarn () >{ > qout ewarn "${@}" >} >qout () >{ > local outputmsg type; > type=${1}; > shift; > outputmsg="${@}"; > case "${EBUILD_PHASE}" in > depend) > unset outputmsg > ;; > clean) > unset outputmsg > ;; > preinst) > unset outputmsg > ;; > esac; > [[ -n "${outputmsg}" ]] && ${type} "${outputmsg}" >} >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 >} >require_configured_kernel () >{ > [[ -n ${SKIP_KERNEL_CHECK} ]] && return; > if ! use kernel_linux; then > die "${FUNCNAME}() called on non-Linux system, please fix the ebuild"; > fi; > if ! linux_config_src_exists; then > qeerror "Could not find a usable .config in the kernel source directory."; > qeerror "Please ensure that ${KERNEL_DIR} points to a configured set of Linux sources."; > qeerror "If you are using KBUILD_OUTPUT, please set the environment var so that"; > qeerror "it points to the necessary object directory so that it might find .config."; > die "Kernel not configured; no .config found in ${KV_OUT_DIR}"; > fi; > get_version || die "Unable to determine configured kernel version" >} >run_in_build_dir () >{ > debug-print-function ${FUNCNAME} "${@}"; > local ret; > [[ ${#} -eq 0 ]] && die "${FUNCNAME}: no command specified."; > [[ -z ${BUILD_DIR} ]] && die "${FUNCNAME}: BUILD_DIR not set."; > mkdir -p "${BUILD_DIR}" || die; > pushd "${BUILD_DIR}" > /dev/null || die; > "${@}"; > ret=${?}; > popd > /dev/null || die; > return ${ret} >} >set_arch_to_kernel () >{ > export ARCH=$(tc-arch-kernel) >} >set_arch_to_pkgmgr () >{ > export ARCH=$(tc-arch) >} >source_profile () >{ > set +u; > source /etc/profile; > set -u >} >declare -fx source_profile >src_compile () >{ > if [[ -n ${user_targets} ]]; then > cd "${S}/user-build" || die; > default; > fi; > if [[ -n ${softmmu_targets} ]]; then > cd "${S}/softmmu-build" || die; > default; > fi; > cd "${S}/tools-build" || die; > default >} >src_configure () >{ > local target; > python_setup; > softmmu_targets= softmmu_bins=(); > user_targets= user_bins=(); > for target in ${IUSE_SOFTMMU_TARGETS}; > do > if use "qemu_softmmu_targets_${target}"; then > softmmu_targets+=",${target}-softmmu"; > softmmu_bins+=("qemu-system-${target}"); > fi; > done; > for target in ${IUSE_USER_TARGETS}; > do > if use "qemu_user_targets_${target}"; then > user_targets+=",${target}-linux-user"; > user_bins+=("qemu-${target}"); > fi; > done; > softmmu_targets=${softmmu_targets#,}; > user_targets=${user_targets#,}; > [[ -n ${softmmu_targets} ]] && qemu_src_configure "softmmu"; > [[ -n ${user_targets} ]] && qemu_src_configure "user"; > qemu_src_configure "tools" >} >src_install () >{ > if [[ -n ${user_targets} ]]; then > cd "${S}/user-build"; > emake DESTDIR="${ED}" install; > generate_initd; > doinitd "${T}/qemu-binfmt"; > insinto "/usr/share/qemu/binfmt.d"; > doins "${T}/qemu.conf"; > fi; > if [[ -n ${softmmu_targets} ]]; then > cd "${S}/softmmu-build"; > emake DESTDIR="${ED}" install; > [[ -e check-report.html ]] && dodoc check-report.html; > if use kernel_linux; then > udev_newrules "${FILESDIR}"/65-kvm.rules-r2 65-kvm.rules; > fi; > if use python; then > python_foreach_impl qemu_python_install; > fi; > fi; > cd "${S}/tools-build" || die; > emake DESTDIR="${ED}" install; > if ! use doc && [[ ${QEMU_DOCS_PREBUILT} == 1 ]]; then > doman "${WORKDIR}"/${PN}-${QEMU_DOCS_VERSION}-docs/docs/*.[0-8]; > fi; > pushd "${ED}"/usr/bin > /dev/null || die; > pax-mark mr "${softmmu_bins[@]}" "${user_bins[@]}"; > popd > /dev/null || die; > insinto "/etc/qemu"; > doins "${FILESDIR}/bridge.conf"; > cd "${S}" || die; > dodoc MAINTAINERS; > newdoc pc-bios/README README.pc-bios; > dostrip -x ${QA_PREBUILT}; > if [[ -n ${softmmu_targets} ]]; then > if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then > dosym ../seabios/bios-256k.bin /usr/share/qemu/bios-256k.bin; > fi; > rm "${ED}/usr/share/qemu/vgabios.bin"; > rm "${ED}/usr/share/qemu/vgabios-cirrus.bin"; > rm "${ED}/usr/share/qemu/vgabios-qxl.bin"; > rm "${ED}/usr/share/qemu/vgabios-stdvga.bin"; > rm "${ED}/usr/share/qemu/vgabios-virtio.bin"; > rm "${ED}/usr/share/qemu/vgabios-vmware.bin"; > if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386 || use qemu_softmmu_targets_ppc || use qemu_softmmu_targets_ppc64; then > dosym ../seavgabios/vgabios-isavga.bin /usr/share/qemu/vgabios.bin; > dosym ../seavgabios/vgabios-cirrus.bin /usr/share/qemu/vgabios-cirrus.bin; > dosym ../seavgabios/vgabios-qxl.bin /usr/share/qemu/vgabios-qxl.bin; > dosym ../seavgabios/vgabios-stdvga.bin /usr/share/qemu/vgabios-stdvga.bin; > dosym ../seavgabios/vgabios-virtio.bin /usr/share/qemu/vgabios-virtio.bin; > dosym ../seavgabios/vgabios-vmware.bin /usr/share/qemu/vgabios-vmware.bin; > fi; > if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then > dosym ../sgabios/sgabios.bin /usr/share/qemu/sgabios.bin; > fi; > if use qemu_softmmu_targets_x86_64 || use qemu_softmmu_targets_i386; then > dosym ../ipxe/8086100e.rom /usr/share/qemu/pxe-e1000.rom; > dosym ../ipxe/80861209.rom /usr/share/qemu/pxe-eepro100.rom; > dosym ../ipxe/10500940.rom /usr/share/qemu/pxe-ne2k_pci.rom; > dosym ../ipxe/10222000.rom /usr/share/qemu/pxe-pcnet.rom; > dosym ../ipxe/10ec8139.rom /usr/share/qemu/pxe-rtl8139.rom; > dosym ../ipxe/1af41000.rom /usr/share/qemu/pxe-virtio.rom; > fi; > fi; > DISABLE_AUTOFORMATTING=true; > readme.gentoo_create_doc >} >src_prepare () >{ > check_targets IUSE_SOFTMMU_TARGETS softmmu; > check_targets IUSE_USER_TARGETS linux-user; > default; > tc-export AR AS LD NM OBJCOPY PKG_CONFIG RANLIB STRINGS; > export WINDRES=${CHOST}-windres; > MAKEOPTS+=" V=1"; > rm -r roms/*/ || die >} >src_test () >{ > if [[ -n ${softmmu_targets} ]]; then > cd "${S}/softmmu-build" || die; > pax-mark m */qemu-system-*; > emake check; > fi >} >src_unpack () >{ > if [[ ${PV} == 9999 ]]; then > git-r3_src_unpack; > for file in ${A}; > do > unpack "${file}"; > done; > cd "${WORKDIR}" || die; > for proj in "${!SUBPROJECTS[@]}"; > do > mv "${proj}-${SUBPROJECTS[${proj}]}" "${S}/subprojects/${proj}" || die; > done; > cd "${S}" || die; > meson subprojects packagefiles --apply || die; > else > default; > fi >} >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 >} >udev_dorules () >{ > debug-print-function ${FUNCNAME} "${@}"; > ( insopts -m 0644; > insinto "$(_udev_get_udevdir)"/rules.d; > doins "${@}" ) >} >udev_get_udevdir () >{ > debug-print-function ${FUNCNAME} "${@}"; > eerror "This ebuild should be using the get_udevdir() function instead of the deprecated udev_get_udevdir()"; > die "Deprecated function call: udev_get_udevdir(), please report to (overlay) maintainers." >} >udev_newrules () >{ > debug-print-function ${FUNCNAME} "${@}"; > ( insopts -m 0644; > insinto "$(_udev_get_udevdir)"/rules.d; > newins "${@}" ) >} >udev_reload () >{ > if [[ -n ${ROOT%/} ]]; then > return 0; > fi; > if [[ -d ${ROOT}/run/udev ]]; then > ebegin "Running udev control --reload for reloading rules and databases"; > udevadm control --reload; > eend $?; > fi >} >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 $? >}
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 928654
:
889538
|
889539
|
889540
| 889541 |
889542
|
889543
|
889544
|
889545