gnu: Add emilua.

* gnu/packages/lua.scm (emilua): New variable.
This commit is contained in:
Vinícius dos Santos Oliveira 2021-02-25 10:22:20 -03:00 committed by Nicolas Goaziou
parent 68a9e933c7
commit f4ac757176
No known key found for this signature in database
GPG key ID: DA00B4F048E92F2D

View file

@ -13,6 +13,7 @@
;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2020 Simon South <simon@simonsouth.net>
;;; Copyright © 2020 Paul A. Patience <paul@apatience.com>
;;; Copyright © 2021 Vinícius dos Santos Oliveira <vini.ipsmaker@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -37,8 +38,11 @@ (define-module (gnu packages lua)
#: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 @@ (define-module (gnu packages lua)
#: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 @@ (define-public lua-resty-shell
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:
;; <https://gitlab.com/emilua/emilua/-/issues/22>
#: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] <http://hacksoflife.blogspot.com/2012/12/integrating-luajit-with-x-plane-64-bit.html>
;; [2] <http://luajit.org/extensions.html#lua52>
("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")