From 3080abba40c819933d1857abe4abaaa3cf65baab Mon Sep 17 00:00:00 2001 From: Kaelyn Takata Date: Sat, 16 Dec 2023 01:00:51 +0000 Subject: [PATCH 001/282] gnu: xorgproto: Update to 2023.2. * gnu/packages/xorg.scm (xorgproto): Update to 2023.2. Change-Id: Ie0e4712e4ec3fe9620d160bedcfe74452fa6ae5d Signed-off-by: John Kehayias --- gnu/packages/xorg.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index 382075237a..723b3e0c4e 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -245,14 +245,14 @@ which can be read by any architecture.") (define-public xorgproto (package (name "xorgproto") - (version "2022.2") + (version "2023.2") (source (origin (method url-fetch) (uri (string-append "mirror://xorg/individual/proto" "/xorgproto-" version ".tar.xz")) (sha256 (base32 - "17kbq1x68jl9mz69ays5c0w72lpkqi937raxk0im7y88pvrdn4sx")))) + "0b4c27aq25w1fccks49p020avf9jzh75kaq5qwnww51bp1yvq7xn")))) (build-system gnu-build-system) (propagated-inputs ;; To get util-macros in (almost?) all package inputs. From 158502e40d800407f1bd697dd5dd0437086730bf Mon Sep 17 00:00:00 2001 From: Kaelyn Takata Date: Sat, 16 Dec 2023 01:00:57 +0000 Subject: [PATCH 002/282] gnu: xorg-server-xwayland: Update to 23.2.3 [security fixes]. Fixes CVE-2023-5367 and CVE-2023-5380. See the X.Org security advisory for more information. Also fixes CVE-2023-6377 and CVE-2023-6478. See the X.Org security advisory for more information. * gnu/packages/xorg.scm (xorg-server-xwayland): Update to 23.2.3. [inputs]: Add libxcvt. [properties]: Set upstream-name. Change-Id: I05427b1d93d07a4210466f290621c1ca5effb4af Signed-off-by: John Kehayias --- gnu/packages/xorg.scm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index 723b3e0c4e..a761fb2fbd 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -5250,7 +5250,7 @@ EGLStream families of extensions.") (define-public xorg-server-xwayland (package (name "xorg-server-xwayland") - (version "21.1.3") + (version "23.2.3") (source (origin (method url-fetch) @@ -5258,7 +5258,7 @@ EGLStream families of extensions.") "/xserver/xwayland-" version ".tar.xz")) (sha256 (base32 - "18pqvg76grbsyxa3mm3j06i1l8cwb28nbn2gcnqpsk7x75zpbhpb")))) + "00p30yyikh7h9xsqgir66xb06pspgjlibv1mi0n42irc4fkrm7gb")))) (inputs (list font-dejavu dbus egl-wayland @@ -5268,6 +5268,7 @@ EGLStream families of extensions.") libepoxy libgcrypt libtirpc + libxcvt libxfont2 libxkbfile pixman @@ -5283,6 +5284,7 @@ EGLStream families of extensions.") wayland wayland-protocols) '()))) + (properties '((upstream-name . "xwayland"))) (build-system meson-build-system) (arguments `(#:configure-flags From bc7713fa8878ab8a2158c8660d9b2bbb8fb2f77e Mon Sep 17 00:00:00 2001 From: John Kehayias Date: Sun, 17 Dec 2023 01:11:32 -0500 Subject: [PATCH 003/282] gnu: curl: Update to 8.5.0 [security fixes]. Fixes CVE-2023-46218 and CVE-2023-46219. See and respectively. * gnu/packages/curl.scm (curl): Update to 8.5.0. * gnu/packages/patches/curl-use-ssl-cert-env.patch: Update patch. Change-Id: Iaa6aa5de0f45576dc06bf5eca1eec502e5c83332 --- gnu/packages/curl.scm | 11 +++++--- .../patches/curl-use-ssl-cert-env.patch | 26 +++++++++---------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm index b33f4d36d4..0bf6d996e6 100644 --- a/gnu/packages/curl.scm +++ b/gnu/packages/curl.scm @@ -65,14 +65,14 @@ (define-public curl (package (name "curl") - (version "8.4.0") + (version "8.5.0") (source (origin (method url-fetch) (uri (string-append "https://curl.se/download/curl-" version ".tar.xz")) (sha256 (base32 - "0bd8y8v66biyqvg70ka1sdd0aixs6yzpnvfsig907xzh9af2mihn")) + "1sqfflilf7mcz1g03lazyr6v6pf1rsrzprrknsir10hdwawqvas2")) (patches (search-patches "curl-use-ssl-cert-env.patch")))) (build-system gnu-build-system) (outputs '("out" @@ -127,6 +127,9 @@ (if parallel-tests? (number->string (parallel-job-count)) "1"))) + ;; Ignore test 1477 due to a missing file in the 8.5.0 + ;; release. See + ;; . (arguments `("-C" "tests" "test" ,@make-flags ,(if #$(or (system-hurd?) @@ -134,8 +137,10 @@ (target-aarch64?)) ;; protocol FAIL (string-append "TFLAGS=\"~1474 " + "~1477 " job-count "\"") - (string-append "TFLAGS=" job-count))))) + (string-append "TFLAGS=\"~1477 " + job-count "\""))))) ;; The top-level "make check" does "make -C tests quiet-test", which ;; is too quiet. Use the "test" target instead, which is more ;; verbose. diff --git a/gnu/packages/patches/curl-use-ssl-cert-env.patch b/gnu/packages/patches/curl-use-ssl-cert-env.patch index 24be6e31d9..c39c1f7e98 100644 --- a/gnu/packages/patches/curl-use-ssl-cert-env.patch +++ b/gnu/packages/patches/curl-use-ssl-cert-env.patch @@ -5,37 +5,37 @@ must be called when no other threads exist). This fixes network functionality in rust:cargo, and probably removes the need for other future workarounds. =================================================================== ---- curl-7.66.0.orig/lib/easy.c 2020-01-02 15:43:11.883921171 +0100 -+++ curl-7.66.0/lib/easy.c 2020-01-02 16:18:54.691882797 +0100 -@@ -134,6 +134,9 @@ - # pragma warning(default:4232) /* MSVC extension, dllimport identity */ +--- curl-8.5.0.orig/lib/easy.c 2023-12-17 00:36:32.400468561 -0500 ++++ curl-8.5.0/lib/easy.c 2023-12-17 00:39:08.898612331 -0500 +@@ -137,6 +137,9 @@ + static char *leakpointer; #endif - + +char * Curl_ssl_cert_dir = NULL; +char * Curl_ssl_cert_file = NULL; + /** * curl_global_init() globally initializes curl given a bitwise set of the * different features of what to initialize. -@@ -155,6 +158,9 @@ - #endif +@@ -163,6 +166,9 @@ + goto fail; } - + + Curl_ssl_cert_dir = curl_getenv("SSL_CERT_DIR"); + Curl_ssl_cert_file = curl_getenv("SSL_CERT_FILE"); + if(!Curl_ssl_init()) { DEBUGF(fprintf(stderr, "Error: Curl_ssl_init failed\n")); - return CURLE_FAILED_INIT; -@@ -260,6 +266,9 @@ + goto fail; +@@ -287,6 +293,9 @@ Curl_ssl_cleanup(); Curl_resolver_global_cleanup(); - + + free(Curl_ssl_cert_dir); + free(Curl_ssl_cert_file); + - #ifdef WIN32 - Curl_win32_cleanup(init_flags); + #ifdef _WIN32 + Curl_win32_cleanup(easy_init_flags); #endif diff -ur curl-7.66.0.orig/lib/url.c curl-7.66.0/lib/url.c --- curl-7.66.0.orig/lib/url.c 2020-01-02 15:43:11.883921171 +0100 From 1b0e216ad68cf5a893d4007d1373cdc30c820df6 Mon Sep 17 00:00:00 2001 From: John Kehayias Date: Sun, 17 Dec 2023 01:12:45 -0500 Subject: [PATCH 004/282] gnu: mesa: Update to 23.3.1. * gnu/packages/gl.scm (mesa): Update to 23.3.1. Change-Id: Idf4393b4fa5b7df7a78bd88d7591385023460b5b --- gnu/packages/gl.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index c02a6f0a84..b8827de85e 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -267,7 +267,7 @@ also known as DXTn or DXTC) for Mesa.") (define-public mesa (package (name "mesa") - (version "23.2.1") + (version "23.3.1") (source (origin (method url-fetch) @@ -277,7 +277,7 @@ also known as DXTn or DXTC) for Mesa.") "mesa-" version ".tar.xz"))) (sha256 (base32 - "1k61pgw0vcjrlb4299q98cy7iqmk2r7jmb5ika91z01dzhb0dpk4")))) + "1rhxnifvzf168lys0qq6by1xrzs15q6climjzq7z5czxf1ni4j3f")))) (build-system meson-build-system) (propagated-inputs ;; The following are in the Requires.private field of gl.pc. From d55a4431f3d2b2d61a5b505a8cbbb4cbbd7a8090 Mon Sep 17 00:00:00 2001 From: John Kehayias Date: Mon, 18 Dec 2023 18:37:11 -0500 Subject: [PATCH 005/282] gnu: gtk: Skip failing test. The 'gtk:tools / validate' test started failing for unknown reasons after updating mesa to 23.3.1 and xorgproto to 2023.2. Skip for now. * gnu/packages/gtk.scm (gtk)[arguments]{phases}: Skip the 'gtk:tools / validate' test using the 'patch' phase. Change-Id: I7d0a459c0cbbb979f4589f929eb637f00f642225 --- gnu/packages/gtk.scm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index cc33c9f672..1a3bb56945 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -1178,7 +1178,11 @@ application suites.") ;; The unaligned-offscreen test fails for unknown reasons, also ;; on different distributions (see: ;; https://gitlab.gnome.org/GNOME/gtk/-/issues/4889). - ((" 'unaligned-offscreen',") "")) + ((" 'unaligned-offscreen',") "") + ;; This test, 'gtk:tools / validate', started failing for + ;; unknown reasons after updating mesa to 23.3.1 and xorgproto + ;; to 2023.2. + ((" 'validate',") "")) (substitute* "testsuite/reftests/meson.build" (("[ \t]*'label-wrap-justify.ui',") "") ;; The inscription-markup.ui fails due to /etc/machine-id From ebd3b3e9020f978e65f7be7f4eb0ffff9bbca31f Mon Sep 17 00:00:00 2001 From: John Kehayias Date: Mon, 18 Dec 2023 18:49:40 -0500 Subject: [PATCH 006/282] gnu: mesa: Enable zink support. * gnu/packages/gl.scm (mesa)[arguments]: Add zink to gallium-drivers in configure-flags. Change-Id: I1fc7e38a8307b589a7c48bc0b923fccd9ffcd8b8 --- gnu/packages/gl.scm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index b8827de85e..8c5e61dfd2 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -324,16 +324,16 @@ also known as DXTn or DXTC) for Mesa.") ((target-aarch64?) ;; TODO: Fix svga driver for non-Intel architectures. '("-Dgallium-drivers=etnaviv,freedreno,kmsro,lima,nouveau,\ -panfrost,r300,r600,swrast,tegra,v3d,vc4,virgl")) +panfrost,r300,r600,swrast,tegra,v3d,vc4,virgl,zink")) ((target-arm32?) ;; Freedreno FTBFS when built on a 64-bit machine. '("-Dgallium-drivers=etnaviv,kmsro,lima,nouveau,panfrost,\ -r300,r600,swrast,tegra,v3d,vc4,virgl")) +r300,r600,swrast,tegra,v3d,vc4,virgl,zink")) ((or (target-ppc64le?) (target-ppc32?) (target-riscv64?)) - '("-Dgallium-drivers=nouveau,r300,r600,radeonsi,swrast,virgl")) + '("-Dgallium-drivers=nouveau,r300,r600,radeonsi,swrast,virgl,zink")) (else '("-Dgallium-drivers=crocus,iris,nouveau,r300,r600,radeonsi,\ -svga,swrast,virgl"))) +svga,swrast,virgl,zink"))) ;; Enable various optional features. TODO: opencl requires libclc, ;; omx requires libomxil-bellagio "-Dplatforms=x11,wayland" From bdab356332e391e09d0feafe0fcac9c52388a07d Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Mon, 25 Dec 2023 11:36:20 +0200 Subject: [PATCH 007/282] gnu: curl: Fix test suite on arm platforms. * gnu/packages/curl.scm (curl)[arguments]: Adjust the flags in the custom 'check phase to skip a test instead of ignoring the test result. Change-Id: Ib2098137b04766988507d2f86832871150cd0af7 --- gnu/packages/curl.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm index 0bf6d996e6..f73aed679d 100644 --- a/gnu/packages/curl.scm +++ b/gnu/packages/curl.scm @@ -136,9 +136,9 @@ (target-arm32?) (target-aarch64?)) ;; protocol FAIL - (string-append "TFLAGS=\"~1474 " - "~1477 " - job-count "\"") + (string-append "TFLAGS=~1474 " + "!1477 " + job-count) (string-append "TFLAGS=\"~1477 " job-count "\""))))) ;; The top-level "make check" does "make -C tests quiet-test", which From 42c448ee6e13d165807d83e8c48941bead4847c1 Mon Sep 17 00:00:00 2001 From: John Kehayias Date: Thu, 28 Dec 2023 23:49:15 -0500 Subject: [PATCH 008/282] gnu: mesa: Update to 23.3.2. * gnu/packages/gl.scm (mesa): Update to 23.3.2. Change-Id: Ic348c48f4045e8766646a5fe62209619a0247059 --- gnu/packages/gl.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index ce99b33441..dfe9be73c0 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -294,7 +294,7 @@ also known as DXTn or DXTC) for Mesa.") (define-public mesa (package (name "mesa") - (version "23.3.1") + (version "23.3.2") (source (origin (method url-fetch) @@ -304,7 +304,7 @@ also known as DXTn or DXTC) for Mesa.") "mesa-" version ".tar.xz"))) (sha256 (base32 - "1rhxnifvzf168lys0qq6by1xrzs15q6climjzq7z5czxf1ni4j3f")))) + "1p4swrbmz3kb1805kdj973hf8virgmix4m9qprmcb2bgl4gviz1w")))) (build-system meson-build-system) (propagated-inputs ;; The following are in the Requires.private field of gl.pc. From 4440ba3f6ee1f6936755b2eb1e9d60108d2f9c72 Mon Sep 17 00:00:00 2001 From: Benjamin Slade Date: Fri, 29 Dec 2023 01:08:35 -0600 Subject: [PATCH 009/282] sbcl: update to 2.4.0 * gnu/packages/lisp.scm (sbcl): Update to 2.4.0. Signed-off-by: Guillaume Le Vaillant Change-Id: I6087f3697b1c9501be09e1e983fb36d11ec35ba2 --- gnu/packages/lisp.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm index 4a895984e7..20ec61dfe5 100644 --- a/gnu/packages/lisp.scm +++ b/gnu/packages/lisp.scm @@ -439,14 +439,14 @@ an interpreter, a compiler, a debugger, and much more.") (define-public sbcl (package (name "sbcl") - (version "2.3.7") + (version "2.4.0") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/sbcl/sbcl/" version "/sbcl-" version "-source.tar.bz2")) (sha256 - (base32 "1xwr1pnwd3xj375ainlad7mm479rk2mrks8dc6d92cash3xl90b9")) + (base32 "0xhpdnsg8idzxkn20iw8gd2rk470d7vc22vrp5clq9fj117vgn43")) (modules '((guix build utils))) (snippet '(begin From 466975efea86727465f75a4e2c54e9eeb212f4a6 Mon Sep 17 00:00:00 2001 From: "Paul A. Patience" Date: Fri, 29 Dec 2023 12:28:52 +0000 Subject: [PATCH 010/282] gnu: cl-alexandria: Update to 1.4-0.009b7e5. * gnu/packages/lisp-xyz.scm (sbcl-alexandria): Update to 1.4-0.009b7e5. [file-name]: Rename to cl-alexandria. Move above sha256. Change-Id: I7122aff13715d24e99a58fa4b55b0ef012ae8c40 Signed-off-by: Guillaume Le Vaillant --- gnu/packages/lisp-xyz.scm | 43 ++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index aa3ea7c9ce..3023bf07db 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -168,29 +168,30 @@ (sbcl-package->ecl-package sbcl-alexandria-plus)) (define-public sbcl-alexandria - (package - (name "sbcl-alexandria") - (version "1.4") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://gitlab.common-lisp.net/alexandria/alexandria.git") - (commit (string-append "v" version)))) - (sha256 - (base32 - "0r1adhvf98h0104vq14q7y99h0hsa8wqwqw92h7ghrjxmsvz2z6l")) - (file-name (git-file-name name version)))) - (build-system asdf-build-system/sbcl) - (native-inputs - (list sbcl-rt)) - (synopsis "Collection of portable utilities for Common Lisp") - (description - "Alexandria is a collection of portable utilities. It does not contain + (let ((commit "009b7e532071d9777bdbd63b82d776555da95916") + (revision "0")) + (package + (name "sbcl-alexandria") + (version (git-version "1.4" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.common-lisp.net/alexandria/alexandria.git") + (commit commit))) + (file-name (git-file-name "cl-alexandria" version)) + (sha256 + (base32 "0pdj779j3nwzn8f1661vf00rrjrbks1xgiq0rvwjw6qyxsfqfnl9")))) + (build-system asdf-build-system/sbcl) + (native-inputs + (list sbcl-rt)) + (synopsis "Collection of portable utilities for Common Lisp") + (description + "Alexandria is a collection of portable utilities. It does not contain conceptual extensions to Common Lisp. It is conservative in scope, and portable between implementations.") - (home-page "https://common-lisp.net/project/alexandria/") - (license license:public-domain))) + (home-page "https://common-lisp.net/project/alexandria/") + (license license:public-domain)))) (define-public cl-alexandria (sbcl-package->cl-source-package sbcl-alexandria)) From 154bb7140f77d528253e6363db14524eadd26a67 Mon Sep 17 00:00:00 2001 From: "Paul A. Patience" Date: Fri, 29 Dec 2023 12:58:52 +0000 Subject: [PATCH 011/282] gnu: cl-trivial-garbage: Update to 0.21-0.3474f64. * gnu/packages/lisp-xyz.scm (sbcl-trivial-garbage): Update to 0.21-0.3474f64. Change-Id: I2e6efb02756450fa5c59fe87ae661987cb86d023 Signed-off-by: Guillaume Le Vaillant --- gnu/packages/lisp-xyz.scm | 40 ++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index 3023bf07db..7b2025c7ec 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -4844,27 +4844,29 @@ precisely controls the behavior of the parser via Common Lisp restarts.") (sbcl-package->ecl-package sbcl-unix-opts)) (define-public sbcl-trivial-garbage - (package - (name "sbcl-trivial-garbage") - (version "0.21") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/trivial-garbage/trivial-garbage") - (commit (string-append "v" version)))) - (file-name (git-file-name "trivial-garbage" version)) - (sha256 - (base32 "0122jicfg7pca1wxw8zak1n92h5friqy60988ns0ysksj3fphw9n")))) - (build-system asdf-build-system/sbcl) - (native-inputs - (list sbcl-rt)) - (home-page "https://common-lisp.net/project/trivial-garbage/") - (synopsis "Portable GC-related APIs for Common Lisp") - (description "@command{trivial-garbage} provides a portable API to + (let ((commit "3474f6414b73d4e3aa2d5c53080f4247a34f6380") + (revision "0")) + (package + (name "sbcl-trivial-garbage") + (version (git-version "0.21" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/trivial-garbage/trivial-garbage") + (commit commit))) + (file-name (git-file-name "cl-trivial-garbage" version)) + (sha256 + (base32 "0rfwxvwg0kpcaa0hsi035yrkfdfks4bq8d9azmrww2f0rmv9g6sd")))) + (build-system asdf-build-system/sbcl) + (native-inputs + (list sbcl-rt)) + (home-page "https://common-lisp.net/project/trivial-garbage/") + (synopsis "Portable GC-related APIs for Common Lisp") + (description "@command{trivial-garbage} provides a portable API to finalizers, weak hash-tables and weak pointers on all major implementations of the Common Lisp programming language.") - (license license:public-domain))) + (license license:public-domain)))) (define-public cl-trivial-garbage (sbcl-package->cl-source-package sbcl-trivial-garbage)) From 66d327a0499fdda31c375531080a5b0af8d644ef Mon Sep 17 00:00:00 2001 From: "Paul A. Patience" Date: Fri, 29 Dec 2023 12:14:15 +0000 Subject: [PATCH 012/282] gnu: cl-flexi-streams: Update to 1.0.19-0.74a1027. * gnu/packages/lisp-xyz.scm (sbcl-flexi-streams): Update to 1.0.19-0.74a1027. Change-Id: Id2b82050423aba4f6aa4055c95a18768f110ed71 Signed-off-by: Guillaume Le Vaillant --- gnu/packages/lisp-xyz.scm | 52 ++++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index 7b2025c7ec..41f3056c98 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -1361,35 +1361,37 @@ thin compatibility layer for gray streams.") (sbcl-package->ecl-package sbcl-trivial-gray-streams)) (define-public sbcl-flexi-streams - (package - (name "sbcl-flexi-streams") - (version "1.0.19") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/edicl/flexi-streams") - (commit (string-append "v" version)))) - (file-name (git-file-name "flexi-streams" version)) - (sha256 - (base32 "0v7lh4nrldzczd4mwylvmxfdxk7wfsli24iv1axd6mkb833llr70")))) - (build-system asdf-build-system/sbcl) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'make-git-checkout-writable - (lambda _ - (for-each make-file-writable (find-files ".")) - #t))))) - (inputs `(("trivial-gray-streams" ,sbcl-trivial-gray-streams))) - (synopsis "Implementation of virtual bivalent streams for Common Lisp") - (description "Flexi-streams is an implementation of \"virtual\" bivalent + (let ((commit "74a1027311371a57258eba1bc908e050f5702277") + (revision "0")) + (package + (name "sbcl-flexi-streams") + (version (git-version "1.0.19" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/edicl/flexi-streams") + (commit commit))) + (file-name (git-file-name "cl-flexi-streams" version)) + (sha256 + (base32 "04azqvz11s8dngy49bjl19hrfn0ip1b7m0szm4hlppq364msil7b")))) + (build-system asdf-build-system/sbcl) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'make-git-checkout-writable + (lambda _ + (for-each make-file-writable (find-files ".")) + #t))))) + (inputs `(("trivial-gray-streams" ,sbcl-trivial-gray-streams))) + (synopsis "Implementation of virtual bivalent streams for Common Lisp") + (description "Flexi-streams is an implementation of \"virtual\" bivalent streams that can be layered atop real binary or bivalent streams and that can be used to read and write character data in various single- or multi-octet encodings which can be changed on the fly. It also supplies in-memory binary streams which are similar to string streams.") - (home-page "http://weitz.de/flexi-streams/") - (license license:bsd-3))) + (home-page "http://weitz.de/flexi-streams/") + (license license:bsd-3)))) (define-public cl-flexi-streams (sbcl-package->cl-source-package sbcl-flexi-streams)) From 35a0bb9691e32f7e8027bcf9016ebbc64b74cbcd Mon Sep 17 00:00:00 2001 From: "Paul A. Patience" Date: Fri, 29 Dec 2023 12:17:57 +0000 Subject: [PATCH 013/282] gnu: cl-flexi-streams: Improve package style. * gnu/packages/lisp-xyz.scm (sbcl-flexi-streams)[arguments]: Use G-expressions. Drop trailing #t in phases. [inputs]: Remove labels. Change-Id: I4aae98985435203006384906a0b28c798e3b9740 Signed-off-by: Guillaume Le Vaillant --- gnu/packages/lisp-xyz.scm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index 41f3056c98..9e16912988 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -1377,13 +1377,13 @@ thin compatibility layer for gray streams.") (base32 "04azqvz11s8dngy49bjl19hrfn0ip1b7m0szm4hlppq364msil7b")))) (build-system asdf-build-system/sbcl) (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'make-git-checkout-writable - (lambda _ - (for-each make-file-writable (find-files ".")) - #t))))) - (inputs `(("trivial-gray-streams" ,sbcl-trivial-gray-streams))) + (list #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'make-git-checkout-writable + (lambda _ + (for-each make-file-writable (find-files "."))))))) + (inputs + (list sbcl-trivial-gray-streams)) (synopsis "Implementation of virtual bivalent streams for Common Lisp") (description "Flexi-streams is an implementation of \"virtual\" bivalent streams that can be layered atop real binary or bivalent streams and that can From 67119aadac198423270bf4618a394ab4d1e1d75d Mon Sep 17 00:00:00 2001 From: Guillaume Le Vaillant Date: Thu, 4 Jan 2024 16:56:15 +0100 Subject: [PATCH 014/282] gnu: cl-lparallel: Update to 2.8.4-1.80fc295. * gnu/packages/lisp-xyz.scm (sbcl-lparallel): Update to 2.8.4-1.80fc295. [source]: Update URI to maintained repository. [inputs]: Remove labels. Change-Id: I18ac84c0889a57c040ed9b443774ae16e716918d --- gnu/packages/lisp-xyz.scm | 69 ++++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 34 deletions(-) diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index 9e16912988..36aa59a792 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -5113,39 +5113,40 @@ WebKit browsing engine.") (sbcl-package->ecl-package sbcl-cl-webkit)) (define-public sbcl-lparallel - (package - (name "sbcl-lparallel") - (version "2.8.4") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/lmj/lparallel/") - (commit (string-append "lparallel-" version)))) - (file-name (git-file-name "lparallel" version)) - (sha256 - (base32 - "0g0aylrbbrqsz0ahmwhvnk4cmc2931fllbpcfgzsprwnqqd7vwq9")))) - (build-system asdf-build-system/sbcl) - (inputs - `(("alexandria" ,sbcl-alexandria) - ("bordeaux-threads" ,sbcl-bordeaux-threads) - ("trivial-garbage" ,sbcl-trivial-garbage))) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-dependency - ;; lparallel loads a SBCL specific system in its asd file. This is - ;; not carried over into the fasl which is generated. In order for - ;; it to be carried over, it needs to be listed as a dependency. - (lambda _ - (substitute* "lparallel.asd" - ((":depends-on \\(:alexandria" all) - (string-append all " #+sbcl :sb-cltl2")))))))) - (home-page "https://lparallel.org/") - (synopsis "Parallelism for Common Lisp") - (description - "@command{lparallel} is a library for parallel programming in Common + (let ((commit "80fc2952a074776abd343d6b5d3ab157f0e1df7a") + (revision "1")) + (package + (name "sbcl-lparallel") + (version (git-version "2.8.4" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sharplispers/lparallel/") + (commit commit))) + (file-name (git-file-name "cl-lparallel" version)) + (sha256 + (base32 "0nv2dx8cl25g68icqhw95yr5mygm86lcjzmzijql51na1p60g6y9")))) + (build-system asdf-build-system/sbcl) + (inputs + (list sbcl-alexandria + sbcl-bordeaux-threads + sbcl-trivial-garbage)) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-dependency + ;; lparallel loads a SBCL specific system in its asd file. This is + ;; not carried over into the fasl which is generated. In order for + ;; it to be carried over, it needs to be listed as a dependency. + (lambda _ + (substitute* "lparallel.asd" + ((":depends-on \\(:alexandria" all) + (string-append all " #+sbcl :sb-cltl2")))))))) + (home-page "https://lparallel.org/") + (synopsis "Parallelism for Common Lisp") + (description + "@command{lparallel} is a library for parallel programming in Common Lisp, featuring: @itemize @@ -5160,7 +5161,7 @@ Lisp, featuring: @item task killing by category, @item integrated timeouts. @end itemize\n") - (license license:expat))) + (license license:expat)))) (define-public cl-lparallel (sbcl-package->cl-source-package sbcl-lparallel)) From 386376029367943367734c522efce5649bb3fd5b Mon Sep 17 00:00:00 2001 From: Guillaume Le Vaillant Date: Thu, 4 Jan 2024 17:01:51 +0100 Subject: [PATCH 015/282] gnu: cl-bordeaux-threads: Update to 0.9.3. * gnu/packages/lisp-xyz.scm (sbcl-bordeaux-threads): Update to 0.9.3. [arguments]: Remove 'silence-deprecation-warning' phase. Change-Id: I392d48fb2250bfcae66e3e60d3de89ad4edb99f1 --- gnu/packages/lisp-xyz.scm | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index 36aa59a792..580e21f04e 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -1281,14 +1281,14 @@ timeouts.") (define-public sbcl-bordeaux-threads (package (name "sbcl-bordeaux-threads") - (version "0.9.2") + (version "0.9.3") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/sionescu/bordeaux-threads") (commit (string-append "v" version)))) (sha256 - (base32 "0d9sd7pm91yhln95z8nclhn6n4l5b2cp3pxpggpmpv7rsq84ssmh")) + (base32 "0pp3w5hsph47sqagr4j2pbg3ddb29jx93zg8kvxsp2c4flp0qz0f")) (file-name (git-file-name "cl-bordeaux-threads" version)))) (inputs (list sbcl-alexandria sbcl-global-vars @@ -1300,16 +1300,6 @@ timeouts.") (list #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'silence-deprecation-warning - (lambda _ - ;; The deprecation warning for APIv1 makes the build of some - ;; of the dependents of bordeaux-threads fail because they - ;; interpret it as an error instead of a simple indication. - ;; Let's silence this warning for now. - (substitute* (cons* "apiv1/default-implementations.lisp" - (find-files "apiv1" "impl-.*\\.lisp")) - (("\\(warn \"Bordeaux-Threads APIv1 is deprecated\\. Please migrate to APIv2\\.\"\\)") - "")))) (add-after 'unpack 'adjust-test-sleep (lambda _ ;; 0.001 is too short for some slower machines. From d1ce5a3597ed81f670900740338f6460ce71b653 Mon Sep 17 00:00:00 2001 From: Guillaume Le Vaillant Date: Thu, 4 Jan 2024 17:11:10 +0100 Subject: [PATCH 016/282] gnu: ecl-lparallel: Enable tests. * gnu/packages/lisp-xyz.scm (ecl-lparallel)[arguments]: Enable tests. Change-Id: I58c7ab8173db4bb87ac8f94526bfc912a3e479b9 --- gnu/packages/lisp-xyz.scm | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index 580e21f04e..69e071096d 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -14,7 +14,7 @@ ;;; Copyright © 2018, 2019 Pierre Langlois ;;; Copyright © 2019, 2020 Katherine Cox-Buday ;;; Copyright © 2019 Jesse Gildersleve -;;; Copyright © 2019-2023 Guillaume Le Vaillant +;;; Copyright © 2019-2024 Guillaume Le Vaillant ;;; Copyright © 2019 Brett Gilio ;;; Copyright © 2020 Konrad Hinsen ;;; Copyright © 2020 Dimakis Dimakakos @@ -5157,11 +5157,7 @@ Lisp, featuring: (sbcl-package->cl-source-package sbcl-lparallel)) (define-public ecl-lparallel - (package - (inherit (sbcl-package->ecl-package sbcl-lparallel)) - (arguments - ;; TODO: Find why the tests get stuck forever; disable them for now. - `(#:tests? #f)))) + (sbcl-package->ecl-package sbcl-lparallel)) (define-public sbcl-cl-markup (let ((commit "e0eb7debf4bdff98d1f49d0f811321a6a637b390")) From 7f530f52c9c07b34c4df9c8fbeae0c3c9d0345e9 Mon Sep 17 00:00:00 2001 From: Guillaume Le Vaillant Date: Sun, 7 Jan 2024 11:27:02 +0100 Subject: [PATCH 017/282] gnu: cl-concurrent-hash-tables: Update to 0.0.0-1.6ad539b. * gnu/packages/lisp-xyz.scm (sbcl-concurrent-hash-tables): Update to 0.0.0-1.6ad539b. Change-Id: I6e44d4d17cf21162c099b0bb9e6d1ae60f869c33 --- gnu/packages/lisp-xyz.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index 69e071096d..38eb9bdfdd 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -16328,8 +16328,8 @@ directly.") (sbcl-package->ecl-package sbcl-custom-hash-table)) (define-public sbcl-concurrent-hash-tables - (let ((commit "1b9f0b5da54fece4f42296e1bdacfcec0c370a5a") - (revision "0")) + (let ((commit "6ad539b8970ff94b1e1369b59065ed7d0660904c") + (revision "1")) (package (name "sbcl-concurrent-hash-tables") (version (git-version "0.0.0" revision commit)) @@ -16341,7 +16341,7 @@ directly.") (commit commit))) (file-name (git-file-name "cl-concurrent-hash-tables" version)) (sha256 - (base32 "03g24ycr1ngzg8bv10iwp1bmnldz5bxbfdqrzhfxhicpibh49r96")))) + (base32 "0wgbv3wl33rlfbywmjag0gk7igzfksmib30r8cbnd5n47ic09iip")))) (build-system asdf-build-system/sbcl) (inputs (list sbcl-atomics sbcl-bordeaux-threads)) From 6dc7307cfbe276aa540936199e9bf3c350b39b22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 5 Jan 2024 10:12:17 +0100 Subject: [PATCH 018/282] gnu: shepherd: Update to 0.10.3. * gnu/packages/admin.scm (shepherd-0.10): Update to 0.10.3. Change-Id: I6b14a41c22a18bcf0c5bd380d7f118276d0f761c --- gnu/packages/admin.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 5442714665..3f1de1e6b6 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -373,14 +373,14 @@ interface and is based on GNU Guile.") (define-public shepherd-0.10 (package (inherit shepherd-0.9) - (version "0.10.2") + (version "0.10.3") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/shepherd/shepherd-" version ".tar.gz")) (sha256 (base32 - "0v9ld9gbqdp5ya380fbkdsxa0iqr90gi6yk004ccz3n792nq6wlj")))) + "1vxghlxnxajx2iciqmjia49c5hkir8li0gv29kl55frhn2zgxilf")))) (native-inputs (modify-inputs (package-native-inputs shepherd-0.9) (replace "guile-fibers" ;; Work around From 59a68a6c2a4765b0e9bb17d3a7e65d565dd799dd Mon Sep 17 00:00:00 2001 From: Greg Hogan Date: Tue, 5 Dec 2023 19:51:29 +0000 Subject: [PATCH 019/282] gnu: valgrind: Update to 3.22.0. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/valgrind.scm (valgrind): Update to 3.22.0. Change-Id: I336c4208d0a15e54ea8ae0238b898b8a909eea62 Signed-off-by: Ludovic Courtès --- gnu/packages/valgrind.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/valgrind.scm b/gnu/packages/valgrind.scm index 06622548a5..b50dabf9ca 100644 --- a/gnu/packages/valgrind.scm +++ b/gnu/packages/valgrind.scm @@ -39,7 +39,7 @@ (define-public valgrind (package (name "valgrind") - (version "3.20.0") + (version "3.22.0") (source (origin (method url-fetch) (uri (list (string-append "https://sourceware.org/pub/valgrind" @@ -48,7 +48,7 @@ "/valgrind-" version ".tar.bz2"))) (sha256 (base32 - "1ipkp6yi202pml2r0qwflysmq86dkqd8iyi1y51d6y70vcqw0dl5")))) + "0k1ddnzxfpbng2sp5r31jjxsmp35g977rx6a8jcp4prcvmddn4f8")))) (build-system gnu-build-system) (outputs '("doc" ;16 MB "out")) From f896382594f96d6d41965bd5c6dba856b7991f12 Mon Sep 17 00:00:00 2001 From: "Artyom V. Poptsov" Date: Sat, 9 Dec 2023 11:09:26 +0300 Subject: [PATCH 020/282] gnu: go-golang-org-x-sys: Update to 0.8.0. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/golang.scm (go-golang-org-x-sys): Update to 0.8.0. (go-golang-org-x-sys-0.8): Remove. (go-github-com-quic-go-quic-go, go-github-com-quic-go-qtls-go1-20): Use the new version of "go-golang-org-x-sys". * gnu/packages/networking.scm (yggdrasil): Use the new version of "go-golang-org-x-sys". [propagated-inputs]: Don't rewrite inputs; add "go-golang-org-x-sys". Change-Id: I969dd402427e345550038918f6de607413c44a61 Signed-off-by: Ludovic Courtès --- gnu/packages/golang.scm | 52 ++++++++++------------------------- gnu/packages/networking.scm | 55 ++++++++++++++++++------------------- 2 files changed, 41 insertions(+), 66 deletions(-) diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index 36e2c4b23e..58681af958 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -3959,11 +3959,11 @@ packages.") (license license:bsd-3)))) (define-public go-golang-org-x-sys - (let ((commit "b60007cc4e6f966b1c542e343d026d06723e5653") + (let ((commit "ca59edaa5a761e1d0ea91d6c07b063f85ef24f78") (revision "0")) (package (name "go-golang-org-x-sys") - (version (git-version "0.4.0" revision commit)) + (version (git-version "0.8.0" revision commit)) (source (origin (method git-fetch) (uri (git-reference @@ -3972,7 +3972,7 @@ packages.") (file-name (git-file-name name version)) (sha256 (base32 - "0fr2d6fnpbqx6n89sg9lsinqkdaw49y068kqj2g0cxlhbh69hzii")))) + "1p81niiin8dwyrjl2xsc95136w3vdw4kmj0w3mlh0vh5v134s4xq")))) (build-system go-build-system) (arguments (list @@ -3989,24 +3989,6 @@ support for low-level interaction with the operating system.") (home-page "https://go.googlesource.com/sys") (license license:bsd-3)))) -;; XXX: This version is required for "go-github-com-quic-go-qtls-go1-20". -(define-public go-golang-org-x-sys-0.8 - (let ((commit "ca59edaa5a761e1d0ea91d6c07b063f85ef24f78") - (revision "0")) - (package - (inherit go-golang-org-x-sys) - (name "go-golang-org-x-sys") - (version (git-version "0.8.0" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://go.googlesource.com/sys") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1p81niiin8dwyrjl2xsc95136w3vdw4kmj0w3mlh0vh5v134s4xq"))))))) - (define-public go-golang-org-x-text (package (name "go-golang-org-x-text") @@ -7269,7 +7251,7 @@ implementation of generics.") #:import-path "github.com/quic-go/qtls-go1-20" #:go go-1.20)) (propagated-inputs (list go-golang-org-x-crypto - go-golang-org-x-sys-0.8)) + go-golang-org-x-sys)) (synopsis "TLS 1.3 for QUIC") (description "Go standard library TLS 1.3 implementation, modified for QUIC. For @@ -7330,21 +7312,17 @@ the Go standard library}.") #:tests? #f #:go go-1.20)) (propagated-inputs - (let ((p (package-input-rewriting - `((,go-golang-org-x-sys . ,go-golang-org-x-sys-0.8)) - #:deep? #true))) - (cons go-golang-org-x-sys-0.8 - (map p - (list go-github-com-quic-go-qtls-go1-20 - go-github-com-quic-go-qpack - go-golang-org-x-crypto - go-github-com-cheekybits-genny - go-github-com-marten-seemann-chacha20 - go-github-com-golang-protobuf-proto - go-golang-org-x-crypto - go-golang-org-x-exp - go-golang-org-x-net - go-golang-org-x-sync))))) + (list go-github-com-quic-go-qtls-go1-20 + go-github-com-quic-go-qpack + go-golang-org-x-crypto + go-github-com-cheekybits-genny + go-github-com-marten-seemann-chacha20 + go-github-com-golang-protobuf-proto + go-golang-org-x-crypto + go-golang-org-x-exp + go-golang-org-x-net + go-golang-org-x-sys + go-golang-org-x-sync)) (synopsis "QUIC in Go") (description "This package provides a Go language implementation of the QUIC network protocol.") diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 9844430656..cc6f1a1e04 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -4445,35 +4445,32 @@ QUIC protocol.") "github.com/yggdrasil-network/yggdrasil-go/cmd/yggdrasilctl" "github.com/yggdrasil-network/yggdrasil-go/cmd/genkeys")))))))) (propagated-inputs - (let ((p (package-input-rewriting - `((,go-golang-org-x-sys . ,go-golang-org-x-sys-0.8)) - #:deep? #true))) - (cons go-golang-org-x-sys-0.8 - (map p - (list go-github-com-arceliar-ironwood - go-github-com-arceliar-phony - go-github-com-bits-and-blooms-bitset - go-github-com-bits-and-blooms-bloom - go-github-com-cheggaaa-pb-v3 - go-github-com-fatih-color - go-github-com-gologme-log - go-github-com-hashicorp-go-syslog - go-github-com-hjson-hjson-go - go-github-com-kardianos-minwinsvc - go-github-com-mattn-go-colorable - go-github-com-mattn-go-isatty - go-github-com-mattn-go-runewidth - go-github-com-mitchellh-mapstructure - go-github-com-olekukonko-tablewriter - go-github-com-quic-go-quic-go - go-github-com-vividcortex-ewma - go-golang-org-x-crypto - go-golang-org-x-net - go-golang-org-x-text - go-golang-org-x-tools - go-golang-zx2c4-com-wireguard - go-netlink - go-netns))))) + (list go-golang-zx2c4-com-wireguard + go-golang-org-x-text + go-golang-org-x-net + go-golang-org-x-crypto + go-golang-org-x-tools + go-golang-org-x-sys + go-netns + go-netlink + go-github-com-bits-and-blooms-bitset + go-github-com-bits-and-blooms-bloom + go-github-com-quic-go-quic-go + go-github-com-hjson-hjson-go + go-github-com-olekukonko-tablewriter + go-github-com-mitchellh-mapstructure + go-github-com-mattn-go-runewidth + go-github-com-mattn-go-isatty + go-github-com-mattn-go-colorable + go-github-com-kardianos-minwinsvc + go-github-com-hjson-hjson-go + go-github-com-hashicorp-go-syslog + go-github-com-gologme-log + go-github-com-fatih-color + go-github-com-cheggaaa-pb-v3 + go-github-com-vividcortex-ewma + go-github-com-arceliar-phony + go-github-com-arceliar-ironwood)) (home-page "https://yggdrasil-network.github.io/blog.html") (synopsis "Experiment in scalable routing as an encrypted IPv6 overlay network") From c784c0f43f496e134ef68dbcfbb78d95283796fa Mon Sep 17 00:00:00 2001 From: Rostislav Svoboda Date: Sun, 19 Nov 2023 10:30:59 +0100 Subject: [PATCH 021/282] gnu: Add emacs-color-identifiers-mode. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/emacs-xyz.scm (emacs-color-identifiers-mode): New variable. Change-Id: I1243d468f0ebb39715438fb814d0691dac785515 Signed-off-by: Ludovic Courtès --- gnu/packages/emacs-xyz.scm | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index f2953295c2..64cc7e163d 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -11395,6 +11395,30 @@ package provides a light and a dark variant.") Solarized color scheme.") (license license:expat)))) +(define-public emacs-color-identifiers-mode + (let ((commit "a26d00d898e0a3295cb7da9323046397223ea1fe") + (revision "0")) + (package + (name "emacs-color-identifiers-mode") + (version (git-version "1.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ankurdave/color-identifiers-mode") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1kky827f922ziiwasrfnv97vqdf62fp9yml36x1fjsm2h6qw0c8v")))) + (build-system emacs-build-system) + (propagated-inputs (list emacs-dash)) + (home-page "https://github.com/ankurdave/color-identifiers-mode") + (synopsis "Minor mode for coloring identifiers based on their names") + (description + "This package provides an Emacs minor mode to highlight each source +code identifier uniquely based on its name.") + (license license:gpl3+)))) + (define-public emacs-poet-theme (let ((commit "16eb694f0755c04c4db98614d0eca1199fddad70") (revision "1")) From 4cafd86f77d23a9635e079f36c59b643a86fd3f5 Mon Sep 17 00:00:00 2001 From: Ekaitz Zarraga Date: Sat, 18 Nov 2023 23:54:03 +0100 Subject: [PATCH 022/282] build-system/zig: Add cross-compilation support. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * guix/build/zig-build-system.scm (zig-cross-build): New function (lower): Add cross-compilation support * guix/build-system/zig.scm (build): Add --target flag with target input (check): Disable with cross compilation Change-Id: I5f42ff897bfe00c92c6576900221a15ef210d669 Signed-off-by: Ludovic Courtès --- guix/build-system/zig.scm | 118 ++++++++++++++++++++++++++------ guix/build/zig-build-system.scm | 7 +- 2 files changed, 103 insertions(+), 22 deletions(-) diff --git a/guix/build-system/zig.scm b/guix/build-system/zig.scm index 215178ceb4..1fa4782a2e 100644 --- a/guix/build-system/zig.scm +++ b/guix/build-system/zig.scm @@ -83,6 +83,79 @@ #:system system #:guile-for-build guile))) +(define* (zig-cross-build name + #:key + source target + build-inputs target-inputs host-inputs + (phases '%standard-phases) + (outputs '("out")) + (search-paths '()) + (native-search-paths '()) + (tests? #t) + (test-target #f) + (zig-build-flags ''()) + (zig-test-flags ''()) + (zig-destdir "out") + (zig-test-destdir "test-out") + (zig-release-type #f) + (system (%current-system)) + (guile #f) + (imported-modules %zig-build-system-modules) + (modules '((guix build zig-build-system) + (guix build utils)))) + "Build SOURCE using Zig, and with INPUTS." + (define builder + (with-imported-modules imported-modules + #~(begin + (use-modules #$@(sexp->gexp modules)) + + (define %build-host-inputs + #+(input-tuples->gexp build-inputs)) + + (define %build-target-inputs + (append #$(input-tuples->gexp host-inputs) + #+(input-tuples->gexp target-inputs))) + + (define %build-inputs + (append %build-host-inputs %build-target-inputs)) + + (define %outputs + #$(outputs->gexp outputs)) + + (zig-build #:name #$name + #:source #+source + #:system #$system + #:phases #$phases + #:outputs %outputs + #:target #$target + #:test-target #$test-target + #:inputs %build-target-inputs + #:native-inputs %build-host-inputs + #:search-paths '#$(map search-path-specification->sexp + search-paths) + #:native-search-paths '#$(map + search-path-specification->sexp + native-search-paths) + #:zig-build-flags #$zig-build-flags + #:zig-test-flags #$zig-test-flags + #:zig-release-type #$zig-release-type + #:zig-destdir #$zig-destdir + #:zig-test-destdir #$zig-test-destdir + #:tests? #$tests? + #:search-paths '#$(sexp->gexp + (map search-path-specification->sexp + search-paths)))))) + + (mlet %store-monad ((guile (package->derivation (or guile (default-guile)) + system #:graft? #f))) + (gexp->derivation name builder + #:system system + #:target target + #:graft? #f + #:substitutable? substitutable? + #:guile-for-build guile))) + + (define* (lower name #:key source inputs native-inputs outputs system target (zig (default-zig)) @@ -93,27 +166,30 @@ (define private-keywords '(#:target #:zig #:inputs #:native-inputs #:outputs)) - ;; TODO: support cross-compilation - ;; It's as simple as adding some build flags to `zig-build-flags` - ;; -Dtarget=aarch64-linux-musl, for example. - (and (not target) - (bag - (name name) - (system system) - (target target) - (host-inputs `(,@(if source - `(("source" ,source)) - '()) - ,@inputs - - ;; Keep the standard inputs of 'gnu-build-system' - ;; TODO: do we need this? - ,@(standard-packages))) - (build-inputs `(("zig" ,zig) - ,@native-inputs)) - (outputs outputs) - (build zig-build) - (arguments (strip-keyword-arguments private-keywords arguments))))) + (bag + (name name) + (system system) + (target target) + (build-inputs `(,@(if source + `(("source" ,source)) + '()) + ,@`(("zig" ,zig)) + ,@native-inputs + ,@(if target '() inputs) + ,@(if target + ;; Use the standard cross inputs of + ;; 'gnu-build-system'. + (standard-cross-packages target 'host) + '()) + ;; Keep the standard inputs of 'gnu-build-system'. + ,@(standard-packages))) + (host-inputs (if target inputs '())) + (target-inputs (if target + (standard-cross-packages target 'target) + '())) + (outputs outputs) + (build (if target zig-cross-build zig-build)) + (arguments (strip-keyword-arguments private-keywords arguments)))) (define zig-build-system (build-system diff --git a/guix/build/zig-build-system.scm b/guix/build/zig-build-system.scm index d414ebfb17..8352a73324 100644 --- a/guix/build/zig-build-system.scm +++ b/guix/build/zig-build-system.scm @@ -47,6 +47,7 @@ zig-build-flags zig-release-type ;; "safe", "fast" or "small" empty for a ;; debug build" + target #:allow-other-keys) "Build a given Zig package." @@ -56,6 +57,9 @@ "--prefix-lib-dir" "lib" "--prefix-exe-dir" "bin" "--prefix-include-dir" "include" + ,@(if target + (list (string-append "-Dtarget=" target)) + '()) ,@(if zig-release-type (list (string-append "-Drelease-" zig-release-type)) '()) @@ -65,9 +69,10 @@ (define* (check #:key tests? zig-test-flags + target #:allow-other-keys) "Run all the tests" - (when tests? + (when (and tests? (not target)) (let ((old-destdir (getenv "DESTDIR"))) (setenv "DESTDIR" "test-out") ;; Avoid colisions with the build output (let ((call `("zig" "build" "test" From 51d25c771cfb7e26f5bd0d675893f68a8cbb92dc Mon Sep 17 00:00:00 2001 From: Troy Figiel Date: Fri, 17 Nov 2023 21:48:02 +0100 Subject: [PATCH 023/282] gnu: python-uqbar: Update to 0.5.9. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/graphviz.scm (python-uqbar): Update to 0.5.9. [source]: Add patch for Python 3.10 compatibility. [arguments]: Remove outdated patch phase. Change-Id: I81d83efd69bd07fe12790981c48a6e82297908f0 Signed-off-by: Ludovic Courtès --- gnu/local.mk | 1 + gnu/packages/graphviz.scm | 12 +++------- .../patches/python-uqbar-python3.10.patch | 23 +++++++++++++++++++ 3 files changed, 27 insertions(+), 9 deletions(-) create mode 100644 gnu/packages/patches/python-uqbar-python3.10.patch diff --git a/gnu/local.mk b/gnu/local.mk index f804f4ef5b..3548b5eb3d 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1782,6 +1782,7 @@ dist_patch_DATA = \ %D%/packages/patches/python-sphinx-prompt-docutils-0.19.patch \ %D%/packages/patches/python-telingo-fix-comparison.patch \ %D%/packages/patches/python-typeguard-python3.10.patch \ + %D%/packages/patches/python-uqbar-python3.10.patch \ %D%/packages/patches/python-wxwidgets-type-errors.patch \ %D%/packages/patches/qtdeclarative-5-disable-qmlcache.patch \ %D%/packages/patches/qtdeclarative-disable-qmlcache.patch \ diff --git a/gnu/packages/graphviz.scm b/gnu/packages/graphviz.scm index b91c365e3c..c5507e036c 100644 --- a/gnu/packages/graphviz.scm +++ b/gnu/packages/graphviz.scm @@ -195,7 +195,7 @@ structure and layout algorithms.") (define-public python-uqbar (package (name "python-uqbar") - (version "0.5.6") + (version "0.5.9") (source (origin (method git-fetch) @@ -205,18 +205,12 @@ structure and layout algorithms.") (file-name (git-file-name name version)) (sha256 (base32 - "1ml3x2mf7nlnvrh9lari5yk0sz2mmg39jwsbjxnpzhnw4kcwpdrs")))) + "0c573nzpm51qgz2g296f8pw8ys0i3r6daynxk06zagk5l5fgw9ar")) + (patches (search-patches "python-uqbar-python3.10.patch")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'patch - (lambda _ - (substitute* "setup.py" - ;; Latest versions of sphink-rtd-theme require npm to build. - (("sphinx-rtd-theme >= 0.5.0") "sphinx-rtd-theme >= 0.2.4") - (("black") "black >= 19.10b0")) - #t)) (replace 'check (lambda* (#:key tests? #:allow-other-keys) (when tests? diff --git a/gnu/packages/patches/python-uqbar-python3.10.patch b/gnu/packages/patches/python-uqbar-python3.10.patch new file mode 100644 index 0000000000..164f0c0c64 --- /dev/null +++ b/gnu/packages/patches/python-uqbar-python3.10.patch @@ -0,0 +1,23 @@ +Since Python 3.10 the output of a CLI program created with argparse +uses "options" instead of "optional arguments". This behaviour breaks +the tests in python-uqbar. + +--- a/tests/test_cli.py ++++ b/tests/test_cli.py +@@ -84,7 +84,7 @@ def test_call_help(): + + speak like a cat + +- optional arguments: ++ options: + -h, --help show this help message and exit + --version show program's version number and exit + --loud be adamant +@@ -101,6 +101,6 @@ def test_help(): + """ + usage: vox-aggregator [-h] [--version] {help,list,birds,mammals} ... + +- optional arguments: ++ options: + -h, --help show this help message and exit + --version show program's version number and exit From b6106e8fff83c1fdf1d46527813b7b1f2fc90801 Mon Sep 17 00:00:00 2001 From: Tristan Cottam Date: Sat, 18 Nov 2023 12:31:13 +0100 Subject: [PATCH 024/282] gnu: Add emacs-adwaita-dark-theme MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/emacs-xyz.scm (emacs-adwaita-dark-theme): New variable. Change-Id: Id6e6d0d6aa27e7c1cc6ec0fc11c3a5f09231d751 Signed-off-by: Ludovic Courtès --- gnu/packages/emacs-xyz.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 64cc7e163d..99c16f382d 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -2017,6 +2017,27 @@ Apprentice and Sourcerer.") theme but now takes more inspiration from the Nano theme.") (license license:gpl3+))) +(define-public emacs-adwaita-dark-theme + ;; Version 1.1.1 isn't tagged upstream. + (package + (name "emacs-adwaita-dark-theme") + (version "1.1.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/jessieh/adwaita-dark-theme") + (commit "057c39313341907b35c68d2179226886a0c276fd"))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1g7hyg2hfvn24gaw4lca4g8lw10q2wg9nfrgl7pfdggz202m027c")))) + (build-system emacs-build-system) + (home-page "https://gitlab.com/jessieh/adwaita-dark-theme") + (synopsis "Adwaita-inspired dark color scheme for Emacs") + (description + "This package provides an Adwaita-inspired dark color scheme for Emacs.") + (license license:gpl2+))) + (define-public emacs-treepy (package (name "emacs-treepy") From ce4fbea7bb3ec43a220ee3654c19fc52c00cc9d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20C=C3=B4t=C3=A9?= Date: Mon, 20 Nov 2023 14:51:52 +0000 Subject: [PATCH 025/282] gnu: libmatroska: Update to 1.7.1. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/video.scm (libmatroska): Update to 1.7.1. Change-Id: Ia2c943743636f0a01b1446be871b6dcd663ad0d3 Signed-off-by: Ludovic Courtès --- gnu/packages/video.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index e70aa5352e..f7d720f89d 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -1505,14 +1505,14 @@ SMPTE 314M.") (define-public libmatroska (package (name "libmatroska") - (version "1.6.3") + (version "1.7.1") (source (origin (method url-fetch) (uri (string-append "https://dl.matroska.org/downloads/" "libmatroska/libmatroska-" version ".tar.xz")) (sha256 - (base32 "06h81sxyz2riic0gpzik6ffcnq32wrqphi8c6k55glcdymiimyfs")))) + (base32 "1cqq61qgv6x3xjzjrw71dya7lbsbrsmi9raqm2k4hgfrp0rk0ajp")))) (build-system cmake-build-system) (inputs (list libebml)) From 5d97fdb608a89e8653f093bf34720e0822124805 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20C=C3=B4t=C3=A9?= Date: Mon, 20 Nov 2023 14:51:53 +0000 Subject: [PATCH 026/282] gnu: mkvtoolnix: Update to 80.0. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/video.scm (mkvtoolnix): Update to 80.0. [inputs]: Add GMP and QTSVG. Replace QT*-5 by their non-suffixed variant. [native-inputs]: Likewise, and change to RUBY-3.2. Change-Id: If01ce578c9f9ac50e1c99e96c110687e8872177c Signed-off-by: Ludovic Courtès --- gnu/packages/video.scm | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index f7d720f89d..d1b163dc8b 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -1047,14 +1047,14 @@ H.264 (MPEG-4 AVC) video streams.") (define-public mkvtoolnix (package (name "mkvtoolnix") - (version "52.0.0") + (version "80.0") (source (origin (method url-fetch) (uri (string-append "https://mkvtoolnix.download/sources/" "mkvtoolnix-" version ".tar.xz")) (sha256 - (base32 "15y7ahlifsclnkl70wn5w34dil8nwcwcjnw3k2ydqc6dz4vb0j5s")) + (base32 "1x9k9pmw7mzm2amvm251a45dlj9p9iqfank5p4w2fizxkapws25v")) (modules '((guix build utils))) (snippet '(begin ;; Delete bundled libraries. @@ -1070,6 +1070,7 @@ H.264 (MPEG-4 AVC) video streams.") (outputs '("out" "gui")) ; "mkvtoolnix-gui" brings the closure size from ~300 MB to 1.5+ GB. (inputs (list boost + gmp bzip2 cmark libebml @@ -1083,8 +1084,9 @@ H.264 (MPEG-4 AVC) video streams.") lzo pcre2 pugixml - qtbase-5 - qtmultimedia-5 + qtbase + qtmultimedia + qtsvg utfcpp zlib)) (native-inputs @@ -1096,8 +1098,8 @@ H.264 (MPEG-4 AVC) video streams.") ("perl" ,perl) ("pkg-config" ,pkg-config) ("po4a" ,po4a) - ("qttools-5" ,qttools-5) - ("ruby" ,ruby-2.7))) + ("qttools" ,qttools) + ("ruby" ,ruby-3.2))) (arguments `(#:configure-flags (list (string-append "--with-boost=" From 5f8a993aa85554ca09bd27139230d7664107e1b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 7 Jan 2024 16:27:09 +0100 Subject: [PATCH 027/282] gnu: mkvtoolnix: Remove input labels and use gexps. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/video.scm (mkvtoolnix)[native-inputs]: Remove labels. [arguments]: Use gexps and ‘this-package-input’ & co. Change-Id: I12b6638cd78c8c957ac9856c0e19025f4941847e --- gnu/packages/video.scm | 157 ++++++++++++++++++++++------------------- 1 file changed, 83 insertions(+), 74 deletions(-) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index d1b163dc8b..4181013b0d 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -1090,81 +1090,90 @@ H.264 (MPEG-4 AVC) video streams.") utfcpp zlib)) (native-inputs - `(("docbook-xsl" ,docbook-xsl) - ("gettext" ,gettext-minimal) - ("googletest" ,googletest) - ("libxslt" ,libxslt) - ("nlohmann-json" ,nlohmann-json) - ("perl" ,perl) - ("pkg-config" ,pkg-config) - ("po4a" ,po4a) - ("qttools" ,qttools) - ("ruby" ,ruby-3.2))) + (list docbook-xsl + gettext-minimal + googletest + libxslt + nlohmann-json + perl + pkg-config + po4a + qttools + ruby-3.2)) (arguments - `(#:configure-flags - (list (string-append "--with-boost=" - (assoc-ref %build-inputs "boost")) - (string-append "--with-docbook-xsl-root=" - (assoc-ref %build-inputs "docbook-xsl") - "/xml/xsl/docbook-xsl-" - ,(package-version docbook-xsl)) - "--enable-update-check=no" - "--enable-precompiled-headers=no") - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-utfcpp-include - (lambda _ - (substitute* "src/common/strings/utf8.cpp" - (("") - "")))) - (add-after 'unpack 'patch-relative-file-names - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (substitute* "src/mkvtoolnix-gui/util/settings.cpp" - (("mkvmerge" match) - (string-append out "/bin/" match))) - #t))) - (add-before 'configure 'add-googletest - (lambda* (#:key inputs #:allow-other-keys) - (symlink (search-input-directory inputs "/include/gtest") - "lib/gtest"))) - (replace 'build - (lambda _ - (let ((-j (list "-j" (number->string (parallel-job-count))))) - (apply invoke "rake" -j)))) - (replace 'check - (lambda _ - (invoke "rake" "tests/unit"))) - (replace 'install - (lambda _ - (invoke "rake" "install"))) - (add-after 'install 'post-install - (lambda* (#:key outputs #:allow-other-keys) - ;; Move the Qt interface to "gui". - (let* ((out (assoc-ref outputs "out")) - (gui (assoc-ref outputs "gui")) - (strip-store-dir (lambda (path) - (substring path (string-prefix-length out path))))) - (for-each - (lambda (file) - (mkdir-p (string-append gui (dirname file))) - (rename-file (string-append out file) - (string-append gui file))) - (append '("/bin/mkvtoolnix-gui" - "/share/applications/org.bunkus.mkvtoolnix-gui.desktop" - "/share/metainfo/org.bunkus.mkvtoolnix-gui.appdata.xml" - "/share/mime/packages/org.bunkus.mkvtoolnix-gui.xml") - (map strip-store-dir (find-files out "\\.ogg$")) - (map strip-store-dir (find-files out "mkvtoolnix-gui\\.png$")) - (map strip-store-dir (find-files out "mkvtoolnix-gui\\.1")))) - (for-each - (lambda (file) - (delete-file-recursively (string-append out file))) - '("/share/applications" - "/share/metainfo" - "/share/mime" - "/share/mkvtoolnix"))) - #t))))) + (list + #:configure-flags + #~(list (string-append "--with-boost=" + #$(this-package-input "boost")) + (string-append "--with-docbook-xsl-root=" + #$(this-package-native-input "docbook-xsl") + "/xml/xsl/docbook-xsl-" + #$(package-version + (this-package-native-input "docbook-xsl"))) + "--enable-update-check=no" + "--enable-precompiled-headers=no") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-utfcpp-include + (lambda _ + (substitute* "src/common/strings/utf8.cpp" + (("") + "")))) + (add-after 'unpack 'patch-relative-file-names + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "src/mkvtoolnix-gui/util/settings.cpp" + (("mkvmerge" match) + (string-append out "/bin/" match))) #t))) + (add-before 'configure 'add-googletest + (lambda* (#:key inputs #:allow-other-keys) + (symlink (search-input-directory inputs + "/include/gtest") + "lib/gtest"))) + (replace 'build + (lambda _ + (let ((-j (list "-j" + (number->string (parallel-job-count))))) + (apply invoke "rake" -j)))) + (replace 'check + (lambda _ + (invoke "rake" "tests/unit"))) + (replace 'install + (lambda _ + (invoke "rake" "install"))) + (add-after 'install 'post-install + (lambda* (#:key outputs #:allow-other-keys) + ;; Move the Qt interface to "gui". + (let* ((out (assoc-ref outputs "out")) + (gui (assoc-ref outputs "gui")) + (strip-store-dir (lambda (path) + (substring path + (string-prefix-length + out path))))) + (for-each (lambda (file) + (mkdir-p (string-append gui + (dirname + file))) + (rename-file (string-append out file) + (string-append gui file))) + (append '("/bin/mkvtoolnix-gui" + "/share/applications/org.bunkus.mkvtoolnix-gui.desktop" + "/share/metainfo/org.bunkus.mkvtoolnix-gui.appdata.xml" + "/share/mime/packages/org.bunkus.mkvtoolnix-gui.xml") + (map strip-store-dir + (find-files out "\\.ogg$")) + (map strip-store-dir + (find-files out + "mkvtoolnix-gui\\.png$")) + (map strip-store-dir + (find-files out + "mkvtoolnix-gui\\.1")))) + (for-each (lambda (file) + (delete-file-recursively + (string-append out file))) + '("/share/applications" + "/share/metainfo" "/share/mime" + "/share/mkvtoolnix")))))))) (home-page "https://mkvtoolnix.download") (synopsis "Tools to create, alter and inspect Matroska files") (description From 7b58443bc5506a56ea78aaf44006ce6209ee6cc8 Mon Sep 17 00:00:00 2001 From: Tomas Volf <~@wolfsden.cz> Date: Sat, 6 Jan 2024 17:17:48 +0100 Subject: [PATCH 028/282] Update mailmap. * .mailmap: Add entry for Tomas Volf. Change-Id: I0a8b43b3b7f71c3020f96118adcbad8937a290fb Signed-off-by: Mathieu Othacehe --- .mailmap | 1 + 1 file changed, 1 insertion(+) diff --git a/.mailmap b/.mailmap index ee6dd3f4f2..39b01335ee 100644 --- a/.mailmap +++ b/.mailmap @@ -90,6 +90,7 @@ Taylan Ulrich Bayırlı/Kammer Theodoros Foradis Thomas Danckaert Tobias Geerinckx-Rice +Tomas Volf <~@wolfsden.cz> Tomáš Čech Vincent Legoll Zheng Junjie <873216071@qq.com> Z572 <873216071@qq.com> From 0c75999d19e97fa30e246d0a698828f467dc1c5a Mon Sep 17 00:00:00 2001 From: Tomas Volf <~@wolfsden.cz> Date: Sat, 6 Jan 2024 14:59:54 +0100 Subject: [PATCH 029/282] gnu: cgit: Update to 1.2.3-793c420. * gnu/packages/version-control.scm (cgit): Update to 793c420897e18eb3474c751d54cf4e0983f85433. [inputs]: Update git to 2.43.0. Change-Id: I3441e9e2837d22ae208f5cccc53d815cc3e0f042 Signed-off-by: Mathieu Othacehe --- gnu/packages/version-control.scm | 211 ++++++++++++++++--------------- 1 file changed, 107 insertions(+), 104 deletions(-) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 40d7a00dae..4d5d1a9720 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -1072,115 +1072,118 @@ collaboration using typical untrusted file hosts or services.") (license license:gpl3+))) (define-public cgit - (package - (name "cgit") - ;; Update the ‘git-source’ input as well. - (version "1.2.3") - (source (origin - (method url-fetch) - (uri (string-append - "https://git.zx2c4.com/cgit/snapshot/cgit-" - version ".tar.xz")) - (sha256 - (base32 - "193d990ym10qlslk0p8mjwp2j6rhqa7fq0y1iff65lvbyv914pss")))) - (build-system gnu-build-system) - (arguments - (list - #:tests? #f ; XXX: fail to build the in-source git. - #:test-target "test" - #:make-flags #~(list (string-append "CC=" #$(cc-for-target)) - "SHELL_PATH=sh") - #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'unpack-git - (lambda* (#:key inputs #:allow-other-keys) - ;; Unpack the source of git into the 'git' directory. - (invoke "tar" "--strip-components=1" "-C" "git" "-xf" - (assoc-ref inputs "git-source")))) - (add-after 'unpack 'patch-absolute-file-names - (lambda* (#:key inputs #:allow-other-keys) - (define (quoted-file-name input path) - (string-append "\"" input path "\"")) - (substitute* "ui-snapshot.c" - (("\"gzip\"") - (quoted-file-name (assoc-ref inputs "gzip") "/bin/gzip")) - (("\"bzip2\"") - (quoted-file-name (assoc-ref inputs "bzip2") "/bin/bzip2")) - (("\"xz\"") - (quoted-file-name (assoc-ref inputs "xz") "/bin/xz"))) + (let ((commit "793c420897e18eb3474c751d54cf4e0983f85433") + (rev "1")) + (package + (name "cgit") + ;; Update the ‘git-source’ input as well. + (version (git-version "1.2.3" rev commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://git.zx2c4.com/cgit") + (commit commit))) + (sha256 + (base32 + "1mhrm14wpqvralf9j33ih5ai6naiq3g2jg2z91gnw9dhh8f9ilwz")) + (file-name (git-file-name name version)))) + (build-system gnu-build-system) + (arguments + (list + #:tests? #f ; XXX: fail to build the in-source git. + #:test-target "test" + #:make-flags #~(list (string-append "CC=" #$(cc-for-target)) + "SHELL_PATH=sh") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'unpack-git + (lambda* (#:key inputs #:allow-other-keys) + ;; Unpack the source of git into the 'git' directory. + (invoke "tar" "--strip-components=1" "-C" "git" "-xf" + (assoc-ref inputs "git-source")))) + (add-after 'unpack 'patch-absolute-file-names + (lambda* (#:key inputs #:allow-other-keys) + (define (quoted-file-name input path) + (string-append "\"" input path "\"")) + (substitute* "ui-snapshot.c" + (("\"gzip\"") + (quoted-file-name (assoc-ref inputs "gzip") "/bin/gzip")) + (("\"bzip2\"") + (quoted-file-name (assoc-ref inputs "bzip2") "/bin/bzip2")) + (("\"xz\"") + (quoted-file-name (assoc-ref inputs "xz") "/bin/xz"))) - (substitute* "filters/about-formatting.sh" - (("$\\(dirname $0\\)") (string-append (assoc-ref outputs "out") - "/lib/cgit/filters")) - (("\\| tr") (string-append "| " (which "tr")))) + (substitute* "filters/about-formatting.sh" + (("$\\(dirname $0\\)") (string-append (assoc-ref outputs "out") + "/lib/cgit/filters")) + (("\\| tr") (string-append "| " (which "tr")))) - (substitute* "filters/html-converters/txt2html" - (("sed") (which "sed"))) + (substitute* "filters/html-converters/txt2html" + (("sed") (which "sed"))) - (substitute* "filters/html-converters/man2html" - (("groff") (which "groff"))) + (substitute* "filters/html-converters/man2html" + (("groff") (which "groff"))) - (substitute* "filters/html-converters/rst2html" - (("rst2html\\.py") (which "rst2html.py"))))) - (delete 'configure) ; no configure script - (add-after 'build 'build-man - (lambda* (#:key make-flags #:allow-other-keys) - (apply invoke "make" "doc-man" make-flags))) - (replace 'install - (lambda* (#:key make-flags outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (apply invoke - "make" "install" "install-man" - (string-append "prefix=" out) - (string-append "CGIT_SCRIPT_PATH=" out "/share/cgit") - make-flags) - ;; Move the platform-dependent 'cgit.cgi' into lib to get it - ;; stripped. - (rename-file (string-append out "/share/cgit/cgit.cgi") - (string-append out "/lib/cgit/cgit.cgi"))))) - (add-after 'install 'wrap-python-scripts - (lambda* (#:key outputs #:allow-other-keys) - (for-each - (lambda (file) - (wrap-program (string-append (assoc-ref outputs "out") - "/lib/cgit/filters/" file) - `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH"))))) - '("syntax-highlighting.py" - "html-converters/md2html"))))))) - (native-inputs - ;; For building manpage. - (list asciidoc)) - (inputs - `(;; Building cgit requires a Git source tree. - ("git-source" - ,(origin - (method url-fetch) - ;; cgit is tightly bound to git. Use GIT_VER from the Makefile, - ;; which may not match the current (package-version git). - (uri "mirror://kernel.org/software/scm/git/git-2.25.4.tar.xz") - (sha256 - (base32 "11am6s46wmn1yll5614smjhzlghbqq6gysgcs64igjr9y5wzpdxq")))) - ("bash-minimal" ,bash-minimal) - ("openssl" ,openssl) - ("python" ,python) - ("python-docutils" ,python-docutils) - ("python-markdown" ,python-markdown) - ("python-pygments" ,python-pygments) - ("zlib" ,zlib) - ;; bzip2, groff, gzip and xz are inputs (not native inputs) - ;; since they are actually substituted into cgit source and - ;; referenced by the built package output. - ("bzip2" ,bzip2) - ("groff" ,groff) - ("gzip" ,gzip) - ("xz" ,xz))) - (home-page "https://git.zx2c4.com/cgit/") - (synopsis "Web frontend for git repositories") - (description - "CGit is an attempt to create a fast web interface for the Git SCM, using + (substitute* "filters/html-converters/rst2html" + (("rst2html\\.py") (which "rst2html.py"))))) + (delete 'configure) ; no configure script + (add-after 'build 'build-man + (lambda* (#:key make-flags #:allow-other-keys) + (apply invoke "make" "doc-man" make-flags))) + (replace 'install + (lambda* (#:key make-flags outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (apply invoke + "make" "install" "install-man" + (string-append "prefix=" out) + (string-append "CGIT_SCRIPT_PATH=" out "/share/cgit") + make-flags) + ;; Move the platform-dependent 'cgit.cgi' into lib to get it + ;; stripped. + (rename-file (string-append out "/share/cgit/cgit.cgi") + (string-append out "/lib/cgit/cgit.cgi"))))) + (add-after 'install 'wrap-python-scripts + (lambda* (#:key outputs #:allow-other-keys) + (for-each + (lambda (file) + (wrap-program (string-append (assoc-ref outputs "out") + "/lib/cgit/filters/" file) + `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH"))))) + '("syntax-highlighting.py" + "html-converters/md2html"))))))) + (native-inputs + ;; For building manpage. + (list asciidoc)) + (inputs + `( ;; Building cgit requires a Git source tree. + ("git-source" + ,(origin + (method url-fetch) + ;; cgit is tightly bound to git. Use GIT_VER from the Makefile, + ;; which may not match the current (package-version git). + (uri "mirror://kernel.org/software/scm/git/git-2.43.0.tar.xz") + (sha256 + (base32 "1v3nkfm3gw8wr7595qy86qla8xyjvi85fmly4lfph4frfcz60ijl")))) + ("bash-minimal" ,bash-minimal) + ("openssl" ,openssl) + ("python" ,python) + ("python-docutils" ,python-docutils) + ("python-markdown" ,python-markdown) + ("python-pygments" ,python-pygments) + ("zlib" ,zlib) + ;; bzip2, groff, gzip and xz are inputs (not native inputs) + ;; since they are actually substituted into cgit source and + ;; referenced by the built package output. + ("bzip2" ,bzip2) + ("groff" ,groff) + ("gzip" ,gzip) + ("xz" ,xz))) + (home-page "https://git.zx2c4.com/cgit/") + (synopsis "Web frontend for git repositories") + (description + "CGit is an attempt to create a fast web interface for the Git SCM, using a built-in cache to decrease server I/O pressure.") - (license license:gpl2))) + (license license:gpl2)))) (define-public cgit-pink (package From a5d5c5b357515ec9365ee0b678fa29ac1f86288d Mon Sep 17 00:00:00 2001 From: Tomas Volf <~@wolfsden.cz> Date: Sat, 6 Jan 2024 14:15:35 +0100 Subject: [PATCH 030/282] gnu: ovmf: Update to 202311. * gnu/packages/firmware.scm (ovmf): Update to 202311. Change-Id: I32b6d7587b37211b0de6a118024cb4f854ce112d Signed-off-by: Mathieu Othacehe --- gnu/packages/firmware.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index 5cebf515bf..e691bf33da 100644 --- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -875,7 +875,7 @@ Executables included are: (let ((toolchain-ver "GCC5")) (package (name "ovmf") - (version "202308") + (version "202311") (source (origin (method git-fetch) (uri (git-reference @@ -886,7 +886,7 @@ Executables included are: (file-name (git-file-name name version)) (sha256 (base32 - "04rnfnaqr2c7ayplj7ib730zp1snw157zx5rmykz5hz1zz2vb20j")))) + "136dl5cxpjpg37whzlqq7jrrjsgybmwrgkbbmks8xaixqmzwhbw0")))) (build-system gnu-build-system) (arguments (list From 224499f2d466b1a3f3a45e44a709a983185b69ca Mon Sep 17 00:00:00 2001 From: Mattia Bunel Date: Fri, 5 Jan 2024 14:50:53 +0100 Subject: [PATCH 031/282] gnu: Add laszip. * gnu/packages/geo.scm (laszip): New variable. Signed-off-by: Mathieu Othacehe Change-Id: I8baf25f1d51c9ac90bcea4a1e9a564e21e0a9ee6 --- gnu/packages/geo.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm index 31abb2cc36..73b7aa3d11 100644 --- a/gnu/packages/geo.scm +++ b/gnu/packages/geo.scm @@ -3228,3 +3228,31 @@ For maps, it can uses its own \"binfile\" map format, or Garmin map file format, and data from OpenStreetMap, Garmin maps, Marco Polo Grosser Reiseplaner, Routeplaner Europa 2007, Map + Route.") (license license:gpl2))) + +(define-public laszip + (package + (name "laszip") + (version "3.4.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/LASzip/LASzip") + (commit "3.4.3"))) + (file-name (git-file-name name version)) + (sha256 + (base32 "09lcsgxwv0jq50fhsgfhx0npbf1zcwn3hbnq6q78fshqksbxmz7m")))) + (build-system cmake-build-system) + (arguments + (list + #:configure-flags #~(list "-DLASZIP_BUILD_STATIC=NO") + #:build-type "Release" + ;; No tests. + #:tests? #f)) + (home-page "https://laszip.org/") + (synopsis "Compression library for LAS files") + (description + "LASzip is a library for compressing @code{LAS} files and uncompressing +@code{LAZ} files. The @code{LAS} format is a file format designed for the +interchange and archiving of lidar point cloud data.") + (license license:asl2.0))) From 9c634835e5d4418095257dee71eb0bfaaddffa05 Mon Sep 17 00:00:00 2001 From: Georgios Athanasiou Date: Sun, 7 Jan 2024 13:27:07 +0200 Subject: [PATCH 032/282] gnu: Add guile-yamlpp. * gnu/packages/guile-xyz.scm (guile-yamlpp): New variable. Change-Id: I54694eeea17e414df4d7778a2e119f3f995c20e4 Signed-off-by: Mathieu Othacehe --- gnu/packages/guile-xyz.scm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index 75e3754046..9dc1176797 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -1839,6 +1839,33 @@ written in pure Scheme by using Guile's foreign function interface.") library}.") (license license:gpl3+))) +(define-public guile-yamlpp + (package + (name "guile-yamlpp") + (version "0.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/yorgath/guile-yamlpp") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "14mlqi7hw7pi9scwk1g432issnqcn185pd8na2plijxq55cy0iq7")))) + (build-system gnu-build-system) + (native-inputs (list autoconf automake libtool pkg-config)) + (inputs (list guile-3.0 yaml-cpp)) + (native-search-paths + (list (search-path-specification + (variable "GUILE_EXTENSIONS_PATH") + (files (list "lib/guile/3.0"))))) + (home-page "https://gitlab.com/yorgath/guile-yamlpp") + (synopsis "Guile YAML reader/writer based on @code{yaml-cpp}") + (description + "A module for GNU Guile to read and write YAML files. It works using +bindings to the @code{yaml-cpp} C++ library.") + (license license:gpl3+))) + (define-public guile-dbi (package (name "guile-dbi") From 1fb02d45eb7c102f7ca0e9ccac1ccd767eccd23d Mon Sep 17 00:00:00 2001 From: Andy Tai Date: Sat, 6 Jan 2024 18:32:06 -0800 Subject: [PATCH 033/282] gnu: s7: Update to 618de30. * gnu/packages/lisp.scm (s7): Update to commit 618de30. Change-Id: I34d92b77a4e8de84f18de0ce7af984928e338282 Signed-off-by: Mathieu Othacehe --- gnu/packages/lisp.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm index 4a895984e7..e89e02e1e4 100644 --- a/gnu/packages/lisp.scm +++ b/gnu/packages/lisp.scm @@ -1485,7 +1485,7 @@ includes a compiler as well as an interpreter.") (define-public s7-bootstrap ;; Need s7-bootstrap to build libc_s7.so (for the REPL) and run tests - (let ((commit "a5b4bb49f8bcd7c33ae2366065fc8c254b734460") ;no releases + (let ((commit "618de30e0f9851515724245e3ebbfa1be4de6906") ;no releases (revision "0")) (hidden-package (package @@ -1499,7 +1499,7 @@ includes a compiler as well as an interpreter.") (file-name (git-file-name name version)) (sha256 (base32 - "03n1axdlypzmbgzrhlwfqwa1xiw36hi25j2hwc7vw77mz90cd9f8")))) + "0kh1f49g24ppjpr16v1nc9lr7pvr5nzb82bpw8c6q8ll7pqalqaf")))) (build-system gnu-build-system) (arguments (list #:tests? #f ;no tests in bootstrap From 2b5fcd70d07e693b1677387573e8a5e810fe5fa4 Mon Sep 17 00:00:00 2001 From: kiasoc5 Date: Sat, 6 Jan 2024 14:28:30 -0500 Subject: [PATCH 034/282] gnu: txt2tags: Update to 3.9. * gnu/packages/textutils.scm (txt2tags): Update to 3.9. Change-Id: Ia825f5807c87941504feffdb317594f5b1fa62ef Signed-off-by: Mathieu Othacehe --- gnu/packages/textutils.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm index ea182b1925..494e6b5ef5 100644 --- a/gnu/packages/textutils.scm +++ b/gnu/packages/textutils.scm @@ -996,13 +996,13 @@ and Cython.") (define-public txt2tags (package (name "txt2tags") - (version "3.7") + (version "3.9") (source (origin (method url-fetch) (uri (pypi-uri "txt2tags" version)) (sha256 (base32 - "12hpnvdy7dgarq6ini9jp7dp2zcmvpax04zbl3jb84kd423r75i7")))) + "0ik7gpr3gymgxnj0p86k8768kyxncbncv93zq67sbak3dbdl8hky")))) (build-system python-build-system) (native-inputs (list python-tox)) (home-page "https://txt2tags.org") From b920ee31a6b8e3be38242da5d725def7816163d8 Mon Sep 17 00:00:00 2001 From: Hilton Chain Date: Sat, 6 Jan 2024 19:21:08 +0800 Subject: [PATCH 035/282] gnu: font-sarasa-gothic: Update to 1.0.3. * gnu/packages/fonts.scm (font-sarasa-gothic): Update to 1.0.3. [source]: Update the URI. Change-Id: I227632d725fb341199c738a5aa6ac17e7ea635cb Signed-off-by: Mathieu Othacehe --- gnu/packages/fonts.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm index 7516e1642b..68c0770d78 100644 --- a/gnu/packages/fonts.scm +++ b/gnu/packages/fonts.scm @@ -1952,15 +1952,15 @@ weights and five widths in both Roman and Italic, plus variable fonts.") (define-public font-sarasa-gothic (package (name "font-sarasa-gothic") - (version "0.42.6") + (version "1.0.3") (source (origin (method url-fetch) (uri (string-append "https://github.com/be5invis/Sarasa-Gothic" "/releases/download/v" version - "/sarasa-gothic-ttc-" version ".7z")) + "/Sarasa-TTC-" version ".7z")) (sha256 - (base32 "0czx10yph2lxg2k4w6qjnil73zb2pgg3g400apm9gay41m04990v")))) + (base32 "1cgqf15fhg567s2bwjpal3xfcdnbgyy0iav5181zkn6b4k56dgl4")))) (build-system font-build-system) (arguments `(#:phases (modify-phases %standard-phases From ccce23bd81b3386bdccddb8c65bd1718da13497f Mon Sep 17 00:00:00 2001 From: Hilton Chain Date: Sat, 6 Jan 2024 14:57:36 +0800 Subject: [PATCH 036/282] gnu: Add font-cardo. * gnu/packages/fonts.scm (font-cardo): New variable. Change-Id: I60edadc74c33690bb14dff209979a57f22dd5277 Signed-off-by: Mathieu Othacehe --- gnu/packages/fonts.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm index 68c0770d78..e050f4fde9 100644 --- a/gnu/packages/fonts.scm +++ b/gnu/packages/fonts.scm @@ -123,6 +123,29 @@ titling.") (license license:silofl1.1))) +(define-public font-cardo + (package + (name "font-cardo") + (version "1.04") + (source (origin + (method url-fetch) + (uri (string-append "https://scholarsfonts.net/cardo" + (string-delete #\. version) ".zip")) + (sha256 + (base32 + "0ps55zjva4fzmg47w2i8srrh8sqxz1wkcclihwgzlwfbaxixn0cl")))) + (build-system font-build-system) + (home-page "https://scholarsfonts.net/cardofnt.html") + (synopsis "Unicode font for classical scholarship") + (description + "Cardo is a large unicode font specifically designed for the needs of +classicists, biblical scholars, medievalists, and linguists. Since it may be +used to prepare materials for publication, it also contains features that are +required for high-quality typography, such as ligatures, text figures (also +known as old style numerals), true small capitals and a variety of punctuation +and space characters.") + (license license:silofl1.1))) + (define-public font-chivo (let ((commit "dc61c468d79781eb5183426e88e844af16cdc3e5") (revision "0")) From 51735eac1cc21356dc1cb59356ebe96a460b5b59 Mon Sep 17 00:00:00 2001 From: Mathieu Othacehe Date: Sun, 24 Dec 2023 16:59:57 +0100 Subject: [PATCH 037/282] gnu: dtc: Update to 1.7.0. Enable the python bindings and switch to the meson build system that handles the python bindings better than the Makefile build system here. * gnu/packages/patches/dtc-meson-cell-overflow.patch: New file * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/bootloaders.scm (dtc): Update to 1.7.0. [build-system]: Switch to the meson-build-system. [arguments]: Remove #:make-flags. Add a new 'preparations phase. Do not edit the Makefile in the 'patch-pkg-config phase. Remove the 'configure phase. Change-Id: Ie61c920829ab3a8c32f4924c694dba6bda807711 Signed-off-by: Mathieu Othacehe --- gnu/local.mk | 1 + gnu/packages/bootloaders.scm | 58 ++++++++++++------- .../patches/dtc-meson-cell-overflow.patch | 32 ++++++++++ 3 files changed, 71 insertions(+), 20 deletions(-) create mode 100644 gnu/packages/patches/dtc-meson-cell-overflow.patch diff --git a/gnu/local.mk b/gnu/local.mk index 3548b5eb3d..46da9a8adc 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1092,6 +1092,7 @@ dist_patch_DATA = \ %D%/packages/patches/doxygen-hurd.patch \ %D%/packages/patches/dstat-fix-crash-when-specifying-delay.patch \ %D%/packages/patches/dstat-skip-devices-without-io.patch \ + %D%/packages/patches/dtc-meson-cell-overflow.patch \ %D%/packages/patches/dune-common-skip-failing-tests.patch \ %D%/packages/patches/dune-grid-add-missing-include-cassert.patch \ %D%/packages/patches/dune-istl-fix-solver-playground.patch \ diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index bd8b621e35..c73a0e665d 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -55,9 +55,12 @@ #:use-module (gnu packages man) #:use-module (gnu packages mtools) #:use-module (gnu packages ncurses) + #:use-module (gnu packages ninja) + #:use-module (gnu packages package-management) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages python-build) #:use-module (gnu packages python-crypto) #:use-module (gnu packages texinfo) #:use-module (gnu packages tls) @@ -71,6 +74,7 @@ #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) #:use-module (guix build-system gnu) + #:use-module (guix build-system meson) #:use-module (guix build-system pyproject) #:use-module (guix build-system trivial) #:use-module (guix download) @@ -631,7 +635,7 @@ The SUBDIR argument defaults to \"efi/Guix\", as it is also the case for (define-public dtc (package (name "dtc") - (version "1.6.1") + (version "1.7.0") (source (origin (method url-fetch) (uri (string-append @@ -639,42 +643,56 @@ The SUBDIR argument defaults to \"efi/Guix\", as it is also the case for "dtc-" version ".tar.gz")) (sha256 (base32 - "0xm38h31jb29xfh2sfyk48d8wdfq4b8lmb412zx9vjr35izjb9iq")))) - (build-system gnu-build-system) + "0cij9399snpn672pdbda8qbxljdkfg068kvv3g5811rz6yslx124")) + (patches + (search-patches "dtc-meson-cell-overflow.patch")))) + (build-system meson-build-system) (arguments (list - #:modules `(,@%gnu-build-system-modules (srfi srfi-26)) - #:make-flags - #~(list (string-append "CC=" #$(cc-for-target)) - ;; /bin/fdt{get,overlay,put} need help finding libfdt.so.1. - (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib") - (string-append "PREFIX=" #$output) - (string-append "SETUP_PREFIX=" #$output) - "INSTALL=install") + #:modules '((guix build meson-build-system) + (guix build utils) + (srfi srfi-26)) #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'patch-pkg-config + (add-after 'unpack 'preparations (lambda _ - (substitute* '("Makefile" - "tests/run_tests.sh") - (("pkg-config") - #$(pkg-config-for-target))))) - (delete 'configure) ;no configure script - (add-before 'build 'install-doc + ;; The version string is usually derived via setuptools-scm, but + ;; without the git metadata available this fails. + (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" #$version) + + ;; Needed by setup.py. + (setenv "DESTDIR" "/") + + ;; Native gcc needed by run_test.sh. + (setenv "CC" "gcc") + + ;; /bin/fdt{get,overlay,put} need help finding libfdt.so.1. + (setenv "LDFLAGS" + (string-append "-Wl,-rpath=" #$output "/lib")))) + (add-after 'unpack 'install-doc (lambda _ (with-directory-excursion "Documentation" (for-each (cut install-file <> (string-append #$output "/share/doc/dtc/")) '("dts-format.txt" "dt-object-internal.txt" - "manual.txt")))))))) + "manual.txt"))))) + (add-after 'unpack 'patch-pkg-config + (lambda _ + (substitute* '("tests/run_tests.sh") + (("pkg-config") + #$(pkg-config-for-target)))))))) (native-inputs (append (list bison flex libyaml + ninja pkg-config - swig) + python + python-setuptools-scm + swig + which) (if (member (%current-system) (package-supported-systems valgrind)) (list valgrind) '()))) diff --git a/gnu/packages/patches/dtc-meson-cell-overflow.patch b/gnu/packages/patches/dtc-meson-cell-overflow.patch new file mode 100644 index 0000000000..1c319312f7 --- /dev/null +++ b/gnu/packages/patches/dtc-meson-cell-overflow.patch @@ -0,0 +1,32 @@ +Taken from upstream: +https://git.kernel.org/pub/scm/utils/dtc/dtc.git/commit/?id=32174a66efa4ad19fc6a2a6422e4af2ae4f055cb + +From 32174a66efa4ad19fc6a2a6422e4af2ae4f055cb Mon Sep 17 00:00:00 2001 +From: David Gibson +Date: Tue, 28 Feb 2023 10:33:58 +1100 +Subject: [PATCH] meson: Fix cell overflow tests when running from meson + +Because meson always builds out-of-tree we need to reference things in the +original source tree via $SRCDIR from run_tests.sh. We forgot a couple of +cases for the cell overflow tests. Fix them. + +Signed-off-by: David Gibson +--- + tests/run_tests.sh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/tests/run_tests.sh b/tests/run_tests.sh +index 91350ad3..f899d8cb 100755 +--- a/tests/run_tests.sh ++++ b/tests/run_tests.sh +@@ -519,8 +519,8 @@ libfdt_tests () { + check_tests "$SRCDIR/phandle-args-overflow.dts" clocks_property + + ## https://github.com/dgibson/dtc/issues/74 +- run_dtc_test -I dts -O dtb -o cell-overflow-results.test.dtb cell-overflow-results.dts +- run_dtc_test -I dts -O dtb -o cell-overflow.test.dtb cell-overflow.dts ++ run_dtc_test -I dts -O dtb -o cell-overflow-results.test.dtb "$SRCDIR/cell-overflow-results.dts" ++ run_dtc_test -I dts -O dtb -o cell-overflow.test.dtb "$SRCDIR/cell-overflow.dts" + run_test dtbs_equal_ordered cell-overflow.test.dtb cell-overflow-results.test.dtb + + # check full tests From 63bafb05bc71874cc195ccc12f09f95a461e2987 Mon Sep 17 00:00:00 2001 From: Tomas Volf <~@wolfsden.cz> Date: Sat, 6 Jan 2024 16:52:35 +0100 Subject: [PATCH 038/282] doc: Delete trailing whitespace. * doc/guix.texi: Delete trailing whitespace. Change-Id: Ibf99a551f890044b8ce5772bdebb8a0b02ab1c21 Signed-off-by: Mathieu Othacehe --- doc/guix.texi | 94 +++++++++++++++++++++++++-------------------------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index a648a106b3..fc18deb85b 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -45243,25 +45243,25 @@ PulseAudio clients to use PipeWire transparently. @node Mail Home Services @subsection Mail Home Services - + The @code{(gnu home services mail)} module provides services that help you set up the tools to work with emails in your home environment. - + @cindex msmtp @uref{https://marlam.de/msmtp, MSMTP} is a @acronym{SMTP, Simple Mail Transfer Protocol} client. It sends mail to a predefined SMTP server that takes care of proper delivery. - + The service reference is given below. - + @defvar home-msmtp-service-type This is the service type for @command{msmtp}. Its value must be a @code{home-msmtp-configuration}, as shown below. It provides the @file{~/.config/msmtp/config} file. - + As an example, here is how you would configure @code{msmtp} for a single account: - + @lisp (service home-msmtp-service-type (home-msmtp-configuration @@ -45279,101 +45279,101 @@ account: @end defvar @c %start of fragment - + @deftp {Data Type} home-msmtp-configuration Available @code{home-msmtp-configuration} fields are: - + @table @asis @item @code{defaults} (type: msmtp-configuration) The configuration that will be set as default for all accounts. - + @item @code{accounts} (default: @code{'()}) (type: list-of-msmtp-accounts) A list of @code{msmtp-account} records which contain information about all your accounts. - + @item @code{default-account} (type: maybe-string) Set the default account. - + @item @code{extra-content} (default: @code{""}) (type: string) Extra content appended as-is to the configuration file. Run @command{man msmtp} for more information about the configuration file format. - + @end table - + @end deftp - -@c %end of fragment - -@c %start of fragment - -@deftp {Data Type} msmtp-account -Available @code{msmtp-account} fields are: - -@table @asis -@item @code{name} (type: string) -The unique name of the account. - -@item @code{configuration} (type: msmtp-configuration) -The configuration for this given account. - -@end table - -@end deftp - + @c %end of fragment @c %start of fragment - + +@deftp {Data Type} msmtp-account +Available @code{msmtp-account} fields are: + +@table @asis +@item @code{name} (type: string) +The unique name of the account. + +@item @code{configuration} (type: msmtp-configuration) +The configuration for this given account. + +@end table + +@end deftp + +@c %end of fragment + +@c %start of fragment + @deftp {Data Type} msmtp-configuration Available @code{msmtp-configuration} fields are: - + @table @asis @item @code{auth?} (type: maybe-boolean) Enable or disable authentication. - + @item @code{tls?} (type: maybe-boolean) Enable or disable TLS (also known as SSL) for secured connections. - + @item @code{tls-starttls?} (type: maybe-boolean) Choose the TLS variant: start TLS from within the session (‘on’, default), or tunnel the session through TLS (‘off’). - + @item @code{tls-trust-file} (type: maybe-string) Activate server certificate verification using a list of trusted Certification Authorities (CAs). - + @item @code{log-file} (type: maybe-string) Enable logging to the specified file. An empty argument disables logging. The file name ‘-’ directs the log information to standard output. - + @item @code{host} (type: maybe-string) The SMTP server to send the mail to. - + @item @code{port} (type: maybe-integer) The port that the SMTP server listens on. The default is 25 ("smtp"), unless TLS without STARTTLS is used, in which case it is 465 ("smtps"). - + @item @code{user} (type: maybe-string) Set the user name for authentication. - + @item @code{from} (type: maybe-string) Set the envelope-from address. - + @item @code{password-eval} (type: maybe-string) Set the password for authentication to the output (stdout) of the command cmd. - + @item @code{extra-content} (default: @code{""}) (type: string) Extra content appended as-is to the configuration block. Run @command{man msmtp} for more information about the configuration file format. - + @end table - + @end deftp - + @c %end of fragment @node Messaging Home Services From fdafa8060f9661d321291f0d348d98391aec5d62 Mon Sep 17 00:00:00 2001 From: Andy Tai Date: Thu, 4 Jan 2024 21:56:12 -0800 Subject: [PATCH 039/282] gnu: icewm: Update to 3.4.5 * gnu/packages/wm.scm (icewm): Update to 3.4.5 Change-Id: Ibf30644fbc01dd89378f41f978201e84e0ca39ad Signed-off-by: Mathieu Othacehe --- gnu/packages/wm.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index a87eb20428..bd7589b2a6 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -787,7 +787,7 @@ desktop environment.") (define-public icewm (package (name "icewm") - (version "3.4.4") + (version "3.4.5") (source (origin (method url-fetch) (uri (string-append @@ -795,7 +795,7 @@ desktop environment.") version "/icewm-" version ".tar.lz")) (sha256 (base32 - "0cdsb2d45dwcr2dm4jfh0z5g6pkb0ghd4jaybxqiz74mbw5rmjhv")))) + "1wd5k0whh2b43a72223cy19pwc29fhrhd2dnc61fha2y5ndgw6ld")))) (build-system gnu-build-system) (native-inputs (list pkg-config)) (inputs (list fontconfig From cd9c90823452fa7b88c5e2f2133dac51d9e2bd1e Mon Sep 17 00:00:00 2001 From: Roman Scherer Date: Fri, 5 Jan 2024 11:53:04 +0100 Subject: [PATCH 040/282] gnu: mesa: Build asahi driver on aarch64. * gnu/packages/gl.scm (mesa): Build asahi driver on aarch64. Change-Id: I597e70732b9ebd18960131f1b664b2dc83683b8e Signed-off-by: Mathieu Othacehe --- gnu/packages/gl.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index b0ee413acd..9d1a8a1e72 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -350,7 +350,7 @@ also known as DXTn or DXTC) for Mesa.") #$@(cond ((target-aarch64?) ;; TODO: Fix svga driver for non-Intel architectures. - '("-Dgallium-drivers=etnaviv,freedreno,kmsro,lima,nouveau,\ + '("-Dgallium-drivers=asahi,etnaviv,freedreno,kmsro,lima,nouveau,\ panfrost,r300,r600,swrast,tegra,v3d,vc4,virgl")) ((target-arm32?) ;; Freedreno FTBFS when built on a 64-bit machine. From 0a9fd5536aa4ba446b47b8cb5fb72a8856e54bff Mon Sep 17 00:00:00 2001 From: Andy Tai Date: Thu, 4 Jan 2024 21:49:07 -0800 Subject: [PATCH 041/282] gnu: parallel: Update to 20231222 * gnu/packages/parallel.scm (parallel): Update to 20231222 Change-Id: I4a32d93e7d7d5e79280d8d804701bb4a7ed57bb9 Signed-off-by: Mathieu Othacehe --- gnu/packages/parallel.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm index e12035e47d..8f59331a02 100644 --- a/gnu/packages/parallel.scm +++ b/gnu/packages/parallel.scm @@ -64,14 +64,14 @@ (define-public parallel (package (name "parallel") - (version "20231122") + (version "20231222") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/parallel/parallel-" version ".tar.bz2")) (sha256 - (base32 "1qpa3dhmdddw7l5906y8ck8rnri66kqkxcbxhsnj058pmbw9qb42")) + (base32 "1alvva2dlnlq5rbbklzc2a7l84mg550l1xc632zdgfx9dzf6sihr")) (snippet '(begin (use-modules (guix build utils)) From e7403acb345a59d580607fbfe7ef2aa0c410767a Mon Sep 17 00:00:00 2001 From: Andy Tai Date: Sun, 31 Dec 2023 13:16:35 -0800 Subject: [PATCH 042/282] gnu: swig-next: Update to 4.2.0 * gnu/packages/swig.scm (swig-next): Update to 4.2.0 Change-Id: Ic6580f0d2c3ab578de6bc0bd9a98c61b28cc1cd6 Signed-off-by: Mathieu Othacehe --- gnu/packages/swig.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/swig.scm b/gnu/packages/swig.scm index 3f38cd9f9f..7025d05038 100644 --- a/gnu/packages/swig.scm +++ b/gnu/packages/swig.scm @@ -79,7 +79,7 @@ you tailor the wrapping process to suit your application.") (package (inherit swig) (name "swig") - (version "4.1.1") + (version "4.2.0") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/" name "/" name "/" @@ -87,5 +87,5 @@ you tailor the wrapping process to suit your application.") name "-" version ".tar.gz")) (sha256 (base32 - "16xc767gf5ip40jh698wbdrxrghli5v2c966bkdmrmpwv378mw1a")))) + "15wwh9215rdkflpr85r7zxr2nmrib03jr4bvh5i0f9lyb3bs4716")))) (inputs (list pcre2)))) From 560cc91e46c1955f830c0196f6cb972410338a3a Mon Sep 17 00:00:00 2001 From: Mathieu Othacehe Date: Sun, 7 Jan 2024 22:34:15 +0100 Subject: [PATCH 043/282] Revert "gnu: mesa: Build asahi driver on aarch64." This reverts commit cd9c90823452fa7b88c5e2f2133dac51d9e2bd1e. Move it to mesa-updates. --- gnu/packages/gl.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index 9d1a8a1e72..b0ee413acd 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -350,7 +350,7 @@ also known as DXTn or DXTC) for Mesa.") #$@(cond ((target-aarch64?) ;; TODO: Fix svga driver for non-Intel architectures. - '("-Dgallium-drivers=asahi,etnaviv,freedreno,kmsro,lima,nouveau,\ + '("-Dgallium-drivers=etnaviv,freedreno,kmsro,lima,nouveau,\ panfrost,r300,r600,swrast,tegra,v3d,vc4,virgl")) ((target-arm32?) ;; Freedreno FTBFS when built on a 64-bit machine. From 3de361d9c9d320aefbd43710124d7b07af891de1 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Sun, 7 Jan 2024 22:54:54 +0100 Subject: [PATCH 044/282] gnu: fet: Update to 6.15.0. * gnu/packages/education.scm (fet): Update to 6.15.0. Change-Id: Iec5ed880fd09dcc63e1650ceffc0f072c1236190 --- gnu/packages/education.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm index 2fd1d4a632..7b72ed0349 100644 --- a/gnu/packages/education.scm +++ b/gnu/packages/education.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2016 Hartmut Goebel ;;; Copyright © 2017-2023 Efraim Flashner ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice -;;; Copyright © 2018-2023 Nicolas Goaziou +;;; Copyright © 2018-2024 Nicolas Goaziou ;;; Copyright © 2020 Robert Smith ;;; Copyright © 2020 Guy Fleury Iteriteka ;;; Copyright © 2020 Jakub Kądziołka @@ -564,7 +564,7 @@ a pen-tablet display and a beamer.") (define-public fet (package (name "fet") - (version "6.9.0") + (version "6.15.0") (source (origin (method url-fetch) @@ -573,7 +573,7 @@ a pen-tablet display and a beamer.") (list (string-append directory base) (string-append directory "old/" base)))) (sha256 - (base32 "1lnw58ga1ldhqfznclmk9l21698pg152w3slq2cwmr69ywqr5wys")))) + (base32 "0mmk9f0b23lmmk40mv25wf9vgb7wdgfn5zsa1qrkvkh7dh1hjpax")))) (build-system gnu-build-system) (arguments (list From 728d471d73c3731b86cbf5f3dee22229d3a92d4b Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 7 Jan 2024 22:21:19 +0200 Subject: [PATCH 045/282] gnu: json-glib: Fix cross-compiling. * gnu/packages/gnome.scm (json-glib)[native-inputs]: Only add more inputs when not cross-compiling. Change-Id: I987f382f02d9f7b79b6e281d1f6f6824c1b2dfd3 --- gnu/packages/gnome.scm | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index b2d4b73088..b43e533769 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -11,7 +11,7 @@ ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2023 Ricardo Wurmus ;;; Copyright © 2015, 2016, 2017, 2018, 2021 Mark H Weaver ;;; Copyright © 2015 David Thompson -;;; Copyright © 2015-2023 Efraim Flashner +;;; Copyright © 2015-2024 Efraim Flashner ;;; Copyright © 2016, 2017, 2018 Rene Saavedra ;;; Copyright © 2016 Jochem Raat ;;; Copyright © 2016, 2017, 2019 Kei Kebreau @@ -4781,12 +4781,15 @@ GLib and GObject, and integrates JSON with GLib data types.") (string-append #$output:doc "/share/gtk-doc")))))))))) (native-inputs - (modify-inputs (package-native-inputs json-glib-minimal) - (prepend docbook-xml-4.3 - docbook-xsl - gobject-introspection - gtk-doc - libxslt))))) + (if (%current-target-system) + ;; No docs, no additional inputs. + (package-native-inputs json-glib-minimal) + (modify-inputs (package-native-inputs json-glib-minimal) + (prepend docbook-xml-4.3 + docbook-xsl + gobject-introspection + gtk-doc + libxslt)))))) (define-public libxklavier (package From 9018c6af4907c4532a95017df9f45d9439c30064 Mon Sep 17 00:00:00 2001 From: Oleg Pykhalov Date: Sat, 6 Jan 2024 18:24:56 +0300 Subject: [PATCH 046/282] gnu: obs: Fix VLC plugin. * gnu/packages/video.scm (obs)[arguments]<#:phases>: Wrap LD_LIBRARY_PATH. Change-Id: If22b5294284ea500da0e6d9ee4d4bbcc765c6771 --- gnu/packages/video.scm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 4181013b0d..de812ac762 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -3642,7 +3642,10 @@ be used for realtime video capture via Linux-specific APIs.") (lambda* _ (let ((plugin-path (getenv "QT_PLUGIN_PATH"))) (wrap-program (string-append #$output "/bin/obs") - `("QT_PLUGIN_PATH" ":" prefix (,plugin-path))))))))) + `("QT_PLUGIN_PATH" ":" prefix (,plugin-path)) + `("LD_LIBRARY_PATH" ":" prefix + (,(string-append #$(this-package-input "vlc") + "/lib")))))))))) (native-search-paths (list (search-path-specification (variable "OBS_PLUGINS_DIRECTORY") From 7d5168a2af3ed922c6a46985124fb73402cc8844 Mon Sep 17 00:00:00 2001 From: Graham James Addis Date: Wed, 12 Jul 2023 09:17:13 +0100 Subject: [PATCH 047/282] guix: pack: Add '--entry-point-argument' option. * guix/scripts/pack.scm: (entry-point-argument-spec-option-parser): New procedure. (docker-image, %default-options, %docker-format-options, show-docker-format-options/detailed, %options, show-docker-format-options, guix-pack): Handle '--entry-point-argument' option. * doc/guix.texi: (Invoking guix pack): Document this Signed-off-by: Oleg Pykhalov Change-Id: I1124feff6af39dcc63c85fd6cc7ad50f398489dc --- doc/guix.texi | 14 +++++++++++- guix/scripts/pack.scm | 50 +++++++++++++++++++++++++++++++++++-------- 2 files changed, 54 insertions(+), 10 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index fc18deb85b..27ebed137d 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -122,6 +122,7 @@ Copyright @copyright{} 2023 Felix Lechner@* Copyright @copyright{} 2023 Foundation Devices, Inc.@* Copyright @copyright{} 2023 Thomas Ieong@* Copyright @copyright{} 2023 Saku Laesvuori@* +Copyright @copyright{} 2023 Graham James Addis@* Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or @@ -7406,7 +7407,7 @@ execution engines listed above by setting the @env{GUIX_EXECUTION_ENGINE} environment variable accordingly. @end quotation -@cindex entry point, for Docker images +@cindex entry point, for Docker and Singularity images @item --entry-point=@var{command} Use @var{command} as the @dfn{entry point} of the resulting pack, if the pack format supports it---currently @code{docker} and @code{squashfs} (Singularity) @@ -7429,6 +7430,17 @@ docker load -i pack.tar.gz docker run @var{image-id} @end example +@cindex entry point arguments, for docker images +@item --entry-point-argument=@var{command} +@itemx -A @var{command} +Use @var{command} as an argument to @dfn{entry point} of the resulting pack. +This option is only valid in conjunction with @code{--entry-point} and can +appear multiple times on the command line. + +@example +guix pack -f docker --entry-point=bin/guile --entry-point-argument="--help" guile +@end example + @item --expression=@var{expr} @itemx -e @var{expr} Consider the package @var{expr} evaluates to. diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm index 8071840de1..4c0a602eb1 100644 --- a/guix/scripts/pack.scm +++ b/guix/scripts/pack.scm @@ -8,6 +8,7 @@ ;;; Copyright © 2020, 2021, 2022, 2023 Maxim Cournoyer ;;; Copyright © 2020 Eric Bavier ;;; Copyright © 2022 Alex Griffin +;;; Copyright © 2023 Graham James Addis ;;; ;;; This file is part of GNU Guix. ;;; @@ -202,6 +203,16 @@ target the profile's @file{bin/env} file: (leave (G_ "~a: invalid symlink specification~%") arg)))) +(define (entry-point-argument-spec-option-parser opt name arg result) + "A SRFI-37 opion parser for the --entry-point-argument option. The spec +takes multiple occurances. The entries are used in the exec form for the +docker entry-point. The values are used as parameters in conjunction with +the --entry-point option which is used as the first value in the exec form." + (let ((entry-point-argument (assoc-ref result 'entry-point-argument))) + (alist-cons 'entry-point-argument + (append entry-point-argument (list arg)) + (alist-delete 'entry-point-argument result eq?)))) + (define (set-utf8-locale profile) "Configure the environment to use the \"en_US.utf8\" locale provided by the GLIBC-UT8-LOCALES package." @@ -562,10 +573,22 @@ the image. EXTRA-OPTIONS may contain the IMAGE-TAG keyword argument." `((directory "/tmp" ,(getuid) ,(getgid) #o1777) ,@(append-map symlink->directives '#$symlinks))) + (define (form-entry-point prefix entry-point entry-point-argument) + ;; Construct entry-point parameter for build-docker-image. The + ;; first entry is constructed by prefixing the entry-point with + ;; the supplied index subsequent entries are taken from the + ;; --entry-point-argument options. + (and=> entry-point + (lambda (entry-point) + (cons* (string-append prefix "/" entry-point) + entry-point-argument)))) + (setenv "PATH" #+(file-append archiver "/bin")) (let-keywords '#$extra-options #f - ((image-tag #f)) + ((image-tag #f) + (entry-point-argument #f)) + (build-docker-image #$output (map store-info-item (call-with-input-file "profile" @@ -578,11 +601,10 @@ the image. EXTRA-OPTIONS may contain the IMAGE-TAG keyword argument." #:database #+database #:system (or #$target %host-type) #:environment environment - #:entry-point - #$(and entry-point - #~(list - (string-append #$profile "/" - #$entry-point))) + #:entry-point (form-entry-point + #$profile + #$entry-point + entry-point-argument) #:extra-files directives #:compressor #+(compressor-command compressor) @@ -1264,6 +1286,7 @@ last resort for relocation." (debug . 0) (verbosity . 1) (symlinks . ()) + (entry-point-argument . ()) (compressor . ,(first %compressors)))) (define %formats @@ -1299,7 +1322,9 @@ last resort for relocation." rest)))) (define %docker-format-options - (list (required-option 'image-tag))) + (list (required-option 'image-tag) + (option '(#\A "entry-point-argument") #t #f + entry-point-argument-spec-option-parser))) (define (show-docker-format-options) (display (G_ " @@ -1308,7 +1333,12 @@ last resort for relocation." (define (show-docker-format-options/detailed) (display (G_ " --image-tag=NAME - Use the given NAME for the Docker image repository")) + Use the given NAME for the Docker image repository + + -A, --entry-point-argument=COMMAND/PARAMETER + Value(s) to use for the Docker EntryPoint arguments. + Multiple instances are accepted. This is only valid + in conjunction with the --entry-point option")) (newline) (exit 0)) @@ -1619,7 +1649,9 @@ Create a bundle of PACKAGE.\n")) (extra-options (match pack-format ('docker (list #:image-tag - (assoc-ref opts 'image-tag))) + (assoc-ref opts 'image-tag) + #:entry-point-argument + (assoc-ref opts 'entry-point-argument))) ('deb (list #:control-file (process-file-arg opts 'control-file) From bdf0ba4ca1c6596aac079a3eac61c01b99c13bec Mon Sep 17 00:00:00 2001 From: Oleg Pykhalov Date: Tue, 26 Dec 2023 01:35:17 +0300 Subject: [PATCH 048/282] tests: docker-system: Increase image size. * gnu/tests/docker.scm (run-docker-system-test)[vm]: Increase 'disk-image-size'. Change-Id: If88588d8981efdfdc539460900f1cbb9a663f9cb --- gnu/tests/docker.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/tests/docker.scm b/gnu/tests/docker.scm index edc9804414..9e9d2e2d07 100644 --- a/gnu/tests/docker.scm +++ b/gnu/tests/docker.scm @@ -212,7 +212,7 @@ inside %DOCKER-OS." (virtual-machine (operating-system os) (volatile? #f) - (disk-image-size (* 5500 (expt 2 20))) + (disk-image-size (* 6000 (expt 2 20))) (memory-size 2048) (port-forwardings '()))) From d3d3eedf7f7e80d4066d0c86713ad9be107cf221 Mon Sep 17 00:00:00 2001 From: Oleg Pykhalov Date: Tue, 26 Dec 2023 03:46:35 +0300 Subject: [PATCH 049/282] guix: docker: Build layered images. * guix/docker.scm (%docker-image-max-layers): New variable. (size-sorted-store-items, create-empty-tar): New procedures. (config, manifest, build-docker-image): Build layered images. Change-Id: I4c8846bff0a3ceccb77e6bdf95d4942e5c3efe41 --- guix/docker.scm | 212 +++++++++++++++++++++++++++++++++++++----------- 1 file changed, 166 insertions(+), 46 deletions(-) diff --git a/guix/docker.scm b/guix/docker.scm index 5e6460f43f..1c6f59568f 100644 --- a/guix/docker.scm +++ b/guix/docker.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2017, 2018, 2019, 2021 Ludovic Courtès ;;; Copyright © 2018 Chris Marusich ;;; Copyright © 2021 Maxim Cournoyer +;;; Copyright © 2023 Oleg Pykhalov ;;; ;;; This file is part of GNU Guix. ;;; @@ -29,16 +30,27 @@ with-directory-excursion invoke)) #:use-module (gnu build install) + #:use-module ((guix build store-copy) + #:select (file-size)) #:use-module (json) ;guile-json #:use-module (srfi srfi-1) #:use-module (srfi srfi-19) #:use-module (srfi srfi-26) + #:use-module (srfi srfi-71) #:use-module ((texinfo string-utils) #:select (escape-special-chars)) #:use-module (rnrs bytevectors) #:use-module (ice-9 ftw) #:use-module (ice-9 match) - #:export (build-docker-image)) + #:export (%docker-image-max-layers + build-docker-image)) + +;; The maximum number of layers allowed in a Docker image is typically around +;; 128, although it may vary depending on the Docker daemon. However, we +;; recommend setting the limit to 100 to ensure sufficient room for future +;; extensions. +(define %docker-image-max-layers + #f) ;; Generate a 256-bit identifier in hexadecimal encoding for the Docker image. (define docker-id @@ -92,12 +104,12 @@ Return a version of TAG that follows these rules." (make-string (- min-length l) padding-character))) (_ normalized-name)))) -(define* (manifest path id #:optional (tag "guix")) +(define* (manifest path layers #:optional (tag "guix")) "Generate a simple image manifest." (let ((tag (canonicalize-repository-name tag))) `#(((Config . "config.json") (RepoTags . #(,(string-append tag ":latest"))) - (Layers . #(,(string-append id "/layer.tar"))))))) + (Layers . ,(list->vector layers)))))) ;; According to the specifications this is required for backwards ;; compatibility. It duplicates information provided by the manifest. @@ -106,8 +118,8 @@ Return a version of TAG that follows these rules." `((,(canonicalize-repository-name tag) . ((latest . ,id))))) ;; See https://github.com/opencontainers/image-spec/blob/master/config.md -(define* (config layer time arch #:key entry-point (environment '())) - "Generate a minimal image configuration for the given LAYER file." +(define* (config layers-diff-ids time arch #:key entry-point (environment '())) + "Generate a minimal image configuration for the given LAYERS files." ;; "architecture" must be values matching "platform.arch" in the ;; runtime-spec at ;; https://github.com/opencontainers/runtime-spec/blob/v1.0.0-rc2/config.md#platform @@ -125,7 +137,7 @@ Return a version of TAG that follows these rules." (container_config . #nil) (os . "linux") (rootfs . ((type . "layers") - (diff_ids . #(,(layer-diff-id layer))))))) + (diff_ids . ,(list->vector layers-diff-ids)))))) (define directive-file ;; Return the file or directory created by a 'evaluate-populate-directive' @@ -136,6 +148,26 @@ Return a version of TAG that follows these rules." (('directory name _ ...) (string-trim name #\/)))) +(define (size-sorted-store-items items max-layers) + "Split list of ITEMS at %MAX-LAYERS and sort by disk usage." + (let* ((items-length (length items)) + (head tail + (split-at + (map (match-lambda ((size . item) item)) + (sort (map (lambda (item) + (cons (file-size item) item)) + items) + (lambda (item1 item2) + (< (match item2 ((size . _) size)) + (match item1 ((size . _) size)))))) + (if (>= items-length max-layers) + (- max-layers 2) + (1- items-length))))) + (list head tail))) + +(define (create-empty-tar file) + (invoke "tar" "-cf" file "--files-from" "/dev/null")) + (define* (build-docker-image image paths prefix #:key (repository "guix") @@ -146,11 +178,13 @@ Return a version of TAG that follows these rules." entry-point (environment '()) compressor - (creation-time (current-time time-utc))) - "Write to IMAGE a Docker image archive containing the given PATHS. PREFIX -must be a store path that is a prefix of any store paths in PATHS. REPOSITORY -is a descriptive name that will show up in \"REPOSITORY\" column of the output -of \"docker images\". + (creation-time (current-time time-utc)) + max-layers + root-system) + "Write to IMAGE a layerer Docker image archive containing the given PATHS. +PREFIX must be a store path that is a prefix of any store paths in PATHS. +REPOSITORY is a descriptive name that will show up in \"REPOSITORY\" column of +the output of \"docker images\". When DATABASE is true, copy it to /var/guix/db in the image and create /var/guix/gcroots and friends. @@ -172,7 +206,14 @@ non-empty directory, then its contents will be recursively added, as well. SYSTEM is a GNU triplet (or prefix thereof) of the system the binaries in PATHS are for; it is used to produce metadata in the image. Use COMPRESSOR, a command such as '(\"gzip\" \"-9n\"), to compress IMAGE. Use CREATION-TIME, a -SRFI-19 time-utc object, as the creation time in metadata." +SRFI-19 time-utc object, as the creation time in metadata. + +When MAX-LAYERS is not false build layered image, providing a Docker +image with store paths splitted in their own layers to improve sharing +between images. + +ROOT-SYSTEM is a directory with a provisioned root file system, which will be +added to image as a layer." (define (sanitize path-fragment) (escape-special-chars ;; GNU tar strips the leading slash off of absolute paths before applying @@ -203,6 +244,59 @@ SRFI-19 time-utc object, as the creation time in metadata." (if (eq? '() transformations) '() `("--transform" ,(transformations->expression transformations)))) + (define (seal-layer) + ;; Add 'layer.tar' to 'image.tar' under the right name. Return its hash. + (let* ((file-hash (layer-diff-id "layer.tar")) + (file-name (string-append file-hash "/layer.tar"))) + (mkdir file-hash) + (rename-file "layer.tar" file-name) + (invoke "tar" "-rf" "image.tar" file-name) + (delete-file file-name) + file-hash)) + (define layers-hashes + ;; Generate a tarball that includes container image layers as tarballs, + ;; along with a manifest.json file describing the layer and config file + ;; locations. + (match-lambda + (((head ...) (tail ...) id) + (create-empty-tar "image.tar") + (let* ((head-layers + (map + (lambda (file) + (invoke "tar" "cf" "layer.tar" file) + (seal-layer)) + head)) + (tail-layer + (begin + (create-empty-tar "layer.tar") + (for-each (lambda (file) + (invoke "tar" "-rf" "layer.tar" file)) + tail) + (let* ((file-hash (layer-diff-id "layer.tar")) + (file-name (string-append file-hash "/layer.tar"))) + (mkdir file-hash) + (rename-file "layer.tar" file-name) + (invoke "tar" "-rf" "image.tar" file-name) + (delete-file file-name) + file-hash))) + (customization-layer + (let* ((file-id (string-append id "/layer.tar")) + (file-hash (layer-diff-id file-id)) + (file-name (string-append file-hash "/layer.tar"))) + (mkdir file-hash) + (rename-file file-id file-name) + (invoke "tar" "-rf" "image.tar" file-name) + file-hash)) + (all-layers + (append head-layers (list tail-layer customization-layer)))) + (with-output-to-file "manifest.json" + (lambda () + (scm->json (manifest prefix + (map (cut string-append <> "/layer.tar") + all-layers) + repository)))) + (invoke "tar" "-rf" "image.tar" "manifest.json") + all-layers)))) (let* ((directory "/tmp/docker-image") ;temporary working directory (id (docker-id prefix)) (time (date->string (time-utc->date creation-time) "~4")) @@ -229,26 +323,39 @@ SRFI-19 time-utc object, as the creation time in metadata." (with-output-to-file "json" (lambda () (scm->json (image-description id time)))) - ;; Create a directory for the non-store files that need to go into the - ;; archive. - (mkdir "extra") + (if root-system + (let ((directory (getcwd))) + (with-directory-excursion root-system + (apply invoke "tar" + "-cf" (string-append directory "/layer.tar") + `(,@transformation-options + ,@(tar-base-options) + ,@(scandir "." + (lambda (file) + (not (member file '("." ".."))))))))) + (begin + ;; Create a directory for the non-store files that need to go + ;; into the archive. + (mkdir "extra") - (with-directory-excursion "extra" - ;; Create non-store files. - (for-each (cut evaluate-populate-directive <> "./") - extra-files) + (with-directory-excursion "extra" + ;; Create non-store files. + (for-each (cut evaluate-populate-directive <> "./") + extra-files) - (when database - ;; Initialize /var/guix, assuming PREFIX points to a profile. - (install-database-and-gc-roots "." database prefix)) + (when database + ;; Initialize /var/guix, assuming PREFIX points to a + ;; profile. + (install-database-and-gc-roots "." database prefix)) - (apply invoke "tar" "-cf" "../layer.tar" - `(,@transformation-options - ,@(tar-base-options) - ,@paths - ,@(scandir "." - (lambda (file) - (not (member file '("." "..")))))))) + (apply invoke "tar" "-cf" "../layer.tar" + `(,@transformation-options + ,@(tar-base-options) + ,@(if max-layers '() paths) + ,@(scandir "." + (lambda (file) + (not (member file '("." "..")))))))) + (delete-file-recursively "extra"))) ;; It is possible for "/" to show up in the archive, especially when ;; applying transformations. For example, the transformation @@ -261,24 +368,37 @@ SRFI-19 time-utc object, as the creation time in metadata." ;; error messages. (with-error-to-port (%make-void-port "w") (lambda () - (system* "tar" "--delete" "/" "-f" "layer.tar"))) - - (delete-file-recursively "extra")) + (system* "tar" "--delete" "/" "-f" "layer.tar")))) (with-output-to-file "config.json" (lambda () - (scm->json (config (string-append id "/layer.tar") - time arch - #:environment environment - #:entry-point entry-point)))) - (with-output-to-file "manifest.json" - (lambda () - (scm->json (manifest prefix id repository)))) - (with-output-to-file "repositories" - (lambda () - (scm->json (repositories prefix id repository))))) - - (apply invoke "tar" "-cf" image "-C" directory - `(,@(tar-base-options #:compressor compressor) - ".")) + (scm->json + (config (if max-layers + (layers-hashes + (append (size-sorted-store-items paths max-layers) + (list id))) + (list (layer-diff-id (string-append id "/layer.tar")))) + time arch + #:environment environment + #:entry-point entry-point)))) + (if max-layers + (begin + (invoke "tar" "-rf" "image.tar" "config.json") + (if compressor + (begin + (apply invoke `(,@compressor "image.tar")) + (copy-file "image.tar.gz" image)) + (copy-file "image.tar" image))) + (begin + (with-output-to-file "manifest.json" + (lambda () + (scm->json (manifest prefix + (list (string-append id "/layer.tar")) + repository)))) + (with-output-to-file "repositories" + (lambda () + (scm->json (repositories prefix id repository)))) + (apply invoke "tar" "-cf" image + `(,@(tar-base-options #:compressor compressor) + "."))))) (delete-file-recursively directory))) From 0cf75c9b2f23869201144917cea7f6ad49683d3d Mon Sep 17 00:00:00 2001 From: Oleg Pykhalov Date: Tue, 26 Dec 2023 03:54:12 +0300 Subject: [PATCH 050/282] guix: pack: Build layered images. * guix/scripts/pack.scm (docker-image, guix-pack, %default-options, %docker-format-options, show-docker-format-options/detailed): Handle '--max-layers' option. * doc/guix.texi (Invoking guix pack): Document this. Change-Id: I90660b2421fcdde891f003469fe2e2edaac7da41 --- doc/guix.texi | 26 ++++++++++++++++++- guix/scripts/pack.scm | 60 +++++++++++++++++++++++++++++-------------- tests/pack.scm | 50 ++++++++++++++++++++++++++++++++++++ 3 files changed, 116 insertions(+), 20 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 27ebed137d..96035bd97c 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -56,7 +56,7 @@ Copyright @copyright{} 2017 Andy Wingo@* Copyright @copyright{} 2017, 2018, 2019, 2020, 2023 Arun Isaac@* Copyright @copyright{} 2017 nee@* Copyright @copyright{} 2018 Rutger Helling@* -Copyright @copyright{} 2018, 2021 Oleg Pykhalov@* +Copyright @copyright{} 2018, 2021, 2023 Oleg Pykhalov@* Copyright @copyright{} 2018 Mike Gerwitz@* Copyright @copyright{} 2018 Pierre-Antoine Rouby@* Copyright @copyright{} 2018, 2019 Gábor Boskovits@* @@ -7441,6 +7441,30 @@ appear multiple times on the command line. guix pack -f docker --entry-point=bin/guile --entry-point-argument="--help" guile @end example +@cindex maximum layers argument, for docker images +@item --max-layers=@code{n} +Specifies the maximum number of Docker image layers allowed when +building an image. + +@example +guix pack -f docker --max-layers=100 guile +@end example + +This option allows you to limit the number of layers in a Docker image. +Docker images are comprised of multiple layers, and each layer adds to +the overall size and complexity of the image. By setting a maximum +number of layers, you can control the following effects: + +@itemize +@item Disk Usage: +Increasing the number of layers can help optimize the disk space +required to store multiple images built with a similar package graph. + +@item Pulling: +When transferring images between different nodes or systems, having more +layers can reduce the time required to pull the image. +@end itemize + @item --expression=@var{expr} @itemx -e @var{expr} Consider the package @var{expr} evaluates to. diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm index 4c0a602eb1..d0acc6cfd8 100644 --- a/guix/scripts/pack.scm +++ b/guix/scripts/pack.scm @@ -9,6 +9,7 @@ ;;; Copyright © 2020 Eric Bavier ;;; Copyright © 2022 Alex Griffin ;;; Copyright © 2023 Graham James Addis +;;; Copyright © 2023 Oleg Pykhalov ;;; ;;; This file is part of GNU Guix. ;;; @@ -48,6 +49,7 @@ #:use-module (guix scripts build) #:use-module (guix transformations) #:use-module ((guix self) #:select (make-config.scm)) + #:use-module ((guix docker) #:select (%docker-image-max-layers)) #:use-module (gnu compression) #:use-module (gnu packages) #:use-module (gnu packages bootstrap) @@ -204,10 +206,10 @@ target the profile's @file{bin/env} file: arg)))) (define (entry-point-argument-spec-option-parser opt name arg result) - "A SRFI-37 opion parser for the --entry-point-argument option. The spec -takes multiple occurances. The entries are used in the exec form for the -docker entry-point. The values are used as parameters in conjunction with -the --entry-point option which is used as the first value in the exec form." + "A SRFI-37 option parser for the --entry-point-argument option. The spec +takes multiple occurrences. The entries are used in the exec form for the +docker entry-point. The values are used as parameters in conjunction with the +--entry-point option which is used as the first value in the exec form." (let ((entry-point-argument (assoc-ref result 'entry-point-argument))) (alist-cons 'entry-point-argument (append entry-point-argument (list arg)) @@ -517,12 +519,15 @@ added to the pack." localstatedir? (symlinks '()) (archiver tar) - (extra-options '())) - "Return a derivation to construct a Docker image of PROFILE. The -image is a tarball conforming to the Docker Image Specification, compressed -with COMPRESSOR. It can be passed to 'docker load'. If TARGET is true, it -must a be a GNU triplet and it is used to derive the architecture metadata in -the image. EXTRA-OPTIONS may contain the IMAGE-TAG keyword argument." + (extra-options '()) + max-layers) + "Return a derivation to construct a Docker image of PROFILE. The image is a +tarball conforming to the Docker Image Specification, compressed with +COMPRESSOR. It can be passed to 'docker load'. If TARGET is true, it must a +be a GNU triplet and it is used to derive the architecture metadata in the +image. EXTRA-OPTIONS may contain the IMAGE-TAG keyword argument. If +MAX-LAYERS is not false, the image will be splitted in up to MAX-LAYERS +layers." (define database (and localstatedir? (file-append (store-database (list profile)) @@ -576,18 +581,24 @@ the image. EXTRA-OPTIONS may contain the IMAGE-TAG keyword argument." (define (form-entry-point prefix entry-point entry-point-argument) ;; Construct entry-point parameter for build-docker-image. The ;; first entry is constructed by prefixing the entry-point with - ;; the supplied index subsequent entries are taken from the + ;; the supplied index, subsequent entries are taken from the ;; --entry-point-argument options. (and=> entry-point (lambda (entry-point) (cons* (string-append prefix "/" entry-point) - entry-point-argument)))) + entry-point-argument)))) - (setenv "PATH" #+(file-append archiver "/bin")) + (setenv "PATH" + (string-join `(#+(file-append archiver "/bin") + #+@(if max-layers + (list (file-append gzip "/bin")) + '())) + ":")) (let-keywords '#$extra-options #f ((image-tag #f) - (entry-point-argument #f)) + (entry-point-argument #f) + (max-layers #f)) (build-docker-image #$output (map store-info-item @@ -609,7 +620,8 @@ the image. EXTRA-OPTIONS may contain the IMAGE-TAG keyword argument." #:compressor #+(compressor-command compressor) #:creation-time - (make-time time-utc 0 1))))))) + (make-time time-utc 0 1) + #:max-layers max-layers)))))) (gexp->derivation (string-append name ".tar" (compressor-extension compressor)) @@ -1287,6 +1299,7 @@ last resort for relocation." (verbosity . 1) (symlinks . ()) (entry-point-argument . ()) + (max-layers . ,%docker-image-max-layers) (compressor . ,(first %compressors)))) (define %formats @@ -1324,7 +1337,11 @@ last resort for relocation." (define %docker-format-options (list (required-option 'image-tag) (option '(#\A "entry-point-argument") #t #f - entry-point-argument-spec-option-parser))) + entry-point-argument-spec-option-parser) + (option '("max-layers") #t #f + (lambda (opt name arg result) + (alist-cons 'max-layers (string->number* arg) + result))))) (define (show-docker-format-options) (display (G_ " @@ -1336,9 +1353,12 @@ last resort for relocation." Use the given NAME for the Docker image repository -A, --entry-point-argument=COMMAND/PARAMETER - Value(s) to use for the Docker EntryPoint arguments. + Value(s) to use for the Docker ENTRYPOINT arguments. Multiple instances are accepted. This is only valid - in conjunction with the --entry-point option")) + in conjunction with the --entry-point option + + --max-layers=N + Number of image layers")) (newline) (exit 0)) @@ -1651,7 +1671,9 @@ Create a bundle of PACKAGE.\n")) (list #:image-tag (assoc-ref opts 'image-tag) #:entry-point-argument - (assoc-ref opts 'entry-point-argument))) + (assoc-ref opts 'entry-point-argument) + #:max-layers + (assoc-ref opts 'max-layers))) ('deb (list #:control-file (process-file-arg opts 'control-file) diff --git a/tests/pack.scm b/tests/pack.scm index ac78817a70..55445ea1e9 100644 --- a/tests/pack.scm +++ b/tests/pack.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2017-2021, 2023 Ludovic Courtès ;;; Copyright © 2018 Ricardo Wurmus ;;; Copyright © 2021, 2023 Maxim Cournoyer +;;; Copyright © 2023 Oleg Pykhalov ;;; ;;; This file is part of GNU Guix. ;;; @@ -29,6 +30,7 @@ #:use-module (guix gexp) #:use-module (guix modules) #:use-module (guix utils) + #:use-module ((guix build utils) #:select (%store-directory)) #:use-module (gnu packages) #:use-module ((gnu packages base) #:select (libc-utf8-locales-for-target)) #:use-module (gnu packages bootstrap) @@ -250,6 +252,54 @@ (mkdir #$output))))))) (built-derivations (list check)))) + (unless store (test-skip 1)) + (test-assertm "docker-layered-image + localstatedir" + (mlet* %store-monad + ((guile (set-guile-for-build (default-guile))) + (profile -> (profile + (content (packages->manifest (list %bootstrap-guile))) + (hooks '()) + (locales? #f))) + (tarball (docker-image "docker-pack" profile + #:symlinks '(("/bin/Guile" -> "bin/guile")) + #:localstatedir? #t + #:max-layers 100)) + (check (gexp->derivation + "check-tarball" + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils) + (ice-9 match)) + + (define bin + (string-append "." #$profile "/bin")) + + (define store + (string-append "." #$(%store-directory))) + + (setenv "PATH" (string-append #$%tar-bootstrap "/bin")) + (mkdir "base") + (with-directory-excursion "base" + (invoke "tar" "xvf" #$tarball)) + + (match (find-files "base" "layer.tar") + ((layers ...) + (for-each (lambda (layer) + (invoke "tar" "xvf" layer) + (invoke "chmod" "--recursive" "u+w" store)) + layers))) + + (when + (and (file-exists? (string-append bin "/guile")) + (file-exists? "var/guix/db/db.sqlite") + (file-is-directory? "tmp") + (string=? (string-append #$%bootstrap-guile "/bin") + (readlink bin)) + (string=? (string-append #$profile "/bin/guile") + (readlink "bin/Guile"))) + (mkdir #$output))))))) + (built-derivations (list check)))) + (unless store (test-skip 1)) (test-assertm "squashfs-image + localstatedir" (mlet* %store-monad From 519e1e3eb88ec532fc83ebb742d9919269b57c87 Mon Sep 17 00:00:00 2001 From: Oleg Pykhalov Date: Tue, 26 Dec 2023 03:58:37 +0300 Subject: [PATCH 051/282] scripts: system: Build layered images. * guix/scripts/system.scm (show-help, %docker-format-options, %options, %default-options, show-docker-format-options, show-docker-format-options/detailed, process-action): Handle '--max-layers' option. * gnu/system/image.scm (system-docker-image): Same. * gnu/image.scm ()[max-layers]: New record field. Change-Id: I2726655aefd6688b976057fd5a38e9972ebfc292 --- gnu/image.scm | 4 ++++ gnu/system/image.scm | 41 ++++++++++++++++++++++++++++------------- guix/scripts/system.scm | 31 +++++++++++++++++++++++++++++-- 3 files changed, 61 insertions(+), 15 deletions(-) diff --git a/gnu/image.scm b/gnu/image.scm index 523653dd77..7fb06dec10 100644 --- a/gnu/image.scm +++ b/gnu/image.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2020, 2022 Mathieu Othacehe +;;; Copyright © 2023 Oleg Pykhalov ;;; ;;; This file is part of GNU Guix. ;;; @@ -42,6 +43,7 @@ image-format image-platform image-size + image-max-layers image-operating-system image-partition-table-type image-partitions @@ -170,6 +172,8 @@ that is not in SET, mentioning FIELD in the error message." (size image-size ;size in bytes as integer (default 'guess) (sanitize validate-size)) + (max-layers image-max-layers ;number of layers as integer + (default #false)) (operating-system image-operating-system) ; (partition-table-type image-partition-table-type ; 'mbr or 'gpt (default 'mbr) diff --git a/gnu/system/image.scm b/gnu/system/image.scm index b825892232..2cc1012893 100644 --- a/gnu/system/image.scm +++ b/gnu/system/image.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2022 Denis 'GNUtoo' Carikli ;;; Copyright © 2022 Alex Griffin ;;; Copyright © 2023 Efraim Flashner +;;; Copyright © 2023 Oleg Pykhalov ;;; ;;; This file is part of GNU Guix. ;;; @@ -686,7 +687,8 @@ returns an image record where the first partition's label is set to