diff --git a/.supertest-dev-sync.json b/.supertest-dev-sync.json index 9ee35dd..ea73a41 100644 --- a/.supertest-dev-sync.json +++ b/.supertest-dev-sync.json @@ -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" } diff --git a/tribes/packages/web.scm b/tribes/packages/web.scm index 10b6e8e..4f4d238 100644 --- a/tribes/packages/web.scm +++ b/tribes/packages/web.scm @@ -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") diff --git a/tribes/services/hitch.scm b/tribes/services/hitch.scm deleted file mode 100644 index ada90c0..0000000 --- a/tribes/services/hitch.scm +++ /dev/null @@ -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 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 - (($ _ 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.")))