~ruther/guix-local

10bc07671e2a3a699d4f56e405f50d766323319a — Valter Nazianzeno 2 years ago 07d43c6
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 <mail@cbaines.net>
1 files changed, 97 insertions(+), 54 deletions(-)

M gnu/packages/lua.scm
M gnu/packages/lua.scm => gnu/packages/lua.scm +97 -54
@@ 19,6 19,7 @@
;;; Copyright © 2022 Luis Henrique Gomes Higino <luishenriquegh2701@gmail.com>
;;; Copyright © 2022 Leo Nikkilä <hello@lnikki.la>
;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream>
;;; Copyright © 2023 Valter Nazianzeno <manipuladordedados@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 50,14 51,18 @@
  #: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 @@ shell command executions.")

(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:
      ;; <https://gitlab.com/emilua/emilua/-/issues/22>
    (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] <http://hacksoflife.blogspot.com/2012/12/integrating-luajit-with-x-plane-64-bit.html>
          ;; [2] <http://luajit.org/extensions.html#lua52>
          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