You've already forked guix-tribes
chore: sync supertest dev channel to master
Source: guix-tribes masterb68182c838Base: previous supertest-dev802327d325Mode: tree sync, preserving dev channel authorization
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"mode" : "tree-sync",
|
||||
"previous_dev_commit" : "4c31c41d85d03ca0de4bc1a082fb76a2c5aee2af",
|
||||
"previous_dev_commit" : "802327d32534e582e7f966c2d86fd85079bb6467",
|
||||
"source_branch" : "origin/master",
|
||||
"source_commit" : "bade8dd709cf86fc3aabaef70b4acc49dc6900f2",
|
||||
"synced_at" : "2026-05-11T21:44:01Z"
|
||||
"source_commit" : "b68182c838b192cdbb8fa0e302e5f8993653479e",
|
||||
"synced_at" : "2026-05-12T00:00:27Z"
|
||||
}
|
||||
|
||||
@@ -4,12 +4,9 @@
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages crypto)
|
||||
#:use-module (gnu packages curl)
|
||||
#:use-module (gnu packages jemalloc)
|
||||
#:use-module (gnu packages libevent)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages lua)
|
||||
#:use-module (gnu packages lsof)
|
||||
#:use-module (gnu packages ncurses)
|
||||
#:use-module (gnu packages pcre)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
@@ -28,7 +25,6 @@
|
||||
#:use-module (guix utils)
|
||||
#:use-module (tribes packages go)
|
||||
#:export (haproxy
|
||||
hitch
|
||||
vinyl
|
||||
lego))
|
||||
|
||||
@@ -78,94 +74,6 @@ realistic with today's hardware.")
|
||||
license:lgpl2.1
|
||||
license:lgpl2.1+))))
|
||||
|
||||
(define-public hitch
|
||||
(package
|
||||
(name "hitch")
|
||||
(version "1.8.0")
|
||||
(home-page "https://hitch-tls.org/")
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'check 'pre-check
|
||||
(lambda _
|
||||
;; Our grep is compiled without perl regexp support. Rewrite the
|
||||
;; command to not use it. Literal tabs are supported only in perl
|
||||
;; regexps, so inject one with printf instead.
|
||||
(substitute* "src/tests/test32-proxy-authority.sh"
|
||||
(("grep -Pq") "grep -q")
|
||||
(("extension:\\\\tdefault")
|
||||
"extension:$(printf '\\011')default"))
|
||||
|
||||
;; Most tests attempt to access hitch-tls.org, which is
|
||||
;; unavailable in the build container. Run them against a dummy
|
||||
;; local web server instead.
|
||||
(for-each (lambda (test)
|
||||
(substitute* test
|
||||
(("\\[hitch-tls\\.org\\]:80")
|
||||
"[localhost]:8000")))
|
||||
(find-files "src/tests" "\\.sh$"))
|
||||
|
||||
;; This test still relies on live external DNS/backend behavior
|
||||
;; via HOSTALIASES and is too environment-dependent for a
|
||||
;; reproducible build.
|
||||
(substitute* "src/tests/test25-dynamic-backend-address.sh"
|
||||
(("\\. hitch_test\\.sh")
|
||||
". hitch_test.sh\nskip \"dynamic backend address test requires live external backends\""))
|
||||
|
||||
;; The build container does not reap zombie processes, causing
|
||||
;; stop_hitch to hang indefinitely while waiting for the process
|
||||
;; to terminate because 'kill -0' never succeeds. Use a
|
||||
;; different test to see whether the process has shut down.
|
||||
(substitute* "src/tests/hitch_test.sh"
|
||||
(("kill -0 \"\\$HITCH_PID\"")
|
||||
"$(ps -p $HITCH_PID -o state= | grep -qv '^Z$')"))))
|
||||
(replace 'check
|
||||
(lambda* (#:key tests? #:allow-other-keys)
|
||||
(if (not tests?)
|
||||
#t
|
||||
(dynamic-wind
|
||||
(lambda ()
|
||||
;; Keep the dummy backend out of the build log pipe and
|
||||
;; tear it down explicitly after the suite so the daemon
|
||||
;; can observe EOF and finalize the derivation.
|
||||
(system* (which "sh") "-c"
|
||||
"python3 -m http.server >/dev/null 2>&1 & echo $! > .guix-hitch-test-http-server.pid")
|
||||
(invoke "sleep" "1"))
|
||||
(lambda ()
|
||||
(invoke "make" "check"))
|
||||
(lambda ()
|
||||
(when (file-exists? ".guix-hitch-test-http-server.pid")
|
||||
(system* (which "sh") "-c"
|
||||
"kill $(cat .guix-hitch-test-http-server.pid) >/dev/null 2>&1 || true")
|
||||
(delete-file ".guix-hitch-test-http-server.pid"))))))))))
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://hitch-tls.org/source/hitch-"
|
||||
version
|
||||
".tar.gz"))
|
||||
(sha256
|
||||
(base32 "0klg2pfsbhjdabjv52i0gfjfv23r45n4vs3965xa5zkzpj299jfz"))))
|
||||
(native-inputs
|
||||
(list pkg-config
|
||||
|
||||
;; For tests.
|
||||
curl
|
||||
grep
|
||||
lsof
|
||||
procps
|
||||
python))
|
||||
(inputs
|
||||
(list libev openssl))
|
||||
(synopsis "Scalable TLS proxy")
|
||||
(description
|
||||
"Hitch is a performant TLS proxy based on @code{libev}. It terminates
|
||||
SSL/TLS connections and forwards the unencrypted traffic to a backend such
|
||||
as a web server. It is designed to handle many thousand connections on
|
||||
multicore machines.")
|
||||
(license license:bsd-2)))
|
||||
|
||||
(define-public vinyl
|
||||
(package
|
||||
(name "vinyl")
|
||||
|
||||
@@ -1,149 +0,0 @@
|
||||
(define-module (tribes services hitch)
|
||||
#:use-module (gnu packages admin)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu services)
|
||||
#:use-module (gnu services shepherd)
|
||||
#:use-module (gnu system shadow)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix records)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-13)
|
||||
#:use-module (tribes packages web)
|
||||
#:export (hitch-configuration
|
||||
hitch-configuration?
|
||||
hitch-configuration-package
|
||||
hitch-configuration-backend
|
||||
hitch-configuration-frontends
|
||||
hitch-configuration-pem-files
|
||||
hitch-configuration-ciphers
|
||||
hitch-configuration-user
|
||||
hitch-configuration-group
|
||||
hitch-configuration-pid-file
|
||||
hitch-configuration-ocsp-dir
|
||||
hitch-configuration-extra-config
|
||||
hitch-configuration-open-files-soft-limit
|
||||
hitch-configuration-open-files-hard-limit
|
||||
hitch-service-type))
|
||||
|
||||
(define-record-type* <hitch-configuration>
|
||||
hitch-configuration make-hitch-configuration
|
||||
hitch-configuration?
|
||||
(package hitch-configuration-package
|
||||
(default hitch))
|
||||
(backend hitch-configuration-backend
|
||||
(default "[127.0.0.1]:6081"))
|
||||
(frontends hitch-configuration-frontends
|
||||
(default '("[0.0.0.0]:443" "[::]:443")))
|
||||
(pem-files hitch-configuration-pem-files
|
||||
(default '()))
|
||||
(ciphers hitch-configuration-ciphers
|
||||
(default "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"))
|
||||
(user hitch-configuration-user
|
||||
(default "hitch"))
|
||||
(group hitch-configuration-group
|
||||
(default "hitch"))
|
||||
(pid-file hitch-configuration-pid-file
|
||||
(default "/var/run/hitch/hitch.pid"))
|
||||
(ocsp-dir hitch-configuration-ocsp-dir
|
||||
(default "/var/cache/hitch/ocsp"))
|
||||
(extra-config hitch-configuration-extra-config
|
||||
(default '()))
|
||||
(open-files-soft-limit hitch-configuration-open-files-soft-limit
|
||||
(default 32768))
|
||||
(open-files-hard-limit hitch-configuration-open-files-hard-limit
|
||||
(default 65535)))
|
||||
|
||||
(define %hitch-accounts
|
||||
(list
|
||||
(user-group
|
||||
(name "hitch")
|
||||
(system? #t))
|
||||
(user-account
|
||||
(name "hitch")
|
||||
(group "hitch")
|
||||
(system? #t)
|
||||
(comment "Hitch TLS proxy user")
|
||||
(home-directory "/var/empty")
|
||||
(shell (file-append shadow "/sbin/nologin")))))
|
||||
|
||||
(define (hitch-config-file config)
|
||||
(match config
|
||||
(($ <hitch-configuration> _ backend frontends pem-files ciphers user group
|
||||
pid-file ocsp-dir extra-config)
|
||||
(plain-file
|
||||
"hitch.conf"
|
||||
(string-append
|
||||
"backend = \"" backend "\"\n"
|
||||
(string-concatenate
|
||||
(map (lambda (frontend)
|
||||
(string-append "frontend = \"" frontend "\"\n"))
|
||||
frontends))
|
||||
(string-concatenate
|
||||
(map (lambda (pem-file)
|
||||
(string-append "pem-file = \"" pem-file "\"\n"))
|
||||
pem-files))
|
||||
"ciphers = \"" ciphers "\"\n"
|
||||
"user = \"" user "\"\n"
|
||||
"group = \"" group "\"\n"
|
||||
"ocsp-dir = \"" ocsp-dir "\"\n"
|
||||
(string-concatenate
|
||||
(map (lambda (line)
|
||||
(string-append line "\n"))
|
||||
extra-config)))))))
|
||||
|
||||
(define (hitch-activation config)
|
||||
#~(begin
|
||||
(use-modules (guix build utils))
|
||||
(mkdir-p "/var/run/hitch")
|
||||
(mkdir-p #$(hitch-configuration-ocsp-dir config))))
|
||||
|
||||
(define (hitch-reload-procedure package)
|
||||
#~(lambda _
|
||||
(zero? (system* #$(file-append procps "/bin/pkill")
|
||||
"-HUP"
|
||||
"-x"
|
||||
"hitch"))))
|
||||
|
||||
(define (hitch-resource-limits config)
|
||||
`((nofile
|
||||
,(hitch-configuration-open-files-soft-limit config)
|
||||
,(hitch-configuration-open-files-hard-limit config))))
|
||||
|
||||
(define (hitch-shepherd-services config)
|
||||
(let ((config-file (hitch-config-file config))
|
||||
(package (hitch-configuration-package config)))
|
||||
(list
|
||||
(shepherd-service
|
||||
(documentation "Run the Hitch TLS proxy.")
|
||||
(provision '(hitch))
|
||||
(requirement '(user-processes networking))
|
||||
(start
|
||||
#~(make-forkexec-constructor
|
||||
(list #$(file-append package "/sbin/hitch")
|
||||
"--config"
|
||||
#$config-file)
|
||||
#:resource-limits '#$(hitch-resource-limits config)))
|
||||
(stop #~(make-kill-destructor))
|
||||
(actions
|
||||
(list
|
||||
(shepherd-action
|
||||
(name 'reload)
|
||||
(documentation "Reload Hitch certificates and listeners.")
|
||||
(procedure (hitch-reload-procedure package)))))))))
|
||||
|
||||
(define hitch-service-type
|
||||
(service-type
|
||||
(name 'hitch)
|
||||
(extensions
|
||||
(list (service-extension account-service-type
|
||||
(const %hitch-accounts))
|
||||
(service-extension activation-service-type
|
||||
hitch-activation)
|
||||
(service-extension shepherd-root-service-type
|
||||
hitch-shepherd-services)
|
||||
(service-extension profile-service-type
|
||||
(compose list hitch-configuration-package))))
|
||||
(default-value (hitch-configuration))
|
||||
(description "Run the Hitch TLS proxy.")))
|
||||
Reference in New Issue
Block a user