From 10bc07671e2a3a699d4f56e405f50d766323319a Mon Sep 17 00:00:00 2001 From: Valter Nazianzeno Date: Thu, 24 Aug 2023 08:08:25 -0300 Subject: gnu: emilua: Update to 0.4.3. * gnu/packages/lua.scm (emilua): Update to 0.4.3. [source]: Remove recursive? and replace with inputs. [arguments]: Update style, add patch phase, enable tests and enable some more features. [native-inputs]: Add gperf, gawk and xdd. [inputs]: Add emilua-http and trial-protocol as origin is no longer recursive, also add serd, sord, libcap and liburing. Signed-off-by: Christopher Baines --- gnu/packages/lua.scm | 151 +++++++++++++++++++++++++++++++++------------------ 1 file changed, 97 insertions(+), 54 deletions(-) (limited to 'gnu/packages/lua.scm') diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm index 405f8511cb..3b58952911 100644 --- a/gnu/packages/lua.scm +++ b/gnu/packages/lua.scm @@ -19,6 +19,7 @@ ;;; Copyright © 2022 Luis Henrique Gomes Higino ;;; Copyright © 2022 Leo Nikkilä ;;; Copyright © 2023 Yovan Naumovski +;;; Copyright © 2023 Valter Nazianzeno ;;; ;;; This file is part of GNU Guix. ;;; @@ -50,14 +51,18 @@ (define-module (gnu packages lua) #:use-module (gnu packages bash) #:use-module (gnu packages boost) #:use-module (gnu packages build-tools) + #:use-module (gnu packages gcc) #:use-module (gnu packages glib) + #:use-module (gnu packages gperf) #:use-module (gnu packages gtk) #:use-module (gnu packages libevent) #:use-module (gnu packages libffi) + #:use-module (gnu packages linux) #:use-module (gnu packages m4) #:use-module (gnu packages ncurses) #:use-module (gnu packages pkg-config) #:use-module (gnu packages pretty-print) + #:use-module (gnu packages rdf) #:use-module (gnu packages re2c) #:use-module (gnu packages readline) #:use-module (gnu packages tls) @@ -1129,63 +1134,101 @@ (define-public lua-resty-shell (define-public emilua (package - (name "emilua") - (version "0.3.2") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://gitlab.com/emilua/emilua.git") - (commit (string-append "v" version)) - ;; Current version requires Trial.Protocol and the HTTP lib - ;; developed as part of GSoC 2014 for Boost, and these are - ;; dependencies unlikely to be "unbundled" in future releases. - (recursive? #t))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1999bgrh52124a5g4qizav3x257ff2brjr855srpm1jv1nxzbygv")))) - (build-system meson-build-system) - (arguments - `(;; Tests are disabled for now due to an issue that affecs guix: - ;; + (name "emilua") + (version "0.4.3") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/emilua/emilua.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1dwag2pyqc0g86rris4w4fzafmz9a6kiqd47vdq7hl3a1lyi74mx")))) + (build-system meson-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/emilua_gperf.awk" + (("/usr/bin/env") (which "env"))) + (substitute* "src/system.cpp" + (("P_PIDFD") "P_PID")) + + (copy-recursively + (assoc-ref inputs "emilua-http") + "emilua-http") + (copy-recursively + (assoc-ref inputs "trial-protocol") + "trial-protocol") + + (with-directory-excursion "subprojects" + (symlink "../emilua-http" "emilua-http") + (copy-file "packagefiles/emilua-http/meson.build" + "emilua-http/meson.build") + (symlink "../trial-protocol" "trial-protocol") + (copy-file "packagefiles/trial.protocol/meson.build" + "trial-protocol/meson.build"))))) #:configure-flags - (list "-Denable_http=true" - "-Denable_tests=false" - "-Denable_manpages=false" - "-Dversion_suffix=-guix1"))) - (native-inputs - (list luajit-lua52-openresty - pkg-config - re2c - xxd)) - (inputs - (list boost - boost-static - fmt-7 - ;; 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 - ncurses - openssl)) - (native-search-paths - (list - (search-path-specification - (variable "EMILUA_PATH") - (files - (list (string-append "lib/emilua-" (version-major+minor version))))))) - (home-page "https://gitlab.com/emilua/emilua") - (synopsis "Lua execution engine") - (description - "Emilua is a LuaJIT-based Lua execution engine that supports async IO, + #~(list "-Denable_http=true" + "-Denable_file_io=true" + "-Denable_io_uring=true" + ;; TODO: Linux namespaces are disabled for now due to conflict + ;; with some packages in guix. + "-Denable_linux_namespaces=false" + "-Denable_manpages=false" + "-Dversion_suffix=-guix1"))) + (native-inputs + (list luajit-lua52-openresty + re2c + gperf + xxd + pkg-config)) + (inputs + `(("emilua-http" + ,(origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/BoostGSoC14/boost.http") + (commit "93ae527c89ffc517862e1f5f54c8a257278f1195"))) + (sha256 + (base32 + "0jm7fw0cjd3s9zkkvyh6mcj6z32hcy7l9bszv74l92qk15ivvp9h")))) + ("trial-protocol" + ,(origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/breese/trial.protocol") + (commit "79149f604a49b8dfec57857ca28aaf508069b669"))) + (sha256 + (base32 + "0k42i5b4v3zz5x0r3dssiymgmn2x8zg4fzdksya9aggxgigippsx")))) + ("boost" ,boost) + ("boost-static" ,boost-static) + ("fmt" ,fmt-8) + ("gcc" ,gcc-12) + ("luajit-lua52-openresty" ,luajit-lua52-openresty) + ("ncurses" ,ncurses) + ("serd" ,serd) + ("sord" ,sord) + ("libcap" ,libcap) + ("liburing" ,liburing) + ("openssl" ,openssl))) + (native-search-paths + (list + (search-path-specification + (variable "EMILUA_PATH") + (files + (list (string-append "lib/emilua-" (version-major+minor version))))))) + (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))) + (license license:boost1.0))) (define-public fennel (package -- cgit v1.2.3