From 1d564ff7b9dfedc408b9744f64b764512906fde0 Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Thu, 23 Jan 2025 20:20:17 -0600 Subject: [PATCH 1/5] Initial Linux Arm64 build --- .github/workflows/ci.yml | 39 +++++++++++++++----- tools/conan/profiles/scwx-linux_gcc-11_armv8 | 8 ++++ 2 files changed, 37 insertions(+), 10 deletions(-) create mode 100644 tools/conan/profiles/scwx-linux_gcc-11_armv8 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 41a53fc2..f9209e04 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,8 +35,9 @@ jobs: qt_tools: '' conan_package_manager: '' conan_profile: scwx-win64_msvc2022 + appimage_arch: '' artifact_suffix: windows-x64 - - name: linux64_gcc + - name: linux_gcc_x64 os: ubuntu-22.04 build_type: Release env_cc: gcc-11 @@ -49,9 +50,10 @@ jobs: qt_tools: '' conan_package_manager: --conf tools.system.package_manager:mode=install --conf tools.system.package_manager:sudo=True conan_profile: scwx-linux_gcc-11 + appimage_arch: x86_64 artifact_suffix: linux-x64 compiler_packages: '' - - name: linux64_clang + - name: linux_clang_x64 os: ubuntu-24.04 build_type: Release env_cc: clang-17 @@ -64,8 +66,25 @@ jobs: qt_tools: '' conan_package_manager: --conf tools.system.package_manager:mode=install --conf tools.system.package_manager:sudo=True conan_profile: scwx-linux_clang-17 + appimage_arch: x86_64 artifact_suffix: linux-clang-x64 compiler_packages: clang-17 + - name: linux_gcc_arm64 + os: ubuntu-22.04-arm + build_type: Release + env_cc: gcc-11 + env_cxx: g++-11 + compiler: gcc + qt_version: 6.8.1 + qt_arch_aqt: linux_gcc_arm64 + qt_arch_dir: gcc_arm64 + qt_modules: qtimageformats qtmultimedia qtpositioning qtserialport + qt_tools: '' + conan_package_manager: --conf tools.system.package_manager:mode=install --conf tools.system.package_manager:sudo=True + conan_profile: scwx-linux_gcc-11_armv8 + appimage_arch: aarch64 + artifact_suffix: linux-arm64 + compiler_packages: '' name: ${{ matrix.name }} env: CC: ${{ matrix.env_cc }} @@ -231,14 +250,14 @@ jobs: if: ${{ startsWith(matrix.os, 'ubuntu') }} env: APPIMAGE_DIR: ${{ github.workspace }}/supercell-wx/ - LDAI_UPDATE_INFORMATION: gh-releases-zsync|dpaulat|supercell-wx|latest|*x86_64.AppImage.zsync - LDAI_OUTPUT: supercell-wx-${{ env.SCWX_VERSION }}-x86_64.AppImage + LDAI_UPDATE_INFORMATION: gh-releases-zsync|dpaulat|supercell-wx|latest|*${{ matrix.appimage_arch }}.AppImage.zsync + LDAI_OUTPUT: supercell-wx-${{ env.SCWX_VERSION }}-${{ matrix.appimage_arch }}.AppImage LINUXDEPLOY_OUTPUT_APP_NAME: supercell-wx LINUXDEPLOY_OUTPUT_VERSION: ${{ env.SCWX_VERSION }} shell: bash run: | - wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage - chmod +x linuxdeploy-x86_64.AppImage + wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-${{ matrix.appimage_arch }}.AppImage + chmod +x linuxdeploy-${{ matrix.appimage_arch }}.AppImage cp "${{ github.workspace }}/source/scwx-qt/res/icons/scwx-256.png" supercell-wx.png cp "${{ github.workspace }}/source/scwx-qt/res/linux/supercell-wx.desktop" . pushd "${{ env.APPIMAGE_DIR }}" @@ -247,16 +266,16 @@ jobs: mv lib/ usr/ mv plugins/ usr/ popd - ./linuxdeploy-x86_64.AppImage --appdir ${{ env.APPIMAGE_DIR }} -i supercell-wx.png -d supercell-wx.desktop - ./linuxdeploy-x86_64.AppImage --appdir ${{ env.APPIMAGE_DIR }} --output appimage - rm -f linuxdeploy-x86_64.AppImage + ./linuxdeploy-${{ matrix.appimage_arch }}.AppImage --appdir ${{ env.APPIMAGE_DIR }} -i supercell-wx.png -d supercell-wx.desktop + ./linuxdeploy-${{ matrix.appimage_arch }}.AppImage --appdir ${{ env.APPIMAGE_DIR }} --output appimage + rm -f linuxdeploy-${{ matrix.appimage_arch }}.AppImage - name: Upload AppImage (Linux) if: ${{ startsWith(matrix.os, 'ubuntu') }} uses: actions/upload-artifact@v4 with: name: supercell-wx-appimage-${{ matrix.artifact_suffix }} - path: ${{ github.workspace }}/*-x86_64.AppImage* + path: ${{ github.workspace }}/*-${{ matrix.appimage_arch }}.AppImage* - name: Test Supercell Wx working-directory: ${{ github.workspace }}/build diff --git a/tools/conan/profiles/scwx-linux_gcc-11_armv8 b/tools/conan/profiles/scwx-linux_gcc-11_armv8 new file mode 100644 index 00000000..803d1c8d --- /dev/null +++ b/tools/conan/profiles/scwx-linux_gcc-11_armv8 @@ -0,0 +1,8 @@ +[settings] +arch=armv8 +build_type=Release +compiler=gcc +compiler.cppstd=20 +compiler.libcxx=libstdc++11 +compiler.version=11 +os=Linux From 85eadf6f93c991dbdf23406a972034b06094f4d3 Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Thu, 23 Jan 2025 22:07:14 -0600 Subject: [PATCH 2/5] Bump install-qt-action to v4 --- .github/workflows/ci.yml | 2 +- .github/workflows/clang-tidy-review.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f9209e04..9b242293 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -103,7 +103,7 @@ jobs: submodules: recursive - name: Install Qt - uses: jurplel/install-qt-action@v3 + uses: jurplel/install-qt-action@v4 with: version: ${{ matrix.qt_version }} arch: ${{ matrix.qt_arch_aqt }} diff --git a/.github/workflows/clang-tidy-review.yml b/.github/workflows/clang-tidy-review.yml index d9366674..97beace8 100644 --- a/.github/workflows/clang-tidy-review.yml +++ b/.github/workflows/clang-tidy-review.yml @@ -15,7 +15,7 @@ jobs: strategy: matrix: include: - - name: linux64_clang-tidy + - name: linux_clang-tidy_x64 os: ubuntu-24.04 build_type: Release env_cc: clang-17 @@ -48,7 +48,7 @@ jobs: path: clang-tidy-review - name: Install Qt - uses: jurplel/install-qt-action@v3 + uses: jurplel/install-qt-action@v4 with: version: ${{ matrix.qt_version }} arch: ${{ matrix.qt_arch_aqt }} From 17982013be65095c1c471c644e1ea37caa3a42d8 Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Sat, 25 Jan 2025 09:11:59 -0600 Subject: [PATCH 3/5] Use install-qt-action fork that supports Arm64 builds --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9b242293..0a9470a3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -103,7 +103,7 @@ jobs: submodules: recursive - name: Install Qt - uses: jurplel/install-qt-action@v4 + uses: dpaulat/install-qt-action@b45c67aaa9e0ea77e59a7031ec14a12d5ddf4b35 with: version: ${{ matrix.qt_version }} arch: ${{ matrix.qt_arch_aqt }} From 8e11ae5efddd1e0d236309e9619dfe30fdf695fa Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Sat, 25 Jan 2025 12:56:51 -0600 Subject: [PATCH 4/5] Build linux arm64 with Ubuntu 24.04 (Qt requirement) --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0a9470a3..408cacf5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,7 +70,7 @@ jobs: artifact_suffix: linux-clang-x64 compiler_packages: clang-17 - name: linux_gcc_arm64 - os: ubuntu-22.04-arm + os: ubuntu-24.04-arm build_type: Release env_cc: gcc-11 env_cxx: g++-11 @@ -84,7 +84,7 @@ jobs: conan_profile: scwx-linux_gcc-11_armv8 appimage_arch: aarch64 artifact_suffix: linux-arm64 - compiler_packages: '' + compiler_packages: g++-11 name: ${{ matrix.name }} env: CC: ${{ matrix.env_cc }} From 517ec9b266fb87afe72f101eeff2f3ccfd59c444 Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Sun, 26 Jan 2025 13:03:01 -0600 Subject: [PATCH 5/5] Add additional armv8 profiles --- tools/conan/profiles/scwx-linux_clang-17_armv8 | 8 ++++++++ tools/conan/profiles/scwx-linux_gcc-12_armv8 | 8 ++++++++ tools/conan/profiles/scwx-linux_gcc-13_armv8 | 8 ++++++++ tools/conan/profiles/scwx-linux_gcc-14_armv8 | 8 ++++++++ 4 files changed, 32 insertions(+) create mode 100644 tools/conan/profiles/scwx-linux_clang-17_armv8 create mode 100644 tools/conan/profiles/scwx-linux_gcc-12_armv8 create mode 100644 tools/conan/profiles/scwx-linux_gcc-13_armv8 create mode 100644 tools/conan/profiles/scwx-linux_gcc-14_armv8 diff --git a/tools/conan/profiles/scwx-linux_clang-17_armv8 b/tools/conan/profiles/scwx-linux_clang-17_armv8 new file mode 100644 index 00000000..21ab5248 --- /dev/null +++ b/tools/conan/profiles/scwx-linux_clang-17_armv8 @@ -0,0 +1,8 @@ +[settings] +arch=armv8 +build_type=Release +compiler=clang +compiler.cppstd=20 +compiler.libcxx=libstdc++11 +compiler.version=17 +os=Linux diff --git a/tools/conan/profiles/scwx-linux_gcc-12_armv8 b/tools/conan/profiles/scwx-linux_gcc-12_armv8 new file mode 100644 index 00000000..0a540c20 --- /dev/null +++ b/tools/conan/profiles/scwx-linux_gcc-12_armv8 @@ -0,0 +1,8 @@ +[settings] +arch=armv8 +build_type=Release +compiler=gcc +compiler.cppstd=20 +compiler.libcxx=libstdc++11 +compiler.version=12 +os=Linux diff --git a/tools/conan/profiles/scwx-linux_gcc-13_armv8 b/tools/conan/profiles/scwx-linux_gcc-13_armv8 new file mode 100644 index 00000000..7e0c0c66 --- /dev/null +++ b/tools/conan/profiles/scwx-linux_gcc-13_armv8 @@ -0,0 +1,8 @@ +[settings] +arch=armv8 +build_type=Release +compiler=gcc +compiler.cppstd=20 +compiler.libcxx=libstdc++11 +compiler.version=13 +os=Linux diff --git a/tools/conan/profiles/scwx-linux_gcc-14_armv8 b/tools/conan/profiles/scwx-linux_gcc-14_armv8 new file mode 100644 index 00000000..1b95e2bb --- /dev/null +++ b/tools/conan/profiles/scwx-linux_gcc-14_armv8 @@ -0,0 +1,8 @@ +[settings] +arch=armv8 +build_type=Release +compiler=gcc +compiler.cppstd=20 +compiler.libcxx=libstdc++11 +compiler.version=14 +os=Linux