summaryrefslogtreecommitdiff
path: root/gnu/packages/patches
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r--gnu/packages/patches/akonadi-paths.patch53
-rw-r--r--gnu/packages/patches/alsa-modular-synth-fix-vocoder.patch522
-rw-r--r--gnu/packages/patches/biber-sortinithash.patch9
-rw-r--r--gnu/packages/patches/bluez-CVE-2020-0556.patch180
-rw-r--r--gnu/packages/patches/busybox-1.31.1-fix-build-with-glibc-2.31.patch68
-rw-r--r--gnu/packages/patches/calibre-msgpack-compat.patch18
-rw-r--r--gnu/packages/patches/calibre-remove-test-bs4.patch34
-rw-r--r--gnu/packages/patches/darkice-workaround-fpermissive-error.patch62
-rw-r--r--gnu/packages/patches/dbus-CVE-2020-12049.patch58
-rw-r--r--gnu/packages/patches/deja-dup-use-ref-keyword-for-iter.patch41
-rw-r--r--gnu/packages/patches/emacs-libgit-use-system-libgit2.patch88
-rw-r--r--gnu/packages/patches/emacs-magit-log-format-author-margin.patch72
-rw-r--r--gnu/packages/patches/emacs-zones-called-interactively.patch43
-rw-r--r--gnu/packages/patches/enlightenment-fix-setuid-path.patch223
-rw-r--r--gnu/packages/patches/exercism-disable-self-update.patch79
-rw-r--r--gnu/packages/patches/git-annex-S3v4.patch77
-rw-r--r--gnu/packages/patches/grub-setup-root.patch124
-rw-r--r--gnu/packages/patches/guile-fibers-destroy-peer-schedulers.patch24
-rw-r--r--gnu/packages/patches/guile-sqlite3-fix-cross-compilation.patch55
-rw-r--r--gnu/packages/patches/haskell-mode-make-check.patch35
-rw-r--r--gnu/packages/patches/haskell-mode-unused-variables.patch44
-rw-r--r--gnu/packages/patches/http-parser-fix-assertion-on-armhf.patch39
-rw-r--r--gnu/packages/patches/hurd-xattr.patch53
-rw-r--r--gnu/packages/patches/icecat-makeicecat.patch4
-rw-r--r--gnu/packages/patches/java-openjfx-build-jdk_version.patch27
-rw-r--r--gnu/packages/patches/kdepim-runtime-Fix-missing-link-libraries.patch42
-rw-r--r--gnu/packages/patches/kinit-kdeinit-extra_libs.patch10
-rw-r--r--gnu/packages/patches/kpmcore-fix-tests.patch30
-rw-r--r--gnu/packages/patches/kpmcore-remove-broken-test.patch139
-rw-r--r--gnu/packages/patches/lib2geom-enable-assertions.patch36
-rw-r--r--gnu/packages/patches/lib2geom-link-tests-against-glib.patch34
-rw-r--r--gnu/packages/patches/lib2geom-use-system-googletest.patch94
-rw-r--r--gnu/packages/patches/libdrm-realpath-virtio.patch42
-rw-r--r--gnu/packages/patches/libdrm-symbol-check.patch215
-rw-r--r--gnu/packages/patches/libexif-CVE-2016-6328.patch72
-rw-r--r--gnu/packages/patches/libexif-CVE-2017-7544.patch29
-rw-r--r--gnu/packages/patches/libexif-CVE-2018-20030.patch120
-rw-r--r--gnu/packages/patches/libnftnl-dont-check-NFTNL_FLOWTABLE_SIZE.patch47
-rw-r--r--gnu/packages/patches/lxsession-use-gapplication.patch152
-rw-r--r--gnu/packages/patches/netsurf-system-utf8proc.patch51
-rw-r--r--gnu/packages/patches/network-manager-plugin-path.patch (renamed from gnu/packages/patches/nm-plugin-path.patch)0
-rw-r--r--gnu/packages/patches/openscad-parser-boost-1.72.patch26
-rw-r--r--gnu/packages/patches/pidgin-libnm.patch60
-rw-r--r--gnu/packages/patches/plotutils-libpng-jmpbuf.patch23
-rw-r--r--gnu/packages/patches/pypy3-7.3.1-fix-tests.patch278
-rw-r--r--gnu/packages/patches/pyqt-unbundled-qt.patch19
-rw-r--r--gnu/packages/patches/python-argcomplete-1.11.1-fish31.patch29
-rw-r--r--gnu/packages/patches/python-shouldbe-0.1.2-cpy3.8.patch82
-rw-r--r--gnu/packages/patches/qtbase-QTBUG-81715.patch40
-rw-r--r--gnu/packages/patches/qtbase-use-TZDIR.patch4
-rw-r--r--gnu/packages/patches/ruby-sanitize-system-libxml.patch38
-rw-r--r--gnu/packages/patches/transmission-CVE-2018-10756.patch71
-rw-r--r--gnu/packages/patches/websocketpp-fix-for-boost-1.70.patch103
-rw-r--r--gnu/packages/patches/websocketpp-fix-for-cmake-3.15.patch17
54 files changed, 1982 insertions, 1953 deletions
diff --git a/gnu/packages/patches/akonadi-paths.patch b/gnu/packages/patches/akonadi-paths.patch
index da250ee9e8..ac08ec5448 100644
--- a/gnu/packages/patches/akonadi-paths.patch
+++ b/gnu/packages/patches/akonadi-paths.patch
@@ -1,31 +1,31 @@
This is based on the respectve patch from NixPkgs, but with the parts pinning
mysql and postgresql executables removed. The our package definition on why.
-
-Index: akonadi-19.08.0/src/akonadicontrol/agentmanager.cpp
-===================================================================
---- akonadi-19.08.0.orig/src/akonadicontrol/agentmanager.cpp
-+++ akonadi-19.08.0/src/akonadicontrol/agentmanager.cpp
-@@ -78,12 +78,12 @@ AgentManager::AgentManager(bool verbose,
- mStorageController = new Akonadi::ProcessControl;
- mStorageController->setShutdownTimeout(15 * 1000); // the server needs more time for shutdown if we are using an internal mysqld
- connect(mStorageController, &Akonadi::ProcessControl::unableToStart, this, &AgentManager::serverFailure);
-- mStorageController->start(QStringLiteral("akonadiserver"), serviceArgs, Akonadi::ProcessControl::RestartOnCrash);
-+ mStorageController->start(QLatin1String(NIX_OUT "/bin/akonadiserver"), serviceArgs, Akonadi::ProcessControl::RestartOnCrash);
+diff --git a/src/akonadicontrol/agentmanager.cpp b/src/akonadicontrol/agentmanager.cpp
+--- a/src/akonadicontrol/agentmanager.cpp
++++ b/src/akonadicontrol/agentmanager.cpp
+@@ -61,7 +61,7 @@ public:
+ []() {
+ QCoreApplication::instance()->exit(255);
+ });
+- start(QStringLiteral("akonadiserver"), args, RestartOnCrash);
++ start(QLatin1String(NIX_OUT "/bin/akonadiserver"), args, RestartOnCrash);
+ }
- if (mAgentServerEnabled) {
- mAgentServer = new Akonadi::ProcessControl;
- connect(mAgentServer, &Akonadi::ProcessControl::unableToStart, this, &AgentManager::agentServerFailure);
-- mAgentServer->start(QStringLiteral("akonadi_agent_server"), serviceArgs, Akonadi::ProcessControl::RestartOnCrash);
-+ mAgentServer->start(QLatin1String(NIX_OUT "/bin/akonadi_agent_server"), serviceArgs, Akonadi::ProcessControl::RestartOnCrash);
+ ~StorageProcessControl() override
+@@ -84,7 +84,7 @@ public:
+ []() {
+ qCCritical(AKONADICONTROL_LOG) << "Failed to start AgentServer!";
+ });
+- start(QStringLiteral("akonadi_agent_server"), args, RestartOnCrash);
++ start(QLatin1String(NIX_OUT "/bin/akonadi_agent_server"), args, RestartOnCrash);
}
- }
-Index: akonadi-19.08.0/src/akonadicontrol/agentprocessinstance.cpp
-===================================================================
---- akonadi-19.08.0.orig/src/akonadicontrol/agentprocessinstance.cpp
-+++ akonadi-19.08.0/src/akonadicontrol/agentprocessinstance.cpp
-@@ -62,7 +62,7 @@ bool AgentProcessInstance::start(const A
+ ~AgentServerProcessControl() override
+diff --git a/src/akonadicontrol/agentprocessinstance.cpp b/src/akonadicontrol/agentprocessinstance.cpp
+--- a/src/akonadicontrol/agentprocessinstance.cpp
++++ b/src/akonadicontrol/agentprocessinstance.cpp
+@@ -62,7 +62,7 @@ bool AgentProcessInstance::start(const AgentType &agentInfo)
} else {
Q_ASSERT(agentInfo.launchMethod == AgentType::Launcher);
const QStringList arguments = QStringList() << executable << identifier();
@@ -34,11 +34,10 @@ Index: akonadi-19.08.0/src/akonadicontrol/agentprocessinstance.cpp
mController->start(agentLauncherExec, arguments);
}
return true;
-Index: akonadi-19.08.0/src/server/storage/dbconfigmysql.cpp
-===================================================================
---- akonadi-19.08.0.orig/src/server/storage/dbconfigmysql.cpp
-+++ akonadi-19.08.0/src/server/storage/dbconfigmysql.cpp
-@@ -209,7 +193,7 @@ bool DbConfigMysql::startInternalServer(
+diff --git a/src/server/storage/dbconfigmysql.cpp b/src/server/storage/dbconfigmysql.cpp
+--- a/src/server/storage/dbconfigmysql.cpp
++++ b/src/server/storage/dbconfigmysql.cpp
+@@ -209,7 +209,7 @@ bool DbConfigMysql::startInternalServer()
#endif
// generate config file
diff --git a/gnu/packages/patches/alsa-modular-synth-fix-vocoder.patch b/gnu/packages/patches/alsa-modular-synth-fix-vocoder.patch
new file mode 100644
index 0000000000..33a68a1dd8
--- /dev/null
+++ b/gnu/packages/patches/alsa-modular-synth-fix-vocoder.patch
@@ -0,0 +1,522 @@
+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/biber-sortinithash.patch b/gnu/packages/patches/biber-sortinithash.patch
index 1f054d25e4..5a626705e6 100644
--- a/gnu/packages/patches/biber-sortinithash.patch
+++ b/gnu/packages/patches/biber-sortinithash.patch
@@ -21,6 +21,15 @@ index b4f641e..c6f86c7 100644
\field{labelnamesource}{author}
\field{labeltitlesource}{title}
\field{title}{The Title}
+@@ -116,7 +116,7 @@ my $ann2 = q| \entry{ann2}{misc}{}
+ \strng{authorfullhash}{90ae96c82de92e36949bc64254bbde0c}
+ \field{extraname}{2}
+ \field{sortinit}{L}
+- \field{sortinithash}{2c7981aaabc885868aba60f0c09ee20f}
++ \field{sortinithash}{dad3efd0836470093a7b4a7bb756eb8c}
+ \field{labelnamesource}{author}
+ \field{labeltitlesource}{title}
+ \field{title}{The Title}
diff --git a/t/basic-misc.t b/t/basic-misc.t
index d4664b1..a9168cc 100644
--- a/t/basic-misc.t
diff --git a/gnu/packages/patches/bluez-CVE-2020-0556.patch b/gnu/packages/patches/bluez-CVE-2020-0556.patch
deleted file mode 100644
index 7c34459a3a..0000000000
--- a/gnu/packages/patches/bluez-CVE-2020-0556.patch
+++ /dev/null
@@ -1,180 +0,0 @@
-Fix CVE-2020-0556:
-
-https://lore.kernel.org/linux-bluetooth/20200310023516.209146-1-alainm@chromium.org/
-https://www.intel.com/content/www/us/en/security-center/advisory/intel-sa-00352.html
-http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-0556
-
-Patches copied from upstream source repository:
-
-https://git.kernel.org/pub/scm/bluetooth/bluez.git/commit/?id=3cccdbab2324086588df4ccf5f892fb3ce1f1787
-https://git.kernel.org/pub/scm/bluetooth/bluez.git/commit/?id=8cdbd3b09f29da29374e2f83369df24228da0ad1
-
-From 3cccdbab2324086588df4ccf5f892fb3ce1f1787 Mon Sep 17 00:00:00 2001
-From: Alain Michaud <alainm@chromium.org>
-Date: Tue, 10 Mar 2020 02:35:18 +0000
-Subject: [PATCH] HID accepts bonded device connections only.
-
-This change adds a configuration for platforms to choose a more secure
-posture for the HID profile. While some older mice are known to not
-support pairing or encryption, some platform may choose a more secure
-posture by requiring the device to be bonded and require the
-connection to be encrypted when bonding is required.
-
-Reference:
-https://www.intel.com/content/www/us/en/security-center/advisory/intel-sa-00352.html
----
- profiles/input/device.c | 23 ++++++++++++++++++++++-
- profiles/input/device.h | 1 +
- profiles/input/input.conf | 8 ++++++++
- profiles/input/manager.c | 13 ++++++++++++-
- 4 files changed, 43 insertions(+), 2 deletions(-)
-
-diff --git a/profiles/input/device.c b/profiles/input/device.c
-index 2cb3811c8..d89da2d7c 100644
---- a/profiles/input/device.c
-+++ b/profiles/input/device.c
-@@ -92,6 +92,7 @@ struct input_device {
-
- static int idle_timeout = 0;
- static bool uhid_enabled = false;
-+static bool classic_bonded_only = false;
-
- void input_set_idle_timeout(int timeout)
- {
-@@ -103,6 +104,11 @@ void input_enable_userspace_hid(bool state)
- uhid_enabled = state;
- }
-
-+void input_set_classic_bonded_only(bool state)
-+{
-+ classic_bonded_only = state;
-+}
-+
- static void input_device_enter_reconnect_mode(struct input_device *idev);
- static int connection_disconnect(struct input_device *idev, uint32_t flags);
-
-@@ -970,8 +976,18 @@ static int hidp_add_connection(struct input_device *idev)
- if (device_name_known(idev->device))
- device_get_name(idev->device, req->name, sizeof(req->name));
-
-+ /* Make sure the device is bonded if required */
-+ if (classic_bonded_only && !device_is_bonded(idev->device,
-+ btd_device_get_bdaddr_type(idev->device))) {
-+ error("Rejected connection from !bonded device %s", dst_addr);
-+ goto cleanup;
-+ }
-+
- /* Encryption is mandatory for keyboards */
-- if (req->subclass & 0x40) {
-+ /* Some platforms may choose to require encryption for all devices */
-+ /* Note that this only matters for pre 2.1 devices as otherwise the */
-+ /* device is encrypted by default by the lower layers */
-+ if (classic_bonded_only || req->subclass & 0x40) {
- if (!bt_io_set(idev->intr_io, &gerr,
- BT_IO_OPT_SEC_LEVEL, BT_IO_SEC_MEDIUM,
- BT_IO_OPT_INVALID)) {
-@@ -1203,6 +1219,11 @@ static void input_device_enter_reconnect_mode(struct input_device *idev)
- DBG("path=%s reconnect_mode=%s", idev->path,
- reconnect_mode_to_string(idev->reconnect_mode));
-
-+ /* Make sure the device is bonded if required */
-+ if (classic_bonded_only && !device_is_bonded(idev->device,
-+ btd_device_get_bdaddr_type(idev->device)))
-+ return;
-+
- /* Only attempt an auto-reconnect when the device is required to
- * accept reconnections from the host.
- */
-diff --git a/profiles/input/device.h b/profiles/input/device.h
-index 51a9aee18..3044db673 100644
---- a/profiles/input/device.h
-+++ b/profiles/input/device.h
-@@ -29,6 +29,7 @@ struct input_conn;
-
- void input_set_idle_timeout(int timeout);
- void input_enable_userspace_hid(bool state);
-+void input_set_classic_bonded_only(bool state);
-
- int input_device_register(struct btd_service *service);
- void input_device_unregister(struct btd_service *service);
-diff --git a/profiles/input/input.conf b/profiles/input/input.conf
-index 3e1d65aae..166aff4a4 100644
---- a/profiles/input/input.conf
-+++ b/profiles/input/input.conf
-@@ -11,3 +11,11 @@
- # Enable HID protocol handling in userspace input profile
- # Defaults to false (HIDP handled in HIDP kernel module)
- #UserspaceHID=true
-+
-+# Limit HID connections to bonded devices
-+# The HID Profile does not specify that devices must be bonded, however some
-+# platforms may want to make sure that input connections only come from bonded
-+# device connections. Several older mice have been known for not supporting
-+# pairing/encryption.
-+# Defaults to false to maximize device compatibility.
-+#ClassicBondedOnly=true
-diff --git a/profiles/input/manager.c b/profiles/input/manager.c
-index 1d31b0652..5cd27b839 100644
---- a/profiles/input/manager.c
-+++ b/profiles/input/manager.c
-@@ -96,7 +96,7 @@ static int input_init(void)
- config = load_config_file(CONFIGDIR "/input.conf");
- if (config) {
- int idle_timeout;
-- gboolean uhid_enabled;
-+ gboolean uhid_enabled, classic_bonded_only;
-
- idle_timeout = g_key_file_get_integer(config, "General",
- "IdleTimeout", &err);
-@@ -114,6 +114,17 @@ static int input_init(void)
- input_enable_userspace_hid(uhid_enabled);
- } else
- g_clear_error(&err);
-+
-+ classic_bonded_only = g_key_file_get_boolean(config, "General",
-+ "ClassicBondedOnly", &err);
-+
-+ if (!err) {
-+ DBG("input.conf: ClassicBondedOnly=%s",
-+ classic_bonded_only ? "true" : "false");
-+ input_set_classic_bonded_only(classic_bonded_only);
-+ } else
-+ g_clear_error(&err);
-+
- }
-
- btd_profile_register(&input_profile);
---
-2.25.1
-
-From 8cdbd3b09f29da29374e2f83369df24228da0ad1 Mon Sep 17 00:00:00 2001
-From: Alain Michaud <alainm@chromium.org>
-Date: Tue, 10 Mar 2020 02:35:16 +0000
-Subject: [PATCH] HOGP must only accept data from bonded devices.
-
-HOGP 1.0 Section 6.1 establishes that the HOGP must require bonding.
-
-Reference:
-https://www.intel.com/content/www/us/en/security-center/advisory/intel-sa-00352.htm
----
- profiles/input/hog.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/profiles/input/hog.c b/profiles/input/hog.c
-index 83c017dcb..dfac68921 100644
---- a/profiles/input/hog.c
-+++ b/profiles/input/hog.c
-@@ -186,6 +186,10 @@ static int hog_accept(struct btd_service *service)
- return -EINVAL;
- }
-
-+ /* HOGP 1.0 Section 6.1 requires bonding */
-+ if (!device_is_bonded(device, btd_device_get_bdaddr_type(device)))
-+ return -ECONNREFUSED;
-+
- /* TODO: Replace GAttrib with bt_gatt_client */
- bt_hog_attach(dev->hog, attrib);
-
---
-2.25.1
-
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
new file mode 100644
index 0000000000..1518df067f
--- /dev/null
+++ b/gnu/packages/patches/busybox-1.31.1-fix-build-with-glibc-2.31.patch
@@ -0,0 +1,68 @@
+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/calibre-msgpack-compat.patch b/gnu/packages/patches/calibre-msgpack-compat.patch
deleted file mode 100644
index 9920103bea..0000000000
--- a/gnu/packages/patches/calibre-msgpack-compat.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Fix deserialization with msgpack 1.0.
-
-Patch copied from upstream source repository:
-https://github.com/kovidgoyal/calibre/commit/0ff41ac64994ec11b7859fc004c94d08769e3af3
-
-diff --git a/src/calibre/utils/serialize.py b/src/calibre/utils/serialize.py
-index f5d560c468..c35ae53849 100644
---- a/src/calibre/utils/serialize.py
-+++ b/src/calibre/utils/serialize.py
-@@ -110,7 +110,7 @@ def msgpack_decoder(code, data):
- def msgpack_loads(dump, use_list=True):
- # use_list controls whether msgpack arrays are unpacked as lists or tuples
- import msgpack
-- return msgpack.unpackb(dump, ext_hook=msgpack_decoder, raw=False, use_list=use_list)
-+ return msgpack.unpackb(dump, ext_hook=msgpack_decoder, raw=False, use_list=use_list, strict_map_key=False)
-
-
- def json_loads(data):
diff --git a/gnu/packages/patches/calibre-remove-test-bs4.patch b/gnu/packages/patches/calibre-remove-test-bs4.patch
deleted file mode 100644
index 77dd45d329..0000000000
--- a/gnu/packages/patches/calibre-remove-test-bs4.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-In my efforts to fix all Calibre tests, this test would always complain about
-backports.functools_lru_cache not existing even after I packaged and added
-python2-soupsieve as an input and confirmed it was in the
-PYTHONPATH. Currently Calibre does not actually use it for anything other than
-testing it's there, so I assume they will start using it in future Calibre
-versions.
-
-From 2738dd42caebe55326c76922a12ba8740bdb22e7 Mon Sep 17 00:00:00 2001
-From: Brendan Tildesley <mail@brendan.scot>
-Date: Sat, 27 Apr 2019 00:42:39 +1000
-Subject: [PATCH] Remove test_bs4
-
----
- src/calibre/test_build.py | 4 ----
- 1 file changed, 4 deletions(-)
-
-diff --git a/src/calibre/test_build.py b/src/calibre/test_build.py
-index 73f1172e8c..07bdffd3e5 100644
---- a/src/calibre/test_build.py
-+++ b/src/calibre/test_build.py
-@@ -73,10 +73,6 @@ class BuildTest(unittest.TestCase):
- from html5_parser import parse
- parse('<p>xxx')
-
-- def test_bs4(self):
-- import soupsieve, bs4
-- del soupsieve, bs4
--
- def test_zeroconf(self):
- if ispy3:
- import zeroconf as z, ifaddr
---
-2.21.0
-
diff --git a/gnu/packages/patches/darkice-workaround-fpermissive-error.patch b/gnu/packages/patches/darkice-workaround-fpermissive-error.patch
deleted file mode 100644
index 5ee29147c2..0000000000
--- a/gnu/packages/patches/darkice-workaround-fpermissive-error.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-Copied from Debian:
-<https://sources.debian.org/data/main/d/darkice/1.3-0.2/debian/patches/0001-Cast-float-in-SRC-lib-calls-to-delete-fpermissive-co.patch>
-
-From 1e2eb18d349f205c70cb2836232825442359b6e3 Mon Sep 17 00:00:00 2001
-From: belette <ouack23@yahoo.fr>
-Date: Wed, 26 Oct 2016 02:43:43 +0200
-Subject: Cast float* in SRC lib calls to delete fpermissive compilation error
-
----
- darkice/trunk/src/FaacEncoder.cpp | 2 +-
- darkice/trunk/src/OpusLibEncoder.cpp | 2 +-
- darkice/trunk/src/VorbisLibEncoder.cpp | 2 +-
- darkice/trunk/src/aacPlusEncoder.cpp | 2 +-
- 4 files changed, 4 insertions(+), 4 deletions(-)
-
---- a/src/FaacEncoder.cpp
-+++ b/src/FaacEncoder.cpp
-@@ -164,7 +164,7 @@ FaacEncoder :: write ( const void * buf,
- if ( converter ) {
- unsigned int converted;
- #ifdef HAVE_SRC_LIB
-- src_short_to_float_array ((short *) b, converterData.data_in, samples);
-+ src_short_to_float_array ((short *) b, (float *) converterData.data_in, samples);
- converterData.input_frames = nSamples;
- converterData.data_out = resampledOffset + (resampledOffsetSize * channels);
- int srcError = src_process (converter, &converterData);
---- a/src/OpusLibEncoder.cpp
-+++ b/src/OpusLibEncoder.cpp
-@@ -403,7 +403,7 @@ OpusLibEncoder :: write ( const void * buf,
- #ifdef HAVE_SRC_LIB
- (void)inCount;
- converterData.input_frames = processed;
-- src_short_to_float_array (shortBuffer, converterData.data_in, totalSamples);
-+ src_short_to_float_array (shortBuffer, (float *) converterData.data_in, totalSamples);
- int srcError = src_process (converter, &converterData);
- if (srcError)
- throw Exception (__FILE__, __LINE__, "libsamplerate error: ", src_strerror (srcError));
---- a/src/VorbisLibEncoder.cpp
-+++ b/src/VorbisLibEncoder.cpp
-@@ -337,7 +337,7 @@ VorbisLibEncoder :: write ( const void * buf,
- int converted;
- #ifdef HAVE_SRC_LIB
- converterData.input_frames = nSamples;
-- src_short_to_float_array (shortBuffer, converterData.data_in, totalSamples);
-+ src_short_to_float_array (shortBuffer, (float *) converterData.data_in, totalSamples);
- int srcError = src_process (converter, &converterData);
- if (srcError)
- throw Exception (__FILE__, __LINE__, "libsamplerate error: ", src_strerror (srcError));
---- a/src/aacPlusEncoder.cpp
-+++ b/src/aacPlusEncoder.cpp
-@@ -155,7 +155,7 @@ aacPlusEncoder :: write ( const void * buf,
- if ( converter ) {
- unsigned int converted;
- #ifdef HAVE_SRC_LIB
-- src_short_to_float_array ((short *) b, converterData.data_in, samples);
-+ src_short_to_float_array ((short *) b, (float *) converterData.data_in, samples);
- converterData.input_frames = nSamples;
- converterData.data_out = resampledOffset + (resampledOffsetSize * channels);
- int srcError = src_process (converter, &converterData);
---
-2.11.0
-
diff --git a/gnu/packages/patches/dbus-CVE-2020-12049.patch b/gnu/packages/patches/dbus-CVE-2020-12049.patch
new file mode 100644
index 0000000000..71280144a1
--- /dev/null
+++ b/gnu/packages/patches/dbus-CVE-2020-12049.patch
@@ -0,0 +1,58 @@
+Fix CVE-2020-12049:
+
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-12049
+https://lists.freedesktop.org/archives/ftp-release/2020-June/000753.html
+
+Taken from upstream:
+
+https://gitlab.freedesktop.org/dbus/dbus/-/commit/272d484283883fa9ff95b69d924fff6cd34842f5
+
+diff --git a/dbus/dbus-sysdeps-unix.c b/dbus/dbus-sysdeps-unix.c
+--- a/dbus/dbus-sysdeps-unix.c
++++ b/dbus/dbus-sysdeps-unix.c
+@@ -435,18 +435,6 @@ _dbus_read_socket_with_unix_fds (DBusSocket fd,
+ struct cmsghdr *cm;
+ dbus_bool_t found = FALSE;
+
+- if (m.msg_flags & MSG_CTRUNC)
+- {
+- /* Hmm, apparently the control data was truncated. The bad
+- thing is that we might have completely lost a couple of fds
+- without chance to recover them. Hence let's treat this as a
+- serious error. */
+-
+- errno = ENOSPC;
+- _dbus_string_set_length (buffer, start);
+- return -1;
+- }
+-
+ for (cm = CMSG_FIRSTHDR(&m); cm; cm = CMSG_NXTHDR(&m, cm))
+ if (cm->cmsg_level == SOL_SOCKET && cm->cmsg_type == SCM_RIGHTS)
+ {
+@@ -501,6 +489,26 @@ _dbus_read_socket_with_unix_fds (DBusSocket fd,
+ if (!found)
+ *n_fds = 0;
+
++ if (m.msg_flags & MSG_CTRUNC)
++ {
++ unsigned int i;
++
++ /* Hmm, apparently the control data was truncated. The bad
++ thing is that we might have completely lost a couple of fds
++ without chance to recover them. Hence let's treat this as a
++ serious error. */
++
++ /* We still need to close whatever fds we *did* receive,
++ * otherwise they'll never get closed. (CVE-2020-12049) */
++ for (i = 0; i < *n_fds; i++)
++ close (fds[i]);
++
++ *n_fds = 0;
++ errno = ENOSPC;
++ _dbus_string_set_length (buffer, start);
++ return -1;
++ }
++
+ /* put length back (doesn't actually realloc) */
+ _dbus_string_set_length (buffer, start + bytes_read);
+
diff --git a/gnu/packages/patches/deja-dup-use-ref-keyword-for-iter.patch b/gnu/packages/patches/deja-dup-use-ref-keyword-for-iter.patch
deleted file mode 100644
index a03e0c5481..0000000000
--- a/gnu/packages/patches/deja-dup-use-ref-keyword-for-iter.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 5676766be5e845ccb6cdf46cfa8722497f151752 Mon Sep 17 00:00:00 2001
-From: Jeremy Bicha <jbicha@ubuntu.com>
-Date: Fri, 16 Jun 2017 15:11:37 -0400
-Subject: Use 'ref' keyword for iter, requires vala 0.36
-
-
-diff --git a/deja-dup/widgets/ConfigList.vala b/deja-dup/widgets/ConfigList.vala
-index 15de2d6..02cd81a 100644
---- a/deja-dup/widgets/ConfigList.vala
-+++ b/deja-dup/widgets/ConfigList.vala
-@@ -333,7 +333,7 @@ public class ConfigList : ConfigWidget
-
- model.row_deleted.disconnect(write_to_config);
- foreach (Gtk.TreeIter iter in iters) {
-- (model as Gtk.ListStore).remove(iter);
-+ (model as Gtk.ListStore).remove(ref iter);
- }
- model.row_deleted.connect(write_to_config);
-
-diff --git a/deja-dup/widgets/ConfigLocation.vala b/deja-dup/widgets/ConfigLocation.vala
-index 869e2a8..d21c556 100644
---- a/deja-dup/widgets/ConfigLocation.vala
-+++ b/deja-dup/widgets/ConfigLocation.vala
-@@ -397,12 +397,12 @@ public class ConfigLocation : ConfigWidget
- if (uuid == saved_uuid)
- return;
-
-- store.remove(iter);
-+ store.remove(ref iter);
-
- if (--num_volumes == 0) {
- Gtk.TreeIter sep_iter;
- if (store.get_iter_from_string(out sep_iter, index_vol_sep.to_string())) {
-- store.remove(sep_iter);
-+ store.remove(ref sep_iter);
- index_vol_sep = -2;
- }
- }
---
-cgit v0.10.2
-
diff --git a/gnu/packages/patches/emacs-libgit-use-system-libgit2.patch b/gnu/packages/patches/emacs-libgit-use-system-libgit2.patch
new file mode 100644
index 0000000000..4a5546b06b
--- /dev/null
+++ b/gnu/packages/patches/emacs-libgit-use-system-libgit2.patch
@@ -0,0 +1,88 @@
+From de3c48d72ec7064e7f0522877fe759c729df0c50 Mon Sep 17 00:00:00 2001
+From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
+Date: Wed, 25 Mar 2020 11:32:18 -0400
+Subject: [PATCH] Allow using a system provided libgit2 library
+
+Setting the USE_SYSTEM_LIBGIT2 Make or CMake variable (through the
+BUILD_OPTIONS variable) to any value enables using the system library.
+The default behavior of using a bundled copy of libgit2 is unchanged.
+---
+ CMakeLists.txt | 9 +++++++--
+ Makefile | 11 +++++++++++
+ src/CMakeLists.txt | 9 +++++++--
+ 3 files changed, 25 insertions(+), 4 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index a393d7c..75d6ca6 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -7,9 +7,14 @@ set(BUILD_SHARED_LIBS OFF CACHE BOOL "shared" FORCE)
+ set(BUILD_CLAR OFF CACHE BOOL "clar" FORCE)
+ set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DEGIT_DEBUG")
+
+-add_subdirectory(libgit2)
++if(USE_SYSTEM_LIBGIT2)
++ find_package(PkgConfig REQUIRED)
++ pkg_check_modules(git2 REQUIRED IMPORTED_TARGET libgit2)
++else()
++ add_subdirectory(libgit2)
++ find_library(git2 libgit2.a)
++endif()
+
+-find_library(git2 libgit2.a)
+ add_subdirectory(src)
+
+ enable_testing()
+diff --git a/Makefile b/Makefile
+index 8199532..6a6a4e1 100644
+--- a/Makefile
++++ b/Makefile
+@@ -13,6 +13,13 @@ ifeq ($(UNAME),MSYS)
+ BUILD_OPTIONS+= -G "MSYS Makefiles"
+ endif
+
++# If the variable USE_SYSTEM_LIBGIT2 is set to *any* value, use the
++# system provided libgit2 library.
++USE_SYSTEM_LIBGIT2? := \
++ $(if $(or $(USE_SYSTEM_LIBGIT2),\
++ $(findstring USE_SYSTEM_LIBGIT2,$(BUILD_OPTIONS))),\
++ true)
++
+ ifeq "$(TRAVIS)" "true"
+ ## Makefile for Travis ###################################################
+ #
+@@ -87,7 +94,11 @@ submodule-update:
+ @git submodule update
+
+ libgit2:
++ifeq ($(USE_SYSTEM_LIBGIT2?),)
+ @git submodule update --init
++else
++ @echo "Using the system provided libgit2 library"
++endif
+
+ CLEAN = $(ELCS) $(PKG)-autoloads.el build
+
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index cfb5777..0dbad8a 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -13,8 +13,13 @@ if(WIN32)
+ set_target_properties(egit2 PROPERTIES PREFIX lib)
+ endif(WIN32)
+
+-target_link_libraries(egit2 git2)
+-target_include_directories(egit2 SYSTEM PRIVATE "${libgit2_SOURCE_DIR}/include")
++if(USE_SYSTEM_LIBGIT2)
++ target_link_libraries(egit2 PRIVATE PkgConfig::git2)
++else()
++ target_link_libraries(egit2 git2)
++ target_include_directories(
++ egit2 SYSTEM PRIVATE "${libgit2_SOURCE_DIR}/include")
++endif()
+
+ if(CMAKE_COMPILER_IS_GNUCC)
+ target_compile_options(egit2 PRIVATE -Wall -Wextra)
+--
+2.26.2
+
diff --git a/gnu/packages/patches/emacs-magit-log-format-author-margin.patch b/gnu/packages/patches/emacs-magit-log-format-author-margin.patch
deleted file mode 100644
index fc52157a32..0000000000
--- a/gnu/packages/patches/emacs-magit-log-format-author-margin.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 94914ca4690c0cff12d600a0c8ba6bfb3fb38dc5 Mon Sep 17 00:00:00 2001
-From: Jonas Bernoulli <jonas@bernoul.li>
-Date: Tue, 25 Jun 2019 21:44:32 +0200
-Subject: [PATCH] magit-log-format-author-margin: New function
-
-Split it from `magit-log-format-margin'.
----
- lisp/magit-log.el | 48 +++++++++++++++++++++++++----------------------
- 1 file changed, 26 insertions(+), 22 deletions(-)
-
-diff --git a/lisp/magit-log.el b/lisp/magit-log.el
-index c8e6ef63..c0a79b19 100644
---- a/lisp/magit-log.el
-+++ b/lisp/magit-log.el
-@@ -1374,28 +1374,32 @@ The shortstat style is experimental and rather slow."
- (when-let ((option (magit-margin-option)))
- (if magit-log-margin-show-shortstat
- (magit-log-format-shortstat-margin rev)
-- (pcase-let ((`(,_ ,style ,width ,details ,details-width)
-- (or magit-buffer-margin
-- (symbol-value option))))
-- (magit-make-margin-overlay
-- (concat (and details
-- (concat (propertize (truncate-string-to-width
-- (or author "")
-- details-width
-- nil ?\s (make-string 1 magit-ellipsis))
-- 'face 'magit-log-author)
-- " "))
-- (propertize
-- (if (stringp style)
-- (format-time-string
-- style
-- (seconds-to-time (string-to-number date)))
-- (pcase-let* ((abbr (eq style 'age-abbreviated))
-- (`(,cnt ,unit) (magit--age date abbr)))
-- (format (format (if abbr "%%2i%%-%ic" "%%2i %%-%is")
-- (- width (if details (1+ details-width) 0)))
-- cnt unit)))
-- 'face 'magit-log-date)))))))
-+ (magit-log-format-author-margin author date))))
-+
-+(defun magit-log-format-author-margin (author date &optional previous-line)
-+ (pcase-let ((`(,_ ,style ,width ,details ,details-width)
-+ (or magit-buffer-margin
-+ (symbol-value option))))
-+ (magit-make-margin-overlay
-+ (concat (and details
-+ (concat (propertize (truncate-string-to-width
-+ (or author "")
-+ details-width
-+ nil ?\s (make-string 1 magit-ellipsis))
-+ 'face 'magit-log-author)
-+ " "))
-+ (propertize
-+ (if (stringp style)
-+ (format-time-string
-+ style
-+ (seconds-to-time (string-to-number date)))
-+ (pcase-let* ((abbr (eq style 'age-abbreviated))
-+ (`(,cnt ,unit) (magit--age date abbr)))
-+ (format (format (if abbr "%%2i%%-%ic" "%%2i %%-%is")
-+ (- width (if details (1+ details-width) 0)))
-+ cnt unit)))
-+ 'face 'magit-log-date))
-+ previous-line)))
-
- (defun magit-log-format-shortstat-margin (rev)
- (magit-make-margin-overlay
---
-2.23.0
-
diff --git a/gnu/packages/patches/emacs-zones-called-interactively.patch b/gnu/packages/patches/emacs-zones-called-interactively.patch
deleted file mode 100644
index eefcfdd12e..0000000000
--- a/gnu/packages/patches/emacs-zones-called-interactively.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 81603e53ebaae0f0b23c4c52c7dab83e808964ec Mon Sep 17 00:00:00 2001
-From: Brian Leung <bkleung89@gmail.com>
-Date: Sun, 17 Mar 2019 01:32:04 +0100
-Subject: [PATCH] This patch silences the byte-compiler.
-
----
- zones.el | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/zones.el b/zones.el
-index ca88d48..594ea36 100644
---- a/zones.el
-+++ b/zones.el
-@@ -1075,7 +1075,7 @@ You can use `C-x n x' to widen to a previous buffer restriction.
-
- This is a destructive operation. The list structure of the variable
- value can be modified."
-- (zz-narrow-advice (interactive-p)))
-+ (zz-narrow-advice (called-interactively-p 'interactive)))
-
- (defadvice narrow-to-defun (after zz-add-zone--defun activate)
- "Push the defun limits to the current `zz-izones-var'.
-@@ -1083,7 +1083,7 @@ You can use `C-x n x' to widen to a previous buffer restriction.
-
- This is a destructive operation. The list structure of the variable
- value can be modified."
-- (zz-narrow-advice (interactive-p)))
-+ (zz-narrow-advice (called-interactively-p 'interactive)))
-
- ;; Call `zz-add-zone' if interactive or `zz-add-zone-anyway-p'.
- ;;
-@@ -1093,7 +1093,7 @@ You can use `C-x n x' to widen to a previous buffer restriction.
-
- This is a destructive operation. The list structure of the variable
- value can be modified."
-- (zz-narrow-advice (interactive-p)))
-+ (zz-narrow-advice (called-interactively-p 'interactive)))
-
- ;;(@* "General Commands")
-
---
-2.22.0
-
diff --git a/gnu/packages/patches/enlightenment-fix-setuid-path.patch b/gnu/packages/patches/enlightenment-fix-setuid-path.patch
index c48f18c8ec..a0efb29857 100644
--- a/gnu/packages/patches/enlightenment-fix-setuid-path.patch
+++ b/gnu/packages/patches/enlightenment-fix-setuid-path.patch
@@ -1,34 +1,29 @@
diff --git a/src/bin/e_auth.c b/src/bin/e_auth.c
-index 00b0e5d84..98ab4518f 100644
+index 8b0aa6641..3dff0ad84 100644
--- a/src/bin/e_auth.c
+++ b/src/bin/e_auth.c
-@@ -9,8 +9,7 @@ e_auth_begin(char *passwd)
+@@ -12,8 +12,7 @@ e_auth_begin(char *passwd)
+ if (pwlen == 0) goto out;
- if (strlen(passwd) == 0) goto out;
-
-- snprintf(buf, sizeof(buf), "%s/enlightenment/utils/enlightenment_ckpasswd",
+ snprintf(buf, sizeof(buf),
+- "%s/enlightenment/utils/enlightenment_ckpasswd pw",
- e_prefix_lib_get());
-+ snprintf(buf, sizeof(buf), "/run/setuid-programs/enlightenment_ckpasswd");
-
++ "/run/setuid-programs/enlightenment_ckpasswd pw");
exe = ecore_exe_pipe_run(buf, ECORE_EXE_PIPE_WRITE, NULL);
- if (ecore_exe_send(exe, passwd, strlen(passwd)) != EINA_TRUE) goto out;
-diff --git a/src/bin/e_backlight.c b/src/bin/e_backlight.c
-index 2bced6766..208e583ba 100644
---- a/src/bin/e_backlight.c
-+++ b/src/bin/e_backlight.c
-@@ -521,8 +521,8 @@ _bl_sys_level_set(double val)
- }
- // fprintf(stderr, "SET: %1.3f\n", val);
+ if (!exe) goto out;
+ if (ecore_exe_send(exe, passwd, pwlen) != EINA_TRUE) goto out;
+@@ -47,8 +46,7 @@ e_auth_polkit_begin(char *passwd, const char *cookie, unsigned int uid)
+ if (pwlen == 0) goto out;
+
snprintf(buf, sizeof(buf),
-- "%s/enlightenment/utils/enlightenment_backlight %i %s",
-- e_prefix_lib_get(), (int)(val * 1000.0), bl_sysval);
-+ "/run/setuid-programs/enlightenment_backlight %i %s",
-+ (int)(val * 1000.0), bl_sysval);
- bl_sys_set_exe = ecore_exe_run(buf, NULL);
- }
- #endif // HAVE_EEZE || __FreeBSD_kernel__
+- "%s/enlightenment/utils/enlightenment_ckpasswd pk",
+- e_prefix_lib_get());
++ "/run/setuid-programs/enlightenment_ckpasswd pk");
+ exe = ecore_exe_pipe_run(buf, ECORE_EXE_PIPE_WRITE, NULL);
+ if (!exe) goto out;
+ snprintf(buf, sizeof(buf), "%s %u %s", cookie, uid, passwd);
diff --git a/src/bin/e_fm/e_fm_main_eeze.c b/src/bin/e_fm/e_fm_main_eeze.c
-index 0fcffa249..c1921121d 100644
+index 9b10b3117..74e6b72ad 100644
--- a/src/bin/e_fm/e_fm_main_eeze.c
+++ b/src/bin/e_fm/e_fm_main_eeze.c
@@ -318,7 +318,7 @@ _e_fm_main_eeze_volume_eject(E_Volume *v)
@@ -58,163 +53,29 @@ index 0fcffa249..c1921121d 100644
eeze_disk_mount_wrapper_set(v->disk, buf2);
}
v->guard = ecore_timer_loop_add(E_FM_MOUNT_TIMEOUT, (Ecore_Task_Cb)_e_fm_main_eeze_vol_mount_timeout, v);
-diff --git a/src/bin/e_sys.c b/src/bin/e_sys.c
-index 671fbcd9a..90ee04cf1 100644
---- a/src/bin/e_sys.c
-+++ b/src/bin/e_sys.c
-@@ -702,20 +702,16 @@ _e_sys_cb_timer(void *data EINA_UNUSED)
-
- e_init_status_set(_("Checking System Permissions"));
- snprintf(buf, sizeof(buf),
-- "%s/enlightenment/utils/enlightenment_sys -t halt",
-- e_prefix_lib_get());
-+ "/run/setuid-programs/enlightenment_sys -t halt");
- _e_sys_halt_check_exe = ecore_exe_run(buf, NULL);
- snprintf(buf, sizeof(buf),
-- "%s/enlightenment/utils/enlightenment_sys -t reboot",
-- e_prefix_lib_get());
-+ "/run/setuid-programs/enlightenment_sys -t reboot");
- _e_sys_reboot_check_exe = ecore_exe_run(buf, NULL);
- snprintf(buf, sizeof(buf),
-- "%s/enlightenment/utils/enlightenment_sys -t suspend",
-- e_prefix_lib_get());
-+ "/run/setuid-programs/enlightenment_sys -t suspend");
- _e_sys_suspend_check_exe = ecore_exe_run(buf, NULL);
- snprintf(buf, sizeof(buf),
-- "%s/enlightenment/utils/enlightenment_sys -t hibernate",
-- e_prefix_lib_get());
-+ "/run/setuid-programs/enlightenment_sys -t hibernate");
- _e_sys_hibernate_check_exe = ecore_exe_run(buf, NULL);
- return ECORE_CALLBACK_CANCEL;
- }
-@@ -1134,8 +1130,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw)
- if (e_util_immortal_check()) return 0;
- e_fm2_die();
- snprintf(buf, sizeof(buf),
-- "%s/enlightenment/utils/enlightenment_sys halt",
-- e_prefix_lib_get());
-+ "/run/setuid-programs/enlightenment_sys halt");
- if (_e_sys_exe)
- {
- if ((ecore_time_get() - _e_sys_begin_time) > 2.0)
-@@ -1170,8 +1165,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw)
- if (e_util_immortal_check()) return 0;
- e_fm2_die();
- snprintf(buf, sizeof(buf),
-- "%s/enlightenment/utils/enlightenment_sys reboot",
-- e_prefix_lib_get());
-+ "/run/setuid-programs/enlightenment_sys reboot");
- if (_e_sys_exe)
- {
- if ((ecore_time_get() - _e_sys_begin_time) > 2.0)
-@@ -1204,8 +1198,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw)
- case E_SYS_SUSPEND:
- /* /etc/acpi/sleep.sh force */
- snprintf(buf, sizeof(buf),
-- "%s/enlightenment/utils/enlightenment_sys suspend",
-- e_prefix_lib_get());
-+ "/run/setuid-programs/enlightenment_sys suspend");
- if (_e_sys_exe)
- {
- if ((ecore_time_get() - _e_sys_begin_time) > 2.0)
-@@ -1265,8 +1258,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw)
- case E_SYS_HIBERNATE:
- /* /etc/acpi/hibernate.sh force */
- snprintf(buf, sizeof(buf),
-- "%s/enlightenment/utils/enlightenment_sys hibernate",
-- e_prefix_lib_get());
-+ "/run/setuid-programs/enlightenment_sys hibernate");
- if (_e_sys_exe)
- {
- if ((ecore_time_get() - _e_sys_begin_time) > 2.0)
-diff --git a/src/modules/bluez4/e_mod_main.c b/src/modules/bluez4/e_mod_main.c
-index 4b5148634..47d34b07f 100644
---- a/src/modules/bluez4/e_mod_main.c
-+++ b/src/modules/bluez4/e_mod_main.c
-@@ -49,8 +49,8 @@ _ebluez_l2ping_poller(void *data EINA_UNUSED)
-
- if (tmp)
- {
-- eina_strbuf_append_printf(buf, "%s/enlightenment/utils/enlightenment_sys l2ping %s",
-- e_prefix_lib_get(), tmp);
-+ eina_strbuf_append_printf(buf, "/run/setuid-programs/enlightenment_sys l2ping %s",
-+ tmp);
- autolock_exe = ecore_exe_run(eina_strbuf_string_get(buf), NULL);
- }
-
-@@ -692,8 +692,7 @@ e_modapi_init(E_Module *m)
- autolock_desklock = ecore_event_handler_add(E_EVENT_DESKLOCK, _ebluez_desklock, NULL);
-
- buf = eina_strbuf_new();
-- eina_strbuf_append_printf(buf, "%s/enlightenment/utils/enlightenment_sys -t l2ping",
-- e_prefix_lib_get());
-+ eina_strbuf_append_printf(buf, "/run/setuid-programs/enlightenment_sys -t l2ping");
- autolock_exe = ecore_exe_run(eina_strbuf_string_get(buf), NULL);
- eina_strbuf_free(buf);
-
-diff --git a/src/modules/bluez5/e_mod_main.c b/src/modules/bluez5/e_mod_main.c
-index a581c466c..095d8f360 100644
---- a/src/modules/bluez5/e_mod_main.c
-+++ b/src/modules/bluez5/e_mod_main.c
-@@ -321,8 +321,8 @@ ebluez5_rfkill_unblock(const char *name)
- if (buf)
- {
- eina_strbuf_append_printf
-- (buf, "%s/enlightenment/utils/enlightenment_sys rfkill-unblock %s",
-- e_prefix_lib_get(), name);
-+ (buf, "/run/setuid-programs/enlightenment_sys rfkill-unblock %s",
-+ name);
- _rfkill_exe = ecore_exe_run(eina_strbuf_string_get(buf), NULL);
- eina_strbuf_free(buf);
- }
-diff --git a/src/modules/cpufreq/e_mod_main.c b/src/modules/cpufreq/e_mod_main.c
-index b66b365d8..bab0802cc 100644
---- a/src/modules/cpufreq/e_mod_main.c
-+++ b/src/modules/cpufreq/e_mod_main.c
-@@ -1452,8 +1452,7 @@ e_modapi_init(E_Module *m)
- }
- E_CONFIG_LIMIT(cpufreq_config->poll_interval, 1, 1024);
-
-- snprintf(buf, sizeof(buf), "%s/%s/freqset",
-- e_module_dir_get(m), MODULE_ARCH);
-+ snprintf(buf, sizeof(buf), "/run/setuid-programs/freqset");
- cpufreq_config->set_exe_path = strdup(buf);
-
- if (stat(buf, &st) < 0)
-diff --git a/src/modules/sysinfo/cpuclock/cpuclock.c b/src/modules/sysinfo/cpuclock/cpuclock.c
-index 938916e53..00d5067d0 100644
---- a/src/modules/sysinfo/cpuclock/cpuclock.c
-+++ b/src/modules/sysinfo/cpuclock/cpuclock.c
-@@ -80,8 +80,7 @@ _cpuclock_set_governor(const char *governor)
- char buf[4096 + 100], exe[4096];
- struct stat st;
-
-- snprintf(exe, 4096, "%s/%s/cpuclock_sysfs",
-- e_module_dir_get(sysinfo_config->module), MODULE_ARCH);
-+ snprintf(exe, 4096, "/run/setuid-programs/cpuclock_sysfs");
- if (stat(exe, &st) < 0) return;
-
- snprintf(buf, sizeof(buf),
-@@ -108,8 +107,7 @@ _cpuclock_set_frequency(int frequency)
- if (system(buf) != 0)
- ERR("Error code from trying to run \"%s\"", buf);
- #else
-- snprintf(exe, 4096, "%s/%s/cpuclock_sysfs",
-- e_module_dir_get(sysinfo_config->module), MODULE_ARCH);
-+ snprintf(exe, 4096, "/run/setuid-programs/cpuclock_sysfs");
- if (stat(exe, &st) < 0) return;
- snprintf(buf, sizeof(buf),
- "%s %s %i", exe, "frequency", frequency);
-@@ -127,8 +125,7 @@ _cpuclock_set_pstate(int min, int max, int turbo)
- char buf[4096 + 100], exe[4096];
- struct stat st;
+diff --git a/src/bin/e_start_main.c b/src/bin/e_start_main.c
+index b2c439455..cb16c7bd4 100644
+--- a/src/bin/e_start_main.c
++++ b/src/bin/e_start_main.c
+@@ -710,7 +710,7 @@ main(int argc, char **argv)
+ "E_ALERT_FONT_DIR=%s/data/fonts", eina_prefix_data_get(pfx));
+ putenv(buf2);
+ snprintf(buf3, sizeof(buf3),
+- "E_ALERT_SYSTEM_BIN=%s/enlightenment/utils/enlightenment_system", eina_prefix_lib_get(pfx));
++ "E_ALERT_SYSTEM_BIN=/run/setuid-programs/enlightenment_system");
+ putenv(buf3);
-- snprintf(exe, 4096, "%s/%s/cpuclock_sysfs",
-- e_module_dir_get(sysinfo_config->module), MODULE_ARCH);
-+ snprintf(exe, 4096, "/run/setuid-programs/cpuclock_sysfs");
- if (stat(exe, &st) < 0) return;
+ if ((valgrind_mode || valgrind_tool) &&
+diff --git a/src/bin/e_system.c b/src/bin/e_system.c
+index 1e7aabb64..dc0173219 100644
+--- a/src/bin/e_system.c
++++ b/src/bin/e_system.c
+@@ -132,7 +132,7 @@ _system_spawn(void)
+ else _respawn_count = 0;
+ if (_respawn_count > 5) return;
snprintf(buf, sizeof(buf),
- "%s %s %i %i %i", exe, "pstate", min, max, turbo);
---
-2.23.0
-
+- "%s/enlightenment/utils/enlightenment_system", e_prefix_lib_get());
++ "/run/setuid-programs/enlightenment_system");
+ _system_exe = ecore_exe_pipe_run
+ (buf, ECORE_EXE_NOT_LEADER | ECORE_EXE_TERM_WITH_PARENT |
+ ECORE_EXE_PIPE_READ | ECORE_EXE_PIPE_WRITE, NULL);
diff --git a/gnu/packages/patches/exercism-disable-self-update.patch b/gnu/packages/patches/exercism-disable-self-update.patch
new file mode 100644
index 0000000000..a96cbfbc55
--- /dev/null
+++ b/gnu/packages/patches/exercism-disable-self-update.patch
@@ -0,0 +1,79 @@
+From bc22f7d43c12c5f79c71b0319666e71f29d61322 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jakub=20K=C4=85dzio=C5=82ka?= <kuba@kadziolka.net>
+Date: Mon, 25 May 2020 18:53:04 +0200
+Subject: [PATCH] Disable self-update.
+
+Based on a Fedora patch by Elliott Sales de Andrade.
+---
+ cli/cli.go | 44 +-------------------------------------------
+ 1 file changed, 1 insertion(+), 43 deletions(-)
+
+diff --git a/cli/cli.go b/cli/cli.go
+index 4312eb0..5f62297 100644
+--- a/cli/cli.go
++++ b/cli/cli.go
+@@ -10,13 +10,10 @@ import (
+ "io"
+ "io/ioutil"
+ "net/http"
+- "runtime"
+ "strings"
+ "time"
+
+ "github.com/blang/semver"
+- "github.com/exercism/cli/debug"
+- update "github.com/inconshreveable/go-update"
+ )
+
+ var (
+@@ -95,46 +92,7 @@ func (c *CLI) IsUpToDate() (bool, error) {
+
+ // Upgrade allows the user to upgrade to the latest version of the CLI.
+ func (c *CLI) Upgrade() error {
+- var (
+- OS = osMap[runtime.GOOS]
+- ARCH = archMap[runtime.GOARCH]
+- )
+-
+- if OS == "" || ARCH == "" {
+- return fmt.Errorf("unable to upgrade: OS %s ARCH %s", OS, ARCH)
+- }
+-
+- buildName := fmt.Sprintf("%s-%s", OS, ARCH)
+- if BuildARCH == "arm" {
+- if BuildARM == "" {
+- return fmt.Errorf("unable to upgrade: arm version not found")
+- }
+- buildName = fmt.Sprintf("%s-v%s", buildName, BuildARM)
+- }
+-
+- var downloadRC *bytes.Reader
+- for _, a := range c.LatestRelease.Assets {
+- if strings.Contains(a.Name, buildName) {
+- debug.Printf("Downloading %s\n", a.Name)
+- var err error
+- downloadRC, err = a.download()
+- if err != nil {
+- return fmt.Errorf("error downloading executable: %s", err)
+- }
+- break
+- }
+- }
+- if downloadRC == nil {
+- return fmt.Errorf("no executable found for %s/%s%s", BuildOS, BuildARCH, BuildARM)
+- }
+-
+- bin, err := extractBinary(downloadRC, OS)
+- if err != nil {
+- return err
+- }
+- defer bin.Close()
+-
+- return update.Apply(bin, update.Options{})
++ return fmt.Errorf("Please use Guix to update Exercism")
+ }
+
+ func (c *CLI) fetchLatestRelease() error {
+--
+2.26.2
+
diff --git a/gnu/packages/patches/git-annex-S3v4.patch b/gnu/packages/patches/git-annex-S3v4.patch
deleted file mode 100644
index 9f7cea329e..0000000000
--- a/gnu/packages/patches/git-annex-S3v4.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From the upstream commit, with the changes to CHANGELOG and the docs
-folder removed.
-
-From 1532d67c3ecf452b8c86bcc5928525398755cd01 Mon Sep 17 00:00:00 2001
-From: Joey Hess <joeyh@joeyh.name>
-Date: Thu, 7 May 2020 13:18:11 -0400
-Subject: [PATCH] S3: Support signature=v4
-
-To use S3 Signature Version 4. Some S3 services seem to require v4, while
-others may only support v2, which remains the default.
-
-I'm also not sure if v4 works correctly in all cases, there is this
-upstream bug report: https://github.com/aristidb/aws/issues/262
-I've only tested it against the default S3 endpoint.
----
- CHANGELOG | 3 +++
- Remote/S3.hs | 23 ++++++++++++++++++-
- ..._3bbdf23c8a4a480f4f6b8e8a2f8ddecd._comment | 13 +++++++++++
- ..._854390b9a781da82ecb85ad85eecad04._comment | 13 +++++++++++
- doc/special_remotes/S3.mdwn | 4 ++++
- ..._cf57e8dbd9fdc7c487565b61808b6bb2._comment | 10 ++++++++
- 6 files changed, 65 insertions(+), 1 deletion(-)
- create mode 100644 doc/bugs/S3_special_remote_support_for_DigitalOcean_Spaces/comment_2_3bbdf23c8a4a480f4f6b8e8a2f8ddecd._comment
- create mode 100644 doc/forum/backblaze_s3/comment_1_854390b9a781da82ecb85ad85eecad04._comment
- create mode 100644 doc/special_remotes/S3/comment_34_cf57e8dbd9fdc7c487565b61808b6bb2._comment
-
-diff --git a/Remote/S3.hs b/Remote/S3.hs
-index cb345d1f8..e3ea492f2 100644
---- a/Remote/S3.hs
-+++ b/Remote/S3.hs
-@@ -99,6 +99,8 @@ remote = specialRemoteType $ RemoteType
- (FieldDesc "port to connect to")
- , optionalStringParser requeststyleField
- (FieldDesc "for path-style requests, set to \"path\"")
-+ , signatureVersionParser signatureField
-+ (FieldDesc "S3 signature version")
- , optionalStringParser mungekeysField HiddenField
- , optionalStringParser AWS.s3credsField HiddenField
- ]
-@@ -148,6 +150,22 @@ protocolField = Accepted "protocol"
- requeststyleField :: RemoteConfigField
- requeststyleField = Accepted "requeststyle"
-
-+signatureField :: RemoteConfigField
-+signatureField = Accepted "signature"
-+
-+newtype SignatureVersion = SignatureVersion Int
-+
-+signatureVersionParser :: RemoteConfigField -> FieldDesc -> RemoteConfigFieldParser
-+signatureVersionParser f fd =
-+ genParser go f defver fd
-+ (Just (ValueDesc "v2 or v4"))
-+ where
-+ go "v2" = Just (SignatureVersion 2)
-+ go "v4" = Just (SignatureVersion 4)
-+ go _ = Nothing
-+
-+ defver = SignatureVersion 2
-+
- portField :: RemoteConfigField
- portField = Accepted "port"
-
-@@ -877,7 +895,10 @@ s3Configuration c = cfg
- Nothing
- | port == 443 -> AWS.HTTPS
- | otherwise -> AWS.HTTP
-- cfg = S3.s3 proto endpoint False
-+ cfg = case getRemoteConfigValue signatureField c of
-+ Just (SignatureVersion 4) ->
-+ S3.s3v4 proto endpoint False S3.SignWithEffort
-+ _ -> S3.s3 proto endpoint False
-
- data S3Info = S3Info
- { bucket :: S3.Bucket
---
-2.26.2
-
diff --git a/gnu/packages/patches/grub-setup-root.patch b/gnu/packages/patches/grub-setup-root.patch
new file mode 100644
index 0000000000..1abe9c383a
--- /dev/null
+++ b/gnu/packages/patches/grub-setup-root.patch
@@ -0,0 +1,124 @@
+This patch is taken from OpenWrt, see:
+
+https://github.com/openwrt/openwrt/blob/master/package/boot/grub2/patches/100-grub_setup_root.patch.
+
+It allows to use grub-bios-setup on a raw disk-images, without root permissions.
+
+--- a/util/grub-setup.c
++++ b/util/grub-setup.c
+@@ -87,6 +87,8 @@ static struct argp_option options[] = {
+ N_("install even if problems are detected"), 0},
+ {"skip-fs-probe",'s',0, 0,
+ N_("do not probe for filesystems in DEVICE"), 0},
++ {"root-device", 'r', N_("DEVICE"), 0,
++ N_("use DEVICE as the root device"), 0},
+ {"verbose", 'v', 0, 0, N_("print verbose messages."), 0},
+ {"allow-floppy", 'a', 0, 0,
+ /* TRANSLATORS: The potential breakage isn't limited to floppies but it's
+@@ -130,6 +132,7 @@ struct arguments
+ char *core_file;
+ char *dir;
+ char *dev_map;
++ char *root_dev;
+ int force;
+ int fs_probe;
+ int allow_floppy;
+@@ -178,6 +181,13 @@ argp_parser (int key, char *arg, struct
+ arguments->dev_map = xstrdup (arg);
+ break;
+
++ case 'r':
++ if (arguments->root_dev)
++ free (arguments->root_dev);
++
++ arguments->root_dev = xstrdup (arg);
++ break;
++
+ case 'f':
+ arguments->force = 1;
+ break;
+@@ -313,7 +323,7 @@ main (int argc, char *argv[])
+ GRUB_SETUP_FUNC (arguments.dir ? : DEFAULT_DIRECTORY,
+ arguments.boot_file ? : DEFAULT_BOOT_FILE,
+ arguments.core_file ? : DEFAULT_CORE_FILE,
+- dest_dev, arguments.force,
++ arguments.root_dev, dest_dev, arguments.force,
+ arguments.fs_probe, arguments.allow_floppy,
+ arguments.add_rs_codes);
+
+--- a/util/setup.c
++++ b/util/setup.c
+@@ -252,13 +252,12 @@ identify_partmap (grub_disk_t disk __att
+ void
+ SETUP (const char *dir,
+ const char *boot_file, const char *core_file,
+- const char *dest, int force,
++ char *root, const char *dest, int force,
+ int fs_probe, int allow_floppy,
+ int add_rs_codes __attribute__ ((unused))) /* unused on sparc64 */
+ {
+ char *core_path;
+ char *boot_img, *core_img, *boot_path;
+- char *root = 0;
+ size_t boot_size, core_size;
+ grub_uint16_t core_sectors;
+ grub_device_t root_dev = 0, dest_dev, core_dev;
+@@ -307,7 +306,10 @@ SETUP (const char *dir,
+
+ core_dev = dest_dev;
+
+- {
++ if (root)
++ root_dev = grub_device_open(root);
++
++ if (!root_dev) {
+ char **root_devices = grub_guess_root_devices (dir);
+ char **cur;
+ int found = 0;
+@@ -320,6 +322,8 @@ SETUP (const char *dir,
+ char *drive;
+ grub_device_t try_dev;
+
++ if (root_dev)
++ break;
+ drive = grub_util_get_grub_dev (*cur);
+ if (!drive)
+ continue;
+--- a/include/grub/util/install.h
++++ b/include/grub/util/install.h
+@@ -191,13 +191,13 @@ grub_install_get_image_target (const cha
+ void
+ grub_util_bios_setup (const char *dir,
+ const char *boot_file, const char *core_file,
+- const char *dest, int force,
++ char *root, const char *dest, int force,
+ int fs_probe, int allow_floppy,
+ int add_rs_codes);
+ void
+ grub_util_sparc_setup (const char *dir,
+ const char *boot_file, const char *core_file,
+- const char *dest, int force,
++ char *root, const char *dest, int force,
+ int fs_probe, int allow_floppy,
+ int add_rs_codes);
+
+--- a/util/grub-install.c
++++ b/util/grub-install.c
+@@ -1712,7 +1712,7 @@ main (int argc, char *argv[])
+ /* Now perform the installation. */
+ if (install_bootsector)
+ grub_util_bios_setup (platdir, "boot.img", "core.img",
+- install_drive, force,
++ NULL, install_drive, force,
+ fs_probe, allow_floppy, add_rs_codes);
+ break;
+ }
+@@ -1738,7 +1738,7 @@ main (int argc, char *argv[])
+ /* Now perform the installation. */
+ if (install_bootsector)
+ grub_util_sparc_setup (platdir, "boot.img", "core.img",
+- install_drive, force,
++ NULL, install_drive, force,
+ fs_probe, allow_floppy,
+ 0 /* unused */ );
+ break;
diff --git a/gnu/packages/patches/guile-fibers-destroy-peer-schedulers.patch b/gnu/packages/patches/guile-fibers-destroy-peer-schedulers.patch
new file mode 100644
index 0000000000..8bb7153153
--- /dev/null
+++ b/gnu/packages/patches/guile-fibers-destroy-peer-schedulers.patch
@@ -0,0 +1,24 @@
+Fibers 1.0.0 has a bug in run-fibers in which peer schedulers aren't destroyed -
+so if you had 4 cores, 1 would be destroyed when run-fibers returned, but the
+other 3 would stay around. Each scheduler uses 3 file descriptors, so for
+machines with many cores, this resource leak adds up quickly - quickly enough
+that the test suite can even fail because of it.
+
+See https://github.com/wingo/fibers/issues/36.
+
+This fixes that. It should be safe to destroy the peer schedulers at the given
+point because the threads that could be running them are all either dead or the
+current thread.
+
+As of May 21, 2020, this bug still existed in the 1.0.0 (latest) release and in
+git master.
+--- a/fibers.scm 2020-05-21 18:38:06.890690154 -0500
++++ b/fibers.scm 2020-05-21 18:38:56.395686693 -0500
+@@ -137,5 +137,6 @@
+ (%run-fibers scheduler hz finished? affinity))
+ (lambda ()
+ (stop-auxiliary-threads scheduler)))))
++ (for-each destroy-scheduler (scheduler-remote-peers scheduler))
+ (destroy-scheduler scheduler)
+ (apply values (atomic-box-ref ret))))))
+
diff --git a/gnu/packages/patches/guile-sqlite3-fix-cross-compilation.patch b/gnu/packages/patches/guile-sqlite3-fix-cross-compilation.patch
deleted file mode 100644
index 9ea9a47677..0000000000
--- a/gnu/packages/patches/guile-sqlite3-fix-cross-compilation.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From a6e9e62a77ecc5012929613e20da23b2636450a5 Mon Sep 17 00:00:00 2001
-From: Mathieu Othacehe <mathieu.othacehe@parrot.com>
-Date: Mon, 25 Mar 2019 11:00:38 +0100
-Subject: [PATCH] cross compile
-
----
- build-aux/guile.am | 2 +-
- configure.ac | 19 ++++++++++++-------
- 2 files changed, 13 insertions(+), 8 deletions(-)
-
-diff --git a/build-aux/guile.am b/build-aux/guile.am
-index dc1e63f..3126372 100644
---- a/build-aux/guile.am
-+++ b/build-aux/guile.am
-@@ -16,4 +16,4 @@ EXTRA_DIST = $(SOURCES) $(NOCOMP_SOURCES)
- GUILE_WARNINGS = -Wunbound-variable -Warity-mismatch -Wformat
- SUFFIXES = .scm .go
- .scm.go:
-- $(AM_V_GEN)$(top_builddir)/env $(GUILE_TOOLS) compile $(GUILE_WARNINGS) -o "$@" "$<"
-+ $(AM_V_GEN)$(top_builddir)/env $(GUILE_TOOLS) compile $(GUILE_TARGET) $(GUILE_WARNINGS) -o "$@" "$<"
-diff --git a/configure.ac b/configure.ac
-index f648fcb..2d34d0a 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -21,15 +21,20 @@ PKG_CHECK_MODULES([SQLITE], [sqlite3])
- SQLITE_LIBDIR="`"$PKG_CONFIG" sqlite3 --variable libdir`"
- AC_SUBST([SQLITE_LIBDIR])
-
--AC_MSG_CHECKING([whether '$SQLITE_LIBDIR/libsqlite3' is usable])
--GUILE_CHECK([retval],
-- [(dynamic-func \"sqlite3_open_v2\"
-+if test "$cross_compiling" = "no"; then
-+ AC_MSG_CHECKING([whether '$SQLITE_LIBDIR/libsqlite3' is usable])
-+ GUILE_CHECK([retval],
-+ [(dynamic-func \"sqlite3_open_v2\"
- (dynamic-link \"$SQLITE_LIBDIR/libsqlite3\"))])
--if test "$retval" != 0; then
-- AC_MSG_RESULT([no])
-- AC_MSG_ERROR([failed to load '$SQLITE_LIBDIR/libsqlite3'])
-+ if test "$retval" != 0; then
-+ AC_MSG_RESULT([no])
-+ AC_MSG_ERROR([failed to load '$SQLITE_LIBDIR/libsqlite3'])
-+ else
-+ AC_MSG_RESULT([yes])
-+ fi
- else
-- AC_MSG_RESULT([yes])
-+ GUILE_TARGET="--target=$host_alias"
-+ AC_SUBST([GUILE_TARGET])
- fi
-
- AC_CONFIG_FILES([Makefile sqlite3.scm])
---
-2.17.1
-
diff --git a/gnu/packages/patches/haskell-mode-make-check.patch b/gnu/packages/patches/haskell-mode-make-check.patch
deleted file mode 100644
index a4d4d525f2..0000000000
--- a/gnu/packages/patches/haskell-mode-make-check.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-Copied from upstream repository.
-Hunk #2 is removed since it cannot be applied and it is not needed.
-
-From 7cead7137bf54851c1b7df5a3854351296d21276 Mon Sep 17 00:00:00 2001
-From: Vasantha Ganesh K <vasanthaganesh.k@tuta.io>
-Date: Thu, 22 Jun 2017 23:38:40 +0530
-Subject: [PATCH] removed `check-conventions' from make
-
----
- Makefile | 7 +-
- tests/haskell-code-conventions.el | 165 ------------------------------
- 2 files changed, 1 insertion(+), 171 deletions(-)
- delete mode 100644 tests/haskell-code-conventions.el
-
-diff --git a/Makefile b/Makefile
-index b2c89d6..aa907c5 100644
---- a/Makefile
-+++ b/Makefile
-@@ -79,12 +79,7 @@ build-$(EMACS_VERSION)/build-flag : build-$(EMACS_VERSION) $(patsubst %.el,build
- check-%: tests/%-tests.el
- $(BATCH) -l "$<" -f ert-run-tests-batch-and-exit;
-
--check: compile $(AUTOLOADS) check-ert check-conventions
--
--check-conventions :
-- $(BATCH) -l tests/haskell-code-conventions.el \
-- -f haskell-check-conventions-batch-and-exit
-- @echo "conventions are okay"
-+check: compile $(AUTOLOADS) check-ert
-
- check-ert: $(ELCHECKS)
- $(BATCH) --eval "(when (= emacs-major-version 24) \
---
-2.18.0
-
diff --git a/gnu/packages/patches/haskell-mode-unused-variables.patch b/gnu/packages/patches/haskell-mode-unused-variables.patch
deleted file mode 100644
index b175fae28c..0000000000
--- a/gnu/packages/patches/haskell-mode-unused-variables.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-Copied verbatim from upstream repository.
-
-From cee22450ee30e79952f594796721dc6b17798ee6 Mon Sep 17 00:00:00 2001
-From: Sascha Wilde <wilde@sha-bang.de>
-Date: Fri, 23 Sep 2016 15:35:59 +0200
-Subject: [PATCH] Removed unused lexical variables.
-
----
- haskell-lexeme.el | 3 +--
- haskell-process.el | 4 +---
- 2 files changed, 2 insertions(+), 5 deletions(-)
-
-diff --git a/haskell-lexeme.el b/haskell-lexeme.el
-index 4256a79..b832560 100644
---- a/haskell-lexeme.el
-+++ b/haskell-lexeme.el
-@@ -138,8 +138,7 @@ When match is successful, match-data will contain:
- (match-text 2) - whole qualified identifier
- (match-text 3) - unqualified part of identifier
- (match-text 4) - closing backtick"
-- (let ((begin (point))
-- (match-data-old (match-data))
-+ (let ((match-data-old (match-data))
- first-backtick-start
- last-backtick-start
- qid-start
-diff --git a/haskell-process.el b/haskell-process.el
-index b4efba2..4f3f859 100644
---- a/haskell-process.el
-+++ b/haskell-process.el
-@@ -160,9 +160,7 @@ HPTYPE is the result of calling `'haskell-process-type`' function."
- (defun haskell-process-log (msg)
- "Effective append MSG to the process log (if enabled)."
- (when haskell-process-log
-- (let* ((append-to (get-buffer-create "*haskell-process-log*"))
-- (windows (get-buffer-window-list append-to t t))
-- move-point-in-windows)
-+ (let* ((append-to (get-buffer-create "*haskell-process-log*")))
- (with-current-buffer append-to
- ;; point should follow insertion so that it stays at the end
- ;; of the buffer
---
-2.18.0
-
diff --git a/gnu/packages/patches/http-parser-fix-assertion-on-armhf.patch b/gnu/packages/patches/http-parser-fix-assertion-on-armhf.patch
new file mode 100644
index 0000000000..79bd3e8dbc
--- /dev/null
+++ b/gnu/packages/patches/http-parser-fix-assertion-on-armhf.patch
@@ -0,0 +1,39 @@
+From: Tobias Geerinckx-Rice <me@tobias.gr>
+Date: Wed, 20 May 2020 19:17:13 +0200
+Subject: [PATCH] gnu: http-client: Fix assertion on armhf-linux.
+
+Copied verbatim from [0] to fix guix pull[1] on ARM systems.
+
+[0]: https://github.com/nodejs/http-parser/pull/510
+[1]: https://issues.guix.gnu.org/40604
+
+From 0e5868aebb9eb92b078d27bb2774c2154dc167e2 Mon Sep 17 00:00:00 2001
+From: Ben Noordhuis <info@bnoordhuis.nl>
+Date: Thu, 30 Apr 2020 11:22:50 +0200
+Subject: [PATCH] Fix sizeof(http_parser) assert
+
+The result should be 32 on both 32 bits and 64 bits architectures
+because of struct padding.
+
+Fixes: https://github.com/nodejs/http-parser/issues/507
+---
+ test.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/test.c b/test.c
+index 7983424..f60a84f 100644
+--- a/test.c
++++ b/test.c
+@@ -4220,8 +4220,11 @@ main (void)
+ patch = version & 255;
+ printf("http_parser v%u.%u.%u (0x%06lx)\n", major, minor, patch, version);
+
++ /* Should be 32 on both 32 bits and 64 bits architectures because of
++ * struct padding, see https://github.com/nodejs/http-parser/issues/507.
++ */
+ printf("sizeof(http_parser) = %u\n", (unsigned int)sizeof(http_parser));
+- assert(sizeof(http_parser) == 4 + 4 + 8 + 2 + 2 + 4 + sizeof(void *));
++ assert(sizeof(http_parser) == 32);
+
+ //// API
+ test_preserve_data();
diff --git a/gnu/packages/patches/hurd-xattr.patch b/gnu/packages/patches/hurd-xattr.patch
new file mode 100644
index 0000000000..0a922c91b5
--- /dev/null
+++ b/gnu/packages/patches/hurd-xattr.patch
@@ -0,0 +1,53 @@
+From 75cb948c575fca3962c4cce115d31dd178bc389f Mon Sep 17 00:00:00 2001
+From: "Jan (janneke) Nieuwenhuizen" <janneke@gnu.org>
+Date: Tue, 12 May 2020 07:39:59 +0200
+Subject: [PATCH] ext2fs: Update to upstream Hurd-reserved xattr index for
+ "gnu.*".
+
+See
+ https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3980bd3b406addb327d858aebd19e229ea340b9a
+
+This supports setting (and reading) of passive trasnlators from
+GNU/Linux, e.g.
+
+ dd if=/dev/zero of=file bs=1k count=1000
+ losetup /dev/loop0 file
+ mke2fs -t ext2 -o hurd -O ext_attr /dev/loop0
+ mount -t ext2 -o x-xattr-translator-records /dev/loop0 /mnt
+ mkdir -p /mnt/servers/socket
+ touch /mnt/servers/socket/1
+ setfattr --name=gnu.translator --value='/hurd/pflocal\0' /mnt/servers/socket/1
+ getfattr --name=gnu.translator /mnt/servers/socket/1
+ # file: 1
+ gnu.translator="/hurd/pflocal"
+
+* ext2fs/xattr.c (struct _xattr_prefix): For "gnu.*", use index for
+the Hurd (10).
+---
+ ext2fs/xattr.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/ext2fs/xattr.c b/ext2fs/xattr.c
+index f6ea0f39..78458214 100644
+--- a/ext2fs/xattr.c
++++ b/ext2fs/xattr.c
+@@ -1,6 +1,6 @@
+ /* Ext2 support for extended attributes
+
+- Copyright (C) 2006, 2016 Free Software Foundation, Inc.
++ Copyright (C) 2006, 2016, 2020 Free Software Foundation, Inc.
+
+ Written by Thadeu Lima de Souza Cascardo <cascardo@dcc.ufmg.br>
+ and Shengyu Zhang <lastavengers@outlook.com>
+@@ -39,7 +39,7 @@ xattr_prefixes[] =
+ {
+ 1, "user.", sizeof "user." - 1},
+ {
+- 7, "gnu.", sizeof "gnu." - 1},
++ 10, "gnu.", sizeof "gnu." - 1},
+ {
+ 0, NULL, 0}
+ };
+--
+2.26.0
+
diff --git a/gnu/packages/patches/icecat-makeicecat.patch b/gnu/packages/patches/icecat-makeicecat.patch
index 2978a5789e..d3d95cbf28 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 fa5b2266d225878d4b35694678f79fd7e7a6d3c62759a40326129bd90f63e842 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
+-echo -n 935105e1a8a97d64daffb372690e2b566b5f07641f01470929dbbc82d20d4407 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 fa5b2266d225878d4b35694678f79fd7e7a6d3c62759a40326129bd90f63e842 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c -
++# echo -n 935105e1a8a97d64daffb372690e2b566b5f07641f01470929dbbc82d20d4407 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/java-openjfx-build-jdk_version.patch b/gnu/packages/patches/java-openjfx-build-jdk_version.patch
new file mode 100644
index 0000000000..7be954467a
--- /dev/null
+++ b/gnu/packages/patches/java-openjfx-build-jdk_version.patch
@@ -0,0 +1,27 @@
+Subject: [PATCH] openjfx: Determine the version of Java in JDK_HOME
+
+Icedtea contains guix in its version, so build.gradle failes to run. Openjfx
+packaging is not trivial, so you will probably need to try build it with
+gradlew.
+
+---
+ build.gradle | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/build.gradle b/build.gradle
+index df82f63..2c626cd 100644
+--- a/build.gradle
++++ b/build.gradle
+@@ -742,9 +742,9 @@ try {
+ if (inStream.readLine() != null) {
+ String v = inStream.readLine();
+ if (v != null) {
+- int ib = v.indexOf(" (build ");
++ int ib = v.indexOf(" (guix build ");
+ if (ib != -1) {
+- String ver = v.substring(ib + 8, v.size() - 1);
++ String ver = v.substring(ib + 13, v.size() - 1);
+
+ defineProperty("jdkRuntimeVersion", ver)
+ defineProperty("jdkVersion", jdkRuntimeVersion.split("-")[0])
+2.24.1
diff --git a/gnu/packages/patches/kdepim-runtime-Fix-missing-link-libraries.patch b/gnu/packages/patches/kdepim-runtime-Fix-missing-link-libraries.patch
deleted file mode 100644
index 13345c0038..0000000000
--- a/gnu/packages/patches/kdepim-runtime-Fix-missing-link-libraries.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From b84c4ba97cecf7304e99cafdd8a9c5866ce27050 Mon Sep 17 00:00:00 2001
-From: Hartmut Goebel <h.goebel@crazy-compilers.com>
-Date: Tue, 21 Jan 2020 23:33:50 +0100
-Subject: [PATCH] Fix missing link libraries.
-
-See <https://phabricator.kde.org/D26819>
-
-These are only actually missing if the libraries reside in different
-prefixes, as it is the case in Guix or Nix.
----
- resources/ews/test/CMakeLists.txt | 1 +
- resources/facebook/CMakeLists.txt | 2 ++
- 2 files changed, 3 insertions(+)
-
-diff --git a/resources/ews/test/CMakeLists.txt b/resources/ews/test/CMakeLists.txt
-index b20eddcb8..6355eb994 100644
---- a/resources/ews/test/CMakeLists.txt
-+++ b/resources/ews/test/CMakeLists.txt
-@@ -35,6 +35,7 @@ qt5_add_resources(isolatestestcommon_RSRCS isolatedtestcommon.qrc)
- add_library(isolatedtestcommon STATIC ${isolatestestcommon_SRCS})
- target_link_libraries(isolatedtestcommon
- KF5::AkonadiCore
-+ KF5::AkonadiMime
- Qt5::Core
- Qt5::Network
- Qt5::Test
-diff --git a/resources/facebook/CMakeLists.txt b/resources/facebook/CMakeLists.txt
-index bdd5eeaa7..27a9c83c1 100644
---- a/resources/facebook/CMakeLists.txt
-+++ b/resources/facebook/CMakeLists.txt
-@@ -21,7 +21,8 @@ add_library(facebookresourcelib STATIC ${fbresource_SRCS})
-
- target_link_libraries(facebookresourcelib
- KF5::KIOWidgets
-+ KF5::AkonadiCore
- KF5::IconThemes
- KF5::I18n
- KF5::ConfigGui
- KF5::CalendarCore
---
-2.21.1
-
diff --git a/gnu/packages/patches/kinit-kdeinit-extra_libs.patch b/gnu/packages/patches/kinit-kdeinit-extra_libs.patch
index c3c4ce1161..1271f3df7d 100644
--- a/gnu/packages/patches/kinit-kdeinit-extra_libs.patch
+++ b/gnu/packages/patches/kinit-kdeinit-extra_libs.patch
@@ -42,12 +42,12 @@ pkgs/development/libraries/kde-frameworks/kinit/kdeinit-extra_libs.patch
extern "C" {
static void secondary_child_handler(int)
-@@ -1689,7 +1693,7 @@
+@@ -1673,7 +1673,7 @@
+ #if defined(Q_OS_UNIX) && !defined(Q_OS_OSX)
if (!d.suicide && qEnvironmentVariableIsEmpty("KDE_IS_PRELINKED")) {
- const int extrasCount = sizeof(extra_libs) / sizeof(extra_libs[0]);
- for (int i = 0; i < extrasCount; i++) {
-- const QString extra = findSharedLib(QString::fromLatin1(extra_libs[i]));
-+ const QString extra = QString::fromLatin1(extra_libs[i]);
+ for (const char *extra_lib : extra_libs) {
+- const QString extra = findSharedLib(QString::fromLatin1(extra_lib));
++ const QString extra = QString::fromLatin1(extra_lib);
if (!extra.isEmpty()) {
QLibrary l(extra);
l.setLoadHints(QLibrary::ExportExternalSymbolsHint);
diff --git a/gnu/packages/patches/kpmcore-fix-tests.patch b/gnu/packages/patches/kpmcore-fix-tests.patch
deleted file mode 100644
index 12043abe72..0000000000
--- a/gnu/packages/patches/kpmcore-fix-tests.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-Git commit c02d59aa6d314678cef9683f96b28e2a1abd82b7 by Andrius Å tikonas, on behalf of Hartmut Goebel.
-Committed on 07/11/2019 at 22:16.
-Pushed by stikonas into branch '4.0'.
-
-Fix test for kpmcore: stop helper only if formerly started.
-
-See https://bugs.kde.org/413851 and https://phabricator.kde.org/D25161
-
-diff --git a/src/util/externalcommand.cpp b/src/util/externalcommand.cpp
---- a/src/util/externalcommand.cpp
-+++ b/src/util/externalcommand.cpp
-@@ -433,14 +433,17 @@
-
- void ExternalCommand::stopHelper()
- {
-+ if (!helperStarted)
-+ return;
- auto *interface = new org::kde::kpmcore::externalcommand(QStringLiteral("org.kde.kpmcore.externalcommand"),
- QStringLiteral("/Helper"), QDBusConnection::systemBus());
- QByteArray request;
- const quint64 nonce = interface->getNonce();
- request.setNum(nonce);
- QByteArray hash = QCryptographicHash::hash(request, QCryptographicHash::Sha512);
- interface->exit(privateKey->signMessage(hash, QCA::EMSA3_Raw), nonce);
-
-+ helperStarted = false;
- delete privateKey;
- delete init;
- }
-
diff --git a/gnu/packages/patches/kpmcore-remove-broken-test.patch b/gnu/packages/patches/kpmcore-remove-broken-test.patch
deleted file mode 100644
index d02cca7883..0000000000
--- a/gnu/packages/patches/kpmcore-remove-broken-test.patch
+++ /dev/null
@@ -1,139 +0,0 @@
-From c9a08a593bac8b8610a647db118fea6f2958156d Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andrius=20=C5=A0tikonas?= <andrius@stikonas.eu>
-Date: Thu, 7 Nov 2019 22:12:00 +0000
-Subject: [PATCH] Remove broken smart unit test.
-
-BUG: 413853
----
- test/CMakeLists.txt | 9 ----
- test/testsmart.cpp | 102 --------------------------------------------
- 2 files changed, 111 deletions(-)
- delete mode 100644 test/testsmart.cpp
-
-diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
-index 67f63a2..6a300d3 100644
---- a/test/CMakeLists.txt
-+++ b/test/CMakeLists.txt
-@@ -53,12 +53,3 @@ find_package (Threads)
- # Execute external commands as root
- kpm_test(testexternalcommand testexternalcommand.cpp)
- add_test(NAME testexternalcommand COMMAND testexternalcommand ${BACKEND})
--
--# Including SMART files reference
--set(SMARTPARSER ${CMAKE_SOURCE_DIR}/src/core/smartdiskinformation.cpp
-- ${CMAKE_SOURCE_DIR}/src/core/smartattributeparseddata.cpp
-- ${CMAKE_SOURCE_DIR}/src/core/smartparser.cpp)
--
--# Test SMART support
--kpm_test(testsmart testsmart.cpp ${SMARTPARSER})
--add_test(NAME testsmart COMMAND testsmart ${BACKEND})
-diff --git a/test/testsmart.cpp b/test/testsmart.cpp
-deleted file mode 100644
-index 2236af7..0000000
---- a/test/testsmart.cpp
-+++ /dev/null
-@@ -1,102 +0,0 @@
--#include "helpers.h"
--
--#include "util/externalcommand.h"
--#include "backend/corebackend.h"
--#include "backend/corebackendmanager.h"
--#include "core/smartstatus.h"
--#include "core/smartparser.h"
--
--#include <QCoreApplication>
--#include <QDebug>
--
--static QString getDefaultDevicePath();
--static bool testSmartStatus();
--static bool testSmartParser();
--
--int main(int argc, char **argv)
--{
-- QCoreApplication app(argc, argv);
--
-- KPMCoreInitializer i;
--
-- if (argc == 2)
-- i = KPMCoreInitializer(argv[1]);
--
-- if (!i.isValid())
-- return 1;
--
-- CoreBackend *backend = CoreBackendManager::self()->backend();
--
-- if (!backend)
-- {
-- qWarning() << "Couldn't get backend.";
-- return 1;
-- }
--
-- if (!testSmartStatus() || !testSmartParser())
-- return 1;
--
-- return app.exec();
--}
--
--static QString getDefaultDevicePath()
--{
-- // Getting default home partition using 'df -P /home | awk 'END{print $1}'' command
-- ExternalCommand command(QStringLiteral("df"), { QStringLiteral("-P"), QStringLiteral("/home"), QStringLiteral("|"),
-- QStringLiteral("awk"), QStringLiteral("\'END{print $1}\'") });
--
-- if (command.run() && command.exitCode() == 0) {
-- QString output = command.output();
-- return output;
-- }
--
-- return QString();
--}
--
--static bool testSmartStatus()
--{
-- QString devicePath = getDefaultDevicePath();
--
-- SmartStatus smart(devicePath);
--
-- if (smart.devicePath() != devicePath)
-- return false;
--
-- if (!smart.status())
-- return false;
--
-- if (smart.modelName() == QString())
-- return false;
--
-- if (smart.firmware() == QString())
-- return false;
--
-- if (smart.serial() == QString())
-- return false;
--
-- if (smart.selfTestStatus() != SmartStatus::SelfTestStatus::Success)
-- return false;
--
-- if (!smart.isValid())
-- return false;
--
-- return true;
--}
--
--static bool testSmartParser()
--{
-- QString devicePath = getDefaultDevicePath();
--
-- SmartParser parser(devicePath);
--
-- if (!parser.init())
-- return false;
--
-- if (parser.devicePath() != devicePath)
-- return false;
--
-- if (!parser.diskInformation())
-- return false;
--
-- return true;
--}
---
-2.17.1
diff --git a/gnu/packages/patches/lib2geom-enable-assertions.patch b/gnu/packages/patches/lib2geom-enable-assertions.patch
new file mode 100644
index 0000000000..8feb44acbf
--- /dev/null
+++ b/gnu/packages/patches/lib2geom-enable-assertions.patch
@@ -0,0 +1,36 @@
+From 4aa78f52232682b353eb15c219171e466987bac7 Mon Sep 17 00:00:00 2001
+From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
+Date: Thu, 16 Jan 2020 00:19:29 -0500
+Subject: [PATCH] build: Enable assertions for the RelWithDebugInfo build type.
+
+This fixes issue #5 (see:
+https://gitlab.com/inkscape/lib2geom/issues/5).
+
+* CMakeLists.txt: Remove the "-DNDEBUG" CXX flag from the default
+configuration for the RelWithDebugInfo build type.
+---
+ CMakeLists.txt | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index bfeb8f03..a663a1b0 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -19,6 +19,14 @@ enable_testing()
+
+ include(CheckCXXSourceCompiles)
+
++# Enable assertions for the RelWithDebugInfo build type. This is
++# useful as some tests make use of it (see:
++# https://gitlab.com/inkscape/lib2geom/issues/5).
++if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
++ string(REPLACE "-DNDEBUG" ""
++ CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
++endif()
++
+ # Find dependencies
+ find_package(Boost 1.40 REQUIRED)
+ find_package(DoubleConversion REQUIRED)
+--
+2.24.1
+
diff --git a/gnu/packages/patches/lib2geom-link-tests-against-glib.patch b/gnu/packages/patches/lib2geom-link-tests-against-glib.patch
new file mode 100644
index 0000000000..2b4f7ca6bf
--- /dev/null
+++ b/gnu/packages/patches/lib2geom-link-tests-against-glib.patch
@@ -0,0 +1,34 @@
+From f95925afef451755fc1449e57fbfdc2e7277f4b4 Mon Sep 17 00:00:00 2001
+From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
+Date: Sat, 11 Jan 2020 00:44:55 -0500
+Subject: [PATCH 1/3] tests: Link against GLib.
+
+This resolves an error about not finding <glib.h> when linking the
+tests that make use of GLib.
+
+* src/tests/CMakeLists.txt[2GEOM_GTESTS_SRC]: Add the glib library to
+the link target libraries.
+---
+ src/tests/CMakeLists.txt | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt
+index 5ddf7f9c..626cfd87 100644
+--- a/src/tests/CMakeLists.txt
++++ b/src/tests/CMakeLists.txt
+@@ -32,8 +32,10 @@ sbasis-test
+
+ foreach(source ${2GEOM_GTESTS_SRC})
+ add_executable(${source} ${source}.cpp)
+- target_include_directories(${source} PRIVATE ${GSL_INCLUDE_DIRS} ${GTK3_INCLUDE_DIRS})
+- target_link_libraries(${source} 2geom gtest_main gtest ${GSL_LIBRARIES} ${GTK3_LIBRARIES})
++ target_include_directories(${source} PRIVATE ${GSL_INCLUDE_DIRS}
++ ${GTK3_INCLUDE_DIRS} ${GLIB_INCLUDE_DIRS})
++ target_link_libraries(${source} 2geom gtest_main gtest ${GSL_LIBRARIES}
++ ${GTK3_LIBRARIES} ${GLIB_LIBRARIES})
+ add_test(NAME ${source} COMMAND ${source})
+ endforeach()
+
+--
+2.24.1
+
diff --git a/gnu/packages/patches/lib2geom-use-system-googletest.patch b/gnu/packages/patches/lib2geom-use-system-googletest.patch
new file mode 100644
index 0000000000..16cce1799f
--- /dev/null
+++ b/gnu/packages/patches/lib2geom-use-system-googletest.patch
@@ -0,0 +1,94 @@
+From 6693b9c8ff1ae1ec02c9002c0a8f5f416f0c88f0 Mon Sep 17 00:00:00 2001
+From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
+Date: Sun, 12 Jan 2020 23:23:33 -0500
+Subject: [PATCH 3/3] build: Prefer googletest from the system.
+
+Fixes issue #4.
+
+The build system now look for a system installed googletest or falls
+back to the bundled copy of googletest otherwise.
+
+* CMakeLists.txt: Add call to find_package(GTest).
+(include_directories): Remove "src/googletest/googletest/include" from
+arg.
+* src/CMakeLists.txt[NOT GTEST_FOUND]: Define the gtest and gtest_main
+libraries when GTEST_FOUND is false. Globally include the googletest
+headers here. Define aliases for the gtest and gtest_main libraries
+that match those defined by the FindGTest module.
+* src/tests/CMakeLists.txt: Replace references to gtest_main and gtest
+by GTest::Main and GTest::GTest, respectively.
+---
+ CMakeLists.txt | 3 ++-
+ src/CMakeLists.txt | 15 +++++++++++----
+ src/tests/CMakeLists.txt | 6 +++---
+ 3 files changed, 16 insertions(+), 8 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index bfeb8f03..96fbd58c 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -25,13 +25,14 @@ find_package(DoubleConversion REQUIRED)
+ find_package(PkgConfig REQUIRED)
+ find_package(Cython)
+ find_package(Threads)
++find_package(GTest)
+ pkg_check_modules(GTK3 gtk+-3.0)
+ pkg_check_modules(GLIB glib-2.0)
+ pkg_check_modules(CAIRO cairo)
+ pkg_check_modules(GSL gsl)
+
+ # Add global include and link directories
+-include_directories(src src/googletest/googletest/include ${CMAKE_CURRENT_BINARY_DIR})
++include_directories(src ${CMAKE_CURRENT_BINARY_DIR})
+ link_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/2geom)
+
+ check_cxx_source_compiles("#include <math.h>\nint main() { double a=0.5,b=0.5,c=0.5; sincos(a, &b, &c); return 0; }" HAVE_SINCOS)
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index eefb3ac5..941dc4c7 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -1,7 +1,14 @@
+-add_library(gtest SHARED googletest/googletest/src/gtest-all.cc)
+-target_include_directories(gtest PRIVATE googletest/googletest)
+-target_link_libraries(gtest Threads::Threads)
+-add_library(gtest_main STATIC googletest/googletest/src/gtest_main.cc)
++if(NOT GTEST_FOUND)
++ message("No system googletest library: using bundled copy.")
++ add_library(gtest SHARED googletest/googletest/src/gtest-all.cc)
++ add_library(gtest_main STATIC googletest/googletest/src/gtest_main.cc)
++ target_include_directories(gtest PRIVATE googletest/googletest)
++ target_link_libraries(gtest Threads::Threads)
++ include_directories(SYSTEM googletest/googletest/include)
++ # Aliases to share the same nomenclature with FindGTest.
++ add_library(GTest::GTest ALIAS gtest)
++ add_library(GTest::Main ALIAS gtest_main)
++endif()
+
+ add_subdirectory(2geom)
+ add_subdirectory(tests)
+diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt
+index 626cfd87..3538f8cf 100644
+--- a/src/tests/CMakeLists.txt
++++ b/src/tests/CMakeLists.txt
+@@ -34,15 +34,15 @@ foreach(source ${2GEOM_GTESTS_SRC})
+ add_executable(${source} ${source}.cpp)
+ target_include_directories(${source} PRIVATE ${GSL_INCLUDE_DIRS}
+ ${GTK3_INCLUDE_DIRS} ${GLIB_INCLUDE_DIRS})
+- target_link_libraries(${source} 2geom gtest_main gtest ${GSL_LIBRARIES}
+- ${GTK3_LIBRARIES} ${GLIB_LIBRARIES})
++ target_link_libraries(${source} 2geom GTest::Main GTest::GTest
++ ${GSL_LIBRARIES} ${GTK3_LIBRARIES} ${GLIB_LIBRARIES})
+ add_test(NAME ${source} COMMAND ${source})
+ endforeach()
+
+ foreach(source ${2GEOM_TESTS_SRC})
+ add_executable(${source} ${source}.cpp)
+ target_include_directories(${source} PRIVATE ${GSL_INCLUDE_DIRS} ${GTK3_INCLUDE_DIRS})
+- target_link_libraries(${source} 2geom gtest ${GSL_LIBRARIES} ${GTK3_LIBRARIES})
++ target_link_libraries(${source} 2geom GTest::GTest ${GSL_LIBRARIES} ${GTK3_LIBRARIES})
+ add_test(NAME ${source} COMMAND ${source})
+ endforeach(source)
+
+--
+2.24.1
+
diff --git a/gnu/packages/patches/libdrm-realpath-virtio.patch b/gnu/packages/patches/libdrm-realpath-virtio.patch
new file mode 100644
index 0000000000..b7d85160b4
--- /dev/null
+++ b/gnu/packages/patches/libdrm-realpath-virtio.patch
@@ -0,0 +1,42 @@
+Only check for for relative path on virtio devices. Otherwise it could
+break driver loading in some circumstances, notably the IceCat sandbox.
+
+https://gitlab.freedesktop.org/mesa/drm/-/issues/39
+
+Taken from upstream:
+https://gitlab.freedesktop.org/mesa/drm/-/commit/57df07572ce45a1b60bae6fb89770388d3abd6dd
+
+diff --git a/xf86drm.c b/xf86drm.c
+--- a/xf86drm.c
++++ b/xf86drm.c
+@@ -3103,15 +3103,18 @@ static int drmParseSubsystemType(int maj, int min)
+ int subsystem_type;
+
+ snprintf(path, sizeof(path), "/sys/dev/char/%d:%d/device", maj, min);
+- if (!realpath(path, real_path))
+- return -errno;
+- snprintf(path, sizeof(path), "%s", real_path);
+
+ subsystem_type = get_subsystem_type(path);
++ /* Try to get the parent (underlying) device type */
+ if (subsystem_type == DRM_BUS_VIRTIO) {
++ /* Assume virtio-pci on error */
++ if (!realpath(path, real_path))
++ return DRM_BUS_VIRTIO;
+ strncat(path, "/..", PATH_MAX);
+ subsystem_type = get_subsystem_type(path);
+- }
++ if (subsystem_type < 0)
++ return DRM_BUS_VIRTIO;
++ }
+ return subsystem_type;
+ #elif defined(__OpenBSD__) || defined(__DragonFly__) || defined(__FreeBSD__)
+ return DRM_BUS_PCI;
+@@ -3920,6 +3923,7 @@ process_device(drmDevicePtr *device, const char *d_name,
+
+ switch (subsystem_type) {
+ case DRM_BUS_PCI:
++ case DRM_BUS_VIRTIO:
+ return drmProcessPciDevice(device, node, node_type, maj, min,
+ fetch_deviceinfo, flags);
+ case DRM_BUS_USB:
diff --git a/gnu/packages/patches/libdrm-symbol-check.patch b/gnu/packages/patches/libdrm-symbol-check.patch
deleted file mode 100644
index 0a77763a4f..0000000000
--- a/gnu/packages/patches/libdrm-symbol-check.patch
+++ /dev/null
@@ -1,215 +0,0 @@
-Augment the list of expected symbols to fix the symbol-check tests on
-mips64el-linux, armhf-linux and aarch64-linux.
-
---- libdrm-2.4.65/freedreno/freedreno-symbol-check.orig 2015-09-04 11:07:40.000000000 -0400
-+++ libdrm-2.4.65/freedreno/freedreno-symbol-check 2015-10-18 23:57:15.288416229 -0400
-@@ -1,6 +1,6 @@
- #!/bin/bash
-
--# The following symbols (past the first five) are taken from the public headers.
-+# The following symbols (past the first 12) are taken from the public headers.
- # A list of the latter should be available Makefile.sources/LIBDRM_FREEDRENO_H_FILES
-
- FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_freedreno.so} | awk '{print $3}'| while read func; do
-@@ -10,6 +10,13 @@
- _end
- _fini
- _init
-+_fbss
-+_fdata
-+_ftext
-+__bss_start__
-+__bss_end__
-+_bss_end__
-+__end__
- fd_bo_cpu_fini
- fd_bo_cpu_prep
- fd_bo_del
---- libdrm-2.4.65/nouveau/nouveau-symbol-check.orig 2015-05-04 11:47:43.000000000 -0400
-+++ libdrm-2.4.65/nouveau/nouveau-symbol-check 2015-10-18 23:55:26.078327118 -0400
-@@ -1,6 +1,6 @@
- #!/bin/bash
-
--# The following symbols (past the first five) are taken from the public headers.
-+# The following symbols (past the first 12) are taken from the public headers.
- # A list of the latter should be available Makefile.sources/LIBDRM_NOUVEAU_H_FILES
-
- FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_nouveau.so} | awk '{print $3}'| while read func; do
-@@ -10,6 +10,13 @@
- _end
- _fini
- _init
-+_fbss
-+_fdata
-+_ftext
-+__bss_start__
-+__bss_end__
-+_bss_end__
-+__end__
- nouveau_bo_map
- nouveau_bo_name_get
- nouveau_bo_name_ref
---- libdrm-2.4.65/libkms/kms-symbol-check.orig 2015-05-04 11:47:43.000000000 -0400
-+++ libdrm-2.4.65/libkms/kms-symbol-check 2015-10-18 23:46:10.683869471 -0400
-@@ -1,6 +1,6 @@
- #!/bin/bash
-
--# The following symbols (past the first five) are taken from the public headers.
-+# The following symbols (past the first 12) are taken from the public headers.
- # A list of the latter should be available Makefile.sources/LIBKMS_H_FILES
-
- FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libkms.so} | awk '{print $3}'| while read func; do
-@@ -10,6 +10,13 @@
- _end
- _fini
- _init
-+_fbss
-+_fdata
-+_ftext
-+__bss_start__
-+__bss_end__
-+_bss_end__
-+__end__
- kms_bo_create
- kms_bo_destroy
- kms_bo_get_prop
---- libdrm-2.4.65/intel/intel-symbol-check.orig 2015-05-04 11:47:43.000000000 -0400
-+++ libdrm-2.4.65/intel/intel-symbol-check 2015-10-18 23:55:53.309558508 -0400
-@@ -1,6 +1,6 @@
- #!/bin/bash
-
--# The following symbols (past the first five) are taken from the public headers.
-+# The following symbols (past the first 12) are taken from the public headers.
- # A list of the latter should be available Makefile.sources/LIBDRM_INTEL_H_FILES
-
- FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_intel.so} | awk '{print $3}' | while read func; do
-@@ -10,6 +10,13 @@
- _end
- _fini
- _init
-+_fbss
-+_fdata
-+_ftext
-+__bss_start__
-+__bss_end__
-+_bss_end__
-+__end__
- drm_intel_bo_alloc
- drm_intel_bo_alloc_for_render
- drm_intel_bo_alloc_tiled
---- libdrm-2.4.65/amdgpu/amdgpu-symbol-check.orig 2015-08-17 10:08:11.000000000 -0400
-+++ libdrm-2.4.65/amdgpu/amdgpu-symbol-check 2015-10-18 23:56:10.606917723 -0400
-@@ -1,6 +1,6 @@
- #!/bin/bash
-
--# The following symbols (past the first five) are taken from the public headers.
-+# The following symbols (past the first 12) are taken from the public headers.
- # A list of the latter should be available Makefile.am/libdrm_amdgpuinclude_HEADERS
-
- FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_amdgpu.so} | awk '{print $3}' | while read func; do
-@@ -10,6 +10,13 @@
- _end
- _fini
- _init
-+_fbss
-+_fdata
-+_ftext
-+__bss_start__
-+__bss_end__
-+_bss_end__
-+__end__
- amdgpu_bo_alloc
- amdgpu_bo_cpu_map
- amdgpu_bo_cpu_unmap
---- libdrm-2.4.65/exynos/exynos-symbol-check.orig 2015-05-04 11:47:43.000000000 -0400
-+++ libdrm-2.4.65/exynos/exynos-symbol-check 2015-10-18 23:56:32.025486153 -0400
-@@ -1,6 +1,6 @@
- #!/bin/bash
-
--# The following symbols (past the first five) are taken from the public headers.
-+# The following symbols (past the first 12) are taken from the public headers.
- # A list of the latter should be available Makefile.am/libdrm_exynos*_HEADERS
-
- FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_exynos.so} | awk '{print $3}'| while read func; do
-@@ -10,6 +10,13 @@
- _end
- _fini
- _init
-+_fbss
-+_fdata
-+_ftext
-+__bss_start__
-+__bss_end__
-+_bss_end__
-+__end__
- exynos_bo_create
- exynos_bo_destroy
- exynos_bo_from_name
---- libdrm-2.4.65/omap/omap-symbol-check.orig 2015-05-04 11:47:43.000000000 -0400
-+++ libdrm-2.4.65/omap/omap-symbol-check 2015-10-18 23:56:44.834438626 -0400
-@@ -1,6 +1,6 @@
- #!/bin/bash
-
--# The following symbols (past the first five) are taken from the public headers.
-+# The following symbols (past the first 12) are taken from the public headers.
- # A list of the latter should be available Makefile.am/libdrm_omap*HEADERS
-
- FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_omap.so} | awk '{print $3}'| while read func; do
-@@ -10,6 +10,13 @@
- _end
- _fini
- _init
-+_fbss
-+_fdata
-+_ftext
-+__bss_start__
-+__bss_end__
-+_bss_end__
-+__end__
- omap_bo_cpu_fini
- omap_bo_cpu_prep
- omap_bo_del
---- libdrm-2.4.65/tegra/tegra-symbol-check.orig 2015-05-04 11:47:43.000000000 -0400
-+++ libdrm-2.4.65/tegra/tegra-symbol-check 2015-10-18 23:57:00.756759698 -0400
-@@ -1,6 +1,6 @@
- #!/bin/bash
-
--# The following symbols (past the first nine) are taken from tegra.h.
-+# The following symbols (past the first 12) are taken from tegra.h.
-
- FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_tegra.so} | awk '{print $3}'| while read func; do
- ( grep -q "^$func$" || echo $func ) <<EOF
-@@ -9,6 +9,9 @@
- __bss_start
- __end__
- _bss_end__
-+_fbss
-+_fdata
-+_ftext
- _edata
- _end
- _fini
---- libdrm-2.4.65/radeon/radeon-symbol-check.orig 2015-05-04 11:47:43.000000000 -0400
-+++ libdrm-2.4.65/radeon/radeon-symbol-check 2015-10-18 23:57:00.756759698 -0400
-@@ -1,6 +1,6 @@
- #!/bin/bash
-
--# The following symbols (past the first five) are taken from the public headers.
-+# The following symbols (past the first 12) are taken from the public headers.
- # A list of the latter should be available Makefile.sources/LIBDRM_RADEON_H_FILES
-
- FUNCS=$(nm -D --format=bsd --defined-only ${1-.libs/libdrm_tegra.so} | awk '{print $3}'| while read func; do
-@@ -10,6 +10,13 @@
- _end
- _fini
- _init
-+_fbss
-+_fdata
-+_ftext
-+__bss_start__
-+__bss_end__
-+_bss_end__
-+__end__
- radeon_bo_debug
- radeon_bo_get_handle
- radeon_bo_get_src_domain
diff --git a/gnu/packages/patches/libexif-CVE-2016-6328.patch b/gnu/packages/patches/libexif-CVE-2016-6328.patch
deleted file mode 100644
index 67fee0f528..0000000000
--- a/gnu/packages/patches/libexif-CVE-2016-6328.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-Fix CVE-2016-6328:
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1366239
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6328
-
-Patch copied from upstream source repository:
-
-https://github.com/libexif/libexif/commit/41bd04234b104312f54d25822f68738ba8d7133d
-
-From 41bd04234b104312f54d25822f68738ba8d7133d Mon Sep 17 00:00:00 2001
-From: Marcus Meissner <marcus@jet.franken.de>
-Date: Tue, 25 Jul 2017 23:44:44 +0200
-Subject: [PATCH] fixes some (not all) buffer overreads during decoding pentax
- makernote entries.
-
-This should fix:
-https://sourceforge.net/p/libexif/bugs/125/ CVE-2016-6328
----
- libexif/pentax/mnote-pentax-entry.c | 16 +++++++++++++---
- 1 file changed, 13 insertions(+), 3 deletions(-)
-
-diff --git a/libexif/pentax/mnote-pentax-entry.c b/libexif/pentax/mnote-pentax-entry.c
-index d03d159..ea0429a 100644
---- a/libexif/pentax/mnote-pentax-entry.c
-+++ b/libexif/pentax/mnote-pentax-entry.c
-@@ -425,24 +425,34 @@ mnote_pentax_entry_get_value (MnotePentaxEntry *entry,
- case EXIF_FORMAT_SHORT:
- {
- const unsigned char *data = entry->data;
-- size_t k, len = strlen(val);
-+ size_t k, len = strlen(val), sizeleft;
-+
-+ sizeleft = entry->size;
- for(k=0; k<entry->components; k++) {
-+ if (sizeleft < 2)
-+ break;
- vs = exif_get_short (data, entry->order);
- snprintf (val+len, maxlen-len, "%i ", vs);
- len = strlen(val);
- data += 2;
-+ sizeleft -= 2;
- }
- }
- break;
- case EXIF_FORMAT_LONG:
- {
- const unsigned char *data = entry->data;
-- size_t k, len = strlen(val);
-+ size_t k, len = strlen(val), sizeleft;
-+
-+ sizeleft = entry->size;
- for(k=0; k<entry->components; k++) {
-+ if (sizeleft < 4)
-+ break;
- vl = exif_get_long (data, entry->order);
- snprintf (val+len, maxlen-len, "%li", (long int) vl);
- len = strlen(val);
- data += 4;
-+ sizeleft -= 4;
- }
- }
- break;
-@@ -455,5 +465,5 @@ mnote_pentax_entry_get_value (MnotePentaxEntry *entry,
- break;
- }
-
-- return (val);
-+ return val;
- }
---
-2.16.0
-
diff --git a/gnu/packages/patches/libexif-CVE-2017-7544.patch b/gnu/packages/patches/libexif-CVE-2017-7544.patch
deleted file mode 100644
index c4ea373dc5..0000000000
--- a/gnu/packages/patches/libexif-CVE-2017-7544.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-Fix CVE-2017-7544:
-
-https://sourceforge.net/p/libexif/bugs/130/
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7544
-
-Patch copied from upstream bug tracker:
-
-https://sourceforge.net/p/libexif/bugs/130/#489a
-
-Index: libexif/exif-data.c
-===================================================================
-RCS file: /cvsroot/libexif/libexif/libexif/exif-data.c,v
-retrieving revision 1.131
-diff -u -r1.131 exif-data.c
---- a/libexif/exif-data.c 12 Jul 2012 17:28:26 -0000 1.131
-+++ b/libexif/exif-data.c 25 Jul 2017 21:34:06 -0000
-@@ -255,6 +255,12 @@
- exif_mnote_data_set_offset (data->priv->md, *ds - 6);
- exif_mnote_data_save (data->priv->md, &e->data, &e->size);
- e->components = e->size;
-+ if (exif_format_get_size (e->format) != 1) {
-+ /* e->format is taken from input code,
-+ * but we need to make sure it is a 1 byte
-+ * entity due to the multiplication below. */
-+ e->format = EXIF_FORMAT_UNDEFINED;
-+ }
- }
- }
-
diff --git a/gnu/packages/patches/libexif-CVE-2018-20030.patch b/gnu/packages/patches/libexif-CVE-2018-20030.patch
deleted file mode 100644
index 57e4746b58..0000000000
--- a/gnu/packages/patches/libexif-CVE-2018-20030.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-https://github.com/libexif/libexif/commit/6aa11df549114ebda520dde4cdaea2f9357b2c89.patch
-
-NEWS section was removed
-'12' -> '30' on line 79
-
-From 6aa11df549114ebda520dde4cdaea2f9357b2c89 Mon Sep 17 00:00:00 2001
-From: Dan Fandrich <dan@coneharvesters.com>
-Date: Fri, 12 Oct 2018 16:01:45 +0200
-Subject: [PATCH] Improve deep recursion detection in
- exif_data_load_data_content.
-
-The existing detection was still vulnerable to pathological cases
-causing DoS by wasting CPU. The new algorithm takes the number of tags
-into account to make it harder to abuse by cases using shallow recursion
-but with a very large number of tags. This improves on commit 5d28011c
-which wasn't sufficient to counter this kind of case.
-
-The limitation in the previous fix was discovered by Laurent Delosieres,
-Secunia Research at Flexera (Secunia Advisory SA84652) and is assigned
-the identifier CVE-2018-20030.
----
- NEWS | 1 +
- libexif/exif-data.c | 45 +++++++++++++++++++++++++++++++++++++--------
- 2 files changed, 38 insertions(+), 8 deletions(-)
-
-diff --git a/libexif/exif-data.c b/libexif/exif-data.c
-index e35403d..a6f9c94 100644
---- a/libexif/exif-data.c
-+++ b/libexif/exif-data.c
-@@ -35,6 +35,7 @@
- #include <libexif/olympus/exif-mnote-data-olympus.h>
- #include <libexif/pentax/exif-mnote-data-pentax.h>
-
-+#include <math.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
-@@ -350,6 +351,20 @@ if (data->ifd[(i)]->count) { \
- break; \
- }
-
-+/*! Calculate the recursion cost added by one level of IFD loading.
-+ *
-+ * The work performed is related to the cost in the exponential relation
-+ * work=1.1**cost
-+ */
-+static unsigned int
-+level_cost(unsigned int n)
-+{
-+ static const double log_1_1 = 0.09531017980432493;
-+
-+ /* Adding 0.1 protects against the case where n==1 */
-+ return ceil(log(n + 0.1)/log_1_1);
-+}
-+
- /*! Load data for an IFD.
- *
- * \param[in,out] data #ExifData
-@@ -357,13 +372,13 @@ if (data->ifd[(i)]->count) { \
- * \param[in] d pointer to buffer containing raw IFD data
- * \param[in] ds size of raw data in buffer at \c d
- * \param[in] offset offset into buffer at \c d at which IFD starts
-- * \param[in] recursion_depth number of times this function has been
-- * recursively called without returning
-+ * \param[in] recursion_cost factor indicating how expensive this recursive
-+ * call could be
- */
- static void
- exif_data_load_data_content (ExifData *data, ExifIfd ifd,
- const unsigned char *d,
-- unsigned int ds, unsigned int offset, unsigned int recursion_depth)
-+ unsigned int ds, unsigned int offset, unsigned int recursion_cost)
- {
- ExifLong o, thumbnail_offset = 0, thumbnail_length = 0;
- ExifShort n;
-@@ -378,9 +393,20 @@ exif_data_load_data_content (ExifData *data, ExifIfd ifd,
- if ((((int)ifd) < 0) || ( ((int)ifd) >= EXIF_IFD_COUNT))
- return;
-
-- if (recursion_depth > 30) {
-+ if (recursion_cost > 170) {
-+ /*
-+ * recursion_cost is a logarithmic-scale indicator of how expensive this
-+ * recursive call might end up being. It is an indicator of the depth of
-+ * recursion as well as the potential for worst-case future recursive
-+ * calls. Since it's difficult to tell ahead of time how often recursion
-+ * will occur, this assumes the worst by assuming every tag could end up
-+ * causing recursion.
-+ * The value of 170 was chosen to limit typical EXIF structures to a
-+ * recursive depth of about 6, but pathological ones (those with very
-+ * many tags) to only 2.
-+ */
- exif_log (data->priv->log, EXIF_LOG_CODE_CORRUPT_DATA, "ExifData",
-- "Deep recursion detected!");
-+ "Deep/expensive recursion detected!");
- return;
- }
-
-@@ -422,15 +448,18 @@ exif_data_load_data_content (ExifData *data, ExifIfd ifd,
- switch (tag) {
- case EXIF_TAG_EXIF_IFD_POINTER:
- CHECK_REC (EXIF_IFD_EXIF);
-- exif_data_load_data_content (data, EXIF_IFD_EXIF, d, ds, o, recursion_depth + 1);
-+ exif_data_load_data_content (data, EXIF_IFD_EXIF, d, ds, o,
-+ recursion_cost + level_cost(n));
- break;
- case EXIF_TAG_GPS_INFO_IFD_POINTER:
- CHECK_REC (EXIF_IFD_GPS);
-- exif_data_load_data_content (data, EXIF_IFD_GPS, d, ds, o, recursion_depth + 1);
-+ exif_data_load_data_content (data, EXIF_IFD_GPS, d, ds, o,
-+ recursion_cost + level_cost(n));
- break;
- case EXIF_TAG_INTEROPERABILITY_IFD_POINTER:
- CHECK_REC (EXIF_IFD_INTEROPERABILITY);
-- exif_data_load_data_content (data, EXIF_IFD_INTEROPERABILITY, d, ds, o, recursion_depth + 1);
-+ exif_data_load_data_content (data, EXIF_IFD_INTEROPERABILITY, d, ds, o,
-+ recursion_cost + level_cost(n));
- break;
- case EXIF_TAG_JPEG_INTERCHANGE_FORMAT:
- thumbnail_offset = o;
diff --git a/gnu/packages/patches/libnftnl-dont-check-NFTNL_FLOWTABLE_SIZE.patch b/gnu/packages/patches/libnftnl-dont-check-NFTNL_FLOWTABLE_SIZE.patch
deleted file mode 100644
index df0571bf2b..0000000000
--- a/gnu/packages/patches/libnftnl-dont-check-NFTNL_FLOWTABLE_SIZE.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From: Tobias Geerinckx-Rice <me@tobias.gr>
-Date: Tue, 10 Dec 2019 16:20:40 +0100
-Subject: gnu: libnftnl: Don't check NFTNL_FLOWTABLE_SIZE.
-
-Taken verbatim from the upstream commit[0] directly following the 1.1.5
-release.
-
-[0]: https://git.netfilter.org/libnftnl/commit/?id=b2388765e0c4405442faa13845419f6a35d0134c
-
-From b2388765e0c4405442faa13845419f6a35d0134c Mon Sep 17 00:00:00 2001
-From: Phil Sutter <phil@nwl.cc>
-Date: Mon, 2 Dec 2019 18:29:56 +0100
-Subject: tests: flowtable: Don't check NFTNL_FLOWTABLE_SIZE
-
-Marshalling code around that attribute has been dropped by commit
-d1c4b98c733a5 ("flowtable: remove NFTA_FLOWTABLE_SIZE") so it's value is
-lost during the test.
-
-Assuming that NFTNL_FLOWTABLE_SIZE will receive kernel support at a
-later point, leave the test code in place but just comment it out.
-
-Fixes: d1c4b98c733a5 ("flowtable: remove NFTA_FLOWTABLE_SIZE")
-Signed-off-by: Phil Sutter <phil@nwl.cc>
-Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>
----
- tests/nft-flowtable-test.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/tests/nft-flowtable-test.c b/tests/nft-flowtable-test.c
-index 3edb00d..8ab8d4c 100644
---- a/tests/nft-flowtable-test.c
-+++ b/tests/nft-flowtable-test.c
-@@ -33,9 +33,11 @@ static void cmp_nftnl_flowtable(struct nftnl_flowtable *a, struct nftnl_flowtabl
- if (nftnl_flowtable_get_u32(a, NFTNL_FLOWTABLE_USE) !=
- nftnl_flowtable_get_u32(b, NFTNL_FLOWTABLE_USE))
- print_err("Flowtable use mismatches");
-+#if 0
- if (nftnl_flowtable_get_u32(a, NFTNL_FLOWTABLE_SIZE) !=
- nftnl_flowtable_get_u32(b, NFTNL_FLOWTABLE_SIZE))
- print_err("Flowtable size mismatches");
-+#endif
- if (nftnl_flowtable_get_u32(a, NFTNL_FLOWTABLE_FLAGS) !=
- nftnl_flowtable_get_u32(b, NFTNL_FLOWTABLE_FLAGS))
- print_err("Flowtable flags mismatches");
---
-cgit v1.2.1
-
diff --git a/gnu/packages/patches/lxsession-use-gapplication.patch b/gnu/packages/patches/lxsession-use-gapplication.patch
deleted file mode 100644
index 3f2269a42f..0000000000
--- a/gnu/packages/patches/lxsession-use-gapplication.patch
+++ /dev/null
@@ -1,152 +0,0 @@
-Upstream patch to remove libunique dependency, and use glib >= 2.28.0
-to handle unique apps both for GTK+ 2 and 3.
-https://sourceforge.net/p/lxde/patches/539/
-
-
-From a7d3b40a79a7a16c1f5d50d2bd466570258dae29 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Ball=C3=B3=20Gy=C3=B6rgy?= <ballogyor@gmail.com>
-Date: Sun, 22 Jan 2017 01:09:59 +0100
-Subject: [PATCH] Use GApplication for unique app handling
-
-Remove libunique dependency, and use glib >= 2.28.0 to handle unique apps both for GTK+ 2 and 3.
----
- Makefile.am | 6 ------
- configure.ac | 7 +------
- lxclipboard/main.vala | 16 +---------------
- lxpolkit/main.vala | 16 +---------------
- 4 files changed, 3 insertions(+), 42 deletions(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index c2e1fe8..e3a3b97 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -90,9 +90,6 @@ if USE_GTK3
- lxclipboard_lxclipboard_VALAFLAGS += --define USE_GTK3
- else
- lxclipboard_lxclipboard_VALAFLAGS += --define USE_GTK2
--lxclipboard_lxclipboard_VALAFLAGS += --pkg unique-1.0
--lxclipboard_lxclipboard_CPPFLAGS += $(UNIQUE_CFLAGS)
--lxclipboard_lxclipboard_LDADD += $(UNIQUE_LIBS)
- endif
-
- lxpolkit_lxpolkit_vala_SOURCES = \
-@@ -137,9 +134,6 @@ if USE_GTK3
- lxpolkit_lxpolkit_VALAFLAGS += --define USE_GTK3
- else
- lxpolkit_lxpolkit_VALAFLAGS += --define USE_GTK2
--lxpolkit_lxpolkit_VALAFLAGS += --pkg unique-1.0
--lxpolkit_lxpolkit_CPPFLAGS += $(UNIQUE_CFLAGS)
--lxpolkit_lxpolkit_LDADD += $(UNIQUE_LIBS)
- endif
-
- lxsession_db_lxsession_db_SOURCES = \
-diff --git a/configure.ac b/configure.ac
-index 06ddbb3..9126f4d 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -45,7 +45,7 @@ PKG_CHECK_MODULES(X11, [x11])
- AC_SUBST(X11_CFLAGS)
- AC_SUBST(X11_LIBS)
-
--PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.6.0])
-+PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.28.0])
- AC_SUBST(GLIB_CFLAGS)
- AC_SUBST(GLIB_LIBS)
-
-@@ -79,11 +79,6 @@ else
- CFLAGS="$CFLAGS -D USE_GTK2"
- gtk_modules="gtk+-2.0 >= 2.6.0"
- VALA_GTK_LIBS="gtk+-2.0"
--
-- PKG_CHECK_MODULES(UNIQUE, [unique-1.0])
-- AC_SUBST(UNIQUE_CFLAGS)
-- AC_SUBST(UNIQUE_LIBS)
--
- fi
- PKG_CHECK_MODULES(GTK, [$gtk_modules])
- AC_SUBST(GTK_CFLAGS)
-diff --git a/lxclipboard/main.vala b/lxclipboard/main.vala
-index bee4044..3d4a8d7 100644
---- a/lxclipboard/main.vala
-+++ b/lxclipboard/main.vala
-@@ -17,9 +17,6 @@
- * MA 02110-1301, USA.
- */
- using Gtk;
--#if USE_GTK2
--using Unique;
--#endif
-
- namespace Lxsession
- {
-@@ -28,17 +25,7 @@ namespace Lxsession
- public static int main(string[] args)
- {
- Gtk.init (ref args);
--#if USE_GTK2
-- Unique.App app = new Unique.App("org.lxde.lxclipboard", null);
--
-- if(app.is_running)
-- {
-- message("lxclipboard is already running. Existing");
-- return 0;
-- }
--#endif
--# if USE_GTK3
-- Gtk.Application app = new Gtk.Application (
-+ GLib.Application app = new GLib.Application (
- "org.lxde.lxclipboard",
- GLib.ApplicationFlags.FLAGS_NONE);
- app.register ();
-@@ -48,7 +35,6 @@ namespace Lxsession
- message("lxclipboard is already running. Existing");
- return 0;
- }
--#endif
-
- clipboard_start ();
-
-diff --git a/lxpolkit/main.vala b/lxpolkit/main.vala
-index c0d6ae2..50c3cb7 100644
---- a/lxpolkit/main.vala
-+++ b/lxpolkit/main.vala
-@@ -17,9 +17,6 @@
- * MA 02110-1301, USA.
- */
- using Gtk;
--#if USE_GTK2
--using Unique;
--#endif
-
- const string GETTEXT_PACKAGE = "lxsession";
-
-@@ -33,17 +30,7 @@ namespace Lxsession
- Intl.bind_textdomain_codeset(GETTEXT_PACKAGE, "utf-8");
-
- Gtk.init (ref args);
--#if USE_GTK2
-- Unique.App app = new Unique.App("org.lxde.lxpolkit", null);
--
-- if(app.is_running)
-- {
-- message(_("lxpolkit is already running. Existing"));
-- return 0;
-- }
--#endif
--# if USE_GTK3
-- Gtk.Application app = new Gtk.Application (
-+ GLib.Application app = new GLib.Application (
- "org.lxde.lxpolkit",
- GLib.ApplicationFlags.FLAGS_NONE);
- app.register ();
-@@ -53,7 +40,6 @@ namespace Lxsession
- message(_("lxpolkit is already running. Existing"));
- return 0;
- }
--#endif
-
- policykit_agent_init();
-
---
-2.11.0
-
diff --git a/gnu/packages/patches/netsurf-system-utf8proc.patch b/gnu/packages/patches/netsurf-system-utf8proc.patch
index a2ee52ca05..04bf828f37 100644
--- a/gnu/packages/patches/netsurf-system-utf8proc.patch
+++ b/gnu/packages/patches/netsurf-system-utf8proc.patch
@@ -1,50 +1,13 @@
-Use upstream utf8proc package, as suggested in
-http://source.netsurf-browser.org/libutf8proc.git/commit/?id=770e329cceaf0620c7b482589a9b17ed1d19c16d
+Fix include directory for system utf8proc.
-Work around upstream's lack of a pkg-config file and update API.
-
---- netsurf-3.6/Makefile
-+++ netsurf-3.6/Makefile
-@@ -527,10 +527,9 @@
- $(eval $(call pkg_config_find_and_add,libcss,CSS))
- $(eval $(call pkg_config_find_and_add,libdom,DOM))
- $(eval $(call pkg_config_find_and_add,libnsutils,nsutils))
--$(eval $(call pkg_config_find_and_add,libutf8proc,utf8proc))
-
- # Common libraries without pkg-config support
--LDFLAGS += -lz
-+LDFLAGS += -lz -lutf8proc
+--- netsurf-3.10/utils/idna.c
++++ netsurf-3.10/utils/idna.c
+@@ -167,7 +167,7 @@
- # Optional libraries with pkgconfig
+ #ifdef WITH_UTF8PROC
---- netsurf-3.8/utils/idna.c
-+++ netsurf-3.8/utils/idna.c
-@@ -27,7 +27,7 @@
- #include <stdlib.h>
- #include <string.h>
- #include <sys/types.h>
-#include <libutf8proc/utf8proc.h>
+#include <utf8proc.h>
- #include "netsurf/inttypes.h"
-
---- netsurf-3.8/test/Makefile
-+++ netsurf-3.8/test/Makefile
-@@ -142,14 +142,15 @@
- -Itest -Iinclude -Icontent/handlers -Ifrontends -I. -I.. \
- -Dnsgtk \
- $(SAN_FLAGS) \
-- $(shell pkg-config --cflags libcurl libparserutils libwapcaplet libdom libnsutils libutf8proc) \
-+ $(shell pkg-config --cflags libcurl libparserutils libwapcaplet libdom libnsutils) \
- $(LIB_CFLAGS)
- TESTCFLAGS := $(BASE_TESTCFLAGS) \
- $(COV_CFLAGS) \
- $(COV_CPPFLAGS)
-
- TESTLDFLAGS := -L$(TESTROOT) \
-- $(shell pkg-config --libs libcurl libparserutils libwapcaplet libdom libnsutils libutf8proc) -lz \
-+ $(shell pkg-config --libs libcurl libparserutils libwapcaplet libdom libnsutils) \
-+ $(LDFLAGS) \
- $(SAN_FLAGS) \
- $(LIB_LDFLAGS)\
- $(COV_LDFLAGS)
+ int32_t idna_contexto[] = {
+ /* CONTEXTO codepoints which have a rule defined */
diff --git a/gnu/packages/patches/nm-plugin-path.patch b/gnu/packages/patches/network-manager-plugin-path.patch
index 505ae31534..505ae31534 100644
--- a/gnu/packages/patches/nm-plugin-path.patch
+++ b/gnu/packages/patches/network-manager-plugin-path.patch
diff --git a/gnu/packages/patches/openscad-parser-boost-1.72.patch b/gnu/packages/patches/openscad-parser-boost-1.72.patch
new file mode 100644
index 0000000000..35311e6173
--- /dev/null
+++ b/gnu/packages/patches/openscad-parser-boost-1.72.patch
@@ -0,0 +1,26 @@
+https://github.com/openscad/openscad/commit/b6c170cc5d.patch
+
+From b6c170cc5dd1bc677176ee732cdb0ddae57e5cf0 Mon Sep 17 00:00:00 2001
+From: Jan Beich <jbeich@FreeBSD.org>
+Date: Fri, 25 Oct 2019 15:10:26 +0000
+Subject: [PATCH] Add missing header bootlegged by Boost < 1.72
+
+src/parser.y:76:6: error: no template named 'stack' in namespace 'std'
+std::stack<LocalScope *> scope_stack;
+~~~~~^
+---
+ src/parser.y | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/parser.y b/src/parser.y
+index 7f4fd56ca7..4c77c989ea 100644
+--- a/src/parser.y
++++ b/src/parser.y
+@@ -46,6 +46,7 @@
+ #include "printutils.h"
+ #include "memory.h"
+ #include <sstream>
++#include <stack>
+ #include <boost/filesystem.hpp>
+ #include "boost-utils.h"
+ #include "feature.h"
diff --git a/gnu/packages/patches/pidgin-libnm.patch b/gnu/packages/patches/pidgin-libnm.patch
new file mode 100644
index 0000000000..d34af749af
--- /dev/null
+++ b/gnu/packages/patches/pidgin-libnm.patch
@@ -0,0 +1,60 @@
+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/plotutils-libpng-jmpbuf.patch b/gnu/packages/patches/plotutils-libpng-jmpbuf.patch
deleted file mode 100644
index 07ef60996c..0000000000
--- a/gnu/packages/patches/plotutils-libpng-jmpbuf.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Use the `png_jmpbuf' accessor, as recommended since libpng 1.4.0:
-http://www.libpng.org/pub/png/src/libpng-1.2.x-to-1.4.x-summary.txt .
-
---- plotutils-2.6/libplot/z_write.c 2013-07-12 17:19:12.000000000 +0200
-+++ plotutils-2.6/libplot/z_write.c 2013-07-12 17:19:07.000000000 +0200
-@@ -164,7 +164,7 @@ _pl_z_maybe_output_image (S___(Plotter *
- }
-
- /* cleanup after libpng errors (error handler does a longjmp) */
-- if (setjmp (png_ptr->jmpbuf))
-+ if (setjmp (png_jmpbuf (png_ptr)))
- {
- png_destroy_write_struct (&png_ptr, (png_info **)NULL);
- return -1;
-@@ -444,7 +444,7 @@ _our_error_fn_stdio (png_struct *png_ptr
- #endif
- }
-
-- longjmp (png_ptr->jmpbuf, 1);
-+ longjmp (png_jmpbuf (png_ptr), 1);
- }
-
- static void
diff --git a/gnu/packages/patches/pypy3-7.3.1-fix-tests.patch b/gnu/packages/patches/pypy3-7.3.1-fix-tests.patch
new file mode 100644
index 0000000000..464aad967f
--- /dev/null
+++ b/gnu/packages/patches/pypy3-7.3.1-fix-tests.patch
@@ -0,0 +1,278 @@
+Fix a few testcases. Adapted from python-3-fix-tests.patch.
+
+diff -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/ctypes/test/test_callbacks.py pypy3.6-v7.3.1-src/lib-python/3/ctypes/test/test_callbacks.py
+--- pypy3.6-v7.3.1-src.orig/lib-python/3/ctypes/test/test_callbacks.py 1970-01-01 01:00:01.000000000 +0100
++++ pypy3.6-v7.3.1-src/lib-python/3/ctypes/test/test_callbacks.py 2020-05-21 14:19:14.827288853 +0200
+@@ -4,6 +4,7 @@
+ from ctypes import *
+ from ctypes.test import need_symbol
+ import _ctypes_test
++import platform
+
+ class Callbacks(unittest.TestCase):
+ functype = CFUNCTYPE
+@@ -178,6 +179,8 @@
+
+ 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 -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/ctypes/test/test_libc.py pypy3.6-v7.3.1-src/lib-python/3/ctypes/test/test_libc.py
+--- pypy3.6-v7.3.1-src.orig/lib-python/3/ctypes/test/test_libc.py 1970-01-01 01:00:01.000000000 +0100
++++ pypy3.6-v7.3.1-src/lib-python/3/ctypes/test/test_libc.py 2020-05-21 14:19:14.827288853 +0200
+@@ -2,6 +2,7 @@
+
+ from ctypes import *
+ import _ctypes_test
++import platform
+
+ lib = CDLL(_ctypes_test.__file__)
+
+@@ -17,6 +18,8 @@
+ 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 -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/distutils/tests/test_archive_util.py pypy3.6-v7.3.1-src/lib-python/3/distutils/tests/test_archive_util.py
+--- pypy3.6-v7.3.1-src.orig/lib-python/3/distutils/tests/test_archive_util.py 1970-01-01 01:00:01.000000000 +0100
++++ pypy3.6-v7.3.1-src/lib-python/3/distutils/tests/test_archive_util.py 2020-05-21 14:19:14.827288853 +0200
+@@ -333,6 +333,7 @@
+ 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 @@
+
+ @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 -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/distutils/tests/test_sdist.py pypy3.6-v7.3.1-src/lib-python/3/distutils/tests/test_sdist.py
+--- pypy3.6-v7.3.1-src.orig/lib-python/3/distutils/tests/test_sdist.py 1970-01-01 01:00:01.000000000 +0100
++++ pypy3.6-v7.3.1-src/lib-python/3/distutils/tests/test_sdist.py 2020-05-21 14:19:14.827288853 +0200
+@@ -443,6 +443,7 @@
+ "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 -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_asyncio/test_base_events.py pypy3.6-v7.3.1-src/lib-python/3/test/test_asyncio/test_base_events.py
+--- pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_asyncio/test_base_events.py 1970-01-01 01:00:01.000000000 +0100
++++ pypy3.6-v7.3.1-src/lib-python/3/test/test_asyncio/test_base_events.py 2020-05-21 14:19:14.827288853 +0200
+@@ -1296,6 +1296,8 @@
+ 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 -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_generators.py pypy3.6-v7.3.1-src/lib-python/3/test/test_generators.py
+--- pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_generators.py 1970-01-01 01:00:01.000000000 +0100
++++ pypy3.6-v7.3.1-src/lib-python/3/test/test_generators.py 2020-05-21 14:19:14.827288853 +0200
+@@ -35,6 +35,7 @@
+ 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 -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/test/_test_multiprocessing.py pypy3.6-v7.3.1-src/lib-python/3/test/_test_multiprocessing.py
+--- pypy3.6-v7.3.1-src.orig/lib-python/3/test/_test_multiprocessing.py 1970-01-01 01:00:01.000000000 +0100
++++ pypy3.6-v7.3.1-src/lib-python/3/test/_test_multiprocessing.py 2020-05-21 14:19:14.827288853 +0200
+@@ -1212,6 +1212,7 @@
+ 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 -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_normalization.py pypy3.6-v7.3.1-src/lib-python/3/test/test_normalization.py
+--- pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_normalization.py 1970-01-01 01:00:01.000000000 +0100
++++ pypy3.6-v7.3.1-src/lib-python/3/test/test_normalization.py 2020-05-21 14:19:14.827288853 +0200
+@@ -2,6 +2,7 @@
+ import unittest
+
+ from http.client import HTTPException
++from urllib.error import URLError
+ import sys
+ from unicodedata import normalize, unidata_version
+
+@@ -43,6 +44,8 @@
+ except PermissionError:
+ self.skipTest(f"Permission error when downloading {TESTDATAURL} "
+ f"into the test data directory")
++ except URLError:
++ self.skipTest("DNS lookups are not enabled.")
+ except (OSError, HTTPException):
+ self.fail(f"Could not retrieve {TESTDATAURL}")
+
+diff -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_pathlib.py pypy3.6-v7.3.1-src/lib-python/3/test/test_pathlib.py
+--- pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_pathlib.py 1970-01-01 01:00:01.000000000 +0100
++++ pypy3.6-v7.3.1-src/lib-python/3/test/test_pathlib.py 2020-05-21 14:19:14.827288853 +0200
+@@ -2130,8 +2130,7 @@
+ 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 -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_pdb.py pypy3.6-v7.3.1-src/lib-python/3/test/test_pdb.py
+--- pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_pdb.py 1970-01-01 01:00:01.000000000 +0100
++++ pypy3.6-v7.3.1-src/lib-python/3/test/test_pdb.py 2020-05-21 14:20:24.377203281 +0200
+@@ -1136,11 +1136,11 @@
+ > <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]>(6)test_function()
+ -> print('pdb %d: %s' % (i, sess._previous_sigint_handler))
+ (Pdb) continue
+- pdb 2: <built-in function default_int_handler>
++ pdb 2: Handlers.SIG_IGN
+ """
+
+ class PdbTestCase(unittest.TestCase):
+diff -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_regrtest.py pypy3.6-v7.3.1-src/lib-python/3/test/test_regrtest.py
+--- pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_regrtest.py 1970-01-01 01:00:01.000000000 +0100
++++ pypy3.6-v7.3.1-src/lib-python/3/test/test_regrtest.py 2020-05-21 14:19:14.827288853 +0200
+@@ -766,6 +766,7 @@
+ 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)
+diff -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_resource.py pypy3.6-v7.3.1-src/lib-python/3/test/test_resource.py
+--- pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_resource.py 1970-01-01 01:00:01.000000000 +0100
++++ pypy3.6-v7.3.1-src/lib-python/3/test/test_resource.py 2020-05-21 14:19:14.827288853 +0200
+@@ -146,6 +146,7 @@
+
+ @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 -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_shutil.py pypy3.6-v7.3.1-src/lib-python/3/test/test_shutil.py
+--- pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_shutil.py 1970-01-01 01:00:01.000000000 +0100
++++ pypy3.6-v7.3.1-src/lib-python/3/test/test_shutil.py 2020-05-21 14:19:14.827288853 +0200
+@@ -1138,6 +1138,7 @@
+ 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
+@@ -1166,6 +1167,7 @@
+
+
+ @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 -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_socket.py pypy3.6-v7.3.1-src/lib-python/3/test/test_socket.py
+--- pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_socket.py 1970-01-01 01:00:01.000000000 +0100
++++ pypy3.6-v7.3.1-src/lib-python/3/test/test_socket.py 2020-05-21 14:19:14.827288853 +0200
+@@ -815,6 +815,8 @@
+ 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.HOST, '10.0.0.1', '255.255.255.255']:
+ self.assertEqual(socket.gethostbyname(addr), addr)
+@@ -934,6 +936,8 @@
+ self.assertRaises(OverflowError, socket.htonl, k)
+ self.assertRaises(OverflowError, 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.
+@@ -1278,6 +1282,8 @@
+ 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)
+@@ -1357,6 +1363,8 @@
+ # 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 -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_spwd.py pypy3.6-v7.3.1-src/lib-python/3/test/test_spwd.py
+--- pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_spwd.py 1970-01-01 01:00:01.000000000 +0100
++++ pypy3.6-v7.3.1-src/lib-python/3/test/test_spwd.py 2020-05-21 14:19:14.827288853 +0200
+@@ -5,8 +5,7 @@
+ 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 @@
+ 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 -Naur pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_tarfile.py pypy3.6-v7.3.1-src/lib-python/3/test/test_tarfile.py
+--- pypy3.6-v7.3.1-src.orig/lib-python/3/test/test_tarfile.py 1970-01-01 01:00:01.000000000 +0100
++++ pypy3.6-v7.3.1-src/lib-python/3/test/test_tarfile.py 2020-05-21 14:19:14.827288853 +0200
+@@ -2491,9 +2491,12 @@
+ 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/gnu/packages/patches/pyqt-unbundled-qt.patch b/gnu/packages/patches/pyqt-unbundled-qt.patch
deleted file mode 100644
index 5c91ed031c..0000000000
--- a/gnu/packages/patches/pyqt-unbundled-qt.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Remove test for bundled Qt which breaks dependent applications. This has
-been fixed in 5.13.
-
-Taken from Arch Linux:
-https://git.archlinux.org/svntogit/packages.git/tree/trunk/python2-pyqt5-crash-fix.patch?h=packages/pyqt5&id=3e56e11d1fd7b1eac8242ce64c58db2bd9acba20
-
-diff -ur PyQt5_gpl-5.12.3/qpy/QtCore/qpycore_post_init.cpp.in PyQt5_gpl-5.12.3b/qpy/QtCore/qpycore_post_init.cpp.in
---- PyQt5_gpl-5.12.3/qpy/QtCore/qpycore_post_init.cpp.in 2019-06-25 14:41:02.000000000 +0200
-+++ PyQt5_gpl-5.12.3b/qpy/QtCore/qpycore_post_init.cpp.in 2019-07-01 17:06:34.882644535 +0200
-@@ -151,8 +151,4 @@
- // initialised first (at least for Windows) and this is the only way to
- // guarantee things are done in the right order.
- PyQtSlotProxy::mutex = new QMutex(QMutex::Recursive);
--
-- // Load the embedded qt.conf file if there is a bundled copy of Qt.
-- if (!qpycore_qt_conf())
-- Py_FatalError("PyQt5.QtCore: Unable to embed qt.conf");
- }
-
diff --git a/gnu/packages/patches/python-argcomplete-1.11.1-fish31.patch b/gnu/packages/patches/python-argcomplete-1.11.1-fish31.patch
new file mode 100644
index 0000000000..98f0ca1473
--- /dev/null
+++ b/gnu/packages/patches/python-argcomplete-1.11.1-fish31.patch
@@ -0,0 +1,29 @@
+Upstream commit fixing testcases for fish>=3.1, see
+https://github.com/kislyuk/argcomplete/commit/08bfc8a788e8081515d733e67be026d051c726f7
+
+diff --git a/test/test.py b/test/test.py
+index e91352b..2c34806 100755
+--- a/test/test.py
++++ b/test/test.py
+@@ -28,6 +28,8 @@
+
+ BASH_VERSION = subprocess.check_output(['bash', '-c', 'echo $BASH_VERSION']).decode()
+ BASH_MAJOR_VERSION = int(BASH_VERSION.split('.')[0])
++FISH_VERSION_STR = subprocess.check_output(['fish', '-c', 'echo -n $FISH_VERSION']).decode()
++FISH_VERSION_TUPLE = tuple(int(x) for x in FISH_VERSION_STR.split('.'))
+
+
+ class TempDir(object):
+@@ -1258,8 +1260,11 @@ class TestFish(_TestSh, unittest.TestCase):
+ expected_failures = [
+ 'test_parse_special_characters',
+ 'test_comp_point',
+- 'test_special_characters_double_quoted'
+ ]
++ if FISH_VERSION_TUPLE < (3, 1):
++ expected_failures.extend([
++ 'test_special_characters_double_quoted'
++ ])
+
+ skipped = [
+ 'test_single_quotes_in_single_quotes',
diff --git a/gnu/packages/patches/python-shouldbe-0.1.2-cpy3.8.patch b/gnu/packages/patches/python-shouldbe-0.1.2-cpy3.8.patch
new file mode 100644
index 0000000000..f3b56e42d6
--- /dev/null
+++ b/gnu/packages/patches/python-shouldbe-0.1.2-cpy3.8.patch
@@ -0,0 +1,82 @@
+Fix compatibility with Python 3.8.
+
+Upstream issue: https://github.com/DirectXMan12/should_be/pull/5
+
+diff -x '*.pyc' -Naur shouldbe-0.1.2/should_be/core.py shouldbe-0.1.2.patched/should_be/core.py
+--- shouldbe-0.1.2/should_be/core.py 2019-03-06 07:38:22.000000000 +0100
++++ shouldbe-0.1.2.patched/should_be/core.py 2020-05-18 08:44:24.214664704 +0200
+@@ -103,7 +103,7 @@
+ return resf
+
+
+-def buildCode(baseCode, argcount=None, kwonlyargcount=None,
++def buildCode(baseCode, argcount=None, posonlyargcount=None, kwonlyargcount=None,
+ nlocals=None, stacksize=None, flags=None,
+ code=None, consts=None, names=None,
+ varnames=None, filename=None, name=None,
+@@ -121,6 +121,24 @@
+ nlocals or baseCode.co_nlocals,
+ stacksize or baseCode.co_stacksize,
+ flags or baseCode.co_flags,
++ code or baseCode.co_code,
++ consts or baseCode.co_consts,
++ names or baseCode.co_names,
++ varnames or baseCode.co_varnames,
++ filename or baseCode.co_filename,
++ name or baseCode.co_name,
++ firstlineno or baseCode.co_firstlineno,
++ lnotab or baseCode.co_lnotab,
++ freevars or baseCode.co_freevars,
++ cellvars or baseCode.co_cellvars)
++ elif hasattr(baseCode, 'co_posonlyargcount'):
++ # Python 3.8
++ resc = CodeType(argcount or baseCode.co_argcount,
++ posonlyargcount or baseCode.co_posonlyargcount,
++ kwonlyargcount or baseCode.co_kwonlyargcount,
++ nlocals or baseCode.co_nlocals,
++ stacksize or baseCode.co_stacksize,
++ flags or baseCode.co_flags,
+ code or baseCode.co_code,
+ consts or baseCode.co_consts,
+ names or baseCode.co_names,
+diff -x '*.pyc' -Naur shouldbe-0.1.2/should_be/tests/test_container_mixin.py shouldbe-0.1.2.patched/should_be/tests/test_container_mixin.py
+--- shouldbe-0.1.2/should_be/tests/test_container_mixin.py 2019-03-01 06:38:16.000000000 +0100
++++ shouldbe-0.1.2.patched/should_be/tests/test_container_mixin.py 2020-05-18 09:00:51.372531064 +0200
+@@ -7,31 +7,31 @@
+ self.lst = [1, 2, 3]
+
+ def test_should_include_iter(self):
+- err_msg = (r'[a-zA-Z0-9.]+ should have included \[.+?\]'
++ err_msg = (r'[a-zA-Z0-9.()]+ should have included \[.+?\]'
+ r', but did not have items .+')
+- self.assertRaisesRegexp(AssertionError, err_msg,
++ self.assertRaisesRegex(AssertionError, err_msg,
+ self.lst.should_include, [4])
+
+ self.lst.should_include([1, 2, 3])
+
+ def test_should_include_item(self):
+- err_msg = (r'[a-zA-Z0-9.]+ should have included .+?'
++ err_msg = (r'[a-zA-Z0-9.()]+ should have included .+?'
+ r', but did not')
+- self.assertRaisesRegexp(AssertionError, err_msg,
++ self.assertRaisesRegex(AssertionError, err_msg,
+ self.lst.should_include, 4)
+
+ self.lst.should_include(3)
+
+ def test_shouldnt_include_iter(self):
+ err_msg = 'should not have included'
+- self.assertRaisesRegexp(AssertionError, err_msg,
++ self.assertRaisesRegex(AssertionError, err_msg,
+ self.lst.shouldnt_include, [2, 3])
+
+ self.lst.shouldnt_include([4, 5])
+
+ def test_shouldnt_include_item(self):
+ err_msg = 'should not have included'
+- self.assertRaisesRegexp(AssertionError, err_msg,
++ self.assertRaisesRegex(AssertionError, err_msg,
+ self.lst.shouldnt_include, 3)
+
+ self.lst.shouldnt_include(4)
diff --git a/gnu/packages/patches/qtbase-QTBUG-81715.patch b/gnu/packages/patches/qtbase-QTBUG-81715.patch
deleted file mode 100644
index 70b83b97d2..0000000000
--- a/gnu/packages/patches/qtbase-QTBUG-81715.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 8a3fde00bf53d99e9e4853e8ab97b0e1bcf74915 Mon Sep 17 00:00:00 2001
-From: Joerg Bornemann <joerg.bornemann@qt.io>
-Date: Wed, 29 Jan 2020 11:06:35 +0100
-Subject: [PATCH] Fix qt5_make_output_file macro for paths containing dots
-
-Commit 89bd5a7e broke CMake projects that use dots in their build
-paths, because the used regular expression matches the directory part
-of the path as well.
-
-The regex wants to achieve the same as get_filename_component(...
-NAME_WLE) which is available since CMake 3.14. Re-implement the
-NAME_WLE functionality for older CMake versions by using multiple
-get_filename_component calls.
-
-Fixes: QTBUG-81715
-Task-number: QTBUG-80295
-Change-Id: I2ef053300948f6e1b2c0c5eafac35105f193d4e6
-Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
----
-
-diff --git a/src/corelib/Qt5CoreMacros.cmake b/src/corelib/Qt5CoreMacros.cmake
-index 7735e51..b3da640 100644
---- a/src/corelib/Qt5CoreMacros.cmake
-+++ b/src/corelib/Qt5CoreMacros.cmake
-@@ -59,7 +59,14 @@
- set(_outfile "${CMAKE_CURRENT_BINARY_DIR}/${rel}")
- string(REPLACE ".." "__" _outfile ${_outfile})
- get_filename_component(outpath ${_outfile} PATH)
-- string(REGEX REPLACE "\\.[^.]*$" "" _outfile ${_outfile})
-+ if(CMAKE_VERSION VERSION_LESS "3.14")
-+ get_filename_component(_outfile_ext ${_outfile} EXT)
-+ get_filename_component(_outfile_ext ${_outfile_ext} NAME_WE)
-+ get_filename_component(_outfile ${_outfile} NAME_WE)
-+ string(APPEND _outfile ${_outfile_ext})
-+ else()
-+ get_filename_component(_outfile ${_outfile} NAME_WLE)
-+ endif()
- file(MAKE_DIRECTORY ${outpath})
- set(${outfile} ${outpath}/${prefix}${_outfile}.${ext})
- endmacro()
diff --git a/gnu/packages/patches/qtbase-use-TZDIR.patch b/gnu/packages/patches/qtbase-use-TZDIR.patch
index 11c737d844..b6c377b133 100644
--- a/gnu/packages/patches/qtbase-use-TZDIR.patch
+++ b/gnu/packages/patches/qtbase-use-TZDIR.patch
@@ -4,8 +4,8 @@ important to be able to update it fast.
Based on a patch fron NixOS.
===================================================================
---- qtbase-opensource-src-5.9.4.orig/src/corelib/tools/qtimezoneprivate_tz.cpp
-+++ qtbase-opensource-src-5.9.4/src/corelib/tools/qtimezoneprivate_tz.cpp
+--- qtbase-opensource-src-5.14.2.orig/src/corelib/time/qtimezoneprivate_tz.cpp
++++ qtbase-opensource-src-5.15.2/src/corelib/time/qtimezoneprivate_tz.cpp
@@ -70,7 +70,11 @@
// Parse zone.tab table, assume lists all installed zones, if not will need to read directories
static QTzTimeZoneHash loadTzTimeZones()
diff --git a/gnu/packages/patches/ruby-sanitize-system-libxml.patch b/gnu/packages/patches/ruby-sanitize-system-libxml.patch
new file mode 100644
index 0000000000..d19eb07294
--- /dev/null
+++ b/gnu/packages/patches/ruby-sanitize-system-libxml.patch
@@ -0,0 +1,38 @@
+Fix test failures that occur when nokogiri is using system libxml:
+
+ https://github.com/rgrove/sanitize/issues/198
+
+Taken from upstream:
+https://github.com/rgrove/sanitize/commit/21da9b62baf9ea659811d92e6b574130aee57eba
+
+diff --git a/test/test_malicious_html.rb b/test/test_malicious_html.rb
+index 2c23074..0756de0 100644
+--- a/test/test_malicious_html.rb
++++ b/test/test_malicious_html.rb
+@@ -135,6 +135,8 @@
+ # The relevant libxml2 code is here:
+ # <https://github.com/GNOME/libxml2/commit/960f0e275616cadc29671a218d7fb9b69eb35588>
+ describe 'unsafe libxml2 server-side includes in attributes' do
++ using_unpatched_libxml2 = Nokogiri::VersionInfo.instance.libxml2_using_system?
++
+ tag_configs = [
+ {
+ tag_name: 'a',
+@@ -166,6 +168,8 @@
+ input = %[<#{tag_name} #{attr_name}='examp<!--" onmouseover=alert(1)>-->le.com'>foo</#{tag_name}>]
+
+ it 'should escape unsafe characters in attributes' do
++ skip "behavior should only exist in nokogiri's patched libxml" if using_unpatched_libxml2
++
+ # This uses Nokogumbo's HTML-compliant serializer rather than
+ # libxml2's.
+ @s.fragment(input).
+@@ -191,6 +195,8 @@
+ input = %[<#{tag_name} #{attr_name}='examp<!--" onmouseover=alert(1)>-->le.com'>foo</#{tag_name}>]
+
+ it 'should not escape characters unnecessarily' do
++ skip "behavior should only exist in nokogiri's patched libxml" if using_unpatched_libxml2
++
+ # This uses Nokogumbo's HTML-compliant serializer rather than
+ # libxml2's.
+ @s.fragment(input).
diff --git a/gnu/packages/patches/transmission-CVE-2018-10756.patch b/gnu/packages/patches/transmission-CVE-2018-10756.patch
new file mode 100644
index 0000000000..f9bdcf60aa
--- /dev/null
+++ b/gnu/packages/patches/transmission-CVE-2018-10756.patch
@@ -0,0 +1,71 @@
+Fix CVE-2018-10756:
+
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-10756
+
+Patch copied from Fedora:
+
+https://src.fedoraproject.org/rpms/transmission/blob/master/f/2123adf8e5e1c2b48791f9d22fc8c747e974180e.patch
+
+--- a/libtransmission/variant.c 2018-05-01 12:21:08.000000000 -0500
++++ b/libtransmission/variant.c 2020-05-18 10:21:27.554214128 -0500
+@@ -820,7 +820,7 @@
+ struct SaveNode
+ {
+ const tr_variant * v;
+- tr_variant sorted;
++ tr_variant* sorted;
+ size_t childIndex;
+ bool isVisited;
+ };
+@@ -849,26 +849,33 @@
+
+ qsort (tmp, n, sizeof (struct KeyIndex), compareKeyIndex);
+
+- tr_variantInitDict (&node->sorted, n);
++ node->sorted = tr_new(tr_variant, 1);
++ tr_variantInitDict (node->sorted, n);
+ for (i=0; i<n; ++i)
+- node->sorted.val.l.vals[i] = *tmp[i].val;
++ node->sorted->val.l.vals[i] = *tmp[i].val;
+ node->sorted.val.l.count = n;
+
+ tr_free (tmp);
+
+- node->v = &node->sorted;
++ v = node->sorted;
+ }
+ else
+ {
+- node->v = v;
++ node->sorted = NULL;
+ }
++
++ node->v = v;
+ }
+
+ static void
+ nodeDestruct (struct SaveNode * node)
+ {
+- if (node->v == &node->sorted)
+- tr_free (node->sorted.val.l.vals);
++ //TR_ASSERT(node != NULL);
++ if (node->sorted != NULL)
++ {
++ tr_free(node->sorted->val.l.vals);
++ tr_free(node->sorted);
++ }
+ }
+
+ /**
+--- a/libtransmission/variant.c 2020-05-18 10:21:49.000000000 -0500
++++ b/libtransmission/variant.c 2020-05-18 10:24:34.673648865 -0500
+@@ -853,7 +853,7 @@
+ tr_variantInitDict (node->sorted, n);
+ for (i=0; i<n; ++i)
+ node->sorted->val.l.vals[i] = *tmp[i].val;
+- node->sorted.val.l.count = n;
++ node->sorted->val.l.count = n;
+
+ tr_free (tmp);
+
+
diff --git a/gnu/packages/patches/websocketpp-fix-for-boost-1.70.patch b/gnu/packages/patches/websocketpp-fix-for-boost-1.70.patch
deleted file mode 100644
index ece414a1cb..0000000000
--- a/gnu/packages/patches/websocketpp-fix-for-boost-1.70.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-This patch for Boost >= 1.70 was made by merging two patches that
-are in the 'develop' branch (c769c92 and f810ca2).
-
-diff -u b/websocketpp/transport/asio/connection.hpp b/websocketpp/transport/asio/connection.hpp
---- b/websocketpp/transport/asio/connection.hpp
-+++ b/websocketpp/transport/asio/connection.hpp
-@@ -311,9 +311,10 @@
- * needed.
- */
- timer_ptr set_timer(long duration, timer_handler callback) {
-- timer_ptr new_timer = lib::make_shared<lib::asio::steady_timer>(
-- lib::ref(*m_io_service),
-- lib::asio::milliseconds(duration)
-+ timer_ptr new_timer(
-+ new lib::asio::steady_timer(
-+ *m_io_service,
-+ lib::asio::milliseconds(duration))
- );
-
- if (config::enable_multithreading) {
-@@ -461,8 +462,7 @@
- m_io_service = io_service;
-
- if (config::enable_multithreading) {
-- m_strand = lib::make_shared<lib::asio::io_service::strand>(
-- lib::ref(*io_service));
-+ m_strand.reset(new lib::asio::io_service::strand(*io_service));
- }
-
- lib::error_code ec = socket_con_type::init_asio(io_service, m_strand,
-diff -u b/websocketpp/transport/asio/endpoint.hpp b/websocketpp/transport/asio/endpoint.hpp
---- b/websocketpp/transport/asio/endpoint.hpp
-+++ b/websocketpp/transport/asio/endpoint.hpp
-@@ -195,8 +195,7 @@
-
- m_io_service = ptr;
- m_external_io_service = true;
-- m_acceptor = lib::make_shared<lib::asio::ip::tcp::acceptor>(
-- lib::ref(*m_io_service));
-+ m_acceptor.reset(new lib::asio::ip::tcp::acceptor(*m_io_service));
-
- m_state = READY;
- ec = lib::error_code();
-@@ -688,9 +687,7 @@
- * @since 0.3.0
- */
- void start_perpetual() {
-- m_work = lib::make_shared<lib::asio::io_service::work>(
-- lib::ref(*m_io_service)
-- );
-+ m_work.reset(new lib::asio::io_service::work(*m_io_service));
- }
-
- /// Clears the endpoint's perpetual flag, allowing it to exit when empty
-@@ -854,8 +851,7 @@
-
- // Create a resolver
- if (!m_resolver) {
-- m_resolver = lib::make_shared<lib::asio::ip::tcp::resolver>(
-- lib::ref(*m_io_service));
-+ m_resolver.reset(new lib::asio::ip::tcp::resolver(*m_io_service));
- }
-
- tcon->set_uri(u);
-unchanged:
---- a/websocketpp/transport/asio/security/none.hpp
-+++ b/websocketpp/transport/asio/security/none.hpp
-@@ -168,8 +168,7 @@ protected:
- return socket::make_error_code(socket::error::invalid_state);
- }
-
-- m_socket = lib::make_shared<lib::asio::ip::tcp::socket>(
-- lib::ref(*service));
-+ m_socket.reset(new lib::asio::ip::tcp::socket(*service));
-
- if (m_socket_init_handler) {
- m_socket_init_handler(m_hdl, *m_socket);
-unchanged:
---- a/websocketpp/transport/asio/security/tls.hpp
-+++ b/websocketpp/transport/asio/security/tls.hpp
-@@ -193,8 +193,7 @@ protected:
- if (!m_context) {
- return socket::make_error_code(socket::error::invalid_tls_context);
- }
-- m_socket = lib::make_shared<socket_type>(
-- _WEBSOCKETPP_REF(*service),lib::ref(*m_context));
-+ m_socket.reset(new socket_type(*service, *m_context));
-
- if (m_socket_init_handler) {
- m_socket_init_handler(m_hdl, get_socket());
-only in patch2:
-unchanged:
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -202,7 +202,7 @@ if (BUILD_TESTS OR BUILD_EXAMPLES)
- endif ()
-
- if (NOT Boost_USE_STATIC_LIBS)
-- add_definitions (/DBOOST_TEST_DYN_LINK)
-+ add_definitions (-DBOOST_TEST_DYN_LINK)
- endif ()
-
- set (Boost_FIND_REQUIRED TRUE)
diff --git a/gnu/packages/patches/websocketpp-fix-for-cmake-3.15.patch b/gnu/packages/patches/websocketpp-fix-for-cmake-3.15.patch
new file mode 100644
index 0000000000..ea759d022b
--- /dev/null
+++ b/gnu/packages/patches/websocketpp-fix-for-cmake-3.15.patch
@@ -0,0 +1,17 @@
+From: Tobias Geerinckx-Rice <me@tobias.gr>
+Date: Fri, 05 Jun 2020 18:37:51 +0200
+Subject: [PATCH] gnu: websocketpp: Fix build with CMake >= 3.15.
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 57ed01e78..43c772d78 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -215,7 +215,7 @@
+ set (Boost_USE_MULTITHREADED TRUE)
+ set (Boost_ADDITIONAL_VERSIONS "1.39.0" "1.40.0" "1.41.0" "1.42.0" "1.43.0" "1.44.0" "1.46.1") # todo: someone who knows better spesify these!
+
+- find_package (Boost 1.39.0 COMPONENTS "${WEBSOCKETPP_BOOST_LIBS}")
++ find_package (Boost 1.39.0 COMPONENTS ${WEBSOCKETPP_BOOST_LIBS})
+
+ if (Boost_FOUND)
+ # Boost is a project wide global dependency.