diff options
Diffstat (limited to 'gnu/packages/web.scm')
-rw-r--r-- | gnu/packages/web.scm | 862 |
1 files changed, 621 insertions, 241 deletions
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index a71a0e07a3..d7314f2932 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -10,12 +10,12 @@ ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr> ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2016 Jelle Licht <jlicht@fsfe.org> -;;; Copyright © 2016-2023 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016-2024 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org> ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2016, 2023 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> -;;; Copyright © 2016–2023 Arun Isaac <arunisaac@systemreboot.net> +;;; Copyright © 2016–2024 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2016 Bake Timmons <b3timmons@speedymail.org> ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> @@ -30,7 +30,7 @@ ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com> ;;; Copyright © 2018 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de> ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com> -;;; Copyright © 2019, 2020-2021, 2023 Nicolas Goaziou <mail@nicolasgoaziou.fr> +;;; Copyright © 2019, 2020-2021, 2023, 2024 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2019 Brendan Tildesley <mail@brendan.scot> ;;; Copyright © 2019 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2019 Hartmut Goebel <h.goebel@crazy-compilers.com> @@ -40,7 +40,7 @@ ;;; Copyright © 2019, 2020 Florian Pelz <pelzflorian@pelzflorian.de> ;;; Copyright © 2020 Timotej Lazar <timotej.lazar@araneo.si> ;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz> -;;; Copyright © 2020, 2021, 2023 Janneke Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2020, 2021, 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2018, 2019, 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de> ;;; Copyright © 2020, 2021 Paul Garlick <pgarlick@tourbillion-technology.com> ;;; Copyright © 2020, 2022 Michael Rohleder <mike@rohleder.de> @@ -64,8 +64,10 @@ ;;; Copyright © 2023 David Thompson <dthompson2@worcester.edu> ;;; Copyright © 2023 Christopher Howard <christopher@librehacker.com> ;;; Copyright © 2023 Felix Lechner <felix.lechner@lease-up.com> -;;; Copyright © 2023 Evgeny Pisemsky <evgeny@pisemsky.com> +;;; Copyright © 2023 Evgeny Pisemsky <mail@pisemsky.site> ;;; Copyright © 2024 Tomas Volf <~@wolfsden.cz> +;;; Copyright © 2024 Zheng Junjie <873216071@qq.com> +;;; Copyright © 2024 Artyom V. Poptsov <poptsov.artyom@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -124,6 +126,7 @@ #:use-module (gnu packages crates-gtk) #:use-module (gnu packages crates-tls) #:use-module (gnu packages crates-web) + #:use-module (gnu packages crypto) #:use-module (gnu packages curl) #:use-module (gnu packages cyrus-sasl) #:use-module (gnu packages databases) @@ -148,6 +151,7 @@ #:use-module (gnu packages golang) #:use-module (gnu packages golang-build) #:use-module (gnu packages golang-check) + #:use-module (gnu packages golang-compression) #:use-module (gnu packages golang-web) #:use-module (gnu packages golang-xyz) #:use-module (gnu packages gperf) @@ -169,6 +173,7 @@ #:use-module (gnu packages libunwind) #:use-module (gnu packages linux) #:use-module (gnu packages lisp-xyz) + #:use-module (gnu packages logging) #:use-module (gnu packages lsof) #:use-module (gnu packages lua) #:use-module (gnu packages mail) @@ -184,9 +189,12 @@ #:use-module (gnu packages pcre) #:use-module (gnu packages perl) #:use-module (gnu packages perl-check) + #:use-module (gnu packages perl-compression) + #:use-module (gnu packages prometheus) #:use-module (gnu packages python) #:use-module (gnu packages python-build) #:use-module (gnu packages python-check) + #:use-module (gnu packages python-compression) #:use-module (gnu packages python-crypto) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) @@ -199,7 +207,7 @@ #:use-module (gnu packages serialization) #:use-module (gnu packages skribilo) #:use-module (gnu packages sphinx) - #:use-module (gnu packages syncthing) + #:use-module (gnu packages telephony) #:use-module (gnu packages texinfo) #:use-module (gnu packages textutils) #:use-module (gnu packages time) @@ -232,7 +240,7 @@ `(#:tests? #f ; no target #:imported-modules ((guix build copy-build-system) - ,@%gnu-build-system-modules) + ,@%default-gnu-imported-modules) #:modules (((guix build copy-build-system) #:prefix copy:) (guix build gnu-build-system) @@ -298,17 +306,18 @@ "1id45r2ccgkbjm9i998997ch32lvicpyynyx8x6aa4420wmdf5ps")))) (build-system gnu-build-system) (native-inputs (list `(,pcre "bin"))) ;for 'pcre-config' - (inputs (list apr apr-util openssl perl)) ; needed to run bin/apxs + (inputs (list apr apr-util libxcrypt openssl perl)) ; needed to run bin/apxs (arguments - `(#:test-target "test" - #:configure-flags (list "--enable-rewrite" - "--enable-userdir" - "--enable-vhost-alias" - "--enable-ssl" - "--enable-mime-magic" - (string-append "--sysconfdir=" - (assoc-ref %outputs "out") - "/etc/httpd")))) + (list + #:test-target "test" + #:configure-flags #~(list "--enable-rewrite" + "--enable-userdir" + "--enable-vhost-alias" + "--enable-ssl" + "--enable-mime-magic" + (string-append "--sysconfdir=" + #$output + "/etc/httpd")))) (synopsis "Featureful HTTP server") (description "The Apache HTTP Server Project is a collaborative software development @@ -338,52 +347,61 @@ and its related documentation.") (define-public miniflux (package (name "miniflux") - (version "2.0.46") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/miniflux/v2") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1qv95kipjlg374kiq6gssh5jsb5arahq4jsb7vkg3njnx0ldwvkb")))) + (version "2.2.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/miniflux/v2") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0bllgjv7cdqrk3dm98dmp7mx0wmcbh410jcdcvid7z5qkr0fiy07")))) (build-system go-build-system) (arguments - (list #:go go-1.19 - #:install-source? #f - #:import-path "miniflux.app" - #:build-flags - #~(list (string-append - "-ldflags= -X miniflux.app/version.Version=" #$version)) - #:phases - #~(modify-phases %standard-phases - (add-before 'build 'disable-cgo - (lambda _ - (setenv "CGO_ENABLED" "0"))) - (add-after 'install 'install-manpage - (lambda* (#:key import-path #:allow-other-keys) - (let ((man1 (string-append #$output "/share/man/man1/")) - (page (format #f "src/~a/miniflux.1" import-path))) - (install-file page man1)))) - (add-after 'install-manpage 'rename-binary - (lambda _ - (let ((bindir (string-append #$output "/bin/"))) - (rename-file (string-append bindir "miniflux.app") - (string-append bindir "miniflux")))))))) + (list + #:go go-1.22 + #:install-source? #f + #:import-path "miniflux.app/v2" + #:build-flags + #~(list (string-append + "-ldflags= -X miniflux.app/v2/internal/version.Version=" + #$version)) + #:phases + #~(modify-phases %standard-phases + ;; XXX: Replace when go-build-system supports nested path. + (replace 'check + (lambda* (#:key import-path tests? #:allow-other-keys) + (when tests? + (with-directory-excursion (string-append "src/" import-path) + (invoke "go" "test" "-v" "./..."))))) + (add-after 'install 'install-manpage + (lambda* (#:key import-path #:allow-other-keys) + (let ((man1 (string-append #$output "/share/man/man1/")) + (page (format #f "src/~a/miniflux.1" import-path))) + (install-file page man1)))) + (add-after 'install-manpage 'rename-binary + (lambda _ + (let ((bindir (string-append #$output "/bin/"))) + (rename-file (string-append bindir "v2") + (string-append bindir "miniflux")))))))) (inputs - (list go-github-com-coreos-go-oidc-v3 - go-github-com-go-telegram-bot-api-telegram-bot-api + (list go-github-com-abadojack-whatlanggo + go-github-com-andybalholm-brotli + go-github-com-coreos-go-oidc-v3 + go-github-com-go-webauthn-webauthn go-github-com-gorilla-mux go-github-com-lib-pq - go-github-com-matrix-org-gomatrix go-github-com-prometheus-client-golang go-github-com-puerkitobio-goquery - go-github-com-rylans-getlang go-github-com-tdewolff-minify-v2 go-github-com-yuin-goldmark + go-golang-org-x-crypto + go-golang-org-x-net + go-golang-org-x-oauth2 go-golang-org-x-term - go-mvdan-cc-xurls)) + go-golang-org-x-text + go-mvdan-cc-xurls-v2)) (home-page "https://miniflux.app/") (synopsis "Minimalist and opinionated feed reader") (description @@ -397,7 +415,7 @@ and its related documentation.") @item Use only modern vanilla Javascript (ES6 and Fetch API) @item Single binary compiled statically without dependency @item The number of features is voluntarily limited -@end itemize\n") +@end itemize") (license license:asl2.0))) (define-public mod-wsgi @@ -458,24 +476,24 @@ replacing them with data URIs.") (define-public monolith (package (name "monolith") - (version "2.7.0") + (version "2.8.1") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/Y2Z/monolith.git") + (url "https://github.com/Y2Z/monolith") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0ccwjsp8gdgp0wafc3zvlfmx3f58axc1k1ac80qha3g60xccqn56")))) + (base32 "0xr63302yb5k9c2sihd1iy97j5c44d4jrzfaiwm81d9li577ih58")))) (build-system cargo-build-system) (arguments `(#:cargo-inputs (("rust-atty" ,rust-atty-0.2) - ("rust-base64" ,rust-base64-0.13) + ("rust-base64" ,rust-base64-0.21) ("rust-chrono" ,rust-chrono-0.4) ("rust-clap" ,rust-clap-3) - ("rust-cssparser" ,rust-cssparser-0.29) + ("rust-cssparser" ,rust-cssparser-0.33) ("rust-encoding-rs" ,rust-encoding-rs-0.8) ("rust-html5ever" ,rust-html5ever-0.24) ("rust-percent-encoding" ,rust-percent-encoding-2) @@ -510,16 +528,16 @@ 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.3") + (version "1.27.1") (source (origin (method url-fetch) (uri (string-append "https://nginx.org/download/nginx-" version ".tar.gz")) (sha256 (base32 - "0m5s8a04jlpv6qhk09sfqbj4rxj38g6923w12j5y3ymrvf3mgjvm")))) + "1z5x0i0k1hmnxm7mb3dfn6qrz9am96my5ivinxl3gsp1dj5acyxx")))) (build-system gnu-build-system) - (inputs (list libxml2 libxslt openssl pcre zlib)) + (inputs (list libxcrypt libxml2 libxslt openssl pcre zlib)) (arguments (list #:tests? #f ; no test target @@ -533,6 +551,7 @@ the same, being completely separated from the Internet.") "--with-http_sub_module" "--with-pcre-jit" "--with-debug" + "--with-compat" "--with-stream" "--with-stream_ssl_module" "--with-http_stub_status_module" @@ -607,9 +626,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.3") - (revision 2916) - (changeset "178f55cf631a")) + (let ((version "1.27.1") + (revision 3114) + (changeset "051789a80bcb")) (package (name "nginx-documentation") (version (simple-format #f "~A-~A-~A" version revision changeset)) @@ -621,7 +640,7 @@ and as a proxy to reduce the load on back-end HTTP or mail servers.") (file-name (string-append name "-" version)) (sha256 (base32 - "0b03dnniwm3p3gd76vqs6lj2z4blqmb7y4lhn9vg7xjz0yqgzvn2")))) + "0p198cjnhypssmj4mrj6wx2lbrfgw84i2fa4ydzdbjgkdzp803mv")))) (build-system gnu-build-system) (arguments '(#:tests? #f ; no test suite @@ -631,7 +650,7 @@ and as a proxy to reduce the load on back-end HTTP or mail servers.") (replace 'build (lambda* (#:key outputs #:allow-other-keys) (let ((output (assoc-ref outputs "out"))) - (substitute* "umasked.sh" + (substitute* "tools/umasked.sh" ((" /bin/sh") (string-append " " (which "sh")))) ;; The documentation includes a banner, which makes sense on ;; the NGinx website, but doesn't make much sense when @@ -674,7 +693,8 @@ and as a proxy to reduce the load on back-end HTTP or mail servers.") (sha256 (base32 "1hjysrl15kh5233w7apq298cc2bp4q1z5mvaqcka9pdl90m0vhbw")))) (build-system gnu-build-system) - (inputs `(("openssl" ,openssl) + (inputs `(("libxcrypt" ,libxcrypt) + ("openssl" ,openssl) ("pcre" ,pcre) ("nginx-sources" ,(package-source nginx)) ("zlib" ,zlib))) @@ -733,6 +753,7 @@ ngx_http_accept_language_module~%") "--with-http_v2_module" "--with-pcre-jit" "--with-debug" + "--with-compat" ;; Even when not cross-building, we pass the ;; --crossbuild option to avoid customizing for the ;; kernel version on the build machine. @@ -1543,7 +1564,7 @@ efficiently. It gives the application developer no more than 4 methods.") (invoke (string-append (assoc-ref outputs "out") "/bin/ktImportText") "ec.tsv"))))))) (inputs - (list curl gnu-make perl)) + (list bash-minimal curl gnu-make perl)) (home-page "https://github.com/marbl/Krona/wiki") (synopsis "Hierarchical data exploration with zoomable HTML5 pie charts") (description @@ -1591,6 +1612,30 @@ current version of any major web browser.") style API.") (license license:expat)))) +(define-public libjwt + (package + (name "libjwt") + (version "1.17.2") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/benmcollins/libjwt/releases/download/v" + version "/libjwt-" + version ".tar.bz2")) + (sha256 + (base32 + "1bpfaa0y8bccz5hr677lkrprs07akx02k0qbf82z2c8syr24a77i")))) + (build-system gnu-build-system) + (inputs + (list jansson openssl)) + (native-inputs + (list check pkg-config)) + (home-page "https://github.com/benmcollins/libjwt") + (synopsis "C @acronym{JWT, JSON Web Token} library") + (description "@code{libjwt} is a @acronym{JWT, JSON Web Token} library for +C.") + (license license:mpl2.0))) + (define-public yajl (package (name "yajl") @@ -1651,7 +1696,7 @@ for efficient socket-like bidirectional reliable communication channels.") (define-public wabt (package (name "wabt") - (version "1.0.34") + (version "1.0.36") (source (origin (method git-fetch) @@ -1661,7 +1706,7 @@ for efficient socket-like bidirectional reliable communication channels.") (recursive? #true))) (file-name (git-file-name name version)) (sha256 - (base32 "1vxvc34b7a7lkrmzdb5cjv0b54vhiyr33sy0i2ps5jrmg5rqqmia")) + (base32 "1gypy9bn2nvmfa469fi6kwsyw11j0vqkxm7givs3gidjpsy1bk0a")) (modules '((guix build utils))) (snippet '(delete-file-recursively "third_party/gtest/")))) @@ -1956,7 +2001,7 @@ and other data, for distribution on the web.") (define-public tinyproxy (package (name "tinyproxy") - (version "1.11.1") + (version "1.11.2") (source (origin (method url-fetch) (uri (string-append "https://github.com/tinyproxy/tinyproxy/" @@ -1964,7 +2009,7 @@ and other data, for distribution on the web.") version ".tar.xz")) (sha256 (base32 - "0z0gnk74y68fv34vlgn2mf0zp1h3s27dbz8a1nwsxl0mh928hqyn")))) + "0sm2i05sq2mkyix7dsvm9abb3vr2nnciqywmwa3wk4b6f206h4ka")))) (build-system gnu-build-system) (arguments `(#:test-target "test" ; ‘make check’ silently does nothing @@ -2038,7 +2083,7 @@ of people.") (base32 "0ysqylpyv17s52634wn3vrwf7y9b5ig7fdfv8vwj1272lvv68qgk")))) (build-system pyproject-build-system) - (native-inputs (list python-nose2)) + (native-inputs (list python-nose2 python-setuptools python-wheel)) (inputs (list python-jwcrypto python-numpy @@ -2054,6 +2099,65 @@ begins forwarding traffic between the client and the target in both directions.") (license license:lgpl3))) +;; This is a variant of esbuild that builds and installs the nodejs API. +;; Eventually, this should probably be merged with the esbuild package. +(define-public esbuild-node + (package + (inherit esbuild) + (name "esbuild-node") + (version (package-version esbuild)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/evanw/esbuild") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "09r1xy0kk6c9cpz6q0mxr4why373pwxbm439z2ihq3k1d5kk7x4w")) + (modules '((guix build utils))) + (snippet + ;; Remove prebuilt binaries + '(delete-file-recursively "lib/npm/exit0")))) + (arguments + (list + #:import-path "github.com/evanw/esbuild/cmd/esbuild" + #:unpack-path "github.com/evanw/esbuild" + #:phases + #~(modify-phases %standard-phases + (add-after 'build 'build-platform + (lambda* (#:key unpack-path #:allow-other-keys) + (with-directory-excursion (string-append "src/" unpack-path) + ;; We're using Node 10, which doesn't have this method. + (substitute* "scripts/esbuild.js" + (("exports.buildNativeLib" m) + (string-append + "Object.fromEntries = entries => entries.reduce((result, entry) => (result[entry[0]] = entry[1], result), {});\n" + m))) + ;; Must be writable. + (for-each make-file-writable (find-files "." ".")) + (invoke "node" "scripts/esbuild.js" + (string-append #$output "/bin/esbuild")) + (let ((modules (string-append #$output "/lib/node_modules/esbuild"))) + (mkdir-p modules) + (copy-recursively "npm/esbuild" modules))))) + (replace 'check + (lambda* (#:key tests? unpack-path #:allow-other-keys) + (when tests? + ;; The "Go Race Detector" is only supported on 64-bit + ;; platforms, this variable disables it. + ;; TODO: Causes too many rebuilds, rewrite to limit to x86_64, + ;; aarch64 and ppc64le. + #$(if (target-riscv64?) + `(setenv "ESBUILD_RACE" "") + #~(unless #$(target-64bit?) + (setenv "ESBUILD_RACE" ""))) + (with-directory-excursion (string-append "src/" unpack-path) + (invoke "make" "test-go")))))))) + (native-inputs + (modify-inputs (package-native-inputs esbuild) + (append node))))) + (define-public wwwoffle (package (name "wwwoffle") @@ -2082,6 +2186,57 @@ modifying pages and incoming and outgoing headers, monitoring pages for changes, and much more.") (license license:gpl2+))) +(define-public libjuice + (package + (name "libjuice") + (version "1.4.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/paullouisageneau/libjuice") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "035kqyp5bcawzkpqpjb1qjwqf0dp2gm9h2j9py5iiahcvfjwh70i")))) + (build-system cmake-build-system) + (arguments (list #:tests? #f)) ; requires internet access + (home-page "https://github.com/paullouisageneau/libjuice") + (synopsis "UDP Interactive Connectivity Establishment library") + (description "@code{libjuice} opens bidirectionnal User Datagram +Protocol (UDP) streams with Network Address Translator (NAT) traversal. It's a +simplified implementation of the Interactive Connectivity Establishment (ICE) +protocol, client-side and server-side, written in C without dependencies for +POSIX platforms.") + (license license:mpl2.0))) + +(define-public libdatachannel + (package + (name "libdatachannel") + (version "0.21.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/paullouisageneau/libdatachannel") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "11icbyd71dw5ywjdviq580xvad24yfsjj3c5zpjqsxc883i40dxi")))) + (build-system cmake-build-system) + (arguments + (list #:tests? #f ; requires internet access + #:configure-flags + #~'("-DPREFER_SYSTEM_LIB=ON"))) + (inputs (list libjuice libsrtp nlohmann-json openssl plog usrsctp)) + (home-page "https://libdatachannel.org/") + (synopsis "WebRTC Data Channels and WebSockets library") + (description "@code{libdatachannel} is a standalone implementation of WebRTC +Data Channels, WebRTC Media Transport, and WebSockets in C++17 with C bindings +for POSIX platforms. WebRTC is a W3C and IETF standard enabling real-time +peer-to-peer data and media exchange between two devices.") + (license license:mpl2.0))) + (define-public liboauth (package (name "liboauth") @@ -2094,7 +2249,16 @@ changes, and much more.") (base32 "07w1aq8y8wld43wmbk2q8134p3bfkp2vma78mmsfgw2jn1bh3xhd")))) (build-system gnu-build-system) - (arguments '(#:configure-flags '("--enable-nss"))) + (arguments + (list + #:configure-flags ''("--enable-nss") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'use-C-unicode-locale + (lambda _ + (substitute* "tests/commontest.c" + (("en_US\\.UTF-8") + "C.UTF-8"))))))) (native-inputs (list pkg-config)) (propagated-inputs (list curl nss)) @@ -3387,34 +3551,55 @@ which can be used to parse directory listings.") (define-public perl-finance-quote (package (name "perl-finance-quote") - (version "1.47") + (version "1.59") (source (origin (method url-fetch) - (uri (string-append "https://cpan.metacpan.org/authors/id/E/EC/ECOCODE/" + (uri (string-append "https://cpan.metacpan.org/authors/id/B/BP/BPSCHUCK/" "Finance-Quote-" version ".tar.gz")) (sha256 - (base32 "0gzbq85738f299jaw4nj3ljnka380j2y6yspmyl71rgfypqjvbr7")) - (patches (search-patches - "perl-finance-quote-unuse-mozilla-ca.patch")))) + (base32 "0a19y5bj2pvdlfi747ihgz5khjlfkhjakv712r0gz0n6miwjiscs")))) (build-system perl-build-system) + (native-inputs + (list perl-test-harness + perl-date-manip + perl-date-range + perl-date-simple + perl-datetime + perl-datetime-format-iso8601 + perl-string-util + perl-pathtools + perl-test-pod + perl-test-pod-coverage)) (propagated-inputs - (list perl-cgi - perl-datetime + (list perl-datetime + perl-datetime-format-strptime perl-html-parser perl-html-tableextract + perl-html-tokeparser-simple perl-html-tree + perl-html-treebuilder-xpath + perl-http-cookiejar perl-http-cookies perl-http-message + perl-io-string perl-json perl-libwww perl-lwp-protocol-https - perl-uri)) + perl-mozilla-ca + perl-spreadsheet-xlsx + perl-readonly + perl-string-util + perl-text-template + perl-try-tiny + perl-web-scraper + perl-xml-libxml)) (home-page "https://metacpan.org/release/Finance-Quote") (synopsis "Stock and mutual fund quotes") (description - "Finance::Quote gets stock quotes from various internet sources, including -Yahoo! Finance, Fidelity Investments, and the Australian Stock Exchange.") + "The @code{Finance::Quote} module retries stock quotes from various +internet sources, including Yahoo! Finance, Fidelity Investments, and the +Australian Stock Exchange.") (license license:gpl2))) (define-public perl-gssapi @@ -3535,6 +3720,27 @@ composed of HTML::Element style components.") syntactic legitmacy.") (license license:artistic2.0))) +(define-public perl-html-selector-xpath + (package + (name "perl-html-selector-xpath") + (version "0.28") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/C/CO/CORION/HTML-Selector-XPath-" version + ".tar.gz")) + (sha256 + (base32 "03wdwnrf0bvr2dw01njnz3a9mw2kl7ad7krh25j3vkyj7vq1f9s3")))) + (build-system perl-build-system) + (native-inputs (list perl-test-base + perl-test-pod)) + (home-page "https://metacpan.org/release/HTML-Selector-XPath") + (synopsis "CSS Selector to XPath compiler") + (description "@code{HTML::Selector::XPath} is a Perl module for parsing +and scraping XML/HTML documents using XPath expressions.") + (license license:perl-license))) + (define-public perl-html-tableextract (package (name "perl-html-tableextract") @@ -3557,6 +3763,29 @@ syntactic legitmacy.") in tables within an HTML document, either as text or encoded element trees.") (license license:perl-license))) +(define-public perl-html-tokeparser-simple + (package + (name "perl-html-tokeparser-simple") + (version "3.16") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/O/OV/OVID/HTML-TokeParser-Simple-" + version ".tar.gz")) + (sha256 + (base32 "17aa1v62sp8ycxcicwhankmj4brs6nnfclk9z7mf1rird1f164gd")))) + (build-system perl-build-system) + (native-inputs (list perl-module-build)) + (propagated-inputs (list perl-html-parser + perl-html-tagset + perl-sub-override)) + (home-page "https://metacpan.org/release/HTML-TokeParser-Simple") + (synopsis "Easy to use parsing interface") + (description "Provides @code{HTML::TokeParser::Simple}, a simpler interface +to @code{HTML::TokeParser} for parsing HTML.") + (license license:perl-license))) + (define-public perl-html-tree (package (name "perl-html-tree") @@ -3650,6 +3879,26 @@ for the variables, loops and branches declared in the template. This allows you to separate design from the data.") (license license:perl-license))) +(define-public perl-html-treebuilder-xpath + (package + (name "perl-html-treebuilder-xpath") + (version "0.14") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/M/MI/MIROD/HTML-TreeBuilder-XPath-" + version ".tar.gz")) + (sha256 + (base32 "1wx4i1scng20n405fp3a4vrwvvq9bvbmg977wnd5j2ja8jrbvsr5")))) + (build-system perl-build-system) + (propagated-inputs (list perl-html-tree perl-xml-xpathengine)) + (home-page "https://metacpan.org/release/HTML-TreeBuilder-XPath") + (synopsis "XPath support for @code{HTML::TreeBuilder}") + (description "This module implements @code{HTML::TreeBuilder::XPath} for +@code{HTML::TreeBuilder}, making it easy to parse documents using XPath.") + (license license:perl-license))) + (define-public perl-http-body (package (name "perl-http-body") @@ -4737,6 +4986,38 @@ URI::Find::Schemeless. For a command-line interface, urifind is provided.") methods for WebSocket URIs as it does for HTTP URIs.") (license license:perl-license))) +(define-public perl-web-scraper + (package + (name "perl-web-scraper") + (version "0.38") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/M/MI/MIYAGAWA/Web-Scraper-" + version ".tar.gz")) + (sha256 + (base32 "1gs3fmbc83j34c0sig1hkpnm26ngnyi5kgq5dl8vxvkzimgnwnzr")))) + (build-system perl-build-system) + (native-inputs (list perl-module-build-tiny + perl-test-base + perl-test-requires)) + (propagated-inputs (list perl-html-parser + perl-html-selector-xpath + perl-html-tagset + perl-html-tree + perl-html-treebuilder-xpath + perl-libwww + perl-universal-require + perl-uri + perl-xml-xpathengine + perl-yaml)) + (home-page "https://metacpan.org/release/Web-Scraper") + (synopsis + "Web Scraping toolkit using HTML and CSS Selectors or XPath expressions") + (description "Perl module @code{Web::Scraper} is a toolkit for +traversing and scraping sites, inspired by Ruby's Scapi.") + (license license:perl-license))) + (define-public perl-uri-template (package (name "perl-uri-template") @@ -4927,11 +5208,15 @@ their web site.") (string-append indent "os.utime(os.path.join(root, file), (315619200, 315619200))\n" line)))))))) + (native-inputs + (list python-setuptools + python-wheel)) (inputs (list python)) (propagated-inputs (list python-boto3 python-botocore python-docutils + python-pip python-six python-virtualenv)) (home-page "https://github.com/4dn-dcic/python-lambda") @@ -4977,13 +5262,13 @@ CDF, Atom 0.3, and Atom 1.0 feeds.") (define-public python-tibanna (package (name "python-tibanna") - (version "4.0.0") + (version "5.4.3") (source (origin (method url-fetch) (uri (pypi-uri "tibanna" version)) (sha256 (base32 - "185jr5b1dfgh82xcjal0y9wbzds37s0yhx0hp8awlvw26v72awv2")))) + "11pbyw881qaj08syc9mwr301rm3jhy6vyci98pxin2dwvyzkgwhd")))) (build-system pyproject-build-system) (arguments ;; Tests require AWS credentials and access to the internet. @@ -5005,8 +5290,8 @@ Cloud.") (license license:expat))) (define-public guix-data-service - (let ((commit "c18589249f4b78994db6715226334a28ae6bc85f") - (revision "47")) + (let ((commit "62d6b5901331ad5f78ac65a8a9cb5410b60942cb") + (revision "56")) (package (name "guix-data-service") (version (string-append "0.0.1-" revision "." (string-take commit 7))) @@ -5018,7 +5303,7 @@ Cloud.") (file-name (git-file-name name version)) (sha256 (base32 - "1ny2vnabirw19wn8dlsrac8nqrbklzqr3l18ismmmy70s4xkaabh")))) + "0nfh13sgp9f66bpm476866lpwgfzhxg0k04rxbxnxq2qqij3s9g4")))) (build-system gnu-build-system) (arguments (list @@ -5076,7 +5361,8 @@ Cloud.") (_ #t))))))) (delete 'strip)))) ; As the .go files aren't compatible (inputs - (list ephemeralpg + (list bash-minimal + ephemeralpg util-linux postgresql-13 sqitch @@ -5084,10 +5370,12 @@ Cloud.") (propagated-inputs (list guix guile-fibers + guile-knots guile-json-4 guile-email guile-prometheus - guile-squee)) + guile-squee + guile-lzlib)) (native-inputs (list (car (assoc-ref (package-native-inputs guix) "guile")) autoconf @@ -5245,7 +5533,7 @@ you'd expect.") (define-public go-github-com-mikefarah-yq-v4 (package (name "go-github-com-mikefarah-yq-v4") - (version "4.34.2") + (version "4.44.3") (source (origin (method git-fetch) (uri (git-reference @@ -5254,7 +5542,7 @@ you'd expect.") (file-name (git-file-name name version)) (sha256 (base32 - "0y5i0p4fiq0kad9xqihhyclhd9d3l2r5yligdkvsdc90hlqjmql3")))) + "0s7c8r6y5jv6wda2v3k47hawfdr9j3rwk717l6byvh5qsbbml0vd")))) (build-system go-build-system) (arguments (list #:import-path "github.com/mikefarah/yq/v4" @@ -5267,15 +5555,19 @@ you'd expect.") (propagated-inputs (list go-github-com-a8m-envsubst go-github-com-alecthomas-participle-v2 + go-github-com-alecthomas-repr go-github-com-dimchansky-utfbom go-github-com-elliotchance-orderedmap go-github-com-fatih-color go-github-com-goccy-go-json - go-github-com-goccy-yaml + go-github-com-goccy-go-yaml go-github-com-jinzhu-copier go-github-com-magiconair-properties go-github-com-pelletier-go-toml-v2 + go-github-com-pkg-diff go-github-com-spf13-cobra + go-github-com-spf13-pflag + go-github-com-yuin-gopher-lua go-golang-org-x-net go-golang-org-x-text go-gopkg-in-op-go-logging-v1 @@ -5305,53 +5597,29 @@ JSON, XML, properties, CSV and TSV.") (propagated-inputs '()) (inputs (package-propagated-inputs go-github-com-mikefarah-yq-v4)))) -(define-public go-github-com-itchyny-timefmt-go +(define-public go-github-com-itchyny-gojq (package - (name "go-github-com-itchyny-timefmt-go") - (version "0.1.4") + (name "go-github-com-itchyny-gojq") + (version "0.12.16") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/itchyny/timefmt-go") + (url "https://github.com/itchyny/gojq") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0z5z8hy5lbjqdxp544mf238i77n7pf7bv3psgr5gffh0630dsyag")))) + (base32 "0favs281iaq98cmqwf47amk12xpksznpwgfid24z8migkp8628wl")))) (build-system go-build-system) (arguments - (list #:import-path "github.com/itchyny/timefmt-go")) - (home-page "https://github.com/itchyny/timefmt-go") - (synopsis "Efficient time formatting library (strftime, strptime) for Golang") - (description - "@code{timefmt-go} is a Go language package for formatting and parsing date -time strings.") - (license license:expat))) - -(define-public go-github-com-itchyny-gojq - (package - (name "go-github-com-itchyny-gojq") - (version "0.12.11") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/itchyny/gojq") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "1dqmnxnipi497nx9x10ifack09w41579svryss5q2w5wxy0pg764")))) - (build-system go-build-system) + (list + #:import-path "github.com/itchyny/gojq")) (inputs - (list go-github-com-google-go-cmp-cmp + (list go-github-com-google-go-cmp go-github-com-itchyny-timefmt-go go-github-com-mattn-go-isatty go-github-com-mattn-go-runewidth go-gopkg-in-yaml-v3)) - (arguments - (list - #:import-path "github.com/itchyny/gojq/cmd/gojq" - #:unpack-path "github.com/itchyny/gojq")) (home-page "https://github.com/itchyny/gojq") (synopsis "Pure Go implementation of jq") (description @@ -5366,7 +5634,48 @@ processor.") (arguments (ensure-keyword-arguments (package-arguments go-github-com-itchyny-gojq) - (list #:install-source? #f))))) + (list #:import-path "github.com/itchyny/gojq/cmd/gojq" + #:unpack-path "github.com/itchyny/gojq" + #:install-source? #f))))) + +(define-public go-jqp + (package + (name "go-jqp") + (version "0.7.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/noahgorstein/jqp") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "11xqh4113gkzp32hd4dg4cvjp40q3hxfh3889wd4bw2snl0alvcb")))) + (build-system go-build-system) + (arguments + (list + #:go go-1.22 + #:embed-files #~(list ".*.xml") + #:install-source? #f + #:import-path "github.com/noahgorstein/jqp")) + (inputs + (list go-github-com-spf13-viper + go-github-com-spf13-cobra + go-github-com-muesli-termenv + go-github-com-itchyny-gojq + go-github-com-itchyny-timefmt-go + go-github-com-charmbracelet-lipgloss + go-github-com-charmbracelet-bubbletea + go-github-com-charmbracelet-bubbles + go-github-com-atotto-clipboard + go-github-com-alecthomas-chroma-v2)) + (home-page "https://github.com/noahgorstein/jqp") + (synopsis "TUI playground to experiment with jq") + (description + "This package provides an interactive TUI to explor the @code{jq} command +line utility. The command accepts an optional query argument which will be +executed against the input JSON or newline-delimited JSON (NDJSON).") + (license license:expat))) (define-public pup (let ((revision "1") @@ -5560,7 +5869,7 @@ NetSurf project.") (define-public ikiwiki (package (name "ikiwiki") - (version "3.20200202.3") + (version "3.20200202.4") (source (origin (method git-fetch) @@ -5570,13 +5879,12 @@ NetSurf project.") (file-name (git-file-name name version)) (sha256 (base32 - "0fphyqzlk9y8v9s89ypsmrnbhyymzrpc2w0liy0n4knc7kk2pabq")) + "04ijislp7png18bg1carb71xk3sij9x5xpizfkxp6jbip6wdxsml")) (snippet '(begin ;; The POT file requires write permission during the build ;; phase. - (chmod "po/ikiwiki.pot" #o644) - #t)))) + (chmod "po/ikiwiki.pot" #o644))))) (build-system perl-build-system) (arguments `(#:phases @@ -5587,16 +5895,14 @@ NetSurf project.") (("SYSCONFDIR\\?=") "SYSCONFDIR?=$(PREFIX)")) (with-directory-excursion "po" (substitute* "Makefile" - (("PERL5LIB=") "PERL5LIB=${PERL5LIB}:"))) - #t)) + (("PERL5LIB=") "PERL5LIB=${PERL5LIB}:"))))) (add-before 'build 'set-modification-times ;; The wiki '--refresh' steps, which are executed during ;; the check phase, require recent timestamps on files in ;; the 'doc' and 'underlays' directories. (lambda _ (invoke "find" "doc" "underlays" "-type" "f" "-exec" - "touch" "{}" "+") - #t)) + "touch" "{}" "+"))) (add-before 'check 'pre-check (lambda* (#:key inputs #:allow-other-keys) ;; Six tests use IPC::Run. For these tests the PERL5LIB @@ -5621,9 +5927,10 @@ NetSurf project.") (setenv "XDG_DATA_DIRS" (string-append (assoc-ref inputs "shared-mime-info") "/share")) + ;; This test fails: "Cannot read from a file without refname". + (rename-file "t/po.t" "t/po.t-") ;; CC is needed by IkiWiki/Wrapper.pm. - (setenv "CC" "gcc") - #t)) + (setenv "CC" "gcc"))) (add-after 'install 'wrap-programs (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -5632,8 +5939,7 @@ NetSurf project.") (for-each (lambda (file) (wrap-program file `("PERL5LIB" ":" prefix (,path)))) - (find-files bin)) - #t)))))) + (find-files bin)))))))) (native-inputs (list which gettext-minimal @@ -5643,7 +5949,8 @@ NetSurf project.") cvs mercurial)) (inputs - (list python-wrapper + (list bash-minimal + python-wrapper perl-authen-passphrase perl-cgi-simple perl-db-file @@ -6160,7 +6467,7 @@ and similar services.") (define-public darkhttpd (package (name "darkhttpd") - (version "1.13") + (version "1.16") (source (origin (method git-fetch) @@ -6169,20 +6476,19 @@ and similar services.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0w11xq160q9yyffv4mw9ncp1n0dl50d9plmwxb0yijaaxls9i4sk")))) + (base32 "15mmq1v8p50mm9wx5w6g4rlr40b7d044lw7rs1wyzdiw9lcnihvm")))) (build-system gnu-build-system) (arguments - `(#:make-flags - (list (string-append "CC=" ,(cc-for-target))) - #:tests? #f ; No test suite - #:phases - (modify-phases %standard-phases - (delete 'configure) ; no configure script - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (install-file "darkhttpd" - (string-append (assoc-ref outputs "out") - "/bin"))))))) + (list + #:make-flags #~(list (string-append "CC=" #$(cc-for-target))) + #:test-target "test" + #:phases + #~(modify-phases %standard-phases + (delete 'configure) ; no configure script + (replace 'install + (lambda _ + (install-file "darkhttpd" (string-append #$output "/bin"))))))) + (native-inputs (list which python-minimal)) (synopsis "Simple static web server") (description "darkhttpd is a simple static web server. It is standalone and does not need inetd or ucspi-tcp. It does not need any @@ -6375,66 +6681,79 @@ deployments.") (package (name "varnish") (home-page "https://varnish-cache.org/") - (version "7.3.0") + (version "7.6.0") (source (origin (method url-fetch) (uri (string-append home-page "_downloads/varnish-" version ".tgz")) (sha256 (base32 - "1rsay4vrg0dvf8d7bpj8dvaax4v949p6x1l6qd3hdabhq87bpnz2")))) + "0p2xf4a8bk2w8j9q20fazrc93fwcfhw8zcvdd8ssbahvlg2q78mb")))) (build-system gnu-build-system) (arguments - `(#:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib") - (string-append "CC=" ,(cc-for-target)) - ;; Use absolute path of GCC so it's found at runtime. - (string-append "PTHREAD_CC=" - (search-input-file %build-inputs - "/bin/gcc")) - "--localstatedir=/var") + (append + (if (target-x86-32?) + '(#:make-flags + (list "CFLAGS+=-fexcess-precision=standard")) + '()) + (list + #:configure-flags + #~(list (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib") + (string-append "CC=" #$(cc-for-target)) + ;; Use absolute path of GCC so it's found at runtime. + (string-append "PTHREAD_CC=" + (search-input-file %build-inputs + "/bin/gcc")) + "--localstatedir=/var") #:phases - (modify-phases %standard-phases - (add-after 'unpack 'use-absolute-file-names - (lambda* (#:key native-inputs inputs #:allow-other-keys) - (let* ((inpts (or native-inputs inputs)) - (sh (search-input-file inpts "/bin/sh")) - (rm (search-input-file inpts "/bin/rm"))) + #~(modify-phases %standard-phases + (add-after 'unpack 'use-absolute-file-names + (lambda _ (substitute* '("bin/varnishtest/vtc_varnish.c" "bin/varnishtest/vtc_process.c" "bin/varnishtest/vtc_haproxy.c" "bin/varnishtest/tests/u00014.vtc" "bin/varnishd/mgt/mgt_vcc.c") - (("/bin/sh") sh)) - (substitute* "bin/varnishd/mgt/mgt_shmem.c" - (("rm -rf") (string-append rm " -rf"))) - (substitute* "bin/varnishtest/vtc_main.c" - (("/bin/rm") rm))))) - (add-before 'install 'patch-Makefile - (lambda _ - (substitute* "Makefile" - ;; Do not create /var/varnish during install. - (("^install-data-am: install-data-local") "install-data-am: ")))) - (add-after 'install 'wrap-varnishd - ;; Varnish uses GCC to compile VCL, so wrap it with required GCC - ;; environment variables to avoid propagating them to profiles. - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (varnishd (string-append out "/sbin/varnishd")) - (PATH (string-append (assoc-ref inputs "binutils") "/bin")) - (LIBRARY_PATH (string-append (assoc-ref inputs "libc") "/lib"))) - (wrap-program varnishd + (("/bin/sh") (which "bash"))) + (let* ((rm (which "rm"))) + (substitute* "bin/varnishd/mgt/mgt_shmem.c" + (("rm -rf") (string-append rm " -rf"))) + (substitute* "bin/varnishtest/vtc_main.c" + (("/bin/rm") rm))) + (substitute* "bin/varnishtest/tests/u00000.vtc" + (("/bin/echo") (which "echo"))))) + (add-after 'unpack 'remove-failing-tests + (lambda _ + ;; This test seems to fail because of + ;; Failed: Servname not supported for ai_socktype + (delete-file "bin/varnishtest/tests/b00085.vtc"))) + (add-before 'install 'patch-Makefile + (lambda _ + (substitute* "Makefile" + ;; Do not create /var/varnish during install. + (("^install-data-am: install-data-local") + "install-data-am: ")))) + (add-after 'install 'wrap-varnishd + ;; Varnish uses GCC to compile VCL, so wrap it with required GCC + ;; environment variables to avoid propagating them to profiles. + (lambda* (#:key inputs #:allow-other-keys) + (wrap-program (string-append #$output "/sbin/varnishd") ;; Add binutils to PATH so gcc finds the 'as' executable. - `("PATH" ":" prefix (,PATH)) + `("PATH" ":" prefix (,(dirname (which "as")))) ;; Make sure 'crti.o' et.al is found. - `("LIBRARY_PATH" ":" prefix (,LIBRARY_PATH))))))))) + `("LIBRARY_PATH" ":" prefix + (,(dirname + (search-input-file inputs "lib/libc.so"))))))))))) (native-inputs - (list pkg-config python-sphinx python-docutils)) + (list pkg-config + python-sphinx + python-docutils)) (inputs (list bash-minimal - coreutils + coreutils-minimal jemalloc ncurses pcre2 - python + python-minimal readline)) (synopsis "Web application accelerator") (description @@ -6453,14 +6772,14 @@ configuration language.") (package (name "varnish-modules") (home-page "https://github.com/varnish/varnish-modules") - (version "0.19.0") + (version "0.25.0") (source (origin (method git-fetch) (uri (git-reference (url home-page) (commit version))) (file-name (git-file-name name version)) (sha256 (base32 - "0qq5g6bbd1a1ml1wk8jj9z39a899jzqbf7aizr3pvyz0f4kz8mis")))) + "1jan3lwynp14awh6jk4zc052lm8m02vqms8ryc7zmjnm5jifdzlv")))) (build-system gnu-build-system) (native-inputs (list pkg-config @@ -6608,7 +6927,7 @@ functions of Tidy.") `("PATH" ":" prefix (,mbed))))))))) (inputs ;; TODO: package "hiawatha-monitor", an optional dependency of "hiawatha". - (list libxslt libxml2 mbedtls-for-hiawatha + (list bash-minimal libxcrypt libxslt libxml2 mbedtls-for-hiawatha `(,nghttp2 "lib") zlib)) (home-page "https://www.hiawatha-webserver.org") (synopsis "Webserver with focus on security") @@ -6621,48 +6940,66 @@ exploit attempts.") (define-public python-httpbin (package (name "python-httpbin") - (version "0.5.0") + (version "0.10.2") (source (origin (method url-fetch) (uri (pypi-uri "httpbin" version)) (sha256 - (base32 - "1dc92lnk846hpilslrqnr63x55cxll4qx88gif8fm521gv9cbyvr")))) - (build-system python-build-system) + (base32 "1a8pcf6411pqkpl3c5z93wml0nw4xb6j9dnjl976ij31h9llh8b3")))) + (build-system pyproject-build-system) + (native-inputs + (list python-pytest + python-setuptools + python-wheel)) (propagated-inputs - (list python-decorator python-flask python-itsdangerous - python-markupsafe python-six)) - (home-page "https://github.com/Runscope/httpbin") + (list python-brotlicffi + python-decorator + python-flasgger + python-flask + python-greenlet-2 + python-itsdangerous + python-markupsafe + python-six + python-werkzeug)) + ;; The archive in PyPI points to a fork of + ;; <https://github.com/postmanlabs/httpbin> which is unmaintained for 6y, + ;; where <https://github.com/Runscope/httpbin> rediects to. See + ;; <https://github.com/postmanlabs/httpbin/issues/719> + (home-page "https://github.com/psf/httpbin") (synopsis "HTTP request and response service") - (description "Testing an HTTP Library can become difficult sometimes. -@code{RequestBin} is fantastic for testing POST requests, but doesn't let you control the -response. This exists to cover all kinds of HTTP scenarios. All endpoint responses are -JSON-encoded.") + (description + "Testing an HTTP Library can become difficult sometimes. +@code{RequestBin} is fantastic for testing POST requests, but doesn't let you +control the response. This exists to cover all kinds of HTTP scenarios. All +endpoint responses are JSON-encoded.") (license license:isc))) (define-public python-pytest-httpbin (package (name "python-pytest-httpbin") - (version "0.2.3") + (version "2.1.0") (source (origin (method url-fetch) - (uri (pypi-uri "pytest-httpbin" version)) + (uri (pypi-uri "pytest_httpbin" version)) (sha256 - (base32 - "1y0v2v7xpzpyd4djwp7ad8ifnlxp8r1y6dfbxg5ckzvllkgridn5")))) - (build-system python-build-system) + (base32 "1iikdji2136mybjk7sczqa2qivlb6gchhkzyz4kq68j3hj1pj1fl")))) + (build-system pyproject-build-system) + (native-inputs + (list python-setuptools + python-wheel)) (propagated-inputs - (list python-six python-httpbin python-pytest)) - (home-page - "https://github.com/kevin1024/pytest-httpbin") - (synopsis - "Test your HTTP library against a local copy of httpbin") + (list python-httpbin + python-pytest + python-six)) + (home-page "https://github.com/kevin1024/pytest-httpbin") + (synopsis "Test your HTTP library against a local copy of httpbin") (description - "@code{Pytest-httpbin} creates a @code{pytest} fixture that is dependency-injected -into your tests. It automatically starts up a HTTP server in a separate thread running -@code{httpbin} and provides your test with the URL in the fixture.") + "@code{Pytest-httpbin} creates a @code{pytest} fixture that is +dependency-injected into your tests. It automatically starts up a HTTP server +in a separate thread running @code{httpbin} and provides your test with the +URL in the fixture.") (license license:expat))) (define-public http-parser @@ -7030,7 +7367,7 @@ file links.") (define-public castor (package (name "castor") - (version "0.8.18") + (version "0.9.0") (source (origin (method git-fetch) @@ -7039,18 +7376,25 @@ file links.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1l72r6a917ymc9pn8dllbal1xdczfai376nvqkiys5fm4j4s3zmj")))) + (base32 "1gda77ya2qbmjxfbw3yfr64inm8xw8243iwnfsgwwiwl35pw70n9")))) (build-system cargo-build-system) (arguments - `(#:cargo-inputs - (("rust-ansi-parser" ,rust-ansi-parser-0.6) - ("rust-dirs" ,rust-dirs-2) + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'relax-cargo-requirements + (lambda _ + (substitute* "Cargo.toml" (("~") ""))))) + #:cargo-inputs + `(("rust-ansi-parser" ,rust-ansi-parser-0.6) + ("rust-dirs" ,rust-dirs-3) ("rust-gdk" ,rust-gdk-0.13) ("rust-gtk" ,rust-gtk-0.8) - ("rust-linkify" ,rust-linkify-0.4) + ("rust-linkify" ,rust-linkify-0.7) ("rust-native-tls" ,rust-native-tls-0.2) - ("rust-open" ,rust-open-1) + ("rust-open" ,rust-open-2) ("rust-percent-encoding" ,rust-percent-encoding-2) + ("rust-textwrap" ,rust-textwrap-0.14) ("rust-url" ,rust-url-2)))) (native-inputs (list pkg-config)) @@ -8049,6 +8393,37 @@ in Perl but is not nearly as capable as @code{HTML::Tidy}.") @end itemize") (license license:bsd-2)))) +(define-public gemget + (package + (name "gemget") + (version "1.9.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/makew0rld/gemget") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "03x9apk73lwyafc4fd2vs033z7vcpk4k0jf97452l7pnlx2v57rz")))) + (build-system go-build-system) + (native-inputs + (list go-github-com-dustin-go-humanize + go-github-com-makeworld-the-better-one-go-gemini + go-github-com-makeworld-the-better-one-go-gemini-socks5 + go-github-com-schollz-progressbar-v3 + go-github-com-spf13-pflag)) + (arguments + (list + #:install-source? #f + #:import-path "github.com/makeworld-the-better-one/gemget")) + (home-page "https://github.com/makew0rld/gemget") + (synopsis "Command line downloader for the Gemini protocol") + (description + "Gemget is a command line downloader for the Gemini protocol. +It works well with streams and can print headers for debugging as well.") + (license license:expat))) + (define-public geomyidae (package (name "geomyidae") @@ -8276,7 +8651,7 @@ compressed JSON header blocks. (define-public nghttp3 (package (name "nghttp3") - (version "1.2.0") + (version "1.6.0") (source (origin (method url-fetch) @@ -8285,7 +8660,7 @@ compressed JSON header blocks. "nghttp3-" version ".tar.gz")) (sha256 (base32 - "0xfa3nbpv3d514ssjpxvizqmss8z330w9p0bp045w4qsyr1vkj8c")))) + "186bjczm7hqs3icp5ss66pi78dinpsbyn15h2hhcmyhh7h8jzyd1")))) (build-system gnu-build-system) (native-inputs (list pkg-config)) @@ -8373,7 +8748,8 @@ It does not support server push.") (list autoconf automake uglify-js pkg-config (lookup-package-native-input guix "guile"))) (inputs - (list (lookup-package-native-input guix "guile") + (list bash-minimal + (lookup-package-native-input guix "guile") guix guile-zlib guile-commonmark @@ -8539,7 +8915,7 @@ bookmarks directly. It can also present them in a web interface with (string-append #$output path)))))))) (inputs (list buku rofi)) (home-page "https://github.com/carnager/buku_run") - (synopsis "rofi frontend for buku bookmarks manager") + (synopsis "@command{rofi} frontend for buku bookmarks manager") (description "This package provides a rofi frontend for the buku bookmark manager.") (license license:gpl3+))) @@ -8749,7 +9125,7 @@ solution for any project's interface needs: (define-public gmid (package (name "gmid") - (version "2.0.1") + (version "2.1.1") (source (origin (method url-fetch) (uri (string-append @@ -8757,7 +9133,7 @@ solution for any project's interface needs: version "/gmid-" version ".tar.gz")) (sha256 (base32 - "1riihzgshfk6907r4g69lrlvabiznwi5d7njk7y6km0695lf62g0")))) + "1gy41858xxgbvngw7b162sq8vddd104a3cdd53pp2vk1f91gxc4y")))) (build-system gnu-build-system) (arguments (list #:test-target "regress" @@ -8794,7 +9170,7 @@ in mind. It has features such as: (define-public kiln (package (name "kiln") - (version "0.4.0") + (version "0.4.1") (source (origin (method git-fetch) (uri (git-reference @@ -8803,7 +9179,7 @@ in mind. It has features such as: (file-name (git-file-name name version)) (sha256 (base32 - "1lvzv46hn80gffw47mcc28iahwqng7pvg500s9jlrq6mhr4k5ih4")))) + "1ynb079jsyv6viwdksavwar5lqj84ssfw39dl5da98z683xrvch5")))) (build-system go-build-system) (arguments (list @@ -9137,17 +9513,21 @@ tools: (define-public uriparser (package (name "uriparser") - (version "0.9.6") + (version "0.9.8") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/uriparser/uriparser" - "/releases/download/uriparser-" - version "/uriparser-" version ".tar.xz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/uriparser/uriparser") + (commit (string-append "uriparser-" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "0i7nxgy36i8v81r213sbvmpxxq9qb4rhii9qbvl1k32jd1ka1252")))) + "0qr3rc0iz1zxim1ylwzf7zijgnxpzv4m35fzvv5kf66a8bqhrw2k")))) (build-system cmake-build-system) (native-inputs (list googletest doxygen graphviz)) + (arguments (if (%current-target-system) + (list #:configure-flags #~(list "-DURIPARSER_BUILD_TESTS=OFF")) + '())) (synopsis "Strictly RFC 3986 compliant URI parsing and handling library") (description "uriparser is a strictly RFC 3986 compliant URI parsing and handling library written in C89 (\"ANSI C\"). uriparser is fast and supports |