name: Linux x86 (i386-linux-gnu) on: push: branches: - master paths-ignore: - '*.md' - 'docs/**' pull_request: types: [opened, synchronize] paths-ignore: - '*.md' - 'docs/**' release: types: [published] paths-ignore: - '*.md' - 'docs/**' workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: build: runs-on: ubuntu-20.04 steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 # Work around the somewhat broken packages in the GitHub Actions Ubuntu 20.04 image. # https://github.com/actions/runner-images/issues/4620#issuecomment-981333260 - name: Work around broken packages run: sudo apt-get -y install --allow-downgrades libpcre2-8-0=10.34-7 - name: Add gcc repo run: sudo add-apt-repository ppa:ubuntu-toolchain-r/test # Installs dependencies, including x86 libraries (runs `sudo apt-get update` as part of it) - name: Install dependencies run: Packaging/nix/debian-cross-i386-prep.sh --no-gcc - name: Install gcc-13 run: | sudo apt-get install -yq --no-install-recommends gcc-13 g++-13 g++-13-multilib && \ sudo update-alternatives --install \ /usr/bin/gcc gcc /usr/bin/gcc-13 13 \ --slave /usr/bin/g++ g++ /usr/bin/g++-13 - name: Cache CMake build folder uses: actions/cache@v3 with: path: build key: ${{ github.workflow }}-v5-${{ github.sha }} restore-keys: ${{ github.workflow }}-v5- - name: Build working-directory: ${{github.workspace}} shell: bash env: CMAKE_BUILD_TYPE: ${{github.event_name == 'release' && 'Release' || 'RelWithDebInfo'}} # We set DEVILUTIONX_SYSTEM_LIBFMT=OFF because its soversion changes frequently. # We set DEVILUTIONX_SYSTEM_SIMPLEINI=OFF because we require v4.19+, still missing from many distributions, # and there is no libsimpleini-dev:i386 for Ubuntu 20.04. run: | cmake -S. -Bbuild -DCMAKE_TOOLCHAIN_FILE=../CMake/platforms/linux_i386.toolchain.cmake \ -DCMAKE_BUILD_TYPE=${{env.CMAKE_BUILD_TYPE}} -DCMAKE_INSTALL_PREFIX=/usr -DCPACK=ON \ -DBUILD_TESTING=OFF -DDEVILUTIONX_SYSTEM_LIBFMT=OFF -DDEVILUTIONX_SYSTEM_SIMPLEINI=OFF && \ cmake --build build -j $(getconf _NPROCESSORS_ONLN) --target package - name: Package run: Packaging/nix/LinuxReleasePackaging.sh && mv devilutionx.tar.xz devilutionx-i386-linux-gnu.tar.xz # AppImage cross-packaging is not implemented yet. # - name: Package AppImage # run: Packaging/nix/AppImage.sh && mv devilutionx.appimage devilutionx-i386-linux-gnu.appimage - name: Upload Package if: ${{ !env.ACT }} uses: actions/upload-artifact@v3 with: name: devilutionx-i386-linux-gnu.tar.xz path: devilutionx-i386-linux-gnu.tar.xz # AppImage cross-packaging is not implemented yet. # - name: Upload AppImage # if: ${{ !env.ACT }} # uses: actions/upload-artifact@v3 # with: # name: devilutionx-i386-linux-gnu.appimage # path: devilutionx-i386-linux-gnu.appimage - name: Update Release if: ${{ github.event_name == 'release' && !env.ACT }} uses: svenstaro/upload-release-action@v2 with: file: devilutionx-i386-linux-gnu.* file_glob: true overwrite: true - name: Clean up artifacts run: rm -rf build/_CPack_Packages build/package build/*.deb build/*.rpm build/*.appimage build/*.tar.xz