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/borg-fix-hard-link-preloading.patch157
-rw-r--r--gnu/packages/patches/emacs-realgud-fix-configure-ac.patch27
-rw-r--r--gnu/packages/patches/gnucash-fix-test-transaction-failure.patch54
-rw-r--r--gnu/packages/patches/gtksourceview-2-add-default-directory.patch33
-rw-r--r--gnu/packages/patches/icecat-makeicecat.patch56
-rw-r--r--gnu/packages/patches/libevent-2.0-CVE-2016-10195.patch41
-rw-r--r--gnu/packages/patches/libevent-2.0-CVE-2016-10196.patch41
-rw-r--r--gnu/packages/patches/libevent-2.0-CVE-2016-10197.patch39
-rw-r--r--gnu/packages/patches/libevent-2.0-evbuffer-add-use-last-with-datap.patch38
-rw-r--r--gnu/packages/patches/libevent-2.1-dns-tests.patch26
-rw-r--r--gnu/packages/patches/libevent-2.1-skip-failing-test.patch24
-rw-r--r--gnu/packages/patches/libevent-dns-tests.patch16
-rw-r--r--gnu/packages/patches/polkit-CVE-2018-19788.patch197
-rw-r--r--gnu/packages/patches/racket-store-checksum-override.patch35
-rw-r--r--gnu/packages/patches/supertux-fix-build-with-gcc5.patch75
-rw-r--r--gnu/packages/patches/supertux-unbundle-squirrel.patch53
-rw-r--r--gnu/packages/patches/txr-shell.patch59
-rw-r--r--gnu/packages/patches/usb-modeswitch-accept-config-arg.patch42
18 files changed, 282 insertions, 731 deletions
diff --git a/gnu/packages/patches/borg-fix-hard-link-preloading.patch b/gnu/packages/patches/borg-fix-hard-link-preloading.patch
deleted file mode 100644
index 92a4e22674..0000000000
--- a/gnu/packages/patches/borg-fix-hard-link-preloading.patch
+++ /dev/null
@@ -1,157 +0,0 @@
-Fix a bug that would cause the test suite to hang:
-
-https://github.com/borgbackup/borg/issues/4350
-
-Patch copied from upstream source repository:
-
-https://github.com/borgbackup/borg/commit/18242ab9e2f26c450b8507aa1d5eceadab8ad027
-
-From 18242ab9e2f26c450b8507aa1d5eceadab8ad027 Mon Sep 17 00:00:00 2001
-From: Thomas Waldmann <tw@waldmann-edv.de>
-Date: Thu, 2 May 2019 21:02:26 +0200
-Subject: [PATCH] preload chunks for hardlink slaves w/o preloaded master,
- fixes #4350
-
-also split the hardlink extraction test into 2 tests.
-
-(cherry picked from commit f33f318d816505161d1449a02ddfdeb97d6fe80a)
----
- src/borg/archive.py            | 42 +++++++++++++++++++++++++++++-----
- src/borg/archiver.py           |  5 ++--
- src/borg/testsuite/archiver.py | 20 +++++++++-------
- 3 files changed, 51 insertions(+), 16 deletions(-)
-
-diff --git a/src/borg/archive.py b/src/borg/archive.py
-index adc1f42c..0793672a 100644
---- a/src/borg/archive.py
-+++ b/src/borg/archive.py
-@@ -192,7 +192,7 @@ def __init__(self, repository, key):
-         self.repository = repository
-         self.key = key
- 
--    def unpack_many(self, ids, filter=None, preload=False):
-+    def unpack_many(self, ids, filter=None, partial_extract=False, preload=False, hardlink_masters=None):
-         """
-         Return iterator of items.
- 
-@@ -209,12 +209,40 @@ def unpack_many(self, ids, filter=None, preload=False):
-             for item in items:
-                 if 'chunks' in item:
-                     item.chunks = [ChunkListEntry(*e) for e in item.chunks]
-+
-+            def preload(chunks):
-+                self.repository.preload([c.id for c in chunks])
-+
-             if filter:
-                 items = [item for item in items if filter(item)]
-+
-             if preload:
--                for item in items:
--                    if 'chunks' in item:
--                        self.repository.preload([c.id for c in item.chunks])
-+                if filter and partial_extract:
-+                    # if we do only a partial extraction, it gets a bit
-+                    # complicated with computing the preload items: if a hardlink master item is not
-+                    # selected (== not extracted), we will still need to preload its chunks if a
-+                    # corresponding hardlink slave is selected (== is extracted).
-+                    # due to a side effect of the filter() call, we now have hardlink_masters dict populated.
-+                    masters_preloaded = set()
-+                    for item in items:
-+                        if 'chunks' in item:  # regular file, maybe a hardlink master
-+                            preload(item.chunks)
-+                            # if this is a hardlink master, remember that we already preloaded it:
-+                            if 'source' not in item and hardlinkable(item.mode) and item.get('hardlink_master', True):
-+                                masters_preloaded.add(item.path)
-+                        elif 'source' in item and hardlinkable(item.mode):  # hardlink slave
-+                            source = item.source
-+                            if source not in masters_preloaded:
-+                                # we only need to preload *once* (for the 1st selected slave)
-+                                chunks, _ = hardlink_masters[source]
-+                                preload(chunks)
-+                                masters_preloaded.add(source)
-+                else:
-+                    # easy: we do not have a filter, thus all items are selected, thus we need to preload all chunks.
-+                    for item in items:
-+                        if 'chunks' in item:
-+                            preload(item.chunks)
-+
-             for item in items:
-                 yield item
- 
-@@ -433,8 +461,10 @@ def item_filter(self, item, filter=None):
-             return False
-         return filter(item) if filter else True
- 
--    def iter_items(self, filter=None, preload=False):
--        for item in self.pipeline.unpack_many(self.metadata.items, preload=preload,
-+    def iter_items(self, filter=None, partial_extract=False, preload=False, hardlink_masters=None):
-+        assert not (filter and partial_extract and preload) or hardlink_masters is not None
-+        for item in self.pipeline.unpack_many(self.metadata.items, partial_extract=partial_extract,
-+                                              preload=preload, hardlink_masters=hardlink_masters,
-                                               filter=lambda item: self.item_filter(item, filter)):
-             yield item
- 
-diff --git a/src/borg/archiver.py b/src/borg/archiver.py
-index 957959d6..dcc20455 100644
---- a/src/borg/archiver.py
-+++ b/src/borg/archiver.py
-@@ -755,7 +755,8 @@ def peek_and_store_hardlink_masters(item, matched):
-         else:
-             pi = None
- 
--        for item in archive.iter_items(filter, preload=True):
-+        for item in archive.iter_items(filter, partial_extract=partial_extract,
-+                                       preload=True, hardlink_masters=hardlink_masters):
-             orig_path = item.path
-             if strip_components:
-                 item.path = os.sep.join(orig_path.split(os.sep)[strip_components:])
-@@ -997,7 +998,7 @@ def item_to_tarinfo(item, original_path):
-                 return None, stream
-             return tarinfo, stream
- 
--        for item in archive.iter_items(filter, preload=True):
-+        for item in archive.iter_items(filter, preload=True, hardlink_masters=hardlink_masters):
-             orig_path = item.path
-             if strip_components:
-                 item.path = os.sep.join(orig_path.split(os.sep)[strip_components:])
-diff --git a/src/borg/testsuite/archiver.py b/src/borg/testsuite/archiver.py
-index c35ad800..935b3d79 100644
---- a/src/borg/testsuite/archiver.py
-+++ b/src/borg/testsuite/archiver.py
-@@ -823,7 +823,18 @@ def test_mount_hardlinks(self):
-             assert open('input/dir1/subdir/hardlink', 'rb').read() == b'123456'
- 
-     @requires_hardlinks
--    def test_extract_hardlinks(self):
-+    def test_extract_hardlinks1(self):
-+        self._extract_hardlinks_setup()
-+        with changedir('output'):
-+            self.cmd('extract', self.repository_location + '::test')
-+            assert os.stat('input/source').st_nlink == 4
-+            assert os.stat('input/abba').st_nlink == 4
-+            assert os.stat('input/dir1/hardlink').st_nlink == 4
-+            assert os.stat('input/dir1/subdir/hardlink').st_nlink == 4
-+            assert open('input/dir1/subdir/hardlink', 'rb').read() == b'123456'
-+
-+    @requires_hardlinks
-+    def test_extract_hardlinks2(self):
-         self._extract_hardlinks_setup()
-         with changedir('output'):
-             self.cmd('extract', self.repository_location + '::test', '--strip-components', '2')
-@@ -839,13 +850,6 @@ def test_extract_hardlinks(self):
-             assert open('input/dir1/subdir/hardlink', 'rb').read() == b'123456'
-             assert os.stat('input/dir1/aaaa').st_nlink == 2
-             assert os.stat('input/dir1/source2').st_nlink == 2
--        with changedir('output'):
--            self.cmd('extract', self.repository_location + '::test')
--            assert os.stat('input/source').st_nlink == 4
--            assert os.stat('input/abba').st_nlink == 4
--            assert os.stat('input/dir1/hardlink').st_nlink == 4
--            assert os.stat('input/dir1/subdir/hardlink').st_nlink == 4
--            assert open('input/dir1/subdir/hardlink', 'rb').read() == b'123456'
- 
-     def test_extract_include_exclude(self):
-         self.cmd('init', '--encryption=repokey', self.repository_location)
--- 
-2.21.0
-
diff --git a/gnu/packages/patches/emacs-realgud-fix-configure-ac.patch b/gnu/packages/patches/emacs-realgud-fix-configure-ac.patch
deleted file mode 100644
index 8165857c87..0000000000
--- a/gnu/packages/patches/emacs-realgud-fix-configure-ac.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From a293690f29407ac54a218d6d20c2142e1a0319d1 Mon Sep 17 00:00:00 2001
-From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
-Date: Wed, 31 Oct 2018 00:08:34 -0400
-Subject: [PATCH] configure.ac: Fix NO_CHECK_EMACS_PACKAGES elisp.
-
-Remove the extraneous trailing parenthesis.
----
- configure.ac | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index de0d932..69bcea7 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -25,8 +25,7 @@ AC_MSG_NOTICE("Checking prerequiste packages")
- $EMACS -batch -q --no-site-file -eval \
-   '(dolist (package
-          (quote (cl-lib loc-changes load-relative test-simple)))
--        (require package))
--   )'
-+        (require package))'
- fi
- if test $? -ne 0 ; then
-     AC_MSG_ERROR([Can't continue until above error is corrected.])
--- 
-2.19.0
-
diff --git a/gnu/packages/patches/gnucash-fix-test-transaction-failure.patch b/gnu/packages/patches/gnucash-fix-test-transaction-failure.patch
deleted file mode 100644
index 7b1b29f06c..0000000000
--- a/gnu/packages/patches/gnucash-fix-test-transaction-failure.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-# This patch was submitted upstream to: https://bugs.gnucash.org/show_bug.cgi?id=797008.
-From c20d74bebca516d0e391724202aad511967fe109 Mon Sep 17 00:00:00 2001
-From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
-Date: Wed, 2 Jan 2019 14:46:28 -0500
-Subject: [PATCH] tests: Fix a test failure in test-transaction.scm.
-
-With the New Year upon us, a test which was hard-coded to use 2018 now
-failed.
-
-Fixes issue #797008 (see:
-https://bugs.gnucash.org/show_bug.cgi?id=797008).
-
-* gnucash/report/standard-reports/test/test-transaction.scm:
-(trep-tests): Use the current year in the test string instead of a
-static one.
----
- gnucash/report/standard-reports/test/test-transaction.scm | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/gnucash/report/standard-reports/test/test-transaction.scm b/gnucash/report/standard-reports/test/test-transaction.scm
-index 755aba298..ae3fbd5c1 100644
---- a/gnucash/report/standard-reports/test/test-transaction.scm
-+++ b/gnucash/report/standard-reports/test/test-transaction.scm
-@@ -5,6 +5,7 @@
- (use-modules (gnucash report stylesheets))
- (use-modules (gnucash report report-system))
- (use-modules (gnucash report report-system test test-extras))
-+(use-modules (srfi srfi-19))
- (use-modules (srfi srfi-64))
- (use-modules (gnucash engine test srfi64-extras))
- (use-modules (sxml simple))
-@@ -643,7 +644,8 @@
-       (set-option! options "General" "Show original currency amount" #t)
-       (set-option! options "Sorting" "Primary Key" 'date)
-       (set-option! options "Sorting" "Primary Subtotal for Date Key" 'none)
--      (let* ((sxml (options->sxml options "dual columns")))
-+      (let* ((sxml (options->sxml options "dual columns"))
-+	     (current-year (date->string (current-date) "~y")))
-         (test-equal "dual amount column, with original currency headers"
-           (list "Date" "Num" "Description" "Memo/Notes" "Account"
-                 "Debit (USD)" "Credit (USD)" "Debit" "Credit")
-@@ -652,7 +654,8 @@
-           (list "Grand Total" "$2,280.00" "$2,280.00")
-           (get-row-col sxml -1 #f))
-         (test-equal "dual amount column, first transaction correct"
--          (list "01/03/18" "$103 income" "Root.Asset.Bank" "$103.00" "$103.00")
-+          (list (string-append "01/03/" current-year) "$103 income"
-+		"Root.Asset.Bank" "$103.00" "$103.00")
-           (get-row-col sxml 1 #f)))
-       )
- 
--- 
-2.19.0
-
diff --git a/gnu/packages/patches/gtksourceview-2-add-default-directory.patch b/gnu/packages/patches/gtksourceview-2-add-default-directory.patch
new file mode 100644
index 0000000000..c4b5052b81
--- /dev/null
+++ b/gnu/packages/patches/gtksourceview-2-add-default-directory.patch
@@ -0,0 +1,33 @@
+From fc401acb15f15d487c942437b6fb429289dd3c67 Mon Sep 17 00:00:00 2001
+From: Julien Lepiller <julien@lepiller.eu>
+Date: Fri, 31 May 2019 13:22:25 +0200
+Subject: [PATCH] Add installation directory as a default directory.
+
+In Guix, this library is installed in a separate directory in the store,
+and it's typically not installed system-wide in a fixed directory. Add
+the store path to the set of default directories so dependents can find
+default langs and source highlighting scheme.
+---
+ gtksourceview/gtksourceview-utils.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/gtksourceview/gtksourceview-utils.c b/gtksourceview/gtksourceview-utils.c
+index 6f06bab..c3467d5 100644
+--- a/gtksourceview/gtksourceview-utils.c
++++ b/gtksourceview/gtksourceview-utils.c
+@@ -66,6 +66,12 @@ _gtk_source_view_get_default_dirs (const char *basename,
+ 							 basename,
+ 							 NULL));
+ 
++    /* installed dir */
++    g_ptr_array_add (dirs, g_build_filename (DATADIR,
++						 SOURCEVIEW_DIR,
++						 basename,
++						 NULL));
++
+ 	g_ptr_array_add (dirs, NULL);
+ 
+ 	return (gchar**) g_ptr_array_free (dirs, FALSE);
+-- 
+2.21.0
+
diff --git a/gnu/packages/patches/icecat-makeicecat.patch b/gnu/packages/patches/icecat-makeicecat.patch
index 2a11bf0b70..7d4f774c83 100644
--- a/gnu/packages/patches/icecat-makeicecat.patch
+++ b/gnu/packages/patches/icecat-makeicecat.patch
@@ -3,10 +3,10 @@ in a snippet without network access.  After this patch is applied, some
 additional changes will be made using 'substitute*'.
 
 diff --git a/makeicecat b/makeicecat
-index aa46b94..db27a86 100644
+index 5a4390b..fcfa143 100644
 --- a/makeicecat
 +++ b/makeicecat
-@@ -36,75 +36,75 @@ export DEBFULLNAME="Ruben Rodriguez"
+@@ -29,55 +29,55 @@ SOURCEDIR=icecat-$FFVERSION
  
  DATA="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"/data
  
@@ -25,6 +25,7 @@ index aa46b94..db27a86 100644
 -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 24C6F355
 -gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc
+-echo -n 0a5f0c1d8d1e9443d85083d37fec32e5cc15c1001ea992d49745490065b4a023 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
 -
 -echo Extracting Firefox tarball
 -tar -xf firefox-${FFVERSION}esr.source.tar.xz
@@ -36,6 +37,7 @@ index aa46b94..db27a86 100644
 +# 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 24C6F355
 +# gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc
++# echo -n 0a5f0c1d8d1e9443d85083d37fec32e5cc15c1001ea992d49745490065b4a023 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
 +# 
 +# echo Extracting Firefox tarball
 +# tar -xf firefox-${FFVERSION}esr.source.tar.xz
@@ -43,43 +45,6 @@ index aa46b94..db27a86 100644
 +# mv firefox-${FFVERSION} $SOURCEDIR
  
  ###############################################################################
- # Retrieve /debian from Ubuntu
- ###############################################################################
- 
--rm -rf firefox.$CODENAME
--bzr branch https://code.launchpad.net/~mozillateam/firefox/firefox.$CODENAME
--cd firefox.$CODENAME
--bzr revert -r$REVISION
--echo '3.0 (native)' > debian/source/format
--
--for PATCH in ubuntu-bookmarks.patch ubuntu-ua-string-changes.patch unity-menubar.patch ubuntu-search-defaults.patch fix-make-package-tests-without-webrtc.patch revert-upstream-search-engine-changes.patch
--do
--  rm debian/patches/$PATCH
--  sed "/$PATCH/d" -i debian/patches/series
--done
--sed "/test-/d" -i debian/patches/series
--cd ..
--
--mv firefox.$CODENAME/debian $SOURCEDIR
--rm -rf firefox.$CODENAME
-+# rm -rf firefox.$CODENAME
-+# bzr branch https://code.launchpad.net/~mozillateam/firefox/firefox.$CODENAME
-+# cd firefox.$CODENAME
-+# bzr revert -r$REVISION
-+# echo '3.0 (native)' > debian/source/format
-+# 
-+# for PATCH in ubuntu-bookmarks.patch ubuntu-ua-string-changes.patch unity-menubar.patch ubuntu-search-defaults.patch fix-make-package-tests-without-webrtc.patch revert-upstream-search-engine-changes.patch
-+# do
-+#   rm debian/patches/$PATCH
-+#   sed "/$PATCH/d" -i debian/patches/series
-+# done
-+# sed "/test-/d" -i debian/patches/series
-+# cd ..
-+# 
-+# mv firefox.$CODENAME/debian $SOURCEDIR
-+# rm -rf firefox.$CODENAME
- 
- ###############################################################################
  # Retrieve l10n
  ###############################################################################
  
@@ -133,19 +98,10 @@ index aa46b94..db27a86 100644
  
  #for patch in $DATA/patches/*; do
  #    echo Patching with file: $patch
-@@ -720,7 +720,7 @@ debian/rules debian/control
- touch -d "yesterday" debian/control
- debian/rules debian/control
- 
--echo | dch -b -D stable -v "$ICECATVERSION"  "Converted into IceCat (http://www.gnu.org/software/gnuzilla/)"
-+# echo | dch -b -D stable -v "$ICECATVERSION"  "Converted into IceCat (http://www.gnu.org/software/gnuzilla/)"
- sed "1s/firefox/icecat/" -i debian/changelog
- 
- touch configure js/src/configure
-@@ -734,6 +734,6 @@ sed 's/777/755/;' -i toolkit/crashreporter/google-breakpad/Makefile.in
+@@ -590,6 +590,6 @@ sed 's/777/755/;' -i toolkit/crashreporter/google-breakpad/Makefile.in
+ # Fix CVE-2012-3386
  /bin/sed 's/chmod a+w/chmod u+w/' -i ./js/src/ctypes/libffi/Makefile.in ./toolkit/crashreporter/google-breakpad/Makefile.in ./toolkit/crashreporter/google-breakpad/src/third_party/glog/Makefile.in || true
  
- 
 -cd ..
 -echo Packaging tarball
 -tar cfj icecat-$ICECATVERSION.tar.bz2 $SOURCEDIR
diff --git a/gnu/packages/patches/libevent-2.0-CVE-2016-10195.patch b/gnu/packages/patches/libevent-2.0-CVE-2016-10195.patch
deleted file mode 100644
index bffe2c454c..0000000000
--- a/gnu/packages/patches/libevent-2.0-CVE-2016-10195.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-Fix CVE-2016-10195 (buffer overread in libevent's DNS code):
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10195
-https://github.com/libevent/libevent/issues/317
-
-Patch copied from upstream source repository:
-
-https://github.com/libevent/libevent/commit/96f64a022014a208105ead6c8a7066018449d86d
-
-From 3c570970516f48da35f42fef98276531fcc0abaa Mon Sep 17 00:00:00 2001
-From: Azat Khuzhin <a3at.mail@gmail.com>
-Date: Mon, 1 Feb 2016 17:32:09 +0300
-Subject: [PATCH] evdns: name_parse(): fix remote stack overread
-
----
- evdns.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/evdns.c b/evdns.c
-index 60b10485..137c24ea 100644
---- a/evdns.c
-+++ b/evdns.c
-@@ -960,7 +960,6 @@ name_parse(u8 *packet, int length, int *idx, char *name_out, int name_out_len) {
- 
- 	for (;;) {
- 		u8 label_len;
--		if (j >= length) return -1;
- 		GET8(label_len);
- 		if (!label_len) break;
- 		if (label_len & 0xc0) {
-@@ -981,6 +980,7 @@ name_parse(u8 *packet, int length, int *idx, char *name_out, int name_out_len) {
- 			*cp++ = '.';
- 		}
- 		if (cp + label_len >= end) return -1;
-+		if (j + label_len > length) return -1;
- 		memcpy(cp, packet + j, label_len);
- 		cp += label_len;
- 		j += label_len;
--- 
-2.11.0
-
diff --git a/gnu/packages/patches/libevent-2.0-CVE-2016-10196.patch b/gnu/packages/patches/libevent-2.0-CVE-2016-10196.patch
deleted file mode 100644
index 03f96e938b..0000000000
--- a/gnu/packages/patches/libevent-2.0-CVE-2016-10196.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-Fix CVE-2016-10196 (buffer overflow in evutil):
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10196
-https://github.com/libevent/libevent/issues/318
-
-Patch copied from upstream source repository:
-
-https://github.com/libevent/libevent/commit/329acc18a0768c21ba22522f01a5c7f46cacc4d5
-
-From 28bdc2f3f62259d21ccaf7be2b60ef0a53e6f342 Mon Sep 17 00:00:00 2001
-From: Azat Khuzhin <a3at.mail@gmail.com>
-Date: Sun, 31 Jan 2016 00:57:16 +0300
-Subject: [PATCH] evutil_parse_sockaddr_port(): fix buffer overflow
-
----
- evutil.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/evutil.c b/evutil.c
-index 33445170..e2dfe6e4 100644
---- a/evutil.c
-+++ b/evutil.c
-@@ -1808,12 +1808,12 @@ evutil_parse_sockaddr_port(const char *ip_as_string, struct sockaddr *out, int *
- 
- 	cp = strchr(ip_as_string, ':');
- 	if (*ip_as_string == '[') {
--		int len;
-+		size_t len;
- 		if (!(cp = strchr(ip_as_string, ']'))) {
- 			return -1;
- 		}
--		len = (int) ( cp-(ip_as_string + 1) );
--		if (len > (int)sizeof(buf)-1) {
-+		len = ( cp-(ip_as_string + 1) );
-+		if (len > sizeof(buf)-1) {
- 			return -1;
- 		}
- 		memcpy(buf, ip_as_string+1, len);
--- 
-2.11.0
-
diff --git a/gnu/packages/patches/libevent-2.0-CVE-2016-10197.patch b/gnu/packages/patches/libevent-2.0-CVE-2016-10197.patch
deleted file mode 100644
index c62a328627..0000000000
--- a/gnu/packages/patches/libevent-2.0-CVE-2016-10197.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-Fix CVE-2016-10197 (out of bounds read on empty hostnames in evdns):
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-10197
-https://github.com/libevent/libevent/issues/332
-
-Patch copied from upstream source repository:
-
-https://github.com/libevent/libevent/commit/ec65c42052d95d2c23d1d837136d1cf1d9ecef9e
-
-From a0305cec166a5bc89f1eb362510cc4cd25ecc0bc Mon Sep 17 00:00:00 2001
-From: Azat Khuzhin <a3at.mail@gmail.com>
-Date: Fri, 25 Mar 2016 00:33:47 +0300
-Subject: [PATCH] evdns: fix searching empty hostnames
-
----
- evdns.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/evdns.c b/evdns.c
-index 137c24ea..6191c677 100644
---- a/evdns.c
-+++ b/evdns.c
-@@ -3122,9 +3122,12 @@ search_set_from_hostname(struct evdns_base *base) {
- static char *
- search_make_new(const struct search_state *const state, int n, const char *const base_name) {
- 	const size_t base_len = strlen(base_name);
--	const char need_to_append_dot = base_name[base_len - 1] == '.' ? 0 : 1;
-+	char need_to_append_dot;
- 	struct search_domain *dom;
- 
-+	if (!base_len) return NULL;
-+	need_to_append_dot = base_name[base_len - 1] == '.' ? 0 : 1;
-+
- 	for (dom = state->head; dom; dom = dom->next) {
- 		if (!n--) {
- 			/* this is the postfix we want */
--- 
-2.11.0
-
diff --git a/gnu/packages/patches/libevent-2.0-evbuffer-add-use-last-with-datap.patch b/gnu/packages/patches/libevent-2.0-evbuffer-add-use-last-with-datap.patch
deleted file mode 100644
index 0253700bf6..0000000000
--- a/gnu/packages/patches/libevent-2.0-evbuffer-add-use-last-with-datap.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From a8769ef12d7e223e33fc47bed03fba2bfa2f3536 Mon Sep 17 00:00:00 2001
-From: Marcus Sundberg <marcus@marcussundberg.com>
-Date: Sat, 26 Mar 2016 20:11:43 +0100
-Subject: [PATCH] evbuffer_add: Use last_with_datap if set, not last.
-
-evbuffer_add() would always put data in the last chain, even if there
-was available space in a previous chain, and in doing so it also
-failed to update last_with_datap, causing subsequent calls to other
-functions that do look at last_with_datap to add data in the middle
-of the evbuffer instead of at the end.
-
-Fixes the evbuffer_add() part of issue #335, and the evbuffer/add2 and
-evbuffer/add3 tests, and also prevents wasting space available in the
-chain pointed to by last_with_datap.
----
- buffer.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/buffer.c b/buffer.c
-index 7cca0e8a..f378b731 100644
---- a/buffer.c
-+++ b/buffer.c
-@@ -1732,7 +1732,11 @@ evbuffer_add(struct evbuffer *buf, const void *data_in, size_t datlen)
- 		goto done;
- 	}
- 
--	chain = buf->last;
-+	if (*buf->last_with_datap == NULL) {
-+		chain = buf->last;
-+	} else {
-+		chain = *buf->last_with_datap;
-+	}
- 
- 	/* If there are no chains allocated for this buffer, allocate one
- 	 * big enough to hold all the data. */
--- 
-2.12.0
-
diff --git a/gnu/packages/patches/libevent-2.1-dns-tests.patch b/gnu/packages/patches/libevent-2.1-dns-tests.patch
deleted file mode 100644
index 091752a49d..0000000000
--- a/gnu/packages/patches/libevent-2.1-dns-tests.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-Disable tests that rely on usable DNS lookups, which aren't available
-in build chroots.
-
---- libevent-2.0.21-stable/test/regress_dns.c	2013-01-20 22:32:09.000000000 +0100
-+++ libevent-2.0.21-stable/test/regress_dns.c	2013-01-20 22:32:30.000000000 +0100
-@@ -2120,10 +2120,6 @@
- 
- struct testcase_t dns_testcases[] = {
- 	DNS_LEGACY(server, TT_FORK|TT_NEED_BASE),
--	DNS_LEGACY(gethostbyname, TT_FORK|TT_NEED_BASE|TT_NEED_DNS|TT_OFF_BY_DEFAULT),
--	DNS_LEGACY(gethostbyname6, TT_FORK|TT_NEED_BASE|TT_NEED_DNS|TT_OFF_BY_DEFAULT),
--	DNS_LEGACY(gethostbyaddr, TT_FORK|TT_NEED_BASE|TT_NEED_DNS|TT_OFF_BY_DEFAULT),
--	{ "resolve_reverse", dns_resolve_reverse, TT_FORK|TT_OFF_BY_DEFAULT, NULL, NULL },
- 	{ "search_empty", dns_search_empty_test, TT_FORK|TT_NEED_BASE, &basic_setup, NULL },
- 	{ "search", dns_search_test, TT_FORK|TT_NEED_BASE, &basic_setup, NULL },
- 	{ "search_lower", dns_search_lower_test, TT_FORK|TT_NEED_BASE, &basic_setup, NULL },
-@@ -2163,9 +2159,6 @@
- 
- 	{ "client_fail_requests", dns_client_fail_requests_test,
- 	  TT_FORK|TT_NEED_BASE, &basic_setup, NULL },
--	{ "client_fail_requests_getaddrinfo",
--	  dns_client_fail_requests_getaddrinfo_test,
--	  TT_FORK|TT_NEED_BASE, &basic_setup, NULL },
- 
- 	END_OF_TESTCASES
- };
diff --git a/gnu/packages/patches/libevent-2.1-skip-failing-test.patch b/gnu/packages/patches/libevent-2.1-skip-failing-test.patch
deleted file mode 100644
index d9ea1d422d..0000000000
--- a/gnu/packages/patches/libevent-2.1-skip-failing-test.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-These fail on 32-bit due to an overflow bug in the test program.
-
-See test/regress_util.c:1448.
-
-Upstream bug URL:
-
-https://github.com/libevent/libevent/issues/452
-
-diff --git a/test/regress_util.c b/test/regress_util.c
-index ef6a1487..4de501fc 100644
---- a/test/regress_util.c
-+++ b/test/regress_util.c
-@@ -1413,9 +1413,9 @@ static struct date_rfc1123_case {
- 	{  1323648000, "Mon, 12 Dec 2011 00:00:00 GMT"},
- #ifndef _WIN32
- 	/** In win32 case we have max   "23:59:59 January 18, 2038, UTC" for time32 */
--	{  4294967296, "Sun, 07 Feb 2106 06:28:16 GMT"} /* 2^32 */,
-+	//{  4294967296, "Sun, 07 Feb 2106 06:28:16 GMT"} /* 2^32 */,
- 	/** In win32 case we have max "23:59:59, December 31, 3000, UTC" for time64 */
--	{253402300799, "Fri, 31 Dec 9999 23:59:59 GMT"} /* long long future no one can imagine */,
-+	//{253402300799, "Fri, 31 Dec 9999 23:59:59 GMT"} /* long long future no one can imagine */,
- 	{  1456704000, "Mon, 29 Feb 2016 00:00:00 GMT"} /* leap year */,
- #endif
- 	{  1435708800, "Wed, 01 Jul 2015 00:00:00 GMT"} /* leap second */,
diff --git a/gnu/packages/patches/libevent-dns-tests.patch b/gnu/packages/patches/libevent-dns-tests.patch
deleted file mode 100644
index 6ff8aaaa7b..0000000000
--- a/gnu/packages/patches/libevent-dns-tests.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Disable tests that rely on usable DNS lookups, which aren't available
-in build chroots.
-
---- libevent-2.0.21-stable/test/regress_dns.c	2013-01-20 22:32:09.000000000 +0100
-+++ libevent-2.0.21-stable/test/regress_dns.c	2013-01-20 22:32:30.000000000 +0100
-@@ -1827,10 +1827,6 @@ end:
- 
- struct testcase_t dns_testcases[] = {
- 	DNS_LEGACY(server, TT_FORK|TT_NEED_BASE),
--	DNS_LEGACY(gethostbyname, TT_FORK|TT_NEED_BASE|TT_NEED_DNS),
--	DNS_LEGACY(gethostbyname6, TT_FORK|TT_NEED_BASE|TT_NEED_DNS),
--	DNS_LEGACY(gethostbyaddr, TT_FORK|TT_NEED_BASE|TT_NEED_DNS),
--	{ "resolve_reverse", dns_resolve_reverse, TT_FORK, NULL, NULL },
- 	{ "search", dns_search_test, TT_FORK|TT_NEED_BASE, &basic_setup, NULL },
- 	{ "search_cancel", dns_search_cancel_test,
- 	  TT_FORK|TT_NEED_BASE, &basic_setup, NULL },
diff --git a/gnu/packages/patches/polkit-CVE-2018-19788.patch b/gnu/packages/patches/polkit-CVE-2018-19788.patch
deleted file mode 100644
index 58cde6c5dc..0000000000
--- a/gnu/packages/patches/polkit-CVE-2018-19788.patch
+++ /dev/null
@@ -1,197 +0,0 @@
-Fix CVE-2018-19788:
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-19788
-https://gitlab.freedesktop.org/polkit/polkit/issues/74
-
-Patch copied from upstream source repository:
-
-https://gitlab.freedesktop.org/polkit/polkit/commit/2cb40c4d5feeaa09325522bd7d97910f1b59e379
-
-From 2cb40c4d5feeaa09325522bd7d97910f1b59e379 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Mon, 3 Dec 2018 10:28:58 +0100
-Subject: [PATCH] Allow negative uids/gids in PolkitUnixUser and Group objects
-
-(uid_t) -1 is still used as placeholder to mean "unset". This is OK, since
-there should be no users with such number, see
-https://systemd.io/UIDS-GIDS#special-linux-uids.
-
-(uid_t) -1 is used as the default value in class initialization.
-
-When a user or group above INT32_MAX is created, the numeric uid or
-gid wraps around to negative when the value is assigned to gint, and
-polkit gets confused. Let's accept such gids, except for -1.
-
-A nicer fix would be to change the underlying type to e.g. uint32 to
-not have negative values. But this cannot be done without breaking the
-API, so likely new functions will have to be added (a
-polkit_unix_user_new variant that takes a unsigned, and the same for
-_group_new, _set_uid, _get_uid, _set_gid, _get_gid, etc.). This will
-require a bigger patch.
-
-Fixes https://gitlab.freedesktop.org/polkit/polkit/issues/74.
----
- src/polkit/polkitunixgroup.c   | 15 +++++++++++----
- src/polkit/polkitunixprocess.c | 12 ++++++++----
- src/polkit/polkitunixuser.c    | 13 ++++++++++---
- 3 files changed, 29 insertions(+), 11 deletions(-)
-
-diff --git a/src/polkit/polkitunixgroup.c b/src/polkit/polkitunixgroup.c
-index c57a1aa..309f689 100644
---- a/src/polkit/polkitunixgroup.c
-+++ b/src/polkit/polkitunixgroup.c
-@@ -71,6 +71,7 @@ G_DEFINE_TYPE_WITH_CODE (PolkitUnixGroup, polkit_unix_group, G_TYPE_OBJECT,
- static void
- polkit_unix_group_init (PolkitUnixGroup *unix_group)
- {
-+  unix_group->gid = -1; /* (git_t) -1 is not a valid GID under Linux */
- }
- 
- static void
-@@ -100,11 +101,14 @@ polkit_unix_group_set_property (GObject      *object,
-                                GParamSpec   *pspec)
- {
-   PolkitUnixGroup *unix_group = POLKIT_UNIX_GROUP (object);
-+  gint val;
- 
-   switch (prop_id)
-     {
-     case PROP_GID:
--      unix_group->gid = g_value_get_int (value);
-+      val = g_value_get_int (value);
-+      g_return_if_fail (val != -1);
-+      unix_group->gid = val;
-       break;
- 
-     default:
-@@ -131,9 +135,9 @@ polkit_unix_group_class_init (PolkitUnixGroupClass *klass)
-                                    g_param_spec_int ("gid",
-                                                      "Group ID",
-                                                      "The UNIX group ID",
--                                                     0,
-+                                                     G_MININT,
-                                                      G_MAXINT,
--                                                     0,
-+                                                     -1,
-                                                      G_PARAM_CONSTRUCT |
-                                                      G_PARAM_READWRITE |
-                                                      G_PARAM_STATIC_NAME |
-@@ -166,9 +170,10 @@ polkit_unix_group_get_gid (PolkitUnixGroup *group)
-  */
- void
- polkit_unix_group_set_gid (PolkitUnixGroup *group,
--                          gint gid)
-+                           gint gid)
- {
-   g_return_if_fail (POLKIT_IS_UNIX_GROUP (group));
-+  g_return_if_fail (gid != -1);
-   group->gid = gid;
- }
- 
-@@ -183,6 +188,8 @@ polkit_unix_group_set_gid (PolkitUnixGroup *group,
- PolkitIdentity *
- polkit_unix_group_new (gint gid)
- {
-+  g_return_val_if_fail (gid != -1, NULL);
-+
-   return POLKIT_IDENTITY (g_object_new (POLKIT_TYPE_UNIX_GROUP,
-                                        "gid", gid,
-                                        NULL));
-diff --git a/src/polkit/polkitunixprocess.c b/src/polkit/polkitunixprocess.c
-index 972b777..b02b258 100644
---- a/src/polkit/polkitunixprocess.c
-+++ b/src/polkit/polkitunixprocess.c
-@@ -159,9 +159,14 @@ polkit_unix_process_set_property (GObject      *object,
-       polkit_unix_process_set_pid (unix_process, g_value_get_int (value));
-       break;
- 
--    case PROP_UID:
--      polkit_unix_process_set_uid (unix_process, g_value_get_int (value));
-+    case PROP_UID: {
-+      gint val;
-+
-+      val = g_value_get_int (value);
-+      g_return_if_fail (val != -1);
-+      polkit_unix_process_set_uid (unix_process, val);
-       break;
-+    }
- 
-     case PROP_START_TIME:
-       polkit_unix_process_set_start_time (unix_process, g_value_get_uint64 (value));
-@@ -239,7 +244,7 @@ polkit_unix_process_class_init (PolkitUnixProcessClass *klass)
-                                    g_param_spec_int ("uid",
-                                                      "User ID",
-                                                      "The UNIX user ID",
--                                                     -1,
-+                                                     G_MININT,
-                                                      G_MAXINT,
-                                                      -1,
-                                                      G_PARAM_CONSTRUCT |
-@@ -303,7 +308,6 @@ polkit_unix_process_set_uid (PolkitUnixProcess *process,
-                              gint               uid)
- {
-   g_return_if_fail (POLKIT_IS_UNIX_PROCESS (process));
--  g_return_if_fail (uid >= -1);
-   process->uid = uid;
- }
- 
-diff --git a/src/polkit/polkitunixuser.c b/src/polkit/polkitunixuser.c
-index 8bfd3a1..234a697 100644
---- a/src/polkit/polkitunixuser.c
-+++ b/src/polkit/polkitunixuser.c
-@@ -72,6 +72,7 @@ G_DEFINE_TYPE_WITH_CODE (PolkitUnixUser, polkit_unix_user, G_TYPE_OBJECT,
- static void
- polkit_unix_user_init (PolkitUnixUser *unix_user)
- {
-+  unix_user->uid = -1;  /* (uid_t) -1 is not a valid UID under Linux */
-   unix_user->name = NULL;
- }
- 
-@@ -112,11 +113,14 @@ polkit_unix_user_set_property (GObject      *object,
-                                GParamSpec   *pspec)
- {
-   PolkitUnixUser *unix_user = POLKIT_UNIX_USER (object);
-+  gint val;
- 
-   switch (prop_id)
-     {
-     case PROP_UID:
--      unix_user->uid = g_value_get_int (value);
-+      val = g_value_get_int (value);
-+      g_return_if_fail (val != -1);
-+      unix_user->uid = val;
-       break;
- 
-     default:
-@@ -144,9 +148,9 @@ polkit_unix_user_class_init (PolkitUnixUserClass *klass)
-                                    g_param_spec_int ("uid",
-                                                      "User ID",
-                                                      "The UNIX user ID",
--                                                     0,
-+                                                     G_MININT,
-                                                      G_MAXINT,
--                                                     0,
-+                                                     -1,
-                                                      G_PARAM_CONSTRUCT |
-                                                      G_PARAM_READWRITE |
-                                                      G_PARAM_STATIC_NAME |
-@@ -182,6 +186,7 @@ polkit_unix_user_set_uid (PolkitUnixUser *user,
-                           gint uid)
- {
-   g_return_if_fail (POLKIT_IS_UNIX_USER (user));
-+  g_return_if_fail (uid != -1);
-   user->uid = uid;
- }
- 
-@@ -196,6 +201,8 @@ polkit_unix_user_set_uid (PolkitUnixUser *user,
- PolkitIdentity *
- polkit_unix_user_new (gint uid)
- {
-+  g_return_val_if_fail (uid != -1, NULL);
-+
-   return POLKIT_IDENTITY (g_object_new (POLKIT_TYPE_UNIX_USER,
-                                         "uid", uid,
-                                         NULL));
--- 
-2.18.1
-
diff --git a/gnu/packages/patches/racket-store-checksum-override.patch b/gnu/packages/patches/racket-store-checksum-override.patch
index 6c9cd5198a..236c843de1 100644
--- a/gnu/packages/patches/racket-store-checksum-override.patch
+++ b/gnu/packages/patches/racket-store-checksum-override.patch
@@ -7,12 +7,8 @@ because the store is immutable.  This patch makes Racket ignore
 checksums for files in the store.
 
 See <https://debbugs.gnu.org/30680> for details.
----
- collects/compiler/private/cm-minimal.rkt | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
 
-diff --git a/collects/compiler/private/cm-minimal.rkt b/collects/compiler/private/cm-minimal.rkt
-index a5a5407..15af6b8 100644
+---
 --- a/collects/compiler/private/cm-minimal.rkt
 +++ b/collects/compiler/private/cm-minimal.rkt
 @@ -7,6 +7,7 @@
@@ -20,10 +16,10 @@ index a5a5407..15af6b8 100644
           racket/path
           racket/promise
 +         racket/string
-          openssl/sha1
+          file/sha1
           setup/collects
-          compiler/compilation-path
-@@ -543,6 +544,10 @@
+          setup/cross-system
+@@ -940,6 +941,10 @@
        #f
        (list src-hash recorded-hash)))
  
@@ -34,16 +30,13 @@ index a5a5407..15af6b8 100644
  (define (rkt->ss p)
    (if (path-has-extension? p #".rkt")
        (path-replace-extension p #".ss")
-@@ -595,7 +600,8 @@
-               (trace-printf "newer src... ~a > ~a" path-time path-zo-time)
-               ;; If `sha1-only?', then `maybe-compile-zo' returns a #f or thunk:
-               (maybe-compile-zo sha1-only? deps path->mode roots path orig-path read-src-syntax up-to-date collection-cache new-seen)]
--             [(different-source-sha1-and-dep-recorded path deps)
-+             [(and (not (store-reference? path))
-+                   (different-source-sha1-and-dep-recorded path deps))
-               => (lambda (difference)
-                    (trace-printf "different src hash... ~a" difference)
-                    ;; If `sha1-only?', then `maybe-compile-zo' returns a #f or thunk:
--- 
-2.18.0
-
+@@ -1015,6 +1020,7 @@
+                (trace-printf "newer src... ~a > ~a" path-time path-zo-time)
+                (maybe-compile-zo deps path->mode roots path orig-path read-src-syntax up-to-date collection-cache new-seen
+                                  #:trying-sha1? sha1-only?)]
+-              [(different-source-sha1-and-dep-recorded path deps)
++              [(and (not (store-reference? path))
++                    (different-source-sha1-and-dep-recorded path deps))
+                => (lambda (difference)
+                     (trace-printf "different src hash ~a for ~a..." difference path)
+                     (maybe-compile-zo deps path->mode roots path orig-path read-src-syntax up-to-date collection-cache new-seen
\ No newline at end of file
diff --git a/gnu/packages/patches/supertux-fix-build-with-gcc5.patch b/gnu/packages/patches/supertux-fix-build-with-gcc5.patch
new file mode 100644
index 0000000000..6393215ca1
--- /dev/null
+++ b/gnu/packages/patches/supertux-fix-build-with-gcc5.patch
@@ -0,0 +1,75 @@
+Taken from https://github.com/SuperTux/supertux/commit/a75317ef0a94847d9b6a7833b9c6652ef29edde3.
+This patch fixes building with gcc versions earlier than 6.
+
+From a75317ef0a94847d9b6a7833b9c6652ef29edde3 Mon Sep 17 00:00:00 2001
+From: Ingo Ruhnke <grumbel@gmail.com>
+Date: Fri, 28 Dec 2018 22:45:35 +0100
+Subject: [PATCH] Add workaround for backwards compatibilty with gcc5
+
+Fixes #1014
+---
+ src/video/gl/gl_painter.cpp | 11 ++++++-----
+ src/video/ttf_surface.cpp   | 16 +++++++++-------
+ 2 files changed, 15 insertions(+), 12 deletions(-)
+
+diff --git a/src/video/gl/gl_painter.cpp b/src/video/gl/gl_painter.cpp
+index 5e0d1e7b1e..32fb7a09b6 100644
+--- a/src/video/gl/gl_painter.cpp
++++ b/src/video/gl/gl_painter.cpp
+@@ -37,12 +37,13 @@ namespace {
+ 
+ inline std::tuple<GLenum, GLenum> blend_factor(Blend blend)
+ {
++  using B = std::tuple<GLenum, GLenum>;
+   switch(blend) {
+-    case Blend::NONE: return {GL_ONE, GL_ZERO};
+-    case Blend::BLEND: return {GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA};
+-    case Blend::ADD: return {GL_SRC_ALPHA, GL_ONE};
+-    case Blend::MOD: return {GL_DST_COLOR, GL_ZERO};
+-    default: return {GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA};
++    case Blend::NONE: return B(GL_ONE, GL_ZERO);
++    case Blend::BLEND: return B(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
++    case Blend::ADD: return B(GL_SRC_ALPHA, GL_ONE);
++    case Blend::MOD: return B(GL_DST_COLOR, GL_ZERO);
++    default: return B(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+   }
+ }
+ 
+diff --git a/src/video/ttf_surface.cpp b/src/video/ttf_surface.cpp
+index 7c9505004f..b41d67b2c8 100644
+--- a/src/video/ttf_surface.cpp
++++ b/src/video/ttf_surface.cpp
+@@ -55,12 +55,13 @@ TTFSurface::create(const TTFFont& font, const std::string& text)
+     SDL_SetSurfaceColorMod(text_surface.get(), 0, 0, 0);
+     SDL_SetSurfaceBlendMode(text_surface.get(), SDL_BLENDMODE_BLEND);
+ 
++    using P = std::tuple<int, int>;
+     const std::initializer_list<std::tuple<int, int> > positions[] = {
+       {},
+-      {{0, 0}},
+-      {{-1, 0}, {1, 0}, {0, -1}, {0, 1}},
+-      {{-2, 0}, {2, 0}, {0, -2}, {0, 2},
+-       {-1, -1}, {1, -1}, {-1, 1}, {1, 1}}
++      {P{0, 0}},
++      {P{-1, 0}, P{1, 0}, P{0, -1}, P{0, 1}},
++      {P{-2, 0}, P{2, 0}, P{0, -2}, P{0, 2},
++       P{-1, -1}, P{1, -1}, P{-1, 1}, P{1, 1}}
+     };
+ 
+     int shadow_size = std::min(2, font.get_shadow_size());
+@@ -77,11 +78,12 @@ TTFSurface::create(const TTFFont& font, const std::string& text)
+     SDL_SetSurfaceColorMod(text_surface.get(), 0, 0, 0);
+     SDL_SetSurfaceBlendMode(text_surface.get(), SDL_BLENDMODE_BLEND);
+ 
++    using P = std::tuple<int, int>;
+     const std::initializer_list<std::tuple<int, int> > positions[] = {
+       {},
+-      {{-1, 0}, {1, 0}, {0, -1}, {0, 1}},
+-      {{-2, 0}, {2, 0}, {0, -2}, {0, 2},
+-       {-1, -1}, {1, -1}, {-1, 1}, {1, 1}}
++      {P{-1, 0}, P{1, 0}, P{0, -1}, P{0, 1}},
++      {P{-2, 0}, P{2, 0}, P{0, -2}, P{0, 2},
++       P{-1, -1}, P{1, -1}, P{-1, 1}, P{1, 1}}
+     };
+ 
+     int border = std::min(2, font.get_border());
diff --git a/gnu/packages/patches/supertux-unbundle-squirrel.patch b/gnu/packages/patches/supertux-unbundle-squirrel.patch
new file mode 100644
index 0000000000..054183b75f
--- /dev/null
+++ b/gnu/packages/patches/supertux-unbundle-squirrel.patch
@@ -0,0 +1,53 @@
+diff -ur a/CMakeLists.txt b/CMakeLists.txt
+--- a/CMakeLists.txt	2019-05-24 17:58:19.693090158 -0400
++++ b/CMakeLists.txt	2019-05-24 17:57:43.349473252 -0400
+@@ -375,44 +375,15 @@
+ 
+ include(ConfigureChecks)
+ 
+-
+-## Also build external/squirrel
+-
+-if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/external/squirrel/CMakeLists.txt)
+-  message(FATAL_ERROR "squirrel submodule is not checked out or ${CMAKE_CURRENT_SOURCE_DIR}/external/squirrel/CMakeLists.txt is missing")
+-endif()
+-
+ set(SQUIRREL_PREFIX ${CMAKE_BINARY_DIR}/squirrel/ex)
+-ExternalProject_Add(squirrel
+-  SOURCE_DIR "${CMAKE_SOURCE_DIR}/external/squirrel/"
+-  CMAKE_ARGS
+-  -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+-  -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
+-  -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
+-  -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
+-  -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
+-  -DCMAKE_INSTALL_PREFIX=${SQUIRREL_PREFIX}
+-  -DINSTALL_INC_DIR=include)
+-
+-if(WIN32)
+-  add_library(squirrel_lib SHARED IMPORTED)
+-  set_target_properties(squirrel_lib PROPERTIES IMPORTED_LOCATION "${SQUIRREL_PREFIX}/bin/${CMAKE_SHARED_LIBRARY_PREFIX}squirrel${CMAKE_SHARED_LIBRARY_SUFFIX}")
+-  set_target_properties(squirrel_lib PROPERTIES IMPORTED_IMPLIB "${SQUIRREL_PREFIX}/lib/squirrel${CMAKE_LINK_LIBRARY_SUFFIX}")
+-  add_library(sqstdlib_lib SHARED IMPORTED)
+-  set_target_properties(sqstdlib_lib PROPERTIES IMPORTED_LOCATION "${SQUIRREL_PREFIX}/bin/${CMAKE_SHARED_LIBRARY_PREFIX}sqstdlib${CMAKE_SHARED_LIBRARY_SUFFIX}")
+-  set_target_properties(sqstdlib_lib PROPERTIES IMPORTED_IMPLIB "${SQUIRREL_PREFIX}/lib/sqstdlib${CMAKE_LINK_LIBRARY_SUFFIX}")
+-
+-  #For debug run purposes
+-  configure_file("${CMAKE_CURRENT_SOURCE_DIR}/mk/msvc/run_supertux.bat.in" "${PROJECT_BINARY_DIR}/run_supertux.bat")
+-else()
+-  add_library(squirrel_lib STATIC IMPORTED)
+-  set_target_properties(squirrel_lib PROPERTIES IMPORTED_LOCATION "${SQUIRREL_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}squirrel_static${CMAKE_STATIC_LIBRARY_SUFFIX}")
+-  add_library(sqstdlib_lib STATIC IMPORTED)
+-  set_target_properties(sqstdlib_lib PROPERTIES IMPORTED_LOCATION "${SQUIRREL_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}sqstdlib_static${CMAKE_STATIC_LIBRARY_SUFFIX}")
+-endif()
+ 
+ include_directories(SYSTEM ${SQUIRREL_PREFIX}/include)
+ 
++add_library(squirrel_lib SHARED IMPORTED)
++set_target_properties(squirrel_lib PROPERTIES IMPORTED_LOCATION "${SQUIRREL_PREFIX}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}squirrel${CMAKE_SHARED_LIBRARY_SUFFIX}")
++add_library(sqstdlib_lib SHARED IMPORTED)
++set_target_properties(sqstdlib_lib PROPERTIES IMPORTED_LOCATION "${SQUIRREL_PREFIX}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}sqstdlib${CMAKE_SHARED_LIBRARY_SUFFIX}")
++
+ ## Also build external/tinygettext
+ 
+ if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/external/tinygettext/CMakeLists.txt)
diff --git a/gnu/packages/patches/txr-shell.patch b/gnu/packages/patches/txr-shell.patch
new file mode 100644
index 0000000000..a4abb73eac
--- /dev/null
+++ b/gnu/packages/patches/txr-shell.patch
@@ -0,0 +1,59 @@
+Use the current shell instead of trying to find another one and
+failing to do so.
+
+diff --git a/configure b/configure
+index f1adb919..7891b4dc 100755
+--- a/configure
++++ b/configure
+@@ -26,28 +26,6 @@
+ # 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.
+ 
+-#
+-# The #!/bin/sh might be some legacy piece of crap,
+-# not even up to 1990 POSIX.2 spec. So the first step
+-# is to look for a better shell in some known places
+-# and re-execute ourselves with that interpreter.
+-#
+-
+-if test x$txr_shell = x ; then
+-  for shell in /bin/bash /usr/bin/bash /usr/xpg4/bin/sh ; do
+-    if test -x $shell ; then
+-       txr_shell=$shell
+-       break
+-    fi
+-  done
+-  if test x$txr_shell = x ; then
+-    echo "No known POSIX shell found: falling back on /bin/sh, which may not work"
+-    txr_shell=/bin/sh
+-  fi
+-  export txr_shell
+-  exec $txr_shell $0 ${@+"$@"}
+-fi
+-
+ set -u
+ 
+ #
+@@ -190,13 +168,6 @@ while [ $# -gt 0 ] ; do
+     exit 1
+   fi
+ 
+-  eval "var_exists=\${$var+y}"
+-
+-  if [ "$var_exists" != y ] ; then
+-    printf "$0: nonexistent option: '%s'\n" "$1"
+-    exit 1
+-  fi
+-
+   eval "$var='$val'"
+ 
+   eval "var_given_exists=\${${var}_given+y}"
+@@ -208,6 +179,8 @@ while [ $# -gt 0 ] ; do
+   shift
+ done
+ 
++txr_shell=$CONFIG_SHELL
++
+ #
+ # If --help was given (or --help=<nonempty> or help=<nonempty>) then
+ # print help and exit. The termination status is failed, to indicate
diff --git a/gnu/packages/patches/usb-modeswitch-accept-config-arg.patch b/gnu/packages/patches/usb-modeswitch-accept-config-arg.patch
new file mode 100644
index 0000000000..9c050f7ee6
--- /dev/null
+++ b/gnu/packages/patches/usb-modeswitch-accept-config-arg.patch
@@ -0,0 +1,42 @@
+--- old/usb_modeswitch.tcl	1970-01-01 01:00:00.000000000 +0100
++++ usb_modeswitch.tcl	2019-06-12 08:39:42.140000000 +0200
+@@ -41,7 +41,7 @@
+ global scsi usb config match device flags setup devdir loginit
+ 
+ set flags(config) ""
+-Log "[ParseGlobalConfig]"
++Log "[ParseGlobalConfig $argv]"
+ 
+ if {$flags(stordelay) > 0} {
+ 	SetStorageDelay $flags(stordelay)
+@@ -496,9 +496,21 @@
+ # end of proc {MatchDevice}
+ 
+ 
+-proc {ParseGlobalConfig} {} {
++proc {ParseGlobalConfig} {argv} {
+ 
+ global flags
++
++set configFileParam ""
++for {set i 0} {$i < [llength $argv]} {incr i} {
++	switch -glob -- [set v [lindex $argv $i]] {
++		--config-file=* {
++			set configFileParam $v
++		}
++	}
++}
++if {$configFileParam != ""} {
++	set configFile [string range $configFileParam [string length "--config-file="] end]
++} else {
+ set configFile ""
+ set places [list /etc/usb_modeswitch.conf /etc/sysconfig/usb_modeswitch /etc/default/usb_modeswitch]
+ foreach cfg $places {
+@@ -507,6 +519,7 @@
+ 		break
+ 	}
+ }
++}
+ if {$configFile == ""} {return}
+ 
+ set rc [open $configFile r]