sile 0.15.2

Simon’s Improved Layout Engine
name: Build

on: [ push, pull_request ]

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:

  build-ubuntu:
    strategy:
      matrix:
        configuration:
          - [ 'dynamic', '' ]
          - [ 'system', '--with-system-lua-sources' ]
          - [ 'embedded', '--enable-embedded-resources' ]
          - [ 'static', '--enable-embedded-resources --disable-shared --enable-static' ]
    runs-on: ubuntu-22.04
    name: Build Ubuntu ${{ matrix.configuration[0] }}
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Cache test fonts
        uses: actions/cache@v4
        with:
          path: |
            .fonts
            .sources
          key: fonts-${{ hashFiles('Makefile-fonts') }}
      - name: Cache lua_modules
        uses: actions/cache@v4
        with:
          path: |
            lua_modules
          key: luarocks-${{ hashFiles('Makefile-luarocks', 'sile.rockspec.in') }}
      - name: Cache Rust
        uses: Swatinem/rust-cache@v2
      - name: Install system dependencies
        run: |
          sudo apt-get update
          sudo apt-get install fonts-sil-gentiumplus ghostscript graphviz jq libarchive-tools libfontconfig1-dev libharfbuzz-dev libicu-dev libluajit-5.1-dev libpng-dev luajit lua-sec lua-socket lua-zlib-dev luarocks poppler-utils
      - name: Setup ‘cargo’
        uses: actions-rs/toolchain@v1
      - name: Configure
        run: |
          ./bootstrap.sh
          ./configure \
            --enable-developer-mode \
            BUSTED=false DELTA=false LDOC=false LUACHECK=false NIX=false STYLUA=false \
            --disable-font-variations \
            --with-manual \
            ${{ matrix.configuration[1] }}
          echo "VERSION=$(./build-aux/git-version-gen .tarball-version)" >> $GITHUB_ENV
          echo "MAKEFLAGS=-j$(nproc) -Otarget" >> $GITHUB_ENV
          echo "CARCH=$(uname -m)" >> $GITHUB_ENV
      - name: Make
        run: |
          make
      - name: Package
        run: |
          make dist
      - name: Upload source dist artifact
        if: ${{ matrix.configuration[0] == 'dynamic' && !contains(github.ref, 'refs/tags/v') }}
        uses: actions/upload-artifact@v4
        with:
          name: sile-${{ env.VERSION }}
          path: sile-${{ env.VERSION }}.zip
      - name: Append architecture to static binary
        if: ${{ matrix.configuration[0] == 'static' }}
        run: |
          cp sile sile-${{ env.CARCH }}
          sha256sum sile-${{ env.CARCH }} | tee -a sile-${{ env.VERSION }}.sha256.txt
      - name: Upload static binary artifact
        if: ${{ matrix.configuration[0] == 'static' && !contains(github.ref, 'refs/tags/v') }}
        uses: actions/upload-artifact@v4
        with:
          name: sile-${{ env.CARCH }}
          path: sile-${{ env.CARCH }}
      - name: Release
        uses: softprops/action-gh-release@v2
        if: matrix.configuration[0] == 'static' && github.repository == 'sile-typesetter/sile' && startsWith(github.ref, 'refs/tags/v')
        with:
          body_path: sile-${{ env.VERSION }}.md
          files: |
            sile-${{ env.VERSION }}.pdf
            sile-${{ env.VERSION }}.zip
            sile-${{ env.VERSION }}.tar.zst
            sile-${{ env.CARCH }}
            sile-${{ env.VERSION }}.sha256.txt

  build-nix:
    runs-on: ubuntu-22.04
    name: Build Nix
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Cache test fonts
        uses: actions/cache@v4
        with:
          path: |
            .fonts
            .sources
          key: fonts-${{ hashFiles('Makefile-fonts') }}
      - name: Install Nix
        uses: DeterminateSystems/nix-installer-action@v12
      - name: Cache Nix dependencies
        uses: DeterminateSystems/magic-nix-cache-action@v7
      - name: Setup developer environment
        run: |
          nix develop --command ./bootstrap.sh
          nix develop --configure
          nix develop --command make
      - name: Run regression tests for which Ubuntu can't provide deps
        run: |
          nix develop --command make regressions TESTSRCS='tests/variations-axis.sil tests/feat-unicode-softhyphen.sil'