name: Build on: [push, pull_request] jobs: windows: name: Windows MSYS2 strategy: matrix: msystem: [MINGW32, MINGW64, UCRT64, CLANG64] include: - msystem: MINGW32 packagePrefix: mingw-w64-i686 - msystem: MINGW64 packagePrefix: mingw-w64-x86_64 - msystem: UCRT64 packagePrefix: mingw-w64-ucrt-x86_64 - msystem: CLANG64 packagePrefix: mingw-w64-clang-x86_64 runs-on: windows-latest defaults: run: shell: msys2 {0} steps: - uses: actions/checkout@v2 - name: Setup uses: msys2/setup-msys2@v2 with: msystem: ${{ matrix.msystem }} update: true install: ${{ matrix.packagePrefix }}-toolchain ${{ matrix.packagePrefix }}-qt5-static - name: Build run: | mkdir build && pushd build $MSYSTEM_PREFIX/qt5-static/bin/qmake PREFIX=$GITHUB_WORKSPACE/pkg $GITHUB_WORKSPACE/Red_Panda_CPP.pro mingw32-make -j$(nproc) mingw32-make install popd - name: Upload uses: actions/upload-artifact@v2 with: name: Windows MSYS2 - msystem=${{ matrix.msystem }} path: pkg/ windows_legacy: name: Windows NT 5.1–6.0 MinGW strategy: matrix: arch: [32, 64] runs-on: windows-2019 defaults: run: shell: bash env: _MINGW_TOOLCHAIN: /c/Qt/Tools/mingw810_${{ matrix.arch }} _QT_INSTALL_PREFIX: /c/Qt/5.6.4/mingw81_${{ matrix.arch }}-redpanda _REDPANDA_QT_BUILD: "20240116.0" _REDPANDA_QT_ARCHIVE: qt5.6.4-mingw81_${{ matrix.arch }}-redpanda.7z steps: - uses: actions/checkout@v2 - name: Setup toolchain uses: jurplel/install-qt-action@v3 with: version: '5.15.2' host: windows target: desktop arch: win${{ matrix.arch }}_mingw81 archives: qtbase tools: tools_mingw,qt.tools.win${{ matrix.arch }}_mingw810 dir: C:/ - name: Setup Qt run: | curl -LO https://github.com/redpanda-cpp/qtbase-5.6/releases/download/$_REDPANDA_QT_BUILD/$_REDPANDA_QT_ARCHIVE 7z x $_REDPANDA_QT_ARCHIVE -oC:/Qt - name: Build run: | export PATH="$_QT_INSTALL_PREFIX/bin:$_MINGW_TOOLCHAIN/bin:$PATH" mkdir build && pushd build { qmake PREFIX=$GITHUB_WORKSPACE/pkg $GITHUB_WORKSPACE/Red_Panda_CPP.pro mingw32-make -j$(nproc) mingw32-make install } popd - name: Upload uses: actions/upload-artifact@v2 with: name: Windows NT 5.1–6.0 MinGW - arch=${{ matrix.arch }} path: pkg/ windows_msvc_x64: name: Windows MSVC x64 runs-on: windows-2019 steps: - uses: actions/checkout@v2 - name: Setup uses: jurplel/install-qt-action@v3 with: version: '5.15.2' host: windows target: desktop arch: win64_msvc2019_64 archives: qtbase qtsvg qttools tools: tools_qtcreator,qt.tools.qtcreator - name: Build run: | $JOM = "${Env:RUNNER_WORKSPACE}/Qt/Tools/QtCreator/bin/jom/jom.exe" $VS_INSTALL_PATH = "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise" Import-Module "$VS_INSTALL_PATH\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" Enter-VsDevShell -VsInstallPath "$VS_INSTALL_PATH" -SkipAutomaticLocation -DevCmdArguments -arch=amd64 mkdir build && pushd build qmake PREFIX=${Env:GITHUB_WORKSPACE}/pkg ${Env:GITHUB_WORKSPACE}/Red_Panda_CPP.pro & $JOM "-j${Env:NUMBER_OF_PROCESSORS}" & $JOM install windeployqt ${Env:GITHUB_WORKSPACE}/pkg/RedPandaIDE.exe rm ${Env:GITHUB_WORKSPACE}/pkg/vc_redist.x64.exe popd - name: Upload uses: actions/upload-artifact@v2 with: name: Windows MSVC x64 path: pkg/ windows_msvc_arm64ec: name: Windows MSVC ARM64EC runs-on: windows-2019 steps: - uses: actions/checkout@v2 - name: Setup uses: jurplel/install-qt-action@v3 with: version: '5.15.2' host: windows target: desktop arch: win64_msvc2019_64 archives: qtbase qtsvg qttools tools: tools_qtcreator,qt.tools.qtcreator - name: Build run: | $JOM = "${Env:RUNNER_WORKSPACE}/Qt/Tools/QtCreator/bin/jom/jom.exe" $VS_INSTALL_PATH = "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise" Import-Module "$VS_INSTALL_PATH\Common7\Tools\Microsoft.VisualStudio.DevShell.dll" Enter-VsDevShell -VsInstallPath "$VS_INSTALL_PATH" -SkipAutomaticLocation -DevCmdArguments "-arch=arm64 -host_arch=amd64" mkdir build && pushd build qmake QMAKE_CFLAGS="/arm64EC" QMAKE_CXXFLAGS="/arm64EC" QMAKE_LFLAGS="/MACHINE:ARM64EC" QMAKE_LIBFLAGS="/MACHINE:ARM64X" PREFIX=${Env:GITHUB_WORKSPACE}/pkg ${Env:GITHUB_WORKSPACE}/Red_Panda_CPP.pro & $JOM "-j${Env:NUMBER_OF_PROCESSORS}" & $JOM install windeployqt ${Env:GITHUB_WORKSPACE}/pkg/RedPandaIDE.exe rm ${Env:GITHUB_WORKSPACE}/pkg/vc_redist.x64.exe popd - name: Upload uses: actions/upload-artifact@v2 with: name: Windows MSVC ARM64EC (do not use) path: pkg/ deb: name: Deb strategy: matrix: image: - "debian:10" # oldest LTS - "ubuntu:23.10" # latest stable - "debian:sid" # rolling include: - image: debian:10 displayImage: debian-10 - image: ubuntu:23.10 displayImage: ubuntu-23.10 - image: debian:sid displayImage: debian-sid runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Fetch container image run: | podman pull --platform linux/amd64 docker.io/amd64/${{ matrix.image }} - name: Build run: | podman run --rm -e SOURCE_DIR=/src -v $GITHUB_WORKSPACE:/src --platform linux/amd64 ${{ matrix.image }} /src/packages/debian/01-in-docker.sh - name: Upload uses: actions/upload-artifact@v2 with: name: Deb - image=${{ matrix.displayImage }} path: dist/*.deb archlinux: name: Arch Linux runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Fetch container image run: | podman pull --platform linux/amd64 docker.io/amd64/archlinux:latest - name: Build run: | podman run --rm -e SOURCE_DIR=/src -v $GITHUB_WORKSPACE:/src --platform linux/amd64 docker.io/amd64/archlinux:latest /src/packages/archlinux/01-in-docker.sh - name: Upload uses: actions/upload-artifact@v2 with: name: Arch Linux path: dist/*.pkg.tar.zst rpm_fedora: name: RPM on latest Fedora runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Fetch container image run: | podman pull --platform linux/amd64 docker.io/amd64/fedora:latest - name: Build run: | podman run --rm -e SOURCE_DIR=/src -v $GITHUB_WORKSPACE:/src --platform linux/amd64 docker.io/amd64/fedora:latest /src/packages/fedora/01-in-docker.sh - name: Upload uses: actions/upload-artifact@v2 with: name: RPM on latest Fedora path: dist/*.rpm rpm_opensuse: name: RPM on openSUSE Tumbleweed runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Fetch container image run: | podman pull --platform linux/amd64 docker.io/opensuse/tumbleweed:latest - name: Build run: | podman run --rm -e SOURCE_DIR=/src -v $GITHUB_WORKSPACE:/src --platform linux/amd64 docker.io/opensuse/tumbleweed:latest /src/packages/opensuse/01-in-docker.sh - name: Upload uses: actions/upload-artifact@v2 with: name: RPM on openSUSE Tumbleweed path: dist/*.rpm musl: name: musl-based Linux (latest Alpine) runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Fetch container image run: | podman pull --platform linux/amd64 docker.io/amd64/alpine:latest - name: Build run: | podman run --rm -e SOURCE_DIR=/src -v $GITHUB_WORKSPACE:/src --platform linux/amd64 docker.io/amd64/alpine:latest /src/packages/alpine/01-in-docker.sh - name: Upload uses: actions/upload-artifact@v2 with: name: musl-based Linux (latest Alpine) path: dist/*.apk macos_x86_64: name: macOS x86_64 runs-on: macos-latest steps: - uses: actions/checkout@v2 - name: Setup uses: jurplel/install-qt-action@v3 with: version: '5.15.2' host: mac target: desktop arch: clang_64 archives: qtbase qtsvg qttools tools: tools_qtcreator,qt.tools.qtcreator - name: Build run: | mkdir build && pushd build qmake PREFIX=$GITHUB_WORKSPACE/pkg $GITHUB_WORKSPACE/Red_Panda_CPP.pro make -j$(nproc) make install popd pushd $GITHUB_WORKSPACE/pkg/bin macdeployqt RedPandaIDE.app tar -cJf RedPandaIDE.tar.xz RedPandaIDE.app - name: Upload uses: actions/upload-artifact@v2 with: name: macOS x86_64 path: pkg/bin/RedPandaIDE.tar.xz