aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/patches
diff options
context:
space:
mode:
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])
+