ci: aarch64 build updated

This commit is contained in:
Nicolas Kruse 2025-11-09 22:52:33 +01:00
parent 7717b1aca5
commit e5f6897ca9
1 changed files with 24 additions and 20 deletions

View File

@ -60,19 +60,19 @@ jobs:
- name: Install Python dependencies
run: python -m pip install -e .[dev]
- name: Install ARM binutils, qemu and gcc-multilib (32 bit support)
if: strategy.job-index == 0
run: |
echo "set man-db/auto-update false" | sudo debconf-communicate
sudo dpkg-reconfigure man-db
sudo apt-get update
sudo apt-get install --no-install-recommends --no-install-suggests binutils-aarch64-linux-gnu qemu-user gcc-aarch64-linux-gnu libc6-dev-arm64-cross
#- name: Install ARM binutils and qemu
# if: strategy.job-index == 0
# run: |
# echo "set man-db/auto-update false" | sudo debconf-communicate
# sudo dpkg-reconfigure man-db
# sudo apt-get update
# sudo apt-get install --no-install-recommends --no-install-suggests binutils-aarch64-linux-gnu qemu-user gcc-aarch64-linux-gnu libc6-dev-arm64-cross
- name: Compile coparun
run: |
mkdir -p bin
gcc -O3 -DENABLE_BASIC_LOGGING -o bin/coparun src/coparun/runmem.c src/coparun/coparun.c src/coparun/mem_man.c
aarch64-linux-gnu-gcc -O3 -static -DENABLE_BASIC_LOGGING src/coparun/runmem.c src/coparun/coparun.c src/coparun/mem_man.c -o bin/coparun-aarch64
# aarch64-linux-gnu-gcc -O3 -static -DENABLE_BASIC_LOGGING src/coparun/runmem.c src/coparun/coparun.c src/coparun/mem_man.c -o bin/coparun-aarch64
- name: Generate debug asm files
if: strategy.job-index == 0
@ -83,7 +83,7 @@ jobs:
echo "- Patch code..."
bin/coparun bin/test.copapy bin/test.copapy.bin
qemu-aarch64 bin/coparun-aarch64 bin/test-aarch64.copapy bin/test-aarch64.copapy.bin
#qemu-aarch64 bin/coparun-aarch64 bin/test-aarch64.copapy bin/test-aarch64.copapy.bin
objdump -D -b binary -m i386:x86-64 --adjust-vma=0x1000 bin/test.copapy.bin > bin/test.copapy.asm
echo '<p>test.copapy.asm</p>' >> $GITHUB_STEP_SUMMARY
@ -97,9 +97,9 @@ jobs:
echo '<p>stencils_x86_64_O3.asm</p>' >> $GITHUB_STEP_SUMMARY
python tools/clean_asm.py bin/stencils_x86_64_O3.asm >> $GITHUB_STEP_SUMMARY
aarch64-linux-gnu-objdump -d -x src/copapy/obj/stencils_arm64_O3.o > bin/stencils_arm64_O3.asm
echo '<p>stencils_arm64_O3.asm</p>' >> $GITHUB_STEP_SUMMARY
python tools/clean_asm.py bin/stencils_arm64_O3.asm >> $GITHUB_STEP_SUMMARY
#aarch64-linux-gnu-objdump -d -x src/copapy/obj/stencils_arm64_O3.o > bin/stencils_arm64_O3.asm
#echo '<p>stencils_arm64_O3.asm</p>' >> $GITHUB_STEP_SUMMARY
#python tools/clean_asm.py bin/stencils_arm64_O3.asm >> $GITHUB_STEP_SUMMARY
- name: Run tests with pytest
run: pytest
@ -132,15 +132,18 @@ jobs:
platforms: linux/arm64
- name: Use ARM64 container
run: |
docker run --rm -v $PWD:/app -w /app --platform linux/arm64 python:3.11-slim \
bash -lc "apt-get update && \
apt-get install -y build-essential && \
pip install setuptools wheel pytest && \
pip install . && \
docker run --rm -v $PWD:/app -w /app --platform linux/arm64 ghcr.io/nonannet/arm64_test:1 \
bash -lc "pip install . && \
mkdir -p bin && \
gcc -O3 -DENABLE_LOGGING -o bin/coparun src/coparun/runmem.c src/coparun/coparun.c src/coparun/mem_man.c && \
gcc -O3 -DENABLE_LOGGING -o bin/coparun src/coparun/runmem.c \
src/coparun/coparun.c src/coparun/mem_man.c && \
pytest"
- uses: actions/upload-artifact@v4
with:
name: runner-linux-arm64
path: bin/*
build-windows:
needs: [build_stencils]
runs-on: windows-latest
@ -196,7 +199,7 @@ jobs:
path: bin/*
release-stencils:
needs: [build_stencils, build-ubuntu, build-windows]
needs: [build_stencils, build-ubuntu, build-windows, build-arm64]
runs-on: ubuntu-latest
if: github.event_name == 'push'
permissions:
@ -227,7 +230,8 @@ jobs:
cp tmp/stencil-object-files/*.o release/
cp tmp/cross-runner/coparun-* release/
cp tmp/runner-linux/coparun release/
cp tmp/runner-win/coparun.exe release/
cp tmp/runner-linux-arm64/coparun release/
cp tmp/runner-win/coparun*.exe release/
TAG="${{ steps.version.outputs.version }}"