summary refs log tree commit diff
path: root/gnu/packages/patches
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r--gnu/packages/patches/bind-fix-unused-pk11-ecc-constants.patch43
-rw-r--r--gnu/packages/patches/docker-use-fewer-modprobes.patch137
-rw-r--r--gnu/packages/patches/emacs-undohist-ignored.patch27
-rw-r--r--gnu/packages/patches/emacs-zones-called-interactively.patch43
-rw-r--r--gnu/packages/patches/flac-CVE-2017-6888.patch29
-rw-r--r--gnu/packages/patches/grub-efi-fat-serial-number.patch27
-rw-r--r--gnu/packages/patches/idris-test-no-node.patch61
-rw-r--r--gnu/packages/patches/knot-include-system-lmdb-header.patch34
-rw-r--r--gnu/packages/patches/kodi-set-libcurl-ssl-parameters.patch17
-rw-r--r--gnu/packages/patches/lcms-CVE-2018-16435.patch171
-rw-r--r--gnu/packages/patches/ledger-fix-uninitialized.patch27
-rw-r--r--gnu/packages/patches/libopenshot-fixup-tests.patch148
-rw-r--r--gnu/packages/patches/libopenshot-tests-with-system-libs.patch95
-rw-r--r--gnu/packages/patches/linkchecker-tests-require-network.patch (renamed from gnu/packages/patches/linkchecker-mark-more-tests-that-require-the-network.patch)0
-rw-r--r--gnu/packages/patches/localed-xorg-keyboard.patch322
-rw-r--r--gnu/packages/patches/mtools-mformat-uninitialized.patch20
-rw-r--r--gnu/packages/patches/ntfs-3g-CVE-2019-9755.patch72
-rw-r--r--gnu/packages/patches/ocaml-dose3-Fix-for-ocaml-4.06.patch52
-rw-r--r--gnu/packages/patches/ocaml-dose3-Install-mli-cmx-etc.patch133
-rw-r--r--gnu/packages/patches/ocaml-dose3-add-unix-dependency.patch25
-rw-r--r--gnu/packages/patches/ocaml-dose3-dont-make-printconf.patch9
-rw-r--r--gnu/packages/patches/openssh-CVE-2018-20685.patch44
-rw-r--r--gnu/packages/patches/python-pyfakefs-remove-bad-test.patch23
-rw-r--r--gnu/packages/patches/python-robotframework-honor-source-date-epoch.patch62
-rw-r--r--gnu/packages/patches/quilt-getopt-nondigit-param.patch45
-rw-r--r--gnu/packages/patches/quilt-getopt-second-separator.patch58
-rw-r--r--gnu/packages/patches/quilt-test-fix-regex.patch41
-rw-r--r--gnu/packages/patches/reptyr-fix-gcc-7.patch38
-rw-r--r--gnu/packages/patches/soundtouch-CVE-2018-1000223.patch143
-rw-r--r--gnu/packages/patches/soundtouch-CVE-2018-14044-14045.patch138
-rw-r--r--gnu/packages/patches/synfigstudio-fix-ui-with-gtk3.patch55
-rw-r--r--gnu/packages/patches/texlive-bin-CVE-2018-17407.patch249
-rw-r--r--gnu/packages/patches/texlive-bin-pdftex-poppler-compat.patch188
-rw-r--r--gnu/packages/patches/texlive-bin-xetex-poppler-compat.patch31
-rw-r--r--gnu/packages/patches/u-boot-fix-mkimage-header-verification.patch57
-rw-r--r--gnu/packages/patches/webkitgtk-sse2.patch202
36 files changed, 1781 insertions, 1085 deletions
diff --git a/gnu/packages/patches/bind-fix-unused-pk11-ecc-constants.patch b/gnu/packages/patches/bind-fix-unused-pk11-ecc-constants.patch
new file mode 100644
index 0000000000..ab7cc83684
--- /dev/null
+++ b/gnu/packages/patches/bind-fix-unused-pk11-ecc-constants.patch
@@ -0,0 +1,43 @@
+From: Tobias Geerinckx-Rice <me@tobias.gr>
+Date: Thu, 25 Apr 2019 04:36:52 +0200
+Subject: [PATCH] gnu: bind: Fix unused PKCS#11 ECC constants.
+
+Without this patch, the build fails:
+
+  pkcs11-keygen.c: In function ‘main’:
+  pkcs11-keygen.c:424:32: error: ‘pk11_ecc_prime256v1’ undeclared (first use in this function)
+      public_template[4].pValue = pk11_ecc_prime256v1;
+                                  ^
+  pkcs11-keygen.c:424:32: note: each undeclared identifier is reported only once for each function it appears in
+  pkcs11-keygen.c:428:32: error: ‘pk11_ecc_secp384r1’ undeclared (first use in this function)
+      public_template[4].pValue = pk11_ecc_secp384r1;
+                                  ^
+  make[2]: *** [Makefile:217: pkcs11-keygen.o] Error 1
+
+Fix copied verbatim from upstream[0].
+
+[0]: https://gitlab.isc.org/isc-projects/bind9/issues/935
+
+---
+--- orig-bind-9.11.6/bin/pkcs11/pkcs11-keygen.c	2019-02-27 15:28:15.000000000 -0800
++++ bind-9.11.6/bin/pkcs11/pkcs11-keygen.c	2019-03-11 09:20:50.955257469 -0700
+@@ -403,6 +403,10 @@
+ 		public_template[RSA_PUBLIC_EXPONENT].ulValueLen = expsize;
+ 		break;
+ 	case key_ecc:
++#if !defined(HAVE_PKCS11_ECDSA)
++		fprintf(stderr, "prime256v1 and secp3841r1 is not supported\n");
++		usage();
++#else
+ 		op_type = OP_EC;
+ 		if (bits == 0)
+ 			bits = 256;
+@@ -429,7 +433,7 @@
+ 			public_template[4].ulValueLen =
+ 				sizeof(pk11_ecc_secp384r1);
+ 		}
+-
++#endif
+ 		break;
+ 	case key_ecx:
+ #if !defined(CKM_EDDSA_KEY_PAIR_GEN)
diff --git a/gnu/packages/patches/docker-use-fewer-modprobes.patch b/gnu/packages/patches/docker-use-fewer-modprobes.patch
new file mode 100644
index 0000000000..4e4a45b6ce
--- /dev/null
+++ b/gnu/packages/patches/docker-use-fewer-modprobes.patch
@@ -0,0 +1,137 @@
+This patch makes docker find out whether a filesystem type is supported
+by trying to mount a filesystem of that type rather than invoking "modprobe".
+
+See <https://github.com/moby/moby/pull/38930>.
+
+--- docker-18.09.0-checkout/daemon/graphdriver/overlay/overlay.go.orig	1970-01-01 01:00:00.000000000 +0100
++++ docker-18.09.0-checkout/daemon/graphdriver/overlay/overlay.go	2019-03-19 09:16:03.487087490 +0100
+@@ -8,7 +8,6 @@
+ 	"io"
+ 	"io/ioutil"
+ 	"os"
+-	"os/exec"
+ 	"path"
+ 	"path/filepath"
+ 	"strconv"
+@@ -201,9 +200,16 @@
+ }
+ 
+ func supportsOverlay() error {
+-	// We can try to modprobe overlay first before looking at
+-	// proc/filesystems for when overlay is supported
+-	exec.Command("modprobe", "overlay").Run()
++	// Access overlay filesystem so that Linux loads it (if possible).
++	mountTarget, err := ioutil.TempDir("", "supportsOverlay")
++	if err != nil {
++		logrus.WithField("storage-driver", "overlay2").Error("Could not create temporary directory, so assuming that 'overlay' is not supported.")
++		return graphdriver.ErrNotSupported
++	} else {
++		/* The mounting will fail--after the module has been loaded.*/
++		defer os.RemoveAll(mountTarget)
++		unix.Mount("overlay", mountTarget, "overlay", 0, "")
++	}
+ 
+ 	f, err := os.Open("/proc/filesystems")
+ 	if err != nil {
+--- docker-18.09.0-checkout/daemon/graphdriver/overlay2/overlay.go.orig	2019-03-18 23:42:23.728525231 +0100
++++ docker-18.09.0-checkout/daemon/graphdriver/overlay2/overlay.go	2019-03-19 08:54:31.411906113 +0100
+@@ -10,7 +10,6 @@
+ 	"io"
+ 	"io/ioutil"
+ 	"os"
+-	"os/exec"
+ 	"path"
+ 	"path/filepath"
+ 	"strconv"
+@@ -261,9 +260,16 @@
+ }
+ 
+ func supportsOverlay() error {
+-	// We can try to modprobe overlay first before looking at
+-	// proc/filesystems for when overlay is supported
+-	exec.Command("modprobe", "overlay").Run()
++	// Access overlay filesystem so that Linux loads it (if possible).
++	mountTarget, err := ioutil.TempDir("", "supportsOverlay2")
++	if err != nil {
++		logrus.WithField("storage-driver", "overlay2").Error("Could not create temporary directory, so assuming that 'overlay' is not supported.")
++		return graphdriver.ErrNotSupported
++	} else {
++		/* The mounting will fail--after the module has been loaded.*/
++		defer os.RemoveAll(mountTarget)
++		unix.Mount("overlay", mountTarget, "overlay", 0, "")
++	}
+ 
+ 	f, err := os.Open("/proc/filesystems")
+ 	if err != nil {
+--- docker-18.09.0-checkout/daemon/graphdriver/devmapper/deviceset.go.orig	2019-03-19 09:19:16.592844887 +0100
++++ docker-18.09.0-checkout/daemon/graphdriver/devmapper/deviceset.go	2019-03-19 09:21:18.019361761 +0100
+@@ -540,8 +539,14 @@
+ 		return err // error text is descriptive enough
+ 	}
+ 
+-	// Check if kernel supports xfs filesystem or not.
+-	exec.Command("modprobe", "xfs").Run()
++	mountTarget, err := ioutil.TempDir("", "supportsXFS")
++	if err != nil {
++		return errors.Wrapf(err, "error checking for xfs support")
++	} else {
++		/* The mounting will fail--after the module has been loaded.*/
++		defer os.RemoveAll(mountTarget)
++		unix.Mount("none", mountTarget, "xfs", 0, "")
++	}
+ 
+ 	f, err := os.Open("/proc/filesystems")
+ 	if err != nil {
+--- docker-18.09.0-checkout/vendor/github.com/docker/libnetwork/iptables/iptables.go.orig	2019-03-19 09:47:19.430111170 +0100
++++ docker-18.09.0-checkout/vendor/github.com/docker/libnetwork/iptables/iptables.go	2019-03-19 10:38:01.445136177 +0100
+@@ -72,11 +71,12 @@
+ }
+ 
+ func probe() {
+-	if out, err := exec.Command("modprobe", "-va", "nf_nat").CombinedOutput(); err != nil {
+-		logrus.Warnf("Running modprobe nf_nat failed with message: `%s`, error: %v", strings.TrimSpace(string(out)), err)
++	path, err := exec.LookPath("iptables")
++	if err != nil {
++		return
+ 	}
+-	if out, err := exec.Command("modprobe", "-va", "xt_conntrack").CombinedOutput(); err != nil {
+-		logrus.Warnf("Running modprobe xt_conntrack failed with message: `%s`, error: %v", strings.TrimSpace(string(out)), err)
++	if out, err := exec.Command(path, "--wait", "-t", "nat", "-L", "-n").CombinedOutput(); err != nil {
++		logrus.Warnf("Running iptables --wait -t nat -L -n failed with message: `%s`, error: %v", strings.TrimSpace(string(out)), err)
+ 	}
+ }
+ 
+--- docker-18.09.0-checkout/vendor/github.com/docker/libnetwork/ns/init_linux.go.orig	2019-03-19 11:23:20.738316699 +0100
++++ docker-18.09.0-checkout/vendor/github.com/docker/libnetwork/ns/init_linux.go	2019-03-19 11:27:57.149753073 +0100
+@@ -76,12 +76,8 @@ func NlHandle() *netlink.Handle {
+ func getSupportedNlFamilies() []int {
+ 	fams := []int{syscall.NETLINK_ROUTE}
+ 	// NETLINK_XFRM test
+-	if err := loadXfrmModules(); err != nil {
+-		if checkXfrmSocket() != nil {
+-			logrus.Warnf("Could not load necessary modules for IPSEC rules: %v", err)
+-		} else {
+-			fams = append(fams, syscall.NETLINK_XFRM)
+-		}
++	if err := checkXfrmSocket(); err != nil {
++		logrus.Warnf("Could not load necessary modules for IPSEC rules: %v", err)
+ 	} else {
+ 		fams = append(fams, syscall.NETLINK_XFRM)
+ 	}
+@@ -99,16 +95,6 @@ func getSupportedNlFamilies() []int {
+ 	return fams
+ }
+ 
+-func loadXfrmModules() error {
+-	if out, err := exec.Command("modprobe", "-va", "xfrm_user").CombinedOutput(); err != nil {
+-		return fmt.Errorf("Running modprobe xfrm_user failed with message: `%s`, error: %v", strings.TrimSpace(string(out)), err)
+-	}
+-	if out, err := exec.Command("modprobe", "-va", "xfrm_algo").CombinedOutput(); err != nil {
+-		return fmt.Errorf("Running modprobe xfrm_algo failed with message: `%s`, error: %v", strings.TrimSpace(string(out)), err)
+-	}
+-	return nil
+-}
+-
+ // API check on required xfrm modules (xfrm_user, xfrm_algo)
+ func checkXfrmSocket() error {
+ 	fd, err := syscall.Socket(syscall.AF_NETLINK, syscall.SOCK_RAW, syscall.NETLINK_XFRM)
diff --git a/gnu/packages/patches/emacs-undohist-ignored.patch b/gnu/packages/patches/emacs-undohist-ignored.patch
new file mode 100644
index 0000000000..c1ad827a26
--- /dev/null
+++ b/gnu/packages/patches/emacs-undohist-ignored.patch
@@ -0,0 +1,27 @@
+From 52bfd419bf9022726048f818d955b8ea10a16d5c Mon Sep 17 00:00:00 2001
+From: Patrick Mosby <info@schreiblogade.de>
+Date: Mon, 7 Sep 2015 09:05:56 +0200
+Subject: [PATCH] Don't save undo file for ignored files.
+
+This fixes #4.
+---
+ undohist.el | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/undohist.el b/undohist.el
+index b184a26..de60356 100644
+--- a/undohist.el
++++ b/undohist.el
+@@ -164,7 +164,8 @@ To use undohist, you just call this function."
+                 undohist-ignored-files)))
+ 
+ (defun undohist-save-1 ()
+-  (when (consp buffer-undo-list)
++  (when (and (consp buffer-undo-list)
++             (undohist-recover-file-p (buffer-file-name (current-buffer))))
+     (let ((file (make-undohist-file-name (buffer-file-name)))
+           (contents `((digest . ,(md5 (current-buffer)))
+                       (undo-list . ,(undohist-encode buffer-undo-list)))))
+-- 
+2.21.0
+
diff --git a/gnu/packages/patches/emacs-zones-called-interactively.patch b/gnu/packages/patches/emacs-zones-called-interactively.patch
new file mode 100644
index 0000000000..b60f390a7e
--- /dev/null
+++ b/gnu/packages/patches/emacs-zones-called-interactively.patch
@@ -0,0 +1,43 @@
+From fb56fbb706804215ef9af0cc575db97c373046c6 Mon Sep 17 00:00:00 2001
+From: Brian Leung <bkleung89@gmail.com>
+Date: Sun, 17 Mar 2019 01:32:04 +0100
+Subject: [PATCH] This patch silences the byte-compiler.
+
+---
+ zones.el | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/zones.el b/zones.el
+index 1bf94f0..94fa9a6 100644
+--- a/zones.el
++++ b/zones.el
+@@ -1031,7 +1031,7 @@ You can use `C-x n x' to widen to a previous buffer restriction.
+ 
+ This is a destructive operation. The list structure of the variable
+ value can be modified."
+-  (zz-narrow-advice (interactive-p)))
++  (zz-narrow-advice (called-interactively-p)))
+ 
+ (defadvice narrow-to-defun (after zz-add-zone--defun activate)
+   "Push the defun limits to the current `zz-izones-var'.
+@@ -1039,7 +1039,7 @@ You can use `C-x n x' to widen to a previous buffer restriction.
+ 
+ This is a destructive operation. The list structure of the variable
+ value can be modified."
+-  (zz-narrow-advice (interactive-p)))
++  (zz-narrow-advice (called-interactively-p)))
+ 
+ ;; Call `zz-add-zone' if interactive or `zz-add-zone-anyway-p'.
+ ;;
+@@ -1049,7 +1049,7 @@ You can use `C-x n x' to widen to a previous buffer restriction.
+ 
+ This is a destructive operation. The list structure of the variable
+ value can be modified."
+-  (zz-narrow-advice (interactive-p)))
++  (zz-narrow-advice (called-interactively-p)))
+ 
+ ;;(@* "General Commands")
+ 
+-- 
+2.21.0
+
diff --git a/gnu/packages/patches/flac-CVE-2017-6888.patch b/gnu/packages/patches/flac-CVE-2017-6888.patch
new file mode 100644
index 0000000000..d2583201b4
--- /dev/null
+++ b/gnu/packages/patches/flac-CVE-2017-6888.patch
@@ -0,0 +1,29 @@
+https://git.xiph.org/?p=flac.git;a=patch;h=4f47b63e9c971e6391590caf00a0f2a5ed612e67
+
+From 4f47b63e9c971e6391590caf00a0f2a5ed612e67 Mon Sep 17 00:00:00 2001
+From: Erik de Castro Lopo <erikd@mega-nerd.com>
+Date: Sat, 8 Apr 2017 18:34:49 +1000
+Subject: [PATCH] stream_decoder.c: Fix a memory leak
+
+Leak reported by Secunia Research.
+---
+ src/libFLAC/stream_decoder.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/libFLAC/stream_decoder.c b/src/libFLAC/stream_decoder.c
+index 14d5fe7f..a5527511 100644
+--- a/src/libFLAC/stream_decoder.c
++++ b/src/libFLAC/stream_decoder.c
+@@ -1753,6 +1753,9 @@ FLAC__bool read_metadata_vorbiscomment_(FLAC__StreamDecoder *decoder, FLAC__Stre
+ 					}
+ 					memset (obj->comments[i].entry, 0, obj->comments[i].length) ;
+ 					if (!FLAC__bitreader_read_byte_block_aligned_no_crc(decoder->private_->input, obj->comments[i].entry, obj->comments[i].length)) {
++						/* Current i-th entry is bad, so we delete it. */
++						free (obj->comments[i].entry) ;
++						obj->comments[i].entry = NULL ;
+ 						obj->num_comments = i;
+ 						goto skip;
+ 					}
+-- 
+2.11.0
+
diff --git a/gnu/packages/patches/grub-efi-fat-serial-number.patch b/gnu/packages/patches/grub-efi-fat-serial-number.patch
new file mode 100644
index 0000000000..ad92f9bc9e
--- /dev/null
+++ b/gnu/packages/patches/grub-efi-fat-serial-number.patch
@@ -0,0 +1,27 @@
+Change 'grub-mkrescue' to honor the 'GRUB_FAT_SERIAL_NUMBER'
+environment variable.  That way, the caller can specify a fixed
+serial number (instead of the randomly chosen one) to create EFI
+images (the 'efi.img' file) that are reproducible bit-for-bit.
+
+Patch by Ludovic Courtès <ludo@gnu.org>.
+
+--- grub-2.02/util/grub-mkrescue.c	2019-04-20 19:15:26.180242812 +0200
++++ grub-2.02/util/grub-mkrescue.c	2019-04-20 21:56:34.672370849 +0200
+@@ -788,8 +788,15 @@ main (int argc, char *argv[])
+ 
+       efiimgfat = grub_util_path_concat (2, iso9660_dir, "efi.img");
+       int rv;
+-      rv = grub_util_exec ((const char * []) { "mformat", "-C", "-f", "2880", "-L", "16", "-i",
+-	    efiimgfat, "::", NULL });
++
++      const char *fat_serial_number = getenv ("GRUB_FAT_SERIAL_NUMBER");
++      const char *mformat_args[] =
++	{ "mformat", "-C", "-f", "2880", "-L", "16",
++	  fat_serial_number != NULL ? "-N" : "-C",
++	  fat_serial_number != NULL ? fat_serial_number : "-C",
++	  "-i", efiimgfat, "::", NULL };
++
++      rv = grub_util_exec (mformat_args);
+       if (rv != 0)
+ 	grub_util_error ("`%s` invocation failed\n", "mformat");
+       rv = grub_util_exec ((const char * []) { "mcopy", "-s", "-i", efiimgfat, efidir_efi, "::/", NULL });
diff --git a/gnu/packages/patches/idris-test-no-node.patch b/gnu/packages/patches/idris-test-no-node.patch
new file mode 100644
index 0000000000..c04ad41a8e
--- /dev/null
+++ b/gnu/packages/patches/idris-test-no-node.patch
@@ -0,0 +1,61 @@
+From 6c52e1b902b869c25e2fe39cff6364143a04da61 Mon Sep 17 00:00:00 2001
+From: Niklas Larsson <niklas@mm.st>
+Date: Tue, 11 Dec 2018 19:56:22 +0100
+Subject: [PATCH] Only check for Node when required
+
+---
+ test/TestRun.hs | 34 ++++++++++++++++++++--------------
+ 1 file changed, 20 insertions(+), 14 deletions(-)
+
+diff --git a/test/TestRun.hs b/test/TestRun.hs
+index c7db9fdcd..4809911f3 100644
+--- a/test/TestRun.hs
++++ b/test/TestRun.hs
+@@ -11,6 +11,7 @@ import Data.Proxy
+ import Data.Typeable
+ import Options.Applicative
+ import System.Directory
++import System.Environment
+ import System.Exit
+ import System.FilePath ((</>))
+ import System.Info
+@@ -103,20 +104,25 @@ runTest path flags = do
+       normalise (x : xs) = x : normalise xs
+       normalise [] = []
+ 
++checkNode :: IO  ()
++checkNode = do
++    nodePath   <- findExecutable "node"
++    nodejsPath <- findExecutable "nodejs"
++    let node = nodePath <|> nodejsPath
++    case node of
++      Nothing -> do
++        putStrLn "For running the test suite against Node, node must be installed."
++        exitFailure
++      Just _  -> return ()
++
+ main :: IO ()
+ main = do
+-  nodePath   <- findExecutable "node"
+-  nodejsPath <- findExecutable "nodejs"
+-  let node = nodePath <|> nodejsPath
+-  case node of
+-    Nothing -> do
+-      putStrLn "For running the test suite against Node, node must be installed."
+-      exitFailure
+-    Just _  -> do
+-      defaultMainWithIngredients ingredients $
++    args <- getArgs
++    when ("--node" `elem` args) checkNode
++    defaultMainWithIngredients ingredients $
+         askOption $ \(NodeOpt node) ->
+-          let (codegen, flags) = if node then (JS, ["--codegen", "node"])
+-                                         else (C , [])
+-           in
+-            mkGoldenTests (testFamiliesForCodegen codegen)
+-                        (flags ++ idrisFlags)
++            let (codegen, flags) = if node then (JS, ["--codegen", "node"])
++                                           else (C , [])
++            in
++                mkGoldenTests (testFamiliesForCodegen codegen) (flags ++ idrisFlags)
++
diff --git a/gnu/packages/patches/knot-include-system-lmdb-header.patch b/gnu/packages/patches/knot-include-system-lmdb-header.patch
deleted file mode 100644
index 5c5c0beabc..0000000000
--- a/gnu/packages/patches/knot-include-system-lmdb-header.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From: Tobias Geerinckx-Rice <me@tobias.gr>
-Date: Wed, 20 Mar 2019 00:08:00 +0100
-Subject: [PATCH] gnu: knot: Include system <lmdb.h>.
-
-Copied verbatim from Knot master[0].
-
-[0]: https://gitlab.labs.nic.cz/knot/knot-dns/commit/b557430cffbb1c6b30617a394b02acc514e7e536
-
-From b557430cffbb1c6b30617a394b02acc514e7e536 Mon Sep 17 00:00:00 2001
-From: Daniel Salzman <daniel.salzman@nic.cz>
-Date: Wed, 6 Mar 2019 17:35:44 +0100
-Subject: [PATCH] journal: include proper header <lmdb.h>
-
-fixes #638
----
- src/knot/journal/knot_lmdb.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/knot/journal/knot_lmdb.h b/src/knot/journal/knot_lmdb.h
-index 35a88845c..b1d09cbb4 100644
---- a/src/knot/journal/knot_lmdb.h
-+++ b/src/knot/journal/knot_lmdb.h
-@@ -16,7 +16,7 @@
- 
- #pragma once
- 
--#include "contrib/lmdb/lmdb.h"
-+#include <lmdb.h>
- 
- #include <stdbool.h>
- #include <stdlib.h>
--- 
-2.18.1
-
diff --git a/gnu/packages/patches/kodi-set-libcurl-ssl-parameters.patch b/gnu/packages/patches/kodi-set-libcurl-ssl-parameters.patch
new file mode 100644
index 0000000000..2f60737e30
--- /dev/null
+++ b/gnu/packages/patches/kodi-set-libcurl-ssl-parameters.patch
@@ -0,0 +1,17 @@
+Kodi doesn't set the CAPATH and CAINFO parameters for libcurl. To make HTTPS
+connections work we can set them based on SSL_CERT_DIR and SSL_CERT_FILE.
+
+--- a/xbmc/filesystem/CurlFile.cpp
++++ b/xbmc/filesystem/CurlFile.cpp
+@@ -626,5 +626,9 @@
+   if (!m_cipherlist.empty())
+     g_curlInterface.easy_setopt(h, CURLOPT_SSL_CIPHER_LIST, m_cipherlist.c_str());
+ 
++  // Load certificate data from environment paths
++  g_curlInterface.easy_setopt(m_state->m_easyHandle, CURLOPT_CAPATH, getenv("SSL_CERT_DIR"));
++  g_curlInterface.easy_setopt(m_state->m_easyHandle, CURLOPT_CAINFO, getenv("SSL_CERT_FILE"));
++
+   // enable HTTP2 support. default: CURL_HTTP_VERSION_1_1. Curl >= 7.62.0 defaults to CURL_HTTP_VERSION_2TLS
+   g_curlInterface.easy_setopt(h, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
+-
+ }
diff --git a/gnu/packages/patches/lcms-CVE-2018-16435.patch b/gnu/packages/patches/lcms-CVE-2018-16435.patch
new file mode 100644
index 0000000000..60228e73af
--- /dev/null
+++ b/gnu/packages/patches/lcms-CVE-2018-16435.patch
@@ -0,0 +1,171 @@
+https://github.com/mm2/Little-CMS/commit/768f70ca405cd3159d990e962d54456773bb8cf8.patch
+
+From 768f70ca405cd3159d990e962d54456773bb8cf8 Mon Sep 17 00:00:00 2001
+From: Marti Maria <info@littlecms.com>
+Date: Wed, 15 Aug 2018 20:07:56 +0200
+Subject: [PATCH] Upgrade Visual studio 2017 15.8
+
+- Upgrade to 15.8
+- Add check on CGATS memory allocation (thanks to Quang Nguyen for
+pointing out this)
+---
+ Projects/VC2017/jpegicc/jpegicc.vcxproj           |  1 +
+ Projects/VC2017/lcms2_DLL/lcms2_DLL.vcxproj       |  2 +-
+ Projects/VC2017/lcms2_static/lcms2_static.vcxproj |  2 +-
+ Projects/VC2017/linkicc/linkicc.vcxproj           |  2 +-
+ Projects/VC2017/psicc/psicc.vcxproj               |  2 +-
+ Projects/VC2017/testbed/testbed.vcxproj           |  2 +-
+ Projects/VC2017/tiffdiff/tiffdiff.vcxproj         |  2 +-
+ Projects/VC2017/tifficc/tifficc.vcxproj           |  2 +-
+ Projects/VC2017/transicc/transicc.vcxproj         |  1 +
+ src/cmscgats.c                                    | 14 ++++++++++----
+ 10 files changed, 19 insertions(+), 11 deletions(-)
+
+diff --git a/Projects/VC2017/jpegicc/jpegicc.vcxproj b/Projects/VC2017/jpegicc/jpegicc.vcxproj
+index ab26a53..39cfd00 100644
+--- a/Projects/VC2017/jpegicc/jpegicc.vcxproj
++++ b/Projects/VC2017/jpegicc/jpegicc.vcxproj
+@@ -22,6 +22,7 @@
+     <ProjectGuid>{62812507-F926-4968-96A9-17678460AD90}</ProjectGuid>
+     <RootNamespace>jpegicc</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+diff --git a/Projects/VC2017/lcms2_DLL/lcms2_DLL.vcxproj b/Projects/VC2017/lcms2_DLL/lcms2_DLL.vcxproj
+index 4c8aa3f..d1bf3eb 100644
+--- a/Projects/VC2017/lcms2_DLL/lcms2_DLL.vcxproj
++++ b/Projects/VC2017/lcms2_DLL/lcms2_DLL.vcxproj
+@@ -22,7 +22,7 @@
+     <ProjectGuid>{8C51BE48-ADB8-4089-A9EC-F6BF993A0548}</ProjectGuid>
+     <RootNamespace>lcms2_DLL</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
+-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+diff --git a/Projects/VC2017/lcms2_static/lcms2_static.vcxproj b/Projects/VC2017/lcms2_static/lcms2_static.vcxproj
+index 2a9988a..9fc05ce 100644
+--- a/Projects/VC2017/lcms2_static/lcms2_static.vcxproj
++++ b/Projects/VC2017/lcms2_static/lcms2_static.vcxproj
+@@ -22,7 +22,7 @@
+     <ProjectGuid>{71DEDE59-3F1E-486B-A899-4283000F76B5}</ProjectGuid>
+     <RootNamespace>lcms2_static</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
+-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+diff --git a/Projects/VC2017/linkicc/linkicc.vcxproj b/Projects/VC2017/linkicc/linkicc.vcxproj
+index 30c2b4e..51586dd 100644
+--- a/Projects/VC2017/linkicc/linkicc.vcxproj
++++ b/Projects/VC2017/linkicc/linkicc.vcxproj
+@@ -22,7 +22,7 @@
+     <ProjectGuid>{FBFBE1DC-DB84-4BA1-9552-B4780F457849}</ProjectGuid>
+     <RootNamespace>linkicc</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
+-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+diff --git a/Projects/VC2017/psicc/psicc.vcxproj b/Projects/VC2017/psicc/psicc.vcxproj
+index 9dcf89a..8f26e12 100644
+--- a/Projects/VC2017/psicc/psicc.vcxproj
++++ b/Projects/VC2017/psicc/psicc.vcxproj
+@@ -22,7 +22,7 @@
+     <ProjectGuid>{EF6A8851-65FE-46F5-B9EF-14F0B671F693}</ProjectGuid>
+     <RootNamespace>psicc</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
+-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+diff --git a/Projects/VC2017/testbed/testbed.vcxproj b/Projects/VC2017/testbed/testbed.vcxproj
+index 0af3762..3f6aea3 100644
+--- a/Projects/VC2017/testbed/testbed.vcxproj
++++ b/Projects/VC2017/testbed/testbed.vcxproj
+@@ -22,7 +22,7 @@
+     <ProjectGuid>{928A3A2B-46EF-4279-959C-513B3652FF0E}</ProjectGuid>
+     <RootNamespace>testbed</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
+-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+diff --git a/Projects/VC2017/tiffdiff/tiffdiff.vcxproj b/Projects/VC2017/tiffdiff/tiffdiff.vcxproj
+index 7edfe28..3a6d837 100644
+--- a/Projects/VC2017/tiffdiff/tiffdiff.vcxproj
++++ b/Projects/VC2017/tiffdiff/tiffdiff.vcxproj
+@@ -22,7 +22,7 @@
+     <ProjectGuid>{75B91835-CCD7-48BE-A606-A9C997D5DBEE}</ProjectGuid>
+     <RootNamespace>tiffdiff</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
+-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+diff --git a/Projects/VC2017/tifficc/tifficc.vcxproj b/Projects/VC2017/tifficc/tifficc.vcxproj
+index cd9f04c..5ef954f 100644
+--- a/Projects/VC2017/tifficc/tifficc.vcxproj
++++ b/Projects/VC2017/tifficc/tifficc.vcxproj
+@@ -22,7 +22,7 @@
+     <ProjectGuid>{2256DE16-ED92-4A6F-9C54-F65BB61E64A2}</ProjectGuid>
+     <RootNamespace>tifficc</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
+-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+diff --git a/Projects/VC2017/transicc/transicc.vcxproj b/Projects/VC2017/transicc/transicc.vcxproj
+index d9b77c6..b3173d8 100644
+--- a/Projects/VC2017/transicc/transicc.vcxproj
++++ b/Projects/VC2017/transicc/transicc.vcxproj
+@@ -22,6 +22,7 @@
+     <ProjectGuid>{9EE22D66-C849-474C-9ED5-C3E141DAB160}</ProjectGuid>
+     <RootNamespace>transicc</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+diff --git a/src/cmscgats.c b/src/cmscgats.c
+index 1a87613..8c3e96d 100644
+--- a/src/cmscgats.c
++++ b/src/cmscgats.c
+@@ -1,7 +1,7 @@
+ //---------------------------------------------------------------------------------
+ //
+ //  Little Color Management System
+-//  Copyright (c) 1998-2017 Marti Maria Saguer
++//  Copyright (c) 1998-2018 Marti Maria Saguer
+ //
+ // Permission is hereby granted, free of charge, to any person obtaining
+ // a copy of this software and associated documentation files (the "Software"),
+@@ -1506,10 +1506,16 @@ void AllocateDataSet(cmsIT8* it8)
+     t-> nSamples   = atoi(cmsIT8GetProperty(it8, "NUMBER_OF_FIELDS"));
+     t-> nPatches   = atoi(cmsIT8GetProperty(it8, "NUMBER_OF_SETS"));
+ 
+-    t-> Data = (char**)AllocChunk (it8, ((cmsUInt32Number) t->nSamples + 1) * ((cmsUInt32Number) t->nPatches + 1) *sizeof (char*));
+-    if (t->Data == NULL) {
++    if (t -> nSamples < 0 || t->nSamples > 0x7ffe || t->nPatches < 0 || t->nPatches > 0x7ffe)
++    {
++        SynError(it8, "AllocateDataSet: too much data");
++    }
++    else {
++        t->Data = (char**)AllocChunk(it8, ((cmsUInt32Number)t->nSamples + 1) * ((cmsUInt32Number)t->nPatches + 1) * sizeof(char*));
++        if (t->Data == NULL) {
+ 
+-        SynError(it8, "AllocateDataSet: Unable to allocate data array");
++            SynError(it8, "AllocateDataSet: Unable to allocate data array");
++        }
+     }
+ 
+ }
diff --git a/gnu/packages/patches/ledger-fix-uninitialized.patch b/gnu/packages/patches/ledger-fix-uninitialized.patch
deleted file mode 100644
index 128c90ec13..0000000000
--- a/gnu/packages/patches/ledger-fix-uninitialized.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-This fixes failures of tests "BaseLine_opt-datetime-format" and
-"BaseLine_opt-time-report", which were printing an unexpected trailing '*' on
-the last line of output, e.g.:
-
-  @@ -5,4 +5,4 @@
-     04/05/13 12:00 PM    04/05/13 01:30 PM       1.50h    Lunch
-     04/05/13 11:30 AM    04/05/13 12:00 PM       30.0m    Walk
-   --------------------------------------------------
-  -                                           
-  +                                          *
-
-Reported upstream at
-https://groups.google.com/d/msg/ledger-cli/EeJUrUk8YDc/pIR-LOTVEAAJ
-
-diff --git a/src/account.h b/src/account.h
-index 1b97463d..f2555593 100644
---- a/src/account.h
-+++ b/src/account.h
-@@ -187,7 +187,7 @@ public:
- 
-       datetime_t         earliest_checkin;
-       datetime_t         latest_checkout;
--      bool               latest_checkout_cleared;
-+      bool               latest_checkout_cleared = false;
- 
-       std::set<path>     filenames;
-       std::set<string>   accounts_referenced;
diff --git a/gnu/packages/patches/libopenshot-fixup-tests.patch b/gnu/packages/patches/libopenshot-fixup-tests.patch
deleted file mode 100644
index 9a0bcc5e8f..0000000000
--- a/gnu/packages/patches/libopenshot-fixup-tests.patch
+++ /dev/null
@@ -1,148 +0,0 @@
-From 691536f2f8a9ed7322fedb24d489db08c70705b9 Mon Sep 17 00:00:00 2001
-From: "Dr. Tobias Quathamer" <toddy@debian.org>
-Date: Sat, 18 Nov 2017 13:54:22 +0100
-Subject: [PATCH] This the combination of two patches:
- https://sources.debian.org/data/main/libo/libopenshot/0.2.2+dfsg1-1/debian/patches/0003-Fix-failing-tests-by-using-a-fault-tolerance.patch
- https://sources.debian.org/data/main/libo/libopenshot/0.2.2+dfsg1-1/debian/patches/0004-Add-some-more-fault-tolerance-for-arm64.patch
-
-Together they should fix the test suite on all architectures
----
- tests/FFmpegReader_Tests.cpp |  9 ++++-----
- tests/ImageWriter_Tests.cpp  |  8 ++++----
- tests/Timeline_Tests.cpp     | 28 ++++++++++++++--------------
- 3 files changed, 22 insertions(+), 23 deletions(-)
-
-diff --git a/tests/FFmpegReader_Tests.cpp b/tests/FFmpegReader_Tests.cpp
-index 53563ca..07fc41e 100644
---- a/tests/FFmpegReader_Tests.cpp
-+++ b/tests/FFmpegReader_Tests.cpp
-@@ -95,8 +95,8 @@ TEST(FFmpegReader_Check_Video_File)
- 	int pixel_index = 112 * 4; // pixel 112 (4 bytes per pixel)
- 
- 	// Check image properties on scanline 10, pixel 112
--	CHECK_EQUAL(21, (int)pixels[pixel_index]);
--	CHECK_EQUAL(191, (int)pixels[pixel_index + 1]);
-+	CHECK_CLOSE(21, (int)pixels[pixel_index], 1);
-+	CHECK_CLOSE(191, (int)pixels[pixel_index + 1], 2);
- 	CHECK_EQUAL(0, (int)pixels[pixel_index + 2]);
- 	CHECK_EQUAL(255, (int)pixels[pixel_index + 3]);
- 
-@@ -109,8 +109,8 @@ TEST(FFmpegReader_Check_Video_File)
- 
- 	// Check image properties on scanline 10, pixel 112
- 	CHECK_EQUAL(0, (int)pixels[pixel_index]);
--	CHECK_EQUAL(96, (int)pixels[pixel_index + 1]);
--	CHECK_EQUAL(188, (int)pixels[pixel_index + 2]);
-+	CHECK_CLOSE(96, (int)pixels[pixel_index + 1], 1);
-+	CHECK_CLOSE(188, (int)pixels[pixel_index + 2], 1);
- 	CHECK_EQUAL(255, (int)pixels[pixel_index + 3]);
- 
- 	// Close reader
-@@ -209,4 +209,3 @@ TEST(FFmpegReader_Multiple_Open_and_Close)
- 	// Close reader
- 	r.Close();
- }
--
-diff --git a/tests/ImageWriter_Tests.cpp b/tests/ImageWriter_Tests.cpp
-index 107ee39..d10c8bd 100644
---- a/tests/ImageWriter_Tests.cpp
-+++ b/tests/ImageWriter_Tests.cpp
-@@ -73,9 +73,9 @@ TEST(ImageWriter_Test_Gif)
- 	int pixel_index = 230 * 4; // pixel 230 (4 bytes per pixel)
- 
- 	// Check image properties
--	CHECK_EQUAL(20, (int)pixels[pixel_index]);
--	CHECK_EQUAL(18, (int)pixels[pixel_index + 1]);
--	CHECK_EQUAL(11, (int)pixels[pixel_index + 2]);
-+	CHECK_CLOSE(20, (int)pixels[pixel_index], 5);
-+	CHECK_CLOSE(18, (int)pixels[pixel_index + 1], 2);
-+	CHECK_CLOSE(11, (int)pixels[pixel_index + 2], 2);
- 	CHECK_EQUAL(255, (int)pixels[pixel_index + 3]);
- }
--#endif
-\ No newline at end of file
-+#endif
-diff --git a/tests/Timeline_Tests.cpp b/tests/Timeline_Tests.cpp
-index 8c81579..4d861a6 100644
---- a/tests/Timeline_Tests.cpp
-+++ b/tests/Timeline_Tests.cpp
-@@ -119,8 +119,8 @@ TEST(Timeline_Check_Two_Track_Video)
- 	int pixel_index = 230 * 4; // pixel 230 (4 bytes per pixel)
- 
- 	// Check image properties
--	CHECK_EQUAL(21, (int)f->GetPixels(pixel_row)[pixel_index]);
--	CHECK_EQUAL(191, (int)f->GetPixels(pixel_row)[pixel_index + 1]);
-+	CHECK_CLOSE(21, (int)f->GetPixels(pixel_row)[pixel_index], 2);
-+	CHECK_CLOSE(191, (int)f->GetPixels(pixel_row)[pixel_index + 1], 2);
- 	CHECK_EQUAL(0, (int)f->GetPixels(pixel_row)[pixel_index + 2]);
- 	CHECK_EQUAL(255, (int)f->GetPixels(pixel_row)[pixel_index + 3]);
- 
-@@ -128,17 +128,17 @@ TEST(Timeline_Check_Two_Track_Video)
- 	f = t.GetFrame(2);
- 
- 	// Check image properties
--	CHECK_EQUAL(176, (int)f->GetPixels(pixel_row)[pixel_index]);
-+	CHECK_CLOSE(176, (int)f->GetPixels(pixel_row)[pixel_index], 1);
- 	CHECK_EQUAL(0, (int)f->GetPixels(pixel_row)[pixel_index + 1]);
--	CHECK_EQUAL(186, (int)f->GetPixels(pixel_row)[pixel_index + 2]);
-+	CHECK_CLOSE(186, (int)f->GetPixels(pixel_row)[pixel_index + 2], 1);
- 	CHECK_EQUAL(255, (int)f->GetPixels(pixel_row)[pixel_index + 3]);
- 
- 	// Get frame
- 	f = t.GetFrame(3);
- 
- 	// Check image properties
--	CHECK_EQUAL(23, (int)f->GetPixels(pixel_row)[pixel_index]);
--	CHECK_EQUAL(190, (int)f->GetPixels(pixel_row)[pixel_index + 1]);
-+	CHECK_CLOSE(23, (int)f->GetPixels(pixel_row)[pixel_index], 1);
-+	CHECK_CLOSE(190, (int)f->GetPixels(pixel_row)[pixel_index + 1], 2);
- 	CHECK_EQUAL(0, (int)f->GetPixels(pixel_row)[pixel_index + 2]);
- 	CHECK_EQUAL(255, (int)f->GetPixels(pixel_row)[pixel_index + 3]);
- 
-@@ -146,8 +146,8 @@ TEST(Timeline_Check_Two_Track_Video)
- 	f = t.GetFrame(24);
- 
- 	// Check image properties
--	CHECK_EQUAL(186, (int)f->GetPixels(pixel_row)[pixel_index]);
--	CHECK_EQUAL(106, (int)f->GetPixels(pixel_row)[pixel_index + 1]);
-+	CHECK_CLOSE(186, (int)f->GetPixels(pixel_row)[pixel_index], 1);
-+	CHECK_CLOSE(106, (int)f->GetPixels(pixel_row)[pixel_index + 1], 1);
- 	CHECK_EQUAL(0, (int)f->GetPixels(pixel_row)[pixel_index + 2]);
- 	CHECK_EQUAL(255, (int)f->GetPixels(pixel_row)[pixel_index + 3]);
- 
-@@ -155,8 +155,8 @@ TEST(Timeline_Check_Two_Track_Video)
- 	f = t.GetFrame(5);
- 
- 	// Check image properties
--	CHECK_EQUAL(23, (int)f->GetPixels(pixel_row)[pixel_index]);
--	CHECK_EQUAL(190, (int)f->GetPixels(pixel_row)[pixel_index + 1]);
-+	CHECK_CLOSE(23, (int)f->GetPixels(pixel_row)[pixel_index], 1);
-+	CHECK_CLOSE(190, (int)f->GetPixels(pixel_row)[pixel_index + 1], 2);
- 	CHECK_EQUAL(0, (int)f->GetPixels(pixel_row)[pixel_index + 2]);
- 	CHECK_EQUAL(255, (int)f->GetPixels(pixel_row)[pixel_index + 3]);
- 
-@@ -165,17 +165,17 @@ TEST(Timeline_Check_Two_Track_Video)
- 
- 	// Check image properties
- 	CHECK_EQUAL(0, (int)f->GetPixels(pixel_row)[pixel_index]);
--	CHECK_EQUAL(94, (int)f->GetPixels(pixel_row)[pixel_index + 1]);
--	CHECK_EQUAL(186, (int)f->GetPixels(pixel_row)[pixel_index + 2]);
-+	CHECK_CLOSE(94, (int)f->GetPixels(pixel_row)[pixel_index + 1], 1);
-+	CHECK_CLOSE(186, (int)f->GetPixels(pixel_row)[pixel_index + 2], 1);
- 	CHECK_EQUAL(255, (int)f->GetPixels(pixel_row)[pixel_index + 3]);
- 
- 	// Get frame
- 	f = t.GetFrame(4);
- 
- 	// Check image properties
--	CHECK_EQUAL(176, (int)f->GetPixels(pixel_row)[pixel_index]);
-+	CHECK_CLOSE(176, (int)f->GetPixels(pixel_row)[pixel_index], 1);
- 	CHECK_EQUAL(0, (int)f->GetPixels(pixel_row)[pixel_index + 1]);
--	CHECK_EQUAL(186, (int)f->GetPixels(pixel_row)[pixel_index + 2]);
-+	CHECK_CLOSE(186, (int)f->GetPixels(pixel_row)[pixel_index + 2], 1);
- 	CHECK_EQUAL(255, (int)f->GetPixels(pixel_row)[pixel_index + 3]);
- 
- 	// Close reader
--- 
-2.21.0
-
diff --git a/gnu/packages/patches/libopenshot-tests-with-system-libs.patch b/gnu/packages/patches/libopenshot-tests-with-system-libs.patch
deleted file mode 100644
index a18c4b8bba..0000000000
--- a/gnu/packages/patches/libopenshot-tests-with-system-libs.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-Combination of two patches that fix libopenshot tests when built with
-system-provided ffmpeg and jsoncpp.  See
-
-  https://github.com/OpenShot/libopenshot/pull/163
-
-From 0d7691ab53433e1583f6a66ea96683b0f7af8a57 Mon Sep 17 00:00:00 2001
-From: "FeRD (Frank Dana)" <ferdnyc@gmail.com>
-Date: Mon, 17 Sep 2018 14:04:40 -0400
-Subject: [PATCH] tests/CMakeFiles: Use FFMpeg like src/
-
----
- tests/CMakeLists.txt | 32 +++++++++++++++++++++++++++++++-
- 1 file changed, 31 insertions(+), 1 deletion(-)
-
-diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
-index 2c45550..4df8464 100644
---- a/tests/CMakeLists.txt
-+++ b/tests/CMakeLists.txt
-@@ -79,7 +79,37 @@ ENDIF (ImageMagick_FOUND)
- FIND_PACKAGE(FFmpeg REQUIRED)
- 
- # Include FFmpeg headers (needed for compile)
--include_directories(${FFMPEG_INCLUDE_DIR})
-+message('AVCODEC_FOUND: ${AVCODEC_FOUND}')
-+message('AVCODEC_INCLUDE_DIRS: ${AVCODEC_INCLUDE_DIRS}')
-+message('AVCODEC_LIBRARIES: ${AVCODEC_LIBRARIES}')
-+
-+IF (AVCODEC_FOUND)
-+	include_directories(${AVCODEC_INCLUDE_DIRS})
-+ENDIF (AVCODEC_FOUND)
-+IF (AVDEVICE_FOUND)
-+	include_directories(${AVDEVICE_INCLUDE_DIRS})
-+ENDIF (AVDEVICE_FOUND)
-+IF (AVFORMAT_FOUND)
-+	include_directories(${AVFORMAT_INCLUDE_DIRS})
-+ENDIF (AVFORMAT_FOUND)
-+IF (AVFILTER_FOUND)
-+	include_directories(${AVFILTER_INCLUDE_DIRS})
-+ENDIF (AVFILTER_FOUND)
-+IF (AVUTIL_FOUND)
-+	include_directories(${AVUTIL_INCLUDE_DIRS})
-+ENDIF (AVUTIL_FOUND)
-+IF (POSTPROC_FOUND)
-+	include_directories(${POSTPROC_INCLUDE_DIRS})
-+ENDIF (POSTPROC_FOUND)
-+IF (SWSCALE_FOUND)
-+	include_directories(${SWSCALE_INCLUDE_DIRS})
-+ENDIF (SWSCALE_FOUND)
-+IF (SWRESAMPLE_FOUND)
-+	include_directories(${SWRESAMPLE_INCLUDE_DIRS})
-+ENDIF (SWRESAMPLE_FOUND)
-+IF (AVRESAMPLE_FOUND)
-+	include_directories(${AVRESAMPLE_INCLUDE_DIRS})
-+ENDIF (AVRESAMPLE_FOUND)
- 
- ################# LIBOPENSHOT-AUDIO ###################
- # Find JUCE-based openshot Audio libraries
-
-
-From e9e85cdfd036587adb86341f7f81619dc69f102c Mon Sep 17 00:00:00 2001
-From: "FeRD (Frank Dana)" <ferdnyc@gmail.com>
-Date: Mon, 17 Sep 2018 19:23:25 -0400
-Subject: [PATCH] Use system jsoncpp in tests, too
-
-The tests/ build needs to use the same jsoncpp as the src/ build,
-or tests in Clip_Tests.cpp can fail.
----
- tests/CMakeLists.txt | 10 ++++++++--
- 1 file changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
-index 4df8464..a1a0356 100644
---- a/tests/CMakeLists.txt
-+++ b/tests/CMakeLists.txt
-@@ -180,12 +180,18 @@ endif(OPENMP_FOUND)
- # Find ZeroMQ library (used for socket communication & logging)
- FIND_PACKAGE(ZMQ REQUIRED)
- 
--# Include FFmpeg headers (needed for compile)
-+# Include ZeroMQ headers (needed for compile)
- include_directories(${ZMQ_INCLUDE_DIRS})
- 
- ################### JSONCPP #####################
- # Include jsoncpp headers (needed for JSON parsing)
--include_directories("../thirdparty/jsoncpp/include")
-+if (USE_SYSTEM_JSONCPP)
-+	find_package(JsonCpp REQUIRED)
-+	include_directories(${JSONCPP_INCLUDE_DIRS})
-+else()
-+	message("Using embedded JsonCpp")
-+	include_directories("../thirdparty/jsoncpp/include")
-+endif(USE_SYSTEM_JSONCPP)
- 
- IF (NOT DISABLE_TESTS)
- 	###############  SET TEST SOURCE FILES  #################
diff --git a/gnu/packages/patches/linkchecker-mark-more-tests-that-require-the-network.patch b/gnu/packages/patches/linkchecker-tests-require-network.patch
index f3e488cec2..f3e488cec2 100644
--- a/gnu/packages/patches/linkchecker-mark-more-tests-that-require-the-network.patch
+++ b/gnu/packages/patches/linkchecker-tests-require-network.patch
diff --git a/gnu/packages/patches/localed-xorg-keyboard.patch b/gnu/packages/patches/localed-xorg-keyboard.patch
new file mode 100644
index 0000000000..9a9071ba0a
--- /dev/null
+++ b/gnu/packages/patches/localed-xorg-keyboard.patch
@@ -0,0 +1,322 @@
+Normally localed would do an approximate parsing of the Xorg config file
+to determine the XKB keyboard layout.  This doesn't make sense on Guix
+where there's no such file in /etc, and where the keyboard layout is
+known statically at configuration time.
+
+This patch removes the XOrg configuration parsing and expects to read the
+configuration from environment variables instead.  It also removes the
+stateful bits that would write configuration to /etc/vconsole.conf
+and /etc/X11, which are unused in Guix anyway.
+
+Patch by Ludovic Courtès <ludo@gnu.org>.
+
+diff --git a/src/locale/keymap-util.c b/src/locale/keymap-util.c
+index 6b6b32a591..46aab472b0 100644
+--- a/src/locale/keymap-util.c
++++ b/src/locale/keymap-util.c
+@@ -174,32 +174,16 @@ int vconsole_read_data(Context *c, sd_bus_message *m) {
+                 c->vc_cache = sd_bus_message_ref(m);
+         }
+ 
+-        if (stat("/etc/vconsole.conf", &st) < 0) {
+-                if (errno != ENOENT)
+-                        return -errno;
+-
+-                c->vc_mtime = USEC_INFINITY;
+-                context_free_vconsole(c);
+-                return 0;
+-        }
+-
+-        /* If mtime is not changed, then we do not need to re-read */
+-        t = timespec_load(&st.st_mtim);
+-        if (c->vc_mtime != USEC_INFINITY && t == c->vc_mtime)
+-                return 0;
+-
+-        c->vc_mtime = t;
++        c->vc_mtime = USEC_INFINITY;
+         context_free_vconsole(c);
+-
+-        r = parse_env_file(NULL, "/etc/vconsole.conf",
+-                           "KEYMAP",        &c->vc_keymap,
+-                           "KEYMAP_TOGGLE", &c->vc_keymap_toggle);
+-        if (r < 0)
+-                return r;
+-
+         return 0;
+ }
+ 
++static char *getenv_strdup(const char *variable) {
++        const char *value = getenv(variable);
++        return value == NULL ? NULL : strdup(value);
++}
++
+ int x11_read_data(Context *c, sd_bus_message *m) {
+         _cleanup_fclose_ FILE *f = NULL;
+         bool in_section = false;
+@@ -216,258 +200,27 @@ int x11_read_data(Context *c, sd_bus_message *m) {
+                 c->x11_cache = sd_bus_message_ref(m);
+         }
+ 
+-        if (stat("/etc/X11/xorg.conf.d/00-keyboard.conf", &st) < 0) {
+-                if (errno != ENOENT)
+-                        return -errno;
+-
+-                c->x11_mtime = USEC_INFINITY;
+-                context_free_x11(c);
+-                return 0;
+-        }
+-
+-        /* If mtime is not changed, then we do not need to re-read */
+-        t = timespec_load(&st.st_mtim);
+-        if (c->x11_mtime != USEC_INFINITY && t == c->x11_mtime)
+-                return 0;
+-
+-        c->x11_mtime = t;
++        c->x11_mtime = 0;
+         context_free_x11(c);
+ 
+-        f = fopen("/etc/X11/xorg.conf.d/00-keyboard.conf", "re");
+-        if (!f)
+-                return -errno;
+-
+-        for (;;) {
+-                _cleanup_free_ char *line = NULL;
+-                char *l;
+-
+-                r = read_line(f, LONG_LINE_MAX, &line);
+-                if (r < 0)
+-                        return r;
+-                if (r == 0)
+-                        break;
+-
+-                l = strstrip(line);
+-                if (IN_SET(l[0], 0, '#'))
+-                        continue;
+-
+-                if (in_section && first_word(l, "Option")) {
+-                        _cleanup_strv_free_ char **a = NULL;
+-
+-                        r = strv_split_extract(&a, l, WHITESPACE, EXTRACT_QUOTES);
+-                        if (r < 0)
+-                                return r;
+-
+-                        if (strv_length(a) == 3) {
+-                                char **p = NULL;
+-
+-                                if (streq(a[1], "XkbLayout"))
+-                                        p = &c->x11_layout;
+-                                else if (streq(a[1], "XkbModel"))
+-                                        p = &c->x11_model;
+-                                else if (streq(a[1], "XkbVariant"))
+-                                        p = &c->x11_variant;
+-                                else if (streq(a[1], "XkbOptions"))
+-                                        p = &c->x11_options;
+-
+-                                if (p) {
+-                                        free_and_replace(*p, a[2]);
+-                                }
+-                        }
+-
+-                } else if (!in_section && first_word(l, "Section")) {
+-                        _cleanup_strv_free_ char **a = NULL;
+-
+-                        r = strv_split_extract(&a, l, WHITESPACE, EXTRACT_QUOTES);
+-                        if (r < 0)
+-                                return -ENOMEM;
+-
+-                        if (strv_length(a) == 2 && streq(a[1], "InputClass"))
+-                                in_section = true;
+-
+-                } else if (in_section && first_word(l, "EndSection"))
+-                        in_section = false;
+-        }
++        c->x11_layout = getenv_strdup("GUIX_XKB_LAYOUT");
++        c->x11_model = getenv_strdup("GUIX_XKB_MODEL");
++        c->x11_variant = getenv_strdup("GUIX_XKB_VARIANT");
++        c->x11_options = getenv_strdup("GUIX_XKB_OPTIONS");
+ 
+         return 0;
+ }
+ 
+ int locale_write_data(Context *c, char ***settings) {
+-        _cleanup_strv_free_ char **l = NULL;
+-        struct stat st;
+-        int r, p;
+-
+-        /* Set values will be returned as strv in *settings on success. */
+-
+-        for (p = 0; p < _VARIABLE_LC_MAX; p++) {
+-                _cleanup_free_ char *t = NULL;
+-                char **u;
+-                const char *name;
+-
+-                name = locale_variable_to_string(p);
+-                assert(name);
+-
+-                if (isempty(c->locale[p]))
+-                        continue;
+-
+-                if (asprintf(&t, "%s=%s", name, c->locale[p]) < 0)
+-                        return -ENOMEM;
+-
+-                u = strv_env_set(l, t);
+-                if (!u)
+-                        return -ENOMEM;
+-
+-                strv_free_and_replace(l, u);
+-        }
+-
+-        if (strv_isempty(l)) {
+-                if (unlink("/etc/locale.conf") < 0)
+-                        return errno == ENOENT ? 0 : -errno;
+-
+-                c->locale_mtime = USEC_INFINITY;
+-                return 0;
+-        }
+-
+-        r = write_env_file_label("/etc/locale.conf", l);
+-        if (r < 0)
+-                return r;
+-
+-        *settings = TAKE_PTR(l);
+-
+-        if (stat("/etc/locale.conf", &st) >= 0)
+-                c->locale_mtime = timespec_load(&st.st_mtim);
+-
+-        return 0;
++        return -ENOSYS;
+ }
+ 
+ int vconsole_write_data(Context *c) {
+-        _cleanup_strv_free_ char **l = NULL;
+-        struct stat st;
+-        int r;
+-
+-        r = load_env_file(NULL, "/etc/vconsole.conf", &l);
+-        if (r < 0 && r != -ENOENT)
+-                return r;
+-
+-        if (isempty(c->vc_keymap))
+-                l = strv_env_unset(l, "KEYMAP");
+-        else {
+-                _cleanup_free_ char *s = NULL;
+-                char **u;
+-
+-                s = strappend("KEYMAP=", c->vc_keymap);
+-                if (!s)
+-                        return -ENOMEM;
+-
+-                u = strv_env_set(l, s);
+-                if (!u)
+-                        return -ENOMEM;
+-
+-                strv_free_and_replace(l, u);
+-        }
+-
+-        if (isempty(c->vc_keymap_toggle))
+-                l = strv_env_unset(l, "KEYMAP_TOGGLE");
+-        else  {
+-                _cleanup_free_ char *s = NULL;
+-                char **u;
+-
+-                s = strappend("KEYMAP_TOGGLE=", c->vc_keymap_toggle);
+-                if (!s)
+-                        return -ENOMEM;
+-
+-                u = strv_env_set(l, s);
+-                if (!u)
+-                        return -ENOMEM;
+-
+-                strv_free_and_replace(l, u);
+-        }
+-
+-        if (strv_isempty(l)) {
+-                if (unlink("/etc/vconsole.conf") < 0)
+-                        return errno == ENOENT ? 0 : -errno;
+-
+-                c->vc_mtime = USEC_INFINITY;
+-                return 0;
+-        }
+-
+-        r = write_env_file_label("/etc/vconsole.conf", l);
+-        if (r < 0)
+-                return r;
+-
+-        if (stat("/etc/vconsole.conf", &st) >= 0)
+-                c->vc_mtime = timespec_load(&st.st_mtim);
+-
+-        return 0;
++        return -ENOSYS;
+ }
+ 
+ int x11_write_data(Context *c) {
+-        _cleanup_fclose_ FILE *f = NULL;
+-        _cleanup_free_ char *temp_path = NULL;
+-        struct stat st;
+-        int r;
+-
+-        if (isempty(c->x11_layout) &&
+-            isempty(c->x11_model) &&
+-            isempty(c->x11_variant) &&
+-            isempty(c->x11_options)) {
+-
+-                if (unlink("/etc/X11/xorg.conf.d/00-keyboard.conf") < 0)
+-                        return errno == ENOENT ? 0 : -errno;
+-
+-                c->vc_mtime = USEC_INFINITY;
+-                return 0;
+-        }
+-
+-        mkdir_p_label("/etc/X11/xorg.conf.d", 0755);
+-
+-        r = fopen_temporary("/etc/X11/xorg.conf.d/00-keyboard.conf", &f, &temp_path);
+-        if (r < 0)
+-                return r;
+-
+-        (void) __fsetlocking(f, FSETLOCKING_BYCALLER);
+-        (void) fchmod(fileno(f), 0644);
+-
+-        fputs("# Written by systemd-localed(8), read by systemd-localed and Xorg. It's\n"
+-              "# probably wise not to edit this file manually. Use localectl(1) to\n"
+-              "# instruct systemd-localed to update it.\n"
+-              "Section \"InputClass\"\n"
+-              "        Identifier \"system-keyboard\"\n"
+-              "        MatchIsKeyboard \"on\"\n", f);
+-
+-        if (!isempty(c->x11_layout))
+-                fprintf(f, "        Option \"XkbLayout\" \"%s\"\n", c->x11_layout);
+-
+-        if (!isempty(c->x11_model))
+-                fprintf(f, "        Option \"XkbModel\" \"%s\"\n", c->x11_model);
+-
+-        if (!isempty(c->x11_variant))
+-                fprintf(f, "        Option \"XkbVariant\" \"%s\"\n", c->x11_variant);
+-
+-        if (!isempty(c->x11_options))
+-                fprintf(f, "        Option \"XkbOptions\" \"%s\"\n", c->x11_options);
+-
+-        fputs("EndSection\n", f);
+-
+-        r = fflush_sync_and_check(f);
+-        if (r < 0)
+-                goto fail;
+-
+-        if (rename(temp_path, "/etc/X11/xorg.conf.d/00-keyboard.conf") < 0) {
+-                r = -errno;
+-                goto fail;
+-        }
+-
+-        if (stat("/etc/X11/xorg.conf.d/00-keyboard.conf", &st) >= 0)
+-                c->x11_mtime = timespec_load(&st.st_mtim);
+-
+-        return 0;
+-
+-fail:
+-        if (temp_path)
+-                (void) unlink(temp_path);
+-
+-        return r;
++        return -ENOSYS;
+ }
+ 
+ static int read_next_mapping(const char* filename,
diff --git a/gnu/packages/patches/mtools-mformat-uninitialized.patch b/gnu/packages/patches/mtools-mformat-uninitialized.patch
new file mode 100644
index 0000000000..ae69d45c99
--- /dev/null
+++ b/gnu/packages/patches/mtools-mformat-uninitialized.patch
@@ -0,0 +1,20 @@
+Fix a bug whereby 'mformat' could end up passing uninitialized bytes
+to write(2).  This could be reproduced with:
+
+  mformat -C -f 1440 -L 16  -N 77777777 -i  /tmp/x ::
+
+where the output of /tmp/x would be non-deterministic.
+
+Patch by Ludovic Courtès <ludo@gnu.org>.
+
+--- mtools-4.0.23/mformat.c	2019-04-21 00:12:01.496116195 +0200
++++ mtools-4.0.23/mformat.c	2019-04-21 00:12:36.675967157 +0200
+@@ -927,6 +927,7 @@ void mformat(int argc, char **argv, int
+ 	
+ 	char *endptr;
+ 
++	memset(&boot.bytes, '\0', sizeof boot);
+ 	hs = hs_set = 0;
+ 	argtracks = 0;
+ 	argheads = 0;
+
diff --git a/gnu/packages/patches/ntfs-3g-CVE-2019-9755.patch b/gnu/packages/patches/ntfs-3g-CVE-2019-9755.patch
new file mode 100644
index 0000000000..a7794aed47
--- /dev/null
+++ b/gnu/packages/patches/ntfs-3g-CVE-2019-9755.patch
@@ -0,0 +1,72 @@
+Fix CVE-2019-9755:
+
+https://security-tracker.debian.org/tracker/CVE-2019-9755
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9755
+
+Patch copied from upstream source repository:
+
+https://sourceforge.net/p/ntfs-3g/ntfs-3g/ci/85c1634a26faa572d3c558d4cf8aaaca5202d4e9/
+
+From 85c1634a26faa572d3c558d4cf8aaaca5202d4e9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jean-Pierre=20Andr=C3=A9?= <jean-pierre.andre@wanadoo.fr>
+Date: Wed, 19 Dec 2018 15:57:50 +0100
+Subject: [PATCH] Fixed reporting an error when failed to build the mountpoint
+
+The size check was inefficient because getcwd() uses an unsigned int
+argument.
+---
+ src/lowntfs-3g.c | 6 +++++-
+ src/ntfs-3g.c    | 6 +++++-
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/src/lowntfs-3g.c b/src/lowntfs-3g.c
+index 993867fa..0660439b 100644
+--- a/src/lowntfs-3g.c
++++ b/src/lowntfs-3g.c
+@@ -4411,7 +4411,8 @@ int main(int argc, char *argv[])
+ 	else {
+ 		ctx->abs_mnt_point = (char*)ntfs_malloc(PATH_MAX);
+ 		if (ctx->abs_mnt_point) {
+-			if (getcwd(ctx->abs_mnt_point,
++			if ((strlen(opts.mnt_point) < PATH_MAX)
++			    && getcwd(ctx->abs_mnt_point,
+ 				     PATH_MAX - strlen(opts.mnt_point) - 1)) {
+ 				strcat(ctx->abs_mnt_point, "/");
+ 				strcat(ctx->abs_mnt_point, opts.mnt_point);
+@@ -4419,6 +4420,9 @@ int main(int argc, char *argv[])
+ 			/* Solaris also wants the absolute mount point */
+ 				opts.mnt_point = ctx->abs_mnt_point;
+ #endif /* defined(__sun) && defined (__SVR4) */
++			} else {
++				free(ctx->abs_mnt_point);
++				ctx->abs_mnt_point = (char*)NULL;
+ 			}
+ 		}
+ 	}
+diff --git a/src/ntfs-3g.c b/src/ntfs-3g.c
+index 6ce89fef..4e0912ae 100644
+--- a/src/ntfs-3g.c
++++ b/src/ntfs-3g.c
+@@ -4148,7 +4148,8 @@ int main(int argc, char *argv[])
+ 	else {
+ 		ctx->abs_mnt_point = (char*)ntfs_malloc(PATH_MAX);
+ 		if (ctx->abs_mnt_point) {
+-			if (getcwd(ctx->abs_mnt_point,
++			if ((strlen(opts.mnt_point) < PATH_MAX)
++			    && getcwd(ctx->abs_mnt_point,
+ 				     PATH_MAX - strlen(opts.mnt_point) - 1)) {
+ 				strcat(ctx->abs_mnt_point, "/");
+ 				strcat(ctx->abs_mnt_point, opts.mnt_point);
+@@ -4156,6 +4157,9 @@ int main(int argc, char *argv[])
+ 			/* Solaris also wants the absolute mount point */
+ 				opts.mnt_point = ctx->abs_mnt_point;
+ #endif /* defined(__sun) && defined (__SVR4) */
++			} else {
++				free(ctx->abs_mnt_point);
++				ctx->abs_mnt_point = (char*)NULL;
+ 			}
+ 		}
+ 	}
+-- 
+2.21.0
+
diff --git a/gnu/packages/patches/ocaml-dose3-Fix-for-ocaml-4.06.patch b/gnu/packages/patches/ocaml-dose3-Fix-for-ocaml-4.06.patch
new file mode 100644
index 0000000000..2c344af821
--- /dev/null
+++ b/gnu/packages/patches/ocaml-dose3-Fix-for-ocaml-4.06.patch
@@ -0,0 +1,52 @@
+From aeca7656f499d7f4595319858f242276920e31bb Mon Sep 17 00:00:00 2001
+From: Louis Gesbert <louis.gesbert@ocamlpro.com>
+Date: Sat, 2 Dec 2017 12:51:01 +0100
+Subject: [PATCH] Fix for ocaml 4.06
+
+---
+ common/criteria_lexer.mll | 8 ++++----
+ common/util.ml            | 2 +-
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/common/criteria_lexer.mll b/common/criteria_lexer.mll
+index 71f9178..fc4eae3 100644
+--- a/common/criteria_lexer.mll
++++ b/common/criteria_lexer.mll
+@@ -18,7 +18,7 @@
+     let c = Lexing.lexeme_char lexbuf 2 in (* the delimiter can be any character *)
+     (* find the terminating delimiter *)
+     let endpos =
+-      try String.index_from lexbuf.lex_buffer (lexbuf.lex_start_pos + 3) c with
++      try Bytes.index_from lexbuf.lex_buffer (lexbuf.lex_start_pos + 3) c with
+       |Invalid_argument _ ->
+           raise (Format822.Syntax_error (
+             Format822.error lexbuf "String too short"))
+@@ -27,9 +27,9 @@
+             Format822.error lexbuf (Printf.sprintf "cannot find: %c" c)))
+     in
+     let len = endpos - (lexbuf.lex_start_pos + 3) in
+-    let s = String.sub lexbuf.lex_buffer (lexbuf.lex_start_pos + 3) len in
+-    lexbuf.Lexing.lex_curr_pos <- lexbuf.Lexing.lex_start_pos + ((String.length s)+4);
+-    s
++    let s = Bytes.sub lexbuf.lex_buffer (lexbuf.lex_start_pos + 3) len in
++    lexbuf.Lexing.lex_curr_pos <- lexbuf.Lexing.lex_start_pos + ((Bytes.length s)+4);
++    Bytes.to_string s
+ 
+ }
+ 
+diff --git a/common/util.ml b/common/util.ml
+index 598f266..36ca3d1 100644
+--- a/common/util.ml
++++ b/common/util.ml
+@@ -87,7 +87,7 @@ module MakeMessages(X : sig val label : string end) = struct
+   let clean label =
+     try 
+       let s = Filename.chop_extension (Filename.basename label) in
+-      String.capitalize s
++      String.capitalize_ascii s
+     with Invalid_argument _ -> label
+ 
+   let create ?(enabled=false) label =
+-- 
+2.11.0
+
diff --git a/gnu/packages/patches/ocaml-dose3-Install-mli-cmx-etc.patch b/gnu/packages/patches/ocaml-dose3-Install-mli-cmx-etc.patch
new file mode 100644
index 0000000000..41494e7b3c
--- /dev/null
+++ b/gnu/packages/patches/ocaml-dose3-Install-mli-cmx-etc.patch
@@ -0,0 +1,133 @@
+From b5314c20d8e3caf62fe0dc96ad937a2950158b23 Mon Sep 17 00:00:00 2001
+From: Louis Gesbert <louis.gesbert@ocamlpro.com>
+Date: Thu, 2 Mar 2017 12:19:56 +0100
+Subject: [PATCH] Install mli, cmx, etc.
+
+---
+ Makefile | 26 +++++++++++++-------------
+ 1 file changed, 13 insertions(+), 13 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 09464ff..5044d7f 100644
+--- a/Makefile
++++ b/Makefile
+@@ -56,7 +56,7 @@ $(DOSELIBS)/cudf.%:
+ 	@for i in _build/cudf/cudf.*; do \
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -67,7 +67,7 @@ $(DOSELIBS)/common.%: common/*.ml common/*.mli
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -78,7 +78,7 @@ $(DOSELIBS)/versioning.%: versioning/*.ml versioning/*.mli
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -88,7 +88,7 @@ $(DOSELIBS)/algo.%: algo/*.ml algo/*.mli $(DOSELIBS)/common.%
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -98,7 +98,7 @@ $(DOSELIBS)/debian.%: deb/*.ml deb/*.mli $(DOSELIBS)/pef.%
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -108,7 +108,7 @@ $(DOSELIBS)/opam.%: opam/*.ml opam/*.mli $(DOSELIBS)/pef.%
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -118,7 +118,7 @@ $(DOSELIBS)/npm.%: npm/*.ml npm/*.mli $(DOSELIBS)/versioning.% $(DOSELIBS)/pef.%
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -128,7 +128,7 @@ $(DOSELIBS)/rpm.%: rpm/*.ml $(DOSELIBS)/algo.%
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -138,7 +138,7 @@ $(DOSELIBS)/pef.%: pef/*.ml pef/*.mli
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -148,7 +148,7 @@ $(DOSELIBS)/csw.%: opencsw/*.ml $(DOSELIBS)/versioning.%
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ; \
++	  rm -f $(DOSELIBS)/*.mlpack ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -158,7 +158,7 @@ $(DOSELIBS)/doseparse.%: $(DOSELIBS)/pef.% $(DOSELIBS)/debian.%
+ 	  if [ -e $$i ]; then \
+ 	  cp $$i $(DOSELIBS) ; \
+ 		rm $$i ;\
+-	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx $(DOSELIBS)/*.ml ; \
++	  rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.ml ; \
+ 	  fi ; \
+ 	done
+ 
+@@ -168,7 +168,7 @@ $(DOSELIBS)/doseparseNoRpm.%: $(DOSELIBS)/pef.% $(DOSELIBS)/debian.%
+ 	  if [ -e $$i ]; then \
+ 			cp $$i $(DOSELIBS) ;\
+ 			rm $$i ;\
+-			rm -f $(DOSELIBS)/*.mlpack $(DOSELIBS)/*.cmx ;\
++			rm -f $(DOSELIBS)/*.mlpack ;\
+ 	  fi ; \
+ 	done
+ 
+@@ -223,7 +223,7 @@ INSTALL_STUFF_ = META
+ INSTALL_STUFF_ += $(wildcard _build/doselibs/*.cma _build/doselibs/*.cmi)
+ INSTALL_STUFF_ += $(wildcard _build/doselibs/*.cmxa _build/doselibs/*.cmxs)
+ INSTALL_STUFF_ += $(wildcard _build/doselibs/*.a)
+-#INSTALL_STUFF_ += $(wildcard _build/*/*.mli)
++INSTALL_STUFF_ += $(wildcard _build/doselibs/*.mli) $(wildcard _build/doselibs/*.cmti) $(wildcard _build/doselibs/*.cmx)
+ INSTALL_STUFF_ += $(wildcard _build/rpm/*.so)
+ 
+ exclude_cudf = $(wildcard _build/doselibs/*cudf* _build/cudf/*)
+-- 
+2.11.0
+
diff --git a/gnu/packages/patches/ocaml-dose3-add-unix-dependency.patch b/gnu/packages/patches/ocaml-dose3-add-unix-dependency.patch
new file mode 100644
index 0000000000..d2cc44c784
--- /dev/null
+++ b/gnu/packages/patches/ocaml-dose3-add-unix-dependency.patch
@@ -0,0 +1,25 @@
+From b94cf24739818e5aff397e0a83b19ea32dc81f42 Mon Sep 17 00:00:00 2001
+From: Louis Gesbert <louis.gesbert@ocamlpro.com>
+Date: Tue, 6 Feb 2018 10:15:45 +0100
+Subject: [PATCH 3/3] Add "unix" as dependency to dose3.common in META.in
+
+---
+ META.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/META.in b/META.in
+index aa2cd8d..0f9d337 100644
+--- a/META.in
++++ b/META.in
+@@ -8,7 +8,7 @@ package "common" (
+ version = "@PACKAGE_VERSION@"
+ archive(byte) = "common.cma"
+ archive(native) = "common.cmxa"
+-requires = "extlib, re.pcre, cudf, @ZIP@, @BZ2@"
++requires = "extlib, re.pcre, cudf, unix, @ZIP@, @BZ2@"
+ )
+ 
+ package "algo" (
+-- 
+2.11.0
+
diff --git a/gnu/packages/patches/ocaml-dose3-dont-make-printconf.patch b/gnu/packages/patches/ocaml-dose3-dont-make-printconf.patch
new file mode 100644
index 0000000000..84b6a3b81b
--- /dev/null
+++ b/gnu/packages/patches/ocaml-dose3-dont-make-printconf.patch
@@ -0,0 +1,9 @@
+--- a/configure
++++ b/configure
+@@ -6552,6 +6552,3 @@ if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+ $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+ fi
+-
+-
+-make printconf
diff --git a/gnu/packages/patches/openssh-CVE-2018-20685.patch b/gnu/packages/patches/openssh-CVE-2018-20685.patch
deleted file mode 100644
index 463c08a9d4..0000000000
--- a/gnu/packages/patches/openssh-CVE-2018-20685.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-Fix CVE-2018-20685:
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-20685
-
-Patch copied from upstream source repository:
-
-https://github.com/openssh/openssh-portable/commit/6010c0303a422a9c5fa8860c061bf7105eb7f8b2
-
-From 6010c0303a422a9c5fa8860c061bf7105eb7f8b2 Mon Sep 17 00:00:00 2001
-From: "djm@openbsd.org" <djm@openbsd.org>
-Date: Fri, 16 Nov 2018 03:03:10 +0000
-Subject: [PATCH] upstream: disallow empty incoming filename or ones that refer
- to the
-
-current directory; based on report/patch from Harry Sintonen
-
-OpenBSD-Commit-ID: f27651b30eaee2df49540ab68d030865c04f6de9
----
- scp.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/scp.c b/scp.c
-index 60682c68..4f3fdcd3 100644
---- a/scp.c
-+++ b/scp.c
-#@@ -1,4 +1,4 @@
-#-/* $OpenBSD: scp.c,v 1.197 2018/06/01 04:31:48 dtucker Exp $ */
-#+/* $OpenBSD: scp.c,v 1.198 2018/11/16 03:03:10 djm Exp $ */
-# /*
-#  * scp - secure remote copy.  This is basically patched BSD rcp which
-#  * uses ssh to do the data transfer (instead of using rcmd).
-@@ -1106,7 +1106,8 @@ sink(int argc, char **argv)
- 			SCREWUP("size out of range");
- 		size = (off_t)ull;
- 
--		if ((strchr(cp, '/') != NULL) || (strcmp(cp, "..") == 0)) {
-+		if (*cp == '\0' || strchr(cp, '/') != NULL ||
-+		    strcmp(cp, ".") == 0 || strcmp(cp, "..") == 0) {
- 			run_err("error: unexpected filename: %s", cp);
- 			exit(1);
- 		}
--- 
-2.20.1
-
diff --git a/gnu/packages/patches/python-pyfakefs-remove-bad-test.patch b/gnu/packages/patches/python-pyfakefs-remove-bad-test.patch
new file mode 100644
index 0000000000..a9488bbe43
--- /dev/null
+++ b/gnu/packages/patches/python-pyfakefs-remove-bad-test.patch
@@ -0,0 +1,23 @@
+This test incorrectly assumes that the root user is always available.
+However, in the build environment, the root user is not available.
+Note that because the original file distributed in the release on PyPi
+has lines ending in CRLF, those are retained in the diff below.
+
+--- a/pyfakefs/tests/fake_filesystem_test.py	1969-12-31 16:00:00.000000000 -0800
++++ b/pyfakefs/tests/fake_filesystem_test.py	1969-12-31 16:00:00.000000000 -0800
+@@ -1021,15 +1021,6 @@
+             self.assertEqual(self.path.expanduser('~'),

+                              self.os.environ['HOME'].replace('/', '!'))

+ 

+-    @unittest.skipIf(TestCase.is_windows or TestCase.is_cygwin,

+-                     'only tested on unix systems')

+-    def test_expand_root(self):

+-        if sys.platform == 'darwin':

+-            roothome = '!var!root'

+-        else:

+-            roothome = '!root'

+-        self.assertEqual(self.path.expanduser('~root'), roothome)

+-

+     def test_getsize_path_nonexistent(self):

+         file_path = 'foo!bar!baz'

+         self.assertRaises(os.error, self.path.getsize, file_path)

diff --git a/gnu/packages/patches/python-robotframework-honor-source-date-epoch.patch b/gnu/packages/patches/python-robotframework-honor-source-date-epoch.patch
new file mode 100644
index 0000000000..ccd87911d8
--- /dev/null
+++ b/gnu/packages/patches/python-robotframework-honor-source-date-epoch.patch
@@ -0,0 +1,62 @@
+From 3cc41c05fad5601c0dd1832f64a6e9efca017727 Mon Sep 17 00:00:00 2001
+From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
+Date: Mon, 1 Apr 2019 11:36:04 -0400
+Subject: [PATCH] robottime: Honor the SOURCE_DATE_EPOCH environment variable.
+
+Honoring the SOURCE_DATE_EPOCH environment variable allows building
+the documentation using libdoc reproducibly, by setting the generated
+timestamp to a fixed value.
+
+For more background on reproducible builds and the SOURCE_DATE_EPOCH
+environment variable, see:
+https://reproducible-builds.org/specs/source-date-epoch/.
+
+* src/robot/utils/robottime.py: import `os'.
+(TimestampCache._get_epoch): Retrieve date from SOURCE_DATE_EPOCH if
+it is defined, otherwise from time.time().
+* utest/output/test_logger.py (TestLogger.test_write_to_one_logger):
+Check for the existance of a timestamp attribute instead of checking
+for its content as the later is easy to break when using the
+SOURCE_DATE_EPOCH environment variable.
+---
+ src/robot/utils/robottime.py | 3 +++
+ utest/output/test_logger.py  | 2 +-
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/robot/utils/robottime.py b/src/robot/utils/robottime.py
+index 06432a4a6..91526f826 100644
+--- a/src/robot/utils/robottime.py
++++ b/src/robot/utils/robottime.py
+@@ -14,6 +14,7 @@
+ #  limitations under the License.
+ 
+ import datetime
++import os
+ import time
+ import re
+ 
+@@ -395,6 +396,8 @@ class TimestampCache(object):
+ 
+     # Seam for mocking
+     def _get_epoch(self):
++        if os.getenv('SOURCE_DATE_EPOCH'):
++            return float(os.getenv('SOURCE_DATE_EPOCH'))
+         return time.time()
+ 
+     def _use_cache(self, secs, *separators):
+diff --git a/utest/output/test_logger.py b/utest/output/test_logger.py
+index 92fe6d77d..e980227aa 100644
+--- a/utest/output/test_logger.py
++++ b/utest/output/test_logger.py
+@@ -46,7 +46,7 @@ class TestLogger(unittest.TestCase):
+         logger = LoggerMock(('Hello, world!', 'INFO'))
+         self.logger.register_logger(logger)
+         self.logger.write('Hello, world!', 'INFO')
+-        assert_true(logger.msg.timestamp.startswith('20'))
++        assert_true(hasattr(logger.msg, 'timestamp'))
+ 
+     def test_write_to_one_logger_with_trace_level(self):
+         logger = LoggerMock(('expected message', 'TRACE'))
+-- 
+2.20.1
+
diff --git a/gnu/packages/patches/quilt-getopt-nondigit-param.patch b/gnu/packages/patches/quilt-getopt-nondigit-param.patch
deleted file mode 100644
index 6bbec67e75..0000000000
--- a/gnu/packages/patches/quilt-getopt-nondigit-param.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From: Jean Delvare <jdelvare@suse.de>
-Subject: compat/getopt: Allow non-digit parameter embedded in short option
-
-The compatibility getopt script allows only digit parameters to be
-embedded in short options. Util-linux's getopt implementation does
-not have such a restriction and allows any parameter to be embedded
-in short options. As a consequence, using the compatibility getopt
-script would choke for example on "-pab", which is a legal option
-of the "quilt refresh" command.
-
-Remove the limitation on digits so that the compatibility getopt
-script allows what util-linux allows. This fixes the second half
-of bug #54772:
-https://savannah.nongnu.org/bugs/index.php?54772
-
-As a side note, this feature of the compatibility script was broken
-anyway, as it would output the digits in reverse order.
-
-Signed-off-by: Jean Delvare <jdelvare@suse.de>
----
- compat/getopt.in |   13 ++++---------
- 1 file changed, 4 insertions(+), 9 deletions(-)
-
---- quilt.orig/compat/getopt.in	2018-10-03 16:05:56.818667040 +0200
-+++ quilt/compat/getopt.in	2018-10-03 16:12:17.624841732 +0200
-@@ -108,15 +108,10 @@ foreach my $word (@words) {
- 				if (scalar(@letters) == 0) {
- 					$need_param = $letter;
- 				} else {
--					# short options can have numerical args
--					# embedded in the short option list: -UO
--					die "unexpected character after option $letter"
--						if ($letters[$#letters] !~ /[0-9]/);
--					my @digits;
--					while (scalar(@letters) && ($letters[$#letters] =~ /[0-9]/)) {
--						push @digits, pop @letters;
--					}
--					push @options, quote_word(join('', reverse @digits));
-+					# short options can have args
-+					# embedded in the short option list
-+					push @options, quote_word(join('', reverse @letters));
-+					@letters = ();
- 				}
- 			}
- 		}
diff --git a/gnu/packages/patches/quilt-getopt-second-separator.patch b/gnu/packages/patches/quilt-getopt-second-separator.patch
deleted file mode 100644
index cde2c8d41c..0000000000
--- a/gnu/packages/patches/quilt-getopt-second-separator.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From: Jean Delvare <jdelvare@suse.de>
-Subject: compat/getopt: Handle a second separator
-
-getopt can be passed 2 '--' separators. The first one tells that
-getopt options are over and target program options start. The second
-one tells that the target program's options are over and following
-arguments should be treated as non-options even if they look like
-options.
-
-This second separator was not handled, causing the compatibility
-getopt script to treat the following arguments as options, eventually
-failing one way or another.
-
-Properly detect and handle the second separator. This fixes the first
-half of bug #54772:
-https://savannah.nongnu.org/bugs/index.php?54772
-
-Signed-off-by: Jean Delvare <jdelvare@suse.de>
----
- compat/getopt.in |   13 ++++++++++---
- 1 file changed, 10 insertions(+), 3 deletions(-)
-
---- quilt.orig/compat/getopt.in	2018-10-03 15:23:21.147620172 +0200
-+++ quilt/compat/getopt.in	2018-10-03 16:05:56.818667040 +0200
-@@ -8,12 +8,12 @@
- 
- use strict;
- 
--my $opts;
-+my $opts = '';
- my @words;
- my $found_sep = 0;
- 
- foreach my $arg (@ARGV) {
--  if ($arg eq '--') {
-+  if (!$found_sep && $arg eq '--') {
-     $found_sep = 1;
-   }
-   else {
-@@ -62,10 +62,17 @@ sub quote_word
- 	return "'$word'";
- }
- 
-+# there can be a second separator, to inhibit processing following arguments
-+# as options
-+$found_sep = 0;
- foreach my $word (@words) {
-+	if ($word eq '--') {
-+		$found_sep = 1;
-+		next;
-+	}
- 
- 	# allow '-' to be an option value
--	if (!$need_param && $word !~ /^-./) {
-+	if ($found_sep || (!$need_param && $word !~ /^-./)) {
- 		push @barewords, quote_word($word);
- 		next;
- 	}
diff --git a/gnu/packages/patches/quilt-test-fix-regex.patch b/gnu/packages/patches/quilt-test-fix-regex.patch
deleted file mode 100644
index 2e249ac55b..0000000000
--- a/gnu/packages/patches/quilt-test-fix-regex.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 5193b137b5a9034ce79946edd40760df2f63a82a Mon Sep 17 00:00:00 2001
-From: Jean Delvare <jdelvare@suse.de>
-Date: Tue, 25 Apr 2017 15:17:53 +0200
-Subject: test: Escape curly braces in regex
-
-Curly braces in perl regex are supposed to be escaped, recent
-versions of perl complain when they aren't:
-
-Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/%{ <-- HERE (\w+)}/ at ./run line 114.
-Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/%{ <-- HERE \?}/ at ./run line 290.
-
-Signed-off-by: Jean Delvare <jdelvare@suse.de>
----
- test/run | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/test/run b/test/run
-index 942014e..03afc7a 100755
---- a/test/run
-+++ b/test/run
-@@ -112,7 +112,7 @@ sub flush_output()
- sub substitute_vars($)
- {
- 	my ($line) = @_;
--	$line =~ s[%{(\w+)}][defined $ENV{$1} ? $ENV{$1} : ""]eg;
-+	$line =~ s[%\{(\w+)\}][defined $ENV{$1} ? $ENV{$1} : ""]eg;
- 	return $line;
- }
- 
-@@ -288,7 +288,7 @@ while (defined(my $line = <SOURCE>)) {
- 	# Parse the next command
- 	if ($line =~ s/^\s*\$ ?//) {
- 		# Substitute %{?} with the last command's status
--		$line =~ s[%{\?}][$last_status]eg;
-+		$line =~ s[%\{\?\}][$last_status]eg;
- 
- 		chomp($prog = substitute_vars($line));
- 		$prog_line = $lineno;
--- 
-cgit v1.0-41-gc330
-
diff --git a/gnu/packages/patches/reptyr-fix-gcc-7.patch b/gnu/packages/patches/reptyr-fix-gcc-7.patch
deleted file mode 100644
index 5e0e581218..0000000000
--- a/gnu/packages/patches/reptyr-fix-gcc-7.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-This patch allows reptyr to build with gcc 7. It is taken from reptyr mainline patches
-fa0d63f and b45fd92.
-
-https://github.com/nelhage/reptyr/commit/fa0d63ff8c488be15976e5353580b565e85586a1
-https://github.com/nelhage/reptyr/commit/b45fd9238958fcf2d8f3d6fc23e6d491febea2ac
-
-Patch by Nelson Elhage <nelhage@nelhage.com>.
-
-diff --git a/attach.c b/attach.c
-index bd8ef8c..8d9cbf8 100644
---- a/attach.c
-+++ b/attach.c
-@@ -389,8 +389,11 @@ int setup_steal_socket(struct steal_pty_state *steal) {
-         return errno;
- 
-     steal->addr_un.sun_family = AF_UNIX;
--    snprintf(steal->addr_un.sun_path, sizeof(steal->addr_un.sun_path),
--             "%s/reptyr.sock", steal->tmpdir);
-+    if (snprintf(steal->addr_un.sun_path, sizeof(steal->addr_un.sun_path),
-+                 "%s/reptyr.sock", steal->tmpdir) >= sizeof(steal->addr_un.sun_path)) {
-+        error("tmpdir path too long!");
-+        return ENAMETOOLONG;
-+    }
- 
-     if ((steal->sockfd = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0)
-         return errno;
-diff --git a/platform/linux/linux.h b/platform/linux/linux.h
-index 9e6b78a..3ec5a99 100644
---- a/platform/linux/linux.h
-+++ b/platform/linux/linux.h
-@@ -40,6 +40,7 @@
- #include <sys/ptrace.h>
- #include <asm/ptrace.h>
- #include <sys/types.h>
-+#include <sys/sysmacros.h>
- #include <sys/user.h>
- #include <unistd.h>
- #include <stdlib.h>
diff --git a/gnu/packages/patches/soundtouch-CVE-2018-1000223.patch b/gnu/packages/patches/soundtouch-CVE-2018-1000223.patch
deleted file mode 100644
index 961a183565..0000000000
--- a/gnu/packages/patches/soundtouch-CVE-2018-1000223.patch
+++ /dev/null
@@ -1,143 +0,0 @@
-Fix CVE-2018-1000223:
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000223
-https://gitlab.com/soundtouch/soundtouch/issues/6
-
-Patches copied from upstream source repository:
-
-https://gitlab.com/soundtouch/soundtouch/commit/9e02d9b04fda6c1f44336ff00bb5af1e2ffc039e
-https://gitlab.com/soundtouch/soundtouch/commit/e0240689056e4182fffdc2a16aa6e3425a15e275
-https://gitlab.com/soundtouch/soundtouch/commit/46531e5b92dd80dd9a7947463d6224fc7cb21967
-
-From 9e02d9b04fda6c1f44336ff00bb5af1e2ffc039e Mon Sep 17 00:00:00 2001
-From: oparviainen <oparviai@iki.fi>
-Date: Sun, 12 Aug 2018 20:24:37 +0300
-Subject: [PATCH] Added minimum size check for WAV header block lengh values
-
----
- source/SoundStretch/WavFile.cpp | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-diff --git a/source/SoundStretch/WavFile.cpp b/source/SoundStretch/WavFile.cpp
-index 7e7ade2..68818c9 100644
---- a/source/SoundStretch/WavFile.cpp
-+++ b/source/SoundStretch/WavFile.cpp
-@@ -530,7 +530,11 @@ int WavInFile::readHeaderBlock()
-         // read length of the format field

-         if (fread(&nLen, sizeof(int), 1, fptr) != 1) return -1;

-         // swap byte order if necessary

--        _swap32(nLen); // int format_len;

-+        _swap32(nLen);

-+

-+        // verify that header length isn't smaller than expected

-+        if (nLen < sizeof(header.format) - 8) return -1;

-+

-         header.format.format_len = nLen;

- 

-         // calculate how much length differs from expected

-@@ -572,6 +576,10 @@ int WavInFile::readHeaderBlock()
-         if (fread(&nLen, sizeof(int), 1, fptr) != 1) return -1;

-         // swap byte order if necessary

-         _swap32(nLen); // int fact_len;

-+

-+        // verify that fact length isn't smaller than expected

-+        if (nLen < sizeof(header.fact) - 8) return -1;

-+

-         header.fact.fact_len = nLen;

- 

-         // calculate how much length differs from expected

--- 
-2.18.0
-
-From e0240689056e4182fffdc2a16aa6e3425a15e275 Mon Sep 17 00:00:00 2001
-From: oparviainen <oparviai@iki.fi>
-Date: Mon, 13 Aug 2018 19:16:16 +0300
-Subject: [PATCH] Fixed WavFile header/fact not-too-small check
-
----
- source/SoundStretch/WavFile.cpp | 22 +++++++++++-----------
- 1 file changed, 11 insertions(+), 11 deletions(-)
-
-diff --git a/source/SoundStretch/WavFile.cpp b/source/SoundStretch/WavFile.cpp
-index 4af7a4c..3421bca 100644
---- a/source/SoundStretch/WavFile.cpp
-+++ b/source/SoundStretch/WavFile.cpp
-@@ -518,13 +518,13 @@ int WavInFile::readHeaderBlock()
-         // swap byte order if necessary

-         _swap32(nLen);

- 

--        // verify that header length isn't smaller than expected

--        if (nLen < sizeof(header.format) - 8) return -1;

-+        // calculate how much length differs from expected 

-+        nDump = nLen - ((int)sizeof(header.format) - 8);

- 

--        header.format.format_len = nLen;

-+        // verify that header length isn't smaller than expected structure

-+        if (nDump < 0) return -1;

- 

--        // calculate how much length differs from expected

--        nDump = nLen - ((int)sizeof(header.format) - 8);

-+        header.format.format_len = nLen;

- 

-         // if format_len is larger than expected, read only as much data as we've space for

-         if (nDump > 0)

-@@ -561,16 +561,16 @@ int WavInFile::readHeaderBlock()
-         // read length of the fact field

-         if (fread(&nLen, sizeof(int), 1, fptr) != 1) return -1;

-         // swap byte order if necessary

--        _swap32(nLen); // int fact_len;

--

--        // verify that fact length isn't smaller than expected

--        if (nLen < sizeof(header.fact) - 8) return -1;

--

--        header.fact.fact_len = nLen;

-+        _swap32(nLen);

- 

-         // calculate how much length differs from expected

-         nDump = nLen - ((int)sizeof(header.fact) - 8);

- 

-+        // verify that fact length isn't smaller than expected structure

-+        if (nDump < 0) return -1;

-+

-+        header.fact.fact_len = nLen;

-+

-         // if format_len is larger than expected, read only as much data as we've space for

-         if (nDump > 0)

-         {

--- 
-2.18.0
-
-From 46531e5b92dd80dd9a7947463d6224fc7cb21967 Mon Sep 17 00:00:00 2001
-From: olli <oparviai@iki.fi>
-Date: Mon, 13 Aug 2018 19:42:58 +0300
-Subject: [PATCH] Improved WavFile header/fact not-too-small check
-
----
- source/SoundStretch/WavFile.cpp | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/source/SoundStretch/WavFile.cpp b/source/SoundStretch/WavFile.cpp
-index 3421bca..9d90b8a 100644
---- a/source/SoundStretch/WavFile.cpp
-+++ b/source/SoundStretch/WavFile.cpp
-@@ -522,7 +522,7 @@ int WavInFile::readHeaderBlock()
-         nDump = nLen - ((int)sizeof(header.format) - 8);

- 

-         // verify that header length isn't smaller than expected structure

--        if (nDump < 0) return -1;

-+        if ((nLen < 0) || (nDump < 0)) return -1;

- 

-         header.format.format_len = nLen;

- 

-@@ -567,7 +567,7 @@ int WavInFile::readHeaderBlock()
-         nDump = nLen - ((int)sizeof(header.fact) - 8);

- 

-         // verify that fact length isn't smaller than expected structure

--        if (nDump < 0) return -1;

-+        if ((nLen < 0) || (nDump < 0)) return -1;

- 

-         header.fact.fact_len = nLen;

- 

--- 
-2.18.0
-
diff --git a/gnu/packages/patches/soundtouch-CVE-2018-14044-14045.patch b/gnu/packages/patches/soundtouch-CVE-2018-14044-14045.patch
deleted file mode 100644
index cc0282fc7b..0000000000
--- a/gnu/packages/patches/soundtouch-CVE-2018-14044-14045.patch
+++ /dev/null
@@ -1,138 +0,0 @@
-Fix CVE-2018-14044 and CVE-2018-14045:
-
-https://gitlab.com/soundtouch/soundtouch/issues/7
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-14044
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-14045
-
-Patch copied from upstream source repository:
-
-https://gitlab.com/soundtouch/soundtouch/commit/107f2c5d201a4dfea1b7f15c5957ff2ac9e5f260
-
-From 107f2c5d201a4dfea1b7f15c5957ff2ac9e5f260 Mon Sep 17 00:00:00 2001
-From: oparviainen <oparviai@iki.fi>
-Date: Sun, 12 Aug 2018 20:00:56 +0300
-Subject: [PATCH] Replaced illegal-number-of-channel assertions with run-time
- exception
-
----
- include/FIFOSamplePipe.h               | 12 ++++++++++++
- include/STTypes.h                      |  3 +++
- source/SoundTouch/FIFOSampleBuffer.cpp |  3 ++-
- source/SoundTouch/RateTransposer.cpp   |  5 ++---
- source/SoundTouch/SoundTouch.cpp       |  8 ++------
- source/SoundTouch/TDStretch.cpp        |  5 ++---
- 6 files changed, 23 insertions(+), 13 deletions(-)
-
-diff --git a/include/FIFOSamplePipe.h b/include/FIFOSamplePipe.h
-index 4ec9275..b08f836 100644
---- a/include/FIFOSamplePipe.h
-+++ b/include/FIFOSamplePipe.h
-@@ -51,6 +51,18 @@ namespace soundtouch
- /// Abstract base class for FIFO (first-in-first-out) sample processing classes.

- class FIFOSamplePipe

- {

-+protected:

-+

-+    bool verifyNumberOfChannels(int nChannels) const

-+    {

-+        if ((nChannels > 0) && (nChannels <= SOUNDTOUCH_MAX_CHANNELS))

-+        {

-+            return true;

-+        }

-+        ST_THROW_RT_ERROR("Error: Illegal number of channels");

-+        return false;

-+    }

-+

- public:

-     // virtual default destructor

-     virtual ~FIFOSamplePipe() {}

-diff --git a/include/STTypes.h b/include/STTypes.h
-index 03e7e07..862505e 100644
---- a/include/STTypes.h
-+++ b/include/STTypes.h
-@@ -56,6 +56,9 @@ typedef unsigned long   ulong;
- 

- namespace soundtouch

- {

-+    /// Max allowed number of channels

-+    #define SOUNDTOUCH_MAX_CHANNELS     16

-+

-     /// Activate these undef's to overrule the possible sampletype 

-     /// setting inherited from some other header file:

-     //#undef SOUNDTOUCH_INTEGER_SAMPLES

-diff --git a/source/SoundTouch/FIFOSampleBuffer.cpp b/source/SoundTouch/FIFOSampleBuffer.cpp
-index f0d5e42..706e869 100644
---- a/source/SoundTouch/FIFOSampleBuffer.cpp
-+++ b/source/SoundTouch/FIFOSampleBuffer.cpp
-@@ -73,7 +73,8 @@ void FIFOSampleBuffer::setChannels(int numChannels)
- {

-     uint usedBytes;

- 

--    assert(numChannels > 0);

-+    if (!verifyNumberOfChannels(numChannels)) return;

-+

-     usedBytes = channels * samplesInBuffer;

-     channels = (uint)numChannels;

-     samplesInBuffer = usedBytes / channels;

-diff --git a/source/SoundTouch/RateTransposer.cpp b/source/SoundTouch/RateTransposer.cpp
-index 8b66be3..d115a4c 100644
---- a/source/SoundTouch/RateTransposer.cpp
-+++ b/source/SoundTouch/RateTransposer.cpp
-@@ -179,11 +179,10 @@ void RateTransposer::processSamples(const SAMPLETYPE *src, uint nSamples)
- // Sets the number of channels, 1 = mono, 2 = stereo

- void RateTransposer::setChannels(int nChannels)

- {

--    assert(nChannels > 0);

-+    if (!verifyNumberOfChannels(nChannels) ||

-+        (pTransposer->numChannels == nChannels)) return;

- 

--    if (pTransposer->numChannels == nChannels) return;

-     pTransposer->setChannels(nChannels);

--

-     inputBuffer.setChannels(nChannels);

-     midBuffer.setChannels(nChannels);

-     outputBuffer.setChannels(nChannels);

-diff --git a/source/SoundTouch/SoundTouch.cpp b/source/SoundTouch/SoundTouch.cpp
-index 7b6756b..06bdd56 100644
---- a/source/SoundTouch/SoundTouch.cpp
-+++ b/source/SoundTouch/SoundTouch.cpp
-@@ -139,18 +139,14 @@ uint SoundTouch::getVersionId()
- // Sets the number of channels, 1 = mono, 2 = stereo

- void SoundTouch::setChannels(uint numChannels)

- {

--    /*if (numChannels != 1 && numChannels != 2) 

--    {

--        //ST_THROW_RT_ERROR("Illegal number of channels");

--        return;

--    }*/

-+    if (!verifyNumberOfChannels(numChannels)) return;

-+

-     channels = numChannels;

-     pRateTransposer->setChannels((int)numChannels);

-     pTDStretch->setChannels((int)numChannels);

- }

- 

- 

--

- // Sets new rate control value. Normal rate = 1.0, smaller values

- // represent slower rate, larger faster rates.

- void SoundTouch::setRate(double newRate)

-diff --git a/source/SoundTouch/TDStretch.cpp b/source/SoundTouch/TDStretch.cpp
-index 149cdb9..be2dc88 100644
---- a/source/SoundTouch/TDStretch.cpp
-+++ b/source/SoundTouch/TDStretch.cpp
-@@ -588,9 +588,8 @@ void TDStretch::setTempo(double newTempo)
- // Sets the number of channels, 1 = mono, 2 = stereo

- void TDStretch::setChannels(int numChannels)

- {

--    assert(numChannels > 0);

--    if (channels == numChannels) return;

--//    assert(numChannels == 1 || numChannels == 2);

-+    if (!verifyNumberOfChannels(numChannels) ||

-+        (channels == numChannels)) return;

- 

-     channels = numChannels;

-     inputBuffer.setChannels(channels);

--- 
-2.18.0
-
diff --git a/gnu/packages/patches/synfigstudio-fix-ui-with-gtk3.patch b/gnu/packages/patches/synfigstudio-fix-ui-with-gtk3.patch
deleted file mode 100644
index d7b3e92507..0000000000
--- a/gnu/packages/patches/synfigstudio-fix-ui-with-gtk3.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-Downloaded from
-https://github.com/synfig/synfig/commit/b9c3b73ee35b83c4d9183c800809040cef98b2f2.patch
-
-Without this patch the UI of Synfig Studio (when built with the latest version
-of GTK) displays very large buttons in the header of every frame.
-
-This patch can be removed with the next release.
-
-
-From b9c3b73ee35b83c4d9183c800809040cef98b2f2 Mon Sep 17 00:00:00 2001
-From: caryoscelus <caryoscelus@gmx.com>
-Date: Wed, 25 Jan 2017 18:34:39 +0300
-Subject: [PATCH] Fix dock drop area size
-
-Fixes #227
-
-By using Frame instead of Button we avoid intrusive Gtk themes
-from forcing huge drop area size.
----
- synfig-studio/src/gui/docks/dockdroparea.cpp | 15 ++++++++++-----
- 1 file changed, 10 insertions(+), 5 deletions(-)
-
-diff --git a/src/gui/docks/dockdroparea.cpp b/synfig-studio/src/gui/docks/dockdroparea.cpp
-index 0f8936fdb..e012282f0 100644
---- a/src/gui/docks/dockdroparea.cpp
-+++ b/src/gui/docks/dockdroparea.cpp
-@@ -35,7 +35,7 @@
- #include "app.h"
- #include "docks/dockdroparea.h"
- #include "docks/dockmanager.h"
--#include <gtkmm/button.h>
-+#include <gtkmm/frame.h>
- 
- #endif
- 
-@@ -61,10 +61,15 @@ DockDropArea::DockDropArea(Gtk::Widget *target):
- 	std::vector<Gtk::TargetEntry> listTargets;
- 	listTargets.push_back( Gtk::TargetEntry("SYNFIG_DOCK") );
- 
--	Gtk::Button *button_left   = manage(new Gtk::Button());
--	Gtk::Button *button_right  = manage(new Gtk::Button());
--	Gtk::Button *button_top    = manage(new Gtk::Button());
--	Gtk::Button *button_bottom = manage(new Gtk::Button());
-+	Gtk::Frame *button_left   = manage(new Gtk::Frame());
-+	Gtk::Frame *button_right  = manage(new Gtk::Frame());
-+	Gtk::Frame *button_top    = manage(new Gtk::Frame());
-+	Gtk::Frame *button_bottom = manage(new Gtk::Frame());
-+
-+	button_left->set_size_request(20, 10);
-+	button_right->set_size_request(20, 10);
-+	button_top->set_size_request(20, 10);
-+	button_bottom->set_size_request(20, 10);
- 
- 	button_left->drag_dest_set(listTargets);
- 	button_right->drag_dest_set(listTargets);
diff --git a/gnu/packages/patches/texlive-bin-CVE-2018-17407.patch b/gnu/packages/patches/texlive-bin-CVE-2018-17407.patch
new file mode 100644
index 0000000000..63646d420c
--- /dev/null
+++ b/gnu/packages/patches/texlive-bin-CVE-2018-17407.patch
@@ -0,0 +1,249 @@
+This patch adds support for newer versions of Poppler and some upstream
+TexLive fixes, including one for CVE-2018-17407.
+
+It is taken from Linux From Scratch:
+<http://www.linuxfromscratch.org/patches/blfs/svn/texlive-20180414-source-upstream_fixes-3.patch>.
+
+Submitted By: Ken Moffat <ken at linuxfromscratch dot org>
+Date: 2018-12-26
+Initial Package Version: 20180414
+Upstream Status: Applied
+Origin: Upstream
+Description: Two fixes, cherry-picked from svn plus a CVE fix.
+I have removed the partial fixes for various system versions of poppler.
+
+r47469 Fix segfault in dvipdfm-x (XeTeX) on 1/2/4-bit transparent indexed PNGs.
+
+r47477 Fix a ptex regression for discontinuous kinsoku table.
+
+Also, via fedora (I got lost in svn) a critical fix for CVE-2018-17407
+
+"A buffer overflow in the handling of Type 1 fonts allows arbitrary code
+execution when a malicious font is loaded by one of the vulnerable tools:
+pdflatex, pdftex, dvips, or luatex."
+
+diff -Naur a/texk/dvipdfm-x/pngimage.c b/texk/dvipdfm-x/pngimage.c
+--- a/texk/dvipdfm-x/pngimage.c	2018-02-17 08:41:35.000000000 +0000
++++ b/texk/dvipdfm-x/pngimage.c	2018-10-09 01:52:01.648670875 +0100
+@@ -964,12 +964,16 @@
+   png_bytep   trans;
+   int         num_trans;
+   png_uint_32 i;
++  png_byte    bpc, mask, shift;
+ 
+   if (!png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS) ||
+       !png_get_tRNS(png_ptr, info_ptr, &trans, &num_trans, NULL)) {
+     WARN("%s: PNG does not have valid tRNS chunk but tRNS is requested.", PNG_DEBUG_STR);
+     return NULL;
+   }
++  bpc   = png_get_bit_depth(png_ptr, info_ptr);
++  mask  = 0xff >> (8 - bpc);
++  shift = 8 - bpc;
+ 
+   smask = pdf_new_stream(STREAM_COMPRESS);
+   dict  = pdf_stream_dict(smask);
+@@ -981,7 +985,8 @@
+   pdf_add_dict(dict, pdf_new_name("ColorSpace"), pdf_new_name("DeviceGray"));
+   pdf_add_dict(dict, pdf_new_name("BitsPerComponent"), pdf_new_number(8));
+   for (i = 0; i < width*height; i++) {
+-    png_byte idx = image_data_ptr[i];
++    /* data is packed for 1/2/4 bpc formats, msb first */
++    png_byte idx = (image_data_ptr[bpc * i / 8] >> (shift - bpc * i % 8)) & mask;
+     smask_data_ptr[i] = (idx < num_trans) ? trans[idx] : 0xff;
+   }
+   pdf_add_stream(smask, (char *)smask_data_ptr, width*height);
+diff -Naur a/texk/dvipsk/writet1.c b/texk/dvipsk/writet1.c
+--- a/texk/dvipsk/writet1.c	2016-11-25 18:24:26.000000000 +0000
++++ b/texk/dvipsk/writet1.c	2018-10-09 01:52:01.648670875 +0100
+@@ -1449,7 +1449,9 @@
+         *(strend(t1_buf_array) - 1) = ' ';
+ 
+         t1_getline();
++        alloc_array(t1_buf, strlen(t1_line_array) + strlen(t1_buf_array) + 1, T1_BUF_SIZE);
+         strcat(t1_buf_array, t1_line_array);
++        alloc_array(t1_line, strlen(t1_buf_array) + 1, T1_BUF_SIZE);
+         strcpy(t1_line_array, t1_buf_array);
+         t1_line_ptr = eol(t1_line_array);
+     }
+diff -Naur a/texk/web2c/luatexdir/font/writet1.w b/texk/web2c/luatexdir/font/writet1.w
+--- a/texk/web2c/luatexdir/font/writet1.w	2016-11-25 18:24:34.000000000 +0000
++++ b/texk/web2c/luatexdir/font/writet1.w	2018-10-09 01:52:01.648670875 +0100
+@@ -1625,7 +1625,9 @@
+     if (sscanf(p, "%i", &i) != 1) {
+         strcpy(t1_buf_array, t1_line_array);
+         t1_getline();
++        alloc_array(t1_buf, strlen(t1_line_array) + strlen(t1_buf_array) + 1, T1_BUF_SIZE);
+         strcat(t1_buf_array, t1_line_array);
++        alloc_array(t1_line, strlen(t1_buf_array) + 1, T1_BUF_SIZE);
+         strcpy(t1_line_array, t1_buf_array);
+         t1_line_ptr = eol(t1_line_array);
+     }
+diff -Naur a/texk/web2c/luatexdir/image/pdftoepdf.w b/texk/web2c/luatexdir/image/pdftoepdf.w
+--- a/texk/web2c/luatexdir/image/pdftoepdf.w	2018-01-17 18:00:12.000000000 +0000
++++ b/texk/web2c/luatexdir/image/pdftoepdf.w	2018-10-09 01:52:01.648670875 +0100
+@@ -472,10 +472,10 @@
+         break;
+     */
+     case objString:
+-        copyString(pdf, obj->getString());
++        copyString(pdf, (GooString *)obj->getString());
+         break;
+     case objName:
+-        copyName(pdf, obj->getName());
++        copyName(pdf, (char *)obj->getName());
+         break;
+     case objNull:
+         pdf_add_null(pdf);
+diff -Naur a/texk/web2c/luatexdir/lua/lepdflib.cc b/texk/web2c/luatexdir/lua/lepdflib.cc
+--- a/texk/web2c/luatexdir/lua/lepdflib.cc	2018-02-14 14:44:38.000000000 +0000
++++ b/texk/web2c/luatexdir/lua/lepdflib.cc	2018-10-09 01:52:01.649670868 +0100
+@@ -674,7 +674,7 @@
+     uin = (udstruct *) luaL_checkudata(L, 1, M_##in);          \
+     if (uin->pd != NULL && uin->pd->pc != uin->pc)             \
+         pdfdoc_changed_error(L);                               \
+-    gs = ((in *) uin->d)->function();                          \
++    gs = (GooString *)((in *) uin->d)->function();             \
+     if (gs != NULL)                                            \
+         lua_pushlstring(L, gs->getCString(), gs->getLength()); \
+     else                                                       \
+@@ -1813,7 +1813,7 @@
+     if (uin->pd != NULL && uin->pd->pc != uin->pc)
+         pdfdoc_changed_error(L);
+     if (((Object *) uin->d)->isString()) {
+-        gs = ((Object *) uin->d)->getString();
++        gs = (GooString *)((Object *) uin->d)->getString();
+         lua_pushlstring(L, gs->getCString(), gs->getLength());
+     } else
+         lua_pushnil(L);
+diff -Naur a/texk/web2c/pdftexdir/writet1.c b/texk/web2c/pdftexdir/writet1.c
+--- a/texk/web2c/pdftexdir/writet1.c	2016-11-25 18:24:37.000000000 +0000
++++ b/texk/web2c/pdftexdir/writet1.c	2018-10-09 01:52:01.649670868 +0100
+@@ -1598,7 +1598,9 @@
+         *(strend(t1_buf_array) - 1) = ' ';
+ 
+         t1_getline();
++        alloc_array(t1_buf, strlen(t1_line_array) + strlen(t1_buf_array) + 1, T1_BUF_SIZE);
+         strcat(t1_buf_array, t1_line_array);
++        alloc_array(t1_line, strlen(t1_buf_array) + 1, T1_BUF_SIZE);
+         strcpy(t1_line_array, t1_buf_array);
+         t1_line_ptr = eol(t1_line_array);
+     }
+diff -Naur a/texk/web2c/ptexdir/ptex_version.h b/texk/web2c/ptexdir/ptex_version.h
+--- a/texk/web2c/ptexdir/ptex_version.h	2018-01-21 03:48:06.000000000 +0000
++++ b/texk/web2c/ptexdir/ptex_version.h	2018-10-09 01:52:01.649670868 +0100
+@@ -1 +1 @@
+-#define PTEX_VERSION "p3.8.0"
++#define PTEX_VERSION "p3.8.1"
+diff -Naur a/texk/web2c/ptexdir/tests/free_ixsp.tex b/texk/web2c/ptexdir/tests/free_ixsp.tex
+--- a/texk/web2c/ptexdir/tests/free_ixsp.tex	1970-01-01 01:00:00.000000000 +0100
++++ b/texk/web2c/ptexdir/tests/free_ixsp.tex	2018-10-09 01:52:01.649670868 +0100
+@@ -0,0 +1,53 @@
++%#!eptex -ini -etex
++\let\dump\relax
++\batchmode
++\input plain
++
++\errorstopmode
++\catcode`@=11
++\newcount\@tempcnta
++\newcount\@tempcntb
++\newcount\@tempcntc
++\mathchardef\LIM=256
++
++\def\MYCHAR#1{%
++  \@tempcntc=\numexpr7*#1+"101\relax
++  \@tempcnta=\@tempcntc\divide\@tempcnta 94
++  \@tempcntb=\numexpr\@tempcntc-94*\@tempcnta+1\relax
++  \ifnum\@tempcntb<0\advance\@tempcntb94 \advance\@tempcnta-1\fi
++  \advance\@tempcnta18 % 18区以降
++  \CNTA=\kuten\numexpr"100*\@tempcnta+\@tempcntb\relax
++}
++
++\newcount\CNT\newcount\CNTA
++\CNT=0
++\loop
++  \MYCHAR\CNT
++  \message{\the\CNT.}
++  \inhibitxspcode\CNTA=1\relax
++  \advance\CNT1\relax
++  \ifnum\CNT<\LIM
++\repeat
++
++\newcount\CNTB
++
++\loop
++  \MYCHAR\CNTB
++  \global\inhibitxspcode\CNTA=3
++{%
++\CNT=0
++\loop
++  \MYCHAR\CNT
++  \count@=\numexpr 1-\inhibitxspcode\CNTA\relax
++  \ifnum\count@=0\else\ifnum\CNTB=\CNT\else
++    \errmessage{<\the\CNTB, \the\CNT, \the\inhibitxspcode\CNTA>}\fi\fi
++  \advance\CNT1\relax
++  \ifnum\CNT<\LIM
++\repeat
++}
++  \MYCHAR\CNTB
++  \global\inhibitxspcode\CNTA=1\relax
++  \advance\CNTB1\relax
++  \ifnum\CNTB<\LIM
++\repeat
++\bye
+diff -Naur a/texk/web2c/ptexdir/tests/free_pena.tex b/texk/web2c/ptexdir/tests/free_pena.tex
+--- a/texk/web2c/ptexdir/tests/free_pena.tex	1970-01-01 01:00:00.000000000 +0100
++++ b/texk/web2c/ptexdir/tests/free_pena.tex	2018-10-09 01:52:01.649670868 +0100
+@@ -0,0 +1,52 @@
++%#!eptex -ini -etex
++\let\dump\relax
++\batchmode
++\input plain
++
++\errorstopmode
++\catcode`@=11
++\newcount\@tempcnta
++\newcount\@tempcntb
++\newcount\@tempcntc
++\mathchardef\LIM=256
++
++\def\MYCHAR#1{%
++  \@tempcntc=\numexpr7*#1+"101\relax
++  \@tempcnta=\@tempcntc\divide\@tempcnta 94
++  \@tempcntb=\numexpr\@tempcntc-94*\@tempcnta+1\relax
++  \ifnum\@tempcntb<0\advance\@tempcntb94 \advance\@tempcnta-1\fi
++  \advance\@tempcnta18 % 18区以降
++  \CNTA=\kuten\numexpr"100*\@tempcnta+\@tempcntb\relax
++}
++
++\newcount\CNT\newcount\CNTA
++\CNT=0
++\loop
++  \MYCHAR\CNT
++  \message{\the\CNT.}
++  \prebreakpenalty\CNTA=\numexpr\CNT+1\relax
++  \advance\CNT1\relax
++  \ifnum\CNT<\LIM
++\repeat
++
++\newcount\CNTB
++
++\loop
++  \MYCHAR\CNTB
++  \global\prebreakpenalty\CNTA=0
++{%
++\CNT=0
++\loop
++  \MYCHAR\CNT
++  \count@=\numexpr -\CNT-1+\prebreakpenalty\CNTA\relax
++  \ifnum\count@=0\else\ifnum\CNTB=\CNT\else\errmessage{<\the\CNTB, \the\CNT>}\fi\fi
++  \advance\CNT1\relax
++  \ifnum\CNT<\LIM
++\repeat
++}
++  \MYCHAR\CNTB
++  \global\prebreakpenalty\CNTA=\numexpr\CNTB+1\relax
++  \advance\CNTB1\relax
++  \ifnum\CNTB<\LIM
++\repeat
++\bye
diff --git a/gnu/packages/patches/texlive-bin-pdftex-poppler-compat.patch b/gnu/packages/patches/texlive-bin-pdftex-poppler-compat.patch
deleted file mode 100644
index eba4733f32..0000000000
--- a/gnu/packages/patches/texlive-bin-pdftex-poppler-compat.patch
+++ /dev/null
@@ -1,188 +0,0 @@
-Fix compatibility with Poppler 0.72.
-
-These files are taken from the upstream "poppler0.72.0.cc" variants and
-diffed against the "newpoppler" files from the 20180414 distribution.
-
-See revision 49336:
-https://tug.org/svn/texlive/trunk/Build/source/texk/web2c/pdftexdir/
-
---- a/texk/web2c/pdftexdir/pdftoepdf-newpoppler.cc	1970-01-01 01:00:00.000000000 +0100
-+++ b/texk/web2c/pdftexdir/pdftoepdf-newpoppler.cc	2018-12-09 21:14:58.479732695 +0100
-@@ -22,7 +22,7 @@
- https://git.archlinux.org/svntogit/packages.git/plain/texlive-bin/trunk
- by Arch Linux. A little modifications are made to avoid a crash for
- some kind of pdf images, such as figure_missing.pdf in gnuplot.
--The poppler should be 0.59.0 or newer versions.
-+The poppler should be 0.72.0 or newer versions.
- POPPLER_VERSION should be defined.
- */
- 
-@@ -120,7 +120,7 @@
- 
- static InObj *inObjList;
- static UsedEncoding *encodingList;
--static GBool isInit = gFalse;
-+static bool isInit = false;
- 
- // --------------------------------------------------------------------
- // Maintain list of open embedded PDF files
-@@ -317,7 +317,7 @@
-     pdf_puts("<<\n");
-     assert(r->type == objFont); // FontDescriptor is in fd_tree
-     for (i = 0, l = obj->dictGetLength(); i < l; ++i) {
--        key = obj->dictGetKey(i);
-+        key = (char *)obj->dictGetKey(i);
-         if (strncmp("FontDescriptor", key, strlen("FontDescriptor")) == 0
-             || strncmp("BaseFont", key, strlen("BaseFont")) == 0
-             || strncmp("Encoding", key, strlen("Encoding")) == 0)
-@@ -427,7 +427,7 @@
-         charset = fontdesc.dictLookup("CharSet");
-         if (!charset.isNull() &&
-             charset.isString() && is_subsetable(fontmap))
--            epdf_mark_glyphs(fd, (char *)charset.getString()->getCString());
-+            epdf_mark_glyphs(fd, (char *)charset.getString()->c_str());
-         else
-             embed_whole_font(fd);
-         addFontDesc(fontdescRef.getRef(), fd);
-@@ -454,7 +454,7 @@
-     for (i = 0, l = obj->dictGetLength(); i < l; ++i) {
-         fontRef = obj->dictGetValNF(i);
-         if (fontRef.isRef())
--            copyFont(obj->dictGetKey(i), &fontRef);
-+            copyFont((char *)obj->dictGetKey(i), &fontRef);
-         else if (fontRef.isDict()) {   // some programs generate pdf with embedded font object
-             copyName((char *)obj->dictGetKey(i));
-             pdf_puts(" ");
-@@ -566,7 +566,7 @@
-         pdf_printf("%s", convertNumToPDF(obj->getNum()));
-     } else if (obj->isString()) {
-         s = (GooString *)obj->getString();
--        p = s->getCString();
-+        p = (char *)s->c_str();
-         l = s->getLength();
-         if (strlen(p) == (unsigned int) l) {
-             pdf_puts("(");
-@@ -664,7 +664,7 @@
-                     ("PDF inclusion: CID fonts are not supported"
-                      " (try to disable font replacement to fix this)");
-             }
--            if ((s = ((Gfx8BitFont *) r->font)->getCharName(i)) != 0)
-+            if ((s = (char *)((Gfx8BitFont *) r->font)->getCharName(i)) != 0)
-                 glyphNames[i] = s;
-             else
-                 glyphNames[i] = notdef;
-@@ -683,7 +683,7 @@
- }
- 
- // get the pagebox according to the pagebox_spec
--static PDFRectangle *get_pagebox(Page * page, int pagebox_spec)
-+static const PDFRectangle *get_pagebox(Page * page, int pagebox_spec)
- {
-     if (pagebox_spec == pdfboxspecmedia)
-         return page->getMediaBox();
-@@ -715,7 +715,7 @@
- {
-     PdfDocument *pdf_doc;
-     Page *page;
--    PDFRectangle *pagebox;
-+    const PDFRectangle *pagebox;
- #ifdef POPPLER_VERSION
-     int pdf_major_version_found, pdf_minor_version_found;
- #else
-@@ -724,8 +724,8 @@
-     // initialize
-     if (!isInit) {
-         globalParams = new GlobalParams();
--        globalParams->setErrQuiet(gFalse);
--        isInit = gTrue;
-+        globalParams->setErrQuiet(false);
-+        isInit = true;
-     }
-     // open PDF file
-     pdf_doc = find_add_document(image_name);
-@@ -849,7 +849,7 @@
-     pageObj = xref->fetch(pageRef->num, pageRef->gen);
-     pageDict = pageObj.getDict();
-     rotate = page->getRotate();
--    PDFRectangle *pagebox;
-+    const PDFRectangle *pagebox;
-     // write the Page header
-     pdf_puts("/Type /XObject\n");
-     pdf_puts("/Subtype /Form\n");
-@@ -977,7 +977,7 @@
-             }
-             l = dic1.getLength();
-             for (i = 0; i < l; i++) {
--                groupDict.dictAdd(copyString(dic1.getKey(i)),
-+                groupDict.dictAdd((const char *)copyString(dic1.getKey(i)),
-                                   dic1.getValNF(i));
-             }
- // end modification
-@@ -1001,14 +1001,14 @@
-         pdf_puts("/Resources <<\n");
-         for (i = 0, l = obj1->dictGetLength(); i < l; ++i) {
-             obj2 = obj1->dictGetVal(i);
--            key = obj1->dictGetKey(i);
-+            key = (char *)obj1->dictGetKey(i);
-             if (strcmp("Font", key) == 0)
-                 copyFontResources(&obj2);
-             else if (strcmp("ProcSet", key) == 0)
-                 copyProcSet(&obj2);
-             else
--                copyOtherResources(&obj2, key);
-+                copyOtherResources(&obj2, (char *)key);
-         }
-         pdf_puts(">>\n");
-     }
-
---- a/texk/web2c/pdftexdir/pdftosrc-newpoppler.cc	1970-01-01 01:00:00.000000000 +0100
-+++ b/texk/web2c/pdftexdir/pdftosrc-newpoppler.cc	2018-12-09 21:14:58.479732695 +0100
-@@ -20,7 +20,7 @@
- /*
- This is based on the patch texlive-poppler-0.59.patch <2017-09-19> at
- https://git.archlinux.org/svntogit/packages.git/plain/texlive-bin/trunk
--by Arch Linux. The poppler should be 0.59.0 or newer versions.
-+by Arch Linux. The poppler should be 0.72.0 or newer versions.
- POPPLER_VERSION should be defined.
- */
- 
-@@ -109,7 +109,7 @@
-             fprintf(stderr, "No SourceName found\n");
-             exit(1);
-         }
--        outname = (char *)srcName.getString()->getCString();
-+        outname = (char *)srcName.getString()->c_str();
-         // We cannot free srcName, as objname shares its string.
-         // srcName.free();
-     } else if (objnum > 0) {
-@@ -118,7 +118,7 @@
-             fprintf(stderr, "Not a Stream object\n");
-             exit(1);
-         }
--        sprintf(buf, "%s", fileName->getCString());
-+        sprintf(buf, "%s", fileName->c_str());
-         if ((p = strrchr(buf, '.')) == 0)
-             p = strchr(buf, 0);
-         if (objgen == 0)
-@@ -128,7 +128,7 @@
-         outname = buf;
-     } else {                    // objnum < 0 means we are extracting the XRef table
-         extract_xref_table = true;
--        sprintf(buf, "%s", fileName->getCString());
-+        sprintf(buf, "%s", fileName->c_str());
-         if ((p = strrchr(buf, '.')) == 0)
-             p = strchr(buf, 0);
-         sprintf(p, ".xref");
-@@ -173,9 +173,9 @@
- 
-                 // parse the header: object numbers and offsets
-                 objStr.streamReset();
--                str = new EmbedStream(objStr.getStream(), Object(objNull), gTrue, first);
-+                str = new EmbedStream(objStr.getStream(), Object(objNull), true, first);
-                 lexer = new Lexer(xref, str);
--                parser = new Parser(xref, lexer, gFalse);
-+                parser = new Parser(xref, lexer, false);
-                 for (n = 0; n < nObjects; ++n) {
-                     obj1 = parser->getObj();
-                     obj2 = parser->getObj();
-
diff --git a/gnu/packages/patches/texlive-bin-xetex-poppler-compat.patch b/gnu/packages/patches/texlive-bin-xetex-poppler-compat.patch
deleted file mode 100644
index cac716cc59..0000000000
--- a/gnu/packages/patches/texlive-bin-xetex-poppler-compat.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-Fix compatibility with Poppler 0.72.
-
-Patch taken from upstream:
-https://tug.org/svn/texlive/trunk/Build/source/texk/web2c/xetexdir/pdfimage.cpp?r1=44964&r2=48969&diff_format=u
-
---- a/texk/web2c/xetexdir/pdfimage.cpp	2017/08/06 07:12:02	44964
-+++ b/texk/web2c/xetexdir/pdfimage.cpp	2018/10/22 04:01:42	48969
-@@ -82,19 +82,19 @@
- 	switch (pdf_box) {
- 		default:
- 		case pdfbox_crop:
--			r = page->getCropBox();
-+			r = (PDFRectangle *)page->getCropBox();
- 			break;
- 		case pdfbox_media:
--			r = page->getMediaBox();
-+			r = (PDFRectangle *)page->getMediaBox();
- 			break;
- 		case pdfbox_bleed:
--			r = page->getBleedBox();
-+			r = (PDFRectangle *)page->getBleedBox();
- 			break;
- 		case pdfbox_trim:
--			r = page->getTrimBox();
-+			r = (PDFRectangle *)page->getTrimBox();
- 			break;
- 		case pdfbox_art:
--			r = page->getArtBox();
-+			r = (PDFRectangle *)page->getArtBox();
- 			break;
- 	}
diff --git a/gnu/packages/patches/u-boot-fix-mkimage-header-verification.patch b/gnu/packages/patches/u-boot-fix-mkimage-header-verification.patch
new file mode 100644
index 0000000000..063677db4a
--- /dev/null
+++ b/gnu/packages/patches/u-boot-fix-mkimage-header-verification.patch
@@ -0,0 +1,57 @@
+From 48b52117235928cfd7ef1ec5c3f2cff5d7b03862 Mon Sep 17 00:00:00 2001
+From: Jordan Hand <jordanhand22@gmail.com>
+Date: Wed, 10 Apr 2019 09:46:32 -0700
+Subject: [PATCH,v2] fdt: Fix mkimage list to try every header type
+Origin: https://patchwork.ozlabs.org/patch/1083495/
+
+Image type is not supplied to `mkimage -l`. For this reason, we cannot
+use imagetool_verify_print_header_by_type. Instead, this patch uses
+imagetool_verify_print_header to look through all header types to find
+one where image validation succeeds.
+
+This patch fixes failures in test/image/test-imagetools.sh
+
+Signed-off-by: Jordan Hand <jorhand@microsoft.com>
+Tested-by: Alex Kiernan <alex.kiernan@gmail.com>
+Tested-by: Vagrant Cascadian <vagrant@debian.org>
+---
+ tools/mkimage.c | 23 +++++++++++++++--------
+ 1 file changed, 15 insertions(+), 8 deletions(-)
+
+diff --git a/tools/mkimage.c b/tools/mkimage.c
+index 2899adff81..76c3406d37 100644
+--- a/tools/mkimage.c
++++ b/tools/mkimage.c
+@@ -403,14 +403,21 @@ int main(int argc, char **argv)
+ 			exit (EXIT_FAILURE);
+ 		}
+ 
+-		/*
+-		 * scan through mkimage registry for all supported image types
+-		 * and verify the input image file header for match
+-		 * Print the image information for matched image type
+-		 * Returns the error code if not matched
+-		 */
+-		retval = imagetool_verify_print_header_by_type(ptr, &sbuf,
+-				tparams, &params);
++		if (params.fflag) {
++			/*
++			 * Verifies the header format based on the expected header for
++			 * image type in tparams
++			 */
++			retval = imagetool_verify_print_header_by_type(ptr, &sbuf,
++					tparams, &params);
++		} else {
++			/**
++			 * When listing the image, we are not given the image type. Simply check all
++			 * image types to find one that matches our header
++			 */
++			retval = imagetool_verify_print_header(ptr, &sbuf,
++					tparams, &params);
++		}
+ 
+ 		(void) munmap((void *)ptr, sbuf.st_size);
+ 		(void) close (ifd);
+-- 
+2.20.1
+
diff --git a/gnu/packages/patches/webkitgtk-sse2.patch b/gnu/packages/patches/webkitgtk-sse2.patch
new file mode 100644
index 0000000000..df70e38919
--- /dev/null
+++ b/gnu/packages/patches/webkitgtk-sse2.patch
@@ -0,0 +1,202 @@
+Fix build on i686.
+
+This patch is taken from upstream, with ChangeLog entries omitted.
+
+From 5048338c5f21605441c6833907d1136ac9640b35 Mon Sep 17 00:00:00 2001
+From: "mcatanzaro@igalia.com"
+ <mcatanzaro@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
+Date: Wed, 10 Apr 2019 18:27:25 +0000
+Subject: [PATCH] Unreviewed, rolling out r243989.
+
+Broke i686 builds
+
+Reverted changeset:
+
+"[CMake] Detect SSE2 at compile time"
+https://bugs.webkit.org/show_bug.cgi?id=196488
+https://trac.webkit.org/changeset/243989
+
+git-svn-id: http://svn.webkit.org/repository/webkit/trunk@244138 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+---
+ CMakeLists.txt                                | 10 ---
+ ChangeLog                                     | 12 ++++
+ Source/JavaScriptCore/ChangeLog               | 12 ++++
+ .../assembler/MacroAssemblerX86Common.cpp     |  7 ++
+ .../assembler/MacroAssemblerX86Common.h       | 30 +++++++++
+ Source/cmake/FindSSE2.cmake                   | 65 -------------------
+ 6 files changed, 61 insertions(+), 75 deletions(-)
+ delete mode 100644 Source/cmake/FindSSE2.cmake
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index acd77f4b623..d3e8a23f9ff 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -114,16 +114,6 @@ else ()
+     set(WTF_CPU_UNKNOWN 1)
+ endif ()
+ 
+-#---------------------------
+-# Make sure SSE2 is present.
+-#---------------------------
+-if (WTF_CPU_X86)
+-    include(FindSSE2)
+-    if (NOT SSE2_SUPPORT_FOUND)
+-        message(FATAL_ERROR "SSE2 support is required to compile WebKit")
+-    endif ()
+-endif ()
+-
+ # -----------------------------------------------------------------------------
+ # Determine the operating system
+ # -----------------------------------------------------------------------------
+diff --git a/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp b/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp
+index 8c752c0d030..31753589df7 100644
+--- a/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp
++++ b/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp
+@@ -168,6 +168,11 @@ static_assert(PROBE_OFFSETOF_REG(cpu.fprs, X86Registers::xmm15) == PROBE_CPU_XMM
+ static_assert(sizeof(Probe::State) == PROBE_SIZE, "Probe::State::size's matches ctiMasmProbeTrampoline");
+ static_assert((PROBE_EXECUTOR_OFFSET + PTR_SIZE) <= (PROBE_SIZE + OUT_SIZE), "Must have room after ProbeContext to stash the probe handler");
+ 
++#if CPU(X86)
++// SSE2 is a hard requirement on x86.
++static_assert(isSSE2Present(), "SSE2 support is required in JavaScriptCore");
++#endif
++
+ #undef PROBE_OFFSETOF
+ 
+ #if CPU(X86)
+@@ -787,6 +792,7 @@ void MacroAssemblerX86Common::collectCPUFeatures()
+     std::call_once(onceKey, [] {
+         {
+             CPUID cpuid = getCPUID(0x1);
++            s_sse2CheckState = (cpuid[3] & (1 << 26)) ? CPUIDCheckState::Set : CPUIDCheckState::Clear;
+             s_sse4_1CheckState = (cpuid[2] & (1 << 19)) ? CPUIDCheckState::Set : CPUIDCheckState::Clear;
+             s_sse4_2CheckState = (cpuid[2] & (1 << 20)) ? CPUIDCheckState::Set : CPUIDCheckState::Clear;
+             s_popcntCheckState = (cpuid[2] & (1 << 23)) ? CPUIDCheckState::Set : CPUIDCheckState::Clear;
+@@ -803,6 +809,7 @@ void MacroAssemblerX86Common::collectCPUFeatures()
+     });
+ }
+ 
++MacroAssemblerX86Common::CPUIDCheckState MacroAssemblerX86Common::s_sse2CheckState = CPUIDCheckState::NotChecked;
+ MacroAssemblerX86Common::CPUIDCheckState MacroAssemblerX86Common::s_sse4_1CheckState = CPUIDCheckState::NotChecked;
+ MacroAssemblerX86Common::CPUIDCheckState MacroAssemblerX86Common::s_sse4_2CheckState = CPUIDCheckState::NotChecked;
+ MacroAssemblerX86Common::CPUIDCheckState MacroAssemblerX86Common::s_avxCheckState = CPUIDCheckState::NotChecked;
+diff --git a/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h b/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h
+index ff097290ef3..097bcb0bb86 100644
+--- a/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h
++++ b/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h
+@@ -4197,11 +4197,41 @@ private:
+     }
+ #endif
+ 
++#if CPU(X86)
++#if OS(MAC_OS_X)
++
++    // All X86 Macs are guaranteed to support at least SSE2,
++    static bool isSSE2Present()
++    {
++        return true;
++    }
++
++#else // OS(MAC_OS_X)
++    static bool isSSE2Present()
++    {
++        if (s_sse2CheckState == CPUIDCheckState::NotChecked)
++            collectCPUFeatures();
++        return s_sse2CheckState == CPUIDCheckState::Set;
++    }
++
++#endif // OS(MAC_OS_X)
++#elif !defined(NDEBUG) // CPU(X86)
++
++    // On x86-64 we should never be checking for SSE2 in a non-debug build,
++    // but non debug add this method to keep the asserts above happy.
++    static bool isSSE2Present()
++    {
++        return true;
++    }
++
++#endif
++
+     using CPUID = std::array<unsigned, 4>;
+     static CPUID getCPUID(unsigned level);
+     static CPUID getCPUIDEx(unsigned level, unsigned count);
+     JS_EXPORT_PRIVATE static void collectCPUFeatures();
+ 
++    JS_EXPORT_PRIVATE static CPUIDCheckState s_sse2CheckState;
+     JS_EXPORT_PRIVATE static CPUIDCheckState s_sse4_1CheckState;
+     JS_EXPORT_PRIVATE static CPUIDCheckState s_sse4_2CheckState;
+     JS_EXPORT_PRIVATE static CPUIDCheckState s_avxCheckState;
+diff --git a/Source/cmake/FindSSE2.cmake b/Source/cmake/FindSSE2.cmake
+deleted file mode 100644
+index 7a947feadd4..00000000000
+--- a/Source/cmake/FindSSE2.cmake
++++ /dev/null
+@@ -1,65 +0,0 @@
+-#################################
+-# Check for the presence of SSE2.
+-#
+-# Once done, this will define:
+-# - SSE2_SUPPORT_FOUND - the system supports (at least) SSE2.
+-#
+-# Copyright (c) 2014, Pablo Fernandez Alcantarilla, Jesus Nuevo
+-# Copyright (c) 2019, Igalia S.L.
+-#
+-# Redistribution and use in source and binary forms, with or without modification,
+-# are permitted provided that the following conditions are met:
+-#
+-#   * Redistributions of source code must retain the above copyright notice,
+-#     this list of conditions and the following disclaimer.
+-#
+-#   * Redistributions in binary form must reproduce the above copyright notice,
+-#     this list of conditions and the following disclaimer in the documentation
+-#     and/or other materials provided with the distribution.
+-#
+-#   * Neither the name of the copyright holders nor the names of its contributors
+-#     may be used to endorse or promote products derived from this software without
+-#     specific prior written permission.
+-#
+-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+-# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+-# SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+-# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+-# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
+-# WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-
+-set(SSE2_SUPPORT_FOUND FALSE)
+-
+-macro(CHECK_FOR_SSE2)
+-    include(CheckCXXSourceRuns)
+-
+-    check_cxx_source_runs("
+-        #include <emmintrin.h>
+-        int main ()
+-        {
+-            __m128d a, b;
+-            double vals[2] = {0};
+-            a = _mm_loadu_pd (vals);
+-            b = _mm_add_pd (a,a);
+-            _mm_storeu_pd (vals,b);
+-            return(0);
+-        }"
+-        HAVE_SSE2_EXTENSIONS)
+-
+-    if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANG)
+-        if (HAVE_SSE2_EXTENSIONS)
+-            set(SSE2_SUPPORT_FOUND TRUE)
+-        endif ()
+-    elseif (MSVC AND NOT CMAKE_CL_64)
+-        if (HAVE_SSE2_EXTENSIONS)
+-            set(SSE2_SUPPORT_FOUND TRUE)
+-            message(STATUS "Found SSE2 extensions.")
+-        endif (HAVE_SSE2_EXTENSIONS)
+-    endif ()
+-
+-endmacro(CHECK_FOR_SSE2)
+-
+-CHECK_FOR_SSE2()
+-- 
+2.21.0
+