summary refs log tree commit diff
path: root/gnu/packages/patches
diff options
context:
space:
mode:
authorMarius Bakke <marius@gnu.org>2022-12-28 01:02:47 +0100
committerMarius Bakke <marius@gnu.org>2022-12-28 01:02:47 +0100
commitec0fbb471dfc6f72796da9ebafbb0630daa91267 (patch)
tree3b42f3d0a6470d85fbb8421179634bb278883e4e /gnu/packages/patches
parentf5ef7d34e4deecb80aff585c108b0a2ab1f33ce4 (diff)
parent0cb8f7125b19264b01962c1249c3df4c5ce85aa9 (diff)
downloadguix-ec0fbb471dfc6f72796da9ebafbb0630daa91267.tar.gz
Merge branch 'master' into staging
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r--gnu/packages/patches/ceph-boost-compat.patch18
-rw-r--r--gnu/packages/patches/ceph-rocksdb-compat.patch303
-rw-r--r--gnu/packages/patches/flashrom-fix-building-on-aarch64.patch89
-rw-r--r--gnu/packages/patches/jami-fix-qml-imports.patch78
-rw-r--r--gnu/packages/patches/jami-fix-unit-tests-build.patch139
-rw-r--r--gnu/packages/patches/jami-no-webengine.patch243
-rw-r--r--gnu/packages/patches/jami-sip-contacts.patch38
-rw-r--r--gnu/packages/patches/jami-sip-unregister.patch48
-rw-r--r--gnu/packages/patches/jami-sipaccount-segfault.patch30
-rw-r--r--gnu/packages/patches/jami-xcb-link.patch72
-rw-r--r--gnu/packages/patches/julia-tracker-16-compat.patch40
-rw-r--r--gnu/packages/patches/libgeotiff-fix-tests-with-proj-9.1.1.patch100
-rw-r--r--gnu/packages/patches/openbios-gcc-warnings.patch95
-rw-r--r--gnu/packages/patches/python-apsw-3.39.2.1-test-fix.patch27
-rw-r--r--gnu/packages/patches/python-flask-restful-werkzeug-compat.patch36
-rw-r--r--gnu/packages/patches/python-telingo-fix-comparison.patch19
16 files changed, 303 insertions, 1072 deletions
diff --git a/gnu/packages/patches/ceph-boost-compat.patch b/gnu/packages/patches/ceph-boost-compat.patch
deleted file mode 100644
index 1aecfbbed5..0000000000
--- a/gnu/packages/patches/ceph-boost-compat.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Add extra includes required for Boost 1.75 and later.
-
-Taken from upstram:
-
-  https://github.com/ceph/ceph/commit/ebf3a0398f18eab67d2ba25e6a10b41ff140f6a4
-
-diff --git a/src/rgw/rgw_string.h b/src/rgw/rgw_string.h
-index 257daa9c1fe6e..90e64f98a2587 100644
---- a/src/rgw/rgw_string.h
-+++ b/src/rgw/rgw_string.h
-@@ -8,5 +8,7 @@
- #include <stdlib.h>
- #include <limits.h>
- #include <string_view>
-+#include <string>
-+#include <stdexcept>
- 
- #include <boost/container/small_vector.hpp>
diff --git a/gnu/packages/patches/ceph-rocksdb-compat.patch b/gnu/packages/patches/ceph-rocksdb-compat.patch
deleted file mode 100644
index 9fb9b0caeb..0000000000
--- a/gnu/packages/patches/ceph-rocksdb-compat.patch
+++ /dev/null
@@ -1,303 +0,0 @@
-Adjust for newer versions of RocksDB.
-
-Taken from upstream:
-
-  https://github.com/ceph/ceph/pull/42815
-  https://github.com/ceph/ceph/commit/ff7f192ea3cf88ca1098bcf9396ff4f8ed1e8792.diff
-
-diff --git a/src/kv/rocksdb_cache/BinnedLRUCache.cc b/src/kv/rocksdb_cache/BinnedLRUCache.cc
-index 0d657883e92de..47c56e2ddd769 100644
---- a/src/kv/rocksdb_cache/BinnedLRUCache.cc
-+++ b/src/kv/rocksdb_cache/BinnedLRUCache.cc
-@@ -151,13 +151,20 @@ void BinnedLRUCacheShard::EraseUnRefEntries() {
-   }
- }
- 
--void BinnedLRUCacheShard::ApplyToAllCacheEntries(void (*callback)(void*, size_t),
--                                           bool thread_safe) {
-+void BinnedLRUCacheShard::ApplyToAllCacheEntries(
-+  const std::function<void(const rocksdb::Slice& key,
-+                           void* value,
-+                           size_t charge,
-+                           DeleterFn)>& callback,
-+  bool thread_safe)
-+{
-   if (thread_safe) {
-     mutex_.lock();
-   }
-   table_.ApplyToAllCacheEntries(
--      [callback](BinnedLRUHandle* h) { callback(h->value, h->charge); });
-+    [callback](BinnedLRUHandle* h) {
-+      callback(h->key(), h->value, h->charge, h->deleter);
-+    });
-   if (thread_safe) {
-     mutex_.unlock();
-   }
-@@ -345,7 +352,7 @@ bool BinnedLRUCacheShard::Release(rocksdb::Cache::Handle* handle, bool force_era
- 
- rocksdb::Status BinnedLRUCacheShard::Insert(const rocksdb::Slice& key, uint32_t hash, void* value,
-                              size_t charge,
--                             void (*deleter)(const rocksdb::Slice& key, void* value),
-+                             DeleterFn deleter,
-                              rocksdb::Cache::Handle** handle, rocksdb::Cache::Priority priority) {
-   auto e = new BinnedLRUHandle();
-   rocksdb::Status s;
-@@ -464,6 +471,12 @@ std::string BinnedLRUCacheShard::GetPrintableOptions() const {
-   return std::string(buffer);
- }
- 
-+DeleterFn BinnedLRUCacheShard::GetDeleter(rocksdb::Cache::Handle* h) const
-+{
-+  auto* handle = reinterpret_cast<BinnedLRUHandle*>(h);
-+  return handle->deleter;
-+}
-+
- BinnedLRUCache::BinnedLRUCache(CephContext *c, 
-                                size_t capacity, 
-                                int num_shard_bits,
-@@ -519,6 +532,13 @@ void BinnedLRUCache::DisownData() {
- #endif  // !__SANITIZE_ADDRESS__
- }
- 
-+#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22)
-+DeleterFn BinnedLRUCache::GetDeleter(Handle* handle) const
-+{
-+  return reinterpret_cast<const BinnedLRUHandle*>(handle)->deleter;
-+}
-+#endif
-+
- size_t BinnedLRUCache::TEST_GetLRUSize() {
-   size_t lru_size_of_all_shards = 0;
-   for (int i = 0; i < num_shards_; i++) {
-diff --git a/src/kv/rocksdb_cache/BinnedLRUCache.h b/src/kv/rocksdb_cache/BinnedLRUCache.h
-index 85608be0e5734..88bf4502e8927 100644
---- a/src/kv/rocksdb_cache/BinnedLRUCache.h
-+++ b/src/kv/rocksdb_cache/BinnedLRUCache.h
-@@ -56,7 +56,7 @@ std::shared_ptr<rocksdb::Cache> NewBinnedLRUCache(
- 
- struct BinnedLRUHandle {
-   void* value;
--  void (*deleter)(const rocksdb::Slice&, void* value);
-+  DeleterFn deleter;
-   BinnedLRUHandle* next_hash;
-   BinnedLRUHandle* next;
-   BinnedLRUHandle* prev;
-@@ -189,7 +189,7 @@ class alignas(CACHE_LINE_SIZE) BinnedLRUCacheShard : public CacheShard {
-   // Like Cache methods, but with an extra "hash" parameter.
-   virtual rocksdb::Status Insert(const rocksdb::Slice& key, uint32_t hash, void* value,
-                         size_t charge,
--                        void (*deleter)(const rocksdb::Slice& key, void* value),
-+                        DeleterFn deleter,
-                         rocksdb::Cache::Handle** handle,
-                         rocksdb::Cache::Priority priority) override;
-   virtual rocksdb::Cache::Handle* Lookup(const rocksdb::Slice& key, uint32_t hash) override;
-@@ -205,13 +205,19 @@ class alignas(CACHE_LINE_SIZE) BinnedLRUCacheShard : public CacheShard {
-   virtual size_t GetUsage() const override;
-   virtual size_t GetPinnedUsage() const override;
- 
--  virtual void ApplyToAllCacheEntries(void (*callback)(void*, size_t),
--                                      bool thread_safe) override;
-+  virtual void ApplyToAllCacheEntries(
-+    const std::function<void(const rocksdb::Slice& key,
-+                             void* value,
-+                             size_t charge,
-+                             DeleterFn)>& callback,
-+    bool thread_safe) override;
- 
-   virtual void EraseUnRefEntries() override;
- 
-   virtual std::string GetPrintableOptions() const override;
- 
-+  virtual DeleterFn GetDeleter(rocksdb::Cache::Handle* handle) const override;
-+
-   void TEST_GetLRUList(BinnedLRUHandle** lru, BinnedLRUHandle** lru_low_pri);
- 
-   //  Retrieves number of elements in LRU, for unit test purpose only
-@@ -304,7 +310,9 @@ class BinnedLRUCache : public ShardedCache {
-   virtual size_t GetCharge(Handle* handle) const override;
-   virtual uint32_t GetHash(Handle* handle) const override;
-   virtual void DisownData() override;
--
-+#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22)
-+  virtual DeleterFn GetDeleter(Handle* handle) const override;
-+#endif
-   //  Retrieves number of elements in LRU, for unit test purpose only
-   size_t TEST_GetLRUSize();
-   // Sets the high pri pool ratio
-diff --git a/src/kv/rocksdb_cache/ShardedCache.cc b/src/kv/rocksdb_cache/ShardedCache.cc
-index 367140a94d8be..6cbd89ad6472c 100644
---- a/src/kv/rocksdb_cache/ShardedCache.cc
-+++ b/src/kv/rocksdb_cache/ShardedCache.cc
-@@ -44,7 +44,7 @@ void ShardedCache::SetStrictCapacityLimit(bool strict_capacity_limit) {
- }
- 
- rocksdb::Status ShardedCache::Insert(const rocksdb::Slice& key, void* value, size_t charge,
--                            void (*deleter)(const rocksdb::Slice& key, void* value),
-+                            DeleterFn deleter,
-                             rocksdb::Cache::Handle** handle, Priority priority) {
-   uint32_t hash = HashSlice(key);
-   return GetShard(Shard(hash))
-@@ -109,13 +109,36 @@ size_t ShardedCache::GetPinnedUsage() const {
-   return usage;
- }
- 
-+#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22)
-+DeleterFn ShardedCache::GetDeleter(Handle* handle) const
-+{
-+  uint32_t hash = GetHash(handle);
-+  return GetShard(Shard(hash))->GetDeleter(handle);
-+}
-+
-+void ShardedCache::ApplyToAllEntries(
-+    const std::function<void(const rocksdb::Slice& key, void* value, size_t charge,
-+                             DeleterFn deleter)>& callback,
-+    const ApplyToAllEntriesOptions& opts)
-+{
-+  int num_shards = 1 << num_shard_bits_;
-+  for (int s = 0; s < num_shards; s++) {
-+    GetShard(s)->ApplyToAllCacheEntries(callback, true /* thread_safe */);
-+  }
-+}
-+#else
- void ShardedCache::ApplyToAllCacheEntries(void (*callback)(void*, size_t),
-                                           bool thread_safe) {
-   int num_shards = 1 << num_shard_bits_;
-   for (int s = 0; s < num_shards; s++) {
--    GetShard(s)->ApplyToAllCacheEntries(callback, thread_safe);
-+    GetShard(s)->ApplyToAllCacheEntries(
-+      [callback](const rocksdb::Slice&, void* value, size_t charge, DeleterFn) {
-+        callback(value, charge);
-+      },
-+      thread_safe);
-   }
- }
-+#endif
- 
- void ShardedCache::EraseUnRefEntries() {
-   int num_shards = 1 << num_shard_bits_;
-@@ -131,7 +154,7 @@ std::string ShardedCache::GetPrintableOptions() const {
-   char buffer[kBufferSize];
-   {
-     std::lock_guard<std::mutex> l(capacity_mutex_);
--    snprintf(buffer, kBufferSize, "    capacity : %" ROCKSDB_PRIszt "\n",
-+    snprintf(buffer, kBufferSize, "    capacity : %zu\n",
-              capacity_);
-     ret.append(buffer);
-     snprintf(buffer, kBufferSize, "    num_shard_bits : %d\n", num_shard_bits_);
-diff --git a/src/kv/rocksdb_cache/ShardedCache.h b/src/kv/rocksdb_cache/ShardedCache.h
-index 4d64893ab1c7b..f98421a09a33a 100644
---- a/src/kv/rocksdb_cache/ShardedCache.h
-+++ b/src/kv/rocksdb_cache/ShardedCache.h
-@@ -14,6 +14,7 @@
- #include <string>
- #include <mutex>
- 
-+#include "rocksdb/version.h"
- #include "rocksdb/cache.h"
- #include "include/ceph_hash.h"
- #include "common/PriorityCache.h"
-@@ -22,10 +23,11 @@
- #ifndef CACHE_LINE_SIZE
- #define CACHE_LINE_SIZE 64 // XXX arch-specific define 
- #endif
--#define ROCKSDB_PRIszt "zu"
- 
- namespace rocksdb_cache {
- 
-+using DeleterFn = void (*)(const rocksdb::Slice& key, void* value);
-+
- // Single cache shard interface.
- class CacheShard {
-  public:
-@@ -34,7 +36,7 @@ class CacheShard {
- 
-   virtual rocksdb::Status Insert(const rocksdb::Slice& key, uint32_t hash, void* value,
-                                  size_t charge,
--                                 void (*deleter)(const rocksdb::Slice& key, void* value),
-+                                 DeleterFn deleter,
-                                  rocksdb::Cache::Handle** handle, rocksdb::Cache::Priority priority) = 0;
-   virtual rocksdb::Cache::Handle* Lookup(const rocksdb::Slice& key, uint32_t hash) = 0;
-   virtual bool Ref(rocksdb::Cache::Handle* handle) = 0;
-@@ -44,10 +46,15 @@ class CacheShard {
-   virtual void SetStrictCapacityLimit(bool strict_capacity_limit) = 0;
-   virtual size_t GetUsage() const = 0;
-   virtual size_t GetPinnedUsage() const = 0;
--  virtual void ApplyToAllCacheEntries(void (*callback)(void*, size_t),
--                                      bool thread_safe) = 0;
-+  virtual void ApplyToAllCacheEntries(
-+    const std::function<void(const rocksdb::Slice& key,
-+                             void* value,
-+                             size_t charge,
-+                             DeleterFn)>& callback,
-+    bool thread_safe) = 0;
-   virtual void EraseUnRefEntries() = 0;
-   virtual std::string GetPrintableOptions() const { return ""; }
-+  virtual DeleterFn GetDeleter(rocksdb::Cache::Handle* handle) const = 0;
- };
- 
- // Generic cache interface which shards cache by hash of keys. 2^num_shard_bits
-@@ -57,34 +64,43 @@ class ShardedCache : public rocksdb::Cache, public PriorityCache::PriCache {
-  public:
-   ShardedCache(size_t capacity, int num_shard_bits, bool strict_capacity_limit);
-   virtual ~ShardedCache() = default;
-+  // rocksdb::Cache
-   virtual const char* Name() const override = 0;
--  virtual CacheShard* GetShard(int shard) = 0;
--  virtual const CacheShard* GetShard(int shard) const = 0;
--  virtual void* Value(Handle* handle) override = 0;
--  virtual size_t GetCharge(Handle* handle) const = 0;
--  virtual uint32_t GetHash(Handle* handle) const = 0;
--  virtual void DisownData() override = 0;
--
--  virtual void SetCapacity(size_t capacity) override;
--  virtual void SetStrictCapacityLimit(bool strict_capacity_limit) override;
--
-   virtual rocksdb::Status Insert(const rocksdb::Slice& key, void* value, size_t charge,
--                                 void (*deleter)(const rocksdb::Slice& key, void* value),
-+                                 DeleterFn,
-                                  rocksdb::Cache::Handle** handle, Priority priority) override;
-   virtual rocksdb::Cache::Handle* Lookup(const rocksdb::Slice& key, rocksdb::Statistics* stats) override;
-   virtual bool Ref(rocksdb::Cache::Handle* handle) override;
-   virtual bool Release(rocksdb::Cache::Handle* handle, bool force_erase = false) override;
-+  virtual void* Value(Handle* handle) override = 0;
-   virtual void Erase(const rocksdb::Slice& key) override;
-   virtual uint64_t NewId() override;
--  virtual size_t GetCapacity() const override;
-+  virtual void SetCapacity(size_t capacity) override;
-+  virtual void SetStrictCapacityLimit(bool strict_capacity_limit) override;
-   virtual bool HasStrictCapacityLimit() const override;
-+  virtual size_t GetCapacity() const override;
-   virtual size_t GetUsage() const override;
-   virtual size_t GetUsage(rocksdb::Cache::Handle* handle) const override;
-   virtual size_t GetPinnedUsage() const override;
-+  virtual size_t GetCharge(Handle* handle) const = 0;
-+#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22)
-+  virtual DeleterFn GetDeleter(Handle* handle) const override;
-+#endif
-+  virtual void DisownData() override = 0;
-+#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22)
-+  virtual void ApplyToAllEntries(
-+      const std::function<void(const rocksdb::Slice& key, void* value, size_t charge,
-+                               DeleterFn deleter)>& callback,
-+      const ApplyToAllEntriesOptions& opts) override;
-+#else
-   virtual void ApplyToAllCacheEntries(void (*callback)(void*, size_t),
-                                       bool thread_safe) override;
-+#endif
-   virtual void EraseUnRefEntries() override;
-   virtual std::string GetPrintableOptions() const override;
-+  virtual CacheShard* GetShard(int shard) = 0;
-+  virtual const CacheShard* GetShard(int shard) const = 0;
-+  virtual uint32_t GetHash(Handle* handle) const = 0;
- 
-   int GetNumShardBits() const { return num_shard_bits_; }
- 
-@@ -120,7 +136,7 @@ class ShardedCache : public rocksdb::Cache, public PriorityCache::PriCache {
- //    return Hash(s.data(), s.size(), 0);
-   }
- 
--  uint32_t Shard(uint32_t hash) {
-+  uint32_t Shard(uint32_t hash) const {
-     // Note, hash >> 32 yields hash in gcc, not the zero we expect!
-     return (num_shard_bits_ > 0) ? (hash >> (32 - num_shard_bits_)) : 0;
-   }
diff --git a/gnu/packages/patches/flashrom-fix-building-on-aarch64.patch b/gnu/packages/patches/flashrom-fix-building-on-aarch64.patch
new file mode 100644
index 0000000000..9f54305b47
--- /dev/null
+++ b/gnu/packages/patches/flashrom-fix-building-on-aarch64.patch
@@ -0,0 +1,89 @@
+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/jami-fix-qml-imports.patch b/gnu/packages/patches/jami-fix-qml-imports.patch
deleted file mode 100644
index e24171785d..0000000000
--- a/gnu/packages/patches/jami-fix-qml-imports.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 9c4d065093d18b5495d3193028457b7393daea4b Mon Sep 17 00:00:00 2001
-From: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com>
-Date: Mon, 7 Nov 2022 16:26:50 -0500
-Subject: [PATCH] tests: Fix broken QML import directives.
-
-Fixes
-<https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/883>.
-
-Automated via:
-  $ find tests -name '*.qml'  | xargs sed -i 's,qrc:/src,../../../src,'
-
-Change-Id: Ic1a2f419e3e328e8bf861e7fdf370f15da66675f
----
-Upstream status: https://review.jami.net/c/jami-client-qt/+/22990
-
- tests/qml/src/tst_ChatViewFooter.qml       | 2 +-
- tests/qml/src/tst_FilesToSendContainer.qml | 2 +-
- tests/qml/src/tst_PresenceIndicator.qml    | 2 +-
- tests/qml/src/tst_WizardView.qml           | 4 ++--
- 4 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/client-qt/tests/qml/src/tst_ChatViewFooter.qml b/client-qt/tests/qml/src/tst_ChatViewFooter.qml
-index 84316d78..b0cffe1a 100644
---- a/client-qt/tests/qml/src/tst_ChatViewFooter.qml
-+++ b/client-qt/tests/qml/src/tst_ChatViewFooter.qml
-@@ -25,7 +25,7 @@ import QtTest
- import net.jami.Models 1.1
- import net.jami.Constants 1.1
- 
--import "qrc:/src/app/mainview/components"
-+import "../../../src/app/mainview/components"
- 
- ColumnLayout {
-     id: root
-diff --git a/client-qt/tests/qml/src/tst_FilesToSendContainer.qml b/client-qt/tests/qml/src/tst_FilesToSendContainer.qml
-index b7f4810a..9432a44d 100644
---- a/client-qt/tests/qml/src/tst_FilesToSendContainer.qml
-+++ b/client-qt/tests/qml/src/tst_FilesToSendContainer.qml
-@@ -25,7 +25,7 @@ import QtTest
- import net.jami.Models 1.1
- import net.jami.Constants 1.1
- 
--import "qrc:/src/app/mainview/components"
-+import "../../../src/app/mainview/components"
- 
- ColumnLayout {
-     id: root
-diff --git a/client-qt/tests/qml/src/tst_PresenceIndicator.qml b/client-qt/tests/qml/src/tst_PresenceIndicator.qml
-index 0eda9169..46c048e8 100644
---- a/client-qt/tests/qml/src/tst_PresenceIndicator.qml
-+++ b/client-qt/tests/qml/src/tst_PresenceIndicator.qml
-@@ -22,7 +22,7 @@ import QtTest
- import net.jami.Models 1.1
- import net.jami.Constants 1.1
- 
--import "qrc:/src/app/commoncomponents"
-+import "../../../src/app/commoncomponents"
- 
- PresenceIndicator {
-     id: uut
-diff --git a/client-qt/tests/qml/src/tst_WizardView.qml b/client-qt/tests/qml/src/tst_WizardView.qml
-index 08698b7a..6a4f971d 100644
---- a/client-qt/tests/qml/src/tst_WizardView.qml
-+++ b/client-qt/tests/qml/src/tst_WizardView.qml
-@@ -24,8 +24,8 @@ import net.jami.Models 1.1
- import net.jami.Constants 1.1
- import net.jami.Enums 1.1
- 
--import "qrc:/src/app/wizardview"
--import "qrc:/src/app/commoncomponents"
-+import "../../../src/app/wizardview"
-+import "../../../src/app/commoncomponents"
- 
- WizardView {
-     id: uut
--- 
-2.37.3
-
diff --git a/gnu/packages/patches/jami-fix-unit-tests-build.patch b/gnu/packages/patches/jami-fix-unit-tests-build.patch
deleted file mode 100644
index 0216a4bd67..0000000000
--- a/gnu/packages/patches/jami-fix-unit-tests-build.patch
+++ /dev/null
@@ -1,139 +0,0 @@
-From 82ecd786a29344d57e6dd95ef0800bef9dd44542 Mon Sep 17 00:00:00 2001
-From: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com>
-Date: Sun, 6 Nov 2022 00:16:34 -0400
-Subject: [PATCH 3/3] tests: Fix various compilation failures.
-
-Fixes <https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/882>.
-
-* tests/CMakeLists.txt: Add "Widgets" Qt module to find_package call.
-(QML_TEST_LIBS): Add Qt::Widgets.
-* tests/CMakeLists.txt: Rename QML_LIBS to QT_LIBS, a regression
-introduced in d82e3820706214d15d7cb7462978b7a43b798355.  Remove the
-dependency on on the Widgets module, now provided via QT_LIBS.
-* tests/qml/main.cpp [WITH_WEBENGINE]: Include QtWebEngine modules
-conditionally.
-(main) [WITH_WEBENGINE]: Initialize webengine conditionally.
-* tests/CMakeLists.txt: Link test objects with ${LIBCLIENT_NAME}.
-* src/app/qmlregister.h (registerTypes): Change parent type from
-MainApplication* to QObject*
-* src/app/qmlregister.cpp (registerTypes): Likewise.
-* tests/unittests/account_unittest.cpp (globalEnv): Remove variable.
-* tests/unittests/contact_unittest.cpp: Likewise.
----
-Upstream status: https://review.jami.net/c/jami-client-qt/+/22984/1
-
- src/app/qmlregister.cpp              | 2 +-
- src/app/qmlregister.h                | 2 +-
- tests/CMakeLists.txt                 | 6 +++---
- tests/qml/main.cpp                   | 7 ++++---
- tests/unittests/account_unittest.cpp | 2 --
- tests/unittests/contact_unittest.cpp | 2 --
- 6 files changed, 9 insertions(+), 12 deletions(-)
-
-diff --git a/client-qt/client-qt/src/app/qmlregister.cpp b/client-qt/src/app/qmlregister.cpp
-index 285f7814..67222eb5 100644
---- a/client-qt/client-qt/src/app/qmlregister.cpp
-+++ b/client-qt/src/app/qmlregister.cpp
-@@ -105,7 +105,7 @@ registerTypes(QQmlEngine* engine,
-               AppSettingsManager* settingsManager,
-               PreviewEngine* previewEngine,
-               ScreenInfo* screenInfo,
--              MainApplication* parent)
-+              QObject* parent)
- {
-     // setup the adapters (their lifetimes are that of MainApplication)
-     auto callAdapter = new CallAdapter(systemTray, lrcInstance, parent);
-diff --git a/client-qt/client-qt/src/app/qmlregister.h b/client-qt/src/app/qmlregister.h
-index 38bfd091..aac0a887 100644
---- a/client-qt/client-qt/src/app/qmlregister.h
-+++ b/client-qt/src/app/qmlregister.h
-@@ -67,5 +67,5 @@ void registerTypes(QQmlEngine* engine,
-                    AppSettingsManager* appSettingsManager,
-                    PreviewEngine* previewEngine,
-                    ScreenInfo* screenInfo,
--                   MainApplication* parent);
-+                   QObject* parent);
- }
-diff --git a/client-qt/client-qt/tests/CMakeLists.txt b/client-qt/tests/CMakeLists.txt
-index 8904d5ec..4e42b307 100644
---- a/client-qt/client-qt/tests/CMakeLists.txt
-+++ b/client-qt/tests/CMakeLists.txt
-@@ -1,4 +1,4 @@
--find_package(Qt${QT_VERSION_MAJOR} CONFIG REQUIRED QuickTest Test)
-+find_package(Qt${QT_VERSION_MAJOR} CONFIG REQUIRED QuickTest Test Widgets)
- 
- if(MSVC)
-     # Download and unpack googletest for windows
-@@ -15,7 +15,7 @@ else()
- endif()
- 
- enable_testing(true)
--set(QML_TEST_LIBS ${QML_LIBS} Qt::QuickTest Qt::Test)
-+set(QML_TEST_LIBS ${QT_LIBS} ${LIBCLIENT_NAME} Qt::QuickTest Qt::Test Qt::Widgets)
- set(TESTS_INCLUDES
-     ${CMAKE_SOURCE_DIR}/src
-     ${CMAKE_SOURCE_DIR}/tests/qml
-@@ -192,4 +192,4 @@ else()
-                                ${LRC}/include)
- 
-     add_test(NAME UnitTests COMMAND unittests)
--endif()
-\ No newline at end of file
-+endif()
-diff --git a/client-qt/client-qt/tests/qml/main.cpp b/client-qt/tests/qml/main.cpp
-index 09c02f3e..4c42027c 100644
---- a/client-qt/client-qt/tests/qml/main.cpp
-+++ b/client-qt/tests/qml/main.cpp
-@@ -31,9 +31,10 @@
- #include <QQmlEngine>
- #include <QQmlContext>
- #include <QFontDatabase>
-+#ifdef WITH_WEBENGINE
- #include <QtWebEngineCore>
- #include <QtWebEngineQuick>
--
-+#endif
- #ifdef Q_OS_WIN
- #include <windows.h>
- #endif
-@@ -155,9 +156,9 @@ main(int argc, char** argv)
-         // Adjust the argument count.
-         argc = std::distance(argv, end);
-     }
--
-+#ifdef WITH_WEBENGINE
-     QtWebEngineQuick::initialize();
--
-+#endif
-     QTEST_SET_MAIN_SOURCE_PATH
-     Setup setup(muteDring);
-     return quick_test_main_with_setup(argc, argv, "qml_test", nullptr, &setup);
-diff --git a/client-qt/client-qt/tests/unittests/account_unittest.cpp b/client-qt/tests/unittests/account_unittest.cpp
-index aa98453e..5af2ad6e 100644
---- a/client-qt/client-qt/tests/unittests/account_unittest.cpp
-+++ b/client-qt/tests/unittests/account_unittest.cpp
-@@ -19,8 +19,6 @@
- 
- #include "globaltestenvironment.h"
- 
--TestEnvironment globalEnv;
--
- /*!
-  * Test fixture for AccountAdapter testing
-  */
-diff --git a/client-qt/client-qt/tests/unittests/contact_unittest.cpp b/client-qt/tests/unittests/contact_unittest.cpp
-index af8a9a22..b05cc856 100644
---- a/client-qt/client-qt/tests/unittests/contact_unittest.cpp
-+++ b/client-qt/tests/unittests/contact_unittest.cpp
-@@ -18,8 +18,6 @@
- 
- #include "globaltestenvironment.h"
- 
--TestEnvironment globalEnv;
--
- /*!
-  * Test fixture for AccountAdapter testing
-  */
--- 
-2.37.3
-
diff --git a/gnu/packages/patches/jami-no-webengine.patch b/gnu/packages/patches/jami-no-webengine.patch
deleted file mode 100644
index f26cd8e3f5..0000000000
--- a/gnu/packages/patches/jami-no-webengine.patch
+++ /dev/null
@@ -1,243 +0,0 @@
-From 1f73d3c88e94f2d932c59cab8a02c72a325ccc20 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?S=C3=A9bastien=20Blin?=
- <sebastien.blin@savoirfairelinux.com>
-Date: Fri, 11 Nov 2022 16:19:11 -0500
-Subject: [PATCH] misc: fix build without webengine
-
-Change-Id: I2511cd89e1ce7f60424f69ab6576d7fb992dd58c
-GitLab: #881
----
- .../components/DocumentsScrollview.qml        |  1 -
- src/app/mainview/components/FilePreview.qml   |  1 -
- src/app/mainview/components/MediaPreview.qml  | 57 ++--------------
- .../mainview/components/SwarmDetailsPanel.qml |  1 -
- src/app/nowebengine/VideoPreview.qml          | 24 +++++++
- src/app/webengine/VideoPreview.qml            | 68 +++++++++++++++++++
- 6 files changed, 99 insertions(+), 53 deletions(-)
- create mode 100644 src/app/nowebengine/VideoPreview.qml
- create mode 100644 src/app/webengine/VideoPreview.qml
-
-diff --git a/client-qt/src/app/mainview/components/DocumentsScrollview.qml b/client-qt/src/app/mainview/components/DocumentsScrollview.qml
-index df516961..3338536a 100644
---- a/client-qt/src/app/mainview/components/DocumentsScrollview.qml
-+++ b/client-qt/src/app/mainview/components/DocumentsScrollview.qml
-@@ -20,7 +20,6 @@ import QtQuick.Controls
- import QtQuick.Layouts
- import Qt.labs.platform
- import Qt5Compat.GraphicalEffects
--import QtWebEngine
- 
- import net.jami.Models 1.1
- import net.jami.Adapters 1.1
-diff --git a/client-qt/src/app/mainview/components/FilePreview.qml b/client-qt/src/app/mainview/components/FilePreview.qml
-index 57b1ec8b..fe8f3fd9 100644
---- a/client-qt/src/app/mainview/components/FilePreview.qml
-+++ b/client-qt/src/app/mainview/components/FilePreview.qml
-@@ -19,7 +19,6 @@ import QtQuick.Controls
- import QtQuick.Layouts
- import Qt.labs.platform
- import Qt5Compat.GraphicalEffects
--import QtWebEngine
- 
- import net.jami.Models 1.1
- import net.jami.Adapters 1.1
-diff --git a/client-qt/src/app/mainview/components/MediaPreview.qml b/client-qt/src/app/mainview/components/MediaPreview.qml
-index 0c33bf3e..965f9343 100644
---- a/client-qt/src/app/mainview/components/MediaPreview.qml
-+++ b/client-qt/src/app/mainview/components/MediaPreview.qml
-@@ -19,7 +19,6 @@ import QtQuick.Controls
- import QtQuick.Layouts
- import Qt.labs.platform
- import Qt5Compat.GraphicalEffects
--import QtWebEngine
- 
- import net.jami.Models 1.1
- import net.jami.Adapters 1.1
-@@ -92,59 +91,17 @@ Component {
-                         }
-                         Component {
-                             id: avMediaComp
--
-                             Loader {
--                                property real msgRadius: 20
--
--                                Rectangle {
--                                    id: videoAudioRect
--                                    color: JamiTheme.secondaryBackgroundColor
--                                    anchors.fill: parent
--
--                                    WebEngineView {
--                                        id: wev
--
--                                        property bool isVideo: mediaInfo.isVideo
--                                        property string html: mediaInfo.html
--
--                                        anchors.fill: parent
--                                        anchors.verticalCenter: videoAudioRect.verticalCenter
--                                        backgroundColor: JamiTheme.secondaryBackgroundColor
--                                        anchors.topMargin: isVideo? 0 :  wev.implicitHeight / 2
--                                        settings.fullScreenSupportEnabled: isVideo
--                                        settings.javascriptCanOpenWindows: false
--                                        Component.onCompleted: loadHtml(html, 'file://')
--                                        onFullScreenRequested: function(request) {
--                                            if (request.toggleOn) {
--                                                layoutManager.pushFullScreenItem(
--                                                            this,
--                                                            videoAudioRect,
--                                                            null,
--                                                            function() { wev.fullScreenCancelled() })
--                                            } else if (!request.toggleOn) {
--                                                layoutManager.removeFullScreenItem(this)
--                                            }
--                                            request.accept()
--                                        }
--                                    }
--
--                                    layer.enabled: true
--                                    layer.effect: OpacityMask {
--                                        maskSource: Item {
--                                            width: videoAudioRect.width
--                                            height: videoAudioRect.height
--                                            Rectangle {
--                                                anchors.centerIn: parent
--                                                width:  videoAudioRect.width
--                                                height: videoAudioRect.height
--                                                radius: JamiTheme.swarmDetailsPageDocumentsMediaRadius
--                                            }
--                                        }
--                                    }
-+                                Component.onCompleted: {
-+                                    var qml = WITH_WEBENGINE ?
-+                                                "qrc:/webengine/VideoPreview.qml" :
-+                                                "qrc:/nowebengine/VideoPreview.qml"
-+                                    setSource( qml, { isVideo: mediaInfo.isVideo, html:mediaInfo.html } )
-                                 }
-+
-+                                property real msgRadius: 20
-                             }
-                         }
--
-                         Component {
-                             id: imageMediaComp
- 
-diff --git a/client-qt/src/app/mainview/components/SwarmDetailsPanel.qml b/client-qt/src/app/mainview/components/SwarmDetailsPanel.qml
-index 0dd93bc2..7625a76e 100644
---- a/client-qt/src/app/mainview/components/SwarmDetailsPanel.qml
-+++ b/client-qt/src/app/mainview/components/SwarmDetailsPanel.qml
-@@ -21,7 +21,6 @@ import QtQuick.Controls
- import QtQuick.Layouts
- import Qt.labs.platform
- import Qt5Compat.GraphicalEffects
--import QtWebEngine
- 
- import net.jami.Models 1.1
- import net.jami.Adapters 1.1
-diff --git a/client-qt/src/app/nowebengine/VideoPreview.qml b/client-qt/src/app/nowebengine/VideoPreview.qml
-new file mode 100644
-index 00000000..8c2e8a4f
---- /dev/null
-+++ b/client-qt/src/app/nowebengine/VideoPreview.qml
-@@ -0,0 +1,24 @@
-+/*
-+ * Copyright (C) 2022 Savoir-faire Linux Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 3 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
-+ */
-+
-+import QtQuick
-+import QtQuick.Controls
-+import QtQuick.Layouts
-+
-+Rectangle {
-+    property var mediaInfo: undefined
-+}
-\ No newline at end of file
-diff --git a/client-qt/src/app/webengine/VideoPreview.qml b/client-qt/src/app/webengine/VideoPreview.qml
-new file mode 100644
-index 00000000..edc03599
---- /dev/null
-+++ b/client-qt/src/app/webengine/VideoPreview.qml
-@@ -0,0 +1,68 @@
-+/*
-+ * Copyright (C) 2022 Savoir-faire Linux Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 3 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
-+ */
-+
-+import QtQuick
-+import QtWebEngine
-+import Qt5Compat.GraphicalEffects
-+
-+import net.jami.Constants 1.1
-+
-+Rectangle {
-+    id: root
-+    color: JamiTheme.secondaryBackgroundColor
-+    anchors.fill: parent
-+    property bool isVideo: false
-+    property string html: ""
-+
-+    WebEngineView {
-+        id: wev
-+
-+        anchors.fill: parent
-+        anchors.verticalCenter: root.verticalCenter
-+        backgroundColor: JamiTheme.secondaryBackgroundColor
-+        anchors.topMargin: root.isVideo? 0 :  wev.implicitHeight / 2
-+        settings.fullScreenSupportEnabled: root.isVideo
-+        settings.javascriptCanOpenWindows: false
-+        Component.onCompleted: loadHtml(root.html, 'file://')
-+        onFullScreenRequested: function(request) {
-+            if (request.toggleOn) {
-+                layoutManager.pushFullScreenItem(
-+                            this,
-+                            root,
-+                            null,
-+                            function() { wev.fullScreenCancelled() })
-+            } else if (!request.toggleOn) {
-+                layoutManager.removeFullScreenItem(this)
-+            }
-+            request.accept()
-+        }
-+    }
-+
-+    layer.enabled: true
-+    layer.effect: OpacityMask {
-+        maskSource: Item {
-+            width: root.width
-+            height: root.height
-+            Rectangle {
-+                anchors.centerIn: parent
-+                width:  root.width
-+                height: root.height
-+                radius: JamiTheme.swarmDetailsPageDocumentsMediaRadius
-+            }
-+        }
-+    }
-+}
-\ No newline at end of file
--- 
-2.37.3
-
diff --git a/gnu/packages/patches/jami-sip-contacts.patch b/gnu/packages/patches/jami-sip-contacts.patch
deleted file mode 100644
index dce8f6b98d..0000000000
--- a/gnu/packages/patches/jami-sip-contacts.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 3ba007d02bc19e499c8f3c2345302453028831a8 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?S=C3=A9bastien=20Blin?=
- <sebastien.blin@savoirfairelinux.com>
-Date: Tue, 29 Nov 2022 09:26:20 -0500
-Subject: [PATCH] misc: fix incoming message sip
-
-We do not need to check contacts for SIP as it will be considered
-automatically as a contact
-
-Change-Id: If78113e9d79dcd695c39c2d12c0441e2cb282737
----
- src/libclient/conversationmodel.cpp | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/client-qt/src/libclient/conversationmodel.cpp b/client-qt/src/libclient/conversationmodel.cpp
-index dba206bd..5604a17c 100644
---- a/client-qt/src/libclient/conversationmodel.cpp
-+++ b/client-qt/src/libclient/conversationmodel.cpp
-@@ -3611,8 +3611,12 @@ ConversationModelPimpl::addIncomingMessage(const QString& peerId,
-         try {
-             auto contact = linked.owner.contactModel->getContact(peerId);
-             isRequest = contact.profileInfo.type == profile::Type::PENDING;
--            if (isRequest && !contact.isBanned && peerId != linked.owner.profileInfo.uri) {
--                addContactRequest(peerId);
-+            // if isSip, it will be a contact!
-+            auto isSip = linked.owner.profileInfo.type == profile::Type::SIP;
-+            if (isSip
-+                || (isRequest && !contact.isBanned && peerId != linked.owner.profileInfo.uri)) {
-+                if (!isSip)
-+                    addContactRequest(peerId);
-                 convIds.push_back(storage::beginConversationWithPeer(db, contact.profileInfo.uri));
-                 auto& conv = getConversationForPeerUri(contact.profileInfo.uri).get();
-                 conv.uid = convIds[0];
-
-base-commit: 6f30acf0043d07dcbe63ee8636509885a9b6fd76
---
-2.38.1
-
diff --git a/gnu/packages/patches/jami-sip-unregister.patch b/gnu/packages/patches/jami-sip-unregister.patch
deleted file mode 100644
index 1f0302bb12..0000000000
--- a/gnu/packages/patches/jami-sip-unregister.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From c1e6d664601b35a466f4e02e86a2c8181fdcca12 Mon Sep 17 00:00:00 2001
-From: Antoine Noreau <antoine.noreau@savoirfairelinux.com>
-Date: Thu, 3 Nov 2022 15:35:40 -0400
-Subject: [PATCH] sip: ensure correct unregister upon closure
-
-Ensure SIP connections are gracefully terminated:
-Removed duplicated register calls to SIP server
-
-Change-Id: I330e67cf9534504f92517996eb7b693b43d359d3
-Gitlab: #786
----
- src/upnp/upnp_context.cpp | 11 ++++++++---
- 1 file changed, 8 insertions(+), 3 deletions(-)
-
-diff --git a/daemon/src/upnp/upnp_context.cpp b/daemon/src/upnp/upnp_context.cpp
-index a447e2d75..c68fe502c 100644
---- a/daemon/src/upnp/upnp_context.cpp
-+++ b/daemon/src/upnp/upnp_context.cpp
-@@ -143,7 +143,7 @@ void
- UPnPContext::stopUpnp(bool forceRelease)
- {
-     if (not isValidThread()) {
--        runOnUpnpContextQueue([this] { stopUpnp(); });
-+        runOnUpnpContextQueue([this, forceRelease] { stopUpnp(forceRelease); });
-         return;
-     }
- 
-@@ -168,10 +168,15 @@ UPnPContext::stopUpnp(bool forceRelease)
-         preferredIgd_.reset();
-         validIgdList_.clear();
-     }
--
-     for (auto const& map : toRemoveList) {
-         requestRemoveMapping(map);
--        updateMappingState(map, MappingState::FAILED);
-+
-+        /* Notify is not needed in updateMappingState when
-+        shutting down (hence set it to false). NotifyCallback
-+        would trigger a new SIP registration and create a
-+        false registered state upon program close.  */
-+
-+        updateMappingState(map, MappingState::FAILED, false);
-         // We dont remove mappings with auto-update enabled,
-         // unless forceRelease is true.
-         if (not map->getAutoUpdate() or forceRelease) {
--- 
-2.37.3
-
diff --git a/gnu/packages/patches/jami-sipaccount-segfault.patch b/gnu/packages/patches/jami-sipaccount-segfault.patch
deleted file mode 100644
index 1cef512124..0000000000
--- a/gnu/packages/patches/jami-sipaccount-segfault.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From e5a449d60abc667d85dacd75ad6e31d4ddca5853 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?S=C3=A9bastien=20Blin?=
- <sebastien.blin@savoirfairelinux.com>
-Date: Thu, 17 Nov 2022 12:02:20 -0500
-Subject: [PATCH] sipaccount: fix potential null dereference
-
-Detected by sonarqube
-
-Change-Id: I606f9cf2458dda07471d0a67af8915c7ca13d410
----
- src/sip/sipaccount.cpp | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/daemon/src/sip/sipaccount.cpp b/daemon/src/sip/sipaccount.cpp
-index 695b71839..e544ac31a 100644
---- a/daemon/src/sip/sipaccount.cpp
-+++ b/daemon/src/sip/sipaccount.cpp
-@@ -789,7 +789,8 @@ SIPAccount::sendRegister()
-     if (pjsip_regc_set_transport(regc, &tp_sel) != PJ_SUCCESS)
-         throw VoipLinkException("Unable to set transport");
- 
--    setUpTransmissionData(tdata, tp_sel.u.transport->key.type);
-+    if (tp_sel.u.transport)
-+        setUpTransmissionData(tdata, tp_sel.u.transport->key.type);
- 
-     // pjsip_regc_send increment the transport ref count by one,
-     if ((status = pjsip_regc_send(regc, tdata)) != PJ_SUCCESS) {
--- 
-GitLab
-
diff --git a/gnu/packages/patches/jami-xcb-link.patch b/gnu/packages/patches/jami-xcb-link.patch
deleted file mode 100644
index 6879493123..0000000000
--- a/gnu/packages/patches/jami-xcb-link.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 3db2a7802422e69f50030db854abfb72fbc9caa4 Mon Sep 17 00:00:00 2001
-From: Maxim Cournoyer <maxim.cournoyer@savoirfairelinux.com>
-Date: Fri, 11 Nov 2022 22:38:32 -0500
-Subject: [PATCH] Move xcb include/link directives from jami to libclient.
-
-Relates to <https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/882>.
-
-This problem was discovered when attempting to build the test suite:
-
-   ld: ../src/libclient/liblibjamiclient.a(avmodel.cpp.o): undefined
-   reference to symbol 'xcb_get_setup'
-
-* CMakeLists.txt: [!(APPLE or MSVC] Move xcb includes and link directives to...
-* src/libclient/CMakeLists.txt [!(APPLE or MSVC]: ... here.
-
-Change-Id: If9b6653e157081300caad8f13cafe4979a49630b
----
- CMakeLists.txt               | 6 +-----
- src/libclient/CMakeLists.txt | 6 ++++++
- 2 files changed, 7 insertions(+), 5 deletions(-)
-
-diff --git a/client-qt/CMakeLists.txt b/client-qt/CMakeLists.txt
-index d0a8fd70..2a09fd6c 100644
---- a/client-qt/CMakeLists.txt
-+++ b/client-qt/CMakeLists.txt
-@@ -384,8 +384,6 @@ elseif (NOT APPLE)
-     add_definitions(${LIBGDKPIXBUF_CFLAGS})
-   endif()
- 
--  pkg_check_modules(XCB xcb)
--
-   list(PREPEND CMAKE_PREFIX_PATH
-     ${LIBJAMI_CONTRIB_DIR}/native/ffmpeg/libavutil)
-   pkg_check_modules(LIBAVUTIL libavutil>=55.75.100)
-@@ -398,7 +396,6 @@ elseif (NOT APPLE)
-     ${LIBNOTIFY_INCLUDE_DIRS}
-     ${LIBGDKPIXBUF_INCLUDE_DIRS}
-     ${GLIB_INCLUDE_DIRS}
--    ${XCB_INCLUDE_DIRS}
-     ${LIBAVUTIL_INCLUDE_DIRS})
- 
-   set(JAMI_DATA_PREFIX "${CMAKE_INSTALL_PREFIX}/share")
-@@ -586,8 +583,7 @@ elseif (NOT APPLE)
-     ${LIBNOTIFY_LIBRARIES}
-     ${LIBGDKPIXBUF_LIBRARIES}
-     ${GLIB_LIBRARIES}
--    ${GIO_LIBRARIES}
--    ${XCB_LIBRARIES})
-+    ${GIO_LIBRARIES})
- 
-   # Installation rules
-   install(
-diff --git a/client-qt/src/libclient/CMakeLists.txt b/client-qt/src/libclient/CMakeLists.txt
-index 99780f5f..1dd32677 100644
---- a/client-qt/src/libclient/CMakeLists.txt
-+++ b/client-qt/src/libclient/CMakeLists.txt
-@@ -475,6 +475,12 @@ add_library(${LIBCLIENT_NAME} STATIC
- foreach(QT_LIB ${QT_LIBS})
-   target_link_libraries(${LIBCLIENT_NAME} ${QT_LIB})
- endforeach()
-+
-+if(NOT(APPLE OR MSVC))
-+  pkg_check_modules(XCB xcb IMPORTED_TARGET)
-+  target_link_libraries(${LIBCLIENT_NAME} PkgConfig::XCB)
-+endif()
-+
- if(ENABLE_LIBWRAP)
-   target_link_libraries(${LIBCLIENT_NAME} qtwrapper ${LIBJAMI_LIB})
-   if (NOT (CMAKE_CXX_COMPILER_ID MATCHES "MSVC"))
--- 
-2.37.3
-
diff --git a/gnu/packages/patches/julia-tracker-16-compat.patch b/gnu/packages/patches/julia-tracker-16-compat.patch
deleted file mode 100644
index 4fff423e44..0000000000
--- a/gnu/packages/patches/julia-tracker-16-compat.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-https://github.com/FluxML/Tracker.jl/commit/f6550ba38a9ea5802e2de4fa9c939929ba711f0d.patch
-from an upstream pull request
-https://github.com/FluxML/Tracker.jl/pull/94
-
-
-From f6550ba38a9ea5802e2de4fa9c939929ba711f0d Mon Sep 17 00:00:00 2001
-From: Michael Abbott <me@escbook>
-Date: Wed, 3 Feb 2021 22:58:33 +0100
-Subject: [PATCH] two fixes for 1.6
-
----
- src/lib/array.jl | 2 +-
- src/lib/real.jl  | 1 +
- 2 files changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/lib/array.jl b/src/lib/array.jl
-index 92f2b39..f8cbbac 100644
---- a/src/lib/array.jl
-+++ b/src/lib/array.jl
-@@ -298,7 +298,7 @@ Base.reverse(xs::TrackedArray; dims) = track(reverse, xs, dims = dims)
- @grad reverse(xs; dims) = reverse(data(xs), dims = dims), Δ -> (reverse(Δ, dims = dims), nothing)
- Base.reverse(xs::TrackedVector) = track(reverse, xs)
- @grad reverse(xs::TrackedVector) = reverse(data(xs)), Δ -> (reverse(Δ),)
--Base.reverse(xs::TrackedVector, start, stop) = track(reverse, xs, start, stop)
-+Base.reverse(xs::TrackedVector, start::Integer, stop::Integer) = track(reverse, xs, start, stop)
- @grad reverse(xs, start, stop) = reverse(data(xs), start, stop), Δ -> (reverse(Δ, start, stop), nothing, nothing)
- 
- function _kron(mat1::AbstractMatrix,mat2::AbstractMatrix)
-diff --git a/src/lib/real.jl b/src/lib/real.jl
-index 737afd8..e1975ac 100644
---- a/src/lib/real.jl
-+++ b/src/lib/real.jl
-@@ -55,6 +55,7 @@ for f in :[isinf, isnan, isfinite].args
- end
- 
- Printf.fix_dec(x::TrackedReal, n::Int, a...) = Printf.fix_dec(data(x), n, a...)
-+Printf.tofloat(x::TrackedReal) = Printf.tofloat(data(x))
- 
- Base.float(x::TrackedReal) = x
- 
diff --git a/gnu/packages/patches/libgeotiff-fix-tests-with-proj-9.1.1.patch b/gnu/packages/patches/libgeotiff-fix-tests-with-proj-9.1.1.patch
new file mode 100644
index 0000000000..b4bf292c1e
--- /dev/null
+++ b/gnu/packages/patches/libgeotiff-fix-tests-with-proj-9.1.1.patch
@@ -0,0 +1,100 @@
+From: Even Rouault <even.rouault@spatialys.com>
+Date: Sat, 26 Nov 2022 13:23:12 +0100
+Subject: Fix test failures with PROJ 9.1.1
+
+https://github.com/OSGeo/libgeotiff/pull/82
+---
+ bin/listgeo.c             |  7 ++++++-
+ test/testlistgeo          |  4 ++--
+ test/testlistgeo_out.dist | 14 --------------
+ 3 files changed, 8 insertions(+), 17 deletions(-)
+
+diff --git a/bin/listgeo.c b/bin/listgeo.c
+index 06c45f70..acad54c6 100644
+--- a/bin/listgeo.c
++++ b/bin/listgeo.c
+@@ -29,6 +29,7 @@ void Usage()
+         "  -tfw: Generate a .tfw (ESRI TIFF World) file for the target file.\n"
+         "  -proj4: Report PROJ.4 equivalent projection definition.\n"
+         "  -no_norm: Don't report 'normalized' parameter values.\n"
++        "  -no_corners: Don't report corner coordinates.\n"
+         "  filename: Name of the GeoTIFF file to report on.\n" );
+         
+     exit( 1 );
+@@ -42,6 +43,7 @@ int main(int argc, char *argv[])
+     int		i, norm_print_flag = 1, proj4_print_flag = 0;
+     int		tfw_flag = 0, inv_flag = 0, dec_flag = 0;
+     int         st_test_flag = 0;
++    int     corners = 1;
+ 
+     /*
+      * Handle command line options.
+@@ -50,6 +52,8 @@ int main(int argc, char *argv[])
+     {
+         if( strcmp(argv[i],"-no_norm") == 0 )
+             norm_print_flag = 0;
++        else if( strcmp(argv[i],"-no_corners") == 0 )
++            corners = 0;
+         else if( strcmp(argv[i],"-tfw") == 0 )
+             tfw_flag = 1;
+         else if( strcmp(argv[i],"-proj4") == 0 )
+@@ -130,7 +134,8 @@ int main(int argc, char *argv[])
+             
+             TIFFGetField( tif, TIFFTAG_IMAGEWIDTH, &xsize );
+             TIFFGetField( tif, TIFFTAG_IMAGELENGTH, &ysize );
+-            GTIFPrintCorners( gtif, &defn, stdout, xsize, ysize, inv_flag, dec_flag );
++            if( corners )
++                GTIFPrintCorners( gtif, &defn, stdout, xsize, ysize, inv_flag, dec_flag );
+         }
+ 
+     }
+diff --git a/test/testlistgeo b/test/testlistgeo
+index 596301b4..9a41e74f 100755
+--- a/test/testlistgeo
++++ b/test/testlistgeo
+@@ -59,11 +59,11 @@ $EXE ${DATA_DIR}/ProjLinearUnitsGeoKey_9036.tif >>${OUT}
+ echo "" >>${OUT}
+ 
+ echo "Testing listgeo ProjectedCSTypeGeoKey_28191_cassini_soldner.tif" >> ${OUT}
+-$EXE ${DATA_DIR}/ProjectedCSTypeGeoKey_28191_cassini_soldner.tif >>${OUT}
++$EXE -no_corners ${DATA_DIR}/ProjectedCSTypeGeoKey_28191_cassini_soldner.tif >>${OUT}
+ echo "" >>${OUT}
+ 
+ echo "Testing listgeo cassini_soldner.tif" >> ${OUT}
+-$EXE ${DATA_DIR}/cassini_soldner.tif >>${OUT}
++$EXE -no_corners ${DATA_DIR}/cassini_soldner.tif >>${OUT}
+ echo "" >>${OUT}
+ 
+ echo "Testing listgeo ProjectedCSTypeGeoKey_27200_new_zealand_mapping_grid.tif" >> ${OUT}
+diff --git a/test/testlistgeo_out.dist b/test/testlistgeo_out.dist
+index 742f0fce..20221cec 100644
+--- a/test/testlistgeo_out.dist
++++ b/test/testlistgeo_out.dist
+@@ -299,13 +299,6 @@ Ellipsoid: 7010/Clarke 1880 (Benoit) (6378300.79,6356566.43)
+ Prime Meridian: 8901/Greenwich (0.000000/  0d 0' 0.00"E)
+ Projection Linear Units: 9001/metre (1.000000m)
+ 
+-Corner Coordinates:
+-Upper Left    (  440720.000, 3751320.000)  ( 40d47'28.08"E, 64d13'29.57"N)
+-Lower Left    (  440720.000, 3751260.000)  ( 40d47'27.69"E, 64d13'27.64"N)
+-Upper Right   (  440780.000, 3751320.000)  ( 40d47'32.51"E, 64d13'29.40"N)
+-Lower Right   (  440780.000, 3751260.000)  ( 40d47'32.12"E, 64d13'27.47"N)
+-Center        (  440750.000, 3751290.000)  ( 40d47'30.10"E, 64d13'28.52"N)
+-
+ Testing listgeo cassini_soldner.tif
+ Geotiff_Information:
+    Version: 1
+@@ -348,13 +341,6 @@ Projection Method: CT_CassiniSoldner
+    ProjFalseNorthingGeoKey: 126867.909000 m
+ Projection Linear Units: 9001/metre (1.000000m)
+ 
+-Corner Coordinates:
+-Upper Left    (  440720.000, 3751320.000)  ( 40d47'28.08"E, 64d13'29.57"N)
+-Lower Left    (  440720.000, 3751260.000)  ( 40d47'27.69"E, 64d13'27.64"N)
+-Upper Right   (  440780.000, 3751320.000)  ( 40d47'32.51"E, 64d13'29.40"N)
+-Lower Right   (  440780.000, 3751260.000)  ( 40d47'32.12"E, 64d13'27.47"N)
+-Center        (  440750.000, 3751290.000)  ( 40d47'30.10"E, 64d13'28.52"N)
+-
+ Testing listgeo ProjectedCSTypeGeoKey_27200_new_zealand_mapping_grid.tif
+ Geotiff_Information:
+    Version: 1
diff --git a/gnu/packages/patches/openbios-gcc-warnings.patch b/gnu/packages/patches/openbios-gcc-warnings.patch
new file mode 100644
index 0000000000..b96cecc31e
--- /dev/null
+++ b/gnu/packages/patches/openbios-gcc-warnings.patch
@@ -0,0 +1,95 @@
+Fix warnings with recent versions of GCC.
+
+This is a combination of these commits:
+
+  https://github.com/openbios/openbios/commit/14be7d187a327a89c068c4e2551d5012a3c25703
+  https://github.com/openbios/openbios/commit/0e6b8b3cb4a25a4680f238bae76de5e370e706c8
+  https://github.com/openbios/openbios/commit/51067854a7606cceb8b1e0a3d2108da69ff46973
+
+...with minor adaptations to apply on 1.1.
+
+
+diff --git a/arch/sparc32/context.c b/arch/sparc32/context.c
+--- a/arch/sparc32/context.c
++++ b/arch/sparc32/context.c
+@@ -86,7 +86,7 @@ struct context *switch_to(struct context *ctx)
+     __context = ctx;
+     asm __volatile__ ("\n\tcall __switch_context"
+                       "\n\tnop" ::: "g1", "g2", "g3", "g4", "g5", "g6", "g7",
+-                      "o0", "o1", "o2", "o3", "o4", "o5", "sp", "o7",
++                      "o0", "o1", "o2", "o3", "o4", "o5", "o7",
+                       "l0", "l1", "l2", "l3", "l4", "l5", "l6", "l7",
+                       "i0", "i1", "i2", "i3", "i4", "i5", "i7",
+                       "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9",
+diff --git a/drivers/cuda.c b/drivers/cuda.c
+--- a/drivers/cuda.c
++++ b/drivers/cuda.c
+@@ -355,7 +355,7 @@ static void
+ rtc_init(char *path)
+ {
+ 	phandle_t ph, aliases;
+-	char buf[64];
++	char buf[128];
+ 
+         snprintf(buf, sizeof(buf), "%s/rtc", path);
+ 	REGISTER_NAMED_NODE(rtc, buf);
+diff --git a/drivers/ide.c b/drivers/ide.c
+--- a/drivers/ide.c
++++ b/drivers/ide.c
+@@ -987,7 +987,7 @@ ob_ide_identify_drive(struct ide_drive *drive)
+ 		drive->sect = id.sectors;
+ 	}
+ 
+-	strncpy(drive->model, (char*)id.model, sizeof(id.model));
++	strncpy(drive->model, (char*)id.model, sizeof(drive->model));
+ 	drive->model[40] = '\0';
+ 	return 0;
+ }
+diff --git a/fs/hfs/hfs_fs.c b/fs/hfs/hfs_fs.c
+--- a/fs/hfs/hfs_fs.c
++++ b/fs/hfs/hfs_fs.c
+@@ -86,7 +86,7 @@ _search( hfsvol *vol, const char *path, const char *sname, hfsfile **ret_fd )
+ 
+ 	strncpy( buf, path, sizeof(buf) );
+ 	if( buf[strlen(buf)-1] != ':' )
+-		strncat( buf, ":", sizeof(buf) );
++		strncat( buf, ":", sizeof(buf) - 1 );
+ 	buf[sizeof(buf)-1] = 0;
+ 	p = buf + strlen( buf );
+ 
+@@ -101,7 +101,7 @@ _search( hfsvol *vol, const char *path, const char *sname, hfsfile **ret_fd )
+ 		*p = 0;
+ 		topdir = 0;
+ 
+-		strncat( buf, ent.name, sizeof(buf) );
++		strncat( buf, ent.name, sizeof(buf) - 1);
+ 		if( (status=_search(vol, buf, sname, ret_fd)) != 2 )
+ 			continue;
+ 		topdir = 1;
+diff --git a/libc/string.c b/libc/string.c
+--- a/libc/string.c
++++ b/libc/string.c
+@@ -349,10 +349,7 @@ int memcmp(const void * cs,const void * ct,size_t count)
+ char *
+ strdup( const char *str )
+ {
+-	char *p;
+-	if( !str )
+-		return NULL;
+-	p = malloc( strlen(str) + 1 );
++	char *p = malloc( strlen(str) + 1 );
+ 	strcpy( p, str );
+ 	return p;
+ }
+diff --git a/packages/nvram.c b/packages/nvram.c
+--- a/packages/nvram.c
++++ b/packages/nvram.c
+@@ -105,7 +105,7 @@ create_free_part( char *ptr, int size )
+ 	nvpart_t *nvp = (nvpart_t*)ptr;
+ 	memset( nvp, 0, size );
+ 
+-	strncpy( nvp->name, "777777777777", sizeof(nvp->name) );
++	strncpy( nvp->name, "77777777777", sizeof(nvp->name) );
+ 	nvp->signature = NV_SIG_FREE;
+ 	nvp->len_hi = (size /16) >> 8;
+ 	nvp->len_lo = size /16;
diff --git a/gnu/packages/patches/python-apsw-3.39.2.1-test-fix.patch b/gnu/packages/patches/python-apsw-3.39.2.1-test-fix.patch
deleted file mode 100644
index cc233e3ccd..0000000000
--- a/gnu/packages/patches/python-apsw-3.39.2.1-test-fix.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 1111f902075169bd0d96cdd10607ef8499f0fed5 Mon Sep 17 00:00:00 2001
-From: Roger Binns <rogerb@rogerbinns.com>
-Date: Mon, 5 Sep 2022 07:12:25 -0700
-Subject: [PATCH] Deal with mismatched SQLITE_ENABLE_COLUMN_METADATA
-
-Address #363
----
- apsw/tests.py   | 2 +-
- 1 files changed, 1 insertions(+), 1 deletion(-)
-
-diff --git a/apsw/tests.py b/apsw/tests.py
-index b4a94d3..256ead0 100644
---- a/apsw/tests.py
-+++ b/apsw/tests.py
-@@ -772,8 +772,8 @@ class APSW(unittest.TestCase):
-         c.execute("drop table foo; create table foo (%s)" % (", ".join(["[%s] %s" % (n, t) for n, t in cols]), ))
-         c.execute("insert into foo([x a space]) values(1)")
-         c.execute("create temp table two(fred banana); insert into two values(7); create temp view three as select fred as [a space] from two")
--        has_full=any(o=="ENABLE_COLUMN_METADATA" or o.startswith("ENABLE_COLUMN_METADATA=") for o in apsw.compile_options)
-+        has_full=any(o=="ENABLE_COLUMN_METADATA" or o.startswith("ENABLE_COLUMN_METADATA=") for o in apsw.compile_options) if apsw.using_amalgamation else hasattr(c, "description_full")
-         for row in c.execute("select * from foo"):
-             self.assertEqual(cols, c.getdescription())
-             self.assertEqual(has_full, hasattr(c, "description_full"))
-
-base-commit: f628374c5857d940067ef26c9ea4e85a08a94f76
---
-2.37.2
diff --git a/gnu/packages/patches/python-flask-restful-werkzeug-compat.patch b/gnu/packages/patches/python-flask-restful-werkzeug-compat.patch
deleted file mode 100644
index 0e928ef455..0000000000
--- a/gnu/packages/patches/python-flask-restful-werkzeug-compat.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-We need one patch on top of 0.3.8 for compatibility with Werkzeug 1.0.
-
-Taken from upstream:
-https://github.com/flask-restful/flask-restful/commit/73376a488907af3042b52678ac4c23f8a8911e5b
-
-diff --git a/tests/test_api.py b/tests/test_api.py
-index f7f8e661..6795d362 100644
---- a/tests/test_api.py
-+++ b/tests/test_api.py
-@@ -445,7 +445,9 @@ def test_handle_non_api_error(self):
- 
-         resp = app.get("/foo")
-         self.assertEquals(resp.status_code, 404)
--        self.assertEquals('text/html', resp.headers['Content-Type'])
-+        # in newer versions of werkzeug this is `text/html; charset=utf8`
-+        content_type, _, _ = resp.headers['Content-Type'].partition(';')
-+        self.assertEquals('text/html', content_type)
- 
-     def test_non_api_error_404_catchall(self):
-         app = Flask(__name__)
-diff --git a/tests/test_reqparse.py b/tests/test_reqparse.py
-index 2f1fbedf..9776f17c 100644
---- a/tests/test_reqparse.py
-+++ b/tests/test_reqparse.py
-@@ -2,9 +2,9 @@
- import unittest
- from mock import Mock, patch
- from flask import Flask
--from werkzeug import exceptions, MultiDict
-+from werkzeug import exceptions
- from werkzeug.wrappers import Request
--from werkzeug.datastructures import FileStorage
-+from werkzeug.datastructures import FileStorage, MultiDict
- from flask_restful.reqparse import Argument, RequestParser, Namespace
- import six
- import decimal
diff --git a/gnu/packages/patches/python-telingo-fix-comparison.patch b/gnu/packages/patches/python-telingo-fix-comparison.patch
new file mode 100644
index 0000000000..6d05048dcb
--- /dev/null
+++ b/gnu/packages/patches/python-telingo-fix-comparison.patch
@@ -0,0 +1,19 @@
+Index: source/telingo/transformers/head.py
+===================================================================
+--- source.orig/telingo/transformers/head.py
++++ source/telingo/transformers/head.py
+@@ -564,10 +564,12 @@ class HeadTransformer:
+                 cond = []
+                 diff = _ast.BinaryOperation(loc, _ast.BinaryOperator.Minus, param, shift)
+                 if lhs.ast_type != _ast.ASTType.SymbolicTerm or lhs.symbol.type != _clingo.SymbolType.Number or lhs.symbol.number > 0:
+-                    cond.append(_ast.Literal(loc, _ast.Sign.NoSign, _ast.Comparison(_ast.ComparisonOperator.LessEqual, lhs, diff)))
++                    cond.append(_ast.Literal(loc, _ast.Sign.NoSign,
++                                             _ast.Comparison(lhs, [_ast.Guard(_ast.ComparisonOperator.LessEqual, diff)])))
+ 
+                 if rhs.ast_type != _ast.ASTType.SymbolicTerm or rhs.symbol.type != _clingo.SymbolType.Supremum:
+-                    cond.append(_ast.Literal(loc, _ast.Sign.NoSign, _ast.Comparison(_ast.ComparisonOperator.LessEqual, diff, rhs)))
++                    cond.append(_ast.Literal(loc, _ast.Sign.NoSign,
++                                             _ast.Comparison(diff, [_ast.Guard(_ast.ComparisonOperator.LessEqual, rhs)])))
+ 
+                 elems.extend([_ast.ConditionalLiteral(loc, _ast.Literal(loc, _ast.Sign.NoSign, head), cond) for head in heads])
+