summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorjgart <jgart@dismail.de>2026-08-07 17:21:12 +0100
committerjgart <jgart@dismail.de>2026-08-11 09:26:15 +0100
commitec55b79582ca16e6881b226597832c3ddfac3918 (patch)
tree29943f7d30b7b15643c86aac36fe7cc2b979a794 /gnu
parent71f625d78ec78c7204da7c39b98f9639d8ae4954 (diff)
gnu: Add hurl.
* gnu/packages/web.scm (hurl): New variable. Change-Id: I9e5121a902567671487a9dd78eccd05798f65363
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/rust-apps.scm2
-rw-r--r--gnu/packages/rust-crates.scm181
-rw-r--r--gnu/packages/web.scm124
3 files changed, 305 insertions, 2 deletions
diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm
index 0a9aefcba2b..6ae020731dd 100644
--- a/gnu/packages/rust-apps.scm
+++ b/gnu/packages/rust-apps.scm
@@ -14,7 +14,7 @@
14;;; Copyright © 2021 Alexandru-Sergiu Marton <brown121407@posteo.ro> 14;;; Copyright © 2021 Alexandru-Sergiu Marton <brown121407@posteo.ro>
15;;; Copyright © 2021, 2023-2025 Maxim Cournoyer <maxim@guixotic.coop> 15;;; Copyright © 2021, 2023-2025 Maxim Cournoyer <maxim@guixotic.coop>
16;;; Copyright © 2021, 2022 Petr Hodina <phodina@protonmail.com> 16;;; Copyright © 2021, 2022 Petr Hodina <phodina@protonmail.com>
17;;; Copyright © 2021 jgart <jgart@dismail.de> 17;;; Copyright © 2021, 2026 jgart <jgart@dismail.de>
18;;; Copyright © 2021 Nicolas Graves <ngraves@ngraves.fr> 18;;; Copyright © 2021 Nicolas Graves <ngraves@ngraves.fr>
19;;; Copyright © 2022 Aleksandr Vityazev <avityazev@posteo.org> 19;;; Copyright © 2022 Aleksandr Vityazev <avityazev@posteo.org>
20;;; Copyright © 2022 Gabriel Arazas <foo.dogsquared@gmail.com> 20;;; Copyright © 2022 Gabriel Arazas <foo.dogsquared@gmail.com>
diff --git a/gnu/packages/rust-crates.scm b/gnu/packages/rust-crates.scm
index 8db5e208e04..b9c91f23f80 100644
--- a/gnu/packages/rust-crates.scm
+++ b/gnu/packages/rust-crates.scm
@@ -2,6 +2,7 @@
2;;; Copyright © 2025 Hilton Chain <hako@ultrarare.space> 2;;; Copyright © 2025 Hilton Chain <hako@ultrarare.space>
3;;; Copyright © 2026 Daniel Khodabakhsh <d@niel.khodabakh.sh> 3;;; Copyright © 2026 Daniel Khodabakhsh <d@niel.khodabakh.sh>
4;;; Copyright © 2026 Tomás Ortín Fernández (quanrong) <quanrong@mailbox.org> 4;;; Copyright © 2026 Tomás Ortín Fernández (quanrong) <quanrong@mailbox.org>
5;;; Copyright © 2026 jgart <jgart@dismail.de>
5;;; 6;;;
6;;; This file is part of GNU Guix. 7;;; This file is part of GNU Guix.
7;;; 8;;;
@@ -327,6 +328,10 @@
327 (crate-source "alloc-stdlib" "0.2.2" 328 (crate-source "alloc-stdlib" "0.2.2"
328 "1kkfbld20ab4165p29v172h8g0wvq8i06z8vnng14whw0isq5ywl")) 329 "1kkfbld20ab4165p29v172h8g0wvq8i06z8vnng14whw0isq5ywl"))
329 330
331(define rust-alloc-stdlib-0.2.4
332 (crate-source "alloc-stdlib" "0.2.4"
333 "159iyap790nflvdhl1gbkxp9l5w4x7qp5ybg01wx490jx4cs0xhf"))
334
330(define rust-alloca-0.4.0 335(define rust-alloca-0.4.0
331 (crate-source "alloca" "0.4.0" 336 (crate-source "alloca" "0.4.0"
332 "1x6p4387rz6j7h342kp3b7bgvqzyl9mibf959pkfk9xflrgd19z5")) 337 "1x6p4387rz6j7h342kp3b7bgvqzyl9mibf959pkfk9xflrgd19z5"))
@@ -2946,6 +2951,10 @@ fn main() {
2946 (crate-source "brotli" "8.0.2" 2951 (crate-source "brotli" "8.0.2"
2947 "0q25r00z3gm5wzvv4vfxvlx5zjb8i4jwyznrvdcp7abs7ihbkn2b")) 2952 "0q25r00z3gm5wzvv4vfxvlx5zjb8i4jwyznrvdcp7abs7ihbkn2b"))
2948 2953
2954(define rust-brotli-8.0.4
2955 (crate-source "brotli" "8.0.4"
2956 "1cv6f4hdivllg34slvbwy645p1zidbxwpp1vh8jiwyha0sn1mjaw"))
2957
2949(define rust-brotli-decompressor-4.0.2 2958(define rust-brotli-decompressor-4.0.2
2950 (crate-source "brotli-decompressor" "4.0.2" 2959 (crate-source "brotli-decompressor" "4.0.2"
2951 "0dqb0vbhrc77c09qf6qmbylgkfnbjaq8629qp0z42gc0gnnhbykl")) 2960 "0dqb0vbhrc77c09qf6qmbylgkfnbjaq8629qp0z42gc0gnnhbykl"))
@@ -2962,6 +2971,10 @@ fn main() {
2962 (crate-source "brotli-decompressor" "5.0.1" 2971 (crate-source "brotli-decompressor" "5.0.1"
2963 "0929p5smsq5v0jy509gn746y3v1yjjwnk49xg5g1pklj3cz54qjr")) 2972 "0929p5smsq5v0jy509gn746y3v1yjjwnk49xg5g1pklj3cz54qjr"))
2964 2973
2974(define rust-brotli-decompressor-5.0.3
2975 (crate-source "brotli-decompressor" "5.0.3"
2976 "10rm4pyqnznh192nzsjl4dh6bjgzglsadcl676y6f6gy2nnaqcis"))
2977
2965(define rust-browserslist-rs-0.6.0 2978(define rust-browserslist-rs-0.6.0
2966 (crate-source "browserslist-rs" "0.6.0" 2979 (crate-source "browserslist-rs" "0.6.0"
2967 "19l0prgnbx0cyqvjsf30ni7d87nkn8j0fj56fg259yvfh50if1ri")) 2980 "19l0prgnbx0cyqvjsf30ni7d87nkn8j0fj56fg259yvfh50if1ri"))
@@ -6817,6 +6830,10 @@ fn main() {
6817 (crate-source "curl" "0.4.49" 6830 (crate-source "curl" "0.4.49"
6818 "1g7dcrh4mwkn2q0iiga7vc8i68pd5jdby5aparpa6yxqs1nkpz3r")) 6831 "1g7dcrh4mwkn2q0iiga7vc8i68pd5jdby5aparpa6yxqs1nkpz3r"))
6819 6832
6833(define rust-curl-0.4.50
6834 (crate-source "curl" "0.4.50"
6835 "02avq75lp8b8yz4kbhfxf6vzyqvjpwh1rz0cqss7qc75jj4ywi9s"))
6836
6820(define rust-curl-sys-0.4.85+curl-8.18.0 6837(define rust-curl-sys-0.4.85+curl-8.18.0
6821 (crate-source "curl-sys" "0.4.85+curl-8.18.0" 6838 (crate-source "curl-sys" "0.4.85+curl-8.18.0"
6822 "1nrzryl8hw1br69bagr774wrv2w8yim9x8zasgv0bk2y5caadvy0" 6839 "1nrzryl8hw1br69bagr774wrv2w8yim9x8zasgv0bk2y5caadvy0"
@@ -6832,6 +6849,11 @@ fn main() {
6832 "1l06557wwna8wvk62amn01zj7dqr3kd1s6j99vzmw9a7cpg1cj34" 6849 "1l06557wwna8wvk62amn01zj7dqr3kd1s6j99vzmw9a7cpg1cj34"
6833 #:snippet '(delete-file-recursively "curl"))) 6850 #:snippet '(delete-file-recursively "curl")))
6834 6851
6852(define rust-curl-sys-0.4.89+curl-8.20.0
6853 (crate-source "curl-sys" "0.4.89+curl-8.20.0"
6854 "08msv70y78amibg81nxxj2ljw8avnhx9g1bljb8g4f2l51whfs3d"
6855 #:snippet '(delete-file-recursively "curl")))
6856
6835(define rust-current-platform-0.2.0 6857(define rust-current-platform-0.2.0
6836 (crate-source "current_platform" "0.2.0" 6858 (crate-source "current_platform" "0.2.0"
6837 "1g504i1l733bn1hyzzfvwmc8qq84dxxpscs9rcb21cj4zsy5hj57")) 6859 "1g504i1l733bn1hyzzfvwmc8qq84dxxpscs9rcb21cj4zsy5hj57"))
@@ -17852,6 +17874,10 @@ fn main() {
17852(define rust-libwebrtc-0.3.10.5f04705 17874(define rust-libwebrtc-0.3.10.5f04705
17853 package:rust-livekit-0.7.8.5f04705) 17875 package:rust-livekit-0.7.8.5f04705)
17854 17876
17877(define rust-libxml-0.3.13
17878 (crate-source "libxml" "0.3.13"
17879 "0qy14rlp4v210x815aaqd7fl2905aaj23slk9dwsjbwhbd47s2l6"))
17880
17855(define rust-libyml-0.0.5 17881(define rust-libyml-0.0.5
17856 (crate-source "libyml" "0.0.5" 17882 (crate-source "libyml" "0.0.5"
17857 "106963pwg1gc3165bdlk8bbspmk919gk10vshhqglks3z8m700ik")) 17883 "106963pwg1gc3165bdlk8bbspmk919gk10vshhqglks3z8m700ik"))
@@ -60235,6 +60261,161 @@ fn main() {
60235 rust-zerofrom-derive-0.1.6 60261 rust-zerofrom-derive-0.1.6
60236 rust-zerovec-0.10.4 60262 rust-zerovec-0.10.4
60237 rust-zerovec-derive-0.10.3)) 60263 rust-zerovec-derive-0.10.3))
60264 (hurl =>
60265 (list rust-adler32-1.2.0
60266 rust-aho-corasick-1.1.4
60267 rust-alloc-no-stdlib-2.0.4
60268 rust-alloc-stdlib-0.2.4
60269 rust-allocator-api2-0.2.21
60270 rust-android-system-properties-0.1.5
60271 rust-anstream-1.0.0
60272 rust-anstyle-1.0.14
60273 rust-anstyle-parse-1.0.0
60274 rust-anstyle-query-1.1.5
60275 rust-anstyle-wincon-3.0.11
60276 rust-autocfg-1.5.1
60277 rust-base64-0.22.1
60278 rust-bindgen-0.72.1
60279 rust-bitflags-2.13.0
60280 rust-block-buffer-0.12.1
60281 rust-brotli-8.0.4
60282 rust-brotli-decompressor-5.0.3
60283 rust-bstr-1.12.1
60284 rust-bumpalo-3.20.3
60285 rust-cc-1.2.65
60286 rust-cexpr-0.6.0
60287 rust-cfg-if-1.0.4
60288 rust-chacha20-0.10.0
60289 rust-chrono-0.4.45
60290 rust-clang-sys-1.8.1
60291 rust-clap-4.6.1
60292 rust-clap-builder-4.6.0
60293 rust-clap-lex-1.1.0
60294 rust-colorchoice-1.0.5
60295 rust-colored-3.1.1
60296 rust-const-oid-0.10.2
60297 rust-core-foundation-sys-0.8.7
60298 rust-cpufeatures-0.3.0
60299 rust-crc32fast-1.5.0
60300 rust-crypto-common-0.2.2
60301 rust-curl-0.4.50
60302 rust-curl-sys-0.4.89+curl-8.20.0
60303 rust-dary-heap-0.3.9
60304 rust-digest-0.11.3
60305 rust-displaydoc-0.2.6
60306 rust-either-1.16.0
60307 rust-encoding-rs-0.8.35
60308 rust-equivalent-1.0.2
60309 rust-errno-0.3.14
60310 rust-find-msvc-tools-0.1.9
60311 rust-foldhash-0.2.0
60312 rust-form-urlencoded-1.2.2
60313 rust-futures-core-0.3.32
60314 rust-futures-task-0.3.32
60315 rust-futures-util-0.3.32
60316 rust-getrandom-0.4.3
60317 rust-glob-0.3.3
60318 rust-hashbrown-0.16.1
60319 rust-hybrid-array-0.4.12
60320 rust-iana-time-zone-0.1.65
60321 rust-iana-time-zone-haiku-0.1.2
60322 rust-icu-collections-2.2.0
60323 rust-icu-locale-core-2.2.0
60324 rust-icu-normalizer-2.2.0
60325 rust-icu-normalizer-data-2.2.0
60326 rust-icu-properties-2.2.0
60327 rust-icu-properties-data-2.2.0
60328 rust-icu-provider-2.2.0
60329 rust-idna-1.1.0
60330 rust-idna-adapter-1.2.2
60331 rust-is-terminal-polyfill-1.70.2
60332 rust-itertools-0.13.0
60333 rust-itoa-1.0.18
60334 rust-js-sys-0.3.102
60335 rust-libc-0.2.186
60336 rust-libflate-2.3.0
60337 rust-libflate-lz77-2.3.0
60338 rust-libloading-0.8.9
60339 rust-libxml-0.3.13
60340 rust-libz-sys-1.1.29
60341 rust-linux-raw-sys-0.12.1
60342 rust-litemap-0.8.2
60343 rust-log-0.4.33
60344 rust-md5-0.8.0
60345 rust-memchr-2.8.2
60346 rust-minimal-lexical-0.2.1
60347 rust-no-std-io2-0.9.4
60348 rust-nom-7.1.3
60349 rust-num-traits-0.2.19
60350 rust-once-cell-1.21.4
60351 rust-once-cell-polyfill-1.70.2
60352 rust-openssl-probe-0.1.6
60353 rust-openssl-src-300.6.1+3.6.3
60354 rust-openssl-sys-0.9.117
60355 rust-percent-encoding-2.3.2
60356 rust-pin-project-lite-0.2.17
60357 rust-pkg-config-0.3.33
60358 rust-potential-utf-0.1.5
60359 rust-proc-macro2-1.0.106
60360 rust-quote-1.0.45
60361 rust-r-efi-6.0.0
60362 rust-rand-0.10.1
60363 rust-rand-core-0.10.1
60364 rust-regex-1.12.4
60365 rust-regex-automata-0.4.14
60366 rust-regex-syntax-0.8.11
60367 rust-rle-decode-fast-1.0.3
60368 rust-rustc-hash-2.1.2
60369 rust-rustix-1.1.4
60370 rust-rustversion-1.0.22
60371 rust-schannel-0.1.29
60372 rust-serde-1.0.228
60373 rust-serde-core-1.0.228
60374 rust-serde-derive-1.0.228
60375 rust-serde-json-1.0.150
60376 rust-sha2-0.11.0
60377 rust-shlex-1.3.0
60378 rust-shlex-2.0.1
60379 rust-similar-3.1.1
60380 rust-slab-0.4.12
60381 rust-smallvec-1.15.2
60382 rust-socket2-0.6.4
60383 rust-stable-deref-trait-1.2.1
60384 rust-strsim-0.11.1
60385 rust-syn-2.0.118
60386 rust-synstructure-0.13.2
60387 rust-terminal-size-0.4.4
60388 rust-tinystr-0.8.3
60389 rust-toml-0.5.11
60390 rust-typenum-1.20.1
60391 rust-unicode-ident-1.0.24
60392 rust-url-2.5.8
60393 rust-utf8-iter-1.0.4
60394 rust-utf8parse-0.2.2
60395 rust-uuid-1.23.3
60396 rust-vcpkg-0.2.15
60397 rust-wasm-bindgen-0.2.125
60398 rust-wasm-bindgen-macro-0.2.125
60399 rust-wasm-bindgen-macro-support-0.2.125
60400 rust-wasm-bindgen-shared-0.2.125
60401 rust-windows-core-0.62.2
60402 rust-windows-implement-0.60.2
60403 rust-windows-interface-0.59.3
60404 rust-windows-link-0.2.1
60405 rust-windows-result-0.4.1
60406 rust-windows-strings-0.5.1
60407 rust-windows-sys-0.61.2
60408 rust-winres-0.1.12
60409 rust-writeable-0.6.3
60410 rust-xml-1.3.0
60411 rust-yoke-0.8.3
60412 rust-yoke-derive-0.8.2
60413 rust-zerofrom-0.1.8
60414 rust-zerofrom-derive-0.1.7
60415 rust-zerotrie-0.2.4
60416 rust-zerovec-0.11.6
60417 rust-zerovec-derive-0.11.3
60418 rust-zmij-1.0.21))
60238 (hurrycurry => 60419 (hurrycurry =>
60239 (list rust-adler2-2.0.1 60420 (list rust-adler2-2.0.1
60240 rust-aho-corasick-1.1.4 60421 rust-aho-corasick-1.1.4
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index edf0a336428..4df6a44bf06 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -58,7 +58,7 @@
58;;; Copyright © 2022 cage <cage-dev@twistfold.it> 58;;; Copyright © 2022 cage <cage-dev@twistfold.it>
59;;; Copyright © 2022 Pradana Aumars <paumars@courrier.dev> 59;;; Copyright © 2022 Pradana Aumars <paumars@courrier.dev>
60;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com> 60;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com>
61;;; Copyright © 2022 jgart <jgart@dismail.de> 61;;; Copyright © 2022, 2026 jgart <jgart@dismail.de>
62;;; Copyright © 2023 Paul A. Patience <paul@apatience.com> 62;;; Copyright © 2023 Paul A. Patience <paul@apatience.com>
63;;; Copyright © 2022 Bruno Victal <mirai@makinata.eu> 63;;; Copyright © 2022 Bruno Victal <mirai@makinata.eu>
64;;; Copyright © 2023 David Thompson <dthompson2@worcester.edu> 64;;; Copyright © 2023 David Thompson <dthompson2@worcester.edu>
@@ -9989,6 +9989,128 @@ concurrency, and return status.")
9989 ;; GPLv3+ with OpenSSL linking exception. 9989 ;; GPLv3+ with OpenSSL linking exception.
9990 (license license:gpl3+))) 9990 (license license:gpl3+)))
9991 9991
9992(define-public hurl
9993 (package
9994 (name "hurl")
9995 (version "8.0.1")
9996 (source
9997 (origin
9998 ;; The crates.io tarball does not include the hurlfmt crate.
9999 (method git-fetch)
10000 (uri (git-reference
10001 (url "https://github.com/Orange-OpenSource/hurl")
10002 (commit version)))
10003 (file-name (git-file-name name version))
10004 (sha256
10005 (base32 "0wsw9khfznc638qzp8zx2zwgnrg5d160ky5gnslwm9frz3p5hp0d"))))
10006 (build-system cargo-build-system)
10007 (arguments
10008 (list
10009 #:install-source? #f
10010 #:cargo-install-paths ''("packages/hurl" "packages/hurlfmt")
10011 #:cargo-test-flags
10012 '(list
10013 ;; Excluding doctests since rust-1.93 does not support them.
10014 "--lib" "--bins" "--tests")
10015 #:phases
10016 #~(modify-phases %standard-phases
10017 (add-after 'unpack 'relax-rust-version
10018 (lambda _
10019 ;; Upstream requires the latest stable Rust.
10020 (substitute* '("packages/hurl/Cargo.toml"
10021 "packages/hurlfmt/Cargo.toml")
10022 (("rust-version = \"1.95.0\"")
10023 "rust-version = \"1.93.0\""))))
10024 (add-before 'check 'start-test-server
10025 (lambda _
10026 ;; The integration tests expect a Flask test server
10027 ;; listening on port 8000.
10028 (with-directory-excursion "integration/hurl"
10029 (mkdir-p "build")
10030 (spawn "python3"
10031 '("python3" "server.py"
10032 "--host" "127.0.0.1" "--port" "8000")))
10033 ;; Wait for the server to come up.
10034 (let loop ((attempts 30))
10035 (unless (false-if-exception
10036 (let ((s (socket PF_INET SOCK_STREAM 0)))
10037 (connect s AF_INET
10038 (inet-pton AF_INET "127.0.0.1") 8000)
10039 (close-port s)))
10040 (when (zero? attempts)
10041 (error "test server did not start"))
10042 (sleep 1)
10043 (loop (1- attempts))))))
10044 (add-before 'install 'generate-man-pages
10045 (lambda _
10046 ;; Build the man pages from their Markdown sources.
10047 (for-each (lambda (name)
10048 (with-output-to-file (string-append
10049 "docs/manual/" name ".1")
10050 (lambda ()
10051 (invoke "python3" "bin/docs/build_man.py"
10052 (string-append
10053 "docs/manual/" name ".md")))))
10054 '("hurl" "hurlfmt"))))
10055 (add-before 'install 'generate-completions
10056 (lambda _
10057 ;; Generate the shell completions from the option spec
10058 ;; files, using upstream's script. This runs only the
10059 ;; completion part of generate_all.py, since the other
10060 ;; parts rewrite the source tree.
10061 (setenv "PYTHONPATH" "bin/spec/options")
10062 (invoke "python3" "-c"
10063 "import generate_all as g
10064for name in ('hurl', 'hurlfmt'):
10065 g.generate_completion_files(name, g.get_option_files('docs/spec/options/' + name))")))
10066 (add-after 'install 'install-man-pages
10067 (lambda _
10068 (let ((man1 (string-append #$output "/share/man/man1")))
10069 (for-each (lambda (page)
10070 (install-file page man1))
10071 '("docs/manual/hurl.1" "docs/manual/hurlfmt.1")))))
10072 (add-after 'install 'install-completions
10073 (lambda _
10074 (let ((bash (string-append #$output
10075 "/share/bash-completion/completions"))
10076 (fish (string-append #$output
10077 "/share/fish/vendor_completions.d"))
10078 (zsh (string-append #$output "/share/zsh/site-functions")))
10079 (for-each (lambda (name)
10080 ;; Bash completion files must be named after
10081 ;; the command, without the .bash extension.
10082 (mkdir-p bash)
10083 (copy-file (string-append "completions/"
10084 name ".bash")
10085 (string-append bash "/" name))
10086 (install-file (string-append "completions/"
10087 name ".fish")
10088 fish)
10089 (install-file (string-append "completions/_"
10090 name)
10091 zsh))
10092 '("hurl" "hurlfmt"))))))))
10093 (native-inputs
10094 (list clang
10095 pkg-config
10096 python
10097 python-flask
10098 python-waitress))
10099 (inputs
10100 (cons* curl
10101 libxml2
10102 openssl
10103 zlib
10104 (cargo-inputs 'hurl)))
10105 (home-page "https://hurl.dev")
10106 (synopsis "Run and test HTTP requests")
10107 (description
10108 "Hurl is a command line tool that runs HTTP requests defined in a plain
10109text format. It can chain requests, capture values and evaluate queries on
10110headers and body response. This package also provides @command{hurlfmt},
10111a formatter and linter for Hurl files.")
10112 (license license:asl2.0)))
10113
9992(define-public gmnisrv 10114(define-public gmnisrv
9993 (package 10115 (package
9994 (name "gmnisrv") 10116 (name "gmnisrv")