From 10c04b9b70886b14377c8a80165978601c8617ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius=20dos=20Santos=20Oliveira?= Date: Thu, 25 Feb 2021 10:22:20 -0300 Subject: [PATCH] Add emilua --- gnu/packages/lua.scm | 60 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm index c03eea3c70..b98427cbde 100644 --- a/gnu/packages/lua.scm +++ b/gnu/packages/lua.scm @@ -37,8 +37,11 @@ #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) + #:use-module (guix build-system meson) #:use-module (guix build-system trivial) #:use-module (gnu packages) + #:use-module (gnu packages gcc) + #:use-module (gnu packages build-tools) #:use-module (gnu packages readline) #:use-module (gnu packages m4) #:use-module (gnu packages tls) @@ -47,6 +50,11 @@ #:use-module (gnu packages libevent) #:use-module (gnu packages libffi) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages boost) + #:use-module (gnu packages tls) + #:use-module (gnu packages ncurses) + #:use-module (gnu packages vim) + #:use-module (gnu packages re2c) #:use-module (gnu packages xorg) #:use-module (gnu packages gtk)) @@ -1151,3 +1159,55 @@ shell command executions.") simplicity, and reach of Lua with the flexibility of a Lisp syntax and macro system.") (license license:expat))) + +(define-public emilua + (package + (name "emilua") + (version "0.2.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/emilua/emilua.git") + (commit (string-append "v" version)) + ; Current version requires bundled CLI11 and fmt, but at some + ; future release the ones found in the system could be used + ; instead. Current version also requires Trial.Protocol and + ; the HTTP lib developed as part of GSoC 2014 for Boost, but + ; these are dependencies unlikely to be "unbundled" in future + ; releases. + (recursive? #t))) + (sha256 + (base32 + "1d6k5v6x85fbvz2ijq1imnfdwvqmsav4xp021a5v3ah4mgy7yann")))) + (build-system meson-build-system) + (arguments + `(#:meson ,meson-0.55 + ; Tests are disabled for now due to an issue that affecs guix: + ; + #:configure-flags '("-Denable_http=false" "-Denable_tests=false"))) + (inputs + `(("boost" ,boost) + ("boost-static" ,boost-static) + ; LuaJIT has a 2GiB addressing limit[1] that has been fixed on OpenResty + ; fork. Emilua is severely affected by this limit, so the upstream package + ; is avoided. Emilua also depends on the -DLUAJIT_ENABLE_LUA52COMPAT + ; configure flag[2] for some features to work (e.g. __pairs on HTTP + ; headers). + ; + ; [1] + ; [2] + ("luajit-lua52-openresty" ,luajit-lua52-openresty) + ("openssl" ,openssl) + ("ncurses" ,ncurses))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("gcc" ,gcc-10) ; gcc-7 is too old for our C++17 needs + ("luajit-lua52-openresty" ,luajit-lua52-openresty) + ("xxd" ,xxd) + ("re2c" ,re2c))) + (synopsis "Lua execution engine") + (description + "A LuaJIT-based Lua execution engine that supports async IO, fibers and +actor-inspired threading. The experimental builtin HTTP module is enabled.") + (home-page "https://gitlab.com/emilua/emilua") + (license license:boost1.0))) -- 2.30.1