From f4ac7571766d4192e9e7d4867ff1f589f0dd1c4b Mon Sep 17 00:00:00 2001 From: Vinícius dos Santos Oliveira Date: Thu, 25 Feb 2021 10:22:20 -0300 Subject: gnu: Add emilua. * gnu/packages/lua.scm (emilua): New variable. --- gnu/packages/lua.scm | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm index c03eea3c70..5f9f859e93 100644 --- a/gnu/packages/lua.scm +++ b/gnu/packages/lua.scm @@ -13,6 +13,7 @@ ;;; Copyright © 2020 Nicolas Goaziou ;;; Copyright © 2020 Simon South ;;; Copyright © 2020 Paul A. Patience +;;; Copyright © 2021 Vinícius dos Santos Oliveira ;;; ;;; This file is part of GNU Guix. ;;; @@ -37,8 +38,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 +51,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)) @@ -1096,6 +1105,59 @@ signals to Linux processes.") shell command executions.") (license license:bsd-3))) +(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"))) + (native-inputs + `(("gcc" ,gcc-10) ; gcc-7 is too old for our C++17 needs + ("luajit-lua52-openresty" ,luajit-lua52-openresty) + ("pkg-config" ,pkg-config) + ("re2c" ,re2c) + ("xxd" ,xxd))) + (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) + ("ncurses" ,ncurses) + ("openssl" ,openssl))) + (home-page "https://gitlab.com/emilua/emilua") + (synopsis "Lua execution engine") + (description + "Emilua is a LuaJIT-based Lua execution engine that supports async IO, +fibers and actor-inspired threading. The experimental builtin HTTP module is +enabled.") + (license license:boost1.0))) + (define-public fennel (package (name "fennel") -- cgit v1.2.3