aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/patches
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r--gnu/packages/patches/dezyne-add-missing-shebangs.patch61
-rw-r--r--gnu/packages/patches/directfb-davinci-glibc-228-compat.patch41
-rw-r--r--gnu/packages/patches/dyninst-fix-glibc-compatibility.patch33
-rw-r--r--gnu/packages/patches/fuzzylite-relative-path-in-tests.patch15
-rw-r--r--gnu/packages/patches/fuzzylite-soften-float-equality.patch30
-rw-r--r--gnu/packages/patches/fuzzylite-use-catch2.patch184
-rw-r--r--gnu/packages/patches/git-header-cmd.patch287
-rw-r--r--gnu/packages/patches/glibc-2.33-riscv64-miscompilation.patch57
-rw-r--r--gnu/packages/patches/guile-fibers-libevent-32-bit.patch18
-rw-r--r--gnu/packages/patches/ibus-anthy-fix-tests.patch49
-rw-r--r--gnu/packages/patches/igt-gpu-tools-Use-libproc2.patch505
-rw-r--r--gnu/packages/patches/jbr-17-xcursor-no-dynamic.patch72
-rw-r--r--gnu/packages/patches/libtree-fix-check-non-x86.patch50
-rw-r--r--gnu/packages/patches/lightdm-vnc-ipv6.patch48
-rw-r--r--gnu/packages/patches/llvm-roc-4.0.0-remove-isystem-usr-include.patch29
-rw-r--r--gnu/packages/patches/llvm-roc-5.0.0-linkdl.patch15
-rw-r--r--gnu/packages/patches/maven-generate-component-xml.patch3
-rw-r--r--gnu/packages/patches/maven-generate-javax-inject-named.patch3
-rw-r--r--gnu/packages/patches/nix-dont-build-html-doc.diff33
-rw-r--r--gnu/packages/patches/openrgb-unbundle-hueplusplus.patch10
-rw-r--r--gnu/packages/patches/python-keras-integration-test.patch19
-rw-r--r--gnu/packages/patches/python-vega-datasets-remove-la-riots-code.patch89
-rw-r--r--gnu/packages/patches/quodlibet-fix-invalid-glob.patch89
-rw-r--r--gnu/packages/patches/quodlibet-fix-mtime-tests.patch39
-rw-r--r--gnu/packages/patches/rocclr-5.6.0-enable-gfx800.patch16
-rw-r--r--gnu/packages/patches/rocm-bandwidth-test-5.5.0-fix-includes.patch79
-rw-r--r--gnu/packages/patches/rocm-comgr-3.1.0-dependencies.patch33
-rw-r--r--gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch26
-rw-r--r--gnu/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch70
-rw-r--r--gnu/packages/patches/ruby-nokogiri.patch29
-rw-r--r--gnu/packages/patches/vcmi-disable-privacy-breach.patch21
31 files changed, 1528 insertions, 525 deletions
diff --git a/gnu/packages/patches/dezyne-add-missing-shebangs.patch b/gnu/packages/patches/dezyne-add-missing-shebangs.patch
deleted file mode 100644
index bf88e95c8a..0000000000
--- a/gnu/packages/patches/dezyne-add-missing-shebangs.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-Upstream status: Taken from upstream development.
-
-From aace425e41247c1dd6b16eb7eabce50be7310d15 Mon Sep 17 00:00:00 2001
-From: Janneke Nieuwenhuizen <janneke@gnu.org>
-Date: Mon, 24 Apr 2023 16:58:32 +0200
-Subject: [PATCH] DRAFT test: Add missing shebangs to run scripts.
-
-This fixes `make check' on current ci.guix.gnu.org.
-
-* test/all/parse_import_order/run,
-test/all/parse_locations/run,
-test/all/parse_peg_locations/run: Add #! /bin/sh.
----
- test/all/parse_import_order/run | 3 ++-
- test/all/parse_locations/run | 3 ++-
- test/all/parse_peg_locations/run | 3 ++-
- 3 files changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/test/all/parse_import_order/run b/test/all/parse_import_order/run
-index 6e231de4f9..c383e4f223 100755
---- a/test/all/parse_import_order/run
-+++ b/test/all/parse_import_order/run
-@@ -1,6 +1,7 @@
-+#! /bin/sh
- # Dezyne --- Dezyne command line tools
- #
--# Copyright © 2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
-+# Copyright © 2022, 2023 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
- #
- # This file is part of Dezyne.
- #
-diff --git a/test/all/parse_locations/run b/test/all/parse_locations/run
-index 0b092b26dd..6c48ee1392 100755
---- a/test/all/parse_locations/run
-+++ b/test/all/parse_locations/run
-@@ -1,7 +1,8 @@
-+#! /bin/sh
- # Dezyne --- Dezyne command line tools
- #
- # Copyright © 2021 Paul Hoogendijk <paul@dezyne.org>
--# Copyright © 2020, 2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
-+# Copyright © 2020, 2021, 2023 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
- #
- # This file is part of Dezyne.
- #
-diff --git a/test/all/parse_peg_locations/run b/test/all/parse_peg_locations/run
-index 5b5ced0bb4..5206a23db6 100755
---- a/test/all/parse_peg_locations/run
-+++ b/test/all/parse_peg_locations/run
-@@ -1,6 +1,7 @@
-+#! /bin/sh
- # Dezyne --- Dezyne command line tools
- #
--# Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
-+# Copyright © 2020, 2023 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
- #
- # This file is part of Dezyne.
- #
---
-2.39.2
-
diff --git a/gnu/packages/patches/directfb-davinci-glibc-228-compat.patch b/gnu/packages/patches/directfb-davinci-glibc-228-compat.patch
new file mode 100644
index 0000000000..eeee337f57
--- /dev/null
+++ b/gnu/packages/patches/directfb-davinci-glibc-228-compat.patch
@@ -0,0 +1,41 @@
+This patch is from upstream
+
+From 3a236241bbec3f15b012b6f0dbe94353d8094557 Mon Sep 17 00:00:00 2001
+From: Andrew Childs <lorne@cons.org.nz>
+Date: Sat, 2 May 2020 12:36:46 +0900
+Subject: [PATCH] davinci: fix build with glibc >= 2.28
+
+From glibc 2.28 release notes:
+
+* The macros 'major', 'minor', and 'makedev' are now only available from
+ the header <sys/sysmacros.h>; not from <sys/types.h> or various other
+ headers that happen to include <sys/types.h>. These macros are rarely
+ used, not part of POSIX nor XSI, and their names frequently collide with
+ user code; see https://sourceware.org/bugzilla/show_bug.cgi?id=19239 for
+ further explanation.
+
+ <sys/sysmacros.h> is a GNU extension. Portable programs that require
+ these macros should first include <sys/types.h>, and then include
+ <sys/sysmacros.h> if __GNU_LIBRARY__ is defined.
+
+https://lists.gnu.org/archive/html/info-gnu/2018-08/msg00000.html
+---
+ gfxdrivers/davinci/davinci_c64x.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/gfxdrivers/davinci/davinci_c64x.c b/gfxdrivers/davinci/davinci_c64x.c
+index 431ffdd99..351250a03 100644
+--- a/gfxdrivers/davinci/davinci_c64x.c
++++ b/gfxdrivers/davinci/davinci_c64x.c
+@@ -39,6 +39,11 @@
+ #include <sys/types.h>
+ #include <unistd.h>
+
++// Required for `makedev` in glibc >= 2.28
++#if defined(__GNU_LIBRARY__)
++#include <sys/sysmacros.h>
++#endif
++
+ #include <directfb_util.h>
+
+ #include <direct/clock.h>
diff --git a/gnu/packages/patches/dyninst-fix-glibc-compatibility.patch b/gnu/packages/patches/dyninst-fix-glibc-compatibility.patch
new file mode 100644
index 0000000000..cd018da6cc
--- /dev/null
+++ b/gnu/packages/patches/dyninst-fix-glibc-compatibility.patch
@@ -0,0 +1,33 @@
+From f233c46ac7b415104d04e4bb74bd7a0fcf24a333 Mon Sep 17 00:00:00 2001
+From: Olivier Dion <odion@efficios.com>
+Date: Thu, 15 Jun 2023 12:02:08 -0400
+Subject: [PATCH] Fix compatibility with glibc 2.35
+
+Something has change with the visibility of the _r_debug structure in
+glibc 2.35. See this issue
+<https://github.com/dyninst/dyninst/issues/1282>.
+
+This patch is essentially the upstream fix
+<https://github.com/dyninst/dyninst/commit/273803a4c643ed3506f9a69c6ec71d5ab337489c>
+backported.
+
+Signed-off-by: Olivier Dion <odion@efficios.com>
+---
+ dyninstAPI_RT/src/RTlinux.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/dyninstAPI_RT/src/RTlinux.c b/dyninstAPI_RT/src/RTlinux.c
+index fc231d0a4..2f17ff677 100644
+--- a/dyninstAPI_RT/src/RTlinux.c
++++ b/dyninstAPI_RT/src/RTlinux.c
+@@ -406,7 +406,6 @@ void dyninstTrapHandler(int sig, siginfo_t *sg, ucontext_t *context)
+ #if defined(cap_binary_rewriter)
+
+ extern struct r_debug _r_debug;
+-DLLEXPORT struct r_debug _r_debug __attribute__ ((weak));
+
+ /* Verify that the r_debug variable is visible */
+ void r_debugCheck() { assert(_r_debug.r_map); }
+--
+2.40.1
+
diff --git a/gnu/packages/patches/fuzzylite-relative-path-in-tests.patch b/gnu/packages/patches/fuzzylite-relative-path-in-tests.patch
new file mode 100644
index 0000000000..1a03238246
--- /dev/null
+++ b/gnu/packages/patches/fuzzylite-relative-path-in-tests.patch
@@ -0,0 +1,15 @@
+Workaround https://github.com/fuzzylite/fuzzylite/issues/85
+
+diff --git a/fuzzylite/test/BenchmarkTest.cpp b/fuzzylite/test/BenchmarkTest.cpp
+index f868ec29..464d394d 100644
+--- a/fuzzylite/test/BenchmarkTest.cpp
++++ b/fuzzylite/test/BenchmarkTest.cpp
+@@ -30,7 +30,7 @@ namespace fl {
+ }
+
+ TEST_CASE("Benchmarks from FLD files", "[benchmark][fld]") {
+- std::string path = "../../examples/";
++ std::string path = "../examples/";
+ typedef std::pair<std::string, int > Example;
+ std::vector<Example> examples;
+ examples.push_back(Example("mamdani/AllTerms", int(1e4)));
diff --git a/gnu/packages/patches/fuzzylite-soften-float-equality.patch b/gnu/packages/patches/fuzzylite-soften-float-equality.patch
new file mode 100644
index 0000000000..47403605dd
--- /dev/null
+++ b/gnu/packages/patches/fuzzylite-soften-float-equality.patch
@@ -0,0 +1,30 @@
+Origin: https://salsa.debian.org/debian/fuzzylite/-/blob/debian/6.0+dfsg-6/debian/patches/when-testing-large-float-numbers-for-equ.patch
+From: Johannes 'josch' Schauer <josch@debian.org>
+Date: Sun, 3 Feb 2019 10:33:22 +0100
+X-Dgit-Generated: 6.0+dfsg-2 80960ae38da9db032dfbfec6405398653e8205ff
+Subject: when testing large float numbers for equality, use a larger epsilon
+
+
+---
+
+--- fuzzylite-6.0+dfsg.orig/fuzzylite/test/BenchmarkTest.cpp
++++ fuzzylite-6.0+dfsg/fuzzylite/test/BenchmarkTest.cpp
+@@ -96,7 +96,17 @@ namespace fl {
+ CHECK(Op::isEq(1.0, Benchmark::convert(1000.0, Benchmark::MilliSeconds, Benchmark::Seconds)));
+ FL_LOG(Benchmark::convert(1000.0, Benchmark::MilliSeconds, Benchmark::Seconds));
+
+- CHECK(Op::isEq(35e9, Benchmark::convert(35, Benchmark::Seconds, Benchmark::NanoSeconds)));
++ scalar eps =
++#ifndef __i386__
++ fuzzylite::macheps();
++#else
++ // on i386, due to the 80bit x87 register, double floating point
++ // numbers are handled differently and thus the difference between
++ // 35e9 and the result of Benchmark::convert() will be 2.179e-6,
++ // which is greater than the default epsilon of 1e-6.
++ 1e-5;
++#endif
++ CHECK(Op::isEq(35e9, Benchmark::convert(35, Benchmark::Seconds, Benchmark::NanoSeconds), eps));
+ CHECK(Op::isEq(35, Benchmark::convert(35e9, Benchmark::NanoSeconds, Benchmark::Seconds)));
+ }
+
diff --git a/gnu/packages/patches/fuzzylite-use-catch2.patch b/gnu/packages/patches/fuzzylite-use-catch2.patch
new file mode 100644
index 0000000000..e4aa13a98b
--- /dev/null
+++ b/gnu/packages/patches/fuzzylite-use-catch2.patch
@@ -0,0 +1,184 @@
+Origin: https://salsa.debian.org/debian/fuzzylite/-/blob/debian/6.0+dfsg-6/debian/patches/fix-tests2.patch
+From: Ferdinand Thiessen <rpm@fthiessen.de>
+Date: Mon, 31 Jan 2022 16:06:19 GMT
+Subject: Replace Catch with Catch2 and require C++11 for tests
+Origin: vendor, https://github.com/fuzzylite/fuzzylite/issues/94
+Bug-Debian: http://bugs.debian.org/1017155
+
+--- a/fuzzylite/CMakeLists.txt
++++ b/fuzzylite/CMakeLists.txt
+@@ -194,7 +194,9 @@ if(FL_BUILD_BINARY)
+ endif(FL_BUILD_BINARY)
+
+ if(FL_BUILD_TESTS)
++ find_package(Catch2)
+ add_executable(fl-test ${fl-headers} ${fl-tests})
++ target_link_libraries(fl-test Catch2::Catch2)
+ set_target_properties(fl-test PROPERTIES OUTPUT_NAME fuzzylite-tests)
+ set_target_properties(fl-test PROPERTIES OUTPUT_NAME fuzzylite-tests IMPORT_PREFIX tmp-) #To prevent LNK1149 in Windows
+ set_target_properties(fl-test PROPERTIES DEBUG_POSTFIX -debug)
+--- a/fuzzylite/test/activation/ThresholdTest.cpp
++++ b/fuzzylite/test/activation/ThresholdTest.cpp
+@@ -14,7 +14,7 @@
+ fuzzylite is a registered trademark of FuzzyLite Limited.
+ */
+
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+
+ namespace fl {
+--- a/fuzzylite/test/BenchmarkTest.cpp
++++ b/fuzzylite/test/BenchmarkTest.cpp
+@@ -16,7 +16,7 @@
+
+ #include "fl/Benchmark.h"
+
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+
+ #include <vector>
+--- a/fuzzylite/test/hedge/HedgeFunctionTest.cpp
++++ b/fuzzylite/test/hedge/HedgeFunctionTest.cpp
+@@ -14,7 +14,7 @@
+ fuzzylite is a registered trademark of FuzzyLite Limited.
+ */
+
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+
+ namespace fl {
+--- a/fuzzylite/test/imex/FldExporterTest.cpp
++++ b/fuzzylite/test/imex/FldExporterTest.cpp
+@@ -14,7 +14,7 @@
+ fuzzylite is a registered trademark of FuzzyLite Limited.
+ */
+
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+
+ namespace fl {
+--- a/fuzzylite/test/imex/FllImporterTest.cpp
++++ b/fuzzylite/test/imex/FllImporterTest.cpp
+@@ -14,7 +14,7 @@
+ fuzzylite is a registered trademark of FuzzyLite Limited.
+ */
+
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+
+ namespace fl {
+--- a/fuzzylite/test/imex/RScriptExporterTest.cpp
++++ b/fuzzylite/test/imex/RScriptExporterTest.cpp
+@@ -14,7 +14,7 @@
+ fuzzylite is a registered trademark of FuzzyLite Limited.
+ */
+
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+ #include <fstream>
+
+--- a/fuzzylite/test/MainTest.cpp
++++ b/fuzzylite/test/MainTest.cpp
+@@ -16,7 +16,7 @@
+
+ #define CATCH_CONFIG_RUNNER
+
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+
+ #include "fl/Headers.h"
+
+--- a/fuzzylite/test/norm/NormFunctionTest.cpp
++++ b/fuzzylite/test/norm/NormFunctionTest.cpp
+@@ -14,7 +14,7 @@
+ fuzzylite is a registered trademark of FuzzyLite Limited.
+ */
+
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+
+ namespace fl {
+--- a/fuzzylite/test/QuickTest.cpp
++++ b/fuzzylite/test/QuickTest.cpp
+@@ -14,7 +14,7 @@
+ fuzzylite is a registered trademark of FuzzyLite Limited.
+ */
+
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+
+ namespace fl {
+--- a/fuzzylite/test/term/AggregatedTest.cpp
++++ b/fuzzylite/test/term/AggregatedTest.cpp
+@@ -14,7 +14,7 @@
+ fuzzylite is a registered trademark of FuzzyLite Limited.
+ */
+
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+
+ namespace fl {
+--- a/fuzzylite/test/term/DiscreteTest.cpp
++++ b/fuzzylite/test/term/DiscreteTest.cpp
+@@ -14,7 +14,7 @@
+ fuzzylite is a registered trademark of FuzzyLite Limited.
+ */
+
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+
+ namespace fl {
+--- a/fuzzylite/test/term/FunctionTest.cpp
++++ b/fuzzylite/test/term/FunctionTest.cpp
+@@ -14,7 +14,7 @@
+ fuzzylite is a registered trademark of FuzzyLite Limited.
+ */
+
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+
+ namespace fl {
+--- a/fuzzylite/test/term/TrapezoidTest.cpp
++++ b/fuzzylite/test/term/TrapezoidTest.cpp
+@@ -14,7 +14,7 @@
+ fuzzylite is a registered trademark of FuzzyLite Limited.
+ */
+
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+
+ namespace fl {
+--- a/fuzzylite/test/term/TriangleTest.cpp
++++ b/fuzzylite/test/term/TriangleTest.cpp
+@@ -14,7 +14,7 @@
+ fuzzylite is a registered trademark of FuzzyLite Limited.
+ */
+
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+
+ namespace fl {
+--- a/fuzzylite/test/variable/VariableTest.cpp
++++ b/fuzzylite/test/variable/VariableTest.cpp
+@@ -14,7 +14,7 @@
+ fuzzylite is a registered trademark of FuzzyLite Limited.
+ */
+
+-#include "test/catch.hpp"
++#include "catch2/catch.hpp"
+ #include "fl/Headers.h"
+
+ #include <algorithm> // std::random_shuffle
diff --git a/gnu/packages/patches/git-header-cmd.patch b/gnu/packages/patches/git-header-cmd.patch
deleted file mode 100644
index a8964ab174..0000000000
--- a/gnu/packages/patches/git-header-cmd.patch
+++ /dev/null
@@ -1,287 +0,0 @@
-Add a '--header-cmd' to git send-email.
-
-Upstream status can be tracked at:
-https://lore.kernel.org/git/20230423122744.4865-1-maxim.cournoyer@gmail.com/T/#t
-
-diff --git a/Documentation/config/sendemail.txt b/Documentation/config/sendemail.txt
-index 51da7088a8..92a9ebe98c 100644
---- a/Documentation/config/sendemail.txt
-+++ b/Documentation/config/sendemail.txt
-@@ -61,6 +61,7 @@ sendemail.ccCmd::
- sendemail.chainReplyTo::
- sendemail.envelopeSender::
- sendemail.from::
-+sendemail.headerCmd::
- sendemail.signedoffbycc::
- sendemail.smtpPass::
- sendemail.suppresscc::
-diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
-index b0f438ec99..4d2ae061f9 100644
---- a/Documentation/git-send-email.txt
-+++ b/Documentation/git-send-email.txt
-@@ -320,6 +320,17 @@ Automating
- Output of this command must be single email address per line.
- Default is the value of `sendemail.ccCmd` configuration value.
-
-+--header-cmd=<command>::
-+ Specify a command that is executed once per outgoing message
-+ and output RFC 2822 style header lines to be inserted into
-+ them. When the `sendemail.headerCmd` configuration variable is
-+ set, its value is always used. When --header-cmd is provided
-+ at the command line, its value takes precedence over the
-+ `sendemail.headerCmd` configuration variable.
-+
-+--no-header-cmd::
-+ Disable any header command in use.
-+
- --[no-]chain-reply-to::
- If this is set, each email will be sent as a reply to the previous
- email sent. If disabled with "--no-chain-reply-to", all emails after
-diff --git a/git-send-email.perl b/git-send-email.perl
-index 66c9171109..22a64e608f 100755
---- a/git-send-email.perl
-+++ b/git-send-email.perl
-@@ -87,8 +87,10 @@ sub usage {
-
- Automating:
- --identity <str> * Use the sendemail.<id> options.
-- --to-cmd <str> * Email To: via `<str> \$patch_path`
-- --cc-cmd <str> * Email Cc: via `<str> \$patch_path`
-+ --to-cmd <str> * Email To: via `<str> \$patch_path`.
-+ --cc-cmd <str> * Email Cc: via `<str> \$patch_path`.
-+ --header-cmd <str> * Add headers via `<str> \$patch_path`.
-+ --no-header-cmd * Disable any header command in use.
- --suppress-cc <str> * author, self, sob, cc, cccmd, body, bodycc, misc-by, all.
- --[no-]cc-cover * Email Cc: addresses in the cover letter.
- --[no-]to-cover * Email To: addresses in the cover letter.
-@@ -202,7 +204,7 @@ sub format_2822_time {
- $author,$sender,$smtp_authpass,$annotate,$compose,$time);
- # Things we either get from config, *or* are overridden on the
- # command-line.
--my ($no_cc, $no_to, $no_bcc, $no_identity);
-+my ($no_cc, $no_to, $no_bcc, $no_identity, $no_header_cmd);
- my (@config_to, @getopt_to);
- my (@config_cc, @getopt_cc);
- my (@config_bcc, @getopt_bcc);
-@@ -269,7 +271,7 @@ sub do_edit {
- # Variables with corresponding config settings
- my ($suppress_from, $signed_off_by_cc);
- my ($cover_cc, $cover_to);
--my ($to_cmd, $cc_cmd);
-+my ($to_cmd, $cc_cmd, $header_cmd);
- my ($smtp_server, $smtp_server_port, @smtp_server_options);
- my ($smtp_authuser, $smtp_encryption, $smtp_ssl_cert_path);
- my ($batch_size, $relogin_delay);
-@@ -318,6 +320,7 @@ sub do_edit {
- "tocmd" => \$to_cmd,
- "cc" => \@config_cc,
- "cccmd" => \$cc_cmd,
-+ "headercmd" => \$header_cmd,
- "aliasfiletype" => \$aliasfiletype,
- "bcc" => \@config_bcc,
- "suppresscc" => \@suppress_cc,
-@@ -519,6 +522,8 @@ sub config_regexp {
- "compose" => \$compose,
- "quiet" => \$quiet,
- "cc-cmd=s" => \$cc_cmd,
-+ "header-cmd=s" => \$header_cmd,
-+ "no-header-cmd" => \$no_header_cmd,
- "suppress-from!" => \$suppress_from,
- "no-suppress-from" => sub {$suppress_from = 0},
- "suppress-cc=s" => \@suppress_cc,
-@@ -1780,16 +1785,16 @@ sub process_file {
- $subject = $initial_subject;
- $message = "";
- $message_num++;
-- # First unfold multiline header fields
-+ # Retrieve and unfold header fields.
-+ my @header_lines = ();
- while(<$fh>) {
- last if /^\s*$/;
-- if (/^\s+\S/ and @header) {
-- chomp($header[$#header]);
-- s/^\s+/ /;
-- $header[$#header] .= $_;
-- } else {
-- push(@header, $_);
-- }
-+ push(@header_lines, $_);
-+ }
-+ @header = unfold_headers(@header_lines);
-+ # Add computed headers, if applicable.
-+ unless ($no_header_cmd || ! $header_cmd) {
-+ push @header, invoke_header_cmd($header_cmd, $t);
- }
- # Now parse the header
- foreach(@header) {
-@@ -2021,15 +2026,63 @@ sub process_file {
- }
- }
-
-+# Execute a command and return its output lines as an array. Blank
-+# lines which do not appear at the end of the output are reported as
-+# errors.
-+sub execute_cmd {
-+ my ($prefix, $cmd, $file) = @_;
-+ my @lines = ();
-+ my $seen_blank_line = 0;
-+ open my $fh, "-|", "$cmd \Q$file\E"
-+ or die sprintf(__("(%s) Could not execute '%s'"), $prefix, $cmd);
-+ while (my $line = <$fh>) {
-+ die sprintf(__("(%s) Malformed output from '%s'"), $prefix, $cmd)
-+ if $seen_blank_line;
-+ if ($line =~ /^$/) {
-+ $seen_blank_line = $line =~ /^$/;
-+ next;
-+ }
-+ push @lines, $line;
-+ }
-+ close $fh
-+ or die sprintf(__("(%s) failed to close pipe to '%s'"), $prefix, $cmd);
-+ return @lines;
-+}
-+
-+# Process headers lines, unfolding multiline headers as defined by RFC
-+# 2822.
-+sub unfold_headers {
-+ my @headers;
-+ foreach(@_) {
-+ last if /^\s*$/;
-+ if (/^\s+\S/ and @headers) {
-+ chomp($headers[$#headers]);
-+ s/^\s+/ /;
-+ $headers[$#headers] .= $_;
-+ } else {
-+ push(@headers, $_);
-+ }
-+ }
-+ return @headers;
-+}
-+
-+# Invoke the provided CMD with FILE as an argument, which should
-+# output RFC 2822 email headers. Fold multiline headers and return the
-+# headers as an array.
-+sub invoke_header_cmd {
-+ my ($cmd, $file) = @_;
-+ my @lines = execute_cmd("header-cmd", $header_cmd, $file);
-+ return unfold_headers(@lines);
-+}
-+
- # Execute a command (e.g. $to_cmd) to get a list of email addresses
- # and return a results array
- sub recipients_cmd {
- my ($prefix, $what, $cmd, $file) = @_;
--
-+ my @lines = ();
- my @addresses = ();
-- open my $fh, "-|", "$cmd \Q$file\E"
-- or die sprintf(__("(%s) Could not execute '%s'"), $prefix, $cmd);
-- while (my $address = <$fh>) {
-+ @lines = execute_cmd($prefix, $cmd, $file);
-+ for my $address (@lines) {
- $address =~ s/^\s*//g;
- $address =~ s/\s*$//g;
- $address = sanitize_address($address);
-@@ -2038,8 +2091,6 @@ sub recipients_cmd {
- printf(__("(%s) Adding %s: %s from: '%s'\n"),
- $prefix, $what, $address, $cmd) unless $quiet;
- }
-- close $fh
-- or die sprintf(__("(%s) failed to close pipe to '%s'"), $prefix, $cmd);
- return @addresses;
- }
-
-diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh
-index 6520346246..6519eea1ed 100755
---- a/t/t9001-send-email.sh
-+++ b/t/t9001-send-email.sh
-@@ -374,13 +374,16 @@ test_expect_success $PREREQ,!AUTOIDENT 'broken implicit ident aborts send-email'
- )
- '
-
--test_expect_success $PREREQ 'setup tocmd and cccmd scripts' '
-+test_expect_success $PREREQ 'setup cmd scripts' '
- write_script tocmd-sed <<-\EOF &&
- sed -n -e "s/^tocmd--//p" "$1"
- EOF
-- write_script cccmd-sed <<-\EOF
-+ write_script cccmd-sed <<-\EOF &&
- sed -n -e "s/^cccmd--//p" "$1"
- EOF
-+ write_script headercmd-sed <<-\EOF
-+ sed -n -e "s/^headercmd--//p" "$1"
-+ EOF
- '
-
- test_expect_success $PREREQ 'tocmd works' '
-@@ -410,6 +413,70 @@ test_expect_success $PREREQ 'cccmd works' '
- grep "^ cccmd@example.com" msgtxt1
- '
-
-+test_expect_success $PREREQ 'headercmd works' '
-+ clean_fake_sendmail &&
-+ cp $patches headercmd.patch &&
-+ echo "headercmd--X-Debbugs-CC: dummy@example.com" >>headercmd.patch &&
-+ git send-email \
-+ --from="Example <nobody@example.com>" \
-+ --to=nobody@example.com \
-+ --header-cmd=./headercmd-sed \
-+ --smtp-server="$(pwd)/fake.sendmail" \
-+ headercmd.patch \
-+ &&
-+ grep "^X-Debbugs-CC: dummy@example.com" msgtxt1
-+'
-+
-+test_expect_success $PREREQ '--no-header-cmd works' '
-+ clean_fake_sendmail &&
-+ cp $patches headercmd.patch &&
-+ echo "headercmd--X-Debbugs-CC: dummy@example.com" >>headercmd.patch &&
-+ git send-email \
-+ --from="Example <nobody@example.com>" \
-+ --to=nobody@example.com \
-+ --header-cmd=./headercmd-sed \
-+ --no-header-cmd \
-+ --smtp-server="$(pwd)/fake.sendmail" \
-+ headercmd.patch \
-+ &&
-+ ! grep "^X-Debbugs-CC: dummy@example.com" msgtxt1
-+'
-+
-+test_expect_success $PREREQ 'multiline fields are correctly unfolded' '
-+ clean_fake_sendmail &&
-+ cp $patches headercmd.patch &&
-+ write_script headercmd-multiline <<-\EOF &&
-+ echo "X-Debbugs-CC: someone@example.com
-+FoldedField: This is a tale
-+ best told using
-+ multiple lines."
-+ EOF
-+ git send-email \
-+ --from="Example <nobody@example.com>" \
-+ --to=nobody@example.com \
-+ --header-cmd=./headercmd-multiline \
-+ --smtp-server="$(pwd)/fake.sendmail" \
-+ headercmd.patch &&
-+ grep "^FoldedField: This is a tale best told using multiple lines.$" msgtxt1
-+'
-+
-+# Blank lines in the middle of the output of a command are invalid.
-+test_expect_success $PREREQ 'malform output reported on blank lines in command output' '
-+ clean_fake_sendmail &&
-+ cp $patches headercmd.patch &&
-+ write_script headercmd-malformed-output <<-\EOF &&
-+ echo "X-Debbugs-CC: someone@example.com
-+
-+SomeOtherField: someone-else@example.com"
-+ EOF
-+ ! git send-email \
-+ --from="Example <nobody@example.com>" \
-+ --to=nobody@example.com \
-+ --header-cmd=./headercmd-malformed-output \
-+ --smtp-server="$(pwd)/fake.sendmail" \
-+ headercmd.patch
-+'
-+
- test_expect_success $PREREQ 'reject long lines' '
- z8=zzzzzzzz &&
- z64=$z8$z8$z8$z8$z8$z8$z8$z8 &&
diff --git a/gnu/packages/patches/glibc-2.33-riscv64-miscompilation.patch b/gnu/packages/patches/glibc-2.33-riscv64-miscompilation.patch
new file mode 100644
index 0000000000..bcf297be94
--- /dev/null
+++ b/gnu/packages/patches/glibc-2.33-riscv64-miscompilation.patch
@@ -0,0 +1,57 @@
+This patch is from upstream glibc after 2.33 and is needed in Guix to
+fix glibc-2.33 compilation for riscv64-linux.
+
+From 044e603b698093cf48f6e6229e0b66acf05227e4 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Fri, 19 Feb 2021 13:29:00 +0100
+Subject: [PATCH] string: Work around GCC PR 98512 in rawmemchr
+
+---
+ string/rawmemchr.c | 26 +++++++++++++++-----------
+ 1 file changed, 15 insertions(+), 11 deletions(-)
+
+diff --git a/string/rawmemchr.c b/string/rawmemchr.c
+index 59bbeeaa42..b8523118e5 100644
+--- a/string/rawmemchr.c
++++ b/string/rawmemchr.c
+@@ -22,24 +22,28 @@
+ # define RAWMEMCHR __rawmemchr
+ #endif
+
++/* The pragmata should be nested inside RAWMEMCHR below, but that
++ triggers GCC PR 98512. */
++DIAG_PUSH_NEEDS_COMMENT;
++#if __GNUC_PREREQ (7, 0)
++/* GCC 8 warns about the size passed to memchr being larger than
++ PTRDIFF_MAX; the use of SIZE_MAX is deliberate here. */
++DIAG_IGNORE_NEEDS_COMMENT (8, "-Wstringop-overflow=");
++#endif
++#if __GNUC_PREREQ (11, 0)
++/* Likewise GCC 11, with a different warning option. */
++DIAG_IGNORE_NEEDS_COMMENT (11, "-Wstringop-overread");
++#endif
++
+ /* Find the first occurrence of C in S. */
+ void *
+ RAWMEMCHR (const void *s, int c)
+ {
+- DIAG_PUSH_NEEDS_COMMENT;
+-#if __GNUC_PREREQ (7, 0)
+- /* GCC 8 warns about the size passed to memchr being larger than
+- PTRDIFF_MAX; the use of SIZE_MAX is deliberate here. */
+- DIAG_IGNORE_NEEDS_COMMENT (8, "-Wstringop-overflow=");
+-#endif
+-#if __GNUC_PREREQ (11, 0)
+- /* Likewise GCC 11, with a different warning option. */
+- DIAG_IGNORE_NEEDS_COMMENT (11, "-Wstringop-overread");
+-#endif
+ if (c != '\0')
+ return memchr (s, c, (size_t)-1);
+- DIAG_POP_NEEDS_COMMENT;
+ return (char *)s + strlen (s);
+ }
+ libc_hidden_def (__rawmemchr)
+ weak_alias (__rawmemchr, rawmemchr)
++
++DIAG_POP_NEEDS_COMMENT;
+--
diff --git a/gnu/packages/patches/guile-fibers-libevent-32-bit.patch b/gnu/packages/patches/guile-fibers-libevent-32-bit.patch
new file mode 100644
index 0000000000..a1cc99fdbe
--- /dev/null
+++ b/gnu/packages/patches/guile-fibers-libevent-32-bit.patch
@@ -0,0 +1,18 @@
+This fixes a bug with the libevent backend on 32-bit platforms:
+
+ https://github.com/wingo/fibers/issues/86
+
+diff --git a/extensions/libevent.c b/extensions/libevent.c
+index 4f44de9..52c9d73 100644
+--- a/extensions/libevent.c
++++ b/extensions/libevent.c
+@@ -215,7 +215,8 @@ run_event_loop (void *p)
+ microsec = -1;
+ else if (data->timeout >= 0)
+ {
+- microsec = data->timeout / time_units_per_microsec;
++ microsec = (time_units_per_microsec == 0)
++ ? 0 : data->timeout / time_units_per_microsec;
+ tv.tv_sec = 0;
+ tv.tv_usec = microsec;
+ }
diff --git a/gnu/packages/patches/ibus-anthy-fix-tests.patch b/gnu/packages/patches/ibus-anthy-fix-tests.patch
new file mode 100644
index 0000000000..6934358980
--- /dev/null
+++ b/gnu/packages/patches/ibus-anthy-fix-tests.patch
@@ -0,0 +1,49 @@
+Submitted upstream: https://github.com/ibus/ibus-anthy/pull/35
+
+diff --git a/tests/test-build.sh b/tests/test-build.sh
+index e83b78f..a0efe32 100755
+--- a/tests/test-build.sh
++++ b/tests/test-build.sh
+@@ -63,26 +63,27 @@ parse_args()
+ done;
+ }
+
++maybe_install_pycotap() {
++ # Check if pycotap is already available.
++ python3 -m pycotap >/dev/null && return 0
++
++ # Red Hat specific hint.
++ if test -f /etc/redhat-release ; then
++ if ! rpm -q --quiet python3-pycotap; then
++ echo "Please install python3-pycotap"
++ exit -1
++ fi
++ fi;
++}
++
+ init_environment()
+ {
+ if test x$FORCE_TEST != x ; then
+ RUN_ARGS="$RUN_ARGS --force";
+ fi;
+- HAS_TAP=0;
+- if test -f /etc/redhat-release ; then
+- rpm -q --quiet python3-pycotap
+- if test $? -ne 0 ; then
+- echo "Not found python3-pycotap";
+- exit -1;
+- fi;
+- HAS_TAP=1;
+- fi;
+- TAP_DIR=`python -m site --user-site`/pycotap;
+- if test $HAS_TAP -ne 1 && \
+- test x"$TAP_DIR" != x && test ! -d "$TAP_DIR" ; then
+- echo "pip install pycotap --user";
+- pip install pycotap --user;
+- fi;
++
++ maybe_install_pycotap
++
+ if test ! -f $BUILDDIR/../data/$ANTHY_SCHEMA_FILE ; then
+ echo "Not found $BUILDDIR/../data/$ANTHY_SCHEMA_FILE";
+ exit -1;
diff --git a/gnu/packages/patches/igt-gpu-tools-Use-libproc2.patch b/gnu/packages/patches/igt-gpu-tools-Use-libproc2.patch
new file mode 100644
index 0000000000..131fea28fc
--- /dev/null
+++ b/gnu/packages/patches/igt-gpu-tools-Use-libproc2.patch
@@ -0,0 +1,505 @@
+diff --git a/lib/igt_aux.c b/lib/igt_aux.c
+index 672d7d4b0..4c24b0928 100644
+--- a/lib/igt_aux.c
++++ b/lib/igt_aux.c
+@@ -52,8 +52,16 @@
+ #include <assert.h>
+ #include <grp.h>
+
+-#include <proc/readproc.h>
+-#include <libudev.h>
++#ifdef HAVE_LIBPROCPS
++# include <proc/readproc.h>
++#else
++# include <libproc2/pids.h>
++#endif
++
++#include <dirent.h>
++#ifdef __linux__
++# include <libudev.h>
++#endif
+
+ #include "drmtest.h"
+ #include "i915_drm.h"
+@@ -1217,6 +1225,7 @@ void igt_unlock_mem(void)
+ */
+ int igt_is_process_running(const char *comm)
+ {
++#if HAVE_LIBPROCPS
+ PROCTAB *proc;
+ proc_t *proc_info;
+ bool found = false;
+@@ -1235,6 +1244,26 @@ int igt_is_process_running(const char *comm)
+
+ closeproc(proc);
+ return found;
++#else
++ enum pids_item Item[] = { PIDS_CMD };
++ struct pids_info *info = NULL;
++ struct pids_stack *stack;
++ char *pid_comm;
++ bool found = false;
++
++ if (procps_pids_new(&info, Item, 1) < 0)
++ return false;
++ while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) {
++ pid_comm = PIDS_VAL(0, str, stack, info);
++ if (!strncasecmp(pid_comm, comm, strlen(pid_comm))) {
++ found = true;
++ break;
++ }
++ }
++
++ procps_pids_unref(&info);
++ return found;
++#endif
+ }
+
+ /**
+@@ -1251,6 +1280,7 @@ int igt_is_process_running(const char *comm)
+ */
+ int igt_terminate_process(int sig, const char *comm)
+ {
++#if HAVE_LIBPROCPS
+ PROCTAB *proc;
+ proc_t *proc_info;
+ int err = 0;
+@@ -1272,6 +1302,28 @@ int igt_terminate_process(int sig, const char *comm)
+
+ closeproc(proc);
+ return err;
++#else
++ enum pids_item Items[] = { PIDS_ID_PID, PIDS_CMD };
++ struct pids_info *info = NULL;
++ struct pids_stack *stack;
++ char *pid_comm;
++ int pid;
++ int err = 0;
++
++ if (procps_pids_new(&info, Items, 2) < 0)
++ return -errno;
++ while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) {
++ pid = PIDS_VAL(0, s_int, stack, info);
++ pid_comm = PIDS_VAL(1, str, stack, info);
++ if (!strncasecmp(pid_comm, comm, strlen(pid_comm))) {
++ if (kill(pid, sig) < 0)
++ err = -errno;
++ break;
++ }
++ }
++ procps_pids_unref(&info);
++ return err;
++#endif
+ }
+
+ struct pinfo {
+@@ -1341,9 +1393,9 @@ igt_show_stat_header(void)
+ }
+
+ static void
+-igt_show_stat(proc_t *info, int *state, const char *fn)
++igt_show_stat(const pid_t tid, const char *cmd, int *state, const char *fn)
+ {
+- struct pinfo p = { .pid = info->tid, .comm = info->cmd, .fn = fn };
++ struct pinfo p = { .pid = tid, .comm = cmd, .fn = fn };
+
+ if (!*state)
+ igt_show_stat_header();
+@@ -1353,7 +1405,7 @@ igt_show_stat(proc_t *info, int *state, const char *fn)
+ }
+
+ static void
+-__igt_lsof_fds(proc_t *proc_info, int *state, char *proc_path, const char *dir)
++__igt_lsof_fds(const pid_t tid, const char *cmd, int *state, char *proc_path, const char *dir)
+ {
+ struct dirent *d;
+ struct stat st;
+@@ -1400,7 +1452,7 @@ again:
+ dirn = dirname(copy_fd_lnk);
+
+ if (!strncmp(dir, dirn, strlen(dir)))
+- igt_show_stat(proc_info, state, fd_lnk);
++ igt_show_stat(tid, cmd, state, fd_lnk);
+
+ free(copy_fd_lnk);
+ free(fd_lnk);
+@@ -1416,13 +1468,13 @@ again:
+ static void
+ __igt_lsof(const char *dir)
+ {
+- PROCTAB *proc;
+- proc_t *proc_info;
+-
+ char path[30];
+ char *name_lnk;
+ struct stat st;
+ int state = 0;
++#ifdef HAVE_LIBPROCPS
++ PROCTAB *proc;
++ proc_t *proc_info;
+
+ proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG);
+ igt_assert(proc != NULL);
+@@ -1443,19 +1495,56 @@ __igt_lsof(const char *dir)
+ name_lnk[read] = '\0';
+
+ if (!strncmp(dir, name_lnk, strlen(dir)))
+- igt_show_stat(proc_info, &state, name_lnk);
++ igt_show_stat(proc_info->tid, proc_info->cmd, &state, name_lnk);
+
+ /* check also fd, seems that lsof(8) doesn't look here */
+ memset(path, 0, sizeof(path));
+ snprintf(path, sizeof(path), "/proc/%d/fd", proc_info->tid);
+
+- __igt_lsof_fds(proc_info, &state, path, dir);
++ __igt_lsof_fds(proc_info->tid, proc_info->cmd, &state, path, dir);
+
+ free(name_lnk);
+ freeproc(proc_info);
+ }
+
+ closeproc(proc);
++#else
++ enum pids_item Items[] = { PIDS_ID_PID, PIDS_CMD };
++ struct pids_info *info = NULL;
++ struct pids_stack *stack;
++
++ if (procps_pids_new(&info, Items, 2) < 0)
++ return;
++ while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) {
++ ssize_t read;
++ int tid = PIDS_VAL(0, s_int, stack, info);
++ char *pid_comm = PIDS_VAL(1, str, stack, info);
++
++ /* check current working directory */
++ memset(path, 0, sizeof(path));
++ snprintf(path, sizeof(path), "/proc/%d/cwd", tid);
++
++ if (stat(path, &st) == -1)
++ continue;
++
++ name_lnk = malloc(st.st_size + 1);
++
++ igt_assert((read = readlink(path, name_lnk, st.st_size + 1)));
++ name_lnk[read] = '\0';
++
++ if (!strncmp(dir, name_lnk, strlen(dir)))
++ igt_show_stat(tid, pid_comm, &state, name_lnk);
++
++ /* check also fd, seems that lsof(8) doesn't look here */
++ memset(path, 0, sizeof(path));
++ snprintf(path, sizeof(path), "/proc/%d/fd", tid);
++
++ __igt_lsof_fds(tid, pid_comm, &state, path, dir);
++
++ free(name_lnk);
++ }
++ procps_pids_unref(&info);
++#endif
+ }
+
+ /**
+@@ -1490,7 +1579,7 @@ igt_lsof(const char *dpath)
+ free(sanitized);
+ }
+
+-static void pulseaudio_unload_module(proc_t *proc_info)
++static void pulseaudio_unload_module(const uid_t euid, const gid_t egid)
+ {
+ struct igt_helper_process pa_proc = {};
+ char xdg_dir[PATH_MAX];
+@@ -1498,14 +1587,14 @@ static void pulseaudio_unload_module(proc_t *proc_info)
+ struct passwd *pw;
+
+ igt_fork_helper(&pa_proc) {
+- pw = getpwuid(proc_info->euid);
++ pw = getpwuid(euid);
+ homedir = pw->pw_dir;
+- snprintf(xdg_dir, sizeof(xdg_dir), "/run/user/%d", proc_info->euid);
++ snprintf(xdg_dir, sizeof(xdg_dir), "/run/user/%d", euid);
+
+ igt_info("Request pulseaudio to stop using audio device\n");
+
+- setgid(proc_info->egid);
+- setuid(proc_info->euid);
++ setgid(egid);
++ setuid(euid);
+ clearenv();
+ setenv("HOME", homedir, 1);
+ setenv("XDG_RUNTIME_DIR",xdg_dir, 1);
+@@ -1524,10 +1613,13 @@ static void pipewire_reserve_wait(void)
+ char xdg_dir[PATH_MAX];
+ const char *homedir;
+ struct passwd *pw;
+- proc_t *proc_info;
+- PROCTAB *proc;
++ int tid = 0, euid, egid;
+
++#ifdef HAVE_LIBPROCPS
+ igt_fork_helper(&pw_reserve_proc) {
++ proc_t *proc_info;
++ PROCTAB *proc;
++
+ igt_info("Preventing pipewire-pulse to use the audio drivers\n");
+
+ proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG);
+@@ -1540,19 +1632,45 @@ static void pipewire_reserve_wait(void)
+ }
+ closeproc(proc);
+
++ tid = proc_info->tid;
++ euid = proc_info->euid;
++ egid = proc_info->egid;
++ freeproc(proc_info);
++#else
++ igt_fork_helper(&pw_reserve_proc) {
++ enum pids_item Items[] = { PIDS_ID_PID, PIDS_ID_EUID, PIDS_ID_EGID };
++ enum rel_items { EU_PID, EU_EUID, EU_EGID };
++ struct pids_info *info = NULL;
++ struct pids_stack *stack;
++
++ igt_info("Preventing pipewire-pulse to use the audio drivers\n");
++
++ if (procps_pids_new(&info, Items, 3) < 0) {
++ igt_info("error getting pids: %d\n", errno);
++ exit(errno);
++ }
++ while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) {
++ tid = PIDS_VAL(EU_PID, s_int, stack, info);
++ if (pipewire_pulse_pid == tid)
++ break;
++ }
++ euid = PIDS_VAL(EU_EUID, s_int, stack, info);
++ egid = PIDS_VAL(EU_EGID, s_int, stack, info);
++ procps_pids_unref(&info);
++#endif
++
+ /* Sanity check: if it can't find the process, it means it has gone */
+- if (pipewire_pulse_pid != proc_info->tid)
++ if (pipewire_pulse_pid != tid)
+ exit(0);
+
+- pw = getpwuid(proc_info->euid);
++ pw = getpwuid(euid);
+ homedir = pw->pw_dir;
+- snprintf(xdg_dir, sizeof(xdg_dir), "/run/user/%d", proc_info->euid);
+- setgid(proc_info->egid);
+- setuid(proc_info->euid);
++ snprintf(xdg_dir, sizeof(xdg_dir), "/run/user/%d", euid);
++ setgid(egid);
++ setuid(euid);
+ clearenv();
+ setenv("HOME", homedir, 1);
+ setenv("XDG_RUNTIME_DIR",xdg_dir, 1);
+- freeproc(proc_info);
+
+ /*
+ * pw-reserve will run in background. It will only exit when
+@@ -1570,9 +1688,7 @@ static void pipewire_reserve_wait(void)
+ int pipewire_pulse_start_reserve(void)
+ {
+ bool is_pw_reserve_running = false;
+- proc_t *proc_info;
+ int attempts = 0;
+- PROCTAB *proc;
+
+ if (!pipewire_pulse_pid)
+ return 0;
+@@ -1584,6 +1700,10 @@ int pipewire_pulse_start_reserve(void)
+ * pipewire version 0.3.50 or upper.
+ */
+ for (attempts = 0; attempts < PIPEWIRE_RESERVE_MAX_TIME; attempts++) {
++#ifdef HAVE_LIBPROCPS
++ PROCTAB *proc;
++ proc_t *proc_info;
++
+ usleep(1000);
+ proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG);
+ igt_assert(proc != NULL);
+@@ -1598,6 +1718,24 @@ int pipewire_pulse_start_reserve(void)
+ freeproc(proc_info);
+ }
+ closeproc(proc);
++#else
++ enum pids_item Items[] = { PIDS_ID_PID, PIDS_CMD };
++ struct pids_info *info = NULL;
++ struct pids_stack *stack;
++
++ usleep(1000);
++
++ if (procps_pids_new(&info, Items, 2) < 0)
++ return 1;
++ while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) {
++ if (!strcmp(PIDS_VAL(1, str, stack, info), "pw-reserve")) {
++ is_pw_reserve_running = true;
++ pipewire_pw_reserve_pid = PIDS_VAL(0, s_int, stack, info);
++ break;
++ }
++ }
++ procps_pids_unref(&info);
++#endif
+ if (is_pw_reserve_running)
+ break;
+ }
+@@ -1645,7 +1783,7 @@ void pipewire_pulse_stop_reserve(void)
+ * If the check fails, it means that the process can simply be killed.
+ */
+ static int
+-__igt_lsof_audio_and_kill_proc(proc_t *proc_info, char *proc_path)
++__igt_lsof_audio_and_kill_proc(const pid_t tid, const char *cmd, const uid_t euid, const gid_t egid, char *proc_path)
+ {
+ const char *audio_dev = "/dev/snd/";
+ char path[PATH_MAX * 2];
+@@ -1670,10 +1808,10 @@ __igt_lsof_audio_and_kill_proc(proc_t *proc_info, char *proc_path)
+ * 2) unload/unbind the the audio driver(s);
+ * 3) stop the pw-reserve thread.
+ */
+- if (!strcmp(proc_info->cmd, "pipewire-pulse")) {
++ if (!strcmp(cmd, "pipewire-pulse")) {
+ igt_info("process %d (%s) is using audio device. Should be requested to stop using them.\n",
+- proc_info->tid, proc_info->cmd);
+- pipewire_pulse_pid = proc_info->tid;
++ tid, cmd);
++ pipewire_pulse_pid = tid;
+ return 0;
+ }
+ /*
+@@ -1685,9 +1823,9 @@ __igt_lsof_audio_and_kill_proc(proc_t *proc_info, char *proc_path)
+ * will respawn them. So, just ignore here, they'll honor pw-reserve,
+ * when the time comes.
+ */
+- if (!strcmp(proc_info->cmd, "pipewire-media-session"))
++ if (!strcmp(cmd, "pipewire-media-session"))
+ return 0;
+- if (!strcmp(proc_info->cmd, "wireplumber"))
++ if (!strcmp(cmd, "wireplumber"))
+ return 0;
+
+ dp = opendir(proc_path);
+@@ -1723,22 +1861,22 @@ __igt_lsof_audio_and_kill_proc(proc_t *proc_info, char *proc_path)
+ * enough to unbind audio modules and won't cause race issues
+ * with systemd trying to reload it.
+ */
+- if (!strcmp(proc_info->cmd, "pulseaudio")) {
+- pulseaudio_unload_module(proc_info);
++ if (!strcmp(cmd, "pulseaudio")) {
++ pulseaudio_unload_module(euid, egid);
+ break;
+ }
+
+ /* For all other processes, just kill them */
+ igt_info("process %d (%s) is using audio device. Should be terminated.\n",
+- proc_info->tid, proc_info->cmd);
++ tid, cmd);
+
+- if (kill(proc_info->tid, SIGTERM) < 0) {
++ if (kill(tid, SIGTERM) < 0) {
+ igt_info("Fail to terminate %s (pid: %d) with SIGTERM\n",
+- proc_info->cmd, proc_info->tid);
+- if (kill(proc_info->tid, SIGABRT) < 0) {
++ cmd, tid);
++ if (kill(tid, SIGABRT) < 0) {
+ fail++;
+ igt_info("Fail to terminate %s (pid: %d) with SIGABRT\n",
+- proc_info->cmd, proc_info->tid);
++ cmd, tid);
+ }
+ }
+
+@@ -1760,23 +1898,47 @@ int
+ igt_lsof_kill_audio_processes(void)
+ {
+ char path[PATH_MAX];
++ int fail = 0;
++
++#ifdef HAVE_LIBPROCPS
+ proc_t *proc_info;
+ PROCTAB *proc;
+- int fail = 0;
+
+ proc = openproc(PROC_FILLCOM | PROC_FILLSTAT | PROC_FILLARG);
+ igt_assert(proc != NULL);
+ pipewire_pulse_pid = 0;
+-
+ while ((proc_info = readproc(proc, NULL))) {
+ if (snprintf(path, sizeof(path), "/proc/%d/fd", proc_info->tid) < 1)
+ fail++;
+ else
+- fail += __igt_lsof_audio_and_kill_proc(proc_info, path);
++ fail += __igt_lsof_audio_and_kill_proc(proc_info->tid, proc_info->cmd, proc_info->euid, proc_info->egid, path);
+
+ freeproc(proc_info);
+ }
+ closeproc(proc);
++#else
++ enum pids_item Items[] = { PIDS_ID_PID, PIDS_CMD, PIDS_ID_EUID, PIDS_ID_EGID };
++ enum rel_items { EU_PID, EU_CMD, EU_EUID, EU_EGID };
++ struct pids_info *info = NULL;
++ struct pids_stack *stack;
++ pid_t tid;
++
++ if (procps_pids_new(&info, Items, 4) < 0)
++ return 1;
++ while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) {
++ tid = PIDS_VAL(EU_PID, s_int, stack, info);
++
++ if (snprintf(path, sizeof(path), "/proc/%d/fd", tid) < 1)
++ fail++;
++ else
++ fail += __igt_lsof_audio_and_kill_proc(tid,
++ PIDS_VAL(EU_CMD, str, stack, info),
++ PIDS_VAL(EU_EUID, s_int, stack, info),
++ PIDS_VAL(EU_EGID, s_int, stack, info),
++ path);
++ }
++ procps_pids_unref(&info);
++#endif
+
+ return fail;
+ }
+diff --git a/lib/meson.build b/lib/meson.build
+index 85f100f75..55efdc83b 100644
+--- a/lib/meson.build
++++ b/lib/meson.build
+@@ -114,7 +114,6 @@ lib_deps = [
+ libdrm,
+ libdw,
+ libkmod,
+- libprocps,
+ libudev,
+ math,
+ pciaccess,
+@@ -178,6 +177,12 @@ if chamelium.found()
+ lib_sources += 'monitor_edids/monitor_edids_helper.c'
+ endif
+
++if libprocps.found()
++ lib_deps += libprocps
++else
++ lib_deps += libproc2
++endif
++
+ if get_option('srcdir') != ''
+ srcdir = join_paths(get_option('srcdir'), 'tests')
+ else
+diff --git a/meson.build b/meson.build
+index 1c872cc9c..0487158dc 100644
+--- a/meson.build
++++ b/meson.build
+@@ -125,7 +125,15 @@ build_info += 'With libdrm: ' + ','.join(libdrm_info)
+
+ pciaccess = dependency('pciaccess', version : '>=0.10')
+ libkmod = dependency('libkmod')
+-libprocps = dependency('libprocps', required : true)
++libprocps = dependency('libprocps', required : false)
++libproc2 = dependency('libproc2', required : false)
++if libprocps.found()
++ config.set('HAVE_LIBPROCPS', 1)
++elif libproc2.found()
++ config.set('HAVE_LIBPROC2', 1)
++else
++ error('Either libprocps or libproc2 is required')
++endif
+
+ libunwind = dependency('libunwind', required : get_option('libunwind'))
+ build_info += 'With libunwind: @0@'.format(libunwind.found())
diff --git a/gnu/packages/patches/jbr-17-xcursor-no-dynamic.patch b/gnu/packages/patches/jbr-17-xcursor-no-dynamic.patch
new file mode 100644
index 0000000000..371cbfe202
--- /dev/null
+++ b/gnu/packages/patches/jbr-17-xcursor-no-dynamic.patch
@@ -0,0 +1,72 @@
+From: Danny Milosavljevic <dannym@scratchpost.org>
+Date: Thu, 31 Mar 2022 17:02:00 +0200
+Subject: Make openjdk use libxcursor directly
+
+Fixes <https://issues.guix.gnu.org/54654>.
+
+This patch makes openjdk use libxcursor directly.
+Without it, libx11 would try to dlopen("libXcursor.so.1") and fail.
+
+diff -ru orig/22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/make/modules/java.desktop/lib/Awt2dLibraries.gmk 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/make/modules/java.desktop/lib/Awt2dLibraries.gmk
+--- orig/22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/make/modules/java.desktop/lib/Awt2dLibraries.gmk 2022-03-31 15:34:08.773419480 +0200
++++ 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/make/modules/java.desktop/lib/Awt2dLibraries.gmk 2022-03-31 21:36:27.854273411 +0200
+@@ -217,7 +217,7 @@
+ endif
+ endif
+
+- LIBAWT_XAWT_LIBS := $(LIBM) -lawt -lXext -lX11 -lXrender $(SPEECHD_LIBS) $(LIBDL) -lXtst -lXi -ljava -ljvm
++ LIBAWT_XAWT_LIBS := $(LIBM) -lawt -lXext -lX11 -lXcursor -lXrender $(SPEECHD_LIBS) $(LIBDL) -lXtst -lXi -ljava -ljvm
+
+ ifeq ($(call isTargetOs, linux), true)
+ LIBAWT_XAWT_LIBS += -lpthread
+diff -ru orig/22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/src/java.desktop/unix/native/libawt_xawt/xawt/XlibWrapper.c 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/src/java.desktop/unix/native/libawt_xawt/xawt/XlibWrapper.c
+--- orig/22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/src/java.desktop/unix/native/libawt_xawt/xawt/XlibWrapper.c 2022-03-31 15:34:11.917502206 +0200
++++ 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/src/java.desktop/unix/native/libawt_xawt/xawt/XlibWrapper.c 2022-03-31 21:38:16.417253535 +0200
+@@ -40,10 +40,12 @@
+ #include <X11/keysym.h>
+ #include <X11/Sunkeysym.h>
+ #include <X11/Xlib.h>
++#include <X11/Xlibint.h>
+ #include <X11/Xatom.h>
+ #include <X11/XKBlib.h>
+ #include <X11/Xos.h>
+ #include <X11/Xutil.h>
++#include <X11/Xcursor/Xcursor.h>
+
+ #if defined(AIX)
+ #undef X_HAVE_UTF8_STRING
+@@ -972,10 +974,21 @@
+
+ }
+
++static XColor _Xconst foreground = { 0, 0, 0, 0 }; /* black */
++static XColor _Xconst background = { 0, 65535, 65535, 65535 }; /* white */
++
+ JNIEXPORT jint JNICALL Java_sun_awt_X11_XlibWrapper_XCreateFontCursor
+ (JNIEnv *env, jclass clazz, jlong display, jint shape) {
+ AWT_CHECK_HAVE_LOCK_RETURN(0);
+- return XCreateFontCursor((Display *) jlong_to_ptr(display), (int) shape);
++ Display * dpy = (Display *) jlong_to_ptr(display);
++ if (dpy->cursor_font == None) {
++ dpy->cursor_font = XLoadFont(dpy, "cursor");
++ if (dpy->cursor_font == None) return None;
++ }
++ Cursor result = XcursorTryShapeCursor(dpy, dpy->cursor_font, dpy->cursor_font, (int) shape, (int) shape + 1, &foreground, &background);
++ if (!result)
++ result = XCreateFontCursor(dpy, (int) shape);
++ return result;
+ }
+
+ /*
+diff -ru orig/22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/test/jdk/java/awt/JAWT/Makefile.unix 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/test/jdk/java/awt/JAWT/Makefile.unix
+--- orig/22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/test/jdk/java/awt/JAWT/Makefile.unix 2022-03-31 15:34:10.553466316 +0200
++++ 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/test/jdk/java/awt/JAWT/Makefile.unix 2022-03-31 21:36:27.854273411 +0200
+@@ -31,7 +31,7 @@
+
+ J_INC = $(TESTJAVA)/include
+ INCLUDES = -I$(J_INC) -I$(J_INC)/$(SYST) -I.
+-LIBS = -L$(TESTJAVA)/lib -ljawt -lX11
++LIBS = -L$(TESTJAVA)/lib -ljawt -lX11 -lXcursor
+
+ all: $(CLASSES) libmylib.so
+
diff --git a/gnu/packages/patches/libtree-fix-check-non-x86.patch b/gnu/packages/patches/libtree-fix-check-non-x86.patch
new file mode 100644
index 0000000000..51f020c5d3
--- /dev/null
+++ b/gnu/packages/patches/libtree-fix-check-non-x86.patch
@@ -0,0 +1,50 @@
+From 061d3ec62707a526a83482e57d202a66f9d776cd Mon Sep 17 00:00:00 2001
+From: Ismael Luceno <ismael@iodev.co.uk>
+Date: Tue, 23 Aug 2022 19:34:39 +0200
+Subject: [PATCH] Test the -m32 and -m64 compiler flags before use
+
+Fixes: https://github.com/haampie/libtree/issues/78
+Signed-off-by: Ismael Luceno <ismael@iodev.co.uk>
+---
+ tests/05_32_bits/Makefile | 20 +++++++++++++++-----
+ 1 file changed, 15 insertions(+), 5 deletions(-)
+
+diff --git a/tests/05_32_bits/Makefile b/tests/05_32_bits/Makefile
+index 2c0bece..5628f42 100644
+--- a/tests/05_32_bits/Makefile
++++ b/tests/05_32_bits/Makefile
+@@ -3,7 +3,7 @@
+
+ LD_LIBRARY_PATH=
+
+-.PHONY: clean
++.PHONY: clean check
+
+ all: check
+
+@@ -21,11 +21,21 @@ exe64: lib64/libx.so
+ exe32: lib32/libx.so
+ echo 'extern int a(); int _start(){return a();}' | $(CC) -m32 "-Wl,-rpath,$(CURDIR)/lib64" "-Wl,-rpath,$(CURDIR)/lib32" -o $@ -nostdlib -x c - -Llib32 -lx
+
+-check: exe32 exe64
+- ../../libtree exe32
+- ../../libtree exe64
+-
+ clean:
+ rm -rf lib32 lib64 exe*
+
+ CURDIR ?= $(.CURDIR)
++
++test-flag = 2>/dev/null ${CC} -E /dev/null
++test-end = && echo y || echo n
++support-m32 != ${test-flag} -m32 ${test-end}
++support-m64 != ${test-flag} -m64 ${test-end}
++
++check${support-m32:y=}:: exe32
++ ../../libtree exe32
++
++check${support-m64:y=}:: exe64
++ ../../libtree exe64
++
++check${support-m32:n=} check${support-m64:n=}::
++ @echo WARNING: test skipped at ${CURDIR}
diff --git a/gnu/packages/patches/lightdm-vnc-ipv6.patch b/gnu/packages/patches/lightdm-vnc-ipv6.patch
new file mode 100644
index 0000000000..68e4363d3e
--- /dev/null
+++ b/gnu/packages/patches/lightdm-vnc-ipv6.patch
@@ -0,0 +1,48 @@
+Submitted upstream: https://github.com/canonical/lightdm/pull/312
+
+diff --git a/src/vnc-server.c b/src/vnc-server.c
+index d3500764..00a2fc02 100644
+--- a/src/vnc-server.c
++++ b/src/vnc-server.c
+@@ -126,18 +126,10 @@ vnc_server_start (VNCServer *server)
+
+ g_return_val_if_fail (server != NULL, FALSE);
+
+- g_autoptr(GError) ipv4_error = NULL;
+- priv->socket = open_tcp_socket (G_SOCKET_FAMILY_IPV4, priv->port, priv->listen_address, &ipv4_error);
+- if (ipv4_error)
+- g_warning ("Failed to create IPv4 VNC socket: %s", ipv4_error->message);
+-
+- if (priv->socket)
+- {
+- GSource *source = g_socket_create_source (priv->socket, G_IO_IN, NULL);
+- g_source_set_callback (source, (GSourceFunc) read_cb, server, NULL);
+- g_source_attach (source, NULL);
+- }
+-
++ // Bind to IPv6 first, as this implies binding to 0.0.0.0 in the
++ // Linux kernel default configuration, which would otherwise cause
++ // IPv6 clients to fail with "Error binding to address [::]:5900:
++ // Address already in use" (#266).
+ g_autoptr(GError) ipv6_error = NULL;
+ priv->socket6 = open_tcp_socket (G_SOCKET_FAMILY_IPV6, priv->port, priv->listen_address, &ipv6_error);
+ if (ipv6_error)
+@@ -150,6 +142,18 @@ vnc_server_start (VNCServer *server)
+ g_source_attach (source, NULL);
+ }
+
++ g_autoptr(GError) ipv4_error = NULL;
++ priv->socket = open_tcp_socket (G_SOCKET_FAMILY_IPV4, priv->port, priv->listen_address, &ipv4_error);
++ if (ipv4_error)
++ g_warning ("Failed to create IPv4 VNC socket: %s", ipv4_error->message);
++
++ if (priv->socket)
++ {
++ GSource *source = g_socket_create_source (priv->socket, G_IO_IN, NULL);
++ g_source_set_callback (source, (GSourceFunc) read_cb, server, NULL);
++ g_source_attach (source, NULL);
++ }
++
+ if (!priv->socket && !priv->socket6)
+ return FALSE;
+
diff --git a/gnu/packages/patches/llvm-roc-4.0.0-remove-isystem-usr-include.patch b/gnu/packages/patches/llvm-roc-4.0.0-remove-isystem-usr-include.patch
deleted file mode 100644
index f14ec4ac0d..0000000000
--- a/gnu/packages/patches/llvm-roc-4.0.0-remove-isystem-usr-include.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-Author: Wilfried (justxi) Holzke
-
-Adopted from https://github.com/justxi/rocm/blob/master/sys-devel/llvm-roc/files/llvm-roc-4.0.0-remove-isystem-usr-include.patch
-
-Index: llvm-project-rocm-4.0.0/clang/lib/Driver/ToolChains/AMDGPU.cpp
-===================================================================
---- llvm-project-rocm-4.0.0.orig/clang/lib/Driver/ToolChains/AMDGPU.cpp
-+++ llvm-project-rocm-4.0.0/clang/lib/Driver/ToolChains/AMDGPU.cpp
-@@ -326,11 +326,6 @@ void RocmInstallationDetector::AddHIPInc
- //
- // ROCm 3.5 does not fully support the wrapper headers. Therefore it needs
- // a workaround.
-- SmallString<128> P(D.ResourceDir);
-- if (UsesRuntimeWrapper)
-- llvm::sys::path::append(P, "include", "cuda_wrappers");
-- CC1Args.push_back("-internal-isystem");
-- CC1Args.push_back(DriverArgs.MakeArgString(P));
- }
-
- if (DriverArgs.hasArg(options::OPT_nogpuinc))
-@@ -341,8 +336,6 @@ void RocmInstallationDetector::AddHIPInc
- return;
- }
-
-- CC1Args.push_back("-internal-isystem");
-- CC1Args.push_back(DriverArgs.MakeArgString(getIncludePath()));
- if (UsesRuntimeWrapper)
- CC1Args.append({"-include", "__clang_hip_runtime_wrapper.h"});
- }
diff --git a/gnu/packages/patches/llvm-roc-5.0.0-linkdl.patch b/gnu/packages/patches/llvm-roc-5.0.0-linkdl.patch
deleted file mode 100644
index d6ed3aef93..0000000000
--- a/gnu/packages/patches/llvm-roc-5.0.0-linkdl.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Taken from the Gentoo patch:
-https://gitweb.gentoo.org/repo/gentoo.git/tree/sys-devel/llvm-roc/files/llvm-roc-5.0.0-linkdl.patch
-
-LLVMOffloadArch should link libdl to fix undefined symbol 'dlsym' when linking
-
---- a/llvm/lib/OffloadArch/offload-arch/CMakeLists.txt
-+++ b/llvm/lib/OffloadArch/offload-arch/CMakeLists.txt
-@@ -3,6 +3,7 @@ add_llvm_tool(offload-arch
- ${CMAKE_CURRENT_SOURCE_DIR}/offload-arch.cpp
- DEPENDS generated-table LLVMOffloadArch
- )
-+target_link_libraries(LLVMOffloadArch PRIVATE ${CMAKE_DL_LIBS})
- target_link_libraries(offload-arch PRIVATE LLVMOffloadArch)
-
- if(CMAKE_HOST_UNIX)
diff --git a/gnu/packages/patches/maven-generate-component-xml.patch b/gnu/packages/patches/maven-generate-component-xml.patch
index 6cb23c7858..289556fbef 100644
--- a/gnu/packages/patches/maven-generate-component-xml.patch
+++ b/gnu/packages/patches/maven-generate-component-xml.patch
@@ -17,7 +17,8 @@ new file mode 100755
index 0000000..c6748bd
--- /dev/null
+++ b/components.sh
-@@ -0,0 +1,148 @@
+@@ -0,0 +1,149 @@
++#!/bin/sh
+## This script generates a rough plexus/components.xml file. It is meant to
+## replace plexus-component-metadata as it eventually has a recursive dependency
+## on itself.
diff --git a/gnu/packages/patches/maven-generate-javax-inject-named.patch b/gnu/packages/patches/maven-generate-javax-inject-named.patch
index b8eba5ab90..38c4565e81 100644
--- a/gnu/packages/patches/maven-generate-javax-inject-named.patch
+++ b/gnu/packages/patches/maven-generate-javax-inject-named.patch
@@ -13,7 +13,8 @@ new file mode 100755
index 0000000..979f373
--- /dev/null
+++ b/sisu.sh
-@@ -0,0 +1,12 @@
+@@ -0,0 +1,13 @@
++#!/bin/sh
+## This script generates a rough javax.inject.Named file. It is meant to
+## replace sisu-maven-plugin as it eventually has a recursive dependency
+## on maven.
diff --git a/gnu/packages/patches/nix-dont-build-html-doc.diff b/gnu/packages/patches/nix-dont-build-html-doc.diff
index 79142bc215..2eb45117b0 100644
--- a/gnu/packages/patches/nix-dont-build-html-doc.diff
+++ b/gnu/packages/patches/nix-dont-build-html-doc.diff
@@ -3,24 +3,41 @@ We can't simply disable it because we need manpages.
Author: Zhu Zihao <all_but_last@163.com>
-diff --git a/doc/manual/local.mk b/doc/manual/local.mk
-index e43d9f2fb..c323d1847 100644
--- a/doc/manual/local.mk
+++ b/doc/manual/local.mk
-@@ -69,8 +69,6 @@ $(d)/builtins.json: $(bindir)/nix
+@@ -138,11 +138,6 @@
$(trace-gen) $(dummy-env) NIX_PATH=nix/corepkgs=corepkgs $(bindir)/nix __dump-builtins > $@.tmp
@mv $@.tmp $@
-# Generate the HTML manual.
+-.PHONY: manual-html
+-manual-html: $(docdir)/manual/index.html
-install: $(docdir)/manual/index.html
-
+-
# Generate 'nix' manpages.
install: $(mandir)/man1/nix3-manpages
-@@ -94,7 +92,5 @@ doc/manual/generated/man1/nix3-manpages: $(d)/src/command-ref/new-cli
+ man: doc/manual/generated/man1/nix3-manpages
+@@ -167,23 +162,4 @@
done
@touch $@
--$(docdir)/manual/index.html: $(MANUAL_SRCS) $(d)/book.toml $(d)/custom.css $(d)/src/SUMMARY.md $(d)/src/command-ref/new-cli $(d)/src/command-ref/conf-file.md $(d)/src/expressions/builtins.md $(call rwildcard, $(d)/src, *.md)
-- $(trace-gen) RUST_LOG=warn mdbook build doc/manual -d $(DESTDIR)$(docdir)/manual
-
+-$(docdir)/manual/index.html: $(MANUAL_SRCS) $(d)/book.toml $(d)/anchors.jq $(d)/custom.css $(d)/src/SUMMARY.md $(d)/src/command-ref/new-cli $(d)/src/contributing/experimental-feature-descriptions.md $(d)/src/command-ref/conf-file.md $(d)/src/language/builtins.md
+- $(trace-gen) \
+- tmp="$$(mktemp -d)"; \
+- cp -r doc/manual "$$tmp"; \
+- find "$$tmp" -name '*.md' | while read -r file; do \
+- $(call process-includes,$$file,$$file); \
+- done; \
+- find "$$tmp" -name '*.md' | while read -r file; do \
+- docroot="$$(realpath --relative-to="$$(dirname "$$file")" $$tmp/manual/src)"; \
+- sed -i "s,@docroot@,$$docroot,g" "$$file"; \
+- done; \
+- set -euo pipefail; \
+- RUST_LOG=warn mdbook build "$$tmp/manual" -d $(DESTDIR)$(docdir)/manual.tmp 2>&1 \
+- | { grep -Fv "because fragment resolution isn't implemented" || :; }; \
+- rm -rf "$$tmp/manual"
+- @rm -rf $(DESTDIR)$(docdir)/manual
+- @mv $(DESTDIR)$(docdir)/manual.tmp/html $(DESTDIR)$(docdir)/manual
+- @rm -rf $(DESTDIR)$(docdir)/manual.tmp
+-
endif
diff --git a/gnu/packages/patches/openrgb-unbundle-hueplusplus.patch b/gnu/packages/patches/openrgb-unbundle-hueplusplus.patch
index 7454e1efbe..c99b2c68dd 100644
--- a/gnu/packages/patches/openrgb-unbundle-hueplusplus.patch
+++ b/gnu/packages/patches/openrgb-unbundle-hueplusplus.patch
@@ -1,10 +1,10 @@
Remove references to hueplusplus in order to unbundle and use the input package.
diff --git a/OpenRGB.pro b/OpenRGB.pro
-index 61758892..8702d998 100644
+index 556be3bc..41e704aa 100644
--- a/OpenRGB.pro
+++ b/OpenRGB.pro
-@@ -493,35 +493,6 @@ SOURCES +=
+@@ -783,35 +783,6 @@ SOURCES +=
dependencies/Swatches/swatches.cpp \
dependencies/dmiinfo.cpp \
dependencies/ColorWheel/ColorWheel.cpp \
@@ -40,15 +40,15 @@ index 61758892..8702d998 100644
dependencies/libe131/src/e131.c \
dependencies/libcmmk/src/libcmmk.c \
main.cpp \
-@@ -1188,6 +1159,7 @@ unix:!macx {
- -lmbedx509 \
+@@ -1789,6 +1760,7 @@ contains(QMAKE_PLATFORM, linux) {
-lmbedtls \
-lmbedcrypto \
+ -ldl \
+ -lhueplusplusshared \
COMPILER_VERSION = $$system($$QMAKE_CXX " -dumpversion")
if (!versionAtLeast(COMPILER_VERSION, "9")) {
-@@ -1218,7 +1190,6 @@ unix:!macx {
+@@ -1821,7 +1793,6 @@ contains(QMAKE_PLATFORM, linux) {
}
SOURCES += \
diff --git a/gnu/packages/patches/python-keras-integration-test.patch b/gnu/packages/patches/python-keras-integration-test.patch
deleted file mode 100644
index aa2b1a273d..0000000000
--- a/gnu/packages/patches/python-keras-integration-test.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Fix a test failure with recent versions of ... Pytest? Python?
-
-Taken from upstream:
-https://github.com/keras-team/keras/commit/fe35050a8f18dc52304aa8da4e463eececa25240
-
-diff --git a/tests/integration_tests/applications_test.py b/tests/integration_tests/applications_test.py
-index 979f2f2abd6..6e3b57fa8e2 100644
---- a/tests/integration_tests/applications_test.py
-+++ b/tests/integration_tests/applications_test.py
-@@ -58,7 +58,8 @@ def _test_application_basic(app, last_dim=1000):
- def _test_application_notop(app, last_dim):
- output_shape = _get_output_shape(
- lambda: app(weights=None, include_top=False))
-- assert output_shape == (None, None, None, last_dim)
-+ assert len(output_shape) == 4
-+ assert output_shape[-1] == last_dim
-
-
- def test_mobilenet_v2_legacy_import():
diff --git a/gnu/packages/patches/python-vega-datasets-remove-la-riots-code.patch b/gnu/packages/patches/python-vega-datasets-remove-la-riots-code.patch
new file mode 100644
index 0000000000..ea3f68927a
--- /dev/null
+++ b/gnu/packages/patches/python-vega-datasets-remove-la-riots-code.patch
@@ -0,0 +1,89 @@
+# This patch was imported from Debian:
+# https://sources.debian.org/src/python-vega-datasets/0.9%2Bdfsg-1/debian/patches/remove-la-riots-related-code.patch/
+# According to the Debian package, the license of this dataset is not clear and it is not available from Los Angeles Times for European users.
+Index: vega_datasets/vega_datasets/tests/test_local_datasets.py
+===================================================================
+--- vega_datasets.orig/vega_datasets/tests/test_local_datasets.py
++++ vega_datasets/vega_datasets/tests/test_local_datasets.py
+@@ -75,7 +75,6 @@ def test_cars_column_names():
+ [
+ ("cars", "Year"),
+ ("stocks", "date"),
+- ("la-riots", "death_date"),
+ ("iowa-electricity", "year"),
+ ("seattle-weather", "date"),
+ ("seattle-temps", "date"),
+Index: vega_datasets/vega_datasets/core.py
+===================================================================
+--- vega_datasets.orig/vega_datasets/core.py
++++ vega_datasets/vega_datasets/core.py
+@@ -322,11 +322,6 @@ class IowaElectricity(Dataset):
+ _pd_read_kwds = {"parse_dates": ["year"]}
+
+
+-class LARiots(Dataset):
+- name = "la-riots"
+- _pd_read_kwds = {"parse_dates": ["death_date"]}
+-
+-
+ class Miserables(Dataset):
+ name = "miserables"
+ _return_type = tuple
+Index: vega_datasets/vega_datasets/datasets.json
+===================================================================
+--- vega_datasets.orig/vega_datasets/datasets.json
++++ vega_datasets/vega_datasets/datasets.json
+@@ -143,10 +143,6 @@
+ "filename": "jobs.json",
+ "format": "json"
+ },
+- "la-riots": {
+- "filename": "la-riots.csv",
+- "format": "csv"
+- },
+ "londonBoroughs": {
+ "filename": "londonBoroughs.json",
+ "format": "json"
+@@ -279,4 +275,4 @@
+ "filename": "zipcodes.csv",
+ "format": "csv"
+ }
+-}
+\ No newline at end of file
++}
+Index: vega_datasets/vega_datasets/local_datasets.json
+===================================================================
+--- vega_datasets.orig/vega_datasets/local_datasets.json
++++ vega_datasets/vega_datasets/local_datasets.json
+@@ -8,7 +8,6 @@
+ "driving": "_data/driving.json",
+ "iowa-electricity": "_data/iowa-electricity.csv",
+ "iris": "_data/iris.json",
+- "la-riots": "_data/la-riots.csv",
+ "ohlc": "_data/ohlc.json",
+ "seattle-temps": "_data/seattle-temps.csv",
+ "seattle-weather": "_data/seattle-weather.csv",
+@@ -16,4 +15,4 @@
+ "stocks": "_data/stocks.csv",
+ "us-employment": "_data/us-employment.csv",
+ "wheat": "_data/wheat.json"
+-}
+\ No newline at end of file
++}
+Index: vega_datasets/vega_datasets/dataset_info.json
+===================================================================
+--- vega_datasets.orig/vega_datasets/dataset_info.json
++++ vega_datasets/vega_datasets/dataset_info.json
+@@ -49,12 +49,6 @@
+ "R. A. Fisher (1936). 'The use of multiple measurements in taxonomic problems'. Annals of Eugenics. 7 (2): 179-188."
+ ]
+ },
+- "la-riots" : {
+- "description" : "More than 60 people lost their lives amid the looting and fires that ravaged Los Angeles for five days starting on April 29, 1992. This dataset contains metadata about each person, including the geographic coordinates of their death. It was compiled and published by the Los Angeles Times Data Desk [1]_.",
+- "references" : [
+- "http://spreadsheets.latimes.com/la-riots-deaths/"
+- ]
+- },
+ "ohlc" : {
+ "description" : "This dataset contains the performance of the Chicago Board Options Exchange `Volatility Index <https://en.wikipedia.org/wiki/VIX>`_ in the summer of 2009."
+ },
diff --git a/gnu/packages/patches/quodlibet-fix-invalid-glob.patch b/gnu/packages/patches/quodlibet-fix-invalid-glob.patch
new file mode 100644
index 0000000000..95f95d8aab
--- /dev/null
+++ b/gnu/packages/patches/quodlibet-fix-invalid-glob.patch
@@ -0,0 +1,89 @@
+From 5f55431a28509fd4f4f7b40dc246f3d34fa8549e Mon Sep 17 00:00:00 2001
+From: Christoph Reiter <reiter.christoph@gmail.com>
+Date: Sun, 26 Jun 2022 23:14:28 +0200
+Subject: [PATCH] builtin cover: fix handling of invalid glob ranges with
+ Python 3.10.5+ (#4027)
+
+Previously Python would raise if an invalid range was given
+to glob, but with 3.10.5 they fixed it to not match anything.
+https://github.com/python/cpython/issues/89973
+
+Our tests depended on the previous logic and treating the glob pattern
+as a literal file name in that case.
+
+One could argue that this is wrong since a range that doesn't contain anything
+should also not match anything, so wrap glob() to make it not match for all
+Python versions in that case and adjust the tests accordingly.
+
+This should fix the Windows CI, which is currently the only job using 3.10.5
+---
+ quodlibet/util/cover/built_in.py | 22 +++++++++++-----------
+ tests/test_util_cover.py | 12 +++---------
+ 2 files changed, 14 insertions(+), 20 deletions(-)
+
+diff --git a/quodlibet/util/cover/built_in.py b/quodlibet/util/cover/built_in.py
+index f2a8791a2..01474c9b6 100644
+--- a/quodlibet/util/cover/built_in.py
++++ b/quodlibet/util/cover/built_in.py
+@@ -100,6 +100,15 @@ class FilesystemCover(CoverSourcePlugin):
+ base = self.song('~dirname')
+ images = []
+
++ def safe_glob(*args, **kwargs):
++ try:
++ return glob.glob(*args, **kwargs)
++ except sre_constants.error:
++ # https://github.com/python/cpython/issues/89973
++ # old glob would fail with invalid ranges, newer one
++ # handles it correctly.
++ return []
++
+ if config.getboolean("albumart", "force_filename"):
+ score = 100
+ for filename in config.get("albumart", "filename").split(","):
+@@ -107,17 +116,8 @@ class FilesystemCover(CoverSourcePlugin):
+ filename = filename.strip()
+
+ escaped_path = os.path.join(glob.escape(base), filename)
+- try:
+- for path in glob.glob(escaped_path):
+- images.append((score, path))
+- except sre_constants.error:
+- # Use literal filename if globbing causes errors
+- path = os.path.join(base, filename)
+-
+- # We check this here, so we can search for alternative
+- # files in case no preferred file was found.
+- if os.path.isfile(path):
+- images.append((score, path))
++ for path in safe_glob(escaped_path):
++ images.append((score, path))
+
+ # So names and patterns at the start are preferred
+ score -= 1
+diff --git a/tests/test_util_cover.py b/tests/test_util_cover.py
+index db81e4d1f..71a48ad9a 100644
+--- a/tests/test_util_cover.py
++++ b/tests/test_util_cover.py
+@@ -105,15 +105,9 @@ class TCoverManager(TestCase):
+ config.set("albumart", "force_filename", str(True))
+ config.set("albumart", "filename", "[a-2].jpg")
+
+- # Should match
+- f = self.add_file("[a-2].jpg")
+- assert path_equal(
+- os.path.abspath(self._find_cover(self.song).name), f)
+-
+- # Should not crash
+- f = self.add_file("test.jpg")
+- assert not path_equal(
+- os.path.abspath(self._find_cover(self.song).name), f)
++ # Invalid glob range, should not match anything
++ self.add_file("a.jpg")
++ assert self._find_cover(self.song) is None
+
+ def test_invalid_glob_path(self):
+ config.set("albumart", "force_filename", str(True))
+--
+2.39.2
+
diff --git a/gnu/packages/patches/quodlibet-fix-mtime-tests.patch b/gnu/packages/patches/quodlibet-fix-mtime-tests.patch
new file mode 100644
index 0000000000..037f77d868
--- /dev/null
+++ b/gnu/packages/patches/quodlibet-fix-mtime-tests.patch
@@ -0,0 +1,39 @@
+From 06a32b319f065550efe0d2a9ff10ca6bdc32b893 Mon Sep 17 00:00:00 2001
+From: Christoph Reiter <reiter.christoph@gmail.com>
+Date: Sat, 23 Jul 2022 20:15:18 +0200
+Subject: [PATCH] operon: hopefully better fix for flaky mtime tests
+
+copy the mtime after we write everything, so there is no chance of
+it changing before we note the initial value.
+---
+ quodlibet/operon/commands.py | 8 ++++----
+ 1 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/quodlibet/operon/commands.py b/quodlibet/operon/commands.py
+index e0a5ef33a..af2dcfa8b 100644
+--- a/quodlibet/operon/commands.py
++++ b/quodlibet/operon/commands.py
+@@ -227,16 +227,16 @@ class EditCommand(Command):
+ # write to tmp file
+ fd, path = tempfile.mkstemp(suffix=".txt")
+
+- # XXX: copy mtime here so we can test for changes in tests by
+- # setting a out of date mtime on the source song file
+- copy_mtime(args[0], path)
+-
+ try:
+ try:
+ os.write(fd, dump)
+ finally:
+ os.close(fd)
+
++ # XXX: copy mtime here so we can test for changes in tests by
++ # setting a out of date mtime on the source song file
++ copy_mtime(args[0], path)
++
+ # only parse the result if the editor returns 0 and the mtime has
+ # changed
+ old_mtime = mtime(path)
+--
+2.39.2
+
diff --git a/gnu/packages/patches/rocclr-5.6.0-enable-gfx800.patch b/gnu/packages/patches/rocclr-5.6.0-enable-gfx800.patch
new file mode 100644
index 0000000000..2948234029
--- /dev/null
+++ b/gnu/packages/patches/rocclr-5.6.0-enable-gfx800.patch
@@ -0,0 +1,16 @@
+#From xuhuisheng
+#at https://github.com/RadeonOpenCompute/ROCm/issues/1659#issuecomment-1041026624
+
+diff --git a/utils/flags.hpp b/utils/flags.hpp
+index 8f0228cc..2eaa47c5 100644
+--- a/utils/flags.hpp
++++ b/utils/flags.hpp
+@@ -245,7 +245,7 @@ release(bool, ROC_SYSTEM_SCOPE_SIGNAL, true, \
+ "Enable system scope for signals (uses interrupts).") \
+ release(bool, ROC_SKIP_COPY_SYNC, false, \
+ "Skips copy syncs if runtime can predict the same engine.") \
+-release(bool, ROC_ENABLE_PRE_VEGA, false, \
++release(bool, ROC_ENABLE_PRE_VEGA, true, \
+ "Enable support of pre-vega ASICs in ROCm path") \
+ release(bool, HIP_FORCE_QUEUE_PROFILING, false, \
+ "Force command queue profiling by default") \
diff --git a/gnu/packages/patches/rocm-bandwidth-test-5.5.0-fix-includes.patch b/gnu/packages/patches/rocm-bandwidth-test-5.5.0-fix-includes.patch
new file mode 100644
index 0000000000..a5404ad62c
--- /dev/null
+++ b/gnu/packages/patches/rocm-bandwidth-test-5.5.0-fix-includes.patch
@@ -0,0 +1,79 @@
+See <https://github.com/RadeonOpenCompute/rocm_bandwidth_test/pull/90>.
+
+From a58f9fd4cb5d1120b9ce58c912ca87fa14720f73 Mon Sep 17 00:00:00 2001
+From: pppig236 <weikaik@umich.edu>
+Date: Tue, 2 May 2023 15:19:52 -0400
+Subject: [PATCH] fix include for rocm 5.5.0
+
+---
+ base_test.hpp | 8 +-------
+ common.hpp | 11 ++---------
+ rocm_bandwidth_test.hpp | 8 +-------
+ 3 files changed, 4 insertions(+), 23 deletions(-)
+
+diff --git a/base_test.hpp b/base_test.hpp
+index 3e79de1..af99a85 100755
+--- a/base_test.hpp
++++ b/base_test.hpp
+@@ -42,14 +42,8 @@
+
+ #ifndef ROC_BANDWIDTH_TEST_BASE_H_
+ #define ROC_BANDWIDTH_TEST_BASE_H_
+-#if(defined(RBT_HSA_VERSION_FLAT) && ((RBT_HSA_VERSION_FLAT) < RBT_HSA_VERSION_FILEREORG))
+-// Hsa package with out file reorganization
+-// This is for backward compatibility and will be deprecated from future release
+-#include "hsa.h"
+-#else
+ // Hsa package with file reorganization
+-#include "hsa/hsa.h"
+-#endif
++#include <hsa/hsa.h>
+ #include <iostream>
+ #include <string>
+ #include <vector>
+diff --git a/common.hpp b/common.hpp
+index d2933a0..3c4858f 100755
+--- a/common.hpp
++++ b/common.hpp
+@@ -48,16 +48,9 @@
+ #include <vector>
+ #include <cmath>
+ #include <stdio.h>
+-#if(defined(RBT_HSA_VERSION_FLAT) && ((RBT_HSA_VERSION_FLAT) < RBT_HSA_VERSION_FILEREORG))
+-// Hsa package with out file reorganization
+-// This is for backward compatibility and will be deprecated from future release
+-#include "hsa.h"
+-#include "hsa_ext_amd.h"
+-#else
+ // Hsa package with file reorganization
+-#include "hsa/hsa.h"
+-#include "hsa/hsa_ext_amd.h"
+-#endif
++#include <hsa/hsa.h>
++#include <hsa/hsa_ext_amd.h>
+
+ using namespace std;
+
+diff --git a/rocm_bandwidth_test.hpp b/rocm_bandwidth_test.hpp
+index f7eb338..b8550a7 100755
+--- a/rocm_bandwidth_test.hpp
++++ b/rocm_bandwidth_test.hpp
+@@ -43,14 +43,8 @@
+ #ifndef __ROC_BANDWIDTH_TEST_H__
+ #define __ROC_BANDWIDTH_TEST_H__
+
+-#if(defined(RBT_HSA_VERSION_FLAT) && ((RBT_HSA_VERSION_FLAT) < RBT_HSA_VERSION_FILEREORG))
+-// Hsa package with out file reorganization
+-// This is for backward compatibility and will be deprecated from future release
+-#include "hsa.h"
+-#else
+ // Hsa package with file reorganization
+-#include "hsa/hsa.h"
+-#endif
++#include <hsa/hsa.h>
+ #include "base_test.hpp"
+ #include "common.hpp"
+
+--
+2.40.1
+
diff --git a/gnu/packages/patches/rocm-comgr-3.1.0-dependencies.patch b/gnu/packages/patches/rocm-comgr-3.1.0-dependencies.patch
index fc2c74718a..6462b81eb9 100644
--- a/gnu/packages/patches/rocm-comgr-3.1.0-dependencies.patch
+++ b/gnu/packages/patches/rocm-comgr-3.1.0-dependencies.patch
@@ -1,4 +1,5 @@
-https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/pull/25
+See https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/pull/25 for
+original patch.
From c65cba2e73f9118e128b9ab7e655ee0f8a7798e7 Mon Sep 17 00:00:00 2001
From: Craig Andrews <candrews@integralblue.com>
@@ -12,23 +13,23 @@ Without these additional required dependencies, linking fails with errors such a
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/lib/comgr/CMakeLists.txt b/lib/comgr/CMakeLists.txt
-index 8b5ca2f..a7d226f 100644
+index fd3ae4a..131e581 100644
--- a/lib/comgr/CMakeLists.txt
+++ b/lib/comgr/CMakeLists.txt
-@@ -294,7 +294,11 @@ install(FILES
- DESTINATION "${AMD_COMGR_PACKAGE_PREFIX}")
+@@ -322,7 +322,11 @@ install(FILES
- set(CLANG_LIBS
-- clangFrontendTool)
-+ clangFrontendTool
-+ clangFrontend
-+ clangBasic
-+ clangDriver
-+ clangSerialization)
-
- set(LLD_LIBS
- lldELF
-@@ -305,8 +309,21 @@ if (LLVM_LINK_LLVM_DYLIB)
+ if(TARGET clangFrontendTool)
+ set(CLANG_LIBS
+- clangFrontendTool)
++ clangFrontendTool
++ clangFrontend
++ clangBasic
++ clangDriver
++ clangSerialization)
+ else()
+ set(CLANG_LIBS
+ clang-cpp)
+@@ -337,8 +341,23 @@ if (LLVM_LINK_LLVM_DYLIB)
else()
llvm_map_components_to_libnames(LLVM_LIBS
${LLVM_TARGETS_TO_BUILD}
@@ -38,6 +39,8 @@ index 8b5ca2f..a7d226f 100644
+ Symbolize
+ Support
+ Object
++ TargetParser
++ Bitreader
+ BitWriter
+ MC
+ MCParser
diff --git a/gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch b/gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch
index 97376fd421..65ad362307 100644
--- a/gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch
+++ b/gnu/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch
@@ -1,14 +1,12 @@
Do not build and install clinfo.
-diff --git a/CMakeLists.txt.orig b/CMakeLists.txt
-index 76847d3..3f62bfe 100644
---- a/CMakeLists.txt.orig
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 0dc5bf4..95a12af 100644
+--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -15,9 +15,9 @@ option(FILE_REORG_BACKWARD_COMPATIBILITY "Enable File Reorganization backward co
-
-
- set(OPENCL_ICD_LOADER_HEADERS_DIR "${CMAKE_CURRENT_LIST_DIR}/khronos/headers/opencl2.2" CACHE PATH "")
- #add_subdirectory(khronos/icd)
+@@ -27,7 +27,7 @@ else()
+ find_package(OpenCL REQUIRED)
+ endif()
add_subdirectory(amdocl)
-add_subdirectory(tools/clinfo)
+#add_subdirectory(tools/clinfo)
@@ -16,14 +14,14 @@ index 76847d3..3f62bfe 100644
if(BUILD_TESTS)
add_subdirectory(tests/ocltst)
diff --git a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt
-index 48353eb..cd1e7c1 100644
+index a703f58..c07546a 100644
--- a/packaging/CMakeLists.txt
+++ b/packaging/CMakeLists.txt
-@@ -5,6 +5,6 @@ set(CPACK_COMPONENTS_ALL binary dev icd)
+@@ -12,6 +12,6 @@ endif()
set(CPACK_DEB_COMPONENT_INSTALL ON)
set(CPACK_RPM_COMPONENT_INSTALL ON)
--install(TARGETS clinfo DESTINATION bin COMPONENT binary)
-+#install(TARGETS clinfo DESTINATION bin COMPONENT binary)
- install(TARGETS amdocl DESTINATION lib COMPONENT binary)
- install(FILES ${CMAKE_SOURCE_DIR}/LICENSE.txt DESTINATION share/doc/${CMAKE_PROJECT_NAME} COMPONENT binary)
+-install(TARGETS clinfo DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT binary)
++#install(TARGETS clinfo DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT binary)
+ install(TARGETS amdocl DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT binary)
+ install(FILES ${CMAKE_SOURCE_DIR}/LICENSE.txt DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT binary)
diff --git a/gnu/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch b/gnu/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch
deleted file mode 100644
index 9f80d7da9d..0000000000
--- a/gnu/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-Do not build and install libOpenCL.
-
---- b/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -15,9 +15,9 @@ option(FILE_REORG_BACKWARD_COMPATIBILITY "Enable File Reorganization backward co
-
-
- set(OPENCL_ICD_LOADER_HEADERS_DIR "${CMAKE_CURRENT_LIST_DIR}/khronos/headers/opencl2.2" CACHE PATH "")
--add_subdirectory(khronos/icd)
-+#add_subdirectory(khronos/icd)
- add_subdirectory(amdocl)
- add_subdirectory(tools/clinfo)
- add_subdirectory(tools/cltrace)
- if(BUILD_TESTS)
- add_subdirectory(tests/ocltst)
-@@ -25,16 +25,6 @@ endif()
-
- ###--- Packaging ------------------------------------------------------------###
-
--# DEV package
--install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/khronos/headers/opencl2.2/CL"
-- DESTINATION include
-- COMPONENT DEV
-- USE_SOURCE_PERMISSIONS
-- PATTERN cl_d3d10.h EXCLUDE
-- PATTERN cl_d3d11.h EXCLUDE
-- PATTERN cl_dx9_media_sharing.h EXCLUDE
-- PATTERN cl_egl.h EXCLUDE)
--
- #############################
- # Packaging steps
- #############################
-@@ -53,8 +43,8 @@ if (DEFINED ROCM_PATCH_VERSION)
- set(OPENCL_AMD_ICD_FILE "amdocl64_${ROCM_PATCH_VERSION}.icd")
- endif()
-
--get_target_property(OPENCL_LIB_VERSION_MAJOR OpenCL SOVERSION)
--get_target_property(OPENCL_LIB_VERSION_STRING OpenCL VERSION)
-+#get_target_property(OPENCL_LIB_VERSION_MAJOR OpenCL SOVERSION)
-+#get_target_property(OPENCL_LIB_VERSION_STRING OpenCL VERSION)
-
- #Set Package Version
- set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
-diff --git a/khronos/icd/CMakeLists.txt b/khronos/icd/CMakeLists.txt
-index 4bafa86..987dd6f 100644
---- a/khronos/icd/CMakeLists.txt 2020-06-07 16:05:32.425022904 +0200
-+++ b/khronos/icd/CMakeLists.txt 2020-06-07 16:06:03.273022786 +0200
-@@ -132,7 +132,7 @@ if (BUILD_TESTING)
- add_subdirectory (test)
- endif()
-
--install (TARGETS OpenCL
-- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
-- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
-- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
-+#install (TARGETS OpenCL
-+# RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
-+# ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
-+# LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
-diff --git a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt
-index 48353eb..cd1e7c1 100644
---- a/packaging/CMakeLists.txt
-+++ b/packaging/CMakeLists.txt
-@@ -17,5 +17,5 @@ install(DIRECTORY ${CMAKE_SOURCE_DIR}/khronos/headers/opencl2.2/CL
- PATTERN cl_dx9_media_sharing.h EXCLUDE
- PATTERN cl_egl.h EXCLUDE )
-
--install(TARGETS OpenCL DESTINATION lib COMPONENT icd )
-+#install(TARGETS OpenCL DESTINATION lib COMPONENT icd )
- install(FILES ${CMAKE_SOURCE_DIR}/khronos/icd/LICENSE DESTINATION share/doc/rocm-ocl-icd COMPONENT icd)
diff --git a/gnu/packages/patches/ruby-nokogiri.patch b/gnu/packages/patches/ruby-nokogiri.patch
new file mode 100644
index 0000000000..b55b430234
--- /dev/null
+++ b/gnu/packages/patches/ruby-nokogiri.patch
@@ -0,0 +1,29 @@
+Description: Removed some unnecessary test setup such as SimpleCov and
+ minitest-reporters.
+diff --git a/test/helper.rb b/test/helper.rb
+index ed3133c6..4f5d4f1b 100644
+--- a/test/helper.rb
++++ b/test/helper.rb
+@@ -13,22 +13,10 @@
+ # - NOKOGIRI_GC: read more in test/test_memory_leak.rb
+ #
+
+-require "simplecov"
+-SimpleCov.start do
+- add_filter "/test/"
+- enable_coverage :branch
+-end
+-
+ $VERBOSE = true
+
+ require "minitest/autorun"
+ require "minitest/benchmark"
+-require "minitest/reporters"
+-
+-nokogiri_minitest_reporters_options = { color: true, slow_count: 10, detailed_skip: false }
+-nokogiri_minitest_reporters_options[:fast_fail] = true if ENV["NOKOGIRI_TEST_FAIL_FAST"]
+-puts "Minitest::Reporters options: #{nokogiri_minitest_reporters_options}"
+-Minitest::Reporters.use!(Minitest::Reporters::DefaultReporter.new(nokogiri_minitest_reporters_options))
+
+ require "fileutils"
+ require "tempfile"
diff --git a/gnu/packages/patches/vcmi-disable-privacy-breach.patch b/gnu/packages/patches/vcmi-disable-privacy-breach.patch
new file mode 100644
index 0000000000..c03bc66119
--- /dev/null
+++ b/gnu/packages/patches/vcmi-disable-privacy-breach.patch
@@ -0,0 +1,21 @@
+Origin: https://salsa.debian.org/games-team/vcmi/-/blob/debian/1.1.0+dfsg-1/debian/patches/disable-privacy-breach
+From: Johannes Schauer <josch@debian.org>
+Subject: do not check remote repositories on startup by default
+Forwarded: not-needed
+
+--- a/config/schemas/settings.json
++++ b/config/schemas/settings.json
+@@ -401,11 +401,11 @@
+ },
+ "autoCheckRepositories" : {
+ "type" : "boolean",
+- "default" : true
++ "default" : false
+ },
+ "updateOnStartup" : {
+ "type" : "boolean",
+- "default" : true
++ "default" : false
+ },
+ "updateConfigUrl" : {
+ "type" : "string",