From e4aad0813bf062d0cacde8e882067a9bc2019a20 Mon Sep 17 00:00:00 2001 From: Liliana Marie Prikler Date: Fri, 10 Dec 2021 23:15:58 +0100 Subject: [PATCH 01/81] gnu: emacs-dpd: Update to 0.2.1. * gnu/packages/emacs-xyz.scm (emacs-dpd): Update to 0.2.1. --- gnu/packages/emacs-xyz.scm | 43 ++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 24d0effd6a..8fc09eacd9 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -21399,30 +21399,27 @@ package recipes.") (license license:gpl3+))) (define-public emacs-dpd - ;; XXX: Upstream does not use tag yet. Version is extracted from "dpd.el". - (let ((commit "f53f251a58859f375617ce4f257fecc83c8ca5da") - (revision "0")) - (package - (name "emacs-dpd") - (version (git-version "0.1.0" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://gitlab.com/lilyp/emacs-dpd") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 "1nislvaxjb53x2ah330szcca4d595npx6zxrrwa5xximj6365wk0")))) - (build-system emacs-build-system) - (propagated-inputs - `(("emacs-packed" ,emacs-packed))) - (home-page "https://gitlab.com/lilyp/emacs-dpd") - (synopsis "Deliver packages to package.el") - (description - "This package provides tools for generating package-desc structures and + (package + (name "emacs-dpd") + (version "0.2.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/lilyp/emacs-dpd") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0wrqmpfcqp87dr5blpskf9kvm9slvffldqfxx77n15gcw516zzc8")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-packed" ,emacs-packed))) + (home-page "https://gitlab.com/lilyp/emacs-dpd") + (synopsis "Deliver packages to package.el") + (description + "This package provides tools for generating package-desc structures and feeding them to package.el library.") - (license license:gpl3+)))) + (license license:gpl3+))) (define-public emacs-picpocket (let ((version "41") From e64eb964103f4b3d120dc768b85cb50b665cd9a7 Mon Sep 17 00:00:00 2001 From: Nikolay Korotkiy Date: Fri, 10 Dec 2021 20:21:48 +0300 Subject: [PATCH 02/81] gnu: stagit: Update to 1.0. * gnu/packages/version-control.scm (stagit): Update to 1.0. Signed-off-by: Nicolas Goaziou --- gnu/packages/version-control.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 10487c6939..162b0ad832 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -2711,7 +2711,7 @@ a built-in wiki, built-in file browsing, built-in tickets system, etc.") (define-public stagit (package (name "stagit") - (version "0.9.6") + (version "1.0") (source (origin (method git-fetch) (uri (git-reference @@ -2720,7 +2720,7 @@ a built-in wiki, built-in file browsing, built-in tickets system, etc.") (file-name (git-file-name name version)) (sha256 (base32 - "0hcf1rmsp9s6jjg1dypq7sa3dqmqg2q3x1kj23rb5gwrsb31vyfj")))) + "0j2242vx5pbwdv79gcjxdbrwii48qphr8gk1lk7szj2irxdql171")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; No tests From 6a53a7f36c4fdebcbf24bb96dcba7274511a4449 Mon Sep 17 00:00:00 2001 From: Nikolay Korotkiy Date: Fri, 10 Dec 2021 20:41:08 +0300 Subject: [PATCH 03/81] gnu: lagrange: Update to 1.9.2. * gnu/packages/web-browsers.scm (lagrange): Update to 1.9.2. Signed-off-by: Nicolas Goaziou --- gnu/packages/web-browsers.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm index f707ddb597..f2c5cb0be7 100644 --- a/gnu/packages/web-browsers.scm +++ b/gnu/packages/web-browsers.scm @@ -693,7 +693,7 @@ is fully configurable and extensible in Common Lisp.") (define-public lagrange (package (name "lagrange") - (version "1.8.2") + (version "1.9.2") (source (origin (method url-fetch) @@ -701,7 +701,7 @@ is fully configurable and extensible in Common Lisp.") (string-append "https://git.skyjake.fi/skyjake/lagrange/releases/" "download/v" version "/lagrange-" version ".tar.gz")) (sha256 - (base32 "1wb4gqn32sja2qik04chlcl743arr6c844zczy1a2aad5103cnip")) + (base32 "1j4r2c6f9fqc22f14fjh28s324kfbb9ahf08nv0xlazy1y5g7f6d")) (modules '((guix build utils))) (snippet '(begin From f48911635217bdff4a313506895b4cbaf09e7d65 Mon Sep 17 00:00:00 2001 From: Nikolay Korotkiy Date: Fri, 10 Dec 2021 09:47:15 +0300 Subject: [PATCH 04/81] gnu: Add sfm. * gnu/packages/suckless.scm (sfm): New variable. Signed-off-by: Nicolas Goaziou --- gnu/packages/suckless.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm index efa5c023c0..e22880e78e 100644 --- a/gnu/packages/suckless.scm +++ b/gnu/packages/suckless.scm @@ -10,6 +10,7 @@ ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice ;;; Copyright © 2021 Raghav Gururajan ;;; Copyright © 2021 Alexandru-Sergiu Marton +;;; Copyright © 2021 Nikolay Korotkiy ;;; ;;; This file is part of GNU Guix. ;;; @@ -963,3 +964,31 @@ running a command.") Single daemon and configuration file. Log to stdout or syslog. No mail support.") (license license:expat))) + +(define-public sfm + (package + (name "sfm") + (version "0.4") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "git://git.afify.dev/sfm.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0g6k884mggryld0k054sjcj6kpkbca9cvr50w98klszym73yw0sp")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ;no check target + #:make-flags + (list (string-append "CC=" ,(cc-for-target)) + (string-append "PREFIX=" %output)) + #:phases + (modify-phases %standard-phases + (delete 'configure)))) ;no configure script + (home-page "https://github.com/afify/sfm") + (synopsis "Simple file manager") + (description "sfm is a simple file manager.") + (license license:isc))) From f08ce1d9ce2407648cecfcf564f0769bd0100f49 Mon Sep 17 00:00:00 2001 From: Foo Chuan Wei Date: Fri, 10 Dec 2021 06:07:06 +0000 Subject: [PATCH 05/81] gnu: Add sunclock. * gnu/packages/astronomy.scm (sunclock): New variable. Signed-off-by: Nicolas Goaziou --- gnu/packages/astronomy.scm | 63 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm index 6ae69b8370..8e3403c85c 100644 --- a/gnu/packages/astronomy.scm +++ b/gnu/packages/astronomy.scm @@ -8,6 +8,7 @@ ;;; Copyright © 2021 Sharlatan Hellseher ;;; Copyright © 2021 Vinicius Monego ;;; Copyright © 2021 Greg Hogan +;;; Copyright © 2021 Foo Chuan Wei ;;; ;;; This file is part of GNU Guix. ;;; @@ -1098,6 +1099,68 @@ more.") license:lgpl2.0+ license:lgpl2.1+)))) +(define-public sunclock + (let ((commit "f4106eb0a81f7594726d6b2859efd8fc64cc1225") + (revision "1")) + (package + (name "sunclock") + (version (git-version "3.57" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/nongiach/Sunclock") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1rczdpmhvfw57b9r793vq8vqlbdhlkgj52fxwrdfl6cwj95a9kv2")))) + (build-system gnu-build-system) + (arguments + `(#:make-flags + (list (string-append "DESTDIR=" %output) + ;; Fix incorrect argument given to gcc. Error message: + ;; "gcc: error: DefaultGcc2AMD64Opt: No such file or directory" + "CDEBUGFLAGS=") + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda _ + (chdir "sunclock-3.57") + (substitute* "Imakefile" + (("^MANDIR=/X11R6/man/man1") + "MANDIR=/share/man/man1") + (("^BINDIR=/X11R6/bin") + "BINDIR=/bin") + ;; Disable ZLIB support for vmf files because zlib implements + ;; `gzgetc` as a macro instead of a function, which results in + ;; a compilation error. + ((" -DZLIB") "") + ((" -lz") "") + (("cd \\$\\(DESTDIR\\)\\$\\(SHAREDIR\\)/earthmaps/vmf ; \ +gzip -f \\*.vmf") + "")) + ;; Generate Makefile. + (invoke "xmkmf")))) + #:tests? #f)) ; No check target. + (inputs + `(("libjpeg-turbo" ,libjpeg-turbo) + ("libpng" ,libpng) + ("libx11" ,libx11) + ("libxpm" ,libxpm))) + (native-inputs + `(("imake" ,imake))) + (home-page "https://github.com/nongiach/Sunclock") + (synopsis + "Map of the Earth that shows which portion is illuminated by the Sun") + (description + "Sunclock displays a map of the Earth and shows which portion is +illuminated by the Sun. It can commute between two states, the \"clock window\" +and the \"map window\". The clock window displays a small map of the Earth and +therefore occupies little space on the screen, while the \"map window\" displays +a large map and offers more advanced functions: local time of cities, Sun and +Moon position, etc.") + (license license:gpl2+)))) + (define-public python-jplephem (package (name "python-jplephem") From cfdf66e6bfc463b041965b64fc95174c90f046e0 Mon Sep 17 00:00:00 2001 From: Giacomo Leidi via Guix-patches via Date: Thu, 9 Dec 2021 23:56:32 +0100 Subject: [PATCH 06/81] gnu: Add gprof2dot. * gnu/packages/graphviz.scm (gprof2dot): New variable. Signed-off-by: Nicolas Goaziou --- gnu/packages/graphviz.scm | 43 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/gnu/packages/graphviz.scm b/gnu/packages/graphviz.scm index ac896fb577..6d3bb292ac 100644 --- a/gnu/packages/graphviz.scm +++ b/gnu/packages/graphviz.scm @@ -10,6 +10,7 @@ ;;; Copyright © 2020 Vincent Legoll ;;; Copyright © 2020 Pjotr Prins ;;; Copyright © 2021 Bonface Munyoki Kilyungi +;;; Copyright © 2021 Giacomo Leidi ;;; ;;; This file is part of GNU Guix. ;;; @@ -456,3 +457,45 @@ This approach allows: @item Using backend specific styles to customize the output @end itemize") (license license:expat))) + +(define-public gprof2dot + (package + (name "gprof2dot") + (version "2021.02.21") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jrfonseca/gprof2dot") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1jjhsjf5fdi1fkn7mvhnzkh6cynl8gcjrygd3cya5mmda3akhzic")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "python" "tests/test.py"))))))) + (native-inputs + `(("graphviz" ,graphviz))) + (home-page "https://github.com/jrfonseca/gprof2dot") + (synopsis "Generate a dot graph from the output of several profilers") + (description "This package provides a Python script to convert the output +from many profilers into a dot graph. + +It can: + +@itemize + +@item prune nodes and edges below a certain threshold; +@item use an heuristic to propagate time inside mutually recursive functions; +@item use color efficiently to draw attention to hot-spots; +@item work on any platform where Python and Graphviz is available. + +@end itemize") + (license license:lgpl3+))) From 01a007f46763c8ec1ccd7a560542f74585df62d3 Mon Sep 17 00:00:00 2001 From: Liliana Marie Prikler Date: Fri, 26 Nov 2021 17:43:40 +0100 Subject: [PATCH 07/81] gnu: Add emacs-cc-mode. * gnu/packages/emacs-xyz.scm (emacs-cc-mode): New variable. --- gnu/packages/emacs-xyz.scm | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 8fc09eacd9..f2d21b758d 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -13862,6 +13862,39 @@ commands are bound to keys reachable with the left hand and movement keys are reached with the right hand.") (license license:gpl3+))) +(define-public emacs-cc-mode + (package + (name "emacs-cc-mode") + (version "5.35") + (source + (origin + (method hg-fetch) + (uri (hg-reference + (url "http://hg.code.sf.net/p/cc-mode/cc-mode") + (changeset + (string-append "Release_" + (string-replace-substring version "." "_"))))) + (file-name (hg-file-name name version)) + (sha256 + (base32 "03cvl61baccx57zd62nz2wy4hvij5hl2syg7byaxgrs4c7grr414")))) + (build-system emacs-build-system) + (arguments + '(#:tests? #t + #:test-command '("make" "test") + #:phases + (modify-phases %standard-phases + (add-before 'install 'make-info + (lambda _ + (invoke "make" "info")))))) + (native-inputs + `(("texinfo" ,texinfo))) + (home-page "http://cc-mode.sourceforge.net/") + (synopsis "Framework for creating major modes for C-style languages") + (description + "CC Mode is an Emacs and XEmacs mode for editing C and other languages with +similar syntax; currently C++, Objective-C, Java, CORBA's IDL, Pike, and AWK.") + (license license:gpl3+))) + (define-public emacs-csharp-mode (package (name "emacs-csharp-mode") From e9c6be11260b1487ee241855d8189e1441f6bf8d Mon Sep 17 00:00:00 2001 From: Foo Chuan Wei Date: Fri, 10 Dec 2021 06:09:49 +0000 Subject: [PATCH 08/81] gnu: Add cl-zsort. * gnu/packages/lisp-xyz.scm (cl-zsort, ecl-zsort, sbcl-zsort): New variables. Signed-off-by: Guillaume Le Vaillant --- gnu/packages/lisp-xyz.scm | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index 635f8e48cb..0ac48db778 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -19868,6 +19868,40 @@ library inspired by @code{cl-data-format-validation} and WTForms validators.") (define-public ecl-restas (sbcl-package->ecl-package sbcl-restas)) +(define-public sbcl-zsort + (let ((commit "f6724a6fff7662a942195cedb0d7f00da59c74ed") + (revision "1")) + (package + (name "sbcl-zsort") + (version (git-version "0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jorgetavares/zsort") + (commit commit))) + (file-name (git-file-name "cl-zsort" version)) + (sha256 + (base32 "1vyklyh99712zsll4qi0m4mm8yb1nz04403vl8i57bjv5p5max49")))) + (build-system asdf-build-system/sbcl) + (inputs + `(("alexandria" ,sbcl-alexandria))) + (home-page "https://github.com/jorgetavares/zsort") + (synopsis "Collection of portable sorting algorithms in Common Lisp") + (description + "@code{zsort} is a collection of portable sorting algorithms. Common +Lisp provides the @code{sort} and @code{stable-sort} functions but these can +have different algorithms implemented according to each implementation. Also, +the standard sorting functions might not be the best for a certain situations. +This library aims to provide developers with more options.") + (license license:expat)))) + +(define-public cl-zsort + (sbcl-package->cl-source-package sbcl-zsort)) + +(define-public ecl-zsort + (sbcl-package->ecl-package sbcl-zsort)) + (define-public sbcl-cl-https-everywhere ;; No release. ;; Don't forget to update the https-everywhere input. From d3b541469139040ddc3fb5bb37b1ac184572296d Mon Sep 17 00:00:00 2001 From: Foo Chuan Wei Date: Fri, 10 Dec 2021 06:10:52 +0000 Subject: [PATCH 09/81] gnu: Add cl-core-gp. * gnu/packages/lisp-xyz.scm (cl-core-gp, ecl-core-gp, sbcl-core-gp): New variables. Signed-off-by: Guillaume Le Vaillant --- gnu/packages/lisp-xyz.scm | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index 0ac48db778..113f867ae5 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -19782,6 +19782,36 @@ score. When evaluated, the musical score is rendered to an image.") (define-public ecl-cmn (sbcl-package->ecl-package sbcl-cmn)) +(define-public sbcl-core-gp + (let ((commit "90ec1c4599a19c5a911be1f703f78d5108aee160") + (revision "1")) + (package + (name "sbcl-core-gp") + (version (git-version "0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jorgetavares/core-gp") + (commit commit))) + (file-name (git-file-name "cl-core-gp" version)) + (sha256 + (base32 "0nzlb2gwqisa1amlpl4zc5xxph2g3qwhfyaxchci67d31rzws6l3")))) + (build-system asdf-build-system/sbcl) + (home-page "https://github.com/jorgetavares/core-gp") + (synopsis "Common Lisp library for genetic programming") + (description + "@code{core-gp} is a Common Lisp library for genetic programming (GP) +algorithms. It allows standard GP, strongly-typed GP, grammatical evolution as +well as standard genetic algorithms.") + (license license:expat)))) + +(define-public cl-core-gp + (sbcl-package->cl-source-package sbcl-core-gp)) + +(define-public ecl-core-gp + (sbcl-package->ecl-package sbcl-core-gp)) + (define-public sbcl-data-sift (let ((commit "fd617d8200cdcc1b87ecf45ab59bb38e8b16ef7e") (revision "1")) From 163f7831c4ed7c7d877234bc208caf625afce808 Mon Sep 17 00:00:00 2001 From: Foo Chuan Wei Date: Fri, 10 Dec 2021 06:14:09 +0000 Subject: [PATCH 10/81] gnu: Add cl-num-utils. * gnu/packages/lisp-xyz.scm (cl-num-utils, ecl-cl-num-utils, sbcl-cl-num-utils): New variables. Signed-off-by: Guillaume Le Vaillant --- gnu/packages/lisp-xyz.scm | 47 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index 113f867ae5..e0e3b8ab4e 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -19363,6 +19363,53 @@ command in Common Lisp.") (define-public ecl-which (sbcl-package->ecl-package sbcl-which)) +(define-public sbcl-cl-num-utils + (let ((commit "97a88cd34540acf52e872a82ebfef3da0a34fa12") + (revision "1")) + (package + (name "sbcl-cl-num-utils") + (version (git-version "0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tpapp/cl-num-utils") + (commit commit))) + (file-name (git-file-name "cl-num-utils" version)) + (sha256 + (base32 "15ihsxxs76xnldmqfsbxybckqjwrxwcpphgghiwzr2mnbqjpdqkh")))) + (build-system asdf-build-system/sbcl) + (inputs + `(("anaphora" ,sbcl-anaphora) + ("alexandria" ,sbcl-alexandria) + ("array-operations" ,sbcl-array-operations) + ("cl-slice" ,sbcl-cl-slice) + ("let-plus" ,sbcl-let-plus))) + (native-inputs + `(("clunit" ,sbcl-clunit))) + (home-page "https://github.com/tpapp/cl-num-utils") + (synopsis "Numerical utilities for Common Lisp") + (description + "@code{cl-num-utils} implements simple numerical functions for Common +Lisp, including: +@itemize +@item @code{num=}, a comparison operator for floats +@item simple arithmeric functions, like @code{sum} and @code{l2norm} +@item elementwise operations for arrays +@item intervals +@item special matrices and shorthand for their input +@item sample statistics +@item Chebyshev polynomials +@item univariate rootfinding +@end itemize") + (license license:boost1.0)))) + +(define-public cl-num-utils + (sbcl-package->cl-source-package sbcl-cl-num-utils)) + +(define-public ecl-cl-num-utils + (sbcl-package->ecl-package sbcl-cl-num-utils)) + (define-public sbcl-cl-tld ;; No release. (let ((commit "f5014da8d831fa9481d4181d4450f10a52850c75")) From e8fa25f6a4fd2748666bfdba197cddc28b9c2ddc Mon Sep 17 00:00:00 2001 From: Foo Chuan Wei Date: Fri, 10 Dec 2021 06:15:12 +0000 Subject: [PATCH 11/81] gnu: Add cl-lla. * gnu/packages/lisp-xyz.scm (cl-lla, ecl-lla, sbcl-lla): New variables. Signed-off-by: Guillaume Le Vaillant --- gnu/packages/lisp-xyz.scm | 52 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index e0e3b8ab4e..54b33d742b 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -19410,6 +19410,58 @@ Lisp, including: (define-public ecl-cl-num-utils (sbcl-package->ecl-package sbcl-cl-num-utils)) +(define-public sbcl-lla + (let ((commit "ded805d1e9b1493e17b601116ba9bd8a3de3024f") + (revision "1")) + (package + (name "sbcl-lla") + (version (git-version "0.2" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tpapp/lla") + (commit commit))) + (file-name (git-file-name "cl-lla" version)) + (sha256 + (base32 "0n9vc7dnyjbbsv1n7rd8sylwda5fsdf8f890g4nachanyx0xps9k")))) + (build-system asdf-build-system/sbcl) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "src/configuration.lisp" + (("\"libblas.so.3gf\"") + (string-append "\"" (assoc-ref inputs "lapack") + "/lib/libblas.so\"")) + (("\"liblapack.so.3gf\"") + (string-append "\"" (assoc-ref inputs "lapack") + "/lib/liblapack.so\"")))))))) + (inputs + `(("anaphora" ,sbcl-anaphora) + ("alexandria" ,sbcl-alexandria) + ("cffi" ,sbcl-cffi) + ("cl-num-utils" ,sbcl-cl-num-utils) + ("cl-slice" ,sbcl-cl-slice) + ("lapack" ,lapack) + ("let-plus" ,sbcl-let-plus))) + (native-inputs + `(("clunit" ,sbcl-clunit))) + (home-page "https://github.com/tpapp/lla") + (synopsis "Linear algebra library for Common Lisp") + (description + "LLA is a high-level Common Lisp library built on BLAS and LAPACK, but +providing a much more abstract interface with the purpose of freeing the user +from low-level concerns and reducing the number of bugs in numerical code.") + (license license:boost1.0)))) + +(define-public cl-lla + (sbcl-package->cl-source-package sbcl-lla)) + +(define-public ecl-lla + (sbcl-package->ecl-package sbcl-lla)) + (define-public sbcl-cl-tld ;; No release. (let ((commit "f5014da8d831fa9481d4181d4450f10a52850c75")) From 17bbd5ae070ff99335fbb45ad08a0add0223ce78 Mon Sep 17 00:00:00 2001 From: Foo Chuan Wei Date: Fri, 10 Dec 2021 06:16:37 +0000 Subject: [PATCH 12/81] gnu: Add cl-rmath. * gnu/packages/lisp-xyz.scm (cl-rmath, ecl-cl-rmath, sbcl-cl-rmath): New variables. Signed-off-by: Guillaume Le Vaillant --- gnu/packages/lisp-xyz.scm | 46 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index 54b33d742b..ebc528f84e 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -93,6 +93,7 @@ #:use-module (gnu packages sdl) #:use-module (gnu packages serialization) #:use-module (gnu packages sqlite) + #:use-module (gnu packages statistics) #:use-module (gnu packages tcl) #:use-module (gnu packages tls) #:use-module (gnu packages video) @@ -19462,6 +19463,51 @@ from low-level concerns and reducing the number of bugs in numerical code.") (define-public ecl-lla (sbcl-package->ecl-package sbcl-lla)) +(define-public sbcl-cl-rmath + (let ((commit "f6add1edda31547691d08e36ccf6c17305161aca") + (revision "1")) + (package + (name "sbcl-cl-rmath") + (version (git-version "0.0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tpapp/cl-rmath") + (commit commit))) + (file-name (git-file-name "cl-rmath" version)) + (sha256 + (base32 "1ld8vbpy10paymx2hn0mcgd21i7cjhdrayln1jx0kayqxm12mmk4")))) + (build-system asdf-build-system/sbcl) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "cl-rmath.lisp" + (("\\(cffi:define-foreign-library librmath" all) + (string-append all "\n" + " (:unix \"" + (assoc-ref inputs "librmath") + "/lib/libRmath.so\")")))))))) + (inputs + `(("cffi" ,sbcl-cffi) + ("librmath" ,rmath-standalone))) + (home-page "https://github.com/tpapp/cl-rmath") + (synopsis "Common Lisp wrapper for libRmath") + (description + "@code{cl-rmath} is a simple, autogenerated foreign interface for the +standalone R API @code{libRmath}. There has been no effort to provide a +high-level interface for the original library, instead, this library is meant +to serve as a building block for such an interface.") + (license license:boost1.0)))) + +(define-public cl-rmath + (sbcl-package->cl-source-package sbcl-cl-rmath)) + +(define-public ecl-cl-rmath + (sbcl-package->ecl-package sbcl-cl-rmath)) + (define-public sbcl-cl-tld ;; No release. (let ((commit "f5014da8d831fa9481d4181d4450f10a52850c75")) From 0191fedb7fb3fd17f78cb740f151c558797e8a50 Mon Sep 17 00:00:00 2001 From: Foo Chuan Wei Date: Fri, 10 Dec 2021 06:17:27 +0000 Subject: [PATCH 13/81] gnu: Add cl-random. * gnu/packages/lisp-xyz.scm (cl-random, ecl-cl-random, sbcl-cl-random): New variables. Signed-off-by: Guillaume Le Vaillant --- gnu/packages/lisp-xyz.scm | 42 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index ebc528f84e..b3957878b5 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -19508,6 +19508,48 @@ to serve as a building block for such an interface.") (define-public ecl-cl-rmath (sbcl-package->ecl-package sbcl-cl-rmath)) +(define-public sbcl-cl-random + (let ((commit "5bb65911037f95a4260bd29a594a09df3849f4ea") + (revision "1")) + (package + (name "sbcl-cl-random") + (version (git-version "0.0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tpapp/cl-random") + (commit commit))) + (file-name (git-file-name "cl-random" version)) + (sha256 + (base32 "0jn80xphyvyp2v72acr6b8a2f6dw06myr5vrjfl14brsvks7wr89")))) + (build-system asdf-build-system/sbcl) + (inputs + `(("alexandria" ,sbcl-alexandria) + ("anaphora" ,sbcl-anaphora) + ("array-operations" ,sbcl-array-operations) + ("cl-num-utils" ,sbcl-cl-num-utils) + ("cl-rmath" ,sbcl-cl-rmath) + ("cl-slice" ,sbcl-cl-slice) + ("gsll" ,sbcl-gsll) + ("let-plus" ,sbcl-let-plus) + ("lla" ,sbcl-lla))) + (native-inputs + `(("clunit" ,sbcl-clunit))) + (home-page "https://github.com/tpapp/cl-random") + (synopsis "Random variates for Common Lisp") + (description + "@code{cl-random} is a library for generating random draws from various +commonly used distributions, and for calculating statistical functions, such as +density, distribution and quantiles for these distributions.") + (license license:expat)))) + +(define-public cl-random + (sbcl-package->cl-source-package sbcl-cl-random)) + +(define-public ecl-cl-random + (sbcl-package->ecl-package sbcl-cl-random)) + (define-public sbcl-cl-tld ;; No release. (let ((commit "f5014da8d831fa9481d4181d4450f10a52850c75")) From acf44174c9002b1860beda5619170e5cbae9bb5e Mon Sep 17 00:00:00 2001 From: Foo Chuan Wei Date: Fri, 10 Dec 2021 06:18:28 +0000 Subject: [PATCH 14/81] gnu: Add cl-mgl-gpr. * gnu/packages/lisp-xyz.scm (cl-mgl-gpr, ecl-mgl-gpr, sbcl-mgl-gpr): New variables. Signed-off-by: Guillaume Le Vaillant --- gnu/packages/lisp-xyz.scm | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index b3957878b5..a7e50cd9fd 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -19550,6 +19550,39 @@ density, distribution and quantiles for these distributions.") (define-public ecl-cl-random (sbcl-package->ecl-package sbcl-cl-random)) +(define-public sbcl-mgl-gpr + (let ((commit "cb6ce51e2f87bf1d589f3703c13eea6e25780afe") + (revision "1")) + (package + (name "sbcl-mgl-gpr") + (version (git-version "0.0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/melisgl/mgl-gpr") + (commit commit))) + (file-name (git-file-name "cl-mgl-gpr" version)) + (sha256 + (base32 "0w51dqixh277k6sl8bqvvp1400y6kd1l5h3d9q2f40l9bpxy8gjx")))) + (build-system asdf-build-system/sbcl) + (inputs + `(("cl-random" ,sbcl-cl-random) + ("mgl-pax" ,sbcl-mgl-pax))) + (home-page "https://melisgl.github.io/mgl-gpr/") + (synopsis "Common Lisp library of evolutionary algorithms") + (description + "@code{MGL-GPR} is a library of evolutionary algorithms such as +Genetic Programming (evolving typed expressions from a set of operators and +constants) and Differential Evolution.") + (license license:expat)))) + +(define-public cl-mgl-gpr + (sbcl-package->cl-source-package sbcl-mgl-gpr)) + +(define-public ecl-mgl-gpr + (sbcl-package->ecl-package sbcl-mgl-gpr)) + (define-public sbcl-cl-tld ;; No release. (let ((commit "f5014da8d831fa9481d4181d4450f10a52850c75")) From 0e14da54754fd80c24777281ec940024529ed8f2 Mon Sep 17 00:00:00 2001 From: Foo Chuan Wei Date: Sat, 11 Dec 2021 08:07:58 +0000 Subject: [PATCH 15/81] gnu: sbcl-mgl-pax: Update home page. * gnu/packages/lisp-xyz.scm (sbcl-mgl-pax)[home-page]: Update home page. Signed-off-by: Guillaume Le Vaillant --- gnu/packages/lisp-xyz.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index a7e50cd9fd..8668a12078 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -2187,7 +2187,7 @@ With the simplistic tools provided, one may accomplish similar effects as with Literate Programming, but documentation is generated from code, not vice versa and there is no support for chunking yet. Code is first, code must look pretty, documentation is code.") - (home-page "http://quotenil.com/") + (home-page "https://melisgl.github.io/mgl-pax/") (license license:expat)))) (define-public cl-mgl-pax From b3a801330ed1c126a215fa8e3ff2aea0880eeba8 Mon Sep 17 00:00:00 2001 From: Jacob MacDonald Date: Tue, 7 Dec 2021 14:47:07 -0600 Subject: [PATCH 16/81] gnu: sbcl-slime-swank: Update to 2.26.1. * gnu/packages/lisp-xyz.scm (sbcl-slime-swank): Update to 2.26.1. Signed-off-by: Guillaume Le Vaillant --- gnu/packages/lisp-xyz.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index 8668a12078..e838b5b198 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -2114,7 +2114,7 @@ writing code that contains string literals that contain code themselves.") (define-public sbcl-slime-swank (package (name "sbcl-slime-swank") - (version "2.26") + (version "2.26.1") (source (origin (file-name (git-file-name "slime-swank" version)) @@ -2124,7 +2124,7 @@ writing code that contains string literals that contain code themselves.") (commit (string-append "v" version)))) (sha256 (base32 - "0mxb1wnw19v0s72w2wkz5afdlzvpy5nn7pr4vav403qybac0sw5c")))) + "1a25ixb7q4svqabxnhwkk43v47mbsh13qwm7qlazkd3zkr8j3cli")))) (build-system asdf-build-system/sbcl) (arguments '(#:asd-systems '("swank"))) From 60dc7a792593525e559a66a1395cb1c2514cf0c6 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Sat, 11 Dec 2021 14:25:31 +0100 Subject: [PATCH 17/81] gnu: emacs-webpaste: Update to 3.2.2. * gnu/packages/emacs-xyz.scm (emacs-webpaste): Update to 3.2.2. --- gnu/packages/emacs-xyz.scm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index f2d21b758d..5d2d6c158d 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -29770,7 +29770,7 @@ released, and track their progress in watching a series.") (define-public emacs-webpaste (package (name "emacs-webpaste") - (version "3.2.1") + (version "3.2.2") (source (origin (method git-fetch) @@ -29779,8 +29779,7 @@ released, and track their progress in watching a series.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 - "1d481pdnh7cnbyka7wn59czlci63zwfqms8n515svg92qm573ckd")))) + (base32 "07hj9nr7x6c9w2dnvc58cfbprgp9cqzdxflp5qlpglzdw0bi9s3c")))) (build-system emacs-build-system) (arguments `(#:tests? #t From 0d8c801d83ee59dfe34e52a1955c4c711735b01a Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Sat, 11 Dec 2021 14:27:37 +0100 Subject: [PATCH 18/81] gnu: pdfarranger: Update to 1.8.1. * gnu/packages/pdf.scm (pdfarranger): Update to 1.8.1. --- gnu/packages/pdf.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index 36ff314193..be63ccc434 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm @@ -1261,7 +1261,7 @@ python-pypdf2 instead.") (define-public pdfarranger (package (name "pdfarranger") - (version "1.8.0") + (version "1.8.1") (source (origin (method git-fetch) @@ -1270,7 +1270,7 @@ python-pypdf2 instead.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0xfxcwb24rp0kni2b4wdk6fvhqnhd6fh559ag6wdr4sspzkqwdjf")))) + (base32 "1lcmlr7x4143f7wcn0m1ijlvch07nww2qfp3jfnacgy889ijvbfx")))) (build-system python-build-system) (arguments '(#:tests? #f ;no tests From f00690c0ed2066a0dcc867bfe06a8f8c88272c2f Mon Sep 17 00:00:00 2001 From: Foo Chuan Wei Date: Fri, 10 Dec 2021 06:07:55 +0000 Subject: [PATCH 19/81] gnu: Add s9fes. * gnu/packages/scheme.scm (s9fes): New variable. Signed-off-by: Guillaume Le Vaillant --- gnu/packages/scheme.scm | 42 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm index 544c24970a..d6299fc503 100644 --- a/gnu/packages/scheme.scm +++ b/gnu/packages/scheme.scm @@ -16,6 +16,7 @@ ;;; Copyright © 2020 Edouard Klein ;;; Copyright © 2021 Philip McGrath ;;; Copyright © 2021 Guillaume Le Vaillant +;;; Copyright © 2021 Foo Chuan Wei ;;; ;;; This file is part of GNU Guix. ;;; @@ -36,7 +37,7 @@ #:use-module (gnu packages) #:use-module ((guix licenses) #:select (gpl2+ lgpl2.0+ lgpl2.1 lgpl2.1+ lgpl3+ asl2.0 bsd-3 - cc-by-sa4.0 non-copyleft expat)) + cc-by-sa4.0 non-copyleft expat public-domain)) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) @@ -798,6 +799,45 @@ program-point-specific low-level representation selection and code generation.") (license gpl2+)))) +(define-public s9fes + (package + (name "s9fes") + (version "20181205") + (source + (origin + (method url-fetch) + (uri (string-append "https://www.t3x.org/s9fes/s9fes-" version ".tgz")) + (sha256 + (base32 "0ynpl707bc9drwkdpdgvw14bz9zmwd3wffl1k02sxppjl28xm7rf")))) + (build-system gnu-build-system) + (arguments + `(#:make-flags + (list (string-append "CC=" ,(cc-for-target)) + (string-append "PREFIX=" %output)) + #:phases + (modify-phases %standard-phases + (replace 'install + (lambda* (#:key make-flags #:allow-other-keys) + (apply invoke "make" "install-all" make-flags)))) + #:tests? #f)) ; No check target. + (inputs + `(("ncurses" ,ncurses))) + (home-page "https://www.t3x.org/s9fes/") + (synopsis "Interpreter for R4RS Scheme") + (description + "Scheme 9 from Empty Space (S9fES) is a mature, portable, and +comprehensible public-domain interpreter for R4RS Scheme offering: +@itemize +@item bignum arithmetics +@item decimal-based real number arithmetics +@item support for low-level Unix programming +@item cursor addressing with Curses +@item basic networking procedures +@item an integrated online help system +@item loads of useful library functions +@end itemize") + (license public-domain))) + (define-public femtolisp (let ((commit "ec7601076a976f845bc05ad6bd3ed5b8cde58a97") (revision "2")) From 58dbf4c930e26a6d813ed6cc30fb5ca67ad7c21f Mon Sep 17 00:00:00 2001 From: Foo Chuan Wei Date: Fri, 10 Dec 2021 06:08:26 +0000 Subject: [PATCH 20/81] gnu: Add optionmatrix. * gnu/packages/finance.scm (optionmatrix): New variable. Signed-off-by: Guillaume Le Vaillant --- gnu/packages/finance.scm | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm index 1f4dd25f6f..2f7f3741e0 100644 --- a/gnu/packages/finance.scm +++ b/gnu/packages/finance.scm @@ -90,7 +90,9 @@ #:use-module (gnu packages libusb) #:use-module (gnu packages linux) #:use-module (gnu packages man) + #:use-module (gnu packages maths) #:use-module (gnu packages multiprecision) + #:use-module (gnu packages ncurses) #:use-module (gnu packages networking) #:use-module (gnu packages pkg-config) #:use-module (gnu packages popt) @@ -104,6 +106,7 @@ #:use-module (gnu packages qt) #:use-module (gnu packages readline) #:use-module (gnu packages sphinx) + #:use-module (gnu packages tex) #:use-module (gnu packages texinfo) #:use-module (gnu packages textutils) #:use-module (gnu packages time) @@ -1813,6 +1816,37 @@ local, single-user UI, or as a multi-user UI for viewing, adding, and editing on the Web.") (license license:gpl3))) +(define-public optionmatrix + (package + (name "optionmatrix") + (version "1.4.3") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/optionmatrix/optionmatrix-" + version ".tar.xz")) + (sha256 + (base32 "1zd0pfiphnijh1l94swb3mjrpmjsn37z11mklamd7zw6h2d4zh4d")))) + (build-system gnu-build-system) + (inputs + `(("gsl" ,gsl) + ("gtk3" ,gtk+) + ("ncurses" ,ncurses))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("texinfo" ,texinfo) + ("texlive" ,(texlive-union (list texlive-epsf + texlive-tex-texinfo))))) + (home-page "https://anthonybradford.github.io/optionmatrix/") + (synopsis "Financial derivative calculator") + (description + "The OptionMatrix programs are financial derivative calculators. These +calculators are real-time multi-model option chain pricers with analytics and +interactive controls. This package provides a GTK+ graphical user interface +(@code{optionmatrix}) and a curses interface (@code{optionmatrix_console}).") + (license license:gpl3+))) + (define-public python-ta-lib (package (name "python-ta-lib") From bf189fd2b53d5f4a28d249fe4abb036880dc7579 Mon Sep 17 00:00:00 2001 From: Nikolay Korotkiy Date: Sat, 11 Dec 2021 17:28:33 +0300 Subject: [PATCH 21/81] gnu: gmnisrv: Update to 1.0. * gnu/packages/web.scm (gmnisrv): Update to 1.0. Signed-off-by: Nicolas Goaziou --- gnu/packages/web.scm | 64 +++++++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 33 deletions(-) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index ca48560077..8bb02ee887 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -7939,39 +7939,37 @@ solution for any project's interface needs: (license license:expat))) (define-public gmnisrv - (let ((commit "32854b79c73b278bf33eb5123abf1c36abdc7c01") - (revision "2")) - (package - (name "gmnisrv") - (version (git-version "0" revision commit)) - (home-page "https://git.sr.ht/~sircmpwn/gmnisrv") - (source (origin - (method git-fetch) - (uri (git-reference - (url home-page) - (commit commit))) - (sha256 - (base32 - "0lbb3ablwkdcgm1cjr1hikr55y8gpl420nh8b8g9wn4abhm2xgr9")) - (file-name (git-file-name name version)))) - (build-system gnu-build-system) - (arguments - `(#:tests? #f ; no check target - #:configure-flags (list "--sysconfdir=/etc" - (string-append "--with-mimedb=" - (assoc-ref %build-inputs "mailcap") - "/etc/mime.types")) - #:make-flags (list (string-append "CC=" ,(cc-for-target))))) - (inputs - `(("mailcap" ,mailcap) - ("openssl" ,openssl))) - (native-inputs - `(("pkg-config" ,pkg-config) - ("scdoc" ,scdoc))) - (synopsis "Simple Gemini protocol server") - (description "gmnisrv is a simple Gemini protocol server written in C.") - (license (list license:gpl3+ - license:bsd-3))))) ;; for ini.c and ini.h + (package + (name "gmnisrv") + (version "1.0") + (home-page "https://git.sr.ht/~sircmpwn/gmnisrv") + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit version))) + (sha256 + (base32 "115r1dw9k08r2nvygy8ll21qvsc5kmzi5jcqm7g7r8q8hifxglap")) + (file-name (git-file-name name version)))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ;no check target + #:configure-flags (list "--sysconfdir=/etc" + (string-append "--with-mimedb=" + (assoc-ref %build-inputs "mailcap") + "/etc/mime.types")) + #:make-flags (list (string-append "CC=" ,(cc-for-target))))) + (inputs + `(("mailcap" ,mailcap) + ("openssl" ,openssl))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("scdoc" ,scdoc))) + (synopsis "Simple Gemini protocol server") + (description "gmnisrv is a simple Gemini protocol server written in C.") + (license (list license:gpl3+ + license:bsd-3)))) ;; for ini.c and ini.h (define-public libzim (package From 610645b1759ae5328e98c84f603c5827a986c939 Mon Sep 17 00:00:00 2001 From: Petr Hodina Date: Wed, 8 Dec 2021 03:30:15 +0100 Subject: [PATCH 22/81] gnu: i3status-rust: Add missing inputs. * gnu/packages/rust-apps (i3status-rust)[inputs]: Add alsa-utils, bash-minmal, coreutils, ibus, iproute, kdeconnect, lm-sensors, setxkbmap, speedtest-cli, xdg-utils, xrandr. [arguments]: Add phase to wrap-program bin/i3status-rs. * gnu/local.mk: Add patch (change not applied in 575fcd3045ff1649e5319b6701ff9e28e97793e0) Signed-off-by: Nicolas Goaziou --- gnu/local.mk | 1 + gnu/packages/rust-apps.scm | 74 ++++++++++++++++++++++++++------------ 2 files changed, 53 insertions(+), 22 deletions(-) diff --git a/gnu/local.mk b/gnu/local.mk index 223055c3e2..9a85977973 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1741,6 +1741,7 @@ dist_patch_DATA = \ %D%/packages/patches/rust-adblock-ignore-live-tests.patch \ %D%/packages/patches/rust-bootstrap-stage0-test.patch \ %D%/packages/patches/rust-coresimd-doctest.patch \ + %D%/packages/patches/i3status-rust-enable-unstable-features.patch \ %D%/packages/patches/rust-ndarray-remove-blas-src-dep.patch \ %D%/packages/patches/rust-ndarray-0.13-remove-blas-src.patch \ %D%/packages/patches/rust-nettle-disable-vendor.patch \ diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm index 3420a0fde0..cd3b0fb9c0 100644 --- a/gnu/packages/rust-apps.scm +++ b/gnu/packages/rust-apps.scm @@ -39,16 +39,22 @@ #:use-module (guix utils) #:use-module (gnu packages) #:use-module (gnu packages admin) + #:use-module (gnu packages base) + #:use-module (gnu packages bash) #:use-module (gnu packages compression) #:use-module (gnu packages crates-io) #:use-module (gnu packages crates-graphics) #:use-module (gnu packages curl) #:use-module (gnu packages documentation) #:use-module (gnu packages fontutils) + #:use-module (gnu packages freedesktop) #:use-module (gnu packages glib) #:use-module (gnu packages gtk) + #:use-module (gnu packages ibus) #:use-module (gnu packages jemalloc) + #:use-module (gnu packages kde) #:use-module (gnu packages linux) + #:use-module (gnu packages networking) #:use-module (gnu packages ssh) #:use-module (gnu packages pcre) #:use-module (gnu packages pkg-config) @@ -56,7 +62,8 @@ #:use-module (gnu packages python-xyz) #:use-module (gnu packages rust) #:use-module (gnu packages tls) - #:use-module (gnu packages version-control)) + #:use-module (gnu packages version-control) + #:use-module (gnu packages xorg)) (define-public agate (package @@ -527,24 +534,16 @@ characters, ASCII whitespace characters, other ASCII characters and non-ASCII.") (name "i3status-rust") (version "0.20.1") (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/greshake/i3status-rust") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (patches (search-patches "i3status-rust-enable-unstable-features.patch")) - (sha256 - (base32 "00gzm3g297s9bfp13vnb623p7dfac3g6cdhz2b3lc6l0kmnnqs1s")))) + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/greshake/i3status-rust") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (patches (search-patches "i3status-rust-enable-unstable-features.patch")) + (sha256 + (base32 "00gzm3g297s9bfp13vnb623p7dfac3g6cdhz2b3lc6l0kmnnqs1s")))) (build-system cargo-build-system) - (native-inputs - `(("pkg-config" ,pkg-config))) - (inputs - `(("curl" ,curl) - ("dbus" ,dbus) - ("pulseaudio" ,pulseaudio) - ("openssl" ,openssl) - ("zlib" ,zlib))) (arguments `(#:features '("pulseaudio" "libpulse-binding") #:install-source? #f @@ -574,6 +573,9 @@ characters, ASCII whitespace characters, other ASCII characters and non-ASCII.") (("rust-assert-fs" ,rust-assert-fs-1)) #:phases (modify-phases %standard-phases + (add-after 'unpack 'enable-unstable-features + (lambda _ + (setenv "RUSTC_BOOTSTRAP" "1"))) (add-after 'unpack 'fix-resources-path (lambda* (#:key outputs #:allow-other-keys) (let ((resources (string-append %output "/share"))) @@ -582,10 +584,38 @@ characters, ASCII whitespace characters, other ASCII characters and non-ASCII.") (add-after 'install 'install-resources (lambda* (#:key outputs #:allow-other-keys) (copy-recursively "files" (string-append %output "/share")))) - (add-after 'unpack 'enable-unstable-features - (lambda _ - (setenv "RUSTC_BOOTSTRAP" "1") - #t))))) + (add-after 'install 'wrap-i3status + (lambda* (#:key outputs inputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (paths (map + (lambda (input) + (string-append (assoc-ref inputs input) "/bin")) + '("alsa-utils" "coreutils" "curl" "dbus" "ibus" "iproute" + "kdeconnect" "lm-sensors" "pulseaudio" + "openssl" + "setxkbmap" "speedtest-cli" "xdg-utils" "xrandr" + "zlib")))) + (wrap-program (string-append out "/bin/i3status-rs") + `("PATH" prefix ,paths)))))))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("alsa-utils" ,alsa-utils) + ("bash-minimal" ,bash-minimal) + ("coreutils" ,coreutils) + ("curl" ,curl) + ("dbus" ,dbus) + ("ibus" ,ibus) + ("iproute" ,iproute) + ("kdeconnect" ,kdeconnect) + ("lm-sensors" ,lm-sensors) + ("pulseaudio" ,pulseaudio) + ("openssl" ,openssl) + ("setxkbmap" ,setxkbmap) + ("speedtest-cli" ,speedtest-cli) + ("xdg-utils" ,xdg-utils) + ("xrandr" ,xrandr) + ("zlib" ,zlib))) (home-page "https://github.com/greshake/i3status-rust") (synopsis "i3status, written in pure Rust") (description "@code{i3status-rs} is a feature-rich and resource-friendly From c11c1080de9593cb803a8bf30908e5a8703d7550 Mon Sep 17 00:00:00 2001 From: Demis Balbach Date: Tue, 7 Dec 2021 19:00:23 +0100 Subject: [PATCH 23/81] gnu: carla: Update to 2.4.1. * gnu/packages/audio.scm (carla): Update to 2.4.1. Signed-off-by: Nicolas Goaziou --- gnu/packages/audio.scm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index e7bcf04ab3..7f780e13cf 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -4947,7 +4947,7 @@ as is the case with audio plugins.") (define-public carla (package (name "carla") - (version "2.1.1") + (version "2.4.1") (source (origin (method git-fetch) @@ -4957,8 +4957,7 @@ as is the case with audio plugins.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 - "0c3y4a6cgi4bv1mg57i3qn5ia6pqjqlaylvkapj6bmpsw71ig22g")))) + (base32 "01ngkmfcxyg1bb4qmfvlkkjbx4lx62akxqhizl8zmqnhfcy4p9bx")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no "check" target From ebff268bfc1a0c09963677331aa721c0237011c3 Mon Sep 17 00:00:00 2001 From: jgart via Guix-patches via Date: Mon, 6 Dec 2021 05:23:34 -0500 Subject: [PATCH 24/81] gnu: Add vivid. * gnu/packages/rust-apps.scm (vivid): New variable. Signed-off-by: Nicolas Goaziou --- gnu/packages/rust-apps.scm | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm index cd3b0fb9c0..ab84065361 100644 --- a/gnu/packages/rust-apps.scm +++ b/gnu/packages/rust-apps.scm @@ -1083,6 +1083,41 @@ show number of files, total lines within those files and code, comments, and blanks grouped by language.") (license (list license:expat license:asl2.0)))) +(define-public vivid + (package + (name "vivid") + (version "0.7.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "vivid" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "01fds6dm19bqgqydaa6n051v9l4wh9rb5d6sr9akwp2cc0fs43b7")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-ansi-colours" ,rust-ansi-colours-1) + ("rust-clap" ,rust-clap-2) + ("rust-dirs" ,rust-dirs-3) + ("rust-lazy-static" ,rust-lazy-static-1) + ("rust-rust-embed" ,rust-rust-embed-5) + ("rust-yaml-rust" ,rust-yaml-rust-0.4)))) + (home-page "https://github.com/sharkdp/vivid") + (synopsis "LS_COLORS environment variable manager") + (description + "vivid is a generator for the @code{LS_COLORS} environment variable that +controls the colorized output of ls, tree, fd, bfs, dust and many other tools. + +It uses a YAML configuration format for the filetype-database and the color +themes. In contrast to @command{dircolors}, the database and the themes are +organized in different files. This allows users to choose and customize color +themes independent from the collection of file extensions. Instead of using +cryptic ANSI escape codes, colors can be specified in the RRGGBB format and +will be translated to either truecolor (24-bit) ANSI codes or 8-bit codes for +older terminal emulators.") + (license (list license:expat license:asl2.0)))) + (define-public watchexec (package (name "watchexec") From 649ab3fe2de850ed1c1e35322d59eaeef8f1ac63 Mon Sep 17 00:00:00 2001 From: Andrew Tropin Date: Sat, 11 Dec 2021 16:07:36 +0100 Subject: [PATCH 25/81] gnu: tdlib: Update to 1.7.10. * gnu/packages/messaging.scm (tdlib): Update to 1.7.10. Signed-off-by: Nicolas Goaziou --- gnu/packages/messaging.scm | 79 +++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 39 deletions(-) diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index 86a61cf41e..0ac5ac4c01 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -2655,48 +2655,49 @@ replacement.") (license license:gpl2+))) (define-public tdlib - (package - (name "tdlib") - (version "1.7.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/tdlib/td") - (commit (string-append "v" version)))) - (sha256 - (base32 - "0dfir57ljcn98mkg061c5642qb93wh2lm1n4nngpl3na9vvfk75i")) - (file-name (git-file-name name version)))) - (build-system cmake-build-system) - (arguments - `(#:tests? #t - #:configure-flags - (list "-DCMAKE_BUILD_TYPE=Release" - "-DTD_ENABLE_LTO=OFF") ; FIXME: Get LTO to work. - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'remove-failing-tests - (lambda _ - (substitute* "test/CMakeLists.txt" - ;; The test cases are compiled into a distinct binary - ;; which uses mtproto.cpp to attempt to connect to - ;; a remote server. Removing this file from the sources - ;; list disables those specific test cases. - (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/mtproto.cpp") "")) - #t))))) - (native-inputs - `(("gperf" ,gperf) - ("openssl" ,openssl) - ("zlib" ,zlib) - ("php" ,php) - ("doxygen" ,doxygen))) - (synopsis "Cross-platform library for building Telegram clients") - (description "Tdlib is a cross-platform library for creating custom + (let ((commit "34ba9b21f365b8d3bdc36808c2d665ca5cd128f6")) + (package + (name "tdlib") + (version "1.7.10") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tdlib/td") + (commit commit))) + (sha256 + (base32 "06fbdh1jypz0p1rf6xbpias4kx7xplq9xjd9vz177vwj9icq3wki")) + (file-name (git-file-name name version)))) + (build-system cmake-build-system) + (arguments + `(#:tests? #t + #:configure-flags + (list "-DCMAKE_BUILD_TYPE=Release" + "-DTD_ENABLE_LTO=OFF") ; FIXME: Get LTO to work. + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'remove-failing-tests + (lambda _ + (substitute* "test/CMakeLists.txt" + ;; The test cases are compiled into a distinct binary + ;; which uses mtproto.cpp to attempt to connect to + ;; a remote server. Removing this file from the sources + ;; list disables those specific test cases. + (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}/mtproto.cpp") "")) + #t))))) + (native-inputs + `(("gperf" ,gperf) + ("openssl" ,openssl) + ("zlib" ,zlib) + ("php" ,php) + ("doxygen" ,doxygen))) + (synopsis "Cross-platform library for building Telegram clients") + (description "Tdlib is a cross-platform library for creating custom Telegram clients following the official Telegram API. It can be easily used from almost any programming language with a C-FFI and features first-class support for high performance Telegram Bot creation.") - (home-page "https://core.telegram.org/tdlib") - (license license:boost1.0))) + (home-page "https://core.telegram.org/tdlib") + (license license:boost1.0)))) (define-public purple-mm-sms (package From 2e28b450d5571ba25a45ffe131266695361aa189 Mon Sep 17 00:00:00 2001 From: Andrew Tropin Date: Sat, 11 Dec 2021 16:08:04 +0100 Subject: [PATCH 26/81] gnu: emacs-telega: Update to 0.7.15-1.b4a5e20. * gnu/packages/emacs-xyz.scm (emacs-telega-server): Update to 0.7.15-1.b4a5e20. * gnu/packages/patches/emacs-telega-path-placeholder.patch: Match patch with newer source code. * gnu/packages/patches/emacs-telega-test-env.patch: Match patch with newer source code. Signed-off-by: Nicolas Goaziou --- gnu/packages/emacs-xyz.scm | 100 +++++++++--------- .../emacs-telega-path-placeholder.patch | 49 ++++----- .../patches/emacs-telega-test-env.patch | 30 ++++-- 3 files changed, 93 insertions(+), 86 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 5d2d6c158d..db2110226d 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -27164,55 +27164,57 @@ other @code{helm-type-file} sources such as @code{helm-locate}.") (license license:gpl3+))) (define-public emacs-telega-server - (package - (name "emacs-telega-server") - (version "0.7.031") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/zevlg/telega.el") - (commit (string-append "v" version)))) - (sha256 - (base32 "05j82796s4k3yr0igl6hir3p8qj0cw66vvhbpbcy28d6q9v9vjjz")) - (file-name (git-file-name "emacs-telega" version)) - (patches - (search-patches "emacs-telega-path-placeholder.patch" - "emacs-telega-test-env.patch")))) - (build-system gnu-build-system) - (arguments - `(#:make-flags - (list (string-append "CC=" ,(cc-for-target)) - (string-append "INSTALL_PREFIX=" - (assoc-ref %outputs "out") "/bin")) - #:phases - (modify-phases %standard-phases - (add-before 'configure 'enter-subdirectory - (lambda _ (chdir "server") #t)) - (replace 'configure - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (substitute* "run_tests.py" - (("^(TELEGA_SERVER = ).*$" _all prefix) - (string-append prefix - "\"" out "/bin/telega-server\"\n")))))) - (delete 'check) - (add-after 'install 'check - (assoc-ref %standard-phases 'check)) - (add-before 'install-license-files 'leave-subdirectory - (lambda _ (chdir "..") #t))) - #:test-target "test")) - (inputs - `(("tdlib" ,tdlib) - ("libappindicator" ,libappindicator))) - (native-inputs - `(("python" ,python) - ("pkg-config" ,pkg-config))) - (home-page "https://zevlg.github.io/telega.el/") - (synopsis "Server process of Telega") - (description "Telega-server is helper program to interact with Telegram + (let ((commit "b4a5e206bd259f3d7f7633a725b2990704d6a1e8") + (revision "1")) + (package + (name "emacs-telega-server") + (version (git-version "0.7.15" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/zevlg/telega.el") + (commit commit))) + (sha256 + (base32 "0gr4nmpk175hxmj357bpzaqywbjc6dmmvfxnyzkh884vyzbwdxlc")) + (file-name (git-file-name "emacs-telega" version)) + (patches + (search-patches "emacs-telega-path-placeholder.patch" + "emacs-telega-test-env.patch")))) + (build-system gnu-build-system) + (arguments + `(#:make-flags + (list (string-append "CC=" ,(cc-for-target)) + (string-append "INSTALL_PREFIX=" + (assoc-ref %outputs "out") "/bin")) + #:phases + (modify-phases %standard-phases + (add-before 'configure 'enter-subdirectory + (lambda _ (chdir "server"))) + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "run_tests.py" + (("^(TELEGA_SERVER = ).*$" _all prefix) + (string-append prefix + "\"" out "/bin/telega-server\"\n")))))) + (delete 'check) + (add-after 'install 'check + (assoc-ref %standard-phases 'check)) + (add-before 'install-license-files 'leave-subdirectory + (lambda _ (chdir "..")))) + #:test-target "test")) + (inputs + `(("tdlib" ,tdlib) + ("libappindicator" ,libappindicator))) + (native-inputs + `(("python" ,python) + ("pkg-config" ,pkg-config))) + (home-page "https://zevlg.github.io/telega.el/") + (synopsis "Server process of Telega") + (description "Telega-server is helper program to interact with Telegram service, and connect it with Emacs via inter-process communication.") - (license license:gpl3+))) + (license license:gpl3+)))) (define-public emacs-telega (package @@ -27246,7 +27248,7 @@ service, and connect it with Emacs via inter-process communication.") "\"" ffmpeg-bin "\")")))))) (add-after 'unpack 'configure (lambda* (#:key inputs outputs #:allow-other-keys) - (substitute* "telega-server.el" + (substitute* "telega-customize.el" (("@TELEGA_SERVER_BIN@") (string-append (assoc-ref inputs "emacs-telega-server") "/bin/telega-server"))) diff --git a/gnu/packages/patches/emacs-telega-path-placeholder.patch b/gnu/packages/patches/emacs-telega-path-placeholder.patch index c20be36712..5829edd22a 100644 --- a/gnu/packages/patches/emacs-telega-path-placeholder.patch +++ b/gnu/packages/patches/emacs-telega-path-placeholder.patch @@ -1,36 +1,31 @@ -From 865b8c553722a971c68742c2e849e41eb0e2360c Mon Sep 17 00:00:00 2001 -From: Zhu Zihao -Date: Thu, 24 Jun 2021 23:43:50 +0800 -Subject: [PATCH] Replace code that search path with placeholder for - configuration. +From bf95de21faa623e48bca00d6a2c9b33ab2c5d812 Mon Sep 17 00:00:00 2001 +From: Andrew Tropin +Date: Wed, 8 Dec 2021 11:01:31 +0300 +Subject: [PATCH] Use absolute path for telega-server-command. --- - telega-server.el | 6 +----- - telega-util.el | 2 +- - 2 files changed, 2 insertions(+), 6 deletions(-) + telega-customize.el | 2 +- + telega-util.el | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) -diff --git a/telega-server.el b/telega-server.el -index 999125d..0fa0817 100644 ---- a/telega-server.el -+++ b/telega-server.el -@@ -142,11 +142,7 @@ Otherwise query user about building flags." - (defun telega-server--find-bin () - "Find telega-server executable. - Raise error if not found." -- (let ((exec-path (cons telega-directory exec-path))) -- (or (executable-find "telega-server") -- (progn (telega-server-build) -- (executable-find "telega-server")) -- (error "`telega-server' not found in exec-path")))) -+ "@TELEGA_SERVER_BIN@") +diff --git a/telega-customize.el b/telega-customize.el +index 0af343f..cc2938c 100644 +--- a/telega-customize.el ++++ b/telega-customize.el +@@ -591,7 +591,7 @@ In range [1..3]. Use 1." + :prefix "telega-server-" + :group 'telega) - (defun telega-server-version () - "Return telega-server version." +-(defcustom telega-server-command "telega-server" ++(defcustom telega-server-command "@TELEGA_SERVER_BIN@" + "Command to run as telega server. + It should be absolute path or binary file searchable in `exec-path'." + :type 'string diff --git a/telega-util.el b/telega-util.el -index 73a46b1..f53e20a 100644 +index 6340c27..01e3cb7 100644 --- a/telega-util.el +++ b/telega-util.el -@@ -464,7 +464,7 @@ N can't be 0." +@@ -587,7 +587,7 @@ N can't be 0." (defun telega-etc-file (filename) "Return absolute path to FILENAME from etc/ directory in telega." @@ -40,5 +35,5 @@ index 73a46b1..f53e20a 100644 (defun telega-link-props (link-type link-to &optional face) "Generate props for link button openable with `telega-link--button-action'." -- -2.32.0 +2.34.0 diff --git a/gnu/packages/patches/emacs-telega-test-env.patch b/gnu/packages/patches/emacs-telega-test-env.patch index 75fe2e12fc..c6b02be6ff 100644 --- a/gnu/packages/patches/emacs-telega-test-env.patch +++ b/gnu/packages/patches/emacs-telega-test-env.patch @@ -1,14 +1,24 @@ -Test Emacs environment on startup. +From 237ea2471bb6521390bbac174ac2a8a5e9683e4d Mon Sep 17 00:00:00 2001 +From: Andrew Tropin +Date: Tue, 7 Dec 2021 16:20:38 +0300 +Subject: [PATCH] Test Emacs environment on startup. -Patch by Diego N. Barbato +--- + telega.el | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) ---- a/telega.el 2020-02-07 17:07:18.549970090 +0100 -+++ b/telega.el 2020-02-07 17:10:08.383499765 +0100 -@@ -82,6 +82,7 @@ - "Start telegramming. - If prefix ARG is given, then will not pop to telega root buffer." +diff --git a/telega.el b/telega.el +index d6b28b5..40854ec 100644 +--- a/telega.el ++++ b/telega.el +@@ -181,7 +181,7 @@ can't write to `telega-server-logfile'" logfile-dir))) + Pop to root buffer. + If `\\[universal-argument]' is specified, then do not pop to root buffer." (interactive "P") +- + (telega-test-env t) - (telega--create-hier) - - (unless (telega-server-live-p) + ;; For multiple accounts setup possibly select (if there is no + ;; default account declared) an account to use + (if (and telega-accounts (not (telega-account-current))) +-- +2.34.0 From 8c6508b9287422c81e360e64066532b0def8963d Mon Sep 17 00:00:00 2001 From: Jonathan Brielmaier Date: Sat, 11 Dec 2021 17:26:53 +0100 Subject: [PATCH 27/81] gnu: icedove: Update to 91.4.0 [fixes CVE-2021-43528]. * gnu/packages/gnuzilla.scm (icedove): Update to 91.4.0. --- gnu/packages/gnuzilla.scm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index bc4ef2ce45..6d9f8f44ac 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -1321,11 +1321,11 @@ standards of the IceCat project.") (cpe-version . ,(first (string-split version #\-))))))) ;; Update this together with icecat! -(define %icedove-build-id "20211119000000") ;must be of the form YYYYMMDDhhmmss +(define %icedove-build-id "20211207000000") ;must be of the form YYYYMMDDhhmmss (define-public icedove (package (name "icedove") - (version "91.3.2") + (version "91.4.0") (source icecat-source) (properties `((cpe-name . "thunderbird_esr"))) @@ -1607,7 +1607,7 @@ standards of the IceCat project.") ;; in the Thunderbird release tarball. We don't use the release ;; tarball because it duplicates the Icecat sources and only adds the ;; "comm" directory, which is provided by this repository. - ,(let ((changeset "c35def313c0c2bd0341e3e058f862f02390269c4")) + ,(let ((changeset "ab6dfcf3a37bf53aac1a9d632d45ee51047050bb")) (origin (method hg-fetch) (uri (hg-reference @@ -1616,7 +1616,7 @@ standards of the IceCat project.") (file-name (string-append "thunderbird-" version "-checkout")) (sha256 (base32 - "0rp4i353dskx065a6hskvfpf0l2qywqnivks9qc6a85h4yah4rvq"))))) + "00zj1k3c8p66ylf9n7xp42y6kiv3h6hf8ba7bk6f8wj3hh0r2hrd"))))) ("cargo" ,rust-1.51 "cargo") ("clang" ,clang) ("llvm" ,llvm) From 5259513d5e5a918bb44b87ab7a562621cc78c945 Mon Sep 17 00:00:00 2001 From: Julien Lepiller Date: Sat, 11 Dec 2021 02:39:30 +0100 Subject: [PATCH 28/81] gnu: java-jansi: Update to 2.4.0. * gnu/packages/java.scm (java-jansi): Update to 2.4.0. (java-jansi-1): New variable. [source]: Use git-fetch instead of url-fetch. (java-jline-2)[inputs]: Use java-jansi-1. * gnu/packages/groovy.scm (java-groovy-bootstrap)[inputs]: Use java-jansi-1. --- gnu/packages/groovy.scm | 2 +- gnu/packages/java.scm | 83 +++++++++++++++++++++++++++++++++++------ 2 files changed, 72 insertions(+), 13 deletions(-) diff --git a/gnu/packages/groovy.scm b/gnu/packages/groovy.scm index c44a17b59e..382dfe7faf 100644 --- a/gnu/packages/groovy.scm +++ b/gnu/packages/groovy.scm @@ -102,7 +102,7 @@ ("java-asm-util" ,java-asm-util-8) ("java-classpathx-servletapi" ,java-classpathx-servletapi) ("java-commons-cli" ,java-commons-cli) - ("java-jansi" ,java-jansi) + ("java-jansi" ,java-jansi-1) ("java-jline-2" ,java-jline-2) ("java-picocli" ,java-picocli) ("java-xstream" ,java-xstream))) diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index 36424ee8b1..641a1dca8a 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -12134,15 +12134,79 @@ console output.") (define-public java-jansi (package (name "java-jansi") - (version "1.16") + (version "2.4.0") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/fusesource/jansi/archive/" - "jansi-project-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/fusesource/jansi") + (commit (string-append "jansi-" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "11kh3144i3fzp21dpy8zg52mjmsr214k7km9p8ly0rqk2px0qq2z")))) + "1s6fva06990798b5fyxqzr30zwyj1byq5wrm54j2larcydaryggf")) + (modules '((guix build utils))) + (snippet + ;; contains pre-compiled libraries + '(delete-file-recursively + "src/main/resources/org/fusesource/jansi/internal")))) (build-system ant-build-system) + (arguments + `(#:jar-name "jansi.jar" + #:source-dir "src/main/java" + #:test-dir "src/test" + #:tests? #f; require junit 3 + #:phases + (modify-phases %standard-phases + (add-before 'build 'build-native + (lambda* (#:key inputs #:allow-other-keys) + (with-directory-excursion "src/main/native" + (for-each + (lambda (cfile) + (let ((cfile (basename cfile)) + (ofile (string-append (basename cfile ".c") ".o"))) + (invoke ,(cc-for-target) "-c" cfile "-o" ofile + (string-append "-I" (assoc-ref inputs "jdk") + "/include/linux") + "-fPIC" "-O2"))) + (find-files "." "\\.c$")) + (apply invoke ,(cc-for-target) "-o" "libjansi.so" "-shared" + (find-files "." "\\.o$"))))) + (add-before 'build 'install-native + (lambda _ + (let ((dir (string-append "build/classes/org/fusesource/" + "jansi/internal/native/" + ,(match (or (%current-target-system) (%current-system)) + ("i686-linux" "Linux/x86") + ("x86_64-linux" "Linux/x86_64") + ("armhf-linux" "Linux/armv7") + ("aarch64-linux" "Linux/arm64") + ("mips64el-linux" "Linux/mips64") + (_ "unknown-kernel"))))) + (install-file "src/main/native/libjansi.so" dir)))) + (add-before 'build 'copy-resources + (lambda _ + (copy-recursively "src/main/resources" "build/classes"))) + (replace 'install + (install-from-pom "pom.xml"))))) + (home-page "https://fusesource.github.io/jansi/") + (synopsis "Portable ANSI escape sequences") + (description "Jansi is a Java library that allows you to use ANSI escape +sequences to format your console output which works on every platform.") + (license license:asl2.0))) + +(define-public java-jansi-1 + (package + (inherit java-jansi) + (version "1.16") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/fusesource/jansi") + (commit (string-append "jansi-project-" version)))) + (file-name (git-file-name "jansi" version)) + (sha256 + (base32 + "0ikk0x352gh30b42qn1jd89xwsjj0mavrc5kms7fss15bd8vsayx")))) (arguments `(#:jar-name "jansi.jar" #:source-dir "jansi/src/main/java" @@ -12173,12 +12237,7 @@ console output.") `(("java-jansi-native" ,java-jansi-native))) (native-inputs `(("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core))) - (home-page "https://fusesource.github.io/jansi/") - (synopsis "Portable ANSI escape sequences") - (description "Jansi is a Java library that allows you to use ANSI escape -sequences to format your console output which works on every platform.") - (license license:asl2.0))) + ("java-hamcrest-core" ,java-hamcrest-core))))) (define-public java-jboss-el-api-spec (package @@ -12541,7 +12600,7 @@ features that bring it on par with the Z shell line editor.") `(#:jdk ,icedtea-8 ,@(package-arguments java-jline))) (inputs - `(("java-jansi" ,java-jansi) + `(("java-jansi" ,java-jansi-1) ("java-jansi-native" ,java-jansi-native))) (native-inputs `(("java-powermock-modules-junit4" ,java-powermock-modules-junit4) From b049f5bbead0c47ad952203b4160cc666e08e2e3 Mon Sep 17 00:00:00 2001 From: Julien Lepiller Date: Sat, 11 Dec 2021 02:44:49 +0100 Subject: [PATCH 29/81] gnu: Add java-jctools-core-1. * gnu/packages/java.scm (java-jctools-core-1): New variable. --- gnu/packages/java.scm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index 641a1dca8a..1ff3a68218 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -11350,6 +11350,33 @@ for high performance inter-thread communication that avoids the need for message queues or resource locking.") (license license:asl2.0))) +(define-public java-jctools-core-1 + (package + (name "java-jctools-core") + (version "1.2.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JCTools/JCTools") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "105my29nwd4djvdllmq8s3jdzbyplbkxzwmddxiiilb4yqr1pghb")))) + (build-system ant-build-system) + (arguments + `(#:jar-name "java-jctools-core.jar" + #:source-dir "jctools-core/src/main/java" + #:test-dir "jctools-core/src/test")) + (native-inputs + `(("java-junit" ,java-junit) + ("java-hamcrest-all" ,java-hamcrest-all))) + (home-page "https://github.com/JCTools/JCTools") + (synopsis "Concurrency tools for Java") + (description "This library implements concurrent data structures that are +not natively available in Java.") + (license license:asl2.0))) + (define-public java-commons-bcel (package (name "java-commons-bcel") From 684e22dce21a7aa453a11d424957b0025763f6e6 Mon Sep 17 00:00:00 2001 From: Julien Lepiller Date: Sat, 11 Dec 2021 02:46:14 +0100 Subject: [PATCH 30/81] gnu: Add java-conversant-disruptor. * gnu/packages/java.scm (java-conversant-disruptor): New variable. --- gnu/packages/java.scm | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index 1ff3a68218..e44d7ee885 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -11350,6 +11350,41 @@ for high performance inter-thread communication that avoids the need for message queues or resource locking.") (license license:asl2.0))) +(define-public java-conversant-disruptor + (package + (name "java-conversant-disruptor") + (version "1.2.19") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/conversant/disruptor") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0gx1dm7sfg7pa05cs4qby10gfcplai5b5lf1f7ik1a76dh3vhl0g")))) + (build-system ant-build-system) + (arguments + `(#:jar-name "java-conversant-disruptor.jar" + #:source-dir "src/main/java" + #:phases + (modify-phases %standard-phases + (add-before 'build 'copy-resources + (lambda _ + (copy-recursively "src/main/resources" "build/classes"))) + (add-before 'build 'remove-module + (lambda _ + (delete-file "src/main/java/module-info.java")))))) + (native-inputs + `(("java-junit" ,java-junit))) + (home-page "https://github.com/conversant/disruptor") + (synopsis "High performance intra-thread communication") + (description "Conversant Disruptor is the highest performing intra-thread +transfer mechanism available in Java. Conversant Disruptor is an implementation +of this type of ring buffer that has almost no overhead and that exploits a +particularly simple design.") + (license license:asl2.0))) + (define-public java-jctools-core-1 (package (name "java-jctools-core") From 514deaa8d469d37a4ab7f9bae1a156f003fc6152 Mon Sep 17 00:00:00 2001 From: Julien Lepiller Date: Sat, 11 Dec 2021 03:02:15 +0100 Subject: [PATCH 31/81] gnu. java-lmax-disruptor: Update to 3.4.4. * gnu/packages/java.scm (java-lmax-disruptor): Update to 3.4.4. [source]: Use git-fetch instead of url-fetch. --- gnu/packages/java.scm | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index e44d7ee885..f83af9ce4f 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -11318,15 +11318,16 @@ programming language.") (define-public java-lmax-disruptor (package (name "java-lmax-disruptor") - (version "3.3.7") + (version "3.4.4") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/LMAX-Exchange/disruptor/" - "archive/" version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/LMAX-Exchange/disruptor") + (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "17da2gwj5abnlsfgn2xqjk5lgzbg4vkb0hdv2dvc8r2fx4bi7w3g")))) + "02c5kp3n8a73dq9ay7ar53s1k3x61z9yzc5ikqb03m6snr1wpfqn")))) (build-system ant-build-system) (arguments `(#:jar-name "java-lmax-disruptor.jar" From 8c989e92b06b9554226e2c42302ccf59ed1f48ae Mon Sep 17 00:00:00 2001 From: Julien Lepiller Date: Sat, 11 Dec 2021 03:05:43 +0100 Subject: [PATCH 32/81] gnu: java-log4j-api: Update to 2.15.0. Includes fixes for CVE-2017-5645, CVE-2020-9488 and CVE-2021-44228. * gnu/packages/java.scm (java-log4j-api): Update to 2.15.0. (java-log4j-core, java-log4j-1.2-api)[inputs]: Adjust accordingly. --- gnu/packages/java.scm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index f83af9ce4f..792436aafe 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -7840,14 +7840,14 @@ JavaMail API.") (define-public java-log4j-api (package (name "java-log4j-api") - (version "2.4.1") + (version "2.15.0") (source (origin (method url-fetch) (uri (string-append "mirror://apache/logging/log4j/" version "/apache-log4j-" version "-src.tar.gz")) (sha256 (base32 - "0j5p9gik0jysh37nlrckqbky12isy95cpwg2gv5fas1rcdqbraxd")))) + "0h4ndw096h9cql0kyi1zd0ymp8hqxc1jdgdxkn0kxf8vd9b4dx14")))) (build-system ant-build-system) (arguments `(#:tests? #f ; tests require unpackaged software @@ -7886,7 +7886,11 @@ Java.") ("java-log4j-api" ,java-log4j-api) ("java-mail" ,java-mail) ("java-jboss-jms-api-spec" ,java-jboss-jms-api-spec) + ("java-conversant-disruptor" ,java-conversant-disruptor) ("java-lmax-disruptor" ,java-lmax-disruptor) + ("java-jctools-core" ,java-jctools-core-1) + ("java-stax2-api" ,java-stax2-api) + ("java-jansi" ,java-jansi) ("java-kafka" ,java-kafka-clients) ("java-datanucleus-javax-persistence" ,java-datanucleus-javax-persistence) ("java-fasterxml-jackson-annotations" ,java-fasterxml-jackson-annotations) @@ -7934,6 +7938,7 @@ logging framework for Java."))) (inputs `(("log4j-api" ,java-log4j-api) ("log4j-core" ,java-log4j-core) + ("java-jboss-jms-api-spec" ,java-jboss-jms-api-spec) ("osgi-core" ,java-osgi-core) ("eclipse-osgi" ,java-eclipse-osgi) ("java-lmax-disruptor" ,java-lmax-disruptor))))) From d5cfca23e30a9166d49faf0b48cca3ee27699f7a Mon Sep 17 00:00:00 2001 From: Julien Lepiller Date: Sat, 11 Dec 2021 22:31:56 +0100 Subject: [PATCH 33/81] gnu: java-log4j-api: Add cpe-name. * gnu/packages/java.scm (java-log4j-api)[properties]: Add cpe-name. --- gnu/packages/java.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index 792436aafe..fdd849b8d6 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -7869,6 +7869,7 @@ JavaMail API.") `(("java-osgi-core" ,java-osgi-core) ("java-hamcrest-core" ,java-hamcrest-core) ("java-junit" ,java-junit))) + (properties '((cpe-name . "log4j"))) (home-page "https://logging.apache.org/log4j/2.x/") (synopsis "API module of the Log4j logging framework for Java") (description From c6903e156fff67ea43bf11443562a8e4f780a54d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sat, 11 Dec 2021 16:03:57 +0100 Subject: [PATCH 34/81] challenge: Use SRFI-71 instead of SRFI-11. * guix/scripts/challenge.scm (port-sha256*, call-with-nar): Use SRFI-71. --- guix/scripts/challenge.scm | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/guix/scripts/challenge.scm b/guix/scripts/challenge.scm index 69c2781abb..57ffe88235 100644 --- a/guix/scripts/challenge.scm +++ b/guix/scripts/challenge.scm @@ -35,10 +35,10 @@ #:use-module (gcrypt hash) #:use-module (srfi srfi-1) #:use-module (srfi srfi-9) - #:use-module (srfi srfi-11) #:use-module (srfi srfi-26) #:use-module (srfi srfi-34) #:use-module (srfi srfi-37) + #:use-module (srfi srfi-71) #:use-module (ice-9 match) #:use-module (ice-9 vlist) #:use-module (ice-9 format) @@ -196,7 +196,7 @@ taken since we do not import the archives." (define (port-sha256* port size) ;; Like 'port-sha256', but limited to SIZE bytes. - (let-values (((out get) (open-sha256-port))) + (let ((out get (open-sha256-port))) (dump-port* port out size) (close-port out) (get))) @@ -251,10 +251,8 @@ taken since we do not import the archives." (define (call-with-nar narinfo proc) "Call PROC with an input port from which it can read the nar pointed to by NARINFO." - (let*-values (((uri compression size) - (narinfo-best-uri narinfo)) - ((port actual-size) - (http-fetch uri))) + (let* ((uri compression size (narinfo-best-uri narinfo)) + (port actual-size (http-fetch uri))) (define reporter (progress-reporter/file (narinfo-path narinfo) (and size From 4dca1bae2767b049532e7434151686fdb7fab256 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sat, 11 Dec 2021 16:10:08 +0100 Subject: [PATCH 35/81] challenge: Store item contents are returned in canonical order. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This allows the 'delete-duplicates' call in 'differing-files' to have the intended effect. Before that, a "guix challenge" invocation with three builds of a store item, two of which are identical, would lead 'differing-files' to not print anything, as in this example: $ ./pre-inst-env guix challenge python-numpy /gnu/store/…-python-numpy-1.17.3 contents differ: local hash: 07var0wn8fywxchldz5pjqpnlavrlbc8s81aqwsqyi0i7qlh6ka7 https://ci.guix.gnu.org/nar/lzip/…-python-numpy-1.17.3: 07var0wn8fywxchldz5pjqpnlavrlbc8s81aqwsqyi0i7qlh6ka7 https://bordeaux.guix.gnu.org/nar/lzip/…-python-numpy-1.17.3: 0cbl3q19bshb6ddz8xkcrjzkcmillsqii4z852ybzixyp7rg40qa 1 store items were analyzed: - 0 (0.0%) were identical - 1 (100.0%) differed - 0 (0.0%) were inconclusive With this change, 'differing-files' prints additional info as intended: differing file: /lib/python3.8/site-packages/numpy/distutils/fcompiler/__pycache__/vast.cpython-38.pyc * guix/scripts/challenge.scm (archive-contents): Add tail call to 'reverse'. (store-item-contents): Rewrite to use 'scandir' and recursive calls instead of 'file-system-fold'. --- guix/scripts/challenge.scm | 85 ++++++++++++++++++++------------------ 1 file changed, 45 insertions(+), 40 deletions(-) diff --git a/guix/scripts/challenge.scm b/guix/scripts/challenge.scm index 57ffe88235..c29d5105ae 100644 --- a/guix/scripts/challenge.scm +++ b/guix/scripts/challenge.scm @@ -202,51 +202,56 @@ taken since we do not import the archives." (get))) (define (archive-contents port) - "Return a list representing the files contained in the nar read from PORT." - (fold-archive (lambda (file type contents result) - (match type - ((or 'regular 'executable) - (match contents - ((port . size) - (cons `(,file ,type ,(port-sha256* port size)) - result)))) - ('directory result) - ('directory-complete result) - ('symlink - (cons `(,file ,type ,contents) result)))) - '() - port - "")) + "Return a list representing the files contained in the nar read from PORT. +The list is sorted in canonical order--i.e., the order in which entries appear +in the nar." + (reverse + (fold-archive (lambda (file type contents result) + (match type + ((or 'regular 'executable) + (match contents + ((port . size) + (cons `(,file ,type ,(port-sha256* port size)) + result)))) + ('directory result) + ('directory-complete result) + ('symlink + (cons `(,file ,type ,contents) result)))) + '() + port + ""))) (define (store-item-contents item) "Return a list of files and contents for ITEM in the same format as 'archive-contents'." - (file-system-fold (const #t) ;enter? - (lambda (file stat result) ;leaf - (define short - (string-drop file (string-length item))) + (let loop ((file item)) + (define stat + (lstat file)) - (match (stat:type stat) - ('regular - (let ((size (stat:size stat)) - (type (if (zero? (logand (stat:mode stat) - #o100)) - 'regular - 'executable))) - (cons `(,short ,type - ,(call-with-input-file file - (cut port-sha256* <> size))) - result))) - ('symlink - (cons `(,short symlink ,(readlink file)) - result)))) - (lambda (directory stat result) result) ;down - (lambda (directory stat result) result) ;up - (lambda (file stat result) result) ;skip - (lambda (file stat errno result) result) ;error - '() - item - lstat)) + (define short + (string-drop file (string-length item))) + + (match (stat:type stat) + ('regular + (let ((size (stat:size stat)) + (type (if (zero? (logand (stat:mode stat) + #o100)) + 'regular + 'executable))) + `((,short ,type + ,(call-with-input-file file + (cut port-sha256* <> size)))))) + ('symlink + `((,short symlink ,(readlink file)))) + ('directory + (append-map (match-lambda + ((or "." "..") + '()) + (entry + (loop (string-append file "/" entry)))) + ;; Traverse entries in canonical order, the same as the + ;; order of entries in nars. + (scandir file (const #t) string Date: Sat, 11 Dec 2021 23:22:47 +0100 Subject: [PATCH 36/81] substitutes: Build correct narinfo URLs for cache URLs without trailing slash. Fixes . Reported by Z572 <873216071@qq.com> and Peng Mei Yu . Previously, passing '--substitute-urls=https://mirror.sjtu.edu.cn/guix', without a trailing slash, would fail due to incorrectly constructed narinfo URLs. Users would have to explicitly add a trailing slash. * guix/substitutes.scm (narinfo-request): Ensure BASE has a trailing slash. --- guix/substitutes.scm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/guix/substitutes.scm b/guix/substitutes.scm index a5c554acff..9014cf61ec 100644 --- a/guix/substitutes.scm +++ b/guix/substitutes.scm @@ -156,7 +156,11 @@ indicates that PATH is unavailable at CACHE-URL." (define (narinfo-request cache-url path) "Return an HTTP request for the narinfo of PATH at CACHE-URL." - (let* ((base (string->uri cache-url)) + ;; Ensure BASE has a trailing slash so that REF is correct regardless of + ;; whether the user-provided CACHE-URL has a trailing slash. + (let* ((base (string->uri (if (string-suffix? "/" cache-url) + cache-url + (string-append cache-url "/")))) (ref (build-relative-ref #:path (string-append (store-path-hash-part path) ".narinfo"))) (url (resolve-uri-reference ref base)) From cba0395c99005f94e4ccd6c058362af7443dab12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sat, 11 Dec 2021 23:26:06 +0100 Subject: [PATCH 37/81] narinfo: Do not repeat slash when building nar URLs. * guix/narinfo.scm (narinfo-maker): When one of URLS is relative, do not repeat trailing slash if it's already present in CACHE-URL. --- guix/narinfo.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/guix/narinfo.scm b/guix/narinfo.scm index 72e0f75fda..4fc550aa6c 100644 --- a/guix/narinfo.scm +++ b/guix/narinfo.scm @@ -144,7 +144,9 @@ must contain the original contents of a narinfo file." (map (lambda (url) (or (string->uri url) (string->uri - (string-append cache-url "/" url)))) + (if (string-suffix? "/" cache-url) + (string-append cache-url url) + (string-append cache-url "/" url))))) urls) compressions (match file-sizes From ea18b4c5298c8cdcea22472f8cf8ce8fb3180a78 Mon Sep 17 00:00:00 2001 From: Foo Chuan Wei Date: Sat, 6 Nov 2021 07:02:40 +0000 Subject: [PATCH 38/81] gnu: Add ascii. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/shellutils.scm (ascii): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/shellutils.scm | 38 +++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm index 70443f5019..61cc124815 100644 --- a/gnu/packages/shellutils.scm +++ b/gnu/packages/shellutils.scm @@ -55,6 +55,44 @@ #:use-module (gnu packages tmux) #:use-module (gnu packages vim)) +(define-public ascii + (package + (name "ascii") + (version "3.18") + (source (origin + (method url-fetch) + (uri (string-append "http://www.catb.org/~esr/ascii/" + "ascii-" version ".tar.gz")) + (sha256 + (base32 + "0b87vy06s8s3a8q70pqavsbk4m4ff034sdml2xxa6qfsykaj513j")))) + (build-system gnu-build-system) + (arguments `(#:make-flags + (list (string-append "CC=" ,(cc-for-target)) + (string-append "PREFIX=" %output)) + #:phases + (modify-phases %standard-phases + (delete 'configure) + (add-before 'install 'create-directories + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (man1 (string-append out "/share/man/man1"))) + (mkdir-p bin) + (mkdir-p man1))))) + #:tests? #f)) + (home-page "http://www.catb.org/~esr/ascii/") + (synopsis "ASCII name and synonym chart") + (description + "The @code{ascii} utility provides easy conversion between various byte +representations and the American Standard Code for Information Interchange +(ASCII) character table. It knows about a wide variety of hex, binary, octal, +Teletype mnemonic, ISO/ECMA code point, slang names, XML entity names, and +other representations. Given any one on the command line, it will try to +display all others. Called with no arguments it displays a handy small ASCII +chart.") + (license license:bsd-2))) + (define-public boxes (package (name "boxes") From 8a1de8943269bc438dee53defaed7ed4422c0330 Mon Sep 17 00:00:00 2001 From: Giacomo Leidi Date: Tue, 26 Oct 2021 21:28:58 +0200 Subject: [PATCH 39/81] gnu: Add python-ipaddress. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/python-xyz.scm (python-ipaddress): New variable; (python2-ipaddress): Use package-with-python2. Signed-off-by: Ludovic Courtès --- gnu/packages/python-xyz.scm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index db2ab8e5f0..701ff31990 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -11419,9 +11419,9 @@ implementations of ASN.1-based codecs and protocols.") (define-public python2-pyasn1-modules (package-with-python2 python-pyasn1-modules)) -(define-public python2-ipaddress +(define-public python-ipaddress (package - (name "python2-ipaddress") + (name "python-ipaddress") (version "1.0.23") (source (origin (method url-fetch) @@ -11430,17 +11430,17 @@ implementations of ASN.1-based codecs and protocols.") (base32 "1qp743h30s04m3cg3yk3fycad930jv17q7dsslj4mfw0jlvf1y5p")))) (build-system python-build-system) - (arguments - `(#:python ,python-2)) (home-page "https://github.com/phihag/ipaddress") (synopsis "IP address manipulation library") (description "This package provides a fast, lightweight IPv4/IPv6 manipulation library in Python. This library is used to create, poke at, and manipulate IPv4 and - IPv6 addresses and networks. This is a port of the Python 3.3 ipaddress - module to older versions of Python.") + IPv6 addresses and networks.") (license license:psfl))) +(define-public python2-ipaddress + (package-with-python2 python-ipaddress)) + (define-public python-asn1tools (package (name "python-asn1tools") From 7e9720eca429e150e199a9f3ccb1f9d95ad76aeb Mon Sep 17 00:00:00 2001 From: Giacomo Leidi Date: Tue, 26 Oct 2021 21:28:59 +0200 Subject: [PATCH 40/81] gnu: python-vcrpy: Update to 4.1.1. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/python-xyz.scm (python-vcrpy): Update to 4.1.1. [arguments]: Replace 'check phase to run unit tests. [native-inputs]: Add required dependencies. Signed-off-by: Ludovic Courtès --- gnu/packages/python-check.scm | 39 ++++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm index ef8629a91b..6127ce3cf4 100644 --- a/gnu/packages/python-check.scm +++ b/gnu/packages/python-check.scm @@ -228,25 +228,44 @@ result documents that can be read by tools such as Jenkins or Bamboo.") (define-public python-vcrpy (package (name "python-vcrpy") - (version "2.0.1") + (version "4.1.1") (source - (origin - (method url-fetch) - (uri (pypi-uri "vcrpy" version)) - (sha256 - (base32 - "0kws7l3hci1dvjv01nxw3805q9v2mwldw58bgl8s90wqism69gjp")))) + (origin + (method url-fetch) + (uri (pypi-uri "vcrpy" version)) + (sha256 + (base32 "16gmzxs3lzbgf1828n0q61vbmwyhpvzdlk37x6gdk8n05zr5n2ap")))) (build-system python-build-system) - (arguments `(#:tests? #f)) ; tests require more packages for python-pytest-httpbin + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? outputs #:allow-other-keys) + (when tests? + (substitute* "tox.ini" + (("AWS_ACCESS_KEY_ID") "PYTHONPATH")) + (setenv "PYTHONPATH" (string-append ".:" (getenv "PYTHONPATH"))) + ;; These tests require network access. + (delete-file "tests/unit/test_stubs.py") + (invoke "pytest" "tests/unit"))))))) (propagated-inputs `(("python-pyyaml" ,python-pyyaml) ("python-six" ,python-six) ("python-wrapt" ,python-wrapt) ("python-yarl" ,python-yarl))) (native-inputs - `(("python-mock" ,python-mock) + `(("python-black" ,python-black) + ("python-coverage" ,python-coverage) + ("python-flake8" ,python-flake8) + ("python-flask" ,python-flask) + ("python-httplib2" ,python-httplib2) + ("python-ipaddress" ,python-ipaddress) + ("python-mock" ,python-mock) ("python-pytest" ,python-pytest) - ("python-pytest-httpbin" ,python-pytest-httpbin))) + ("python-pytest-cov" ,python-pytest-cov) + ("python-pytest-httpbin" ,python-pytest-httpbin) + ("python-tox" ,python-tox) + ("python-urllib3" ,python-urllib3))) (home-page "https://github.com/kevin1024/vcrpy") (synopsis "Automatically mock your HTTP interactions") (description From 589b9d6f29aeb9349311c416004cca3f517f7db2 Mon Sep 17 00:00:00 2001 From: Vinicius Monego Date: Fri, 5 Nov 2021 01:58:29 +0000 Subject: [PATCH 41/81] gnu: python-aws-sam-translator: Update to 1.40.0. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/python-web.scm (python-aws-sam-translator): Update to 1.40.0. [arguments]<#:phases>: Don't return #t. [home-page]: Follow redirect. Signed-off-by: Ludovic Courtès --- gnu/packages/python-web.scm | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index d4a785b2fc..becd1cfdbf 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -399,13 +399,13 @@ WSGI. This package includes libraries for implementing ASGI servers.") (define-public python-aws-sam-translator (package (name "python-aws-sam-translator") - (version "1.38.0") + (version "1.40.0") (source (origin (method url-fetch) (uri (pypi-uri "aws-sam-translator" version)) (sha256 (base32 - "1djwlsjpbh13m4biglimrm9lq7hmla0k29giay7k3cjsrylxvjhf")))) + "1hq5ggbzcq4k3ks439hki493w4sasgaxns6j5x57xsj822acalmf")))) (build-system python-build-system) (arguments `(;; XXX: Tests are not distributed with the PyPI archive, and would @@ -418,13 +418,12 @@ WSGI. This package includes libraries for implementing ASGI servers.") ;; of dependencies, when it works fine with others. (substitute* "requirements/base.txt" (("(.*)(~=[0-9\\.]+)" all package version) - package)) - #t))))) + package))))))) (propagated-inputs `(("python-boto3" ,python-boto3) ("python-jsonschema" ,python-jsonschema) ("python-six" ,python-six))) - (home-page "https://github.com/awslabs/serverless-application-model") + (home-page "https://github.com/aws/serverless-application-model") (synopsis "Transform AWS SAM templates into AWS CloudFormation templates") (description "AWS SAM Translator is a library that transform @dfn{Serverless Application From f3416ebc2e0a10e35f5bab3e7f8f3081bfa75c59 Mon Sep 17 00:00:00 2001 From: Vinicius Monego Date: Fri, 5 Nov 2021 01:58:30 +0000 Subject: [PATCH 42/81] gnu: python-cfn-lint: Update to 0.54.3. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/python-web.scm (python-cfn-lint): Update to 0.54.3. [home-page]: Follow redirect. Signed-off-by: Ludovic Courtès --- gnu/packages/python-web.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index becd1cfdbf..f47ba86409 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -501,8 +501,8 @@ emit information from within their applications to the AWS X-Ray service.") (define-public python-cfn-lint (package (name "python-cfn-lint") - (version "0.54.1") - (home-page "https://github.com/aws-cloudformation/cfn-python-lint") + (version "0.54.3") + (home-page "https://github.com/aws-cloudformation/cfn-lint") (source (origin (method git-fetch) (uri (git-reference @@ -511,7 +511,7 @@ emit information from within their applications to the AWS X-Ray service.") (file-name (git-file-name name version)) (sha256 (base32 - "161mzzlpbi85q43kwzrj39qb32l6wg6xhnbbd4z860yrfbymsn87")))) + "106qf19n2k6sdjkb4006aidibd24qqiw901c1613xgjpnyw4dyl6")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases From dbf5d938c54dbc0cf3271018a0a4aa5b69ec4037 Mon Sep 17 00:00:00 2001 From: Vinicius Monego Date: Fri, 5 Nov 2021 01:58:31 +0000 Subject: [PATCH 43/81] gnu: python-cfn-lint: Honor #:tests? flag. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/python-web.scm (python-cfn-lint)[arguments]: Make some cosmetic changes. Adjust custom 'check phase to honor the #:tests? flag. Signed-off-by: Ludovic Courtès --- gnu/packages/python-web.scm | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index f47ba86409..063b2c5e73 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -514,23 +514,23 @@ emit information from within their applications to the AWS X-Ray service.") "106qf19n2k6sdjkb4006aidibd24qqiw901c1613xgjpnyw4dyl6")))) (build-system python-build-system) (arguments - `(#:phases (modify-phases %standard-phases - (replace 'check - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - ;; Remove test for the documentation update scripts - ;; to avoid a dependency on 'git'. - (delete-file - "test/unit/module/maintenance/test_update_documentation.py") - (delete-file - "test/unit/module/maintenance/test_update_resource_specs.py") - (setenv "PYTHONPATH" - (string-append "./build/lib:" - (getenv "PYTHONPATH"))) - (setenv "PATH" (string-append out "/bin:" - (getenv "PATH"))) - (invoke "python" "-m" "unittest" "discover" "-v" - "-s" "test"))))))) + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (when tests? + (let ((out (assoc-ref outputs "out"))) + ;; Remove test for the documentation update scripts + ;; to avoid a dependency on 'git'. + (delete-file + "test/unit/module/maintenance/test_update_documentation.py") + (delete-file + "test/unit/module/maintenance/test_update_resource_specs.py") + (add-installed-pythonpath inputs outputs) + (setenv "PATH" (string-append out "/bin:" + (getenv "PATH"))) + (invoke "python" "-m" "unittest" "discover" + "-s" "test")))))))) (native-inputs `(("python-pydot" ,python-pydot) ("python-mock" ,python-mock))) From 32135392dd6de8eebcbcf616d9d326ddaa359ab0 Mon Sep 17 00:00:00 2001 From: Vinicius Monego Date: Fri, 5 Nov 2021 01:58:32 +0000 Subject: [PATCH 44/81] gnu: python-s3transfer: Update to 0.5.0. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/python-web.scm (python-s3transfer): Update to 0.5.0. [arguments]<#:phases>: Remove 'patch phase because the issue was fixed upstream. Don't return #t in custom 'check phase. Signed-off-by: Ludovic Courtès --- gnu/packages/python-web.scm | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index 063b2c5e73..8ad43b8aa4 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -3414,32 +3414,22 @@ Betamax that may possibly end up in the main package.") (define-public python-s3transfer (package (name "python-s3transfer") - (version "0.3.3") + (version "0.5.0") (source (origin (method url-fetch) (uri (pypi-uri "s3transfer" version)) (sha256 (base32 - "1nzp5kwmy9669334shcz9ipg89jgpdqhrmbkgdg18r7wmvi3f6lj")))) + "0k6sc956yrrv9b4laa0r79jhxajpyxr21jcd1ka8m1n53lz85vah")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'patch - (lambda _ - ;; There's a small issue with one test with Python 3.8, this - ;; change has been suggested upstream: - ;; https://github.com/boto/s3transfer/pull/164 - (substitute* "tests/unit/test_s3transfer.py" - (("super\\(FailedDownloadParts, self\\)\\.submit\\(function\\)") - "futures.Future()")) - #t)) (replace 'check (lambda _ ;; Some of the 'integration' tests require network access or ;; login credentials. - (invoke "nosetests" "--exclude=integration") - #t))))) + (invoke "nosetests" "--exclude=integration")))))) (native-inputs `(("python-docutils" ,python-docutils) ("python-mock" ,python-mock) From 9660c2f158f296dc162fd08d08c770095a102b2a Mon Sep 17 00:00:00 2001 From: Vinicius Monego Date: Fri, 5 Nov 2021 01:58:33 +0000 Subject: [PATCH 45/81] gnu: python-s3transfer: Honor #:tests? flag. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/python-web.scm (python-s3transfer)[arguments]: Adjust custom 'check phase to honor the #:tests? flag. Signed-off-by: Ludovic Courtès --- gnu/packages/python-web.scm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index 8ad43b8aa4..9e7d4113ab 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -3426,10 +3426,11 @@ Betamax that may possibly end up in the main package.") `(#:phases (modify-phases %standard-phases (replace 'check - (lambda _ - ;; Some of the 'integration' tests require network access or - ;; login credentials. - (invoke "nosetests" "--exclude=integration")))))) + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + ;; Some of the 'integration' tests require network access or + ;; login credentials. + (invoke "nosetests" "--exclude=integration"))))))) (native-inputs `(("python-docutils" ,python-docutils) ("python-mock" ,python-mock) From 365260f4cd2d284d57df739ed41dc8e023059f00 Mon Sep 17 00:00:00 2001 From: Vinicius Monego Date: Fri, 5 Nov 2021 01:58:34 +0000 Subject: [PATCH 46/81] gnu: Update awscli, python-boto3 and python-botocore. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit awscli, botocore and boto3 work together and typically require matching versions. * gnu/packages/python-xyz.scm (python-botocore): Update to 1.22.11. (python-boto3): Update to 1.19.11. [native-inputs]: Add python-pytest. * gnu/packages/python-web.scm (awscli): Update to 1.21.11. Signed-off-by: Ludovic Courtès --- gnu/packages/python-web.scm | 4 ++-- gnu/packages/python-xyz.scm | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index 9e7d4113ab..964a045049 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -2876,14 +2876,14 @@ supports url redirection and retries, and also gzip and deflate decoding.") (package ;; Note: updating awscli typically requires updating botocore as well. (name "awscli") - (version "1.18.203") + (version "1.21.11") (source (origin (method url-fetch) (uri (pypi-uri name version)) (sha256 (base32 - "128zg24961j8nmnq2dxqg6a7zwh3qgv87cmvclsdqwwih9nigxv9")))) + "0fkivwbx4nind5b7l4jhqm5bb9drgqsclcslrg4aggf9rcs4g4s0")))) (build-system python-build-system) (arguments ;; FIXME: The 'pypi' release does not contain tests. diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 701ff31990..6d0150811f 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -13731,14 +13731,14 @@ This software is unmaintained, and new projects should use @code{boto3} instead. ;; are compatible. (package (name "python-botocore") - (version "1.19.22") + (version "1.22.11") (source (origin (method url-fetch) (uri (pypi-uri "botocore" version)) (sha256 (base32 - "0iim86x7c6hqmvd61ygz6x6x9glnsfbnyzv2y67qjdcdx8jpkmw7")))) + "1z7g2scyzvfq4yj9b4w911k7802ry1v6lqfnwq12l0ak7ywmsvrh")))) (build-system python-build-system) (arguments ;; FIXME: Many tests are failing. @@ -13759,7 +13759,7 @@ interface to the Amazon Web Services (AWS) API.") (define-public python-boto3 (package (name "python-boto3") - (version "1.16.22") + (version "1.19.11") (home-page "https://github.com/boto/boto3") (source (origin (method git-fetch) @@ -13767,19 +13767,19 @@ interface to the Amazon Web Services (AWS) API.") (file-name (git-file-name name version)) (sha256 (base32 - "0h20hgl4yfl58g75qhb6ibrdmzn47md3srgar7hask14cjmfhfy3")))) + "1wv0ci2z5ywvm63dh4mp64vqyyvkm4qxc8dxv8ncrqiiphpgr9aq")))) (arguments `(#:phases (modify-phases %standard-phases (add-after 'unpack 'delete-network-tests ;; Deleting integration tests because they are trying to connect to AWS. - (lambda _ - (delete-file-recursively "tests/integration") - #t))))) + (lambda _ + (delete-file-recursively "tests/integration")))))) (build-system python-build-system) (native-inputs `(("python-nose" ,python-nose) - ("python-mock" ,python-mock))) + ("python-mock" ,python-mock) + ("python-pytest" ,python-pytest))) (propagated-inputs `(("python-botocore" ,python-botocore) ("python-jmespath" ,python-jmespath) From 7a34e56dc811d75c2d4665d68e0f646abeaf28d9 Mon Sep 17 00:00:00 2001 From: Vinicius Monego Date: Fri, 5 Nov 2021 01:58:35 +0000 Subject: [PATCH 47/81] gnu: python-moto: Update to 2.2.12. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/python-xyz.scm (python-moto): Update to 2.2.12. [arguments]: Make some cosmetic changes. <#:phases>: Don't return #t. Support cross-compilation in 'patch-hardcoded-executable-names. Skip more tests and simplify the custom 'check phase. Signed-off-by: Ludovic Courtès --- gnu/packages/python-xyz.scm | 51 ++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 6d0150811f..6ed2407958 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -13353,34 +13353,41 @@ text.") (define-public python-moto (package (name "python-moto") - ;; XXX: Use a pre-release for compatibility with latest botocore & friends. - (version "1.3.16.dev134") + (version "2.2.12") (source (origin (method url-fetch) (uri (pypi-uri "moto" version)) (sha256 (base32 - "1pix0c7zszjwzfy88n1rpih9vkdm25nqcvz93z850xvgwb4v81bd")))) + "0pvay0jp119lzzwf5qj5h6311271yq0w2i6344ds20grpf6g6gz8")))) (build-system python-build-system) (arguments - `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'patch-hardcoded-executable-names - (lambda _ - (substitute* "moto/batch/models.py" - (("/bin/sh") - (which "sh"))) - (substitute* (find-files "tests" "\\.py$") - (("#!/bin/bash") - (string-append "#!" (which "bash")))) - #t)) - (replace 'check - (lambda _ - (setenv "PYTHONPATH" (string-append "./build/lib:" - (getenv "PYTHONPATH"))) - (invoke "pytest" "-vv" "-m" "not network" - ;; These tests require Docker. - "-k" "not test_terminate_job \ -and not test_invoke_function_from_sqs_exception")))))) + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-hardcoded-executable-names + (lambda* (#:key inputs #:allow-other-keys) + (let ((bash-exec (string-append + (assoc-ref inputs "bash") + "/bin/sh"))) + (substitute* "moto/batch/models.py" + (("/bin/sh") bash-exec)) + (substitute* (find-files "tests" "\\.py$") + (("#!/bin/bash") (string-append "#!" bash-exec)))))) + (replace 'check + (lambda* (#:key inputs outputs #:allow-other-keys) + (add-installed-pythonpath inputs outputs) + (invoke "pytest" "-vv" "-m" "not network" "-k" + (string-append + ;; These tests require Docker. + "not test_terminate_job" + " and not test_invoke_function_from_sqs_exception" + " and not test_rotate_secret_lambda_invocations" + ;; These tests also require the network. + " and not test_put_record_batch_http_destination" + " and not test_put_record_http_destination" + " and not test_dependencies" + " and not test_cancel_running_job" + " and not test_container_overrides"))))))) (native-inputs `(("python-flask" ,python-flask) ("python-flask-cors" ,python-flask-cors) @@ -13388,6 +13395,8 @@ and not test_invoke_function_from_sqs_exception")))))) ("python-parameterized" ,python-parameterized) ("python-pytest" ,python-pytest) ("python-sure" ,python-sure))) + (inputs + `(("bash" ,bash-minimal))) (propagated-inputs `(("python-aws-xray-sdk" ,python-aws-xray-sdk) ("python-boto" ,python-boto) From 8bb6c7425d6edf532f2db1be5d09d26af6431e89 Mon Sep 17 00:00:00 2001 From: Vinicius Monego Date: Fri, 5 Nov 2021 01:58:36 +0000 Subject: [PATCH 48/81] gnu: python-moto: Honor #:tests? flag. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/python-xyz.scm (python-moto)[arguments]: Adjust custom 'check phase to honor the #:tests? flag. Signed-off-by: Ludovic Courtès --- gnu/packages/python-xyz.scm | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 6ed2407958..b3a350aca4 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -13374,20 +13374,21 @@ text.") (substitute* (find-files "tests" "\\.py$") (("#!/bin/bash") (string-append "#!" bash-exec)))))) (replace 'check - (lambda* (#:key inputs outputs #:allow-other-keys) - (add-installed-pythonpath inputs outputs) - (invoke "pytest" "-vv" "-m" "not network" "-k" - (string-append - ;; These tests require Docker. - "not test_terminate_job" - " and not test_invoke_function_from_sqs_exception" - " and not test_rotate_secret_lambda_invocations" - ;; These tests also require the network. - " and not test_put_record_batch_http_destination" - " and not test_put_record_http_destination" - " and not test_dependencies" - " and not test_cancel_running_job" - " and not test_container_overrides"))))))) + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "pytest" "-vv" "-m" "not network" "-k" + (string-append + ;; These tests require Docker. + "not test_terminate_job" + " and not test_invoke_function_from_sqs_exception" + " and not test_rotate_secret_lambda_invocations" + ;; These tests also require the network. + " and not test_put_record_batch_http_destination" + " and not test_put_record_http_destination" + " and not test_dependencies" + " and not test_cancel_running_job" + " and not test_container_overrides")))))))) (native-inputs `(("python-flask" ,python-flask) ("python-flask-cors" ,python-flask-cors) From ab82bed5d14a57d95d278646efe9f930d12fc2ff Mon Sep 17 00:00:00 2001 From: "Artyom V. Poptsov" Date: Sat, 11 Dec 2021 12:34:00 +0300 Subject: [PATCH 49/81] gnu: guile-dsv: Update to 0.4.1 * gnu/packages/guile-xyz.scm (guile-dsv): Update to 0.4.1. Signed-off-by: Mathieu Othacehe --- gnu/packages/guile-xyz.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index 4e8a5920f2..fc217e0140 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -556,7 +556,7 @@ you send to a FIFO file.") (define-public guile-dsv (package (name "guile-dsv") - (version "0.4.0") + (version "0.4.1") (source (origin (method git-fetch) (uri (git-reference @@ -565,7 +565,7 @@ you send to a FIFO file.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "1mvyc8i38j56frjh3p6vwziv8lrzlyqndz30663h5nwcp0044sdn")))) + "05l5dc7rg3ikz2r01bm5wjkfxjk933049ig5gc7d7g4x5523lcfl")))) (build-system gnu-build-system) (native-inputs `(("autoconf" ,autoconf) From cec4b2dcbc560393cc5b7a70159db6fe4d973b57 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 12 Dec 2021 10:53:34 +0200 Subject: [PATCH 50/81] gnu: guile-sdl: Update to 0.5.3. * gnu/packages/sdl.scm (guile-sdl): Update to 0.5.3. [source]: Use lzip tarball. [native-inputs]: Add lzip. --- gnu/packages/sdl.scm | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm index 3e5b928012..b1ba0cc43f 100644 --- a/gnu/packages/sdl.scm +++ b/gnu/packages/sdl.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2014 Mark H Weaver ;;; Copyright © 2015, 2017 Sou Bunnbu ;;; Copyright © 2015 Alex Kost -;;; Copyright © 2016, 2017 Efraim Flashner +;;; Copyright © 2016, 2017, 2021 Efraim Flashner ;;; Copyright © 2017, 2018, 2019 Rutger Helling ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2018, 2019, 2020 Ricardo Wurmus @@ -43,6 +43,7 @@ #:use-module (guix build-system trivial) #:use-module (gnu packages audio) #:use-module (gnu packages autotools) + #:use-module (gnu packages compression) #:use-module (gnu packages fcitx) #:use-module (gnu packages fontutils) #:use-module (gnu packages freedesktop) @@ -546,21 +547,22 @@ directory.") (define-public guile-sdl (package (name "guile-sdl") - (version "0.5.2") + (version "0.5.3") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/guile-sdl/guile-sdl-" - version ".tar.xz")) + version ".tar.lz")) (sha256 (base32 - "0cjgs012a9922hn6xqwj66w6qmfs3nycnm56hyykx5n3g5p7ag01")))) + "040gyk3n3yp8i30ngdg97n3083g8b6laky2nlh10jqcyjdd550d6")))) (build-system gnu-build-system) (native-inputs - `(("pkg-config" ,pkg-config) + `(("lzip" ,lzip) + ("pkg-config" ,pkg-config) ;; Required by test suite. - ("xorg-server" ,xorg-server) - ("libjpeg" ,libjpeg-turbo))) + ("libjpeg" ,libjpeg-turbo) + ("xorg-server" ,xorg-server))) (inputs `(("guile" ,guile-2.2) ("sdl-union" ,(sdl-union)))) From 70fba40048a09412e5c05a2a169a30b324942460 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 12 Dec 2021 10:54:32 +0200 Subject: [PATCH 51/81] gnu: serveez: Update to 0.3.0. * gnu/packages/serveez.scm (serveez): Update to 0.3.0. [source]: Download using lzip tarball. [native-inputs]: Add lzip. [inputs]: Replace guile-2.0 with guile-2.2. --- gnu/packages/serveez.scm | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/gnu/packages/serveez.scm b/gnu/packages/serveez.scm index 871fb00d3b..981d70ef70 100644 --- a/gnu/packages/serveez.scm +++ b/gnu/packages/serveez.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Eric Bavier +;;; Copyright © 2021 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,22 +23,22 @@ #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (gnu packages) + #:use-module (gnu packages compression) #:use-module (gnu packages guile)) (define-public serveez (package (name "serveez") - (version "0.2.2") + (version "0.3.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/serveez/serveez-" - version ".tar.xz")) + version ".tar.lz")) (sha256 (base32 - "09a5jh762ps71ivlg7vdlzp3y29ncl3nsad7qbcni78bq2mzwxsc")))) + "0capm8i6fyjvh5rflxkfd07llfaa0kk4i3y836qpld9vzy49q6ky")))) (build-system gnu-build-system) - (inputs `(("guile" ,guile-2.0))) (arguments `(#:configure-flags '("--enable-libserveez-install") #:phases @@ -48,6 +49,10 @@ (find-files "test" "^t[0-9]{3}$") (("/bin/sh") (which "sh"))) #t))))) + (native-inputs + `(("lzip" ,lzip))) + (inputs + `(("guile" ,guile-2.2))) (home-page "https://www.gnu.org/software/serveez/") (synopsis "Framework for implementing IP-based servers") (description From 5c3f5c152435ba2abb355fe69b63c24f37f31ef9 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 12 Dec 2021 11:21:02 +0200 Subject: [PATCH 52/81] gnu: Use license prefix in (gnu packages sdl). * gnu/packages/sdl.scm (sdl, sdl2, libmikmod, sdl-gfx, sdl-image, sdl-mixer, sdl-net, sdl-pango, sdl-ttf, guile-sdl, guile-sdl2, sdl2-cs) [license]: Use license prefix. --- gnu/packages/sdl.scm | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm index b1ba0cc43f..2211ccab87 100644 --- a/gnu/packages/sdl.scm +++ b/gnu/packages/sdl.scm @@ -34,7 +34,7 @@ #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) #:use-module (gnu packages) - #:use-module ((guix licenses) #:hide (freetype)) + #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) @@ -111,7 +111,7 @@ library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware.") (home-page "https://libsdl.org/") - (license lgpl2.1))) + (license license:lgpl2.1))) (define-public sdl2 (package (inherit sdl) @@ -154,7 +154,7 @@ joystick, and graphics hardware.") ("wayland" ,wayland) ("wayland-protocols" ,wayland-protocols)) (package-inputs sdl))) - (license bsd-3))) + (license license:bsd-3))) (define-public libmikmod (package @@ -183,7 +183,7 @@ joystick, and graphics hardware.") "MikMod is able to play a wide range of module formats, as well as digital sound files. It can take advantage of particular features of your system, such as sound redirection over the network.") - (license lgpl2.1) + (license license:lgpl2.1) (home-page "http://mikmod.sourceforge.net/"))) (define-public sdl-gfx @@ -212,7 +212,7 @@ system, such as sound redirection over the network.") (description "SDL_gfx provides graphics drawing primitives, rotozoom and other supporting functions for SDL.") (home-page "http://www.ferzkopp.net/joomla/software-mainmenu-14/4-ferzkopps-linux-software/19-sdlgfx") - (license zlib))) + (license license:zlib))) (define-public sdl-image (package @@ -249,7 +249,7 @@ other supporting functions for SDL.") supports the following formats: BMP, GIF, JPEG, LBM, PCX, PNG, PNM, TGA, TIFF, WEBP, XCF, XPM, and XV.") (home-page "https://www.libsdl.org/projects/SDL_image/") - (license zlib))) + (license license:zlib))) (define-public sdl-mixer (package @@ -304,7 +304,7 @@ and specify it using the @code{SDL_SOUNDFONTS} environment variable. For the legacy @code{timidity} backend, install a patch set such as @code{freepats} and set the path to the configuration file with @code{TIMIDITY_CFG}.") (home-page "https://www.libsdl.org/projects/SDL_mixer/") - (license zlib))) + (license license:zlib))) (define-public sdl-net (package @@ -326,7 +326,7 @@ and set the path to the configuration file with @code{TIMIDITY_CFG}.") (description "SDL_net is a small, cross-platform networking library for SDL.") (home-page "https://www.libsdl.org/projects/SDL_net/") - (license zlib))) + (license license:zlib))) (define-public sdl-pango (package @@ -372,7 +372,7 @@ SDL.") (description "This library is a wrapper around the Pango library. It allows you to use TrueType fonts to render internationalized and tagged text in SDL applications.") - (license lgpl2.1))) + (license license:lgpl2.1))) (define-public sdl-ttf (package @@ -401,7 +401,7 @@ tagged text in SDL applications.") (synopsis "SDL TrueType font library") (description "SDL_ttf is a TrueType font rendering library for SDL.") (home-page "https://www.libsdl.org/projects/SDL_ttf/") - (license zlib))) + (license license:zlib))) (define* (sdl-union #:optional (packages (list sdl sdl-gfx sdl-net sdl-ttf sdl-image sdl-mixer))) @@ -623,7 +623,7 @@ directory.") Layer (SDL). With them, Guile programmers can have easy access to graphics, sound and device input (keyboards, joysticks, mice, etc.).") (home-page "https://www.gnu.org/software/guile-sdl/") - (license gpl3+))) + (license license:gpl3+))) (define-public guile-sdl2 (package @@ -653,7 +653,7 @@ sound and device input (keyboards, joysticks, mice, etc.).") "Guile-SDL2 provides Guile Scheme bindings for the SDL2 C shared library. The bindings are written in pure Scheme using Guile's foreign function interface.") - (license lgpl3+))) + (license license:lgpl3+))) (define-public guile2.2-sdl2 (package/inherit guile-sdl2 @@ -706,4 +706,4 @@ interface.") "SDL2-CS provides C# bindings for the SDL2 C shared library. The C# wrapper was written to be used for FNA's platform support. However, this is written in a way that can be used for any general C# application.") - (license zlib)))) + (license license:zlib)))) From 8778ff2aec128a4d2f94b6ca383c11bda69ef077 Mon Sep 17 00:00:00 2001 From: gyara Date: Sat, 11 Dec 2021 22:51:07 +0900 Subject: [PATCH 53/81] gnu: dunst : Update to 1.7.3. * gnu/packages/dunst.scm (dunst): Update to 1.7.3. Signed-off-by: Guillaume Le Vaillant --- gnu/packages/dunst.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/dunst.scm b/gnu/packages/dunst.scm index 908999eb04..250840415e 100644 --- a/gnu/packages/dunst.scm +++ b/gnu/packages/dunst.scm @@ -39,7 +39,7 @@ (define-public dunst (package (name "dunst") - (version "1.7.1") + (version "1.7.3") (source (origin (method git-fetch) (uri (git-reference @@ -48,7 +48,7 @@ (file-name (git-file-name name version)) (sha256 (base32 - "0v15fhwzcg7zfn092sry0f4qb6dccz9bb312y9dadg745wf3n9qw")))) + "1ra0ii805w3rrs0qqbjxzl6i79ksz42lnvbglw18h4igkza21kzj")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no check target From d1072f21ba446fe470b171575f5e3202aef17a04 Mon Sep 17 00:00:00 2001 From: Foo Chuan Wei Date: Sat, 11 Dec 2021 08:09:01 +0000 Subject: [PATCH 54/81] gnu: sbcl-aserve: Add HTML5 elements to htmlgen. * gnu/patches/sbcl-aserve-add-HTML-5-elements.patch: New file. * gnu/patches/sbcl-aserve-fix-rfe12668.patch: New file. * gnu/local.mk (dist_patch_DATA): Add them. * gnu/packages/lisp-xyz.scm (sbcl-aserve)[source]: Use them. Signed-off-by: Guillaume Le Vaillant --- gnu/local.mk | 2 + gnu/packages/lisp-xyz.scm | 17 +++-- .../sbcl-aserve-add-HTML-5-elements.patch | 63 +++++++++++++++++++ .../patches/sbcl-aserve-fix-rfe12668.patch | 43 +++++++++++++ 4 files changed, 121 insertions(+), 4 deletions(-) create mode 100644 gnu/packages/patches/sbcl-aserve-add-HTML-5-elements.patch create mode 100644 gnu/packages/patches/sbcl-aserve-fix-rfe12668.patch diff --git a/gnu/local.mk b/gnu/local.mk index 9a85977973..f485e733e0 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1750,6 +1750,8 @@ dist_patch_DATA = \ %D%/packages/patches/rust-openssl-sys-no-vendor.patch \ %D%/packages/patches/rust-shell2batch-lint-fix.patch \ %D%/packages/patches/sbc-fix-build-non-x86.patch \ + %D%/packages/patches/sbcl-aserve-add-HTML-5-elements.patch \ + %D%/packages/patches/sbcl-aserve-fix-rfe12668.patch \ %D%/packages/patches/sbcl-burgled-batteries3-fix-signals.patch \ %D%/packages/patches/sbcl-clml-fix-types.patch \ %D%/packages/patches/sbcl-png-fix-sbcl-compatibility.patch \ diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index e838b5b198..22c9479c9f 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -17906,10 +17906,11 @@ functions allow Lisp programs to explore the web.") (define-public sbcl-aserve ;; There does not seem to be proper releases. - (let ((commit "cac1d6920998ddcbee8310a873414732e707d8e5")) + (let ((commit "cac1d6920998ddcbee8310a873414732e707d8e5") + (revision "2")) (package (name "sbcl-aserve") - (version (git-version "1.2.50" "1" commit)) + (version (git-version "1.2.50" revision commit)) (source (origin (method git-fetch) @@ -17920,7 +17921,14 @@ functions allow Lisp programs to explore the web.") (commit commit))) (file-name (git-file-name "aserve" version)) (sha256 - (base32 "0ak6mqp84sjr0a7h5svr16vra4bf4fcx6wpir0n88dc1vjwy5xqa")))) + (base32 "0ak6mqp84sjr0a7h5svr16vra4bf4fcx6wpir0n88dc1vjwy5xqa")) + (patches (search-patches + ;; Add HTML5 elements to htmlgen. + ;; Adapted from https://github.com/franzinc/aserve/ commits: + ;; * e47bd763: "rfe12668: add HTML 5 elements to htmlgen" + ;; * 7371ce59: "fix bugs in rfe12668 implementation" + "sbcl-aserve-add-HTML-5-elements.patch" + "sbcl-aserve-fix-rfe12668.patch")))) (build-system asdf-build-system/sbcl) (arguments `(#:phases @@ -17941,7 +17949,8 @@ functions allow Lisp programs to explore the web.") #t))))) (inputs `(("acl-compat" ,sbcl-acl-compat))) - (home-page "https://franz.com/support/documentation/current/doc/aserve/aserve.html") + (home-page + "https://franz.com/support/documentation/current/doc/aserve/aserve.html") (synopsis "AllegroServe, a web server written in Common Lisp") (description "The server part of AllegroServe can be used either as a standalone web diff --git a/gnu/packages/patches/sbcl-aserve-add-HTML-5-elements.patch b/gnu/packages/patches/sbcl-aserve-add-HTML-5-elements.patch new file mode 100644 index 0000000000..93962e10ec --- /dev/null +++ b/gnu/packages/patches/sbcl-aserve-add-HTML-5-elements.patch @@ -0,0 +1,63 @@ +From 940679fb75073a59186099e3dd7fb381e727db6b Mon Sep 17 00:00:00 2001 +From: Kevin Layer +Date: Thu, 31 Oct 2013 04:27:29 -0700 +Subject: [PATCH 1/2] rfe12668: add HTML 5 elements to htmlgen + +Add the new elements listed here: + http://www.w3.org/TR/html5-diff/#new-elements + +Change-Id: I7f64363751130644caf90ecdd65c13175d77ae97 +--- + aserve/htmlgen/htmlgen.cl | 38 ++++++++++++++++++++++++++++++++++++-- + 1 file changed, 36 insertions(+), 2 deletions(-) + +diff --git a/aserve/htmlgen/htmlgen.cl b/aserve/htmlgen/htmlgen.cl +index 59248ef..0c0d6e8 100644 +--- a/aserve/htmlgen/htmlgen.cl ++++ b/aserve/htmlgen/htmlgen.cl +@@ -747,6 +747,40 @@ + + (def-std-html :var t nil) + +-(def-std-html :wbr nil nil) +- + (def-std-html :xmp t nil) ++ ++;; html 5 ++ ++(def-std-html :section t nil) ++(def-std-html :article t nil) ++(def-std-html :main t nil) ++(def-std-html :aside t nil) ++(def-std-html :hgroup t nil) ++(def-std-html :header t nil) ++(def-std-html :footer t nil) ++(def-std-html :nav t nil) ++(def-std-html :figure t nil) ++(def-std-html :figcaption t nil) ++ ++(def-std-html :video t nil) ++(def-std-html :audio t nil) ++(def-std-html :source t nil) ++(def-std-html :track t nil) ++(def-std-html :embed t nil) ++(def-std-html :mark t nil) ++(def-std-html :progress t nil) ++(def-std-html :meter t nil) ++(def-std-html :time t nil) ++(def-std-html :data t nil) ++(def-std-html :dialog t nil) ++(def-std-html :ruby t nil) ++(def-std-html :rt t nil) ++(def-std-html :rp t nil) ++(def-std-html :bdi t nil) ++(def-std-html :wbr nil nil) ++(def-std-html :canvas t nil) ++(def-std-html :menuitem t nil) ++(def-std-html :details t nil) ++(def-std-html :datalist t nil) ++(def-std-html :keygen t nil) ++(def-std-html :output t nil) +-- +2.25.1 + diff --git a/gnu/packages/patches/sbcl-aserve-fix-rfe12668.patch b/gnu/packages/patches/sbcl-aserve-fix-rfe12668.patch new file mode 100644 index 0000000000..c7a8e05aae --- /dev/null +++ b/gnu/packages/patches/sbcl-aserve-fix-rfe12668.patch @@ -0,0 +1,43 @@ +From 8110ebd55d5bf659cd40dab2df59d80dafdb367a Mon Sep 17 00:00:00 2001 +From: Kevin Layer +Date: Mon, 10 Feb 2014 11:10:42 -0800 +Subject: [PATCH 2/2] fix bugs in rfe12668 implementation + +The previous commit added :embed and :keygen but they were already +there. Resolve this issue. + +Change-Id: Ieb962a12880394e67d973835945005446833fab7 +--- + aserve/htmlgen/htmlgen.cl | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/aserve/htmlgen/htmlgen.cl b/aserve/htmlgen/htmlgen.cl +index 0c0d6e8..f77d6de 100644 +--- a/aserve/htmlgen/htmlgen.cl ++++ b/aserve/htmlgen/htmlgen.cl +@@ -658,7 +658,6 @@ + (def-std-html :dt t nil) + + (def-std-html :em t nil) +-(def-std-html :embed t nil) + + (def-std-html :fieldset t nil) + (def-std-html :font t nil) +@@ -685,7 +684,6 @@ + (def-std-html :isindex nil nil) + + (def-std-html :kbd t nil) +-(def-std-html :keygen nil nil) + + (def-std-html :label t nil) + (def-std-html :layer t nil) +@@ -782,5 +780,5 @@ + (def-std-html :menuitem t nil) + (def-std-html :details t nil) + (def-std-html :datalist t nil) +-(def-std-html :keygen t nil) ++(def-std-html :keygen nil nil) + (def-std-html :output t nil) +-- +2.25.1 + From c12c7f128418d4e0d8373d6e918547bc7f95abef Mon Sep 17 00:00:00 2001 From: Foo Chuan Wei Date: Sat, 11 Dec 2021 14:37:21 +0000 Subject: [PATCH 55/81] gnu: sbcl-geco: Update to 2.1.2. * gnu/packages/lisp-xyz.scm (sbcl-geco): Update to 2.1.2. [home-page]: Update home page. [license]: Fix license. Signed-off-by: Guillaume Le Vaillant --- gnu/packages/lisp-xyz.scm | 41 +++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index 22c9479c9f..e25d0f5488 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -12650,25 +12650,28 @@ XML to Lisp structures or s-expressions and back.") ((#:tests? _ #f) #f)))))) (define-public sbcl-geco - (package - (name "sbcl-geco") - (version "2.1.1") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/gpwwjr/GECO") - (commit (string-append "v" version)))) - (file-name (git-file-name "geco" version)) - (sha256 - (base32 "1rc8a4mk40hjx5qy980hjylv6xxqdbq38hg8c4w30y93abfd519s")))) - (build-system asdf-build-system/sbcl) - (home-page "http://hiwaay.net/~gpw/geco/geco.html") - (synopsis "Genetic algorithm toolkit for Common Lisp") - (description - "GECO (Genetic Evolution through Combination of Objects) is an extensible, -object-oriented framework for prototyping genetic algorithms in Common Lisp.") - (license license:lgpl2.1+))) + (let ((commit "db13c9384491092975f46f6a837ccdc04681a93a") + (revision "1")) + (package + (name "sbcl-geco") + (version (git-version "2.1.2" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/gpwwjr/GECO") + (commit commit))) + (file-name (git-file-name "cl-geco" version)) + (sha256 + (base32 "1ncaf9ab7jz59zmga0p97blsjjb1m6db0qih57wipfhqdb5ylz17")))) + (build-system asdf-build-system/sbcl) + (home-page "https://github.com/gpwwjr/GECO") + (synopsis "Genetic algorithm toolkit for Common Lisp") + (description + "GECO (Genetic Evolution through Combination of Objects) is an +extensible, object-oriented framework for prototyping genetic algorithms in +Common Lisp.") + (license license:lgpl2.0+)))) (define-public cl-geco (sbcl-package->cl-source-package sbcl-geco)) From 604880ae22e1a7662acb1d3f282242470de0cd03 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Fri, 17 Sep 2021 11:15:56 +0100 Subject: [PATCH 56/81] progress: Rate limit drawing in the progress-reporter/bar. This helps smooth the output in cases where the bar is updated very quickly, for example in guix weather where it's computing derivations. * guix/progress.scm (progress-reporter/bar): Wrap the drawing code with the rate-limited procedure. --- guix/progress.scm | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/guix/progress.scm b/guix/progress.scm index 0cbc804ec1..4f8e98edc0 100644 --- a/guix/progress.scm +++ b/guix/progress.scm @@ -270,19 +270,25 @@ ABBREVIATION used to shorten FILE for display." tasks is performed. Write PREFIX at the beginning of the line." (define done 0) + (define (draw-bar) + (let* ((ratio (* 100. (/ done total)))) + (erase-current-line port) + (if (string-null? prefix) + (display (progress-bar ratio (current-terminal-columns)) port) + (let ((width (- (current-terminal-columns) + (string-length prefix) 3))) + (display prefix port) + (display " " port) + (display (progress-bar ratio width) port))) + (force-output port))) + + (define draw-bar/rate-limited + (rate-limited draw-bar %progress-interval)) + (define (report-progress) (set! done (+ 1 done)) (unless (> done total) - (let* ((ratio (* 100. (/ done total)))) - (erase-current-line port) - (if (string-null? prefix) - (display (progress-bar ratio (current-terminal-columns)) port) - (let ((width (- (current-terminal-columns) - (string-length prefix) 3))) - (display prefix port) - (display " " port) - (display (progress-bar ratio width) port))) - (force-output port)))) + (draw-bar/rate-limited))) (progress-reporter (start (lambda () From 9b24cd3b8e36ecd5f9f72926de12597aac954238 Mon Sep 17 00:00:00 2001 From: "Artyom V. Poptsov" Date: Sun, 12 Dec 2021 16:41:42 +0300 Subject: [PATCH 57/81] gnu: guile-dsv: Update to 0.5.0 * gnu/packages/guile-xyz.scm (guile-dsv): Update to 0.5.0. --- gnu/packages/guile-xyz.scm | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index fc217e0140..edd9c35004 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -556,7 +556,7 @@ you send to a FIFO file.") (define-public guile-dsv (package (name "guile-dsv") - (version "0.4.1") + (version "0.5.0") (source (origin (method git-fetch) (uri (git-reference @@ -565,7 +565,7 @@ you send to a FIFO file.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "05l5dc7rg3ikz2r01bm5wjkfxjk933049ig5gc7d7g4x5523lcfl")))) + "0s9zan08ala7432pn44z3vmb3sc19rf18zfr9mskydnam5xn6qlw")))) (build-system gnu-build-system) (native-inputs `(("autoconf" ,autoconf) @@ -581,21 +581,6 @@ you send to a FIFO file.") #:imported-modules ((guix build guile-build-system) ,@%gnu-build-system-modules) #:phases (modify-phases %standard-phases - (add-before 'configure 'set-guilesitedir - (lambda _ - (substitute* "Makefile.in" - (("^guilesitedir =.*$") - "guilesitedir = \ -$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n")) - (substitute* "modules/Makefile.in" - (("^guilesitedir =.*$") - "guilesitedir = \ -$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n")) - (substitute* "modules/dsv/Makefile.in" - (("^guilesitedir =.*$") - "guilesitedir = \ -$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n")) - #t)) (add-after 'install 'wrap-program (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) From 72f140c25314141e98f0c02950590afe84284ca2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 10 Oct 2021 23:08:44 +0200 Subject: [PATCH 58/81] tests: Add 'static-networking' test. * gnu/tests/networking.scm (run-static-networking-test): New procedure. (%test-static-networking): New variable. --- gnu/tests/networking.scm | 99 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 97 insertions(+), 2 deletions(-) diff --git a/gnu/tests/networking.scm b/gnu/tests/networking.scm index 453e63f52d..5da1c91da6 100644 --- a/gnu/tests/networking.scm +++ b/gnu/tests/networking.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2018 Chris Marusich ;;; Copyright © 2018 Arun Isaac ;;; Copyright © 2021 Maxime Devos +;;; Copyright © 2021 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -37,8 +38,102 @@ #:use-module (gnu packages guile) #:use-module (gnu services shepherd) #:use-module (ice-9 match) - #:export (%test-inetd %test-openvswitch %test-dhcpd %test-tor %test-iptables - %test-ipfs)) + #:export (%test-static-networking + %test-inetd + %test-openvswitch + %test-dhcpd + %test-tor + %test-iptables + %test-ipfs)) + + +;;; +;;; Static networking. +;;; + +(define (run-static-networking-test vm) + (define test + (with-imported-modules '((gnu build marionette) + (guix build syscalls)) + #~(begin + (use-modules (gnu build marionette) + (guix build syscalls) + (srfi srfi-64)) + + (define marionette + (make-marionette + '(#$vm "-nic" "user,model=virtio-net-pci"))) + + (mkdir #$output) + (chdir #$output) + + (test-begin "static-networking") + + (test-assert "service is up" + (marionette-eval + '(begin + (use-modules (gnu services herd)) + (start-service 'networking)) + marionette)) + + (test-assert "network interfaces" + (marionette-eval + '(begin + (use-modules (guix build syscalls)) + (network-interface-names)) + marionette)) + + (test-equal "address of eth0" + "10.0.2.15" + (marionette-eval + '(let* ((sock (socket AF_INET SOCK_STREAM 0)) + (addr (network-interface-address sock "eth0"))) + (close-port sock) + (inet-ntop (sockaddr:fam addr) (sockaddr:addr addr))) + marionette)) + + (test-equal "netmask of eth0" + "255.255.255.0" + (marionette-eval + '(let* ((sock (socket AF_INET SOCK_STREAM 0)) + (mask (network-interface-netmask sock "eth0"))) + (close-port sock) + (inet-ntop (sockaddr:fam mask) (sockaddr:addr mask))) + marionette)) + + (test-equal "eth0 is up" + IFF_UP + (marionette-eval + '(let* ((sock (socket AF_INET SOCK_STREAM 0)) + (flags (network-interface-flags sock "eth0"))) + (logand flags IFF_UP)) + marionette)) + + (test-end) + + (exit (= (test-runner-fail-count (test-runner-current)) 0))))) + + (gexp->derivation "static-networking" test)) + +(define %test-static-networking + (system-test + (name "static-networking") + (description "Test the 'static-networking' service.") + (value + (let ((os (marionette-operating-system + (simple-operating-system + (static-networking-service "eth0" "10.0.2.15" + #:netmask "255.255.255.0" + #:gateway "10.0.2.2" + #:name-servers '("10.0.2.2"))) + #:imported-modules '((gnu services herd) + (guix combinators))))) + (run-static-networking-test (virtual-machine os)))))) + + +;;; +;;; Inetd. +;;; (define %inetd-os ;; Operating system with 2 inetd services. From 33c498b9ee93429adc9e444ffe90df5b158fa0df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sat, 23 Oct 2021 15:04:58 +0200 Subject: [PATCH 59/81] tests: openvswitch: Check whether ovs0 is up. * gnu/tests/networking.scm (run-openvswitch-test)["ovs0 is up"]: New test. --- gnu/tests/networking.scm | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/gnu/tests/networking.scm b/gnu/tests/networking.scm index 5da1c91da6..131428c128 100644 --- a/gnu/tests/networking.scm +++ b/gnu/tests/networking.scm @@ -286,12 +286,15 @@ port 7, and a dict service on port 2628." (define (run-openvswitch-test) (define os (marionette-operating-system %openvswitch-os - #:imported-modules '((gnu services herd)))) + #:imported-modules '((gnu services herd) + (guix build syscalls)))) (define test - (with-imported-modules '((gnu build marionette)) + (with-imported-modules '((gnu build marionette) + (guix build syscalls)) #~(begin (use-modules (gnu build marionette) + (guix build syscalls) (ice-9 popen) (ice-9 rdelim) (srfi srfi-64)) @@ -339,6 +342,18 @@ port 7, and a dict service on port 2628." (current-services)))) marionette)) + (test-equal "ovs0 is up" + IFF_UP + (marionette-eval + '(begin + (use-modules (guix build syscalls)) + + (let* ((sock (socket AF_INET SOCK_STREAM 0)) + (flags (network-interface-flags sock "ovs0"))) + (close-port sock) + (logand flags IFF_UP))) + marionette)) + (test-end) (exit (= (test-runner-fail-count (test-runner-current)) 0))))) From a4d33fef3111c2b842d201250eb72f9dcb543686 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 24 Oct 2021 17:11:52 +0200 Subject: [PATCH 60/81] doc: Add new "Networking Setup" node for the main setup options. This should make it easier to find how to get started setting up networking. * doc/guix.texi (Networking Setup): New section. (Networking Services): Remove 'static-networking-service', 'dhcp-client-service-type', 'network-manager-service-type', 'connman-service-type', 'wicd-service', 'modem-manager-service-type', 'usb-modeswitch-service-type', and 'wpa-supplicant-service-type'. --- doc/guix.texi | 289 ++++++++++++++++++++++++++++---------------------- 1 file changed, 160 insertions(+), 129 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 9914829b2b..1535fb9f93 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -344,7 +344,8 @@ Services * Base Services:: Essential system services. * Scheduled Job Execution:: The mcron service. * Log Rotation:: The rottlog service. -* Networking Services:: Network setup, SSH daemon, etc. +* Networking Setup:: Setting up network interfaces. +* Networking Services:: Firewall, SSH daemon, etc. * Unattended Upgrades:: Automated system upgrades. * X Window:: Graphical display. * Printing Services:: Local and remote printer support. @@ -15606,7 +15607,8 @@ declaration. * Base Services:: Essential system services. * Scheduled Job Execution:: The mcron service. * Log Rotation:: The rottlog service. -* Networking Services:: Network setup, SSH daemon, etc. +* Networking Setup:: Setting up network interfaces. +* Networking Services:: Firewall, SSH daemon, etc. * Unattended Upgrades:: Automated system upgrades. * X Window:: Graphical display. * Printing Services:: Local and remote printer support. @@ -16828,63 +16830,26 @@ The list of syslog-controlled files to be rotated. By default it is: "/var/log/maillog")}. @end defvr -@node Networking Services -@subsection Networking Services +@node Networking Setup +@subsection Networking Setup -The @code{(gnu services networking)} module provides services to configure -the network interface. +The @code{(gnu services networking)} module provides services to +configure network interfaces and set up networking on your machine. +Those services provide different ways for you to set up your machine: by +declaring a static network configuration, by running a Dynamic Host +Configuration Protocol (DHCP) client, or by running daemons such as +NetworkManager and Connman that automate the whole process, +automatically adapt to connectivity changes, and provide a high-level +user interface. -@cindex DHCP, networking service -@defvr {Scheme Variable} dhcp-client-service-type -This is the type of services that run @var{dhcp}, a Dynamic Host Configuration -Protocol (DHCP) client, on all the non-loopback network interfaces. Its value -is the DHCP client package to use, @code{isc-dhcp} by default. -@end defvr +On a laptop, NetworkManager and Connman are by far the most convenient +options, which is why the default desktop services include +NetworkManager (@pxref{Desktop Services, @code{%desktop-services}}). +For a server, or for a virtual machine or a container, static network +configuration or a simple DHCP client are often more appropriate. -@deffn {Scheme Procedure} dhcpd-service-type -This type defines a service that runs a DHCP daemon. To create a -service of this type, you must supply a @code{}. -For example: - -@lisp -(service dhcpd-service-type - (dhcpd-configuration - (config-file (local-file "my-dhcpd.conf")) - (interfaces '("enp0s25")))) -@end lisp -@end deffn - -@deftp {Data Type} dhcpd-configuration -@table @asis -@item @code{package} (default: @code{isc-dhcp}) -The package that provides the DHCP daemon. This package is expected to -provide the daemon at @file{sbin/dhcpd} relative to its output -directory. The default package is the -@uref{https://www.isc.org/products/DHCP, ISC's DHCP server}. -@item @code{config-file} (default: @code{#f}) -The configuration file to use. This is required. It will be passed to -@code{dhcpd} via its @code{-cf} option. This may be any ``file-like'' -object (@pxref{G-Expressions, file-like objects}). See @code{man -dhcpd.conf} for details on the configuration file syntax. -@item @code{version} (default: @code{"4"}) -The DHCP version to use. The ISC DHCP server supports the values ``4'', -``6'', and ``4o6''. These correspond to the @code{dhcpd} program -options @code{-4}, @code{-6}, and @code{-4o6}. See @code{man dhcpd} for -details. -@item @code{run-directory} (default: @code{"/run/dhcpd"}) -The run directory to use. At service activation time, this directory -will be created if it does not exist. -@item @code{pid-file} (default: @code{"/run/dhcpd/dhcpd.pid"}) -The PID file to use. This corresponds to the @code{-pf} option of -@code{dhcpd}. See @code{man dhcpd} for details. -@item @code{interfaces} (default: @code{'()}) -The names of the network interfaces on which dhcpd should listen for -broadcasts. If this list is not empty, then its elements (which must be -strings) will be appended to the @code{dhcpd} invocation when starting -the daemon. It may not be necessary to explicitly specify any -interfaces here; see @code{man dhcpd} for details. -@end table -@end deftp +This section describes the various network setup services available, +starting with static network configuration. @defvr {Scheme Variable} static-networking-service-type This is the type for statically-configured network interfaces. @@ -16914,81 +16879,13 @@ For example: @end lisp @end deffn -@cindex wicd -@cindex wireless -@cindex WiFi -@cindex network management -@deffn {Scheme Procedure} wicd-service [#:wicd @var{wicd}] -Return a service that runs @url{https://launchpad.net/wicd,Wicd}, a network -management daemon that aims to simplify wired and wireless networking. - -This service adds the @var{wicd} package to the global profile, providing -several commands to interact with the daemon and configure networking: -@command{wicd-client}, a graphical user interface, and the @command{wicd-cli} -and @command{wicd-curses} user interfaces. -@end deffn - -@cindex ModemManager - -@defvr {Scheme Variable} modem-manager-service-type -This is the service type for the -@uref{https://wiki.gnome.org/Projects/ModemManager, ModemManager} -service. The value for this service type is a -@code{modem-manager-configuration} record. - -This service is part of @code{%desktop-services} (@pxref{Desktop -Services}). +@cindex DHCP, networking service +@defvr {Scheme Variable} dhcp-client-service-type +This is the type of services that run @var{dhcp}, a Dynamic Host Configuration +Protocol (DHCP) client, on all the non-loopback network interfaces. Its value +is the DHCP client package to use, @code{isc-dhcp} by default. @end defvr -@deftp {Data Type} modem-manager-configuration -Data type representing the configuration of ModemManager. - -@table @asis -@item @code{modem-manager} (default: @code{modem-manager}) -The ModemManager package to use. - -@end table -@end deftp - -@cindex USB_ModeSwitch -@cindex Modeswitching - -@defvr {Scheme Variable} usb-modeswitch-service-type -This is the service type for the -@uref{https://www.draisberghof.de/usb_modeswitch/, USB_ModeSwitch} -service. The value for this service type is -a @code{usb-modeswitch-configuration} record. - -When plugged in, some USB modems (and other USB devices) initially present -themselves as a read-only storage medium and not as a modem. They need to be -@dfn{modeswitched} before they are usable. The USB_ModeSwitch service type -installs udev rules to automatically modeswitch these devices when they are -plugged in. - -This service is part of @code{%desktop-services} (@pxref{Desktop -Services}). -@end defvr - -@deftp {Data Type} usb-modeswitch-configuration -Data type representing the configuration of USB_ModeSwitch. - -@table @asis -@item @code{usb-modeswitch} (default: @code{usb-modeswitch}) -The USB_ModeSwitch package providing the binaries for modeswitching. - -@item @code{usb-modeswitch-data} (default: @code{usb-modeswitch-data}) -The package providing the device data and udev rules file used by -USB_ModeSwitch. - -@item @code{config-file} (default: @code{#~(string-append #$usb-modeswitch:dispatcher "/etc/usb_modeswitch.conf")}) -Which config file to use for the USB_ModeSwitch dispatcher. By default the -config file shipped with USB_ModeSwitch is used which disables logging to -@file{/var/log} among other default settings. If set to @code{#f}, no config -file is used. - -@end table -@end deftp - @cindex NetworkManager @defvr {Scheme Variable} network-manager-service-type @@ -17125,6 +17022,139 @@ List of additional command-line arguments to pass to the daemon. @end table @end deftp +@cindex wicd +@cindex wireless +@cindex WiFi +@cindex network management +@deffn {Scheme Procedure} wicd-service [#:wicd @var{wicd}] +Return a service that runs @url{https://launchpad.net/wicd,Wicd}, a network +management daemon that aims to simplify wired and wireless networking. + +This service adds the @var{wicd} package to the global profile, providing +several commands to interact with the daemon and configure networking: +@command{wicd-client}, a graphical user interface, and the @command{wicd-cli} +and @command{wicd-curses} user interfaces. +@end deffn + +@cindex ModemManager +Some networking devices such as modems require special care, and this is +what the services below focus on. + +@defvr {Scheme Variable} modem-manager-service-type +This is the service type for the +@uref{https://wiki.gnome.org/Projects/ModemManager, ModemManager} +service. The value for this service type is a +@code{modem-manager-configuration} record. + +This service is part of @code{%desktop-services} (@pxref{Desktop +Services}). +@end defvr + +@deftp {Data Type} modem-manager-configuration +Data type representing the configuration of ModemManager. + +@table @asis +@item @code{modem-manager} (default: @code{modem-manager}) +The ModemManager package to use. + +@end table +@end deftp + +@cindex USB_ModeSwitch +@cindex Modeswitching + +@defvr {Scheme Variable} usb-modeswitch-service-type +This is the service type for the +@uref{https://www.draisberghof.de/usb_modeswitch/, USB_ModeSwitch} +service. The value for this service type is +a @code{usb-modeswitch-configuration} record. + +When plugged in, some USB modems (and other USB devices) initially present +themselves as a read-only storage medium and not as a modem. They need to be +@dfn{modeswitched} before they are usable. The USB_ModeSwitch service type +installs udev rules to automatically modeswitch these devices when they are +plugged in. + +This service is part of @code{%desktop-services} (@pxref{Desktop +Services}). +@end defvr + +@deftp {Data Type} usb-modeswitch-configuration +Data type representing the configuration of USB_ModeSwitch. + +@table @asis +@item @code{usb-modeswitch} (default: @code{usb-modeswitch}) +The USB_ModeSwitch package providing the binaries for modeswitching. + +@item @code{usb-modeswitch-data} (default: @code{usb-modeswitch-data}) +The package providing the device data and udev rules file used by +USB_ModeSwitch. + +@item @code{config-file} (default: @code{#~(string-append #$usb-modeswitch:dispatcher "/etc/usb_modeswitch.conf")}) +Which config file to use for the USB_ModeSwitch dispatcher. By default the +config file shipped with USB_ModeSwitch is used which disables logging to +@file{/var/log} among other default settings. If set to @code{#f}, no config +file is used. + +@end table +@end deftp + + +@node Networking Services +@subsection Networking Services + +The @code{(gnu services networking)} module discussed in the previous +section provides services for more advanced setups: providing a DHCP +service for others to use, filtering packets with iptables or nftables, +running a WiFi access point with @command{hostapd}, running the +@command{inetd} ``superdaemon'', and more. This section describes +those. + +@deffn {Scheme Procedure} dhcpd-service-type +This type defines a service that runs a DHCP daemon. To create a +service of this type, you must supply a @code{}. +For example: + +@lisp +(service dhcpd-service-type + (dhcpd-configuration + (config-file (local-file "my-dhcpd.conf")) + (interfaces '("enp0s25")))) +@end lisp +@end deffn + +@deftp {Data Type} dhcpd-configuration +@table @asis +@item @code{package} (default: @code{isc-dhcp}) +The package that provides the DHCP daemon. This package is expected to +provide the daemon at @file{sbin/dhcpd} relative to its output +directory. The default package is the +@uref{https://www.isc.org/products/DHCP, ISC's DHCP server}. +@item @code{config-file} (default: @code{#f}) +The configuration file to use. This is required. It will be passed to +@code{dhcpd} via its @code{-cf} option. This may be any ``file-like'' +object (@pxref{G-Expressions, file-like objects}). See @code{man +dhcpd.conf} for details on the configuration file syntax. +@item @code{version} (default: @code{"4"}) +The DHCP version to use. The ISC DHCP server supports the values ``4'', +``6'', and ``4o6''. These correspond to the @code{dhcpd} program +options @code{-4}, @code{-6}, and @code{-4o6}. See @code{man dhcpd} for +details. +@item @code{run-directory} (default: @code{"/run/dhcpd"}) +The run directory to use. At service activation time, this directory +will be created if it does not exist. +@item @code{pid-file} (default: @code{"/run/dhcpd/dhcpd.pid"}) +The PID file to use. This corresponds to the @code{-pf} option of +@code{dhcpd}. See @code{man dhcpd} for details. +@item @code{interfaces} (default: @code{'()}) +The names of the network interfaces on which dhcpd should listen for +broadcasts. If this list is not empty, then its elements (which must be +strings) will be appended to the @code{dhcpd} invocation when starting +the daemon. It may not be necessary to explicitly specify any +interfaces here; see @code{man dhcpd} for details. +@end table +@end deftp + @cindex hostapd service, for Wi-Fi access points @cindex Wi-Fi access points, hostapd service @defvr {Scheme Variable} hostapd-service-type @@ -17187,6 +17217,7 @@ network that can be seen on @code{wlan0}, by default. The service's value is a @code{hostapd-configuration} record. @end defvr + @cindex iptables @defvr {Scheme Variable} iptables-service-type This is the service type to set up an iptables configuration. iptables is a From 1759292c8b440cdd8e7d1ad4a2566035040793cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 25 Oct 2021 08:49:41 +0200 Subject: [PATCH 61/81] gnu: guile-netlink: Allow cross-compilation. * gnu/packages/guile-xyz.scm (guile-netlink)[arguments]: Remove, since #:tests? #f is unnecessary. [native-inputs]: Add GUILE-3.0. --- gnu/packages/guile-xyz.scm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index edd9c35004..37add951ac 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -4758,14 +4758,13 @@ locations.") (base32 "0jcl6mzqy04if5drflmygmggbgzsxa42mlmskqb3cfqmksq0zj0y")))) (build-system gnu-build-system) - (arguments - `(#:tests? #f)); no tests (inputs `(("guile" ,guile-3.0))) (native-inputs `(("automake" ,automake) ("autoconf" ,autoconf) ("pkg-config" ,pkg-config) + ("guile" ,guile-3.0) ;for 'guild compile' + guile.m4 ("texinfo" ,texinfo))) (home-page "https://git.lepiller.eu/guile-netlink") (synopsis "Netlink protocol implementation for Guile") From 0cc742b2616dff7359b548c58fc7d9b478a3e72d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 6 Oct 2021 23:06:47 +0200 Subject: [PATCH 62/81] services: static-networking: Use Guile-Netlink on GNU/Linux. * gnu/services/base.scm (static-networking-shepherd-service): Define 'set-up-via-ioctl', 'tear-down-via-ioctl', 'set-up-via-netlink', 'tear-down-via-netlink', and 'helpers' and use them in 'start' and 'stop'. Add (ip *) modules to 'modules'. --- gnu/services/base.scm | 102 +++++++++++++++++++++++++++++------------- 1 file changed, 72 insertions(+), 30 deletions(-) diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 2631478b9e..7008ab137c 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -53,6 +53,7 @@ #:use-module (gnu packages bash) #:use-module ((gnu packages base) #:select (coreutils glibc glibc-utf8-locales)) + #:autoload (gnu packages guile-xyz) (guile-netlink) #:use-module (gnu packages package-management) #:use-module ((gnu packages gnupg) #:select (guile-gcrypt)) #:use-module (gnu packages linux) @@ -2375,6 +2376,66 @@ Linux @dfn{kernel mode setting} (KMS)."))) (($ interface ip netmask gateway provision requirement name-servers) (let ((loopback? (and provision (memq 'loopback provision)))) + (define set-up-via-ioctl + #~(let* ((addr (inet-pton AF_INET #$ip)) + (sockaddr (make-socket-address AF_INET addr 0)) + (mask (and #$netmask (inet-pton AF_INET #$netmask))) + (maskaddr (and mask + (make-socket-address AF_INET mask 0))) + (gateway (and #$gateway + (inet-pton AF_INET #$gateway))) + (gatewayaddr (and gateway + (make-socket-address AF_INET + gateway 0)))) + (configure-network-interface #$interface sockaddr + (logior IFF_UP + #$(if loopback? + #~IFF_LOOPBACK + 0)) + #:netmask maskaddr) + (when gateway + (let ((sock (socket AF_INET SOCK_DGRAM 0))) + (add-network-route/gateway sock gatewayaddr) + (close-port sock))))) + + (define tear-down-via-ioctl + #~(let ((sock (socket AF_INET SOCK_STREAM 0))) + (when #$gateway + (delete-network-route sock + (make-socket-address AF_INET + INADDR_ANY 0))) + (set-network-interface-flags sock #$interface 0) + (close-port sock) + #f)) + + (define set-up-via-netlink + (with-extensions (list guile-netlink) + #~(let ((ip #$(if netmask + #~(ip+netmask->cidr #$ip #$netmask) + ip))) + (addr-add #$interface ip) + (when #$gateway + (route-add "default" #:device #$interface + #:via #$gateway)) + (link-set #$interface #:up #t)))) + + (define tear-down-via-netlink + (with-extensions (list guile-netlink) + #~(begin + (link-set #$interface #:down #t) + (when #$gateway + (route-del "default" #:device #$interface)) + (addr-del #$interface #$ip) + #f))) + + (define helpers + #~(define (ip+netmask->cidr ip netmask) + ;; Return the CIDR notation (a string) for IP and NETMASK, two + ;; IPv4 address strings. + (let* ((netmask (inet-pton AF_INET netmask)) + (bits (logcount netmask))) + (string-append ip "/" (number->string bits))))) + (shepherd-service (documentation @@ -2386,38 +2447,19 @@ Linux @dfn{kernel mode setting} (KMS)."))) (start #~(lambda _ ;; Return #t if successfully started. - (let* ((addr (inet-pton AF_INET #$ip)) - (sockaddr (make-socket-address AF_INET addr 0)) - (mask (and #$netmask - (inet-pton AF_INET #$netmask))) - (maskaddr (and mask - (make-socket-address AF_INET - mask 0))) - (gateway (and #$gateway - (inet-pton AF_INET #$gateway))) - (gatewayaddr (and gateway - (make-socket-address AF_INET - gateway 0)))) - (configure-network-interface #$interface sockaddr - (logior IFF_UP - #$(if loopback? - #~IFF_LOOPBACK - 0)) - #:netmask maskaddr) - (when gateway - (let ((sock (socket AF_INET SOCK_DGRAM 0))) - (add-network-route/gateway sock gatewayaddr) - (close-port sock)))))) + #$helpers + (if (string-contains %host-type "-linux") + #$set-up-via-netlink + #$set-up-via-ioctl))) (stop #~(lambda _ ;; Return #f is successfully stopped. - (let ((sock (socket AF_INET SOCK_STREAM 0))) - (when #$gateway - (delete-network-route sock - (make-socket-address - AF_INET INADDR_ANY 0))) - (set-network-interface-flags sock #$interface 0) - (close-port sock) - #f))) + (if (string-contains %host-type "-linux") + #$tear-down-via-netlink + #$tear-down-via-ioctl))) + (modules `((ip addr) + (ip link) + (ip route) + ,@%default-modules)) (respawn? #f)))))) (define (static-networking-etc-files interfaces) From 39e3b4b7cee175a3c1f37329744c582528d55f5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 25 Oct 2021 08:33:04 +0200 Subject: [PATCH 63/81] services: secret-service: Turn into a Shepherd service. * gnu/services/virtualization.scm (secret-service-activation): Remove. (secret-service-shepherd-services): New procedure. (secret-service-type)[extensions]: Remove ACTIVATION-SERVICE-TYPE extension. Add SHEPHERD-ROOT-SERVICE-TYPE and USER-PROCESSES-SERVICE-TYPE extensions. * gnu/build/secret-service.scm (delete-file*): New procedure. (secret-service-receive-secrets): Use it. --- gnu/build/secret-service.scm | 17 ++++++++++++- gnu/services/virtualization.scm | 45 ++++++++++++++++++++++++--------- 2 files changed, 49 insertions(+), 13 deletions(-) diff --git a/gnu/build/secret-service.scm b/gnu/build/secret-service.scm index 46dcf1b9c3..4e183e11e8 100644 --- a/gnu/build/secret-service.scm +++ b/gnu/build/secret-service.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2020 Ludovic Courtès +;;; Copyright © 2020, 2021 Ludovic Courtès ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen ;;; ;;; This file is part of GNU Guix. @@ -111,6 +111,15 @@ wait for at most HANDSHAKE-TIMEOUT seconds for handshake to complete. Return (close-port sock) #f)))) +(define (delete-file* file) + "Ensure FILE does not exist." + (catch 'system-error + (lambda () + (delete-file file)) + (lambda args + (unless (= ENOENT (system-error-errno args)) + (apply throw args))))) + (define (secret-service-receive-secrets port) "Listen to local PORT and wait for a secret service client to send secrets. Write them to the file system. Return the list of files installed on success, @@ -170,6 +179,12 @@ and #f otherwise." (log "installing file '~a' (~a bytes)...~%" file size) (mkdir-p (dirname file)) + + ;; It could be that FILE already exists, for instance + ;; because it has been created by a service's activation + ;; snippet (e.g., SSH host keys). Delete it. + (delete-file* file) + (call-with-output-file file (lambda (output) (dump port output size) diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm index 4222bb4353..66ae1a1565 100644 --- a/gnu/services/virtualization.scm +++ b/gnu/services/virtualization.scm @@ -898,23 +898,44 @@ specified, the QEMU default path is used.")) ;;; Secrets for guest VMs. ;;; -(define (secret-service-activation port) - "Return an activation snippet that fetches sensitive material at local PORT, +(define (secret-service-shepherd-services port) + "Return a Shepherd service that fetches sensitive material at local PORT, over TCP. Reboot upon failure." - (with-imported-modules '((gnu build secret-service) - (guix build utils)) - #~(begin - (use-modules (gnu build secret-service)) - (let ((sent (secret-service-receive-secrets #$port))) - (unless sent - (sleep 3) - (reboot)))))) + ;; This is a Shepherd service, rather than an activation snippet, to make + ;; sure it is started once 'networking' is up so it can accept incoming + ;; connections. + (list + (shepherd-service + (documentation "Fetch secrets from the host at startup time.") + (provision '(secret-service-client)) + (requirement '(loopback networking)) + (modules '((gnu build secret-service) + (guix build utils))) + (start (with-imported-modules '((gnu build secret-service) + (guix build utils)) + #~(lambda () + ;; Since shepherd's output port goes to /dev/log, write this + ;; message to stderr so it's visible on the Mach console. + (format (current-error-port) + "receiving secrets from the host...~%") + (force-output (current-error-port)) + + (let ((sent (secret-service-receive-secrets #$port))) + (unless sent + (sleep 3) + (reboot)))))) + (stop #~(const #f))))) (define secret-service-type (service-type (name 'secret-service) - (extensions (list (service-extension activation-service-type - secret-service-activation))) + (extensions (list (service-extension shepherd-root-service-type + secret-service-shepherd-services) + + ;; Make every Shepherd service depend on + ;; 'secret-service-client'. + (service-extension user-processes-service-type + (const '(secret-service-client))))) (description "This service fetches secret key and other sensitive material over TCP at boot time. This service is meant to be used by virtual machines (VMs) that From 223f1b1eb3707f1d3ef91200dd616ee6c8b77db0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 17 Oct 2021 23:43:52 +0200 Subject: [PATCH 64/81] services: static-networking: Change interface to mimic netlink. * gnu/services/base.scm ()[interface, ip, netmask] [gateway]: Remove. [addresses, links, routes]: New fields. [requirement]: Default to '(udev). (, , ): New record types. (ensure-no-separate-netmask, %ensure-no-separate-netmask): Remove. (ipv6-address?, cidr->netmask, ip+netmask->cidr) (network-set-up/hurd, network-tear-down/hurd) (network-set-up/linux, network-tear-down/linux) (static-networking->hurd-pfinet-options): New procedures. (static-networking-shepherd-service): New procedure. (static-networking-shepherd-services): Rewrite in terms of the above. (static-networking-service): Deprecate. Adjust to new 'static-networking' API. (%base-services): Likewise. * gnu/system/install.scm (%installation-services): Likewise. * gnu/system/hurd.scm (%base-services/hurd): Likewise, and separate 'loopback' from 'networking'. * gnu/build/hurd-boot.scm (set-hurd-device-translators): Remove "servers/socket/2". * gnu/tests/networking.scm (run-openvswitch-test)["networking has started on ovs0"]: Check for 'networking instead of 'networking-ovs0, which is no longer provided. * doc/guix.texi (Networking Setup): Document the new interface. Remove documentation of 'static-networking-service'. (Virtualization Services): Change Ganeti example to use the new interface. --- doc/guix.texi | 190 ++++++++++++++--- gnu/build/hurd-boot.scm | 10 +- gnu/services/base.scm | 425 +++++++++++++++++++++++++++------------ gnu/system/hurd.scm | 27 ++- gnu/system/install.scm | 11 +- gnu/tests/networking.scm | 2 +- 6 files changed, 494 insertions(+), 171 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 1535fb9f93..73ad818cb6 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -16852,32 +16852,165 @@ This section describes the various network setup services available, starting with static network configuration. @defvr {Scheme Variable} static-networking-service-type -This is the type for statically-configured network interfaces. -@c TODO Document data structures. +This is the type for statically-configured network interfaces. Its +value must be a list of @code{static-networking} records. Each of them +declares a set of @dfn{addresses}, @dfn{routes}, and @dfn{links}, as +show below. + +@cindex network interface controller (NIC) +@cindex NIC, networking interface controller +Here is the simplest configuration, with only one network interface +controller (NIC) and only IPv4 connectivity: + +@example +;; Static networking for one NIC, IPv4-only. +(service static-networking-service-type + (list (static-networking + (addresses + (list (network-address + (device "eno1") + (value "10.0.2.15/24")))) + (routes + (list (network-route + (destination "default") + (gateway "10.0.2.2")))) + (name-servers '("10.0.2.3"))))) +@end example + +The snippet above can be added to the @code{services} field of your +operating system configuration (@pxref{Using the Configuration System}). +It will configure your machine to have 10.0.2.15 as its IP address, with +a 24-bit netmask for the local network---meaning that any 10.0.2.@var{x} +address is on the local area network (LAN). Traffic to addresses +outside the local network is routed @i{via} 10.0.2.2. Host names are +resolved by sending domain name system (DNS) queries to 10.0.2.3. @end defvr -@deffn {Scheme Procedure} static-networking-service @var{interface} @var{ip} @ - [#:netmask #f] [#:gateway #f] [#:name-servers @code{'()}] @ - [#:requirement @code{'(udev)}] -Return a service that starts @var{interface} with address @var{ip}. If -@var{netmask} is true, use it as the network mask. If @var{gateway} is true, -it must be a string specifying the default network gateway. @var{requirement} -can be used to declare a dependency on another service before configuring the -interface. +@deftp {Data Type} static-networking +This is the data type representing a static network configuration. -This procedure can be called several times, one for each network -interface of interest. Behind the scenes what it does is extend -@code{static-networking-service-type} with additional network interfaces -to handle. - -For example: +As an example, here is how you would declare the configuration of a +machine with a single network interface controller (NIC) available as +@code{eno1}, and with one IPv4 and one IPv6 address: @lisp -(static-networking-service "eno1" "192.168.1.82" - #:gateway "192.168.1.2" - #:name-servers '("192.168.1.2")) +;; Network configuration for one NIC, IPv4 + IPv6. +(static-networking + (addresses (list (network-address + (device "eno1") + (value "10.0.2.15/24")) + (network-address + (device "eno1") + (value "2001:123:4567:101::1/64")))) + (routes (list (network-route + (destination "default") + (gateway "10.0.2.2")) + (network-route + (destination "default") + (gateway "2020:321:4567:42::1")))) + (name-servers '("10.0.2.3"))) @end lisp -@end deffn + +If you are familiar with the @command{ip} command of the +@uref{https://wiki.linuxfoundation.org/networking/iproute2, +@code{iproute2} package} found on Linux-based systems, the declaration +above is equivalent to typing: + +@example +ip address add 10.0.2.15/24 dev eno1 +ip address add 2001:123:4567:101::1/64 dev eno1 +ip route add default via inet 10.0.2.2 +ip route add default via inet6 2020:321:4567:42::1 +@end example + +Run @command{man 8 ip} for more info. Venerable GNU/Linux users will +certainly know how to do it with @command{ifconfig} and @command{route}, +but we'll spare you that. + +The available fields of this data type are as follows: + +@table @asis +@item @code{addresses} +@itemx @code{links} (default: @code{'()}) +@itemx @code{routes} (default: @code{'()}) +The list of @code{network-address}, @code{network-link}, and +@code{network-route} records for this network (see below). + +@item @code{name-servers} (default: @code{'()}) +The list of IP addresses (strings) of domain name servers. These IP +addresses go to @file{/etc/resolv.conf}. + +@item @code{provision} (default: @code{'(networking)}) +If true, this should be a list of symbols for the Shepherd service +corresponding to this network configuration. + +@item @code{requirement} (default @code{'()}) +The list of Shepherd services depended on. +@end table +@end deftp + +@deftp {Data Type} network-address +This is the data type representing the IP address of a network +interface. + +@table @code +@item device +The name of the network interface for this address---e.g., +@code{"eno1"}. + +@item value +The actual IP address and network mask, in +@uref{https://en.wikipedia.org/wiki/CIDR#CIDR_notation, @acronym{CIDR, +Classless Inter-Domain Routing} notation}, as a string. + +For example, @code{"10.0.2.15/24"} denotes IPv4 address 10.0.2.15 on a +24-bit sub-network---all 10.0.2.@var{x} addresses are on the same local +network. + +@item ipv6? +Whether @code{value} denotes an IPv6 address. By default this is +automatically determined. +@end table +@end deftp + +@deftp {Data Type} network-route +This is the data type representing a network route. + +@table @asis +@item @code{destination} +The route destination (a string), either an IP address or +@code{"default"} to denote the default route. + +@item @code{source} (default: @code{#f}) +The route source. + +@item @code{device} (default: @code{#f}) +The device used for this route---e.g., @code{"eno2"}. + +@item @code{ipv6?} (default: auto) +Whether this is an IPv6 route. By default this is automatically +determined based on @code{destination} or @code{gateway}. + +@item @code{gateway} (default: @code{#f}) +IP address (a string) through which traffic is routed. +@end table +@end deftp + +@deftp {Data Type} network-link +Data type for a network link (@pxref{Link,,, guile-netlink, +Guile-Netlink Manual}). + +@table @code +@item name +The name of the link---e.g., @code{"v0p0"}. + +@item type +A symbol denoting the type of the link---e.g., @code{'veth}. + +@item arguments +List of arguments for this type of link. +@end table +@end deftp @cindex DHCP, networking service @defvr {Scheme Variable} dhcp-client-service-type @@ -30442,11 +30575,18 @@ cluster node that supports multiple storage backends, and installs the "ganeti-instance-guix" "ganeti-instance-debootstrap")) %base-packages)) (services - (append (list (static-networking-service "eth0" "192.168.1.201" - #:netmask "255.255.255.0" - #:gateway "192.168.1.254" - #:name-servers '("192.168.1.252" - "192.168.1.253")) + (append (list (service static-networking-service-type + (list (static-networking + (addresses + (list (network-address + (device "eth0") + (value "192.168.1.201/24")))) + (routes + (list (network-route + (destination "default") + (gateway "192.168.1.254")))) + (name-servers '("192.168.1.252" + "192.168.1.253"))))) ;; Ganeti uses SSH to communicate between nodes. (service openssh-service-type diff --git a/gnu/build/hurd-boot.scm b/gnu/build/hurd-boot.scm index 8b27995438..ac36bd17d4 100644 --- a/gnu/build/hurd-boot.scm +++ b/gnu/build/hurd-boot.scm @@ -185,13 +185,9 @@ set." ("servers/crash-suspend" ("/hurd/crash" "--suspend")) ("servers/password" ("/hurd/password")) ("servers/socket/1" ("/hurd/pflocal")) - ("servers/socket/2" ("/hurd/pfinet" - "--interface" "eth0" - "--address" - "10.0.2.15" ;the default QEMU guest IP - "--netmask" "255.255.255.0" - "--gateway" "10.0.2.2" - "--ipv6" "/servers/socket/26")) + ;; /servers/socket/2 and /26 are created by 'static-networking-service'. + ;; XXX: Spawn pfinet without arguments on these nodes so that a DHCP + ;; client has someone to talk to? ("proc" ("/hurd/procfs" "--stat-mode=444")))) (define devices diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 7008ab137c..d93ea6f063 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -35,6 +35,8 @@ (define-module (gnu services base) #:use-module (guix store) #:use-module (guix deprecation) + #:autoload (guix diagnostics) (warning) + #:autoload (guix i18n) (G_) #:use-module (gnu services) #:use-module (gnu services admin) #:use-module (gnu services shepherd) @@ -54,6 +56,7 @@ #:use-module ((gnu packages base) #:select (coreutils glibc glibc-utf8-locales)) #:autoload (gnu packages guile-xyz) (guile-netlink) + #:autoload (gnu packages hurd) (hurd) #:use-module (gnu packages package-management) #:use-module ((gnu packages gnupg) #:select (guile-gcrypt)) #:use-module (gnu packages linux) @@ -84,14 +87,32 @@ virtual-terminal-service-type static-networking - static-networking? - static-networking-interface - static-networking-ip - static-networking-netmask - static-networking-gateway + static-networking-addresses + static-networking-links + static-networking-routes static-networking-requirement + network-address + network-address? + network-address-device + network-address-value + network-address-ipv6? + + network-link + network-link? + network-link-name + network-link-type + network-link-arguments + + network-route + network-route? + network-route-destination + network-route-source + network-route-device + network-route-ipv6? + network-route-gateway + static-networking-service static-networking-service-type @@ -2355,113 +2376,267 @@ notably to select, copy, and paste text. The default options use the (description "Start the @command{kmscon} virtual terminal emulator for the Linux @dfn{kernel mode setting} (KMS)."))) + +;;; +;;; Static networking. +;;; + +(define (ipv6-address? str) + "Return true if STR denotes an IPv6 address." + (false-if-exception (->bool (inet-pton AF_INET6 str)))) + (define-record-type* static-networking make-static-networking static-networking? - (interface static-networking-interface) - (ip static-networking-ip) - (netmask static-networking-netmask - (default #f)) - (gateway static-networking-gateway ;FIXME: doesn't belong here - (default #f)) + (addresses static-networking-addresses) ;list of + (links static-networking-links (default '())) ;list of + (routes static-networking-routes (default '())) ;list of (provision static-networking-provision - (default #f)) + (default '(networking))) (requirement static-networking-requirement - (default '())) + (default '(udev))) (name-servers static-networking-name-servers ;FIXME: doesn't belong here (default '()))) -(define static-networking-shepherd-service +(define-record-type* + network-address make-network-address + network-address? + (device network-address-device) ;string--e.g., "en01" + (value network-address-value) ;string--CIDR notation + (ipv6? network-address-ipv6? ;Boolean + (thunked) + (default + (ipv6-address? (cidr->ip (network-address-value this-record)))))) + +(define-record-type* + network-link make-network-link + network-link? + (name network-link-name) ;string--e.g, "v0p0" + (type network-link-type) ;symbol--e.g.,'veth + (arguments network-link-arguments)) ;list + +(define-record-type* + network-route make-network-route + network-route? + (destination network-route-destination) + (source network-route-source (default #f)) + (device network-route-device (default #f)) + (ipv6? network-route-ipv6? (thunked) + (default + (or (ipv6-address? (network-route-destination this-record)) + (and=> (network-route-gateway this-record) + ipv6-address?)))) + (gateway network-route-gateway (default #f))) + +(define* (cidr->netmask str #:optional (family AF_INET)) + "Given @var{str}, a string in CIDR notation (e.g., \"1.2.3.4/24\"), return +the netmask as a string like \"255.255.255.0\"." + (match (string-split str #\/) + ((ip (= string->number bits)) + (let ((mask (ash (- (expt 2 bits) 1) + (- (if (= family AF_INET6) 128 32) + bits)))) + (inet-ntop family mask))) + (_ #f))) + +(define (cidr->ip str) + "Strip the netmask bit of @var{str}, a CIDR-notation IP/netmask address." + (match (string-split str #\/) + ((or (ip _) (ip)) + ip))) + +(define* (ip+netmask->cidr ip netmask #:optional (family AF_INET)) + "Return the CIDR notation (a string) for @var{ip} and @var{netmask}, two +@var{family} address strings, where @var{family} is @code{AF_INET} or +@code{AF_INET6}." + (let* ((netmask (inet-pton family netmask)) + (bits (logcount netmask))) + (string-append ip "/" (number->string bits)))) + +(define (static-networking->hurd-pfinet-options config) + "Return command-line options for the Hurd's pfinet translator corresponding +to CONFIG." + (unless (null? (static-networking-links config)) + ;; XXX: Presumably this is not supported, or perhaps could be approximated + ;; by running separate pfinet instances in some cases? + (warning (G_ "network links are currently ignored on GNU/Hurd~%"))) + + (match (static-networking-addresses config) + ((and addresses (first _ ...)) + `("--ipv6" "/servers/socket/26" + "--interface" ,(network-address-device first) + ,@(append-map (lambda (address) + `(,(if (network-address-ipv6? address) + "--address6" + "--address") + ,(cidr->ip (network-address-value address)) + ,@(match (cidr->netmask (network-address-value address) + (if (network-address-ipv6? address) + AF_INET6 + AF_INET)) + (#f '()) + (mask (list "--netmask" mask))))) + addresses) + ,@(append-map (lambda (route) + (match route + (($ "default" #f device _ gateway) + (if (network-route-ipv6? route) + `("--gateway6" ,gateway) + `("--gateway" ,gateway))) + (($ destination) + (warning (G_ "ignoring network route for '~a'~%") + destination) + '()))) + (static-networking-routes config)))))) + +(define (network-set-up/hurd config) + "Set up networking for the Hurd." + ;; The Hurd implements SIOCGIFADDR and other old-style ioctls, but the only + ;; way to set up IPv6 is by starting pfinet with the right options. + (if (equal? (static-networking-provision config) '(loopback)) + (scheme-file "set-up-pflocal" #~(begin 'nothing-to-do! #t)) + (scheme-file "set-up-pfinet" + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils) + (ice-9 format)) + + ;; TODO: Do that without forking. + (let ((options '#$(static-networking->hurd-pfinet-options + config))) + (format #t "starting '~a~{ ~s~}'~%" + #$(file-append hurd "/hurd/pfinet") + options) + (apply invoke #$(file-append hurd "/bin/settrans") "-fac" + "/servers/socket/2" + #$(file-append hurd "/hurd/pfinet") + options))))))) + +(define (network-tear-down/hurd config) + (scheme-file "tear-down-pfinet" + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils)) + + ;; Forcefully terminate pfinet. XXX: In theory this + ;; should just undo the addresses and routes of CONFIG; + ;; this could be done using ioctls like SIOCDELRT, but + ;; these are IPv4-only; another option would be to use + ;; fsysopts but that seems to crash pfinet. + (invoke #$(file-append hurd "/bin/settrans") "-fg" + "/servers/socket/2") + #f)))) + +(define network-set-up/linux (match-lambda - (($ interface ip netmask gateway provision - requirement name-servers) + (($ addresses links routes) + (scheme-file "set-up-network" + (with-extensions (list guile-netlink) + #~(begin + (use-modules (ip addr) (ip link) (ip route)) + + #$@(map (lambda (address) + #~(begin + (addr-add #$(network-address-device address) + #$(network-address-value address) + #:ipv6? + #$(network-address-ipv6? address)) + ;; FIXME: loopback? + (link-set #$(network-address-device address) + #:up #t))) + addresses) + #$@(map (match-lambda + (($ name type arguments) + #~(link-add #$name #$type + #:type-args '#$arguments))) + links) + #$@(map (lambda (route) + #~(route-add #$(network-route-destination route) + #:device + #$(network-route-device route) + #:ipv6? + #$(network-route-ipv6? route) + #:via + #$(network-route-gateway route) + #:src + #$(network-route-source route))) + routes) + #t)))))) + +(define network-tear-down/linux + (match-lambda + (($ addresses links routes) + (scheme-file "tear-down-network" + (with-extensions (list guile-netlink) + #~(begin + (use-modules (ip addr) (ip link) (ip route) + (netlink error) + (srfi srfi-34)) + + (define-syntax-rule (false-if-netlink-error exp) + (guard (c ((netlink-error? c) #f)) + exp)) + + ;; Wrap calls in 'false-if-netlink-error' so this + ;; script goes as far as possible undoing the effects + ;; of "set-up-network". + + #$@(map (lambda (route) + #~(false-if-netlink-error + (route-del #$(network-route-destination route) + #:device + #$(network-route-device route) + #:ipv6? + #$(network-route-ipv6? route) + #:via + #$(network-route-gateway route) + #:src + #$(network-route-source route)))) + routes) + #$@(map (match-lambda + (($ name type arguments) + #~(false-if-netlink-error + (link-del #$name)))) + links) + #$@(map (lambda (address) + #~(false-if-netlink-error + (addr-del #$(network-address-device + address) + #$(network-address-value address) + #:ipv6? + #$(network-address-ipv6? address)))) + addresses) + #f)))))) + +(define (static-networking-shepherd-service config) + (match config + (($ addresses links routes + provision requirement name-servers) (let ((loopback? (and provision (memq 'loopback provision)))) - (define set-up-via-ioctl - #~(let* ((addr (inet-pton AF_INET #$ip)) - (sockaddr (make-socket-address AF_INET addr 0)) - (mask (and #$netmask (inet-pton AF_INET #$netmask))) - (maskaddr (and mask - (make-socket-address AF_INET mask 0))) - (gateway (and #$gateway - (inet-pton AF_INET #$gateway))) - (gatewayaddr (and gateway - (make-socket-address AF_INET - gateway 0)))) - (configure-network-interface #$interface sockaddr - (logior IFF_UP - #$(if loopback? - #~IFF_LOOPBACK - 0)) - #:netmask maskaddr) - (when gateway - (let ((sock (socket AF_INET SOCK_DGRAM 0))) - (add-network-route/gateway sock gatewayaddr) - (close-port sock))))) - - (define tear-down-via-ioctl - #~(let ((sock (socket AF_INET SOCK_STREAM 0))) - (when #$gateway - (delete-network-route sock - (make-socket-address AF_INET - INADDR_ANY 0))) - (set-network-interface-flags sock #$interface 0) - (close-port sock) - #f)) - - (define set-up-via-netlink - (with-extensions (list guile-netlink) - #~(let ((ip #$(if netmask - #~(ip+netmask->cidr #$ip #$netmask) - ip))) - (addr-add #$interface ip) - (when #$gateway - (route-add "default" #:device #$interface - #:via #$gateway)) - (link-set #$interface #:up #t)))) - - (define tear-down-via-netlink - (with-extensions (list guile-netlink) - #~(begin - (link-set #$interface #:down #t) - (when #$gateway - (route-del "default" #:device #$interface)) - (addr-del #$interface #$ip) - #f))) - - (define helpers - #~(define (ip+netmask->cidr ip netmask) - ;; Return the CIDR notation (a string) for IP and NETMASK, two - ;; IPv4 address strings. - (let* ((netmask (inet-pton AF_INET netmask)) - (bits (logcount netmask))) - (string-append ip "/" (number->string bits))))) - (shepherd-service (documentation "Bring up the networking interface using a static IP address.") (requirement requirement) - (provision (or provision - (list (symbol-append 'networking- - (string->symbol interface))))) + (provision provision) (start #~(lambda _ ;; Return #t if successfully started. - #$helpers - (if (string-contains %host-type "-linux") - #$set-up-via-netlink - #$set-up-via-ioctl))) + (load #$(let-system (system target) + (if (string-contains (or target system) "-linux") + (network-set-up/linux config) + (network-set-up/hurd config)))))) (stop #~(lambda _ ;; Return #f is successfully stopped. - (if (string-contains %host-type "-linux") - #$tear-down-via-netlink - #$tear-down-via-ioctl))) - (modules `((ip addr) - (ip link) - (ip route) - ,@%default-modules)) + (load #$(let-system (system target) + (if (string-contains (or target system) "-linux") + (network-tear-down/linux config) + (network-tear-down/hurd config)))))) (respawn? #f)))))) +(define (static-networking-shepherd-services networks) + (map static-networking-shepherd-service networks)) + (define (static-networking-etc-files interfaces) "Return a /etc/resolv.conf entry for INTERFACES or the empty list." (match (delete-duplicates @@ -2480,30 +2655,6 @@ Linux @dfn{kernel mode setting} (KMS)."))) # Generated by 'static-networking-service'.\n" content)))))))) -(define (static-networking-shepherd-services interfaces) - "Return the list of Shepherd services to bring up INTERFACES, a list of - objects." - (define (loopback? service) - (memq 'loopback (shepherd-service-provision service))) - - (let ((services (map static-networking-shepherd-service interfaces))) - (match (remove loopback? services) - (() - ;; There's no interface other than 'loopback', so we assume that the - ;; 'networking' service will be provided by dhclient or similar. - services) - ((non-loopback ...) - ;; Assume we're providing all the interfaces, and thus, provide a - ;; 'networking' service. - (cons (shepherd-service - (provision '(networking)) - (requirement (append-map shepherd-service-provision - services)) - (start #~(const #t)) - (stop #~(const #f)) - (documentation "Bring up all the networking interfaces.")) - services))))) - (define static-networking-service-type ;; The service type for statically-defined network interfaces. (service-type (name 'static-networking) @@ -2521,12 +2672,13 @@ with the given IP address, gateway, netmask, and so on. The value for services of this type is a list of @code{static-networking} objects, one per network interface."))) -(define* (static-networking-service interface ip - #:key - netmask gateway provision - ;; Most interfaces require udev to be usable. - (requirement '(udev)) - (name-servers '())) +(define-deprecated (static-networking-service interface ip + #:key + netmask gateway provision + ;; Most interfaces require udev to be usable. + (requirement '(udev)) + (name-servers '())) + static-networking-service-type "Return a service that starts @var{interface} with address @var{ip}. If @var{netmask} is true, use it as the network mask. If @var{gateway} is true, it must be a string specifying the default network gateway. @@ -2537,11 +2689,24 @@ interface of interest. Behind the scenes what it does is extend to handle." (simple-service 'static-network-interface static-networking-service-type - (list (static-networking (interface interface) (ip ip) - (netmask netmask) (gateway gateway) - (provision provision) - (requirement requirement) - (name-servers name-servers))))) + (list (static-networking + (addresses + (list (network-address + (device interface) + (value (if netmask + (ip+netmask->cidr ip netmask) + ip)) + (ipv6? #f)))) + (routes + (if gateway + (list (network-route + (destination "default") + (gateway gateway) + (ipv6? #f))) + '())) + (requirement requirement) + (provision (or provision '(networking))) + (name-servers name-servers))))) (define %base-services @@ -2573,10 +2738,12 @@ to handle." (tty "tty6"))) (service static-networking-service-type - (list (static-networking (interface "lo") - (ip "127.0.0.1") - (requirement '()) - (provision '(loopback))))) + (list (static-networking + (addresses (list (network-address + (device "lo") + (value "127.0.0.1")))) + (requirement '()) + (provision '(loopback))))) (syslog-service) (service urandom-seed-service-type) (service guix-service-type) diff --git a/gnu/system/hurd.scm b/gnu/system/hurd.scm index 0794671ce4..0e73ca0d99 100644 --- a/gnu/system/hurd.scm +++ b/gnu/system/hurd.scm @@ -79,11 +79,28 @@ (service hurd-getty-service-type (hurd-getty-configuration (tty "tty2"))) (service static-networking-service-type - (list (static-networking (interface "lo") - (ip "127.0.0.1") - (requirement '()) - (provision '(loopback networking)) - (name-servers '("10.0.2.3"))))) + (list (static-networking + (addresses + (list (network-address + (device "lo") + (value "127.0.0.1")))) + (requirement '()) + (provision '(loopback))) + (static-networking + (addresses + ;; The default QEMU guest address. To get "eth0", + ;; you need QEMU to emulate a device for which Mach + ;; has an in-kernel driver, for instance with: + ;; --device rtl8139,netdev=net0 --netdev user,id=net0 + (list (network-address + (device "eth0") + (value "10.0.2.15/24")))) + (routes + (list (network-route + (destination "default") + (gateway "10.0.2.2")))) + (provision '(networking)) + (name-servers '("10.0.2.3"))))) (syslog-service) (service guix-service-type (guix-configuration diff --git a/gnu/system/install.scm b/gnu/system/install.scm index 7b394184ad..bdfe580145 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -408,10 +408,13 @@ Access documentation at any time by pressing Alt-F2.\x1b[0m ;; Loopback device, needed by OpenSSH notably. (service static-networking-service-type - (list (static-networking (interface "lo") - (ip "127.0.0.1") - (requirement '()) - (provision '(loopback))))) + (list (static-networking + (addresses + (list (network-address + (device "lo") + (value "127.0.0.1")))) + (requirement '()) + (provision '(loopback))))) (service wpa-supplicant-service-type) (dbus-service) diff --git a/gnu/tests/networking.scm b/gnu/tests/networking.scm index 131428c128..c66af279f2 100644 --- a/gnu/tests/networking.scm +++ b/gnu/tests/networking.scm @@ -337,7 +337,7 @@ port 7, and a dict service on port 2628." (srfi srfi-1)) (live-service-running (find (lambda (live) - (memq 'networking-ovs0 + (memq 'networking (live-service-provision live))) (current-services)))) marionette)) From 1644f4f1f8957f3f3a88037aed80d501fdceaae7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 27 Oct 2021 12:20:49 +0200 Subject: [PATCH 65/81] services: Define '%qemu-static-networking'. * gnu/services/base.scm (%qemu-static-networking): New variable. * gnu/system/hurd.scm (%base-services/hurd): Use it. * doc/guix.texi (Networking Setup): Document it. --- doc/guix.texi | 8 ++++++++ gnu/services/base.scm | 16 ++++++++++++++++ gnu/system/hurd.scm | 21 ++++++--------------- 3 files changed, 30 insertions(+), 15 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 73ad818cb6..22f710d0c1 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -17012,6 +17012,14 @@ List of arguments for this type of link. @end table @end deftp +@cindex networking, with QEMU +@cindex QEMU, networking +@defvr {Scheme Variable} %qemu-static-networking +This is the @code{static-networking} record representing network setup +when using QEMU's user-mode network stack on @code{eth0} (@pxref{Using +the user mode network stack,,, QEMU, QEMU Documentation}). +@end defvr + @cindex DHCP, networking service @defvr {Scheme Variable} dhcp-client-service-type This is the type of services that run @var{dhcp}, a Dynamic Host Configuration diff --git a/gnu/services/base.scm b/gnu/services/base.scm index d93ea6f063..31b418dabf 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -116,6 +116,8 @@ static-networking-service static-networking-service-type + %qemu-static-networking + udev-configuration udev-configuration? udev-configuration-rules @@ -2708,6 +2710,20 @@ to handle." (provision (or provision '(networking))) (name-servers name-servers))))) +(define %qemu-static-networking + ;; Networking configuration for QEMU's user-mode network stack (info "(QEMU) + ;; Using the user mode network stack"). + (static-networking + (addresses (list (network-address + (device "eth0") + (value "10.0.2.15/24")))) + (routes (list (network-route + (destination "default") + (gateway "10.0.2.2")))) + (requirement '()) + (provision '(networking)) + (name-servers '("10.0.2.3")))) + (define %base-services ;; Convenience variable holding the basic services. diff --git a/gnu/system/hurd.scm b/gnu/system/hurd.scm index 0e73ca0d99..ec8484d746 100644 --- a/gnu/system/hurd.scm +++ b/gnu/system/hurd.scm @@ -86,21 +86,12 @@ (value "127.0.0.1")))) (requirement '()) (provision '(loopback))) - (static-networking - (addresses - ;; The default QEMU guest address. To get "eth0", - ;; you need QEMU to emulate a device for which Mach - ;; has an in-kernel driver, for instance with: - ;; --device rtl8139,netdev=net0 --netdev user,id=net0 - (list (network-address - (device "eth0") - (value "10.0.2.15/24")))) - (routes - (list (network-route - (destination "default") - (gateway "10.0.2.2")))) - (provision '(networking)) - (name-servers '("10.0.2.3"))))) + + ;; QEMU user-mode networking. To get "eth0", you need + ;; QEMU to emulate a device for which Mach has an + ;; in-kernel driver, for instance with: + ;; --device rtl8139,netdev=net0 --netdev user,id=net0 + %qemu-static-networking)) (syslog-service) (service guix-service-type (guix-configuration From 5967aee398c26a4814da1d8dba3f2dba84b06a4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 27 Oct 2021 12:26:31 +0200 Subject: [PATCH 66/81] services: Define '%loopback-static-networking'. * gnu/services/base.scm (%loopback-static-networking): New variable. (%base-services): Use it. * gnu/system/hurd.scm (%base-services/hurd): Use it. * gnu/system/install.scm (%installation-services): Use it. * doc/guix.texi (Networking Setup): Document it. --- doc/guix.texi | 7 +++++++ gnu/services/base.scm | 17 +++++++++++------ gnu/system/hurd.scm | 8 +------- gnu/system/install.scm | 8 +------- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 22f710d0c1..c00ec81e44 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -17012,6 +17012,13 @@ List of arguments for this type of link. @end table @end deftp +@cindex loopback device +@defvr {Scheme Variable} %loopback-static-networking +This is the @code{static-networking} record representing the ``loopback +device'', @code{lo}, for IP addresses 127.0.0.1 and ::1, and providing +the @code{loopback} Shepherd service. +@end defvr + @cindex networking, with QEMU @cindex QEMU, networking @defvr {Scheme Variable} %qemu-static-networking diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 31b418dabf..5f93483dda 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -116,6 +116,7 @@ static-networking-service static-networking-service-type + %loopback-static-networking %qemu-static-networking udev-configuration @@ -2710,6 +2711,15 @@ to handle." (provision (or provision '(networking))) (name-servers name-servers))))) +(define %loopback-static-networking + ;; The loopback device. + (static-networking + (addresses (list (network-address + (device "lo") + (value "127.0.0.1")))) + (requirement '()) + (provision '(loopback)))) + (define %qemu-static-networking ;; Networking configuration for QEMU's user-mode network stack (info "(QEMU) ;; Using the user mode network stack"). @@ -2754,12 +2764,7 @@ to handle." (tty "tty6"))) (service static-networking-service-type - (list (static-networking - (addresses (list (network-address - (device "lo") - (value "127.0.0.1")))) - (requirement '()) - (provision '(loopback))))) + (list %loopback-static-networking)) (syslog-service) (service urandom-seed-service-type) (service guix-service-type) diff --git a/gnu/system/hurd.scm b/gnu/system/hurd.scm index ec8484d746..2acc7b7e11 100644 --- a/gnu/system/hurd.scm +++ b/gnu/system/hurd.scm @@ -79,13 +79,7 @@ (service hurd-getty-service-type (hurd-getty-configuration (tty "tty2"))) (service static-networking-service-type - (list (static-networking - (addresses - (list (network-address - (device "lo") - (value "127.0.0.1")))) - (requirement '()) - (provision '(loopback))) + (list %loopback-static-networking ;; QEMU user-mode networking. To get "eth0", you need ;; QEMU to emulate a device for which Mach has an diff --git a/gnu/system/install.scm b/gnu/system/install.scm index bdfe580145..073d7df1db 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -408,13 +408,7 @@ Access documentation at any time by pressing Alt-F2.\x1b[0m ;; Loopback device, needed by OpenSSH notably. (service static-networking-service-type - (list (static-networking - (addresses - (list (network-address - (device "lo") - (value "127.0.0.1")))) - (requirement '()) - (provision '(loopback))))) + (list %loopback-static-networking)) (service wpa-supplicant-service-type) (dbus-service) From f73ba627abd46018da7f6f41ebd5efb99412cc54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 27 Oct 2021 12:29:56 +0200 Subject: [PATCH 67/81] tests: Replace uses of deprecated 'static-networking-service'. * gnu/tests/ganeti.scm (%ganeti-os): Replace call to 'static-networking-service' by instantiating STATIC-NETWORKING-SERVICE-TYPE. * gnu/tests/networking.scm (%test-static-networking) (%openvswitch-os, %dhcpd-os): Likewise. --- gnu/tests/ganeti.scm | 7 ++----- gnu/tests/networking.scm | 29 ++++++++++++++++++----------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/gnu/tests/ganeti.scm b/gnu/tests/ganeti.scm index 5ac2fd48dd..c29b885a5e 100644 --- a/gnu/tests/ganeti.scm +++ b/gnu/tests/ganeti.scm @@ -59,11 +59,8 @@ (packages (append (list ganeti-instance-debootstrap ganeti-instance-guix) %base-packages)) (services - (append (list (static-networking-service "eth0" "10.0.2.15" - #:netmask "255.255.255.0" - #:gateway "10.0.2.2" - #:name-servers '("10.0.2.3")) - + (append (list (service static-networking-service-type + (list %qemu-static-networking)) (service openssh-service-type (openssh-configuration (permit-root-login 'prohibit-password))) diff --git a/gnu/tests/networking.scm b/gnu/tests/networking.scm index c66af279f2..246e0a15fa 100644 --- a/gnu/tests/networking.scm +++ b/gnu/tests/networking.scm @@ -122,10 +122,8 @@ (value (let ((os (marionette-operating-system (simple-operating-system - (static-networking-service "eth0" "10.0.2.15" - #:netmask "255.255.255.0" - #:gateway "10.0.2.2" - #:name-servers '("10.0.2.2"))) + (service static-networking-service-type + (list %qemu-static-networking))) #:imported-modules '((gnu services herd) (guix combinators))))) (run-static-networking-test (virtual-machine os)))))) @@ -275,9 +273,13 @@ port 7, and a dict service on port 2628." (define %openvswitch-os (operating-system (inherit (simple-operating-system - (static-networking-service "ovs0" "10.1.1.1" - #:netmask "255.255.255.252" - #:requirement '(openvswitch-configuration)) + (simple-service 'openswitch-networking + static-networking-service-type + (list (static-networking + (addresses (list (network-address + (value "10.1.1.1/24") + (device "ovs0")))) + (requirement '(openvswitch-configuration))))) (service openvswitch-service-type) openvswitch-configuration-service)) ;; Ensure the interface name does not change depending on the driver. @@ -392,10 +394,15 @@ subnet 192.168.1.0 netmask 255.255.255.0 { (define %dhcpd-os (simple-operating-system - (static-networking-service "ens3" "192.168.1.4" - #:netmask "255.255.255.0" - #:gateway "192.168.1.1" - #:name-servers '("192.168.1.2" "192.168.1.3")) + (service static-networking-service-type + (list (static-networking + (addresses (list (network-address + (value "192.168.1.4/24") + (device "ens3")))) + (routes (list (network-route + (destination "default") + (gateway "192.168.1.1")))) + (name-servers '("192.168.1.2" "192.168.1.3"))))) (service dhcpd-service-type dhcpd-v4-configuration))) (define (run-dhcpd-test) From c8609493ba6fd36c05815cad198060e54ea8c4f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 13 Dec 2021 00:08:47 +0100 Subject: [PATCH 68/81] news: Add entry about 'static-networking-service-type'. * etc/news.scm: Add entry. --- etc/news.scm | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/etc/news.scm b/etc/news.scm index 7c313a450a..49b0664edd 100644 --- a/etc/news.scm +++ b/etc/news.scm @@ -25,6 +25,59 @@ (channel-news (version 0) + (entry (commit "223f1b1eb3707f1d3ef91200dd616ee6c8b77db0") + (title + (en "Improved static networking support on Guix System") + (fr "Meilleure prise en charge de réseaux statiques sur Guix System")) + (body + (en "Support for declarative static networking setup on Guix System +has been improved. It now allows you to list IPv4 and IPv6 addresses in +routes in a flexible way, similar to what you would do with the @command{ip} +command, but in a declarative fashion, as in this example: + +@lisp +;; Static networking for one NIC, IPv4-only. +(service static-networking-service-type + (list (static-networking + (addresses + (list (network-address + (device \"eno1\") + (value \"10.0.2.15/24\")))) + (routes + (list (network-route + (destination \"default\") + (gateway \"10.0.2.2\")))) + (name-servers '(\"10.0.2.3\"))))) +@end lisp + +The @code{static-networking-service} procedure remains available but is +deprecated. Run @command{info \"(guix) Networking Setup\"} for more +information.") + (fr "La configuration déclarative et statique du réseau est mieux +prise en charge sur Guix System. Il est maintenant possible d'énumérer des +adresses IPv6 et IPv4 et les chemins avec plus de flexibilité, un peu comme ce +qu'on peut faire avec la commande @command{ip} mais de manière déclarative, +comme dans cet exemple : + +@lisp +;; Réseau statique à une seule interface, IPv4 seulement. +(service static-networking-service-type + (list (static-networking + (addresses + (list (network-address + (device \"eno1\") + (value \"10.0.2.15/24\")))) + (routes + (list (network-route + (destination \"default\") + (gateway \"10.0.2.2\")))) + (name-servers '(\"10.0.2.3\"))))) +@end lisp + +La procédure @code{static-networking-service} reste disponible mais elle est +obsolète. Lancer @command{info \"(guix) Networking Setup\"} pour plus +d'informations."))) + (entry (commit "52cb5cf5b852117b5151a67af187d80764849ad3") (title (en "Icedove 91: profile folder moved to @file{~/.thunderbird}") From e49f9f68dc5f2537a042b6288e5710c3dc6c5bde Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Wed, 8 Dec 2021 14:01:11 -0500 Subject: [PATCH 69/81] gnu: linux-libre: Update to 5.15.7. * gnu/packages/linux.scm (linux-libre-5.15-version): Update to 5.15.7. (linux-libre-5.15-pristine-source): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index c2aae58bbf..55ff542bea 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -348,7 +348,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." ;; The current "stable" kernels. That is, the most recently released major ;; versions that are still supported upstream. -(define-public linux-libre-5.15-version "5.15.6") +(define-public linux-libre-5.15-version "5.15.7") (define-public linux-libre-5.15-gnu-revision "gnu") (define deblob-scripts-5.15 (linux-libre-deblob-scripts @@ -358,7 +358,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "04fj1x3zmi310cr3m9hxpi26gdcmwfsqciv5yb6q6rrnqjqs1pc0"))) (define-public linux-libre-5.15-pristine-source (let ((version linux-libre-5.15-version) - (hash (base32 "1w0plw9rzk2c0g8yxzwj7c6wkq538sy56mx1skmf58wrl83bmsdk"))) + (hash (base32 "1caxpqmik6gkhk3437pcgfq6vvlbs962hylgbh64iizd76l5142x"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.15))) From 50c529c574edd8b54ab73a453cf6469a7ea3a9d5 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Wed, 8 Dec 2021 14:01:30 -0500 Subject: [PATCH 70/81] gnu: linux-libre 5.10: Update to 5.10.84. * gnu/packages/linux.scm (linux-libre-5.10-version): Update to 5.10.84. (linux-libre-5.10-pristine-source): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 55ff542bea..9854b73a36 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -366,7 +366,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." ;; The "longterm" kernels — the older releases with long-term upstream support. ;; Here are the support timelines: ;; -(define-public linux-libre-5.10-version "5.10.83") +(define-public linux-libre-5.10-version "5.10.84") (define-public linux-libre-5.10-gnu-revision "gnu1") (define deblob-scripts-5.10 (linux-libre-deblob-scripts @@ -376,7 +376,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "024rz0bp3n3r5nkwbib7byx10d72c2fh5cw9iv00diyzgnp819g7"))) (define-public linux-libre-5.10-pristine-source (let ((version linux-libre-5.10-version) - (hash (base32 "0w4vq8wby3m9f5ryssh6z948m6zj1bjz9x432805dnrxyd1rl9gg"))) + (hash (base32 "0g935v0khv0i2qlrwr656hxl28m6zlbclc9rv15nq46xf8fjg5kf"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.10))) From ef8c464e17c4daebe40f46c5bef9ca26109c56f2 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Wed, 8 Dec 2021 14:01:47 -0500 Subject: [PATCH 71/81] gnu: linux-libre 5.4: Update to 5.4.164. * gnu/packages/linux.scm (linux-libre-5.4-version): Update to 5.4.164. (linux-libre-5.4-pristine-source): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 9854b73a36..be9d11cf41 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -381,7 +381,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (%upstream-linux-source version hash) deblob-scripts-5.10))) -(define-public linux-libre-5.4-version "5.4.163") +(define-public linux-libre-5.4-version "5.4.164") (define-public linux-libre-5.4-gnu-revision "gnu1") (define deblob-scripts-5.4 (linux-libre-deblob-scripts @@ -391,7 +391,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p"))) (define-public linux-libre-5.4-pristine-source (let ((version linux-libre-5.4-version) - (hash (base32 "1glh0azkrqdwydvbz9rp3czc5ppb72gq7svl3zbkjc6qfqbzwik2"))) + (hash (base32 "0142nic300xjdz9s6w1cp6cyhk2c2wpks9wxzqca6jz4da7k0l9r"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.4))) From 56778b40a3db4857aecc6920ed0705c41eb35128 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Wed, 8 Dec 2021 14:02:01 -0500 Subject: [PATCH 72/81] gnu: linux-libre 4.19: Update to 4.19.220. * gnu/packages/linux.scm (linux-libre-4.19-version): Update to 4.19.220. (linux-libre-4.19-pristine-source): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index be9d11cf41..bb0081eb86 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -396,7 +396,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (%upstream-linux-source version hash) deblob-scripts-5.4))) -(define-public linux-libre-4.19-version "4.19.219") +(define-public linux-libre-4.19-version "4.19.220") (define-public linux-libre-4.19-gnu-revision "gnu1") (define deblob-scripts-4.19 (linux-libre-deblob-scripts @@ -406,7 +406,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p"))) (define-public linux-libre-4.19-pristine-source (let ((version linux-libre-4.19-version) - (hash (base32 "1nq9228zm24d8azvv6d6r5iw8lfkb7z5lblyhk137mydzdqwsklg"))) + (hash (base32 "0q5hrh6q2f2r97nff136db7367p3hn0la2gl7q4knms3g8fis1jq"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.19))) From a9dfc3781a9a86986c7851932b5ff6552194eec5 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Wed, 8 Dec 2021 14:02:15 -0500 Subject: [PATCH 73/81] gnu: linux-libre 4.14: Update to 4.14.257. * gnu/packages/linux.scm (linux-libre-4.14-version): Update to 4.14.257. (linux-libre-4.14-pristine-source): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index bb0081eb86..9a5e887d56 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -411,7 +411,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (%upstream-linux-source version hash) deblob-scripts-4.19))) -(define-public linux-libre-4.14-version "4.14.256") +(define-public linux-libre-4.14-version "4.14.257") (define-public linux-libre-4.14-gnu-revision "gnu1") (define deblob-scripts-4.14 (linux-libre-deblob-scripts @@ -421,7 +421,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p"))) (define-public linux-libre-4.14-pristine-source (let ((version linux-libre-4.14-version) - (hash (base32 "180s2zmkfxk7af9nnkmfi2cs56af6vwyd21hjcfdxiygjm7j114p"))) + (hash (base32 "0jnw02jphvm9zcviwwymxyhq8kd0bk0v1827ninnv6bdy3140izv"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.14))) From 912db36d2793adeb9e7a6866edb42e10059542d4 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Wed, 8 Dec 2021 14:02:30 -0500 Subject: [PATCH 74/81] gnu: linux-libre 4.9: Update to 4.9.292. * gnu/packages/linux.scm (linux-libre-4.9-version): Update to 4.9.292. (linux-libre-4.9-pristine-source): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 9a5e887d56..b158e31930 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -426,7 +426,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (%upstream-linux-source version hash) deblob-scripts-4.14))) -(define-public linux-libre-4.9-version "4.9.291") +(define-public linux-libre-4.9-version "4.9.292") (define-public linux-libre-4.9-gnu-revision "gnu1") (define deblob-scripts-4.9 (linux-libre-deblob-scripts @@ -436,7 +436,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p"))) (define-public linux-libre-4.9-pristine-source (let ((version linux-libre-4.9-version) - (hash (base32 "0lwb9mb4s6qnwklygvfsr5ap85k83w1apkbbfdzzacfn9rvpfpdm"))) + (hash (base32 "0y3b6qqv6vrh2p5wwv5bicvbqrvxf1y5xm4myy5pk6yp2igws3kd"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.9))) From efd4d36a283acf5441159d4babf25d2054776579 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Wed, 8 Dec 2021 14:02:45 -0500 Subject: [PATCH 75/81] gnu: linux-libre 4.4: Update to 4.4.294. * gnu/packages/linux.scm (linux-libre-4.4-version): Update to 4.4.294. (linux-libre-4.4-pristine-source): Update hash. --- gnu/packages/linux.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index b158e31930..1e51dd8d83 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -441,7 +441,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (%upstream-linux-source version hash) deblob-scripts-4.9))) -(define-public linux-libre-4.4-version "4.4.293") +(define-public linux-libre-4.4-version "4.4.294") (define-public linux-libre-4.4-gnu-revision "gnu1") (define deblob-scripts-4.4 (linux-libre-deblob-scripts @@ -451,7 +451,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "1a0k9i8gnzkyvfr80f8xw2fnxfwddhz1pzicz9fh0y3jzzkzk45p"))) (define-public linux-libre-4.4-pristine-source (let ((version linux-libre-4.4-version) - (hash (base32 "1z9hc68v8fvph29l2w3md4734hhgp36sy8mzdlkmdrlkjihq6bvd"))) + (hash (base32 "0k0h5m1ng2049d5ggrq4q81vgsfmdpkqla73vg2a3bf2v6ycjmc7"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.4))) From 531a69ecb6ac85d03230d242b739c9671c984d0a Mon Sep 17 00:00:00 2001 From: Marcel Schilling Date: Mon, 13 Dec 2021 09:49:23 +0100 Subject: [PATCH 76/81] gnu: Add r-dearseq. * gnu/packages/bioconductor.scm (r-dearseq): New variable. Signed-off-by: Ricardo Wurmus --- gnu/packages/bioconductor.scm | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm index a25f56ad02..ee3ce80f9c 100644 --- a/gnu/packages/bioconductor.scm +++ b/gnu/packages/bioconductor.scm @@ -1518,6 +1518,36 @@ data. In addition, provides numerous plotting functions for commonly used visualizations.") (license license:artistic2.0))) +(define-public r-dearseq + (package + (name "r-dearseq") + (version "1.6.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "dearseq" version)) + (sha256 + (base32 + "07vr27rv3z86ajd62c0ilvfgz9z35qsiwwi5pv4sygbhnnjwh3rc")))) + (build-system r-build-system) + (propagated-inputs + `(("r-ggplot2" ,r-ggplot2) + ("r-kernsmooth" ,r-kernsmooth) + ("r-matrixstats" ,r-matrixstats) + ("r-patchwork" ,r-patchwork) + ("r-pbapply" ,r-pbapply) + ("r-statmod" ,r-statmod) + ("r-survey" ,r-survey) + ("r-viridislite" ,r-kernsmooth))) + (home-page "https://github.com/borishejblum/dearseq") + (synopsis "DEA for RNA-seq data through a robust variance component test") + (description + "This is a package for Differential Expression Analysis of RNA-seq data. +It features a variance component score test accounting for data +heteroscedasticity through precision weights. Perform both gene-wise and gene +set analyses, and can deal with repeated or longitudinal data.") + (license license:gpl2))) + (define-public r-decipher (package (name "r-decipher") From 495646aa73522e0a204504967d5b638e9cc81756 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 13 Dec 2021 10:54:05 +0100 Subject: [PATCH 77/81] gnu: Add r-drimseq. * gnu/packages/bioconductor.scm (r-drimseq): New variable. --- gnu/packages/bioconductor.scm | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm index ee3ce80f9c..5a67f6dbbd 100644 --- a/gnu/packages/bioconductor.scm +++ b/gnu/packages/bioconductor.scm @@ -1668,6 +1668,41 @@ spent loading the full derfinder package when running the F-statistics calculation in parallel.") (license license:artistic2.0))) +(define-public r-drimseq + (package + (name "r-drimseq") + (version "1.22.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "DRIMSeq" version)) + (sha256 + (base32 "0y2jb0hb633id038zmwnfny6h4ai77fdyy02f77vha1z8xg5nl02")))) + (properties `((upstream-name . "DRIMSeq"))) + (build-system r-build-system) + (propagated-inputs + `(("r-biocgenerics" ,r-biocgenerics) + ("r-biocparallel" ,r-biocparallel) + ("r-edger" ,r-edger) + ("r-genomicranges" ,r-genomicranges) + ("r-ggplot2" ,r-ggplot2) + ("r-iranges" ,r-iranges) + ("r-limma" ,r-limma) + ("r-mass" ,r-mass) + ("r-reshape2" ,r-reshape2) + ("r-s4vectors" ,r-s4vectors))) + (native-inputs `(("r-knitr" ,r-knitr))) + (home-page "https://bioconductor.org/packages/DRIMSeq") + (synopsis "Differential transcript usage and tuQTL analyses with Dirichlet-multinomial model in RNA-seq") + (description + "The package provides two frameworks. One for the differential +transcript usage analysis between different conditions and one for the tuQTL +analysis. Both are based on modeling the counts of genomic features (i.e., +transcripts) with the Dirichlet-multinomial distribution. The package also +makes available functions for visualization and exploration of the data and +results.") + (license license:gpl3+))) + (define-public r-bluster (package (name "r-bluster") From 73d2fb94e30b5b179a557a07a42f905d8dcf40e0 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 13 Dec 2021 10:54:16 +0100 Subject: [PATCH 78/81] gnu: Add r-isoformswitchanalyzer. * gnu/packages/bioconductor.scm (r-isoformswitchanalyzer): New variable. --- gnu/packages/bioconductor.scm | 53 +++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm index 5a67f6dbbd..3f02ec527a 100644 --- a/gnu/packages/bioconductor.scm +++ b/gnu/packages/bioconductor.scm @@ -1786,6 +1786,59 @@ naming and share the same rich and consistent \"Vector API\" as much as possible.") (license license:artistic2.0))) +(define-public r-isoformswitchanalyzer + (package + (name "r-isoformswitchanalyzer") + (version "1.16.0") + (source + (origin + (method url-fetch) + (uri (bioconductor-uri "IsoformSwitchAnalyzeR" version)) + (sha256 + (base32 "14bqf39gw5ab5r9sr3afkig1jbzdvds1bmcvc6bpb45kschx7fwf")))) + (properties `((upstream-name . "IsoformSwitchAnalyzeR"))) + (build-system r-build-system) + (propagated-inputs + `(("r-biobase" ,r-biobase) + ("r-biocgenerics" ,r-biocgenerics) + ("r-biostrings" ,r-biostrings) + ("r-bsgenome" ,r-bsgenome) + ("r-dbi" ,r-dbi) + ("r-dexseq" ,r-dexseq) + ("r-dplyr" ,r-dplyr) + ("r-drimseq" ,r-drimseq) + ("r-edger" ,r-edger) + ("r-futile-logger" ,r-futile-logger) + ("r-genomeinfodb" ,r-genomeinfodb) + ("r-genomicranges" ,r-genomicranges) + ("r-ggplot2" ,r-ggplot2) + ("r-gridextra" ,r-gridextra) + ("r-iranges" ,r-iranges) + ("r-limma" ,r-limma) + ("r-magrittr" ,r-magrittr) + ("r-plyr" ,r-plyr) + ("r-rcolorbrewer" ,r-rcolorbrewer) + ("r-rcurl" ,r-rcurl) + ("r-readr" ,r-readr) + ("r-reshape2" ,r-reshape2) + ("r-rtracklayer" ,r-rtracklayer) + ("r-stringr" ,r-stringr) + ("r-tibble" ,r-tibble) + ("r-tximeta" ,r-tximeta) + ("r-tximport" ,r-tximport) + ("r-venndiagram" ,r-venndiagram) + ("r-xvector" ,r-xvector))) + (native-inputs + `(("r-knitr" ,r-knitr))) + (home-page "https://bioconductor.org/packages/IsoformSwitchAnalyzeR/") + (synopsis "Analyze alternative splicing in RNA-seq data") + (description + "This is a package for the analysis of alternative splicing and isoform +switches with predicted functional consequences (e.g. gain/loss of protein +domains etc.) from quantification of all types of RNASeq by tools such as +Kallisto, Salmon, StringTie, Cufflinks/Cuffdiff etc.") + (license license:gpl2+))) + ;; This is a CRAN package, but it depends on r-biobase and r-limma from Bioconductor. (define-public r-absfiltergsea (package From cf2251b9f7a53a3303ea71d197bef4a96997a4c3 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Mon, 13 Dec 2021 11:17:43 +0100 Subject: [PATCH 79/81] gnu: Add r-sanssouci. * gnu/packages/bioconductor.scm (r-sanssouci): New variable. --- gnu/packages/bioconductor.scm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/gnu/packages/bioconductor.scm b/gnu/packages/bioconductor.scm index 3f02ec527a..44bf5c7d24 100644 --- a/gnu/packages/bioconductor.scm +++ b/gnu/packages/bioconductor.scm @@ -6852,6 +6852,37 @@ required source code files from the official Leidenalg distribution and several functions from the R igraph package.") (license license:gpl3+)))) +(define-public r-sanssouci + ;; sansscouci doesn't have a (versioned) release yet. + ;; This is the latest commit as of packaging for Guix. + (let ((commit "5fe20a9aaf4ac637fa83d9cc73ff1c22de97ca6f") + (revision "1")) + (package + (name "r-sanssouci") + (version (git-version "0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pneuvial/sanssouci.git") + (commit commit))) + (sha256 + (base32 + "13ycdd790qw64qy2zdvcrpj3fc8as628rsly32438d3rifnlc5sk")))) + (build-system r-build-system) + (propagated-inputs + `(("r-generics" ,r-generics) + ("r-matrix" ,r-matrix) + ("r-matrixstats" ,r-matrixstats) + ("r-rcpp" ,r-rcpp) + ("r-rcpparmadillo" ,r-rcpparmadillo))) + (home-page "https://pneuvial.github.io/sanssouci") + (synopsis "Post Hoc multiple testing inference") + (description + "The goal of sansSouci is to perform post hoc inference: in a multiple +testing context, sansSouci provides statistical guarantees on possibly +user-defined and/or data-driven sets of hypotheses.") + (license license:gpl3)))) + (define-public r-monocle3 (package (name "r-monocle3") From c946e1464d0850190f899d592bb765fa52b804c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 13 Dec 2021 11:28:31 +0100 Subject: [PATCH 80/81] doc: Handle ' ' when syntax-highlighting HTML. * doc/build.scm (syntax-highlighted-html)[build](entity->string): Handle " ". --- doc/build.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/build.scm b/doc/build.scm index a9e279159b..e7b42be17c 100644 --- a/doc/build.scm +++ b/doc/build.scm @@ -449,6 +449,7 @@ its
 blocks (as produced by 'makeinfo --html')."
                 ("rarr"   "→")
                 ("hellip" "…")
                 ("rsquo"  "’")
+                ("nbsp"   " ")
                 (e (pk 'unknown-entity e) (primitive-exit 2))))
 
             (define (concatenate-snippets pieces)

From 788f56b4dc0729e07ad546c5bc9694759c271f09 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= 
Date: Mon, 13 Dec 2021 11:30:25 +0100
Subject: [PATCH 81/81] doc: Add missing closing paren.

* doc/guix.texi (Desktop Services): Add missing closing paren in example.
---
 doc/guix.texi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index c00ec81e44..757e44398c 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -20478,7 +20478,7 @@ a system which relies on @code{%desktop-services}, you may use
 
 (operating-system
   @dots{}
-  (services %my-desktop-services)
+  (services %my-desktop-services))
 @end lisp
 @end defvr