#!/bin/bash set -xe DOCKER_DEPS=( app-emulation/qemu dev-lang/python:3.12 dev-libs/openssl dev-tcltk/expect dev-build/cmake net-misc/openssh sys-devel/bc sys-kernel/dracut sys-kernel/installkernel virtual/libelf app-crypt/sbsigntools app-alternatives/awk app-alternatives/gzip app-alternatives/sh app-arch/bzip2 app-arch/gzip app-arch/lz4 app-arch/xz-utils app-arch/zstd app-crypt/argon2 app-crypt/gnupg app-crypt/p11-kit app-crypt/tpm2-tools app-crypt/tpm2-tss app-misc/ddcutil app-misc/jq app-shells/bash dev-db/sqlite dev-libs/cyrus-sasl dev-libs/expat dev-libs/glib dev-libs/hidapi dev-libs/icu dev-libs/json-c dev-libs/libaio dev-libs/libassuan dev-libs/libevent dev-libs/libffi dev-libs/libgcrypt dev-libs/libgpg-error dev-libs/libp11 dev-libs/libpcre2 dev-libs/libtasn1 dev-libs/libunistring dev-libs/libusb dev-libs/lzo dev-libs/npth dev-libs/nss dev-libs/oniguruma dev-libs/opensc dev-libs/userspace-rcu media-libs/libmtp media-libs/libv4l net-dns/c-ares net-dns/libidn2 net-fs/cifs-utils net-fs/nfs-utils net-fs/samba net-libs/libmnl net-libs/libndp net-libs/libtirpc net-libs/nghttp2 net-misc/curl net-misc/dhcp net-misc/networkmanager net-nds/openldap net-wireless/bluez net-wireless/iwd sys-apps/acl sys-apps/attr sys-apps/baselayout sys-apps/coreutils sys-apps/dbus sys-apps/fwupd sys-apps/gawk sys-apps/hwdata sys-apps/iproute2 sys-apps/kbd sys-apps/keyutils sys-apps/kmod sys-apps/less sys-apps/nvme-cli sys-apps/pcsc-lite sys-apps/rng-tools sys-apps/sed sys-apps/shadow sys-apps/systemd sys-apps/util-linux sys-auth/polkit sys-block/nbd sys-devel/gcc sys-fs/btrfs-progs sys-fs/cryptsetup sys-fs/dmraid sys-fs/dosfstools sys-fs/e2fsprogs sys-fs/lvm2 sys-fs/mdadm sys-fs/multipath-tools sys-fs/xfsprogs sys-kernel/linux-firmware sys-libs/glibc sys-libs/libapparmor sys-libs/libcap sys-libs/libcap-ng sys-libs/libnvme sys-libs/libseccomp sys-libs/libxcrypt sys-libs/ncurses sys-libs/pam sys-libs/readline sys-libs/zlib sys-process/procps ) temp=$(mktemp -d) cd "${temp}" cp -Lrv /home/sam/portage-bug/binpkg-cache . cat <<-EOF > "${temp}"/package.accept_keywords dev-lang/python dev-lang/python-exec sys-firmware/intel-microcode sys-kernel/dracut sys-kernel/gentoo-kernel sys-kernel/gentoo-kernel-bin sys-kernel/linux-firmware sys-kernel/vanilla-kernel sys-kernel/vanilla-kernel-bin virtual/dist-kernel app-emulation/qemu # initramfs deps dev-libs/opensc sys-apps/fwupd sys-block/nbd dev-libs/libjcat sys-libs/libapparmor # for pypy3 testing dev-python/setuptools dev-python/setuptools-scm dev-python/certifi dev-python/six virtual/python-ipaddress virtual/python-enum34 dev-python/cryptography # for kernel testing app-crypt/gnupg dev-util/pahole sys-apps/debianutils sys-apps/systemd sys-kernel/installkernel dev-libs/libb64 net-libs/grpc app-crypt/pesign app-crypt/tpm-emulator app-emulation/virtualbox-guest-additions app-emulation/virtualbox-modules app-laptop/tp_smapi dev-util/lttng-modules dev-util/sysdig dev-util/sysdig-kmod media-video/v4l2loopback net-dialup/accel-ppp net-firewall/ipt_netflow net-firewall/rtsp-conntrack net-firewall/xtables-addons net-fs/openafs net-misc/AQtion net-misc/ena-driver net-misc/networkmanager net-misc/openvswitch net-vpn/wireguard-modules net-wireless/broadcom-sta sci-libs/linux-gpib-modules sys-apps/dbus sys-cluster/knem sys-fs/loop-aes sys-fs/vhba sys-fs/zfs-kmod sys-power/acpi_call sys-power/bbswitch sys-kernel/cryptodev sys-power/acpi_call sys-power/bbswitch x11-drivers/nvidia-drivers EOF cat <<-EOF > "${temp}"/package.use app-emulation/qemu -aio -caps -filecaps -jpeg -ncurses -png -vhost-net -vnc -xattr -doc # for kernel testing sys-kernel/gentoo-kernel generic-uki modules-sign secureboot test -initramfs sys-kernel/gentoo-kernel-bin test generic-uki -initramfs sys-kernel/vanilla-kernel modules-sign secureboot test -initramfs sys-kernel/vanilla-kernel-bin test -initramfs app-crypt/tpm-emulator modules dev-util/sysdig modules net-dialup/accel-ppp ipoe net-firewall/ipset modules net-firewall/xtables-addons modules net-fs/openafs modules net-vpn/wireguard-modules module sys-cluster/knem modules sys-cluster/lustre modules sys-kernel/kpatch kmod x11-drivers/nvidia-drivers -tools -X sys-apps/util-linux caps # for initramfs/uki building app-crypt/gnupg smartcard tpm net-misc/networkmanager iwd sys-fs/lvm2 lvm sys-kernel/linux-firmware -initramfs deduplicate redistributable sys-firmware/intel-microcode -hostonly -initramfs split-ucode sys-kernel/installkernel -dracut -grub -ukify sys-apps/systemd boot cryptsetup kernel-install pkcs11 policykit tpm udev ukify EOF cat <<-'EOF' > "${temp}"/Dockerfile ARG BASE FROM ${BASE} RUN wget --progress=dot:mega -O - https://github.com/gentoo-mirror/gentoo/archive/eff089adc69f0f8d960d1733ccdb141f0aef6499.tar.gz | tar -xz \ && mv gentoo-eff089adc69f0f8d960d1733ccdb141f0aef6499 /var/db/repos/gentoo ARG DOCKER_DEPS ARG CFLAGS ARG LDFLAGS ARG USE COPY binpkg-cache/arm64 /var/cache/binpkgs COPY package.accept_keywords /etc/portage/package.accept_keywords/local COPY package.use /etc/portage/package.use/local RUN find /var/cache/binpkgs && sleep 5 RUN printf '\n \ CFLAGS="%s" \ CXXFLAGS="%s" \ LDFLAGS="%s" \ FEATURES="${FEATURES} parallel-install -ipc-sandbox -network-sandbox -pid-sandbox" \ PKGDIR="/var/cache/binpkgs" \ ACCEPT_LICENSE="*" \ BINPKG_FORMAT="gpkg" \ MODULES_SIGN_KEY="/tmp/signing_key.pem" \ SECUREBOOT_SIGN_KEY="/tmp/signing_key.pem" \ SECUREBOOT_SIGN_CERT="/tmp/signing_key.pem" \ USE="%s" \ ' "${CFLAGS}" "${CFLAGS}" "${LDFLAGS}" "${USE}" >> /etc/portage/make.conf \ && rm -rf /etc/portage/binrepos.conf \ && { [[ -z ${DOCKER_DEPS} ]] || emerge -1vkt --jobs ${DOCKER_DEPS}; } \ && emerge --info \ && cat /etc/portage/make.conf EOF docker build \ --label=mgorny-binpkg-docker \ -f "${temp}/Dockerfile" \ --build-arg "DOCKER_DEPS=${DOCKER_DEPS[*]}" \ --network host \ -t build-arm64-kernel-deps \ . \ --build-arg BASE=gentoo/stage3:arm64-systemd \ --build-arg 'CFLAGS=-O2 -pipe' \ --build-arg 'LDFLAGS=-Wl,-O1 -Wl,--as-needed' \ --build-arg 'USE='