Setup Lua module for exporting Rust functions to Lua #2879
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Test | |
on: [ push, pull_request ] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
test: | |
strategy: | |
fail-fast: false | |
matrix: | |
luaVersion: | |
- [ '5.4', 'MYCFLAGS=-fPIC' ] | |
- [ '5.3', 'MYCFLAGS=-fPIC' ] | |
- [ '5.2', 'MYCFLAGS=-fPIC' ] | |
- [ '5.1', 'CFLAGS="-O2 -Wall -DLUA_USE_LINUX -fPIC"' ] | |
- [ 'luajit', 'XCFLAGS=-fPIC' ] | |
- [ 'luajit-openresty', 'XCFLAGS=-fPIC' ] | |
runs-on: ubuntu-22.04 | |
name: Test on Lua ${{ matrix.luaVersion[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-${{ matrix.luaVersion[0] }}-${{ 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 libarchive-tools libfontconfig1-dev libharfbuzz-dev libicu-dev libpng-dev poppler-utils | |
- name: Setup ‘lua’ | |
uses: hishamhm/gh-actions-lua@master | |
with: | |
luaVersion: ${{ matrix.luaVersion[0] }} | |
luaCompileFlags: ${{ matrix.luaVersion[1] }} | |
- name: Setup ‘cargo’ | |
uses: actions-rs/toolchain@v1 | |
- name: Setup ‘luarocks’ | |
uses: hishamhm/gh-actions-luarocks@master | |
- name: Prep system Lua for use | |
run: | | |
luarocks install busted | |
function deepest () { find $1 -type d | awk 'length>m{m=length;r=$0}END{print r}'; } | |
cat << EOF >> $GITHUB_ENV | |
LD_LIBRARY_PATH=$PWD/.lua/lib:$LD_LIBRARY_PATH | |
LIBRARY_PATH=$PWD/.lua/lib:$LIBRARY_PATH | |
LD_RUN_PATH=$PWD/.lua/lib:$LD_RUN_PATH | |
PKG_CONFIG_PATH=$PWD/.lua/lib/pkgconfig:$PKG_CONFIG_PATH | |
LUA_INCLUDE=-I$(deepest $PWD/.lua/include) | |
MAKEFLAGS=-j$(nproc) -Otarget | |
EOF | |
- name: Configure | |
run: | | |
./bootstrap.sh | |
./configure \ | |
${{ matrix.luaVersion[1] }} \ | |
--enable-developer-mode LDOC=false LUACHECK=false NIX=false DELTA=cat STYLUA=false TYPOS=false \ | |
--disable-font-variations \ | |
--with${{ !startsWith(matrix.luaVersion[0], 'luajit') && 'out' || '' }}-luajit \ | |
--without-system-luarocks \ | |
--without-manual | |
- name: Make | |
run: | | |
make | |
- name: Prove SILE runs at all | |
run: | | |
make selfcheck | |
- name: Test Busted | |
continue-on-error: ${{ matrix.luaVersion[0] == '5.1' }} | |
timeout-minutes: ${{ runner.debug && 20 || 2 }} | |
run: | | |
make busted | |
- name: Test Regressions | |
timeout-minutes: ${{ runner.debug && 20 || 2 }} | |
run: | | |
make regressions | |
- name: Test Cargo | |
timeout-minutes: ${{ runner.debug && 20 || 2 }} | |
run: | | |
make cargo-test | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-${{ matrix.luaVersion[0] }}-actuals | |
path: tests/*.actual |