Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Get Lua 5.1 CI working again #1887

Merged
merged 8 commits into from
Oct 11, 2023
39 changes: 21 additions & 18 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@ jobs:
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' ]
- '5.4'
- '5.3'
- '5.2'
- '5.1'
- 'luajit'
- 'luajit-openresty'
runs-on: ubuntu-22.04
name: Test on Lua ${{ matrix.luaVersion[0] }}
name: Test on Lua ${{ matrix.luaVersion }}
steps:
- name: Checkout
uses: actions/checkout@v4
Expand All @@ -38,12 +38,15 @@ jobs:
with:
path: |
lua_modules
key: luarocks-${{ matrix.luaVersion[0] }}-${{ hashFiles('Makefile-luarocks', 'sile.rockspec.in') }}
key: luarocks-${{ matrix.luaVersion }}-${{ hashFiles('Makefile-luarocks', 'sile.rockspec.in') }}
- 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: leafo/gh-actions-lua@v10
with:
luaVersion: ${{ matrix.luaVersion[0] }}
luaCompileFlags: ${{ matrix.luaVersion[1] }}
luaVersion: ${{ matrix.luaVersion }}
- name: Setup ‘luarocks’
uses: leafo/gh-actions-luarocks@v4
- name: Prep system Lua for use
Expand All @@ -58,32 +61,32 @@ jobs:
LUA_INCLUDE=-I$(deepest $PWD/.lua/include)
MAKEFLAGS=-j$(nproc) -Otarget
EOF
- 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: Configure
run: |
./bootstrap.sh
./configure \
--enable-developer LUACHECK=false NIX=false \
--disable-font-variations \
--without-system-luarocks \
--with${{ startsWith(matrix.luaVersion[0], '5') && 'out' || '' }}-luajit \
--with${{ !startsWith(matrix.luaVersion, 'luajit') && 'out' || '' }}-luajit \
--without-manual
- name: Make
run: |
make
- name: Prove SILE runs at all
run: |
make selfcheck
- name: Test Busted
timeout-minutes: ${{ runner.debug && 60 || 6 }}
continue-on-error: ${{ matrix.luaVersion == '5.1' }}
timeout-minutes: ${{ runner.debug && 20 || 2 }}
run: |
make busted
- name: Test Regressions
timeout-minutes: ${{ runner.debug && 60 || 6 }}
timeout-minutes: ${{ runner.debug && 20 || 2 }}
run: |
make regressions
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: test-${{ matrix.luaVersion[0] }}-actuals
name: test-${{ matrix.luaVersion }}-actuals
path: tests/*.actual
10 changes: 6 additions & 4 deletions Makefile-luarocks
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,18 @@ if !SYSTEM_LUAROCKS
LUAMODLOCK := sile-dev-1.rockslock

LOCALLUAROCKS := $(LUAROCKS) --tree lua_modules --lua-version $(LUA_VERSION)
TMPFILE != mktemp
genrockslock := $(LOCALLUAROCKS) $(LUAROCKSARGS) list --porcelain | $(AWK) '{print $$1 " " $$2}'
rocksmatch := ( T=$$(mktemp); trap 'rm -f "$$T"' EXIT HUP TERM; $(genrockslock) > "$$T"; $(CMP) -s $(LUAMODLOCK) "$$T" )

installrocks: $(LUAMODLOCK) $(shell $(rocksmatch) || echo lua_modules)
LUAROCKSMANIFEST := lua_modules/lib/luarocks/rocks-$(LUA_VERSION)/manifest

lua_modules: $(LUAMODSPEC) $(shell $(rocksmatch) || echo force)
installrocks: $(LUAMODLOCK) $(shell $(rocksmatch) || echo $(LUAROCKSMANIFEST))

$(LUAROCKSMANIFEST): $(LUAMODSPEC) $(shell $(rocksmatch) || echo force)
$(LOCALLUAROCKS) $(LUAROCKSARGS) install --only-deps $<
touch $@

$(LUAMODLOCK): lua_modules $(LUAMODSPEC)
$(LUAMODLOCK): $(LUAROCKSMANIFEST) $(LUAMODSPEC)
$(genrockslock) > $@
else
LUAMODLOCK :=
Expand Down
12 changes: 6 additions & 6 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -228,14 +228,14 @@ luacheck:

busted: $(SILE) $(addprefix .fonts/,$(TESTFONTFILES)) $(BUSTEDSPECS)
set -f; IFS=';'
if SYSTEM_LUAROCKS
packagecpath=(./{,core/}?.$(SHARED_LIB_EXT))
packagepath=(./{,lua-libraries/}?{,/init}.lua)
else
packagecpath=(./{,core/,lua_modules/lib/lua/$(LUA_VERSION)/}?.$(SHARED_LIB_EXT))
packagepath=(./{,lua_modules/share/lua/$(LUA_VERSION)/,lua-libraries/}?{,/init}.lua)
packagecpath=(./{,core/,{libtexpdf,justenough}/.libs/}?.$(SHARED_LIB_EXT))
if !SYSTEM_LUAROCKS
packagepath+=(./lua_modules/share/lua/$(LUA_VERSION)/?{,/init}.lua)
packagecpath+=(./lua_modules/lib/lua/$(LUA_VERSION)/?.$(SHARED_LIB_EXT))
endif
$(LOCALTESTFONTS) $(BUSTED) --cpath="$${packagecpath[*]};;" --lpath="$${packagepath[*]};;" $(BUSTEDFLAGS) .
# Note: use of --lua causes this to be passed back through a shell loosing one layer of quoting. Drop single quotes if removing.
$(LOCALFONTS) $(BUSTED) --lua=$(LUA) --lpath="'$${packagepath[*]};;'" --cpath="'$${packagecpath[*]};;'" $(BUSTEDFLAGS) .

coverage: export SILE_COVERAGE=1
coverage: BUSTEDFLAGS = -c
Expand Down
2 changes: 1 addition & 1 deletion packages/footnotes/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ function package:registerCommands ()
-- Apply the font before boxing, so relative baselineskip applies #1027
local material
SILE.call("footnote:font", {}, function ()
material = SILE.call("vbox", {}, function ()
material = SILE.call("vbox", {}, function ()
SILE.call("footnote:atstart", options)
SILE.call("footnote:counter", options)
SILE.process(content)
Expand Down
14 changes: 11 additions & 3 deletions src/justenoughharfbuzz.c
Original file line number Diff line number Diff line change
Expand Up @@ -145,9 +145,9 @@ int shape (lua_State *L) {
double point_size = luaL_checknumber(L, 6);
const char * featurestring = luaL_checkstring(L, 7);
char * shaper_list_string = luaL_checkstring(L, 8);
char ** shaper_list = NULL;
const char * const* shaper_list = NULL;
if (strlen(shaper_list_string) > 0) {
shaper_list = scan_shaper_list(shaper_list_string);
shaper_list = (const char * const*)scan_shaper_list(shaper_list_string);
}

hb_direction_t direction;
Expand Down Expand Up @@ -185,12 +185,12 @@ int shape (lua_State *L) {
}
glyph_info = hb_buffer_get_glyph_infos(buf, &glyph_count);
glyph_pos = hb_buffer_get_glyph_positions(buf, &glyph_count);
lua_checkstack(L, glyph_count*10);
for (j = 0; j < glyph_count; ++j) {
char namebuf[255];
hb_glyph_extents_t extents = {0,0,0,0};
hb_font_get_glyph_extents(hbFont, glyph_info[j].codepoint, &extents);

lua_checkstack(L, 3);
lua_newtable(L);
lua_pushstring(L, "name");
hb_font_get_glyph_name( hbFont, glyph_info[j].codepoint, namebuf, 255 );
Expand All @@ -206,21 +206,25 @@ int shape (lua_State *L) {
baseline, and we should use that and take out this condition. */
if (direction != HB_DIRECTION_TTB) {
if (glyph_pos[j].x_offset) {
lua_checkstack(L, 2);
lua_pushstring(L, "x_offset");
lua_pushnumber(L, glyph_pos[j].x_offset * point_size / upem);
lua_settable(L, -3);
}

if (glyph_pos[j].y_offset) {
lua_checkstack(L, 2);
lua_pushstring(L, "y_offset");
lua_pushnumber(L, glyph_pos[j].y_offset * point_size / upem);
lua_settable(L, -3);
}
}

lua_checkstack(L, 2);
lua_pushstring(L, "gid");
lua_pushinteger(L, glyph_info[j].codepoint);
lua_settable(L, -3);
lua_checkstack(L, 2);
lua_pushstring(L, "index");
lua_pushinteger(L, glyph_info[j].cluster);
lua_settable(L, -3);
Expand All @@ -240,17 +244,21 @@ int shape (lua_State *L) {
width = glyphAdvance;
glyphAdvance = height;
}
lua_checkstack(L, 2);
lua_pushstring(L, "glyphAdvance");
lua_pushnumber(L, glyphAdvance);
lua_settable(L, -3);

lua_checkstack(L, 2);
lua_pushstring(L, "width");
lua_pushnumber(L, width);
lua_settable(L, -3);

lua_checkstack(L, 2);
lua_pushstring(L, "height");
lua_pushnumber(L, height);
lua_settable(L, -3);
lua_checkstack(L, 2);
lua_pushstring(L, "depth");
lua_pushnumber(L, -tHeight - height);
lua_settable(L, -3);
Expand Down
Loading