-
Notifications
You must be signed in to change notification settings - Fork 167
Open
Description
With ARM64 runners available for free, we should support running native ARM with emulated x86/AMD64/etc.
Currently when using ARM64 runner (ie. ubuntu-24.04-arm) it fallback to download amd64 QEMU image, thus detecting the wrong requested image's platform:
The Logs
Run uraimo/run-on-arch-action@v2
with:
arch: none
distro: none
base_image: --platform=linux/ppc64le ppc64le/debian:buster
githubToken: ***
setup: mkdir -p "${PWD}/artifacts"
dockerRunArgs: --volume "${PWD}/artifacts:/artifacts"
env: artifact_name: git-release-ppc64le
shell: /bin/bash
install: apt-get update -y -qq
apt-get install -q -y git file build-essential
# Prerequisites to build CMake
apt install -q -y libtool autoconf unzip wget libssl-dev libcurl4-openssl-dev libxml2-dev
# Check if CMake is installed
required_cmake_version="3.16"
installed_cmake_version="0.00"
if command -v cmake &> /dev/null; then
# Get the installed version of CMake
installed_cmake_version=$(cmake --version | grep -oP '\d+\.\d+\.\d+')
fi
# Compare versions
if [ "$(printf '%s\n' "$required_cmake_version" "$installed_cmake_version" | sort -V | head -n1)" != "$required_cmake_version" ]; then
echo "CMake version is lower than $required_cmake_version, or not installed. Installing a newer version..."
# Remove old CMake
apt purge cmake -y
# Install a newer version of CMake (need v3.16+)
cmake_version=3.31.6 # 3.26.6
wget https://github.com/Kitware/CMake/releases/download/v$cmake_version/cmake-$cmake_version.tar.gz
tar -xzf cmake-$cmake_version.tar.gz
cd cmake-$cmake_version/
./bootstrap #./configure
make -j$(nproc)
make install
cd -
else
echo "CMake version is $installed_cmake_version, which is sufficient."
fi
run: echo "Running inside container!"
uname -m
gcc -v 2>&1 | grep -o -e '[^ ]*pie' # Checking default pie flags
gcc --version
g++ --version
ld -v
cmake --version
env:
PLATFORM_ARCH: ppc64le ppc64le/debian:buster
Writing custom Dockerfile to: /home/runner/work/_actions/uraimo/run-on-arch-action/v2/Dockerfiles/Dockerfile.none.none ...
Configuring Docker for multi-architecture support
/home/runner/work/_actions/uraimo/run-on-arch-action/v2/src/run-on-arch.sh /home/runner/work/_actions/uraimo/run-on-arch-action/v2/Dockerfiles/Dockerfile.none.none run-on-arch-anr2merefork-ppsspp-test-generate-linux-package-none-none --volume ${PWD}/artifacts:/artifacts -eartifact_name
Get:1 https://packages.microsoft.com/repos/azure-cli noble InRelease [3564 B]
Get:2 https://packages.microsoft.com/ubuntu/24.04/prod noble InRelease [3600 B]
Get:3 https://packages.microsoft.com/repos/azure-cli noble/main arm64 Packages [1065 B]
Hit:4 http://ports.ubuntu.com/ubuntu-ports noble InRelease
Get:5 https://packages.microsoft.com/ubuntu/24.04/prod noble/main amd64 Packages [21.7 kB]
Get:6 https://packages.microsoft.com/ubuntu/24.04/prod noble/main armhf Packages [6867 B]
Get:7 https://packages.microsoft.com/ubuntu/24.04/prod noble/main arm64 Packages [13.4 kB]
Get:8 http://ports.ubuntu.com/ubuntu-ports noble-updates InRelease [126 kB]
Get:9 http://ports.ubuntu.com/ubuntu-ports noble-backports InRelease [126 kB]
Get:10 http://ports.ubuntu.com/ubuntu-ports noble-security InRelease [126 kB]
Get:11 http://ports.ubuntu.com/ubuntu-ports noble-updates/main arm64 Packages [872 kB]
Get:12 http://ports.ubuntu.com/ubuntu-ports noble-updates/main Translation-en [199 kB]
Get:13 http://ports.ubuntu.com/ubuntu-ports noble-updates/main arm64 Components [148 kB]
Get:14 http://ports.ubuntu.com/ubuntu-ports noble-updates/universe arm64 Packages [996 kB]
Get:15 http://ports.ubuntu.com/ubuntu-ports noble-updates/universe Translation-en [256 kB]
Get:16 http://ports.ubuntu.com/ubuntu-ports noble-updates/universe arm64 Components [362 kB]
Get:17 http://ports.ubuntu.com/ubuntu-ports noble-updates/restricted arm64 Packages [770 kB]
Get:18 http://ports.ubuntu.com/ubuntu-ports noble-updates/restricted Translation-en [135 kB]
Get:19 http://ports.ubuntu.com/ubuntu-ports noble-updates/restricted arm64 Components [212 B]
Get:20 http://ports.ubuntu.com/ubuntu-ports noble-updates/multiverse arm64 Packages [18.4 kB]
Get:21 http://ports.ubuntu.com/ubuntu-ports noble-updates/multiverse Translation-en [5308 B]
Get:22 http://ports.ubuntu.com/ubuntu-ports noble-updates/multiverse arm64 Components [212 B]
Get:23 http://ports.ubuntu.com/ubuntu-ports noble-backports/main arm64 Components [208 B]
Get:24 http://ports.ubuntu.com/ubuntu-ports noble-backports/universe arm64 Packages [14.2 kB]
Get:25 http://ports.ubuntu.com/ubuntu-ports noble-backports/universe Translation-en [12.1 kB]
Get:26 http://ports.ubuntu.com/ubuntu-ports noble-backports/universe arm64 Components [19.9 kB]
Get:27 http://ports.ubuntu.com/ubuntu-ports noble-backports/restricted arm64 Components [216 B]
Get:28 http://ports.ubuntu.com/ubuntu-ports noble-backports/multiverse arm64 Components [212 B]
Get:29 http://ports.ubuntu.com/ubuntu-ports noble-security/main arm64 Packages [626 kB]
Get:30 http://ports.ubuntu.com/ubuntu-ports noble-security/main Translation-en [121 kB]
Get:31 http://ports.ubuntu.com/ubuntu-ports noble-security/main arm64 Components [5704 B]
Get:32 http://ports.ubuntu.com/ubuntu-ports noble-security/universe arm64 Packages [789 kB]
Get:33 http://ports.ubuntu.com/ubuntu-ports noble-security/universe Translation-en [174 kB]
Get:34 http://ports.ubuntu.com/ubuntu-ports noble-security/universe arm64 Components [52.0 kB]
Get:35 http://ports.ubuntu.com/ubuntu-ports noble-security/restricted arm64 Packages [725 kB]
Get:36 http://ports.ubuntu.com/ubuntu-ports noble-security/restricted Translation-en [128 kB]
Get:37 http://ports.ubuntu.com/ubuntu-ports noble-security/restricted arm64 Components [212 B]
Get:38 http://ports.ubuntu.com/ubuntu-ports noble-security/multiverse arm64 Packages [16.8 kB]
Get:39 http://ports.ubuntu.com/ubuntu-ports noble-security/multiverse Translation-en [4308 B]
Get:40 http://ports.ubuntu.com/ubuntu-ports noble-security/multiverse arm64 Components [212 B]
Fetched 6881 kB in 6s (1243 kB/s)
Reading package lists...
E: Package 'qemu' has no installation candidate
Unable to find image 'multiarch/qemu-user-static:latest' locally
latest: Pulling from multiarch/qemu-user-static
205dae5015e7: Pulling fs layer
816739e52091: Pulling fs layer
30abb83a18eb: Pulling fs layer
0657daef200b: Pulling fs layer
30c9c93f40b9: Pulling fs layer
0657daef200b: Waiting
30c9c93f40b9: Waiting
816739e52091: Verifying Checksum
816739e52091: Download complete
30abb83a18eb: Verifying Checksum
30abb83a18eb: Download complete
205dae5015e7: Download complete
0657daef200b: Download complete
205dae5015e7: Pull complete
816739e52091: Pull complete
30c9c93f40b9: Verifying Checksum
30c9c93f40b9: Download complete
30abb83a18eb: Pull complete
0657daef200b: Pull complete
30c9c93f40b9: Pull complete
Digest: sha256:fe60359c92e86a43cc87b3d906006245f77bfc0565676b80004cc666e4feb9f0
Status: Downloaded newer image for multiarch/qemu-user-static:latest
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
exec /register: exec format error
Error: The process '/home/runner/work/_actions/uraimo/run-on-arch-action/v2/src/run-on-arch.sh' failed with exit code 255
The Test Workflow
name: Test Generate Linux Package
on:
workflow_dispatch:
inputs:
refToBuild:
description: 'Commit SHA1 to build (optional)'
type: string
default: ''
buildVariant:
type: choice
description: 'Build Variant'
required: true
default: 'release'
options:
- release
- debug
cpuArch:
type: choice
description: 'CPU Architecture'
required: true
default: 'amd64'
options:
- amd64
- i386
- arm64v8
- arm32v7
- arm32v6
- arm32v5
- riscv64
- mips64le
- ppc64le
- s390x
env:
PLATFORM_ARCH: >-
${{ fromJSON('{
"amd64" : "amd64 amd64/debian:buster",
"i386" : "386 i386/debian:buster",
"arm64v8" : "arm64 arm64v8/debian:latest",
"arm32v7" : "arm/v7 arm32v7/debian:buster",
"arm32v6" : "arm/v6 balenalib/rpi-raspbian:jessie",
"arm32v5" : "arm/v5 arm32v5/debian:buster",
"riscv64" : "riscv64 riscv64/ubuntu:focal",
"mips64" : "mips64 mips64/debian:buster",
"mips64le" : "mips64le mips64le/debian:buster",
"ppc64le" : "ppc64le ppc64le/debian:buster",
"s390x" : "s390x s390x/debian:buster"
}')[inputs.cpuArch] }}
jobs:
build:
name: Generate ${{ inputs.buildVariant }} ${{ inputs.cpuArch }} build
runs-on: ${{ (startsWith(inputs.cpuArch, 'amd64') || startsWith(inputs.cpuArch, 'i386')) && 'ubuntu-latest' || 'ubuntu-24.04-arm' }} # arm runner said to be faster, thus the default
steps:
- uses: actions/checkout@v1 # v2 or newer no longer support short SHA ref
with:
fetch-depth: 0
submodules: recursive
ref: ${{ inputs.refToBuild != '' && inputs.refToBuild || github.sha }}
#- name: Set up QEMU # Just testing whether it can install QEMU successfully or not (Yes it can)
# uses: docker/setup-qemu-action@v3
- name: Setup and Run Guest System for ${{ inputs.cpuArch }} (target arch)
id: debian-target
uses: uraimo/run-on-arch-action@v2
with:
arch: none
distro: none
base_image: --platform=linux/${{ env.PLATFORM_ARCH }}
githubToken: ${{ github.token }}
setup: |
mkdir -p "${PWD}/artifacts"
dockerRunArgs: |
--volume "${PWD}/artifacts:/artifacts"
env: |
artifact_name: git-${{ inputs.buildVariant }}-${{ inputs.cpuArch }}
shell: /bin/bash
install: |
apt-get update -y -qq
apt-get install -q -y git file build-essential
# Prerequisites to build CMake
apt install -q -y libtool autoconf unzip wget libssl-dev libcurl4-openssl-dev libxml2-dev
# Check if CMake is installed
required_cmake_version="3.16"
installed_cmake_version="0.00"
if command -v cmake &> /dev/null; then
# Get the installed version of CMake
installed_cmake_version=$(cmake --version | grep -oP '\d+\.\d+\.\d+')
fi
# Compare versions
if [ "$(printf '%s\n' "$required_cmake_version" "$installed_cmake_version" | sort -V | head -n1)" != "$required_cmake_version" ]; then
echo "CMake version is lower than $required_cmake_version, or not installed. Installing a newer version..."
# Remove old CMake
apt purge cmake -y
# Install a newer version of CMake (need v3.16+)
cmake_version=3.31.6 # 3.26.6
wget https://github.com/Kitware/CMake/releases/download/v$cmake_version/cmake-$cmake_version.tar.gz
tar -xzf cmake-$cmake_version.tar.gz
cd cmake-$cmake_version/
./bootstrap #./configure
make -j$(nproc)
make install
cd -
else
echo "CMake version is $installed_cmake_version, which is sufficient."
fi
run: |
echo "Running inside container!"
uname -m
gcc -v 2>&1 | grep -o -e '[^ ]*pie' # Checking default pie flags
gcc --version
g++ --version
ld -v
cmake --version
# TODO: Build PPSSPP artifacts
Metadata
Metadata
Assignees
Labels
No labels