summary refs log tree commit diff
path: root/gnu/packages/patches
diff options
context:
space:
mode:
authorLiliana Marie Prikler <liliana.prikler@gmail.com>2023-06-24 21:39:09 +0200
committerLiliana Marie Prikler <liliana.prikler@gmail.com>2023-06-24 21:39:09 +0200
commitda24d067d0954cc8f8d75fa9099ad6d8a01e1098 (patch)
treef287391c8ebbb15df5890d6b5911128408ff438e /gnu/packages/patches
parent909788c0aebd8098084c009afa98d1209c9ec869 (diff)
parentf25529b08e356f89ca7cecc44295085531a8faba (diff)
downloadguix-da24d067d0954cc8f8d75fa9099ad6d8a01e1098.tar.gz
Merge branch 'master' into gnome-team
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r--gnu/packages/patches/directfb-davinci-glibc-228-compat.patch41
-rw-r--r--gnu/packages/patches/flashrom-fix-building-on-aarch64.patch89
-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/hubbub-maybe-uninitialized.patch40
-rw-r--r--gnu/packages/patches/ibus-anthy-fix-tests.patch49
-rw-r--r--gnu/packages/patches/libtree-fix-check-non-x86.patch50
-rw-r--r--gnu/packages/patches/python-keras-integration-test.patch19
-rw-r--r--gnu/packages/patches/quodlibet-fix-invalid-glob.patch89
-rw-r--r--gnu/packages/patches/quodlibet-fix-mtime-tests.patch39
10 files changed, 383 insertions, 108 deletions
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/flashrom-fix-building-on-aarch64.patch b/gnu/packages/patches/flashrom-fix-building-on-aarch64.patch
deleted file mode 100644
index 9f54305b47..0000000000
--- a/gnu/packages/patches/flashrom-fix-building-on-aarch64.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-commit da6b3b70cb852dd8e9f9e21aef95fa83e7f7ab0d
-Author: Pyry Kontio <pyry.kontio@drasa.eu>
-Date:   Mon Jul 6 12:57:35 2020 +0900
-
-    Makefile: Fix building on AArch64 NixOS
-
-    The parsing of the output of archtest.c produced an unexpected
-    value on AArch64 NixOS. For example, the make variable ARCH was set to:
-
-    ```
-    bit outside of fd_set selected
-    arm
-    ```
-
-    This made the arch and OS checks fail.
-
-    This commit simplifies the parsing, making it more robust.
-
-    The C files archtest.c, endiantest.c and os.h used to set the
-    TARGET_OS, ARCH and ENDIAN variables, respectively, output
-    the result of the test as the final line, so just extracting
-    the final line and removing double quoting is enough.
-
-    This commit also fixes a bug with debug_shell lacking escaping
-    single quotes, which prevented using the single quote in the
-    debug_shell calls. It used to work by accident before this fix;
-    the line in the call happened to contain a balanced pair of double
-    quotes and lacked other characters that needed escaping, which
-    didn't break the debug_shell, but this was accidental and very
-    brittle.
-
-    Signed-off-by: Pyry Kontio <pyry.kontio@drasa.eu>
-    Change-Id: Iaa4477a71e758cf9ecad2c22f3b77bc6508a3510
-    Reviewed-on: https://review.coreboot.org/c/flashrom/+/43140
-    Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-    Reviewed-by: Angel Pons <th3fanbus@gmail.com>
-
-diff --git a/Makefile b/Makefile
-index f3f7717e..e475cbdb 100644
---- a/Makefile
-+++ b/Makefile
-@@ -83,7 +83,8 @@ dummy_for_make_3_80:=$(shell printf "Build started on %s\n\n" "$$(date)" >$(BUIL
-
- # Provide an easy way to execute a command, print its output to stdout and capture any error message on stderr
- # in the build details file together with the original stdout output.
--debug_shell = $(shell export LC_ALL=C ; { echo 'exec: export LC_ALL=C ; { $(1) ; }' >&2;  { $(1) ; } | tee -a $(BUILD_DETAILS_FILE) ; echo >&2 ; } 2>>$(BUILD_DETAILS_FILE))
-+debug_shell = $(shell export LC_ALL=C ; { echo 'exec: export LC_ALL=C ; { $(subst ','\'',$(1)) ; }' >&2; \
-+    { $(1) ; } | tee -a $(BUILD_DETAILS_FILE) ; echo >&2 ; } 2>>$(BUILD_DETAILS_FILE))
-
- ###############################################################################
- # General OS-specific settings.
-@@ -106,7 +107,8 @@ endif
- # IMPORTANT: The following line must be placed before TARGET_OS is ever used
- # (of course), but should come after any lines setting CC because the line
- # below uses CC itself.
--override TARGET_OS := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E os.h 2>/dev/null | grep -v '^\#' | grep '"' | cut -f 2 -d'"'))
-+override TARGET_OS := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E os.h 2>/dev/null \
-+    | tail -1 | cut -f 2 -d'"'))
-
- ifeq ($(TARGET_OS), Darwin)
- override CPPFLAGS += -I/opt/local/include -I/usr/local/include
-@@ -490,8 +492,10 @@ endif
- # IMPORTANT: The following line must be placed before ARCH is ever used
- # (of course), but should come after any lines setting CC because the line
- # below uses CC itself.
--override ARCH := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E archtest.c 2>/dev/null | grep -v '^\#' | grep '"' | cut -f 2 -d'"'))
--override ENDIAN := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E endiantest.c 2>/dev/null | grep -v '^\#'))
-+override ARCH := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E archtest.c 2>/dev/null \
-+    | tail -1 | cut -f 2 -d'"'))
-+override ENDIAN := $(strip $(call debug_shell,$(CC) $(CPPFLAGS) -E endiantest.c 2>/dev/null \
-+    | tail -1))
-
- # Disable the internal programmer on unsupported architectures (everything but x86 and mipsel)
- ifneq ($(ARCH)-little, $(filter $(ARCH),x86 mips)-$(ENDIAN))
-@@ -1299,12 +1303,12 @@ compiler: featuresavailable
-	@printf "Target arch is "
-	@# FreeBSD wc will output extraneous whitespace.
-	@echo $(ARCH)|wc -w|grep -q '^[[:blank:]]*1[[:blank:]]*$$' ||	\
--		( echo "unknown. Aborting."; exit 1)
-+		( echo "unknown (\"$(ARCH)\"). Aborting."; exit 1)
-	@printf "%s\n" '$(ARCH)'
-	@printf "Target OS is "
-	@# FreeBSD wc will output extraneous whitespace.
-	@echo $(TARGET_OS)|wc -w|grep -q '^[[:blank:]]*1[[:blank:]]*$$' ||	\
--		( echo "unknown. Aborting."; exit 1)
-+		( echo "unknown (\"$(TARGET_OS)\"). Aborting."; exit 1)
-	@printf "%s\n" '$(TARGET_OS)'
- ifeq ($(TARGET_OS), libpayload)
-	@$(CC) --version 2>&1 | grep -q coreboot || \
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/hubbub-maybe-uninitialized.patch b/gnu/packages/patches/hubbub-maybe-uninitialized.patch
new file mode 100644
index 0000000000..6f289a770e
--- /dev/null
+++ b/gnu/packages/patches/hubbub-maybe-uninitialized.patch
@@ -0,0 +1,40 @@
+From 69d81a8a4d4c223aad67cde0fdf64d64351b9802 Mon Sep 17 00:00:00 2001
+From: Andy Tai <atai@atai.org>
+Date: Sat, 27 May 2023 00:01:34 -0700
+Subject: [PATCH] prevent -Werror=maybe-uninitialized build failure with gcc 11
+ when building tests tokeniser2 and tokeniser3
+
+---
+ test/tokeniser2.c | 2 +-
+ test/tokeniser3.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/test/tokeniser2.c b/test/tokeniser2.c
+index c8ab9c0..4caae38 100644
+--- a/test/tokeniser2.c
++++ b/test/tokeniser2.c
+@@ -438,7 +438,7 @@ hubbub_error token_handler(const hubbub_token *token, void *pw)
+ 			/* Expected token only contained part of the data
+ 			 * Calculate how much is left, then try again with
+ 			 * the next expected token */
+-			hubbub_token t;
++			hubbub_token t = { 0 };
+ 
+ 			t.type = HUBBUB_TOKEN_CHARACTER;
+ 			t.data.character.ptr += len;
+diff --git a/test/tokeniser3.c b/test/tokeniser3.c
+index e33d018..b3be901 100644
+--- a/test/tokeniser3.c
++++ b/test/tokeniser3.c
+@@ -447,7 +447,7 @@ hubbub_error token_handler(const hubbub_token *token, void *pw)
+ 			/* Expected token only contained part of the data
+ 			 * Calculate how much is left, then try again with
+ 			 * the next expected token */
+-			hubbub_token t;
++			hubbub_token t = { 0 };
+ 
+ 			t.type = HUBBUB_TOKEN_CHARACTER;
+ 			t.data.character.ptr += len;
+-- 
+2.40.1
+
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/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/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/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
+