From c743a9189cd04b164f6027751c4f9a994c5c1f76 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 21 May 2020 23:08:18 +0300 Subject: [PATCH 001/103] gnu: kodi: Update to 18.7. * gnu/packages/kodi.scm (kodi): Update to 18.7. --- gnu/packages/kodi.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/kodi.scm b/gnu/packages/kodi.scm index 81294f48594..c81a4bc4876 100644 --- a/gnu/packages/kodi.scm +++ b/gnu/packages/kodi.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2017, 2019 Marius Bakke ;;; Copyright © 2017 Oleg Pykhalov ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice -;;; Copyright © 2018 Efraim Flashner +;;; Copyright © 2018, 2020 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -269,7 +269,7 @@ alternatives. In compilers, this can reduce the cascade of secondary errors.") (define-public kodi (package (name "kodi") - (version "18.6") + (version "18.7") (source (origin (method git-fetch) (uri (git-reference @@ -278,7 +278,7 @@ alternatives. In compilers, this can reduce the cascade of secondary errors.") (file-name (git-file-name name version)) (sha256 (base32 - "0rwymipn5hljy5xrslzmrljmj6f9wb191wi7gjw20wl6sv44d0bk")) + "082cpih84j7v29w55qhj0rdia7hdjpwi81qywiwawd4vlyimpv2h")) (patches (search-patches "kodi-skip-test-449.patch" "kodi-increase-test-timeout.patch" "kodi-set-libcurl-ssl-parameters.patch")) From d4d9f882a35b536507c4671dabc6e63e0d3b95e9 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Thu, 21 May 2020 22:10:51 +0200 Subject: [PATCH 002/103] gnu: edgar: Update to 1.33. * gnu/packages/games.scm (edgar): Update to 1.33. --- gnu/packages/games.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 111e1e0579d..9e1a01fc040 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -7359,7 +7359,7 @@ where the player draws runes in real time to effect the desired spell.") (define-public edgar (package (name "edgar") - (version "1.32") + (version "1.33") (source (origin (method url-fetch) @@ -7367,7 +7367,7 @@ where the player draws runes in real time to effect the desired spell.") (string-append "https://github.com/riksweeney/edgar/releases/download/" version "/edgar-" version "-1.tar.gz")) (sha256 - (base32 "12lam6qcscc5ima1w2ksd1cvsvxbd17h6mqkgsqpzx8ap43p2r5p")))) + (base32 "1mbx7dvizdca4g1blcv3bdh6yxd13k47rkya4rdzg0nvvz24m175")))) (build-system gnu-build-system) (arguments '(#:tests? #f ; there are no tests #:make-flags From 6381565d9db2f03f92a951e7fe7317acfa7dad13 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Thu, 21 May 2020 22:14:05 +0200 Subject: [PATCH 003/103] gnu: opensmtpd: Update to 6.7.1p1. * gnu/packages/mail.scm (opensmtpd): Update to 6.7.1p1. --- gnu/packages/mail.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index e3fd416dd97..8e72edc2214 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -2298,14 +2298,14 @@ transfer protocols.") (define-public opensmtpd (package (name "opensmtpd") - (version "6.7.0p1") + (version "6.7.1p1") (source (origin (method url-fetch) (uri (string-append "https://www.opensmtpd.org/archives/" "opensmtpd-" version ".tar.gz")) (sha256 - (base32 "1f8bp40ywyixflg5qbnang6l210bv4vqa1k2pgm2356bp7bmsgy1")))) + (base32 "1jh8vxfajm1mvp1v5yh6llrhjzv0n9fgab88mlwllwqynhcfjy3l")))) (build-system gnu-build-system) (inputs `(("bdb" ,bdb) From 0b7fd225394623a2f2a10d0f422c462c673e3f8a Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Thu, 21 May 2020 19:08:18 +0200 Subject: [PATCH 004/103] gnu: liblcf: Update to 0.6.2. * gnu/packages/easyrpg.scm (liblcf): Update to 0.6.2. --- gnu/packages/easyrpg.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/easyrpg.scm b/gnu/packages/easyrpg.scm index 05cdc424493..4adddb85be8 100644 --- a/gnu/packages/easyrpg.scm +++ b/gnu/packages/easyrpg.scm @@ -39,7 +39,7 @@ (define-public liblcf (package (name "liblcf") - (version "0.6.1") + (version "0.6.2") (source (origin (method url-fetch) (uri (string-append @@ -47,7 +47,7 @@ "/liblcf-" version ".tar.gz")) (sha256 (base32 - "1qz387r4shbx48r3z7k8llkzz4b039zmak98wxpiwn6a23cssdn5")))) + "0n2k4brd264jg9p6918x7dnb2iimpzjh8q3v1fws58450xbgnkqc")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) From 1ce1583186578deffa119b056ba977d795f52691 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Thu, 21 May 2020 21:01:19 +0200 Subject: [PATCH 005/103] gnu: font-abattis-cantarell: Update to 0.201. * gnu/packages/fonts.scm (font-abattis-cantarell): Update to 0.201. [native-inputs]: Remove appstream-glib. --- gnu/packages/fonts.scm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm index f4071f456f1..9284609373a 100644 --- a/gnu/packages/fonts.scm +++ b/gnu/packages/fonts.scm @@ -196,7 +196,7 @@ itself.")))) (define-public font-cantarell (package (name "font-abattis-cantarell") - (version "0.111") + (version "0.201") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/cantarell-fonts/" @@ -204,11 +204,10 @@ itself.")))) "/cantarell-fonts-" version ".tar.xz")) (sha256 (base32 - "05hpnhihwm9sxlq1qn993g03pwkmpjbn0dvnba71r1gfjv0jp2w5")))) + "0qwqmkczqy09fdj8l11nr841ks0dwsydqg55qyms12m4yvjn87xn")))) (build-system meson-build-system) (native-inputs - `(("appstream-glib" ,appstream-glib) - ("gettext" ,gettext-minimal))) ;for msgfmt + `(("gettext" ,gettext-minimal))) ; for msgfmt (home-page "https://wiki.gnome.org/Projects/CantarellFonts") (synopsis "Cantarell sans-serif typeface") (description "The Cantarell font family is a contemporary Humanist From 5e46b827cf79c064372a99537e469505218def0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 21 May 2020 00:26:36 +0200 Subject: [PATCH 006/103] doc: Use "Alternatively" instead of "Alternately". These two words have different meanings and we really meant "alternatively" here. * doc/guix.texi (System Installation): (Preparing for Installation): (Invoking guix refresh): (Invoking guix challenge): (Networking Services): "Alternatively", not "Alternately". --- doc/guix.texi | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 216422fe314..1ec30b8eebd 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -1831,7 +1831,7 @@ how to use it, hit the @key{RET} key (``return'' or ``enter'') on the link that follows: @pxref{Top, Info reader,, info-stnd, Stand-alone GNU Info}. Hit @kbd{l} afterwards to come back here. -Alternately, run @command{info info} in another tty to keep the manual +Alternatively, run @command{info info} in another tty to keep the manual available. @end quotation @end ifinfo @@ -2021,7 +2021,7 @@ Guix System in a virtual machine (VM). @section Preparing for Installation Once you have booted, you can use the guided graphical installer, which makes -it easy to get started (@pxref{Guided Graphical Installation}). Alternately, +it easy to get started (@pxref{Guided Graphical Installation}). Alternatively, if you are already familiar with GNU/Linux and if you want more control than what the graphical installer provides, you can choose the ``manual'' installation process (@pxref{Manual Installation}). @@ -9542,7 +9542,7 @@ gnu/packages/gettext.scm:29:13: gettext would be upgraded from 0.18.1.1 to 0.18. gnu/packages/glib.scm:77:12: glib would be upgraded from 2.34.3 to 2.37.0 @end example -Alternately, one can specify packages to consider, in which case a +Alternatively, one can specify packages to consider, in which case a warning is emitted for packages that lack an updater: @example @@ -10727,7 +10727,7 @@ guix challenge git \ This automatically invokes @command{diffoscope}, which displays detailed information about files that differ. -Alternately, we can do something along these lines (@pxref{Invoking guix +Alternatively, we can do something along these lines (@pxref{Invoking guix archive}): @example @@ -14519,7 +14519,7 @@ subsystem name and a command (with optional arguments) to execute upon subsystem request. The command @command{internal-sftp} implements an in-process SFTP -server. Alternately, one can specify the @command{sftp-server} command: +server. Alternatively, one can specify the @command{sftp-server} command: @lisp (service openssh-service-type (openssh-configuration From 1ad5209d904d471ded6cf53b4e29b64e963dea3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 21 May 2020 23:25:23 +0200 Subject: [PATCH 007/103] maint: Add "make check-channel-news". * build-aux/check-channel-news.scm: New file. * Makefile.am (EXTRA_DIST): Add it. (check-channel-news): New phony rule. * doc/contributing.texi (Commit Access): Mention "make check-channel-news". --- Makefile.am | 8 +++- build-aux/check-channel-news.scm | 82 ++++++++++++++++++++++++++++++++ doc/contributing.texi | 8 ++++ 3 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 build-aux/check-channel-news.scm diff --git a/Makefile.am b/Makefile.am index fd368d7493a..3113e6b042d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -557,6 +557,7 @@ EXTRA_DIST += \ build-aux/cuirass/guix-modular.scm \ build-aux/cuirass/hydra-to-cuirass.scm \ build-aux/check-final-inputs-self-contained.scm \ + build-aux/check-channel-news.scm \ build-aux/compile-as-derivation.scm \ build-aux/generate-authors.scm \ build-aux/git-authenticate.scm \ @@ -885,6 +886,11 @@ assert-final-inputs-self-contained: $(GOBJECTS) $(AM_V_at)$(top_builddir)/pre-inst-env "$(GUILE)" \ "$(top_srcdir)/build-aux/check-final-inputs-self-contained.scm" +# Validate channel news. +check-channel-news: $(GOBJECTS) + $(AM_V_at)$(top_builddir)/pre-inst-env "$(GUILE)" \ + "$(top_srcdir)/build-aux/check-channel-news.scm" + # Compute the Hydra jobs and write them in the target file. hydra-jobs.scm: $(GOBJECTS) $(AM_V_at)$(MKDIR_P) "`dirname "$@"`" @@ -904,7 +910,7 @@ cuirass-jobs.scm: $(GOBJECTS) .PHONY: gen-ChangeLog gen-AUTHORS gen-tarball-version .PHONY: assert-no-store-file-names assert-binaries-available -.PHONY: assert-final-inputs-self-contained +.PHONY: assert-final-inputs-self-contained check-channel-news .PHONY: clean-go make-go as-derivation authenticate .PHONY: update-guix-package update-NEWS release diff --git a/build-aux/check-channel-news.scm b/build-aux/check-channel-news.scm new file mode 100644 index 00000000000..eb7b89e4371 --- /dev/null +++ b/build-aux/check-channel-news.scm @@ -0,0 +1,82 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2020 Ludovic Courtès +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +;;; +;;; Validate 'etc/news.scm'. +;;; + +(use-modules (git) + (guix git) + (guix ui) + (guix channels) + (srfi srfi-26) + (ice-9 match)) + +;; XXX: These two things are currently private. +(define read-channel-news (@@ (guix channels) read-channel-news)) +(define channel-news-entries (cut struct-ref <> 0)) + +(define (all-the-news directory) + "Return the read from DIRECTORY, a checkout of the 'guix' +channel." + (call-with-input-file (string-append directory "/etc/news.scm") + read-channel-news)) + +(define (validate-texinfo str type language) + "Parse STR as a Texinfo fragment and raise an error if that fails." + (catch #t + (lambda () + (texi->plain-text str)) + (lambda (key . args) + (print-exception (current-error-port) #f key args) + (report-error (G_ "the Texinfo snippet below is invalid (~a, ~a):~%") + type language) + (display str (current-error-port)) + (exit 1)))) + +(define (validate-news-entry repository entry) + "Validate ENTRY, a , making sure it refers to an +existent commit of REPOSITORY and contains only valid Texinfo." + (catch 'git-error + (lambda () + (let ((commit (commit-lookup repository + (string->oid + (channel-news-entry-commit entry))))) + (for-each (match-lambda + ((language . title) + (validate-texinfo title 'title language))) + (channel-news-entry-title entry)) + (for-each (match-lambda + ((language . body) + (validate-texinfo body 'body language))) + (channel-news-entry-body entry)))) + (lambda (key error . rest) + (if (= GIT_ENOTFOUND (git-error-code error)) + (leave (G_ "commit '~a' of entry '~a' does not exist~%") + (channel-news-entry-commit entry) + (channel-news-entry-title entry)) + (apply throw key error rest))))) + +(let* ((this-directory (dirname (current-filename))) + (top-directory (string-append this-directory "/..")) + (entries (channel-news-entries (all-the-news top-directory)))) + (with-repository top-directory repository + (for-each (cut validate-news-entry repository <>) + entries) + (info (G_ "All ~a channel news entries are valid.~%") + (length entries)))) diff --git a/doc/contributing.texi b/doc/contributing.texi index 44bec00236d..7b1f7e7c94f 100644 --- a/doc/contributing.texi +++ b/doc/contributing.texi @@ -1278,6 +1278,14 @@ When pushing a commit on behalf of somebody else, please add a with @command{git am --signoff}. This improves tracking of who did what. +When adding channel news entries (@pxref{Channels, Writing Channel +News}), make sure they are well-formed by running the following command +right before pushing: + +@example +make check-channel-news +@end example + For anything else, please post to @email{guix-patches@@gnu.org} and leave time for a review, without committing anything (@pxref{Submitting Patches}). If you didn’t receive any reply after two weeks, and if From 73b27eaa64d90051870242464543153b8bcb95de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 18 May 2020 21:57:49 +0200 Subject: [PATCH 008/103] tests: Test 'add-to-store' with several hash algorithms. * tests/store.scm ("add-to-store"): New test. --- tests/store.scm | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/store.scm b/tests/store.scm index 0af099c1ad4..f007846dc16 100644 --- a/tests/store.scm +++ b/tests/store.scm @@ -115,6 +115,18 @@ (passwd:name (getpwuid (getuid))))))) (list (stat:uid s) (stat:perms s)))) +(test-equal "add-to-store" + '("sha1" "sha256" "sha512") + (let* ((file (search-path %load-path "guix.scm")) + (content (call-with-input-file file get-bytevector-all))) + (map (lambda (hash-algo) + (let ((file (add-to-store %store "guix.scm" #f hash-algo file))) + (and (direct-store-path? file) + (bytevector=? (call-with-input-file file get-bytevector-all) + content) + hash-algo))) + '("sha1" "sha256" "sha512")))) + (test-equal "add-data-to-store" #vu8(1 2 3 4 5) (call-with-input-file (add-data-to-store %store "data" #vu8(1 2 3 4 5)) From 9418aaa00db44d3e0e3318ff66faace0d7b43326 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 18 May 2020 21:59:58 +0200 Subject: [PATCH 009/103] tests: Test fixed-output derivations with several hash algorithms. * tests/derivations.scm ("fixed-output derivation"): Test several hash algorithms. --- tests/derivations.scm | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/tests/derivations.scm b/tests/derivations.scm index ef6cec6c76c..a409fa99f0d 100644 --- a/tests/derivations.scm +++ b/tests/derivations.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -324,20 +324,29 @@ #:hash hash #:hash-algo 'sha256))) (fixed-output-derivation? drv))) -(test-assert "fixed-output derivation" - (let* ((builder (add-text-to-store %store "my-fixed-builder.sh" - "echo -n hello > $out" '())) - (hash (sha256 (string->utf8 "hello"))) - (drv (derivation %store "fixed" - %bash `(,builder) - #:sources `(,builder) ;optional - #:hash hash #:hash-algo 'sha256)) - (succeeded? (build-derivations %store (list drv)))) - (and succeeded? - (let ((p (derivation->output-path drv))) - (and (equal? (string->utf8 "hello") - (call-with-input-file p get-bytevector-all)) - (bytevector? (query-path-hash %store p))))))) +(test-equal "fixed-output derivation" + '(sha1 sha256 sha512) + (map (lambda (hash-algorithm) + (let* ((builder (add-text-to-store %store "my-fixed-builder.sh" + "echo -n hello > $out" '())) + (sha256 (sha256 (string->utf8 "hello"))) + (hash (bytevector-hash + (string->utf8 "hello") + (lookup-hash-algorithm hash-algorithm))) + (drv (derivation %store + (string-append + "fixed-" (symbol->string hash-algorithm)) + %bash `(,builder) + #:sources `(,builder) ;optional + #:hash hash + #:hash-algo hash-algorithm))) + (build-derivations %store (list drv)) + (let ((p (derivation->output-path drv))) + (and (bytevector=? (string->utf8 "hello") + (call-with-input-file p get-bytevector-all)) + (bytevector? (query-path-hash %store p)) + hash-algorithm)))) + '(sha1 sha256 sha512))) (test-assert "fixed-output derivation: output paths are equal" (let* ((builder1 (add-text-to-store %store "fixed-builder1.sh" From 18ae1ec3ecfe22d55d6cdf595a442afebbc5595a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 18 May 2020 22:10:20 +0200 Subject: [PATCH 010/103] guix hash, guix download: Add '--hash'. * guix/scripts/download.scm (%default-options): Add 'hash-algorithm'. (show-help, %options): Add "--hash". (guix-download): Honor it. * guix/scripts/hash.scm (%default-options): Add 'hash-algorithm'. (show-help, %options): Add "--hash". (guix-hash): Honor it. * tests/guix-hash.sh: Test '-H sha512'. * doc/guix.texi (Invoking guix download): Document it. (Invoking guix hash): Document it. --- doc/guix.texi | 15 +++++++++++++++ guix/scripts/download.scm | 14 ++++++++++++-- guix/scripts/hash.scm | 21 +++++++++++++++++---- tests/guix-hash.sh | 6 +++++- 4 files changed, 49 insertions(+), 7 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 1ec30b8eebd..197207697e9 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -9018,6 +9018,11 @@ Certificates}), unless @option{--no-check-certificate} is used. The following options are available: @table @code +@item --hash=@var{algorithm} +@itemx -H @var{algorithm} +Compute a hash using the specified @var{algorithm}. @xref{Invoking guix +hash}, for more information. + @item --format=@var{fmt} @itemx -f @var{fmt} Write the hash in the format specified by @var{fmt}. For more @@ -9057,6 +9062,16 @@ following options: @table @code +@item --hash=@var{algorithm} +@itemx -H @var{algorithm} +Compute a hash using the specified @var{algorithm}, @code{sha256} by +default. + +@var{algorithm} must the name of a cryptographic hash algorithm +supported by Libgcrypt @i{via} Guile-Gcrypt---e.g., @code{sha512} or +@code{sha3-256} (@pxref{Hash Functions,,, guile-gcrypt, Guile-Gcrypt +Reference Manual}). + @item --format=@var{fmt} @itemx -f @var{fmt} Write the hash in the format specified by @var{fmt}. diff --git a/guix/scripts/download.scm b/guix/scripts/download.scm index 22cd75ea0b8..b4446c2e2ff 100644 --- a/guix/scripts/download.scm +++ b/guix/scripts/download.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2015, 2016, 2017 Ludovic Courtès +;;; Copyright © 2012, 2013, 2015, 2016, 2017, 2020 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -77,6 +77,7 @@ (define %default-options ;; Alist of default option values. `((format . ,bytevector->nix-base32-string) + (hash-algorithm . ,(hash-algorithm sha256)) (verify-certificate? . #t) (download-proc . ,download-to-store*))) @@ -89,6 +90,8 @@ Supported formats: 'nix-base32' (default), 'base32', and 'base16' ('hex' and 'hexadecimal' can be used as well).\n")) (format #t (G_ " -f, --format=FMT write the hash in the given format")) + (format #t (G_ " + -H, --hash=ALGORITHM use the given hash ALGORITHM")) (format #t (G_ " --no-check-certificate do not validate the certificate of HTTPS servers ")) @@ -119,6 +122,13 @@ Supported formats: 'nix-base32' (default), 'base32', and 'base16' (alist-cons 'format fmt-proc (alist-delete 'format result)))) + (option '(#\H "hash") #t #f + (lambda (opt name arg result) + (match (lookup-hash-algorithm (string->symbol arg)) + (#f + (leave (G_ "~a: unknown hash algorithm~%") arg)) + (algo + (alist-cons 'hash-algorithm algo result))))) (option '("no-check-certificate") #f #f (lambda (opt name arg result) (alist-cons 'verify-certificate? #f result))) @@ -175,7 +185,7 @@ Supported formats: 'nix-base32' (default), 'base32', and 'base16' (or path (leave (G_ "~a: download failed~%") arg)) - port-sha256)) + (cute port-hash (assoc-ref opts 'hash-algorithm) <>))) (fmt (assq-ref opts 'format))) (format #t "~a~%~a~%" path (fmt hash)) #t))) diff --git a/guix/scripts/hash.scm b/guix/scripts/hash.scm index b8b2158195a..cfc44202603 100644 --- a/guix/scripts/hash.scm +++ b/guix/scripts/hash.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2016, 2017 Ludovic Courtès +;;; Copyright © 2012, 2013, 2014, 2016, 2017, 2020 Ludovic Courtès ;;; Copyright © 2013 Nikita Karetnikov ;;; Copyright © 2016 Jan Nieuwenhuizen ;;; Copyright © 2018 Tim Gesthuizen @@ -42,7 +42,8 @@ (define %default-options ;; Alist of default option values. - `((format . ,bytevector->nix-base32-string))) + `((format . ,bytevector->nix-base32-string) + (hash-algorithm . ,(hash-algorithm sha256)))) (define (show-help) (display (G_ "Usage: guix hash [OPTION] FILE @@ -53,6 +54,8 @@ and 'hexadecimal' can be used as well).\n")) (format #t (G_ " -x, --exclude-vcs exclude version control directories")) (format #t (G_ " + -H, --hash=ALGORITHM use the given hash ALGORITHM")) + (format #t (G_ " -f, --format=FMT write the hash in the given format")) (format #t (G_ " -r, --recursive compute the hash on FILE recursively")) @@ -69,6 +72,13 @@ and 'hexadecimal' can be used as well).\n")) (list (option '(#\x "exclude-vcs") #f #f (lambda (opt name arg result) (alist-cons 'exclude-vcs? #t result))) + (option '(#\H "hash") #t #f + (lambda (opt name arg result) + (match (lookup-hash-algorithm (string->symbol arg)) + (#f + (leave (G_ "~a: unknown hash algorithm~%") arg)) + (algo + (alist-cons 'hash-algorithm algo result))))) (option '(#\f "format") #t #f (lambda (opt name arg result) (define fmt-proc @@ -139,8 +149,11 @@ and 'hexadecimal' can be used as well).\n")) (force-output port) (get-hash)) (match file - ("-" (port-sha256 (current-input-port))) - (_ (call-with-input-file file port-sha256)))))) + ("-" (port-hash (assoc-ref opts 'hash-algorithm) + (current-input-port))) + (_ (call-with-input-file file + (cute port-hash (assoc-ref opts 'hash-algorithm) + <>))))))) (match args ((file) diff --git a/tests/guix-hash.sh b/tests/guix-hash.sh index 190c9e7f8aa..1c595b49ed2 100644 --- a/tests/guix-hash.sh +++ b/tests/guix-hash.sh @@ -1,5 +1,5 @@ # GNU Guix --- Functional package management for GNU -# Copyright © 2013, 2014, 2016 Ludovic Courtès +# Copyright © 2013, 2014, 2016, 2020 Ludovic Courtès # Copyright © 2016 Jan Nieuwenhuizen # # This file is part of GNU Guix. @@ -31,6 +31,10 @@ test `echo -n | guix hash -` = 0mdqa9w1p6cmli6976v4wi0sw9r4p5prkj7lzfd1877wk11c9 test `guix hash -f nix-base32 /dev/null` = 0mdqa9w1p6cmli6976v4wi0sw9r4p5prkj7lzfd1877wk11c9c73 test `guix hash -f hex /dev/null` = e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 test `guix hash -f base32 /dev/null` = 4oymiquy7qobjgx36tejs35zeqt24qpemsnzgtfeswmrw6csxbkq +test `guix hash -H sha512 -f hex /dev/null` = cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e + +if guix hash -H abcd1234 /dev/null; +then false; else true; fi mkdir "$tmpdir" echo -n executable > "$tmpdir/exe" From 0e4e9c8e7655f3e2a9c2615923768d211ac02a3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 18 May 2020 22:25:13 +0200 Subject: [PATCH 011/103] guix hash, guix download: Support base64 format. * guix/scripts/download.scm (show-help, %options): Support "base64" format. * guix/scripts/hash.scm (show-help, %options): Likewise. * tests/guix-hash.sh: Test it. * doc/guix.texi (Invoking guix hash): Document it. --- doc/guix.texi | 2 +- guix/scripts/download.scm | 12 ++++++++---- guix/scripts/hash.scm | 14 +++++++++----- tests/guix-hash.sh | 1 + 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 197207697e9..01dab5b72c3 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -9076,7 +9076,7 @@ Reference Manual}). @itemx -f @var{fmt} Write the hash in the format specified by @var{fmt}. -Supported formats: @code{nix-base32}, @code{base32}, @code{base16} +Supported formats: @code{base64}, @code{nix-base32}, @code{base32}, @code{base16} (@code{hex} and @code{hexadecimal} can be used as well). If the @option{--format} option is not specified, @command{guix hash} diff --git a/guix/scripts/download.scm b/guix/scripts/download.scm index b4446c2e2ff..589f62da9d8 100644 --- a/guix/scripts/download.scm +++ b/guix/scripts/download.scm @@ -23,6 +23,7 @@ #:use-module (gcrypt hash) #:use-module (guix base16) #:use-module (guix base32) + #:autoload (guix base64) (base64-encode) #:use-module ((guix download) #:hide (url-fetch)) #:use-module ((guix build download) #:select (url-fetch)) @@ -84,10 +85,11 @@ (define (show-help) (display (G_ "Usage: guix download [OPTION] URL Download the file at URL to the store or to the given file, and print its -file name and the hash of its contents. - -Supported formats: 'nix-base32' (default), 'base32', and 'base16' -('hex' and 'hexadecimal' can be used as well).\n")) +file name and the hash of its contents.\n")) + (newline) + (display (G_ "\ +Supported formats: 'base64', 'nix-base32' (default), 'base32', +and 'base16' ('hex' and 'hexadecimal' can be used as well).\n")) (format #t (G_ " -f, --format=FMT write the hash in the given format")) (format #t (G_ " @@ -111,6 +113,8 @@ Supported formats: 'nix-base32' (default), 'base32', and 'base16' (lambda (opt name arg result) (define fmt-proc (match arg + ("base64" + base64-encode) ("nix-base32" bytevector->nix-base32-string) ("base32" diff --git a/guix/scripts/hash.scm b/guix/scripts/hash.scm index cfc44202603..9b4f419a24a 100644 --- a/guix/scripts/hash.scm +++ b/guix/scripts/hash.scm @@ -20,12 +20,13 @@ ;;; along with GNU Guix. If not, see . (define-module (guix scripts hash) - #:use-module (guix base32) #:use-module (gcrypt hash) #:use-module (guix serialization) #:use-module (guix ui) #:use-module (guix scripts) #:use-module (guix base16) + #:use-module (guix base32) + #:autoload (guix base64) (base64-encode) #:use-module (ice-9 binary-ports) #:use-module (rnrs files) #:use-module (ice-9 match) @@ -47,10 +48,11 @@ (define (show-help) (display (G_ "Usage: guix hash [OPTION] FILE -Return the cryptographic hash of FILE. - -Supported formats: 'nix-base32' (default), 'base32', and 'base16' ('hex' -and 'hexadecimal' can be used as well).\n")) +Return the cryptographic hash of FILE.\n")) + (newline) + (display (G_ "\ +Supported formats: 'base64', 'nix-base32' (default), 'base32', +and 'base16' ('hex' and 'hexadecimal' can be used as well).\n")) (format #t (G_ " -x, --exclude-vcs exclude version control directories")) (format #t (G_ " @@ -83,6 +85,8 @@ and 'hexadecimal' can be used as well).\n")) (lambda (opt name arg result) (define fmt-proc (match arg + ("base64" + base64-encode) ("nix-base32" bytevector->nix-base32-string) ("base32" diff --git a/tests/guix-hash.sh b/tests/guix-hash.sh index 1c595b49ed2..3538b9aeda4 100644 --- a/tests/guix-hash.sh +++ b/tests/guix-hash.sh @@ -32,6 +32,7 @@ test `guix hash -f nix-base32 /dev/null` = 0mdqa9w1p6cmli6976v4wi0sw9r4p5prkj7lz test `guix hash -f hex /dev/null` = e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 test `guix hash -f base32 /dev/null` = 4oymiquy7qobjgx36tejs35zeqt24qpemsnzgtfeswmrw6csxbkq test `guix hash -H sha512 -f hex /dev/null` = cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e +test `guix hash -H sha1 -f base64 /dev/null` = "2jmj7l5rSw0yVb/vlWAYkK/YBwk=" if guix hash -H abcd1234 /dev/null; then false; else true; fi From 56f7ca6e7c8b5eadeee48b00bcbd78f9fa9e5f43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 18 May 2020 23:21:36 +0200 Subject: [PATCH 012/103] packages: Add 'base64' macro. * guix/packages.scm (define-compile-time-decoder): New macro. (base32): Redefine in terms of it. (base64): New macro. --- guix/packages.scm | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/guix/packages.scm b/guix/packages.scm index 3fff50a6e85..c1c4805ae9d 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -28,6 +28,7 @@ #:use-module (guix monads) #:use-module (guix gexp) #:use-module (guix base32) + #:autoload (guix base64) (base64-decode) #:use-module (guix grafts) #:use-module (guix derivations) #:use-module (guix memoization) @@ -62,6 +63,7 @@ origin-snippet origin-modules base32 + base64 package package? @@ -197,19 +199,24 @@ (set-record-type-printer! print-origin) -(define-syntax base32 - (lambda (s) - "Return the bytevector corresponding to the given Nix-base32 +(define-syntax-rule (define-compile-time-decoder name string->bytevector) + "Define NAME as a macro that runs STRING->BYTEVECTOR at macro expansion time +if possible." + (define-syntax name + (lambda (s) + "Return the bytevector corresponding to the given textual representation." - (syntax-case s () - ((_ str) - (string? (syntax->datum #'str)) - ;; A literal string: do the conversion at expansion time. - (with-syntax ((bv (nix-base32-string->bytevector - (syntax->datum #'str)))) - #''bv)) - ((_ str) - #'(nix-base32-string->bytevector str))))) + (syntax-case s () + ((_ str) + (string? (syntax->datum #'str)) + ;; A literal string: do the conversion at expansion time. + (with-syntax ((bv (string->bytevector (syntax->datum #'str)))) + #''bv)) + ((_ str) + #'(string->bytevector str)))))) + +(define-compile-time-decoder base32 nix-base32-string->bytevector) +(define-compile-time-decoder base64 base64-decode) (define (origin-actual-file-name origin) "Return the file name of ORIGIN, either its 'file-name' field or the file From ce0be5675b702b2ff89aed1772ebb42af4150243 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Tue, 19 May 2020 15:55:08 +0200 Subject: [PATCH 013/103] packages: Introduce and use it in . * guix/packages.scm (): New record type. (define-content-hash-constructor, build-content-hash) (content-hash): New macros. (print-content-hash): New procedure. (): Rename constructor to '%origin'. [sha256]: Remove field. [hash]: New field. Adjust users. (origin-compatibility-helper, origin): New macros. (origin-sha256): New deprecated procedure. (origin->derivation): Adjust accordingly. * tests/packages.scm ("package-source-derivation, origin, sha512"): New test. * guix/tests.scm: Hide (gcrypt hash) 'sha256' for proper syntax matching. * tests/challenge.scm: Add #:prefix for (gcrypt hash) and adjust users. * tests/derivations.scm: Likewise. * tests/store.scm: Likewise. * tests/graph.scm ("bag DAG, including origins"): Provide 'sha256' field with the right length. * gnu/packages/aspell.scm (aspell-dictionary) (aspell-dict-ca, aspell-dict-it): Use 'hash' and 'content-hash' for proper syntax matching. * gnu/packages/bash.scm (bash-patch): Rename 'sha256' to 'sha256-bv'. * gnu/packages/bootstrap.scm (bootstrap-executable): Rename 'sha256' to 'bv'. * gnu/packages/readline.scm (readline-patch): Likewise. * gnu/packages/virtualization.scm (qemu-patch): Rename 'sha256' to 'sha256-bv'. * guix/import/utils.scm: Hide (gcrypt hash) 'sha256'. --- doc/guix.texi | 34 ++++++++- gnu/packages/aspell.scm | 8 +- gnu/packages/bash.scm | 8 +- gnu/packages/bootstrap.scm | 6 +- gnu/packages/readline.scm | 8 +- gnu/packages/virtualization.scm | 4 +- guix/import/utils.scm | 2 +- guix/packages.scm | 126 +++++++++++++++++++++++++++++--- guix/tests.scm | 2 +- tests/challenge.scm | 6 +- tests/derivations.scm | 32 ++++---- tests/graph.scm | 6 +- tests/packages.scm | 28 ++++++- tests/store.scm | 8 +- 14 files changed, 220 insertions(+), 58 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 01dab5b72c3..c1e23b5ef3b 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -5966,9 +5966,13 @@ specified in the @code{uri} field as a @code{git-reference} object; a @end table @item @code{sha256} -A bytevector containing the SHA-256 hash of the source. Typically the -@code{base32} form is used here to generate the bytevector from a -base-32 string. +A bytevector containing the SHA-256 hash of the source. This is +equivalent to providing a @code{content-hash} SHA256 object in the +@code{hash} field described below. + +@item @code{hash} +The @code{content-hash} object of the source---see below for how to use +@code{content-hash}. You can obtain this information using @code{guix download} (@pxref{Invoking guix download}) or @code{guix hash} (@pxref{Invoking @@ -6013,6 +6017,30 @@ this is @code{#f}, a sensible default is used. @end table @end deftp +@deftp {Data Type} content-hash @var{value} [@var{algorithm}] +Construct a content hash object for the given @var{algorithm}, and with +@var{value} as its hash value. When @var{algorithm} is omitted, assume +it is @code{sha256}. + +@var{value} can be a literal string, in which case it is base32-decoded, +or it can be a bytevector. + +The following forms are all equivalent: + +@lisp +(content-hash "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj") +(content-hash "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj" + sha256) +(content-hash (base32 + "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj")) +(content-hash (base64 "kkb+RPaP7uyMZmu4eXPVkM4BN8yhRd8BTHLslb6f/Rc=") + sha256) +@end lisp + +Technically, @code{content-hash} is currently implemented as a macro. +It performs sanity checks at macro-expansion time, when possible, such +as ensuring that @var{value} has the right size for @var{algorithm}. +@end deftp @node Build Systems @section Build Systems diff --git a/gnu/packages/aspell.scm b/gnu/packages/aspell.scm index 7550736c404..22256f750b6 100644 --- a/gnu/packages/aspell.scm +++ b/gnu/packages/aspell.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2017, 2018, 2019 Ludovic Courtès +;;; Copyright © 2013, 2014, 2015, 2017, 2018, 2019, 2020 Ludovic Courtès ;;; Copyright © 2015, 2016 Alex Kost ;;; Copyright © 2016 John Darrington ;;; Copyright © 2016, 2017, 2019 Efraim Flashner @@ -111,7 +111,7 @@ dictionaries, including personal ones.") (uri (string-append "mirror://gnu/aspell/dict/" dict-name "/" prefix dict-name "-" version ".tar.bz2")) - (sha256 sha256))) + (hash (content-hash sha256)))) (build-system gnu-build-system) (arguments `(#:phases @@ -163,7 +163,7 @@ dictionaries, including personal ones.") (method url-fetch) (uri (string-append "https://www.softcatala.org/pub/softcatala/aspell/" version "/aspell6-ca-" version ".tar.bz2")) - (sha256 sha256))) + (hash (content-hash sha256)))) (home-page "https://www.softcatala.org/pub/softcatala/aspell/")))) (define-public aspell-dict-de @@ -264,7 +264,7 @@ dictionaries, including personal ones.") (uri (string-append "mirror://sourceforge/linguistico/" "Dizionario%20italiano%20per%20Aspell/" version "/" "aspell6-it-" version ".tar.bz2")) - (sha256 sha256))) + (hash (content-hash sha256)))) (home-page "http://linguistico.sourceforge.net/pages/dizionario_italiano.html")))) diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm index 1b342827c54..311e07a9446 100644 --- a/gnu/packages/bash.scm +++ b/gnu/packages/bash.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2019 Ludovic Courtès +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Courtès ;;; Copyright © 2014, 2015, 2018 Mark H Weaver ;;; Copyright © 2015, 2017 Leo Famulari ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner @@ -48,12 +48,12 @@ "Return the URL of Bash patch number SEQNO." (format #f "mirror://gnu/bash/bash-5.0-patches/bash50-~3,'0d" seqno)) -(define (bash-patch seqno sha256) - "Return the origin of Bash patch SEQNO, with expected hash SHA256" +(define (bash-patch seqno sha256-bv) + "Return the origin of Bash patch SEQNO, with expected hash SHA256-BV." (origin (method url-fetch) (uri (patch-url seqno)) - (sha256 sha256))) + (sha256 sha256-bv))) (define-syntax-rule (patch-series (seqno hash) ...) (list (bash-patch seqno (base32 hash)) diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm index f58ce2de93b..a3ecb6e6928 100644 --- a/gnu/packages/bootstrap.scm +++ b/gnu/packages/bootstrap.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès ;;; Copyright © 2014, 2015, 2018, 2019 Mark H Weaver ;;; Copyright © 2017, 2020 Efraim Flashner ;;; Copyright © 2018, 2020 Jan (janneke) Nieuwenhuizen @@ -151,14 +151,14 @@ built for SYSTEM." (format #f (G_ "could not find bootstrap binary '~a' \ for system '~a'") program system)))))) - ((sha256) + ((bv) (origin (method url-fetch/executable) (uri (map (cute string-append <> (bootstrap-executable-file-name system program)) %bootstrap-executable-base-urls)) (file-name program) - (sha256 sha256))))))) + (hash (content-hash bv sha256)))))))) ;;; diff --git a/gnu/packages/readline.scm b/gnu/packages/readline.scm index 5f61dcb7357..8a368833474 100644 --- a/gnu/packages/readline.scm +++ b/gnu/packages/readline.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014 Ludovic Courtès +;;; Copyright © 2012, 2013, 2014, 2020 Ludovic Courtès ;;; Copyright © 2016, 2019 Efraim Flashner ;;; Copyright © 2016 Jan Nieuwenhuizen ;;; Copyright © 2018 Tobias Geerinckx-Rice @@ -35,12 +35,12 @@ (format #f "mirror://gnu/readline/readline-~a-patches/readline~a-~3,'0d" version (string-join (string-split version #\.) "") seqno)) -(define (readline-patch version seqno sha256) - "Return the origin of Readline patch SEQNO, with expected hash SHA256" +(define (readline-patch version seqno sha256-bv) + "Return the origin of Readline patch SEQNO, with expected hash SHA256-BV" (origin (method url-fetch) (uri (patch-url version seqno)) - (sha256 sha256))) + (sha256 sha256-bv))) (define-syntax-rule (patch-series version (seqno hash) ...) (list (readline-patch version seqno (base32 hash)) diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index e0b9a21e72c..32113a0f2c3 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -104,14 +104,14 @@ #:use-module (srfi srfi-1) #:use-module (ice-9 match)) -(define (qemu-patch commit file-name sha256) +(define (qemu-patch commit file-name sha256-bv) "Return an origin for COMMIT." (origin (method url-fetch) (uri (string-append "http://git.qemu.org/?p=qemu.git;a=commitdiff_plain;h=" commit)) - (sha256 sha256) + (hash (content-hash sha256-bv sha256)) (file-name file-name))) (define-public qemu diff --git a/guix/import/utils.scm b/guix/import/utils.scm index 3809c3d0744..0cfa1f83219 100644 --- a/guix/import/utils.scm +++ b/guix/import/utils.scm @@ -24,7 +24,7 @@ (define-module (guix import utils) #:use-module (guix base32) #:use-module ((guix build download) #:prefix build:) - #:use-module (gcrypt hash) + #:use-module ((gcrypt hash) #:hide (sha256)) #:use-module (guix http-client) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix utils) diff --git a/guix/packages.scm b/guix/packages.scm index c1c4805ae9d..3d9988d8368 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -35,6 +35,8 @@ #:use-module (guix build-system) #:use-module (guix search-paths) #:use-module (guix sets) + #:use-module (guix deprecation) + #:use-module (guix i18n) #:use-module (ice-9 match) #:use-module (ice-9 vlist) #:use-module (ice-9 regex) @@ -44,16 +46,23 @@ #:use-module (srfi srfi-26) #:use-module (srfi srfi-34) #:use-module (srfi srfi-35) + #:use-module (rnrs bytevectors) #:use-module (web uri) #:re-export (%current-system %current-target-system search-path-specification) ;for convenience - #:export (origin + #:export (content-hash + content-hash? + content-hash-algorithm + content-hash-value + + origin origin? this-origin origin-uri origin-method - origin-sha256 + origin-hash + origin-sha256 ;deprecated origin-file-name origin-actual-file-name origin-patches @@ -157,15 +166,79 @@ ;;; ;;; Code: +;; Crytographic content hash. +(define-immutable-record-type + (%content-hash algorithm value) + content-hash? + (algorithm content-hash-algorithm) ;symbol + (value content-hash-value)) ;bytevector + +(define-syntax-rule (define-content-hash-constructor name + (algorithm size) ...) + "Define NAME as a constructor that ensures that (1) its +second argument is among the listed ALGORITHM, and (2), when possible, that +its first argument has the right size for the chosen algorithm." + (define-syntax name + (lambda (s) + (syntax-case s (algorithm ...) + ((_ bv algorithm) + (let ((bv* (syntax->datum #'bv))) + (when (and (bytevector? bv*) + (not (= size (bytevector-length bv*)))) + (syntax-violation 'content-hash "invalid content hash length" s)) + #'(%content-hash 'algorithm bv))) + ...)))) + +(define-content-hash-constructor build-content-hash + (sha256 32) + (sha512 64)) + +(define-syntax content-hash + (lambda (s) + "Return a content hash with the given parameters. The default hash +algorithm is sha256. If the first argument is a literal string, it is decoded +as base32. Otherwise, it must be a bytevector." + ;; What we'd really want here is something like C++ 'constexpr'. + (syntax-case s () + ((_ str) + (string? (syntax->datum #'str)) + #'(content-hash str sha256)) + ((_ str algorithm) + (string? (syntax->datum #'str)) + (with-syntax ((bv (base32 (syntax->datum #'str)))) + #'(content-hash bv algorithm))) + ((_ (id str) algorithm) + (and (string? (syntax->datum #'str)) + (free-identifier=? #'id #'base32)) + (with-syntax ((bv (nix-base32-string->bytevector (syntax->datum #'str)))) + #'(content-hash bv algorithm))) + ((_ (id str) algorithm) + (and (string? (syntax->datum #'str)) + (free-identifier=? #'id #'base64)) + (with-syntax ((bv (base64-decode (syntax->datum #'str)))) + #'(content-hash bv algorithm))) + ((_ bv) + #'(content-hash bv sha256)) + ((_ bv hash) + #'(build-content-hash bv hash))))) + +(define (print-content-hash hash port) + (format port "#" + (content-hash-algorithm hash) + (bytevector->nix-base32-string (content-hash-value hash)))) + +(set-record-type-printer! print-content-hash) + + ;; The source of a package, such as a tarball URL and fetcher---called ;; "origin" to avoid name clash with `package-source', `source', etc. (define-record-type* - origin make-origin + %origin make-origin origin? this-origin (uri origin-uri) ; string (method origin-method) ; procedure - (sha256 origin-sha256) ; bytevector + (hash origin-hash) ; (file-name origin-file-name (default #f)) ; optional file name ;; Patches are delayed so that the 'search-patch' calls are made lazily, @@ -188,12 +261,37 @@ (patch-guile origin-patch-guile ; package or #f (default #f))) +(define-syntax origin-compatibility-helper + (syntax-rules (sha256) + ((_ () (fields ...)) + (%origin fields ...)) + ((_ ((sha256 exp) rest ...) (others ...)) + (%origin others ... + (hash (content-hash exp sha256)) + rest ...)) + ((_ (field rest ...) (others ...)) + (origin-compatibility-helper (rest ...) + (others ... field))))) + +(define-syntax-rule (origin fields ...) + "Build an record, automatically converting 'sha256' field +specifications to 'hash'." + (origin-compatibility-helper (fields ...) ())) + +(define-deprecated (origin-sha256 origin) + origin-hash + (let ((hash (origin-hash origin))) + (unless (eq? (content-hash-algorithm hash) 'sha256) + (raise (condition (&message + (message (G_ "no SHA256 hash for origin")))))) + (content-hash-value hash))) + (define (print-origin origin port) "Write a concise representation of ORIGIN to PORT." (match origin - (($ uri method sha256 file-name patches) + (($ uri method hash file-name patches) (simple-format port "#" - uri (bytevector->base32-string sha256) + uri hash (force patches) (number->string (object-address origin) 16))))) @@ -238,6 +336,7 @@ name of its URI." ;; git, svn, cvs, etc. reference #f)))) + (define %supported-systems ;; This is the list of system types that are supported. By default, we ;; expect all packages to build successfully here. @@ -1388,14 +1487,19 @@ unless you know what you are doing." #:optional (system (%current-system))) "Return the derivation corresponding to ORIGIN." (match origin - (($ uri method sha256 name (= force ()) #f) + (($ uri method hash name (= force ()) #f) ;; No patches, no snippet: this is a fixed-output derivation. - (method uri 'sha256 sha256 name #:system system)) - (($ uri method sha256 name (= force (patches ...)) snippet + (method uri + (content-hash-algorithm hash) + (content-hash-value hash) + name #:system system)) + (($ uri method hash name (= force (patches ...)) snippet (flags ...) inputs (modules ...) guile-for-build) ;; Patches and/or a snippet. - (mlet %store-monad ((source (method uri 'sha256 sha256 name - #:system system)) + (mlet %store-monad ((source (method uri + (content-hash-algorithm hash) + (content-hash-value hash) + name #:system system)) (guile (package->derivation (or guile-for-build (default-guile)) system diff --git a/guix/tests.scm b/guix/tests.scm index 95a7d7c4b87..3ccf049a7dd 100644 --- a/guix/tests.scm +++ b/guix/tests.scm @@ -26,7 +26,7 @@ #:use-module (guix monads) #:use-module ((guix utils) #:select (substitute-keyword-arguments)) #:use-module ((guix build utils) #:select (mkdir-p)) - #:use-module (gcrypt hash) + #:use-module ((gcrypt hash) #:hide (sha256)) #:use-module (guix build-system gnu) #:use-module (gnu packages base) #:use-module (gnu packages bootstrap) diff --git a/tests/challenge.scm b/tests/challenge.scm index bb5633a3ebe..9c6d6e0d58f 100644 --- a/tests/challenge.scm +++ b/tests/challenge.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015, 2017, 2019 Ludovic Courtès +;;; Copyright © 2015, 2017, 2019, 2020 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -19,7 +19,7 @@ (define-module (test-challenge) #:use-module (guix tests) #:use-module (guix tests http) - #:use-module (gcrypt hash) + #:use-module ((gcrypt hash) #:prefix gcrypt:) #:use-module (guix store) #:use-module (guix monads) #:use-module (guix derivations) @@ -135,7 +135,7 @@ (mlet* %store-monad ((drv (gexp->derivation "something" #~(list #$output #$text))) (out -> (derivation->output-path drv)) - (hash -> (sha256 #vu8()))) + (hash -> (gcrypt:sha256 #vu8()))) (with-derivation-narinfo* drv (sha256 => hash) (>>= (compare-contents (list out) (%test-substitute-urls)) (match-lambda diff --git a/tests/derivations.scm b/tests/derivations.scm index a409fa99f0d..9f1104a8879 100644 --- a/tests/derivations.scm +++ b/tests/derivations.scm @@ -23,7 +23,7 @@ #:use-module (guix grafts) #:use-module (guix store) #:use-module (guix utils) - #:use-module (gcrypt hash) + #:use-module ((gcrypt hash) #:prefix gcrypt:) #:use-module (guix base32) #:use-module (guix tests) #:use-module (guix tests http) @@ -215,7 +215,7 @@ #:env-vars `(("url" . ,(object->string (%local-url)))) #:hash-algo 'sha256 - #:hash (sha256 (string->utf8 text))))) + #:hash (gcrypt:sha256 (string->utf8 text))))) (and (build-derivations %store (list drv)) (string=? (call-with-input-file (derivation->output-path drv) get-string-all) @@ -230,7 +230,7 @@ #:env-vars `(("url" . ,(object->string (%local-url)))) #:hash-algo 'sha256 - #:hash (sha256 (random-bytevector 100))))) ;wrong + #:hash (gcrypt:sha256 (random-bytevector 100))))) ;wrong (guard (c ((store-protocol-error? c) (string-contains (store-protocol-error-message c) "failed"))) (build-derivations %store (list drv)) @@ -245,7 +245,7 @@ #:env-vars `(("url" . ,(object->string (%local-url)))) #:hash-algo 'sha256 - #:hash (sha256 (random-bytevector 100))))) + #:hash (gcrypt:sha256 (random-bytevector 100))))) (guard (c ((store-protocol-error? c) (string-contains (store-protocol-error-message (pk c)) "failed"))) (build-derivations %store (list drv)) @@ -273,7 +273,7 @@ #:env-vars `(("url" . ,(object->string (%local-url)))) #:hash-algo 'sha256 - #:hash (sha256 (string->utf8 text))))) + #:hash (gcrypt:sha256 (string->utf8 text))))) (and (with-http-server `((200 ,text)) (build-derivations %store (list drv))) (with-http-server `((200 ,text)) @@ -317,7 +317,7 @@ (test-assert "fixed-output-derivation?" (let* ((builder (add-text-to-store %store "my-fixed-builder.sh" "echo -n hello > $out" '())) - (hash (sha256 (string->utf8 "hello"))) + (hash (gcrypt:sha256 (string->utf8 "hello"))) (drv (derivation %store "fixed" %bash `(,builder) #:sources (list builder) @@ -329,10 +329,10 @@ (map (lambda (hash-algorithm) (let* ((builder (add-text-to-store %store "my-fixed-builder.sh" "echo -n hello > $out" '())) - (sha256 (sha256 (string->utf8 "hello"))) - (hash (bytevector-hash + (sha256 (gcrypt:sha256 (string->utf8 "hello"))) + (hash (gcrypt:bytevector-hash (string->utf8 "hello") - (lookup-hash-algorithm hash-algorithm))) + (gcrypt:lookup-hash-algorithm hash-algorithm))) (drv (derivation %store (string-append "fixed-" (symbol->string hash-algorithm)) @@ -353,7 +353,7 @@ "echo -n hello > $out" '())) (builder2 (add-text-to-store %store "fixed-builder2.sh" "echo hey; echo -n hello > $out" '())) - (hash (sha256 (string->utf8 "hello"))) + (hash (gcrypt:sha256 (string->utf8 "hello"))) (drv1 (derivation %store "fixed" %bash `(,builder1) #:hash hash #:hash-algo 'sha256)) @@ -368,7 +368,7 @@ (test-assert "fixed-output derivation, recursive" (let* ((builder (add-text-to-store %store "my-fixed-builder.sh" "echo -n hello > $out" '())) - (hash (sha256 (string->utf8 "hello"))) + (hash (gcrypt:sha256 (string->utf8 "hello"))) (drv (derivation %store "fixed-rec" %bash `(,builder) #:sources (list builder) @@ -390,7 +390,7 @@ "echo -n hello > $out" '())) (builder2 (add-text-to-store %store "fixed-builder2.sh" "echo hey; echo -n hello > $out" '())) - (hash (sha256 (string->utf8 "hello"))) + (hash (gcrypt:sha256 (string->utf8 "hello"))) (fixed1 (derivation %store "fixed" %bash `(,builder1) #:hash hash #:hash-algo 'sha256)) @@ -427,7 +427,7 @@ "echo -n hello > $out" '())) (builder2 (add-text-to-store %store "fixed-builder2.sh" "echo hey; echo -n hello > $out" '())) - (hash (sha256 (string->utf8 "hello"))) + (hash (gcrypt:sha256 (string->utf8 "hello"))) (fixed1 (derivation %store "fixed" %bash `(,builder1) #:hash hash #:hash-algo 'sha256)) @@ -680,7 +680,7 @@ (let* ((value (getenv "GUIX_STATE_DIRECTORY")) (drv (derivation %store "leaked-env-vars" %bash '("-c" "echo -n $GUIX_STATE_DIRECTORY > $out") - #:hash (sha256 (string->utf8 value)) + #:hash (gcrypt:sha256 (string->utf8 value)) #:hash-algo 'sha256 #:sources (list %bash) #:leaked-env-vars '("GUIX_STATE_DIRECTORY")))) @@ -1106,7 +1106,7 @@ (builder2 '(call-with-output-file (pk 'difference-here! %output) (lambda (p) (write "hello" p)))) - (hash (sha256 (string->utf8 "hello"))) + (hash (gcrypt:sha256 (string->utf8 "hello"))) (input1 (build-expression->derivation %store "fixed" builder1 #:hash hash #:hash-algo 'sha256)) @@ -1127,7 +1127,7 @@ (builder2 '(call-with-output-file (pk 'difference-here! %output) (lambda (p) (write "hello" p)))) - (hash (sha256 (string->utf8 "hello"))) + (hash (gcrypt:sha256 (string->utf8 "hello"))) (input1 (build-expression->derivation %store "fixed" builder1 #:hash hash #:hash-algo 'sha256)) diff --git a/tests/graph.scm b/tests/graph.scm index 136260c7d10..0663d13b493 100644 --- a/tests/graph.scm +++ b/tests/graph.scm @@ -162,7 +162,11 @@ edges." (let-values (((backend nodes+edges) (make-recording-backend))) (let* ((m (lambda* (uri hash-type hash name #:key system) (text-file "foo-1.2.3.tar.gz" "This is a fake!"))) - (o (origin (method m) (uri "the-uri") (sha256 #vu8(0 1 2)))) + (o (origin + (method m) (uri "the-uri") + (sha256 + (base32 + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")))) (p (dummy-package "p" (source o)))) (run-with-store %store (export-graph (list p) 'port diff --git a/tests/packages.scm b/tests/packages.scm index c528d2080c9..4935d4503e6 100644 --- a/tests/packages.scm +++ b/tests/packages.scm @@ -29,7 +29,7 @@ #:renamer (lambda (name) (cond ((eq? name 'location) 'make-location) (else name)))) - #:use-module (gcrypt hash) + #:use-module ((gcrypt hash) #:hide (sha256)) #:use-module (guix derivations) #:use-module (guix packages) #:use-module (guix grafts) @@ -51,6 +51,7 @@ #:use-module (srfi srfi-34) #:use-module (srfi srfi-35) #:use-module (srfi srfi-64) + #:use-module (rnrs bytevectors) #:use-module (rnrs io ports) #:use-module (ice-9 vlist) #:use-module (ice-9 regex) @@ -497,6 +498,31 @@ (search-path %load-path "guix/base32.scm") get-bytevector-all))))) +(test-equal "package-source-derivation, origin, sha512" + "hello" + (let* ((bash (search-bootstrap-binary "bash" (%current-system))) + (builder (add-text-to-store %store "my-fixed-builder.sh" + "echo -n hello > $out" '())) + (method (lambda* (url hash-algo hash #:optional name + #:rest rest) + (and (eq? hash-algo 'sha512) + (raw-derivation name bash (list builder) + #:sources (list builder) + #:hash hash + #:hash-algo hash-algo)))) + (source (origin + (method method) + (uri "unused://") + (file-name "origin-sha512") + (hash (content-hash + (bytevector-hash (string->utf8 "hello") + (hash-algorithm sha512)) + sha512)))) + (drv (package-source-derivation %store source)) + (output (derivation->output-path drv))) + (build-derivations %store (list drv)) + (call-with-input-file output get-string-all))) + (unless (network-reachable?) (test-skip 1)) (test-equal "package-source-derivation, snippet" "OK" diff --git a/tests/store.scm b/tests/store.scm index f007846dc16..06f79396579 100644 --- a/tests/store.scm +++ b/tests/store.scm @@ -22,7 +22,7 @@ #:use-module (guix store) #:use-module (guix utils) #:use-module (guix monads) - #:use-module (gcrypt hash) + #:use-module ((gcrypt hash) #:prefix gcrypt:) #:use-module (guix base32) #:use-module (guix packages) #:use-module (guix derivations) @@ -321,7 +321,7 @@ #:env-vars `(("t2" . ,t2)))) (o (derivation->output-path d))) (with-derivation-narinfo d - (sha256 => (sha256 (string->utf8 t2))) + (sha256 => (gcrypt:sha256 (string->utf8 t2))) (references => (list t2)) (equal? (references/substitutes s (list o t3 t2 t1)) @@ -940,7 +940,7 @@ (foldm %store-monad (lambda (item result) (define ref-hash - (let-values (((port get) (open-sha256-port))) + (let-values (((port get) (gcrypt:open-sha256-port))) (write-file item port) (close-port port) (get))) @@ -1144,7 +1144,7 @@ (info (query-path-info %store item))) (and (equal? (path-info-references info) (list ref)) (equal? (path-info-hash info) - (sha256 + (gcrypt:sha256 (string->utf8 (call-with-output-string (cut write-file item <>)))))))) From feea1d0e62fdd09c4b209c549d65fe93e506d690 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 22 May 2020 00:23:15 +0200 Subject: [PATCH 014/103] lint: archival: Use 'origin-hash'. * guix/lint.scm (check-archival): Use 'origin-hash' instead of 'origin-sha256', removing hard-coded "sha256". --- guix/lint.scm | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/guix/lint.scm b/guix/lint.scm index e192f292a43..6271894360e 100644 --- a/guix/lint.scm +++ b/guix/lint.scm @@ -1154,15 +1154,18 @@ try again later") ((? origin? origin) ;; Since "save" origins are not supported for non-VCS source, all ;; we can do is tell whether a given tarball is available or not. - (if (origin-sha256 origin) ;XXX: for ungoogled-chromium - (match (lookup-content (origin-sha256 origin) "sha256") - (#f - (list (make-warning package - (G_ "source not archived on Software \ + (if (origin-hash origin) ;XXX: for ungoogled-chromium + (let ((hash (origin-hash origin))) + (match (lookup-content (content-hash-value hash) + (symbol->string + (content-hash-algorithm hash))) + (#f + (list (make-warning package + (G_ "source not archived on Software \ Heritage") - #:field 'source))) - ((? content?) - '())) + #:field 'source))) + ((? content?) + '()))) '())))) (match-lambda* ((key url method response) From c7d2dd69004b020de5d86898d2497ab3c8435c37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 22 May 2020 00:24:35 +0200 Subject: [PATCH 015/103] upstream: Use 'origin-hash'. * guix/upstream.scm (update-package-source): Use 'origin-hash' instead of 'origin-sha256'. --- guix/upstream.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/guix/upstream.scm b/guix/upstream.scm index c11de0b25b4..67d0eeefbb1 100644 --- a/guix/upstream.scm +++ b/guix/upstream.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès +;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès ;;; Copyright © 2015 Alex Kost ;;; Copyright © 2019 Ricardo Wurmus ;;; @@ -441,7 +441,8 @@ new version string if an update was made, and #f otherwise." (if version-loc (let* ((loc (package-location package)) (old-version (package-version package)) - (old-hash (origin-sha256 (package-source package))) + (old-hash (content-hash-value + (origin-hash (package-source package)))) (old-url (match (origin-uri (package-source package)) ((? string? url) url) (_ #f))) From ef1d475b00822194e8e4db794756815d00b7d132 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 22 May 2020 00:25:26 +0200 Subject: [PATCH 016/103] gnu: llvm: Remove unused 'package-elisp-from-package' procedure. This private procedure had been unused since 3a3d4d9d545028cda846ae827a60249f7162d34e. * gnu/packages/llvm.scm (package-elisp-from-package): Remove. --- gnu/packages/llvm.scm | 29 ----------------------------- 1 file changed, 29 deletions(-) diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index 15e15281a73..47b490aac86 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -866,35 +866,6 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.") "This package provides a Python binding to LLVM for use in Numba.") (license license:bsd-3))) -(define (package-elisp-from-package source-package package-name - source-files) - "Return a package definition named PACKAGE-NAME that packages the Emacs Lisp -SOURCE-FILES found in SOURCE-PACKAGE." - (let ((orig (package-source source-package))) - (package - (inherit source-package) - (name package-name) - (build-system emacs-build-system) - (source (origin - (method (origin-method orig)) - (uri (origin-uri orig)) - (sha256 (origin-sha256 orig)) - (file-name (string-append package-name "-" - (package-version source-package))) - (modules '((guix build utils) - (srfi srfi-1) - (ice-9 ftw))) - (snippet - `(let* ((source-files (quote ,source-files)) - (basenames (map basename source-files))) - (map copy-file - source-files basenames) - (map delete-file-recursively - (fold delete - (scandir ".") - (append '("." "..") basenames))) - #t))))))) - (define-public emacs-clang-format (package (inherit clang) From 0bdfae5363f01a2ad0954ea864ab604c5062fb33 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Fri, 22 May 2020 10:55:09 +0300 Subject: [PATCH 017/103] gnu: freeipmi: Update to 1.6.5. * gnu/packages/freeipmi.scm (freeipmi): Update to 1.6.5. --- gnu/packages/freeipmi.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/freeipmi.scm b/gnu/packages/freeipmi.scm index 57fe527cbe7..4dd9cb72719 100644 --- a/gnu/packages/freeipmi.scm +++ b/gnu/packages/freeipmi.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Ludovic Courtès -;;; Copyright © 2015, 2016, 2017 Efraim Flashner +;;; Copyright © 2015, 2016, 2017, 2020 Efraim Flashner ;;; Copyright © 2019 Tobias Geerinckx-Rice ;;; ;;; This file is part of GNU Guix. @@ -28,14 +28,14 @@ (define-public freeipmi (package (name "freeipmi") - (version "1.6.4") + (version "1.6.5") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/freeipmi/freeipmi-" version ".tar.gz")) (sha256 (base32 - "0g0s4iwx0ng4rv7hp5cc3kkx4drahsc89981gwjblf04lfavppv5")))) + "1ncf1s84752xaq07h36wrxa5ww1167s2bizkww0igxv8djyddwk1")))) (build-system gnu-build-system) (inputs `(("libgcrypt" ,libgcrypt))) From d8feee9f18ede0d1ea4d0e4876f09a0dab770295 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Fri, 22 May 2020 11:00:06 +0300 Subject: [PATCH 018/103] gnu: freeipmi: Don't build static libraries. This shrinks the size of the package by about 33%. * gnu/packages/freeipmi.scm (freeipmi)[arguments]: Add configure-flag to disable static libraries. --- gnu/packages/freeipmi.scm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gnu/packages/freeipmi.scm b/gnu/packages/freeipmi.scm index 4dd9cb72719..78ab287c5b9 100644 --- a/gnu/packages/freeipmi.scm +++ b/gnu/packages/freeipmi.scm @@ -37,6 +37,8 @@ (base32 "1ncf1s84752xaq07h36wrxa5ww1167s2bizkww0igxv8djyddwk1")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (inputs `(("libgcrypt" ,libgcrypt))) (home-page "https://www.gnu.org/software/freeipmi/") From cd5d5f53228fd5bf96d9f790aa2606ae71fa68d7 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Tue, 18 Feb 2020 11:36:37 +0100 Subject: [PATCH 019/103] doc: Update 'Bootstrapping' for further binary seed reduction. * doc/images/gcc-core-mesboot0-graph.dot: New image, replacing * doc/images/gcc-mesboot0-bag-graph.dot: ... remove file. * doc/local.mk (DOT_FILES): Update for new image file. * doc/guix.texi (Reduced Binary Seed Bootstrap): Use it in updated description of further reduction of the trusted computing base. --- doc/guix.texi | 111 ++++++++++++---------- doc/images/gcc-core-mesboot0-graph.dot | 114 +++++++++++++++++++++++ doc/images/gcc-mesboot-bag-graph.dot | 123 ------------------------- doc/local.mk | 2 +- 4 files changed, 175 insertions(+), 175 deletions(-) create mode 100644 doc/images/gcc-core-mesboot0-graph.dot delete mode 100644 doc/images/gcc-mesboot-bag-graph.dot diff --git a/doc/guix.texi b/doc/guix.texi index c1e23b5ef3b..2b1f307c2d3 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -35,7 +35,7 @@ Copyright @copyright{} 2016, 2017, 2018 Chris Marusich@* Copyright @copyright{} 2016, 2017, 2018, 2019, 2020 Efraim Flashner@* Copyright @copyright{} 2016 John Darrington@* Copyright @copyright{} 2016, 2017 Nikita Gillmann@* -Copyright @copyright{} 2016, 2017, 2018, 2019 Jan Nieuwenhuizen@* +Copyright @copyright{} 2016, 2017, 2018, 2019, 2020 Jan Nieuwenhuizen@* Copyright @copyright{} 2016 Julien Lepiller@* Copyright @copyright{} 2016 Alex ter Weele@* Copyright @copyright{} 2016, 2017, 2018, 2019 Christopher Baines@* @@ -28761,10 +28761,8 @@ Binutils, libc, and the other packages mentioned above---the @dfn{bootstrap binaries}. These bootstrap binaries are ``taken for granted'', though we can also -re-create them if needed (more on that later). - -For @code{i686-linux} and @code{x86_64-linux} the Guix bootstrap process is -more elaborate, @pxref{Reduced Binary Seed Bootstrap}. +re-create them if needed (@pxref{Preparing to Use the Bootstrap +Binaries}). @menu * Reduced Binary Seed Bootstrap:: A Bootstrap worthy of GNU. @@ -28780,60 +28778,71 @@ Coreutils, Awk, Findutils, `sed', and `grep' and Guile, GCC, Binutils, and the GNU C Library (@pxref{Bootstrapping}). Usually, these bootstrap binaries are ``taken for granted.'' -Taking these binaries for granted means that we consider them to be a correct -and trustworthy `seed' for building the complete system. Therein lies a -problem: the current combined size of these bootstrap binaries is about 250MB -(@pxref{Bootstrappable Builds,,, mes, GNU Mes}). Auditing or even inspecting -these is next to impossible. +Taking the bootstrap binaries for granted means that we consider them to +be a correct and trustworthy ``seed'' for building the complete system. +Therein lies a problem: the combined size of these bootstrap binaries is +about 250MB (@pxref{Bootstrappable Builds,,, mes, GNU Mes}). Auditing +or even inspecting these is next to impossible. -For @code{i686-linux} and @code{x86_64-linux}, Guix now features a ``Reduced -Binary Seed'' bootstrap @footnote{We would like to say: ``Full Source -Bootstrap'' and while we are working towards that goal it would be hyperbole -to use that term for what we do now.}. +For @code{i686-linux} and @code{x86_64-linux}, Guix now features a +``Reduced Binary Seed'' bootstrap @footnote{We would like to say: ``Full +Source Bootstrap'' and while we are working towards that goal it would +be hyperbole to use that term for what we do now.}. The Reduced Binary Seed bootstrap removes the most critical tools---from a trust perspective---from the bootstrap binaries: GCC, Binutils and the GNU C Library are replaced by: @code{bootstrap-mescc-tools} (a tiny assembler and linker) and @code{bootstrap-mes} (a small Scheme Interpreter and a C compiler -written in Scheme and the Mes C Library, built for TinyCC and for GCC). Using -these new binary seeds and a new set of -@c -packages@footnote{@c -nyacc-boot, -mes-boot, -tcc-boot0, -tcc-boot, -make-mesboot0, -diffutils-mesboot, -binutils-mesboot0, -gcc-core-mesboot, -mesboot-headers, -glibc-mesboot0, -gcc-mesboot0, -binutils-mesboot, -make-mesboot, -gcc-mesboot1, -gcc-mesboot1-wrapper, -glibc-headers-mesboot, -glibc-mesboot, -gcc-mesboot, -and -gcc-mesboot-wrapper. -} -@c -the ``missing'' Binutils, GCC, and the GNU C Library are built from source. -From here on the more traditional bootstrap process resumes. This approach -has reduced the bootstrap binaries in size to about 130MB. Work is ongoing to -reduce this further. If you are interested, join us on @code{#bootstrappable} -on the Freenode IRC network. +written in Scheme and the Mes C Library, built for TinyCC and for GCC). -@c ./pre-inst-env guix graph --type=bag -e '(begin (use-modules (guix packages)) (%current-system "i686-linux") (@@ (gnu packages commencement) gcc-mesboot))' > doc/images/gcc-mesboot-bag-graph.dot -@c dot -T png doc/images/gcc-mesboot-bag-graph.dot > doc/images/gcc-mesboot-bag-graph.png +Using these new binary seeds the ``missing'' Binutils, GCC, and the GNU +C Library are built from source. From here on the more traditional +bootstrap process resumes. This approach has reduced the bootstrap +binaries in size to about 145MB in Guix v1.1. -Below is the generated dependency graph for @code{gcc-mesboot}, the bootstrap -compiler used to build the rest of GuixSD. +The next step that Guix has taken is to replace the shell and all its +utilities with implementations in Guile Scheme, the @emph{Scheme-only +bootstrap}. Gash (@pxref{Gash,,, gash, The Gash manual}) is a +POSIX-compatible shell that replaces Bash, and it comes with Gash Utils +which has minimalist replacements for Awk, the GNU Core Utilities, Grep, +Gzip, Sed, and Tar. The rest of the bootstrap binary seeds that were +removed are now built from source. -@image{images/gcc-mesboot-bag-graph,6in,,Dependency graph of the gcc-mesboot} +Building the GNU System from source is currently only possibly by adding +some historical GNU packages as intermediate steps@footnote{Packages +such as @code{gcc-2.95.3}, @code{binutils-2.14}, @code{glibc-2.2.5}, +@code{gzip-1.2.4}, @code{tar-1.22}, and some others. For details, see +@file{gnu/packages/commencement.scm}.}. As Gash and Gash Utils mature, +and GNU packages become more bootstrappable again (e.g., new releases of +GNU Sed will also ship as gzipped tarballs again, as alternative to the +hard to bootstrap @code{xz}-compression), this set of added packages can +hopefully be reduced again. + +The graph below shows the resulting dependency graph for +@code{gcc-core-mesboot0}, the bootstrap compiler used for the +traditional bootstrap of the rest of the Guix System. + +@c ./pre-inst-env guix graph -e '(@@ (gnu packages commencement) gcc-core-mesboot0)' | sed -re 's,((bootstrap-mescc-tools|bootstrap-mes|guile-bootstrap).*shape =) box,\1 ellipse,' > doc/images/gcc-core-mesboot0-graph.dot +@image{images/gcc-core-mesboot0-graph,6in,,Dependency graph of gcc-core-mesboot0} + +The only significant binary bootstrap seeds that remain@footnote{ +Ignoring the 68KB @code{mescc-tools}; that will be removed later, +together with @code{mes}.} are a Scheme intepreter and a Scheme +compiler: GNU Mes and GNU Guile@footnote{Not shown in this graph are the +static binaries for @file{bash}, @code{tar}, and @code{xz} that are used +to get Guile running.}. + +This further reduction has brought down the size of the binary seed to +about 60MB for @code{i686-linux} and @code{x86_64-linux}. + +Work is ongoing to remove all binary blobs from our free software +bootstrap stack, working towards a Full Source Bootstrap. Also ongoing +is work to bring these bootstraps to the @code{arm-linux} and +@code{aarch64-linux} architectures and to the Hurd. + +If you are interested, join us on @samp{#bootstrappable} on the Freenode +IRC network or discuss on @email{bug-mes@@gnu.org} or +@email{gash-devel@@nongnu.org}. @node Preparing to Use the Bootstrap Binaries @section Preparing to Use the Bootstrap Binaries @@ -28853,7 +28862,7 @@ guix graph -t derivation \ | dot -Tps > gcc.ps @end example -or, for the Reduced Binary Seed bootstrap +or, for the further Reduced Binary Seed bootstrap @example guix graph -t derivation \ diff --git a/doc/images/gcc-core-mesboot0-graph.dot b/doc/images/gcc-core-mesboot0-graph.dot new file mode 100644 index 00000000000..191582ed4c0 --- /dev/null +++ b/doc/images/gcc-core-mesboot0-graph.dot @@ -0,0 +1,114 @@ +digraph "Guix package" { + "139781154519456" [label = "gcc-core-mesboot0@2.95.3", shape = box, fontname = Helvetica]; + "139781154519456" -> "139781154519632" [color = darkgoldenrod]; + "139781154519456" -> "139781154520688" [color = darkgoldenrod]; + "139781154519456" -> "139781034971312" [color = darkgoldenrod]; + "139781154519456" -> "139781154520160" [color = darkgoldenrod]; + "139781154519456" -> "139781034971664" [color = darkgoldenrod]; + "139781154519456" -> "139781154519984" [color = darkgoldenrod]; + "139781154519456" -> "139781154519808" [color = darkgoldenrod]; + "139781154519456" -> "139781154520512" [color = darkgoldenrod]; + "139781154519456" -> "139781034971488" [color = darkgoldenrod]; + "139781154519456" -> "139781034972896" [color = darkgoldenrod]; + "139781154519456" -> "139781034972368" [color = darkgoldenrod]; + "139781154519456" -> "139781034973072" [color = darkgoldenrod]; + "139781154519456" -> "139781131267872" [color = darkgoldenrod]; + "139781154519632" [label = "binutils-mesboot0@2.14", shape = box, fontname = Helvetica]; + "139781154519632" -> "139781154520688" [color = peachpuff4]; + "139781154519632" -> "139781034971312" [color = peachpuff4]; + "139781154519632" -> "139781154520160" [color = peachpuff4]; + "139781154519632" -> "139781034971664" [color = peachpuff4]; + "139781154519632" -> "139781154519984" [color = peachpuff4]; + "139781154519632" -> "139781154519808" [color = peachpuff4]; + "139781154519632" -> "139781154520512" [color = peachpuff4]; + "139781154519632" -> "139781034971488" [color = peachpuff4]; + "139781154519632" -> "139781034972896" [color = peachpuff4]; + "139781154519632" -> "139781034972368" [color = peachpuff4]; + "139781154519632" -> "139781034973072" [color = peachpuff4]; + "139781154519632" -> "139781131267872" [color = peachpuff4]; + "139781154520688" [label = "bash-mesboot0@2.05b", shape = box, fontname = Helvetica]; + "139781154520688" -> "139781034971488" [color = magenta]; + "139781154520688" -> "139781034971840" [color = magenta]; + "139781154520688" -> "139781034972896" [color = magenta]; + "139781154520688" -> "139781034972368" [color = magenta]; + "139781154520688" -> "139781034973072" [color = magenta]; + "139781154520688" -> "139781131267872" [color = magenta]; + "139781034971488" [label = "make-mesboot0@3.80", shape = box, fontname = Helvetica]; + "139781034971488" -> "139781034971840" [color = dimgrey]; + "139781034971488" -> "139781034972896" [color = dimgrey]; + "139781034971488" -> "139781034972368" [color = dimgrey]; + "139781034971488" -> "139781034973072" [color = dimgrey]; + "139781034971488" -> "139781131267872" [color = dimgrey]; + "139781034971840" [label = "tcc-boot0@0.9.26-1103-g6e62e0e", shape = box, fontname = Helvetica]; + "139781034971840" -> "139781034972016" [color = magenta]; + "139781034971840" -> "139781131266816" [color = magenta]; + "139781034971840" -> "139781034972896" [color = magenta]; + "139781034971840" -> "139781034972368" [color = magenta]; + "139781034971840" -> "139781034973072" [color = magenta]; + "139781034971840" -> "139781131267872" [color = magenta]; + "139781034972016" [label = "mes-boot@0.22", shape = box, fontname = Helvetica]; + "139781034972016" -> "139781034972192" [color = cyan3]; + "139781034972016" -> "139781131266816" [color = cyan3]; + "139781034972016" -> "139781034972896" [color = cyan3]; + "139781034972016" -> "139781034972368" [color = cyan3]; + "139781034972016" -> "139781034973072" [color = cyan3]; + "139781034972016" -> "139781131267872" [color = cyan3]; + "139781034972192" [label = "bootstrap-mes-rewired@0.19", shape = ellipse, fontname = Helvetica]; + "139781034972192" -> "139781131266640" [color = darkseagreen]; + "139781034972192" -> "139781034972896" [color = darkseagreen]; + "139781131266640" [label = "bootstrap-mes@0", shape = ellipse, fontname = Helvetica]; + "139781034972896" [label = "gash-boot@0.2.0", shape = box, fontname = Helvetica]; + "139781034972896" -> "139781034973072" [color = darkviolet]; + "139781034972896" -> "139781131267872" [color = darkviolet]; + "139781034973072" [label = "bootar@1", shape = box, fontname = Helvetica]; + "139781034973072" -> "139781131267872" [color = darkviolet]; + "139781131267872" [label = "guile-bootstrap@2.0", shape = ellipse, fontname = Helvetica]; + "139781131266816" [label = "bootstrap-mescc-tools@0.5.2", shape = ellipse, fontname = Helvetica]; + "139781034972368" [label = "gash-utils-boot@0.1.0", shape = box, fontname = Helvetica]; + "139781034972368" -> "139781034973072" [color = darkseagreen]; + "139781034972368" -> "139781034972896" [color = darkseagreen]; + "139781034972368" -> "139781131267872" [color = darkseagreen]; + "139781034971312" [label = "bzip2-mesboot@1.0.8", shape = box, fontname = Helvetica]; + "139781034971312" -> "139781034971488" [color = cyan3]; + "139781034971312" -> "139781034971840" [color = cyan3]; + "139781034971312" -> "139781034972896" [color = cyan3]; + "139781034971312" -> "139781034972368" [color = cyan3]; + "139781034971312" -> "139781034973072" [color = cyan3]; + "139781034971312" -> "139781131267872" [color = cyan3]; + "139781154520160" [label = "diffutils-mesboot@2.7", shape = box, fontname = Helvetica]; + "139781154520160" -> "139781034971488" [color = red]; + "139781154520160" -> "139781034971840" [color = red]; + "139781154520160" -> "139781034972896" [color = red]; + "139781154520160" -> "139781034972368" [color = red]; + "139781154520160" -> "139781034973072" [color = red]; + "139781154520160" -> "139781131267872" [color = red]; + "139781034971664" [label = "gzip-mesboot@1.2.4", shape = box, fontname = Helvetica]; + "139781034971664" -> "139781034971840" [color = red]; + "139781034971664" -> "139781034972896" [color = red]; + "139781034971664" -> "139781034972368" [color = red]; + "139781034971664" -> "139781034973072" [color = red]; + "139781034971664" -> "139781131267872" [color = red]; + "139781154519984" [label = "patch-mesboot@2.5.9", shape = box, fontname = Helvetica]; + "139781154519984" -> "139781034971488" [color = blue]; + "139781154519984" -> "139781034971840" [color = blue]; + "139781154519984" -> "139781034972896" [color = blue]; + "139781154519984" -> "139781034972368" [color = blue]; + "139781154519984" -> "139781034973072" [color = blue]; + "139781154519984" -> "139781131267872" [color = blue]; + "139781154519808" [label = "sed-mesboot0@1.18", shape = box, fontname = Helvetica]; + "139781154519808" -> "139781034971488" [color = red]; + "139781154519808" -> "139781034971840" [color = red]; + "139781154519808" -> "139781034972896" [color = red]; + "139781154519808" -> "139781034972368" [color = red]; + "139781154519808" -> "139781034973072" [color = red]; + "139781154519808" -> "139781131267872" [color = red]; + "139781154520512" [label = "tcc-boot@0.9.27", shape = box, fontname = Helvetica]; + "139781154520512" -> "139781034971312" [color = darkviolet]; + "139781154520512" -> "139781034971488" [color = darkviolet]; + "139781154520512" -> "139781034971840" [color = darkviolet]; + "139781154520512" -> "139781034972896" [color = darkviolet]; + "139781154520512" -> "139781034972368" [color = darkviolet]; + "139781154520512" -> "139781034973072" [color = darkviolet]; + "139781154520512" -> "139781131267872" [color = darkviolet]; + +} diff --git a/doc/images/gcc-mesboot-bag-graph.dot b/doc/images/gcc-mesboot-bag-graph.dot deleted file mode 100644 index 74d1896fb1c..00000000000 --- a/doc/images/gcc-mesboot-bag-graph.dot +++ /dev/null @@ -1,123 +0,0 @@ -digraph "Guix bag" { - "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" [label = "gcc-mesboot@4.9.4", shape = box, fontname = Helvetica]; - "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" [color = darkviolet]; - "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/86dqsl7b3qrzxl0zd049i5rl7l19gnk0-gcc-mesboot1-wrapper-4.7.4.drv" [color = darkviolet]; - "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" [color = darkviolet]; - "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" [color = darkviolet]; - "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkviolet]; - "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkviolet]; - "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = darkviolet]; - "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = darkviolet]; - "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" [color = darkviolet]; - "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" [label = "binutils-mesboot@2.20.1a", shape = box, fontname = Helvetica]; - "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" [color = dimgrey]; - "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [color = dimgrey]; - "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" [color = dimgrey]; - "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = dimgrey]; - "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = dimgrey]; - "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = dimgrey]; - "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = dimgrey]; - "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = dimgrey]; - "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" [label = "binutils-mesboot0@2.20.1a", shape = box, fontname = Helvetica]; - "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" [color = peachpuff4]; - "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = peachpuff4]; - "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = peachpuff4]; - "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = peachpuff4]; - "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = peachpuff4]; - "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" [label = "tcc-boot@0.9.27", shape = box, fontname = Helvetica]; - "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" -> "/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" [color = cyan3]; - "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" -> "/gnu/store/p437zhq42yavzknp3miacrgnaw206h7i-tcc-boot0-0.9.26-5.c7b3f59.drv" [color = cyan3]; - "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = cyan3]; - "/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" [label = "mes-boot@0.18", shape = box, fontname = Helvetica]; - "/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" -> "/gnu/store/gd83makzwnb2aq1x0hylfsi8gaxln5js-bootstrap-mescc-tools-0.5.2.drv" [color = darkviolet]; - "/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkviolet]; - "/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" -> "/gnu/store/viccpx5izm9z0ci5nvib0xkdrsfqixlr-bootstrap-mes-0.drv" [color = darkviolet]; - "/gnu/store/gd83makzwnb2aq1x0hylfsi8gaxln5js-bootstrap-mescc-tools-0.5.2.drv" [label = "bootstrap-mescc-tools@0.5.2", shape = box, fontname = Helvetica]; - "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [label = "bootstrap-binaries@0", shape = box, fontname = Helvetica]; - "/gnu/store/viccpx5izm9z0ci5nvib0xkdrsfqixlr-bootstrap-mes-0.drv" [label = "bootstrap-mes@0", shape = box, fontname = Helvetica]; - "/gnu/store/p437zhq42yavzknp3miacrgnaw206h7i-tcc-boot0-0.9.26-5.c7b3f59.drv" [label = "tcc-boot0@0.9.26-5.c7b3f59", shape = box, fontname = Helvetica]; - "/gnu/store/p437zhq42yavzknp3miacrgnaw206h7i-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" [color = dimgrey]; - "/gnu/store/p437zhq42yavzknp3miacrgnaw206h7i-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/gd83makzwnb2aq1x0hylfsi8gaxln5js-bootstrap-mescc-tools-0.5.2.drv" [color = dimgrey]; - "/gnu/store/p437zhq42yavzknp3miacrgnaw206h7i-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = dimgrey]; - "/gnu/store/p437zhq42yavzknp3miacrgnaw206h7i-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/viccpx5izm9z0ci5nvib0xkdrsfqixlr-bootstrap-mes-0.drv" [color = dimgrey]; - "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [label = "diffutils-mesboot@2.7", shape = box, fontname = Helvetica]; - "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" -> "/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" [color = peachpuff4]; - "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" -> "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" [color = peachpuff4]; - "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = peachpuff4]; - "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = peachpuff4]; - "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = peachpuff4]; - "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [label = "make-mesboot0@3.80", shape = box, fontname = Helvetica]; - "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" -> "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" [color = darkgoldenrod]; - "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkgoldenrod]; - "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkgoldenrod]; - "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [label = "glibc-mesboot0@2.2.5", shape = box, fontname = Helvetica]; - "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" [color = darkseagreen]; - "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" [color = darkseagreen]; - "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen]; - "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen]; - "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = darkseagreen]; - "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.18.drv" [color = darkseagreen]; - "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = darkseagreen]; - "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" [label = "gcc-core-mesboot@2.95.3", shape = box, fontname = Helvetica]; - "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" [color = dimgrey]; - "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" [color = dimgrey]; - "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = dimgrey]; - "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = dimgrey]; - "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = dimgrey]; - "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = dimgrey]; - "/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.18.drv" [label = "mesboot-headers@0.18", shape = box, fontname = Helvetica]; - "/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.18.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = cyan3]; - "/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.18.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = cyan3]; - "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [label = "linux-libre-headers-bootstrap@0", shape = box, fontname = Helvetica]; - "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" [label = "gcc-mesboot0@2.95.3", shape = box, fontname = Helvetica]; - "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" [color = darkseagreen]; - "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" [color = darkseagreen]; - "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [color = darkseagreen]; - "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen]; - "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen]; - "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = darkseagreen]; - "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = darkseagreen]; - "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = darkseagreen]; - "/gnu/store/86dqsl7b3qrzxl0zd049i5rl7l19gnk0-gcc-mesboot1-wrapper-4.7.4.drv" [label = "gcc-mesboot1-wrapper@4.7.4", shape = box, fontname = Helvetica]; - "/gnu/store/86dqsl7b3qrzxl0zd049i5rl7l19gnk0-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = red]; - "/gnu/store/86dqsl7b3qrzxl0zd049i5rl7l19gnk0-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" [color = red]; - "/gnu/store/86dqsl7b3qrzxl0zd049i5rl7l19gnk0-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" [color = red]; - "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" [label = "glibc-mesboot@2.16.0", shape = box, fontname = Helvetica]; - "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" [color = blue]; - "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [color = blue]; - "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" [color = blue]; - "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" [color = blue]; - "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = blue]; - "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = blue]; - "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = blue]; - "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = blue]; - "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" [color = blue]; - "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" [label = "glibc-headers-mesboot@2.16.0", shape = box, fontname = Helvetica]; - "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" [color = red]; - "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [color = red]; - "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" [color = red]; - "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.18.drv" [color = red]; - "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = red]; - "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = red]; - "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = red]; - "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = red]; - "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" [color = red]; - "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" [label = "gcc-mesboot1@4.7.4", shape = box, fontname = Helvetica]; - "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" [color = darkseagreen]; - "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" [color = darkseagreen]; - "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [color = darkseagreen]; - "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen]; - "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen]; - "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = darkseagreen]; - "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = darkseagreen]; - "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" [color = darkseagreen]; - "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" [label = "make-mesboot@3.82", shape = box, fontname = Helvetica]; - "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" [color = magenta]; - "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [color = magenta]; - "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" [color = magenta]; - "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = magenta]; - "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = magenta]; - "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = magenta]; - "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = magenta]; - -} diff --git a/doc/local.mk b/doc/local.mk index f8709bb3a49..aca1958edd4 100644 --- a/doc/local.mk +++ b/doc/local.mk @@ -39,7 +39,7 @@ DOT_FILES = \ %D%/images/bootstrap-packages.dot \ %D%/images/coreutils-graph.dot \ %D%/images/coreutils-bag-graph.dot \ - %D%/images/gcc-mesboot-bag-graph.dot \ + %D%/images/gcc-core-mesboot0-graph.dot \ %D%/images/service-graph.dot \ %D%/images/shepherd-graph.dot From 21051eb79efece62d3bda495ce554239ae7bbde2 Mon Sep 17 00:00:00 2001 From: Vinicius Monego Date: Fri, 22 May 2020 17:45:19 +0200 Subject: [PATCH 020/103] gnu: Add glabels. * gnu/packages/gnome.scm (glabels): New variable. Signed-off-by: Nicolas Goaziou --- gnu/packages/gnome.scm | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 938efbcdf39..f4703d4dde6 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -51,6 +51,7 @@ ;;; Copyright © 2020 Nicolas Goaziou ;;; Copyright © 2020 Naga Malleswari ;;; Copyright © 2020 Ryan Prior +;;; Copyright © 2020 Vinicius Monego ;;; ;;; This file is part of GNU Guix. ;;; @@ -10013,6 +10014,37 @@ to.") ;; snowball license:bsd-2)))) +(define-public glabels + (package + (name "glabels") + (version "3.4.1") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + "glabels-" version ".tar.xz")) + (sha256 + (base32 "0f2rki8i27pkd9r0gz03cdl1g4vnmvp0j49nhxqn275vi8lmgr0q")))) + (build-system glib-or-gtk-build-system) + (native-inputs + `(("gettext" ,gettext-minimal) + ("glib:bin" ,glib "bin") + ("intltool" ,intltool) + ("itstool" ,itstool) + ("pkg-config" ,pkg-config))) + (inputs + `(("gtk+" ,gtk+) + ("librsvg" ,librsvg) + ("libxml2" ,libxml2))) + (home-page "https://glabels.org/") + (synopsis "Program for creating labels and business cards") + (description + "gLabels is a program for creating labels and business cards. It is +designed to work with various laser/ink-jet peel-off label and business +card sheets that you’ll find at most office supply stores.") + (license license:gpl3+))) + (define-public libratbag (package (name "libratbag") From 50ea3135e0948a042cd3b899e970f6ade291a0c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 22 May 2020 18:34:22 +0200 Subject: [PATCH 021/103] gnu: bash: Do not autoload (gcrypt hash). Fixes . Reported by Matias Jose Seco Baccanelli . * gnu/packages/bash.scm: Avoid #:autoload for (gcrypt hash). On Guile 2.2, autoloading would bring it not only the 'port-sha256' binding (as on 3.0) but also the 'sha256' binding. As a result, use of 'sha256' in the 'origin' form wouldn't match. --- gnu/packages/bash.scm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm index 311e07a9446..3ba8a13e408 100644 --- a/gnu/packages/bash.scm +++ b/gnu/packages/bash.scm @@ -38,8 +38,11 @@ #:use-module (guix store) #:use-module (guix build-system gnu) #:autoload (guix gnupg) (gnupg-verify*) - #:autoload (gcrypt hash) (port-sha256) #:autoload (guix base32) (bytevector->nix-base32-string) + + ;; See for why not #:autoload here. + #:use-module ((gcrypt hash) #:select (port-sha256)) + #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) #:use-module (ice-9 format)) From 9af90aafdfd8afd5fb7b5377ca5daf2215d38d7a Mon Sep 17 00:00:00 2001 From: Caleb Ristvedt Date: Thu, 21 May 2020 20:30:58 -0500 Subject: [PATCH 022/103] gnu: guile-fibers: Add patch to fix resource leak. guile-fibers@1.0.0 has a resource leak where run-fibers will only destroy one scheduler, but it creates as many as there are cpu cores by default (see https://github.com/wingo/fibers/issues/36). This causes the tests to fail on systems with many cores, and can cause guile to crash under certain circumstances. This fixes that resource leak. At present neither git master nor the latest release has fixed this yet. * gnu/packages/patches/guile-fibers-destroy-peer-schedulers.patch: New patch. * gnu/local.mk: Add it to the list of patches. * gnu/packages/guile-xyz.scm (guile-fibers): Use it. --- gnu/local.mk | 1 + gnu/packages/guile-xyz.scm | 5 +++- ...guile-fibers-destroy-peer-schedulers.patch | 24 +++++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/guile-fibers-destroy-peer-schedulers.patch diff --git a/gnu/local.mk b/gnu/local.mk index 1d9de9a57ef..2f24f892b1c 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1053,6 +1053,7 @@ dist_patch_DATA = \ %D%/packages/patches/guile-3.0-relocatable.patch \ %D%/packages/patches/guile-linux-syscalls.patch \ %D%/packages/patches/guile-3.0-linux-syscalls.patch \ + %D%/packages/patches/guile-fibers-destroy-peer-schedulers.patch \ %D%/packages/patches/guile-gdbm-ffi-support-gdbm-1.14.patch \ %D%/packages/patches/guile-present-coding.patch \ %D%/packages/patches/guile-rsvg-pkgconfig.patch \ diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index 674b1f922b6..a1deee32d15 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -523,7 +523,10 @@ Unix-style DSV format and RFC 4180 format.") (("#:use-module \\(fibers\\)") (string-append "#:use-module (fibers)\n" "#:use-module (ice-9 threads)\n"))) - #t)))) + #t)) + (patches + ;; fixes a resource leak that causes crashes in the tests + (search-patches "guile-fibers-destroy-peer-schedulers.patch")))) (build-system gnu-build-system) (arguments '(;; The code uses 'scm_t_uint64' et al., which are deprecated in 3.0. diff --git a/gnu/packages/patches/guile-fibers-destroy-peer-schedulers.patch b/gnu/packages/patches/guile-fibers-destroy-peer-schedulers.patch new file mode 100644 index 00000000000..8bb7153153f --- /dev/null +++ b/gnu/packages/patches/guile-fibers-destroy-peer-schedulers.patch @@ -0,0 +1,24 @@ +Fibers 1.0.0 has a bug in run-fibers in which peer schedulers aren't destroyed - +so if you had 4 cores, 1 would be destroyed when run-fibers returned, but the +other 3 would stay around. Each scheduler uses 3 file descriptors, so for +machines with many cores, this resource leak adds up quickly - quickly enough +that the test suite can even fail because of it. + +See https://github.com/wingo/fibers/issues/36. + +This fixes that. It should be safe to destroy the peer schedulers at the given +point because the threads that could be running them are all either dead or the +current thread. + +As of May 21, 2020, this bug still existed in the 1.0.0 (latest) release and in +git master. +--- a/fibers.scm 2020-05-21 18:38:06.890690154 -0500 ++++ b/fibers.scm 2020-05-21 18:38:56.395686693 -0500 +@@ -137,5 +137,6 @@ + (%run-fibers scheduler hz finished? affinity)) + (lambda () + (stop-auxiliary-threads scheduler))))) ++ (for-each destroy-scheduler (scheduler-remote-peers scheduler)) + (destroy-scheduler scheduler) + (apply values (atomic-box-ref ret)))))) + From 01c22be7bb48f0500ac5c9e16f8210222e9286ef Mon Sep 17 00:00:00 2001 From: Brice Waegeneire Date: Sat, 9 May 2020 18:48:35 +0200 Subject: [PATCH 023/103] gnu: network-manager: Update to 1.24.0. * gnu/packages/gnome.scm (network-manager): Update to 1.24.0. --- gnu/packages/gnome.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index f4703d4dde6..2fed03ab08e 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -52,6 +52,7 @@ ;;; Copyright © 2020 Naga Malleswari ;;; Copyright © 2020 Ryan Prior ;;; Copyright © 2020 Vinicius Monego +;;; Copyright © 2020 Brice Waegeneire ;;; ;;; This file is part of GNU Guix. ;;; @@ -6350,7 +6351,7 @@ users.") (define-public network-manager (package (name "network-manager") - (version "1.18.4") + (version "1.24.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/NetworkManager/" @@ -6359,7 +6360,7 @@ users.") (patches (search-patches "nm-plugin-path.patch")) (sha256 (base32 - "0pnh1wr2p1fqa5pr945fr3lngfc5ccfrmgddqsg55lxnjpv0ggd3")) + "06044fl60bjlj7c6rqqfbm5795h61h6yzp7ch392hzcnm46wwhn3")) (modules '((guix build utils))) (snippet '(begin From c2f236fa92748b92458495ac58c6c7954bebc2d2 Mon Sep 17 00:00:00 2001 From: Brice Waegeneire Date: Mon, 11 May 2020 09:07:17 +0200 Subject: [PATCH 024/103] gnu: network-manager: Add iwd support. --- gnu/packages/gnome.scm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 2fed03ab08e..46166e078d7 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -6382,7 +6382,9 @@ users.") "--with-suspend-resume=elogind" "--with-consolekit=no" "--with-crypto=gnutls" - "--disable-config-plugin-ibft" + "--with-iwd=yes" + "--with-libaudit=yes" + "--with-resolvconf=yes" "--sysconfdir=/etc" "--localstatedir=/var" (string-append "--with-udev-dir=" @@ -6436,10 +6438,6 @@ users.") (lambda _ ;; For the missing /etc/machine-id. (setenv "DBUS_FATAL_WARNINGS" "0") - - ;; XXX: Regenerate some of the tests that are dependent on Python version. - ;; Try removing this variable for newer versions of NetworkManager. - (setenv "NM_TEST_REGENERATE" "1") #t)) (replace 'install (lambda _ @@ -6474,7 +6472,9 @@ users.") ("gnutls" ,gnutls) ("iptables" ,iptables) ("isc-dhcp" ,isc-dhcp) + ("iwd" ,iwd) ; wpa_supplicant alternative ("jansson" ,jansson) + ("libaudit" ,audit) ("libgcrypt" ,libgcrypt) ("libgudev" ,libgudev) ("libndp" ,libndp) @@ -6482,6 +6482,7 @@ users.") ("libsoup" ,libsoup) ("modem-manager" ,modem-manager) ("newt" ,newt) ;for the 'nmtui' console interface + ("openresolv" ,openresolv) ; alternative resolv.conf manager ("polkit" ,polkit) ("ppp" ,ppp) ("readline" ,readline) From 255ff74f3ab514a76068f6cfccc7f8dbcf8b7f3f Mon Sep 17 00:00:00 2001 From: Brice Waegeneire Date: Mon, 11 May 2020 15:39:57 +0200 Subject: [PATCH 025/103] gnu: network-manager: Switch to meson-build-system. --- gnu/packages/gnome.scm | 134 ++++++++++++++++++++++------------------- 1 file changed, 71 insertions(+), 63 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 46166e078d7..fb7c3b4fbda 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -6367,42 +6367,42 @@ users.") (substitute* "src/devices/wwan/nm-modem-manager.c" (("systemd") "elogind")) #t)))) - (build-system gnu-build-system) + (build-system meson-build-system) (outputs '("out" "doc")) ; 8 MiB of gtk-doc HTML (arguments - '(#:configure-flags + `(#:configure-flags (let ((out (assoc-ref %outputs "out")) - (doc (assoc-ref %outputs "doc")) (dhclient (string-append (assoc-ref %build-inputs "isc-dhcp") "/sbin/dhclient"))) - (list "--with-libnm-glib" ; needed by network-manager-applet - "--with-systemd-journal=no" - "--with-session-tracking=elogind" - "--with-suspend-resume=elogind" - "--with-consolekit=no" - "--with-crypto=gnutls" - "--with-iwd=yes" - "--with-libaudit=yes" - "--with-resolvconf=yes" - "--sysconfdir=/etc" - "--localstatedir=/var" - (string-append "--with-udev-dir=" - out "/lib/udev") - (string-append "--with-dbus-sys-dir=" - out "/etc/dbus-1/system.d") - (string-append "--with-html-dir=" - doc "/share/gtk-doc/html") - (string-append "--with-dhclient=" dhclient))) + (list + ;; Otherwise, the RUNPATH will lack the final 'NetworkManager' path + ;; component. + (string-append "-Dc_link_args=-Wl,-rpath=" + out "/lib:" + out "/lib/NetworkManager/" ,version) + "-Dsystemd_journal=false" + "-Dsession_tracking=elogind" + "-Dsuspend_resume=elogind" + "-Dsystemdsystemunitdir=no" + "-Dsession_tracking_consolekit=false" + "-Ddhcpcd=no" + "-Ddhcpcanon=no" + "-Dcrypto=gnutls" + "-Diwd=true" + "-Dlibaudit=yes" + "-Dqt=false" + "-Ddocs=true" + "--sysconfdir=/etc" + "--localstatedir=/var" + (string-append "-Dudev_dir=" + out "/lib/udev") + (string-append "-Ddbus_conf_dir=" + out "/etc/dbus-1/system.d") + + (string-append "-Ddhclient=" dhclient))) #:phases (modify-phases %standard-phases - ;; This bare "ls" invocation breaks some tests. - (add-after 'unpack 'patch-ls-invocation - (lambda _ - (substitute* "build-aux/ltmain.sh" - (("`ls -") - (string-append "`" (which "ls") " -"))) - #t)) (add-before 'configure 'pre-configure (lambda _ ;; These tests try to test aspects of network-manager's @@ -6410,61 +6410,64 @@ users.") ;; cope with being already in the Guix build jail as that jail ;; lacks some features that they would like to proxy over (like ;; a /sys mount). - (substitute* '("Makefile.in") - (("src/platform/tests/test-address-linux") " ") - (("src/platform/tests/test-cleanup-linux") " ") - (("src/platform/tests/test-link-linux") " ") - (("src/platform/tests/test-route-linux") " ") - (("src/devices/tests/test-acd") "") - (("src/devices/tests/test-arping") " ") - (("src/devices/tests/test-lldp") " ") - (("src/tests/test-route-manager-linux") " ")) - #t)) - (add-after 'unpack 'delete-failing-tests - (lambda _ - ;; FIXME: These three tests fail for unknown reasons. - ;; ERROR:libnm-core/tests/test-general.c:5842: - ;; _json_config_check_valid: assertion failed (res == expected): (1 == 0) - ;; ERROR:libnm-core/tests/test-keyfile.c:647: - ;; test_team_conf_read_invalid: assertion failed: (nm_setting_team_get_config (s_team) == NULL) - ;; ERROR:libnm-core/tests/test-setting.c:907: - ;; _test_team_config_sync: assertion failed: (nm_streq0 (nm_setting_team_get_runner (s_team), runner)) - (substitute* "Makefile.in" - (("libnm-core/tests/test-general") " ") - (("libnm-core/tests/test-keyfile") " ") - (("libnm-core/tests/test-setting\\$\\(EXEEXT\\)") " ")) + (substitute* "src/platform/tests/meson.build" + ((".*test-address-linux.*") "") + ((".*test-cleanup-linux.*") "") + ((".*test-link-linux.*") "") + ((".*test-route-linux.*") "")) + (substitute* "src/devices/tests/meson.build" + ((".*test-acd.*") "") + ((".*test-lldp.*") "")) #t)) + (add-after 'unpack 'patch-docbook-xml + (lambda* (#:key inputs #:allow-other-keys) + (let ((xmldoc (string-append (assoc-ref inputs "docbook-xml") + "/xml/dtd/docbook"))) + (substitute* (find-files "." ".*\\.(xsl|xml)") + (("http://.*/docbookx\\.dtd") + (string-append xmldoc "/docbookx.dtd"))) + #t))) (add-before 'check 'pre-check (lambda _ ;; For the missing /etc/machine-id. (setenv "DBUS_FATAL_WARNINGS" "0") #t)) - (replace 'install + (add-before 'install 'no-polkit-magic + ;; Meson ‘magically’ invokes pkexec, which fails (not setuid). (lambda _ - (invoke "make" - "sysconfdir=/tmp" - "rundir=/tmp" - "statedir=/tmp" - "nmstatedir=/tmp/nm" - "install") - #t))))) + (setenv "PKEXEC_UID" "something") + #t)) + (add-after 'install 'move-doc + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (doc (assoc-ref outputs "doc"))) + (mkdir-p (string-append doc "/share")) + (for-each (lambda (directory) + (copy-recursively (string-append out directory) + (string-append doc directory)) + (delete-file-recursively + (string-append out directory))) + '("/share/doc" "/share/gtk-doc")) + #t)))))) (propagated-inputs `(("glib" ,glib))) (native-inputs - `(("glib:bin" ,glib "bin") ; for gdbus-codegen + `(("glib:bin" ,glib "bin") ; for gdbus-codegen + ("gtk-doc" ,gtk-doc) ("gobject-introspection" ,gobject-introspection) + ("docbook-xml" ,docbook-xml) ("docbook-xsl" ,docbook-xsl) ("intltool" ,intltool) ("libxslt" ,libxslt) ("libxml2" ,libxml2) ("pkg-config" ,pkg-config) + ("vala" ,vala) ;; For testing. ("python" ,python-wrapper) ("python-dbus" ,python-dbus) ("python-pygobject" ,python-pygobject))) (inputs - `(("coreutils" ,coreutils) ; for ls - ("curl" ,curl) + `(("curl" ,curl) ("cyrus-sasl" ,cyrus-sasl) ("dbus-glib" ,dbus-glib) ("dnsmasq" ,dnsmasq) @@ -6480,6 +6483,7 @@ users.") ("libndp" ,libndp) ("libnl" ,libnl) ("libsoup" ,libsoup) + ("mobile-broadband-provider-info" ,mobile-broadband-provider-info) ("modem-manager" ,modem-manager) ("newt" ,newt) ;for the 'nmtui' console interface ("openresolv" ,openresolv) ; alternative resolv.conf manager @@ -6496,7 +6500,11 @@ devices and connections, attempting to keep active network connectivity when available. It manages ethernet, WiFi, mobile broadband (WWAN), and PPPoE devices, and provides VPN integration with a variety of different VPN services.") - (license license:gpl2+) + ;; “This NetworkManager project consists of the daemon, client tools, and + ;; libnm. libnm is licensed LGPL-2.1+, while the rest is licensed under + ;; GPL-2.0+.” + (license (list license:gpl2+ + license:lgpl2.1+)) (properties '((upstream-name . "NetworkManager"))))) (define-public network-manager-openvpn From 8d0548fd34ff4b6f79b58a77f7266f3e672beb62 Mon Sep 17 00:00:00 2001 From: Brice Waegeneire Date: Mon, 11 May 2020 16:45:24 +0200 Subject: [PATCH 026/103] gnu: network-manager: Appease guix lint. * gnu/packages/gnome.scm (network-manager)[home-page]: Use the permenant redirect URL. * gnu/packages/patches/nm-plugin-path.patch: Renamed to 'gnu/packages/patches/network-manager-plugin-path.patch'. --- gnu/local.mk | 2 +- gnu/packages/gnome.scm | 4 ++-- ...nm-plugin-path.patch => network-manager-plugin-path.patch} | 0 3 files changed, 3 insertions(+), 3 deletions(-) rename gnu/packages/patches/{nm-plugin-path.patch => network-manager-plugin-path.patch} (100%) diff --git a/gnu/local.mk b/gnu/local.mk index 2f24f892b1c..961dedfdf6a 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1297,7 +1297,7 @@ dist_patch_DATA = \ %D%/packages/patches/netsurf-y2038-tests.patch \ %D%/packages/patches/netsurf-longer-test-timeout.patch \ %D%/packages/patches/ngircd-handle-zombies.patch \ - %D%/packages/patches/nm-plugin-path.patch \ + %D%/packages/patches/network-manager-plugin-path.patch \ %D%/packages/patches/nsis-env-passthru.patch \ %D%/packages/patches/nss-increase-test-timeout.patch \ %D%/packages/patches/nss-pkgconfig.patch \ diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index fb7c3b4fbda..784eb65426a 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -6357,7 +6357,7 @@ users.") (uri (string-append "mirror://gnome/sources/NetworkManager/" (version-major+minor version) "/" "NetworkManager-" version ".tar.xz")) - (patches (search-patches "nm-plugin-path.patch")) + (patches (search-patches "network-manager-plugin-path.patch")) (sha256 (base32 "06044fl60bjlj7c6rqqfbm5795h61h6yzp7ch392hzcnm46wwhn3")) @@ -6493,7 +6493,7 @@ users.") ("util-linux" ,util-linux) ("elogind" ,elogind))) (synopsis "Network connection manager") - (home-page "https://www.gnome.org/projects/NetworkManager/") + (home-page "https://wiki.gnome.org/Projects/NetworkManager") (description "NetworkManager is a system network service that manages your network devices and connections, attempting to keep active network connectivity when diff --git a/gnu/packages/patches/nm-plugin-path.patch b/gnu/packages/patches/network-manager-plugin-path.patch similarity index 100% rename from gnu/packages/patches/nm-plugin-path.patch rename to gnu/packages/patches/network-manager-plugin-path.patch From cf390391c817751bbf6c49539c68f277f23d4ad1 Mon Sep 17 00:00:00 2001 From: Brice Waegeneire Date: Mon, 11 May 2020 16:11:16 +0200 Subject: [PATCH 027/103] gnu: modem-manager: Update to 1.12.10. * gnu/packages/freedesktop.scm (modem-manager): Update to 1.12.10. [arguments]: Remove arguments '--disable-more-warnings'. --- gnu/packages/freedesktop.scm | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index f00cb1e0769..90154cbba90 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -1115,7 +1115,7 @@ which speak the Qualcomm MSM Interface (QMI) protocol.") (define-public modem-manager (package (name "modem-manager") - (version "1.10.8") + (version "1.12.10") (source (origin (method url-fetch) (uri (string-append @@ -1123,15 +1123,11 @@ which speak the Qualcomm MSM Interface (QMI) protocol.") "ModemManager-" version ".tar.xz")) (sha256 (base32 - "16hnl0sdriqgv4v30mfs64mdl9rw7lsh802zlm3ggwxxil3p9qfb")))) + "1apq9camys2gaw6y6ic1ld20cncfwpmxnzvh4j5zkbbjpf5hbcxj")))) (build-system gnu-build-system) (arguments '(#:configure-flags - `(,(string-append "--with-udev-base-dir=" %output "/lib/udev") - ;; FIXME: Without this flag the build fails with "error: assignment - ;; from incompatible pointer type" whenever the return value of - ;; "g_object_ref" is assigned to "ctx->self". - "--disable-more-warnings"))) + `(,(string-append "--with-udev-base-dir=" %output "/lib/udev")))) (native-inputs `(("glib:bin" ,glib "bin") ; for glib-mkenums ("gobject-introspection" ,gobject-introspection) From 8b554a4e5a8a4b376db56d1e037eb804f2c12340 Mon Sep 17 00:00:00 2001 From: Brice Waegeneire Date: Mon, 11 May 2020 16:26:39 +0200 Subject: [PATCH 028/103] gnu: libnma: Update to 1.8.28. * gnu/packages/gnome.scm (libnma): Update to 1.8.28. --- gnu/packages/gnome.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 784eb65426a..f9756e4308c 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -809,7 +809,7 @@ client devices can handle.") (define-public libnma (package (name "libnma") - (version "1.8.26") + (version "1.8.28") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -817,7 +817,7 @@ client devices can handle.") name "-" version ".tar.xz")) (sha256 (base32 - "1w9lld38risnk1krknfwln24kabdxnj274pyz4jhndphwigrshaf")))) + "09mp6k0hfam1vyyv9kcd8j4gb2r58i05ipx2nswb58ris599bxja")))) (build-system meson-build-system) (arguments `(#:glib-or-gtk? #t)) From c25ca6b79ea73a71eacbfa28a21ebdc5433e3c2a Mon Sep 17 00:00:00 2001 From: Brice Waegeneire Date: Mon, 11 May 2020 16:30:55 +0200 Subject: [PATCH 029/103] gnu: libnma: Update inputs. * gnu/packages/gnome.scm (libnam)[arguments]: Remove 'glib-or-gtk?' and add phase 'patch-docbook-xml'. [native-inputs]: Add 'docboock-xml-4.3' and 'vala'. [inputs]: Remove 'adwaita'icon-theme'. squash! gnu: libnma: Update inputs and licenses. --- gnu/packages/gnome.scm | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index f9756e4308c..3394c1eb752 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -820,16 +820,26 @@ client devices can handle.") "09mp6k0hfam1vyyv9kcd8j4gb2r58i05ipx2nswb58ris599bxja")))) (build-system meson-build-system) (arguments - `(#:glib-or-gtk? #t)) + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-docbook-xml + (lambda* (#:key inputs #:allow-other-keys) + (let ((xmldoc (string-append (assoc-ref inputs "docbook-xml") + "/xml/dtd/docbook"))) + (substitute* "libnma-docs.xml" + (("http://.*/docbookx\\.dtd") + (string-append xmldoc "/docbookx.dtd"))) + #t)))))) (native-inputs - `(("gettext" ,gettext-minimal) + `(("docbook-xml" ,docbook-xml-4.3) + ("gettext" ,gettext-minimal) ("glib:bin" ,glib "bin") ("gtk-doc" ,gtk-doc) ("gobject-introspection" ,gobject-introspection) - ("pkg-config" ,pkg-config))) + ("pkg-config" ,pkg-config) + ("vala" ,vala))) (inputs - `(("adwaita-icon-theme" ,adwaita-icon-theme) - ("gcr" ,gcr) + `(("gcr" ,gcr) ("gtk+" ,gtk+) ("iso-codes" ,iso-codes) ("mobile-broadband-provider-info" ,mobile-broadband-provider-info) @@ -838,11 +848,10 @@ client devices can handle.") (description "Libnma is an applet library for Network Manager. It was initially part of network-manager-applet and has now become a separate project.") - (home-page "https://gitlab.gnome.org/GNOME/libnma") - - ;; Some files carry the "GPL-2.0+" SPDX identifier while others say - ;; "LGPL-2.1+". - (license license:gpl2+))) + (home-page "https://gitlab.gnome.org/GNOME/libnma") + ;; Some files carry the "GPL-2.0+" SPDX identifier while others say + ;; "LGPL-2.1+". + (license license:gpl2+))) (define-public gnome-menus (package From b1da33d9657ae255294e3b49d5b050bd64b3ee61 Mon Sep 17 00:00:00 2001 From: Brice Waegeneire Date: Mon, 11 May 2020 16:34:50 +0200 Subject: [PATCH 030/103] gnu: libnma: Adjust indentation. * gnu/packages/gnome.scm (libnma): Adjust indentation. --- gnu/packages/gnome.scm | 76 +++++++++++++++++++++--------------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 3394c1eb752..6683750fd17 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -808,44 +808,44 @@ client devices can handle.") (define-public libnma (package - (name "libnma") - (version "1.8.28") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnome/sources/" name "/" - (version-major+minor version) "/" - name "-" version ".tar.xz")) - (sha256 - (base32 - "09mp6k0hfam1vyyv9kcd8j4gb2r58i05ipx2nswb58ris599bxja")))) - (build-system meson-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-docbook-xml - (lambda* (#:key inputs #:allow-other-keys) - (let ((xmldoc (string-append (assoc-ref inputs "docbook-xml") - "/xml/dtd/docbook"))) - (substitute* "libnma-docs.xml" - (("http://.*/docbookx\\.dtd") - (string-append xmldoc "/docbookx.dtd"))) - #t)))))) - (native-inputs - `(("docbook-xml" ,docbook-xml-4.3) - ("gettext" ,gettext-minimal) - ("glib:bin" ,glib "bin") - ("gtk-doc" ,gtk-doc) - ("gobject-introspection" ,gobject-introspection) - ("pkg-config" ,pkg-config) - ("vala" ,vala))) - (inputs - `(("gcr" ,gcr) - ("gtk+" ,gtk+) - ("iso-codes" ,iso-codes) - ("mobile-broadband-provider-info" ,mobile-broadband-provider-info) - ("network-manager" ,network-manager))) - (synopsis "Network Manager's applet library") - (description "Libnma is an applet library for Network Manager. It was + (name "libnma") + (version "1.8.28") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "09mp6k0hfam1vyyv9kcd8j4gb2r58i05ipx2nswb58ris599bxja")))) + (build-system meson-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-docbook-xml + (lambda* (#:key inputs #:allow-other-keys) + (let ((xmldoc (string-append (assoc-ref inputs "docbook-xml") + "/xml/dtd/docbook"))) + (substitute* "libnma-docs.xml" + (("http://.*/docbookx\\.dtd") + (string-append xmldoc "/docbookx.dtd"))) + #t)))))) + (native-inputs + `(("docbook-xml" ,docbook-xml-4.3) + ("gettext" ,gettext-minimal) + ("glib:bin" ,glib "bin") + ("gtk-doc" ,gtk-doc) + ("gobject-introspection" ,gobject-introspection) + ("pkg-config" ,pkg-config) + ("vala" ,vala))) + (inputs + `(("gcr" ,gcr) + ("gtk+" ,gtk+) + ("iso-codes" ,iso-codes) + ("mobile-broadband-provider-info" ,mobile-broadband-provider-info) + ("network-manager" ,network-manager))) + (synopsis "Network Manager's applet library") + (description "Libnma is an applet library for Network Manager. It was initially part of network-manager-applet and has now become a separate project.") (home-page "https://gitlab.gnome.org/GNOME/libnma") From 3fe368c0ffe9e00360c3fdf60b4dcb0aa5fe5e3a Mon Sep 17 00:00:00 2001 From: Brice Waegeneire Date: Mon, 11 May 2020 16:36:21 +0200 Subject: [PATCH 031/103] gnu: network-manager-openvpn: Update to 1.8.12. * gnu/packages/gnome.scm (network-manager-openvpn): Update to 1.8.12. [inputs]: Replace 'network-manager-applet' with 'libnma'. --- gnu/packages/gnome.scm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 6683750fd17..b73f0ad31de 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -6519,8 +6519,7 @@ services.") (define-public network-manager-openvpn (package (name "network-manager-openvpn") - ;; Updating? Check whether network-manager-applet still needs libnm_gtk. - (version "1.8.10") + (version "1.8.12") (source (origin (method url-fetch) (uri (string-append @@ -6529,7 +6528,7 @@ services.") "/NetworkManager-openvpn-" version ".tar.xz")) (sha256 (base32 - "1vri49yff4lj13dnzkpq9nx3a4z1bmbrv807r151plj8m1mwhg5g")))) + "062kh4zj7jfbwy4zzcwpq2m457bzbpm3l18s0ysnw3mgia3siz8f")))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--enable-absolute-paths" "--localstatedir=/var") @@ -6559,7 +6558,7 @@ services.") ("kmod" ,kmod) ("openvpn" ,openvpn) ("network-manager" ,network-manager) - ("network-manager-applet" ,network-manager-applet) ;for libnma + ("libnma" ,libnma) ("libsecret" ,libsecret))) (home-page "https://wiki.gnome.org/Projects/NetworkManager/VPN") (synopsis "OpenVPN plug-in for NetworkManager") From 4ca449c50e669b229dbee38e26323bbee7ed5c9c Mon Sep 17 00:00:00 2001 From: Brice Waegeneire Date: Mon, 11 May 2020 18:36:10 +0200 Subject: [PATCH 032/103] gnu: network-manager-openconnect: Use libnma. * gnu/packages/gnome.scm (network-manager-openconnect)[native-inputs]: Replace 'network-manager-applet' by 'libnma'. --- gnu/packages/gnome.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index b73f0ad31de..e651f2e2b43 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -6649,7 +6649,7 @@ Compatible with Cisco VPN concentrators configured to use IPsec.") #t))))) (native-inputs `(("intltool" ,intltool) - ("network-manager-applet" ,network-manager-applet) ;for libnma + ("libnma" ,libnma) ("pkg-config" ,pkg-config))) (inputs `(("gcr" ,gcr) From 7c43b78d2cb131796e92500880a9084c2c2ae429 Mon Sep 17 00:00:00 2001 From: Brice Waegeneire Date: Mon, 11 May 2020 19:37:17 +0200 Subject: [PATCH 033/103] gnu: network-manager-vpnc: Use 'libnma'. * gnu/packages/gnome.scm (network-manager-vpnc)[arguments]: Add configure flag '--with-libnm-glib=no'. [inputs]: Replace 'network-manager-applet' with 'libnma'. --- gnu/packages/gnome.scm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index e651f2e2b43..7305c8a9865 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -6583,7 +6583,11 @@ to virtual private networks (VPNs) via OpenVPN.") "1js5lwcsqws4klgypfxl4ikmakv7v7xgddij1fj6b0y0qicx0kyy")))) (build-system gnu-build-system) (arguments - `(#:configure-flags '("--enable-absolute-paths" "--localstatedir=/var") + `(#:configure-flags '("--enable-absolute-paths" + "--localstatedir=/var" + ;; libnm-glib has been removed from network-manager + ;; 1de8383ad9fdfc8f552117e5d109bdfa7005634b + "--with-libnm-glib=no") #:phases (modify-phases %standard-phases (add-after 'configure 'patch-path @@ -6607,7 +6611,7 @@ to virtual private networks (VPNs) via OpenVPN.") ("kmod" ,kmod) ("vpnc" ,vpnc) ("network-manager" ,network-manager) - ("network-manager-applet" ,network-manager-applet) ;for libnma + ("libnma" ,libnma) ("libsecret" ,libsecret))) (home-page "https://wiki.gnome.org/Projects/NetworkManager/VPN") (synopsis "VPNC plug-in for NetworkManager") From 4c29111232c44c84908922442abd1cd83ddc7686 Mon Sep 17 00:00:00 2001 From: Brice Waegeneire Date: Mon, 11 May 2020 16:59:17 +0200 Subject: [PATCH 034/103] gnu: network-manager-applet: Update to 1.16.0. * gnu/packages/gnome.scm (netowrk-manager-applet): Update to 1.16.0. [arguments]: Remove 'configure-flags'. [inputs]: Add 'libnma', remove 'iso-codes' and 'mobile-broadband-provider-info'. --- gnu/packages/gnome.scm | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 7305c8a9865..0a24994edb2 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -6702,7 +6702,7 @@ Cisco's AnyConnect SSL VPN.") (define-public network-manager-applet (package (name "network-manager-applet") - (version "1.8.24") + (version "1.16.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/network-manager-applet/" @@ -6710,13 +6710,10 @@ Cisco's AnyConnect SSL VPN.") "network-manager-applet-" version ".tar.xz")) (sha256 (base32 - "1gzvz4wfqfsfclqg56y954al8x6fmz71cnxlx1i4nqr7a25bp2qi")))) + "1rf3nm0hjcy9f8ajb4vmvwy503w8yj8d4daxkcb7w7i7b92qmyfn")))) (build-system meson-build-system) (arguments - '(#:configure-flags - ;; ‘Nobody should be using this’ but network-manager-openvpn 1.8.10 does. - (list "-Dlibnm_gtk=true") - #:glib-or-gtk? #t)) + '(#:glib-or-gtk? #t)) (native-inputs `(("intltool" ,intltool) ("glib:bin" ,glib "bin") ; for glib-compile-resources, etc. @@ -6730,14 +6727,13 @@ Cisco's AnyConnect SSL VPN.") ("network-manager" ,network-manager))) (inputs `(("gcr" ,gcr) - ("iso-codes" ,iso-codes) + ("libnma" ,libnma) ("libgudev" ,libgudev) ("libnotify" ,libnotify) ("libsecret" ,libsecret) ("libselinux" ,libselinux) ("jansson" ,jansson) ; for team support - ("modem-manager" ,modem-manager) - ("mobile-broadband-provider-info" ,mobile-broadband-provider-info))) + ("modem-manager" ,modem-manager))) (synopsis "Applet for managing network connections") (home-page "https://www.gnome.org/projects/NetworkManager/") (description From 8ce78609065f8e703dd7b2f36560a8ba278a294e Mon Sep 17 00:00:00 2001 From: Brice Waegeneire Date: Mon, 11 May 2020 19:53:11 +0200 Subject: [PATCH 035/103] gnu: network-manager-applet: Appease guix lint. * gnu/packages/gnome.scm (network-manager-applet)[home-page]: Replace with permanent redirect URL. --- gnu/packages/gnome.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 0a24994edb2..7afa25d7c02 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -6735,7 +6735,7 @@ Cisco's AnyConnect SSL VPN.") ("jansson" ,jansson) ; for team support ("modem-manager" ,modem-manager))) (synopsis "Applet for managing network connections") - (home-page "https://www.gnome.org/projects/NetworkManager/") + (home-page "https://wiki.gnome.org/Projects/NetworkManager") (description "This package contains a systray applet for NetworkManager. It displays the available networks and allows users to easily switch between them.") From 8d9477b8b8ce671b7c817a4c0dab73f095db955b Mon Sep 17 00:00:00 2001 From: Brice Waegeneire Date: Fri, 22 May 2020 15:13:35 +0200 Subject: [PATCH 036/103] gnu: gnome-initial-setup: Use 'libnma'. * gnu/packages/gnome.scm (gnome-initial-setup)[inputs]: Replace 'network-manager-applet' with 'libnma'. --- gnu/packages/gnome.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 7afa25d7c02..b3459e48618 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -645,9 +645,9 @@ extraction, and lookup for applications on the desktop.") ("json-glib" ,json-glib) ("krb5" ,mit-krb5) ("libgweather" ,libgweather) + ("libnma" ,libnma) ("libsecret" ,libsecret) ("network-manager" ,network-manager) - ("network-manager-applet" ,network-manager-applet) ("packagekit" ,packagekit) ("polkit" ,polkit) ("pwquality" ,libpwquality) From 46cf343440a74da662c0b4985e5a43321d86ddd2 Mon Sep 17 00:00:00 2001 From: Brice Waegeneire Date: Fri, 22 May 2020 15:15:56 +0200 Subject: [PATCH 037/103] gnu: gnome-control-center: Use 'libnma'. * gnu/packages/gnome.scm (gnome-control-center)[inputs]: Add 'libnma'. --- gnu/packages/gnome.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index b3459e48618..e94d65908d4 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -7124,6 +7124,7 @@ devices using the GNOME desktop.") ("libgnomekbd" ,libgnomekbd) ("libgudev" ,libgudev) ("libgtop" ,libgtop) + ("libnma" ,libnma) ("libpwquality" ,libpwquality) ("libsecret" ,libsecret) ("libsoup" ,libsoup) From cc1698bc03ae6ca505f5a86bacad7fbd0fef2848 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Thu, 21 May 2020 12:44:15 -0400 Subject: [PATCH 038/103] gnu: go-golang-org-x-sys: Update to 0.0.0-6.c709ea0. * gnu/packages/golang.scm (go-golang-org-x-sys): Update to 0.0.0-6.c709ea0. --- gnu/packages/golang.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index 69f46df743d..3a7af4304b6 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -723,8 +723,8 @@ processing.") (license license:bsd-3)))) (define-public go-golang-org-x-sys - (let ((commit "749cb33beabd9aa6d3178e3de05bcc914f70b2bf") - (revision "5")) + (let ((commit "c709ea063b76879dc9915358f55d4d77c16ab6d5") + (revision "6")) (package (name "go-golang-org-x-sys") (version (git-version "0.0.0" revision commit)) @@ -736,7 +736,7 @@ processing.") (file-name (git-file-name name version)) (sha256 (base32 - "0dm3257q3rv2kyn5lmqqim2fqg634v6rhrqq4glvbk4wx4l3v337")))) + "15nq53a6kcqchng4j0d1pjw0m6hny6126nhjdwqw5n9dzh6a226d")))) (build-system go-build-system) (arguments `(#:import-path "golang.org/x/sys" From c2176548835a88aa06e62f4cd21c41c8818f9113 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Thu, 21 May 2020 12:43:36 -0400 Subject: [PATCH 039/103] gnu: go-golang-org-x-crypto: Update to 0.0.0-5.2aa609c. * gnu/packages/golang.scm (go-golang-org-x-crypto): Update to 0.0.0-5.2aa609c. --- gnu/packages/golang.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index 3a7af4304b6..62950715895 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -623,8 +623,8 @@ Go programming language.") (license license:bsd-3)))) (define-public go-golang-org-x-crypto - (let ((commit "9756ffdc24725223350eb3266ffb92590d28f278") - (revision "4")) + (let ((commit "2aa609cf4a9d7d1126360de73b55b6002f9e052a") + (revision "5")) (package (name "go-golang-org-x-crypto") (version (git-version "0.0.0" revision commit)) @@ -637,7 +637,7 @@ Go programming language.") version "-checkout")) (sha256 (base32 - "0q7hxaaq6lp0v8qqzifvysl47z5rfdlrxkh3d29vsl3wyby3dxl8")))) + "1yvis6fqbsd7f356aqyi18f76vnwj3bry6mxqnkvshq4cwrf92il")))) (build-system go-build-system) (arguments '(#:import-path "golang.org/x/crypto" From 618df2e335acb49a27ca014b555ede34f79503f3 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Thu, 21 May 2020 12:45:23 -0400 Subject: [PATCH 040/103] gnu: go-github-com-kr-pretty: Update to 0.2.0. * gnu/packages/golang.scm (go-github-com-kr-pretty): Update to 0.2.0. --- gnu/packages/golang.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index 62950715895..b5b868cb2d1 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -2803,7 +2803,7 @@ format in Go.") (define-public go-github-com-kr-pretty (package (name "go-github-com-kr-pretty") - (version "0.1.0") + (version "0.2.0") (source (origin (method git-fetch) (uri (git-reference @@ -2812,7 +2812,7 @@ format in Go.") (file-name (git-file-name name version)) (sha256 (base32 - "18m4pwg2abd0j9cn5v3k2ksk9ig4vlwxmlw9rrglanziv9l967qp")))) + "1pm4pwg2abd0j9cn5v3k2ksk9ig4vlwxmlw9rrglanziv9l967qp")))) (build-system go-build-system) (propagated-inputs `(("go-github-com-kr-text" ,go-github-com-kr-text))) From 3a8935099f38005b53fe47b483d863a35ce1258e Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Thu, 21 May 2020 12:46:20 -0400 Subject: [PATCH 041/103] gnu: go-github-com-jackpal-gateway: Update to 1.0.6. * gnu/packages/syncthing.scm (go-github-com-jackpal-gateway): Update to 1.0.6. --- gnu/packages/syncthing.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm index ad4c30d0646..75de5b46a0a 100644 --- a/gnu/packages/syncthing.scm +++ b/gnu/packages/syncthing.scm @@ -394,7 +394,7 @@ compression format.") (define-public go-github-com-jackpal-gateway (package (name "go-github-com-jackpal-gateway") - (version "1.0.5") + (version "1.0.6") (source (origin (method git-fetch) (uri (git-reference @@ -403,7 +403,7 @@ compression format.") (file-name (git-file-name name version)) (sha256 (base32 - "1ird5xmizj632l3dq24s2xgb8w1dn6v8xznlqz252gvngyr2gjl1")))) + "1yms2dw4dnz4cvj9vhwh6193d50jhvn5awsp2g3a4lcc3sjrgd6m")))) (build-system go-build-system) (arguments `(#:import-path "github.com/jackpal/gateway")) From 64905c24ad56d9278d8790365647d10b2d8eddc4 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Thu, 21 May 2020 12:55:10 -0400 Subject: [PATCH 042/103] gnu: Add go-github-com-twmb-murmur3. * gnu/packages/golang.scm (go-github-com-calmh-murmur3): Replace with ... (go-github-com-twmb-murmur3): ... new variable. (go-github-com-willf-bloom): Use go-github-com-twmb-murmur3. --- gnu/packages/golang.scm | 50 ++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index b5b868cb2d1..3a9b1096635 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -2186,33 +2186,31 @@ Reference algorithm has been slightly hacked as to support the streaming mode required by Go's standard Hash interface.") (license license:bsd-3))) -(define-public go-github-com-calmh-murmur3 - (let ((commit "74e9af8f47ac56901c490d45546ca167b60c7066") - (revision "0")) - (package - (name "go-github-com-calmh-murmur3") - (version (git-version "1.1.0" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/calmh/murmur3.git") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0k8345ivx228qdbkl8bisd2wxwsinkb44ghba6r09538fr3fbr5w")))) - (build-system go-build-system) - (arguments - '(#:import-path "github.com/calmh/murmur3")) - (home-page "https://github.com/calmh/murmur3") - (synopsis "Native MurmurHash3 Go implementation") - (description "Native Go implementation of Austin Appleby's third +(define-public go-github-com-twmb-murmur3 + (package + (name "go-github-com-twmb-murmur3") + (version "1.1.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/twmb/murmur3.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "00riapwkyf23l5wyis47mbr8rwr4yrjw491jfc30wpzs111c1gyy")))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/twmb/murmur3")) + (home-page "https://github.com/twmb/murmur3") + (synopsis "Native MurmurHash3 Go implementation") + (description "Native Go implementation of Austin Appleby's third MurmurHash revision (aka MurmurHash3). Reference algorithm has been slightly hacked as to support the streaming mode required by Go's standard Hash interface.") - (license license:bsd-3)))) + (license license:bsd-3))) (define-public go-github-com-multiformats-go-multihash (let ((commit "97cdb562a04c6ef66d8ed40cd62f8fbcddd396d6") @@ -3496,14 +3494,14 @@ efficient space usage.") (modify-phases %standard-phases (add-after 'unpack 'patch-import-path (lambda _ - ;; See 'go.mod' in the source distribution of Syncthing 1.4.1 for + ;; See 'go.mod' in the source distribution of Syncthing 1.5.0 for ;; more information. ;; (substitute* "src/github.com/willf/bloom/bloom.go" - (("spaolacci") "calmh")) + (("spaolacci") "twmb")) #t))))) (propagated-inputs - `(("go-github-com-calmh-murmur3" ,go-github-com-calmh-murmur3) + `(("go-github-com-twmb-murmur3" ,go-github-com-twmb-murmur3) ("go-github-com-willf-bitset" ,go-github-com-willf-bitset))) (synopsis "Bloom filters in Go") (description "This package provides a Go implementation of bloom filters, From 4a1bc86678df784b0c578e621275db10ffad0be4 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Thu, 21 May 2020 14:20:05 -0400 Subject: [PATCH 043/103] gnu: go-github-com-marten-seemann-qtls: Update to 0.4.1. * gnu/packages/golang.scm (go-github-com-marten-seemann-qtls): Update to 0.4.1. --- gnu/packages/golang.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index 3a9b1096635..58016dcbf86 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -3042,7 +3042,7 @@ mutex, simply ignore the RLock/RUnlock functions.") (define-public go-github-com-marten-seemann-qtls (package (name "go-github-com-marten-seemann-qtls") - (version "0.3.2") + (version "0.4.1") (source (origin (method git-fetch) (uri (git-reference @@ -3051,7 +3051,7 @@ mutex, simply ignore the RLock/RUnlock functions.") (file-name (git-file-name name version)) (sha256 (base32 - "1mdymj66qrqy80pfkwy9s9z9ifkg251whngw5lim09zm90wv2q7a")))) + "0dz60y98nm7l70hamq0v2vrs2dspyr5yqhnrds2dfh7hchxvq76j")))) (build-system go-build-system) (arguments '(#:import-path "github.com/marten-seemann/qtls" From 7df8cb254e2683b9f6e8cc5302b8babbd44b1eb4 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Thu, 21 May 2020 14:20:39 -0400 Subject: [PATCH 044/103] gnu: Add go-github-com-marten-seemann-chacha20. * gnu/packages/golang.scm (go-github-com-marten-seemann-chacha20): New variable. --- gnu/packages/golang.scm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index 58016dcbf86..ac952b52daa 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -3065,6 +3065,28 @@ the Go standard library's TLS 1.3 implementation.") (home-page "https://github.com/marten-seemann/qtls") (license license:bsd-3))) +(define-public go-github-com-marten-seemann-chacha20 + (package + (name "go-github-com-marten-seemann-chacha20") + (version "0.2.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/marten-seemann/chacha20") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0x1j4cvbap45zk962qkjalc1h3axhzzdy9cdzhcjmprmm1ql4gjm")))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/marten-seemann/chacha20")) + (synopsis "ChaCha20 in Go") + (description "This package is an external copy of the Go standard library's +internal ChaCha20 package.") + (home-page "https://github.com/marten-seemann/chacha20") + (license license:bsd-3))) + (define-public go-github-com-cheekybits-genny (package (name "go-github-com-cheekybits-genny") From cfe4b6e29d33104cb60a1d15e24b2b74733f0501 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Thu, 21 May 2020 12:56:37 -0400 Subject: [PATCH 045/103] gnu: go-github-com-lucas-clemente-quic-go: Update to 0.14.4. * gnu/packages/golang.scm (go-github-com-lucas-clemente-quic-go): Update to 0.14.4. [propagated-inputs]: Add go-github-com-marten-seemann-chacha20. --- gnu/packages/golang.scm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index ac952b52daa..c6f47aa1445 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -3114,7 +3114,7 @@ implementation of generics.") (define-public go-github-com-lucas-clemente-quic-go (package (name "go-github-com-lucas-clemente-quic-go") - (version "0.12.1") + (version "0.14.4") (source (origin (method git-fetch) (uri (git-reference @@ -3123,7 +3123,7 @@ implementation of generics.") (file-name (git-file-name name version)) (sha256 (base32 - "156nhq4dvw7mr08j952248v81q7702phbn4mp228319sahnbv65h")))) + "04l3gqbc3gh079n8vgnrsf8ypgv8sl63xjf28jqfrb45v2l73vyz")))) (build-system go-build-system) (arguments '(#:import-path "github.com/lucas-clemente/quic-go" @@ -3132,6 +3132,7 @@ implementation of generics.") (propagated-inputs `(("go-golang-org-x-crypto" ,go-golang-org-x-crypto) ("go-github-com-cheekybits-genny" ,go-github-com-cheekybits-genny) + ("go-github-com-marten-seemann-chacha20" ,go-github-com-marten-seemann-chacha20) ("go-github-com-marten-seemann-qtls" ,go-github-com-marten-seemann-qtls) ("go-github-com-golang-protobuf-proto" ,go-github-com-golang-protobuf-proto))) (synopsis "QUIC in Go") From 0ffc13921f31728f5421486ba37dfbcb3783815e Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Fri, 22 May 2020 15:04:01 -0400 Subject: [PATCH 046/103] gnu: Change name of Go asn1-ber package and update to 1.3.1. * gnu/packages/syncthing.scm (go-gopkg.in-asn1-ber.v1): Replace with ... (go-github-com-go-asn1-ber-asn1-ber): ... new variable. [arguments]: Remove custom 'check' phase. --- gnu/packages/syncthing.scm | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm index 75de5b46a0a..8286ab4f997 100644 --- a/gnu/packages/syncthing.scm +++ b/gnu/packages/syncthing.scm @@ -942,35 +942,26 @@ server tools for Prometheus metrics.") (home-page "https://github.com/prometheus/client_golang") (license asl2.0))) -(define-public go-gopkg.in-asn1-ber.v1 +(define-public go-github-com-go-asn1-ber-asn1-ber (package - (name "go-gopkg.in-asn1-ber.v1") - (version "1.3") + (name "go-github-com-go-asn1-ber-asn1-ber") + (version "1.3.1") (source (origin (method git-fetch) (uri (git-reference - (url "https://gopkg.in/asn1-ber.v1") + (url "https://github.com/go-asn1-ber/asn1-ber") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 - "00ixms8x3lrhywbvq5v2sagcqsxa1pcnlk17dp5lnwckv3xg4psb")))) + "0dxfmgk84fn0p6pz3i0cspynh6rly5pfk9wghm1q07mx99npln02")))) (build-system go-build-system) (arguments - '(#:import-path "gopkg.in/asn1-ber.v1" - ;; Tests don't pass "vet" on Go since 1.11. See - ;; https://github.com/go-asn1-ber/asn1-ber/issues/20. - #:phases - (modify-phases %standard-phases - (replace 'check - (lambda* (#:key import-path #:allow-other-keys) - (invoke "go" "test" - "-vet=off" - import-path)))))) + '(#:import-path "github.com/go-asn1-ber/asn1-ber")) (synopsis "ASN.1 BER encoding and decoding in Go") (description "This package provides ASN.1 BER encoding and decoding in the Go language.") - (home-page "https://gopkg.in/asn1-ber.v1") + (home-page "https://github.com/go-asn1-ber/asn1-ber") (license expat))) (define-public go-gopkg.in-ldap.v2 From 4185edf2086af01ab072c6e667a14fdf313b71d1 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Fri, 22 May 2020 16:32:08 -0400 Subject: [PATCH 047/103] gnu: Change name of Go ldap package and update to 3.1.7. * gnu/packages/syncthing.scm (go-gopkg.in-ldap.v2): Replace with ... (go-github-com-go-ldap-ldap): ... new variable. --- gnu/packages/syncthing.scm | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm index 8286ab4f997..1030b6b557e 100644 --- a/gnu/packages/syncthing.scm +++ b/gnu/packages/syncthing.scm @@ -964,29 +964,29 @@ Go language.") (home-page "https://github.com/go-asn1-ber/asn1-ber") (license expat))) -(define-public go-gopkg.in-ldap.v2 +(define-public go-github-com-go-ldap-ldap (package - (name "go-gopkg.in-ldap.v2") - (version "2.5.1") + (name "go-github-com-go-ldap-ldap") + (version "3.1.7") (source (origin (method git-fetch) (uri (git-reference - (url "https://gopkg.in/ldap.v2") + (url "https://github.com/go-ldap/ldap") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 - "1wf81wy04nhkqs0dg5zkivr4sh37r83bxrfwjz9vr4jq6vmljr3h")))) + "1z6wxia7a1jkmasa9mm6g4n8f0qqbp5rw6vk0zyh4vzk7azklnj2")))) (build-system go-build-system) (arguments - '(#:import-path "gopkg.in/ldap.v2" - #:tests? #f)) ; the test suite requires network access + '(#:import-path "github.com/go-ldap/ldap/v3" + #:tests? #f)) ; test suite requires internet access (propagated-inputs - `(("go-gopkg.in-asn1-ber.v1" ,go-gopkg.in-asn1-ber.v1))) + `(("go-github-com-go-asn1-ber-asn1-ber" ,go-github-com-go-asn1-ber-asn1-ber))) + (home-page "https://github.com/go-ldap/ldap") (synopsis "LDAP v3 functionality for Go") (description "This package provides basic LDAP v3 functionality in the Go language.") - (home-page "https://gopkg.in/ldap.v2") (license expat))) (define-public go-github-com-flynn-archive-go-shlex From 595f30c0de09659d5aeaecfba7384b0c4e668b55 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Thu, 21 May 2020 12:56:58 -0400 Subject: [PATCH 048/103] gnu: Syncthing: Update to 1.5.0. * gnu/packages/syncthing.scm (syncthing): Update to 1.5.0. [inputs]: Replace go-gopkg.in-ldap.v2 with go-github-com-go-ldap-ldap. --- gnu/packages/syncthing.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm index 1030b6b557e..99bdd7704bd 100644 --- a/gnu/packages/syncthing.scm +++ b/gnu/packages/syncthing.scm @@ -32,7 +32,7 @@ (define-public syncthing (package (name "syncthing") - (version "1.4.2") + (version "1.5.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/syncthing/syncthing" @@ -40,7 +40,7 @@ "/syncthing-source-v" version ".tar.gz")) (sha256 (base32 - "16dqpbn4saxmmmqd5ya8zdkwvxzz4nim1p4w954zkkdz3cyg86h6")) + "1394b8y4nllihnjngc0kjpdy7pvyh6v1h09hkn8rdmwxpsdkqkjb")) (modules '((guix build utils))) ;; Delete bundled ("vendored") free software source code. (snippet '(begin @@ -77,7 +77,7 @@ ("go-github-com-syndtr-goleveldb" ,go-github-com-syndtr-goleveldb) ("go-github-com-thejerf-suture" ,go-github-com-thejerf-suture) ("go-golang-org-x-time" ,go-golang-org-x-time) - ("go-gopkg.in-ldap.v2" ,go-gopkg.in-ldap.v2) + ("go-github-com-go-ldap-ldap" ,go-github-com-go-ldap-ldap) ("go-github-com-gogo-protobuf" ,go-github-com-gogo-protobuf) ("go-github-com-shirou-gopsutil" ,go-github-com-shirou-gopsutil) ("go-github-com-prometheus-client-golang" From f64a74dd6c69a0e404b40b7688cdcbcaf63fdf42 Mon Sep 17 00:00:00 2001 From: Kyle Meyer Date: Fri, 22 May 2020 14:12:50 -0400 Subject: [PATCH 049/103] gnu: git-annex: Update to 8.20200522. * gnu/packages/haskell-apps.scm (git-annex): Update to 8.20200522. [source]: Remove patch that is now in a release. * gnu/packages/patches/git-annex-S3v4.patch: Delete file. * gnu/local.mk (dist_patch_DATA): Remove it. Signed-off-by: Leo Famulari --- gnu/local.mk | 1 - gnu/packages/haskell-apps.scm | 6 +- gnu/packages/patches/git-annex-S3v4.patch | 77 ----------------------- 3 files changed, 2 insertions(+), 82 deletions(-) delete mode 100644 gnu/packages/patches/git-annex-S3v4.patch diff --git a/gnu/local.mk b/gnu/local.mk index 961dedfdf6a..575b18eb412 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -979,7 +979,6 @@ dist_patch_DATA = \ %D%/packages/patches/ghostscript-no-header-id.patch \ %D%/packages/patches/ghostscript-no-header-uuid.patch \ %D%/packages/patches/ghostscript-no-header-creationdate.patch \ - %D%/packages/patches/git-annex-S3v4.patch \ %D%/packages/patches/glib-tests-timer.patch \ %D%/packages/patches/glibc-CVE-2015-5180.patch \ %D%/packages/patches/glibc-CVE-2015-7547.patch \ diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm index ecfe439c4b1..3089c171456 100644 --- a/gnu/packages/haskell-apps.scm +++ b/gnu/packages/haskell-apps.scm @@ -37,7 +37,6 @@ #:use-module (guix packages) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system haskell) - #:use-module (gnu packages) #:use-module (gnu packages base) #:use-module (gnu packages curl) #:use-module (gnu packages gl) @@ -342,15 +341,14 @@ to @code{cabal repl}).") (define-public git-annex (package (name "git-annex") - (version "8.20200501") + (version "8.20200522") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/" "git-annex/git-annex-" version ".tar.gz")) - (patches (search-patches "git-annex-S3v4.patch")) (sha256 - (base32 "19rggaymvqy7r61n2rl2nigwdi2hzq5l1afcd5l0k1vbacwgq4jl")))) + (base32 "1v71k5k9mcj1nq4pb8apx99rgw2rmckr6yshhvjl1dr6j70d67x8")))) (build-system haskell-build-system) (arguments `(#:configure-flags diff --git a/gnu/packages/patches/git-annex-S3v4.patch b/gnu/packages/patches/git-annex-S3v4.patch deleted file mode 100644 index 9f7cea329e8..00000000000 --- a/gnu/packages/patches/git-annex-S3v4.patch +++ /dev/null @@ -1,77 +0,0 @@ -From the upstream commit, with the changes to CHANGELOG and the docs -folder removed. - -From 1532d67c3ecf452b8c86bcc5928525398755cd01 Mon Sep 17 00:00:00 2001 -From: Joey Hess -Date: Thu, 7 May 2020 13:18:11 -0400 -Subject: [PATCH] S3: Support signature=v4 - -To use S3 Signature Version 4. Some S3 services seem to require v4, while -others may only support v2, which remains the default. - -I'm also not sure if v4 works correctly in all cases, there is this -upstream bug report: https://github.com/aristidb/aws/issues/262 -I've only tested it against the default S3 endpoint. ---- - CHANGELOG | 3 +++ - Remote/S3.hs | 23 ++++++++++++++++++- - ..._3bbdf23c8a4a480f4f6b8e8a2f8ddecd._comment | 13 +++++++++++ - ..._854390b9a781da82ecb85ad85eecad04._comment | 13 +++++++++++ - doc/special_remotes/S3.mdwn | 4 ++++ - ..._cf57e8dbd9fdc7c487565b61808b6bb2._comment | 10 ++++++++ - 6 files changed, 65 insertions(+), 1 deletion(-) - create mode 100644 doc/bugs/S3_special_remote_support_for_DigitalOcean_Spaces/comment_2_3bbdf23c8a4a480f4f6b8e8a2f8ddecd._comment - create mode 100644 doc/forum/backblaze_s3/comment_1_854390b9a781da82ecb85ad85eecad04._comment - create mode 100644 doc/special_remotes/S3/comment_34_cf57e8dbd9fdc7c487565b61808b6bb2._comment - -diff --git a/Remote/S3.hs b/Remote/S3.hs -index cb345d1f8..e3ea492f2 100644 ---- a/Remote/S3.hs -+++ b/Remote/S3.hs -@@ -99,6 +99,8 @@ remote = specialRemoteType $ RemoteType - (FieldDesc "port to connect to") - , optionalStringParser requeststyleField - (FieldDesc "for path-style requests, set to \"path\"") -+ , signatureVersionParser signatureField -+ (FieldDesc "S3 signature version") - , optionalStringParser mungekeysField HiddenField - , optionalStringParser AWS.s3credsField HiddenField - ] -@@ -148,6 +150,22 @@ protocolField = Accepted "protocol" - requeststyleField :: RemoteConfigField - requeststyleField = Accepted "requeststyle" - -+signatureField :: RemoteConfigField -+signatureField = Accepted "signature" -+ -+newtype SignatureVersion = SignatureVersion Int -+ -+signatureVersionParser :: RemoteConfigField -> FieldDesc -> RemoteConfigFieldParser -+signatureVersionParser f fd = -+ genParser go f defver fd -+ (Just (ValueDesc "v2 or v4")) -+ where -+ go "v2" = Just (SignatureVersion 2) -+ go "v4" = Just (SignatureVersion 4) -+ go _ = Nothing -+ -+ defver = SignatureVersion 2 -+ - portField :: RemoteConfigField - portField = Accepted "port" - -@@ -877,7 +895,10 @@ s3Configuration c = cfg - Nothing - | port == 443 -> AWS.HTTPS - | otherwise -> AWS.HTTP -- cfg = S3.s3 proto endpoint False -+ cfg = case getRemoteConfigValue signatureField c of -+ Just (SignatureVersion 4) -> -+ S3.s3v4 proto endpoint False S3.SignWithEffort -+ _ -> S3.s3 proto endpoint False - - data S3Info = S3Info - { bucket :: S3.Bucket --- -2.26.2 - From 6597893ba27153efd61bc28b15c1f4cd1aab2864 Mon Sep 17 00:00:00 2001 From: Arne Babenhauserheide Date: Fri, 22 May 2020 15:17:32 +0200 Subject: [PATCH 050/103] gnu: libaom: Update to 2.0.0 * gnu/packages/video.scm (libaom): Update to 2.0.0. Signed-off-by: Leo Famulari --- gnu/packages/video.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index bb465c64c95..cd3e5ba9ef2 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -283,7 +283,7 @@ television and DVD. It is also known as AC-3.") (define-public libaom (package (name "libaom") - (version "1.0.0-errata1-avif") + (version "2.0.0") (source (origin (method git-fetch) (uri (git-reference @@ -292,7 +292,7 @@ television and DVD. It is also known as AC-3.") (file-name (git-file-name name version)) (sha256 (base32 - "169yfgh7zigc21h71qclfyr7s4wwp2i9vbr4z6pkabypvass4v7m")))) + "1616xjhj6770ykn82ml741h8hx44v507iky3s9h7a5lnk9d4cxzy")))) (build-system cmake-build-system) (native-inputs `(("perl" ,perl) From 8d7ee11aac9b4a56b7fd47f0e7b250d6062c7832 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Fri, 22 May 2020 19:09:55 -0400 Subject: [PATCH 051/103] gnu: libavif: Update to 0.7.3. * gnu/packages/image.scm (libavif): Update to 0.7.3. --- gnu/packages/image.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index 28d3385e711..24f1b1570c9 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -1986,7 +1986,7 @@ This package can be used to create @code{favicon.ico} files for web sites.") (define-public libavif (package (name "libavif") - (version "0.7.1") + (version "0.7.3") (source (origin (method git-fetch) (uri (git-reference @@ -1995,7 +1995,7 @@ This package can be used to create @code{favicon.ico} files for web sites.") (file-name (git-file-name name version)) (sha256 (base32 - "1xybjbbprvfsrwgysrn7grg6yp7v6ch5vci7zvdcdzcgyrbph172")))) + "17hagdngpc4xzrr0aa48nx399y5lawyyx9cpcdhpds1mqk6p77lp")))) (build-system cmake-build-system) (arguments `(#:configure-flags '("-DAVIF_CODEC_AOM=ON" "-DAVIF_CODEC_DAV1D=ON" From 05e1edf2220080eda548106d48f4699ee97fa263 Mon Sep 17 00:00:00 2001 From: Leo Famulari Date: Fri, 22 May 2020 19:18:24 -0400 Subject: [PATCH 052/103] gnu: dav1d: Update to 0.7.0. * gnu/packages/video.scm (dav1d): Update to 0.7.0. --- gnu/packages/video.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index cd3e5ba9ef2..422eb79941c 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -3693,7 +3693,7 @@ transitions, and effects and then export your film to many common formats.") (define-public dav1d (package (name "dav1d") - (version "0.6.0") + (version "0.7.0") (source (origin (method url-fetch) @@ -3701,7 +3701,7 @@ transitions, and effects and then export your film to many common formats.") "/dav1d/" version "/dav1d-" version ".tar.xz")) (sha256 (base32 - "0w5k572jzxp7zwdbsa0jgjzri6hsrkydawzzilrw46nxpcak37q9")))) + "0xcykraf42gkymzqx1k1lcdclgk9y5yf7rr56vslrgmr0r849qnk")))) (build-system meson-build-system) (native-inputs `(("nasm" ,nasm))) (home-page "https://code.videolan.org/videolan/dav1d") From b2d81186165631c50a6e760b52d5830409b65585 Mon Sep 17 00:00:00 2001 From: Vinicius Monego Date: Fri, 22 May 2020 21:51:41 -0300 Subject: [PATCH 053/103] gnu: Add emacs-fountain-mode. * gnu/packages/emacs-xyz.scm (emacs-fountain-mode): New variable. Signed-off-by: Nicolas Goaziou --- gnu/packages/emacs-xyz.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index d952e8ea6c6..8951119da9b 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -70,6 +70,7 @@ ;;; Copyright © 2020 Alberto Eleuterio Flores Guerrero ;;; Copyright © 2020 Marius Bakke ;;; Copyright © 2020 pinoaffe +;;; Copyright © 2020 Vinicius Monego ;;; ;;; This file is part of GNU Guix. ;;; @@ -2767,6 +2768,26 @@ Emacs.") files and directories.") (license license:gpl3+))) +(define-public emacs-fountain-mode + (package + (name "emacs-fountain-mode") + (version "3.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rnkn/fountain-mode") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "08giwg0jwk8zzj2i4cm08322qr6znrnv9a49za7c6j47bykpwj6s")))) + (build-system emacs-build-system) + (home-page "https://github.com/rnkn/fountain-mode") + (synopsis "Major mode for screenwriting in Fountain markup") + (description "Fountain Mode is a scriptwriting program for GNU Emacs +using the Fountain plain text markup format.") + (license license:gpl3+))) + (define-public emacs-fringe-helper (let ((commit "ef4a9c023bae18ec1ddd7265f1f2d6d2e775efdd") (revision "1")) From 28e9a1118b8dc3c14d1ffc0533ac2c6683f65ad0 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Sat, 23 May 2020 09:43:51 +0200 Subject: [PATCH 054/103] gnu: emacs-flycheck-grammalecte: Remove "/usr/bin/env" references. * gnu/packages/emacs-xyz.scm (emacs-flycheck-grammalecte)[arguments]: Fix more python3 locations. --- gnu/packages/emacs-xyz.scm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 8951119da9b..fe68a56fd65 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -3797,13 +3797,15 @@ for Flow files.") #:emacs ,emacs ;need libxml support #:phases (modify-phases %standard-phases - (add-after 'unpack 'fix-python-executable - ;; Hardcode python3 executable in the Emacs library. + (add-after 'unpack 'specify-python-location + ;; Hard-code python3 executable location in the library. (lambda* (#:key inputs #:allow-other-keys) (let ((python3 (string-append (assoc-ref inputs "python") "/bin/python3"))) (substitute* "flycheck-grammalecte.el" (("\"python3") (string-append "\"" python3))) + (substitute* '("conjugueur.py" "flycheck-grammalecte.py") + (("/usr/bin/env python3?") python3)) #t))) (add-before 'build 'link-to-grammalecte ;; XXX: The Python part of the package requires grammalecte, but From e7b2ac1cd8aaa3451e29b7529317932ed9149e68 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Sat, 23 May 2020 14:04:48 +0200 Subject: [PATCH 055/103] gnu: Add libglvnd. * gnu/packages/gl.scm (libglvnd): New public variable. --- gnu/packages/gl.scm | 47 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index fdc361d761f..23b8ed1a294 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -664,6 +664,53 @@ OpenGL graphics API.") "A library for handling OpenGL function pointer management.") (license license:x11))) +(define-public libglvnd + (package + (name "libglvnd") + (version "1.3.1") + (home-page "https://gitlab.freedesktop.org/glvnd/libglvnd") + (source (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0mkzdzdxjxjl794rblq4mq33wmb8ikqmfswbqdbr8gw2kw4wlhdl")))) + (build-system meson-build-system) + (arguments + '(#:configure-flags '("-Dx11=enabled") + #:phases (modify-phases %standard-phases + (add-after 'unpack 'disable-glx-tests + (lambda _ + ;; This package is meant to be used alongside Mesa. + ;; To avoid a circular dependency, disable tests that + ;; require a running Xorg server. + (substitute* "tests/meson.build" + (("if with_glx") + "if false")) + #t))))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("libx11" ,libx11) + ("libxext" ,libxext) + ("xorgproto" ,xorgproto))) + (synopsis "Vendor-neutral OpenGL dispatch library") + (description + "libglvnd is a vendor-neutral dispatch layer for arbitrating OpenGL +API calls between multiple vendors. It allows multiple drivers from +different vendors to coexist on the same filesystem, and determines which +vendor to dispatch each API call to at runtime. + +Both GLX and EGL are supported, in any combination with OpenGL and OpenGL ES.") + ;; libglvnd is available under a custom X11-style license, and incorporates + ;; code with various other licenses. See README.md for details. + (license (list (license:x11-style "file://README.md") + license:x11 + license:expat)))) + (define-public soil (package (name "soil") From 22070ad1ff6b943972912cc7b0bc2c04bb28c80c Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Sat, 23 May 2020 15:31:14 +0200 Subject: [PATCH 056/103] gnu: redshift: Build and install redshift-gtk in a separate output. This also installs a redshift.desktop file as a side-effect. * gnu/packages/xdisorg.scm (redshift)[outputs, arguments]: New fields. --- gnu/packages/xdisorg.scm | 54 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 2 deletions(-) diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index 88719775df8..1714cb8caf5 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -14,7 +14,7 @@ ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner ;;; Copyright © 2016 Leo Famulari ;;; Copyright © 2016 Alex Kost -;;; Copyright © 2016, 2017, 2019 Marius Bakke +;;; Copyright © 2016, 2017, 2019, 2020 Marius Bakke ;;; Copyright © 2016 Petter ;;; Copyright © 2017 Mekeor Melire ;;; Copyright © 2017 Nikita @@ -1152,6 +1152,50 @@ the X.Org X Server version 1.7 and later (X11R7.5 or later).") (base32 "1fi27b73x85qqar526dbd33av7mahca2ykaqwr7siqiw1qqcby6j")))) (build-system gnu-build-system) + (arguments + `(#:imported-modules (,@%gnu-build-system-modules + (guix build python-build-system)) + #:phases + (modify-phases %standard-phases + (add-after 'install 'split-outputs + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (gtk (assoc-ref outputs "gtk")) + (desktop-file "/share/applications/redshift-gtk.desktop")) + (mkdir-p (string-append gtk "/bin")) + (link (string-append out "/bin/redshift-gtk") + (string-append gtk "/bin/redshift-gtk")) + (delete-file (string-append out "/bin/redshift-gtk")) + (copy-recursively (string-append out "/lib") + (string-append gtk "/lib")) + (delete-file-recursively (string-append out "/lib")) + (mkdir-p (string-append gtk "/share/applications")) + (link (string-append out desktop-file) + (string-append gtk desktop-file)) + (delete-file (string-append out desktop-file)) + (with-directory-excursion (string-append out "/share") + (for-each (lambda (dir) + (copy-recursively + (string-append out "/share/" dir) + (string-append gtk "/share/" dir)) + (delete-file-recursively dir)) + '("appdata" "icons"))) + #t))) + (add-after 'split-outputs 'wrap + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((gtk (assoc-ref outputs "gtk")) + (python-version + (@ (guix build python-build-system) python-version)) + (python (assoc-ref inputs "python")) + (sitedir (string-append gtk "/lib/python" + (python-version python) + "/site-packages"))) + (wrap-program (string-append gtk "/bin/redshift-gtk") + `("PYTHONPATH" ":" prefix + (,(string-append sitedir ":" (getenv "PYTHONPATH")))) + `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH")))) + #t)))))) + (outputs '("out" "gtk")) (native-inputs `(("pkg-config" ,pkg-config) ("intltool" ,intltool))) @@ -1160,7 +1204,13 @@ the X.Org X Server version 1.7 and later (X11R7.5 or later).") ("libx11" ,libx11) ("libxcb" ,libxcb) ("libxxf86vm" ,libxxf86vm) - ("glib" ,glib))) ; for Geoclue2 support + ("glib" ,glib) ;for Geoclue2 support + + ;; To build the GTK3 GUI, we need these. + ("gtk+" ,gtk+) + ("python" ,python) + ("python-pygobject" ,python-pygobject) + ("python-pyxdg" ,python-pyxdg))) (home-page "https://github.com/jonls/redshift") (synopsis "Adjust the color temperature of your screen") (description From 9fdf982b418e379dc5abfaa072583f19eb314240 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Thu, 21 May 2020 22:33:22 +0200 Subject: [PATCH 057/103] gnu: inxi: Update to 3.1.00-1. * gnu/packages/admin.scm (inxi-minimal): Update to 3.1.00-1. --- gnu/packages/admin.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 9314abf5bee..cb8e73e95a7 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -3336,7 +3336,7 @@ Python loading in HPC environments.") (let ((real-name "inxi")) (package (name "inxi-minimal") - (version "3.0.38-1") + (version "3.1.00-1") (source (origin (method git-fetch) @@ -3345,7 +3345,7 @@ Python loading in HPC environments.") (commit version))) (file-name (git-file-name real-name version)) (sha256 - (base32 "1qw3sxgd3ly916bzzl3873s3flngwd3vh57slw0shsj7ivz8bfnm")))) + (base32 "0md6yfd297l8695g0rsbs4mm74dc3k00rfjl4x2n4i33mkylp6qa")))) (build-system trivial-build-system) (inputs `(("bash" ,bash-minimal) From 99f80e5ccdc32eeb588eb8436738ba46973bbe84 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 22 May 2020 01:44:00 +0200 Subject: [PATCH 058/103] gnu: polybar: Update to 3.4.3. * gnu/packages/wm.scm (polybar): Update to 3.4.3. --- gnu/packages/wm.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index 1151b8115dd..f9db2dbe4d8 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -1268,14 +1268,14 @@ its size (define-public polybar (package (name "polybar") - (version "3.4.2") + (version "3.4.3") (source (origin (method url-fetch) (uri (string-append "https://github.com/polybar/polybar/releases/" "download/" version "/polybar-" version ".tar")) (sha256 - (base32 "0fmnviz4b01aw50nkv4yibm8ykc5ff860ynw3xb1ymlsjrvwj8jd")))) + (base32 "0bw22qvbcdvyd0qv3ax48r34rnclbbb6dyb8h8zljq1r3lf15vfl")))) (build-system cmake-build-system) (arguments ;; Test is disabled because it requires downloading googletest from the From d2bc9f0e7d94536662d1466529915c7db3648360 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 22 May 2020 01:52:49 +0200 Subject: [PATCH 059/103] gnu: qtractor: Update to 0.9.14. * gnu/packages/music.scm (qtractor): Update to 0.9.14. [source]: Fetch over HTTPS. --- gnu/packages/music.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 3d8a3d43211..1d02e3abcf3 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -2499,14 +2499,14 @@ from the command line.") (define-public qtractor (package (name "qtractor") - (version "0.9.12") + (version "0.9.14") (source (origin (method url-fetch) - (uri (string-append "http://downloads.sourceforge.net/qtractor/" + (uri (string-append "https://downloads.sourceforge.net/qtractor/" "qtractor-" version ".tar.gz")) (sha256 (base32 - "06493sf4hr178jkvric3rmc2phh1ph2jlyh8kl9z248amq3zfnhy")))) + "1gh268gdpj7nw19xfh7k2l3aban4yrs1lmx33qswrnngs2izj1fk")))) (build-system gnu-build-system) (arguments `(#:tests? #f)) ; no "check" target From 6d2155168fecee297ceb44f58fa2ccbd31ee7031 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Fri, 22 May 2020 02:00:32 +0200 Subject: [PATCH 060/103] gnu: spice-protocol: Update to 0.14.2. * gnu/packages/spice.scm (spice-protocol): Update to 0.14.2. [arguments]: Install COPYING manually now. --- gnu/packages/spice.scm | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/gnu/packages/spice.scm b/gnu/packages/spice.scm index 29a024c8a96..4aff8dbf563 100644 --- a/gnu/packages/spice.scm +++ b/gnu/packages/spice.scm @@ -43,6 +43,7 @@ #:use-module (gnu packages xiph) #:use-module (gnu packages xml) #:use-module (guix build-system gnu) + #:use-module (guix build-system meson) #:use-module (guix download) #:use-module (guix packages) #:use-module ((guix licenses) #:prefix license:) @@ -101,16 +102,26 @@ system to use the host GPU to accelerate 3D rendering.") (define-public spice-protocol (package (name "spice-protocol") - (version "0.14.1") + (version "0.14.2") (source (origin (method url-fetch) (uri (string-append "https://www.spice-space.org/download/releases/" - "spice-protocol-" version ".tar.bz2")) + "spice-protocol-" version ".tar.xz")) (sha256 (base32 - "0ahk5hlanwhbc64r80xmchdav3ls156cvh9l68a0l22bhdhxmrkr")))) - (build-system gnu-build-system) + "1sgi9ksb781qs47pdbw0bmnyg8dgayn5xrzj6vzdy043nv466flg")))) + (build-system meson-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'install-documentation + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (doc (string-append out "/share/doc/" + ,name "-" ,version))) + (install-file "COPYING" doc) + #t)))))) (synopsis "Protocol headers for the SPICE protocol") (description "SPICE (the Simple Protocol for Independent Computing Environments) is a remote-display system built for virtual environments From 9927e5b11b88a85fffb959b515430c2312c8dff3 Mon Sep 17 00:00:00 2001 From: Vincent Legoll Date: Sun, 17 May 2020 19:16:58 +0200 Subject: [PATCH 061/103] build: Add a comment above the sysvinit section. * nix/local.mk (sysvinitservicedir): Add a comment. Signed-off-by: Tobias Geerinckx-Rice --- nix/local.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/nix/local.mk b/nix/local.mk index dbcdde8b0d0..c136fb7202e 100644 --- a/nix/local.mk +++ b/nix/local.mk @@ -175,6 +175,7 @@ etc/guix-%.service: etc/guix-%.service.in \ "$<" > "$@.tmp"; \ mv "$@.tmp" "$@" +# The service script for sysvinit. sysvinitservicedir = $(sysconfdir)/init.d nodist_sysvinitservice_DATA = etc/init.d/guix-daemon From 39939e30cf77a3336a938f0d6df6a95a07cf9ebd Mon Sep 17 00:00:00 2001 From: Vincent Legoll Date: Sun, 17 May 2020 19:16:59 +0200 Subject: [PATCH 062/103] guix-install.sh: Add xz to requirements. * etc/guix-install.sh (REQUIRE): Add xz to requirements list. Signed-off-by: Tobias Geerinckx-Rice --- etc/guix-install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/etc/guix-install.sh b/etc/guix-install.sh index bcce1d8869a..4d457e7f2d0 100755 --- a/etc/guix-install.sh +++ b/etc/guix-install.sh @@ -48,6 +48,7 @@ REQUIRE=( "groupadd" "tail" "tr" + "xz" ) PAS=$'[ \033[32;1mPASS\033[0m ] ' From dc1aede30a63d60708ca98e92724dc14a262b0ec Mon Sep 17 00:00:00 2001 From: Vincent Legoll Date: Sun, 17 May 2020 19:17:00 +0200 Subject: [PATCH 063/103] =?UTF-8?q?guix-install.sh:=20Fix=20=E2=80=98syste?= =?UTF-8?q?mctl=20not=20found=E2=80=99=20error=20message=20at=20probe.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * etc/guix-install.sh (chk_init_sys): Redirect systemctl errors to /dev/null. Signed-off-by: Tobias Geerinckx-Rice --- etc/guix-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/guix-install.sh b/etc/guix-install.sh index 4d457e7f2d0..bf15aede216 100755 --- a/etc/guix-install.sh +++ b/etc/guix-install.sh @@ -142,7 +142,7 @@ chk_init_sys() _msg "${INF}init system is: upstart" INIT_SYS="upstart" return 0 - elif [[ $(systemctl) =~ -\.mount ]]; then + elif [[ $(systemctl 2>/dev/null) =~ -\.mount ]]; then _msg "${INF}init system is: systemd" INIT_SYS="systemd" return 0 From 0459649e3ed9a5698bc33858aea3bb11cc749d5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sat, 23 May 2020 15:44:53 +0200 Subject: [PATCH 064/103] gnu: guile-gcrypt: Update to 0.3.0. * gnu/packages/gnupg.scm (guile-gcrypt): Update to 0.3.0. --- gnu/packages/gnupg.scm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index cf6f965b0d2..daf4bc3b6e5 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès ;;; Copyright © 2013, 2015, 2018 Andreas Enge ;;; Copyright © 2014, 2018 Eric Bavier ;;; Copyright © 2014, 2015, 2016 Mark H Weaver @@ -473,7 +473,7 @@ gpgpme starting with version 1.7.") (define-public guile-gcrypt (package (name "guile-gcrypt") - (version "0.2.1") + (version "0.3.0") (home-page "https://notabug.org/cwebber/guile-gcrypt") (source (origin (method git-fetch) @@ -482,7 +482,7 @@ gpgpme starting with version 1.7.") (commit (string-append "v" version)))) (sha256 (base32 - "0n232iyayc46f7hywmjw0jr7pbmmz5h4b04jskhkzz9gxz0ci99c")) + "0m29fg4pdfifnqqsa437zc5c1bhbfh62mc69ba25ak4x2cla41ll")) (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments @@ -510,7 +510,7 @@ gpgpme starting with version 1.7.") ("libgcrypt" ,libgcrypt))) (synopsis "Cryptography library for Guile using Libgcrypt") (description - "Guile-Gcrypt provides a Guile 2.x interface to a subset of the + "Guile-Gcrypt provides a Guile interface to a subset of the GNU Libgcrypt crytographic library. It provides modules for cryptographic hash functions, message authentication codes (MAC), public-key cryptography, strong randomness, and more. It is implemented using the foreign function From 197c07a84767ac885ae2cf1300e0933efe424431 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sat, 23 May 2020 15:45:22 +0200 Subject: [PATCH 065/103] tests: Use a #:prefix for (gcrypt hash). * tests/packages.scm: Use #:prefix instead of #:hide for (gcrypt hash). This accomodates for 'sha512' syntax literal matches with Guile-Gcrypt 0.3.0, which exports 'sha512' in addition to 'sha256'. --- tests/packages.scm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/packages.scm b/tests/packages.scm index 4935d4503e6..d8f0d677a32 100644 --- a/tests/packages.scm +++ b/tests/packages.scm @@ -29,7 +29,7 @@ #:renamer (lambda (name) (cond ((eq? name 'location) 'make-location) (else name)))) - #:use-module ((gcrypt hash) #:hide (sha256)) + #:use-module ((gcrypt hash) #:prefix gcrypt:) #:use-module (guix derivations) #:use-module (guix packages) #:use-module (guix grafts) @@ -515,8 +515,9 @@ (uri "unused://") (file-name "origin-sha512") (hash (content-hash - (bytevector-hash (string->utf8 "hello") - (hash-algorithm sha512)) + (gcrypt:bytevector-hash (string->utf8 "hello") + (gcrypt:lookup-hash-algorithm + 'sha512)) sha512)))) (drv (package-source-derivation %store source)) (output (derivation->output-path drv))) From 881eaae1abe39ea324ea9c757e84d15eb30f869f Mon Sep 17 00:00:00 2001 From: zimoun Date: Thu, 21 May 2020 23:43:06 +0200 Subject: [PATCH 066/103] guix package: Support multiple profiles with '--list-installed'. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * guix/scripts/package.scm (process-query): List installed multiple profiles. * tests/guix-package-net.sh: Test it. Signed-off-by: Ludovic Courtès --- guix/scripts/package.scm | 20 +++++++++++--------- tests/guix-package-net.sh | 12 ++++++++++++ 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index a69efa365e0..1246147798c 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -675,12 +675,13 @@ doesn't need it." (define (process-query opts) "Process any query specified by OPTS. Return #t when a query was actually processed, #f otherwise." - (let* ((profiles (match (filter-map (match-lambda - (('profile . p) p) - (_ #f)) - opts) - (() (list %current-profile)) - (lst (reverse lst)))) + (let* ((profiles (delete-duplicates + (match (filter-map (match-lambda + (('profile . p) p) + (_ #f)) + opts) + (() (list %current-profile)) + (lst (reverse lst))))) (profile (match profiles ((head tail ...) head)))) (match (assoc-ref opts 'query) @@ -718,7 +719,8 @@ processed, #f otherwise." (('list-installed regexp) (let* ((regexp (and regexp (make-regexp* regexp regexp/icase))) - (manifest (profile-manifest profile)) + (manifest (concatenate-manifests + (map profile-manifest profiles))) (installed (manifest-entries manifest))) (leave-on-EPIPE (for-each (match-lambda @@ -729,8 +731,8 @@ processed, #f otherwise." name (or version "?") output path)))) ;; Show most recently installed packages last. - (reverse installed))) - #t)) + (reverse installed)))) + #t) (('list-available regexp) (let* ((regexp (and regexp (make-regexp* regexp regexp/icase))) diff --git a/tests/guix-package-net.sh b/tests/guix-package-net.sh index 48a94865e11..3876701fa21 100644 --- a/tests/guix-package-net.sh +++ b/tests/guix-package-net.sh @@ -1,6 +1,7 @@ # GNU Guix --- Functional package management for GNU # Copyright © 2012, 2013, 2014, 2015, 2017, 2019 Ludovic Courtès # Copyright © 2013 Nikita Karetnikov +# Copyright © 2020 Simon Tournier # # This file is part of GNU Guix. # @@ -78,6 +79,17 @@ esac test "`guix package -p "$profile" -I 'g.*e' | cut -f1`" = "guile-bootstrap" +guix package --bootstrap -p "$profile_alt" -i gcc-bootstrap +installed="`guix package -p "$profile" -p "$profile_alt" -I | cut -f1 | xargs echo | sort`" +case "x$installed" in + "gcc-bootstrap guile-bootstrap make-boot0") + true;; + "*") + false;; +esac +test "`guix package -p "$profile_alt" -p "$profile" -I | wc -l`" = "3" +rm "$profile_alt" + # List generations. test "`guix package -p "$profile" -l | cut -f1 | grep guile | head -n1`" \ = " guile-bootstrap" From 7ae5d7d7953d268a2751d313fcd3b744717aa631 Mon Sep 17 00:00:00 2001 From: Michael Rohleder Date: Thu, 21 May 2020 23:32:19 +0200 Subject: [PATCH 067/103] gnu: libmediainfo: Update to 20.03. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/video.scm (libmediainfo): Update to 20.03. Signed-off-by: Ludovic Courtès --- gnu/packages/video.scm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 422eb79941c..fc7a134df88 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -3019,15 +3019,15 @@ practically any type of media.") (define-public libmediainfo (package (name "libmediainfo") - (version "0.7.95") + (version "20.03") (source (origin (method url-fetch) (uri (string-append "https://mediaarea.net/download/source/" - name "/" version"/" - name "_" version ".tar.bz2")) + name "/" version "/" + name "_" version ".tar.xz")) (sha256 (base32 - "1kchh6285b07z5nixv619hc9gml2ysdayicdiv30frrlqiyxqw4b")))) + "0wkzj5s34m8dvy7hif4h8f90q8ncrzd930gij1zzw3h5nw732j38")))) ;; TODO add a Big Buck Bunny webm for tests. (native-inputs `(("autoconf" ,autoconf) From 4c1f5ea34c4620499654eb9f5086b657055f516d Mon Sep 17 00:00:00 2001 From: Michael Rohleder Date: Thu, 21 May 2020 23:37:13 +0200 Subject: [PATCH 068/103] gnu: mediainfo: Update to 20.03. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/video.scm (mediainfo): Update to 20.03. Signed-off-by: Ludovic Courtès --- gnu/packages/video.scm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index fc7a134df88..1e36c6c313e 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -41,6 +41,7 @@ ;;; Copyright © 2020 Vincent Legoll ;;; Copyright © 2020 Guillaume Le Vaillant ;;; Copyright © 2020 Alex McGrath +;;; Copyright © 2020 Michael Rohleder ;;; ;;; This file is part of GNU Guix. ;;; @@ -3077,7 +3078,7 @@ MPEG-2, MPEG-4, DVD (VOB)... (define-public mediainfo (package (name "mediainfo") - (version "18.12") + (version "20.03") (source (origin (method url-fetch) ;; Warning: This source has proved unreliable 1 time at least. @@ -3085,10 +3086,10 @@ MPEG-2, MPEG-4, DVD (VOB)... ;; happens again. (uri (string-append "https://mediaarea.net/download/source/" name "/" version "/" - name "_" version ".tar.bz2")) + name "_" version ".tar.xz")) (sha256 (base32 - "1ix95ilcjlawcq6phh25cgplm3riqa2ii7ql82g8yagqs4ldqp6a")))) + "1f1shnycf0f1fwka9k9s250l228xjkg0k4k73h8bpld8msighgnw")))) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) From 964ba6567d00818f34bc96a949e81b73a1ef3570 Mon Sep 17 00:00:00 2001 From: Jonathan Brielmaier Date: Thu, 14 May 2020 13:49:53 +0200 Subject: [PATCH 069/103] gnu: icedove: Add a desktop file. * gnu/packages/gnuzilla.scm (icedove)[phases]: Add install-desktop-file phase. Signed-off-by: Marius Bakke --- gnu/packages/gnuzilla.scm | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 8a926681e0b..7bf9850e970 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -1344,6 +1344,32 @@ standards of the IceCat project.") (lambda _ (invoke "./mach" "build"))) (replace 'install (lambda _ (invoke "./mach" "install"))) + ;; Thunderbird doesn't provide any .desktop file. + ;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1637575 + (add-after 'install 'install-desktop-file + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (apps (string-append out "/share/applications"))) + (mkdir-p apps) + (with-output-to-file (string-append apps "/icedove.desktop") + (lambda _ + (format #t + "[Desktop Entry]~@ + Name=Icedove~@ + Exec=~a/bin/icedove~@ + Icon=icedove~@ + GenericName=Mail/News Client~@ + Categories=Network;Email;~@ + Terminal=false~@ + StartupNotify=true~@ + MimeType=x-scheme-handler/mailto;~@ + Type=Application~@ + Actions=ComposeMessage;~@ + [Desktop Action ComposeMessage]~@ + Name=Write new message~@ + Exec=~@*~a/bin/icedove -compose~%" + out)))) + #t)) (add-after 'install 'wrap-program (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) From 01e81309c01b901cf46b034152ba7c0829aa9df8 Mon Sep 17 00:00:00 2001 From: Ryan Prior via Guix-patches via Date: Sun, 17 May 2020 18:41:48 +0000 Subject: [PATCH 070/103] gnu: Add python-importmagic. * gnu/packages/python-xyz.el (python-importmagic): New variable. Signed-off-by: Marius Bakke --- gnu/packages/python-xyz.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 5c0f0bda82c..7d8003a7fb2 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -77,6 +77,7 @@ ;;; Copyright © 2020 Lars-Dominik Braun ;;; Copyright © 2020 Alex ter Weele ;;; Copyright © 2020 Matthew Kraai +;;; Copyright © 2020 Ryan Prior ;;; ;;; This file is part of GNU Guix. ;;; @@ -5896,6 +5897,25 @@ need to use the older and less efficient @code{pkg_resources} package.") ("python-contextlib2" ,python2-contextlib2-bootstrap) ("python-importlib-resources" ,python2-importlib-resources-bootstrap)))))) +(define-public python-importmagic + (package + (name "python-importmagic") + (version "0.1.7") + (source + (origin + (method url-fetch) + (uri (pypi-uri "importmagic" version)) + (sha256 + (base32 + "1n7qxa1snj06aw45mcfz7bxc46zp7fxj687140g2k6jcnyjmfxrz")))) + (build-system python-build-system) + (home-page "https://github.com/alecthomas/importmagic") + (synopsis "Library for adding, removing and managing Python imports") + (description + "Importmagic is a Python library for automatically managing imports by +finding unresolved symbols in Python code and their corresponding imports.") + (license license:bsd-3))) + (define-public python-jaraco-packaging (package (name "python-jaraco-packaging") From 1348e512375503e254f8d1f0c79a99754a94f0e8 Mon Sep 17 00:00:00 2001 From: Ryan Prior via Guix-patches via Date: Sun, 17 May 2020 18:41:54 +0000 Subject: [PATCH 071/103] gnu: Add python-sexpdata. * gnu/packages/python-xyz.scm (python-sexpdata): New variable. Signed-off-by: Marius Bakke --- gnu/packages/python-xyz.scm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 7d8003a7fb2..fb19523c17d 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -5768,6 +5768,25 @@ them as the version argument or in a SCM managed file.") (define-public python2-setuptools-scm (package-with-python2 python-setuptools-scm)) +(define-public python-sexpdata + (package + (name "python-sexpdata") + (version "0.0.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "sexpdata" version)) + (sha256 + (base32 + "1q4lsjyzzqrdv64l0pv4ij9nd8gqhvxqcrpxc2xpxs652sk2gj0s")))) + (build-system python-build-system) + (home-page "https://github.com/jd-boyd/sexpdata") + (synopsis "S-expression parser for Python") + (description + "Sexpdata is an S-expression parser/serializer. It has load and dump +functions like pickle, json or PyYAML module.") + (license license:bsd-3))) + (define-public python-pathlib2 (package (name "python-pathlib2") From c265d78640948410af824d26b981d3ebdebb8a02 Mon Sep 17 00:00:00 2001 From: Ryan Prior via Guix-patches via Date: Sun, 17 May 2020 18:41:59 +0000 Subject: [PATCH 072/103] gnu: Add python-epc. * gnu/packages/python-xyz.py (python-epc): New variable. Signed-off-by: Marius Bakke --- gnu/packages/python-xyz.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index fb19523c17d..39424d0c14e 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -8825,6 +8825,29 @@ functions to find and load entry points.") (define-public python2-entrypoints (package-with-python2 python-entrypoints)) +(define-public python-epc + (package + (name "python-epc") + (version "0.0.5") + (source + (origin + (method url-fetch) + (uri (pypi-uri "epc" version)) + (sha256 + (base32 + "09bx1ln1bwa00917dndlgs4k589h8qx2x080xch5m58p92kjwkd1")))) + (build-system python-build-system) + (propagated-inputs + `(("python-sexpdata" ,python-sexpdata))) + (native-inputs + `(("python-nose" ,python-nose))) + (home-page "https://github.com/tkf/python-epc") + (synopsis "Remote procedure call (RPC) stack for Emacs Lisp and Python") + (description + "Python-EPC can call elisp functions from Python and Python functions +from elisp.") + (license license:gpl3))) + (define-public python-nbconvert (package (name "python-nbconvert") From 51443772b80c5ca51ccbe5cf05c5db4c216a7b66 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Tue, 19 May 2020 09:24:03 +0200 Subject: [PATCH 073/103] gnu: python-argcomplete: Update to 1.11.1. * gnu/packages/python-xyz.scm (python-argcomplete)[version]: Update to 1.11.1. [arguments]: Remove, obsolete. [inputs]: Remove as well. * gnu/packages/patches/python-argcomplete-1.11.1-fish31.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. Signed-off-by: Marius Bakke --- gnu/local.mk | 1 + .../python-argcomplete-1.11.1-fish31.patch | 29 +++++++++++++++++++ gnu/packages/python-xyz.scm | 23 ++------------- 3 files changed, 33 insertions(+), 20 deletions(-) create mode 100644 gnu/packages/patches/python-argcomplete-1.11.1-fish31.patch diff --git a/gnu/local.mk b/gnu/local.mk index 575b18eb412..23d775284a7 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1412,6 +1412,7 @@ dist_patch_DATA = \ %D%/packages/patches/python-CVE-2018-14647.patch \ %D%/packages/patches/python-aiohttp-3.6.2-no-warning-fail.patch \ %D%/packages/patches/python-alembic-exceptions-cause.patch \ + %D%/packages/patches/python-argcomplete-1.11.1-fish31.patch \ %D%/packages/patches/python-axolotl-AES-fix.patch \ %D%/packages/patches/python-cairocffi-dlopen-path.patch \ %D%/packages/patches/python-cross-compile.patch \ diff --git a/gnu/packages/patches/python-argcomplete-1.11.1-fish31.patch b/gnu/packages/patches/python-argcomplete-1.11.1-fish31.patch new file mode 100644 index 00000000000..98f0ca14736 --- /dev/null +++ b/gnu/packages/patches/python-argcomplete-1.11.1-fish31.patch @@ -0,0 +1,29 @@ +Upstream commit fixing testcases for fish>=3.1, see +https://github.com/kislyuk/argcomplete/commit/08bfc8a788e8081515d733e67be026d051c726f7 + +diff --git a/test/test.py b/test/test.py +index e91352b..2c34806 100755 +--- a/test/test.py ++++ b/test/test.py +@@ -28,6 +28,8 @@ + + BASH_VERSION = subprocess.check_output(['bash', '-c', 'echo $BASH_VERSION']).decode() + BASH_MAJOR_VERSION = int(BASH_VERSION.split('.')[0]) ++FISH_VERSION_STR = subprocess.check_output(['fish', '-c', 'echo -n $FISH_VERSION']).decode() ++FISH_VERSION_TUPLE = tuple(int(x) for x in FISH_VERSION_STR.split('.')) + + + class TempDir(object): +@@ -1258,8 +1260,11 @@ class TestFish(_TestSh, unittest.TestCase): + expected_failures = [ + 'test_parse_special_characters', + 'test_comp_point', +- 'test_special_characters_double_quoted' + ] ++ if FISH_VERSION_TUPLE < (3, 1): ++ expected_failures.extend([ ++ 'test_special_characters_double_quoted' ++ ]) + + skipped = [ + 'test_single_quotes_in_single_quotes', diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 39424d0c14e..9aa5635ab83 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -13070,33 +13070,16 @@ PNG, JPEG, JPEG2000 and GIF files in pure Python.") (define-public python-argcomplete (package (name "python-argcomplete") - (version "1.10.3") + (version "1.11.1") (source (origin (method url-fetch) (uri (pypi-uri "argcomplete" version)) (sha256 (base32 - "02jkc44drb0yjz6x28lvg6rj607n8r2irdpdvyylm8xnycn54zx3")))) + "0h1przxffrhqvi46k40pzjsvdrq4zc3sl1pc96kkigqppq0vdrss")) + (patches (search-patches "python-argcomplete-1.11.1-fish31.patch")))) (build-system python-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'embed-tool-references - (lambda _ - (substitute* "argcomplete/bash_completion.d/python-argcomplete.sh" - ((" grep") - (string-append " " (which "grep"))) - ((" egrep") - (string-append " " (which "egrep"))) - (("elif which") - (string-append "elif " (which "which"))) - (("\\$\\(which") - (string-append "$(" (which "which")))) - #t))))) - (inputs - `(("grep" ,grep) - ("which" ,which))) (native-inputs `(("python-coverage" ,python-coverage) ("python-flake8" ,python-flake8) From 07b1f6dcee0be6297eabca6852e4f52efd437a20 Mon Sep 17 00:00:00 2001 From: Brice Waegeneire Date: Thu, 21 May 2020 16:55:21 +0200 Subject: [PATCH 074/103] gnu: umockdev: Add 'gobject-introspection'. * gnu/packages/check.scm (umockdev)[native-inuputs]: Add 'gobject-introspection'. --- gnu/packages/check.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm index 12e01795ee9..b279dc149d4 100644 --- a/gnu/packages/check.scm +++ b/gnu/packages/check.scm @@ -2538,6 +2538,7 @@ provides a simple way to achieve this.") #t))))) (native-inputs `(("vala" ,vala) + ("gobject-introspection" ,gobject-introspection) ("gtk-doc" ,gtk-doc) ("pkg-config" ,pkg-config) From 96ae71f56b245f2f526ddcde3e60530fd19a4720 Mon Sep 17 00:00:00 2001 From: Brice Waegeneire Date: Thu, 21 May 2020 17:01:37 +0200 Subject: [PATCH 075/103] gnu: umockdev: Update to 0.14.1. * gnu/packages/check.scm (umockdev) Update to 0.14.1. --- gnu/packages/check.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm index b279dc149d4..7d7fd189bc2 100644 --- a/gnu/packages/check.scm +++ b/gnu/packages/check.scm @@ -2518,7 +2518,7 @@ provides a simple way to achieve this.") (define-public umockdev (package (name "umockdev") - (version "0.13.2") + (version "0.14.1") (source (origin (method url-fetch) (uri (string-append "https://github.com/martinpitt/umockdev/" @@ -2526,7 +2526,7 @@ provides a simple way to achieve this.") "umockdev-" version ".tar.xz")) (sha256 (base32 - "095v3abc321s584sga04y16lcmdzsdi88h24wcrm78v7vq484g74")))) + "1g78jcrvb7yyh0q5kv5409wjqf8nlfqnw1rknm3a247mcx317dpz")))) (build-system gnu-build-system) (arguments `(#:phases From 6039031a1a5e1cabd380b8715334d5a8f600055f Mon Sep 17 00:00:00 2001 From: Brice Waegeneire Date: Thu, 21 May 2020 17:04:23 +0200 Subject: [PATCH 076/103] gnu: upower: Enable tests. * gnu/packages/gnome.scm (upower)[arguments]: Enable tests and add phases 'pre-check'. [native-inputs]: Add 'python-pygobject', 'python-dbus', 'python-dbusmock' and 'umockdev'. --- gnu/packages/gnome.scm | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index e94d65908d4..5271fe5fbdb 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -4159,10 +4159,14 @@ faster results and to avoid unnecessary server load.") #t)))) (build-system glib-or-gtk-build-system) (arguments - '( ;; The tests want to contact the system bus, which can't be done in the - ;; build environment. The integration test can run, but the last of - ;; the up-self-tests doesn't. Disable tests for now. - #:tests? #f + '(#:phases + (modify-phases %standard-phases + (add-before 'check 'pre-check + (lambda* (#:key inputs #:allow-other-keys) + (let ((umockdev (string-append (assoc-ref inputs "umockdev") + "/lib"))) + (setenv "LD_LIBRARY_PATH" umockdev)) + #t))) #:configure-flags (list "--localstatedir=/var" (string-append "--with-udevrulesdir=" (assoc-ref %outputs "out") @@ -4173,6 +4177,12 @@ faster results and to avoid unnecessary server load.") ("intltool" ,intltool) ("python" ,python) + ;; For tests. + ("python-dbus" ,python-dbus) + ("python-dbusmock" ,python-dbusmock) + ("python-pygobject" ,python-pygobject) + ("umockdev" ,umockdev) + ;; For man pages. ("libxslt" ,libxslt) ;for 'xsltproc' ("libxml2" ,libxml2) ;for 'XML_CATALOG_FILES' From 899ffa1381afbf5f955aeba4839e920b3d910953 Mon Sep 17 00:00:00 2001 From: Brice Waegeneire Date: Fri, 22 May 2020 00:34:41 +0200 Subject: [PATCH 077/103] gnu: deja-dup: Update to 40.6. * gnu/packages/gnome.scm (deja-dup): Update to 40.6. [origin]: Use gitlab.gnome.org since the project migrated away from launchpad. [home-page]: Use 'wiki.gnome.org' instead of 'launchpad.net'. [build-system]: Switch to 'meson-build-system' because upstream removed cmake support. [arguments]: Enable tests. Remove arguments 'modules', 'imported-modules' and 'test-target'. Use argument 'glib-or-gtk?'. Replace configure-flags to only adjust 'RUN_PATH'. Use standard phases for 'configure' and 'check'. Adjust and rename phase 'patch-lockfile-deletion' to 'patch-paths'. Add phases 'patch-libgpg-error' and 'skip-gtk-update-icon-cache'. [inputs]: Remove 'libpeas', 'gobject-introspection'. Replace 'python-2' and 'python2-pygobject' with python-3 versions. Add 'json-glib', 'libsoup' and 'libgpg-error'. [native-inputs]: Remove 'cmake-minimal' and 'intltool'. Add 'appstream-glib','desktop-file-utils', 'glib:bin' and 'gobject-introspection'. * gnu/packages/patches/deja-dup-use-ref-keyword-for-iter.patch: Delete file. --- gnu/packages/gnome.scm | 105 +++++++++--------- .../deja-dup-use-ref-keyword-for-iter.patch | 41 ------- 2 files changed, 52 insertions(+), 94 deletions(-) delete mode 100644 gnu/packages/patches/deja-dup-use-ref-keyword-for-iter.patch diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 5271fe5fbdb..db4678e3cec 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -879,73 +879,72 @@ configuration files for the GNOME menu, as well as a simple menu editor.") (define-public deja-dup (package (name "deja-dup") - (version "34.3") + (version "40.6") (source (origin - (method url-fetch) - (uri "https://launchpadlibrarian.net/295170991/deja-dup-34.3.tar.xz") - (sha256 - (base32 - "1xqcr61hpbahbla7gdjn4ngjfz7w6f57y7f5pkb77yk05f60j2n9")) - (patches - (search-patches "deja-dup-use-ref-keyword-for-iter.patch")))) - (build-system glib-or-gtk-build-system) + (method url-fetch) + (uri (string-append "https://gitlab.gnome.org/World/deja-dup/-/archive/" + version "/deja-dup-" version ".tar.bz2")) + (sha256 + (base32 + "0lwazh6crby5wpy9fg6zvwy4plqbhs2f98bm5lbizjdlbh88n5q0")))) + (build-system meson-build-system) (arguments - `(#:modules ((guix build gnu-build-system) - ((guix build cmake-build-system) #:prefix cmake:) - (guix build glib-or-gtk-build-system) - (guix build utils)) - #:imported-modules (,@%glib-or-gtk-build-system-modules - (guix build cmake-build-system)) - #:test-target "test" - #:configure-flags (list (string-append - "-DCMAKE_INSTALL_FULL_DATADIR=" %output) - (string-append - "-DCMAKE_INSTALL_LIBEXECDIR=" %output)) + `(#:glib-or-gtk? #t + #:configure-flags + (list + ;; Otherwise, the RUNPATH will lack the final path component. + (string-append "-Dc_link_args=-Wl,-rpath=" + (assoc-ref %outputs "out") "/lib/deja-dup")) #:phases (modify-phases %standard-phases - (add-after 'unpack 'patch-lockfile-deletion - (lambda rest - (substitute* "libdeja/tools/duplicity/DuplicityInstance.vala" - (("/bin/rm") - (which "rm"))))) - (replace 'configure - (assoc-ref cmake:%standard-phases 'configure)) - (delete 'check) ;; Fails due to issues with DBus - (add-after 'install 'wrap-deja-dup - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((python (assoc-ref inputs "python")) - (python-path (getenv "PYTHONPATH")) - (duplicity (assoc-ref inputs "duplicity")) - (out (assoc-ref outputs "out"))) - (for-each - (lambda (program) - (wrap-program program - `("PATH" ":" prefix (,(string-append python "/bin") - ,(string-append duplicity "/bin")))) - (wrap-program program - `("PYTHONPATH" ":" prefix (,python-path)))) - - (find-files (string-append out "/bin"))) - #t)))))) + (add-after 'unpack 'patch-paths + (lambda* (#:key inputs #:allow-other-keys) + (let ((python (assoc-ref inputs "python"))) + (substitute* '("libdeja/tools/duplicity/DuplicityInstance.vala" + "libdeja/tests/scripts/instance-error.test") + (("/bin/rm") + (which "rm"))) + (substitute* "libdeja/tests/runner.vala" + (("/bin/sh") + (which "sh"))) + (substitute* "libdeja/tests/scripts/instance-error.test" + (("`which python3`") + (string-append python "/bin/python3")))))) + (add-after 'unpack 'patch-libgpg-error + (lambda* (#:key inputs #:allow-other-keys) + (let ((libgpg-error (assoc-ref inputs "libgpg-error"))) + (substitute* "meson.build" + (("(gpgerror_libs = ).*" _ var) + (format #f "~a '-L~a/lib -lgpg-error'\n" var libgpg-error)))) + #t)) + (add-after 'unpack 'skip-gtk-update-icon-cache + ;; Don't create 'icon-theme.cache'. + (lambda _ + (substitute* "data/post-install.sh" + (("gtk-update-icon-cache") "true")) + #t))))) (inputs `(("gsettings-desktop-schemas" ,gsettings-desktop-schemas) - ("gobject-introspection" ,gobject-introspection) ("duplicity" ,duplicity) - ("python" ,python-2) - ("python-pygobject" ,python2-pygobject) + ("python" ,python) + ("python-pygobject" ,python-pygobject) ("gtk+" ,gtk+) + ("json-glib" ,json-glib) ("libnotify" ,libnotify) - ("libpeas" ,libpeas) + ("libgpg-error" ,libgpg-error) ("libsecret" ,libsecret) + ("libsoup" ,libsoup) ("packagekit" ,packagekit))) (native-inputs - `(("pkg-config" ,pkg-config) - ("vala" ,vala) + `(("appstream-glib" ,appstream-glib) + ("desktop-file-utils" ,desktop-file-utils) ("gettext" ,gettext-minimal) + ("glib" ,glib "bin") ; for glib-compile-schemas. + ("gobject-introspection" ,gobject-introspection) ("itstool" ,itstool) - ("intltool" ,intltool) - ("cmake" ,cmake-minimal))) - (home-page "https://launchpad.net/deja-dup") + ("pkg-config" ,pkg-config) + ("vala" ,vala))) + (home-page "https://wiki.gnome.org/Apps/DejaDup") (synopsis "Simple backup tool, for regular encrypted backups") (description "Déjà Dup is a simple backup tool, for regular encrypted backups. It diff --git a/gnu/packages/patches/deja-dup-use-ref-keyword-for-iter.patch b/gnu/packages/patches/deja-dup-use-ref-keyword-for-iter.patch deleted file mode 100644 index a03e0c54814..00000000000 --- a/gnu/packages/patches/deja-dup-use-ref-keyword-for-iter.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 5676766be5e845ccb6cdf46cfa8722497f151752 Mon Sep 17 00:00:00 2001 -From: Jeremy Bicha -Date: Fri, 16 Jun 2017 15:11:37 -0400 -Subject: Use 'ref' keyword for iter, requires vala 0.36 - - -diff --git a/deja-dup/widgets/ConfigList.vala b/deja-dup/widgets/ConfigList.vala -index 15de2d6..02cd81a 100644 ---- a/deja-dup/widgets/ConfigList.vala -+++ b/deja-dup/widgets/ConfigList.vala -@@ -333,7 +333,7 @@ public class ConfigList : ConfigWidget - - model.row_deleted.disconnect(write_to_config); - foreach (Gtk.TreeIter iter in iters) { -- (model as Gtk.ListStore).remove(iter); -+ (model as Gtk.ListStore).remove(ref iter); - } - model.row_deleted.connect(write_to_config); - -diff --git a/deja-dup/widgets/ConfigLocation.vala b/deja-dup/widgets/ConfigLocation.vala -index 869e2a8..d21c556 100644 ---- a/deja-dup/widgets/ConfigLocation.vala -+++ b/deja-dup/widgets/ConfigLocation.vala -@@ -397,12 +397,12 @@ public class ConfigLocation : ConfigWidget - if (uuid == saved_uuid) - return; - -- store.remove(iter); -+ store.remove(ref iter); - - if (--num_volumes == 0) { - Gtk.TreeIter sep_iter; - if (store.get_iter_from_string(out sep_iter, index_vol_sep.to_string())) { -- store.remove(sep_iter); -+ store.remove(ref sep_iter); - index_vol_sep = -2; - } - } --- -cgit v0.10.2 - From 79d7b5277f803d474f8934b1680ce598c9c27e2d Mon Sep 17 00:00:00 2001 From: Brice Waegeneire Date: Thu, 21 May 2020 15:54:02 +0200 Subject: [PATCH 078/103] gnu: dconf: Appease 'guix lint'. * gnu/packages/gnome.scm (dconf)[homepage]: Avoid permanent redirect. --- gnu/packages/gnome.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index db4678e3cec..49fb2c8f0cf 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -3436,7 +3436,7 @@ and RDP protocols.") ; or /etc/machine-id. #:glib-or-gtk? #t #:configure-flags '("-Denable-gtk-doc=true"))) - (home-page "https://developer.gnome.org/dconf") + (home-page "https://developer.gnome.org/dconf/") (synopsis "Low-level GNOME configuration system") (description "Dconf is a low-level configuration system. Its main purpose is to provide a backend to GSettings on platforms that don't already have From e24d311f9c4787333b136b8bad504ae74f679259 Mon Sep 17 00:00:00 2001 From: Brice Waegeneire Date: Sat, 23 May 2020 21:47:53 +0200 Subject: [PATCH 079/103] gnu: gnome-shell: Use libnma. * gnu/packages/gnome.scm (gnome-shell)[inputs]: Add 'libnma'. --- gnu/packages/gnome.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 49fb2c8f0cf..a568d54044f 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -7297,6 +7297,7 @@ properties, screen resolution, and other GNOME parameters.") ("libcroco" ,libcroco) ("libgnomekbd" ,libgnomekbd) ;for gkbd-keyboard-display ("libgweather" ,libgweather) + ("libnma" ,libnma) ("libsoup" ,libsoup) ("mesa-headers" ,mesa-headers) ("mutter" ,mutter) From 21d3b765d9f22cdc2d027531411af27216592ef4 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Sat, 23 May 2020 22:54:46 +0100 Subject: [PATCH 080/103] gnu: local.mk: Remove absent patch. This follows on from 899ffa1381afbf5f955aeba4839e920b3d910953. * gnu/local.mk (dist_patch_DATA): Remove packages/patches/deja-dup-use-ref-keyword-for-iter.patch. --- gnu/local.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/gnu/local.mk b/gnu/local.mk index 23d775284a7..42707823eb5 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -860,7 +860,6 @@ dist_patch_DATA = \ %D%/packages/patches/dconf-meson-0.52.patch \ %D%/packages/patches/debops-constants-for-external-program-names.patch \ %D%/packages/patches/debops-debops-defaults-fall-back-to-less.patch \ - %D%/packages/patches/deja-dup-use-ref-keyword-for-iter.patch \ %D%/packages/patches/desmume-gcc6-fixes.patch \ %D%/packages/patches/desmume-gcc7-fixes.patch \ %D%/packages/patches/dfu-programmer-fix-libusb.patch \ From b1affd477882b8df39a2cdcc3c419be9322bf778 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Sun, 24 May 2020 00:01:15 +0200 Subject: [PATCH 081/103] gnu: redshift-wayland: Install redshift.desktop. * gnu/packages/xdisorg.scm (redshift-wayland)[arguments]: New field. --- gnu/packages/xdisorg.scm | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index 1714cb8caf5..acc74e328a4 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -1238,6 +1238,24 @@ color temperature should be set to match the lamps in your room.") (base32 "0nbkcw3avmzjg1jr1g9yfpm80kzisy55idl09b6wvzv2sz27n957")))) (build-system gnu-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (add-after 'install 'create-desktop-file + (lambda* (#:key outputs #:allow-other-keys) + ;; For the GeoClue provider to work, a .desktop file + ;; needs to be provided. A template is available, + ;; but it only gets installed when the GUI is enabled. + ;; Install it manually for this Wayland variant. + (let* ((out (assoc-ref outputs "out")) + (desktop-file + (string-append + out "/share/applications/redshift.desktop"))) + (mkdir-p (dirname desktop-file)) + (copy-file "data/applications/redshift.desktop.in" + desktop-file) + (substitute* desktop-file + (("^_") "")) + #t)))))) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) From dfc426582f7e5a34a89015663cadbad3829f55e5 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 24 May 2020 10:18:01 +0300 Subject: [PATCH 082/103] gnu: nano: Update to 4.9.3. * gnu/packages/nano.scm (nano): Update to 4.9.3. --- gnu/packages/nano.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/nano.scm b/gnu/packages/nano.scm index 099a9539895..8ea84ab724d 100644 --- a/gnu/packages/nano.scm +++ b/gnu/packages/nano.scm @@ -30,13 +30,13 @@ (define-public nano (package (name "nano") - (version "4.9.2") + (version "4.9.3") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/nano/nano-" version ".tar.xz")) (sha256 - (base32 "1xifbn1xaklrrf7knxvqif0hy0wgnas7w0wfggay5kifjkm5x8nq")))) + (base32 "1d2i3wvsq5lvpxxinq51dcvd58xx7j0d0c2csz9hgvd06gq3hd3f")))) (build-system gnu-build-system) (inputs `(("gettext" ,gettext-minimal) From 4492981706e0f2041053fdc728e29232855d8689 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Sun, 24 May 2020 16:09:36 +0200 Subject: [PATCH 083/103] gnu: pidgin: Fix build with Meson network-manager. This is a follow-up commit to 255ff74f3ab514a76068f6cfccc7f8dbcf8b7f3f: building network-manager with Meson breaks users of NetworkManager.pc. * gnu/packages/messaging.scm (pidgin)[source]: Add pidgin-libnm.patch. Force re-bootstrapping in a new snippet. [native-inputs]: Add autoconf, automake, and libtool. * gnu/packages/patches/pidgin-libnm.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. --- gnu/local.mk | 1 + gnu/packages/messaging.scm | 18 +++++++- gnu/packages/patches/pidgin-libnm.patch | 60 +++++++++++++++++++++++++ 3 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 gnu/packages/patches/pidgin-libnm.patch diff --git a/gnu/local.mk b/gnu/local.mk index 42707823eb5..bbe06d2b208 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1363,6 +1363,7 @@ dist_patch_DATA = \ %D%/packages/patches/perl-www-curl-remove-symbol.patch \ %D%/packages/patches/picprog-non-intel-support.patch \ %D%/packages/patches/pidgin-add-search-path.patch \ + %D%/packages/patches/pidgin-libnm.patch \ %D%/packages/patches/pinball-const-fix.patch \ %D%/packages/patches/pinball-cstddef.patch \ %D%/packages/patches/pinball-missing-separators.patch \ diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index 57ff0835d18..ce542ad4f42 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -440,7 +440,16 @@ authentication.") version "/pidgin-" version ".tar.bz2")) (sha256 (base32 "13vdqj70315p9rzgnbxjp9c51mdzf1l4jg1kvnylc4bidw61air7")) - (patches (search-patches "pidgin-add-search-path.patch")))) + (patches (search-patches "pidgin-add-search-path.patch" + ;; Remove the snippet and bootstrapping + ;; native-inputs together with this patch. + "pidgin-libnm.patch")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Remove stale generated file after applying pidgin-libnm.patch. + (delete-file "configure") + #t)))) (build-system glib-or-gtk-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -448,7 +457,12 @@ authentication.") ("intltool" ,intltool) ("gconf" ,gconf) ("python" ,python-2) - ("doxygen" ,doxygen))) + ("doxygen" ,doxygen) + + ;; For bootstrapping after applying pidgin-libnm.patch. + ("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool))) (inputs `(("gtk+" ,gtk+-2) ("libgcrypt" ,libgcrypt) diff --git a/gnu/packages/patches/pidgin-libnm.patch b/gnu/packages/patches/pidgin-libnm.patch new file mode 100644 index 00000000000..d34af749af3 --- /dev/null +++ b/gnu/packages/patches/pidgin-libnm.patch @@ -0,0 +1,60 @@ +From: Tobias Geerinckx-Rice +Date: Sun, 24 May 2020 16:11:01 +0200 +Subject: [PATCH] gnu: pidgin: Find libnm. + +Copied verbatim from[0]. + +[0]: https://git.archlinux.org/svntogit/packages.git/plain/trunk/pidgin-nm-1.0.patch?h=packages/pidgin + +diff --git a/configure.ac b/configure.ac +index 04836fa..0a2d451 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1423,18 +1423,24 @@ fi + dnl Check for NetworkManager.h; if we don't have it, oh well + if test "x$enable_dbus" = "xyes" ; then + if test "x$enable_nm" = "xyes" ; then +- PKG_CHECK_MODULES(NETWORKMANAGER, [NetworkManager >= 0.5.0], [ ++ PKG_CHECK_MODULES(NETWORKMANAGER, [libnm], [ + AC_SUBST(NETWORKMANAGER_CFLAGS) + AC_SUBST(NETWORKMANAGER_LIBS) + AC_DEFINE(HAVE_NETWORKMANAGER, 1, [Define if we have NetworkManager.]) + ], [ +- enable_nm=no +- if test "x$force_deps" = "xyes" ; then +- AC_MSG_ERROR([ ++ PKG_CHECK_MODULES(NETWORKMANAGER, [NetworkManager >= 0.5.0], [ ++ AC_SUBST(NETWORKMANAGER_CFLAGS) ++ AC_SUBST(NETWORKMANAGER_LIBS) ++ AC_DEFINE(HAVE_NETWORKMANAGER, 1, [Define if we have NetworkManager.]) ++ ], [ ++ enable_nm=no ++ if test "x$force_deps" = "xyes" ; then ++ AC_MSG_ERROR([ + NetworkManager development headers not found. + Use --disable-nm if you do not need NetworkManager support. + ]) +- fi]) ++ fi]) ++ ]) + fi + else + enable_nm=no +diff --git a/libpurple/network.c b/libpurple/network.c +index c43e3c7..b17e439 100644 +--- a/libpurple/network.c ++++ b/libpurple/network.c +@@ -939,8 +939,13 @@ nm_update_state(NMState state) + #if NM_CHECK_VERSION(0,8,992) + case NM_STATE_DISCONNECTING: + #endif ++#if NM_CHECK_VERSION(1,0,0) ++ if (prev != NM_STATE_CONNECTED_GLOBAL && prev != NM_STATE_UNKNOWN) ++ break; ++#else + if (prev != NM_STATE_CONNECTED && prev != NM_STATE_UNKNOWN) + break; ++#endif + if (ui_ops != NULL && ui_ops->network_disconnected != NULL) + ui_ops->network_disconnected(); + break; From 1576acbe09d2adc7e3ca46ade0df8009a26b489a Mon Sep 17 00:00:00 2001 From: Royce Strange Date: Sun, 24 May 2020 03:57:19 -0500 Subject: [PATCH 084/103] build: Add missing twinkle patch to gnu/local.mk. This follows up on e5463baf2ce21cd2abc7ac5576401ae7ee7eb28c. * gnu/local.mk (dist_patch_DATA): Add twinkle-bcg729.patch. Signed-off-by: Tobias Geerinckx-Rice --- gnu/local.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/gnu/local.mk b/gnu/local.mk index bbe06d2b208..f4326d4db81 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1540,6 +1540,7 @@ dist_patch_DATA = \ %D%/packages/patches/ttfautohint-source-date-epoch.patch \ %D%/packages/patches/tomb-fix-errors-on-open.patch \ %D%/packages/patches/tuxpaint-stamps-path.patch \ + %D%/packages/patches/twinkle-bcg729.patch \ %D%/packages/patches/u-boot-riscv64-fix-extlinux.patch \ %D%/packages/patches/u-boot-DT-for-Pinebook-Pro.patch \ %D%/packages/patches/u-boot-add-boe-nv140fhmn49-display.patch \ From bdc7f72fe4391ede313a0388ddd17cbb053931c9 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Sun, 24 May 2020 20:48:14 +0100 Subject: [PATCH 085/103] gnu: go-github-com-kr-pretty: Fix source sha256. This follows on from 618df2e335acb49a27ca014b555ede34f79503f3, which left the hash suspiciously similar to the previous value. * gnu/packages/golang.scm (go-github-com-kr-pretty): Change the sha256 hash. --- gnu/packages/golang.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index c6f47aa1445..3ae59ad2b78 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -2810,7 +2810,7 @@ format in Go.") (file-name (git-file-name name version)) (sha256 (base32 - "1pm4pwg2abd0j9cn5v3k2ksk9ig4vlwxmlw9rrglanziv9l967qp")))) + "1ywbfzz1h3a3qd8rpkiqwi1dm4w8ls9ijb4x1b7567grns9f0vnp")))) (build-system go-build-system) (propagated-inputs `(("go-github-com-kr-text" ,go-github-com-kr-text))) From 1157bee478294af2e2568f4a01a0411eb8fa6fc4 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 3 May 2020 09:23:44 +0300 Subject: [PATCH 086/103] gnu: efl: Update to 1.24.1. * gnu/packages/enlightenment.scm (efl): Update to 1.24.1. [propagated-inputs]: Remove bullet. Add libpng. Move libtiff, libwebp, util-linux:lib ... [inputs]: ... to here. Add openjpeg. Remove libxp. [arguments]: In configure-flags disable scim, enable avahi, glib. Use setuid mount/umount binaries. Rename hardcode-libcurl-location to hardcode-dynamic-libraries and add pulseaudio, libsndfile. squash! efl-1.24.1 --- gnu/packages/enlightenment.scm | 47 ++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm index 32d8ea9c0d4..42fd8fffd1d 100644 --- a/gnu/packages/enlightenment.scm +++ b/gnu/packages/enlightenment.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Tomáš Čech ;;; Copyright © 2015 Daniel Pimentel -;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner +;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner ;;; Copyright © 2017 Nikita ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2018 Timo Eisenmann @@ -69,7 +69,7 @@ (define-public efl (package (name "efl") - (version "1.23.3") + (version "1.24.1") (source (origin (method url-fetch) (uri (string-append @@ -77,7 +77,7 @@ version ".tar.xz")) (sha256 (base32 - "00b9lp3h65254kdb1ys15fv7p3ln7qsvf15jkw4kli5ymagadkjk")))) + "1xsbz5kl74cgzyzwmjy3p50m0iigvi53lklkp92v49k4j99zpak7")))) (build-system meson-build-system) (native-inputs `(("check" ,check) @@ -93,6 +93,7 @@ ("libraw" ,libraw) ("librsvg" ,librsvg) ("libspectre" ,libspectre) + ("libtiff" ,libtiff) ("libxau" ,libxau) ("libxcomposite" ,libxcomposite) ("libxcursor" ,libxcursor) @@ -102,18 +103,19 @@ ("libxi" ,libxi) ("libxfixes" ,libxfixes) ("libxinerama" ,libxinerama) - ("libxp" ,libxp) ("libxrandr" ,libxrandr) ("libxrender" ,libxrender) ("libxss" ,libxscrnsaver) ("libxtst" ,libxtst) + ("libwebp" ,libwebp) + ("openjpeg" ,openjpeg) ("poppler" ,poppler) + ("util-linux" ,util-linux "lib") ("wayland-protocols" ,wayland-protocols))) (propagated-inputs ;; All these inputs are in package config files in section ;; Requires.private. `(("avahi" ,avahi) - ("bullet" ,bullet) ("dbus" ,dbus) ("elogind" ,elogind) ("eudev" ,eudev) @@ -122,30 +124,32 @@ ("fribidi" ,fribidi) ("glib" ,glib) ("harfbuzz" ,harfbuzz) - ("luajit" ,luajit) ("libinput" ,libinput-minimal) ("libjpeg" ,libjpeg-turbo) - ("libpng" ,libpng) ("libsndfile" ,libsndfile) - ("libtiff" ,libtiff) - ("libwebp" ,libwebp) + ("libpng" ,libpng) ("libx11" ,libx11) ("libxkbcommon" ,libxkbcommon) + ("luajit" ,luajit) ("lz4" ,lz4) ("openssl" ,openssl) ("pulseaudio" ,pulseaudio) - ("util-linux" ,util-linux "lib") ("wayland" ,wayland) ("zlib" ,zlib))) (arguments `(#:configure-flags '("-Dsystemd=false" + "-Delogind=true" "-Dembedded-lz4=false" "-Devas-loaders-disabler=json" "-Dbuild-examples=false" + "-Decore-imf-loaders-disabler=scim" + "-Davahi=true" + "-Dglib=true" + "-Dmount-path=/run/setuid-programs/mount" + "-Dunmount-path=/run/setuid-programs/umount" ;(string-append "-Ddictionaries-hyphen-dir=" ; (assoc-ref %build-inputs "hyphen") ; "/share/hyphen") - "-Delogind=true" "-Dnetwork-backend=connman" ,@(match (%current-system) ("armhf-linux" @@ -153,22 +157,27 @@ (_ '("-Dopengl=full"))) ;; for wayland - "-Dwl-deprecated=true" ; ecore_wayland - "-Ddrm-deprecated=true" ; ecore_drm "-Dwl=true" "-Ddrm=true") #:tests? #f ; Many tests fail due to timeouts and network requests. #:phases (modify-phases %standard-phases - ;; If we don't hardcode the location of libcurl.so then we - ;; have to wrap the outputs of efl's dependencies in curl. - (add-after 'unpack 'hardcode-libcurl-location + ;; If we don't hardcode the location of libcurl.so and others then we + ;; have to wrap the outputs of efl's dependencies in those libraries. + (add-after 'unpack 'hardcode-dynamic-libraries (lambda* (#:key inputs #:allow-other-keys) - (let* ((curl (assoc-ref inputs "curl")) - (lib (string-append curl "/lib/"))) + (let ((curl (assoc-ref inputs "curl")) + (pulse (assoc-ref inputs "pulseaudio")) + (sndfile (assoc-ref inputs "libsndfile")) + (lib "/lib/")) (substitute* "src/lib/ecore_con/ecore_con_url_curl.c" (("libcurl.so.?" libcurl) ; libcurl.so.[45] - (string-append lib libcurl))) + (string-append curl lib libcurl))) + (substitute* "src/lib/ecore_audio/ecore_audio.c" + (("libpulse.so.0" libpulse) + (string-append pulse lib libpulse)) + (("libsndfile.so.1" libsnd) + (string-append sndfile lib libsnd))) #t))) (add-after 'unpack 'fix-install-paths (lambda _ From 75c5b027ae35f2382ae95023a1f70eb3c5a746cc Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 3 May 2020 09:26:15 +0300 Subject: [PATCH 087/103] gnu: python-efl: Update to 1.24.0. * gnu/packages/enlightenment.scm (python-efl): Update to 1.24.0. --- gnu/packages/enlightenment.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm index 42fd8fffd1d..38e5dbf1cba 100644 --- a/gnu/packages/enlightenment.scm +++ b/gnu/packages/enlightenment.scm @@ -398,7 +398,7 @@ embedded systems.") (define-public python-efl (package (name "python-efl") - (version "1.23.0") + (version "1.24.0") (source (origin (method url-fetch) @@ -406,7 +406,7 @@ embedded systems.") "python/python-efl-" version ".tar.xz")) (sha256 (base32 - "16yn6a1b9167nfmryyi44ma40m20ansfpwgrvqzfvwix7qaz9pib")) + "1vk1cdd959gia4a9qzyq56a9zw3lqf9ck66k8c9g3c631mp5cfpy")) (modules '((guix build utils))) ;; Remove files generated by Cython (snippet From 2ae11cd0a43bfd8c0106afc620c2e5be1cecef78 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Mon, 11 May 2020 10:12:32 +0300 Subject: [PATCH 088/103] gnu: enlightenment: Update to 0.24.0. * gnu/packages/enlightenment.scm (enlightenment): Update to 0.24.0. [arguments]: Change configure-flags to hardcode efl binary locations. Remove custom 'fix-dot-desktop-creation phase. Update 'set-system-actions phase. * gnu/packages/patches/enlightenment-fix-setuid-path.patch: Update for new upstream version. * gnu/services/desktop.scm (enlightenment-setuid-programs): Same. --- gnu/packages/enlightenment.scm | 39 ++- .../enlightenment-fix-setuid-path.patch | 225 ++++-------------- gnu/services/desktop.scm | 29 +-- 3 files changed, 69 insertions(+), 224 deletions(-) diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm index 38e5dbf1cba..08a52f9d92d 100644 --- a/gnu/packages/enlightenment.scm +++ b/gnu/packages/enlightenment.scm @@ -292,7 +292,7 @@ Libraries with some extra bells and whistles.") (define-public enlightenment (package (name "enlightenment") - (version "0.23.1") + (version "0.24.0") (source (origin (method url-fetch) (uri @@ -300,27 +300,27 @@ Libraries with some extra bells and whistles.") "enlightenment/enlightenment-" version ".tar.xz")) (sha256 (base32 - "0d1cyl07w9pvi2pf029kablazks2q9aislzl46b6fq5m1465jc75")) + "01053hxdmyjfb6gmz1pqmw0llrgc4356np515h5vsqcn59mhvfz7")) (patches (search-patches "enlightenment-fix-setuid-path.patch")))) (build-system meson-build-system) (arguments - `(#:configure-flags '("-Dsystemd=false") + `(#:configure-flags + (let ((efl (assoc-ref %build-inputs "efl"))) + (list "-Dsystemd=false" + "-Dpackagekit=false" + (string-append "-Dedje-cc=" efl "/bin/edje_cc") + (string-append "-Deldbus-codegen=" efl "/bin/eldbus-codegen") + (string-append "-Deet=" efl "/bin/eet"))) #:phases (modify-phases %standard-phases (delete 'bootstrap) ; We don't want to run the autogen script. - (add-after 'unpack 'fix-dot-desktop-creation - (lambda _ - (substitute* "data/session/meson.build" - (("HAVE_WAYLAND'.*") "HAVE_WAYLAND') == true\n")) - #t)) (add-before 'configure 'set-system-actions (lambda* (#:key inputs #:allow-other-keys) - (setenv "HOME" "/tmp") + (setenv "HOME" "/tmp") (let ((xkeyboard (assoc-ref inputs "xkeyboard-config")) (setxkbmap (assoc-ref inputs "setxkbmap")) (utils (assoc-ref inputs "util-linux")) (libc (assoc-ref inputs "libc")) - (bluez (assoc-ref inputs "bluez")) (bc (assoc-ref inputs "bc")) (efl (assoc-ref inputs "efl"))) ;; We need to patch the path to 'base.lst' to be able @@ -337,23 +337,22 @@ Libraries with some extra bells and whistles.") "src/modules/conf_intl/e_int_config_intl.c" "src/modules/wizard/page_010.c") (("locale -a") (string-append libc "/bin/locale -a"))) - (substitute* "src/bin/e_import_config_dialog.c" - (("%s/edje_cc -v %s %s %s\", e_prefix_bin_get\\(\\)") - (string-append efl "/bin/edje_cc -v %s %s %s\""))) (substitute* "src/modules/everything/evry_plug_apps.c" (("/usr/bin/") "")) + (substitute* '("src/bin/e_sys_main.c" + "src/bin/e_util_suid.h") + (("PATH=/bin:/usr/bin:/sbin:/usr/sbin") + (string-append "PATH=/run/setuid-programs:" + "/run/current-system/profile/bin:" + "/run/current-system/profile/sbin"))) (substitute* "src/modules/everything/evry_plug_calc.c" (("bc -l") (string-append bc "/bin/bc -l"))) (substitute* "data/etc/meson.build" (("/bin/mount") "/run/setuid-programs/mount") (("/bin/umount") "/run/setuid-programs/umount") - (("/usr/bin/eject") (string-append utils "/bin/eject")) - (("/usr/bin/l2ping") (string-append bluez "/bin/l2ling")) - (("/bin/rfkill") (string-append utils "/sbin/rfkill")) - (("SUSPEND = ''") "SUSPEND = '/run/current-system/profile/bin/loginctl suspend'") - (("HIBERNATE = ''") "HIBERNATE = '/run/current-system/profile/bin/loginctl hibernate'") - (("/sbin/shutdown -h now") "/run/current-system/profile/bin/loginctl poweroff now") - (("/sbin/shutdown -r now") "/run/current-system/profile/bin/loginctl reboot now")) + (("/usr/bin/eject") (string-append utils "/bin/eject"))) + (substitute* "src/bin/system/e_system_power.c" + (("systemctl") "loginctl")) #t)))))) (native-inputs `(("gettext" ,gettext-minimal) diff --git a/gnu/packages/patches/enlightenment-fix-setuid-path.patch b/gnu/packages/patches/enlightenment-fix-setuid-path.patch index c48f18c8ec3..f2930845ba1 100644 --- a/gnu/packages/patches/enlightenment-fix-setuid-path.patch +++ b/gnu/packages/patches/enlightenment-fix-setuid-path.patch @@ -1,34 +1,31 @@ diff --git a/src/bin/e_auth.c b/src/bin/e_auth.c -index 00b0e5d84..98ab4518f 100644 +index 8b0aa6641..f15d2c2a2 100644 --- a/src/bin/e_auth.c +++ b/src/bin/e_auth.c -@@ -9,8 +9,7 @@ e_auth_begin(char *passwd) +@@ -11,9 +11,7 @@ e_auth_begin(char *passwd) + pwlen = strlen(passwd); + if (pwlen == 0) goto out; - if (strlen(passwd) == 0) goto out; - -- snprintf(buf, sizeof(buf), "%s/enlightenment/utils/enlightenment_ckpasswd", +- snprintf(buf, sizeof(buf), +- "%s/enlightenment/utils/enlightenment_ckpasswd pw", - e_prefix_lib_get()); + snprintf(buf, sizeof(buf), "/run/setuid-programs/enlightenment_ckpasswd"); - exe = ecore_exe_pipe_run(buf, ECORE_EXE_PIPE_WRITE, NULL); - if (ecore_exe_send(exe, passwd, strlen(passwd)) != EINA_TRUE) goto out; -diff --git a/src/bin/e_backlight.c b/src/bin/e_backlight.c -index 2bced6766..208e583ba 100644 ---- a/src/bin/e_backlight.c -+++ b/src/bin/e_backlight.c -@@ -521,8 +521,8 @@ _bl_sys_level_set(double val) - } - // fprintf(stderr, "SET: %1.3f\n", val); - snprintf(buf, sizeof(buf), -- "%s/enlightenment/utils/enlightenment_backlight %i %s", -- e_prefix_lib_get(), (int)(val * 1000.0), bl_sysval); -+ "/run/setuid-programs/enlightenment_backlight %i %s", -+ (int)(val * 1000.0), bl_sysval); - bl_sys_set_exe = ecore_exe_run(buf, NULL); - } - #endif // HAVE_EEZE || __FreeBSD_kernel__ + if (!exe) goto out; + if (ecore_exe_send(exe, passwd, pwlen) != EINA_TRUE) goto out; +@@ -46,9 +44,7 @@ e_auth_polkit_begin(char *passwd, const char *cookie, unsigned int uid) + pwlen = strlen(passwd); + if (pwlen == 0) goto out; + +- snprintf(buf, sizeof(buf), +- "%s/enlightenment/utils/enlightenment_ckpasswd pk", +- e_prefix_lib_get()); ++ snprintf(buf, sizeof(buf), "/run/setuid-programs/enlightenment_ckpasswd"); + exe = ecore_exe_pipe_run(buf, ECORE_EXE_PIPE_WRITE, NULL); + if (!exe) goto out; + snprintf(buf, sizeof(buf), "%s %u %s", cookie, uid, passwd); diff --git a/src/bin/e_fm/e_fm_main_eeze.c b/src/bin/e_fm/e_fm_main_eeze.c -index 0fcffa249..c1921121d 100644 +index 9b10b3117..74e6b72ad 100644 --- a/src/bin/e_fm/e_fm_main_eeze.c +++ b/src/bin/e_fm/e_fm_main_eeze.c @@ -318,7 +318,7 @@ _e_fm_main_eeze_volume_eject(E_Volume *v) @@ -58,163 +55,29 @@ index 0fcffa249..c1921121d 100644 eeze_disk_mount_wrapper_set(v->disk, buf2); } v->guard = ecore_timer_loop_add(E_FM_MOUNT_TIMEOUT, (Ecore_Task_Cb)_e_fm_main_eeze_vol_mount_timeout, v); -diff --git a/src/bin/e_sys.c b/src/bin/e_sys.c -index 671fbcd9a..90ee04cf1 100644 ---- a/src/bin/e_sys.c -+++ b/src/bin/e_sys.c -@@ -702,20 +702,16 @@ _e_sys_cb_timer(void *data EINA_UNUSED) +diff --git a/src/bin/e_start_main.c b/src/bin/e_start_main.c +index b2c439455..cb16c7bd4 100644 +--- a/src/bin/e_start_main.c ++++ b/src/bin/e_start_main.c +@@ -710,7 +710,7 @@ main(int argc, char **argv) + "E_ALERT_FONT_DIR=%s/data/fonts", eina_prefix_data_get(pfx)); + putenv(buf2); + snprintf(buf3, sizeof(buf3), +- "E_ALERT_SYSTEM_BIN=%s/enlightenment/utils/enlightenment_system", eina_prefix_lib_get(pfx)); ++ "E_ALERT_SYSTEM_BIN=/run/setuid-programs/enlightenment_system"); + putenv(buf3); - e_init_status_set(_("Checking System Permissions")); + if ((valgrind_mode || valgrind_tool) && +diff --git a/src/bin/e_system.c b/src/bin/e_system.c +index 1e7aabb64..dc0173219 100644 +--- a/src/bin/e_system.c ++++ b/src/bin/e_system.c +@@ -132,7 +132,7 @@ _system_spawn(void) + else _respawn_count = 0; + if (_respawn_count > 5) return; snprintf(buf, sizeof(buf), -- "%s/enlightenment/utils/enlightenment_sys -t halt", -- e_prefix_lib_get()); -+ "/run/setuid-programs/enlightenment_sys -t halt"); - _e_sys_halt_check_exe = ecore_exe_run(buf, NULL); - snprintf(buf, sizeof(buf), -- "%s/enlightenment/utils/enlightenment_sys -t reboot", -- e_prefix_lib_get()); -+ "/run/setuid-programs/enlightenment_sys -t reboot"); - _e_sys_reboot_check_exe = ecore_exe_run(buf, NULL); - snprintf(buf, sizeof(buf), -- "%s/enlightenment/utils/enlightenment_sys -t suspend", -- e_prefix_lib_get()); -+ "/run/setuid-programs/enlightenment_sys -t suspend"); - _e_sys_suspend_check_exe = ecore_exe_run(buf, NULL); - snprintf(buf, sizeof(buf), -- "%s/enlightenment/utils/enlightenment_sys -t hibernate", -- e_prefix_lib_get()); -+ "/run/setuid-programs/enlightenment_sys -t hibernate"); - _e_sys_hibernate_check_exe = ecore_exe_run(buf, NULL); - return ECORE_CALLBACK_CANCEL; - } -@@ -1134,8 +1130,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw) - if (e_util_immortal_check()) return 0; - e_fm2_die(); - snprintf(buf, sizeof(buf), -- "%s/enlightenment/utils/enlightenment_sys halt", -- e_prefix_lib_get()); -+ "/run/setuid-programs/enlightenment_sys halt"); - if (_e_sys_exe) - { - if ((ecore_time_get() - _e_sys_begin_time) > 2.0) -@@ -1170,8 +1165,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw) - if (e_util_immortal_check()) return 0; - e_fm2_die(); - snprintf(buf, sizeof(buf), -- "%s/enlightenment/utils/enlightenment_sys reboot", -- e_prefix_lib_get()); -+ "/run/setuid-programs/enlightenment_sys reboot"); - if (_e_sys_exe) - { - if ((ecore_time_get() - _e_sys_begin_time) > 2.0) -@@ -1204,8 +1198,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw) - case E_SYS_SUSPEND: - /* /etc/acpi/sleep.sh force */ - snprintf(buf, sizeof(buf), -- "%s/enlightenment/utils/enlightenment_sys suspend", -- e_prefix_lib_get()); -+ "/run/setuid-programs/enlightenment_sys suspend"); - if (_e_sys_exe) - { - if ((ecore_time_get() - _e_sys_begin_time) > 2.0) -@@ -1265,8 +1258,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw) - case E_SYS_HIBERNATE: - /* /etc/acpi/hibernate.sh force */ - snprintf(buf, sizeof(buf), -- "%s/enlightenment/utils/enlightenment_sys hibernate", -- e_prefix_lib_get()); -+ "/run/setuid-programs/enlightenment_sys hibernate"); - if (_e_sys_exe) - { - if ((ecore_time_get() - _e_sys_begin_time) > 2.0) -diff --git a/src/modules/bluez4/e_mod_main.c b/src/modules/bluez4/e_mod_main.c -index 4b5148634..47d34b07f 100644 ---- a/src/modules/bluez4/e_mod_main.c -+++ b/src/modules/bluez4/e_mod_main.c -@@ -49,8 +49,8 @@ _ebluez_l2ping_poller(void *data EINA_UNUSED) - - if (tmp) - { -- eina_strbuf_append_printf(buf, "%s/enlightenment/utils/enlightenment_sys l2ping %s", -- e_prefix_lib_get(), tmp); -+ eina_strbuf_append_printf(buf, "/run/setuid-programs/enlightenment_sys l2ping %s", -+ tmp); - autolock_exe = ecore_exe_run(eina_strbuf_string_get(buf), NULL); - } - -@@ -692,8 +692,7 @@ e_modapi_init(E_Module *m) - autolock_desklock = ecore_event_handler_add(E_EVENT_DESKLOCK, _ebluez_desklock, NULL); - - buf = eina_strbuf_new(); -- eina_strbuf_append_printf(buf, "%s/enlightenment/utils/enlightenment_sys -t l2ping", -- e_prefix_lib_get()); -+ eina_strbuf_append_printf(buf, "/run/setuid-programs/enlightenment_sys -t l2ping"); - autolock_exe = ecore_exe_run(eina_strbuf_string_get(buf), NULL); - eina_strbuf_free(buf); - -diff --git a/src/modules/bluez5/e_mod_main.c b/src/modules/bluez5/e_mod_main.c -index a581c466c..095d8f360 100644 ---- a/src/modules/bluez5/e_mod_main.c -+++ b/src/modules/bluez5/e_mod_main.c -@@ -321,8 +321,8 @@ ebluez5_rfkill_unblock(const char *name) - if (buf) - { - eina_strbuf_append_printf -- (buf, "%s/enlightenment/utils/enlightenment_sys rfkill-unblock %s", -- e_prefix_lib_get(), name); -+ (buf, "/run/setuid-programs/enlightenment_sys rfkill-unblock %s", -+ name); - _rfkill_exe = ecore_exe_run(eina_strbuf_string_get(buf), NULL); - eina_strbuf_free(buf); - } -diff --git a/src/modules/cpufreq/e_mod_main.c b/src/modules/cpufreq/e_mod_main.c -index b66b365d8..bab0802cc 100644 ---- a/src/modules/cpufreq/e_mod_main.c -+++ b/src/modules/cpufreq/e_mod_main.c -@@ -1452,8 +1452,7 @@ e_modapi_init(E_Module *m) - } - E_CONFIG_LIMIT(cpufreq_config->poll_interval, 1, 1024); - -- snprintf(buf, sizeof(buf), "%s/%s/freqset", -- e_module_dir_get(m), MODULE_ARCH); -+ snprintf(buf, sizeof(buf), "/run/setuid-programs/freqset"); - cpufreq_config->set_exe_path = strdup(buf); - - if (stat(buf, &st) < 0) -diff --git a/src/modules/sysinfo/cpuclock/cpuclock.c b/src/modules/sysinfo/cpuclock/cpuclock.c -index 938916e53..00d5067d0 100644 ---- a/src/modules/sysinfo/cpuclock/cpuclock.c -+++ b/src/modules/sysinfo/cpuclock/cpuclock.c -@@ -80,8 +80,7 @@ _cpuclock_set_governor(const char *governor) - char buf[4096 + 100], exe[4096]; - struct stat st; - -- snprintf(exe, 4096, "%s/%s/cpuclock_sysfs", -- e_module_dir_get(sysinfo_config->module), MODULE_ARCH); -+ snprintf(exe, 4096, "/run/setuid-programs/cpuclock_sysfs"); - if (stat(exe, &st) < 0) return; - - snprintf(buf, sizeof(buf), -@@ -108,8 +107,7 @@ _cpuclock_set_frequency(int frequency) - if (system(buf) != 0) - ERR("Error code from trying to run \"%s\"", buf); - #else -- snprintf(exe, 4096, "%s/%s/cpuclock_sysfs", -- e_module_dir_get(sysinfo_config->module), MODULE_ARCH); -+ snprintf(exe, 4096, "/run/setuid-programs/cpuclock_sysfs"); - if (stat(exe, &st) < 0) return; - snprintf(buf, sizeof(buf), - "%s %s %i", exe, "frequency", frequency); -@@ -127,8 +125,7 @@ _cpuclock_set_pstate(int min, int max, int turbo) - char buf[4096 + 100], exe[4096]; - struct stat st; - -- snprintf(exe, 4096, "%s/%s/cpuclock_sysfs", -- e_module_dir_get(sysinfo_config->module), MODULE_ARCH); -+ snprintf(exe, 4096, "/run/setuid-programs/cpuclock_sysfs"); - if (stat(exe, &st) < 0) return; - snprintf(buf, sizeof(buf), - "%s %s %i %i %i", exe, "pstate", min, max, turbo); --- -2.23.0 - +- "%s/enlightenment/utils/enlightenment_system", e_prefix_lib_get()); ++ "/run/setuid-programs/enlightenment_system"); + _system_exe = ecore_exe_pipe_run + (buf, ECORE_EXE_NOT_LEADER | ECORE_EXE_TERM_WITH_PARENT | + ECORE_EXE_PIPE_READ | ECORE_EXE_PIPE_WRITE, NULL); diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm index 93f2ae576c6..9e457435864 100644 --- a/gnu/services/desktop.scm +++ b/gnu/services/desktop.scm @@ -1036,29 +1036,12 @@ with the administrator's password." (match-record enlightenment-desktop-configuration (enlightenment) - (let ((module-arch (match (string-tokenize (%current-system) - (char-set-complement (char-set #\-))) - ((arch "linux") (string-append "linux-gnu-" arch)) - ((arch "gnu") (string-append "gnu-" arch))))) - (list (file-append enlightenment - "/lib/enlightenment/utils/enlightenment_sys") - (file-append enlightenment - "/lib/enlightenment/utils/enlightenment_backlight") - ;; TODO: Move this binary to a screen-locker service. - (file-append enlightenment - "/lib/enlightenment/utils/enlightenment_ckpasswd") - (file-append enlightenment - (string-append - "/lib/enlightenment/modules/cpufreq/" - module-arch "-" - (package-version enlightenment) - "/freqset")) - (file-append enlightenment - (string-append - "/lib/enlightenment/modules/sysinfo/" - module-arch "-" - (package-version enlightenment) - "/cpuclock_sysfs")))))) + (list (file-append enlightenment + "/lib/enlightenment/utils/enlightenment_sys") + (file-append enlightenment + "/lib/enlightenment/utils/enlightenment_system") + (file-append enlightenment + "/lib/enlightenment/utils/enlightenment_ckpasswd")))) (define enlightenment-desktop-service-type (service-type From 0cbb5390e4722d985d758cb788139fa86f7764c9 Mon Sep 17 00:00:00 2001 From: "Jan (janneke) Nieuwenhuizen" Date: Sun, 24 May 2020 22:27:32 +0200 Subject: [PATCH 089/103] doc: Update to the new 'grub-theme' procedure. This is a follow-up commit to 9cdb10d52e34f7e8fa3b6238fe268646a4bbb877: gnu: grub: Allow a PNG image and replace "aspect-ratio" with "resolution". * doc/guix.texi (Bootloader Configuration): Describe and use the 'grub-theme' procedure instead of the removed '%default-theme' variable. --- doc/guix.texi | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 2b1f307c2d3..aa2b316c90c 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -26983,14 +26983,14 @@ The GRUB @code{gfxmode} to set (a list of screen resolution strings, see @end table @end deftp -@defvr {Scheme Variable} %default-theme -This is the default GRUB theme used by the operating system if no +@deffn {Scheme Procedure} grub-theme +Return the default GRUB theme used by the operating system if no @code{theme} field is specified in @code{bootloader-configuration} record. It comes with a fancy background image displaying the GNU and Guix logos. -@end defvr +@end deffn For example, to override the default resolution, you may use something like @@ -27000,7 +27000,7 @@ like (bootloader-configuration ;; @dots{} (theme (grub-theme - (inherit %default-theme) + (inherit (grub-theme)) (gfxmode '("1024x786x32" "auto")))))) @end lisp From cf0abc23e8c8bb444f2f466434827ef068465ad8 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Sun, 24 May 2020 22:37:03 +0200 Subject: [PATCH 090/103] gnu: emacs-auctex: Update to 12.2.2. * gnu/packages/emacs-xyz.scm (emacs-auctex): Update to 12.2.2. --- gnu/packages/emacs-xyz.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index fe68a56fd65..18c19740e9c 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -1758,14 +1758,14 @@ as a library for other Emacs packages.") (define-public emacs-auctex (package (name "emacs-auctex") - (version "12.2.0") + (version "12.2.2") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/auctex-" version ".tar")) (sha256 - (base32 "0j919l3q5sq6h1k1kmk4kyv0vkzl4f98fxcd64v34x5q1ahjhg48")))) + (base32 "1map25xn7r28aldhcz9n8pbfk2l3gvnxx8hgih3ax8hyvnfi6brh")))) (build-system emacs-build-system) ;; We use 'emacs' because AUCTeX requires dbus at compile time ;; ('emacs-minimal' does not provide dbus). From 9b572aba85696520956ea838c3fe08426b6ce88c Mon Sep 17 00:00:00 2001 From: Tim Gesthuizen via Guix-patches via Date: Sun, 24 May 2020 20:58:23 +0200 Subject: [PATCH 091/103] gnu: pwsafe: Update to 3.52.0. * gnu/packages/password-utils.scm (pwsafe): Update to 3.52.0. [arguments]: Remove obsolete work-arounds. Co-authored-by: Tobias Geerinckx-Rice --- gnu/packages/password-utils.scm | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm index 4f5ac1029f9..a59fb9dc75f 100644 --- a/gnu/packages/password-utils.scm +++ b/gnu/packages/password-utils.scm @@ -21,7 +21,7 @@ ;;; Copyright © 2018 Arun Isaac ;;; Copyright © 2018 Pierre Neidhardt ;;; Copyright © 2018 Amirouche Boubekki -;;; Copyright © 2018, 2019 Tim Gesthuizen +;;; Copyright © 2018, 2019, 2020 Tim Gesthuizen ;;; Copyright © 2019 Jens Mølgaard ;;; Copyright © 2019 Tanguy Le Carrour ;;; Copyright © 2020 Guillaume Le Vaillant @@ -196,7 +196,7 @@ algorithms AES or Twofish.") (define-public pwsafe (package (name "pwsafe") - (version "3.50.0") + (version "3.52.0") (home-page "https://www.pwsafe.org/") (source (origin @@ -205,7 +205,7 @@ algorithms AES or Twofish.") (url "https://github.com/pwsafe/pwsafe.git") (commit version))) (sha256 - (base32 "01kfssd2vr64yh4dqhch58x36n3aj3hpj5n560f41rsxym69c6qs")) + (base32 "1ka7xsl63v0559fzf3pwc1iqr37gwr4vq5iaxa2hzar2g28hsxvh")) (file-name (git-file-name name version)))) (build-system cmake-build-system) (native-inputs @@ -232,15 +232,7 @@ algorithms AES or Twofish.") (display "find_package(GTest) add_subdirectory(src/test)\n" cmake-port) (close cmake-port) - #t))) - (add-after 'add-gtest 'patch-executables - (lambda* (#:key inputs #:allow-other-keys) - (chmod "src/test/OSTest.cpp" #o644) - (substitute* "src/os/unix/media.cpp" - (("/usr/bin/file") - (string-append (assoc-ref inputs "file") - "/bin/file"))) - #t))))) + #t)))))) (synopsis "Password safe with automatic input and key generation") (description "pwsafe is a password manager originally designed by Bruce Schneier. It offers a simple UI to manage passwords for different services. From 3142191da6f31efcb921fb7189a55f93b73643c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chris=20B=C3=B8g?= Date: Sun, 24 May 2020 12:44:44 +0200 Subject: [PATCH 092/103] doc: cookbook: Add subsection about session locking with xss-lock. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * doc/guix-cookbook.texi (Session lock): New node. Signed-off-by: Ludovic Courtès --- doc/guix-cookbook.texi | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/doc/guix-cookbook.texi b/doc/guix-cookbook.texi index 2a605276e6e..8651bc44291 100644 --- a/doc/guix-cookbook.texi +++ b/doc/guix-cookbook.texi @@ -1617,6 +1617,47 @@ Then you need to add the following code to a StumpWM configuration file (set-font (make-instance 'xft:font :family "DejaVu Sans Mono" :subfamily "Book" :size 11)) @end lisp +@node Session lock +@subsection Session lock +@cindex sessionlock + +Depending on your environment, locking the screen of your session might come built in +or it might be something you have to set up yourself. If you use a desktop environment +like GNOME or KDE, it's usually built in. If you use a plain window manager like +StumpWM or EXWM, you might have to set it up yourself. + +@node Xorg +@subsubsection Xorg + +If you use Xorg, you can use the utility +@uref{https://www.mankier.com/1/xss-lock, xss-lock} to lock the screen of your session. +xss-lock is triggered by DPMS which since Xorg 1.8 is auto-detected and enabled if +ACPI is also enabled at kernel runtime. + +To use xss-lock, you can simple execute it and put it into the background before +you start your window manager from e.g. your @file{~/.xsession}: + +@example +xss-lock -- slock & +exec stumpwm +@end example + +In this example, xss-lock uses @code{slock} to do the actual locking of the screen when +it determines it's appropriate, like when you suspend your device. + +For slock to be allowed to be a screen locker for the graphical session, it needs to +be made setuid-root so it can authenticate users, and it needs a PAM service. This +can be achieved by adding the following service to your @file{config.scm}: + +@lisp +(screen-locker-service slock) +@end lisp + +If you manually lock your screen, e.g. by directly calling slock when you want to lock +your screen but not suspend it, it's a good idea to notify xss-lock about this so no +confusion occurs. This can be done by executing @code{xset s activate} immediately +before you execute slock. + @node Setting up a bind mount @section Setting up a bind mount From b7e1e556b2d0dd6685f41abcf92bb7f0b28f72e9 Mon Sep 17 00:00:00 2001 From: Jack Hill Date: Sat, 23 May 2020 18:50:38 -0400 Subject: [PATCH 093/103] gnu: guile-dsv: Wrap script. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/guile-xyz.scm (guile-dsv)[arguments]: Add "wrap program" phase. Import target-guile-effective-version from guile-build-system for use in new phase. Signed-off-by: Ludovic Courtès --- gnu/packages/guile-xyz.scm | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index a1deee32d15..b1c1fd0f627 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -25,6 +25,7 @@ ;;; Copyright © 2019 Timothy Sample ;;; Copyright © 2019, 2020 Martin Becze ;;; Copyright © 2020 Evan Straw +;;; Copyright © 2020 Jack Hill ;;; ;;; This file is part of GNU Guix. ;;; @@ -467,7 +468,12 @@ you send to a FIFO file.") (inputs `(("guile" ,guile-2.2))) (propagated-inputs `(("guile2.2-lib" ,guile2.2-lib))) (arguments - '(#:phases (modify-phases %standard-phases + `(#:modules (((guix build guile-build-system) + #:select (target-guile-effective-version)) + ,@%gnu-build-system-modules) + #:imported-modules ((guix build guile-build-system) + ,@%gnu-build-system-modules) + #:phases (modify-phases %standard-phases (add-before 'configure 'set-guilesitedir (lambda _ (substitute* "Makefile.in" @@ -482,6 +488,24 @@ $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n")) (("^guilesitedir =.*$") "guilesitedir = \ $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n")) + #t)) + (add-after 'install 'wrap-program + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (guile-lib (assoc-ref inputs "guile2.2-lib")) + (version (target-guile-effective-version)) + (scm (string-append "/share/guile/site/" + version)) + (go (string-append "/lib/guile/" + version "/site-ccache"))) + (wrap-program (string-append bin "/dsv") + `("GUILE_LOAD_PATH" prefix + (,(string-append out scm) + ,(string-append guile-lib scm))) + `("GUILE_LOAD_COMPILED_PATH" prefix + (,(string-append out go) + ,(string-append guile-lib go))))) #t))))) (home-page "https://github.com/artyom-poptsov/guile-dsv") (synopsis "DSV module for Guile") From f81ce752b3395208f911387d95177ecf52d6edbc Mon Sep 17 00:00:00 2001 From: Jack Hill Date: Sat, 23 May 2020 18:50:39 -0400 Subject: [PATCH 094/103] gnu: guile-dsv: Build with Guile 3.0. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/guile-xyz.scm (guile-dsv)[inputs]: Replace guile-2.2 with guile-3.0. [propagated-inputs]: Replace guile2.2-lib with guile-lib. [arguments]: Add "configure support guile3.0" phase. (guile2.2-dsv): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/guile-xyz.scm | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index b1c1fd0f627..8dfce091ef5 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -465,8 +465,8 @@ you send to a FIFO file.") ("automake" ,automake) ("pkg-config" ,pkg-config) ("texinfo" ,texinfo))) - (inputs `(("guile" ,guile-2.2))) - (propagated-inputs `(("guile2.2-lib" ,guile2.2-lib))) + (inputs `(("guile" ,guile-3.0))) + (propagated-inputs `(("guile-lib" ,guile-lib))) (arguments `(#:modules (((guix build guile-build-system) #:select (target-guile-effective-version)) @@ -474,6 +474,14 @@ you send to a FIFO file.") #:imported-modules ((guix build guile-build-system) ,@%gnu-build-system-modules) #:phases (modify-phases %standard-phases + ;; Support Guile 3.0 in configure from upstream commit + ;; 4c724577ccf19bb88580f72f2f6b166a0447ce3f + (add-before 'bootstrap 'configure-support-guile3.0 + (lambda _ + (substitute* "configure.ac" + (("GUILE_PKG.*") + "GUILE_PKG([3.0 2.0 2.2])")) + #t)) (add-before 'configure 'set-guilesitedir (lambda _ (substitute* "Makefile.in" @@ -493,7 +501,7 @@ $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n")) (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (bin (string-append out "/bin")) - (guile-lib (assoc-ref inputs "guile2.2-lib")) + (guile-lib (assoc-ref inputs "guile-lib")) (version (target-guile-effective-version)) (scm (string-append "/share/guile/site/" version)) @@ -515,6 +523,13 @@ delimiter-separated values (DSV) data format. Guile-DSV supports the Unix-style DSV format and RFC 4180 format.") (license license:gpl3+))) +(define-public guile2.2-dsv + (package + (inherit guile-dsv) + (name "guile2.2-dsv") + (inputs `(("guile" ,guile-2.2))) + (propagated-inputs `(("guile-lib" ,guile2.2-lib))))) + (define-public guile-fibers (package (name "guile-fibers") From c873980d187ea6f79a0e91c7d1baf5b301dc5035 Mon Sep 17 00:00:00 2001 From: Ryan Prior Date: Wed, 20 May 2020 22:28:11 -0500 Subject: [PATCH 095/103] gnu: Add protonvpn-cli. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/vpn.scm (protonvpn-cli): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/vpn.scm | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm index da881493bf6..8f7fb3b5775 100644 --- a/gnu/packages/vpn.scm +++ b/gnu/packages/vpn.scm @@ -12,6 +12,7 @@ ;;; Copyright © 2019 Rutger Helling ;;; Copyright © 2019 Ricardo Wurmus ;;; Copyright © 2020 Brice Waegeneire +;;; Copyright © 2020 Ryan Prior ;;; ;;; This file is part of GNU Guix. ;;; @@ -55,6 +56,7 @@ #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages python-xyz) + #:use-module (gnu packages python-web) #:use-module (gnu packages tls) #:use-module (gnu packages xml)) @@ -311,6 +313,40 @@ security protocol that utilizes SSL/TLS for key exchange. It is capable of traversing network address translators (@dfn{NAT}s) and firewalls.") (license license:gpl2))) +(define-public protonvpn-cli + (package + (name "protonvpn-cli") + (version "2.2.2") + (source + (origin + ;; PyPI has a ".whl" file but not a proper source release. + ;; Thus, fetch code from Git. + (method git-fetch) + (uri (git-reference + (url "https://github.com/ProtonVPN/linux-cli.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0ixjb02kj4z79whm1izd8mrn2h0rp9cmw4im1qvp93rahqxdd4n8")))) + (build-system python-build-system) + (arguments '(#:tests? #f)) ; no tests in repo + (native-inputs + `(("docopt" ,python-docopt))) + (inputs + `(("pythondialog" ,python-pythondialog) + ("requests" ,python-requests))) + (propagated-inputs + `(("openvpn" ,openvpn))) + (synopsis "Command-line client for ProtonVPN") + (description + "Official CLI for ProtonVPN, a secure point-to-point virtual private +networking service with a gratis tier. It can automatically find and connect +to the fastest servers or use TOR over VPN. The gratis tier offers unlimited +bandwidth for up to 10 devices.") + (home-page "https://github.com/ProtonVPN/linux-cli") + (license license:gpl3+))) + (define-public tinc (package (name "tinc") From 86ac14b2f37efbb6f4a3ed1c3e183fbc9496b7a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sun, 24 May 2020 22:05:11 +0200 Subject: [PATCH 096/103] gnu: protonvpn-cli: Tweak description. * gnu/packages/vpn.scm (protonvpn-cli)[description]: Tweak. --- gnu/packages/vpn.scm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm index 8f7fb3b5775..dbfd11626ad 100644 --- a/gnu/packages/vpn.scm +++ b/gnu/packages/vpn.scm @@ -340,10 +340,10 @@ traversing network address translators (@dfn{NAT}s) and firewalls.") `(("openvpn" ,openvpn))) (synopsis "Command-line client for ProtonVPN") (description - "Official CLI for ProtonVPN, a secure point-to-point virtual private -networking service with a gratis tier. It can automatically find and connect -to the fastest servers or use TOR over VPN. The gratis tier offers unlimited -bandwidth for up to 10 devices.") + "This is the official command-line interface for ProtonVPN, a secure +point-to-point virtual private networking (VPN) service with a gratis tier. +It can automatically find and connect to the fastest servers or use Tor over +VPN. The gratis tier offers unlimited bandwidth for up to 10 devices.") (home-page "https://github.com/ProtonVPN/linux-cli") (license license:gpl3+))) From c098c11be8eb9e0c12be42640721e3cb21c37628 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 20 May 2020 13:01:26 +0200 Subject: [PATCH 097/103] git: Add 'commit-relation'. * guix/git.scm (commit-relation): New procedure. * tests/git.scm ("commit-relation"): New test. --- guix/git.scm | 16 ++++++++++++++++ tests/git.scm | 42 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/guix/git.scm b/guix/git.scm index 92121156cfb..249d6227561 100644 --- a/guix/git.scm +++ b/guix/git.scm @@ -43,6 +43,7 @@ url+commit->name latest-repository-commit commit-difference + commit-relation git-checkout git-checkout? @@ -405,6 +406,21 @@ that of OLD." (cons head result) (set-insert head visited))))))) +(define (commit-relation old new) + "Return a symbol denoting the relation between OLD and NEW, two commit +objects: 'ancestor (meaning that OLD is an ancestor of NEW), 'descendant, or +'unrelated, or 'self (OLD and NEW are the same commit)." + (if (eq? old new) + 'self + (let ((newest (commit-closure new))) + (if (set-contains? newest old) + 'ancestor + (let* ((seen (list->setq (commit-parents new))) + (oldest (commit-closure old seen))) + (if (set-contains? oldest new) + 'descendant + 'unrelated)))))) + ;;; ;;; Checkouts. diff --git a/tests/git.scm b/tests/git.scm index 052f8a79c44..4a806abcc30 100644 --- a/tests/git.scm +++ b/tests/git.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2019 Ludovic Courtès +;;; Copyright © 2019, 2020 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -122,4 +122,44 @@ (lset= eq? (commit-difference commit4 commit1 (list commit5)) (list commit2 commit3 commit4))))))) +(unless (which (git-command)) (test-skip 1)) +(test-equal "commit-relation" + '(self ;master3 master3 + ancestor ;master1 master3 + descendant ;master3 master1 + unrelated ;master2 branch1 + unrelated ;branch1 master2 + ancestor ;branch1 merge + descendant ;merge branch1 + ancestor ;master1 merge + descendant) ;merge master1 + (with-temporary-git-repository directory + '((add "a.txt" "A") + (commit "first commit") + (branch "hack") + (checkout "hack") + (add "1.txt" "1") + (commit "branch commit") + (checkout "master") + (add "b.txt" "B") + (commit "second commit") + (add "c.txt" "C") + (commit "third commit") + (merge "hack" "merge")) + (with-repository directory repository + (let ((master1 (find-commit repository "first")) + (master2 (find-commit repository "second")) + (master3 (find-commit repository "third")) + (branch1 (find-commit repository "branch")) + (merge (find-commit repository "merge"))) + (list (commit-relation master3 master3) + (commit-relation master1 master3) + (commit-relation master3 master1) + (commit-relation master2 branch1) + (commit-relation branch1 master2) + (commit-relation branch1 merge) + (commit-relation merge branch1) + (commit-relation master1 merge) + (commit-relation merge master1)))))) + (test-end "git") From 9b049de84ed101e2c0a5d071e76f424b3bc46bd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 20 May 2020 15:55:37 +0200 Subject: [PATCH 098/103] channels: 'latest-channel-instances' doesn't leak internal state. * guix/channels.scm (latest-channel-instances): Remove 'previous-channels' argument. Introduce 'loop' and use it. --- guix/channels.scm | 67 +++++++++++++++++++++++------------------------ 1 file changed, 33 insertions(+), 34 deletions(-) diff --git a/guix/channels.scm b/guix/channels.scm index f0174de7674..e0a7a84f55d 100644 --- a/guix/channels.scm +++ b/guix/channels.scm @@ -231,10 +231,9 @@ result is unspecified." #:select? (negate dot-git?)))) (channel-instance channel commit checkout)))) -(define* (latest-channel-instances store channels #:optional (previous-channels '())) +(define* (latest-channel-instances store channels) "Return a list of channel instances corresponding to the latest checkouts of -CHANNELS and the channels on which they depend. PREVIOUS-CHANNELS is a list -of previously processed channels." +CHANNELS and the channels on which they depend." ;; Only process channels that are unique, or that are more specific than a ;; previous channel specification. (define (ignore? channel others) @@ -245,38 +244,38 @@ of previously processed channels." (not (or (channel-commit a) (channel-commit b)))))))) - ;; Accumulate a list of instances. A list of processed channels is also - ;; accumulated to decide on duplicate channel specifications. - (define-values (resulting-channels instances) - (fold2 (lambda (channel previous-channels instances) - (if (ignore? channel previous-channels) - (values previous-channels instances) - (begin - (format (current-error-port) - (G_ "Updating channel '~a' from Git repository at '~a'...~%") - (channel-name channel) - (channel-url channel)) - (let ((instance (latest-channel-instance store channel))) - (let-values (((new-instances new-channels) - (latest-channel-instances - store - (channel-instance-dependencies instance) - previous-channels))) - (values (append (cons channel new-channels) - previous-channels) - (append (cons instance new-instances) - instances))))))) - previous-channels - '() ;instances - channels)) + (let loop ((channels channels) + (previous-channels '())) + ;; Accumulate a list of instances. A list of processed channels is also + ;; accumulated to decide on duplicate channel specifications. + (define-values (resulting-channels instances) + (fold2 (lambda (channel previous-channels instances) + (if (ignore? channel previous-channels) + (values previous-channels instances) + (begin + (format (current-error-port) + (G_ "Updating channel '~a' from Git repository at '~a'...~%") + (channel-name channel) + (channel-url channel)) + (let ((instance (latest-channel-instance store channel))) + (let-values (((new-instances new-channels) + (loop (channel-instance-dependencies instance) + previous-channels))) + (values (append (cons channel new-channels) + previous-channels) + (append (cons instance new-instances) + instances))))))) + previous-channels + '() ;instances + channels)) - (let ((instance-name (compose channel-name channel-instance-channel))) - ;; Remove all earlier channel specifications if they are followed by a - ;; more specific one. - (values (delete-duplicates instances - (lambda (a b) - (eq? (instance-name a) (instance-name b)))) - resulting-channels))) + (let ((instance-name (compose channel-name channel-instance-channel))) + ;; Remove all earlier channel specifications if they are followed by a + ;; more specific one. + (values (delete-duplicates instances + (lambda (a b) + (eq? (instance-name a) (instance-name b)))) + resulting-channels)))) (define* (checkout->channel-instance checkout #:key commit From 8d1d56578aa95118650ed2197bfb7fac40f4218a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 20 May 2020 17:57:54 +0200 Subject: [PATCH 099/103] git: 'update-cached-checkout' returns the commit relation. * guix/git.scm (update-cached-checkout): Add #:starting-commit parameter. Call 'commit-relation' when #:starting-commit is true. Always return the relation or #f as the third value. (latest-repository-commit): Adjust accordingly. * guix/import/opam.scm (get-opam-repository): Likewise. * tests/channels.scm ("latest-channel-instances includes channel dependencies") ("latest-channel-instances excludes duplicate channel dependencies"): Update mock of 'update-cached-checkout' accordingly. --- guix/channels.scm | 2 +- guix/git.scm | 22 +++++++++++++++++----- guix/import/opam.scm | 2 +- tests/channels.scm | 12 ++++++------ 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/guix/channels.scm b/guix/channels.scm index e0a7a84f55d..75b767a94c5 100644 --- a/guix/channels.scm +++ b/guix/channels.scm @@ -218,7 +218,7 @@ result is unspecified." (and (string=? (basename file) ".git") (eq? 'directory (stat:type stat)))) - (let-values (((checkout commit) + (let-values (((checkout commit relation) (update-cached-checkout (channel-url channel) #:ref (channel-reference channel)))) (when (guix-channel? channel) diff --git a/guix/git.scm b/guix/git.scm index 249d6227561..ab3b5075b18 100644 --- a/guix/git.scm +++ b/guix/git.scm @@ -262,14 +262,16 @@ definitely available in REPOSITORY, false otherwise." #:key (ref '(branch . "master")) recursive? + starting-commit (log-port (%make-void-port "w")) (cache-directory (url-cache-directory url (%repository-cache-directory) #:recursive? recursive?))) - "Update the cached checkout of URL to REF in CACHE-DIRECTORY. Return two + "Update the cached checkout of URL to REF in CACHE-DIRECTORY. Return three values: the cache directory name, and the SHA1 commit (a string) corresponding -to REF. +to REF, and the relation of the new commit relative to STARTING-COMMIT (if +provided) as returned by 'commit-relation'. REF is pair whose key is [branch | commit | tag | tag-or-commit ] and value the associated data: [ | | | ]. @@ -302,7 +304,17 @@ When RECURSIVE? is true, check out submodules as well, if any." (remote-fetch (remote-lookup repository "origin")))) (when recursive? (update-submodules repository #:log-port log-port)) - (let ((oid (switch-to-ref repository canonical-ref))) + + ;; Note: call 'commit-relation' from here because it's more efficient + ;; than letting users re-open the checkout later on. + (let* ((oid (switch-to-ref repository canonical-ref)) + (new (and starting-commit + (commit-lookup repository oid))) + (old (and starting-commit + (commit-lookup repository + (string->oid starting-commit)))) + (relation (and starting-commit + (commit-relation old new)))) ;; Reclaim file descriptors and memory mappings associated with ;; REPOSITORY as soon as possible. @@ -310,7 +322,7 @@ When RECURSIVE? is true, check out submodules as well, if any." 'repository-close!) (repository-close! repository)) - (values cache-directory (oid->string oid)))))) + (values cache-directory (oid->string oid) relation))))) (define* (latest-repository-commit store url #:key @@ -343,7 +355,7 @@ Log progress and checkout info to LOG-PORT." (format log-port "updating checkout of '~a'...~%" url) (let*-values - (((checkout commit) + (((checkout commit _) (update-cached-checkout url #:recursive? recursive? #:ref ref diff --git a/guix/import/opam.scm b/guix/import/opam.scm index ae7df8a8b57..9cda3da0066 100644 --- a/guix/import/opam.scm +++ b/guix/import/opam.scm @@ -115,7 +115,7 @@ (define (get-opam-repository) "Update or fetch the latest version of the opam repository and return the path to the repository." - (receive (location commit) + (receive (location commit _) (update-cached-checkout "https://github.com/ocaml/opam-repository") location)) diff --git a/tests/channels.scm b/tests/channels.scm index 910088ba157..3578b57204c 100644 --- a/tests/channels.scm +++ b/tests/channels.scm @@ -136,11 +136,11 @@ (url "test"))) (test-dir (channel-instance-checkout instance--simple))) (mock ((guix git) update-cached-checkout - (lambda* (url #:key ref) + (lambda* (url #:key ref starting-commit) (match url - ("test" (values test-dir "caf3cabba9e")) + ("test" (values test-dir "caf3cabba9e" #f)) (_ (values (channel-instance-checkout instance--no-deps) - "abcde1234"))))) + "abcde1234" #f))))) (with-store store (let ((instances (latest-channel-instances store (list channel)))) (and (eq? 2 (length instances)) @@ -155,11 +155,11 @@ (url "test"))) (test-dir (channel-instance-checkout instance--with-dupes))) (mock ((guix git) update-cached-checkout - (lambda* (url #:key ref) + (lambda* (url #:key ref starting-commit) (match url - ("test" (values test-dir "caf3cabba9e")) + ("test" (values test-dir "caf3cabba9e" #f)) (_ (values (channel-instance-checkout instance--no-deps) - "abcde1234"))))) + "abcde1234" #f))))) (with-store store (let ((instances (latest-channel-instances store (list channel)))) (and (= 2 (length instances)) From 872898f768ae6d3b41eb93c5e183624bd1d157ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 20 May 2020 22:15:54 +0200 Subject: [PATCH 100/103] channels: 'latest-channel-instances' guards against non-forward updates. * guix/channels.scm (latest-channel-instance): Add #:starting-commit and pass it to 'update-cached-checkout'. Return the commit relation as a second value. (ensure-forward-channel-update): New procedure. (latest-channel-instances): Add #:current-channels and #:validate-pull. [current-commit]: New procedure. Pass #:starting-commit to 'latest-channel-instance'. When the returned relation is true, call VALIDATE-PULL. (latest-channel-derivation): Add #:current-channels and #:validate-pull. Pass them to 'latest-channel-instances*'. * tests/channels.scm ("latest-channel-instances #:validate-pull"): New test. --- guix/channels.scm | 89 ++++++++++++++++++++++++++++++++++++++++------ tests/channels.scm | 35 ++++++++++++++++++ 2 files changed, 114 insertions(+), 10 deletions(-) diff --git a/guix/channels.scm b/guix/channels.scm index 75b767a94c5..70e2d7f07ca 100644 --- a/guix/channels.scm +++ b/guix/channels.scm @@ -73,6 +73,7 @@ channel-instances->manifest %channel-profile-hooks channel-instances->derivation + ensure-forward-channel-update profile-channels @@ -212,15 +213,18 @@ result is unspecified." (loop rest))))) (define* (latest-channel-instance store channel - #:key (patches %patches)) - "Return the latest channel instance for CHANNEL." + #:key (patches %patches) + starting-commit) + "Return two values: the latest channel instance for CHANNEL, and its +relation to STARTING-COMMIT when provided." (define (dot-git? file stat) (and (string=? (basename file) ".git") (eq? 'directory (stat:type stat)))) (let-values (((checkout commit relation) (update-cached-checkout (channel-url channel) - #:ref (channel-reference channel)))) + #:ref (channel-reference channel) + #:starting-commit starting-commit))) (when (guix-channel? channel) ;; Apply the relevant subset of PATCHES directly in CHECKOUT. This is ;; safe to do because 'switch-to-ref' eventually does a hard reset. @@ -229,11 +233,51 @@ result is unspecified." (let* ((name (url+commit->name (channel-url channel) commit)) (checkout (add-to-store store name #t "sha256" checkout #:select? (negate dot-git?)))) - (channel-instance channel commit checkout)))) + (values (channel-instance channel commit checkout) + relation)))) -(define* (latest-channel-instances store channels) +(define (ensure-forward-channel-update channel start instance relation) + "Raise an error if RELATION is not 'ancestor, meaning that START is not an +ancestor of the commit in INSTANCE, unless CHANNEL specifies a commit. + +This procedure implements a channel update policy meant to be used as a +#:validate-pull argument." + (match relation + ('ancestor #t) + ('self #t) + (_ + (raise (apply make-compound-condition + (condition + (&message (message + (format #f (G_ "\ +aborting update of channel '~a' to commit ~a, which is not a descendant of ~a") + (channel-name channel) + (channel-instance-commit instance) + start)))) + + ;; Don't show the hint when the user explicitly specified a + ;; commit in CHANNEL. + (if (channel-commit channel) + '() + (list (condition + (&fix-hint + (hint (G_ "This could indicate that the channel has +been tampered with and is trying to force a roll-back, preventing you from +getting the latest updates. If you think this is not the case, explicitly +allow non-forward updates."))))))))))) + +(define* (latest-channel-instances store channels + #:key + (current-channels '()) + (validate-pull + ensure-forward-channel-update)) "Return a list of channel instances corresponding to the latest checkouts of -CHANNELS and the channels on which they depend." +CHANNELS and the channels on which they depend. + +CURRENT-CHANNELS is the list of currently used channels. It is compared +against the newly-fetched instances of CHANNELS, and VALIDATE-PULL is called +for each channel update and can choose to emit warnings or raise an error, +depending on the policy it implements." ;; Only process channels that are unique, or that are more specific than a ;; previous channel specification. (define (ignore? channel others) @@ -244,6 +288,13 @@ CHANNELS and the channels on which they depend." (not (or (channel-commit a) (channel-commit b)))))))) + (define (current-commit name) + ;; Return the current commit for channel NAME. + (any (lambda (channel) + (and (eq? (channel-name channel) name) + (channel-commit channel))) + current-channels)) + (let loop ((channels channels) (previous-channels '())) ;; Accumulate a list of instances. A list of processed channels is also @@ -257,7 +308,15 @@ CHANNELS and the channels on which they depend." (G_ "Updating channel '~a' from Git repository at '~a'...~%") (channel-name channel) (channel-url channel)) - (let ((instance (latest-channel-instance store channel))) + (let*-values (((current) + (current-commit (channel-name channel))) + ((instance relation) + (latest-channel-instance store channel + #:starting-commit + current))) + (when relation + (validate-pull channel current instance relation)) + (let-values (((new-instances new-channels) (loop (channel-instance-dependencies instance) previous-channels))) @@ -617,10 +676,20 @@ channel instances." (define latest-channel-instances* (store-lift latest-channel-instances)) -(define* (latest-channel-derivation #:optional (channels %default-channels)) +(define* (latest-channel-derivation #:optional (channels %default-channels) + #:key + (current-channels '()) + (validate-pull + ensure-forward-channel-update)) "Return as a monadic value the derivation that builds the profile for the -latest instances of CHANNELS." - (mlet %store-monad ((instances (latest-channel-instances* channels))) +latest instances of CHANNELS. CURRENT-CHANNELS and VALIDATE-PULL are passed +to 'latest-channel-instances'." + (mlet %store-monad ((instances + (latest-channel-instances* channels + #:current-channels + current-channels + #:validate-pull + validate-pull))) (channel-instances->derivation instances))) (define (profile-channels profile) diff --git a/tests/channels.scm b/tests/channels.scm index 3578b57204c..3b141428c8d 100644 --- a/tests/channels.scm +++ b/tests/channels.scm @@ -37,6 +37,7 @@ #:use-module (srfi srfi-34) #:use-module (srfi srfi-35) #:use-module (srfi srfi-64) + #:use-module (ice-9 control) #:use-module (ice-9 match)) (test-begin "channels") @@ -178,6 +179,40 @@ "abc1234"))) instances))))))) +(unless (which (git-command)) (test-skip 1)) +(test-equal "latest-channel-instances #:validate-pull" + 'descendant + + ;; Make sure the #:validate-pull procedure receives the right values. + (let/ec return + (with-temporary-git-repository directory + '((add "a.txt" "A") + (commit "first commit") + (add "b.scm" "#t") + (commit "second commit")) + (with-repository directory repository + (let* ((commit1 (find-commit repository "first")) + (commit2 (find-commit repository "second")) + (spec (channel (url (string-append "file://" directory)) + (name 'foo))) + (new (channel (inherit spec) + (commit (oid->string (commit-id commit2))))) + (old (channel (inherit spec) + (commit (oid->string (commit-id commit1)))))) + (define (validate-pull channel current instance relation) + (return (and (eq? channel old) + (string=? (oid->string (commit-id commit2)) + current) + (string=? (oid->string (commit-id commit1)) + (channel-instance-commit instance)) + relation))) + + (with-store store + ;; Attempt a downgrade from NEW to OLD. + (latest-channel-instances store (list old) + #:current-channels (list new) + #:validate-pull validate-pull))))))) + (test-assert "channel-instances->manifest" ;; Compute the manifest for a graph of instances and make sure we get a ;; derivation graph that mirrors the instance graph. This test also ensures From 9744cc7b4636fafb772c94adb8f05961b5b39f16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 20 May 2020 23:18:09 +0200 Subject: [PATCH 101/103] pull: Protect against downgrade attacks. * guix/scripts/pull.scm (%default-options): Add 'validate-pull'. (%options, show-help): Add '--allow-downgrades'. (warn-about-backward-updates): New procedure. (guix-pull): Pass #:current-channels and #:validate-pull to 'latest-channel-instances'. * guix/channels.scm (ensure-forward-channel-update): Add hint for when (channel-commit channel) is true. * doc/guix.texi (Invoking guix pull): Document '--allow-downgrades'. --- doc/guix.texi | 15 +++++++++++++++ guix/channels.scm | 34 +++++++++++++++++++--------------- guix/scripts/pull.scm | 35 ++++++++++++++++++++++++++++++++--- 3 files changed, 66 insertions(+), 18 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index aa2b316c90c..3d1b0974470 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -3900,6 +3900,21 @@ Use @var{profile} instead of @file{~/.config/guix/current}. Show which channel commit(s) would be used and what would be built or substituted but do not actually do it. +@item --allow-downgrades +Allow pulling older or unrelated revisions of channels than those +currently in use. + +@cindex downgrade attacks, protection against +By default, @command{guix pull} protects against so-called ``downgrade +attacks'' whereby the Git repository of a channel would be reset to an +earlier or unrelated revision of itself, potentially leading you to +install older, known-vulnerable versions of software packages. + +@quotation Note +Make sure you understand its security implications before using +@option{--allow-downgrades}. +@end quotation + @item --system=@var{system} @itemx -s @var{system} Attempt to build for @var{system}---e.g., @code{i686-linux}---instead of diff --git a/guix/channels.scm b/guix/channels.scm index 70e2d7f07ca..84c47fc0d0c 100644 --- a/guix/channels.scm +++ b/guix/channels.scm @@ -246,25 +246,29 @@ This procedure implements a channel update policy meant to be used as a ('ancestor #t) ('self #t) (_ - (raise (apply make-compound-condition - (condition - (&message (message - (format #f (G_ "\ + (raise (make-compound-condition + (condition + (&message (message + (format #f (G_ "\ aborting update of channel '~a' to commit ~a, which is not a descendant of ~a") - (channel-name channel) - (channel-instance-commit instance) - start)))) + (channel-name channel) + (channel-instance-commit instance) + start)))) - ;; Don't show the hint when the user explicitly specified a - ;; commit in CHANNEL. - (if (channel-commit channel) - '() - (list (condition - (&fix-hint - (hint (G_ "This could indicate that the channel has + ;; If the user asked for a specific commit, they might want + ;; that to happen nevertheless, so tell them about the + ;; relevant 'guix pull' option. + (if (channel-commit channel) + (condition + (&fix-hint + (hint (G_ "Use @option{--allow-downgrades} to force +this downgrade.")))) + (condition + (&fix-hint + (hint (G_ "This could indicate that the channel has been tampered with and is trying to force a roll-back, preventing you from getting the latest updates. If you think this is not the case, explicitly -allow non-forward updates."))))))))))) +allow non-forward updates.")))))))))) (define* (latest-channel-instances store channels #:key diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm index dfe7ee7ad51..c386d81b8ec 100644 --- a/guix/scripts/pull.scm +++ b/guix/scripts/pull.scm @@ -81,7 +81,8 @@ (multiplexed-build-output? . #t) (graft? . #t) (debug . 0) - (verbosity . 1))) + (verbosity . 1) + (validate-pull . ,ensure-forward-channel-update))) (define (show-help) (display (G_ "Usage: guix pull [OPTION]... @@ -94,6 +95,8 @@ Download and deploy the latest version of Guix.\n")) --commit=COMMIT download the specified COMMIT")) (display (G_ " --branch=BRANCH download the tip of the specified BRANCH")) + (display (G_ " + --allow-downgrades allow downgrades to earlier channel revisions")) (display (G_ " -N, --news display news compared to the previous generation")) (display (G_ " @@ -158,6 +161,10 @@ Download and deploy the latest version of Guix.\n")) (option '("branch") #t #f (lambda (opt name arg result) (alist-cons 'ref `(branch . ,arg) result))) + (option '("allow-downgrades") #f #f + (lambda (opt name arg result) + (alist-cons 'validate-pull warn-about-backward-updates + result))) (option '(#\p "profile") #t #f (lambda (opt name arg result) (alist-cons 'profile (canonicalize-profile arg) @@ -188,6 +195,21 @@ Download and deploy the latest version of Guix.\n")) %standard-build-options)) +(define (warn-about-backward-updates channel start instance relation) + "Warn about non-forward updates of CHANNEL from START to INSTANCE, without +aborting." + (match relation + ((or 'ancestor 'self) + #t) + ('descendant + (warning (G_ "rolling back channel '~a' from ~a to ~a~%") + (channel-name channel) start + (channel-instance-commit instance))) + ('unrelated + (warning (G_ "moving channel '~a' from ~a to unrelated commit ~a~%") + (channel-name channel) start + (channel-instance-commit instance))))) + (define* (display-profile-news profile #:key concise? current-is-newer?) "Display what's up in PROFILE--new packages, and all that. If @@ -749,7 +771,9 @@ Use '~/.config/guix/channels.scm' instead.")) (substitutes? (assoc-ref opts 'substitutes?)) (dry-run? (assoc-ref opts 'dry-run?)) (channels (channel-list opts)) - (profile (or (assoc-ref opts 'profile) %current-profile))) + (profile (or (assoc-ref opts 'profile) %current-profile)) + (current-channels (profile-channels profile)) + (validate-pull (assoc-ref opts 'validate-pull))) (cond ((assoc-ref opts 'query) (process-query opts profile)) ((assoc-ref opts 'generation) @@ -766,7 +790,12 @@ Use '~/.config/guix/channels.scm' instead.")) (ensure-default-profile) (honor-x509-certificates store) - (let ((instances (latest-channel-instances store channels))) + (let ((instances + (latest-channel-instances store channels + #:current-channels + current-channels + #:validate-pull + validate-pull))) (format (current-error-port) (N_ "Building from this channel:~%" "Building from these channels:~%" From e451612602c5ae8bca1e56492bbfa7b2fe434cbd Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Sun, 24 May 2020 23:56:02 +0200 Subject: [PATCH 102/103] gnu: libgphoto2: Update to 2.5.25. * gnu/packages/photo.scm (libgphoto2): Update to 2.5.25. --- gnu/packages/photo.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm index 59947964a33..dfd45fd06b6 100644 --- a/gnu/packages/photo.scm +++ b/gnu/packages/photo.scm @@ -228,14 +228,14 @@ data as produced by digital cameras.") (define-public libgphoto2 (package (name "libgphoto2") - (version "2.5.24") + (version "2.5.25") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/gphoto/libgphoto/" version "/libgphoto2-" version ".tar.bz2")) (sha256 (base32 - "0cgvsk06c4kcfj16plc27nm7g16r9ci0y4k83sf3iyphd63mfg7x")))) + "0fkz2rx7xlmr6zl6f56hhxps6bx16dwcw5pyd8c2icf273s9h3kw")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) (inputs From 8bd0b533b30d7ee5e03aee99a2eb96d5b0b1c836 Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Mon, 25 May 2020 00:12:06 +0200 Subject: [PATCH 103/103] gnu: libexif: Update to 0.6.22 [security fixes]. This fixes CVE-2020-13114, CVE-2020-13113, CVE-2020-13112, CVE-2020-0093, CVE-2019-9278, and CVE-2020-12767. * gnu/packages/patches/libexif-CVE-2016-6328.patch, gnu/packages/patches/libexif-CVE-2017-7544.patch, gnu/packages/patches/libexif-CVE-2018-20030.patch: Delete files. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. * gnu/packages/photo.scm (libexif): Update to 0.6.22. [source](uri): Adjust for upstream GitHub migration. --- gnu/local.mk | 3 - .../patches/libexif-CVE-2016-6328.patch | 72 ----------- .../patches/libexif-CVE-2017-7544.patch | 29 ----- .../patches/libexif-CVE-2018-20030.patch | 120 ------------------ gnu/packages/photo.scm | 14 +- 5 files changed, 7 insertions(+), 231 deletions(-) delete mode 100644 gnu/packages/patches/libexif-CVE-2016-6328.patch delete mode 100644 gnu/packages/patches/libexif-CVE-2017-7544.patch delete mode 100644 gnu/packages/patches/libexif-CVE-2018-20030.patch diff --git a/gnu/local.mk b/gnu/local.mk index f4326d4db81..ef4c5d2dcb0 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1167,9 +1167,6 @@ dist_patch_DATA = \ %D%/packages/patches/libbonobo-activation-test-race.patch \ %D%/packages/patches/libcanberra-sound-theme-freedesktop.patch \ %D%/packages/patches/libdrm-symbol-check.patch \ - %D%/packages/patches/libexif-CVE-2016-6328.patch \ - %D%/packages/patches/libexif-CVE-2017-7544.patch \ - %D%/packages/patches/libexif-CVE-2018-20030.patch \ %D%/packages/patches/libextractor-exiv2.patch \ %D%/packages/patches/libgeotiff-adapt-test-script-for-proj-6.2.patch \ %D%/packages/patches/libgit2-mtime-0.patch \ diff --git a/gnu/packages/patches/libexif-CVE-2016-6328.patch b/gnu/packages/patches/libexif-CVE-2016-6328.patch deleted file mode 100644 index 67fee0f5284..00000000000 --- a/gnu/packages/patches/libexif-CVE-2016-6328.patch +++ /dev/null @@ -1,72 +0,0 @@ -Fix CVE-2016-6328: - -https://bugzilla.redhat.com/show_bug.cgi?id=1366239 -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6328 - -Patch copied from upstream source repository: - -https://github.com/libexif/libexif/commit/41bd04234b104312f54d25822f68738ba8d7133d - -From 41bd04234b104312f54d25822f68738ba8d7133d Mon Sep 17 00:00:00 2001 -From: Marcus Meissner -Date: Tue, 25 Jul 2017 23:44:44 +0200 -Subject: [PATCH] fixes some (not all) buffer overreads during decoding pentax - makernote entries. - -This should fix: -https://sourceforge.net/p/libexif/bugs/125/ CVE-2016-6328 ---- - libexif/pentax/mnote-pentax-entry.c | 16 +++++++++++++--- - 1 file changed, 13 insertions(+), 3 deletions(-) - -diff --git a/libexif/pentax/mnote-pentax-entry.c b/libexif/pentax/mnote-pentax-entry.c -index d03d159..ea0429a 100644 ---- a/libexif/pentax/mnote-pentax-entry.c -+++ b/libexif/pentax/mnote-pentax-entry.c -@@ -425,24 +425,34 @@ mnote_pentax_entry_get_value (MnotePentaxEntry *entry, - case EXIF_FORMAT_SHORT: - { - const unsigned char *data = entry->data; -- size_t k, len = strlen(val); -+ size_t k, len = strlen(val), sizeleft; -+ -+ sizeleft = entry->size; - for(k=0; kcomponents; k++) { -+ if (sizeleft < 2) -+ break; - vs = exif_get_short (data, entry->order); - snprintf (val+len, maxlen-len, "%i ", vs); - len = strlen(val); - data += 2; -+ sizeleft -= 2; - } - } - break; - case EXIF_FORMAT_LONG: - { - const unsigned char *data = entry->data; -- size_t k, len = strlen(val); -+ size_t k, len = strlen(val), sizeleft; -+ -+ sizeleft = entry->size; - for(k=0; kcomponents; k++) { -+ if (sizeleft < 4) -+ break; - vl = exif_get_long (data, entry->order); - snprintf (val+len, maxlen-len, "%li", (long int) vl); - len = strlen(val); - data += 4; -+ sizeleft -= 4; - } - } - break; -@@ -455,5 +465,5 @@ mnote_pentax_entry_get_value (MnotePentaxEntry *entry, - break; - } - -- return (val); -+ return val; - } --- -2.16.0 - diff --git a/gnu/packages/patches/libexif-CVE-2017-7544.patch b/gnu/packages/patches/libexif-CVE-2017-7544.patch deleted file mode 100644 index c4ea373dc52..00000000000 --- a/gnu/packages/patches/libexif-CVE-2017-7544.patch +++ /dev/null @@ -1,29 +0,0 @@ -Fix CVE-2017-7544: - -https://sourceforge.net/p/libexif/bugs/130/ -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7544 - -Patch copied from upstream bug tracker: - -https://sourceforge.net/p/libexif/bugs/130/#489a - -Index: libexif/exif-data.c -=================================================================== -RCS file: /cvsroot/libexif/libexif/libexif/exif-data.c,v -retrieving revision 1.131 -diff -u -r1.131 exif-data.c ---- a/libexif/exif-data.c 12 Jul 2012 17:28:26 -0000 1.131 -+++ b/libexif/exif-data.c 25 Jul 2017 21:34:06 -0000 -@@ -255,6 +255,12 @@ - exif_mnote_data_set_offset (data->priv->md, *ds - 6); - exif_mnote_data_save (data->priv->md, &e->data, &e->size); - e->components = e->size; -+ if (exif_format_get_size (e->format) != 1) { -+ /* e->format is taken from input code, -+ * but we need to make sure it is a 1 byte -+ * entity due to the multiplication below. */ -+ e->format = EXIF_FORMAT_UNDEFINED; -+ } - } - } - diff --git a/gnu/packages/patches/libexif-CVE-2018-20030.patch b/gnu/packages/patches/libexif-CVE-2018-20030.patch deleted file mode 100644 index 57e4746b583..00000000000 --- a/gnu/packages/patches/libexif-CVE-2018-20030.patch +++ /dev/null @@ -1,120 +0,0 @@ -https://github.com/libexif/libexif/commit/6aa11df549114ebda520dde4cdaea2f9357b2c89.patch - -NEWS section was removed -'12' -> '30' on line 79 - -From 6aa11df549114ebda520dde4cdaea2f9357b2c89 Mon Sep 17 00:00:00 2001 -From: Dan Fandrich -Date: Fri, 12 Oct 2018 16:01:45 +0200 -Subject: [PATCH] Improve deep recursion detection in - exif_data_load_data_content. - -The existing detection was still vulnerable to pathological cases -causing DoS by wasting CPU. The new algorithm takes the number of tags -into account to make it harder to abuse by cases using shallow recursion -but with a very large number of tags. This improves on commit 5d28011c -which wasn't sufficient to counter this kind of case. - -The limitation in the previous fix was discovered by Laurent Delosieres, -Secunia Research at Flexera (Secunia Advisory SA84652) and is assigned -the identifier CVE-2018-20030. ---- - NEWS | 1 + - libexif/exif-data.c | 45 +++++++++++++++++++++++++++++++++++++-------- - 2 files changed, 38 insertions(+), 8 deletions(-) - -diff --git a/libexif/exif-data.c b/libexif/exif-data.c -index e35403d..a6f9c94 100644 ---- a/libexif/exif-data.c -+++ b/libexif/exif-data.c -@@ -35,6 +35,7 @@ - #include - #include - -+#include - #include - #include - #include -@@ -350,6 +351,20 @@ if (data->ifd[(i)]->count) { \ - break; \ - } - -+/*! Calculate the recursion cost added by one level of IFD loading. -+ * -+ * The work performed is related to the cost in the exponential relation -+ * work=1.1**cost -+ */ -+static unsigned int -+level_cost(unsigned int n) -+{ -+ static const double log_1_1 = 0.09531017980432493; -+ -+ /* Adding 0.1 protects against the case where n==1 */ -+ return ceil(log(n + 0.1)/log_1_1); -+} -+ - /*! Load data for an IFD. - * - * \param[in,out] data #ExifData -@@ -357,13 +372,13 @@ if (data->ifd[(i)]->count) { \ - * \param[in] d pointer to buffer containing raw IFD data - * \param[in] ds size of raw data in buffer at \c d - * \param[in] offset offset into buffer at \c d at which IFD starts -- * \param[in] recursion_depth number of times this function has been -- * recursively called without returning -+ * \param[in] recursion_cost factor indicating how expensive this recursive -+ * call could be - */ - static void - exif_data_load_data_content (ExifData *data, ExifIfd ifd, - const unsigned char *d, -- unsigned int ds, unsigned int offset, unsigned int recursion_depth) -+ unsigned int ds, unsigned int offset, unsigned int recursion_cost) - { - ExifLong o, thumbnail_offset = 0, thumbnail_length = 0; - ExifShort n; -@@ -378,9 +393,20 @@ exif_data_load_data_content (ExifData *data, ExifIfd ifd, - if ((((int)ifd) < 0) || ( ((int)ifd) >= EXIF_IFD_COUNT)) - return; - -- if (recursion_depth > 30) { -+ if (recursion_cost > 170) { -+ /* -+ * recursion_cost is a logarithmic-scale indicator of how expensive this -+ * recursive call might end up being. It is an indicator of the depth of -+ * recursion as well as the potential for worst-case future recursive -+ * calls. Since it's difficult to tell ahead of time how often recursion -+ * will occur, this assumes the worst by assuming every tag could end up -+ * causing recursion. -+ * The value of 170 was chosen to limit typical EXIF structures to a -+ * recursive depth of about 6, but pathological ones (those with very -+ * many tags) to only 2. -+ */ - exif_log (data->priv->log, EXIF_LOG_CODE_CORRUPT_DATA, "ExifData", -- "Deep recursion detected!"); -+ "Deep/expensive recursion detected!"); - return; - } - -@@ -422,15 +448,18 @@ exif_data_load_data_content (ExifData *data, ExifIfd ifd, - switch (tag) { - case EXIF_TAG_EXIF_IFD_POINTER: - CHECK_REC (EXIF_IFD_EXIF); -- exif_data_load_data_content (data, EXIF_IFD_EXIF, d, ds, o, recursion_depth + 1); -+ exif_data_load_data_content (data, EXIF_IFD_EXIF, d, ds, o, -+ recursion_cost + level_cost(n)); - break; - case EXIF_TAG_GPS_INFO_IFD_POINTER: - CHECK_REC (EXIF_IFD_GPS); -- exif_data_load_data_content (data, EXIF_IFD_GPS, d, ds, o, recursion_depth + 1); -+ exif_data_load_data_content (data, EXIF_IFD_GPS, d, ds, o, -+ recursion_cost + level_cost(n)); - break; - case EXIF_TAG_INTEROPERABILITY_IFD_POINTER: - CHECK_REC (EXIF_IFD_INTEROPERABILITY); -- exif_data_load_data_content (data, EXIF_IFD_INTEROPERABILITY, d, ds, o, recursion_depth + 1); -+ exif_data_load_data_content (data, EXIF_IFD_INTEROPERABILITY, d, ds, o, -+ recursion_cost + level_cost(n)); - break; - case EXIF_TAG_JPEG_INTERCHANGE_FORMAT: - thumbnail_offset = o; diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm index dfd45fd06b6..4904fa1db18 100644 --- a/gnu/packages/photo.scm +++ b/gnu/packages/photo.scm @@ -206,17 +206,17 @@ cameras (CRW/CR2, NEF, RAF, DNG, and others).") (define-public libexif (package (name "libexif") - (version "0.6.21") + (version "0.6.22") (source (origin (method url-fetch) - (uri (string-append "mirror://sourceforge/libexif/libexif/" - version "/libexif-" version ".tar.bz2")) - (patches (search-patches "libexif-CVE-2016-6328.patch" - "libexif-CVE-2017-7544.patch" - "libexif-CVE-2018-20030.patch")) + (uri (string-append + "https://github.com/libexif/libexif/releases" + "/download/libexif-" + (string-map (lambda (x) (if (char=? x #\.) #\_ x)) version) + "-release/libexif-" version ".tar.xz")) (sha256 (base32 - "06nlsibr3ylfwp28w8f5466l6drgrnydgxrm4jmxzrmk5svaxk8n")))) + "0mhcad5zab7fsn120rd585h8ncwkq904nzzrq8vcd72hzk4g2j2h")))) (build-system gnu-build-system) (home-page "https://libexif.github.io/") (synopsis "Read and manipulate EXIF data in digital photographs")