summaryrefslogtreecommitdiff
path: root/gnu/packages/patches
diff options
context:
space:
mode:
authorMarius Bakke <mbakke@fastmail.com>2020-03-10 20:50:02 +0100
committerMarius Bakke <mbakke@fastmail.com>2020-03-10 20:50:02 +0100
commit50b99c90c87642f664f9c9523a6e40fc8542ddcf (patch)
tree9fc8845e93ba913730e5fb92bbad158716d84e74 /gnu/packages/patches
parentbda4b5e0453e4c8feda24306b4aa76ad5406eb7d (diff)
parent21656ffa3b6d78a610f0befced20cc9b4b3baab6 (diff)
downloadguix-patches-50b99c90c87642f664f9c9523a6e40fc8542ddcf.tar
guix-patches-50b99c90c87642f664f9c9523a6e40fc8542ddcf.tar.gz
Merge branch 'master' into core-updates
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r--gnu/packages/patches/akonadi-Revert-Make-installation-properly-relo.patch (renamed from gnu/packages/patches/akonadi-Revert-Make-installation-properly-relocatabl.patch)0
-rw-r--r--gnu/packages/patches/anki-mpv-args.patch42
-rw-r--r--gnu/packages/patches/csvkit-fix-tests.patch45
-rw-r--r--gnu/packages/patches/guile-3.0-crash.patch17
-rw-r--r--gnu/packages/patches/icecat-makeicecat.patch4
-rw-r--r--gnu/packages/patches/libseccomp-open-aarch64.patch27
-rw-r--r--gnu/packages/patches/qemu-CVE-2020-8608.patch269
-rw-r--r--gnu/packages/patches/sdl-pango-fix-explicit-SDLPango_CopyFTBitmapTo.patch (renamed from gnu/packages/patches/sdl-pango-fix-explicit-SDLPango_CopyFTBitmapToSurface.patch)0
-rw-r--r--gnu/packages/patches/spice-fix-test-armhf.patch19
-rw-r--r--gnu/packages/patches/suitesparse-mongoose-cmake.patch27
-rw-r--r--gnu/packages/patches/woff2-libbrotli.patch84
11 files changed, 357 insertions, 177 deletions
diff --git a/gnu/packages/patches/akonadi-Revert-Make-installation-properly-relocatabl.patch b/gnu/packages/patches/akonadi-Revert-Make-installation-properly-relo.patch
index c3964c5c05..c3964c5c05 100644
--- a/gnu/packages/patches/akonadi-Revert-Make-installation-properly-relocatabl.patch
+++ b/gnu/packages/patches/akonadi-Revert-Make-installation-properly-relo.patch
diff --git a/gnu/packages/patches/anki-mpv-args.patch b/gnu/packages/patches/anki-mpv-args.patch
new file mode 100644
index 0000000000..21b9bd0aba
--- /dev/null
+++ b/gnu/packages/patches/anki-mpv-args.patch
@@ -0,0 +1,42 @@
+Modified from upstream commit:
+https://github.com/ankitects/anki/commit/ccd715013609133c55e83924734efa78abc03326
+Fixes mpv argument syntax (support for old syntax removed in mpv 0.31):
+https://anki.tenderapp.com/discussions/ankidesktop/38186-mpvprocesserror-unable-to-start-process
+Necessary because we are currently unable to upgrade anki to the
+latest version in guix (NPM dependencies currently unpackaged).
+---
+ anki/mpv.py | 4 ++--
+ anki/sound.py | 1 -
+ 2 files changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/anki/mpv.py b/anki/mpv.py
+index f53d9d0..563fddc 100644
+--- a/anki/mpv.py
++++ b/anki/mpv.py
+@@ -104,9 +104,9 @@ class MPVBase:
+ """
+ self.argv = [self.executable]
+ self.argv += self.default_argv
+- self.argv += ["--input-ipc-server", self._sock_filename]
++ self.argv += ["--input-ipc-server="+self._sock_filename]
+ if self.window_id is not None:
+- self.argv += ["--wid", str(self.window_id)]
++ self.argv += ["--wid="+str(self.window_id)]
+
+ def _start_process(self):
+ """Start the mpv process.
+diff --git a/anki/sound.py b/anki/sound.py
+index aa3431b..a5fce44 100644
+--- a/anki/sound.py
++++ b/anki/sound.py
+@@ -124,7 +124,6 @@ class MpvManager(MPV):
+ def setMpvConfigBase(base):
+ mpvConfPath = os.path.join(base, "mpv.conf")
+ MpvManager.default_argv += [
+- "--no-config",
+ "--include="+mpvConfPath,
+ ]
+
+--
+2.25.1
+
diff --git a/gnu/packages/patches/csvkit-fix-tests.patch b/gnu/packages/patches/csvkit-fix-tests.patch
deleted file mode 100644
index cb9ec39cb0..0000000000
--- a/gnu/packages/patches/csvkit-fix-tests.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-diff --git a/tests/test_utilities/test_csvsql.py b/tests/test_utilities/test_csvsql.py
-index e6ec4af..4f47980 100644
---- a/tests/test_utilities/test_csvsql.py
-+++ b/tests/test_utilities/test_csvsql.py
-@@ -197,7 +197,7 @@ class TestCSVSQL(CSVKitTestCase, EmptyFileTests):
- utility.run()
- output = output_file.getvalue()
- output_file.close()
-- self.assertEqual(output, 'a,b,c\n1,2,3\n0,5,6\n')
-+ self.assertEqual(output, 'a,b,c\n1,2.0,3.0\n0,5.0,6.0\n')
-
- def test_no_prefix_unique_constraint(self):
- self.get_output(['--db', 'sqlite:///' + self.db_file, '--insert', 'examples/dummy.csv', '--unique-constraint', 'a'])
-diff --git a/tests/test_utilities/test_sql2csv.py b/tests/test_utilities/test_sql2csv.py
-index a0c3d3e..babcfd6 100644
---- a/tests/test_utilities/test_sql2csv.py
-+++ b/tests/test_utilities/test_sql2csv.py
-@@ -121,23 +121,23 @@ class TestSQL2CSV(CSVKitTestCase, EmptyFileTests):
- input_file.close()
-
- def test_unicode(self):
-- expected = self.csvsql('examples/test_utf8.csv')
-+ self.csvsql('examples/test_utf8.csv')
- csv = self.get_output(['--db', 'sqlite:///' + self.db_file, '--query', 'select * from foo'])
-- self.assertEqual(csv.strip(), expected)
-+ self.assertEqual(csv.strip(), 'foo,bar,baz\n1.0,2.0,3\n4.0,5.0,ʤ')
-
- def test_no_header_row(self):
- self.csvsql('examples/dummy.csv')
- csv = self.get_output(['--db', 'sqlite:///' + self.db_file, '--no-header-row', '--query', 'select * from foo'])
-
- self.assertTrue('a,b,c' not in csv)
-- self.assertTrue('1,2,3' in csv)
-+ self.assertTrue('1,2.0,3.0' in csv)
-
- def test_linenumbers(self):
- self.csvsql('examples/dummy.csv')
- csv = self.get_output(['--db', 'sqlite:///' + self.db_file, '--linenumbers', '--query', 'select * from foo'])
-
- self.assertTrue('line_number,a,b,c' in csv)
-- self.assertTrue('1,1,2,3' in csv)
-+ self.assertTrue('1,1,2.0,3.0' in csv)
-
- def test_wildcard_on_sqlite(self):
- self.csvsql('examples/iris.csv')
diff --git a/gnu/packages/patches/guile-3.0-crash.patch b/gnu/packages/patches/guile-3.0-crash.patch
new file mode 100644
index 0000000000..510834ab57
--- /dev/null
+++ b/gnu/packages/patches/guile-3.0-crash.patch
@@ -0,0 +1,17 @@
+Fix crash due to: <https://issues.guix.gnu.org/issue/39266>.
+
+diff --git a/libguile/struct.c b/libguile/struct.c
+index 3dbcc71d4..ddcbe46d2 100644
+--- a/libguile/struct.c
++++ b/libguile/struct.c
+@@ -139,7 +139,9 @@ set_vtable_access_fields (SCM vtable)
+ nfields = len / 2;
+
+ bitmask_size = (nfields + 31U) / 32U;
+- unboxed_fields = scm_gc_malloc_pointerless (bitmask_size, "unboxed fields");
++ unboxed_fields =
++ scm_gc_malloc_pointerless (bitmask_size * sizeof (*unboxed_fields),
++ "unboxed fields");
+ memset (unboxed_fields, 0, bitmask_size * sizeof(*unboxed_fields));
+
+ /* Update FLAGS according to LAYOUT. */
diff --git a/gnu/packages/patches/icecat-makeicecat.patch b/gnu/packages/patches/icecat-makeicecat.patch
index beaddf9437..a90d7fdee8 100644
--- a/gnu/packages/patches/icecat-makeicecat.patch
+++ b/gnu/packages/patches/icecat-makeicecat.patch
@@ -25,7 +25,7 @@ index 8be2362..48716f2 100755
-wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc
-gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353
-gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc
--echo -n 52e784f98a37624e8b207f1b23289c2c88f66dd923798cae891a586a6d94a6d1 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
+-echo -n 2428213ceb75cb6772b3044d9c14870d1ae5b0161379aeb29248650e13761c9f firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
-
-echo Extracting Firefox tarball
-tar -xf firefox-${FFVERSION}esr.source.tar.xz
@@ -37,7 +37,7 @@ index 8be2362..48716f2 100755
+# wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc
+# gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353
+# gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc
-+# echo -n 52e784f98a37624e8b207f1b23289c2c88f66dd923798cae891a586a6d94a6d1 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
++# echo -n 2428213ceb75cb6772b3044d9c14870d1ae5b0161379aeb29248650e13761c9f firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
+#
+# echo Extracting Firefox tarball
+# tar -xf firefox-${FFVERSION}esr.source.tar.xz
diff --git a/gnu/packages/patches/libseccomp-open-aarch64.patch b/gnu/packages/patches/libseccomp-open-aarch64.patch
deleted file mode 100644
index 6e62825892..0000000000
--- a/gnu/packages/patches/libseccomp-open-aarch64.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-This patch fixes the build failure on AArch64 reported
-at <https://github.com/seccomp/libseccomp/pull/191>.
-
-From cc21c1b48d35f9d34ef2da0e184af3855bfeee5f Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Wed, 20 Nov 2019 14:11:12 -0500
-Subject: [PATCH] tests: use openat instead of open
-
-On arm64, __NR_open is not defined, openat is always used. Let's use openat
-instead, which is defined for architectures currently.
----
- tests/15-basic-resolver.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/tests/15-basic-resolver.c b/tests/15-basic-resolver.c
-index 6badef1..4884faf 100644
---- a/tests/15-basic-resolver.c
-+++ b/tests/15-basic-resolver.c
-@@ -55,7 +55,7 @@ int main(int argc, char *argv[])
- unsigned int arch;
- char *name = NULL;
-
-- if (seccomp_syscall_resolve_name("open") != __NR_open)
-+ if (seccomp_syscall_resolve_name("openat") != __NR_openat)
- goto fail;
- if (seccomp_syscall_resolve_name("read") != __NR_read)
- goto fail;
diff --git a/gnu/packages/patches/qemu-CVE-2020-8608.patch b/gnu/packages/patches/qemu-CVE-2020-8608.patch
new file mode 100644
index 0000000000..4cb017c795
--- /dev/null
+++ b/gnu/packages/patches/qemu-CVE-2020-8608.patch
@@ -0,0 +1,269 @@
+Fix CVE-2020-8608:
+
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-8608
+https://www.openwall.com/lists/oss-security/2020/02/06/2
+
+Patches copied from upstream dependency repository:
+
+https://gitlab.freedesktop.org/slirp/libslirp/commit/68ccb8021a838066f0951d4b2817eb6b6f10a843
+https://gitlab.freedesktop.org/slirp/libslirp/commit/30648c03b27fb8d9611b723184216cd3174b6775
+
+From 68ccb8021a838066f0951d4b2817eb6b6f10a843 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>
+Date: Mon, 27 Jan 2020 10:24:14 +0100
+Subject: [PATCH] tcp_emu: fix unsafe snprintf() usages
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Various calls to snprintf() assume that snprintf() returns "only" the
+number of bytes written (excluding terminating NUL).
+
+https://pubs.opengroup.org/onlinepubs/9699919799/functions/snprintf.html#tag_16_159_04
+
+"Upon successful completion, the snprintf() function shall return the
+number of bytes that would be written to s had n been sufficiently
+large excluding the terminating null byte."
+
+Before patch ce131029, if there isn't enough room in "m_data" for the
+"DCC ..." message, we overflow "m_data".
+
+After the patch, if there isn't enough room for the same, we don't
+overflow "m_data", but we set "m_len" out-of-bounds. The next time an
+access is bounded by "m_len", we'll have a buffer overflow then.
+
+Use slirp_fmt*() to fix potential OOB memory access.
+
+Reported-by: Laszlo Ersek <lersek@redhat.com>
+Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
+Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
+Message-Id: <20200127092414.169796-7-marcandre.lureau@redhat.com>
+---
+ src/tcp_subr.c | 44 +++++++++++++++++++++-----------------------
+ 1 file changed, 21 insertions(+), 23 deletions(-)
+
+diff --git a/src/tcp_subr.c b/src/tcp_subr.c
+index a699117..a72c86b 100644
+--- a/slirp/src/tcp_subr.c
++++ b/slirp/src/tcp_subr.c
+@@ -643,8 +643,7 @@ int tcp_emu(struct socket *so, struct mbuf *m)
+ NTOHS(n1);
+ NTOHS(n2);
+ m_inc(m, snprintf(NULL, 0, "%d,%d\r\n", n1, n2) + 1);
+- m->m_len = snprintf(m->m_data, M_ROOM(m), "%d,%d\r\n", n1, n2);
+- assert(m->m_len < M_ROOM(m));
++ m->m_len = slirp_fmt(m->m_data, M_ROOM(m), "%d,%d\r\n", n1, n2);
+ } else {
+ *eol = '\r';
+ }
+@@ -684,9 +683,9 @@ int tcp_emu(struct socket *so, struct mbuf *m)
+ n4 = (laddr & 0xff);
+
+ m->m_len = bptr - m->m_data; /* Adjust length */
+- m->m_len += snprintf(bptr, M_FREEROOM(m),
+- "ORT %d,%d,%d,%d,%d,%d\r\n%s", n1, n2, n3, n4,
+- n5, n6, x == 7 ? buff : "");
++ m->m_len += slirp_fmt(bptr, M_FREEROOM(m),
++ "ORT %d,%d,%d,%d,%d,%d\r\n%s",
++ n1, n2, n3, n4, n5, n6, x == 7 ? buff : "");
+ return 1;
+ } else if ((bptr = (char *)strstr(m->m_data, "27 Entering")) != NULL) {
+ /*
+@@ -719,10 +718,9 @@ int tcp_emu(struct socket *so, struct mbuf *m)
+ n4 = (laddr & 0xff);
+
+ m->m_len = bptr - m->m_data; /* Adjust length */
+- m->m_len += snprintf(bptr, M_FREEROOM(m),
+- "27 Entering Passive Mode (%d,%d,%d,%d,%d,%d)\r\n%s",
+- n1, n2, n3, n4, n5, n6, x == 7 ? buff : "");
+-
++ m->m_len += slirp_fmt(bptr, M_FREEROOM(m),
++ "27 Entering Passive Mode (%d,%d,%d,%d,%d,%d)\r\n%s",
++ n1, n2, n3, n4, n5, n6, x == 7 ? buff : "");
+ return 1;
+ }
+
+@@ -745,8 +743,8 @@ int tcp_emu(struct socket *so, struct mbuf *m)
+ if (m->m_data[m->m_len - 1] == '\0' && lport != 0 &&
+ (so = tcp_listen(slirp, INADDR_ANY, 0, so->so_laddr.s_addr,
+ htons(lport), SS_FACCEPTONCE)) != NULL)
+- m->m_len = snprintf(m->m_data, M_ROOM(m),
+- "%d", ntohs(so->so_fport)) + 1;
++ m->m_len = slirp_fmt0(m->m_data, M_ROOM(m),
++ "%d", ntohs(so->so_fport));
+ return 1;
+
+ case EMU_IRC:
+@@ -765,10 +763,10 @@ int tcp_emu(struct socket *so, struct mbuf *m)
+ return 1;
+ }
+ m->m_len = bptr - m->m_data; /* Adjust length */
+- m->m_len += snprintf(bptr, M_FREEROOM(m),
+- "DCC CHAT chat %lu %u%c\n",
+- (unsigned long)ntohl(so->so_faddr.s_addr),
+- ntohs(so->so_fport), 1);
++ m->m_len += slirp_fmt(bptr, M_FREEROOM(m),
++ "DCC CHAT chat %lu %u%c\n",
++ (unsigned long)ntohl(so->so_faddr.s_addr),
++ ntohs(so->so_fport), 1);
+ } else if (sscanf(bptr, "DCC SEND %256s %u %u %u", buff, &laddr, &lport,
+ &n1) == 4) {
+ if ((so = tcp_listen(slirp, INADDR_ANY, 0, htonl(laddr),
+@@ -776,10 +774,10 @@ int tcp_emu(struct socket *so, struct mbuf *m)
+ return 1;
+ }
+ m->m_len = bptr - m->m_data; /* Adjust length */
+- m->m_len += snprintf(bptr, M_FREEROOM(m),
+- "DCC SEND %s %lu %u %u%c\n", buff,
+- (unsigned long)ntohl(so->so_faddr.s_addr),
+- ntohs(so->so_fport), n1, 1);
++ m->m_len += slirp_fmt(bptr, M_FREEROOM(m),
++ "DCC SEND %s %lu %u %u%c\n", buff,
++ (unsigned long)ntohl(so->so_faddr.s_addr),
++ ntohs(so->so_fport), n1, 1);
+ } else if (sscanf(bptr, "DCC MOVE %256s %u %u %u", buff, &laddr, &lport,
+ &n1) == 4) {
+ if ((so = tcp_listen(slirp, INADDR_ANY, 0, htonl(laddr),
+@@ -787,10 +785,10 @@ int tcp_emu(struct socket *so, struct mbuf *m)
+ return 1;
+ }
+ m->m_len = bptr - m->m_data; /* Adjust length */
+- m->m_len += snprintf(bptr, M_FREEROOM(m),
+- "DCC MOVE %s %lu %u %u%c\n", buff,
+- (unsigned long)ntohl(so->so_faddr.s_addr),
+- ntohs(so->so_fport), n1, 1);
++ m->m_len += slirp_fmt(bptr, M_FREEROOM(m),
++ "DCC MOVE %s %lu %u %u%c\n", buff,
++ (unsigned long)ntohl(so->so_faddr.s_addr),
++ ntohs(so->so_fport), n1, 1);
+ }
+ return 1;
+
+--
+2.25.1
+
+From 30648c03b27fb8d9611b723184216cd3174b6775 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>
+Date: Mon, 27 Jan 2020 10:24:09 +0100
+Subject: [PATCH] util: add slirp_fmt() helpers
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Various calls to snprintf() in libslirp assume that snprintf() returns
+"only" the number of bytes written (excluding terminating NUL).
+
+https://pubs.opengroup.org/onlinepubs/9699919799/functions/snprintf.html#tag_16_159_04
+
+"Upon successful completion, the snprintf() function shall return the
+number of bytes that would be written to s had n been sufficiently
+large excluding the terminating null byte."
+
+Introduce slirp_fmt() that handles several pathological cases the
+way libslirp usually expect:
+
+- treat error as fatal (instead of silently returning -1)
+
+- fmt0() will always \0 end
+
+- return the number of bytes actually written (instead of what would
+have been written, which would usually result in OOB later), including
+the ending \0 for fmt0()
+
+- warn if truncation happened (instead of ignoring)
+
+Other less common cases can still be handled with strcpy/snprintf() etc.
+
+Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
+Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
+Message-Id: <20200127092414.169796-2-marcandre.lureau@redhat.com>
+---
+ src/util.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/util.h | 3 +++
+ 2 files changed, 65 insertions(+)
+
+diff --git a/src/util.c b/src/util.c
+index e596087..e3b6257 100644
+--- a/slirp/src/util.c
++++ b/slirp/src/util.c
+@@ -364,3 +364,65 @@ void slirp_pstrcpy(char *buf, int buf_size, const char *str)
+ }
+ *q = '\0';
+ }
++
++static int slirp_vsnprintf(char *str, size_t size,
++ const char *format, va_list args)
++{
++ int rv = vsnprintf(str, size, format, args);
++
++ if (rv < 0) {
++ g_error("vsnprintf() failed: %s", g_strerror(errno));
++ }
++
++ return rv;
++}
++
++/*
++ * A snprintf()-like function that:
++ * - returns the number of bytes written (excluding optional \0-ending)
++ * - dies on error
++ * - warn on truncation
++ */
++int slirp_fmt(char *str, size_t size, const char *format, ...)
++{
++ va_list args;
++ int rv;
++
++ va_start(args, format);
++ rv = slirp_vsnprintf(str, size, format, args);
++ va_end(args);
++
++ if (rv > size) {
++ g_critical("vsnprintf() truncation");
++ }
++
++ return MIN(rv, size);
++}
++
++/*
++ * A snprintf()-like function that:
++ * - always \0-end (unless size == 0)
++ * - returns the number of bytes actually written, including \0 ending
++ * - dies on error
++ * - warn on truncation
++ */
++int slirp_fmt0(char *str, size_t size, const char *format, ...)
++{
++ va_list args;
++ int rv;
++
++ va_start(args, format);
++ rv = slirp_vsnprintf(str, size, format, args);
++ va_end(args);
++
++ if (rv >= size) {
++ g_critical("vsnprintf() truncation");
++ if (size > 0)
++ str[size - 1] = '\0';
++ rv = size;
++ } else {
++ rv += 1; /* include \0 */
++ }
++
++ return rv;
++}
+diff --git a/src/util.h b/src/util.h
+index e9c3073..5530c46 100644
+--- a/slirp/src/util.h
++++ b/slirp/src/util.h
+@@ -181,4 +181,7 @@ static inline int slirp_socket_set_fast_reuse(int fd)
+
+ void slirp_pstrcpy(char *buf, int buf_size, const char *str);
+
++int slirp_fmt(char *str, size_t size, const char *format, ...);
++int slirp_fmt0(char *str, size_t size, const char *format, ...);
++
+ #endif
+--
+2.25.1
+
diff --git a/gnu/packages/patches/sdl-pango-fix-explicit-SDLPango_CopyFTBitmapToSurface.patch b/gnu/packages/patches/sdl-pango-fix-explicit-SDLPango_CopyFTBitmapTo.patch
index 3d4b10cc10..3d4b10cc10 100644
--- a/gnu/packages/patches/sdl-pango-fix-explicit-SDLPango_CopyFTBitmapToSurface.patch
+++ b/gnu/packages/patches/sdl-pango-fix-explicit-SDLPango_CopyFTBitmapTo.patch
diff --git a/gnu/packages/patches/spice-fix-test-armhf.patch b/gnu/packages/patches/spice-fix-test-armhf.patch
deleted file mode 100644
index 5c51bd6ede..0000000000
--- a/gnu/packages/patches/spice-fix-test-armhf.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Fix test failure on armhf and ppc64el:
-https://gitlab.freedesktop.org/spice/spice-server/issues/31
-
-Taken from upstream:
-https://gitlab.freedesktop.org/spice/spice/commit/19f9f454e0777d851f26d14df0c7984267c57015
-
-diff --git a/server/tests/test-qxl-parsing.c b/server/tests/test-qxl-parsing.c
-index 60ca8f88c62441e02577ced21e4f60a08ad4171a..234bdabc9ce619d0799b5136f1d72357b0b2f490 100644
---- a/server/tests/test-qxl-parsing.c
-+++ b/server/tests/test-qxl-parsing.c
-@@ -96,7 +96,7 @@ static void test_memslot_invalid_slot_id(void)
- RedMemSlotInfo mem_info;
- init_meminfo(&mem_info);
-
-- memslot_get_virt(&mem_info, 1 << mem_info.memslot_id_shift, 16, 0);
-+ memslot_get_virt(&mem_info, UINT64_C(1) << mem_info.memslot_id_shift, 16, 0);
- }
-
- static void test_memslot_invalid_addresses(void)
diff --git a/gnu/packages/patches/suitesparse-mongoose-cmake.patch b/gnu/packages/patches/suitesparse-mongoose-cmake.patch
new file mode 100644
index 0000000000..e5062f9aaa
--- /dev/null
+++ b/gnu/packages/patches/suitesparse-mongoose-cmake.patch
@@ -0,0 +1,27 @@
+Fix required by suitesparse to build Mongoose
+
+The CMakeLists.txt of Mongoose assumes that SuiteSparse_config has been
+installed into the suitesparse source directory, which is not the case
+for us, as we are building suitesparse out-of-tree.
+
+SuiteSparse_config can instead be found in the ${CMAKE_INSTALL_PREFIX}
+directory.
+
+diff --git a/Mongoose/CMakeLists.txt b/Mongoose/CMakeLists.txt
+index 7e134ab..76fa9e2 100644
+--- a/Mongoose/CMakeLists.txt
++++ b/Mongoose/CMakeLists.txt
+@@ -148,10 +148,10 @@ set(CMAKE_CXX_STANDARD 11)
+ #set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+ # determine which SuiteSparse_config to use
+-if (EXISTS ${PROJECT_SOURCE_DIR}/../SuiteSparse_config)
+- message(STATUS "External ../SuiteSparse_config" ${BoldBlue} " found" ${ColourReset} ".")
++if (EXISTS ${CMAKE_INSTALL_PREFIX})
++ message(STATUS "External SuiteSparse_config" ${BoldBlue} " found" ${ColourReset} ".")
+ set ( SUITESPARSE_CONFIG_DIR ${PROJECT_SOURCE_DIR}/../SuiteSparse_config )
+- link_directories ( ${PROJECT_SOURCE_DIR}/../lib )
++ link_directories ( ${CMAKE_INSTALL_PREFIX}/lib )
+ message ( STATUS "Note: ../SuiteSparse_config must be compiled before compiling Mongoose" )
+ set ( SUITESPARSE_CONFIG_LIBRARY suitesparseconfig )
+ else ()
diff --git a/gnu/packages/patches/woff2-libbrotli.patch b/gnu/packages/patches/woff2-libbrotli.patch
deleted file mode 100644
index ffa941cf92..0000000000
--- a/gnu/packages/patches/woff2-libbrotli.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From: Eric Bavier <bavier@member.fsf.org>
-Date: Sat, 2 Apr 2016 01:31:03 -0500
-Subject: [PATCH] Build against external libbrotli.
-
----
- Makefile | 20 ++++----------------
- src/woff2_dec.cc | 2 +-
- src/woff2_enc.cc | 2 +-
- 3 files changed, 6 insertions(+), 18 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index 92b8d54..618a751 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- OS := $(shell uname)
-
--CPPFLAGS = -I./brotli/dec/ -I./brotli/enc/ -I./src
-+CPPFLAGS := -I./src $(shell pkg-config --cflags libbrotlienc libbrotlidec)
-
- CC ?= gcc
- CXX ?= g++
-@@ -22,29 +22,17 @@ OUROBJ = font.o glyph.o normalize.o table_tags.o transform.o \
- woff2_dec.o woff2_enc.o woff2_common.o woff2_out.o \
- variable_length.o
-
--BROTLI = brotli
--ENCOBJ = $(BROTLI)/enc/*.o
--DECOBJ = $(BROTLI)/dec/*.o
-+BROTLI_LIBS := $(shell pkg-config --libs libbrotlienc libbrotlidec)
-
- OBJS = $(patsubst %, $(SRCDIR)/%, $(OUROBJ))
- EXECUTABLES=woff2_compress woff2_decompress
-
- EXE_OBJS=$(patsubst %, $(SRCDIR)/%.o, $(EXECUTABLES))
-
--ifeq (,$(wildcard $(BROTLI)/*))
-- $(error Brotli dependency not found : you must initialize the Git submodule)
--endif
--
- all : $(OBJS) $(EXECUTABLES)
-
--$(EXECUTABLES) : $(EXE_OBJS) deps
-- $(CXX) $(LFLAGS) $(OBJS) $(ENCOBJ) $(DECOBJ) $(SRCDIR)/$@.o -o $@
--
--deps :
-- $(MAKE) -C $(BROTLI)/dec
-- $(MAKE) -C $(BROTLI)/enc
-+$(EXECUTABLES) : $(EXE_OBJS) $(OBJS)
-+ $(CXX) $(LDFLAGS) $(OBJS) $(SRCDIR)/$@.o -o $@ $(BROTLI_LIBS) $(LIBS)
-
- clean :
- rm -f $(OBJS) $(EXE_OBJS) $(EXECUTABLES)
-- $(MAKE) -C $(BROTLI)/dec clean
-- $(MAKE) -C $(BROTLI)/enc clean
-diff --git a/src/woff2_dec.cc b/src/woff2_dec.cc
-index 837eede..98c01ce 100644
---- a/src/woff2_dec.cc
-+++ b/src/woff2_dec.cc
-@@ -27,7 +27,7 @@
- #include <memory>
- #include <utility>
-
--#include "./decode.h"
-+#include "brotli/dec/decode.h"
- #include "./buffer.h"
- #include "./port.h"
- #include "./round.h"
-diff --git a/src/woff2_enc.cc b/src/woff2_enc.cc
-index 920c614..00d74da 100644
---- a/src/woff2_enc.cc
-+++ b/src/woff2_enc.cc
-@@ -23,7 +23,7 @@
- #include <string>
- #include <vector>
-
--#include "./encode.h"
-+#include "brotli/enc/encode.h"
- #include "./buffer.h"
- #include "./font.h"
- #include "./normalize.h"
---
-2.7.3
-