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

Bump AX macros again as submitted upstream #2175

Merged
merged 4 commits into from
Nov 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .cirrus.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ task:
--disable-font-variations \
--with-system-lua-sources \
--with-system-luarocks \
--with-luarocks=luarocks51 \
--without-manual
make_script:
- gmake all
Expand Down
64 changes: 51 additions & 13 deletions build-aux/ax_lua_module.m4
Original file line number Diff line number Diff line change
@@ -1,15 +1,53 @@
#serial 0

AC_DEFUN([AX_LUA_MODULE],
[
AX_PROG_LUA([5.1], [], [], [], [prefer])
AC_MSG_CHECKING([whether Lua can load module $1])
AS_IF([$LUA -e 'require("$1")' 2>/dev/null], [
AC_MSG_RESULT([loaded])
$3
], [
AC_MSG_RESULT([unable to load])
m4_default([$4], [AC_MSG_ERROR([cannot find Lua library $1 - install from luarocks package $2])])
])
# ===========================================================================
# https://www.gnu.org/software/autoconf-archive/ax_lua_module.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_LUA_MODULE([ROCKNAME], [MODULE])
#
# DESCRIPTION
#
# Tests the availability of a Lua module using both available mechanisms,
# first checking if a Lua Rock manifest is available, and if not falling
# back to attempting to load a module directly.
#
# If the module name is the same as the rock name, the second argument can
# be ommitted.
#
# Example usage:
#
# AX_LUA_MODULE([ssl], [luasec])
#
# Note: under the hood this uses AX_LUAROCKS_ROCK and AX_LUA_REQUIRE.
#
# LICENSE
#
# Copyright (c) 2024 Caleb Maclennan <[email protected]>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.

#serial 1

AC_DEFUN([AX_LUA_MODULE],[
pushdef([ROCKNAME],$1)
pushdef([MODULE],m4_default($2,$1))
pushdef([VARIABLE],LUA_HAS_[]m4_toupper(m4_translit($1,-.,__)))

AC_ARG_VAR(VARIABLE,Was Lua module found)

AS_IF(test -z "$VARIABLE",[
AX_LUAROCKS_ROCK(ROCKNAME,[VARIABLE=yes],[VARIABLE=no])
AS_IF([test "x$VARIABLE" != xyes],[
AX_LUA_REQUIRE(MODULE,[VARIABLE=yes])
])
])

popdef([ROCKNAME])
popdef([MODULE])
])


65 changes: 65 additions & 0 deletions build-aux/ax_lua_require.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# ===========================================================================
# https://www.gnu.org/software/autoconf-archive/ax_lua_require.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_LUA_REQUIRE([MODULE], [ACTION_IF_FOUND], [ACTION_IF_NOT_FOUND])
#
# DESCRIPTION
#
# Tests whether Lua can load a module, fails if it is not loadable.
#
# Example usage:
#
# AX_LUA_REQUIRE(lpeg)
#
# Note: this is an alternative to AX_LUAROCKS_ROCK which queries the
# LuaRocks manifest for whether something is installed. Sometimes a
# proper manifest is not available, and this tests whether a given
# module name is actually loadable.
#
# It can also be useful to test for libraries that may or may not be
# built into Lua VMs. Builtin modules will return a success.
#
# LICENSE
#
# Copyright (c) 2024 Caleb Maclennan <[email protected]>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.

#serial 1

AC_DEFUN([AX_LUA_REQUIRE],[
# Make sure we have a Lua interpreter
if test -z "$LUA"; then
AX_PROG_LUA
if test -z "$LUA"; then
AC_MSG_ERROR([No Lua VM set])
fi
fi

AC_PREREQ([2.61])

pushdef([MODULE],$1)
pushdef([ACTION_IF_FOUND],$2)
pushdef([ACTION_IF_NOT_FOUND],$3)

AC_MSG_CHECKING([whether Lua can load module MODULE])
AS_IF([$LUA -e 'require("MODULE")' 2>/dev/null], [
AC_MSG_RESULT([loaded])
ACTION_IF_FOUND
], [
AC_MSG_RESULT([unable to load])
m4_ifset([ACTION_IF_NOT_FOUND][ACTION_IF_NOT_FOUND],
[AC_MSG_FAILURE([cannot find Lua module MODULE])])
])

popdef([MODULE])
popdef([ACTION_IF_FOUND])
popdef([ACTION_IF_NOT_FOUND])
])

62 changes: 62 additions & 0 deletions build-aux/ax_luarocks_rock.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# ===========================================================================
# https://www.gnu.org/software/autoconf-archive/ax_luarocks_rock.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_LUAROCKS_ROCK([ROCKNAME], [ACTION_IF_FOUND], [ACTION_IF_NOT_FOUND])
#
# DESCRIPTION
#
# Checks for a rock, and fails if it is not installed.
#
# Example usage:
#
# AX_LUAROCKS_ROCK(stdlib)
#
# Note: use of this macro is not normally recommended. Normally, LuaRocks
# should be used to drive the build system, and it takes care of rock
# dependencies. Use this macro only if LuaRocks cannot be used at the top
# level, for example, in a build system that uses Lua only incidentally.
#
# LICENSE
#
# Copyright (c) 2024 Caleb Maclennan <[email protected]>
# Copyright (c) 2016 Reuben Thomas <[email protected]>
#
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any
# warranty.

#serial 4

AC_DEFUN([AX_LUAROCKS_ROCK],[
# Make sure we have luarocks
if test -z "$LUAROCKS"; then
AX_WITH_PROG(LUAROCKS,luarocks)
if test -z "$LUAROCKS"; then
AC_MSG_ERROR([can't find luarocks])
fi
fi

AC_PREREQ([2.61])

pushdef([ROCKNAME],$1)
pushdef([ACTION_IF_FOUND],$2)
pushdef([ACTION_IF_NOT_FOUND],$3)

AC_MSG_CHECKING(whether LuaRock ROCKNAME is installed)
AS_IF(["$LUAROCKS"${LUA_VERSION+ --lua-version $LUA_VERSION} show ROCKNAME > /dev/null 2>&1],[
AC_MSG_RESULT(yes)
ACTION_IF_FOUND
],[
AC_MSG_RESULT(no)
m4_ifset([ACTION_IF_NOT_FOUND],[ACTION_IF_NOT_FOUND],
[AC_MSG_FAILURE([LuaRock ROCKNAME not found])])
])

popdef([ROCKNAME])
popdef([ACTION_IF_FOUND])
popdef([ACTION_IF_NOT_FOUND])
])
4 changes: 4 additions & 0 deletions build-aux/pkg.nix
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@ let
ps:
with ps;
[
# used for module detection, also recommended at runtime for 3rd party module installation
luarocks

# modules used at runtime
cassowary
cldr
fluent
Expand Down
10 changes: 8 additions & 2 deletions build-aux/que_progvar.m4
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
AC_DEFUN([QUE_PROGVAR], [
test -n "$m4_toupper($1)" || { AC_PATH_PROG(m4_toupper($1), m4_default($2,$1)) }
test -n "$m4_toupper($1)" || AC_MSG_ERROR([m4_default($2,$1) is required])
pushdef([VARIABLE],m4_toupper($1))
pushdef([EXECUTABLE],m4_default($2,$1))
AX_WITH_PROG(VARIABLE,EXECUTABLE)
AS_IF([test "x$with_$1" != xno && test -z "$VARIABLE"], [
AC_MSG_ERROR([EXECUTABLE is required])
])
popdef([EXECUTABLE])
popdef([VARIABLE])
])

46 changes: 21 additions & 25 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ QUE_PROGVAR([diff])
QUE_PROGVAR([find])
QUE_PROGVAR([head])
QUE_PROGVAR([jq])
QUE_PROGVAR([luarocks])
QUE_PROGVAR([pdfinfo])
QUE_PROGVAR([sort])
QUE_PROGVAR([xargs])
Expand Down Expand Up @@ -189,7 +190,6 @@ AM_COND_IF([DEVELOPER_TOOLS], [
QUE_PROGVAR([curl])
QUE_PROGVAR([ldoc])
QUE_PROGVAR([luacheck])
QUE_PROGVAR([luarocks])
QUE_PROGVAR([nix])
QUE_PROGVAR([npm])
QUE_PROGVAR([perl])
Expand All @@ -205,32 +205,28 @@ AX_LUA_LIBS

AM_COND_IF([SYSTEM_LUAROCKS], [
AS_IF([test "$LUA_SHORT_VERSION" -lt 52], [
AM_COND_IF([LUAJIT], [], [
AX_LUA_MODULE([bit32], [bit32])
])
])
AX_LUA_MODULE([cassowary], [cassowary])
AS_IF([test "$LUA_SHORT_VERSION" -lt 53], [
AX_LUA_MODULE([compat53], [compat53])
AM_COND_IF([LUAJIT], [], [AX_LUA_MODULE(bit32)])
])
AX_LUA_MODULE([cldr], [cldr])
AX_LUA_MODULE([fluent], [fluent])
AX_LUA_MODULE([linenoise], [linenoise])
AX_LUA_MODULE([loadkit], [loadkit])
AX_LUA_MODULE([lpeg], [lpeg])
AX_LUA_MODULE([zlib], [lua-zlib])
AX_LUA_MODULE([cliargs], [lua_cliargs])
AX_LUA_MODULE([epnf], [luaepnf])
AX_LUA_MODULE([lxp], [luaexpat])
AX_LUA_MODULE([lfs], [luafilesystem])
AX_LUA_MODULE([repl], [luarepl])
AX_LUA_MODULE([ssl], [luasec])
AX_LUA_MODULE([socket], [luasocket])
AX_LUA_MODULE([lua-utf8], [luautf8])
AX_LUA_MODULE([pl], [penlight])
AX_LUA_MODULE([vstruct], [vstruct])
AX_LUA_MODULE(cassowary)
AS_IF([test "$LUA_SHORT_VERSION" -lt 53], [AX_LUA_MODULE(compat53)])
AX_LUA_MODULE(cldr)
AX_LUA_MODULE(fluent)
AX_LUA_MODULE(linenoise)
AX_LUA_MODULE(loadkit)
AX_LUA_MODULE(lpeg)
AX_LUA_MODULE(lua-zlib, zlib)
AX_LUA_MODULE(lua_cliargs, cliargs)
AX_LUA_MODULE(luaepnf, epnf)
AX_LUA_MODULE(luaexpat, lxp)
AX_LUA_MODULE(luafilesystem, lfs)
AX_LUA_MODULE(luafilesystem)
AX_LUA_MODULE(luarepl, repl)
AX_LUA_MODULE(luasec, ssl)
AX_LUA_MODULE(luasocket, socket)
AX_LUA_MODULE(luautf8, lua-utf8)
AX_LUA_MODULE(penlight, pl)
AX_LUA_MODULE(vstruct)
], [
QUE_PROGVAR([luarocks])
QUE_PROGVAR([git]) # required for luarocks to install zlib rock
])

Expand Down
1 change: 0 additions & 1 deletion flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,6 @@
"--with-manual"
];
nativeBuildInputs = sile.nativeBuildInputs ++ [
pkgs.luarocks
# For regression test diff highlighting
pkgs.delta
# For commitlint git hook
Expand Down
Loading