summary refs log tree commit diff
path: root/gnu/packages/patches
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2021-01-13 23:39:52 -0500
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2021-01-13 23:45:53 -0500
commit01f0707207741ce2a5d7509a175464799b08aea6 (patch)
tree08e8f4da56f26363c3b53e0442a21b286b55e0e5 /gnu/packages/patches
parent734bcf13139119daf8685f93b056c3422dbfa264 (diff)
parent6985a1acb3e9cc4cad8b6f63d77154842d25c929 (diff)
downloadguix-01f0707207741ce2a5d7509a175464799b08aea6.tar.gz
Merge branch 'staging' into 'core-updates'.
Conflicts:

	gnu/local.mk
	gnu/packages/cmake.scm
	gnu/packages/curl.scm
	gnu/packages/gl.scm
	gnu/packages/glib.scm
	gnu/packages/guile.scm
	gnu/packages/node.scm
	gnu/packages/openldap.scm
	gnu/packages/package-management.scm
	gnu/packages/python-xyz.scm
	gnu/packages/python.scm
	gnu/packages/tls.scm
	gnu/packages/vpn.scm
	gnu/packages/xorg.scm
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r--gnu/packages/patches/alsa-modular-synth-fix-vocoder.patch522
-rw-r--r--gnu/packages/patches/audacity-add-include.patch15
-rw-r--r--gnu/packages/patches/aws-c-event-stream-cmake-prefix.patch13
-rw-r--r--gnu/packages/patches/aws-checksums-cmake-prefix.patch13
-rw-r--r--gnu/packages/patches/bear-disable-preinstall-tests.patch40
-rw-r--r--gnu/packages/patches/busybox-1.31.1-fix-build-with-glibc-2.31.patch68
-rw-r--r--gnu/packages/patches/cl-asdf-config-directories.patch44
-rw-r--r--gnu/packages/patches/clisp-remove-failing-test.patch43
-rw-r--r--gnu/packages/patches/combinatorial-blas-awpm.patch218
-rw-r--r--gnu/packages/patches/dbxfs-remove-sentry-sdk.patch2
-rw-r--r--gnu/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch14
-rw-r--r--gnu/packages/patches/ghostscript-CVE-2020-15900.patch36
-rw-r--r--gnu/packages/patches/ghostscript-freetype-compat.patch35
-rw-r--r--gnu/packages/patches/gpsbabel-fix-i686-test.patch46
-rw-r--r--gnu/packages/patches/gpsbabel-minizip.patch13
-rw-r--r--gnu/packages/patches/gpsbabel-qstring.patch69
-rw-r--r--gnu/packages/patches/hplip-fix-bug-1898438.patch19
-rw-r--r--gnu/packages/patches/icecat-makeicecat.patch4
-rw-r--r--gnu/packages/patches/libexpected-nofetch.patch27
-rw-r--r--gnu/packages/patches/libffi-float128-powerpc64le.patch58
-rw-r--r--gnu/packages/patches/libssh2-CVE-2019-17498.patch126
-rw-r--r--gnu/packages/patches/minimap2-aarch64-support.patch52
-rw-r--r--gnu/packages/patches/pam-mount-luks2-support.patch51
-rw-r--r--gnu/packages/patches/pciutils-hurd-fix.patch23
-rw-r--r--gnu/packages/patches/pidgin-libnm.patch60
-rw-r--r--gnu/packages/patches/pidgin-vv-gst.patch48
-rw-r--r--gnu/packages/patches/pulseview-qt515-compat.patch145
-rw-r--r--gnu/packages/patches/purescript-relax-dependencies.patch28
-rw-r--r--gnu/packages/patches/python-3.9-fix-tests.patch370
-rw-r--r--gnu/packages/patches/python-CVE-2020-26116.patch47
-rw-r--r--gnu/packages/patches/python-cairocffi-dlopen-path.patch10
-rw-r--r--gnu/packages/patches/python-tinycss2-flake8-compat.patch36
-rw-r--r--gnu/packages/patches/qtbase-fix-krita-deadlock.patch110
-rw-r--r--gnu/packages/patches/renpy-use-system-fribidi.patch52
-rw-r--r--gnu/packages/patches/rust-1.48-linker-locale.patch14
-rw-r--r--gnu/packages/patches/rust-ndarray-remove-blas-src-dep.patch36
-rw-r--r--gnu/packages/patches/sbc-fix-build-non-x86.patch17
-rw-r--r--gnu/packages/patches/sbcl-clml-fix-types.patch280
-rw-r--r--gnu/packages/patches/sbcl-geco-fix-organism-class.patch13
-rw-r--r--gnu/packages/patches/sdcc-disable-non-free-code.patch721
-rw-r--r--gnu/packages/patches/serf-python3.patch29
-rw-r--r--gnu/packages/patches/shakespeare-spl-fix-grammar.patch16
-rw-r--r--gnu/packages/patches/smalltalk-multiplication-overflow.patch121
-rw-r--r--gnu/packages/patches/superlu-dist-awpm-grid.patch31
-rw-r--r--gnu/packages/patches/vlc-qt-5.15.patch56
-rw-r--r--gnu/packages/patches/weasyprint-library-paths.patch43
46 files changed, 2373 insertions, 1461 deletions
diff --git a/gnu/packages/patches/alsa-modular-synth-fix-vocoder.patch b/gnu/packages/patches/alsa-modular-synth-fix-vocoder.patch
deleted file mode 100644
index 33a68a1dd8..0000000000
--- a/gnu/packages/patches/alsa-modular-synth-fix-vocoder.patch
+++ /dev/null
@@ -1,522 +0,0 @@
-This patch was taken from Debian.
-https://salsa.debian.org/multimedia-team/ams/-/raw/master/debian/patches/0007-Make-vocoder-module-compatible-to-C-11.patch
-
-From: Guido Scholz <gscholz@users.sourceforge.net>
-Date: Tue, 6 Nov 2018 21:55:38 +0100
-Subject: Make vocoder module compatible to C++11
-
----
- src/m_vocoder.cpp | 218 +++++++++++++++++++++++++++---------------------------
- src/m_vocoder.h   |  31 ++++----
- 2 files changed, 124 insertions(+), 125 deletions(-)
-
-diff --git a/src/m_vocoder.cpp b/src/m_vocoder.cpp
-index 572cf65..371e2cf 100644
---- a/src/m_vocoder.cpp
-+++ b/src/m_vocoder.cpp
-@@ -18,10 +18,6 @@
-   along with ams.  If not, see <http://www.gnu.org/licenses/>.
- */
- 
--#include <stdio.h>
--#include <stdlib.h>
--#include <unistd.h>
--#include <math.h>
- #include <qwidget.h>
- #include <qstring.h>
- #include <qslider.h>
-@@ -36,16 +32,13 @@
- #include "synthdata.h"
- #include "midicheckbox.h"
- #include "midislider.h"
--// For FFTW to be happy we must include complex.h before fftw3.h
--#include <complex.h>
--#include <fftw3.h>
- #include "port.h"
- #include "m_vocoder.h"
- 
- //   Window function - One way to make the FFT behave
- //   and give more continuous results over edge steps.
- 
--float M_vocoder::windowcurve (int windowfunc, int len, int elem, float alpha)
-+float M_vocoder::windowcurve (int windowfunc, unsigned int len, int elem, float alpha)
- {
-   float out;
-   out = 1.0;
-@@ -98,6 +91,7 @@ float M_vocoder::windowcurve (int windowfunc, int len, int elem, float alpha)
-   return (out);
- }
- 
-+
- M_vocoder::M_vocoder(QWidget* parent, int id)
-   : Module(M_type_vocoder, id, 5, parent, tr("FFT Vocoder"))
- {
-@@ -160,6 +154,7 @@ M_vocoder::M_vocoder(QWidget* parent, int id)
-     modbuf[l1] = (float *)malloc( fftsize * sizeof(float));
-     memset( modbuf[l1], 0, fftsize * sizeof(float));
-   }
-+
-   carrbuf = (float **)malloc(synthdata->poly * sizeof(float *));
-   for (l1 = 0; l1 < synthdata->poly; l1++) {
-     carrbuf[l1] = (float *)malloc( fftsize * sizeof(float));
-@@ -175,38 +170,48 @@ M_vocoder::M_vocoder(QWidget* parent, int id)
-     window[l2] = windowcurve (whichwin, fftsize, l2, 0.25);
- 
-   //  FFTW setup stuff
--  carrinforward = (fftw_complex *) fftw_malloc (sizeof (fftw_complex)
--					    * fftsize);
--  carrinbackward = (fftw_complex *) fftw_malloc (sizeof (fftw_complex)
--					     * fftsize);
--  carroutforward = (fftw_complex *) fftw_malloc (sizeof (fftw_complex)
--					     * fftsize);
--  carroutbackward = (fftw_complex *) fftw_malloc (sizeof (fftw_complex)
--					      * fftsize);
--  modinforward = (fftw_complex *) fftw_malloc (sizeof (fftw_complex)
--					    * fftsize);
--  modinbackward = (fftw_complex *) fftw_malloc (sizeof (fftw_complex)
--					     * fftsize);
--  modoutforward = (fftw_complex *) fftw_malloc (sizeof (fftw_complex)
--					     * fftsize);
--  modoutbackward = (fftw_complex *) fftw_malloc (sizeof (fftw_complex)
--					      * fftsize);
--  fftw_set_timelimit (5.0);
--  planmodforward = fftw_plan_dft_1d (fftsize, modinforward,
--				  modoutforward, FFTW_FORWARD, FFTW_MEASURE);
--  planmodbackward = fftw_plan_dft_1d (fftsize, modinbackward,
-- 				  modoutbackward, FFTW_BACKWARD, FFTW_MEASURE);
--  plancarrforward = fftw_plan_dft_1d (fftsize, carrinforward,
--				  carroutforward, FFTW_FORWARD, FFTW_MEASURE);
--  plancarrbackward = fftw_plan_dft_1d (fftsize, carrinbackward,
-- 				  carroutbackward, FFTW_BACKWARD, FFTW_MEASURE);
-+  carrinforward.reserve(fftsize);
-+  carrinbackward.reserve(fftsize);
-+  carroutforward.reserve(fftsize);
-+  carroutbackward.reserve(fftsize);
-+  modinforward.reserve(fftsize);
-+  modinbackward.reserve(fftsize);
-+  modoutforward.reserve(fftsize);
-+  modoutbackward.reserve(fftsize);
-+
-+  fftw_set_timelimit(5.0);
-+
-+  planmodforward = fftw_plan_dft_1d(fftsize,
-+          reinterpret_cast<fftw_complex*> (modinforward.data()),
-+          reinterpret_cast<fftw_complex*> (modoutforward.data()),
-+          FFTW_FORWARD, FFTW_MEASURE);
-+
-+  planmodbackward = fftw_plan_dft_1d(fftsize,
-+          reinterpret_cast<fftw_complex*> (modinbackward.data()),
-+          reinterpret_cast<fftw_complex*> (modoutbackward.data()),
-+          FFTW_BACKWARD, FFTW_MEASURE);
-+
-+  plancarrforward = fftw_plan_dft_1d(fftsize,
-+          reinterpret_cast<fftw_complex*> (carrinforward.data()),
-+          reinterpret_cast<fftw_complex*> (carroutforward.data()),
-+          FFTW_FORWARD, FFTW_MEASURE);
-+
-+  plancarrbackward = fftw_plan_dft_1d(fftsize,
-+          reinterpret_cast<fftw_complex*> (carrinbackward.data()),
-+          reinterpret_cast<fftw_complex*> (carroutbackward.data()),
-+          FFTW_BACKWARD, FFTW_MEASURE);
- }
- 
-+
- M_vocoder::~M_vocoder() {
- 
--  int l1;
-+  //    Clean up FFTW stuff.
-+  fftw_destroy_plan (plancarrforward);
-+  fftw_destroy_plan (plancarrbackward);
-+  fftw_destroy_plan (planmodforward);
-+  fftw_destroy_plan (planmodbackward);
- 
--  for (l1 = 0; l1 < synthdata->poly; l1++) {
-+  for (int l1 = 0; l1 < synthdata->poly; l1++) {
-     free(modbuf[l1]);
-     free(carrbuf[l1]);
-   }
-@@ -215,29 +220,14 @@ M_vocoder::~M_vocoder() {
-   free (window);
-   free (modmap);
-   free (armodmap);
--
--  //#define FFTW_CLEANUP
--#ifdef FFTW_CLEANUP
--  //    Clean up FFTW stuff.
--  fftw_destroy_plan (plancarrforward);
--  fftw_destroy_plan (plancarrbackward);
--  fftw_destroy_plan (planmodforward);
--  fftw_destroy_plan (planmodbackward);
--  fftw_free (carrinforward);
--  fftw_free (carrinbackward);
--  fftw_free (carroutforward);
--  fftw_free (carroutbackward);
--  fftw_free (modinforward);
--  fftw_free (modinbackward);
--  fftw_free (modoutforward);
--  fftw_free (modoutbackward);
--#endif
- }
- 
-+
- void M_vocoder::generateCycle() {
- 
-   int l1;  //  l1 indexes along polyphony.
-   unsigned int l2;  // l2 indexes along the cycle
-+  const std::complex<double> I(0.0, 1.0);
- 
-   inModulator = port_M_modulator->getinputdata();
-   inPitchShift = port_M_pitchshift->getinputdata();
-@@ -272,7 +262,7 @@ void M_vocoder::generateCycle() {
-   //   Did the user change the FFT windowing function?
-   if (myFFTWindowFunc != whichwin) {
-     whichwin = myFFTWindowFunc;
--    for (l2 = 0; l2 < (unsigned int) fftsize; l2++)
-+    for (l2 = 0; l2 < fftsize; l2++)
-       window[l2] = windowcurve (whichwin, fftsize, l2, 0.25);
-   }
- 
-@@ -294,7 +284,7 @@ void M_vocoder::generateCycle() {
-     }
- 
-     //    window the input buffer to modinforward
--    for (l2 = 0; l2 < (unsigned int)fftsize ; l2++) {
-+    for (l2 = 0; l2 < fftsize ; l2++) {
-       modinforward[l2] = modbuf[l1][l2] * window[l2];
-     }
- 
-@@ -310,17 +300,18 @@ void M_vocoder::generateCycle() {
-     fftw_execute (planmodforward);
- 
-     //    copy the FFT of the modulator to modinbackward.
--    for (l2 = 0; l2 < (unsigned int)fftsize; l2++)
--      modinbackward[l2] = modoutforward[l2];
-+    //for (l2 = 0; l2 < fftsize; l2++)
-+    //  modinbackward[l2] = modoutforward[l2];
-+    modinbackward = modoutforward;
- 
-     //     Send the FFT of the modulator to the output for giggles
-     //     and get an approximation of the first harmonic too.
-     float firstharmonicval;
-     int firstharmonicindex;
-     firstharmonicval = 0.0;
--    firstharmonicindex = 1.0;
-+    firstharmonicindex = 1;
-     for (l2 = 1; l2 < (unsigned int) synthdata->cyclesize; l2++) {
--      data[2][l1][l2] = logf(fabs (creal (modoutforward[l2])) + 1.0);
-+      data[2][l1][l2] = logf(fabs(modoutforward[l2].real()) + 1.0);
-       if (data[2][l1][l2] > firstharmonicval) {
- 	firstharmonicindex = l2;
- 	firstharmonicval  = data[2][l1][l2] ;
-@@ -333,35 +324,38 @@ void M_vocoder::generateCycle() {
- 
-     //   intermediate frequency-domain munging of modulator
-     //   Frequency (additive, Bode-style) shifting first
--    for (l2 = 0; l2 < (unsigned int)fftsize; l2++)
--      modinbackward[l2] = 0;
-+    for (l2 = 0; l2 < fftsize; l2++)
-+      modinbackward[l2] = 0.0;
-+
-     int lclfrq;
--    for (l2 = 0; l2 < (unsigned int)fftsize/2; l2++) {
-+    for (l2 = 0; l2 < fftsize/2; l2++) {
-       //   positive frequencies (first half) of the FFT result
-       lclfrq = l2 + (int)freqshift + vcfreqshift * inFreqShift[l1][0];
-       lclfrq = lclfrq > 0 ? lclfrq : 0;
--      lclfrq = lclfrq < ((fftsize/2)-1) ? lclfrq : (fftsize/2)-1;
-+      lclfrq = lclfrq < (int)((fftsize/2)-1) ? lclfrq : (fftsize/2)-1;
-       modinbackward [lclfrq] = modoutforward [l2];
-       //   Negative frequencies (second half of the fft result)
--      modinbackward [fftsize - lclfrq] = modoutforward [ fftsize - l2];
-+      modinbackward [fftsize - lclfrq] = modoutforward [fftsize - l2];
-     }
- 
--    //    Pitchshifting (multiplicative, harmonic-retaining) shifting.
--    //    Note that we reuse the modoutforward as working space
--    for (l2 = 0; l2 < (unsigned int) fftsize; l2++) {
--      modoutforward[l2] = modinbackward[l2];
--    };
--    for (l2 = 0; l2 < (unsigned int)fftsize; l2++)
--      modinbackward[l2] = 0;
-+    // Pitchshifting (multiplicative, harmonic-retaining) shifting.
-+    // Note that we reuse the modoutforward as working space
-+    //for (l2 = 0; l2 < fftsize; l2++) {
-+    //  modoutforward[l2] = modinbackward[l2];
-+    //};
-+    modoutforward = modinbackward;
-+
-+    for (l2 = 0; l2 < fftsize; l2++)
-+      modinbackward[l2] = 0.0;
- 
-     float psmod, psfactor;
-     psmod = (pitchshift + vcpitch * inPitchShift[l1][0]);
-     psfactor = pow (2.0, psmod);
--    for (l2 = 0; l2 < (unsigned int)fftsize/2; l2++) {
-+    for (l2 = 0; l2 < fftsize/2; l2++) {
-       //   positive frequencies (first half) of the FFT result
-       lclfrq = l2 * psfactor;
-       lclfrq = lclfrq > 0 ? lclfrq : 0;
--      lclfrq = lclfrq < ((fftsize/2)-1) ? lclfrq : (fftsize/2)-1;
-+      lclfrq = lclfrq < (int)((fftsize/2)-1) ? lclfrq : (fftsize/2)-1;
-       //   Old way to pitch shift: just move the bucket.  But this puts
-       //   nulls wherever the energy is split between two buckets with
-       //   a 180 degree phase difference.
-@@ -375,12 +369,12 @@ void M_vocoder::generateCycle() {
- 	  //   Better way: move freq. bin, multiply angle by octave motion.
- 	  //
- 	  modinbackward[lclfrq] +=
--	    cabs (modoutforward [l2])
--	    * cexp (I * ( carg (modoutforward [l2])
-+	    std::abs(modoutforward[l2])
-+	    * std::exp (I * ( std::arg (modoutforward [l2])
- 			  + (l2 * phaseshift * psfactor)));
- 	  modinbackward[fftsize - lclfrq] +=
--	    cabs (modoutforward [ fftsize - l2])
--	    * cexp (I * ( carg (modoutforward [ fftsize - l2])
-+	    std::abs (modoutforward [ fftsize - l2])
-+	    * std::exp (I * ( std::arg (modoutforward [ fftsize - l2])
- 			  + (l2 * phaseshift * psfactor)));
- 	};
-     }
-@@ -389,9 +383,9 @@ void M_vocoder::generateCycle() {
-     fftw_execute (planmodbackward);
- 
-     //   renormalize the time-domain modulator output
--    for (l2 = 0; l2 < (unsigned)fftsize; l2++) {
--      modoutbackward [l2] = modoutbackward[l2] / float (fftsize) ;
--      modoutbackward [l2] = modoutbackward[l2] / window[l2];
-+    for (l2 = 0; l2 < fftsize; l2++) {
-+      modoutbackward [l2] = modoutbackward[l2] / (double) fftsize;
-+      modoutbackward [l2] = modoutbackward[l2] / (double) window[l2];
-     }
- 
-     unsigned int i;
-@@ -400,13 +394,11 @@ void M_vocoder::generateCycle() {
- 
- 
-     //     Splicing the new output to the results
--    if (dynsplice == 0.0)
--      {
-+    if (dynsplice == 0.0) {
- 	//   output it as the altered modulator.
- 	for (l2 = 0; l2 < synthdata->cyclesize; l2++) {
--	  data[0][l1][l2] = creal ( modoutbackward [l2 +
--						    fftsize/2 -
--						    synthdata->cyclesize/2 ]);
-+	  data[0][l1][l2] =
-+              modoutbackward[l2 + fftsize/2 - synthdata->cyclesize/2].real();
- 	}
- 	clomatch_index = fftsize - synthdata->cyclesize;
-       }
-@@ -421,18 +413,21 @@ void M_vocoder::generateCycle() {
- 	float tval, dtval;
- 	int searchstart;
- 	float spliceval, dspliceval;
--	searchstart = fftsize/2 - synthdata->cyclesize;
--	if (searchstart < 1) searchstart = 1;
--	clomatch_index = searchstart;
-+
-+        searchstart = fftsize/2 - synthdata->cyclesize;
-+        if (searchstart < 1)
-+            searchstart = 1;
-+
-+        clomatch_index = searchstart;
- 	spliceval = data[0][l1][synthdata->cyclesize - 1];
- 	dspliceval = spliceval - data[0][l1][synthdata->cyclesize - 2];
--	clov_sofar= fabs(creal(modoutbackward[clomatch_index])-spliceval );
-+	clov_sofar= fabs(modoutbackward[clomatch_index].real()-spliceval);
- 	for (l2 = searchstart;
- 	     l2 < (searchstart + synthdata->cyclesize);
- 	     l2++)
- 	  {
--	    tval = creal (modoutbackward[l2]);
--	    dtval = tval - creal (modoutbackward [l2-1]);
-+	    tval = modoutbackward[l2].real();
-+	    dtval = tval - modoutbackward [l2-1].real();
- 	    if (
- 		((fabs (tval - spliceval )) < clov_sofar )
- 		&& ((dtval * dspliceval ) >= 0)
-@@ -445,15 +440,15 @@ void M_vocoder::generateCycle() {
- 	  };
- 	//  fprintf (stderr, "%d %f %f ",
- 	//      clomatch_index, clov_sofar, clodv_sofar);
--	
-+
- 	//   What's our residual error, so that we can splice this
- 	//   with minimal "click"?
--	residual = + spliceval - creal( modoutbackward[clomatch_index]);
-+	residual = + spliceval - modoutbackward[clomatch_index].real();
- 
- 	//  Move our wave, with the best match so far established, to
- 	//   the output buffer area.
- 	for (l2 = 0; l2 < synthdata->cyclesize; l2++) {
--	  data[0][l1][l2] = creal ( modoutbackward [ clomatch_index + l2])
-+	  data[0][l1][l2] = modoutbackward[clomatch_index + l2].real()
- 	    + ((1.0 - (float(l2) / float(synthdata->cyclesize))) * residual);
- 	};
- 
-@@ -466,17 +461,18 @@ void M_vocoder::generateCycle() {
-     for (l2 = 0; l2 < fftsize - synthdata->cyclesize; l2++) {
-       carrbuf [l1][l2] = carrbuf [l1][l2 + synthdata->cyclesize];
-     }
-+
-     for (l2 = 0; l2 < synthdata->cyclesize; l2++) {
-       carrbuf [l1][l2 + fftsize - synthdata->cyclesize] = inCarrier[l1][l2];
-     }
- 
--    for (l2 = 0; l2 <  unsigned (fftsize); l2++) {
-+    for (l2 = 0; l2 < fftsize; l2++) {
-       carrinforward [l2] = carrbuf [l1][l2] * window[l2];
-     }
- 
-     fftw_execute (plancarrforward);
- 
--    for (l2 = 0; l2 < (unsigned) fftsize; l2++) {
-+    for (l2 = 0; l2 < fftsize; l2++) {
-       carrinbackward[l2] = carroutforward[l2];
-     };
- 
-@@ -486,34 +482,37 @@ void M_vocoder::generateCycle() {
-     //   Group the modulator into channels, and multipy the channels
-     //   over the carrier.
- 
--    int localchannels;
--    localchannels = channels + vcchannels * inChannels[l1][0];
--    if (localchannels < 1) localchannels = 1;
--    if (localchannels > fftsize - 1) localchannels = fftsize - 1;
--    for (l2 = 0; l2 < (unsigned) fftsize; l2++) {
-+    unsigned int localchannels = channels + vcchannels * inChannels[l1][0];
-+    if (localchannels < 1)
-+        localchannels = 1;
-+
-+    if (localchannels > fftsize - 1)
-+        localchannels = fftsize - 1;
-+
-+    for (l2 = 0; l2 < fftsize; l2++) {
-       modmap[l2] = 0;
-       //       initial conditions...
-       if (l2 == 0)
- 	for (i = 0; i < channels; i++)
--	  modmap[l2] += cabs (modoutforward[l2 + i]);
-+	  modmap[l2] += std::abs(modoutforward[l2 + i]);
-       else
- 	modmap [l2] = modmap[l2 - 1];
- 
-       //    add the heads, subtract the tails
-       i = l2 + channels;
--      if (l2 < (unsigned)fftsize - 2)
--	modmap[l2] += cabs( modoutforward [i] );
-+      if (l2 < fftsize - 2)
-+	modmap[l2] += std::abs(modoutforward[i]);
-       i = l2 - channels;
-       if (l2 >= channels)
--	modmap[l2] -= cabs( modoutforward [i] );
-+	modmap[l2] -= std::abs(modoutforward[i]);
-     }
- 
-     //   Normalize the modmap
--    for (l2 = 0; l2 < (unsigned) fftsize; l2++)
-+    for (l2 = 0; l2 < fftsize; l2++)
-       modmap[l2] = modmap[l2] / localchannels;
- 
-     //   Do attack/release
--    for (l2 = 0; l2 < (unsigned) fftsize; l2++) {
-+    for (l2 = 0; l2 < fftsize; l2++) {
-       if (modmap [l2] > armodmap[l2])
- 	armodmap [l2] += (1 - attack) * (modmap[l2] - armodmap[l2]);
-       if (modmap [l2] < armodmap[l2])
-@@ -521,8 +520,8 @@ void M_vocoder::generateCycle() {
-     }
- 
-     //   multiply the carrier by the modulation map.
--    for (l2 = 0; l2 < (unsigned) fftsize; l2++) {
--      carrinbackward[l2] = carroutforward[l2] * armodmap[l2];
-+    for (l2 = 0; l2 < fftsize; l2++) {
-+      carrinbackward[l2] = carroutforward[l2] * (double) armodmap[l2];
-     }
- 
-     //   reverse transform to final output, and renormalize by 1/fftsize.
-@@ -532,8 +531,7 @@ void M_vocoder::generateCycle() {
-     for (l2 = 0; l2 < synthdata->cyclesize; l2++) {
-       offset = l2 + (fftsize/2) - (synthdata->cyclesize / 2);
-       data[1][l1][l2]=
--	(creal(carroutbackward[offset]/window[offset])) / (fftsize * 100);
-+	(carroutbackward[offset].real()/window[offset]) / (fftsize * 100);
-     };
-   };
- }
--
-diff --git a/src/m_vocoder.h b/src/m_vocoder.h
-index 38eac58..32c8521 100644
---- a/src/m_vocoder.h
-+++ b/src/m_vocoder.h
-@@ -1,4 +1,4 @@
--/* 
-+/*
-   Vocoder - derived from m_delay.cpp
- 
-   Copyright (C) 2011 Bill Yerazunis <yerazunis@yahoo.com>
-@@ -22,7 +22,9 @@
- #define M_VOCODER_H
- 
- #include "module.h"
--#include <complex.h>
-+
-+#include <vector>
-+#include <ccomplex>
- #include <fftw3.h>
- 
- #define MODULE_VOCODER_WIDTH                 105
-@@ -30,7 +32,7 @@
- 
- class M_vocoder : public Module
- {
--    Q_OBJECT 
-+    Q_OBJECT
- 
-     float channels, vcchannels;
-     float attack, release;
-@@ -42,21 +44,20 @@ class M_vocoder : public Module
- 
-     Port *port_M_modulator, *port_M_pitchshift, *port_M_freqshift,
-       *port_M_channels, *port_M_carrier;
-+
-     Port *port_modfft_out, *port_firstharmonic_out,
--      *port_altmodulator_out, 
--      *port_vocoder_out;
-+      *port_altmodulator_out, *port_vocoder_out;
- 
--    fftw_plan planmodforward, planmodbackward, 
-+    fftw_plan planmodforward, planmodbackward,
-       plancarrforward, plancarrbackward;
- 
--    fftw_complex *carrinforward, *carroutforward, 
--      *carrinbackward, *carroutbackward,
--      *modinforward, *modoutforward, 
--      *modinbackward, *modoutbackward;
-+    std::vector<std::complex<double>> carrinforward, carroutforward,
-+        carrinbackward, carroutbackward,
-+        modinforward, modoutforward,
-+        modinbackward, modoutbackward;
- 
--  public: 
--    int fftsize;
--    float **inModulator, **inPitchShift, **inFreqShift, 
-+    unsigned int fftsize;
-+    float **inModulator, **inPitchShift, **inFreqShift,
-       **inChannels, **inCarrier;
-     // the previous time-based samples, for overlapping
-     float **modbuf, **carrbuf;
-@@ -68,10 +69,10 @@ class M_vocoder : public Module
-     float *armodmap;
- 
-   public:
--    float windowcurve (int windowfunc, int len, int elem, float alpha );
-+    float windowcurve (int windowfunc, unsigned int len, int elem, float alpha );
-     M_vocoder(QWidget* parent=0, int id = 0);
-     ~M_vocoder();
-     void generateCycle();
- };
--  
-+
- #endif
diff --git a/gnu/packages/patches/audacity-add-include.patch b/gnu/packages/patches/audacity-add-include.patch
new file mode 100644
index 0000000000..a7f27918e7
--- /dev/null
+++ b/gnu/packages/patches/audacity-add-include.patch
@@ -0,0 +1,15 @@
+Without <sys/time.h>, gettimeofday is undefined.
+
+diff --git a/src/AudioIO.cpp b/src/AudioIO.cpp
+index 0187e3962..e15d55f4c 100644
+--- a/src/AudioIO.cpp
++++ b/src/AudioIO.cpp
+@@ -479,6 +479,8 @@ time warp info and AudioIOListener and whether the playback is looped.
+ #include "../lib-src/portmidi/porttime/porttime.h"
+ #include "../lib-src/header-substitutes/allegro.h"
+ 
++#include <sys/time.h>
++
+    #define MIDI_SLEEP 10 /* milliseconds */
+    // how long do we think the thread that fills MIDI buffers,
+    // if it is separate from the portaudio thread,
diff --git a/gnu/packages/patches/aws-c-event-stream-cmake-prefix.patch b/gnu/packages/patches/aws-c-event-stream-cmake-prefix.patch
new file mode 100644
index 0000000000..79655a910b
--- /dev/null
+++ b/gnu/packages/patches/aws-c-event-stream-cmake-prefix.patch
@@ -0,0 +1,13 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -3,6 +3,10 @@
+ cmake_minimum_required (VERSION 3.1)
+ project (aws-c-event-stream C)
+ 
++if (DEFINED ENV{CMAKE_PREFIX_PATH})
++    set(CMAKE_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH})
++endif()
++
+ if (DEFINED CMAKE_PREFIX_PATH)
+     file(TO_CMAKE_PATH "${CMAKE_PREFIX_PATH}" CMAKE_PREFIX_PATH)
+ endif()
diff --git a/gnu/packages/patches/aws-checksums-cmake-prefix.patch b/gnu/packages/patches/aws-checksums-cmake-prefix.patch
new file mode 100644
index 0000000000..f6a5c9ad9c
--- /dev/null
+++ b/gnu/packages/patches/aws-checksums-cmake-prefix.patch
@@ -0,0 +1,13 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -8,6 +8,10 @@
+     cmake_policy(SET CMP0069 NEW) # Enable LTO/IPO if available in the compiler, see AwsCFlags
+ endif()
+ 
++if (DEFINED ENV{CMAKE_PREFIX_PATH})
++    set(CMAKE_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH})
++endif()
++
+ if (DEFINED CMAKE_PREFIX_PATH)
+     file(TO_CMAKE_PATH "${CMAKE_PREFIX_PATH}" CMAKE_PREFIX_PATH)
+ endif()
diff --git a/gnu/packages/patches/bear-disable-preinstall-tests.patch b/gnu/packages/patches/bear-disable-preinstall-tests.patch
new file mode 100644
index 0000000000..c65095405f
--- /dev/null
+++ b/gnu/packages/patches/bear-disable-preinstall-tests.patch
@@ -0,0 +1,40 @@
+From d7d0cdd48017679e8529f8475d1b9902944cf243 Mon Sep 17 00:00:00 2001
+From: Brett Gilio <brettg@gnu.org>
+Date: Sun, 20 Dec 2020 14:43:30 -0600
+Subject: [PATCH] Disallow Pre-install Checks
+
+---
+ CMakeLists.txt | 8 --------
+ 1 file changed, 8 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 45c6d27..73b4ace 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -58,10 +58,6 @@ ExternalProject_Add(BearSource
+             -DROOT_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX}
+             -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
+             -DENABLE_UNIT_TESTS:BOOL=${ENABLE_UNIT_TESTS}
+-        TEST_BEFORE_INSTALL
+-            1
+-        TEST_COMMAND
+-            ctest # or `ctest -T memcheck`
+         )
+ 
+ # Run the functional tests
+@@ -73,12 +69,8 @@ if (ENABLE_FUNC_TESTS)
+                 BearSource
+             CMAKE_CACHE_ARGS
+                 -DSTAGED_INSTALL_PREFIX:PATH=${STAGED_INSTALL_PREFIX}
+-            TEST_BEFORE_INSTALL
+-                1
+             INSTALL_COMMAND
+                 ""
+-            TEST_COMMAND
+-                ctest --verbose
+             )
+ endif ()
+ 
+-- 
+2.29.2
+
diff --git a/gnu/packages/patches/busybox-1.31.1-fix-build-with-glibc-2.31.patch b/gnu/packages/patches/busybox-1.31.1-fix-build-with-glibc-2.31.patch
deleted file mode 100644
index 1518df067f..0000000000
--- a/gnu/packages/patches/busybox-1.31.1-fix-build-with-glibc-2.31.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-See: https://bugs.gentoo.org/708350
-Author: Patrick McLean <patrick.mclean@sony.com>
-Date: 2020-02-06 23:06:22 +0000
-diff --git a/coreutils/date.c b/coreutils/date.c
-index 3414d38ae..4ade6abb4 100644
---- a/coreutils/date.c
-+++ b/coreutils/date.c
-@@ -279,6 +279,9 @@ int date_main(int argc UNUSED_PARAM, char **argv)
- 		time(&ts.tv_sec);
- #endif
- 	}
-+#if !ENABLE_FEATURE_DATE_NANO
-+	ts.tv_nsec = 0;
-+#endif
- 	localtime_r(&ts.tv_sec, &tm_time);
- 
- 	/* If date string is given, update tm_time, and maybe set date */
-@@ -301,9 +304,10 @@ int date_main(int argc UNUSED_PARAM, char **argv)
- 		if (date_str[0] != '@')
- 			tm_time.tm_isdst = -1;
- 		ts.tv_sec = validate_tm_time(date_str, &tm_time);
-+		ts.tv_nsec = 0;
- 
- 		/* if setting time, set it */
--		if ((opt & OPT_SET) && stime(&ts.tv_sec) < 0) {
-+		if ((opt & OPT_SET) && clock_settime(CLOCK_REALTIME, &ts) < 0) {
- 			bb_perror_msg("can't set date");
- 		}
- 	}
-diff --git a/libbb/missing_syscalls.c b/libbb/missing_syscalls.c
-index 87cf59b3d..dc40d9155 100644
---- a/libbb/missing_syscalls.c
-+++ b/libbb/missing_syscalls.c
-@@ -15,14 +15,6 @@ pid_t getsid(pid_t pid)
- 	return syscall(__NR_getsid, pid);
- }
- 
--int stime(const time_t *t)
--{
--	struct timeval tv;
--	tv.tv_sec = *t;
--	tv.tv_usec = 0;
--	return settimeofday(&tv, NULL);
--}
--
- int sethostname(const char *name, size_t len)
- {
- 	return syscall(__NR_sethostname, name, len);
-diff --git a/util-linux/rdate.c b/util-linux/rdate.c
-index 70f829e7f..878375d78 100644
---- a/util-linux/rdate.c
-+++ b/util-linux/rdate.c
-@@ -95,9 +95,13 @@ int rdate_main(int argc UNUSED_PARAM, char **argv)
- 	if (!(flags & 2)) { /* no -p (-s may be present) */
- 		if (time(NULL) == remote_time)
- 			bb_error_msg("current time matches remote time");
--		else
--			if (stime(&remote_time) < 0)
-+		else {
-+			struct timespec ts;
-+			ts.tv_sec = remote_time;
-+			ts.tv_nsec = 0;
-+			if (clock_settime(CLOCK_REALTIME, &ts) < 0)
- 				bb_perror_msg_and_die("can't set time of day");
-+		}
- 	}
- 
- 	if (flags != 1) /* not lone -s */
diff --git a/gnu/packages/patches/cl-asdf-config-directories.patch b/gnu/packages/patches/cl-asdf-config-directories.patch
new file mode 100644
index 0000000000..2b1b51932c
--- /dev/null
+++ b/gnu/packages/patches/cl-asdf-config-directories.patch
@@ -0,0 +1,44 @@
+Search for ASDF configuration files first in user directories, and then in
+Guix profiles.
+
+diff -ru a/asdf-3.3.4.lisp b/asdf-3.3.4.lisp
+--- a/asdf-3.3.4.lisp	2020-02-14 20:16:22.000000000 +0100
++++ b/asdf-3.3.4.lisp	2020-12-05 11:09:56.066229482 +0100
+@@ -12535,10 +12535,15 @@
+     (find-preferred-file (system-config-pathnames *output-translations-file*)
+                          :direction direction))
+   (defun user-output-translations-directory-pathname (&key (direction :input))
+-    (xdg-config-pathname *output-translations-directory* direction))
+-  (defun system-output-translations-directory-pathname (&key (direction :input))
+-    (find-preferred-file (system-config-pathnames *output-translations-directory*)
++    (find-preferred-file (list (xdg-config-home *output-translations-directory*))
+                          :direction direction))
++  (defun system-output-translations-directory-pathname (&key (direction :input))
++    `(:output-translations
++      ,@(loop :for dir :in (filter-pathname-set
++                            (xdg-config-dirs
++                             "common-lisp/asdf-output-translations.conf.d/"))
++              :collect `(:include ,dir))
++      :inherit-configuration))
+   (defun environment-output-translations ()
+     (getenv "ASDF_OUTPUT_TRANSLATIONS"))
+ 
+@@ -12921,10 +12926,15 @@
+     (find-preferred-file (system-config-pathnames *source-registry-file*)
+                          :direction direction))
+   (defun user-source-registry-directory (&key (direction :input))
+-    (xdg-config-pathname *source-registry-directory* direction))
+-  (defun system-source-registry-directory (&key (direction :input))
+-    (find-preferred-file (system-config-pathnames *source-registry-directory*)
++    (find-preferred-file (list (xdg-config-home *source-registry-directory*))
+                          :direction direction))
++  (defun system-source-registry-directory (&key (direction :input))
++    `(:source-registry
++      ,@(loop :for dir :in (filter-pathname-set
++                            (xdg-config-dirs
++                             "common-lisp/source-registry.conf.d/"))
++              :collect `(:include ,dir))
++      :inherit-configuration))
+   (defun environment-source-registry ()
+     (getenv "CL_SOURCE_REGISTRY"))
+ 
diff --git a/gnu/packages/patches/clisp-remove-failing-test.patch b/gnu/packages/patches/clisp-remove-failing-test.patch
deleted file mode 100644
index e44ce80f74..0000000000
--- a/gnu/packages/patches/clisp-remove-failing-test.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-This test doesn't ever complete or timeout
-
----
- tests/socket.tst | 24 ------------------------
- 1 file changed, 24 deletions(-)
-
-diff --git a/tests/socket.tst b/tests/socket.tst
-index 93c6310..1d976ff 100644
---- a/tests/socket.tst
-+++ b/tests/socket.tst
-@@ -551,30 +551,6 @@ T
-           interfaces))
- ("0.0.0.0" "127.0.0.1" "0.0.0.0" "127.0.0.1")
- 
--(multiple-value-bind (run args) (cmd-args)
--  (let ((se (socket:socket-server)))
--    (ext:run-program run :arguments (append args (list "-q" "-q" "-x" (format nil "(close (socket:socket-connect ~D))" (socket:socket-server-port se))))
--                     :wait nil :input nil :output nil)
--    (unwind-protect
--         (with-open-stream (so (socket:socket-accept se))
--           (list
--            (socket:socket-status so)
--            (write-line "foo" so)
--            (socket:socket-status so)
--            #+macos (handler-case (read-char so)
--                      (end-of-file (c)
--                        (princ 'read-char) (princ-error c) t))
--            #-macos (check-os-error (read-char so) (:ECONNRESET 104))
--            (null (member (socket:socket-status so) '(:EOF :APPEND)))
--            #+macos (string= (write-line "bar" so) "bar")
--            #-macos (check-os-error (write-line "bar" so) (:EPIPE 32))
--            (null (member (socket:socket-status so) '(:EOF :APPEND)))
--            (handler-case (read-char so)
--              (end-of-file (c)
--                (princ 'read-char) (princ-error c) 'end-of-file))))
--      (socket:socket-server-close se))))
--(:OUTPUT "foo" :OUTPUT T NIL T NIL END-OF-FILE)
--
- ;; https://sourceforge.net/p/clisp/feature-requests/46/
- (check-os-error (socket:socket-connect 0)
-   #-(or win32 macos) (:ECONNREFUSED 111)
--- 
-
diff --git a/gnu/packages/patches/combinatorial-blas-awpm.patch b/gnu/packages/patches/combinatorial-blas-awpm.patch
index 86d4ab2dcf..d44a6f28ba 100644
--- a/gnu/packages/patches/combinatorial-blas-awpm.patch
+++ b/gnu/packages/patches/combinatorial-blas-awpm.patch
@@ -1,4 +1,6 @@
-Install BipartiteMatchings headers for SuperLU_DIST.
+Install BipartiteMatchings headers for SuperLU_DIST.  Removes global variables
+and code related to performance measurement that is not useful when used in a
+library setting.
 
 --- a/BipartiteMatchings/ApproxWeightPerfectMatching.h
 +++ b/BipartiteMatchings/ApproxWeightPerfectMatching.h
@@ -11,6 +13,167 @@ Install BipartiteMatchings headers for SuperLU_DIST.
  #include "BPMaximalMatching.h"
  #include "BPMaximumMatching.h"
  #include <parallel/algorithm>
+@@ -39,9 +39,6 @@
+     std::shared_ptr<CommGrid> commGrid;
+ };
+ 
+-double t1Comp, t1Comm, t2Comp, t2Comm, t3Comp, t3Comm, t4Comp, t4Comm, t5Comp, t5Comm, tUpdateMateComp;
+-    
+-
+ template <class IT, class NT>
+ std::vector<std::tuple<IT,IT,NT>> ExchangeData(std::vector<std::vector<std::tuple<IT,IT,NT>>> & tempTuples, MPI_Comm World)
+ {
+@@ -391,7 +388,7 @@
+ 
+ 
+ 
+-int ThreadBuffLenForBinning(int itemsize, int nbins)
++inline int ThreadBuffLenForBinning(int itemsize, int nbins)
+ {
+     // 1MB shared cache (per 2 cores) in KNL
+ #ifndef L2_CACHE_SIZE
+@@ -417,7 +414,6 @@
+     
+     
+     
+-    double tstart = MPI_Wtime();
+     
+     
+     MPI_Comm World = param.commGrid->GetWorld();
+@@ -528,9 +524,6 @@
+         }
+     }
+     
+-    t1Comp = MPI_Wtime() - tstart;
+-    tstart = MPI_Wtime();
+-    
+     // Step 3: Communicate data
+     
+     std::vector<int> recvcnt (param.nprocs);
+@@ -548,7 +541,6 @@
+     std::vector< std::tuple<IT,IT,NT> > recvTuples1(totrecv);
+     MPI_Alltoallv(sendTuples.data(), sendcnt.data(), sdispls.data(), MPI_tuple, recvTuples1.data(), recvcnt.data(), rdispls.data(), MPI_tuple, World);
+     MPI_Type_free(&MPI_tuple);
+-    t1Comm = MPI_Wtime() - tstart;
+     return recvTuples1;
+ }
+ 
+@@ -730,9 +722,6 @@
+ 
+     // Step 4: Communicate data
+     
+-    t2Comp = MPI_Wtime() - tstart;
+-    tstart = MPI_Wtime();
+-    
+     std::vector<int> recvcnt (param.nprocs);
+     std::vector<int> rdispls (param.nprocs, 0);
+     
+@@ -748,7 +737,6 @@
+     std::vector< std::tuple<IT,IT,IT,NT> > recvTuples1(totrecv);
+     MPI_Alltoallv(sendTuples.data(), sendcnt.data(), sdispls.data(), MPI_tuple, recvTuples1.data(), recvcnt.data(), rdispls.data(), MPI_tuple, World);
+     MPI_Type_free(&MPI_tuple);
+-    t2Comm = MPI_Wtime() - tstart;
+     return recvTuples1;
+ }
+ 
+@@ -836,7 +824,6 @@
+     param.myrank = myrank;
+     param.commGrid = commGrid;
+     
+-    double t1CompAll = 0, t1CommAll = 0, t2CompAll = 0, t2CommAll = 0, t3CompAll = 0, t3CommAll = 0, t4CompAll = 0, t4CommAll = 0, t5CompAll = 0, t5CommAll = 0, tUpdateMateCompAll = 0, tUpdateWeightAll = 0;
+ 	
+ 	// -----------------------------------------------------------
+ 	// replicate mate vectors for mateCol2Row
+@@ -975,11 +962,7 @@
+ 		}
+ 		
+ 		//vector< tuple<IT,IT,IT, NT> >().swap(recvTuples1);
+-		double t3Comp = MPI_Wtime() - tstart;
+-		tstart = MPI_Wtime();
+ 		recvTuples1 = ExchangeData1(tempTuples1, World);
+-		double t3Comm = MPI_Wtime() - tstart;
+-		tstart = MPI_Wtime();
+ 		
+ 		std::vector<std::tuple<IT,IT,IT,IT, NT>> bestTuplesPhase4 (lncol);
+ 		// we could have used lnrow in both bestTuplesPhase3 and bestTuplesPhase4
+@@ -1041,14 +1024,9 @@
+ 		
+ 		
+ 		//vector< tuple<IT,IT,IT, NT> >().swap(recvTuples1);
+-		double t4Comp = MPI_Wtime() - tstart;
+-		tstart = MPI_Wtime();
+ 		
+ 		std::vector<std::tuple<IT,IT,IT,IT>> recvWinnerTuples = ExchangeData1(winnerTuples, World);
+ 		
+-		double t4Comm = MPI_Wtime() - tstart;
+-		tstart = MPI_Wtime();
+-		
+ 		// at the owner of (mj,j)
+ 		std::vector<std::tuple<IT,IT>> rowBcastTuples(recvWinnerTuples.size()); //(mi,mj)
+ 		std::vector<std::tuple<IT,IT>> colBcastTuples(recvWinnerTuples.size()); //(j,i)
+@@ -1065,15 +1043,10 @@
+ 			colBcastTuples[k] = std::make_tuple(j,i);
+ 			rowBcastTuples[k] = std::make_tuple(mj,mi);
+ 		}
+-		double t5Comp = MPI_Wtime() - tstart;
+-		tstart = MPI_Wtime();
+ 		
+ 		std::vector<std::tuple<IT,IT>> updatedR2C = MateBcast(rowBcastTuples, RowWorld);
+ 		std::vector<std::tuple<IT,IT>> updatedC2R = MateBcast(colBcastTuples, ColWorld);
+ 		
+-		double t5Comm = MPI_Wtime() - tstart;
+-		tstart = MPI_Wtime();
+-		
+ #ifdef THREADED
+ #pragma omp parallel for
+ #endif
+@@ -1095,13 +1068,9 @@
+ 		}
+ 		
+ 		
+-		double tUpdateMateComp = MPI_Wtime() - tstart;
+-		tstart = MPI_Wtime();
+ 		// update weights of matched edges
+ 		// we can do better than this since we are doing sparse updates
+ 		ReplicateMateWeights(param, dcsc, colptr, RepMateC2R, RepMateWR2C, RepMateWC2R);
+-		double tUpdateWeight = MPI_Wtime() - tstart;
+-		
+ 		
+ 		weightPrev = weightCur;
+ 		weightCur = MatchingWeight(RepMateWC2R, RowWorld, minw);
+@@ -1110,32 +1079,8 @@
+ 		//UpdateMatching(mateRow2Col, mateCol2Row, RepMateR2C, RepMateC2R);
+ 		//CheckMatching(mateRow2Col,mateCol2Row);
+ 		
+-		if(myrank==0)
+-		{
+-			std::cout  <<  t1Comp << " " << t1Comm << " "<< t2Comp << " " << t2Comm << " " << t3Comp << " " << t3Comm << " " << t4Comp << " " << t4Comm << " " << t5Comp << " " << t5Comm << " " << tUpdateMateComp << " " << tUpdateWeight << std::endl;
+-            
+-            t1CompAll += t1Comp;
+-            t1CommAll += t1Comm;
+-            t2CompAll += t2Comp;
+-            t2CommAll += t2Comm;
+-            t3CompAll += t3Comp;
+-            t3CommAll += t3Comm;
+-            t4CompAll += t4Comp;
+-            t4CommAll += t4Comm;
+-            t5CompAll += t5Comp;
+-            t5CommAll += t5Comm;
+-            tUpdateMateCompAll += tUpdateMateComp;
+-            tUpdateWeightAll += tUpdateWeight;
+-            
+-		}
+ 	}
+ 	
+-    if(myrank==0)
+-    {
+-        std::cout << "=========== overal timing ==========" << std::endl;
+-        std::cout  <<  t1CompAll << " " << t1CommAll << " " << t2CompAll << " " << t2CommAll << " " << t3CompAll << " " << t3CommAll << " " << t4CompAll << " " << t4CommAll << " " << t5CompAll << " " << t5CommAll << " " << tUpdateMateCompAll << " " << tUpdateWeightAll << std::endl;
+-    }
+-	
+ 	// update the distributed mate vectors from replicated mate vectors
+ 	UpdateMatching(mateRow2Col, mateCol2Row, RepMateR2C, RepMateC2R);
+ 	//weightCur = MatchingWeight(RepMateWC2R, RowWorld);
 --- a/BipartiteMatchings/BPMaximalMatching.h
 +++ b/BipartiteMatchings/BPMaximalMatching.h
 @@ -1,7 +1,7 @@
@@ -22,6 +185,33 @@ Install BipartiteMatchings headers for SuperLU_DIST.
  #include <iostream>
  #include <functional>
  #include <algorithm>
+@@ -14,8 +14,6 @@
+ #define GREEDY 1
+ #define KARP_SIPSER 2
+ #define DMD 3
+-MTRand GlobalMT(123); // for reproducible result
+-double tTotalMaximal;
+ 
+ namespace combblas {
+ 
+@@ -25,7 +25,7 @@
+ void MaximalMatching(Par_DCSC_Bool & A, Par_DCSC_Bool & AT, FullyDistVec<IT, IT>& mateRow2Col,
+             FullyDistVec<IT, IT>& mateCol2Row, FullyDistVec<IT, IT>& degColRecv, int type, bool rand=true)
+ {
+-
++    static MTRand GlobalMT(123); // for reproducible result
+ 	typedef VertexTypeML < IT, IT> VertexType;
+     int nprocs, myrank;
+     MPI_Comm_size(MPI_COMM_WORLD,&nprocs);
+@@ -354,8 +354,6 @@
+ 		
+ 	}
+ 	
+-    tTotalMaximal = MPI_Wtime() - tStart;
+-    
+ 	IT cardinality = mateRow2Col.Count([](IT mate){return mate!=-1;});
+ 	std::vector<double> totalTimes(timing[0].size(),0);
+ 	for(int i=0; i<timing.size(); i++)
 --- a/BipartiteMatchings/BPMaximumMatching.h
 +++ b/BipartiteMatchings/BPMaximumMatching.h
 @@ -1,7 +1,7 @@
@@ -33,6 +223,32 @@ Install BipartiteMatchings headers for SuperLU_DIST.
  #include <mpi.h>
  #include <sys/time.h>
  #include <iostream>
+@@ -11,7 +11,6 @@
+ #include <string>
+ #include <sstream>
+ #include "MatchingDefs.h"
+-double tTotalMaximum;
+ 
+ namespace combblas {
+ 
+@@ -231,7 +231,7 @@
+ void maximumMatching(SpParMat < IT, NT, DER > & A, FullyDistVec<IT, IT>& mateRow2Col,
+                      FullyDistVec<IT, IT>& mateCol2Row, bool prune=true, bool randMM = false, bool maximizeWeight = false)
+ {
+-	
++    static MTRand GlobalMT(123); // for reproducible result	
+ 	typedef VertexTypeMM <IT> VertexType;
+ 	
+     int nthreads=1;
+@@ -420,8 +420,6 @@
+     
+     MPI_Win_free(&winLeaves);
+     
+-    tTotalMaximum = MPI_Wtime() - tstart;
+-    
+     //isMaximalmatching(A, mateRow2Col, mateCol2Row, unmatchedRow, unmatchedCol);
+     //isMatching(mateCol2Row, mateRow2Col); //todo there is a better way to check this
+     
 --- a/BipartiteMatchings/MatchingDefs.h
 +++ b/BipartiteMatchings/MatchingDefs.h
 @@ -9,7 +9,7 @@
diff --git a/gnu/packages/patches/dbxfs-remove-sentry-sdk.patch b/gnu/packages/patches/dbxfs-remove-sentry-sdk.patch
index 7079fa8c3c..e4f660000d 100644
--- a/gnu/packages/patches/dbxfs-remove-sentry-sdk.patch
+++ b/gnu/packages/patches/dbxfs-remove-sentry-sdk.patch
@@ -54,7 +54,7 @@ index 89e25c6..f940d47 100644
 @@ -43,7 +43,6 @@ setup(
          "privy>=6.0,<7",
          "keyring>=15.1.0",
-         "keyrings.alt>=3.1,<4",
+         "keyrings.alt>=3.1,<5",
 -        "sentry_sdk>=0.3,<1",
      ],
      extras_require={
diff --git a/gnu/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch b/gnu/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch
deleted file mode 100644
index 6c49bdcdde..0000000000
--- a/gnu/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Fix completion for R5RS Scheme.
-See https://github.com/ashinn/scheme-complete/issues/1
-
---- scheme-complete-master/scheme-complete.el.orig	2015-12-25 21:59:09.896909029 +0100
-+++ scheme-complete-master/scheme-complete.el	2015-12-25 21:59:17.924993998 +0100
-@@ -591,7 +591,7 @@
-            '((exact->inexact (lambda (z) z))
-              (inexact->exact (lambda (z) z)))
-            (mapcar #'(lambda (x)
--                       (list x (scheme-env-lookup *scheme-r7rs-info* x)))
-+                       (scheme-env-lookup *scheme-r7rs-info* x))
-                    *scheme-r5rs-bindings*))))
-   *scheme-r5rs-info*)
- 
diff --git a/gnu/packages/patches/ghostscript-CVE-2020-15900.patch b/gnu/packages/patches/ghostscript-CVE-2020-15900.patch
new file mode 100644
index 0000000000..b6658d7c7f
--- /dev/null
+++ b/gnu/packages/patches/ghostscript-CVE-2020-15900.patch
@@ -0,0 +1,36 @@
+Fix CVE-2020-15900.
+
+https://cve.circl.lu/cve/CVE-2020-15900
+https://artifex.com/security-advisories/CVE-2020-15900
+
+Taken from upstream:
+https://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=5d499272b95a6b890a1397e11d20937de000d31b
+
+diff --git a/psi/zstring.c b/psi/zstring.c
+--- a/psi/zstring.c
++++ b/psi/zstring.c
+@@ -142,13 +142,18 @@ search_impl(i_ctx_t *i_ctx_p, bool forward)
+     return 0;
+ found:
+     op->tas.type_attrs = op1->tas.type_attrs;
+-    op->value.bytes = ptr;
+-    r_set_size(op, size);
++    op->value.bytes = ptr;				/* match */
++    op->tas.rsize = size;				/* match */
+     push(2);
+-    op[-1] = *op1;
+-    r_set_size(op - 1, ptr - op[-1].value.bytes);
+-    op1->value.bytes = ptr + size;
+-    r_set_size(op1, count + (!forward ? (size - 1) : 0));
++    op[-1] = *op1;					/* pre */
++    op[-3].value.bytes = ptr + size;			/* post */
++    if (forward) {
++        op[-1].tas.rsize = ptr - op[-1].value.bytes;	/* pre */
++        op[-3].tas.rsize = count;			/* post */
++    } else {
++        op[-1].tas.rsize = count;			/* pre */
++        op[-3].tas.rsize -= count + size;		/* post */
++    }
+     make_true(op);
+     return 0;
+ }
diff --git a/gnu/packages/patches/ghostscript-freetype-compat.patch b/gnu/packages/patches/ghostscript-freetype-compat.patch
new file mode 100644
index 0000000000..cc225b5ad6
--- /dev/null
+++ b/gnu/packages/patches/ghostscript-freetype-compat.patch
@@ -0,0 +1,35 @@
+Fix build with FreeType 2.10.3 and newer.
+
+Taken from upstream:
+https://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=41ef9a0bc36b9db7115fbe9623f989bfb47bbade
+
+diff --git a/base/fapi_ft.c b/base/fapi_ft.c
+--- a/base/fapi_ft.c
++++ b/base/fapi_ft.c
+@@ -125,7 +125,7 @@ static void
+ delete_inc_int_info(gs_fapi_server * a_server,
+                     FT_IncrementalRec * a_inc_int_info);
+ 
+-FT_CALLBACK_DEF(void *)
++static void *
+ FF_alloc(FT_Memory memory, long size)
+ {
+     gs_memory_t *mem = (gs_memory_t *) memory->user;
+@@ -133,7 +133,7 @@ FF_alloc(FT_Memory memory, long size)
+     return (gs_malloc(mem, size, 1, "FF_alloc"));
+ }
+ 
+-FT_CALLBACK_DEF(void *)
++static void *
+     FF_realloc(FT_Memory memory, long cur_size, long new_size, void *block)
+ {
+     gs_memory_t *mem = (gs_memory_t *) memory->user;
+@@ -153,7 +153,7 @@ FT_CALLBACK_DEF(void *)
+     return (tmp);
+ }
+ 
+-FT_CALLBACK_DEF(void)
++static void
+     FF_free(FT_Memory memory, void *block)
+ {
+     gs_memory_t *mem = (gs_memory_t *) memory->user;
diff --git a/gnu/packages/patches/gpsbabel-fix-i686-test.patch b/gnu/packages/patches/gpsbabel-fix-i686-test.patch
new file mode 100644
index 0000000000..5ba0305113
--- /dev/null
+++ b/gnu/packages/patches/gpsbabel-fix-i686-test.patch
@@ -0,0 +1,46 @@
+https://github.com/gpsbabel/gpsbabel/commit/465a74194d53acea5c8d74c5cf3cb2940546ec92.patch
+Can be removed next release
+
+From 465a74194d53acea5c8d74c5cf3cb2940546ec92 Mon Sep 17 00:00:00 2001
+From: tsteven4 <13596209+tsteven4@users.noreply.github.com>
+Date: Fri, 7 Aug 2020 11:29:22 -0600
+Subject: [PATCH] fix i386 regression error with engima. (#620)
+
+this was motivated by the test failure seen at
+https://buildd.debian.org/status/fetch.php?pkg=gpsbabel&arch=i386&ver=1.7.0%2Bds-4&stamp=1596794554&raw=0
+---
+ enigma.cc | 13 ++++++++++---
+ 1 file changed, 10 insertions(+), 3 deletions(-)
+
+diff --git a/enigma.cc b/enigma.cc
+index 850f27b4e..32fea92d6 100644
+--- a/enigma.cc
++++ b/enigma.cc
+@@ -21,9 +21,16 @@
+ 
+  */
+ 
++#include <cmath>           // for fabs, lround
++#include <cstdint>         // for int32_t, uint8_t, uint32_t
++#include <cstdlib>         // for abs
++#include <cstring>         // for strlen, memcpy, memset
++
++#include <QtCore/QString>  // for QString
++
+ #include "defs.h"
+-#include <cmath>
+-#include <cstdlib>
++#include "gbfile.h"        // for gbfclose, gbfopen_le, gbfread, gbfwrite, gbfile
++
+ 
+ #define MYNAME "Enigma binary route and waypoint file format"
+ 
+@@ -177,7 +184,7 @@ enigma_waypt_disp(const Waypoint* wpt)
+   le_write32(&ewpt.longitude, decToEnigmaPosition(wpt->longitude));
+   ewpt.waypoint_type = WTYPE_WAYPOINT;
+   if (wpt->altitude != unknown_alt) {
+-    le_write32(&ewpt.data.wp_altitude, METERS_TO_FEET(wpt->altitude) + 1000);
++    le_write32(&ewpt.data.wp_altitude, lround(METERS_TO_FEET(wpt->altitude)) + 1000);
+   }
+   if (wpt->shortname != nullptr) {
+     ewpt.shortname_len = (uint8_t) min(6, strlen(CSTRc(wpt->shortname)));
diff --git a/gnu/packages/patches/gpsbabel-minizip.patch b/gnu/packages/patches/gpsbabel-minizip.patch
deleted file mode 100644
index 8f3bb36f57..0000000000
--- a/gnu/packages/patches/gpsbabel-minizip.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Patch taken from https://sources.debian.org/data/main/g/gpsbabel/1.5.3-2/debian/patches/use_minizip.
-
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -120,7 +120,7 @@ LIBOBJS = queue.o route.o waypt.o filter
- 	  src/core/usasciicodec.o\
- 	  src/core/ziparchive.o \
- 	  $(GARMIN) $(JEEPS) $(SHAPE) @ZLIB@ $(FMTS) $(FILTERS)
--OBJS = main.o globals.o $(LIBOBJS) @FILEINFO@
-+OBJS = main.o globals.o $(MINIZIP) $(LIBOBJS) @FILEINFO@
- 
- DEPFILES = $(OBJS:.o=.d)
- 
\ No newline at end of file
diff --git a/gnu/packages/patches/gpsbabel-qstring.patch b/gnu/packages/patches/gpsbabel-qstring.patch
deleted file mode 100644
index 8ba1a7213b..0000000000
--- a/gnu/packages/patches/gpsbabel-qstring.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-Extracted from following patch of gpsbabel:
-https://github.com/gpsbabel/gpsbabel/commit/604178aa8ad4d3c3ad218df24c1e9a6a1f683bb3
-
-From 604178aa8ad4d3c3ad218df24c1e9a6a1f683bb3 Mon Sep 17 00:00:00 2001
-From: Harel Mazor <harel.mazor@gmail.com>
-Date: Tue, 24 Jan 2017 00:35:04 +0200
-Subject: [PATCH] Added geojson read capablity, moved magic strings to
- constants, fixed windows compilation issues.
-
---- a/tef_xml.cc
-+++ b/tef_xml.cc
-@@ -72,11 +72,11 @@ tef_start(xg_string args, const QXmlStreamAttributes* attrv)
-   bool valid = false;
- 
-   foreach(QXmlStreamAttribute attr, *attrv) {
--    if (attr.name().compare("Comment", Qt::CaseInsensitive) == 0) {
--      if (attr.value().compare("TourExchangeFormat", Qt::CaseInsensitive) == 0) {
-+    if (attr.name().compare(QString("Comment"), Qt::CaseInsensitive) == 0) {
-+      if (attr.value().compare(QString("TourExchangeFormat"), Qt::CaseInsensitive) == 0) {
-         valid = true;
-       }
--    } else if (attr.name().compare("Version", Qt::CaseInsensitive) == 0) {
-+    } else if (attr.name().compare(QString("Version"), Qt::CaseInsensitive) == 0) {
-       version = attr.value().toString().toDouble();
-     }
-   }
-@@ -95,9 +95,9 @@ tef_header(xg_string args, const QXmlStreamAttributes* attrv)
- {
-   route = route_head_alloc();
-   foreach(QXmlStreamAttribute attr, *attrv) {
--    if (attr.name().compare("Name", Qt::CaseInsensitive) == 0) {
-+    if (attr.name().compare(QString("Name"), Qt::CaseInsensitive) == 0) {
-       route->rte_name = attr.value().toString().trimmed();
--    } else if (attr.name().compare("Software", Qt::CaseInsensitive) == 0) {
-+    } else if (attr.name().compare(QString("Software"), Qt::CaseInsensitive) == 0) {
-       route->rte_desc = attr.value().toString().trimmed();
-     }
-   }
-@@ -248,20 +248,20 @@ tef_item_start(xg_string args, const QXmlStreamAttributes* attrv)
-     QString attrstr = attr.value().toString();
-     QByteArray attrtext = attrstr.toUtf8();
- 
--    if (attr.name().compare("SegDescription", Qt::CaseInsensitive) == 0) {
-+    if (attr.name().compare(QString("SegDescription"), Qt::CaseInsensitive) == 0) {
-       wpt_tmp->shortname = attrstr.trimmed();
--    } else if (attr.name().compare("PointDescription", Qt::CaseInsensitive) == 0) {
-+    } else if (attr.name().compare(QString("PointDescription"), Qt::CaseInsensitive) == 0) {
-       wpt_tmp->description = attrstr.trimmed();
--    } else if (attr.name().compare("ViaStation", Qt::CaseInsensitive) == 0 &&
--               attr.value().compare("true", Qt::CaseInsensitive) == 0) {
-+    } else if (attr.name().compare(QString("ViaStation"), Qt::CaseInsensitive) == 0 &&
-+               attr.value().compare(QString("true"), Qt::CaseInsensitive) == 0) {
-       wpt_tmp->wpt_flags.fmt_use = 1;  /* only a flag */
- 
-       /* new in TEF V2 */
--    } else if (attr.name().compare("Instruction", Qt::CaseInsensitive) == 0) {
-+    } else if (attr.name().compare(QString("Instruction"), Qt::CaseInsensitive) == 0) {
-       wpt_tmp->description = attrstr.trimmed();
--    } else if (attr.name().compare("Altitude", Qt::CaseInsensitive) == 0) {
-+    } else if (attr.name().compare(QString("Altitude"), Qt::CaseInsensitive) == 0) {
-       wpt_tmp->altitude = attrstr.toDouble();
--    } else if (attr.name().compare("TimeStamp", Qt::CaseInsensitive) == 0) {
-+    } else if (attr.name().compare(QString("TimeStamp"), Qt::CaseInsensitive) == 0) {
-       /* nothing for the moment */
-     }
-   }
--- 
-2.16.1
-
diff --git a/gnu/packages/patches/hplip-fix-bug-1898438.patch b/gnu/packages/patches/hplip-fix-bug-1898438.patch
deleted file mode 100644
index 7c095f9b2a..0000000000
--- a/gnu/packages/patches/hplip-fix-bug-1898438.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-From: Tobias Geerinckx-Rice <me@tobias.gr>
-Date: Sun, 04 Oct 2020 13:28:49 +0200
-Subject: [PATCH] gnu: hplip: Fix non-network builds (bug #1898438)
-
-Reported as <https://bugs.launchpad.net/hplip/+bug/1898438>.
-
-diff -Naur a/scan/sane/hpaio.c b/scan/sane/hpaio.c
---- a/scan/sane/hpaio.c	1970-01-01 01:00:01.000000000 +0100
-+++ b/scan/sane/hpaio.c	2020-10-04 13:26:34.665244052 +0200
-@@ -36,7 +36,9 @@
- #include <string.h>
- #include <cups/cups.h>
- #include "hpmud.h"
-+#ifdef HAVE_LIBNETSNMP
- #include "avahiDiscovery.h"
-+#endif
- #include "hp_ipp.h"
- #include "soap.h"
- #include "soapht.h"
diff --git a/gnu/packages/patches/icecat-makeicecat.patch b/gnu/packages/patches/icecat-makeicecat.patch
index 9a6e40df4b..3f16880260 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 51f54ff608aa09de07b304307581ae89112781597322b8999b3099cfabf48290 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
+-echo -n 0d07b74cb66b94018e3d7f11531f95c76a955e0016a3c401241d0d85062ae7ce 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 51f54ff608aa09de07b304307581ae89112781597322b8999b3099cfabf48290 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
++# echo -n 0d07b74cb66b94018e3d7f11531f95c76a955e0016a3c401241d0d85062ae7ce 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/libexpected-nofetch.patch b/gnu/packages/patches/libexpected-nofetch.patch
new file mode 100644
index 0000000000..e1d104f6f4
--- /dev/null
+++ b/gnu/packages/patches/libexpected-nofetch.patch
@@ -0,0 +1,27 @@
+Description: Disable FetchContent module
+ No online operations are permitted during build package.
+Author: Nicholas Guriev <guriev-ns@ya.ru>
+Last-Update: Wed, 22 Jan 2020 21:51:33 +0300
+
+Modified by Brett Gilio <brettg@gnu.org> on Dec 5, 2020
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -4,16 +4,7 @@ project(tl-expected VERSION 1.0.0 LANGUAGES CXX)
+ 
+ option(EXPECTED_ENABLE_TESTS "Enable tests." ON)
+ 
+-include(FetchContent)
+-FetchContent_Declare(

+-  tl_cmake

+-  GIT_REPOSITORY https://github.com/TartanLlama/tl-cmake.git

+-)
+-FetchContent_GetProperties(tl_cmake)

+-if(NOT tl_cmake_POPULATED)

+-  FetchContent_Populate(tl_cmake)

+-  set(CMAKE_MODULE_PATH ${tl_cmake_SOURCE_DIR} ${CMAKE_MODULE_PATH})

+-endif()
++set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/tl-cmake ${CMAKE_MODULE_PATH})
+ include(add-tl)
+ 
+ tl_add_library(expected SOURCES 
diff --git a/gnu/packages/patches/libffi-float128-powerpc64le.patch b/gnu/packages/patches/libffi-float128-powerpc64le.patch
new file mode 100644
index 0000000000..4fd32b0102
--- /dev/null
+++ b/gnu/packages/patches/libffi-float128-powerpc64le.patch
@@ -0,0 +1,58 @@
+From de93adfb6f48100946bba2c3abad2a77a0cfde0b Mon Sep 17 00:00:00 2001
+From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+Date: Sun, 24 Nov 2019 09:52:01 +0100
+Subject: [PATCH] ffi_powerpc.h: fix build failure with powerpc7
+
+This is a patch pulled down from the following:
+https://github.com/buildroot/buildroot/blob/78926f610b1411b03464152472fd430012deb9ac/package/libffi/0004-ffi_powerpc.h-fix-build-failure-with-powerpc7.patch
+
+This issue is being hit on OpenBMC code when pulling the latest
+libffi tag and building on a P8 ppc64le machine. I verified this
+patch fixes the issue we are seeing.
+
+Below is the original commit message:
+
+Sicne commit 73dd43afc8a447ba98ea02e9aad4c6898dc77fb0, build on powerpc7
+fails on:
+
+In file included from ../src/powerpc/ffi.c:33:0:
+../src/powerpc/ffi_powerpc.h:61:9: error: '_Float128' is not supported on this target
+ typedef _Float128 float128;
+         ^~~~~~~~~
+
+Fix this build failure by checking for __HAVE_FLOAT128 before using
+_Float128, as _Float128 is enabled only on specific conditions, see
+output/host/powerpc64-buildroot-linux-gnu/sysroot/usr/include/bits/floatn.h:
+
+ /* Defined to 1 if the current compiler invocation provides a
+    floating-point type with the IEEE 754 binary128 format, and this glibc
+    includes corresponding *f128 interfaces for it.  */
+ #if defined _ARCH_PWR8 && defined __LITTLE_ENDIAN__ && (_CALL_ELF == 2) \
+     && defined __FLOAT128__ && !defined __NO_LONG_DOUBLE_MATH
+ # define __HAVE_FLOAT128 1
+ #else
+ # define __HAVE_FLOAT128 0
+ #endif
+
+Fixes:
+ - http://autobuild.buildroot.org/results/5c9dd8fb3b6a128882b6250f197c80232d8a3b53
+
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
+---
+ src/powerpc/ffi_powerpc.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/powerpc/ffi_powerpc.h b/src/powerpc/ffi_powerpc.h
+index 8e2f2f0e..960a5c42 100644
+--- a/src/powerpc/ffi_powerpc.h
++++ b/src/powerpc/ffi_powerpc.h
+@@ -57,7 +57,7 @@ typedef union
+   double d;
+ } ffi_dblfl;
+ 
+-#if defined(__FLOAT128_TYPE__)
++#if defined(__FLOAT128_TYPE__) && defined(__HAVE_FLOAT128)
+ typedef _Float128 float128;
+ #elif defined(__FLOAT128__)
+ typedef __float128 float128;
diff --git a/gnu/packages/patches/libssh2-CVE-2019-17498.patch b/gnu/packages/patches/libssh2-CVE-2019-17498.patch
new file mode 100644
index 0000000000..6f69e562e2
--- /dev/null
+++ b/gnu/packages/patches/libssh2-CVE-2019-17498.patch
@@ -0,0 +1,126 @@
+https://github.com/libssh2/libssh2/commit/dedcbd106f8e52d5586b0205bc7677e4c9868f9c.patch
+
+From dedcbd106f8e52d5586b0205bc7677e4c9868f9c Mon Sep 17 00:00:00 2001
+From: Will Cosgrove <will@panic.com>
+Date: Fri, 30 Aug 2019 09:57:38 -0700
+Subject: [PATCH] packet.c: improve message parsing (#402)
+
+* packet.c: improve parsing of packets
+
+file: packet.c
+
+notes:
+Use _libssh2_get_string API in SSH_MSG_DEBUG/SSH_MSG_DISCONNECT. Additional uint32 bounds check in SSH_MSG_GLOBAL_REQUEST.
+---
+ src/packet.c | 68 ++++++++++++++++++++++------------------------------
+ 1 file changed, 29 insertions(+), 39 deletions(-)
+
+diff --git a/src/packet.c b/src/packet.c
+index 38ab62944..2e01bfc5d 100644
+--- a/src/packet.c
++++ b/src/packet.c
+@@ -419,8 +419,8 @@ _libssh2_packet_add(LIBSSH2_SESSION * session, unsigned char *data,
+                     size_t datalen, int macstate)
+ {
+     int rc = 0;
+-    char *message = NULL;
+-    char *language = NULL;
++    unsigned char *message = NULL;
++    unsigned char *language = NULL;
+     size_t message_len = 0;
+     size_t language_len = 0;
+     LIBSSH2_CHANNEL *channelp = NULL;
+@@ -472,33 +472,23 @@ _libssh2_packet_add(LIBSSH2_SESSION * session, unsigned char *data,
+ 
+         case SSH_MSG_DISCONNECT:
+             if(datalen >= 5) {
+-                size_t reason = _libssh2_ntohu32(data + 1);
++                uint32_t reason = 0;
++                struct string_buf buf;
++                buf.data = (unsigned char *)data;
++                buf.dataptr = buf.data;
++                buf.len = datalen;
++                buf.dataptr++; /* advance past type */
+ 
+-                if(datalen >= 9) {
+-                    message_len = _libssh2_ntohu32(data + 5);
++                _libssh2_get_u32(&buf, &reason);
++                _libssh2_get_string(&buf, &message, &message_len);
++                _libssh2_get_string(&buf, &language, &language_len);
+ 
+-                    if(message_len < datalen-13) {
+-                        /* 9 = packet_type(1) + reason(4) + message_len(4) */
+-                        message = (char *) data + 9;
+-
+-                        language_len =
+-                            _libssh2_ntohu32(data + 9 + message_len);
+-                        language = (char *) data + 9 + message_len + 4;
+-
+-                        if(language_len > (datalen-13-message_len)) {
+-                            /* bad input, clear info */
+-                            language = message = NULL;
+-                            language_len = message_len = 0;
+-                        }
+-                    }
+-                    else
+-                        /* bad size, clear it */
+-                        message_len = 0;
+-                }
+                 if(session->ssh_msg_disconnect) {
+-                    LIBSSH2_DISCONNECT(session, reason, message,
+-                                       message_len, language, language_len);
++                    LIBSSH2_DISCONNECT(session, reason, (const char *)message,
++                                       message_len, (const char *)language,
++                                       language_len);
+                 }
++
+                 _libssh2_debug(session, LIBSSH2_TRACE_TRANS,
+                                "Disconnect(%d): %s(%s)", reason,
+                                message, language);
+@@ -539,24 +529,24 @@ _libssh2_packet_add(LIBSSH2_SESSION * session, unsigned char *data,
+                 int always_display = data[1];
+ 
+                 if(datalen >= 6) {
+-                    message_len = _libssh2_ntohu32(data + 2);
+-
+-                    if(message_len <= (datalen - 10)) {
+-                        /* 6 = packet_type(1) + display(1) + message_len(4) */
+-                        message = (char *) data + 6;
+-                        language_len = _libssh2_ntohu32(data + 6 +
+-                                                        message_len);
+-
+-                        if(language_len <= (datalen - 10 - message_len))
+-                            language = (char *) data + 10 + message_len;
+-                    }
++                    struct string_buf buf;
++                    buf.data = (unsigned char *)data;
++                    buf.dataptr = buf.data;
++                    buf.len = datalen;
++                    buf.dataptr += 2; /* advance past type & always display */
++
++                    _libssh2_get_string(&buf, &message, &message_len);
++                    _libssh2_get_string(&buf, &language, &language_len);
+                 }
+ 
+                 if(session->ssh_msg_debug) {
+-                    LIBSSH2_DEBUG(session, always_display, message,
+-                                  message_len, language, language_len);
++                    LIBSSH2_DEBUG(session, always_display,
++                                  (const char *)message,
++                                  message_len, (const char *)language,
++                                  language_len);
+                 }
+             }
++
+             /*
+              * _libssh2_debug will actually truncate this for us so
+              * that it's not an inordinate about of data
+@@ -579,7 +569,7 @@ _libssh2_packet_add(LIBSSH2_SESSION * session, unsigned char *data,
+                 uint32_t len = 0;
+                 unsigned char want_reply = 0;
+                 len = _libssh2_ntohu32(data + 1);
+-                if(datalen >= (6 + len)) {
++                if((len <= (UINT_MAX - 6)) && (datalen >= (6 + len))) {
+                     want_reply = data[5 + len];
+                     _libssh2_debug(session,
+                                    LIBSSH2_TRACE_CONN,
diff --git a/gnu/packages/patches/minimap2-aarch64-support.patch b/gnu/packages/patches/minimap2-aarch64-support.patch
new file mode 100644
index 0000000000..95db8579d6
--- /dev/null
+++ b/gnu/packages/patches/minimap2-aarch64-support.patch
@@ -0,0 +1,52 @@
+This patch should be removed with the next release. There is WIP upstream
+support for proper support of more architectures, including aarch64 and powerpc64le.
+
+diff --git a/Makefile b/Makefile
+index ed341f6..94dbd85 100644
+--- a/Makefile
++++ b/Makefile
+@@ -6,20 +6,18 @@ PROG=		minimap2
+ PROG_EXTRA=	sdust minimap2-lite
+ LIBS=		-lm -lz -lpthread
+ 
+-ifeq ($(arm_neon),) # if arm_neon is not defined
+-ifeq ($(sse2only),) # if sse2only is not defined
+-	OBJS+=ksw2_extz2_sse41.o ksw2_extd2_sse41.o ksw2_exts2_sse41.o ksw2_extz2_sse2.o ksw2_extd2_sse2.o ksw2_exts2_sse2.o ksw2_dispatch.o
+-else                # if sse2only is defined
+-	OBJS+=ksw2_extz2_sse.o ksw2_extd2_sse.o ksw2_exts2_sse.o
+-endif
+-else				# if arm_neon is defined
++ifneq ($(arm_neon),) 		# if arm_neon is defined
+ 	OBJS+=ksw2_extz2_neon.o ksw2_extd2_neon.o ksw2_exts2_neon.o
+-    INCLUDES+=-Isse2neon
+-ifeq ($(aarch64),)	#if aarch64 is not defined
+ 	CFLAGS+=-D_FILE_OFFSET_BITS=64 -mfpu=neon -fsigned-char
+-else				#if aarch64 is defined
++	INCLUDES+=-Isse2neon
++else ifneq ($(aarch64),)	#if aarch64 is defined
++	OBJS+=ksw2_extz2_neon.o ksw2_extd2_neon.o ksw2_exts2_neon.o
+ 	CFLAGS+=-D_FILE_OFFSET_BITS=64 -fsigned-char
+-endif
++	INCLUDES+=-Isse2neon
++else ifneq ($(sse2only),) 	# if sse2only is defined
++	OBJS+=ksw2_extz2_sse.o ksw2_extd2_sse.o ksw2_exts2_sse.o
++else                		# none of the above
++	OBJS+=ksw2_extz2_sse41.o ksw2_extd2_sse41.o ksw2_exts2_sse41.o ksw2_extz2_sse2.o ksw2_extd2_sse2.o ksw2_exts2_sse2.o ksw2_dispatch.o
+ endif
+ 
+ .PHONY:all extra clean depend
+@@ -46,9 +44,12 @@ sdust:sdust.c kalloc.o kalloc.h kdq.h kvec.h kseq.h ketopt.h sdust.h
+ 
+ # SSE-specific targets on x86/x86_64
+ 
+-ifeq ($(arm_neon),)   # if arm_neon is defined, compile this target with the default setting (i.e. no -msse2)
++ifneq ($(arm_neon),)   # if arm_neon is defined, compile this target with the default setting (i.e. no -msse2)
++ksw2_ll_sse.o:ksw2_ll_sse.c ksw2.h kalloc.h
++else ifneq ($(aarch64),)
+ ksw2_ll_sse.o:ksw2_ll_sse.c ksw2.h kalloc.h
+-		$(CC) -c $(CFLAGS) -msse2 $(CPPFLAGS) $(INCLUDES) $< -o $@
++else
++	$(CC) -c $(CFLAGS) -msse2 $(CPPFLAGS) $(INCLUDES) $< -o $@
+ endif
+ 
+ ksw2_extz2_sse41.o:ksw2_extz2_sse.c ksw2.h kalloc.h
diff --git a/gnu/packages/patches/pam-mount-luks2-support.patch b/gnu/packages/patches/pam-mount-luks2-support.patch
deleted file mode 100644
index b59daf5ce1..0000000000
--- a/gnu/packages/patches/pam-mount-luks2-support.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From d4434c05e7c0cf05d87089404cfa2deedc60811a Mon Sep 17 00:00:00 2001
-From: Ingo Franzki <ifranzki@linux.ibm.com>
-Date: Mon, 29 Oct 2018 16:47:40 +0100
-Subject: [PATCH] crypto: Add support for LUKS2
-
-Cryptsetup version 2.0 added support for LUKS2.
-This patch adds support for mounting LUKS2 volumes with
-pam_mount.
-
-Signed-off-by: Ingo Franzki <ifranzki@linux.ibm.com>
----
- src/crypto-dmc.c | 10 ++++++++--
- 1 file changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/src/crypto-dmc.c b/src/crypto-dmc.c
-index d0ab6ca..abd0358 100644
---- a/src/crypto-dmc.c
-+++ b/src/crypto-dmc.c
-@@ -21,6 +21,12 @@
- #include "libcryptmount.h"
- #include "pam_mount.h"
- 
-+#ifndef CRYPT_LUKS
-+	#define CRYPT_LUKS	NULL /* Passing NULL to crypt_load will
-+					default to LUKS(1) on older
-+					libcryptsetup versions. */
-+#endif
-+
- /**
-  * dmc_is_luks - check if @path points to a LUKS volume (cf. normal dm-crypt)
-  * @path:	path to the crypto container
-@@ -48,7 +54,7 @@ EXPORT_SYMBOL int ehd_is_luks(const char *path, bool blkdev)
- 
- 	ret = crypt_init(&cd, device);
- 	if (ret == 0) {
--		ret = crypt_load(cd, CRYPT_LUKS1, NULL);
-+		ret = crypt_load(cd, CRYPT_LUKS, NULL);
- 		if (ret == -EINVAL)
- 			ret = false;
- 		else if (ret == 0)
-@@ -106,7 +112,7 @@ static bool dmc_run(const struct ehd_mount_request *req,
- #endif
- 	}
- 
--	ret = crypt_load(cd, CRYPT_LUKS1, NULL);
-+	ret = crypt_load(cd, CRYPT_LUKS, NULL);
- 	if (ret == 0) {
- 		ret = crypt_activate_by_passphrase(cd, mt->crypto_name,
- 		      CRYPT_ANY_SLOT, req->key_data, req->key_size, flags);
--- 
-2.21.0
diff --git a/gnu/packages/patches/pciutils-hurd-fix.patch b/gnu/packages/patches/pciutils-hurd-fix.patch
new file mode 100644
index 0000000000..f1979d4352
--- /dev/null
+++ b/gnu/packages/patches/pciutils-hurd-fix.patch
@@ -0,0 +1,23 @@
+Fix a build error on GNU/Hurd for pciutils 3.7.0.
+
+commit 053cf6c8b2acafadf828912828336d90fe9b8696
+Author: Martin Mares <mj@ucw.cz>
+Date:   Sun May 31 11:53:28 2020 +0200
+
+    HURD backend should compile again
+    
+    Fixes a bug introduced by commit 82c06b47dea5a38075ce9d56f743360bc47b4c78.
+
+diff --git a/lib/hurd.c b/lib/hurd.c
+index 7b3b2ae..ccd92f6 100644
+--- a/lib/hurd.c
++++ b/lib/hurd.c
+@@ -307,7 +307,6 @@ hurd_fill_regions(struct pci_dev *d)
+       d->base_addr[i] |= regions[i].is_64 << 2;
+       d->base_addr[i] |= regions[i].is_prefetchable << 3;
+ 
+-      if (flags & PCI_FILL_SIZES)
+-	d->size[i] = regions[i].size;
++      d->size[i] = regions[i].size;
+     }
+ }
diff --git a/gnu/packages/patches/pidgin-libnm.patch b/gnu/packages/patches/pidgin-libnm.patch
deleted file mode 100644
index d34af749af..0000000000
--- a/gnu/packages/patches/pidgin-libnm.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From: Tobias Geerinckx-Rice <me@tobias.gr>
-Date: Sun, 24 May 2020 16:11:01 +0200
-Subject: [PATCH] gnu: pidgin: Find libnm.
-
-Copied verbatim from[0].
-
-[0]: https://git.archlinux.org/svntogit/packages.git/plain/trunk/pidgin-nm-1.0.patch?h=packages/pidgin
-
-diff --git a/configure.ac b/configure.ac
-index 04836fa..0a2d451 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1423,18 +1423,24 @@ fi
- dnl Check for NetworkManager.h; if we don't have it, oh well
- if test "x$enable_dbus" = "xyes" ; then
- 	if test "x$enable_nm" = "xyes" ; then
--		PKG_CHECK_MODULES(NETWORKMANAGER, [NetworkManager >= 0.5.0], [
-+		PKG_CHECK_MODULES(NETWORKMANAGER, [libnm], [
- 			AC_SUBST(NETWORKMANAGER_CFLAGS)
- 			AC_SUBST(NETWORKMANAGER_LIBS)
- 			AC_DEFINE(HAVE_NETWORKMANAGER, 1, [Define if we have NetworkManager.])
- 		], [
--			enable_nm=no
--			if test "x$force_deps" = "xyes" ; then
--				AC_MSG_ERROR([
-+			PKG_CHECK_MODULES(NETWORKMANAGER, [NetworkManager >= 0.5.0], [
-+				AC_SUBST(NETWORKMANAGER_CFLAGS)
-+				AC_SUBST(NETWORKMANAGER_LIBS)
-+				AC_DEFINE(HAVE_NETWORKMANAGER, 1, [Define if we have NetworkManager.])
-+			], [
-+				enable_nm=no
-+				if test "x$force_deps" = "xyes" ; then
-+					AC_MSG_ERROR([
- NetworkManager development headers not found.
- Use --disable-nm if you do not need NetworkManager support.
- ])
--			fi])
-+				fi])
-+		])
- 	fi
- else
- 	enable_nm=no
-diff --git a/libpurple/network.c b/libpurple/network.c
-index c43e3c7..b17e439 100644
---- a/libpurple/network.c
-+++ b/libpurple/network.c
-@@ -939,8 +939,13 @@ nm_update_state(NMState state)
- #if NM_CHECK_VERSION(0,8,992)
- 		case NM_STATE_DISCONNECTING:
- #endif
-+#if NM_CHECK_VERSION(1,0,0)
-+			if (prev != NM_STATE_CONNECTED_GLOBAL && prev != NM_STATE_UNKNOWN)
-+				break;
-+#else
- 			if (prev != NM_STATE_CONNECTED && prev != NM_STATE_UNKNOWN)
- 				break;
-+#endif
- 			if (ui_ops != NULL && ui_ops->network_disconnected != NULL)
- 				ui_ops->network_disconnected();
- 			break;
diff --git a/gnu/packages/patches/pidgin-vv-gst.patch b/gnu/packages/patches/pidgin-vv-gst.patch
new file mode 100644
index 0000000000..e0553dd119
--- /dev/null
+++ b/gnu/packages/patches/pidgin-vv-gst.patch
@@ -0,0 +1,48 @@
+Name: Gary Kramlich
+Date: 2020-07-12
+Source: https://keep.imfreedom.org/pidgin/pidgin/rev/39ac50435cfb
+
+diff --git a/libpurple/mediamanager.c b/libpurple/mediamanager.c
+--- a/libpurple/mediamanager.c
++++ b/libpurple/mediamanager.c
+@@ -2231,6 +2231,7 @@
+ purple_media_manager_unregister_gst_device(PurpleMediaManager *manager,
+ 		GstDevice *device)
+ {
++#ifdef USE_VV
+ 	GList *i;
+ 	gchar *name;
+ 	gchar *device_class;
+@@ -2277,6 +2278,7 @@
+ 
+ 	g_free(name);
+ 	g_free(device_class);
++#endif /* USE_VV */
+ }
+ 
+ static gboolean
+@@ -2304,7 +2306,7 @@
+ static void
+ purple_media_manager_init_device_monitor(PurpleMediaManager *manager)
+ {
+-#if GST_CHECK_VERSION(1, 4, 0)
++#if GST_CHECK_VERSION(1, 4, 0) && defined(USE_VV)
+ 	GstBus *bus;
+ 	GList *i;
+ 
+@@ -2334,6 +2336,7 @@
+ 		PurpleMediaElementType type)
+ {
+ 	GList *result = NULL;
++#ifdef USE_VV
+ 	GList *i;
+ 
+ 	for (i = manager->priv->elements; i; i = i->next) {
+@@ -2347,6 +2350,7 @@
+ 			result = g_list_prepend(result, info);
+ 		}
+ 	}
++#endif /* USE_VV */
+ 
+ 	return result;
+ }
diff --git a/gnu/packages/patches/pulseview-qt515-compat.patch b/gnu/packages/patches/pulseview-qt515-compat.patch
new file mode 100644
index 0000000000..a7156b2018
--- /dev/null
+++ b/gnu/packages/patches/pulseview-qt515-compat.patch
@@ -0,0 +1,145 @@
+https://sigrok.org/gitweb/?p=pulseview.git;a=patch;h=ae726b70a7ada9a4be5808e00f0c951318479684
+
+From ae726b70a7ada9a4be5808e00f0c951318479684 Mon Sep 17 00:00:00 2001
+From: Valentin Ochs <a@0au.de>
+Date: Sat, 20 Jun 2020 16:01:27 +0200
+Subject: [PATCH] Replace obsolete/deprecated Qt methods
+
+---
+ pv/subwindows/decoder_selector/subwindow.cpp |  2 +-
+ pv/util.cpp                                  | 21 ++++++++++++++++++--
+ pv/util.hpp                                  | 10 ++++++++++
+ pv/views/trace/decodetrace.cpp               |  3 ++-
+ pv/views/trace/ruler.cpp                     |  2 +-
+ pv/widgets/timestampspinbox.cpp              |  2 +-
+ 6 files changed, 34 insertions(+), 6 deletions(-)
+
+diff --git a/pv/subwindows/decoder_selector/subwindow.cpp b/pv/subwindows/decoder_selector/subwindow.cpp
+index 94ed6f4b..2c65dcf2 100644
+--- a/pv/subwindows/decoder_selector/subwindow.cpp
++++ b/pv/subwindows/decoder_selector/subwindow.cpp
+@@ -185,7 +185,7 @@ QToolBar* SubWindow::create_toolbar(QWidget *parent) const
+ int SubWindow::minimum_width() const
+ {
+ 	QFontMetrics m(info_label_body_->font());
+-	const int label_width = m.width(QString(tr(initial_notice)));
++	const int label_width = util::text_width(m, tr(initial_notice));
+ 
+ 	return label_width + min_width_margin;
+ }
+diff --git a/pv/util.cpp b/pv/util.cpp
+index 897254e1..dfb8c72b 100644
+--- a/pv/util.cpp
++++ b/pv/util.cpp
+@@ -143,7 +143,7 @@ QString format_time_si(const Timestamp& v, SIPrefix prefix,
+ 	QString s;
+ 	QTextStream ts(&s);
+ 	if (sign && !v.is_zero())
+-		ts << forcesign;
++		ts.setNumberFlags(ts.numberFlags() | QTextStream::ForceSign);
+ 	ts << qSetRealNumberPrecision(precision) << (v * multiplier);
+ 	ts << ' ' << prefix << unit;
+ 
+@@ -169,7 +169,7 @@ QString format_value_si(double v, SIPrefix prefix, unsigned precision,
+ 	QString s;
+ 	QTextStream ts(&s);
+ 	if (sign && (v != 0))
+-		ts << forcesign;
++		ts.setNumberFlags(ts.numberFlags() | QTextStream::ForceSign);
+ 	ts.setRealNumberNotation(QTextStream::FixedNotation);
+ 	ts.setRealNumberPrecision(precision);
+ 	ts << (v * multiplier) << ' ' << prefix << unit;
+@@ -279,5 +279,22 @@ vector<string> split_string(string text, string separator)
+ 	return result;
+ }
+ 
++/**
++ * Return the width of a string in a given font.
++ *
++ * @param[in] metric metrics of the font
++ * @param[in] string the string whose width should be determined
++ *
++ * @return width of the string in pixels
++ */
++std::streamsize text_width(const QFontMetrics &metric, const QString &string)
++{
++#if QT_VERSION >= QT_VERSION_CHECK(5, 11, 0)
++	return metric.horizontalAdvance(string);
++#else
++	return metric.width(string);
++#endif
++}
++
+ } // namespace util
+ } // namespace pv
+diff --git a/pv/util.hpp b/pv/util.hpp
+index fab29a14..49ae04b2 100644
+--- a/pv/util.hpp
++++ b/pv/util.hpp
+@@ -30,6 +30,7 @@
+ 
+ #include <QMetaType>
+ #include <QString>
++#include <QFontMetrics>
+ 
+ using std::string;
+ using std::vector;
+@@ -143,6 +144,15 @@ QString format_time_minutes(const Timestamp& t, signed precision = 0,
+ 
+ vector<string> split_string(string text, string separator);
+ 
++/**
++ * Return the width of a string in a given font.
++ * @param[in] metric metrics of the font
++ * @param[in] string the string whose width should be determined
++ *
++ * @return width of the string in pixels
++ */
++std::streamsize text_width(const QFontMetrics &metric, const QString &string);
++
+ } // namespace util
+ } // namespace pv
+ 
+diff --git a/pv/views/trace/decodetrace.cpp b/pv/views/trace/decodetrace.cpp
+index 67c9b1c4..93c7c5a9 100644
+--- a/pv/views/trace/decodetrace.cpp
++++ b/pv/views/trace/decodetrace.cpp
+@@ -161,7 +161,8 @@ DecodeTrace::DecodeTrace(pv::Session &session,
+ 
+ 	// Determine shortest string we want to see displayed in full
+ 	QFontMetrics m(QApplication::font());
+-	min_useful_label_width_ = m.width("XX"); // e.g. two hex characters
++	// e.g. two hex characters
++	min_useful_label_width_ = util::text_width(m, "XX");
+ 
+ 	default_row_height_ = (ViewItemPaintParams::text_height() * 6) / 4;
+ 	annotation_height_ = (ViewItemPaintParams::text_height() * 5) / 4;
+diff --git a/pv/views/trace/ruler.cpp b/pv/views/trace/ruler.cpp
+index 555794fc..83ffed28 100644
+--- a/pv/views/trace/ruler.cpp
++++ b/pv/views/trace/ruler.cpp
+@@ -283,7 +283,7 @@ void Ruler::paintEvent(QPaintEvent*)
+ 		const int rightedge = width();
+ 		const int x_tick = tick.first;
+ 		if ((x_tick > leftedge) && (x_tick < rightedge)) {
+-			const int x_left_bound = QFontMetrics(font()).width(tick.second) / 2;
++			const int x_left_bound = util::text_width(QFontMetrics(font()), tick.second) / 2;
+ 			const int x_right_bound = rightedge - x_left_bound;
+ 			const int x_legend = min(max(x_tick, x_left_bound), x_right_bound);
+ 			p.drawText(x_legend, ValueMargin, 0, text_height,
+diff --git a/pv/widgets/timestampspinbox.cpp b/pv/widgets/timestampspinbox.cpp
+index fea8175e..01424a5b 100644
+--- a/pv/widgets/timestampspinbox.cpp
++++ b/pv/widgets/timestampspinbox.cpp
+@@ -76,7 +76,7 @@ QSize TimestampSpinBox::minimumSizeHint() const
+ {
+ 	const QFontMetrics fm(fontMetrics());
+ 	const int l = round(value_).str().size() + precision_ + 10;
+-	const int w = fm.width(QString(l, '0'));
++	const int w = util::text_width(fm, QString(l, '0'));
+ 	const int h = lineEdit()->minimumSizeHint().height();
+ 	return QSize(w, h);
+ }
+-- 
+2.24.0.rc2
+
diff --git a/gnu/packages/patches/purescript-relax-dependencies.patch b/gnu/packages/patches/purescript-relax-dependencies.patch
index 11c4a3c3fc..6ab4716fc4 100644
--- a/gnu/packages/patches/purescript-relax-dependencies.patch
+++ b/gnu/packages/patches/purescript-relax-dependencies.patch
@@ -1,41 +1,39 @@
 Allow the purescript dependencies to better match the available packages in
 Guix.
 
-diff --git purescript-0.13.6/purescript.cabal purescript-0.13.6/purescript.cabal.orig
-index 7e38070..0724a0b 100644
---- purescript-0.13.6/purescript.cabal
-+++ purescript-0.13.6/purescript.cabal.orig
-@@ -1167,1 +1167,1 @@ library
+--- purescript-0.13.8/purescript.cabal
++++ purescript-0.13.8/purescript.cabal.orig
+@@ -1091 +1091 @@ library
 -        Glob ==0.9.*,
 +        Glob ==0.10.*,
-@@ -1171,1 +1171,1 @@ library
+@@ -1095 +1095 @@ library
 -        ansi-terminal >=0.7.1 && <0.9,
 +        ansi-terminal ==0.9.*,
-@@ -1180,1 +1180,1 @@ library
+@@ -1105 +1105 @@ library
 -        clock <0.8,
 +        clock ==0.8.*,
-@@ -1246,1 +1246,1 @@ executable purs
+@@ -1173 +1173 @@ executable purs
 -        Glob ==0.9.*,
 +        Glob ==0.10.*,
-@@ -1250,1 +1250,1 @@ executable purs
+@@ -1177 +1177 @@ executable purs
 -        ansi-terminal >=0.7.1 && <0.9,
 +        ansi-terminal ==0.9.*,
-@@ -1260,1 +1260,1 @@ executable purs
+@@ -1188 +1188 @@ executable purs
 -        clock <0.8,
 +        clock ==0.8.*,
-@@ -1281,1 +1281,1 @@ executable purs
+@@ -1209 +1209 @@ executable purs
 -        network >=3.0.1.1 && <3.1,
 +        network >=2.8 && <3.1,
-@@ -1358,1 +1358,1 @@ test-suite tests
+@@ -1288 +1288 @@ test-suite tests
 -        Glob ==0.9.*,
 +        Glob ==0.10.*,
-@@ -1363,1 +1363,1 @@ test-suite tests
+@@ -1293 +1293 @@ test-suite tests
 -        ansi-terminal >=0.7.1 && <0.9,
 +        ansi-terminal ==0.9.*,
-@@ -1372,1 +1372,1 @@ test-suite tests
+@@ -1303 +1303 @@ test-suite tests
 -        clock <0.8,
 +        clock ==0.8.*,
-@@ -1384,2 +1384,2 @@ test-suite tests
+@@ -1315,2 +1315,2 @@ test-suite tests
 -        hspec <2.7,
 -        hspec-discover <2.7,
 +        hspec ==2.7.*,
diff --git a/gnu/packages/patches/python-3.9-fix-tests.patch b/gnu/packages/patches/python-3.9-fix-tests.patch
new file mode 100644
index 0000000000..dc6b8c4cc8
--- /dev/null
+++ b/gnu/packages/patches/python-3.9-fix-tests.patch
@@ -0,0 +1,370 @@
+See the discussion about the issues fixed here at:
+http://bugs.python.org/issue20868 .
+
+diff --git a/Lib/ctypes/test/test_callbacks.py b/Lib/ctypes/test/test_callbacks.py
+--- a/Lib/ctypes/test/test_callbacks.py
++++ b/Lib/ctypes/test/test_callbacks.py
+@@ -3,6 +3,7 @@ import unittest
+ from ctypes import *
+ from ctypes.test import need_symbol
+ import _ctypes_test
++import platform
+
+ class Callbacks(unittest.TestCase):
+     functype = CFUNCTYPE
+@@ -176,6 +177,8 @@ class SampleCallbacksTestCase(unittest.TestCase):
+
+         self.assertLess(diff, 0.01, "%s not less than 0.01" % diff)
+
++    @unittest.skipIf(platform.machine() in ['mips64'],
++                     "This test fails on this platform")
+     def test_issue_8959_a(self):
+         from ctypes.util import find_library
+         libc_path = find_library("c")
+diff --git a/Lib/ctypes/test/test_libc.py b/Lib/ctypes/test/test_libc.py
+--- a/Lib/ctypes/test/test_libc.py
++++ b/Lib/ctypes/test/test_libc.py
+@@ -2,6 +2,7 @@ import unittest
+
+ from ctypes import *
+ import _ctypes_test
++import platform
+
+ lib = CDLL(_ctypes_test.__file__)
+
+@@ -17,6 +18,8 @@ class LibTest(unittest.TestCase):
+         import math
+         self.assertEqual(lib.my_sqrt(2.0), math.sqrt(2.0))
+
++    @unittest.skipIf(platform.machine() in ['mips64'],
++                     "This test fails on this platform")
+     def test_qsort(self):
+         comparefunc = CFUNCTYPE(c_int, POINTER(c_char), POINTER(c_char))
+         lib.my_qsort.argtypes = c_void_p, c_size_t, c_size_t, comparefunc
+diff --git a/Lib/distutils/tests/test_archive_util.py b/Lib/distutils/tests/test_archive_util.py
+--- a/Lib/distutils/tests/test_archive_util.py
++++ b/Lib/distutils/tests/test_archive_util.py
+@@ -333,6 +333,7 @@ class ArchiveUtilTestCase(support.TempdirManager,
+         self.assertEqual(os.path.basename(res), 'archive.tar.xz')
+         self.assertEqual(self._tarinfo(res), self._created_files)
+
++    @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix")
+     def test_make_archive_owner_group(self):
+         # testing make_archive with owner and group, with various combinations
+         # this works even if there's not gid/uid support
+@@ -362,6 +363,7 @@ class ArchiveUtilTestCase(support.TempdirManager,
+
+     @unittest.skipUnless(ZLIB_SUPPORT, "Requires zlib")
+     @unittest.skipUnless(UID_GID_SUPPORT, "Requires grp and pwd support")
++    @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix")
+     def test_tarfile_root_owner(self):
+         tmpdir =  self._create_files()
+         base_name = os.path.join(self.mkdtemp(), 'archive')
+diff --git a/Lib/distutils/tests/test_sdist.py b/Lib/distutils/tests/test_sdist.py
+--- a/Lib/distutils/tests/test_sdist.py
++++ b/Lib/distutils/tests/test_sdist.py
+@@ -443,6 +443,7 @@ class SDistTestCase(BasePyPIRCCommandTestCase):
+                      "The tar command is not found")
+     @unittest.skipIf(find_executable('gzip') is None,
+                      "The gzip command is not found")
++    @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix")
+     def test_make_distribution_owner_group(self):
+         # now building a sdist
+         dist, cmd = self.get_cmd()
+diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py
+--- a/Lib/test/_test_multiprocessing.py
++++ b/Lib/test/_test_multiprocessing.py
+@@ -1473,6 +1473,7 @@ class _TestCondition(BaseTestCase):
+         if pid is not None:
+             os.kill(pid, signal.SIGINT)
+
++    @unittest.skipIf(True, "This fails for unknown reasons on Guix")
+     def test_wait_result(self):
+         if isinstance(self, ProcessesMixin) and sys.platform != 'win32':
+             pid = os.getpid()
+diff --git a/Lib/test/test_asyncio/test_base_events.py b/Lib/test/test_asyncio/test_base_events.py
+--- a/Lib/test/test_asyncio/test_base_events.py
++++ b/Lib/test/test_asyncio/test_base_events.py
+@@ -1323,6 +1323,8 @@ class BaseEventLoopWithSelectorTests(test_utils.TestCase):
+         self._test_create_connection_ip_addr(m_socket, False)
+
+     @patch_socket
++    @unittest.skipUnless(support.is_resource_enabled('network'),
++                         'network is not enabled')
+     def test_create_connection_service_name(self, m_socket):
+         m_socket.getaddrinfo = socket.getaddrinfo
+         sock = m_socket.socket.return_value
+diff --git a/Lib/test/test_generators.py b/Lib/test/test_generators.py
+--- a/Lib/test/test_generators.py
++++ b/Lib/test/test_generators.py
+@@ -34,6 +34,7 @@ class SignalAndYieldFromTest(unittest.TestCase):
+         else:
+             return "FAILED"
+
++    @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment')
+     def test_raise_and_yield_from(self):
+         gen = self.generator1()
+         gen.send(None)
+diff --git a/Lib/test/test_pathlib.py b/Lib/test/test_pathlib.py
+--- a/Lib/test/test_pathlib.py
++++ b/Lib/test/test_pathlib.py
+@@ -2134,8 +2134,7 @@ class PosixPathTest(_BasePathTest, unittest.TestCase):
+         self.assertEqual(given, expect)
+         self.assertEqual(set(p.rglob("FILEd*")), set())
+
+-    @unittest.skipUnless(hasattr(pwd, 'getpwall'),
+-                         'pwd module does not expose getpwall()')
++    @unittest.skipIf(True, "Guix builder home is '/' which causes trouble for these tests")
+     def test_expanduser(self):
+         P = self.cls
+         support.import_module('pwd')
+diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py
+--- a/Lib/test/test_pdb.py
++++ b/Lib/test/test_pdb.py
+@@ -1150,11 +1150,11 @@ def test_pdb_issue_20766():
+     > <doctest test.test_pdb.test_pdb_issue_20766[0]>(6)test_function()
+     -> print('pdb %d: %s' % (i, sess._previous_sigint_handler))
+     (Pdb) continue
+-    pdb 1: <built-in function default_int_handler>
++    pdb 1: Handlers.SIG_IGN
+     > <doctest test.test_pdb.test_pdb_issue_20766[0]>(5)test_function()
+     -> sess.set_trace(sys._getframe())
+     (Pdb) continue
+-    pdb 2: <built-in function default_int_handler>
++    pdb 2: Handlers.SIG_IGN
+     """
+
+
+diff --git a/Lib/test/test_regrtest.py b/Lib/test/test_regrtest.py
+--- a/Lib/test/test_regrtest.py
++++ b/Lib/test/test_regrtest.py
+@@ -762,6 +762,7 @@ class ArgsTestCase(BaseTestCase):
+         output = self.run_tests('--fromfile', filename)
+         self.check_executed_tests(output, tests)
+
++    @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment.')
+     def test_interrupted(self):
+         code = TEST_INTERRUPTED
+         test = self.create_test('sigint', code=code)
+@@ -779,6 +780,7 @@ class ArgsTestCase(BaseTestCase):
+                  % (self.TESTNAME_REGEX, len(tests)))
+         self.check_line(output, regex)
+
++    @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment.')
+     def test_slowest_interrupted(self):
+         # Issue #25373: test --slowest with an interrupted test
+         code = TEST_INTERRUPTED
+diff --git a/Lib/test/test_resource.py b/Lib/test/test_resource.py
+--- a/Lib/test/test_resource.py
++++ b/Lib/test/test_resource.py
+@@ -145,6 +145,7 @@ class ResourceTest(unittest.TestCase):
+
+     @unittest.skipUnless(hasattr(resource, 'prlimit'), 'no prlimit')
+     @support.requires_linux_version(2, 6, 36)
++    @unittest.skipIf(True, "Bug: the PermissionError is not raised")
+     def test_prlimit(self):
+         self.assertRaises(TypeError, resource.prlimit)
+         self.assertRaises(ProcessLookupError, resource.prlimit,
+diff --git a/Lib/test/test_shutil.py b/Lib/test/test_shutil.py
+--- a/Lib/test/test_shutil.py
++++ b/Lib/test/test_shutil.py
+@@ -1428,6 +1428,7 @@ class TestArchives(BaseTest, unittest.TestCase):
+         self.assertRaises(ValueError, make_archive, base_name, 'xxx')
+
+     @support.requires_zlib()
++    @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix")
+     def test_make_archive_owner_group(self):
+         # testing make_archive with owner and group, with various combinations
+         # this works even if there's not gid/uid support
+@@ -1456,6 +1457,7 @@ class TestArchives(BaseTest, unittest.TestCase):
+
+
+     @support.requires_zlib()
++    @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix")
+     @unittest.skipUnless(UID_GID_SUPPORT, "Requires grp and pwd support")
+     def test_tarfile_root_owner(self):
+         root_dir, base_dir = self._create_files()
+diff --git a/Lib/test/test_unicodedata.py b/Lib/test/test_unicodedata.py
+--- a/Lib/test/test_unicodedata.py
++++ b/Lib/test/test_unicodedata.py
+@@ -320,6 +320,7 @@ class NormalizationTest(unittest.TestCase):
+         data = [int(x, 16) for x in data.split(" ")]
+         return "".join([chr(x) for x in data])
+
++    @unittest.skipIf(True, 'Network is not available in the Guix build environment')
+     def test_normalization(self):
+         TESTDATAFILE = "NormalizationTest.txt"
+         TESTDATAURL = f"http://www.pythontest.net/unicode/{unicodedata.unidata_version}/{TESTDATAFILE}"
+diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py
+--- a/Lib/test/test_socket.py
++++ b/Lib/test/test_socket.py
+@@ -875,6 +875,8 @@ class GeneralModuleTests(unittest.TestCase):
+         if not fqhn in all_host_names:
+             self.fail("Error testing host resolution mechanisms. (fqdn: %s, all: %s)" % (fqhn, repr(all_host_names)))
+
++    @unittest.skipUnless(support.is_resource_enabled('network'),
++                         'network is not enabled')
+     def test_host_resolution(self):
+         for addr in [support.HOSTv4, '10.0.0.1', '255.255.255.255']:
+             self.assertEqual(socket.gethostbyname(addr), addr)
+@@ -1004,6 +1006,8 @@ class GeneralModuleTests(unittest.TestCase):
+             self.assertWarns(DeprecationWarning, socket.ntohs, k)
+             self.assertWarns(DeprecationWarning, socket.htons, k)
+
++    @unittest.skipUnless(os.path.exists("/etc/services"),
++                         "getservbyname uses /etc/services, which is not in the chroot")
+     def testGetServBy(self):
+         eq = self.assertEqual
+         # Find one service that exists, then check all the related interfaces.
+@@ -1358,6 +1362,8 @@ class GeneralModuleTests(unittest.TestCase):
+             raise
+         self.assertRaises(TypeError, s.ioctl, socket.SIO_LOOPBACK_FAST_PATH, None)
+
++    @unittest.skipUnless(os.path.exists("/etc/gai.conf"),
++                         "getaddrinfo() will fail")
+     def testGetaddrinfo(self):
+         try:
+             socket.getaddrinfo('localhost', 80)
+@@ -1440,6 +1446,8 @@ class GeneralModuleTests(unittest.TestCase):
+         # only IP addresses are allowed
+         self.assertRaises(OSError, socket.getnameinfo, ('mail.python.org',0), 0)
+
++    @unittest.skipUnless(os.path.exists("/etc/gai.conf"),
++                         "getaddrinfo() will fail")
+     @unittest.skipUnless(support.is_resource_enabled('network'),
+                          'network is not enabled')
+     def test_idna(self):
+diff --git a/Lib/test/test_spwd.py b/Lib/test/test_spwd.py
+--- a/Lib/test/test_spwd.py
++++ b/Lib/test/test_spwd.py
+@@ -5,8 +5,7 @@ from test import support
+ spwd = support.import_module('spwd')
+
+
+-@unittest.skipUnless(hasattr(os, 'geteuid') and os.geteuid() == 0,
+-                     'root privileges required')
++@unittest.skipUnless(os.path.exists("/etc/shadow"), 'spwd tests require /etc/shadow')
+ class TestSpwdRoot(unittest.TestCase):
+
+     def test_getspall(self):
+@@ -56,8 +55,7 @@ class TestSpwdRoot(unittest.TestCase):
+             self.assertRaises(TypeError, spwd.getspnam, bytes_name)
+
+
+-@unittest.skipUnless(hasattr(os, 'geteuid') and os.geteuid() != 0,
+-                     'non-root user required')
++@unittest.skipUnless(os.path.exists("/etc/shadow"), 'spwd tests require /etc/shadow')
+ class TestSpwdNonRoot(unittest.TestCase):
+
+     def test_getspnam_exception(self):
+diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py
+--- a/Lib/test/test_tarfile.py
++++ b/Lib/test/test_tarfile.py
+@@ -2509,9 +2509,12 @@ def root_is_uid_gid_0():
+         import pwd, grp
+     except ImportError:
+         return False
+-    if pwd.getpwuid(0)[0] != 'root':
+-        return False
+-    if grp.getgrgid(0)[0] != 'root':
++    try:
++        if pwd.getpwuid(0)[0] != 'root':
++            return False
++        if grp.getgrgid(0)[0] != 'root':
++            return False
++    except KeyError:
+         return False
+     return True
+
+diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py
+--- a/Lib/test/test_threading.py
++++ b/Lib/test/test_threading.py
+@@ -1249,6 +1249,7 @@ class MiscTestCase(unittest.TestCase):
+
+
+ class InterruptMainTests(unittest.TestCase):
++    @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build container.')
+     def test_interrupt_main_subthread(self):
+         # Calling start_new_thread with a function that executes interrupt_main
+         # should raise KeyboardInterrupt upon completion.
+@@ -1260,6 +1261,8 @@ class InterruptMainTests(unittest.TestCase):
+             t.join()
+         t.join()
+
++
++    @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build container.')
+     def test_interrupt_main_mainthread(self):
+         # Make sure that if interrupt_main is called in main thread that
+         # KeyboardInterrupt is raised instantly.
+diff --git a/Tools/scripts/run_tests.py b/Tools/scripts/run_tests.py
+--- a/Tools/scripts/run_tests.py
++++ b/Tools/scripts/run_tests.py
+@@ -39,7 +39,7 @@ def main(regrtest_args):
+     if not any(is_multiprocess_flag(arg) for arg in regrtest_args):
+         args.extend(['-j', '0'])  # Use all CPU cores
+     if not any(is_resource_use_flag(arg) for arg in regrtest_args):
+-        args.extend(['-u', 'all,-largefile,-audio,-gui'])
++        args.extend(['-u', 'all,-largefile,-audio,-gui,-network'])
+     args.extend(regrtest_args)
+     print(' '.join(args))
+     if sys.platform == 'win32':
+diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py
+index 1474624..887f8ee 100644
+--- a/Lib/test/_test_multiprocessing.py
++++ b/Lib/test/_test_multiprocessing.py
+@@ -3801,6 +3801,7 @@ class _TestSharedMemory(BaseTestCase):
+         sms.close()
+
+     @unittest.skipIf(os.name != "posix", "not feasible in non-posix platforms")
++    @unittest.skipUnless(sys.stdin.isatty(), "KeyboardInterrupts require a TTY device")
+     def test_shared_memory_SharedMemoryServer_ignores_sigint(self):
+         # bpo-36368: protect SharedMemoryManager server process from
+         # KeyboardInterrupt signals.
+diff --git a/Lib/test/test_signal.py b/Lib/test/test_signal.py
+index d41e94b..a1c15e7 100644
+--- a/Lib/test/test_signal.py
++++ b/Lib/test/test_signal.py
+@@ -78,6 +78,7 @@ class PosixTests(unittest.TestCase):
+         self.assertLess(len(s), signal.NSIG)
+
+     @unittest.skipUnless(sys.executable, "sys.executable required.")
++    @unittest.skipUnless(sys.stdin.isatty(), "KeyboardInterrupts require a TTY device")
+     def test_keyboard_interrupt_exit_code(self):
+         """KeyboardInterrupt triggers exit via SIGINT."""
+         process = subprocess.run(
+@@ -128,6 +129,7 @@ class WindowsSignalTests(unittest.TestCase):
+             signal.signal(7, handler)
+
+     @unittest.skipUnless(sys.executable, "sys.executable required.")
++    @unittest.skipUnless(sys.stdin.isatty(), "KeyboardInterrupts require a TTY device")
+     def test_keyboard_interrupt_exit_code(self):
+         """KeyboardInterrupt triggers an exit using STATUS_CONTROL_C_EXIT."""
+         # We don't test via os.kill(os.getpid(), signal.CTRL_C_EVENT) here
+@@ -1245,6 +1247,7 @@ class StressTest(unittest.TestCase):
+
+ class RaiseSignalTest(unittest.TestCase):
+
++    @unittest.skipUnless(sys.stdin.isatty(), "KeyboardInterrupts require a TTY device")
+     def test_sigint(self):
+         with self.assertRaises(KeyboardInterrupt):
+             signal.raise_signal(signal.SIGINT)
+@@ -1279,6 +1279,7 @@ class PidfdSignalTest(unittest.TestCase):
+         hasattr(signal, "pidfd_send_signal"),
+         "pidfd support not built in",
+     )
++    @unittest.skipUnless(sys.stdin.isatty(), "KeyboardInterrupts require a TTY device")
+     def test_pidfd_send_signal(self):
+         with self.assertRaises(OSError) as cm:
+             signal.pidfd_send_signal(0, signal.SIGINT)
+diff --git a/Lib/ctypes/test/test_find.py b/Lib/ctypes/test/test_find.py
+index 92ac184..49eec2c 100644
+--- a/Lib/ctypes/test/test_find.py
++++ b/Lib/ctypes/test/test_find.py
+@@ -116,6 +116,7 @@ class FindLibraryLinux(unittest.TestCase):
+         with unittest.mock.patch("ctypes.util._findSoname_ldconfig", lambda *args: None):
+             self.assertNotEqual(find_library('c'), None)
+
++    @unittest.skipIf(True, "This fails for unknown reasons on Guix")
+     def test_find_library_with_ld(self):
+         with unittest.mock.patch("ctypes.util._findSoname_ldconfig", lambda *args: None), \
+              unittest.mock.patch("ctypes.util._findLib_gcc", lambda *args: None):
diff --git a/gnu/packages/patches/python-CVE-2020-26116.patch b/gnu/packages/patches/python-CVE-2020-26116.patch
new file mode 100644
index 0000000000..dc0571e964
--- /dev/null
+++ b/gnu/packages/patches/python-CVE-2020-26116.patch
@@ -0,0 +1,47 @@
+Fix CVE-2020-26116:
+
+https://cve.circl.lu/cve/CVE-2020-26116
+https://bugs.python.org/issue39603
+
+Taken from upstream (sans test and NEWS update):
+https://github.com/python/cpython/commit/668d321476d974c4f51476b33aaca870272523bf
+
+diff --git a/Lib/http/client.py b/Lib/http/client.py
+--- a/Lib/http/client.py
++++ b/Lib/http/client.py
+@@ -147,6 +147,10 @@
+ #  _is_allowed_url_pchars_re = re.compile(r"^[/!$&'()*+,;=:@%a-zA-Z0-9._~-]+$")
+ # We are more lenient for assumed real world compatibility purposes.
+ 
++# These characters are not allowed within HTTP method names
++# to prevent http header injection.
++_contains_disallowed_method_pchar_re = re.compile('[\x00-\x1f]')
++
+ # We always set the Content-Length header for these methods because some
+ # servers will otherwise respond with a 411
+ _METHODS_EXPECTING_BODY = {'PATCH', 'POST', 'PUT'}
+@@ -1087,6 +1091,8 @@ def putrequest(self, method, url, skip_host=False,
+         else:
+             raise CannotSendRequest(self.__state)
+ 
++        self._validate_method(method)
++
+         # Save the method for use later in the response phase
+         self._method = method
+ 
+@@ -1177,6 +1183,15 @@ def _encode_request(self, request):
+         # ASCII also helps prevent CVE-2019-9740.
+         return request.encode('ascii')
+ 
++    def _validate_method(self, method):
++        """Validate a method name for putrequest."""
++        # prevent http header injection
++        match = _contains_disallowed_method_pchar_re.search(method)
++        if match:
++            raise ValueError(
++                    f"method can't contain control characters. {method!r} "
++                    f"(found at least {match.group()!r})")
++
+     def _validate_path(self, url):
+         """Validate a url for putrequest."""
+         # Prevent CVE-2019-9740.
diff --git a/gnu/packages/patches/python-cairocffi-dlopen-path.patch b/gnu/packages/patches/python-cairocffi-dlopen-path.patch
deleted file mode 100644
index e7a7fe3737..0000000000
--- a/gnu/packages/patches/python-cairocffi-dlopen-path.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- cairocffi-0.8.0/cairocffi/__init__.py.orig	2018-07-16 11:00:59.075664158 +0200
-+++ cairocffi-0.8.0/cairocffi/__init__.py	2018-07-16 17:09:42.471958015 +0200
-@@ -35,6 +35,7 @@
-                         return lib
-             except OSError:
-                 pass
-+        return ffi.dlopen(name)
-     raise OSError("dlopen() failed to load a library: %s" % ' / '.join(names))
- 
- 
diff --git a/gnu/packages/patches/python-tinycss2-flake8-compat.patch b/gnu/packages/patches/python-tinycss2-flake8-compat.patch
deleted file mode 100644
index a66eb42fa1..0000000000
--- a/gnu/packages/patches/python-tinycss2-flake8-compat.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-Fix test failure that occurs with recent versions of Flake8.
-
-Taken from upstream:
-https://github.com/Kozea/tinycss2/commit/6556604fb98c2153412384d6f0f705db2da1aa60
-
-diff --git a/tinycss2/css-parsing-tests/make_color3_hsl.py b/tinycss2/css-parsing-tests/make_color3_hsl.py
-index d1fd3a6..56fda0c 100644
---- a/tinycss2/css-parsing-tests/make_color3_hsl.py
-+++ b/tinycss2/css-parsing-tests/make_color3_hsl.py
-@@ -8,16 +8,17 @@ def trim(s):
- print('[')
- print(',\n'.join(
-     '"hsl%s(%s, %s%%, %s%%%s)", [%s, %s, %s, %s]' % (
--        ('a' if a is not None else '', h,
--         trim(str(s / 10.)), trim(str(l / 10.)),
--         ', %s' % a if a is not None else '') +
-+        ('a' if alpha is not None else '', hue,
-+         trim(str(saturation / 10.)), trim(str(light / 10.)),
-+         ', %s' % alpha if alpha is not None else '') +
-         tuple(trim(str(round(v, 10)))
--              for v in colorsys.hls_to_rgb(h / 360., l / 1000., s / 1000.)) +
--        (a if a is not None else 1,)
-+              for v in colorsys.hls_to_rgb(
-+                hue / 360., light / 1000., saturation / 1000.)) +
-+        (alpha if alpha is not None else 1,)
-     )
--    for a in [None, 1, .2, 0]
--    for l in range(0, 1001, 125)
--    for s in range(0, 1001, 125)
--    for h in range(0, 360, 30)
-+    for alpha in [None, 1, .2, 0]
-+    for light in range(0, 1001, 125)
-+    for saturation in range(0, 1001, 125)
-+    for hue in range(0, 360, 30)
- ))
- print(']')
diff --git a/gnu/packages/patches/qtbase-fix-krita-deadlock.patch b/gnu/packages/patches/qtbase-fix-krita-deadlock.patch
deleted file mode 100644
index d3554be3c9..0000000000
--- a/gnu/packages/patches/qtbase-fix-krita-deadlock.patch
+++ /dev/null
@@ -1,110 +0,0 @@
-Fix a deadlock in Krita:
-
-https://bugreports.qt.io/browse/QTBUG-83207
-
-Patch copied from Qt bug tracker:
-
-https://codereview.qt-project.org/c/qt/qtbase/+/296034
-
-From 276fa8383a7535765be7182883ef4aade17ce013 Mon Sep 17 00:00:00 2001
-From: Thiago Macieira <thiago.macieira@intel.com>
-Date: Thu, 02 Apr 2020 12:08:41 -0300
-Subject: [PATCH] QLibrary: fix deadlock caused by fix to QTBUG-39642
-
-Commit ae6f73e8566fa76470937aca737141183929a5ec inserted a mutex around
-the entire load_sys(). We had reasoed that deadlocks would only occur if
-the object creation in instance() recursed into its own instance(),
-which was already a bug. But we had forgotten that dlopen()/
-LoadLibrary() executes initialization code from the module being loaded,
-which could cause a recursion back into the same QPluginLoader or
-QLibrary object. This recursion is benign because the module *is* loaded
-and dlopen()/LoadLibrary() returns the same handle.
-
-[ChangeLog][QtCore][QLibrary and QPluginLoader] Fixed a deadlock that
-would happen if the plugin or library being loaded has load-time
-initialization code (C++ global variables) that recursed back into the
-same QLibrary or QPluginLoader object.
-
-PS: QLibraryPrivate::loadPlugin() updates pluginState outside a mutex
-lock, so pluginState should be made an atomic variable. Once that is
-done, we'll only need locking the mutex to update errorString (no
-locking before loading).
-
-Fixes: QTBUG-83207
-Task-number: QTBUG-39642
-Change-Id: Ibdc95e9af7bd456a94ecfffd160209304e5ab2eb
-Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
-Reviewed-by: David Faure <david.faure@kdab.com>
----
-
-diff --git a/src/corelib/plugin/qlibrary.cpp b/src/corelib/plugin/qlibrary.cpp
-index ddb053c..be9d92b 100644
---- a/src/corelib/plugin/qlibrary.cpp
-+++ b/src/corelib/plugin/qlibrary.cpp
-@@ -576,9 +576,7 @@
- 
-     Q_TRACE(QLibraryPrivate_load_entry, fileName);
- 
--    mutex.lock();
-     bool ret = load_sys();
--    mutex.unlock();
-     if (qt_debug_component()) {
-         if (ret) {
-             qDebug() << "loaded library" << fileName;
-diff --git a/src/corelib/plugin/qlibrary_unix.cpp b/src/corelib/plugin/qlibrary_unix.cpp
-index 017aa97..a5c72f8 100644
---- a/src/corelib/plugin/qlibrary_unix.cpp
-+++ b/src/corelib/plugin/qlibrary_unix.cpp
-@@ -123,6 +123,7 @@
- 
- bool QLibraryPrivate::load_sys()
- {
-+    QMutexLocker locker(&mutex);
-     QString attempt;
-     QFileSystemEntry fsEntry(fileName);
- 
-@@ -213,6 +214,7 @@
-     }
- #endif
- 
-+    locker.unlock();
-     bool retry = true;
-     Handle hnd = nullptr;
-     for (int prefix = 0; retry && !hnd && prefix < prefixes.size(); prefix++) {
-@@ -273,6 +275,8 @@
-         }
-     }
- #endif
-+
-+    locker.relock();
-     if (!hnd) {
-         errorString = QLibrary::tr("Cannot load library %1: %2").arg(fileName, qdlerror());
-     }
-diff --git a/src/corelib/plugin/qlibrary_win.cpp b/src/corelib/plugin/qlibrary_win.cpp
-index 000bf76..ef58724 100644
---- a/src/corelib/plugin/qlibrary_win.cpp
-+++ b/src/corelib/plugin/qlibrary_win.cpp
-@@ -78,6 +78,7 @@
-     //     fileName
-     //
-     // NB If it's a plugin we do not ever try the ".dll" extension
-+    QMutexLocker locker(&mutex);
-     QStringList attempts;
- 
-     if (pluginState != IsAPlugin)
-@@ -95,6 +96,7 @@
-         attempts.prepend(QDir::rootPath() + fileName);
- #endif
- 
-+    locker.unlock();
-     Handle hnd = nullptr;
-     for (const QString &attempt : qAsConst(attempts)) {
- #ifndef Q_OS_WINRT
-@@ -115,6 +117,7 @@
- #ifndef Q_OS_WINRT
-     SetErrorMode(oldmode);
- #endif
-+    locker.relock();
-     if (!hnd) {
-         errorString = QLibrary::tr("Cannot load library %1: %2").arg(
-                     QDir::toNativeSeparators(fileName), qt_error_string());
diff --git a/gnu/packages/patches/renpy-use-system-fribidi.patch b/gnu/packages/patches/renpy-use-system-fribidi.patch
new file mode 100644
index 0000000000..1437274bcc
--- /dev/null
+++ b/gnu/packages/patches/renpy-use-system-fribidi.patch
@@ -0,0 +1,52 @@
+See also [Arch] and [Gentoo] for similar patches in other distros.
+[Arch] https://github.com/archlinux/svntogit-community/blob/packages/renpy/trunk/renpy-system-fribidi.patch
+[Gentoo] https://gitweb.gentoo.org/repo/gentoo.git/tree/games-engines/renpy/files/renpy-7.3.5-use-system-fribidi.patch
+
+Index: renpy-7.3.5-source/module/renpybidicore.c
+===================================================================
+--- renpy-7.3.5-source.orig/module/renpybidicore.c
++++ renpy-7.3.5-source/module/renpybidicore.c
+@@ -1,5 +1,5 @@
+ #include <Python.h>
+-#include <fribidi-src/lib/fribidi.h>
++#include <fribidi.h>
+ #include <stdlib.h>
+
+ #ifndef alloca
+Index: renpy-7.3.5-source/module/setup.py
+===================================================================
+--- renpy-7.3.5-source.orig/module/setup.py
++++ renpy-7.3.5-source/module/setup.py
+@@ -119,30 +119,13 @@ cython(
+     sdl + [ png, 'z', 'm' ])
+
+ FRIBIDI_SOURCES = """
+-fribidi-src/lib/fribidi.c
+-fribidi-src/lib/fribidi-arabic.c
+-fribidi-src/lib/fribidi-bidi.c
+-fribidi-src/lib/fribidi-bidi-types.c
+-fribidi-src/lib/fribidi-deprecated.c
+-fribidi-src/lib/fribidi-joining.c
+-fribidi-src/lib/fribidi-joining-types.c
+-fribidi-src/lib/fribidi-mem.c
+-fribidi-src/lib/fribidi-mirroring.c
+-fribidi-src/lib/fribidi-run.c
+-fribidi-src/lib/fribidi-shape.c
+ renpybidicore.c
+ """.split()
+ cython(
+     "_renpybidi",
+     FRIBIDI_SOURCES,
+-    includes=[
+-        BASE + "/fribidi-src/",
+-        BASE + "/fribidi-src/lib/",
+-        ],
+-    define_macros=[
+-        ("FRIBIDI_ENTRY", ""),
+-        ("HAVE_CONFIG_H", "1"),
+-        ])
++    includes=["/usr/include/fribidi"],
++    libs=["fribidi"])
+
+
+ cython("_renpysteam", language="c++", compile_if=steam_sdk, libs=["steam_api"])
diff --git a/gnu/packages/patches/rust-1.48-linker-locale.patch b/gnu/packages/patches/rust-1.48-linker-locale.patch
new file mode 100644
index 0000000000..d06dcbe682
--- /dev/null
+++ b/gnu/packages/patches/rust-1.48-linker-locale.patch
@@ -0,0 +1,14 @@
+https://github.com/rust-lang/rust/pull/74416
+diff --git a/compiler/rustc_codegen_ssa/src/back/linker.rs b/compiler/rustc_codegen_ssa/src/back/linker.rs
+index 3df956c465e..f45fee45be4 100644
+--- a/compiler/rustc_codegen_ssa/src/back/linker.rs
++++ b/compiler/rustc_codegen_ssa/src/back/linker.rs
+@@ -28,7 +28,7 @@
+ pub fn disable_localization(linker: &mut Command) {
+     // No harm in setting both env vars simultaneously.
+     // Unix-style linkers.
+-    linker.env("LC_ALL", "C");
++    linker.env("LC_ALL", "en_US.UTF-8");
+     // MSVC's `link.exe`.
+     linker.env("VSLANG", "1033");
+ }
diff --git a/gnu/packages/patches/rust-ndarray-remove-blas-src-dep.patch b/gnu/packages/patches/rust-ndarray-remove-blas-src-dep.patch
new file mode 100644
index 0000000000..7221fdd608
--- /dev/null
+++ b/gnu/packages/patches/rust-ndarray-remove-blas-src-dep.patch
@@ -0,0 +1,36 @@
+From ed09f3c91e915c3b436854a7936566edceb3e8de Mon Sep 17 00:00:00 2001
+From: Efraim Flashner <efraim@flashner.co.il>
+Date: Tue, 15 Dec 2020 10:09:45 +0200
+Subject: [PATCH] remove blas-src dependency
+
+---
+ Cargo.toml | 6 +-----
+ 1 file changed, 1 insertion(+), 5 deletions(-)
+
+diff --git a/Cargo.toml b/Cargo.toml
+index 1f3e1b6..36bc816 100644
+--- a/Cargo.toml
++++ b/Cargo.toml
+@@ -37,10 +37,6 @@ debug = true
+ name = "ndarray"
+ test = true
+ bench = false
+-[dependencies.blas-src]
+-version = "0.2.0"
+-optional = true
+-default-features = false
+ 
+ [dependencies.cblas-sys]
+ version = "0.1.4"
+@@ -78,7 +74,7 @@ default-features = false
+ version = "0.1"
+ 
+ [features]
+-blas = ["cblas-sys", "blas-src"]
++blas = ["cblas-sys"]
+ docs = ["rustc-serialize", "serde-1"]
+ serde-1 = ["serde"]
+ test = ["test-blas-openblas-sys"]
+-- 
+2.29.2
+
diff --git a/gnu/packages/patches/sbc-fix-build-non-x86.patch b/gnu/packages/patches/sbc-fix-build-non-x86.patch
new file mode 100644
index 0000000000..56ea916d42
--- /dev/null
+++ b/gnu/packages/patches/sbc-fix-build-non-x86.patch
@@ -0,0 +1,17 @@
+Don't refer to x86-specific function on other architectures to avoid linker error.
+
+Submitted upstream at <https://marc.info/?l=linux-bluetooth&m=160857625608440&w=2>
+
+diff --git a/sbc/sbc_primitives.c b/sbc/sbc_primitives.c
+--- a/sbc/sbc_primitives.c
++++ b/sbc/sbc_primitives.c
+@@ -593,7 +593,9 @@ static int sbc_calc_scalefactors_j(
+ 
+ static void sbc_init_primitives_x86(struct sbc_encoder_state *state)
+ {
++#if defined(__x86_64__) || defined(__i386__)
+ 	__builtin_cpu_init();
++#endif
+ 
+ #ifdef SBC_BUILD_WITH_MMX_SUPPORT
+ 	if (__builtin_cpu_supports("mmx"))
diff --git a/gnu/packages/patches/sbcl-clml-fix-types.patch b/gnu/packages/patches/sbcl-clml-fix-types.patch
new file mode 100644
index 0000000000..689a2fbfc2
--- /dev/null
+++ b/gnu/packages/patches/sbcl-clml-fix-types.patch
@@ -0,0 +1,280 @@
+commit 9920bf86604b536c735b6478488a3cb89413e000
+Author: Guillaume Le Vaillant <glv@posteo.net>
+Date:   Tue Dec 1 09:38:41 2020 +0100
+
+    Fix some type declarations
+    
+    This allows compiling with SBCL 2.0.11 which is less tolerant with wrong type
+    declarations.
+
+diff --git a/som/src/lvq_pak.lisp b/som/src/lvq_pak.lisp
+index 1a062cc..4006ed6 100644
+--- a/som/src/lvq_pak.lisp
++++ b/som/src/lvq_pak.lisp
+@@ -53,7 +53,7 @@
+      (current :accessor entries-current :initarg :current :initform 0
+               :documentation "index of current data-entry inside data-entries")
+      (entries :accessor entries-entries :initarg :entries :initform nil
+-              :type #-ccl cons #+ccl list
++              :type #-ccl (or null cons) #+ccl list
+               :documentation "list of data-entries")
+      (num-loaded :accessor entries-num-loaded :initarg :num-loaded :initform nil
+                  :documentation "number of lines loaded in entries list")
+diff --git a/statistics/src/rand/rand.lisp b/statistics/src/rand/rand.lisp
+index 3cd806a..c8f9952 100644
+--- a/statistics/src/rand/rand.lisp
++++ b/statistics/src/rand/rand.lisp
+@@ -154,7 +154,7 @@
+        (xn (make-array (1+ n) :element-type 'double-float)))
+   (declare (type double-float r v d)
+            (type fixnum k n n-minus-1)
+-           (type (vector double-float *) xn))
++           (type (simple-array double-float (*)) xn))
+   ;; build xn
+   (setf (aref xn n) (* v (exp (/ (* r r) 2))))
+   (setf (aref xn (1- n)) r)
+@@ -233,8 +233,8 @@
+          (base (expt 2 (- +bit-operation-m+ k 1))))
+     (declare (type double-float r v d)
+              (type fixnum k n n-minus-1 base)
+-             (type (vector double-float *) wn fn)
+-             (type (vector fixnum *) kn))
++             (type (simple-array double-float (*)) wn fn)
++             (type (simple-array fixnum (*)) kn))
+     ;; build arrays
+     (setf (aref wn (- n 1)) (/ (* v (exp (/ (* r r) 2))) base))
+     (setf (aref wn (- n 2)) (/ r base))
+@@ -347,8 +347,8 @@
+          (base (expt 2 (- +bit-operation-m+ k))))
+     (declare (type double-float r v d)
+              (type fixnum k n n-minus-1 base)
+-             (type (vector double-float *) wn fn)
+-             (type (vector fixnum *) kn))
++             (type (simple-array double-float (*)) wn fn)
++             (type (simple-array fixnum (*)) kn))
+     ;; build arrays
+     (setf (aref wn (- n 1)) (/ (* v (exp (/ (* r r) 2))) base))
+     (setf (aref wn (- n 2)) (/ r base))
+@@ -546,8 +546,8 @@
+          (base (expt 2 (- +bit-operation-m+ k 1))))
+     (declare (type double-float r v tr1 tr2)
+              (type fixnum k n n-minus-1 base)
+-             (type (vector double-float *) wn fn)
+-             (type (vector fixnum *) kn))
++             (type (simple-array double-float (*)) wn fn)
++             (type (simple-array fixnum (*)) kn))
+     ;; build arrays
+     (setf (aref wn (- n 1)) (/ (* v (+ 1 (* r r))) base))
+     (setf (aref wn (- n 2)) (/ r base))
+@@ -663,8 +663,8 @@
+        (base (expt 2 (- +bit-operation-m+ k))))
+   (declare (type double-float r v)
+            (type fixnum k n n-minus-1 base)
+-           (type (vector double-float *) wn fn)
+-           (type (vector fixnum *) kn))
++           (type (simple-array double-float (*)) wn fn)
++           (type (simple-array fixnum (*)) kn))
+   ;; build arrays
+   (setf (aref wn (- n 1)) (/ (* v (exp r)) base))
+   (setf (aref wn (- n 2)) (/ r base))
+@@ -804,8 +804,8 @@
+          (base (expt 2 (- +bit-operation-m+ k 1))))
+     (declare (type double-float r v)
+              (type fixnum k n n-minus-1 base)
+-             (type (vector double-float *) wn fn)
+-             (type (vector fixnum *) kn))
++             (type (simple-array double-float (*)) wn fn)
++             (type (simple-array fixnum (*)) kn))
+     ;; build arrays
+     (setf (aref wn (- n 1)) (/ (* v (exp r)) base))
+     (setf (aref wn (- n 2)) (/ r base))
+@@ -2083,8 +2083,8 @@
+        (base (expt 2 (- +bit-operation-m+ k 1))))
+   (declare (type double-float r v tr)
+            (type fixnum k n n-minus-1 base)
+-           (type (vector double-float *) wn fn)
+-           (type (vector fixnum *) kn))
++           (type (simple-array double-float (*)) wn fn)
++           (type (simple-array fixnum (*)) kn))
+   ;; build arrays
+   (setf (aref wn (- n 1)) (/ (* (expt (+ 1d0 tr) 2) v) tr base))
+   (setf (aref wn (- n 2)) (/ r base))
+@@ -2383,7 +2383,7 @@
+                ans)))
+     (declare (type double-float s a d)
+              (type vector tix)
+-             (type (vector fixnum *) si))
++             (type (simple-array fixnum (*)) si))
+     (values tix si)))
+ 
+ (defun binomial-table-lookup (tix si)
+@@ -2415,7 +2415,7 @@
+          (b (expt 2 k)))
+     (declare (type double-float s a)
+              (type fixnum nsq k b)
+-             (type (vector double-float *) pbins))
++             (type (simple-array double-float (*)) pbins))
+     ;; build pbins
+     (setf (aref pbins 0) (int-power (- 1d0 probability) size))
+     (loop for i from 1 to size do
+@@ -2438,7 +2438,7 @@
+                                do (incf j tx)) :initial-element -1 :element-type 'fixnum))
+           (thetan 0d0))
+       (declare (type double-float w thetan)
+-               (type (vector fixnum *) table))
++               (type (simple-array fixnum (*)) table))
+       (loop with j = 0
+             for x from 0
+             for pbin across pbins
+@@ -2454,8 +2454,8 @@
+             (vi (make-array nsq :element-type 'double-float
+                             :initial-contents (loop for i from 0 to size collect (dfloat (/ (+ i 1) nsq)))))
+             (c (dfloat (/ nsq))))
+-        (declare (type (vector fixnum *) ki)
+-                 (type (vector double-float *) vi)
++        (declare (type (simple-array fixnum (*)) ki)
++                 (type (simple-array double-float (*)) vi)
+                  (type double-float c))
+         (loop repeat size do
+               (let ((maxp 0)
+@@ -2658,7 +2658,7 @@
+           (thetan 0d0)
+           (sum 0d0))
+       (declare (type double-float w thetan sum)
+-               (type (vector fixnum *) table))
++               (type (simple-array fixnum (*)) table))
+       (loop with j = 0
+           for x from 0
+           for pgeo across pgeos
+@@ -2675,8 +2675,8 @@
+             (vi (make-array nsq :element-type 'double-float
+                             :initial-contents (loop for i from 0 below nsq collect (dfloat (/ (+ i 1) nsq)))))
+             (c (dfloat (/ nsq))))
+-        (declare (type (vector fixnum *) ki)
+-                 (type (vector double-float *) vi)
++        (declare (type (simple-array fixnum (*)) ki)
++                 (type (simple-array double-float (*)) vi)
+                  (type double-float c))
+         (loop repeat (1- nsq) do
+               (let ((maxp 0)
+@@ -2911,7 +2911,7 @@
+            (sum 0d0))
+       (declare (type double-float w thetan sum pl pu)
+                (type fixnum nsq d)
+-               (type (vector fixnum *) table))
++               (type (simple-array fixnum (*)) table))
+       (unless (= xl 0)
+         (setf pps (subseq pps xl)))
+       (loop with j = 0
+@@ -2930,8 +2930,8 @@
+             (vi (make-array nsq :element-type 'double-float
+                             :initial-contents (loop for i from 0 below nsq collect (dfloat (/ (+ i 1) nsq)))))
+             (c (dfloat (/ nsq))))
+-        (declare (type (vector fixnum *) ki)
+-                 (type (vector double-float *) vi)
++        (declare (type (simple-array fixnum (*)) ki)
++                 (type (simple-array double-float (*)) vi)
+                  (type double-float c))
+         (loop repeat (1- nsq) do
+               (let ((maxp 0)
+@@ -3174,7 +3174,7 @@
+          (k 7)
+          (b (expt 2 k)))
+     (declare (type fixnum a1 a2 nsq k b)
+-             (type (vector double-float *) phs))
++             (type (simple-array double-float (*)) phs))
+     ;; build phs
+     (setf (aref phs 0)
+       (/ (dfloat (the fixnum (* (combination successes a1) (combination (- elements successes) (- samples a1)))))
+@@ -3200,7 +3200,7 @@
+           (table (make-array b :initial-element -1 :element-type 'fixnum))
+           (thetan 0d0))
+       (declare (type double-float w thetan)
+-               (type (vector fixnum *) table))
++               (type (simple-array fixnum (*)) table))
+       (loop with j = 0
+           for x from a1
+           for i from 0
+@@ -3217,8 +3217,8 @@
+             (vi (make-array nsq :element-type 'double-float
+                             :initial-contents (loop for i from 0 below nsq collect (dfloat (/ (+ i 1) nsq)))))
+             (c (dfloat (/ nsq))))
+-        (declare (type (vector fixnum *) ki)
+-                 (type (vector double-float *) vi)
++        (declare (type (simple-array fixnum (*)) ki)
++                 (type (simple-array double-float (*)) vi)
+                  (type double-float c))
+         (loop repeat (1- nsq) do
+               (let ((maxp 0)
+@@ -3442,7 +3442,7 @@
+            (sum 0d0))
+       (declare (type double-float w thetan sum pl pu)
+                (type fixnum nsq d)
+-               (type (vector fixnum *) table))
++               (type (simple-array fixnum (*)) table))
+       (unless (= xl 0)
+         (setf pnbs (subseq pnbs xl)))
+       (loop with j = 0
+@@ -3461,8 +3461,8 @@
+             (vi (make-array nsq :element-type 'double-float
+                             :initial-contents (loop for i from 0 below nsq collect (dfloat (/ (+ i 1) nsq)))))
+             (c (dfloat (/ nsq))))
+-        (declare (type (vector fixnum *) ki)
+-                 (type (vector double-float *) vi)
++        (declare (type (simple-array fixnum (*)) ki)
++                 (type (simple-array double-float (*)) vi)
+                  (type double-float c))
+         (loop repeat (1- nsq) do
+               (let ((maxp 0)
+diff --git a/time-series/src/ts-read-data.lisp b/time-series/src/ts-read-data.lisp
+index 09ad933..a692514 100644
+--- a/time-series/src/ts-read-data.lisp
++++ b/time-series/src/ts-read-data.lisp
+@@ -5,7 +5,7 @@
+   ((frequency :initarg :frequency
+               :accessor ts-freq
+               :initform nil
+-              :type number)
++              :type (or null number))
+    (start :initarg :start :accessor ts-start :initform nil)
+    (end :initarg :end :accessor ts-end :initform nil)
+    (ts-type :initarg :ts-type :accessor ts-type :initform nil)
+diff --git a/time-series/src/ts-state-space-model.lisp b/time-series/src/ts-state-space-model.lisp
+index 4dbf56a..ad9e5cc 100644
+--- a/time-series/src/ts-state-space-model.lisp
++++ b/time-series/src/ts-state-space-model.lisp
+@@ -348,8 +348,8 @@
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ (eval-when (:execute :compile-toplevel :load-toplevel)
+  (defclass trend-model (gaussian-stsp-model)
+-   ((diff-k :initarg :diff-k :initform nil :type integer :accessor diff-k)
+-    (tau^2 :initarg :tau^2 :initform nil :type number :accessor tau^2)
++   ((diff-k :initarg :diff-k :initform nil :type (or null integer) :accessor diff-k)
++    (tau^2 :initarg :tau^2 :initform nil :type (or null number) :accessor tau^2)
+     (aic :initarg :aic :initform +nan+ :type number))
+    (:documentation "- parent: gaussian-stsp-model
+ - accessors:
+@@ -492,9 +492,9 @@
+ ; seasonal model ;
+ ;;;;;;;;;;;;;;;;;;
+ (defclass seasonal-model (gaussian-stsp-model)
+-  ((s-deg  :initarg :s-deg :initform nil :type fixnum :accessor s-deg)
+-   (s-freq  :initarg :s-freq :initform nil :type fixnum :accessor s-freq)
+-   (tau^2 :initarg :tau^2 :initform nil :type number :accessor tau^2))
++  ((s-deg  :initarg :s-deg :initform nil :type (or null fixnum) :accessor s-deg)
++   (s-freq  :initarg :s-freq :initform nil :type (or null fixnum) :accessor s-freq)
++   (tau^2 :initarg :tau^2 :initform nil :type (or null number) :accessor tau^2))
+   (:documentation "- parent: gaussian-stsp-model
+ - accessors
+   - s-deg  : Degree for seasonal model
+@@ -593,8 +593,8 @@
+ ; seasonal-adjustment-model ;
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ (defclass seasonal-adjustment-model (gaussian-stsp-model)
+-  ((trend :initarg :trend :initform nil :type trend-model :accessor trend-model)
+-   (seasonal :initarg :seasonal :initform nil :type seasonal-model :accessor seasonal-model))
++  ((trend :initarg :trend :initform nil :type (or null trend-model) :accessor trend-model)
++   (seasonal :initarg :seasonal :initform nil :type (or null seasonal-model) :accessor seasonal-model))
+   (:documentation "Standard seasonal adjustment model ( Trend + Seasonal )
+ - parent: gaussian-stsp-model
+ - accessors
diff --git a/gnu/packages/patches/sbcl-geco-fix-organism-class.patch b/gnu/packages/patches/sbcl-geco-fix-organism-class.patch
deleted file mode 100644
index 817596241e..0000000000
--- a/gnu/packages/patches/sbcl-geco-fix-organism-class.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Fix the ORGANISM class so that SBCL >= 2.0.9 can compile it without error.
-
---- a/classes.lisp	2020-10-28 12:11:10.725659464 +0100
-+++ b/classes.lisp	2020-10-31 17:34:36.822752447 +0100
-@@ -148,7 +148,7 @@
-     :accessor score
-     :initarg :score
-     :initform 'nil
--    :type number)
-+    :type (or number null))
-    (NORMALIZED-SCORE
-     :accessor normalized-score
-     :initarg :normalized-score
diff --git a/gnu/packages/patches/sdcc-disable-non-free-code.patch b/gnu/packages/patches/sdcc-disable-non-free-code.patch
index 545f0cbd69..ad9a3e7a9e 100644
--- a/gnu/packages/patches/sdcc-disable-non-free-code.patch
+++ b/gnu/packages/patches/sdcc-disable-non-free-code.patch
@@ -15,10 +15,10 @@ remove instructions that encourage the use of SDCC with non-free
 software.
 
 diff --git a/Makefile.common.in b/Makefile.common.in
-index 4c75cfa..9fa306d 100644
+index 412fd5a..81bbd61 100644
 --- a/Makefile.common.in
 +++ b/Makefile.common.in
-@@ -65,7 +65,6 @@ OPT_DISABLE_PACKIHX     = @OPT_DISABLE_PACKIHX@
+@@ -69,7 +69,6 @@ OPT_DISABLE_PACKIHX     = @OPT_DISABLE_PACKIHX@
  OPT_DISABLE_SDBINUTILS  = @OPT_DISABLE_SDBINUTILS@
  OPT_DISABLE_SDCPP       = @OPT_DISABLE_SDCPP@
  OPT_DISABLE_UCSIM       = @OPT_DISABLE_UCSIM@
@@ -27,10 +27,10 @@ index 4c75cfa..9fa306d 100644
  SLIB                    = $(top_builddir)/support/util
  
 diff --git a/Makefile.in b/Makefile.in
-index aac442e..dd73e40 100644
+index f3b028d..cfdf06d 100644
 --- a/Makefile.in
 +++ b/Makefile.in
-@@ -82,9 +82,6 @@ endif
+@@ -100,9 +100,6 @@ endif
  ifeq ($(OPT_DISABLE_DEVICE_LIB), 0)
  TARGETS        += sdcc-device-lib
  PKGS           += device/lib
@@ -40,17 +40,17 @@ index aac442e..dd73e40 100644
  endif
  
  ifeq ($(OPT_DISABLE_PACKIHX), 0)
-@@ -105,9 +102,6 @@ endif
+@@ -123,9 +120,6 @@ endif
  TARGETS        += sdcc-libs sdcc-cc sdcc-device-inc sdcc-as sdcc-ld sdcc-scripts
  
  PKGS           += $(SDCC_LIBS) src device/include
 -ifeq ($(OPT_DISABLE_NON_FREE), 0)
 -PKGS           += device/non-free/include
 -endif
- PKGS           += $(SDCC_AS) sdas/linksrc $(SDCC_LIBRARIAN) $(SDCC_SCRIPTS)
+ PKGS           += $(SDCC_AS) sdas/linksrc $(SDCC_SCRIPTS)
  
  PORTS           = $(shell cat ports.build)
-@@ -156,21 +150,12 @@ sdcc-sdbinutils:
+@@ -171,21 +165,12 @@ sdcc-sdbinutils:
  
  sdcc-device-inc:
  	$(MAKE) -C device/include
@@ -73,7 +73,7 @@ index aac442e..dd73e40 100644
  
  # doc depends on latex and latex2html
 diff --git a/configure b/configure
-index 42b1c7d..00ecb51 100755
+index 43ccb6f..d345f54 100755
 --- a/configure
 +++ b/configure
 @@ -632,7 +632,6 @@ LATEX
@@ -84,7 +84,7 @@ index 42b1c7d..00ecb51 100755
  OPT_DISABLE_SDBINUTILS
  OPT_DISABLE_SDCDB
  OPT_DISABLE_SDCPP
-@@ -654,10 +653,7 @@ OPT_DISABLE_R2K
+@@ -659,10 +658,7 @@ OPT_DISABLE_R2K
  OPT_DISABLE_Z180
  OPT_DISABLE_Z80
  OPT_DISABLE_MCS51
@@ -95,7 +95,7 @@ index 42b1c7d..00ecb51 100755
  include_dir_suffix
  inclib_dir_suffix
  LIB_TYPE
-@@ -771,7 +767,6 @@ enable_packihx
+@@ -780,7 +776,6 @@ enable_packihx
  enable_sdcpp
  enable_sdcdb
  enable_sdbinutils
@@ -103,7 +103,7 @@ index 42b1c7d..00ecb51 100755
  enable_doc
  enable_libgc
  '
-@@ -792,10 +787,7 @@ sdccconf_h_dir_separator
+@@ -801,10 +796,7 @@ sdccconf_h_dir_separator
  LIB_TYPE
  inclib_dir_suffix
  include_dir_suffix
@@ -114,7 +114,7 @@ index 42b1c7d..00ecb51 100755
  docdir'
  ac_subdirs_all='support/cpp
  support/packihx
-@@ -803,9 +795,7 @@ sim/ucsim
+@@ -812,9 +804,7 @@ sim/ucsim
  debugger/mcs51
  support/sdbinutils
  device/lib/pic14
@@ -125,7 +125,7 @@ index 42b1c7d..00ecb51 100755
  
  # Initialize some variables set by options.
  ac_init_help=
-@@ -1452,7 +1442,6 @@ Optional Features:
+@@ -1455,7 +1445,6 @@ Optional Features:
    --disable-sdcpp         Disables building sdcpp
    --disable-sdcdb         Disables building sdcdb
    --disable-sdbinutils    Disables configuring and building of sdbinutils
@@ -133,7 +133,7 @@ index 42b1c7d..00ecb51 100755
    --enable-doc            Enables building the documentation
    --enable-libgc          Use the Bohem memory allocator. Lower runtime
                            footprint.
-@@ -1481,16 +1470,8 @@ Some influential environment variables:
+@@ -1484,16 +1473,8 @@ Some influential environment variables:
                appended to datadir to define SDCC's include/lib directory
    include_dir_suffix
                appended to datadir to define SDCC's include directory
@@ -150,7 +150,7 @@ index 42b1c7d..00ecb51 100755
    docdir      documentation installation directory
  
  Use these variables to override the choices made by `configure' or to help
-@@ -7236,19 +7217,6 @@ if test "${include_dir_suffix}" = ""; then
+@@ -7134,19 +7115,6 @@ if test "${include_dir_suffix}" = ""; then
      include_dir_suffix="${inclib_dir_suffix}/include"
  fi
  
@@ -170,7 +170,7 @@ index 42b1c7d..00ecb51 100755
  # lib_dir_suffix:
  # *nix default: "sdcc/lib"
  
-@@ -7256,13 +7224,6 @@ if test "${lib_dir_suffix}" = ""; then
+@@ -7154,13 +7122,6 @@ if test "${lib_dir_suffix}" = ""; then
      lib_dir_suffix="${inclib_dir_suffix}/lib"
  fi
  
@@ -184,7 +184,7 @@ index 42b1c7d..00ecb51 100755
  # docdir:
  # *nix default: "${datadir}/sdcc/doc"
  
-@@ -7429,24 +7390,6 @@ cat >>confdefs.h <<_ACEOF
+@@ -7327,24 +7288,6 @@ cat >>confdefs.h <<_ACEOF
  #define INCLUDE_DIR_SUFFIX DIR_SEPARATOR_STRING "${norm_inc_dir_suffix}"
  _ACEOF
  
@@ -209,7 +209,7 @@ index 42b1c7d..00ecb51 100755
  
  norm_lib_dir_suffix=${lib_dir_suffix}
  case ":$norm_lib_dir_suffix:" in
-@@ -7466,24 +7409,6 @@ cat >>confdefs.h <<_ACEOF
+@@ -7364,24 +7307,6 @@ cat >>confdefs.h <<_ACEOF
  #define LIB_DIR_SUFFIX DIR_SEPARATOR_STRING "${norm_lib_dir_suffix}"
  _ACEOF
  
@@ -234,7 +234,7 @@ index 42b1c7d..00ecb51 100755
  
  # relative paths
  for _lcl_i in expanded_bindir:expanded_datadir:bin2data_dir; do
-@@ -8411,28 +8336,6 @@ _ACEOF
+@@ -8439,28 +8364,6 @@ _ACEOF
  
  
  
@@ -263,7 +263,7 @@ index 42b1c7d..00ecb51 100755
  
    # Check whether --enable-doc was given.
  if test "${enable_doc+set}" = set; then :
-@@ -8827,20 +8730,12 @@ if test $OPT_DISABLE_PIC14 = 0; then
+@@ -8855,20 +8758,12 @@ if test $OPT_DISABLE_PIC14 = 0; then
  
    test $OPT_DISABLE_DEVICE_LIB = 0 && subdirs="$subdirs device/lib/pic14"
  
@@ -283,15 +283,15 @@ index 42b1c7d..00ecb51 100755
 -
  fi
  
- if test $OPT_DISABLE_Z80 = 0 || test $OPT_DISABLE_Z180 = 0 || test $OPT_DISABLE_R2K = 0 || test $OPT_DISABLE_R3KA = 0 || test $OPT_DISABLE_GBZ80 = 0 || test $OPT_DISABLE_TLCS90 = 0; then
-@@ -8885,15 +8780,9 @@ fi
+ if test $OPT_DISABLE_Z80 = 0 || test $OPT_DISABLE_Z180 = 0 || test $OPT_DISABLE_R2K = 0 || test $OPT_DISABLE_R3KA = 0 || test $OPT_DISABLE_GBZ80 = 0 || test $OPT_DISABLE_TLCS90 = 0 || test $OPT_DISABLE_EZ80_Z80 = 0; then
+@@ -8945,15 +8840,9 @@ fi
  
  test $OPT_DISABLE_DEVICE_LIB = 0 && ac_config_files="$ac_config_files device/lib/Makefile"
  
 -test $OPT_DISABLE_DEVICE_LIB = 0 && test $OPT_DISABLE_NON_FREE = 0 && ac_config_files="$ac_config_files device/non-free/lib/Makefile"
 -
  
- ac_config_files="$ac_config_files main.mk:main_in.mk src/Makefile device/include/Makefile sdas/linksrc/Makefile support/librarian/Makefile support/makebin/Makefile support/regression/Makefile support/valdiag/Makefile support/scripts/Makefile support/regression/ports/host/spec.mk:support/regression/ports/host/spec.mk.in Makefile Makefile.common:Makefile.common.in"
+ ac_config_files="$ac_config_files main.mk:main_in.mk src/Makefile device/include/Makefile sdas/linksrc/Makefile support/makebin/Makefile support/regression/Makefile support/valdiag/Makefile support/scripts/Makefile support/regression/ports/host/spec.mk:support/regression/ports/host/spec.mk.in Makefile Makefile.common:Makefile.common.in"
  
 -if test $OPT_DISABLE_NON_FREE = 0; then
 -  ac_config_files="$ac_config_files device/non-free/include/Makefile"
@@ -300,15 +300,15 @@ index 42b1c7d..00ecb51 100755
  cat >confcache <<\_ACEOF
  # This file is a shell script that caches the results of configure
  # tests run on this system so they can be shared between configure
-@@ -9621,7 +9510,6 @@ do
-     "sdas/asstm8/Makefile") CONFIG_FILES="$CONFIG_FILES sdas/asstm8/Makefile" ;;
-     "device/lib/stm8/Makefile") CONFIG_FILES="$CONFIG_FILES device/lib/stm8/Makefile" ;;
+@@ -9692,7 +9581,6 @@ do
+     "device/lib/pdk15-stack-auto/Makefile") CONFIG_FILES="$CONFIG_FILES device/lib/pdk15-stack-auto/Makefile" ;;
+     "sdas/aspdk16/Makefile") CONFIG_FILES="$CONFIG_FILES sdas/aspdk16/Makefile" ;;
      "device/lib/Makefile") CONFIG_FILES="$CONFIG_FILES device/lib/Makefile" ;;
 -    "device/non-free/lib/Makefile") CONFIG_FILES="$CONFIG_FILES device/non-free/lib/Makefile" ;;
      "main.mk") CONFIG_FILES="$CONFIG_FILES main.mk:main_in.mk" ;;
      "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
      "device/include/Makefile") CONFIG_FILES="$CONFIG_FILES device/include/Makefile" ;;
-@@ -9634,7 +9522,6 @@ do
+@@ -9704,7 +9592,6 @@ do
      "support/regression/ports/host/spec.mk") CONFIG_FILES="$CONFIG_FILES support/regression/ports/host/spec.mk:support/regression/ports/host/spec.mk.in" ;;
      "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
      "Makefile.common") CONFIG_FILES="$CONFIG_FILES Makefile.common:Makefile.common.in" ;;
@@ -316,7 +316,7 @@ index 42b1c7d..00ecb51 100755
  
    *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
    esac
-@@ -10443,54 +10330,6 @@ esac
+@@ -10513,54 +10400,6 @@ esac
  incPath3=`echo "$incPath3" | sed 's,\\\\\\\\,\\\\,g'`
  
  
@@ -371,7 +371,7 @@ index 42b1c7d..00ecb51 100755
  
  libPath1=`echo "/${prefix2data_dir}/${norm_lib_dir_suffix}" | sed 's,/\./,/,g'`
  case ":$libPath1:" in
-@@ -10540,54 +10379,6 @@ esac
+@@ -10610,54 +10449,6 @@ esac
  libPath3=`echo "$libPath3" | sed 's,\\\\\\\\,\\\\,g'`
  
  
@@ -426,15 +426,15 @@ index 42b1c7d..00ecb51 100755
  { $as_echo "$as_me:${as_lineno-$LINENO}: result:
  sdcc ${VERSION} is now configured for
  
-@@ -10618,7 +10409,6 @@ sdcc ${VERSION} is now configured for
-     tlcs90              ${enable_tlcs90_port}
-     stm8                ${enable_stm8_port}
+@@ -10694,7 +10485,6 @@ sdcc ${VERSION} is now configured for
+     pdk15               ${enable_pdk15_port}
+     pdk16               ${enable_pdk16_port}
  
 -  Disable non-free lib: ${OPT_DISABLE_NON_FREE}
    Disable packihx:      ${OPT_DISABLE_PACKIHX}
    Disable ucsim:        ${OPT_DISABLE_UCSIM}
    Disable device lib:   ${OPT_DISABLE_DEVICE_LIB}
-@@ -10633,9 +10423,6 @@ sdcc ${VERSION} is now configured for
+@@ -10709,9 +10499,6 @@ sdcc ${VERSION} is now configured for
      include/library files:  ${datadir}/${inclib_dir_suffix}
      include files:          ${datadir}/${include_dir_suffix}
      library files:          ${datadir}/${lib_dir_suffix}
@@ -444,7 +444,7 @@ index 42b1c7d..00ecb51 100755
      documentation:          ${docdir}
  
      prefix:             ${prefix}
-@@ -10647,15 +10434,9 @@ sdcc ${VERSION} is now configured for
+@@ -10723,15 +10510,9 @@ sdcc ${VERSION} is now configured for
      include files:      ${incPath1}
                          path(argv[0])${incPath2}
                          ${incPath3}
@@ -460,15 +460,15 @@ index 42b1c7d..00ecb51 100755
  " >&5
  $as_echo "
  sdcc ${VERSION} is now configured for
-@@ -10687,7 +10468,6 @@ sdcc ${VERSION} is now configured for
-     tlcs90              ${enable_tlcs90_port}
-     stm8                ${enable_stm8_port}
+@@ -10769,7 +10550,6 @@ sdcc ${VERSION} is now configured for
+     pdk15               ${enable_pdk15_port}
+     pdk16               ${enable_pdk16_port}
  
 -  Disable non-free lib: ${OPT_DISABLE_NON_FREE}
    Disable packihx:      ${OPT_DISABLE_PACKIHX}
    Disable ucsim:        ${OPT_DISABLE_UCSIM}
    Disable device lib:   ${OPT_DISABLE_DEVICE_LIB}
-@@ -10702,9 +10482,6 @@ sdcc ${VERSION} is now configured for
+@@ -10784,9 +10564,6 @@ sdcc ${VERSION} is now configured for
      include/library files:  ${datadir}/${inclib_dir_suffix}
      include files:          ${datadir}/${include_dir_suffix}
      library files:          ${datadir}/${lib_dir_suffix}
@@ -478,7 +478,7 @@ index 42b1c7d..00ecb51 100755
      documentation:          ${docdir}
  
      prefix:             ${prefix}
-@@ -10716,14 +10493,8 @@ sdcc ${VERSION} is now configured for
+@@ -10798,14 +10575,8 @@ sdcc ${VERSION} is now configured for
      include files:      ${incPath1}
                          path(argv[0])${incPath2}
                          ${incPath3}
@@ -494,10 +494,10 @@ index 42b1c7d..00ecb51 100755
  " >&6; }
  # End of configure/configure.in
 diff --git a/configure.ac b/configure.ac
-index 3a16e42..bfba129 100644
+index 2185793..76ab155 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -588,19 +588,6 @@ if test "${include_dir_suffix}" = ""; then
+@@ -544,19 +544,6 @@ if test "${include_dir_suffix}" = ""; then
      include_dir_suffix="${inclib_dir_suffix}/include"
  fi
  
@@ -517,7 +517,7 @@ index 3a16e42..bfba129 100644
  # lib_dir_suffix:
  # *nix default: "sdcc/lib"
  AC_ARG_VAR([lib_dir_suffix], [appended to datadir to define SDCC's library root directory])
-@@ -608,13 +595,6 @@ if test "${lib_dir_suffix}" = ""; then
+@@ -564,13 +551,6 @@ if test "${lib_dir_suffix}" = ""; then
      lib_dir_suffix="${inclib_dir_suffix}/lib"
  fi
  
@@ -531,7 +531,7 @@ index 3a16e42..bfba129 100644
  # docdir:
  # *nix default: "${datadir}/sdcc/doc"
  AC_ARG_VAR([docdir], [documentation installation directory])
-@@ -655,19 +635,11 @@ norm_inc_dir_suffix=${include_dir_suffix}
+@@ -611,19 +591,11 @@ norm_inc_dir_suffix=${include_dir_suffix}
  adl_NORMALIZE_PATH([norm_inc_dir_suffix], [$sdccconf_h_dir_separator])
  AC_DEFINE_UNQUOTED(INCLUDE_DIR_SUFFIX,
                     DIR_SEPARATOR_STRING "${norm_inc_dir_suffix}", [XXX])
@@ -551,7 +551,7 @@ index 3a16e42..bfba129 100644
  
  # relative paths
  adl_COMPUTE_RELATIVE_PATHS([expanded_bindir:expanded_datadir:bin2data_dir])
-@@ -836,7 +808,6 @@ AC_DO_DISABLER(packihx,    PACKIHX,    [Disables building packihx])
+@@ -797,7 +769,6 @@ AC_DO_DISABLER(packihx,    PACKIHX,    [Disables building packihx])
  AC_DO_DISABLER(sdcpp,      SDCPP,      [Disables building sdcpp])
  AC_DO_DISABLER(sdcdb,      SDCDB,      [Disables building sdcdb])
  AC_DO_DISABLER(sdbinutils, SDBINUTILS, [Disables configuring and building of sdbinutils])
@@ -559,7 +559,7 @@ index 3a16e42..bfba129 100644
  
  AC_DO_ENABLER(doc,   DOC,   [Enables building the documentation])
  AC_CHECK_PROG([LYX],        [lyx],        [lyx],        [:])
-@@ -907,16 +878,10 @@ if test $OPT_DISABLE_PIC14 = 0; then
+@@ -868,16 +839,10 @@ if test $OPT_DISABLE_PIC14 = 0; then
    AC_CONFIG_FILES(src/pic14/Makefile)
    test $OPT_DISABLE_DEVICE_LIB = 0 && AC_CONFIG_SUBDIRS(device/lib/pic14)
  fi
@@ -574,17 +574,17 @@ index 3a16e42..bfba129 100644
 -  test $OPT_DISABLE_DEVICE_LIB = 0 && AC_CONFIG_SUBDIRS(device/non-free/lib/pic16)
 -fi
  
- if test $OPT_DISABLE_Z80 = 0 || test $OPT_DISABLE_Z180 = 0 || test $OPT_DISABLE_R2K = 0 || test $OPT_DISABLE_R3KA = 0 || test $OPT_DISABLE_GBZ80 = 0 || test $OPT_DISABLE_TLCS90 = 0; then
+ if test $OPT_DISABLE_Z80 = 0 || test $OPT_DISABLE_Z180 = 0 || test $OPT_DISABLE_R2K = 0 || test $OPT_DISABLE_R3KA = 0 || test $OPT_DISABLE_GBZ80 = 0 || test $OPT_DISABLE_TLCS90 = 0 || test $OPT_DISABLE_EZ80_Z80 = 0; then
    AC_CONFIG_FILES([src/z80/Makefile])
-@@ -951,7 +916,6 @@ if test $OPT_DISABLE_STM8 = 0; then
- fi
+@@ -939,7 +904,6 @@ fi
+ 
  
  test $OPT_DISABLE_DEVICE_LIB = 0 && AC_CONFIG_FILES([device/lib/Makefile])
 -test $OPT_DISABLE_DEVICE_LIB = 0 && test $OPT_DISABLE_NON_FREE = 0 && AC_CONFIG_FILES([device/non-free/lib/Makefile])
  
  AC_CONFIG_FILES([main.mk:main_in.mk
  src/Makefile
-@@ -966,9 +930,6 @@ support/regression/ports/host/spec.mk:support/regression/ports/host/spec.mk.in
+@@ -953,9 +917,6 @@ support/regression/ports/host/spec.mk:support/regression/ports/host/spec.mk.in
  Makefile
  Makefile.common:Makefile.common.in
  ])
@@ -594,7 +594,7 @@ index 3a16e42..bfba129 100644
  AC_OUTPUT
  
  # I found no better place
-@@ -986,16 +947,10 @@ adl_NORMALIZE_PATH_MSG(/${prefix2bin_dir},                         [binPath],  [
+@@ -973,16 +934,10 @@ adl_NORMALIZE_PATH_MSG(/${prefix2bin_dir},                         [binPath],  [
  adl_NORMALIZE_PATH_MSG(/${prefix2data_dir}/${norm_inc_dir_suffix}, [incPath1], [$dirch])
  adl_NORMALIZE_PATH_MSG(/${bin2data_dir}/${norm_inc_dir_suffix},    [incPath2], [$dirch])
  adl_NORMALIZE_PATH_MSG(${expanded_datadir}/${norm_inc_dir_suffix}, [incPath3], [$dirch])
@@ -611,15 +611,15 @@ index 3a16e42..bfba129 100644
  
  AC_MSG_RESULT([
  sdcc ${VERSION} is now configured for
-@@ -1027,7 +982,6 @@ sdcc ${VERSION} is now configured for
-     tlcs90              ${enable_tlcs90_port}
-     stm8                ${enable_stm8_port}
+@@ -1020,7 +975,6 @@ sdcc ${VERSION} is now configured for
+     pdk15               ${enable_pdk15_port}
+     pdk16               ${enable_pdk16_port}
  
 -  Disable non-free lib: ${OPT_DISABLE_NON_FREE}
    Disable packihx:      ${OPT_DISABLE_PACKIHX}
    Disable ucsim:        ${OPT_DISABLE_UCSIM}
    Disable device lib:   ${OPT_DISABLE_DEVICE_LIB}
-@@ -1042,9 +996,6 @@ sdcc ${VERSION} is now configured for
+@@ -1035,9 +989,6 @@ sdcc ${VERSION} is now configured for
      include/library files:  ${datadir}/${inclib_dir_suffix}
      include files:          ${datadir}/${include_dir_suffix}
      library files:          ${datadir}/${lib_dir_suffix}
@@ -629,7 +629,7 @@ index 3a16e42..bfba129 100644
      documentation:          ${docdir}
  
      prefix:             ${prefix}
-@@ -1056,14 +1007,8 @@ sdcc ${VERSION} is now configured for
+@@ -1049,14 +1000,8 @@ sdcc ${VERSION} is now configured for
      include files:      ${incPath1}
                          path(argv[[0]])${incPath2}
                          ${incPath3}
@@ -645,193 +645,211 @@ index 3a16e42..bfba129 100644
  ])
  # End of configure/configure.in
 diff --git a/device/lib/pic14/Makefile.common b/device/lib/pic14/Makefile.common
-index e456838..8179255 100644
+index 019fe0f..da3389d 100644
 --- a/device/lib/pic14/Makefile.common
 +++ b/device/lib/pic14/Makefile.common
-@@ -3,11 +3,10 @@ EARCH ?= @EARCH@
- 
+@@ -68,14 +68,14 @@ GENERIC_SRC_DIR_ABS = $(abspath $(GENERIC_SRC_DIR))
  AM_CPPFLAGS =
  AM_CPPFLAGS += -I.
--AM_CPPFLAGS += -I$(top_srcdir)/../../include/pic14 -I$(top_srcdir)/../../non-free/include/pic14
-+AM_CPPFLAGS += -I$(top_srcdir)/../../include/pic14
+ AM_CPPFLAGS += -I$(top_srcdir)
+-AM_CPPFLAGS += -I$(DEVICE_TOP_DIR)/include/pic14 -I$(DEVICE_TOP_DIR)/non-free/include/pic14 -I$(DEVICE_TOP_DIR)/include
++AM_CPPFLAGS += -I$(DEVICE_TOP_DIR)/include/pic14 -I$(DEVICE_TOP_DIR)/include
  
- AM_CFLAGS =
- AM_CFLAGS += -mpic14 -p$(ARCH)
--AM_CFLAGS += --no-warn-non-free
- AM_CFLAGS += --std-c99
- #AM_CFLAGS += --asm="$(CCAS)"
- ##AM_CFLAGS += -Wa,-q
-@@ -29,7 +28,7 @@ AM_CFLAGS += --i-code-in-asm
+ ############################################################
+ # C compiler flags
+ ############################################################
  
+ SDCC_FLAGS =
+-SDCC_FLAGS += -mpic14 --less-pedantic --no-warn-non-free --i-code-in-asm --fverbose-asm
++SDCC_FLAGS += -mpic14 --less-pedantic --i-code-in-asm --fverbose-asm
+ SDCC_FLAGS += --std-c11
+ 
+ # extra flags for enhanced cores
+@@ -113,7 +113,7 @@ AM_CFLAGS_EOX = -p$(EARCH) $(SDCC_FLAGS) $(SDCC_FLAGS_ENHANCED) $(SDCC_FLAGS_NOO
  AM_CCASFLAGS =
  AM_CCASFLAGS += -p$(ARCH)
--AM_CCASFLAGS += -I$(top_srcdir)/../../include/pic14 -I$(top_srcdir)/../../non-free/include/pic14
-+AM_CCASFLAGS += -I$(top_srcdir)/../../include/pic14
  AM_CCASFLAGS += -I$(srcdir)
+-AM_CCASFLAGS += -I$(DEVICE_TOP_DIR)/include/pic14 -I$(DEVICE_TOP_DIR)/non-free/include/pic14
++AM_CCASFLAGS += -I$(DEVICE_TOP_DIR)/include/pic14
  
- clean-local:
+ ############################################################
+ # Common actions
 diff --git a/device/lib/pic14/Makefile.in b/device/lib/pic14/Makefile.in
-index f1c9940..de47dbe 100644
+index 39b6cb0..ae3e37b 100644
 --- a/device/lib/pic14/Makefile.in
 +++ b/device/lib/pic14/Makefile.in
-@@ -297,15 +297,13 @@ top_build_prefix = @top_build_prefix@
- top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
- SUBDIRS = libm libsdcc/regular $(am__append_1) $(am__append_2)
--AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic14 \
--	-I$(top_srcdir)/../../non-free/include/pic14
-+AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic14
- #AM_CFLAGS += --asm="$(CCAS)"
- 
- #AM_CFLAGS += --debug-ralloc
- #AM_CFLAGS += --debug-xtra
- #AM_CFLAGS += --pcode-verbose
--AM_CFLAGS = -mpic14 -p$(ARCH) --no-warn-non-free --std-c99 \
--	--i-code-in-asm
-+AM_CFLAGS = -mpic14 -p$(ARCH) --std-c99 --i-code-in-asm
- 
- #AM_CFLAGS += --no-pcode-opt
- 
-@@ -316,8 +314,7 @@ AM_CFLAGS = -mpic14 -p$(ARCH) --no-warn-non-free --std-c99 \
- #AM_CFLAGS += --noinduction
- #AM_CFLAGS += --nojtbound
- #AM_CFLAGS += --noloopreverse
--AM_CCASFLAGS = -p$(ARCH) -I$(top_srcdir)/../../include/pic14 \
--	-I$(top_srcdir)/../../non-free/include/pic14 -I$(srcdir)
-+AM_CCASFLAGS = -p$(ARCH) -I$(top_srcdir)/../../include/pic14 -I$(srcdir)
- DISTCLEANFILES = a.cod a.hex ./.checkdevices/*
- all: config.h
- 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+@@ -335,13 +335,12 @@ GENERIC_SRC_DIR_ABS = $(abspath $(GENERIC_SRC_DIR))
+ # C preprocessor flags
+ ############################################################
+ AM_CPPFLAGS = -I. -I$(top_srcdir) -I$(DEVICE_TOP_DIR)/include/pic14 \
+-	-I$(DEVICE_TOP_DIR)/non-free/include/pic14 \
+ 	-I$(DEVICE_TOP_DIR)/include
+ 
+ ############################################################
+ # C compiler flags
+ ############################################################
+-SDCC_FLAGS = -mpic14 --less-pedantic --no-warn-non-free \
++SDCC_FLAGS = -mpic14 --less-pedantic \
+ 	--i-code-in-asm --fverbose-asm --std-c11 $(am__append_4)
+ 
+ # extra flags for enhanced cores
+@@ -366,8 +365,7 @@ AM_CFLAGS_EOX = -p$(EARCH) $(SDCC_FLAGS) $(SDCC_FLAGS_ENHANCED) $(SDCC_FLAGS_NOO
+ ############################################################
+ # Assembler flags
+ ############################################################
+-AM_CCASFLAGS = -p$(ARCH) -I$(srcdir) -I$(DEVICE_TOP_DIR)/include/pic14 \
+-	-I$(DEVICE_TOP_DIR)/non-free/include/pic14
++AM_CCASFLAGS = -p$(ARCH) -I$(srcdir) -I$(DEVICE_TOP_DIR)/include/pic14
+ 
+ # extensions generated by the build process
+ CLEAN_EXTENSIONS = .asm .lst .sym .d .p .g .v .adb
+diff --git a/device/lib/pic14/libc/Makefile.in b/device/lib/pic14/libc/Makefile.in
+index 0efeeb0..d4dd8e6 100644
+--- a/device/lib/pic14/libc/Makefile.in
++++ b/device/lib/pic14/libc/Makefile.in
+@@ -878,13 +878,12 @@ GENERIC_SRC_DIR_ABS = $(abspath $(GENERIC_SRC_DIR))
+ # C preprocessor flags
+ ############################################################
+ AM_CPPFLAGS = -I. -I$(top_srcdir) -I$(DEVICE_TOP_DIR)/include/pic14 \
+-	-I$(DEVICE_TOP_DIR)/non-free/include/pic14 \
+ 	-I$(DEVICE_TOP_DIR)/include
+ 
+ ############################################################
+ # C compiler flags
+ ############################################################
+-SDCC_FLAGS = -mpic14 --less-pedantic --no-warn-non-free \
++SDCC_FLAGS = -mpic14 --less-pedantic \
+ 	--i-code-in-asm --fverbose-asm --std-c11 $(am__append_9)
+ 
+ # extra flags for enhanced cores
+@@ -909,8 +908,7 @@ AM_CFLAGS_EOX = -p$(EARCH) $(SDCC_FLAGS) $(SDCC_FLAGS_ENHANCED) $(SDCC_FLAGS_NOO
+ ############################################################
+ # Assembler flags
+ ############################################################
+-AM_CCASFLAGS = -p$(ARCH) -I$(srcdir) -I$(DEVICE_TOP_DIR)/include/pic14 \
+-	-I$(DEVICE_TOP_DIR)/non-free/include/pic14
++AM_CCASFLAGS = -p$(ARCH) -I$(srcdir) -I$(DEVICE_TOP_DIR)/include/pic14
+ 
+ # extensions generated by the build process
+ CLEAN_EXTENSIONS = .asm .lst .sym .d .p .g .v .adb
 diff --git a/device/lib/pic14/libm/Makefile.in b/device/lib/pic14/libm/Makefile.in
-index fd9fd2e..4a7d250 100644
+index f0dc9ca..98ed2cf 100644
 --- a/device/lib/pic14/libm/Makefile.in
 +++ b/device/lib/pic14/libm/Makefile.in
-@@ -299,15 +299,13 @@ libm_a_SOURCES = acosf.c asincosf.c asinf.c atan2f.c atanf.c ceilf.c \
- libm_a_CFLAGS = -p$(ARCH) $(AM_CFLAGS)
- libme_a_SOURCES = $(libm_a_SOURCES)
- libme_a_CFLAGS = -p$(EARCH) $(AM_CFLAGS) $(am__append_2)
--AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic14 \
--	-I$(top_srcdir)/../../non-free/include/pic14
-+AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic14
- #AM_CFLAGS += --asm="$(CCAS)"
- 
- #AM_CFLAGS += --debug-ralloc
- #AM_CFLAGS += --debug-xtra
- #AM_CFLAGS += --pcode-verbose
--AM_CFLAGS = -mpic14 -p$(ARCH) --no-warn-non-free --std-c99 \
--	--i-code-in-asm
-+AM_CFLAGS = -mpic14 -p$(ARCH) --std-c99 --i-code-in-asm
- 
- #AM_CFLAGS += --no-pcode-opt
- 
-@@ -318,8 +316,7 @@ AM_CFLAGS = -mpic14 -p$(ARCH) --no-warn-non-free --std-c99 \
- #AM_CFLAGS += --noinduction
- #AM_CFLAGS += --nojtbound
- #AM_CFLAGS += --noloopreverse
--AM_CCASFLAGS = -p$(ARCH) -I$(top_srcdir)/../../include/pic14 \
--	-I$(top_srcdir)/../../non-free/include/pic14 -I$(srcdir)
-+AM_CCASFLAGS = -p$(ARCH) -I$(top_srcdir)/../../include/pic14 -I$(srcdir)
- all: all-am
- 
- .SUFFIXES:
+@@ -511,13 +511,12 @@ GENERIC_SRC_DIR_ABS = $(abspath $(GENERIC_SRC_DIR))
+ # C preprocessor flags
+ ############################################################
+ AM_CPPFLAGS = -I. -I$(top_srcdir) -I$(DEVICE_TOP_DIR)/include/pic14 \
+-	-I$(DEVICE_TOP_DIR)/non-free/include/pic14 \
+ 	-I$(DEVICE_TOP_DIR)/include
+ 
+ ############################################################
+ # C compiler flags
+ ############################################################
+-SDCC_FLAGS = -mpic14 --less-pedantic --no-warn-non-free \
++SDCC_FLAGS = -mpic14 --less-pedantic \
+ 	--i-code-in-asm --fverbose-asm --std-c11 $(am__append_9)
+ 
+ # extra flags for enhanced cores
+@@ -542,8 +541,7 @@ AM_CFLAGS_EOX = -p$(EARCH) $(SDCC_FLAGS) $(SDCC_FLAGS_ENHANCED) $(SDCC_FLAGS_NOO
+ ############################################################
+ # Assembler flags
+ ############################################################
+-AM_CCASFLAGS = -p$(ARCH) -I$(srcdir) -I$(DEVICE_TOP_DIR)/include/pic14 \
+-	-I$(DEVICE_TOP_DIR)/non-free/include/pic14
++AM_CCASFLAGS = -p$(ARCH) -I$(srcdir) -I$(DEVICE_TOP_DIR)/include/pic14
+ 
+ # extensions generated by the build process
+ CLEAN_EXTENSIONS = .asm .lst .sym .d .p .g .v .adb
 diff --git a/device/lib/pic14/libsdcc/enhanced-no-xinst/Makefile.in b/device/lib/pic14/libsdcc/enhanced-no-xinst/Makefile.in
-index e946da7..bced941 100644
+index 098ec94..d1240ba 100644
 --- a/device/lib/pic14/libsdcc/enhanced-no-xinst/Makefile.in
 +++ b/device/lib/pic14/libsdcc/enhanced-no-xinst/Makefile.in
-@@ -311,15 +311,13 @@ libsdcce_a_SOURCES = ../_divschar.c ../_divsint.c ../_divslong.c \
- 	_gptrput3.S _gptrput4.S macros.inc
- libsdcce_a_CFLAGS = -p$(EARCH) $(AM_CFLAGS)
- CLEANFILES = ../*.asm ../*.lst
--AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic14 \
--	-I$(top_srcdir)/../../non-free/include/pic14
-+AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic14
- #AM_CFLAGS += --asm="$(CCAS)"
- 
- #AM_CFLAGS += --debug-ralloc
- #AM_CFLAGS += --debug-xtra
- #AM_CFLAGS += --pcode-verbose
--AM_CFLAGS = -mpic14 -p$(ARCH) --no-warn-non-free --std-c99 \
--	--i-code-in-asm
-+AM_CFLAGS = -mpic14 -p$(ARCH) --std-c99 --i-code-in-asm
- 
- #AM_CFLAGS += --no-pcode-opt
- 
-@@ -330,8 +328,7 @@ AM_CFLAGS = -mpic14 -p$(ARCH) --no-warn-non-free --std-c99 \
- #AM_CFLAGS += --noinduction
- #AM_CFLAGS += --nojtbound
- #AM_CFLAGS += --noloopreverse
--AM_CCASFLAGS = -p$(ARCH) -I$(top_srcdir)/../../include/pic14 \
--	-I$(top_srcdir)/../../non-free/include/pic14 -I$(srcdir)
-+AM_CCASFLAGS = -p$(ARCH) -I$(top_srcdir)/../../include/pic14 -I$(srcdir)
- all: all-am
- 
- .SUFFIXES:
+@@ -518,13 +518,12 @@ GENERIC_SRC_DIR_ABS = $(abspath $(GENERIC_SRC_DIR))
+ # C preprocessor flags
+ ############################################################
+ AM_CPPFLAGS = -I. -I$(top_srcdir) -I$(DEVICE_TOP_DIR)/include/pic14 \
+-	-I$(DEVICE_TOP_DIR)/non-free/include/pic14 \
+ 	-I$(DEVICE_TOP_DIR)/include
+ 
+ ############################################################
+ # C compiler flags
+ ############################################################
+-SDCC_FLAGS = -mpic14 --less-pedantic --no-warn-non-free \
++SDCC_FLAGS = -mpic14 --less-pedantic \
+ 	--i-code-in-asm --fverbose-asm --std-c11 $(am__append_5)
+ 
+ # extra flags for enhanced cores
+@@ -549,8 +548,7 @@ AM_CFLAGS_EOX = -p$(EARCH) $(SDCC_FLAGS) $(SDCC_FLAGS_ENHANCED) $(SDCC_FLAGS_NOO
+ ############################################################
+ # Assembler flags
+ ############################################################
+-AM_CCASFLAGS = -p$(ARCH) -I$(srcdir) -I$(DEVICE_TOP_DIR)/include/pic14 \
+-	-I$(DEVICE_TOP_DIR)/non-free/include/pic14
++AM_CCASFLAGS = -p$(ARCH) -I$(srcdir) -I$(DEVICE_TOP_DIR)/include/pic14
+ 
+ # extensions generated by the build process
+ CLEAN_EXTENSIONS = .asm .lst .sym .d .p .g .v .adb
 diff --git a/device/lib/pic14/libsdcc/enhanced/Makefile.in b/device/lib/pic14/libsdcc/enhanced/Makefile.in
-index 7fe1e25..854f87f 100644
+index d2dba9c..0857601 100644
 --- a/device/lib/pic14/libsdcc/enhanced/Makefile.in
 +++ b/device/lib/pic14/libsdcc/enhanced/Makefile.in
-@@ -311,15 +311,13 @@ libsdcce_a_SOURCES = ../_divschar.c ../_divsint.c ../_divslong.c \
- 	_gptrput3.S _gptrput4.S macros.inc
- libsdcce_a_CFLAGS = -p$(EARCH) $(AM_CFLAGS)
- CLEANFILES = ../*.asm ../*.lst
--AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic14 \
--	-I$(top_srcdir)/../../non-free/include/pic14
-+AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic14
- #AM_CFLAGS += --asm="$(CCAS)"
- 
- #AM_CFLAGS += --debug-ralloc
- #AM_CFLAGS += --debug-xtra
- #AM_CFLAGS += --pcode-verbose
--AM_CFLAGS = -mpic14 -p$(ARCH) --no-warn-non-free --std-c99 \
--	--i-code-in-asm
-+AM_CFLAGS = -mpic14 -p$(ARCH) --std-c99 --i-code-in-asm
- 
- #AM_CFLAGS += --no-pcode-opt
- 
-@@ -330,8 +328,7 @@ AM_CFLAGS = -mpic14 -p$(ARCH) --no-warn-non-free --std-c99 \
- #AM_CFLAGS += --noinduction
- #AM_CFLAGS += --nojtbound
- #AM_CFLAGS += --noloopreverse
--AM_CCASFLAGS = -p$(ARCH) -I$(top_srcdir)/../../include/pic14 \
--	-I$(top_srcdir)/../../non-free/include/pic14 -I$(srcdir)
-+AM_CCASFLAGS = -p$(ARCH) -I$(top_srcdir)/../../include/pic14 -I$(srcdir)
- all: all-am
- 
- .SUFFIXES:
+@@ -518,13 +518,12 @@ GENERIC_SRC_DIR_ABS = $(abspath $(GENERIC_SRC_DIR))
+ # C preprocessor flags
+ ############################################################
+ AM_CPPFLAGS = -I. -I$(top_srcdir) -I$(DEVICE_TOP_DIR)/include/pic14 \
+-	-I$(DEVICE_TOP_DIR)/non-free/include/pic14 \
+ 	-I$(DEVICE_TOP_DIR)/include
+ 
+ ############################################################
+ # C compiler flags
+ ############################################################
+-SDCC_FLAGS = -mpic14 --less-pedantic --no-warn-non-free \
++SDCC_FLAGS = -mpic14 --less-pedantic \
+ 	--i-code-in-asm --fverbose-asm --std-c11 $(am__append_5)
+ 
+ # extra flags for enhanced cores
+@@ -549,8 +548,7 @@ AM_CFLAGS_EOX = -p$(EARCH) $(SDCC_FLAGS) $(SDCC_FLAGS_ENHANCED) $(SDCC_FLAGS_NOO
+ ############################################################
+ # Assembler flags
+ ############################################################
+-AM_CCASFLAGS = -p$(ARCH) -I$(srcdir) -I$(DEVICE_TOP_DIR)/include/pic14 \
+-	-I$(DEVICE_TOP_DIR)/non-free/include/pic14
++AM_CCASFLAGS = -p$(ARCH) -I$(srcdir) -I$(DEVICE_TOP_DIR)/include/pic14
+ 
+ # extensions generated by the build process
+ CLEAN_EXTENSIONS = .asm .lst .sym .d .p .g .v .adb
 diff --git a/device/lib/pic14/libsdcc/regular/Makefile.in b/device/lib/pic14/libsdcc/regular/Makefile.in
-index 29a5924..8c60a49 100644
+index 3c9bccd..9430fb5 100644
 --- a/device/lib/pic14/libsdcc/regular/Makefile.in
 +++ b/device/lib/pic14/libsdcc/regular/Makefile.in
-@@ -304,15 +304,13 @@ libsdcc_a_SOURCES = ../_divschar.c ../_divsint.c ../_divslong.c \
- 	_gptrput3.S _gptrput4.S macros.inc shadowregs.c
- libsdcc_a_CFLAGS = -p$(ARCH) $(AM_CFLAGS)
- CLEANFILES = ../*.asm ../*.lst
--AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic14 \
--	-I$(top_srcdir)/../../non-free/include/pic14
-+AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic14
- #AM_CFLAGS += --asm="$(CCAS)"
- 
- #AM_CFLAGS += --debug-ralloc
- #AM_CFLAGS += --debug-xtra
- #AM_CFLAGS += --pcode-verbose
--AM_CFLAGS = -mpic14 -p$(ARCH) --no-warn-non-free --std-c99 \
--	--i-code-in-asm
-+AM_CFLAGS = -mpic14 -p$(ARCH) --std-c99 --i-code-in-asm
- 
- #AM_CFLAGS += --no-pcode-opt
- 
-@@ -323,8 +321,7 @@ AM_CFLAGS = -mpic14 -p$(ARCH) --no-warn-non-free --std-c99 \
- #AM_CFLAGS += --noinduction
- #AM_CFLAGS += --nojtbound
- #AM_CFLAGS += --noloopreverse
--AM_CCASFLAGS = -p$(ARCH) -I$(top_srcdir)/../../include/pic14 \
--	-I$(top_srcdir)/../../non-free/include/pic14 -I$(srcdir)
-+AM_CCASFLAGS = -p$(ARCH) -I$(top_srcdir)/../../include/pic14 -I$(srcdir)
- all: all-am
- 
- .SUFFIXES:
+@@ -511,13 +511,12 @@ GENERIC_SRC_DIR_ABS = $(abspath $(GENERIC_SRC_DIR))
+ # C preprocessor flags
+ ############################################################
+ AM_CPPFLAGS = -I. -I$(top_srcdir) -I$(DEVICE_TOP_DIR)/include/pic14 \
+-	-I$(DEVICE_TOP_DIR)/non-free/include/pic14 \
+ 	-I$(DEVICE_TOP_DIR)/include
+ 
+ ############################################################
+ # C compiler flags
+ ############################################################
+-SDCC_FLAGS = -mpic14 --less-pedantic --no-warn-non-free \
++SDCC_FLAGS = -mpic14 --less-pedantic \
+ 	--i-code-in-asm --fverbose-asm --std-c11 $(am__append_5)
+ 
+ # extra flags for enhanced cores
+@@ -542,8 +541,7 @@ AM_CFLAGS_EOX = -p$(EARCH) $(SDCC_FLAGS) $(SDCC_FLAGS_ENHANCED) $(SDCC_FLAGS_NOO
+ ############################################################
+ # Assembler flags
+ ############################################################
+-AM_CCASFLAGS = -p$(ARCH) -I$(srcdir) -I$(DEVICE_TOP_DIR)/include/pic14 \
+-	-I$(DEVICE_TOP_DIR)/non-free/include/pic14
++AM_CCASFLAGS = -p$(ARCH) -I$(srcdir) -I$(DEVICE_TOP_DIR)/include/pic14
+ 
+ # extensions generated by the build process
+ CLEAN_EXTENSIONS = .asm .lst .sym .d .p .g .v .adb
 diff --git a/device/lib/pic16/Makefile.common b/device/lib/pic16/Makefile.common
-index 73200d7..e298bf5 100644
+index 01ad950..62839b9 100644
 --- a/device/lib/pic16/Makefile.common
 +++ b/device/lib/pic16/Makefile.common
 @@ -1,11 +1,10 @@
@@ -841,7 +859,7 @@ index 73200d7..e298bf5 100644
 +AM_CPPFLAGS += -I$(top_srcdir)/../../include/pic16
  
  AM_CFLAGS =
- AM_CFLAGS += --std-c99
+ AM_CFLAGS += --std-c11
  AM_CFLAGS += --asm="$(CCAS)"
 -AM_CFLAGS += --no-warn-non-free
  ##AM_CFLAGS += -Wa,-q
@@ -857,7 +875,7 @@ index 73200d7..e298bf5 100644
  
  clean-local:
 diff --git a/device/lib/pic16/Makefile.in b/device/lib/pic16/Makefile.in
-index b17f151..31ecfa4 100644
+index 15d2e1d..9664ad4 100644
 --- a/device/lib/pic16/Makefile.in
 +++ b/device/lib/pic16/Makefile.in
 @@ -87,10 +87,7 @@ PRE_UNINSTALL = :
@@ -886,8 +904,8 @@ index b17f151..31ecfa4 100644
  #AM_CFLAGS += --noinduction
  #AM_CFLAGS += --nojtbound
  #AM_CFLAGS += --noloopreverse
--AM_CFLAGS = --std-c99 --asm="$(CCAS)" --no-warn-non-free \
-+AM_CFLAGS = --std-c99 --asm="$(CCAS)" \
+-AM_CFLAGS = --std-c11 --asm="$(CCAS)" --no-warn-non-free \
++AM_CFLAGS = --std-c11 --asm="$(CCAS)" \
  	--fomit-frame-pointer --obanksel=9 --denable-peeps \
  	--optimize-cmp --optimize-df --i-code-in-asm @USE_FLOATS@
 -AM_CCASFLAGS = -I$(top_srcdir)/../../include/pic16 \
@@ -897,7 +915,7 @@ index b17f151..31ecfa4 100644
  all: config.h
  	$(MAKE) $(AM_MAKEFLAGS) all-recursive
 diff --git a/device/lib/pic16/configure b/device/lib/pic16/configure
-index d8760a0..eaea231 100755
+index c8f5b98..76f93a8 100755
 --- a/device/lib/pic16/configure
 +++ b/device/lib/pic16/configure
 @@ -3657,7 +3657,6 @@ fi
@@ -924,7 +942,7 @@ index 3966c11..cdbffc7 100644
  
  # Checks for header files.
 diff --git a/device/lib/pic16/debug/Makefile.in b/device/lib/pic16/debug/Makefile.in
-index bc77b98..724a443 100644
+index df593e3..8cb5137 100644
 --- a/device/lib/pic16/debug/Makefile.in
 +++ b/device/lib/pic16/debug/Makefile.in
 @@ -88,10 +88,7 @@ PRE_UNINSTALL = :
@@ -939,7 +957,7 @@ index bc77b98..724a443 100644
  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
  	$(ACLOCAL_M4)
  DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-@@ -290,8 +287,7 @@ top_builddir = @top_builddir@
+@@ -291,8 +288,7 @@ top_builddir = @top_builddir@
  top_srcdir = @top_srcdir@
  lib_LIBRARIES = libdebug.a
  libdebug_a_SOURCES = gstack/gstack.c
@@ -949,12 +967,12 @@ index bc77b98..724a443 100644
  #AM_CFLAGS += --no-optimize-goto
  
  #AM_CFLAGS += --debug-ralloc
-@@ -305,11 +301,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+@@ -306,11 +302,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
  #AM_CFLAGS += --noinduction
  #AM_CFLAGS += --nojtbound
  #AM_CFLAGS += --noloopreverse
--AM_CFLAGS = --std-c99 --asm="$(CCAS)" --no-warn-non-free \
-+AM_CFLAGS = --std-c99 --asm="$(CCAS)" \
+-AM_CFLAGS = --std-c11 --asm="$(CCAS)" --no-warn-non-free \
++AM_CFLAGS = --std-c11 --asm="$(CCAS)" \
  	--fomit-frame-pointer --obanksel=9 --denable-peeps \
  	--optimize-cmp --optimize-df --i-code-in-asm @USE_FLOATS@
 -AM_CCASFLAGS = -I$(top_srcdir)/../../include/pic16 \
@@ -964,7 +982,7 @@ index bc77b98..724a443 100644
  
  .SUFFIXES:
 diff --git a/device/lib/pic16/libc/Makefile.in b/device/lib/pic16/libc/Makefile.in
-index 6d2699f..5546319 100644
+index 85bec90..c0ea488 100644
 --- a/device/lib/pic16/libc/Makefile.in
 +++ b/device/lib/pic16/libc/Makefile.in
 @@ -88,10 +88,7 @@ PRE_UNINSTALL = :
@@ -979,7 +997,7 @@ index 6d2699f..5546319 100644
  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
  	$(ACLOCAL_M4)
  DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-@@ -344,8 +341,7 @@ libc18f_a_SOURCES = ctype/iscntrl.c ctype/isdigit.c ctype/isgraph.c \
+@@ -381,8 +378,7 @@ libc18f_a_SOURCES = ctype/iscntrl.c ctype/isdigit.c ctype/isgraph.c \
  	string/strpbrk.c string/strrchr.c string/strspn.c \
  	string/strstr.c string/strtok.c string/strupr.c \
  	utils/cnvfrac.S utils/cnvint.S utils/cvtdec.S
@@ -989,12 +1007,12 @@ index 6d2699f..5546319 100644
  #AM_CFLAGS += --no-optimize-goto
  
  #AM_CFLAGS += --debug-ralloc
-@@ -359,11 +355,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+@@ -396,11 +392,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
  #AM_CFLAGS += --noinduction
  #AM_CFLAGS += --nojtbound
  #AM_CFLAGS += --noloopreverse
--AM_CFLAGS = --std-c99 --asm="$(CCAS)" --no-warn-non-free \
-+AM_CFLAGS = --std-c99 --asm="$(CCAS)" \
+-AM_CFLAGS = --std-c11 --asm="$(CCAS)" --no-warn-non-free \
++AM_CFLAGS = --std-c11 --asm="$(CCAS)" \
  	--fomit-frame-pointer --obanksel=9 --denable-peeps \
  	--optimize-cmp --optimize-df --i-code-in-asm @USE_FLOATS@
 -AM_CCASFLAGS = -I$(top_srcdir)/../../include/pic16 \
@@ -1004,7 +1022,7 @@ index 6d2699f..5546319 100644
  
  .SUFFIXES:
 diff --git a/device/lib/pic16/libio/Makefile.in b/device/lib/pic16/libio/Makefile.in
-index 0d7c731..64b56c8 100644
+index 06fff29..78fe388 100644
 --- a/device/lib/pic16/libio/Makefile.in
 +++ b/device/lib/pic16/libio/Makefile.in
 @@ -481,10 +481,7 @@ POST_UNINSTALL = :
@@ -1019,7 +1037,7 @@ index 0d7c731..64b56c8 100644
  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
  	$(ACLOCAL_M4)
  DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-@@ -9826,8 +9823,7 @@ libio18lf8722_a_SOURCES = dummy.c i2c/i2cack.c i2c/i2cclose.c \
+@@ -15600,8 +15597,7 @@ libio18lf8722_a_SOURCES = dummy.c i2c/i2cack.c i2c/i2cclose.c \
  libio18lf8722_a_CFLAGS = -p18lf8722 $(AM_CFLAGS)
  libio18lf8723_a_SOURCES = dummy.c
  libio18lf8723_a_CFLAGS = -p18lf8723 $(AM_CFLAGS)
@@ -1029,12 +1047,12 @@ index 0d7c731..64b56c8 100644
  #AM_CFLAGS += --no-optimize-goto
  
  #AM_CFLAGS += --debug-ralloc
-@@ -9841,11 +9837,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+@@ -15615,11 +15611,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
  #AM_CFLAGS += --noinduction
  #AM_CFLAGS += --nojtbound
  #AM_CFLAGS += --noloopreverse
--AM_CFLAGS = --std-c99 --asm="$(CCAS)" --no-warn-non-free \
-+AM_CFLAGS = --std-c99 --asm="$(CCAS)" \
+-AM_CFLAGS = --std-c11 --asm="$(CCAS)" --no-warn-non-free \
++AM_CFLAGS = --std-c11 --asm="$(CCAS)" \
  	--fomit-frame-pointer --obanksel=9 --denable-peeps \
  	--optimize-cmp --optimize-df --i-code-in-asm @USE_FLOATS@
 -AM_CCASFLAGS = -I$(top_srcdir)/../../include/pic16 \
@@ -1089,7 +1107,7 @@ index 211604e..e8896bf 100755
  include \$(top_srcdir)/Makefile.common
  
 diff --git a/device/lib/pic16/libm/Makefile.in b/device/lib/pic16/libm/Makefile.in
-index 7f90e89..94cd985 100644
+index 6728a39..495459e 100644
 --- a/device/lib/pic16/libm/Makefile.in
 +++ b/device/lib/pic16/libm/Makefile.in
 @@ -88,10 +88,7 @@ PRE_UNINSTALL = :
@@ -1104,7 +1122,7 @@ index 7f90e89..94cd985 100644
  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
  	$(ACLOCAL_M4)
  DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-@@ -299,8 +296,7 @@ libm18f_a_SOURCES = acosf.c asincosf.c asinf.c atan2f.c atanf.c \
+@@ -312,8 +309,7 @@ libm18f_a_SOURCES = acosf.c asincosf.c asinf.c atan2f.c atanf.c \
  	frexpf.c isinf.c isnan.c ldexpf.c log10f.c logf.c modff.c \
  	powf.c sincosf.c sincoshf.c sinf.c sinhf.c sqrtf.c tancotf.c \
  	tanf.c tanhf.c
@@ -1114,12 +1132,12 @@ index 7f90e89..94cd985 100644
  #AM_CFLAGS += --no-optimize-goto
  
  #AM_CFLAGS += --debug-ralloc
-@@ -314,11 +310,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+@@ -327,11 +323,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
  #AM_CFLAGS += --noinduction
  #AM_CFLAGS += --nojtbound
  #AM_CFLAGS += --noloopreverse
--AM_CFLAGS = --std-c99 --asm="$(CCAS)" --no-warn-non-free \
-+AM_CFLAGS = --std-c99 --asm="$(CCAS)" \
+-AM_CFLAGS = --std-c11 --asm="$(CCAS)" --no-warn-non-free \
++AM_CFLAGS = --std-c11 --asm="$(CCAS)" \
  	--fomit-frame-pointer --obanksel=9 --denable-peeps \
  	--optimize-cmp --optimize-df --i-code-in-asm @USE_FLOATS@
 -AM_CCASFLAGS = -I$(top_srcdir)/../../include/pic16 \
@@ -1129,7 +1147,7 @@ index 7f90e89..94cd985 100644
  
  .SUFFIXES:
 diff --git a/device/lib/pic16/libsdcc/Makefile.in b/device/lib/pic16/libsdcc/Makefile.in
-index e58bad0..b318b70 100644
+index 331aea0..63565be 100644
 --- a/device/lib/pic16/libsdcc/Makefile.in
 +++ b/device/lib/pic16/libsdcc/Makefile.in
 @@ -88,10 +88,7 @@ PRE_UNINSTALL = :
@@ -1144,7 +1162,7 @@ index e58bad0..b318b70 100644
  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
  	$(ACLOCAL_M4)
  DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-@@ -364,8 +361,7 @@ libsdcc_a_SOURCES = char/divschar.c char/divuchar.c char/modschar.c \
+@@ -413,8 +410,7 @@ libsdcc_a_SOURCES = char/divschar.c char/divuchar.c char/modschar.c \
  	int/modsint.c int/moduint.c int/mulint.c long/divslong.c \
  	long/divulong.c long/modslong.c long/modulong.c long/mullong.c \
  	lregs/lrrest.c lregs/lrst.c stack/stack.S
@@ -1154,12 +1172,12 @@ index e58bad0..b318b70 100644
  #AM_CFLAGS += --no-optimize-goto
  
  #AM_CFLAGS += --debug-ralloc
-@@ -379,11 +375,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+@@ -428,11 +424,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
  #AM_CFLAGS += --noinduction
  #AM_CFLAGS += --nojtbound
  #AM_CFLAGS += --noloopreverse
--AM_CFLAGS = --std-c99 --asm="$(CCAS)" --no-warn-non-free \
-+AM_CFLAGS = --std-c99 --asm="$(CCAS)" \
+-AM_CFLAGS = --std-c11 --asm="$(CCAS)" --no-warn-non-free \
++AM_CFLAGS = --std-c11 --asm="$(CCAS)" \
  	--fomit-frame-pointer --obanksel=9 --denable-peeps \
  	--optimize-cmp --optimize-df --i-code-in-asm @USE_FLOATS@
 -AM_CCASFLAGS = -I$(top_srcdir)/../../include/pic16 \
@@ -1169,7 +1187,7 @@ index e58bad0..b318b70 100644
  
  .SUFFIXES:
 diff --git a/device/lib/pic16/startup/Makefile.in b/device/lib/pic16/startup/Makefile.in
-index 3c44c6f..274acde 100644
+index 2e59220..b213866 100644
 --- a/device/lib/pic16/startup/Makefile.in
 +++ b/device/lib/pic16/startup/Makefile.in
 @@ -89,10 +89,7 @@ PRE_UNINSTALL = :
@@ -1184,7 +1202,7 @@ index 3c44c6f..274acde 100644
  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
  	$(ACLOCAL_M4)
  DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-@@ -306,8 +303,7 @@ libcrt0iz_a_SOURCES = crt0iz.c
+@@ -308,8 +305,7 @@ libcrt0iz_a_SOURCES = crt0iz.c
  # Force installation of .o files into $libdir
  crtdir = $(libdir)
  crt_DATA = crt0.o crt0i.o crt0iz.o
@@ -1194,12 +1212,12 @@ index 3c44c6f..274acde 100644
  #AM_CFLAGS += --no-optimize-goto
  
  #AM_CFLAGS += --debug-ralloc
-@@ -321,11 +317,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
+@@ -323,11 +319,10 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/../../include/pic16 \
  #AM_CFLAGS += --noinduction
  #AM_CFLAGS += --nojtbound
  #AM_CFLAGS += --noloopreverse
--AM_CFLAGS = --std-c99 --asm="$(CCAS)" --no-warn-non-free \
-+AM_CFLAGS = --std-c99 --asm="$(CCAS)" \
+-AM_CFLAGS = --std-c11 --asm="$(CCAS)" --no-warn-non-free \
++AM_CFLAGS = --std-c11 --asm="$(CCAS)" \
  	--fomit-frame-pointer --obanksel=9 --denable-peeps \
  	--optimize-cmp --optimize-df --i-code-in-asm @USE_FLOATS@
 -AM_CCASFLAGS = -I$(top_srcdir)/../../include/pic16 \
@@ -1209,7 +1227,7 @@ index 3c44c6f..274acde 100644
  
  .SUFFIXES:
 diff --git a/doc/INSTALL.txt b/doc/INSTALL.txt
-index 7d83ef7..5bd71d3 100644
+index 76a6f42..0f92463 100644
 --- a/doc/INSTALL.txt
 +++ b/doc/INSTALL.txt
 @@ -18,9 +18,7 @@ To install:
@@ -1243,7 +1261,7 @@ index 7d83ef7..5bd71d3 100644
  
  You can test the install by entering:
 diff --git a/doc/README.txt b/doc/README.txt
-index 86ed809..69e16e2 100644
+index 88f8c98..a36db81 100644
 --- a/doc/README.txt
 +++ b/doc/README.txt
 @@ -35,10 +35,9 @@ Exception are pic device libraries and header files which are derived
@@ -1261,13 +1279,13 @@ index 86ed809..69e16e2 100644
  See:
  
 diff --git a/doc/sdccman.lyx b/doc/sdccman.lyx
-index 41e8db0..9a971fa 100644
+index d18a509..b95bf61 100644
 --- a/doc/sdccman.lyx
 +++ b/doc/sdccman.lyx
-@@ -1083,54 +1083,9 @@ Exception are pic device libraries and header files which are derived from
-  Microchip requires that "The header files should state that they are only
+@@ -1092,54 +1092,9 @@ A possible exception are pic device libraries and header files which are
   to be used with authentic Microchip devices" which makes them incompatible
-  with the GPL.
+  with the GPL, if Microchip has any copyright in them (which might depend
+  on local copyright laws).
 - Pic device libraries and header files are located at non-free/lib and non-free/
 -include directories respectively.
 - SDCC should be run with the 
@@ -1322,7 +1340,7 @@ index 41e8db0..9a971fa 100644
  \end_layout
  
  \begin_layout Itemize
-@@ -2890,18 +2845,6 @@ include_dir_suffix environment variable, see table below
+@@ -2870,18 +2825,6 @@ include_dir_suffix environment variable, see table below
  \end_inset
  
  
@@ -1341,7 +1359,7 @@ index 41e8db0..9a971fa 100644
  \begin_inset space ~
  \end_inset
  
-@@ -2914,22 +2857,6 @@ lib_dir_suffix environment variable, see table below
+@@ -2894,22 +2837,6 @@ lib_dir_suffix environment variable, see table below
  \end_inset
  
  
@@ -1364,7 +1382,7 @@ index 41e8db0..9a971fa 100644
  \begin_inset space ~
  \end_inset
  
-@@ -3410,7 +3337,7 @@ These defaults are:
+@@ -3408,7 +3335,7 @@ These defaults are:
  \begin_layout Standard
  \align center
  \begin_inset Tabular
@@ -1373,7 +1391,7 @@ index 41e8db0..9a971fa 100644
  <features tabularvalignment="middle">
  <column alignment="block" valignment="top" width="0in">
  <column alignment="block" valignment="top" width="0in">
-@@ -3694,68 +3621,6 @@ sdcc/include
+@@ -3692,68 +3619,6 @@ sdcc/include
  include
  \end_layout
  
@@ -1442,7 +1460,7 @@ index 41e8db0..9a971fa 100644
  \end_inset
  </cell>
  </row>
-@@ -3766,7 +3631,7 @@ lib
+@@ -3764,7 +3629,7 @@ lib
  \begin_layout Plain Layout
  
  \emph on
@@ -1451,7 +1469,7 @@ index 41e8db0..9a971fa 100644
  \end_layout
  
  \end_inset
-@@ -3775,7 +3640,7 @@ NON_FREE_LIB_DIR_SUFFIX
+@@ -3773,7 +3638,7 @@ NON_FREE_LIB_DIR_SUFFIX
  \begin_inset Text
  
  \begin_layout Plain Layout
@@ -1460,7 +1478,7 @@ index 41e8db0..9a971fa 100644
  \end_layout
  
  \end_inset
-@@ -3784,7 +3649,7 @@ sdcc/non-free/lib
+@@ -3782,7 +3647,7 @@ sdcc/non-free/lib
  \begin_inset Text
  
  \begin_layout Plain Layout
@@ -1469,7 +1487,7 @@ index 41e8db0..9a971fa 100644
  \end_layout
  
  \end_inset
-@@ -4183,20 +4048,6 @@ include
+@@ -4181,20 +4046,6 @@ include
  \end_inset
  
   
@@ -1490,7 +1508,7 @@ index 41e8db0..9a971fa 100644
  \backslash
  
  \begin_inset Newline newline
-@@ -4211,20 +4062,6 @@ lib
+@@ -4209,20 +4060,6 @@ lib
  \end_inset
  
   
@@ -1511,7 +1529,7 @@ index 41e8db0..9a971fa 100644
  \backslash
  
  \begin_inset Newline newline
-@@ -4405,20 +4242,6 @@ include
+@@ -4403,20 +4240,6 @@ include
  \end_inset
  
   
@@ -1532,7 +1550,7 @@ index 41e8db0..9a971fa 100644
  \backslash
  
  \begin_inset Newline newline
-@@ -4433,20 +4256,6 @@ lib
+@@ -4431,20 +4254,6 @@ lib
  \end_inset
  
   
@@ -1553,7 +1571,7 @@ index 41e8db0..9a971fa 100644
  \backslash
  
  \begin_inset Newline newline
-@@ -4543,7 +4352,7 @@ Install paths
+@@ -4541,7 +4350,7 @@ Install paths
  \begin_layout Standard
  \align center
  \begin_inset Tabular
@@ -1562,7 +1580,7 @@ index 41e8db0..9a971fa 100644
  <features tabularvalignment="middle">
  <column alignment="left" valignment="top">
  <column alignment="left" valignment="top" width="4.5cm">
-@@ -4699,64 +4508,6 @@ include
+@@ -4697,64 +4506,6 @@ include
  <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
  \begin_inset Text
  
@@ -1627,7 +1645,7 @@ index 41e8db0..9a971fa 100644
  \begin_layout Plain Layout
  Library file**
  \end_layout
-@@ -4806,64 +4557,6 @@ sdcc
+@@ -4804,64 +4555,6 @@ sdcc
  lib
  \end_layout
  
@@ -1692,7 +1710,7 @@ index 41e8db0..9a971fa 100644
  \end_inset
  </cell>
  </row>
-@@ -5186,7 +4879,7 @@ $PATH
+@@ -5184,7 +4877,7 @@ $PATH
  \begin_layout Standard
  \align center
  \begin_inset Tabular
@@ -1701,7 +1719,7 @@ index 41e8db0..9a971fa 100644
  <features tabularvalignment="middle">
  <column alignment="block" valignment="top" width="0.5cm">
  <column alignment="block" valignment="top" width="4.8cm">
-@@ -5464,203 +5157,13 @@ include
+@@ -5462,203 +5155,13 @@ include
  </cell>
  </row>
  <row>
@@ -1906,7 +1924,7 @@ index 41e8db0..9a971fa 100644
  \end_inset
  </cell>
  <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
-@@ -5676,21 +5179,13 @@ $DATADIR/
+@@ -5674,21 +5177,13 @@ $DATADIR/
  \end_inset
  
  
@@ -1929,7 +1947,7 @@ index 41e8db0..9a971fa 100644
  \begin_inset Text
  
  \begin_layout Plain Layout
-@@ -5698,7 +5193,7 @@ $INCLUDE_DIR_SUFFIX
+@@ -5696,7 +5191,7 @@ $INCLUDE_DIR_SUFFIX
  \begin_inset Newline newline
  \end_inset
  
@@ -1938,7 +1956,7 @@ index 41e8db0..9a971fa 100644
  \end_layout
  
  \end_inset
-@@ -5796,7 +5291,7 @@ model
+@@ -5794,7 +5289,7 @@ model
  \begin_layout Standard
  \align center
  \begin_inset Tabular
@@ -1947,7 +1965,7 @@ index 41e8db0..9a971fa 100644
  <features tabularvalignment="middle">
  <column alignment="block" valignment="top" width="0.5cm">
  <column alignment="block" valignment="top" width="4.5cm">
-@@ -6076,7 +5571,7 @@ lib
+@@ -6074,7 +5569,7 @@ lib
  </cell>
  </row>
  <row>
@@ -1956,7 +1974,7 @@ index 41e8db0..9a971fa 100644
  \begin_inset Text
  
  \begin_layout Plain Layout
-@@ -6085,7 +5580,7 @@ lib
+@@ -6083,7 +5578,7 @@ lib
  
  \end_inset
  </cell>
@@ -1965,7 +1983,7 @@ index 41e8db0..9a971fa 100644
  \begin_inset Text
  
  \begin_layout Plain Layout
-@@ -6116,7 +5611,7 @@ $LIB_DIR_SUFFIX/
+@@ -6114,7 +5609,7 @@ $LIB_DIR_SUFFIX/
  
  \end_inset
  </cell>
@@ -1974,7 +1992,7 @@ index 41e8db0..9a971fa 100644
  \begin_inset Text
  
  \begin_layout Plain Layout
-@@ -6131,7 +5626,7 @@ lib/
+@@ -6129,7 +5624,7 @@ lib/
  
  \end_inset
  </cell>
@@ -1983,7 +2001,7 @@ index 41e8db0..9a971fa 100644
  \begin_inset Text
  
  \begin_layout Plain Layout
-@@ -6154,308 +5649,6 @@ lib
+@@ -6152,308 +5647,6 @@ lib
  <model>
  \end_layout
  
@@ -2292,7 +2310,7 @@ index 41e8db0..9a971fa 100644
  \end_inset
  </cell>
  </row>
-@@ -8723,14 +7916,6 @@ In <installdir>/share/sdcc/include
+@@ -8717,14 +7910,6 @@ In <installdir>/share/sdcc/include
  the include files
  \end_layout
  
@@ -2307,7 +2325,7 @@ index 41e8db0..9a971fa 100644
  \begin_layout Standard
  In <installdir>/share/sdcc/lib
  \end_layout
-@@ -8739,14 +7924,6 @@ In <installdir>/share/sdcc/lib
+@@ -8733,14 +7918,6 @@ In <installdir>/share/sdcc/lib
  the src and target subdirectories with the precompiled relocatables.
  \end_layout
  
@@ -2322,7 +2340,7 @@ index 41e8db0..9a971fa 100644
  \begin_layout Standard
  In <installdir>/share/sdcc/doc
  \end_layout
-@@ -15589,66 +14766,6 @@ splint
+@@ -15254,66 +14431,6 @@ splint
  myprogram.c
  \end_layout
  
@@ -2389,7 +2407,7 @@ index 41e8db0..9a971fa 100644
  \begin_layout Subsection
  Linker Options
  \begin_inset Index idx
-@@ -44653,66 +43770,9 @@ http://sourceforge.net/projects/gputils
+@@ -44656,66 +43773,9 @@ http://sourceforge.net/projects/gputils
  Pic device specific header and c source files are automatically generated
   from MPLAB include files, which are published by Microchip with a special
   requirement that they are only to be used with authentic Microchip devices.
@@ -2459,7 +2477,7 @@ index 41e8db0..9a971fa 100644
  \begin_inset Newline newline
  \end_inset
  
-@@ -44766,7 +43826,7 @@ Makefile
+@@ -44769,7 +43829,7 @@ Makefile
  \begin_inset space ~
  \end_inset
  
@@ -2468,7 +2486,7 @@ index 41e8db0..9a971fa 100644
  \begin_inset Newline newline
  \end_inset
  
-@@ -44860,7 +43920,7 @@ Makefile
+@@ -44863,7 +43923,7 @@ Makefile
  \begin_inset space ~
  \end_inset
  
@@ -2477,7 +2495,7 @@ index 41e8db0..9a971fa 100644
  \begin_inset Newline newline
  \end_inset
  
-@@ -45142,47 +44202,6 @@ status collapsed
+@@ -45145,47 +44205,6 @@ status collapsed
  \begin_layout Plain Layout
  
  
@@ -2525,7 +2543,7 @@ index 41e8db0..9a971fa 100644
  \backslash
  /
  \end_layout
-@@ -46055,47 +45074,6 @@ status collapsed
+@@ -46058,47 +45077,6 @@ status collapsed
  -all-callee-saves
  \end_layout
  
@@ -2573,7 +2591,7 @@ index 41e8db0..9a971fa 100644
  \begin_layout Subsection
  Port Specific Options
  \begin_inset Index idx
-@@ -47372,188 +46350,6 @@ Linker
+@@ -47375,188 +46353,6 @@ Linker
  \end_inset
  
  
@@ -2762,7 +2780,7 @@ index 41e8db0..9a971fa 100644
  \end_layout
  
  \begin_layout Subsection
-@@ -48249,66 +47045,9 @@ name "subsec:PIC16_Header-Files-and-Libraries"
+@@ -48252,66 +47048,9 @@ name "subsec:PIC16_Header-Files-and-Libraries"
  Pic device specific header and c source files are automatically generated
   from MPLAB include files, which are published by Microchip with a special
   requirement that they are only to be used with authentic Microchip devices.
@@ -2832,7 +2850,7 @@ index 41e8db0..9a971fa 100644
  \end_layout
  
  \begin_layout Subsection
-@@ -48554,195 +47293,6 @@ vfprintf.c
+@@ -48557,195 +47296,6 @@ vfprintf.c
   should also work, but is untested.
  \end_layout
  
@@ -3028,7 +3046,7 @@ index 41e8db0..9a971fa 100644
  \begin_layout Subsection
  Memory Models
  \end_layout
-@@ -73525,6 +72075,12 @@ This document was initially written by Sandeep Dutta and updated by SDCC
+@@ -73531,6 +72081,12 @@ This document was initially written by Sandeep Dutta and updated by SDCC
   developers.
  \end_layout
  
@@ -3042,7 +3060,7 @@ index 41e8db0..9a971fa 100644
  All product names mentioned herein may be trademarks
  \begin_inset Index idx
 diff --git a/sdcc.spec b/sdcc.spec
-index 9f1eeff..3686228 100644
+index b8baa92..be90a84 100644
 --- a/sdcc.spec
 +++ b/sdcc.spec
 @@ -83,15 +83,15 @@ rm -rf $RPM_BUILD_ROOT
@@ -3058,11 +3076,11 @@ index 9f1eeff..3686228 100644
  %doc %{_defaultdocdir}
  
  %changelog
-+* Sat Oct 31 2020 - simon AT simonsouth.net
++* Tue Dec 08 2020 - simon AT simonsouth.net
 +- removed non-free include and lib directories
- * Wed Feb 07 2018 - pkk AT spth.de
- - version updated to 3.7.0
- * Sun May 29 2016 - sourceforge.brock AT dse.nl
+ * Sat Jan 18 2029 - pkk AT spth.de
+ - version updated to 4.0.0
+ * Fri Apr 05 2019 - krauseph AT informatik.uni-freiburg.de
 diff --git a/sdcc_vc.h.in b/sdcc_vc.h.in
 index 06d8cca..736c325 100644
 --- a/sdcc_vc.h.in
@@ -3077,10 +3095,10 @@ index 06d8cca..736c325 100644
  #define BIN2DATA_DIR                "\\.."
  #define PREFIX2BIN_DIR              "\\bin"
 diff --git a/sdccconf_in.h b/sdccconf_in.h
-index 29619bd..dadf310 100644
+index aeb2724..9c1df9d 100644
 --- a/sdccconf_in.h
 +++ b/sdccconf_in.h
-@@ -106,12 +106,6 @@
+@@ -97,12 +97,6 @@
  /* XXX */
  #undef LIB_DIR_SUFFIX
  
@@ -3093,7 +3111,7 @@ index 29619bd..dadf310 100644
  /* Define to 1 to disable the AVR port */
  #undef OPT_DISABLE_AVR
  
-@@ -133,9 +127,6 @@
+@@ -127,9 +121,6 @@
  /* XXX */
  #undef OPT_DISABLE_MCS51
  
@@ -3104,10 +3122,10 @@ index 29619bd..dadf310 100644
  #undef OPT_DISABLE_PACKIHX
  
 diff --git a/src/SDCCglobl.h b/src/SDCCglobl.h
-index 2ce040b..d72d3b8 100644
+index b8d156b..db81fd7 100644
 --- a/src/SDCCglobl.h
 +++ b/src/SDCCglobl.h
-@@ -315,7 +315,6 @@ struct options
+@@ -288,7 +288,6 @@ struct options
      int no_pack_iram;           /* MCS51/DS390 - Deprecated: Tells the linker not to pack variables in internal ram */
      int acall_ajmp;             /* MCS51 - Use acall/ajmp instead of lcall/ljmp */
      int no_ret_without_call;    /* MCS51 - Do not use ret independent of acall/lcall */
@@ -3116,10 +3134,10 @@ index 2ce040b..d72d3b8 100644
      int xstack_loc;             /* initial location of external stack */
      int stack_loc;              /* initial value of internal stack pointer */
 diff --git a/src/SDCCmain.c b/src/SDCCmain.c
-index a523164..a279d3d 100644
+index d4598a5..cd36f3d 100644
 --- a/src/SDCCmain.c
 +++ b/src/SDCCmain.c
-@@ -144,7 +144,6 @@ char buffer[PATH_MAX * 2];
+@@ -142,7 +142,6 @@ char buffer[PATH_MAX * 2];
  #define OPTION_DATA_SEG             "--dataseg"
  #define OPTION_DOLLARS_IN_IDENT     "--fdollars-in-identifiers"
  #define OPTION_SIGNED_CHAR          "--fsigned-char"
@@ -3127,15 +3145,15 @@ index a523164..a279d3d 100644
  #define OPTION_PEEP_RETURN          "--peep-return"
  #define OPTION_NO_PEEP_RETURN       "--no-peep-return"
  #define OPTION_NO_OPTSDCC_IN_ASM    "--no-optsdcc-in-asm"
-@@ -192,7 +191,6 @@ static const OPTION optionsTable[] = {
-   {0,   OPTION_STD_SDCC11, NULL, "Use ISO C11 standard with SDCC extensions (default)"},
+@@ -197,7 +196,6 @@ static const OPTION optionsTable[] = {
+   {0,   OPTION_STD_SDCC2X, NULL, "Use ISO C2X standard with SDCC extensions"},
    {0,   OPTION_DOLLARS_IN_IDENT, &options.dollars_in_ident, "Permit '$' as an identifier character"},
    {0,   OPTION_SIGNED_CHAR, &options.signed_char, "Make \"char\" signed by default"},
 -  {0,   OPTION_USE_NON_FREE, &options.use_non_free, "Search / include non-free licensed libraries and header files"},
  
    {0,   NULL, NULL, "Code generation options"},
    {'m', NULL, NULL, "Set the port to use e.g. -mz80."},
-@@ -2045,10 +2043,6 @@ preProcess (char **envp)
+@@ -2084,10 +2082,6 @@ preProcess (char **envp)
        else
          addSet (&preArgvSet, Safe_strdup ("-D__SDCC_CHAR_UNSIGNED"));
  
@@ -3146,7 +3164,7 @@ index a523164..a279d3d 100644
        /* set the macro for large model  */
        switch (options.model)
          {
-@@ -2262,12 +2256,6 @@ setIncludePath (void)
+@@ -2301,12 +2295,6 @@ setIncludePath (void)
     *  6. - $SDCC_HOME/PREFIX2DATA_DIR/INCLUDE_DIR_SUFFIX
     *  7. - path(argv[0])/BIN2DATA_DIR/INCLUDE_DIR_SUFFIX
     *  8. - DATADIR/INCLUDE_DIR_SUFFIX (only on *nix)
@@ -3159,7 +3177,7 @@ index a523164..a279d3d 100644
     */
  
    if (!options.nostdinc)
-@@ -2280,17 +2268,6 @@ setIncludePath (void)
+@@ -2319,17 +2307,6 @@ setIncludePath (void)
        includeDirsSet = processStrSet (includeDirsSet, NULL, port->target, NULL);
        mergeSets (&includeDirsSet, tempSet);
  
@@ -3177,7 +3195,7 @@ index a523164..a279d3d 100644
        if ((p = getenv (SDCC_INCLUDE_NAME)) != NULL)
          {
            struct dbuf_s dbuf;
-@@ -2315,9 +2292,6 @@ setLibPath (void)
+@@ -2354,9 +2331,6 @@ setLibPath (void)
     * 3. - $SDCC_HOME/PREFIX2DATA_DIR/LIB_DIR_SUFFIX/<model>
     * 4. - path(argv[0])/BIN2DATA_DIR/LIB_DIR_SUFFIX/<model>
     * 5. - DATADIR/LIB_DIR_SUFFIX/<model> (only on *nix)
@@ -3187,7 +3205,7 @@ index a523164..a279d3d 100644
     */
  
    if (!options.nostdlib)
-@@ -2334,13 +2308,6 @@ setLibPath (void)
+@@ -2373,13 +2347,6 @@ setLibPath (void)
        dbuf_makePath (&dbuf, LIB_DIR_SUFFIX, port->general.get_model ? port->general.get_model () : targetname);
        libDirsSet = processStrSet (dataDirsSet, NULL, dbuf_c_str (&dbuf), NULL);
  
@@ -3202,7 +3220,7 @@ index a523164..a279d3d 100644
          {
            addSetHead (&libDirsSet, Safe_strdup (p));
 diff --git a/src/pic14/main.c b/src/pic14/main.c
-index 3d868cc..e8ecaaf 100644
+index ee90470..519ccfc 100644
 --- a/src/pic14/main.c
 +++ b/src/pic14/main.c
 @@ -42,7 +42,6 @@ static OPTION _pic14_poptions[] =
@@ -3213,9 +3231,9 @@ index 3d868cc..e8ecaaf 100644
      { 0, NULL, NULL, NULL }
    };
  
-@@ -153,16 +152,6 @@ _pic14_finaliseOptions (void)
-       addSet (&preArgvSet, dbuf_detach_c_str (&dbuf));
-     }
+@@ -176,16 +175,6 @@ _pic14_finaliseOptions (void)
+     addSet (&preArgvSet, Safe_strdup (dbuf_detach_c_str (&dbuf)));
+   }
  
 -  if (!pic14_options.no_warn_non_free && !options.use_non_free)
 -    {
@@ -3255,7 +3273,7 @@ index cdfbba0..5877f09 100644
  
  extern pic16_options_t pic16_options;
 diff --git a/src/pic16/main.c b/src/pic16/main.c
-index 6f194c1..7f7b2f0 100644
+index 61d9cfb..75d1182 100644
 --- a/src/pic16/main.c
 +++ b/src/pic16/main.c
 @@ -655,7 +655,6 @@ OPTION pic16_optionsTable[]= {
@@ -3292,23 +3310,25 @@ index 6f194c1..7f7b2f0 100644
  
  static const char *
 diff --git a/src/regression/Makefile b/src/regression/Makefile
-index 26a7ff3..4547295 100644
+index d8dae7c..1a32355 100644
 --- a/src/regression/Makefile
 +++ b/src/regression/Makefile
-@@ -65,10 +65,10 @@ TARGETPIC = 18f452
- CFLAGS	= -mpic16 -p$(TARGETPIC)
- DIR = pic16
- endif
--CFLAGS += -Wl,-q --no-warn-non-free
-+CFLAGS += -Wl,-q
- CFLAGS += -Wl,--map
--CFLAGS += -I $(SDCC_SRC)/device/include/$(DIR) -I $(SDCC_SRC)/device/non-free/include/$(DIR)
--CFLAGS += -L $(SDCC_BIN)/device/lib/build/$(DIR) -L $(SDCC_BIN)/device/non-free/lib/build/$(DIR)
-+CFLAGS += -I $(SDCC_SRC)/device/include/$(DIR)
-+CFLAGS += -L $(SDCC_BIN)/device/lib/build/$(DIR)
- #CFLAGS += --no-pcode-opt
- #CFLAGS += -V
- 
+@@ -107,12 +107,12 @@ endif
+ CC = $(top_builddir)/bin/sdcc
+ 
+ # compiler options
+-CFLAGS =  --no-warn-non-free -m$(ARCH) -p$(DEV) --fsigned-char --i-code-in-asm --fverbose-asm --std-c99
+-CFLAGS += --nostdinc -I$(top_srcdir)/device/include/$(ARCH) -I$(top_srcdir)/device/non-free/include/$(ARCH) -I$(top_srcdir)/device/include
++CFLAGS =  -m$(ARCH) -p$(DEV) --fsigned-char --i-code-in-asm --fverbose-asm --std-c99
++CFLAGS += --nostdinc -I$(top_srcdir)/device/include/$(ARCH) -I$(top_srcdir)/device/include
+ 
+ # linker options (for sdcc)
+ CFLAGS += -Wl,-l,-O2
+-CFLAGS += --nostdlib -L$(top_builddir)/device/lib/build/$(ARCH) -L$(top_builddir)/device/non-free/lib/build/$(ARCH)
++CFLAGS += --nostdlib -L$(top_builddir)/device/lib/build/$(ARCH)
+ 
+ # linker libraries
+ LIB_SUFFIX = $(LIB_E)$(LIB_O)$(LIB_X)
 diff --git a/support/regression/ports/pic14/spec.mk b/support/regression/ports/pic14/spec.mk
 index a3dcc05..bef1c45 100644
 --- a/support/regression/ports/pic14/spec.mk
@@ -3475,10 +3495,10 @@ index 6db417a..4b35225 100755
    );
  
 diff --git a/support/scripts/sdcc.nsi b/support/scripts/sdcc.nsi
-index 5086181..9527244 100644
+index 68e9035..92e5784 100644
 --- a/support/scripts/sdcc.nsi
 +++ b/support/scripts/sdcc.nsi
-@@ -477,11 +477,6 @@ ${Section} "SDCC include files" SEC05
+@@ -483,11 +483,6 @@ ${Section} "SDCC include files" SEC05
  
    SetOutPath "$INSTDIR\include"
    File "${DEV_ROOT}\include\*.h"
@@ -3490,7 +3510,7 @@ index 5086181..9527244 100644
  ${SectionEnd}
  
  ${Section} "SDCC DS390 library" SEC06
-@@ -579,18 +574,12 @@ ${Section} "SDCC PIC16 library" SEC21
+@@ -585,18 +580,12 @@ ${Section} "SDCC PIC16 library" SEC21
    SetOutPath "$INSTDIR\lib\pic16"
    File "${DEV_ROOT}\lib\pic16\*.o"
    File "${DEV_ROOT}\lib\pic16\*.lib"
@@ -3508,8 +3528,8 @@ index 5086181..9527244 100644
 -  File "${DEV_ROOT}\non-free\lib\pic14\*.lib"
  ${SectionEnd}
  
- ${Section} "SDCC STM8 library" SEC23
-@@ -691,10 +680,6 @@ ${Section} "SDCC library sources" SEC25
+ ${Section} "SDCC STM8 small model library" SEC23
+@@ -697,10 +686,6 @@ ${Section} "SDCC library sources" SEC25
    File "${DEV_ROOT}\lib\src\pic14\libsdcc\enhanced\*.inc"
  #  File "${DEV_ROOT}\lib\src\pic14\libsdcc\Makefile"
  
@@ -3518,9 +3538,9 @@ index 5086181..9527244 100644
 -#  File "${DEV_ROOT}\non-free\lib\src\pic14\libdev\Makefile"
 -
    SetOutPath "$INSTDIR\lib\src\pic14\libm"
-   File "${DEV_ROOT}\lib\src\pic14\libm\*.c"
+ #  File "${DEV_ROOT}\lib\src\pic14\libm\*.c"
  
-@@ -746,10 +731,6 @@ ${Section} "SDCC library sources" SEC25
+@@ -752,10 +737,6 @@ ${Section} "SDCC library sources" SEC25
    File "${DEV_ROOT}\lib\src\pic16\libc\utils\*.S"
  #  File "${DEV_ROOT}\lib\src\pic16\libc\utils\Makefile"
  
@@ -3531,7 +3551,7 @@ index 5086181..9527244 100644
    SetOutPath "$INSTDIR\lib\src\pic16\libio"
    File "${DEV_ROOT}\lib\src\pic16\libio\*.ignore"
  #  File "${DEV_ROOT}\lib\src\pic16\libio\Makefile"
-@@ -1003,13 +984,9 @@ ${Section} Uninstall SECUNINSTALL
+@@ -1074,13 +1055,9 @@ ${Section} Uninstall SECUNINSTALL
  
    Delete "$INSTDIR\lib\pic14\*.lib"
  
@@ -3545,7 +3565,7 @@ index 5086181..9527244 100644
    Delete "$INSTDIR\lib\hc08\*.lib"
  
    Delete "$INSTDIR\lib\s08\*.lib"
-@@ -1059,9 +1036,7 @@ ${Section} Uninstall SECUNINSTALL
+@@ -1144,9 +1121,7 @@ ${Section} Uninstall SECUNINSTALL
    Delete "$INSTDIR\include\pic14\*.h"
    Delete "$INSTDIR\include\pic14\*.txt"
    Delete "$INSTDIR\include\pic14\*.inc"
@@ -3555,7 +3575,7 @@ index 5086181..9527244 100644
    Delete "$INSTDIR\include\pic16\*.txt"
    Delete "$INSTDIR\include\mcs51\*.h"
    Delete "$INSTDIR\include\hc08\*.h"
-@@ -1119,9 +1094,7 @@ ${Section} Uninstall SECUNINSTALL
+@@ -1208,9 +1183,7 @@ ${Section} Uninstall SECUNINSTALL
    Delete "$INSTDIR\uninstall.exe"
  
    RMDir /r "$INSTDIR\lib\src\pic14"
@@ -3565,9 +3585,9 @@ index 5086181..9527244 100644
    RMDir "$INSTDIR\lib\src\small"
    RMDir "$INSTDIR\lib\src\medium"
    RMDir "$INSTDIR\lib\src\large"
-@@ -1138,12 +1111,9 @@ ${Section} Uninstall SECUNINSTALL
-   RMDir "$INSTDIR\lib\src\s08"
-   RMDir "$INSTDIR\lib\src\stm8"
+@@ -1233,12 +1206,9 @@ ${Section} Uninstall SECUNINSTALL
+   RMDir "$INSTDIR\lib\src\pdk15"
+   RMDir "$INSTDIR\lib\src\pdk15-stack-auto"
    RMDir "$INSTDIR\lib\src"
 -  RMDir "$INSTDIR\non-free\lib\src"
  
@@ -3578,16 +3598,17 @@ index 5086181..9527244 100644
    RMDir "$INSTDIR\lib\z80"
    RMDir "$INSTDIR\lib\z180"
    RMDir "$INSTDIR\lib\r2k"
-@@ -1160,16 +1130,13 @@ ${Section} Uninstall SECUNINSTALL
-   RMDir "$INSTDIR\lib\s08"
-   RMDir "$INSTDIR\lib\stm8"
+@@ -1261,7 +1231,6 @@ ${Section} Uninstall SECUNINSTALL
+   RMDir "$INSTDIR\lib\pdk15"
+   RMDir "$INSTDIR\lib\pdk15-stack-auto"
    RMDir "$INSTDIR\lib"
 -  RMDir "$INSTDIR\non-free\lib"
  
    RMDir "$INSTDIR\include\asm\z80"
    RMDir "$INSTDIR\include\asm\z180"
-   RMDir "$INSTDIR\include\asm\r2k"
+@@ -1269,9 +1238,7 @@ ${Section} Uninstall SECUNINSTALL
    RMDir "$INSTDIR\include\asm\r3ka"
+   RMDir "$INSTDIR\include\asm\ez80_z80"
    RMDir "$INSTDIR\include\asm\pic16"
 -  RMDir "$INSTDIR\non-free\include\asm\pic16"
    RMDir "$INSTDIR\include\asm\pic14"
@@ -3595,7 +3616,7 @@ index 5086181..9527244 100644
    RMDir "$INSTDIR\include\asm\mcs51"
    RMDir "$INSTDIR\include\asm\gbz80"
    RMDir "$INSTDIR\include\asm\ds390"
-@@ -1178,17 +1145,12 @@ ${Section} Uninstall SECUNINSTALL
+@@ -1280,17 +1247,12 @@ ${Section} Uninstall SECUNINSTALL
    RMDir "$INSTDIR\include\asm"
    RMDir "$INSTDIR\include\z180"
    RMDir "$INSTDIR\include\pic14"
diff --git a/gnu/packages/patches/serf-python3.patch b/gnu/packages/patches/serf-python3.patch
new file mode 100644
index 0000000000..636f51ed1e
--- /dev/null
+++ b/gnu/packages/patches/serf-python3.patch
@@ -0,0 +1,29 @@
+Fix build with Python 3 scons.
+
+Patch taken from Arch Linux:
+https://github.com/archlinux/svntogit-packages/blob/packages/serf/trunk/scons-python3.patch
+
+--- serf-1.3.9/SConstruct.orig	2019-07-26 17:49:30.910189251 +0000
++++ serf-1.3.9/SConstruct	2019-07-26 17:49:54.073821735 +0000
+@@ -163,9 +163,9 @@
+               suffix='.def', src_suffix='.h')
+   })
+ 
+-match = re.search('SERF_MAJOR_VERSION ([0-9]+).*'
+-                  'SERF_MINOR_VERSION ([0-9]+).*'
+-                  'SERF_PATCH_VERSION ([0-9]+)',
++match = re.search(b'SERF_MAJOR_VERSION ([0-9]+).*'
++                  b'SERF_MINOR_VERSION ([0-9]+).*'
++                  b'SERF_PATCH_VERSION ([0-9]+)',
+                   env.File('serf.h').get_contents(),
+                   re.DOTALL)
+ MAJOR, MINOR, PATCH = [int(x) for x in match.groups()]
+@@ -183,7 +183,7 @@
+ 
+ unknown = opts.UnknownVariables()
+ if unknown:
+-  print 'Warning: Used unknown variables:', ', '.join(unknown.keys())
++  print ('Warning: Used unknown variables:', ', '.join(unknown.keys()))
+ 
+ apr = str(env['APR'])
+ apu = str(env['APU'])
diff --git a/gnu/packages/patches/shakespeare-spl-fix-grammar.patch b/gnu/packages/patches/shakespeare-spl-fix-grammar.patch
new file mode 100644
index 0000000000..737c0eb8c1
--- /dev/null
+++ b/gnu/packages/patches/shakespeare-spl-fix-grammar.patch
@@ -0,0 +1,16 @@
+ROMAN_HUNDREDS, ROMAN_TENS and ROMAN_ONES seem to use syntax, that is not
+recognized (any longer?) by flex, so let's expand their definitions.
+
+Index: spl-1.2.1/include/roman_numbers.metaflex
+===================================================================
+--- spl-1.2.1.orig/include/roman_numbers.metaflex
++++ spl-1.2.1/include/roman_numbers.metaflex
+@@ -1,5 +1,5 @@
+ ROMAN_THOUSANDS m+
+-ROMAN_HUNDREDS  (c(d|m)|dc{0,3}|c{1,3})
+-ROMAN_TENS      (x(l|c)|lx{0,3}|x{1,3})
+-ROMAN_ONES      (i(v|x)|vi{0,3}|i{1,3})
++ROMAN_HUNDREDS  (c(d|m|c?c?)|dc?c?c?)
++ROMAN_TENS      (x(l|c|x?x?)|lx?x?x?)
++ROMAN_ONES      (i(v|x|i?i?)|vi?i?i?)
+ ROMAN_NUMBER    {ROMAN_ONES}|{ROMAN_TENS}{ROMAN_ONES}?|{ROMAN_HUNDREDS}{ROMAN_TENS}?{ROMAN_ONES}?|{ROMAN_THOUSANDS}{ROMAN_HUNDREDS}?{ROMAN_TENS}?{ROMAN_ONES}?
diff --git a/gnu/packages/patches/smalltalk-multiplication-overflow.patch b/gnu/packages/patches/smalltalk-multiplication-overflow.patch
new file mode 100644
index 0000000000..7a0b4d02f7
--- /dev/null
+++ b/gnu/packages/patches/smalltalk-multiplication-overflow.patch
@@ -0,0 +1,121 @@
+Extracted from this commit without the ChangeLog to avoid conflicts:
+http://git.savannah.gnu.org/cgit/smalltalk.git/commit/?id=72ada189aba0283c551ead16635c1983968080b8
+
+The upstream commit message is
+From 72ada189aba0283c551ead16635c1983968080b8 Mon Sep 17 00:00:00 2001
+From: Holger Hans Peter Freyther <holger@moiji-mobile.com>
+Date: Sat, 7 Nov 2015 18:09:31 +0100
+Subject: libgst: Add alternative multiplication overflow check
+
+Apple clang on OSX and the version on FreeBSD optimize the
+multiplication check away. Clang introduced a family of
+builtins to do the multiplication and check for the overflow
+and GCC made the API usable. For clang we would need to know
+if intptr_t is of type int, long int, long long int and
+then use the smul, smull smulll.
+Luckily clang is adopting the better interface and this is
+what we are starting to use now. This means the new code
+will be used on GCC5 (and later) and some future versions of
+clang.
+
+2015-11-07  Holger Hans Peter Freyther  <holger@freyther.de>
+
+	* build-aux/overflow-builtins.m4: Add new macro.
+	* configure.ac: Use GST_C_OVERFLOW_BUILTINS macro.
+
+2015-11-07  Holger Hans Peter Freyther  <holger@freyther.de>
+
+	* interp.inl: Add alternative mul_with_check implementation.
+---
+ ChangeLog                      |  5 +++++
+ build-aux/overflow-builtins.m4 | 23 +++++++++++++++++++++++
+ configure.ac                   |  1 +
+ libgst/ChangeLog               |  4 ++++
+ libgst/interp.inl              | 22 ++++++++++++++++++++++
+ 5 files changed, 55 insertions(+)
+ create mode 100644 build-aux/overflow-builtins.m4
+
+diff --git a/build-aux/overflow-builtins.m4 b/build-aux/overflow-builtins.m4
+new file mode 100644
+index 00000000..9d050196
+--- /dev/null
++++ b/build-aux/overflow-builtins.m4
+@@ -0,0 +1,23 @@
++dnl Check whether the host supports synchronization builtins.
++
++AC_DEFUN([GST_C_OVERFLOW_BUILTINS], [
++  AC_REQUIRE([AC_CANONICAL_HOST])
++  AC_CACHE_CHECK([whether the host supports __builtin_mul_overflow],
++                 gst_cv_have_builtin_mul_overflow, [
++    save_CFLAGS="$CFLAGS"
++    case $host in
++      i?86-apple-darwin*) ;;
++      i?86-*-*) CFLAGS="$CFLAGS -march=i486" ;;
++    esac
++    AC_LINK_IFELSE([AC_LANG_PROGRAM([[int foovar = 0;]], [[
++if (__builtin_mul_overflow(44444, 55555, &foovar))
++	return 23;]])],
++		   [gst_cv_have_builtin_mul_overflow=yes],
++		   [gst_cv_have_builtin_mul_overflow=no])
++    CFLAGS="$save_CFLAGS"
++  ])
++  if test $gst_cv_have_builtin_mul_overflow = yes; then
++    AC_DEFINE(HAVE_OVERFLOW_BUILTINS, 1,
++              [Define to 1 if the host supports __builtin_*_overflow builtins])
++  fi
++])
+diff --git a/configure.ac b/configure.ac
+index e789be45..0bac23ef 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -243,6 +243,7 @@ GST_C_SYNC_BUILTINS
+ if test $gst_cv_have_sync_fetch_and_add = no; then
+   AC_MSG_ERROR([Synchronization primitives not found, please use a newer compiler.])
+ fi
++GST_C_OVERFLOW_BUILTINS
+ 
+ GST_LOCK
+ AC_SYS_LARGEFILE
+diff --git a/libgst/interp.inl b/libgst/interp.inl
+index e18e27c7..dbc631bc 100644
+--- a/libgst/interp.inl
++++ b/libgst/interp.inl
+@@ -159,6 +159,27 @@ sub_with_check (OOP op1, OOP op2, mst_Boolean *overflow)
+ OOP
+ mul_with_check (OOP op1, OOP op2, mst_Boolean *overflow)
+ {
++#ifdef HAVE_OVERFLOW_BUILTINS
++  intptr_t a = TO_INT (op1);
++  intptr_t b = TO_INT (op2);
++  intptr_t result;
++
++  if (__builtin_mul_overflow(a, b, &result))
++    {
++       *overflow = true;
++       return FROM_INT(0);
++    }
++
++
++  if (result < MIN_ST_INT || result > MAX_ST_INT)
++    {
++       *overflow = true;
++       return FROM_INT(0);
++    }
++
++  *overflow = false;
++  return FROM_INT(result);
++#else
+   intptr_t a = TO_INT (op1);
+   intptr_t b = TO_INT (op2);
+   intmax_t result = (intmax_t)a * b;
+@@ -188,6 +209,7 @@ mul_with_check (OOP op1, OOP op2, mst_Boolean *overflow)
+     }
+ 
+   return FROM_INT (0);
++#endif
+ }
+ 
+ /* State of the random generator.
+-- 
+2.29.2
+
diff --git a/gnu/packages/patches/superlu-dist-awpm-grid.patch b/gnu/packages/patches/superlu-dist-awpm-grid.patch
index d6cb8e521d..42d1683cc4 100644
--- a/gnu/packages/patches/superlu-dist-awpm-grid.patch
+++ b/gnu/packages/patches/superlu-dist-awpm-grid.patch
@@ -1,8 +1,8 @@
 Create the CombBLAS::SpParMat with the MPI_Comm from the input 'gridinfo_t'.
 This prevents a warning/error from CombBLAS about using MPI_COMM_WORLD.
 
---- a/SRC/AWPM_CombBLAS.hpp
-+++ b/SRC/AWPM_CombBLAS.hpp
+--- a/SRC/dHWPM_CombBLAS.hpp
++++ b/SRC/dHWPM_CombBLAS.hpp
 @@ -52,7 +52,7 @@
      {
          printf("AWPM only supports square process grid. Retuning without a permutation.\n");
@@ -12,25 +12,14 @@ This prevents a warning/error from CombBLAS about using MPI_COMM_WORLD.
      std::vector< std::vector < std::tuple<int_t,int_t,double> > > data(procs);
      
      /* ------------------------------------------------------------
-@@ -100,11 +100,10 @@
-     combblas::AWPM(Adcsc, mateRow2Col, mateCol2Row,true);
-     
-     // now gather the matching vector
--    MPI_Comm World = mateRow2Col.getcommgrid()->GetWorld();
-     int * rdispls = new int[procs];
-     int sendcnt = mateRow2Col.LocArrSize();
-     int * recvcnt = new int[procs];
--    MPI_Allgather(&sendcnt, 1, MPI_INT, recvcnt, 1, MPI_INT, World);
-+    MPI_Allgather(&sendcnt, 1, MPI_INT, recvcnt, 1, MPI_INT, grid->comm);
-     rdispls[0] = 0;
-     for(int i=0; i<procs-1; ++i)
+--- a/SRC/zHWPM_CombBLAS.hpp
++++ b/SRC/zHWPM_CombBLAS.hpp
+@@ -52,7 +52,7 @@
      {
-@@ -112,7 +111,7 @@
+         printf("AWPM only supports square process grid. Retuning without a permutation.\n");
      }
-     int_t *senddata = (int_t *)mateRow2Col.GetLocArr();
-     
--    MPI_Allgatherv(senddata, sendcnt, combblas::MPIType<int_t>(), ScalePermstruct->perm_r, recvcnt, rdispls, combblas::MPIType<int_t>(), World);
-+    MPI_Allgatherv(senddata, sendcnt, combblas::MPIType<int_t>(), ScalePermstruct->perm_r, recvcnt, rdispls, combblas::MPIType<int_t>(), grid->comm);
+-    combblas::SpParMat < int_t, double, combblas::SpDCCols<int_t,double> > Adcsc;
++    combblas::SpParMat < int_t, double, combblas::SpDCCols<int_t,double> > Adcsc(grid->comm);
+     std::vector< std::vector < std::tuple<int_t,int_t,double> > > data(procs);
      
-     delete[] rdispls;
-     delete[] recvcnt;
+     /* ------------------------------------------------------------
diff --git a/gnu/packages/patches/vlc-qt-5.15.patch b/gnu/packages/patches/vlc-qt-5.15.patch
new file mode 100644
index 0000000000..e986a99861
--- /dev/null
+++ b/gnu/packages/patches/vlc-qt-5.15.patch
@@ -0,0 +1,56 @@
+Fix build of VLC with Qt 5.15. Otherwise it fails like this:
+
+------
+In file included from gui/qt/util/timetooltip.moc.cpp:10:0:
+gui/qt/util/timetooltip.hpp:49:18: error: field ‘mPainterPath’ has incomplete type ‘QPainterPath’
+     QPainterPath mPainterPath;
+                  ^~~~~~~~~~~~
+In file included from /gnu/store/jsxxnsdvij5mrrv6c0kj0261k0f44xlz-qtbase-5.15.2/include/qt5/QtGui/qbrush.h:49:0,
+                 from /gnu/store/jsxxnsdvij5mrrv6c0kj0261k0f44xlz-qtbase-5.15.2/include/qt5/QtGui/qpalette.h:46,
+                 from /gnu/store/jsxxnsdvij5mrrv6c0kj0261k0f44xlz-qtbase-5.15.2/include/qt5/QtWidgets/qwidget.h:48,
+                 from /gnu/store/jsxxnsdvij5mrrv6c0kj0261k0f44xlz-qtbase-5.15.2/include/qt5/QtWidgets/QWidget:1,
+                 from gui/qt/util/timetooltip.hpp:27,
+                 from gui/qt/util/timetooltip.moc.cpp:10:
+/gnu/store/jsxxnsdvij5mrrv6c0kj0261k0f44xlz-qtbase-5.15.2/include/qt5/QtGui/qmatrix.h:54:7: note: forward declaration of ‘class QPainterPath’
+ class QPainterPath;
+       ^~~~~~~~~~~~
+make[4]: *** [Makefile:25852: gui/qt/util/libqt_plugin_la-timetooltip.moc.lo] Error 1
+------
+
+diff --git a/modules/gui/qt/components/playlist/views.cpp b/modules/gui/qt/components/playlist/views.cpp
+index 24db9d9..73c1779 100644
+--- a/modules/gui/qt/components/playlist/views.cpp
++++ b/modules/gui/qt/components/playlist/views.cpp
+@@ -27,6 +27,7 @@
+ #include "input_manager.hpp"                      /* THEMIM */
+ 
+ #include <QPainter>
++#include <QPainterPath>
+ #include <QRect>
+ #include <QStyleOptionViewItem>
+ #include <QFontMetrics>
+diff --git a/modules/gui/qt/dialogs/plugins.cpp b/modules/gui/qt/dialogs/plugins.cpp
+index d233382..69728eb 100644
+--- a/modules/gui/qt/dialogs/plugins.cpp
++++ b/modules/gui/qt/dialogs/plugins.cpp
+@@ -53,6 +53,7 @@
+ #include <QListView>
+ #include <QListWidget>
+ #include <QPainter>
++#include <QPainterPath>
+ #include <QStyleOptionViewItem>
+ #include <QKeyEvent>
+ #include <QPushButton>
+diff --git a/modules/gui/qt/util/timetooltip.hpp b/modules/gui/qt/util/timetooltip.hpp
+index 6a1329e..9f50b18 100644
+--- a/modules/gui/qt/util/timetooltip.hpp
++++ b/modules/gui/qt/util/timetooltip.hpp
+@@ -25,6 +25,7 @@
+ #include "qt.hpp"
+ 
+ #include <QWidget>
++#include <QPainterPath>
+ 
+ class TimeTooltip : public QWidget
+ {
+
diff --git a/gnu/packages/patches/weasyprint-library-paths.patch b/gnu/packages/patches/weasyprint-library-paths.patch
deleted file mode 100644
index 317f0c542e..0000000000
--- a/gnu/packages/patches/weasyprint-library-paths.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-Make weasyprint load dynamic libraries from hard-coded path.
-
-From NixOS
-pkgs/development/python-modules/weasyprint/library-paths.patch
-
-diff --git a/weasyprint/fonts.py b/weasyprint/fonts.py
-index 377716c1..2016e01c 100644
---- a/weasyprint/fonts.py
-+++ b/weasyprint/fonts.py
-@@ -48,11 +48,8 @@ else:
-     # with OSError: dlopen() failed to load a library: cairo / cairo-2
-     # So let's hope we find the same file as cairo already did ;)
-     # Same applies to pangocairo requiring pangoft2
--    fontconfig = dlopen(ffi, 'fontconfig', 'libfontconfig',
--                        'libfontconfig-1.dll',
--                        'libfontconfig.so.1', 'libfontconfig-1.dylib')
--    pangoft2 = dlopen(ffi, 'pangoft2-1.0', 'libpangoft2-1.0-0',
--                      'libpangoft2-1.0.so', 'libpangoft2-1.0.dylib')
-+    fontconfig = dlopen(ffi, '@fontconfig@')
-+    pangoft2 = dlopen(ffi, '@pangoft2@')
- 
-     ffi.cdef('''
-         // FontConfig
-diff --git a/weasyprint/text.py b/weasyprint/text.py
-index 035074e9..08e40395 100644
---- a/weasyprint/text.py
-+++ b/weasyprint/text.py
-@@ -243,12 +243,9 @@ def dlopen(ffi, *names):
-     return ffi.dlopen(names[0])  # pragma: no cover
- 
- 
--gobject = dlopen(ffi, 'gobject-2.0', 'libgobject-2.0-0', 'libgobject-2.0.so',
--                 'libgobject-2.0.dylib')
--pango = dlopen(ffi, 'pango-1.0', 'libpango-1.0-0', 'libpango-1.0.so',
--               'libpango-1.0.dylib')
--pangocairo = dlopen(ffi, 'pangocairo-1.0', 'libpangocairo-1.0-0',
--                    'libpangocairo-1.0.so', 'libpangocairo-1.0.dylib')
-+gobject = dlopen(ffi, '@gobject@')
-+pango = dlopen(ffi, '@pango@')
-+pangocairo = dlopen(ffi, '@pangocairo@')
- 
- gobject.g_type_init()
-