From f662aeb983d519b2de8bf16d8a2eb24ced944152 Mon Sep 17 00:00:00 2001 From: Vicente Adolfo Bolea Sanchez Date: Fri, 7 Apr 2023 01:38:00 +0000 Subject: [PATCH 1/2] wipwipwip --- scripts/ci/images/emu-el7/Dockerfile | 4 +- scripts/ci/images/emu-ubuntu2004/Dockerfile | 120 ++++++ .../ci/images/emu-ubuntu2004/entrypoint.sh | 3 + .../images/emu-ubuntu2004/qemu-binfmt-conf.sh | 404 ++++++++++++++++++ scripts/ci/images/emu-ubuntu2004/register.sh | 47 ++ .../power8-ubuntu2004-base.dockerfile | 83 ++++ .../power8-ubuntu2004-xl.dockerfile | 35 ++ 7 files changed, 694 insertions(+), 2 deletions(-) create mode 100644 scripts/ci/images/emu-ubuntu2004/Dockerfile create mode 100755 scripts/ci/images/emu-ubuntu2004/entrypoint.sh create mode 100755 scripts/ci/images/emu-ubuntu2004/qemu-binfmt-conf.sh create mode 100755 scripts/ci/images/emu-ubuntu2004/register.sh create mode 100644 scripts/ci/images/power8-ubuntu2004/power8-ubuntu2004-base.dockerfile create mode 100644 scripts/ci/images/power8-ubuntu2004/power8-ubuntu2004-xl.dockerfile diff --git a/scripts/ci/images/emu-el7/Dockerfile b/scripts/ci/images/emu-el7/Dockerfile index d954fe7f0d..2922d4c966 100644 --- a/scripts/ci/images/emu-el7/Dockerfile +++ b/scripts/ci/images/emu-el7/Dockerfile @@ -29,7 +29,7 @@ FROM multiarch/qemu-user-static:x86_64-${TARGET_ARCH_SYSTEM} AS qemu ######################################## # Base image ######################################## -FROM ${TARGET_ARCH_DOCKER}/centos:centos7 +FROM ${TARGET_ARCH_DOCKER}/almalinux:8 ######################################## # Grab a fully static node.js binary @@ -42,7 +42,7 @@ COPY --from=ornladios/adios2:node12-static /node /x86_64/bin/node # environment to run scripts on the host # CPU ######################################## -COPY --from=busybox /bin/busybox /x86_64/bin/busybox +COPY --from=busybox:1.32-glibc /bin/busybox /x86_64/bin/busybox SHELL ["/x86_64/bin/busybox", "sh", "-c"] RUN /x86_64/bin/busybox --install /x86_64/bin diff --git a/scripts/ci/images/emu-ubuntu2004/Dockerfile b/scripts/ci/images/emu-ubuntu2004/Dockerfile new file mode 100644 index 0000000000..0daba74490 --- /dev/null +++ b/scripts/ci/images/emu-ubuntu2004/Dockerfile @@ -0,0 +1,120 @@ +############################################################################## +# This is a base image to be used for multi-arch emulation on CI. To setup +# your system to correctly support the emulation you'll need to register +# the qemu static user binaries with your kernel's binfmt_misc infrastructure: +# +# docker run --rm --privileged multiarch/qemu-user-static:register --reset +# +# You need to use docker buildx to build this image: +# - You might need to download the docker-buildx binary and install it in your system. +# - docker buildx create --boostrap --platform ppc64le --driver docker-container --name builder +# - docker buildx use builder +# - docker buildx build --platform ppc64le --load -t ornladios/adios2:ci-x86_64-power8-ubuntu20.04 +# +# To build this image you want to set the following build args: +# TARGET_ARCH_SYSTEM=ppc64le - The CPU architecture of the target system. +# TARGET_ARCH_DOCKER=ppc64le - The CPU architecture if the target system as +# known by dockerhub. Most of the time this will +# be the same as TARGET_ARCH_SYSTEM but in a few +# cases they're different, e.g. for 64-bit ARM +# you would set TARGET_ARCH_SYSTEM=aarch64 and +# TARGET_ARCH_DOCKER=arm64v8. +# TARGET_CPU=power8 - The specific CPU model of the target system +# to emulate. For example, on ppc64le you +# could set it to power8 or power9 (among others) +# or on aarch64 you could set it to cortex-a72. +################################################################################ +ARG TARGET_ARCH_SYSTEM=ppc64le +ARG TARGET_ARCH_DOCKER=ppc64le + +######################################## +# QEMU image with emulation binaries +######################################## +FROM multiarch/qemu-user-static:x86_64-${TARGET_ARCH_SYSTEM}-5.2.0-2 AS qemu + +######################################## +# Base image +######################################## +FROM ${TARGET_ARCH_DOCKER}/ubuntu:20.04 + +######################################## +# Grab a fully static node.js binary +# to run various CI actions +######################################## +COPY --from=ornladios/adios2:node12-static /node /x86_64/bin/node + +######################################## +# Build up a minimal busybox shell +# environment to run scripts on the host +# CPU +######################################## +COPY --from=busybox:1.32-glibc /bin/busybox /x86_64/bin/busybox +SHELL ["/x86_64/bin/busybox", "sh", "-c"] +RUN /x86_64/bin/busybox --install /x86_64/bin + +######################################## +# Get rid of the busybox uname because +# it runs in the host CPU and we need +# CI scripts to instead use +# /usr/bin/uname from the emulated CPU +######################################## +RUN /x86_64/bin/rm -f /x86_64/bin/uname + +######################################## +# Put busybox in the path to allow job +# steps to use either the native host +# shell or the emulated CPU shell +######################################## +RUN /x86_64/bin/ln -s /x86_64/bin/busybox /usr/local/bin/busybox + +######################################## +# Put the busybox tail command in the +# path to be used as the default +# entrypoint in CI +######################################## +RUN /x86_64/bin/ln -s /x86_64/bin/tail /usr/local/bin/tail + +######################################## +# QEMU CPU emulation binary +######################################## +ARG TARGET_ARCH_SYSTEM=ppc64le +COPY --from=qemu \ + /usr/bin/qemu-${TARGET_ARCH_SYSTEM}-static \ + /x86_64/bin/qemu-${TARGET_ARCH_SYSTEM}-static + +######################################## +# Hard link the emulation binary to the +# expected location used by the default +# registration scripts for ease of local +# development. +######################################## +ARG TARGET_ARCH_SYSTEM=ppc64le +RUN /x86_64/bin/ln \ + /x86_64/bin/qemu-${TARGET_ARCH_SYSTEM}-static \ + /usr/bin/qemu-${TARGET_ARCH_SYSTEM}-static + +######################################## +# Scripts for emu registration +######################################## +COPY qemu-binfmt-conf.sh /x86_64/bin/qemu-binfmt-conf.sh +COPY register.sh /x86_64/bin/register + +######################################## +# Set the specific CPU +######################################## +ARG TARGET_CPU=power8 +ENV QEMU_CPU=${TARGET_CPU} + +######################################## +# Setup the entrypoint using busybox for +# the host cpu +######################################## +COPY entrypoint.sh /x86_64/bin/entrypoint +ENTRYPOINT ["/x86_64/bin/entrypoint"] +CMD ["/x86_64/bin/sh"] + +######################################## +# Reset the shell for subsequent image +# building +######################################## +SHELL ["/bin/sh", "-c"] diff --git a/scripts/ci/images/emu-ubuntu2004/entrypoint.sh b/scripts/ci/images/emu-ubuntu2004/entrypoint.sh new file mode 100755 index 0000000000..1246539612 --- /dev/null +++ b/scripts/ci/images/emu-ubuntu2004/entrypoint.sh @@ -0,0 +1,3 @@ +#!/x86_64/bin/sh + +exec "$@" diff --git a/scripts/ci/images/emu-ubuntu2004/qemu-binfmt-conf.sh b/scripts/ci/images/emu-ubuntu2004/qemu-binfmt-conf.sh new file mode 100755 index 0000000000..8d40c79501 --- /dev/null +++ b/scripts/ci/images/emu-ubuntu2004/qemu-binfmt-conf.sh @@ -0,0 +1,404 @@ +#!/x86_64/bin/sh +# Enable automatic program execution by the kernel. + +qemu_target_list="i386 i486 alpha arm armeb sparc sparc32plus sparc64 \ +ppc ppc64 ppc64le m68k mips mipsel mipsn32 mipsn32el mips64 mips64el \ +sh4 sh4eb s390x aarch64 aarch64_be hppa riscv32 riscv64 xtensa xtensaeb \ +microblaze microblazeel or1k x86_64" + +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\x00\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\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff' +i486_family=i386 + +x86_64_magic='\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x3e\x00' +x86_64_mask='\xff\xff\xff\xff\xff\xfe\xfe\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff' +x86_64_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\x00\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\x00\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\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff' +sparc32plus_family=sparc + +sparc64_magic='\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x2b' +sparc64_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff' +sparc64_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\x00\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\x00\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\x00\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 + +or1k_magic='\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x5c' +or1k_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff' +or1k_family=or1k + +qemu_get_family() { + cpu=${HOST_ARCH:-$(busybox 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 <&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() { + flags="" + if [ "$CREDENTIAL" = "yes" ] ; then + flags="OC" + fi + if [ "$PERSISTENT" = "yes" ] ; then + flags="${flags}F" + fi + + 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" <&2 + continue + fi + + qemu="$QEMU_PATH/qemu-$cpu" + if [ "$cpu" = "i486" ] ; then + qemu="$QEMU_PATH/qemu-i386" + fi + + qemu="$qemu$QEMU_SUFFIX" + 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 +CREDENTIAL=no +PERSISTENT=no +QEMU_SUFFIX="" + +options=$(getopt -o ds:Q:S:t:e:hc:p: -l debian,systemd:,qemu-path:,qemu-suffix:,qemu-targets:,exportdir:,help,credential:,persistent: -- "$@") +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" + ;; + -F|--qemu-suffix) + shift + QEMU_SUFFIX="$1" + ;; + -t|--qemu-targets) + shift + QEMU_TARGETS="$1" + ;; + -e|--exportdir) + shift + EXPORTDIR="$1" + ;; + -h|--help) + usage + exit 1 + ;; + -c|--credential) + shift + CREDENTIAL="$1" + ;; + -p|--persistent) + shift + PERSISTENT="$1" + ;; + *) + break + ;; + esac + shift +done + +$CHECK +qemu_set_binfmts diff --git a/scripts/ci/images/emu-ubuntu2004/register.sh b/scripts/ci/images/emu-ubuntu2004/register.sh new file mode 100755 index 0000000000..f1c6c18a96 --- /dev/null +++ b/scripts/ci/images/emu-ubuntu2004/register.sh @@ -0,0 +1,47 @@ +#!/x86_64/bin/sh + +export PATH=/x86_64/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 + +RESET=0 +TARGETS="" +while true +do + case $1 in + --reset) + RESET=1 + ;; + --targets) + shift + TARGETS="$1" + ;; + *) + break + ;; + esac + shift +done + +if [ $RESET -eq 1 ]; then + if [ -z "${TARGETS}" ] + then + find /proc/sys/fs/binfmt_misc -type f -name 'qemu-*' -exec sh -c 'echo "Resetting {}"; echo -1 > {}' \; + else + for TARGET in ${TARGETS} + do + find /proc/sys/fs/binfmt_misc -type f -name "qemu-${TARGET}*" -exec sh -c 'echo "Resetting {}"; echo -1 > {}' \; + done + fi +fi + +/x86_64/bin/qemu-binfmt-conf.sh --qemu-suffix "-static" --qemu-path "/x86_64/bin" --qemu-targets "${TARGETS}" $@ diff --git a/scripts/ci/images/power8-ubuntu2004/power8-ubuntu2004-base.dockerfile b/scripts/ci/images/power8-ubuntu2004/power8-ubuntu2004-base.dockerfile new file mode 100644 index 0000000000..5e975c7d19 --- /dev/null +++ b/scripts/ci/images/power8-ubuntu2004/power8-ubuntu2004-base.dockerfile @@ -0,0 +1,83 @@ +# vim: ft=dockerfile: +ARG TARGET_CPU=power8 +FROM ornladios/adios2:ci-x86_64-${TARGET_CPU}-ubuntu20.04 + +# Install core dev packages +RUN apt update && \ + apt upgrade -y && \ + DEBIAN_FRONTEND="noninteractive" apt install -y --no-install-recommends \ + bison \ + build-essential \ + bzip2 \ + curl \ + diffutils \ + file \ + findutils \ + binutils \ + coreutils \ + flex \ + g++ \ + gcc \ + gettext \ + gfortran \ + git \ + gnupg2 \ + gzip \ + lbzip2 \ + libblosc-dev \ + libcurl4-gnutls-dev \ + libzmq3-dev \ + libexpat1-dev \ + libffi-dev \ + libpng-dev \ + librhash-dev \ + libzstd-dev \ + make \ + ninja-build \ + openssl \ + patch \ + patchelf \ + perl \ + pkg-config \ + python3 \ + python3-pip \ + sudo \ + tar \ + tcl \ + unzip \ + valgrind \ + vim \ + xz-utils \ + zlib1g-dev && \ + apt clean && \ + rm -rfv /tmp/* + +RUN git clone -b v0.19.1 https://github.com/spack/spack.git /opt/spack +ENV SPACK_ROOT=/opt/spack + +RUN . /opt/spack/share/spack/setup-env.sh && \ + spack arch && \ + spack compiler find --scope system && \ + spack external find && \ + spack config add concretizer:targets:granularity:generic && \ + spack config add concretizer:reuse:false && \ + spack clean -a && \ + spack mirror add E4S https://cache.e4s.io && \ + spack buildcache keys --install --trust && \ + spack spec zlib + +RUN . /opt/spack/share/spack/setup-env.sh && \ + spack env create adios2-ci && \ + spack -e adios2-ci add cmake@3.24 zfp sz hdf5 && \ + spack -e adios2-ci concretize --force --fresh && \ + spack -e adios2-ci install \ + --no-checksum \ + --fail-fast \ + -v \ + -j$((2 * $(grep -c '^processor' /proc/cpuinfo))) + +# Setup default login environment +RUN . /etc/profile.d/modules.sh && \ + echo "source /opt/spack/share/spack/setup-env.sh" >> /etc/profile.d/zz-adios2-ci-env.sh && \ + echo "spack env activate adios2-ci" >> /etc/profile.d/zz-adios2-ci-env.sh + diff --git a/scripts/ci/images/power8-ubuntu2004/power8-ubuntu2004-xl.dockerfile b/scripts/ci/images/power8-ubuntu2004/power8-ubuntu2004-xl.dockerfile new file mode 100644 index 0000000000..df337f7699 --- /dev/null +++ b/scripts/ci/images/power8-ubuntu2004/power8-ubuntu2004-xl.dockerfile @@ -0,0 +1,35 @@ +# vim: ft=dockerfile: +FROM ornladios/adios2:ci-x86_64-power8-ubuntu2004-base + +# Install packages of XL compilers +COPY IBM_XL_C_CPP_*_LINUX_COMMUNITY.tar.gz /tmp +COPY IBM_XL_FORTRAN_*_LINUX_COMMUNITY.tar.gz /tmp +# Upgrades of XL compilers +COPY IBM_XL_C_CPP_*_LINUX.tar.gz /tmp +COPY IBM_XL_FORTRAN_*_LINUX.tar.gz /tmp +WORKDIR /tmp +RUN mkdir xlc && \ + cd xlc && \ + tar -xf ../IBM_XL_C_CPP_*_LINUX_COMMUNITY.tar.gz && \ + yes 1 | ./install && \ + cd .. && \ + mkdir xlf && \ + cd xlf && \ + tar -xf ../IBM_XL_FORTRAN_*_LINUX_COMMUNITY.tar.gz && \ + yes 1 | ./install && \ + cd .. && \ + mkdir xlc_p && \ + cd xlc_p && \ + tar -xf ../IBM_XL_C_CPP_*_LINUX.tar.gz && \ + yes 1 | ./install && \ + cd .. && \ + mkdir xlf_p && \ + cd xlf_p && \ + tar -xf ../IBM_XL_FORTRAN_*_LINUX.tar.gz && \ + yes 1 | ./install && \ + cd .. && \ + rm -rf /tmp/* && \ + yum -y clean all +ENV CC=/usr/bin/xlc \ + CXX=/usr/bin/xlc++ \ + FC=/usr/bin/xlf From 04bc0d63cb32d205d0e2ef0de0d12380ab99ed3a Mon Sep 17 00:00:00 2001 From: Vicente Adolfo Bolea Sanchez Date: Mon, 10 Apr 2023 16:32:50 -0400 Subject: [PATCH 2/2] fixup! wipwipwip --- .github/workflows/everything.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/everything.yml b/.github/workflows/everything.yml index 177c55ad6a..127a29d836 100644 --- a/.github/workflows/everything.yml +++ b/.github/workflows/everything.yml @@ -43,6 +43,8 @@ jobs: - uses: actions/checkout@v3 with: fetch-depth: 0 + - name: Check secret + run: echo "$SECRET_ONE" - name: Check for appropriately named topic branch run: | scripts/ci/gh-actions/check-branch-name.sh