From 014baab7089099c417deddf398ac8cab8572f9b4 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Fri, 10 Jul 2026 09:07:02 +1000 Subject: [PATCH] ci: provision Rocky jobs to build+package BonsaiViewer & Rust connector MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two gaps left when BonsaiViewer and its Rust connector were newly added to the Rocky CI jobs (May–Jun), neither previously exercised there: 1. Rust: the autodesk connector was rewritten from a PyInstaller Python app to a Rust crate, so packaging/build.py now runs 'cargo build --release'. Neither Rocky workflow installed a toolchain. Add rustup (stable, matching the dedicated dtolnay/rust-toolchain@stable workflow) to both x86 and ARM. 2. ARM glibc: aqt's official Qt6 ARM binaries link glibc 2.38, which Rocky 9 (glibc 2.34) can't load — moc fails, breaking IfcViewer_autogen. Move the ARM job to Rocky 10 (glibc 2.39). The legacy arm64v8/rockylinux image stopped at 9, so use rockylinux/rockylinux:10 (multi-arch, has arm64). Rocky 10 defaults to Python 3.12 and drops python3.11, so the script-runner references move python3.11 -> python3 (system Python only runs helper scripts; ifcopenshell is built against uv's Python). Bump the ccache key to rockylinux10. x86 stays on Rocky 9 to keep its lower glibc floor for end users. The rockylinux9-arm64 build-outputs deps branch is kept as-is: Rocky 9 deps are forward-compatible on Rocky 10, and no rocky10 branch exists yet. Co-Authored-By: Claude Opus 4.8 --- .github/workflows/build_rocky.yml | 9 +++++++++ .github/workflows/build_rocky_arm.yml | 23 ++++++++++++++++++----- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build_rocky.yml b/.github/workflows/build_rocky.yml index a5b2524b21..4a9e5807fb 100644 --- a/.github/workflows/build_rocky.yml +++ b/.github/workflows/build_rocky.yml @@ -30,6 +30,15 @@ jobs: git config --global --add safe.directory '*' python3.11 -c "import tkinter; print('Tk', tkinter.TkVersion)" + - name: Install Rust + # The bonsaiviewer-autodesk connector is a Rust crate; the "Package + # .zip archives" step below runs `cargo build --release` via + # packaging/build.py. Match the dedicated connector workflow's stable + # toolchain (dtolnay/rust-toolchain@stable). + run: | + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain stable + echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" + - name: Install aws cli run: | curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" diff --git a/.github/workflows/build_rocky_arm.yml b/.github/workflows/build_rocky_arm.yml index 618af9c9e8..e895ec3dbf 100644 --- a/.github/workflows/build_rocky_arm.yml +++ b/.github/workflows/build_rocky_arm.yml @@ -6,7 +6,11 @@ on: jobs: build_ifcopenshell: runs-on: ubuntu-22.04-arm - container: arm64v8/rockylinux:9 + # Rocky 10 (glibc 2.39) — aqt's official Qt6 ARM binaries are built + # against glibc 2.38, which Rocky 9 (glibc 2.34) can't run (moc fails to + # load). The legacy arm64v8/rockylinux Docker image stopped at 9; Rocky 10 + # is published under the rockylinux/rockylinux namespace. + container: rockylinux/rockylinux:10 steps: - name: Set up uv @@ -25,10 +29,19 @@ jobs: sqlite-devel bzip2-devel zlib-devel openssl-devel xz-devel \ readline-devel ncurses-devel libffi-devel libuuid-devel git-lfs \ findutils xz byacc patchelf libxkbcommon-devel \ - python3.11 python3.11-pip python3.11-tkinter + python3-tkinter python3 -m pip install typing_extensions aqtinstall git config --global --add safe.directory '*' - python3.11 -c "import tkinter; print('Tk', tkinter.TkVersion)" + python3 -c "import tkinter; print('Tk', tkinter.TkVersion)" + + - name: Install Rust + # The bonsaiviewer-autodesk connector is a Rust crate; the "Package + # .zip archives" step below runs `cargo build --release` via + # packaging/build.py. Match the dedicated connector workflow's stable + # toolchain (dtolnay/rust-toolchain@stable). + run: | + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain stable + echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: Install aws cli run: | @@ -60,7 +73,7 @@ jobs: - name: ccache uses: hendrikmuhs/ccache-action@v1.2.23 with: - key: ubuntu-22.04-${{ runner.arch }}-rockylinux9 + key: ubuntu-22.04-${{ runner.arch }}-rockylinux10 - name: Run Build Script shell: bash @@ -101,7 +114,7 @@ jobs: # connector.json into dist/autodesk/. Same on-disk shape as the # old PyInstaller flow so the symlink + zip steps below # continue to work unchanged. - python3.11 src/bonsaiviewer-autodesk/packaging/build.py + python3 src/bonsaiviewer-autodesk/packaging/build.py autodesk_connector_dir="$PWD/src/bonsaiviewer-autodesk/dist/autodesk" test -d "$autodesk_connector_dir"