diff options
author | Andreas Enge <andreas@enge.fr> | 2023-04-22 09:21:22 +0200 |
---|---|---|
committer | Andreas Enge <andreas@enge.fr> | 2023-04-22 09:21:22 +0200 |
commit | d1252b597d8b6c77746da7b7417d958f00d01dc6 (patch) | |
tree | e2cdc9b0938e5ed7ac1b095b83c5760bbedecb87 | |
parent | 3f7ae420d8a54d4e2ab7f349c40d8930fe9e0771 (diff) | |
parent | 040d35f088e0f1c856f3f5a9b6bf889b17bd68b3 (diff) | |
download | guix-d1252b597d8b6c77746da7b7417d958f00d01dc6.tar.gz |
Merge remote-tracking branch 'origin/master' into core-updates
50 files changed, 884 insertions, 494 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index 693313cf94..ad6ce4a210 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -18582,6 +18582,18 @@ Type of the service that runs the syslog daemon, whose value is a @code{<syslog-configuration>} object. @end defvar +To have a modified @code{syslog-configuration} come into effect after +reconfiguring your system, the @samp{reload} action should be preferred +to restarting the service, as many services such as the login manager +depend on it and would be restarted as well: + +@example +# herd reload syslog +@end example + +which will cause the running @command{syslogd} process to reload its +configuration. + @deftp {Data Type} syslog-configuration Data type representing the configuration of the syslog daemon. @@ -42565,10 +42577,10 @@ Name of this host declaration. @item @code{host-name} (type: maybe-string) Host name---e.g., @code{"foo.example.org"} or @code{"192.168.1.2"}. -@item @code{address-family} (type: address-family) +@item @code{address-family} (type: maybe-address-family) Address family to use when connecting to this host: one of -@code{AF_INET} (for IPv4 only), @code{AF_INET6} (for IPv6 only), or -@code{*unspecified*} (allowing any address family). +@code{AF_INET} (for IPv4 only), @code{AF_INET6} (for IPv6 only). +Additionally, the field can be left unset to allow any address family. @item @code{identity-file} (type: maybe-string) The identity file to use---e.g., @code{"/home/charlie/.ssh/id_ed25519"}. @@ -42594,10 +42606,31 @@ machine. @item @code{compression?} (default: @code{#f}) (type: boolean) Whether to compress data in transit. -@item @code{proxy-command} (type: maybe-string) -The command to use to connect to the server. As an example, a command -to connect via an HTTP proxy at 192.0.2.0 would be: @code{"nc -X connect --x 192.0.2.0:8080 %h %p"}. +@item @code{proxy} (type: maybe-proxy-command-or-jump-list) +The command to use to connect to the server or a list of SSH hosts to +jump through before connecting to the server. The field may be set to either a +@code{proxy-command} or a list of @code{proxy-jump} records. + +As an example, a @code{proxy-command} to connect via an HTTP proxy at 192.0.2.0 +would be constructed with: @code{(proxy-command "nc -X connect -x +192.0.2.0:8080 %h %p")}. + +@deftp {Data Type} proxy-jump +Available @code{proxy-jump} fields are: + +@table @asis +@item @code{user} (type: maybe-string) +User name on the remote host. + +@item @code{host-name} (type: string) +Host name---e.g., @code{foo.example.org} or @code{192.168.1.2}. + +@item @code{port} (type: maybe-natural-number) +TCP port number to connect to. + +@end table + +@end deftp @item @code{host-key-algorithms} (type: maybe-string-list) The list of accepted host key algorithms---e.g., diff --git a/gnu/home/services/ssh.scm b/gnu/home/services/ssh.scm index 01917a29cd..6aeb6ad5a7 100644 --- a/gnu/home/services/ssh.scm +++ b/gnu/home/services/ssh.scm @@ -20,6 +20,7 @@ (define-module (gnu home services ssh) #:use-module (guix gexp) #:use-module (guix records) + #:use-module (guix deprecation) #:use-module (guix diagnostics) #:use-module (guix i18n) #:use-module (gnu services) @@ -32,6 +33,8 @@ #:autoload (gnu packages base) (glibc-utf8-locales) #:use-module (gnu packages ssh) #:use-module (srfi srfi-1) + #:use-module (srfi srfi-9) + #:use-module (srfi srfi-9 gnu) #:use-module (srfi srfi-34) #:use-module (srfi srfi-35) #:use-module (ice-9 match) @@ -55,6 +58,12 @@ openssh-host-host-key-algorithms openssh-host-accepted-key-types openssh-host-extra-content + proxy-jump + proxy-jump-host-name + proxy-jump-port + proxy-jump-user + proxy-command + proxy-command->string home-openssh-service-type home-ssh-agent-service-type)) @@ -114,6 +123,54 @@ (define-maybe string-list) +(define-record-type <proxy-command> + (proxy-command command) + proxy-command? + (command proxy-command->string)) + +(set-record-type-printer! <proxy-command> + (lambda (obj port) + (format port "#<proxy-command ~s>" (proxy-command->string obj)))) + +(define-configuration/no-serialization proxy-jump + (user + maybe-string + "User name on the remote host.") + (host-name + (string) + "Host name---e.g., @code{foo.example.org} or @code{192.168.1.2}.") + (port + maybe-natural-number + "TCP port number to connect to.")) + +(define (proxy-jump->string proxy-jump) + (match-record proxy-jump <proxy-jump> + (host-name user port) + (string-append + (if (maybe-value-set? user) (string-append user "@") "") + host-name + (if (maybe-value-set? port) (string-append ":" (number->string port)) "")))) + +(define (proxy-command-or-jump-list? x) + (or (proxy-command? x) + (and (list? x) + (every proxy-jump? x)))) + +(define (serialize-proxy-command-or-jump-list field value) + (if (proxy-command? value) + (serialize-string 'proxy-command (proxy-command->string value)) + (serialize-string-list 'proxy-jump (map proxy-jump->string value)))) + +(define-maybe proxy-command-or-jump-list) + +(define (sanitize-proxy-command properties) + (lambda (value) + (when (maybe-value-set? value) + (warn-about-deprecation 'proxy-command properties #:replacement 'proxy)) + (unless (maybe-string? value) + (configuration-field-error (source-properties->location properties) 'proxy-command value)) + value)) + (define-configuration openssh-host (name (string) @@ -155,7 +212,13 @@ machine.") maybe-string "The command to use to connect to the server. As an example, a command to connect via an HTTP proxy at 192.0.2.0 would be: @code{\"nc -X -connect -x 192.0.2.0:8080 %h %p\"}.") +connect -x 192.0.2.0:8080 %h %p\"}. Using 'proxy-command' is deprecated, use +'proxy' instead." + (sanitizer (sanitize-proxy-command (current-source-location)))) + (proxy + maybe-proxy-command-or-jump-list + "The command to use to connect to the server or a list of SSH hosts to jump +through before connecting to the server.") (host-key-algorithms maybe-string-list "The list of accepted host key algorithms---e.g., diff --git a/gnu/local.mk b/gnu/local.mk index b7af7726e8..f0d129b493 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -999,6 +999,7 @@ dist_patch_DATA = \ %D%/packages/patches/classpath-aarch64-support.patch \ %D%/packages/patches/classpath-miscompilation.patch \ %D%/packages/patches/cling-use-shared-library.patch \ + %D%/packages/patches/clog-fix-shared-build.patch \ %D%/packages/patches/clucene-pkgconfig.patch \ %D%/packages/patches/cmake-curl-certificates-3.24.patch \ %D%/packages/patches/coda-use-system-libs.patch \ diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index a986e118f8..68c1406fc3 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -2220,167 +2220,179 @@ easy-to-perform steps.") (license license:gpl3+))) (define-public bpp-core - ;; The last release was in 2014 and the recommended way to install from source - ;; is to clone the git repository, so we do this. - ;; http://biopp.univ-montp2.fr/wiki/index.php/Main_Page - (let ((commit "7d8bced0d1a87291ea8dd7046b7fb5ff9c35c582")) - (package - (name "bpp-core") - (version (string-append "2.2.0-1." (string-take commit 7))) - (source (origin - (method git-fetch) - (uri (git-reference - (url "http://biopp.univ-montp2.fr/git/bpp-core") - (commit commit))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "10djsq5vlnkilv436gnmh4irpk49v29pa69r6xiryg32xmvn909j")))) - (build-system cmake-build-system) - (arguments - `(#:parallel-build? #f)) - (home-page "http://biopp.univ-montp2.fr") - (synopsis "C++ libraries for Bioinformatics") - (description - "Bio++ is a set of C++ libraries for Bioinformatics, including sequence + (package + (name "bpp-core") + (version "2.4.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/BioPP/bpp-core") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0ma2cl677l7s0n5sffh66cy9lxp5wycm50f121g8rx85p95vkgwv")))) + (build-system cmake-build-system) + (home-page "https://pbil.univ-lyon1.fr/bpp-doc/bpp-core/html/index.html") + (synopsis "C++ libraries for Bioinformatics") + (description + "Bio++ is a set of C++ libraries for Bioinformatics, including sequence analysis, phylogenetics, molecular evolution and population genetics. It is Object Oriented and is designed to be both easy to use and computer efficient. Bio++ intends to help programmers to write computer expensive programs, by providing them a set of re-usable tools.") - (license license:cecill-c)))) + (license license:cecill-c))) (define-public bpp-phyl - ;; The last release was in 2014 and the recommended way to install from source - ;; is to clone the git repository, so we do this. - ;; http://biopp.univ-montp2.fr/wiki/index.php/Main_Page - (let ((commit "0c07167b629f68b569bf274d1ad0c4af83276ae2")) - (package - (name "bpp-phyl") - (version (string-append "2.2.0-1." (string-take commit 7))) - (source (origin - (method git-fetch) - (uri (git-reference - (url "http://biopp.univ-montp2.fr/git/bpp-phyl") - (commit commit))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "1ssjgchzwj3iai26kyly7gwkdv8sk59nqhkb1wpap3sf5m6kyllh")))) - (build-system cmake-build-system) - (arguments - `(#:parallel-build? #f - ;; If out-of-source, test data is not copied into the build directory - ;; so the tests fail. - #:out-of-source? #f)) - (inputs - (list bpp-core bpp-seq)) - (home-page "http://biopp.univ-montp2.fr") - (synopsis "Bio++ phylogenetic Library") - (description - "Bio++ is a set of C++ libraries for Bioinformatics, including sequence + (package + (name "bpp-phyl") + (version "2.4.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/BioPP/bpp-phyl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "192zks6wyk903n06c2lbsscdhkjnfwms8p7jblsmk3lvjhdipb20")))) + (build-system cmake-build-system) + (inputs + (list bpp-core bpp-seq)) + (home-page "https://pbil.univ-lyon1.fr/bpp-doc/bpp-phyl/html/") + (synopsis "Bio++ phylogenetic library") + (description + "Bio++ is a set of C++ libraries for Bioinformatics, including sequence analysis, phylogenetics, molecular evolution and population genetics. This library provides phylogenetics-related modules.") - (license license:cecill-c)))) + (license license:cecill-c))) + +(define-public bpp-phyl-omics + (package + (name "bpp-phyl-omics") + (version "2.4.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/BioPP/bpp-phyl-omics") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "172psb8njkjwg3cd6gdy5w0mq8f0817v635yw4bk7146aggjzl1h")))) + (build-system cmake-build-system) + (arguments + (list #:tests? #f)) ; No test provided. + (inputs + (list bpp-core + bpp-phyl + bpp-seq + bpp-seq-omics)) + (home-page "https://github.com/BioPP/bpp-phyl-omics") + (synopsis "Bio++ phylogenetic library genomics components") + (description + "This library contains the genomics components of the Bio++ phylogenetics +library. It is part of the Bio++ project.") + (license license:cecill))) (define-public bpp-popgen - ;; The last release was in 2014 and the recommended way to install from source - ;; is to clone the git repository, so we do this. - ;; http://biopp.univ-montp2.fr/wiki/index.php/Main_Page - (let ((commit "e472bac9b1a148803895d747cd6d0c5904f85d9f")) - (package - (name "bpp-popgen") - (version (string-append "2.2.0-1." (string-take commit 7))) - (source (origin - (method git-fetch) - (uri (git-reference - (url "http://biopp.univ-montp2.fr/git/bpp-popgen") - (commit commit))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "0yn82dzn1n5629nzja68xfrhi655709rjanyryb36vzkmymy6dw5")))) - (build-system cmake-build-system) - (arguments - `(#:parallel-build? #f - #:tests? #f)) ; There are no tests. - (inputs - (list bpp-core bpp-seq)) - (home-page "http://biopp.univ-montp2.fr") - (synopsis "Bio++ population genetics library") - (description - "Bio++ is a set of C++ libraries for Bioinformatics, including sequence + (package + (name "bpp-popgen") + (version "2.4.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/BioPP/bpp-popgen") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0bz0fhrq3dri6a0hvfc3zlvrns8mrzzlnicw5pyfa812gc1qwfvh")))) + (build-system cmake-build-system) + (arguments + (list #:tests? #f)) ; There are no tests. + (inputs + (list bpp-core bpp-seq)) + (home-page "https://pbil.univ-lyon1.fr/bpp-doc/bpp-popgen/html/") + (synopsis "Bio++ population genetics library") + (description + "Bio++ is a set of C++ libraries for Bioinformatics, including sequence analysis, phylogenetics, molecular evolution and population genetics. This library provides population genetics-related modules.") - (license license:cecill-c)))) + (license license:cecill-c))) (define-public bpp-seq - ;; The last release was in 2014 and the recommended way to install from source - ;; is to clone the git repository, so we do this. - ;; http://biopp.univ-montp2.fr/wiki/index.php/Main_Page - (let ((commit "6cfa07965ce152e5598a89df2fa80a75973bfa33")) - (package - (name "bpp-seq") - (version (string-append "2.2.0-1." (string-take commit 7))) - (source (origin - (method git-fetch) - (uri (git-reference - (url "http://biopp.univ-montp2.fr/git/bpp-seq") - (commit commit))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "1nys5jq7jqvdg40d91wsmj3q2yzy4276cp7sp44n67p468f27zf2")))) - (build-system cmake-build-system) - (arguments - `(#:parallel-build? #f - ;; If out-of-source, test data is not copied into the build directory - ;; so the tests fail. - #:out-of-source? #f)) - (inputs - (list bpp-core)) - (home-page "http://biopp.univ-montp2.fr") - (synopsis "Bio++ sequence library") - (description - "Bio++ is a set of C++ libraries for Bioinformatics, including sequence + (package + (name "bpp-seq") + (version "2.4.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/BioPP/bpp-seq") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1mc09g8jswzsa4wgrfv59jxn15ys3q8s0227p1j838wkphlwn2qk")))) + (build-system cmake-build-system) + (inputs + (list bpp-core)) + (home-page "https://pbil.univ-lyon1.fr/bpp-doc/bpp-seq/html/") + (synopsis "Bio++ sequence library") + (description + "Bio++ is a set of C++ libraries for Bioinformatics, including sequence analysis, phylogenetics, molecular evolution and population genetics. This library provides sequence-related modules.") - (license license:cecill-c)))) + (license license:cecill-c))) + +(define-public bpp-seq-omics + (package + (name "bpp-seq-omics") + (version "2.4.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/BioPP/bpp-seq-omics") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1sc2xdfnfp5a6qihplp49rgrqmj89898avfy9bqaq1g2fajppgjj")))) + (build-system cmake-build-system) + (inputs + (list bpp-core bpp-seq)) + (home-page "https://github.com/BioPP/bpp-seq-omics") + (synopsis "Bio++ sequence library genomics components") + (description + "This library contains the genomics components of the Bio++ sequence library. +It is part of the Bio++ project.") + (license license:cecill))) (define-public bppsuite - ;; The last release was in 2014 and the recommended way to install from source - ;; is to clone the git repository, so we do this. - ;; http://biopp.univ-montp2.fr/wiki/index.php/Main_Page - (let ((commit "c516147f57aa50961121cd505bed52cd7603698b")) - (package - (name "bppsuite") - (version (string-append "2.2.0-1." (string-take commit 7))) - (source (origin - (method git-fetch) - (uri (git-reference - (url "http://biopp.univ-montp2.fr/git/bppsuite") - (commit commit))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "1y87pxvw0jxjizhq2dr9g2r91md45k1p9ih2sl1yy1y3p934l2kb")))) - (build-system cmake-build-system) - (arguments - `(#:parallel-build? #f - #:tests? #f)) ; There are no tests. - (native-inputs - (list groff man-db texinfo)) - (inputs - `(("bpp-core" ,bpp-core) - ("bpp-seq" ,bpp-seq) - ("bpp-phyl" ,bpp-phyl) - ("bpp-phyl" ,bpp-popgen))) - (home-page "http://biopp.univ-montp2.fr") - (synopsis "Bioinformatics tools written with the Bio++ libraries") - (description - "Bio++ is a set of C++ libraries for Bioinformatics, including sequence + (package + (name "bppsuite") + (version "2.4.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/BioPP/bppsuite") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1wdwcgczqbc3m116vakvi0129wm3acln3cfc7ivqnalwvi6lrpds")))) + (build-system cmake-build-system) + (arguments + (list #:tests? #f)) ; There are no tests. + (native-inputs + (list groff man-db texinfo)) + (inputs + (list bpp-core bpp-seq bpp-phyl bpp-popgen)) + (home-page "https://github.com/BioPP") + (synopsis "Bioinformatics tools written with the Bio++ libraries") + (description + "Bio++ is a set of C++ libraries for Bioinformatics, including sequence analysis, phylogenetics, molecular evolution and population genetics. This package provides command line tools using the Bio++ library.") - (license license:cecill-c)))) + (license license:cecill-c))) (define-public blast+ (package @@ -6021,6 +6033,43 @@ resolution of binding sites through combining the information of both sequencing tag position and orientation.") (license license:bsd-3))) +(define-public maffilter + (package + (name "maffilter") + (version "1.3.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jydu/maffilter") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "196c16qw82niqqyzi7j1ga1n0zmir73bm26kg04m0i5aq2cpa0ml")))) + (build-system cmake-build-system) + (arguments (list #:tests? #false)) ;there are none + (inputs + (list boost + bpp-core + bpp-phyl + bpp-phyl-omics + bpp-seq + bpp-seq-omics + zlib)) + (home-page "https://jydu.github.io/maffilter/") + (synopsis "Multiple alignment format file processor") + (description + "MafFilter is a program dedicated to the analysis of genome alignments. +It parses and manipulates @acronym{MAF, multiple alignment format} files as +well as more simple fasta files. This package can be used to design a +pipeline as a series of consecutive filters, each performing a dedicated +analysis. Many of the filters are available, from alignment cleaning to +phylogeny reconstruction and population genetics analysis. Despite various +filtering options and format conversion tools, MafFilter can compute a wide +range of statistics (phylogenetic trees, nucleotide diversity, inferrence of +selection, etc.).") + (license license:gpl3+))) + (define-public mafft (package (name "mafft") diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 81082ec31d..baa6119078 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -125,6 +125,7 @@ ;;; Copyright © 2022 Demis Balbach <db@minikn.xyz> ;;; Copyright © 2020, 2021, 2022, 2023 Andrew Tropin <andrew@trop.in> ;;; Copyright © 2023 Dominik Delgado Steuter <d@delgado.nrw> +;;; Copyright © 2023 Juliana Sims <juli@incana.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -2935,14 +2936,14 @@ incrementally confined in Isearch manner.") (define emacs-emms-print-metadata (package (name "emacs-emms-print-metadata") - (version "14") + (version "15") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/" "emms-" version ".tar")) (sha256 - (base32 "0525vmi397q604z8i35zld3c4fkwbvxwir5lf4f1ji1bbvkzqavc")))) + (base32 "0kd9qx93cgcxyqsnbp95xx414s08rd5bb35aif3c7qyab5w05yi6")))) (build-system gnu-build-system) (arguments (list @@ -10714,10 +10715,10 @@ them easier to distinguish from other, less important buffers.") (license license:expat))) (define-public emacs-embark - (let ((commit "63013c2d3ef4dccc95167218ccbf4f401e489c3e")) ;version bump + (let ((commit "c914efe881df2bc6a2bd35cc7ee975d3e9d4a418")) ;version bump (package (name "emacs-embark") - (version "0.21.1") + (version "0.22.1") (source (origin (method git-fetch) @@ -10725,7 +10726,7 @@ them easier to distinguish from other, less important buffers.") (url "https://github.com/oantolin/embark") (commit commit))) (sha256 - (base32 "14qp46wa1xgmb09jyk9cadj0b3m7bwspqnprk3zbfc6gw1r53235")) + (base32 "1l288w27wav0r71hprqi74r77042d1fx3p1zmi05vl6z6230h48b")) (file-name (git-file-name name version)))) (build-system emacs-build-system) (arguments @@ -13151,7 +13152,7 @@ with Elfeed.") (define-public emacs-elfeed-score (package (name "emacs-elfeed-score") - (version "1.2.4") + (version "1.2.5") (source (origin (method git-fetch) @@ -13160,8 +13161,20 @@ with Elfeed.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0d1yh4wv81n5mnrzdi88z0vbs94m7j3q20r5fc1wk35r4hrl3xqw")))) + (base32 "0slbmmcsf5pqbiq3nmna7wx9jvfgdgjp272qdqvmrv99jdj92cq6")))) (build-system emacs-build-system) + (arguments + (list + #:tests? #false ;FIXME: How to run tests properly? + #:phases + #~(modify-phases %standard-phases + (add-before 'install 'make-info + (lambda _ + (with-directory-excursion "doc" + (invoke "makeinfo" "--no-split" + "-o" "elfeed-score.info" "elfeed-score.texi"))))))) + (native-inputs + (list texinfo)) (propagated-inputs (list emacs-elfeed)) (home-page "https://github.com/sp1ff/elfeed-score") @@ -27423,7 +27436,7 @@ targets the Emacs based IDEs (CIDER, ESS, Geiser, Robe, SLIME etc.)") (define-public emacs-buttercup (package (name "emacs-buttercup") - (version "1.30") + (version "1.31") (source (origin (method git-fetch) @@ -27433,7 +27446,7 @@ targets the Emacs based IDEs (CIDER, ESS, Geiser, Robe, SLIME etc.)") (file-name (git-file-name name version)) (sha256 (base32 - "1zr1jlfwr8yp9168yvkrhif1mr1r40fr1j1v1iv11ryn2zjcm9yn")))) + "1rvc9r6swb74lhzd877jidkkf2cxl5v4zz302j2imqhsbk844qzh")))) (build-system emacs-build-system) (arguments (list @@ -32599,7 +32612,7 @@ contributed packages to Telega."))) (define-public emacs-doom-modeline (package (name "emacs-doom-modeline") - (version "3.3.2") + (version "3.4.0") (source (origin (method git-fetch) @@ -32607,7 +32620,7 @@ contributed packages to Telega."))) (url "https://github.com/seagle0128/doom-modeline") (commit (string-append "v" version)))) (sha256 - (base32 "1v24hiqs4zbq613vanixgng9cx697di63jpafpmjlsripjfvk1qp")) + (base32 "1z5cqn33v7sjihs05ycz1yzi5wcg90yn3cy09qj9g5g8pjs8qdki")) (file-name (git-file-name name version)))) (build-system emacs-build-system) (arguments @@ -33712,7 +33725,7 @@ launching other commands/applications from within Emacs, similar to the (define-public emacs-no-littering (package (name "emacs-no-littering") - (version "1.2.7") + (version "1.3.0") (source (origin (method git-fetch) @@ -33721,8 +33734,10 @@ launching other commands/applications from within Emacs, similar to the (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1grc5fk7ng4d6i8fwfpm3cb2b19s9sbdjbdn8ybchk7cj45kkl24")))) + (base32 "1vkypj2mm428kmawxnyaqg3v5xpcs5hkbmyvjkib8ib02psshxd7")))) (build-system emacs-build-system) + (propagated-inputs + (list emacs-compat)) (home-page "https://github.com/emacscollective/no-littering") (synopsis "Help keep @file{~/.emacs.d/} clean") (description "The default paths used to store configuration files and @@ -36017,6 +36032,22 @@ audio volume via amixer.") Fennel code within Emacs.") (license license:gpl3+)))) +(define-public emacs-gerbil-mode + (package + (inherit gerbil) + (name "emacs-gerbil-mode") + (version "1.0") + (build-system emacs-build-system) + (arguments + (list #:phases #~(modify-phases %standard-phases + (add-before 'install 'change-directory + (lambda _ + (chdir "etc")))))) + (synopsis "Emacs major-mode for editing Gerbil code") + (description + "Gerbil mode provides font-lock, indentation, navigation, and REPL for +Gerbil code within Emacs."))) + (define-public emacs-org-modern (package (name "emacs-org-modern") diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm index 10684979ad..77e8c76e17 100644 --- a/gnu/packages/engineering.scm +++ b/gnu/packages/engineering.scm @@ -984,7 +984,7 @@ Emacs).") (define-public kicad (package (name "kicad") - (version "7.0.1") + (version "7.0.2") (source (origin (method git-fetch) (uri (git-reference @@ -992,7 +992,7 @@ Emacs).") (commit version))) (sha256 (base32 - "021safxvyq9qzs08jy3jvpazmhvix4kyl05s9y9hwmyzdmdl2smn")) + "0san7pjgvd8niwrki722qb6y46r71rlyspqp43pmkiz55dmz52zx")) (file-name (git-file-name name version)))) (build-system cmake-build-system) (arguments @@ -1092,7 +1092,7 @@ electrical diagrams), gerbview (viewing Gerber files) and others.") (file-name (git-file-name name version)) (sha256 (base32 - "1cy9w10wzdjm9z9vzv88ija6l3pp894hwcgz5jggjrnyazhpklvj")))) + "1sh970sjvgzrwwjbkgg3ikzka5dfdq66hvkcxfx2dnp7hv0hidc2")))) (build-system cmake-build-system) (arguments `(#:configure-flags (list "-DBUILD_FORMATS=html") @@ -1126,7 +1126,7 @@ electrical diagrams), gerbview (viewing Gerber files) and others.") (file-name (git-file-name name version)) (sha256 (base32 - "14c5gci13m30xv0cmic5jxsmfx9lq3fnd8hyq3mmgkrw7443zy30")))) + "0aah92rb8yx00z0xwx9z7xn5rrw4cc3z35gr7c0bnb49hiak01jc")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; no tests exist @@ -1155,7 +1155,7 @@ libraries.") (file-name (git-file-name name version)) (sha256 (base32 - "0k0z40wmaq665hjxb6kp1yl3v7clxz49r6ki0chyphsxv1cnixmy")))) + "1qrdznfd4a6kzwd4aaijkpyjy0xnrmi66isq9z52652a8s6ja48v")))) (synopsis "Official KiCad footprint libraries") (description "This package contains the official KiCad footprint libraries."))) @@ -1172,7 +1172,7 @@ libraries.") (file-name (git-file-name name version)) (sha256 (base32 - "0nzi7ijfb3rjm98kaa9va2mkh0nfzpq4vfhxkq8j18qhx24h5c8v")))) + "1nkk4325jh89vh52ykfnf9pz1k3jk5017gz6r2cia2v4b3jadi31")))) (synopsis "Official KiCad 3D model libraries") (description "This package contains the official KiCad 3D model libraries."))) @@ -1189,7 +1189,7 @@ libraries.") (file-name (git-file-name name version)) (sha256 (base32 - "02i279269mhq7wjhb1yqk90820ncssxl9n7b20qr2r4fmm7jpvxv")))) + "1qi20mrsfn4fxmr1fyphmil2i9p2nzmwk5rlfchc5aq2194nj3lq")))) (synopsis "Official KiCad project and worksheet templates") (description "This package contains the official KiCad project and worksheet templates."))) diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 9936975ba6..62ee0050fa 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -3706,6 +3706,57 @@ enemies in different game modes such as space ball, death match, team death match, cannon keep, and grave-itation pit.") (license license:gpl3+)))) +(define-public alienblaster + (package + (name "alienblaster") + (version "1.1.0") + (source + (origin + (method url-fetch) + (uri (string-append "http://www.schwardtnet.de/alienblaster/archives/" + "alienblaster-" version ".tgz")) + (sha256 + (base32 + "104rfsfsv446n4y52p5zw9h8mhgjyrbca8fpyhnxkkasq141a264")))) + (build-system gnu-build-system) + (arguments + (list + #:tests? #f ; no tests + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-sdl-paths + (lambda _ + (let ((share (string-append #$output "/share"))) + ;; Fix name and append path to "SDL_mixer.h" + (substitute* "src/Makefile" + (("GAME_NAME=alienBlaster") "GAME_NAME=alienblaster") + (("SDL_FLAGS=\\$\\(shell sdl-config --cflags\\)" line) + (string-append line " -I" + #$(this-package-input "sdl-mixer") + "/include/SDL"))) + ;; Substitute relative paths in ".cfg" and source/header files + (substitute* (find-files "./cfg") + (("(\\./)?images") (string-append share "/images"))) + (substitute* (list "src/global.h" "src/global.cc") + (("./images") (string-append share "/images")) + (("./sound") (string-append share "/sound")) + (("./cfg") (string-append share "/cfg")))))) + (delete 'configure) + (replace 'install + (lambda _ + (install-file "alienblaster" (string-append #$output "/bin")) + (for-each + (lambda (dir) + (copy-recursively dir (string-append #$output "/share/" dir))) + '("images" "sound" "cfg"))))))) + (inputs (list sdl sdl-mixer)) + (home-page "http://www.schwardtnet.de/alienblaster/") + (synopsis "Action-loaded 2D arcade shooter game") + (description "Alien Blaster is an action-loaded 2D arcade shooter +game. Your mission in the game is simple: stop the invasion of the aliens by +blasting them. Simultaneous two-player mode is available.") + (license license:gpl2))) + (define glkterm (package (name "glkterm") diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index a30bf4051b..3cc53f5923 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -11706,7 +11706,7 @@ advanced image management tool") (define-public terminator (package (name "terminator") - (version "2.1.2") + (version "2.1.3") (source (origin (method url-fetch) @@ -11714,7 +11714,7 @@ advanced image management tool") "releases/download/v" version "/" name "-" version ".tar.gz")) (sha256 - (base32 "10shpn8id7z43d4dpx16x76mgxnk4mr976j5cg28icjiiaidyfc2")))) + (base32 "1rbarn9pq3g8k13clxiy0d62g0fxhkg5bcxw2h626wkb7lzr9s8a")))) (build-system python-build-system) (native-inputs `(("gettext" ,gettext-minimal) @@ -12984,7 +12984,7 @@ profiler via Sysprof, debugging support, and more.") (define-public komikku (package (name "komikku") - (version "1.15.0") + (version "1.17.0") (source (origin (method git-fetch) @@ -12994,7 +12994,7 @@ profiler via Sysprof, debugging support, and more.") (file-name (git-file-name name version)) (sha256 (base32 - "0yd4274qxpv0wg1lm6daip2nd135qq07pfl5wrm2rqlzs5mvqs3n")))) + "0snb6vdgb3l2mw0kr0yb4zjpq46w56rpi554vqn5ks6qwywvs58g")))) (build-system meson-build-system) (arguments (list diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index fd8fb25da1..ea67deff86 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -733,7 +733,7 @@ you send to a FIFO file.") (define-public guile-dsv (package (name "guile-dsv") - (version "0.5.1") + (version "0.5.2") (source (origin (method git-fetch) (uri (git-reference @@ -742,10 +742,10 @@ you send to a FIFO file.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "10wssilin4qphdmmqmms20bp3cy007kh22l1g45wfka0minmhkgs")))) + "056wab749fyabklp4srai72dwzihlm6hkcdy1da7d4gh8iqsyqpi")))) (build-system gnu-build-system) (native-inputs - (list autoconf automake pkg-config texinfo)) + (list autoconf automake pkg-config texinfo help2man)) (inputs (list guile-3.0)) (propagated-inputs (list guile-lib)) (arguments diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index c6fce0992f..56ea676e4a 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -485,22 +485,22 @@ 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-6.2-version "6.2.11") +(define-public linux-libre-6.2-version "6.2.12") (define-public linux-libre-6.2-gnu-revision "gnu") (define deblob-scripts-6.2 (linux-libre-deblob-scripts linux-libre-6.2-version linux-libre-6.2-gnu-revision (base32 "15wrksnimwb099qgqc631rp8dgv5b61l6s5kknk23frqdwkp4shp") - (base32 "0ir5vvbdh6dly5ld8mfp7285g8k88w5bb32hj4wmgyqsbfqc6rf2"))) + (base32 "0560xc8l2z79qk2dnv15i0m4igw9mq2ymv2a40nw2z3lcqygcs5x"))) (define-public linux-libre-6.2-pristine-source (let ((version linux-libre-6.2-version) - (hash (base32 "0iyx03z58pv1d5nrryjx94k3nxwyvm4b3bim6nawg1qbws26f8qd"))) + (hash (base32 "1j6cn1ifmcqfqvxp9h10y8yfxi918yzl3yjbf96gmb9p4ysldqf7"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-6.2))) -(define-public linux-libre-6.1-version "6.1.24") +(define-public linux-libre-6.1-version "6.1.25") (define-public linux-libre-6.1-gnu-revision "gnu") (define deblob-scripts-6.1 (linux-libre-deblob-scripts @@ -510,7 +510,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "0cchdhjra74zanyk14brv2l2dvxpg8dn58rn477lgfb44mcnhq33"))) (define-public linux-libre-6.1-pristine-source (let ((version linux-libre-6.1-version) - (hash (base32 "0135aj8asplpxqr48hwdmwynx8n8hzhdgh55yl8r0n1kivisgrma"))) + (hash (base32 "149h95r5msvqah868zd36y92ls9h41cr1rb5vzinl20mxdn46wnb"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-6.1))) @@ -518,7 +518,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: ;; <https://www.kernel.org/category/releases.html> -(define-public linux-libre-5.15-version "5.15.107") +(define-public linux-libre-5.15-version "5.15.108") (define-public linux-libre-5.15-gnu-revision "gnu") (define deblob-scripts-5.15 (linux-libre-deblob-scripts @@ -528,12 +528,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "03hwhwbcicwyx5i30d6m715kwgrxz4h21xhk55wnawlk8zhx3r35"))) (define-public linux-libre-5.15-pristine-source (let ((version linux-libre-5.15-version) - (hash (base32 "1a5gqpxmzls5mp4a0cw10ldrps4pvbn19nzfri91ys25j1v0wdqr"))) + (hash (base32 "1fj38bvsyr9g89qr8pcjrp0kaq44g301x46gyjibq73gljnnkswb"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.15))) -(define-public linux-libre-5.10-version "5.10.177") +(define-public linux-libre-5.10-version "5.10.178") (define-public linux-libre-5.10-gnu-revision "gnu1") (define deblob-scripts-5.10 (linux-libre-deblob-scripts @@ -543,12 +543,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "1g4vabfswxzf9ahxc06k2ffksf84kcr2csx4m5kx680w0jqqnk80"))) (define-public linux-libre-5.10-pristine-source (let ((version linux-libre-5.10-version) - (hash (base32 "0waml6svj07b7f8yb1kzrflqlf61x4kcqbgsr372s484m3z628lz"))) + (hash (base32 "1bx8wws9gvksg1c1af29nm03jjz2f5a5sq9hzc00ymjyf7isvkqs"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.10))) -(define-public linux-libre-5.4-version "5.4.240") +(define-public linux-libre-5.4-version "5.4.241") (define-public linux-libre-5.4-gnu-revision "gnu1") (define deblob-scripts-5.4 (linux-libre-deblob-scripts @@ -558,12 +558,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "1d6as1yk9svysh07hdybs8glvn8s9f8gwlbjl7f9m920pdam2r60"))) (define-public linux-libre-5.4-pristine-source (let ((version linux-libre-5.4-version) - (hash (base32 "0ihf0rqhx7dav3k3igk29962sscb1xyniy2gx8chyllprr0z126w"))) + (hash (base32 "0z7api3qcjrd6w7fva7k6fj4zx17mg5ibn28a6qbgy27dyny1h7z"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.4))) -(define-public linux-libre-4.19-version "4.19.280") +(define-public linux-libre-4.19-version "4.19.281") (define-public linux-libre-4.19-gnu-revision "gnu1") (define deblob-scripts-4.19 (linux-libre-deblob-scripts @@ -573,12 +573,12 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "1q0fgpbdwc21wj9wnjjb49dp84ch6ymd5na3iaabadwjs2nmb6bd"))) (define-public linux-libre-4.19-pristine-source (let ((version linux-libre-4.19-version) - (hash (base32 "1xmg9p3ky75n5q894f522s8nwcmbd5c15nmjr0n96m6xzag3kd7w"))) + (hash (base32 "13nwzsh3h634450k37pxdca5j8vr3qswx7k79bs2999xp2js9pf0"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.19))) -(define-public linux-libre-4.14-version "4.14.312") +(define-public linux-libre-4.14-version "4.14.313") (define-public linux-libre-4.14-gnu-revision "gnu1") (define deblob-scripts-4.14 (linux-libre-deblob-scripts @@ -588,7 +588,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "1ccggm19nl7pdcxmsm08fkqy8phz8rqfmww5ypizibdmnrmpn2v9"))) (define-public linux-libre-4.14-pristine-source (let ((version linux-libre-4.14-version) - (hash (base32 "03bwrnm7z8jxxn681dd5jffrj76l14ngkcccfgbg1p4a0471q436"))) + (hash (base32 "0k2j856niappvkp9m1wxr87xvbwdzdy03mbcj827kmpjd9gdca76"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.14))) diff --git a/gnu/packages/lxqt.scm b/gnu/packages/lxqt.scm index 8f9a607282..ee6a19f415 100644 --- a/gnu/packages/lxqt.scm +++ b/gnu/packages/lxqt.scm @@ -39,7 +39,6 @@ #:use-module (guix build-system trivial) #:use-module (gnu packages) #:use-module (gnu packages admin) - #:use-module (gnu packages base) #:use-module (gnu packages compression) #:use-module (gnu packages documentation) #:use-module (gnu packages compton) @@ -321,8 +320,7 @@ LXQt and the system it's running on.") libqtxdg polkit-qt qtsvg-5 - qtx11extras - tzdata)) + qtx11extras)) (native-inputs (list lxqt-build-tools qttools-5)) (arguments @@ -330,14 +328,12 @@ LXQt and the system it's running on.") #:phases (modify-phases %standard-phases (add-after 'unpack 'patch-source - (lambda* (#:key inputs #:allow-other-keys) + (lambda _ (substitute* '("lxqt-admin-user/CMakeLists.txt" "lxqt-admin-time/CMakeLists.txt") (("DESTINATION \"\\$\\{POLKITQT-1_POLICY_FILES_INSTALL_DIR\\}") "DESTINATION \"share/polkit-1/actions")) - (substitute* '("lxqt-admin-time/timeadmindialog.cpp") - (("/usr/share/zoneinfo/zone.tab") - (search-input-file inputs "share/zoneinfo/zone.tab")))))))) + #t))))) (home-page "https://lxqt-project.org") (synopsis "LXQt system administration tool") (description "lxqt-admin is providing two GUI tools to adjust settings of diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm index ef45511546..b9b3ecc87e 100644 --- a/gnu/packages/mpd.scm +++ b/gnu/packages/mpd.scm @@ -561,7 +561,7 @@ album-experience.") (define-public mpdevil (package (name "mpdevil") - (version "1.10.0") + (version "1.10.2") (source (origin (method git-fetch) (uri (git-reference @@ -569,7 +569,7 @@ album-experience.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "04dzxyv176w5sm4j85j7fbh42nk9wsyz5s005kj9cjwsrzrnxlbk")))) + (base32 "0ghmw3xiz567qd1iv1ggkv6zl1jb5d40mz27npk2zvlpikmqpc6c")))) (build-system meson-build-system) (arguments (list diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index df3a5129cb..e456b40a20 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -1756,14 +1756,14 @@ of the same name.") (define-public wireshark (package (name "wireshark") - (version "4.0.4") + (version "4.0.5") (source (origin (method url-fetch) (uri (string-append "https://www.wireshark.org/download/src/wireshark-" version ".tar.xz")) (sha256 - (base32 "0jz76ra86gy7r4wwb174lggnl5y29nn68l7ydw1kj1phcijrz854")))) + (base32 "0abb36n3li5w22f435k31mvk0sy0f41sxz4fqrl4ksjzjd377dki")))) (build-system cmake-build-system) (arguments (list diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm index 60bf8409ee..bc3edf9122 100644 --- a/gnu/packages/parallel.scm +++ b/gnu/packages/parallel.scm @@ -500,6 +500,35 @@ obtain information about the CPU being used: supported instruction set, processor name, cache information, and topology information.") (license license:bsd-2)))) +(define-public clog + (package + (inherit cpuinfo) ;distributed with cpuinfo but not built by it + (name "clog") + (source (origin + (inherit (package-source cpuinfo)) + (patches (search-patches "clog-fix-shared-build.patch")))) + (arguments + (list #:configure-flags #~(list "-DBUILD_SHARED_LIBS=ON") + #:phases #~(modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "deps/clog")))))) + (native-inputs (list googletest)) + (inputs '()) + (synopsis "C-style logging library based on printf") + (description + "This package provides a C-style library for logging errors, +warnings, information notes, and debug information. Its features are: +@itemize +@item printf-style interface for formatting variadic parameters. +@item Separate functions for logging errors, warnings, information notes, and +debug information. +@item Independent logging settings for different modules. +@item Logging to logcat on Android and stderr/stdout on other platforms. +@item Compatible with C99 and C++. +@item Covered with unit tests. +@end itemize"))) + (define-public psimd ;; There is currently no tag in this repo. (let ((commit "072586a71b55b7f8c584153d223e95687148a900") diff --git a/gnu/packages/patches/clog-fix-shared-build.patch b/gnu/packages/patches/clog-fix-shared-build.patch new file mode 100644 index 0000000000..bf80544b90 --- /dev/null +++ b/gnu/packages/patches/clog-fix-shared-build.patch @@ -0,0 +1,85 @@ +Author: Antero Mejr <antero@mailbox.org> +Notes: Disabled function visibility hacks and googletest download. Enabled +non-static builds. + +diff --git a/deps/clog/CMakeLists.txt b/deps/clog/CMakeLists.txt +index 083f519..b7b225a 100644 +--- a/deps/clog/CMakeLists.txt ++++ b/deps/clog/CMakeLists.txt +@@ -38,20 +38,8 @@ SET(CONFU_DEPENDENCIES_SOURCE_DIR ${CMAKE_SOURCE_DIR}/deps + SET(CONFU_DEPENDENCIES_BINARY_DIR ${CMAKE_BINARY_DIR}/deps + CACHE PATH "Confu-style dependencies binary directory") + +-IF(CLOG_BUILD_TESTS) +- IF(NOT DEFINED GOOGLETEST_SOURCE_DIR) +- MESSAGE(STATUS "Downloading Google Test to ${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest (define GOOGLETEST_SOURCE_DIR to avoid it)") +- CONFIGURE_FILE(cmake/DownloadGoogleTest.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download/CMakeLists.txt") +- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" . +- WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download") +- EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build . +- WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download") +- SET(GOOGLETEST_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest" CACHE STRING "Google Test source directory") +- ENDIF() +-ENDIF() +- + # ---[ clog library +-ADD_LIBRARY(clog STATIC src/clog.c) ++ADD_LIBRARY(clog src/clog.c) + SET_TARGET_PROPERTIES(clog PROPERTIES + C_STANDARD 99 + C_EXTENSIONS NO) +@@ -74,16 +62,6 @@ INSTALL(TARGETS clog + + # ---[ clog tests + IF(CLOG_BUILD_TESTS) +- # ---[ Build google test +- IF(NOT TARGET gtest) +- IF(MSVC AND NOT CLOG_RUNTIME_TYPE STREQUAL "static") +- SET(gtest_force_shared_crt ON CACHE BOOL "" FORCE) +- ENDIF() +- ADD_SUBDIRECTORY( +- "${GOOGLETEST_SOURCE_DIR}" +- "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest") +- ENDIF() +- + ADD_EXECUTABLE(clog-test test/clog.cc) + SET_TARGET_PROPERTIES(clog-test PROPERTIES + CXX_STANDARD 11 +diff --git a/deps/clog/include/clog.h b/deps/clog/include/clog.h +index 4143761..aa9000f 100644 +--- a/deps/clog/include/clog.h ++++ b/deps/clog/include/clog.h +@@ -11,16 +11,6 @@ + #define CLOG_INFO 4 + #define CLOG_DEBUG 5 + +-#ifndef CLOG_VISIBILITY +- #if defined(__ELF__) +- #define CLOG_VISIBILITY __attribute__((__visibility__("internal"))) +- #elif defined(__MACH__) +- #define CLOG_VISIBILITY __attribute__((__visibility__("hidden"))) +- #else +- #define CLOG_VISIBILITY +- #endif +-#endif +- + #ifndef CLOG_ARGUMENTS_FORMAT + #if defined(__GNUC__) + #define CLOG_ARGUMENTS_FORMAT __attribute__((__format__(__printf__, 1, 2))) +@@ -33,11 +23,11 @@ + extern "C" { + #endif + +-CLOG_VISIBILITY void clog_vlog_debug(const char* module, const char* format, va_list args); +-CLOG_VISIBILITY void clog_vlog_info(const char* module, const char* format, va_list args); +-CLOG_VISIBILITY void clog_vlog_warning(const char* module, const char* format, va_list args); +-CLOG_VISIBILITY void clog_vlog_error(const char* module, const char* format, va_list args); +-CLOG_VISIBILITY void clog_vlog_fatal(const char* module, const char* format, va_list args); ++void clog_vlog_debug(const char* module, const char* format, va_list args); ++void clog_vlog_info(const char* module, const char* format, va_list args); ++void clog_vlog_warning(const char* module, const char* format, va_list args); ++void clog_vlog_error(const char* module, const char* format, va_list args); ++void clog_vlog_fatal(const char* module, const char* format, va_list args); + + #define CLOG_DEFINE_LOG_DEBUG(log_debug_function_name, module, level) \ + CLOG_ARGUMENTS_FORMAT \ diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm index 5e4d16e24a..74e51ec61e 100644 --- a/gnu/packages/pretty-print.scm +++ b/gnu/packages/pretty-print.scm @@ -56,14 +56,14 @@ (define-public a2ps (package (name "a2ps") - (version "4.15.3") + (version "4.15.4") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/a2ps/a2ps-" version ".tar.gz")) (sha256 (base32 - "1izpmbk3i66g8cn1bd3kdpk72vxn5ggy329xjvag5jsdxgh823nh")) + "1mvd41xvcy8vk91nndzifasq600kzlswl1379bhnpn49pa23y1ja")) (modules '((guix build utils))) (snippet ;; Remove timestamp from the installed 'README' file. diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm index f265e7cd6e..3e7704bf48 100644 --- a/gnu/packages/python-crypto.scm +++ b/gnu/packages/python-crypto.scm @@ -1258,6 +1258,7 @@ Password-Authenticated Key Exchange algorithm.") (list python-automat python-idna python-incremental + python-pyopenssl python-service-identity python-twisted python-zope-interface)) diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm index fcb7a8db1d..8714940d1c 100644 --- a/gnu/packages/text-editors.scm +++ b/gnu/packages/text-editors.scm @@ -22,6 +22,7 @@ ;;; Copyright © 2022 zamfofex <zamfofex@twdb.moe> ;;; Copyright © 2022 jgart <jgart@dismail.de> ;;; Copyright © 2022 Andy Tai <atai@atai.org> +;;; Copyright © 2023 Eidvilas Markevičius <markeviciuseidvilas@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -173,7 +174,7 @@ based command language.") (define-public kakoune (package (name "kakoune") - (version "2021.11.08") + (version "2022.10.31") (source (origin (method url-fetch) @@ -181,7 +182,7 @@ based command language.") "releases/download/v" version "/" "kakoune-" version ".tar.bz2")) (sha256 - (base32 "1x5mvmpf0rgmr2xdw5wjn4hr6qd8yvj0zx588fi324x1knfqhc5a")))) + (base32 "12z5wka649xycclbs94bfy2yyln2172dz0zycxsxr384r5i7ncgv")))) (build-system gnu-build-system) (arguments `(#:make-flags diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm index f516e975c1..b7965ea670 100644 --- a/gnu/packages/web-browsers.scm +++ b/gnu/packages/web-browsers.scm @@ -213,65 +213,57 @@ features including, tables, builtin image display, bookmarks, SSL and more.") (define-public luakit (package (name "luakit") - (version "2.3") + (version "2.3.3") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/luakit/luakit") - (commit version))) + (url "https://github.com/luakit/luakit") + (commit version))) (file-name (git-file-name name version)) (sha256 (base32 - "1khbn7dpizkznnwkw7rcfhf72dnd1nazk7dwb4rkh9i97b53mf1y")))) - (inputs - `(("lua-5.1" ,lua-5.1) - ("gtk+" ,gtk+) - ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) - ("glib-networking" ,glib-networking) - ("lua5.1-filesystem" ,lua5.1-filesystem) - ("luajit" ,luajit) - ("webkitgtk" ,webkitgtk-with-libsoup2) - ("sqlite" ,sqlite))) - (native-inputs - (list pkg-config)) + "19z6idmjz6y7xmjpqgw65mdfi65lyvy06819dj5bb7rad63v5542")))) (build-system glib-or-gtk-build-system) (arguments - `(#:make-flags - (let ((out (assoc-ref %outputs "out"))) - (list - "CC=gcc" - "LUA_BIN_NAME=lua" - "DEVELOPMENT_PATHS=0" - (string-append "PREFIX=" out) - (string-append "XDGPREFIX=" out "/etc/xdg"))) - #:phases - (modify-phases %standard-phases - (add-before 'build 'lfs-workaround - (lambda _ - (setenv "LUA_CPATH" - (string-append - (assoc-ref %build-inputs "lua5.1-filesystem") - "/lib/lua/5.1/?.so;;")) - #t)) - (add-before 'build 'set-version - (lambda _ - (setenv "VERSION_FROM_GIT" ,(package-version this-package)) - #t)) - (delete 'configure) - (delete 'check) - (add-after 'install 'wrap - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((luakit (assoc-ref outputs "out")) - (lua5.1-filesystem (assoc-ref inputs "lua5.1-filesystem") ) - (gtk (assoc-ref inputs "gtk+")) - (gtk-share (string-append gtk "/share"))) - (wrap-program (string-append luakit "/bin/luakit") - `("LUA_CPATH" prefix - (,(string-append lua5.1-filesystem - "/lib/lua/5.1/?.so;;"))) - `("XDG_CONFIG_DIRS" prefix - (,(string-append luakit "/etc/xdg/")))) - #t)))))) + (list + #:tests? #false ;require un-packaged "luassert" + #:test-target "run-tests" + #:make-flags + #~(list (string-append "CC=" #$(cc-for-target)) + "LUA_BIN_NAME=lua" + "DEVELOPMENT_PATHS=0" + (string-append "PREFIX=" #$output) + (string-append "XDGPREFIX=" #$output "/etc/xdg")) + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'lfs-workaround + (lambda _ + (setenv "LUA_CPATH" + (string-append #$(this-package-input "lua5.1-filesystem") + "/lib/lua/5.1/?.so;;")))) + (add-before 'build 'set-version + (lambda _ + (setenv "VERSION_FROM_GIT" #$version))) + (delete 'configure) + (add-after 'install 'wrap + (lambda _ + (wrap-program (string-append #$output "/bin/luakit") + `("LUA_CPATH" prefix + (,(string-append #$(this-package-input "lua5.1-filesystem") + "/lib/lua/5.1/?.so;;"))) + `("XDG_CONFIG_DIRS" prefix + (,(string-append #$output "/etc/xdg/"))))))))) + (native-inputs + (list pkg-config)) + (inputs + (list glib-networking + gsettings-desktop-schemas + gtk+ + lua-5.1 + lua5.1-filesystem + luajit + sqlite + webkitgtk-with-libsoup2)) (synopsis "Fast, lightweight, and simple browser based on WebKit") (description "Luakit is a fast, lightweight, and simple to use micro-browser framework extensible by Lua using the WebKit web content engine diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index cd0c122fca..f1fcc68d5f 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -748,7 +748,7 @@ desktop environment.") (define-public icewm (package (name "icewm") - (version "3.3.2") + (version "3.3.3") (source (origin (method url-fetch) (uri (string-append @@ -756,7 +756,7 @@ desktop environment.") version "/icewm-" version ".tar.lz")) (sha256 (base32 - "1mp1xl64sin3d4nkh19qmnic1c9qcwf9v7mkzji76pg3mzd823jg")))) + "0wyg7lk65kf03brhzrbk158sr8d5cqny5qcyrwypnzpp0chcff71")))) (build-system gnu-build-system) (native-inputs (list pkg-config)) (inputs (list fontconfig @@ -1884,7 +1884,7 @@ core/thread.") (define-public wlr-randr (package (name "wlr-randr") - (version "0.2.0") + (version "0.3.0") (source (origin (method git-fetch) @@ -1893,7 +1893,7 @@ core/thread.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0d44r4schknfc3g09y0kjbhl62zkynv6hi1z4zqc9ic5fhav3r15")))) + (base32 "0cj24fb6s7n8nphvhrp8ldrivjdcrjw64i5v9rsfb6z80q4qg548")))) (build-system meson-build-system) (inputs (list wayland)) (native-inputs (list pkg-config)) diff --git a/gnu/services/base.scm b/gnu/services/base.scm index dfc7571e55..e8eae72aa2 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -15,7 +15,7 @@ ;;; Copyright © 2020, 2021 Brice Waegeneire <brice@waegenei.re> ;;; Copyright © 2021 qblade <qblade@protonmail.com> ;;; Copyright © 2021 Hui Lu <luhuins@163.com> -;;; Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2021 muradm <mail@muradm.net> ;;; Copyright © 2022 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2022 Justin Veilleux <terramorpha@cock.li> @@ -1428,7 +1428,11 @@ the tty to run, among other things." (list (shepherd-service (documentation "Run libc's name service cache daemon (nscd).") (provision '(nscd)) - (requirement '(user-processes)) + + ;; Logs are written with syslog(3), which writes to /dev/console + ;; when nobody's listening--ugly. Thus, wait for syslogd. + (requirement '(user-processes syslogd)) + (start #~(make-forkexec-constructor (list #$nscd "-f" #$nscd.conf "--foreground") @@ -1497,31 +1501,36 @@ given @var{config}---an @code{<nscd-configuration>} object. @xref{Name Service Switch}, for an example." (service nscd-service-type config)) -;; Snippet adapted from the GNU inetutils manual. +;;; Snippet adapted from the GNU inetutils manual. (define %default-syslog.conf - (plain-file "syslog.conf" " - # Log all error messages, authentication messages of - # level notice or higher and anything of level err or - # higher to the console. - # Don't log private authentication messages! - *.alert;auth.notice;authpriv.none -/dev/console - - # Log anything (except mail) of level info or higher. - # Don't log private authentication messages! - *.info;mail.none;authpriv.none -/var/log/messages - - # Log \"debug\"-level entries and nothing else. - *.=debug -/var/log/debug - - # Same, in a different place. - *.info;mail.none;authpriv.none -/dev/tty12 - - # The authpriv file has restricted access. - # 'fsync' the file after each line (hence the lack of a leading dash). - authpriv.* /var/log/secure - - # Log all the mail messages in one place. - mail.* -/var/log/maillog + (plain-file "syslog.conf" "\ +# See info '(inetutils) syslogd invocation' for the documentation +# of the syslogd configuration syntax. + +# Log all error messages, authentication messages of +# level notice or higher and anything of level err or +# higher to the console. +# Don't log private authentication messages! +*.alert;auth.notice;authpriv.none -/dev/console + +# Log anything (except mail) of level info or higher. +# Don't log private authentication messages! +*.info;mail.none;authpriv.none -/var/log/messages + +# Log \"debug\"-level entries and nothing else. +*.=debug -/var/log/debug + +# Same, in a different place. +*.info;mail.none;authpriv.none -/dev/tty12 + +# The authpriv file has restricted access. +# 'fsync' the file after each line (hence the lack of a leading dash). +# Also include unprivileged auth logs of info or higher level +# to conveniently gather the authentication data at the same place. +authpriv.*;auth.info /var/log/secure + +# Log all the mail messages in one place. +mail.* -/var/log/maillog ")) (define-record-type* <syslog-configuration> @@ -1532,30 +1541,57 @@ Service Switch}, for an example." (config-file syslog-configuration-config-file (default %default-syslog.conf))) -(define syslog-service-type - (shepherd-service-type - 'syslog - (lambda (config) - (define config-file - (syslog-configuration-config-file config)) +;;; Note: a static file name is used for syslog.conf so that the reload action +;;; work as intended. +(define syslog.conf "/etc/syslog.conf") - (shepherd-service - (documentation "Run the syslog daemon (syslogd).") - (provision '(syslogd)) - (requirement '(user-processes)) - (actions (list (shepherd-configuration-action config-file))) - (start #~(let ((spawn (make-forkexec-constructor - (list #$(syslog-configuration-syslogd config) - "--rcfile" #$config-file) - #:pid-file "/var/run/syslog.pid"))) - (lambda () - ;; Set the umask such that file permissions are #o640. - (let ((mask (umask #o137)) - (pid (spawn))) - (umask mask) - pid)))) - (stop #~(make-kill-destructor)))) - (syslog-configuration) +(define (syslog-etc configuration) + (match-record configuration <syslog-configuration> + (config-file) + (list `(,(basename syslog.conf) ,config-file)))) + +(define (syslog-shepherd-service config) + (define config-file + (syslog-configuration-config-file config)) + + (shepherd-service + (documentation "Run the syslog daemon (syslogd).") + (provision '(syslogd)) + (requirement '(user-processes)) + (actions + (list (shepherd-configuration-action syslog.conf) + (shepherd-action + (name 'reload) + (documentation "Reload the configuration file from disk.") + (procedure + #~(lambda (pid) + (if pid + (begin + (kill pid SIGHUP) + (display #$(G_ "Service syslog has been asked to \ +reload its settings file."))) + (display #$(G_ "Service syslog is not running.")))))))) + ;; Note: a static file name is used for syslog.conf so that the reload + ;; action work as intended. + (start #~(let ((spawn (make-forkexec-constructor + (list #$(syslog-configuration-syslogd config) + #$(string-append "--rcfile=" syslog.conf)) + #:pid-file "/var/run/syslog.pid"))) + (lambda () + ;; Set the umask such that file permissions are #o640. + (let ((mask (umask #o137)) + (pid (spawn))) + (umask mask) + pid)))) + (stop #~(make-kill-destructor)))) + +(define syslog-service-type + (service-type + (name 'syslog) + (default-value (syslog-configuration)) + (extensions (list (service-extension shepherd-root-service-type + (compose list syslog-shepherd-service)) + (service-extension etc-service-type syslog-etc))) (description "Run the syslog daemon, @command{syslogd}, which is responsible for logging system messages."))) diff --git a/gnu/services/databases.scm b/gnu/services/databases.scm index b7bd1e587e..e8e42d3b7b 100644 --- a/gnu/services/databases.scm +++ b/gnu/services/databases.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 David Thompson <davet@gnu.org> -;;; Copyright © 2015, 2016, 2022 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2015-2016, 2022-2023 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> ;;; Copyright © 2017 Christopher Baines <mail@cbaines.net> ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org> @@ -167,7 +167,8 @@ host all all ::1/128 md5")) (define-record-type* <postgresql-configuration> postgresql-configuration make-postgresql-configuration postgresql-configuration? - (postgresql postgresql-configuration-postgresql) ;file-like + (postgresql postgresql-configuration-postgresql ;file-like + (default postgresql-10)) (port postgresql-configuration-port (default 5432)) (locale postgresql-configuration-locale @@ -308,11 +309,12 @@ host all all ::1/128 md5")) (call-with-input-file #$pid-file read)) (_ #t)))))) (list (shepherd-service - (provision '(postgres)) + (provision '(postgres postgresql)) (documentation "Run the PostgreSQL daemon.") (requirement '(user-processes loopback syslogd)) (modules `((ice-9 match) ,@%default-modules)) + (actions (list (shepherd-configuration-action config-file))) (start (action "start")) (stop (action "stop")))))))) @@ -329,8 +331,7 @@ host all all ::1/128 md5")) (service-extension profile-service-type (compose list postgresql-configuration-postgresql)))) - (default-value (postgresql-configuration - (postgresql postgresql-10))) + (default-value (postgresql-configuration)) (description "Run the PostgreSQL database server."))) (define-deprecated (postgresql-service #:key (postgresql postgresql) @@ -595,6 +596,8 @@ port=" (number->string port) " (provision '(mysql)) (requirement '(user-processes)) (documentation "Run the MySQL server.") + (actions (list (shepherd-configuration-action + (mysql-configuration-file config)))) (start (let ((mysql (mysql-configuration-mysql config)) (extra-env (mysql-configuration-extra-environment config)) (my.cnf (mysql-configuration-file config))) @@ -752,6 +755,7 @@ port=" (number->string port) " (provision '(redis)) (documentation "Run the Redis daemon.") (requirement '(user-processes syslogd)) + (actions (list (shepherd-configuration-action config-file))) (start #~(make-forkexec-constructor '(#$(file-append redis "/bin/redis-server") #$config-file) diff --git a/gnu/services/dns.scm b/gnu/services/dns.scm index 2ff9f90cd0..f45fc99c69 100644 --- a/gnu/services/dns.scm +++ b/gnu/services/dns.scm @@ -622,6 +622,7 @@ (documentation "Run the Knot DNS daemon.") (provision '(knot dns)) (requirement '(networking)) + (actions (list (shepherd-configuration-action config-file))) (start #~(make-forkexec-constructor (list (string-append #$knot "/sbin/knotd") "-c" #$config-file))) diff --git a/gnu/services/herd.scm b/gnu/services/herd.scm index e489ce2b9a..48594015fc 100644 --- a/gnu/services/herd.scm +++ b/gnu/services/herd.scm @@ -282,14 +282,10 @@ returns a shepherd <service> object." `(primitive-load ,file)) files)))) -(define (load-services/safe files) - "This is like 'load-services', but make sure only the subset of FILES that -can be safely reloaded is actually reloaded." - (eval-there `(let ((services (map primitive-load ',files))) - ;; Since version 0.5.0 of the Shepherd, registering a service - ;; that has the same name as an already-registered service - ;; makes it a "replacement" of that previous service. - (apply register-services services)))) +(define load-services/safe + ;; Deprecated. It used to behave differently before service replacements + ;; were a thing. + load-services) (define* (start-service name #:optional (arguments '())) (invoke-action name 'start arguments diff --git a/gnu/services/rsync.scm b/gnu/services/rsync.scm index d456911563..aeb4275031 100644 --- a/gnu/services/rsync.scm +++ b/gnu/services/rsync.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com> -;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2021, 2023 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -225,13 +225,15 @@ please use 'modules' instead~%"))) (pid-file (rsync-configuration-pid-file config)) (port-number (rsync-configuration-port-number config)) (user (rsync-configuration-user config)) - (group (rsync-configuration-group config))) + (group (rsync-configuration-group config)) + (config-file (rsync-config-file config))) (list (shepherd-service (provision '(rsync)) (documentation "Run rsync daemon.") + (actions (list (shepherd-configuration-action config-file))) (start #~(make-forkexec-constructor (list (string-append #$rsync "/bin/rsync") - "--config" #$(rsync-config-file config) + "--config" #$config-file "--daemon") #:pid-file #$pid-file #:user #$user diff --git a/gnu/tests.scm b/gnu/tests.scm index ca677d315b..96ecb40ea2 100644 --- a/gnu/tests.scm +++ b/gnu/tests.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016-2020, 2022 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016-2020, 2022-2023 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> @@ -88,6 +88,61 @@ (with-extensions extensions gexp))) +(define (marionette-program device imported-modules extensions) + "Return the program that runs the marionette REPL on DEVICE. Ensure +IMPORTED-MODULES and EXTENSIONS are accessible from the REPL." + (define code + (with-imported-modules-and-extensions + `((guix build utils) + (guix build syscalls) + ,@imported-modules) + extensions + #~(begin + (use-modules (ice-9 match) + (ice-9 binary-ports)) + + (define (self-quoting? x) + (letrec-syntax ((one-of (syntax-rules () + ((_) #f) + ((_ pred rest ...) + (or (pred x) + (one-of rest ...)))))) + (one-of symbol? string? keyword? pair? null? array? + number? boolean? char?))) + + (let ((repl (open-file #$device "r+0")) + (console (open-file "/dev/console" "r+0"))) + ;; Redirect output to the console. + (close-fdes 1) + (close-fdes 2) + (dup2 (fileno console) 1) + (dup2 (fileno console) 2) + (close-port console) + + (display 'ready repl) + (let loop () + (newline repl) + + (match (read repl) + ((? eof-object?) + (primitive-exit 0)) + (expr + (catch #t + (lambda () + (let ((result (primitive-eval expr))) + (write (if (self-quoting? result) + result + (object->string result)) + repl))) + (lambda (key . args) + (print-exception (current-error-port) + (stack-ref (make-stack #t) 1) + key args) + (write #f repl))))) + (loop)))))) + + (program-file "marionette-repl.scm" code)) + (define (marionette-shepherd-service config) "Return the Shepherd service for the marionette REPL" (match config @@ -101,57 +156,10 @@ (modules '((ice-9 match) (srfi srfi-9 gnu))) - (start - (with-imported-modules-and-extensions imported-modules extensions - #~(lambda () - (define (self-quoting? x) - (letrec-syntax ((one-of (syntax-rules () - ((_) #f) - ((_ pred rest ...) - (or (pred x) - (one-of rest ...)))))) - (one-of symbol? string? keyword? pair? null? array? - number? boolean? char?))) - - (match (primitive-fork) - (0 - (dynamic-wind - (const #t) - (lambda () - (let ((repl (open-file #$device "r+0")) - (console (open-file "/dev/console" "r+0"))) - ;; Redirect output to the console. - (close-fdes 1) - (close-fdes 2) - (dup2 (fileno console) 1) - (dup2 (fileno console) 2) - (close-port console) - - (display 'ready repl) - (let loop () - (newline repl) - - (match (read repl) - ((? eof-object?) - (primitive-exit 0)) - (expr - (catch #t - (lambda () - (let ((result (primitive-eval expr))) - (write (if (self-quoting? result) - result - (object->string result)) - repl))) - (lambda (key . args) - (print-exception (current-error-port) - (stack-ref (make-stack #t) 1) - key args) - (write #f repl))))) - (loop)))) - (lambda () - (primitive-exit 1)))) - (pid - pid))))) + (start #~(make-forkexec-constructor + (list #$(marionette-program device + imported-modules + extensions)))) (stop #~(make-kill-destructor))))))) (define marionette-service-type diff --git a/gnu/tests/base.scm b/gnu/tests/base.scm index 97edbbc6ad..5584628514 100644 --- a/gnu/tests/base.scm +++ b/gnu/tests/base.scm @@ -148,7 +148,7 @@ Otherwise assume that there is no password for root." (marionette-eval `(begin (use-modules (gnu services herd)) - (start 'user-processes) + (start-service 'user-processes) ((@@ (gnu services herd) eval-there) '(let ((result (read (current-input-port)))) (if (eof-object? result) diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm index 4e0e274e66..57e9df4421 100644 --- a/gnu/tests/install.scm +++ b/gnu/tests/install.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016-2022 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016-2023 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017, 2019, 2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2020 Danny Milosavljevic <dannym@scratchpost.org> @@ -316,7 +316,7 @@ such as for RAID systems." ;; Wait for tty1. (marionette-eval '(begin (use-modules (gnu services herd)) - (start 'term-tty1)) + (start-service 'term-tty1)) marionette) (when #$(->bool script) diff --git a/guix/packages.scm b/guix/packages.scm index bce82ab3a3..e26602d589 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -1234,11 +1234,14 @@ input list." "Return all source origins associated with PACKAGE; including origins in PACKAGE's inputs and patches." (define (expand source) - (cons - source - (filter origin? (origin-patches source)))) + (cons source + (filter origin? (origin-patches source)))) - `(,@(or (and=> (package-source package) expand) '()) + `(,@(match (package-source package) + ((? origin? origin) + (expand origin)) + (_ + '())) ,@(filter-map (match-lambda ((_ (? origin? orig) _ ...) orig) diff --git a/tests/guix-archive.sh b/tests/guix-archive.sh index 00b87ff0ac..0866b5a4d8 100644 --- a/tests/guix-archive.sh +++ b/tests/guix-archive.sh @@ -44,7 +44,7 @@ cmp "$archive" "$archive_alt" # Check the exit value upon import. guix archive --import < "$archive" -! guix archive something-that-does-not-exist +guix archive --export something-that-does-not-exist && false # This one must not be listed as missing. guix build guile-bootstrap > "$archive" @@ -61,7 +61,7 @@ cmp "$archive" "$archive_alt" # This is not a valid store file name, so an error. echo something invalid > "$archive" -! guix archive --missing < "$archive" +guix archive --missing < "$archive" && false # Check '--extract'. guile -c "(use-modules (guix serialization)) @@ -77,4 +77,6 @@ guix archive -t < "$archive" | grep "^D /share/guile" guix archive -t < "$archive" | grep "^x /bin/guile" guix archive -t < "$archive" | grep "^r /share/guile.*/boot-9\.scm" -! echo foo | guix archive --authorize +echo foo | guix archive --authorize && false + +exit 0 diff --git a/tests/guix-build-branch.sh b/tests/guix-build-branch.sh index 7bf6a318ca..2d3b115e78 100644 --- a/tests/guix-build-branch.sh +++ b/tests/guix-build-branch.sh @@ -58,4 +58,6 @@ guix gc -R "$v0_1_0_drv" | grep guile-gcrypt-9e3eacd test "$v0_1_0_drv" != "$latest_drv" test "$v0_1_0_drv" != "$orig_drv" -! guix build guix --with-commit=guile-gcrypt=000 -d +guix build guix --with-commit=guile-gcrypt=000 -d && false + +exit 0 diff --git a/tests/guix-build.sh b/tests/guix-build.sh index 9cbf8fe26d..2c59177c86 100644 --- a/tests/guix-build.sh +++ b/tests/guix-build.sh @@ -25,7 +25,7 @@ guix build --version # Should fail. -! guix build -e + +guix build -e + && false # Source-less packages are accepted; they just return nothing. guix build -e '(@ (gnu packages bootstrap) %bootstrap-glibc)' -S @@ -92,7 +92,7 @@ cat > "$module_dir/foo.scm" <<EOF (use-modules (guix)) ) ;extra closing paren EOF -! guix build -f "$module_dir/foo.scm" 2> "$module_dir/stderr" +guix build -f "$module_dir/foo.scm" 2> "$module_dir/stderr" && false grep "read error" "$module_dir/stderr" rm "$module_dir/stderr" "$module_dir/foo.scm" @@ -199,7 +199,7 @@ cat > "$module_dir/foo.scm" <<EOF (inputs (quasiquote (("sed" ,sed)))))) ;unbound variable EOF -! guix build package-with-something-wrong -n +guix build package-with-something-wrong -n && false guix build package-with-something-wrong -n 2> "$module_dir/err" || true grep "unbound" "$module_dir/err" # actual error grep "forget.*(gnu packages base)" "$module_dir/err" # hint @@ -240,7 +240,7 @@ cat > "$module_dir/cc-user.scm" <<EOF (define-module (cc-user)) (make-thing 42) EOF -! guix build -f "$module_dir/cc-user.scm" -n 2> "$module_dir/err" +guix build -f "$module_dir/cc-user.scm" -n 2> "$module_dir/err" && false cat "$module_dir/err" grep "make-thing.*unbound" "$module_dir/err" # actual error grep "forget.*(bb-public)" "$module_dir/err" # hint @@ -270,7 +270,7 @@ test "`guix build --log-file guile-bootstrap`" = "$log" test "`guix build --log-file $out`" = "$log" # Should fail because the name/version combination could not be found. -! guix build hello-0.0.1 -n +guix build hello-0.0.1 -n && false # Keep a symlink to the result, registered as a root. result="t-result-$$" @@ -279,7 +279,7 @@ guix build -r "$result" \ test -x "$result/bin/guile" # Should fail, because $result already exists. -! guix build -r "$result" -e '(@@ (gnu packages bootstrap) %bootstrap-guile)' +guix build -r "$result" -e '(@@ (gnu packages bootstrap) %bootstrap-guile)' && false rm -f "$result" @@ -323,7 +323,7 @@ drv2=`guix build hello -d --with-input=gcc=gcc-toolchain` test "$drv1" != "$drv2" guix gc -R "$drv2" | grep `guix build -d gcc-toolchain` -! guix build guile --with-input=libunistring=something-really-silly +guix build guile --with-input=libunistring=something-really-silly && false # Deprecated/superseded packages. test "`guix build superseded -d`" = "`guix build bar -d`" @@ -331,8 +331,8 @@ test "`guix build superseded -d`" = "`guix build bar -d`" # Parsing package names and versions. guix build -n time # PASS guix build -n time@1.9 # PASS, version found -! guix build -n time@3.2 # FAIL, version not found -! guix build -n something-that-will-never-exist # FAIL +guix build -n time@3.2 && false # FAIL, version not found +guix build -n something-that-will-never-exist && false # FAIL # Invoking a monadic procedure. guix build -e "(begin @@ -404,4 +404,6 @@ export GUIX_BUILD_OPTIONS guix build emacs GUIX_BUILD_OPTIONS="--something-completely-crazy" -! guix build emacs +guix build emacs && false + +exit 0 diff --git a/tests/guix-daemon.sh b/tests/guix-daemon.sh index 4b09c8c162..d85727c955 100644 --- a/tests/guix-daemon.sh +++ b/tests/guix-daemon.sh @@ -224,7 +224,7 @@ daemon_pid=$! GUIX_DAEMON_SOCKET="guix://$tcp_socket" export GUIX_DAEMON_SOCKET -! guix gc +guix gc && false unset GUIX_DAEMON_SOCKET kill "$daemon_pid" diff --git a/tests/guix-download.sh b/tests/guix-download.sh index 5475d43e60..f4cb335eef 100644 --- a/tests/guix-download.sh +++ b/tests/guix-download.sh @@ -23,11 +23,11 @@ guix download --version # Make sure it fails here. -! guix download http://does.not/exist +guix download http://does.not/exist && false -! guix download unknown://some/where; +guix download unknown://some/where && false -! guix download /does-not-exist +guix download /does-not-exist && false # This one should succeed. guix download "file://$abs_top_srcdir/README" @@ -43,4 +43,6 @@ GUIX_DAEMON_SOCKET="/nowhere" guix download -o "$output" \ cmp "$output" "$abs_top_srcdir/README" # This one should fail. -! guix download "file:///does-not-exist" "file://$abs_top_srcdir/README" +guix download "file:///does-not-exist" "file://$abs_top_srcdir/README" && false + +exit 0 diff --git a/tests/guix-environment-container.sh b/tests/guix-environment-container.sh index a30d6b7fb2..a3bc1ab572 100644 --- a/tests/guix-environment-container.sh +++ b/tests/guix-environment-container.sh @@ -260,16 +260,15 @@ guix shell --bootstrap guile-bootstrap --container \ /usr/bin/guile --version # A dangling symlink causes the command to fail. -! guix shell --bootstrap -CS /usr/bin/python=bin/python guile-bootstrap -- exit +guix shell --bootstrap -CS /usr/bin/python=bin/python guile-bootstrap -- exit && false # An invalid symlink spec causes the command to fail. -! guix shell --bootstrap -CS bin/guile=/usr/bin/guile guile-bootstrap -- exit +guix shell --bootstrap -CS bin/guile=/usr/bin/guile guile-bootstrap -- exit && false # Check whether '--nesting' works. guix build hello -d env="$(type -P pre-inst-env)" -if guix shell -C -D guix -- "$env" guix build hello -d # cannot work -then false; else true; fi +guix shell -C -D guix -- "$env" guix build hello -d && false # cannot work hello_drv="$(guix build hello -d)" hello_drv_nested="$(cd "$(dirname env)" && guix shell --bootstrap -CW -D guix -- "$env" guix build hello -d)" test "$hello_drv" = "$hello_drv_nested" diff --git a/tests/guix-environment.sh b/tests/guix-environment.sh index 95fe95b437..1424ea9a88 100644 --- a/tests/guix-environment.sh +++ b/tests/guix-environment.sh @@ -60,7 +60,7 @@ guix environment --bootstrap --ad-hoc guile-bootstrap --pure \ grep '^PATH=' "$tmpdir/a" grep '^GUIX_TEST_ABC=' "$tmpdir/a" grep '^GUIX_TEST_DEF=' "$tmpdir/a" -! grep '^GUIX_TEST_XYZ=' "$tmpdir/a" +grep '^GUIX_TEST_XYZ=' "$tmpdir/a" && false # Make sure the exit value is preserved. if guix environment --bootstrap --ad-hoc guile-bootstrap --pure \ @@ -207,7 +207,7 @@ then done # 'make-boot0' itself must not be listed. - ! guix gc --references "$profile" | grep make-boot0 + guix gc --references "$profile" | grep make-boot0 && false # Make sure that the shell spawned with '--exec' sees the same environment # as returned by '--search-paths'. @@ -224,7 +224,7 @@ then test "x$make_boot0_debug" != "x" # Make sure the "debug" output is not listed. - ! guix gc --references "$profile" | grep "$make_boot0_debug" + guix gc --references "$profile" | grep "$make_boot0_debug" && false # Compute the build environment for the initial GNU Make, but add in the # bootstrap Guile as an ad-hoc addition. diff --git a/tests/guix-gc.sh b/tests/guix-gc.sh index f40619876d..675a13115d 100644 --- a/tests/guix-gc.sh +++ b/tests/guix-gc.sh @@ -36,11 +36,11 @@ unset out # For some operations, passing extra arguments is an error. for option in "" "-C 500M" "--verify" "--optimize" "--list-roots" do - ! guix gc $option whatever + guix gc $option whatever && false done # This should fail. -! guix gc --verify=foo +guix gc --verify=foo && false # Check the references of a .drv. drv="`guix build guile-bootstrap -d`" @@ -51,7 +51,7 @@ guix gc --references "$drv" | grep -e -bash guix gc --references "$out" guix gc --references "$out/bin/guile" -! guix gc --references /dev/null; +guix gc --references /dev/null && false # Check derivers. guix gc --derivers "$out" | grep "$drv" @@ -62,7 +62,7 @@ test -f "$drv" guix gc --list-dead | grep "$drv" guix gc --delete "$drv" -! test -f "$drv" +test ! -f "$drv" # Add a .drv, register it as a root. drv="`guix build --root=guix-gc-root lsh -d`" @@ -71,18 +71,18 @@ test -f "$drv" && test -L guix-gc-root guix gc --list-roots | grep "$PWD/guix-gc-root" guix gc --list-live | grep "$drv" -! guix gc --delete "$drv"; +guix gc --delete "$drv" && false rm guix-gc-root guix gc --list-dead | grep "$drv" guix gc --delete "$drv" -! test -f "$drv" +test ! -f "$drv" # Try a random collection. guix gc -C 1KiB # Check trivial error cases. -! guix gc --delete /dev/null; +guix gc --delete /dev/null && false # Bug #19757 out="`guix build guile-bootstrap`" @@ -90,14 +90,14 @@ test -d "$out" guix gc --delete "$out" -! test -d "$out" +test ! -d "$out" out="`guix build guile-bootstrap`" test -d "$out" guix gc --delete "$out/" -! test -d "$out" +test ! -d "$out" out="`guix build guile-bootstrap`" test -d "$out" diff --git a/tests/guix-git-authenticate.sh b/tests/guix-git-authenticate.sh index 2b90d8a4af..ec89f941e6 100644 --- a/tests/guix-git-authenticate.sh +++ b/tests/guix-git-authenticate.sh @@ -35,9 +35,9 @@ intro_signer="BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA" cache_key="test-$$" # This must fail because the end commit is not a descendant of $intro_commit. -! guix git authenticate "$intro_commit" "$intro_signer" \ +guix git authenticate "$intro_commit" "$intro_signer" \ --cache-key="$cache_key" --stats \ - --end=9549f0283a78fe36f2d4ff2a04ef8ad6b0c02604 + --end=9549f0283a78fe36f2d4ff2a04ef8ad6b0c02604 && false # The v1.2.0 commit is a descendant of $intro_commit and it satisfies the # authorization invariant. @@ -59,8 +59,8 @@ guix git authenticate "$intro_commit" "$intro_signer" \ --end="$v1_0_0_commit" # This should fail because these commits lack '.guix-authorizations'. -! guix git authenticate "$v1_0_0_commit" "$v1_0_0_signer" \ - --cache-key="$cache_key" --end="$v1_0_1_commit" +guix git authenticate "$v1_0_0_commit" "$v1_0_0_signer" \ + --cache-key="$cache_key" --end="$v1_0_1_commit" && false # This should work thanks to '--historical-authorizations'. guix git authenticate "$v1_0_0_commit" "$v1_0_0_signer" \ diff --git a/tests/guix-graph.sh b/tests/guix-graph.sh index e813e01c31..9824c6a65a 100644 --- a/tests/guix-graph.sh +++ b/tests/guix-graph.sh @@ -59,7 +59,7 @@ guix graph -t references guile-bootstrap | grep guile-bootstrap guix graph -e '(@ (gnu packages bootstrap) %bootstrap-guile)' \ | grep guile-bootstrap -! guix graph -e + +guix graph -e + && false # Try passing store file names. @@ -76,13 +76,13 @@ cmp "$tmpfile1" "$tmpfile2" # Try package transformation options. guix graph git | grep 'label = "openssl' guix graph git --with-input=openssl=libressl | grep 'label = "libressl' -! guix graph git --with-input=openssl=libressl | grep 'label = "openssl' +guix graph git --with-input=openssl=libressl | grep 'label = "openssl' && false # Try --load-path guix graph -L $module_dir dummy | grep 'label = "dummy' # Displaying shortest paths (or lack thereof). -! guix graph --path emacs vim +guix graph --path emacs vim && false path="\ emacs diff --git a/tests/guix-hash.sh b/tests/guix-hash.sh index 8b03c7985d..e260396fd8 100644 --- a/tests/guix-hash.sh +++ b/tests/guix-hash.sh @@ -38,12 +38,12 @@ test `guix hash -H sha1 -f base64 /dev/null` = "2jmj7l5rSw0yVb/vlWAYkK/YBwk=" test "`guix hash /dev/null "$abs_top_srcdir/README"`" = "`guix hash /dev/null ; guix hash "$abs_top_srcdir/README"`" # Zero files. -! guix hash +guix hash && false # idem as `cat /dev/null | git hash-object --stdin` test `guix hash -S git -H sha1 -f hex /dev/null` = e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 -! guix hash -H abcd1234 /dev/null +guix hash -H abcd1234 /dev/null && false mkdir "$tmpdir" echo -n executable > "$tmpdir/exe" @@ -61,11 +61,11 @@ test `guix hash -r "$tmpdir" 2>/dev/null` = 10k1lw41wyrjf9mxydi0is5nkpynlsvgslin test `guix hash -r "$tmpdir" -H sha512 2>/dev/null` = 301ra58c2vahczzxiyfin41mpyb0ljh4dh9zn3ijvwviaw1j40sfzw5skh9x945da88n3785ggifzig7acd6k72h0mpsc20m1f66m9n # Without '-r', this should fail. -! guix hash "$tmpdir" +guix hash "$tmpdir" && false # This should fail because /dev/null is a character device, which # the archive format doesn't support. -! guix hash -S nar /dev/null +guix hash -S nar /dev/null && false # Adding a .git directory mkdir "$tmpdir/.git" @@ -80,5 +80,6 @@ test `guix hash -S nar $tmpdir -x` = 10k1lw41wyrjf9mxydi0is5nkpynlsvgslinics4ppi test `guix hash -S git $tmpdir -x` = 1m9yxz99g7askm88h6hzyv4g2bfv57rp5wvwp3iq5ypsplq1xkkk # Without '-r', this should fail. -! guix hash "$tmpdir" +guix hash "$tmpdir" && false +exit 0 diff --git a/tests/guix-home.sh b/tests/guix-home.sh index 11b068ca43..e9ef76c862 100644 --- a/tests/guix-home.sh +++ b/tests/guix-home.sh @@ -109,7 +109,7 @@ EOF guix home extension-graph "home.scm" | grep 'label = "home"' # There are no Shepherd services so the one below must fail. - ! guix home shepherd-graph "home.scm" + guix home shepherd-graph "home.scm" && false if container_supported then @@ -118,17 +118,17 @@ EOF # TODO: Make container independent from external environment variables. SHELL=bash guix home container home.scm -- true - ! guix home container home.scm -- false + guix home container home.scm -- false && false test "$(guix home container home.scm -- echo '$HOME')" = "$HOME" guix home container home.scm -- cat '~/.config/test.conf' | \ grep "the content of" guix home container home.scm -- test -h '~/.bashrc' test "$(guix home container home.scm -- id -u)" = 1000 - ! guix home container home.scm -- test -f '$HOME/sample/home.scm' + guix home container home.scm -- test -f '$HOME/sample/home.scm' && false guix home container home.scm --expose="$PWD=$HOME/sample" -- \ test -f '$HOME/sample/home.scm' - ! guix home container home.scm --expose="$PWD=$HOME/sample" -- \ - rm -v '$HOME/sample/home.scm' + guix home container home.scm --expose="$PWD=$HOME/sample" -- \ + rm -v '$HOME/sample/home.scm' && false else echo "'guix home container' test SKIPPED" >&2 fi @@ -206,8 +206,8 @@ EOF # the NEW content of bashrc-test-config.sh" # This file must have been removed and not backed up. - ! test -e "$HOME/.config/test.conf" - ! test -e "$HOME"/*guix-home*backup/.config/test.conf + test ! -e "$HOME/.config/test.conf" + test ! -e "$HOME"/*guix-home*backup/.config/test.conf test "$(cat "$(configuration_file)")" == "$(cat home.scm)" test "$(canonical_file_name)" == "$(readlink "${HOME}/.guix-home")" diff --git a/tests/guix-pack-relocatable.sh b/tests/guix-pack-relocatable.sh index 46120c9ee6..2fc9fde0bd 100644 --- a/tests/guix-pack-relocatable.sh +++ b/tests/guix-pack-relocatable.sh @@ -92,7 +92,7 @@ then grep 'GNU sed' "$test_directory/output" # Check whether the exit code is preserved. - ! run_without_store "$test_directory/Bin/sed" --does-not-exist + run_without_store "$test_directory/Bin/sed" --does-not-exist && false chmod -Rf +w "$test_directory"; rm -rf "$test_directory"/* else diff --git a/tests/guix-pack.sh b/tests/guix-pack.sh index a13e0ededf..4042e54aeb 100644 --- a/tests/guix-pack.sh +++ b/tests/guix-pack.sh @@ -37,7 +37,7 @@ test_directory="`mktemp -d`" trap 'chmod -Rf +w "$test_directory"; rm -rf "$test_directory"' EXIT # Reject unsuppoted packages. -! guix pack intelmetool -s armhf-linux -n +guix pack intelmetool -s armhf-linux -n && false # Compute the derivation of a pack. drv="`guix pack coreutils -d --no-grafts`" @@ -48,7 +48,7 @@ guix gc -R "$drv" | grep "`guix build coreutils -d --no-grafts`" drv="`guix pack idutils -d --no-grafts --target=arm-linux-gnueabihf`" guix gc -R "$drv" | \ grep "`guix build idutils --target=arm-linux-gnueabihf -d --no-grafts`" -! guix gc -R "$drv" | grep "`guix build idutils -d --no-grafts`" +guix gc -R "$drv" | grep "`guix build idutils -d --no-grafts`" && false # Build a tarball with no compression. guix pack --compression=none --bootstrap guile-bootstrap diff --git a/tests/guix-package-aliases.sh b/tests/guix-package-aliases.sh index 311838b768..4011584078 100644 --- a/tests/guix-package-aliases.sh +++ b/tests/guix-package-aliases.sh @@ -36,7 +36,7 @@ guix install --bootstrap guile-bootstrap -p "$profile" test -x "$profile/bin/guile" # Make sure '-r' isn't passed as-is to 'guix package'. -! guix install -r guile-bootstrap -p "$profile" --bootstrap +guix install -r guile-bootstrap -p "$profile" --bootstrap && false test -x "$profile/bin/guile" # Use a package transformation option and make sure it's recorded. @@ -48,16 +48,16 @@ grep "libreoffice=inkscape" "$profile/manifest" guix upgrade --version guix upgrade -n guix upgrade gui.e -n -! guix upgrade foo bar -n; +guix upgrade foo bar -n guix remove --version guix remove --bootstrap guile-bootstrap -p "$profile" -! test -x "$profile/bin/guile" +test ! -x "$profile/bin/guile" test `guix package -p "$profile" -I | wc -l` -eq 0 -! guix remove -p "$profile" this-is-not-installed --bootstrap +guix remove -p "$profile" this-is-not-installed --bootstrap && false -! guix remove -i guile-bootstrap -p "$profile" --bootstrap +guix remove -i guile-bootstrap -p "$profile" --bootstrap && false guix search '\<board\>' game | grep '^name: gnubg' @@ -66,7 +66,7 @@ guix show guile guix show python@3 | grep "^name: python" # "python@2" exists but is deprecated; make sure it doesn't show up. -! guix show python@2 +guix show python@2 && false # Specifying multiple packages. output="`guix show sed grep | grep ^name:`" diff --git a/tests/guix-package-net.sh b/tests/guix-package-net.sh index 1cdeff773a..62e17815bf 100644 --- a/tests/guix-package-net.sh +++ b/tests/guix-package-net.sh @@ -58,7 +58,7 @@ trap 'rm -f "$profile" "$profile_alt" "$profile.lock" "$profile_alt.lock" "$prof guix package --bootstrap -p "$profile" -i guile-bootstrap test -L "$profile" && test -L "$profile-1-link" -! test -f "$profile-2-link" +test ! -f "$profile-2-link" test -f "$profile/bin/guile" boot_make="(@ (guix tests) gnu-make-for-tests)" @@ -98,13 +98,13 @@ test "`guix package -p "$profile" -l | cut -f1 | grep guile | head -n1`" \ = " guile-bootstrap" # Exit with 1 when a generation does not exist. -! guix package -p "$profile" --list-generations=42 -! guix package -p "$profile" --switch-generation=99 +guix package -p "$profile" --list-generations=42 && false +guix package -p "$profile" --switch-generation=99 && false # Remove a package. guix package --bootstrap -p "$profile" -r "guile-bootstrap" test -L "$profile-3-link" -test -f "$profile/bin/make" && ! test -f "$profile/bin/guile" +test -f "$profile/bin/make" && test ! -f "$profile/bin/guile" # Roll back. guix package --roll-back -p "$profile" @@ -112,7 +112,7 @@ test "`readlink_base "$profile"`" = "$profile-2-link" test -x "$profile/bin/guile" && test -x "$profile/bin/make" guix package --roll-back -p "$profile" test "`readlink_base "$profile"`" = "$profile-1-link" -test -x "$profile/bin/guile" && ! test -x "$profile/bin/make" +test -x "$profile/bin/guile" && test ! -x "$profile/bin/make" # Switch to the rolled generation and switch back. guix package -p "$profile" --switch-generation=2 @@ -124,8 +124,8 @@ test "`readlink_base "$profile"`" = "$profile-1-link" for i in `seq 1 3` do guix package --bootstrap --roll-back -p "$profile" - ! test -f "$profile/bin" - ! test -f "$profile/lib" + test ! -f "$profile/bin" + test ! -f "$profile/lib" test "`readlink_base "$profile"`" = "$profile-0-link" done @@ -135,7 +135,7 @@ test -z "`guix package -p "$profile" -l 0`" # Reinstall after roll-back to the empty profile. guix package --bootstrap -p "$profile" -e "$boot_make" test "`readlink_base "$profile"`" = "$profile-1-link" -test -x "$profile/bin/guile" && ! test -x "$profile/bin/make" +test -x "$profile/bin/guile" && test ! -x "$profile/bin/make" # Check that the first generation is the current one. test "`guix package -p "$profile" -l 1 | cut -f3 | head -n1`" = "(current)" @@ -143,7 +143,7 @@ test "`guix package -p "$profile" -l 1 | cut -f3 | head -n1`" = "(current)" # Roll-back to generation 0, and install---all at once. guix package --bootstrap -p "$profile" --roll-back -i guile-bootstrap test "`readlink_base "$profile"`" = "$profile-1-link" -test -x "$profile/bin/guile" && ! test -x "$profile/bin/make" +test -x "$profile/bin/guile" && test ! -x "$profile/bin/make" # Install Make. guix package --bootstrap -p "$profile" -e "$boot_make" @@ -175,7 +175,7 @@ test -z "`guix package -p "$profile" -l 3`" rm "$profile" guix package --bootstrap -p "$profile" -i guile-bootstrap guix package --bootstrap -p "$profile_alt" -i gcc-bootstrap -! guix package -p "$profile" --search-paths | grep LIBRARY_PATH +guix package -p "$profile" --search-paths | grep LIBRARY_PATH && false guix package -p "$profile" -p "$profile_alt" --search-paths \ | grep "LIBRARY_PATH.*$profile/lib.$profile_alt/lib" @@ -234,4 +234,4 @@ guix package --bootstrap -e "$boot_make" test -f "$HOME/.guix-profile/bin/make" guix package --bootstrap --roll-back -! test -f "$HOME/.guix-profile/bin/make" +test ! -f "$HOME/.guix-profile/bin/make" diff --git a/tests/guix-package.sh b/tests/guix-package.sh index cc416ec6a1..945d59cdfb 100644 --- a/tests/guix-package.sh +++ b/tests/guix-package.sh @@ -37,7 +37,7 @@ rm -f "$profile" "$tmpfile" trap 'rm -f "$profile" "$profile.lock" "$profile-"[0-9]* "$tmpfile"; rm -rf "$module_dir" t-home-'"$$" EXIT # Use `-e' with a non-package expression. -! guix package --bootstrap -e + +guix package --bootstrap -e + && false # Install a store item and make sure the version and output in the manifest # are correct. @@ -57,23 +57,23 @@ guix gc --list-live | grep "`readlink "$profile-1-link"`" # Installing the same package a second time does nothing. guix package --bootstrap -p "$profile" -i guile-bootstrap test -L "$profile" && test -L "$profile-1-link" -! test -f "$profile-2-link" +test ! -f "$profile-2-link" test -f "$profile/bin/guile" # Unsupported packages cannot be installed. -! guix package -e '(begin (use-modules (guix) (gnu packages base)) (package (inherit sed) (supported-systems (list))))' -n +guix package -e '(begin (use-modules (guix) (gnu packages base)) (package (inherit sed) (supported-systems (list))))' -n && false case $(uname -m) in x86_64|i[3456]86) - ! guix package -i novena-eeprom -n + guix package -i novena-eeprom -n && false break;; *) - ! guix package -i intelmetool -n + guix package -i intelmetool -n && false break;; esac # Collisions are properly flagged (in this case, 'g-wrap' propagates # guile@2.2, which conflicts with guile@2.0.) -! guix package --bootstrap -n -p "$profile" -i g-wrap guile@2.0 +guix package --bootstrap -n -p "$profile" -i g-wrap guile@2.0 && false guix package --bootstrap -n -p "$profile" -i g-wrap guile@2.0 \ --allow-collisions @@ -88,7 +88,7 @@ test "`guix package -p "$profile" --search-paths | wc -l`" = 1 # $PATH type -P rm ) # Exit with 1 when a generation does not exist. -! guix package -p "$profile" --delete-generations=42 +guix package -p "$profile" --delete-generations=42 && false # Exit with 0 when trying to delete the zeroth generation. guix package -p "$profile" --delete-generations=0 @@ -101,12 +101,12 @@ guix package --bootstrap -i "glibc:debug" -p "$profile" -n # Make sure nonexistent outputs are reported. guix package --bootstrap -i "guile-bootstrap:out" -p "$profile" -n -! guix package --bootstrap -i "guile-bootstrap:does-not-exist" -p "$profile" -n -! guix package --bootstrap -i "guile-bootstrap:does-not-exist" -p "$profile" +guix package --bootstrap -i "guile-bootstrap:does-not-exist" -p "$profile" -n && false +guix package --bootstrap -i "guile-bootstrap:does-not-exist" -p "$profile" && false # Make sure we get an error when trying to remove something that's not # installed. -! guix package --bootstrap -r something-not-installed -p "$profile" +guix package --bootstrap -r something-not-installed -p "$profile" && false # Check whether `--list-available' returns something sensible. guix package -p "$profile" -A 'gui.*e' | grep guile @@ -118,8 +118,8 @@ guix package --show=guile | grep "^name: guile" guix package --show=texlive # Fail for non-existent packages or package/version pairs. -! guix package --show=does-not-exist -! guix package --show=emacs@42 +guix package --show=does-not-exist && false +guix package --show=emacs@42 && false # Search. LC_MESSAGES=C @@ -163,19 +163,19 @@ guix package --search="" > /dev/null # There's no generation older than 12 months, so the following command should # have no effect. generation="`readlink_base "$profile"`" -! guix package -p "$profile" --delete-generations=12m +guix package -p "$profile" --delete-generations=12m && false test "`readlink_base "$profile"`" = "$generation" # The following command should not delete the current generation, even though # it matches the given pattern (see <http://bugs.gnu.org/19978>.) And since # there's nothing else to delete, it should just fail. guix package --list-generations -p "$profile" -! guix package --bootstrap -p "$profile" --delete-generations=1.. +guix package --bootstrap -p "$profile" --delete-generations=1.. && false test "`readlink_base "$profile"`" = "$generation" # Make sure $profile is a GC root at this point. real_profile="`readlink -f "$profile"`" -! guix gc -d "$real_profile" +guix gc -d "$real_profile" && false test -d "$real_profile" # Now, let's remove all the symlinks to $real_profile, and make sure @@ -278,22 +278,22 @@ do guix gc --list-live | grep "`readlink "$profile_link"`" guix package --bootstrap --roll-back - ! test -f "$HOME/.guix-profile/bin" - ! test -f "$HOME/.guix-profile/lib" + test ! -f "$HOME/.guix-profile/bin" + test ! -f "$HOME/.guix-profile/lib" test "`readlink "$default_profile"`" = "`basename $default_profile-0-link`" done # Check whether '-p ~/.guix-profile' makes any difference. # See <http://bugs.gnu.org/17939>. -! test -e "$HOME/.guix-profile-0-link" -! test -e "$HOME/.guix-profile-1-link" +test ! -e "$HOME/.guix-profile-0-link" +test ! -e "$HOME/.guix-profile-1-link" guix package --bootstrap -p "$HOME/.guix-profile" -i guile-bootstrap -! test -e "$HOME/.guix-profile-1-link" +test ! -e "$HOME/.guix-profile-1-link" guix package --bootstrap --roll-back -p "$HOME/.guix-profile" -! test -e "$HOME/.guix-profile-0-link" +test ! -e "$HOME/.guix-profile-0-link" # Extraneous argument. -! guix package install foo-bar +guix package install foo-bar && false # Make sure the "broken pipe" doesn't yield an error. # Note: 'pipefail' is a Bash-specific option. @@ -382,7 +382,7 @@ cat > "$module_dir/package.scm"<<EOF (define my-package coreutils) ;returns *unspecified* EOF -! guix package --bootstrap --install-from-file="$module_dir/package.scm" +guix package --bootstrap --install-from-file="$module_dir/package.scm" && false rm "$module_dir/package.scm" diff --git a/tests/guix-refresh.sh b/tests/guix-refresh.sh index c5214e1d6e..691020b031 100644 --- a/tests/guix-refresh.sh +++ b/tests/guix-refresh.sh @@ -37,12 +37,12 @@ GUIX_TEST_UPDATER_TARGETS=' ("the-test-package" "" (("5.5" "file://'$PWD/$module_dir'/source"))))' # No newer version available. -! guix refresh -t test idutils +guix refresh -t test idutils # XXX: should return non-zero? case "$(guix refresh -t test idutils 2>&1)" in *"$idutils_version"*"already the latest version"*) true;; *) false;; esac -! guix refresh -t test libreoffice +guix refresh -t test libreoffice # XXX: should return non-zero? case "$(guix refresh -t test libreoffice 2>&1)" in *"greater than the latest known version"*"1.0"*) true;; *) false;; @@ -100,7 +100,7 @@ grep 'version "5.5"' "$module_dir/sample.scm" grep "$(guix hash -H sha256 -f nix-base32 "$module_dir/source")" "$module_dir/sample.scm" # Specifying a target version. -! guix refresh -t test guile=2.0.0 +guix refresh -t test guile=2.0.0 # XXX: should return non-zero? case "$(guix refresh -t test guile=2.0.0 2>&1)" in *"failed to find"*"2.0.0"*) true;; *) false;; diff --git a/tests/guix-shell.sh b/tests/guix-shell.sh index cb2b53466d..ed368515eb 100644 --- a/tests/guix-shell.sh +++ b/tests/guix-shell.sh @@ -33,13 +33,13 @@ export XDG_CONFIG_HOME guix shell --bootstrap --pure guile-bootstrap -- guile --version # '--symlink' can only be used with --container. -! guix shell --bootstrap guile-bootstrap -S /dummy=bin/guile +guix shell --bootstrap guile-bootstrap -S /dummy=bin/guile && false # '--ad-hoc' is a thing of the past. -! guix shell --ad-hoc guile-bootstrap +guix shell --ad-hoc guile-bootstrap && false # Rejecting unsupported packages. -! guix shell -s armhf-linux intelmetool -n +guix shell -s armhf-linux intelmetool -n && false # Test approximately that the child process does not inherit extra file # descriptors. Ideally we'd check there's nothing more than 0, 1, and 2, but @@ -55,7 +55,7 @@ test "$(echo $fd_list | wc -w)" -le "$(echo $initial_fd_list | wc -w)" cat > "$tmpdir/guix.scm" <<EOF This is a broken guix.scm file. EOF -! (cd "$tmpdir"; SHELL="$(type -P true)" guix shell --bootstrap 2> "stderr") +(cd "$tmpdir"; SHELL="$(type -P true)" guix shell --bootstrap 2> "stderr") && false grep "not authorized" "$tmpdir/stderr" rm "$tmpdir/stderr" @@ -122,7 +122,7 @@ then done # 'make-boot0' itself must not be listed. - ! guix gc --references "$profile" | grep make-boot0 + guix gc --references "$profile" | grep make-boot0 && false # Honoring the local 'guix.scm' file. echo '(@ (guix tests) gnu-make-for-tests)' > "$tmpdir/guix.scm" diff --git a/tests/guix-style.sh b/tests/guix-style.sh index 58f953a0ec..2de879d5e3 100644 --- a/tests/guix-style.sh +++ b/tests/guix-style.sh @@ -65,7 +65,7 @@ cp "$tmpfile" "$tmpfile.bak" initial_hash="$(guix hash "$tmpfile")" guix style -f "$tmpfile" -if ! test "$initial_hash" = "$(guix hash "$tmpfile")" +if test "$initial_hash" != "$(guix hash "$tmpfile")" then cat "$tmpfile" diff -u "$tmpfile.bak" "$tmpfile" @@ -73,8 +73,8 @@ then fi # Introduce random changes and try again. -sed -i "$tmpfile" -e's/ +/ /g' -! test "$initial_hash" = "$(guix hash "$tmpfile")" +sed -i "$tmpfile" -e's/ \+/ /g' +test "$initial_hash" != "$(guix hash "$tmpfile")" guix style -f "$tmpfile" test "$initial_hash" = "$(guix hash "$tmpfile")" diff --git a/tests/guix-system.sh b/tests/guix-system.sh index 1dbd5a0b85..adc0c44a6f 100644 --- a/tests/guix-system.sh +++ b/tests/guix-system.sh @@ -318,7 +318,7 @@ cat > "$tmpdir/config.scm" <<EOF (bad-local-file "whatever.scm") EOF -! guix system build "$tmpdir/config.scm" -n +guix system build "$tmpdir/config.scm" -n && false guix system build "$tmpdir/config.scm" -n 2>&1 | \ grep "config\.scm:4:2: warning:.*whatever.*relative to current directory" |