diff options
Diffstat (limited to 'gnu/packages/web.scm')
-rw-r--r-- | gnu/packages/web.scm | 267 |
1 files changed, 241 insertions, 26 deletions
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index b8ff15892b..f7d10a0a17 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2013 Aljosha Papsch <misc@rpapsch.de> -;;; Copyright © 2014-2022 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014-2023 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018 Raoul Jean Pierre Bonnal <ilpuccio.febo@gmail.com> @@ -13,7 +13,7 @@ ;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org> ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> -;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org> +;;; Copyright © 2016, 2023 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2016–2022 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <me@tobias.gr> @@ -59,6 +59,9 @@ ;;; Copyright © 2022 Pradana Aumars <paumars@courrier.dev> ;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com> ;;; Copyright © 2022 jgart <jgart@dismail.de> +;;; Copyright © 2023 Paul A. Patience <paul@apatience.com> +;;; Copyright © 2022 Bruno Victal <mirai@makinata.eu> +;;; Copyright © 2023 David Thompson <dthompson2@worcester.edu> ;;; ;;; This file is part of GNU Guix. ;;; @@ -147,6 +150,7 @@ #:use-module (gnu packages imagemagick) #:use-module (gnu packages kde) #:use-module (gnu packages kerberos) + #:use-module (gnu packages libbsd) #:use-module (gnu packages libevent) #:use-module (gnu packages libidn) #:use-module (gnu packages libunistring) @@ -385,14 +389,14 @@ the same, being completely separated from the Internet.") ;; Track the ‘mainline’ branch. Upstream considers it more reliable than ;; ’stable’ and recommends that “in general you deploy the NGINX mainline ;; branch at all times” (https://www.nginx.com/blog/nginx-1-6-1-7-released/) - (version "1.23.2") + (version "1.23.3") (source (origin (method url-fetch) (uri (string-append "https://nginx.org/download/nginx-" version ".tar.gz")) (sha256 (base32 - "0ihbkfcqlqadzkdk813raq15qqrahss1gdd81bkswanpsdrc4358")))) + "0m5s8a04jlpv6qhk09sfqbj4rxj38g6923w12j5y3ymrvf3mgjvm")))) (build-system gnu-build-system) (inputs (list libxml2 libxslt openssl pcre zlib)) (arguments @@ -410,6 +414,7 @@ the same, being completely separated from the Internet.") "--with-debug" "--with-stream" "--with-stream_ssl_module" + "--with-http_stub_status_module" ;; Even when not cross-building, we pass the ;; --crossbuild option to avoid customizing for the ;; kernel version on the build machine. @@ -481,9 +486,9 @@ and as a proxy to reduce the load on back-end HTTP or mail servers.") (define-public nginx-documentation ;; This documentation should be relevant for the current nginx package. - (let ((version "1.23.1") - (revision 2898) - (changeset "0b7e004b5061")) + (let ((version "1.23.3") + (revision 2916) + (changeset "178f55cf631a")) (package (name "nginx-documentation") (version (simple-format #f "~A-~A-~A" version revision changeset)) @@ -495,7 +500,7 @@ and as a proxy to reduce the load on back-end HTTP or mail servers.") (file-name (string-append name "-" version)) (sha256 (base32 - "027q7gnx7k3hgj7qana44g383fvvj6ndz1kavr30mj2z87cnq3dp")))) + "0b03dnniwm3p3gd76vqs6lj2z4blqmb7y4lhn9vg7xjz0yqgzvn2")))) (build-system gnu-build-system) (arguments '(#:tests? #f ; no test suite @@ -834,10 +839,61 @@ on-demand streaming from a file on disk and pulling from an upstream RTMP stream. Remote control of the module is possible over HTTP.") (license license:bsd-2))) +(define-public nginx-module-vts + (package + (inherit nginx) + (name "nginx-module-vts") + (version "0.2.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/vozlt/nginx-module-vts") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "017298vpp1ra16xyfdbsczdrz0b0y67x6adkzcc98y6gb3kg52n7")))) + (build-system gnu-build-system) + (inputs + `(("nginx-sources" ,(package-source nginx)) + ,@(package-inputs nginx))) + (arguments + (substitute-keyword-arguments + `(#:make-flags '("modules") ;Only build this module not all of nginx. + ,@(package-arguments nginx)) + ((#:configure-flags flags) + #~(cons "--add-dynamic-module=." #$flags)) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'unpack-nginx-sources + (lambda _ + (begin + ;; The nginx source code is part of the module’s source. + (format #t "decompressing nginx source code~%") + (invoke "tar" "xvf" #$(this-package-input "nginx-sources") + ;; This package's LICENSE file would be + ;; overwritten with the one from nginx when + ;; unpacking the nginx source, so rename the nginx + ;; one when unpacking. + "--transform=s,/LICENSE$,/LICENSE.nginx," + "--strip-components=1")))) + (replace 'install + (lambda _ + (let ((modules-dir (string-append #$output + "/etc/nginx/modules"))) + (install-file "objs/ngx_http_vhost_traffic_status_module.so" modules-dir)))) + (delete 'fix-root-dirs) + (delete 'install-man-page))))) + (home-page "https://github.com/vozlt/nginx-module-vts") + (synopsis "NGINX module for monitoring virtual host traffic status") + (description "This NGINX module provides access to virtual host status information, +similar to live activity monitoring provided with NGINX plus.") + (license license:bsd-2))) + (define-public lighttpd (package (name "lighttpd") - (version "1.4.65") + (version "1.4.68") (source (origin (method url-fetch) (uri (string-append "https://download.lighttpd.net/lighttpd/" @@ -845,7 +901,7 @@ stream. Remote control of the module is possible over HTTP.") "lighttpd-" version ".tar.xz")) (sha256 (base32 - "1gi84fsc7x4d7r5vpg4pcwfk6j80wxvv64m94d041g4zca5ac3xz")))) + "111kb3lkcvbxw46dnsrgx9pfbdpzb807ikkn9pd1lgmnaap3fvz5")))) (build-system gnu-build-system) (arguments (list #:configure-flags @@ -1502,6 +1558,53 @@ These tools are intended for use in (or for development of) toolchains or other systems that want to manipulate WebAssembly files.") (license license:asl2.0))) +(define-public wasm3 + (package + (name "wasm3") + (version "0.5.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/wasm3/wasm3") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "07zzmk776j8ydyxhrnnjiscbhhmz182a62r6aix6kfk5kq2cwia2")))) + (build-system cmake-build-system) + (arguments + ;; The default WASI option "uvwasi" causes CMake to initiate a 'git + ;; clone' which cannot happen within the build container. + '(#:configure-flags '("-DBUILD_WASI=simple") + ;; No check target. There are tests but they require a network + ;; connection to download the WebAssembly core test suite. + #:tests? #f + ;; There is no install target. Instead, we have to manually copy the + ;; wasm3 build artifacts to the output directory. + #:phases + (modify-phases %standard-phases + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bindir (string-append out "/bin")) + (includedir (string-append out "/include")) + (libdir (string-append out "/lib"))) + (mkdir-p bindir) + (mkdir-p includedir) + (mkdir-p libdir) + (copy-file "wasm3" (string-append bindir "/wasm3")) + (for-each (lambda (header) + (copy-file header + (string-append includedir "/" + (basename header)))) + (find-files "../source/source" "\\.h$")) + (copy-file "source/libm3.a" + (string-append libdir "/libm3.a")))))))) + (home-page "https://github.com/wasm3/wasm3") + (synopsis "WebAssembly interpreter") + (description "WASM3 is a fast WebAssembly interpreter.") + (license license:expat))) + (define-public websocketpp (package (name "websocketpp") @@ -4927,7 +5030,7 @@ time strings.") (define-public go-github-com-itchyny-gojq (package (name "go-github-com-itchyny-gojq") - (version "0.12.9") + (version "0.12.11") (source (origin (method git-fetch) @@ -4936,7 +5039,7 @@ time strings.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1m4zchhhi2428r1v0qz08drac4s63mag1pwcqzsf6n495yc3g0h0")))) + (base32 "1dqmnxnipi497nx9x10ifack09w41579svryss5q2w5wxy0pg764")))) (build-system go-build-system) (inputs (list go-github-com-google-go-cmp-cmp @@ -5026,15 +5129,16 @@ playback of HTTP request/response traces.") (define-public woof (package (name "woof") - (version "2012-05-31") + (version "20220202") (source (origin - (method url-fetch) - (uri (string-append - "http://www.home.unix-ag.org/simon/woof-" - version ".py")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/simon-budig/woof") + (commit (string-append name "-" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "0wjmjhpg6xlid33yi59j47q2qadz20sijrqsjahj30vngz856hyq")))) + "0rm8xs5dhy42jhjpx30vwnvps2rnmrh8scfr89j6dnihc6mpjkmn")))) (build-system trivial-build-system) (arguments '(#:modules ((guix build utils)) @@ -5047,11 +5151,10 @@ playback of HTTP request/response traces.") (python (assoc-ref %build-inputs "python"))) (mkdir-p bin) (with-directory-excursion bin - (copy-file source "woof") - (patch-shebang "woof" (list (string-append python "/bin"))) - (chmod "woof" #o555)) + (copy-file (in-vicinity source "woof") "woof") + (patch-shebang "woof" (list (string-append python "/bin")))) #t)))) - (inputs `(("python" ,python-2))) + (inputs (list python)) (home-page "http://www.home.unix-ag.org/simon/woof.html") (synopsis "Single file web server") (description "Woof (Web Offer One File) is a small simple web server that @@ -6551,7 +6654,7 @@ file links.") cairo gdk-pixbuf gtk+ - libressl + openssl-3.0 pango)) (home-page "https://git.sr.ht/~julienxx/castor") (synopsis "Graphical client for plain-text protocols") @@ -7474,6 +7577,73 @@ object. It's meant as a replacement for @code{HTML::Lint}, which is written in Perl but is not nearly as capable as @code{HTML::Tidy}.") (license license:artistic2.0))) +(define-public gophernicus + ;; Contains some unreleased fixes. + (let ((commit "da3390089c2a856db1ab2e3bd9751b9a9101a33a") + (revision "0")) + (package + (name "gophernicus") + (version (git-version "3.1.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/gophernicus/gophernicus") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0a7kpymwqcsqzszdxvcqppbg61bpyg9f7raj783pldm4kf2wjyij")))) + (build-system gnu-build-system) + (arguments + (list #:tests? #f ; No tests + #:configure-flags + ;; Listener and hostname used only in configuration files, which + ;; we don't install. + ;; This is what's done in the release.sh script. + #~(list "--listener=none" "--hostname=HOSTNAME") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-version + (lambda _ + (substitute* "Makefile.in" + (("^(VERSION += ).*" _ prefix) + (string-append prefix #$version "\n"))) + ;; This is done in the release.sh script. + (substitute* "README.md" + (("^(This release: Version )DEVEL\\b.*" _ prefix) + (string-append prefix #$version "\n")) + (("^NOTE: The master branch is rolling Development\\b.*") + "")))) + (replace 'configure + ;; The configure script is hand-written, not from GNU autotools. + (lambda* (#:key configure-flags #:allow-other-keys) + (setenv "CC" #$(cc-for-target)) + (setenv "HOSTCC" "gcc") + (apply invoke "./configure" + (string-append "--prefix=" #$output) + configure-flags)))))) + ;; TODO: Make configure script find libwrap. + ;;(inputs + ;; (list tcp-wrappers)) + (home-page "https://gophernicus.org/") + (synopsis "Gopher protocol server") + (description + "Gophernicus is a Gopher protocol server. Its features include: +@itemize +@item written with security in mind; +@item automatically generated Gopher menus; +@item gophertags for virtually renaming directories; +@item personal gopherspaces, located in @file{~/public_gopher/}; +@item virtual hosting; +@item CGI support; +@item output filtering and PHP support; +@item charset support and conversions; +@item selector rewriting; +@item session tracking and statistics; +@item TLS/SSL and proxy support. +@end itemize") + (license license:bsd-2)))) + (define-public geomyidae (package (name "geomyidae") @@ -7643,7 +7813,7 @@ compressed JSON header blocks. (define-public hpcguix-web (package (name "hpcguix-web") - (version "0.2.0") + (version "0.3.0") (source (origin (method git-fetch) (uri (git-reference @@ -7652,7 +7822,7 @@ compressed JSON header blocks. (file-name (git-file-name name version)) (sha256 (base32 - "1l856d1vr63ns1sp9fm6v97p71mx00769k6lwzqzppsb9clksnwp")))) + "1g1sd5d6fhrblqk3rc8hzkk1sxyiilbb45kdgbrfg7ccd1sbic30")))) (build-system gnu-build-system) (arguments `(#:modules ((guix build gnu-build-system) @@ -7677,9 +7847,11 @@ compressed JSON header blocks. (bs (assoc-ref inputs "guile-bytestructures")) (json (assoc-ref inputs "guile-json")) (zlib (assoc-ref inputs "guile-zlib")) + (syntax (assoc-ref inputs "guile-syntax-highlight")) (guile-cm (assoc-ref inputs "guile-commonmark")) - (deps (list guile gcrypt git bs zlib guile-cm guix json)) + (deps (list guile gcrypt git bs zlib guile-cm + syntax guix json)) (effective (read-line (open-pipe* OPEN_READ @@ -7709,6 +7881,7 @@ compressed JSON header blocks. guile-zlib guile-commonmark guile-json-4 + guile-syntax-highlight bash-minimal)) (home-page "https://github.com/UMCUGenetics/hpcguix-web") (synopsis "Web interface for cluster deployments of Guix") @@ -8066,6 +8239,48 @@ concurrency, and return status.") (license (list license:gpl3+ license:bsd-3)))) ;; for ini.c and ini.h +(define-public vger + (package + (name "vger") + (version "2.0.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://tildegit.org/solene/vger") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1jiwzn5dqadwq4ih3vzld66yq23gqsf7281sllh29bf6kmf9dz2k")))) + (build-system gnu-build-system) + (arguments + (list #:test-target "test" + #:make-flags + #~(list (string-append "CC=" #$(cc-for-target)) + (string-append "PREFIX=" #$output)) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-makefile + (lambda _ + (substitute* "Makefile" + (("\\binstall -o root -g wheel vger ") + "install vger ") + (("\\binstall -o root -g wheel vger\\.8 ") + "install -m 644 vger.8 ")))) + (add-before 'install 'make-install-dirs + (lambda _ + (mkdir-p (string-append #$output "/bin")) + (mkdir-p (string-append #$output "/man/man8"))))))) + (inputs + (list libbsd)) + (home-page "https://tildegit.org/solene/vger") + (synopsis "Gemini protocol server") + (description "Vger is a Gemini protocol server that supports chroots, +virtualhosts, CGI, default language choice, redirections and MIME-type +detection. It delegates TLS support to an external daemon, for example +@command{stunnel} on @command{inetd}.") + (license license:bsd-2))) + (define-public libzim (package (name "libzim") |