summary refs log tree commit diff
diff options
context:
space:
mode:
authorMarius Bakke <mbakke@fastmail.com>2020-01-12 20:57:38 +0100
committerMarius Bakke <mbakke@fastmail.com>2020-01-12 20:57:38 +0100
commit8f1ab291bca31e84bec50da4374175367d498a6f (patch)
treee96a6f7a44382646733ac08ecaccb2f57182f017
parentf0bce2e08feb157b3d8b5100b1ea26bbbd6141e3 (diff)
parent2e4bb89354d909b661208b3900abfeaa621a1582 (diff)
downloadguix-8f1ab291bca31e84bec50da4374175367d498a6f.tar.gz
Merge branch 'master' into staging
-rw-r--r--doc/build.scm7
-rw-r--r--doc/htmlxref.cnf45
-rw-r--r--gnu/local.mk4
-rw-r--r--gnu/packages/audio.scm21
-rw-r--r--gnu/packages/chez.scm9
-rw-r--r--gnu/packages/cmake.scm39
-rw-r--r--gnu/packages/crypto.scm29
-rw-r--r--gnu/packages/emacs-xyz.scm6
-rw-r--r--gnu/packages/entr.scm10
-rw-r--r--gnu/packages/freedesktop.scm29
-rw-r--r--gnu/packages/gnome.scm6
-rw-r--r--gnu/packages/gstreamer.scm11
-rw-r--r--gnu/packages/guile.scm6
-rw-r--r--gnu/packages/kde.scm4
-rw-r--r--gnu/packages/lisp-xyz.scm13
-rw-r--r--gnu/packages/mpi.scm3
-rw-r--r--gnu/packages/patches/audacity-build-with-system-portaudio.patch16
-rw-r--r--gnu/packages/patches/jsoncpp-fix-inverted-case.patch22
-rw-r--r--gnu/packages/patches/wavpack-CVE-2018-6767.patch119
-rw-r--r--gnu/packages/patches/wavpack-CVE-2018-7253.patch29
-rw-r--r--gnu/packages/patches/wavpack-CVE-2018-7254.patch62
-rw-r--r--gnu/packages/qt.scm4
-rw-r--r--gnu/packages/serialization.scm1
-rw-r--r--gnu/system.scm1
-rw-r--r--guix/build/asdf-build-system.scm9
-rw-r--r--guix/deprecation.scm8
-rw-r--r--nix/libstore/gc.cc18
-rw-r--r--nix/libutil/util.cc10
-rw-r--r--nix/libutil/util.hh6
29 files changed, 237 insertions, 310 deletions
diff --git a/doc/build.scm b/doc/build.scm
index e171b539e6..8d5b58962a 100644
--- a/doc/build.scm
+++ b/doc/build.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -410,6 +410,11 @@ makeinfo OPTIONS."
           (setvbuf (current-output-port) 'line)
           (setvbuf (current-error-port) 'line)
 
+          ;; 'makeinfo' looks for "htmlxref.cnf" in the current directory, so
+          ;; copy it right here.
+          (copy-file (string-append #$manual-source "/htmlxref.cnf")
+                     "htmlxref.cnf")
+
           (for-each (lambda (language)
                       (let* ((texi (language->texi-file-name language))
                              (opts `("--html"
diff --git a/doc/htmlxref.cnf b/doc/htmlxref.cnf
index 8daa4a5c19..960f0f08fe 100644
--- a/doc/htmlxref.cnf
+++ b/doc/htmlxref.cnf
@@ -1,9 +1,9 @@
 # htmlxref.cnf - reference file for free Texinfo manuals on the web.
 # Modified by Ludovic Courtès <ludo@gnu.org> for the GNU Guix manual.
 
-htmlxrefversion=2019-05-04.20; # UTC
+htmlxrefversion=2020-01-11.22; # UTC
 
-# Copyright 2010, 2011, 2012, 2013, 2014, 2015, 2019 Free Software Foundation, Inc.
+# Copyright 2010, 2011, 2012, 2013, 2014, 2015, 2019, 2020 Free Software Foundation, Inc.
 # 
 # Copying and distribution of this file, with or without modification,
 # are permitted in any medium without royalty provided the copyright
@@ -68,12 +68,12 @@ autogen		node	${GS}/autoconf/manual/html_node/
 automake	mono	${GS}/automake/manual/automake.html
 automake	node	${GS}/automake/manual/html_node/
 
-avl		node	http://www.stanford.edu/~blp/avl/libavl.html/
+avl		node	http://adtinfo.org/libavl.html/
 
 bash		mono	${GS}/bash/manual/bash.html
 bash		node	${GS}/bash/manual/html_node/
 
-BINUTILS = http://sourceware.org/binutils/docs
+BINUTILS = https://sourceware.org/binutils/docs
 binutils	node	${BINUTILS}/binutils/
  as		node	${BINUTILS}/as/
  bfd		node	${BINUTILS}/bfd/
@@ -110,13 +110,15 @@ cpio		node	${GS}/cpio/manual/html_node/
 
 cssc		node	${GS}/cssc/manual/
 
-#cvs cannot be handled here; see http://ximbiot.com/cvs/manual.
+CVS = ${GS}/trans-coord/manual
+cvs            mono    ${CVS}/cvs/cvs.html
+cvs            node    ${CVS}/cvs/html_node/
 
 ddd		mono	${GS}/ddd/manual/html_mono/ddd.html
 
 ddrescue	mono	${GS}/ddrescue/manual/ddrescue_manual.html
 
-DICO = http://puszcza.gnu.org.ua/software/dico/manual
+DICO = https://puszcza.gnu.org.ua/software/dico/manual
 dico		mono	${DICO}/dico.html
 dico		chapter	${DICO}/html_chapter/
 dico		section	${DICO}/html_section/
@@ -167,6 +169,9 @@ emacs		node	${EMACS}/html_node/emacs/
  eshell		mono	${EMACS}/html_mono/eshell.html
  eshell		node	${EMACS}/html_node/eshell/
  #
+ eww		mono	${EMACS}/html_mono/eww.html
+ eww		node	${EMACS}/html_node/eww/
+ #
  flymake	mono	${EMACS}/html_mono/flymake.html
  flymake	node	${EMACS}/html_node/flymake/
  #
@@ -234,8 +239,7 @@ find		node	${GS}/findutils/manual/html_node/find_html
 findutils	mono	${GS}/findutils/manual/html_mono/find.html
 findutils	node	${GS}/findutils/manual/html_node/find_html
 
-FLEX = http://flex.sourceforge.net
-flex		node	${FLEX}/manual/
+flex		node	https://westes.github.io/flex/manual/
 
 gama		mono	${GS}/gama/manual/gama.html
 gama		node	${GS}/gama/manual/html_node/
@@ -249,7 +253,7 @@ gawk		node	${GAWK}/html_node/
 gcal		mono	${GS}/gcal/manual/gcal.html
 gcal		node	${GS}/gcal/manual/html_node/
 
-GCC = http://gcc.gnu.org/onlinedocs
+GCC = https://gcc.gnu.org/onlinedocs
 gcc		node	${GCC}/gcc/
  cpp		node	${GCC}/cpp/
  gcj		node	${GCC}/gcj/
@@ -265,7 +269,7 @@ gcc		node	${GCC}/gcc/
  gnat-style	node	${GCC}/gnat-style/
  libiberty	node	${GCC}/libiberty/
 
-GDB = http://sourceware.org/gdb/current/onlinedocs
+GDB = https://sourceware.org/gdb/current/onlinedocs
 gdb		node	${GDB}/gdb/
  stabs		node	${GDB}/stabs/
 
@@ -282,13 +286,13 @@ geiser		chapter	http://geiser.nongnu.org/
 gettext		mono	${GS}/gettext/manual/gettext.html
 gettext		node	${GS}/gettext/manual/html_node/
 
-gforth		node	http://www.complang.tuwien.ac.at/forth/gforth/Docs-html/
+gforth		node	https://www.complang.tuwien.ac.at/forth/gforth/Docs-html/
 
 global		mono	${GS}/global/manual/global.html
 
 gmediaserver	node	${GS}/gmediaserver/manual/
 
-gmp		node	http://www.gmplib.org/manual/
+gmp		node	https://www.gmplib.org/manual/
 
 gnu-arch	node	${GS}/gnu-arch/tutorial/
 
@@ -311,7 +315,7 @@ gnun		node	${GNUN}/gnun/html_node/
  web-trans	mono	${GNUN}/web-trans/web-trans.html
  web-trans	node	${GNUN}/web-trans/html_node/
 
-GNUPG = http://www.gnupg.org/documentation/manuals
+GNUPG = https://www.gnupg.org/documentation/manuals
 gnupg		node	${GNUPG}/gnupg/
  dirmngr	node	${GNUPG}/dirmngr/
  gcrypt		node	${GNUPG}/gcrypt/
@@ -399,6 +403,10 @@ guix.es		mono	${GS}/guix/manual/es/guix.html
 guix.es		node	${GS}/guix/manual/es/html_node/
 guix.fr		mono	${GS}/guix/manual/fr/guix.html
 guix.fr		node	${GS}/guix/manual/fr/html_node/
+guix.ru		mono	${GS}/guix/manual/ru/guix.html
+guix.ru		node	${GS}/guix/manual/ru/html_node/
+guix.zh_CN	mono	${GS}/guix/manual/zh-cn/guix.html
+guix.zh_CN	node	${GS}/guix/manual/zh-cn/html_node/
 guix		mono	${GS}/guix/manual/en/guix.html
 guix		node	${GS}/guix/manual/en/html_node/
 
@@ -499,6 +507,9 @@ METAEXCHANGE = http://ftp.gwdg.de/pub/gnu2/iwfmdh/doc/texinfo
  iwf_mh		node	${METAEXCHANGE}/iwf_mh.html
  scantest	node	${METAEXCHANGE}/scantest.html
 
+mes		mono	${GS}/mes/manual/mes.html
+mes		node	${GS}/mes/manual/html_node/
+
 MIT_SCHEME = ${GS}/mit-scheme/documentation
  mit-scheme-ref	  node	${MIT_SCHEME}/mit-scheme-ref/
  mit-scheme-user  node	${MIT_SCHEME}/mit-scheme-user/
@@ -515,9 +526,9 @@ mpfr		mono	http://www.mpfr.org/mpfr-current/mpfr.html
 
 mtools		mono	${GS}/mtools/manual/mtools.html
 
-myserver	node	http://www.myserverproject.net/documentation/
+myserver	mono	http://www.myserverproject.net/doc.php
 
-nano		mono	http://www.nano-editor.org/dist/latest/nano.html
+nano		mono	https://www.nano-editor.org/dist/latest/nano.html
 
 nettle		chapter	http://www.lysator.liu.se/~nisse/nettle/nettle.html
 
@@ -550,7 +561,7 @@ pspp		node	${GS}/pspp/manual/html_node/
 pyconfigure	mono	${GS}/pyconfigure/manual/pyconfigure.html
 pyconfigure	node	${GS}/pyconfigure/manual/html_node/
 
-R = http://cran.r-project.org/doc/manuals
+R = https://cran.r-project.org/doc/manuals
  R-intro	mono	${R}/R-intro.html
  R-lang		mono	${R}/R-lang.html
  R-exts		mono	${R}/R-exts.html
@@ -656,7 +667,7 @@ xboard		node	${GS}/xboard/manual/html_node/
 # emacs-page
 # Free TeX-related Texinfo manuals on tug.org.
 
-T = http://tug.org/texinfohtml
+T = https://tug.org/texinfohtml
 
 dvipng		mono	${T}/dvipng.html
 dvips		mono	${T}/dvips.html
diff --git a/gnu/local.mk b/gnu/local.mk
index 33cf439870..9dd67ddd5c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1030,6 +1030,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/jbig2dec-ignore-testtest.patch		\
   %D%/packages/patches/jfsutils-add-sysmacros.patch		\
   %D%/packages/patches/jfsutils-include-systypes.patch		\
+  %D%/packages/patches/jsoncpp-fix-inverted-case.patch		\
   %D%/packages/patches/kdbusaddons-kinit-file-name.patch	\
   %D%/packages/patches/libnftnl-dont-check-NFTNL_FLOWTABLE_SIZE.patch	\
   %D%/packages/patches/libvirt-create-machine-cgroup.patch	\
@@ -1456,9 +1457,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/vsearch-unbundle-cityhash.patch		\
   %D%/packages/patches/vte-CVE-2012-2738-pt1.patch			\
   %D%/packages/patches/vte-CVE-2012-2738-pt2.patch			\
-  %D%/packages/patches/wavpack-CVE-2018-6767.patch		\
-  %D%/packages/patches/wavpack-CVE-2018-7253.patch		\
-  %D%/packages/patches/wavpack-CVE-2018-7254.patch		\
   %D%/packages/patches/weasyprint-library-paths.patch		\
   %D%/packages/patches/websocketpp-fix-for-boost-1.70.patch	\
   %D%/packages/patches/wicd-bitrate-none-fix.patch		\
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index cf06732e18..2b0e68fdc4 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -332,7 +332,7 @@ engineers, musicians, soundtrack editors and composers.")
 (define-public audacity
   (package
     (name "audacity")
-    (version "2.3.2")
+    (version "2.3.3")
     (source
      (origin
        (method git-fetch)
@@ -342,7 +342,7 @@ engineers, musicians, soundtrack editors and composers.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "08w96124vv8k4myd4vifq73ningq6404x889wvg2sk016kc4dfv1"))
+         "0707fsnrl4vjalsi21w4blwgz024qhd0w8rdd5j5vpxf5lyk2rbk"))
        (patches (search-patches "audacity-build-with-system-portaudio.patch"))
        (modules '((guix build utils)))
        (snippet
@@ -351,7 +351,7 @@ engineers, musicians, soundtrack editors and composers.")
            (for-each
             (lambda (dir)
               (delete-file-recursively (string-append "lib-src/" dir)))
-            '("expat" "ffmpeg" "libflac" "libid3tag" "libmad" "libogg"
+            '("expat" "ffmpeg" "lame" "libflac" "libid3tag" "libmad" "libogg"
               "libsndfile" "libsoxr" "libvamp" "libvorbis" "lv2"
               "portaudio-v19" "portmidi" "soundtouch" "twolame"
               ;; FIXME: these libraries have not been packaged yet:
@@ -451,7 +451,8 @@ engineers, musicians, soundtrack editors and composers.")
            (lambda* (#:key inputs #:allow-other-keys)
              (substitute* '("src/NoteTrack.cpp"
                             "src/AudioIO.cpp"
-                            "src/AudioIO.h")
+                            "src/AudioIO.h"
+                            "src/AudioIOBase.cpp")
                (("../lib-src/portmidi/pm_common/portmidi.h") "portmidi.h")
                (("../lib-src/portmidi/porttime/porttime.h") "porttime.h"))
              (substitute* "src/prefs/MidiIOPrefs.cpp"
@@ -2574,6 +2575,7 @@ Suil currently supports every combination of Gtk, Qt, and X11.")
        ("flac" ,flac)
        ("jack" ,jack-1)
        ("libogg" ,libogg)
+       ("libvorbis" ,libvorbis)
        ("speex" ,speex)
        ("ncurses" ,ncurses)
        ("freepats" ,freepats)))
@@ -2673,18 +2675,17 @@ stretching and pitch scaling of audio.  This package contains the library.")
 (define-public wavpack
   (package
     (name "wavpack")
-    (version "5.1.0")
+    (version "5.2.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://www.wavpack.com/"
-                                  name "-" version ".tar.bz2"))
-              (patches (search-patches "wavpack-CVE-2018-6767.patch"
-                                       "wavpack-CVE-2018-7253.patch"
-                                       "wavpack-CVE-2018-7254.patch"))
+                                  "wavpack-" version ".tar.xz"))
               (sha256
                (base32
-                "0i19c6krc0p9krwrqy9s5xahaafigqzxcn31piidmlaqadyn4f8r"))))
+                "1qvpvfx30kvrkw7y1g6r8xj109wszg1z0qmkfm17wf3flb7v3rbp"))))
     (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags '("--disable-static")))
     (home-page "http://www.wavpack.com/")
     (synopsis "Hybrid lossless audio codec")
     (description
diff --git a/gnu/packages/chez.scm b/gnu/packages/chez.scm
index 6f6b5a3948..2b9868f902 100644
--- a/gnu/packages/chez.scm
+++ b/gnu/packages/chez.scm
@@ -73,14 +73,7 @@
              (commit (string-append "v" version))))
        (sha256
         (base32 "1hagrqdp649n2g0wq2a9gfnz7mjcjakkw7ziplbj3db412bb7kx5"))
-       (file-name (git-file-name name version))
-       (modules '((guix build utils)))
-       (snippet
-        ;; Fix compilation with glibc >= 2.26, which removed xlocale.h.
-        '(begin
-           (substitute* "c/expeditor.c"
-             (("xlocale\\.h") "locale.h"))
-           #t))))
+       (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (inputs
      `(("ncurses" ,ncurses)
diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm
index e2c244c1a7..2d2827ffee 100644
--- a/gnu/packages/cmake.scm
+++ b/gnu/packages/cmake.scm
@@ -30,6 +30,7 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix utils)
+  #:use-module (guix deprecation)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system emacs)
   #:use-module (gnu packages)
@@ -207,22 +208,13 @@ and workspaces that can be used in the compiler environment of your choice.")
     (outputs '("out" "doc"))
     (properties (alist-delete 'hidden? (package-properties cmake-minimal)))))
 
-(define-public cmake/fixed
-  ;; This is a variant of CMake that fixes X.509 certificate lookup:
-  ;; <https://issues.guix.gnu.org/issue/37371>.
-  (package
-    (inherit cmake)
-    (version (string-append (package-version cmake) "-1"))
-    (source (origin
-              (inherit (package-source cmake))
-              (patches
-               (append (search-patches "cmake-curl-certificates.patch")
-                       (origin-patches (package-source cmake))))))))
-
 (define-public cmake-3.15.5
   ;; CMake 3.15.5 fixes some issues, but declare another version to
   ;; avoid triggering the rebuild of all CMake-based packages.
   ;; See <https://issues.guix.gnu.org/issue/38060>.
+  ;;
+  ;; Furthermore, this variant fixes X.509 certificate lookup:
+  ;; <https://issues.guix.gnu.org/issue/37371>.
   (package
     (inherit cmake)
     (version "3.15.5")
@@ -233,7 +225,28 @@ and workspaces that can be used in the compiler environment of your choice.")
                                   "/cmake-" version ".tar.gz"))
               (sha256
                (base32
-                "1d5y8d92axcc6rfqlsxamayfs3fc1vdby91hn5mx1kn02ppprpgv"))))))
+                "1d5y8d92axcc6rfqlsxamayfs3fc1vdby91hn5mx1kn02ppprpgv"))
+              (patches
+               (append (search-patches "cmake-curl-certificates.patch")
+                       (origin-patches (package-source cmake))))))
+
+    (native-search-paths
+     ;; "cmake-curl-certificates.patch" changes CMake to honor 'SSL_CERT_DIR'
+     ;; and 'SSL_CERT_FILE', hence these search path entries.
+     (append (list (search-path-specification
+                    (variable "SSL_CERT_DIR")
+                    (separator #f)                ;single entry
+                    (files '("etc/ssl/certs")))
+                   (search-path-specification
+                    (variable "SSL_CERT_FILE")
+                    (file-type 'regular)
+                    (separator #f)                ;single entry
+                    (files '("etc/ssl/certs/ca-certificates.crt"))))
+             (package-native-search-paths cmake)))))
+
+;; This was cmake@3.15.1 plus "cmake-curl-certificates.patch".
+(define-deprecated cmake/fixed cmake-3.15.5)
+(export cmake/fixed)
 
 (define-public emacs-cmake-mode
   (package
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index dd49c12e5b..1c6e759c83 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -10,7 +10,7 @@
 ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
-;;; Copyright © 2018 Nicolò Balzarotti <nicolo@nixo.xyz>
+;;; Copyright © 2018, 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
 ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
@@ -1040,3 +1040,30 @@ minisign uses a slightly different format to store secret keys.  Minisign
 signatures include trusted comments in addition to untrusted comments.
 Trusted comments are signed, thus verified, before being displayed.")
     (license license:isc)))
+
+(define-public libolm
+  (package
+    (name "libolm")
+    (version "3.1.4")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://git.matrix.org/git/olm")
+                    (commit version)))
+              (sha256
+               (base32
+                "06s7rw4a9vn35wzz7chxn54mp0sjgbpv2bzz9lq0g4hnzw33cjbi"))
+              (file-name (git-file-name name version))))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (invoke "ctest" "build/tests"))))))
+    (build-system cmake-build-system)
+    (synopsis "Implementation of the olm and megolm cryptographic ratchets")
+    (description "The libolm library implements the Double Ratchet
+cryptographic ratchet.  It is written in C and C++11, and exposed as a C
+API.")
+    (home-page "https://matrix.org/docs/projects/other/olm/")
+    (license license:asl2.0)))
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 0559f0c7cc..f91088351f 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -20422,8 +20422,8 @@ fish-completion.  It can be used in both Eshell and M-x shell.")
   ;; This package has versions newer than indicated on MELPA.
   ;; Get the current version from `telega-version` in telega.el.
   ;; or by running M-x telega-version.
-  (let ((commit "9bfb637b2e71f5f293debd35abd627a064faf8ef")
-	(revision "2")
+  (let ((commit "4497a3c19d9806eb9edfe13d326d6d9cbb895f64")
+	(revision "3")
 	(version "0.5.4"))
     (package
       (name "emacs-telega")
@@ -20436,7 +20436,7 @@ fish-completion.  It can be used in both Eshell and M-x shell.")
                (commit commit)))
          (sha256
           (base32
-           "06v8i3862n5kf2lnxii8vp9g8cq5ql51kr8yxh7l1wccsidri67a"))
+           "1g0gbbgs8rbcip6kqjxdmnsjlq0ixgknb0qcda7siaha9gd7fjh2"))
          (file-name (git-file-name name version))))
       (build-system gnu-build-system)
       (arguments
diff --git a/gnu/packages/entr.scm b/gnu/packages/entr.scm
index d0111452df..cacb5ab7f5 100644
--- a/gnu/packages/entr.scm
+++ b/gnu/packages/entr.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,6 +21,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages entr)
+  #:use-module (gnu packages ncurses)
   #:use-module (guix licenses)
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -52,11 +54,13 @@
                (invoke "./configure"))))
          (add-before 'build 'remove-fhs-file-names
            (lambda _
-             ;; Use the tools available in $PATH.
              (substitute* "entr.c"
-               (("/bin/cat") "cat")
-               (("/usr/bin/clear") "clear"))
+               (("/bin/sh") (which "sh"))
+               (("/bin/cat") (which "cat"))
+               (("/usr/bin/clear") (which "clear")))
              #t)))))
+    ;; ncurses provides the `clear' binary
+    (inputs `(("ncurses" ,ncurses)))
     (home-page "http://entrproject.org/")
     (synopsis "Run arbitrary commands when files change")
     (description
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 7066685dee..ed221439b4 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -16,6 +16,7 @@
 ;;; Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
 ;;; Copyright © 2019 Reza Alizadeh Majd <r.majd@pantherx.org>
 ;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -47,6 +48,7 @@
   #:use-module (gnu packages acl)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
@@ -55,6 +57,7 @@
   #:use-module (gnu packages disk)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
+  #:use-module (gnu packages gawk)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gl)
@@ -107,12 +110,19 @@
        ("libxslt" ,libxslt)
        ("w3m" ,w3m)
        ("xmlto" ,xmlto)))
-    (propagated-inputs
-     `(("perl-file-mimeinfo" ,perl-file-mimeinfo) ; for mimeopen fallback
+    (inputs
+     `(("awk" ,gawk)
+       ("coreutils" ,coreutils)
+       ("grep" ,grep)
+       ("inetutils" ,inetutils) ; xdg-screensaver uses `hostname'
+       ("perl-file-mimeinfo" ,perl-file-mimeinfo) ; for mimeopen fallback
+       ("sed" ,sed)
        ("xprop" ,xprop) ; for Xfce detecting
        ("xset" ,xset))) ; for xdg-screensaver
     (arguments
      `(#:tests? #f   ; no check target
+       #:modules ((srfi srfi-26)
+                  ,@%gnu-build-system-modules)
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-hardcoded-paths
@@ -144,6 +154,21 @@
                                  "/manpages/docbook.xsl man")))
                (setenv "STYLESHEET"
                        (string-append xsldoc "/html/docbook.xsl"))
+               #t)))
+         (add-after 'install 'wrap-executables
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (with-directory-excursion (string-append out "/bin")
+                 (let ((path-ext
+                        (map (cute string-append <> "/bin")
+                             (cons out
+                                   (map (cute assoc-ref inputs <>)
+                                        '("awk" "coreutils" "grep" "inetutils"
+                                          "perl-file-mimeinfo" "sed" "xprop"
+                                          "xset"))))))
+                   (for-each (cute wrap-program <>
+                                   `("PATH" ":" prefix ,path-ext))
+                             (find-files "."))))
                #t))))))
     (home-page "https://www.freedesktop.org/wiki/Software/xdg-utils/")
     (synopsis "Freedesktop.org scripts for desktop integration")
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index efc6113a03..2e5f129a07 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -298,7 +298,7 @@ features to enable users to create their discs easily and quickly.")
 it easy to manage, install and generate color profiles
 in the GNOME desktop.")
    (home-page "https://gitlab.gnome.org/GNOME/gnome-color-manager")
-   (license license:gpl2)))
+   (license license:gpl2+)))
 
 (define-public gnome-online-miners
   (package
@@ -333,7 +333,7 @@ in the GNOME desktop.")
 go through your online content and index them locally in Tracker.
 It has miners for Facebook, Flickr, Google, ownCloud and SkyDrive.")
     (home-page "https://wiki.gnome.org/Projects/GnomeOnlineMiners")
-    (license license:gpl2)))
+    (license license:gpl2+)))
 
 (define-public libmediaart
   (package
@@ -385,7 +385,7 @@ extraction, and lookup for applications on the desktop.")
     (description "GNOME Menus contains the libgnome-menu library, the layout
 configuration files for the GNOME menu, as well as a simple menu editor.")
     (home-page "https://gitlab.gnome.org/GNOME/gnome-menus")
-    (license license:gpl2)))
+    (license license:lgpl2.0+)))
 
 (define-public deja-dup
   (package
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index 323e3ccfee..63b4179bc6 100644
--- a/gnu/packages/gstreamer.scm
+++ b/gnu/packages/gstreamer.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2016, 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -168,7 +168,14 @@ This package provides the core library and elements.")
     (propagated-inputs
      `(("glib" ,glib)              ;required by gstreamer-sdp-1.0.pc
        ("gstreamer" ,gstreamer)    ;required by gstreamer-plugins-base-1.0.pc
-       ("orc" ,orc)))              ;required by gstreamer-audio-1.0.pc
+
+       ;; XXX: Do not enable Orc optimizations on ARM systems because
+       ;; it leads to two test failures.
+       ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/683
+       ,@(if (string-prefix? "arm" (or (%current-target-system)
+                                       (%current-system)))
+             '()
+             `(("orc" ,orc)))))         ;required by gstreamer-audio-1.0.pc
     (inputs
      `(("cdparanoia" ,cdparanoia)
        ("pango" ,pango)
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index 30a72ec62c..bcb8ff1a56 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2014, 2016, 2018 David Thompson <davet@gnu.org>
 ;;; Copyright © 2014, 2017, 2018 Mark H Weaver <mhw@netris.org>
@@ -460,9 +460,7 @@ specification.  These are the main features:
 ;; Deprecate the 'guile-json' alias to force the use 'guile-json-1' or
 ;; 'guile-json-3'.  In the future, we may reuse 'guile-json' as an alias for
 ;; 'guile-json-3'.
-(define-deprecated guile-json
-  guile-json-1
-  guile-json-1)
+(define-deprecated guile-json guile-json-1)
 (export guile-json)
 
 (define-public guile2.0-json
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index 1620cb1b2e..bb5c25014e 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -7,7 +7,7 @@
 ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
 ;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2018, 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
-;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -297,7 +297,7 @@ for some KDevelop language plugins (Ruby, PHP, CSS...).")
     (license license:lgpl2.0+)))
 
 ;; kdevplatform was merged into kdevelop as of 5.2.x
-(define-deprecated kdevplatform kdevelop kdevelop)
+(define-deprecated kdevplatform kdevelop)
 
 (define-public krita
   (package
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index 8d9cf53526..cffd43cfc7 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -3376,6 +3376,19 @@ client and server.")
      (build-system asdf-build-system/sbcl)
      (inputs
       `(("sbcl-lift" ,sbcl-lift)))
+     (arguments
+      `(#:phases
+        (modify-phases %standard-phases
+          (add-after 'check 'delete-test-results
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let ((test-results (string-append (assoc-ref outputs "out")
+                                                 "/share/common-lisp/"
+                                                 (%lisp-type) "-source"
+                                                 "/trivial-backtrace"
+                                                 "/test-results")))
+                (when (file-exists? test-results)
+                  (delete-file-recursively test-results)))
+              #t)))))
      (home-page "https://common-lisp.net/project/trivial-backtrace/")
      (synopsis "Portable simple API to work with backtraces in Common Lisp")
      (description
diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm
index 55641d8fa1..00e0d12eab 100644
--- a/gnu/packages/mpi.scm
+++ b/gnu/packages/mpi.scm
@@ -159,8 +159,7 @@ bind processes, and much more.")
                   "-1"))
                #t))))))))
 
-(define-deprecated hwloc-2.0 'hwloc-2
-  hwloc-2)
+(define-deprecated hwloc-2.0 hwloc-2)
 
 (define-public hwloc
   ;; The latest stable series of hwloc.
diff --git a/gnu/packages/patches/audacity-build-with-system-portaudio.patch b/gnu/packages/patches/audacity-build-with-system-portaudio.patch
index 3b73a6c930..05325a1493 100644
--- a/gnu/packages/patches/audacity-build-with-system-portaudio.patch
+++ b/gnu/packages/patches/audacity-build-with-system-portaudio.patch
@@ -1,6 +1,8 @@
 Downloaded from here:
 https://sourceforge.net/p/audacity/mailman/message/36106562/
 
+Modified for use on later versions of audacity.
+
 >From 5f9482a191359f2c477763a36d2c865c5f186602 Mon Sep 17 00:00:00 2001
 From: Antonio Ospite <ao2@ao2.it>
 Date: Tue, 7 Nov 2017 13:06:33 +0100
@@ -31,16 +33,16 @@ over the code where it's used.
  1 file changed, 16 insertions(+), 1 deletion(-)
 
 diff --git a/src/AudioIO.cpp b/src/AudioIO.cpp
-index a78bd1cab..d5481838d 100644
+index 48715869c..bb4bf472c 100644
 --- a/src/AudioIO.cpp
 +++ b/src/AudioIO.cpp
-@@ -452,8 +452,23 @@ writing audio.
+@@ -480,9 +480,22 @@ time warp info and AudioIOListener and whether the playback is looped.
     #define ROUND(x) (int) ((x)+0.5)
     //#include <string.h>
-    #include "../lib-src/portmidi/pm_common/portmidi.h"
+ //   #include "../lib-src/portmidi/pm_common/portmidi.h"
 -   #include "../lib-src/portaudio-v19/src/common/pa_util.h"
     #include "NoteTrack.h"
-+
+ #endif
 +PaTime PaUtil_GetTime( void )
 +{
 +#ifdef HAVE_MACH_ABSOLUTE_TIME
@@ -55,10 +57,6 @@ index a78bd1cab..d5481838d 100644
 +    return (PaTime) tv.tv_usec * 1e-6 + tv.tv_sec;
 +#endif
 +}
-+
- #endif
  
  #ifdef EXPERIMENTAL_AUTOMATED_INPUT_LEVEL_ADJUSTMENT
--- 
-2.15.0
-
+    #define LOWER_BOUND 0.0
diff --git a/gnu/packages/patches/jsoncpp-fix-inverted-case.patch b/gnu/packages/patches/jsoncpp-fix-inverted-case.patch
new file mode 100644
index 0000000000..e4897de1b8
--- /dev/null
+++ b/gnu/packages/patches/jsoncpp-fix-inverted-case.patch
@@ -0,0 +1,22 @@
+This patch fixes a bug and related test failure on platforms where 'char'
+is unsigned.
+
+Taken from upstream:
+https://github.com/open-source-parsers/jsoncpp/commit/f11611c8785082ead760494cba06196f14a06dcb
+
+diff --git a/src/lib_json/json_writer.cpp b/src/lib_json/json_writer.cpp
+index 8e06cca2..56195dc1 100644
+--- a/src/lib_json/json_writer.cpp
++++ b/src/lib_json/json_writer.cpp
+@@ -178,8 +178,9 @@ static bool isAnyCharRequiredQuoting(char const* s, size_t n) {
+ 
+   char const* const end = s + n;
+   for (char const* cur = s; cur < end; ++cur) {
+-    if (*cur == '\\' || *cur == '\"' || *cur < ' ' ||
+-        static_cast<unsigned char>(*cur) < 0x80)
++    if (*cur == '\\' || *cur == '\"' ||
++        static_cast<unsigned char>(*cur) < ' ' ||
++        static_cast<unsigned char>(*cur) >= 0x80)
+       return true;
+   }
+   return false;
diff --git a/gnu/packages/patches/wavpack-CVE-2018-6767.patch b/gnu/packages/patches/wavpack-CVE-2018-6767.patch
deleted file mode 100644
index f49a8f0fd6..0000000000
--- a/gnu/packages/patches/wavpack-CVE-2018-6767.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-Fix CVE-2018-6767:
-https://nvd.nist.gov/vuln/detail/CVE-2018-6767
-https://security-tracker.debian.org/tracker/CVE-2018-6767
-
-Patch copied from upstream source repository:
-https://github.com/dbry/WavPack/commit/d5bf76b5a88d044a1be1d5656698e3ba737167e5
-
-From d5bf76b5a88d044a1be1d5656698e3ba737167e5 Mon Sep 17 00:00:00 2001
-From: David Bryant <david@wavpack.com>
-Date: Sun, 4 Feb 2018 11:28:15 -0800
-Subject: [PATCH] issue #27, do not overwrite stack on corrupt RF64 file
-
----
- cli/riff.c | 39 ++++++++++++++++++++++++++++++++-------
- 1 file changed, 32 insertions(+), 7 deletions(-)
-
-diff --git a/cli/riff.c b/cli/riff.c
-index 8b1af45..de98c1e 100644
---- a/cli/riff.c
-+++ b/cli/riff.c
-@@ -42,6 +42,7 @@ typedef struct {
- 
- #pragma pack(pop)
- 
-+#define CS64ChunkFormat "4D"
- #define DS64ChunkFormat "DDDL"
- 
- #define WAVPACK_NO_ERROR    0
-@@ -101,13 +102,13 @@ int ParseRiffHeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpack
- 
-         if (!strncmp (chunk_header.ckID, "ds64", 4)) {
-             if (chunk_header.ckSize < sizeof (DS64Chunk) ||
--                !DoReadFile (infile, &ds64_chunk, chunk_header.ckSize, &bcount) ||
--                bcount != chunk_header.ckSize) {
-+                !DoReadFile (infile, &ds64_chunk, sizeof (DS64Chunk), &bcount) ||
-+                bcount != sizeof (DS64Chunk)) {
-                     error_line ("%s is not a valid .WAV file!", infilename);
-                     return WAVPACK_SOFT_ERROR;
-             }
-             else if (!(config->qmode & QMODE_NO_STORE_WRAPPER) &&
--                !WavpackAddWrapper (wpc, &ds64_chunk, chunk_header.ckSize)) {
-+                !WavpackAddWrapper (wpc, &ds64_chunk, sizeof (DS64Chunk))) {
-                     error_line ("%s", WavpackGetErrorMessage (wpc));
-                     return WAVPACK_SOFT_ERROR;
-             }
-@@ -315,10 +316,11 @@ int ParseRiffHeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpack
- 
- int WriteRiffHeader (FILE *outfile, WavpackContext *wpc, int64_t total_samples, int qmode)
- {
--    int do_rf64 = 0, write_junk = 1;
-+    int do_rf64 = 0, write_junk = 1, table_length = 0;
-     ChunkHeader ds64hdr, datahdr, fmthdr;
-     RiffChunkHeader riffhdr;
-     DS64Chunk ds64_chunk;
-+    CS64Chunk cs64_chunk;
-     JunkChunk junkchunk;
-     WaveHeader wavhdr;
-     uint32_t bcount;
-@@ -380,6 +382,7 @@ int WriteRiffHeader (FILE *outfile, WavpackContext *wpc, int64_t total_samples,
-     strncpy (riffhdr.formType, "WAVE", sizeof (riffhdr.formType));
-     total_riff_bytes = sizeof (riffhdr) + wavhdrsize + sizeof (datahdr) + ((total_data_bytes + 1) & ~(int64_t)1);
-     if (do_rf64) total_riff_bytes += sizeof (ds64hdr) + sizeof (ds64_chunk);
-+    total_riff_bytes += table_length * sizeof (CS64Chunk);
-     if (write_junk) total_riff_bytes += sizeof (junkchunk);
-     strncpy (fmthdr.ckID, "fmt ", sizeof (fmthdr.ckID));
-     strncpy (datahdr.ckID, "data", sizeof (datahdr.ckID));
-@@ -394,11 +397,12 @@ int WriteRiffHeader (FILE *outfile, WavpackContext *wpc, int64_t total_samples,
- 
-     if (do_rf64) {
-         strncpy (ds64hdr.ckID, "ds64", sizeof (ds64hdr.ckID));
--        ds64hdr.ckSize = sizeof (ds64_chunk);
-+        ds64hdr.ckSize = sizeof (ds64_chunk) + (table_length * sizeof (CS64Chunk));
-         CLEAR (ds64_chunk);
-         ds64_chunk.riffSize64 = total_riff_bytes;
-         ds64_chunk.dataSize64 = total_data_bytes;
-         ds64_chunk.sampleCount64 = total_samples;
-+        ds64_chunk.tableLength = table_length;
-         riffhdr.ckSize = (uint32_t) -1;
-         datahdr.ckSize = (uint32_t) -1;
-         WavpackNativeToLittleEndian (&ds64hdr, ChunkHeaderFormat);
-@@ -409,6 +413,14 @@ int WriteRiffHeader (FILE *outfile, WavpackContext *wpc, int64_t total_samples,
-         datahdr.ckSize = (uint32_t) total_data_bytes;
-     }
- 
-+    // this "table" is just a dummy placeholder for testing (normally not written)
-+
-+    if (table_length) {
-+        strncpy (cs64_chunk.ckID, "dmmy", sizeof (cs64_chunk.ckID));
-+        cs64_chunk.chunkSize64 = 12345678;
-+        WavpackNativeToLittleEndian (&cs64_chunk, CS64ChunkFormat);
-+    }
-+
-     // write the RIFF chunks up to just before the data starts
- 
-     WavpackNativeToLittleEndian (&riffhdr, ChunkHeaderFormat);
-@@ -418,8 +430,21 @@ int WriteRiffHeader (FILE *outfile, WavpackContext *wpc, int64_t total_samples,
- 
-     if (!DoWriteFile (outfile, &riffhdr, sizeof (riffhdr), &bcount) || bcount != sizeof (riffhdr) ||
-         (do_rf64 && (!DoWriteFile (outfile, &ds64hdr, sizeof (ds64hdr), &bcount) || bcount != sizeof (ds64hdr))) ||
--        (do_rf64 && (!DoWriteFile (outfile, &ds64_chunk, sizeof (ds64_chunk), &bcount) || bcount != sizeof (ds64_chunk))) ||
--        (write_junk && (!DoWriteFile (outfile, &junkchunk, sizeof (junkchunk), &bcount) || bcount != sizeof (junkchunk))) ||
-+        (do_rf64 && (!DoWriteFile (outfile, &ds64_chunk, sizeof (ds64_chunk), &bcount) || bcount != sizeof (ds64_chunk)))) {
-+            error_line ("can't write .WAV data, disk probably full!");
-+            return FALSE;
-+    }
-+
-+    // again, this is normally not written except for testing
-+
-+    while (table_length--)
-+        if (!DoWriteFile (outfile, &cs64_chunk, sizeof (cs64_chunk), &bcount) || bcount != sizeof (cs64_chunk)) {
-+            error_line ("can't write .WAV data, disk probably full!");
-+            return FALSE;
-+        }
-+
-+
-+    if ((write_junk && (!DoWriteFile (outfile, &junkchunk, sizeof (junkchunk), &bcount) || bcount != sizeof (junkchunk))) ||
-         !DoWriteFile (outfile, &fmthdr, sizeof (fmthdr), &bcount) || bcount != sizeof (fmthdr) ||
-         !DoWriteFile (outfile, &wavhdr, wavhdrsize, &bcount) || bcount != wavhdrsize ||
-         !DoWriteFile (outfile, &datahdr, sizeof (datahdr), &bcount) || bcount != sizeof (datahdr)) {
diff --git a/gnu/packages/patches/wavpack-CVE-2018-7253.patch b/gnu/packages/patches/wavpack-CVE-2018-7253.patch
deleted file mode 100644
index 651755afd0..0000000000
--- a/gnu/packages/patches/wavpack-CVE-2018-7253.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-Fix CVE-2018-7253:
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-7253
-
-Copied from upstream:
-https://github.com/dbry/WavPack/commit/36a24c7881427d2e1e4dc1cef58f19eee0d13aec
-
-diff --git a/cli/dsdiff.c b/cli/dsdiff.c
-index 410dc1c..c016df9 100644
---- a/cli/dsdiff.c
-+++ b/cli/dsdiff.c
-@@ -153,7 +153,17 @@ int ParseDsdiffHeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpa
-                 error_line ("dsdiff file version = 0x%08x", version);
-         }
-         else if (!strncmp (dff_chunk_header.ckID, "PROP", 4)) {
--            char *prop_chunk = malloc ((size_t) dff_chunk_header.ckDataSize);
-+            char *prop_chunk;
-+
-+            if (dff_chunk_header.ckDataSize < 4 || dff_chunk_header.ckDataSize > 1024) {
-+                error_line ("%s is not a valid .DFF file!", infilename);
-+                return WAVPACK_SOFT_ERROR;
-+            }
-+
-+            if (debug_logging_mode)
-+                error_line ("got PROP chunk of %d bytes total", (int) dff_chunk_header.ckDataSize);
-+
-+            prop_chunk = malloc ((size_t) dff_chunk_header.ckDataSize);
- 
-             if (!DoReadFile (infile, prop_chunk, (uint32_t) dff_chunk_header.ckDataSize, &bcount) ||
-                 bcount != dff_chunk_header.ckDataSize) {
diff --git a/gnu/packages/patches/wavpack-CVE-2018-7254.patch b/gnu/packages/patches/wavpack-CVE-2018-7254.patch
deleted file mode 100644
index 61db296ec8..0000000000
--- a/gnu/packages/patches/wavpack-CVE-2018-7254.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-Fix CVE-2018-7254:
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-7254
-
-Copied from upstream:
-https://github.com/dbry/WavPack/commit/8e3fe45a7bac31d9a3b558ae0079e2d92a04799e
-
-diff --git a/cli/caff.c b/cli/caff.c
-index ae57c4b..6248a71 100644
---- a/cli/caff.c
-+++ b/cli/caff.c
-@@ -89,8 +89,8 @@ typedef struct
- 
- #define CAFChannelDescriptionFormat "LLLLL"
- 
--static const char TMH_full [] = { 1,2,3,13,9,10,5,6,12,14,15,16,17,9,4,18,7,8,19,20,21 };
--static const char TMH_std [] = { 1,2,3,11,8,9,5,6,10,12,13,14,15,7,4,16 };
-+static const char TMH_full [] = { 1,2,3,13,9,10,5,6,12,14,15,16,17,9,4,18,7,8,19,20,21,0 };
-+static const char TMH_std [] = { 1,2,3,11,8,9,5,6,10,12,13,14,15,7,4,16,0 };
- 
- static struct {
-     uint32_t mChannelLayoutTag;     // Core Audio layout, 100 - 146 in high word, num channels in low word
-@@ -274,10 +274,19 @@ int ParseCaffHeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpack
-             }
-         }
-         else if (!strncmp (caf_chunk_header.mChunkType, "chan", 4)) {
--            CAFChannelLayout *caf_channel_layout = malloc ((size_t) caf_chunk_header.mChunkSize);
-+            CAFChannelLayout *caf_channel_layout;
- 
--            if (caf_chunk_header.mChunkSize < sizeof (CAFChannelLayout) ||
--                !DoReadFile (infile, caf_channel_layout, (uint32_t) caf_chunk_header.mChunkSize, &bcount) ||
-+            if (caf_chunk_header.mChunkSize < sizeof (CAFChannelLayout) || caf_chunk_header.mChunkSize > 1024) {
-+                error_line ("this .CAF file has an invalid 'chan' chunk!");
-+                return WAVPACK_SOFT_ERROR;
-+            }
-+
-+            if (debug_logging_mode)
-+                error_line ("'chan' chunk is %d bytes", (int) caf_chunk_header.mChunkSize);
-+
-+            caf_channel_layout = malloc ((size_t) caf_chunk_header.mChunkSize);
-+
-+            if (!DoReadFile (infile, caf_channel_layout, (uint32_t) caf_chunk_header.mChunkSize, &bcount) ||
-                 bcount != caf_chunk_header.mChunkSize) {
-                     error_line ("%s is not a valid .CAF file!", infilename);
-                     free (caf_channel_layout);
-@@ -495,8 +504,15 @@ int ParseCaffHeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpack
-         }
-         else {          // just copy unknown chunks to output file
- 
--            int bytes_to_copy = (uint32_t) caf_chunk_header.mChunkSize;
--            char *buff = malloc (bytes_to_copy);
-+            uint32_t bytes_to_copy = (uint32_t) caf_chunk_header.mChunkSize;
-+            char *buff;
-+
-+            if (caf_chunk_header.mChunkSize < 0 || caf_chunk_header.mChunkSize > 1048576) {
-+                error_line ("%s is not a valid .CAF file!", infilename);
-+                return WAVPACK_SOFT_ERROR;
-+            }
-+
-+            buff = malloc (bytes_to_copy);
- 
-             if (debug_logging_mode)
-                 error_line ("extra unknown chunk \"%c%c%c%c\" of %d bytes",
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 7c2cb0af21..514577678e 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
-;;; Copyright © 2015, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
@@ -588,7 +588,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
 
 
 ;; qt used to refer to the monolithic Qt 5.x package
-(define-deprecated qt qtbase qtbase)
+(define-deprecated qt qtbase)
 
 
 (define-public qtsvg
diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index cf80237f11..72cc70e3c4 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -290,6 +290,7 @@ that implements both the msgpack and msgpack-rpc specifications.")
               (method git-fetch)
               (uri (git-reference (url home-page) (commit version)))
               (file-name (git-file-name name version))
+              (patches (search-patches "jsoncpp-fix-inverted-case.patch"))
               (sha256
                (base32
                 "037d1b1qdmn3rksmn1j71j26bv4hkjv7sn7da261k853xb5899sg"))))
diff --git a/gnu/system.scm b/gnu/system.scm
index 7033671526..01baa248a2 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -574,7 +574,6 @@ of PROVENANCE-SERVICE-TYPE to its services."
          iw wireless-tools
 
          iproute
-         net-tools                        ; XXX: remove when Inetutils suffices
          man-db
          info-reader                     ;the standalone Info reader (no Perl)
 
diff --git a/guix/build/asdf-build-system.scm b/guix/build/asdf-build-system.scm
index 1be2b3c5f0..f3f4b49bcf 100644
--- a/guix/build/asdf-build-system.scm
+++ b/guix/build/asdf-build-system.scm
@@ -79,6 +79,15 @@ valid."
   (let ((source (getcwd))
         (target (source-directory out name))
         (system-path (string-append out %system-install-prefix)))
+    ;; SBCL keeps the modification time of the source file in the compiled
+    ;; file, and the source files might just have been patched by a custom
+    ;; phase. Therefore we reset the modification time of all the source
+    ;; files before compiling.
+    (for-each (lambda (file)
+                (let ((s (lstat file)))
+                  (unless (eq? (stat:type s) 'symlink)
+                    (utime file 0 0 0 0))))
+              (find-files source #:directories? #t))
     (copy-recursively source target #:keep-mtime? #t)
     (mkdir-p system-path)
     (for-each
diff --git a/guix/deprecation.scm b/guix/deprecation.scm
index 468b2e9b7b..04d4d4a337 100644
--- a/guix/deprecation.scm
+++ b/guix/deprecation.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -44,6 +44,7 @@
     "Define a deprecated variable or procedure, along these lines:
 
   (define-deprecated foo bar 42)
+  (define-deprecated old new)
   (define-deprecated (baz x y) qux (qux y x))
 
 This will write a deprecation warning to GUIX-WARNING-PORT."
@@ -73,7 +74,10 @@ This will write a deprecation warning to GUIX-WARNING-PORT."
                     #'(real args (... ...)))
                    (id
                     (identifier? #'id)
-                    #'real))))))))))
+                    #'real)))))))
+      ((_ variable alias)
+       (identifier? #'alias)
+       #'(define-deprecated variable alias alias)))))
 
 (define-syntax-rule (define-deprecated/alias deprecated replacement)
   "Define as an alias a deprecated variable, procedure, or macro, along
diff --git a/nix/libstore/gc.cc b/nix/libstore/gc.cc
index 29b75aa875..77d7fa2dc7 100644
--- a/nix/libstore/gc.cc
+++ b/nix/libstore/gc.cc
@@ -392,7 +392,14 @@ bool LocalStore::isActiveTempFile(const GCState & state,
 void LocalStore::deleteGarbage(GCState & state, const Path & path)
 {
     unsigned long long bytesFreed;
-    deletePath(path, bytesFreed);
+
+    /* When deduplication is on, store items always have at least two links:
+       the one at PATH, and one in /gnu/store/.links.  In that case, increase
+       bytesFreed when PATH has two or fewer links.  */
+    size_t linkThreshold =
+	(settings.autoOptimiseStore && isStorePath(path)) ? 2 : 1;
+
+    deletePath(path, bytesFreed, linkThreshold);
     state.results.bytesFreed += bytesFreed;
 }
 
@@ -419,13 +426,14 @@ void LocalStore::deletePathRecursive(GCState & state, const Path & path)
     }
 
     if (state.options.maxFreed != ULLONG_MAX) {
-	double fraction = state.results.bytesFreed + size
-	    / state.options.maxFreed;
+	auto freed = state.results.bytesFreed + state.bytesInvalidated;
+	double fraction = ((double) freed) / (double) state.options.maxFreed;
 	unsigned int percentage = (fraction > 1. ? 1. : fraction) * 100.;
 	printMsg(lvlInfo, format("[%1%%%] deleting '%2%'") % percentage % path);
     } else {
-	size_t total = (state.results.bytesFreed + size) / (1024 * 1024);
-	printMsg(lvlInfo, format("[%1% MiB] deleting '%2%'") % total % path);
+	auto freed = state.results.bytesFreed + state.bytesInvalidated;
+	freed /=  1024ULL * 1024ULL;
+	printMsg(lvlInfo, format("[%1% MiB] deleting '%2%'") % freed % path);
     }
 
     state.results.paths.insert(path);
diff --git a/nix/libutil/util.cc b/nix/libutil/util.cc
index faba3789df..fb2dfad1f7 100644
--- a/nix/libutil/util.cc
+++ b/nix/libutil/util.cc
@@ -305,7 +305,7 @@ void writeLine(int fd, string s)
 }
 
 
-static void _deletePath(const Path & path, unsigned long long & bytesFreed)
+static void _deletePath(const Path & path, unsigned long long & bytesFreed, size_t linkThreshold)
 {
     checkInterrupt();
 
@@ -324,7 +324,7 @@ static void _deletePath(const Path & path, unsigned long long & bytesFreed)
     struct stat st = lstat(path);
 #endif
 
-    if (!S_ISDIR(st.st_mode) && st.st_nlink == 1)
+    if (!S_ISDIR(st.st_mode) && st.st_nlink <= linkThreshold)
 	bytesFreed += st.st_size;
 
     if (S_ISDIR(st.st_mode)) {
@@ -335,7 +335,7 @@ static void _deletePath(const Path & path, unsigned long long & bytesFreed)
         }
 
         for (auto & i : readDirectory(path))
-            _deletePath(path + "/" + i.name, bytesFreed);
+            _deletePath(path + "/" + i.name, bytesFreed, linkThreshold);
     }
 #undef st_mode
 #undef st_size
@@ -353,12 +353,12 @@ void deletePath(const Path & path)
 }
 
 
-void deletePath(const Path & path, unsigned long long & bytesFreed)
+void deletePath(const Path & path, unsigned long long & bytesFreed, size_t linkThreshold)
 {
     startNest(nest, lvlDebug,
         format("recursively deleting path `%1%'") % path);
     bytesFreed = 0;
-    _deletePath(path, bytesFreed);
+    _deletePath(path, bytesFreed, linkThreshold);
 }
 
 
diff --git a/nix/libutil/util.hh b/nix/libutil/util.hh
index 6a6e07c478..9e3c14bdd4 100644
--- a/nix/libutil/util.hh
+++ b/nix/libutil/util.hh
@@ -94,10 +94,12 @@ void writeLine(int fd, string s);
 
 /* Delete a path; i.e., in the case of a directory, it is deleted
    recursively.  Don't use this at home, kids.  The second variant
-   returns the number of bytes and blocks freed. */
+   returns the number of bytes and blocks freed, and 'linkThreshold' denotes
+   the number of links under which a file is accounted for in 'bytesFreed'.  */
 void deletePath(const Path & path);
 
-void deletePath(const Path & path, unsigned long long & bytesFreed);
+void deletePath(const Path & path, unsigned long long & bytesFreed,
+    size_t linkThreshold = 1);
 
 /* Create a temporary directory. */
 Path createTempDir(const Path & tmpRoot = "", const Path & prefix = "nix",