Github messages for voidlinux
 help / color / mirror / Atom feed
* [PR PATCH] fmt: update to 11.0.2
@ 2024-09-07 21:24 Johnnynator
  2024-09-09 17:09 ` meator
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Johnnynator @ 2024-09-07 21:24 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1306 bytes --]

There is a new pull request by Johnnynator against master on the void-packages repository

https://github.com/Johnnynator/void-packages android-tools
https://github.com/void-linux/void-packages/pull/52140

fmt: update to 11.0.2
- **fmt: update to 11.0.2.**
- **0ad: rebuild for fmt-11.0.2**
- **Bear: rebuild for fmt-11.0.2**
- **MangoHud: rebuild for fmt-11.0.2**
- **Waybar: rebuild for fmt-11.0.2**
- **cherrytree: rebuild for fmt-11.0.2**
- **coeurl: update to 0.3.1**
- **cryfs: rebuild for fmt-11.0.2**
- **devilutionX: update to 1.5.3.**
- **easyeffects: rebuild for fmt-11.0.2**
- **freecad: rebuild for fmt-11.0.2**
- **furnace: rebuild for fmt-11.0.2**
- **gerbera: update to 2.2.0.**
- **gnuradio: rebuild for fmt-11.0.2**
- **imhex: rebuild for fmt-11.0.2**
- **j4-dmenu-desktop: rebuild for fmt-11.0.2**
- **justbuild: rebuild for fmt-11.0.2**
- **kodi: rebuild for fmt-11.0.2**
- **mkvtoolnix: update to 87.0.**
- **mpd: rebuild for fmt-11.0.2**
- **mtxclient: rebuild for fmt-11.0.2**
- **nheko: rebuild for fmt-11.0.2**
- **opendht: rebuild for fmt-11.0.2**
- **paps: rebuild for fmt-11.0.2**
- **python3-syndom: rebuild for fmt-11.0.2**
- **spdlog: update to 1.14.1.**
- **vtk: update to 9.3.1.**


A patch file from https://github.com/void-linux/void-packages/pull/52140.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-android-tools-52140.patch --]
[-- Type: text/x-diff, Size: 107815 bytes --]

From c02439b718e87917e558a180fcea08c96b806c09 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:17:03 +0200
Subject: [PATCH 01/27] fmt: update to 11.0.2.

---
 common/shlibs        | 2 +-
 srcpkgs/fmt/template | 6 +++---
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/common/shlibs b/common/shlibs
index 391ecd3eefd0e5..32f3725e3767fa 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -3624,7 +3624,7 @@ libcotp.so.3 libcotp-3.0.0_1
 libunarr.so.1 libunarr-1.0.1_1
 libretro-gtk-1.so.0 retro-gtk-1.0.0_1
 libmanette-0.2.so.0 libmanette-0.2.1_1
-libfmt.so.9 fmt-9.0.0_1
+libfmt.so.11 fmt-11.0.0_1
 libelementary-calendar.so.0 libio.elementary.calendar-4.2.3_1
 libolm.so.3 olm-3.0.0_1
 libtls.so.29 libtls-3.9.1_1
diff --git a/srcpkgs/fmt/template b/srcpkgs/fmt/template
index c32298a35a90ff..e79643a0fa9bf4 100644
--- a/srcpkgs/fmt/template
+++ b/srcpkgs/fmt/template
@@ -1,6 +1,6 @@
 # Template file for 'fmt'
 pkgname=fmt
-version=9.1.0
+version=11.0.2
 revision=1
 build_style=cmake
 configure_args="-DBUILD_SHARED_LIBS=ON -DFMT_DOC=OFF -DFMT_TEST=OFF"
@@ -10,10 +10,10 @@ license="MIT WITH fmt-exception"
 homepage="https://github.com/fmtlib/fmt"
 changelog="https://raw.githubusercontent.com/fmtlib/fmt/master/ChangeLog.rst"
 distfiles="https://github.com/fmtlib/fmt/archive/${version}.tar.gz"
-checksum=5dea48d1fcddc3ec571ce2058e13910a0d4a6bab4cc09a809d8b1dd1c88ae6f2
+checksum=6cb1e6d37bdcb756dbbe59be438790db409cdb4868c66e888d5df9f13f7c027f
 
 post_install() {
-	vlicense LICENSE.rst LICENSE
+	vlicense LICENSE
 }
 
 fmt-devel_package() {

From d7f71023cb0b876f75ae6e70c69d674eacbc9b48 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:08 +0200
Subject: [PATCH 02/27] 0ad: rebuild for fmt-11.0.2

---
 srcpkgs/0ad/patches/fmt-10.patch | 26 ++++++++++++++++++++++++++
 srcpkgs/0ad/template             |  2 +-
 2 files changed, 27 insertions(+), 1 deletion(-)
 create mode 100644 srcpkgs/0ad/patches/fmt-10.patch

diff --git a/srcpkgs/0ad/patches/fmt-10.patch b/srcpkgs/0ad/patches/fmt-10.patch
new file mode 100644
index 00000000000000..ada783ac3c2239
--- /dev/null
+++ b/srcpkgs/0ad/patches/fmt-10.patch
@@ -0,0 +1,26 @@
+diff --git a/source/network/NetMessage.cpp b/source/network/NetMessage.cpp
+index 61126d8..8945175 100644
+--- a/source/network/NetMessage.cpp
++++ b/source/network/NetMessage.cpp
+@@ -216,7 +216,7 @@ CNetMessage* CNetMessageFactory::CreateMessage(const void* pData,
+ 		break;
+ 
+ 	default:
+-		LOGERROR("CNetMessageFactory::CreateMessage(): Unknown message type '%d' received", header.GetType());
++		LOGERROR("CNetMessageFactory::CreateMessage(): Unknown message type '%d' received", static_cast<int>(header.GetType()));
+ 		break;
+ 	}
+ 
+diff --git a/source/simulation2/serialization/BinarySerializer.cpp b/source/simulation2/serialization/BinarySerializer.cpp
+index 6a0b4e4..7d30c5b 100644
+--- a/source/simulation2/serialization/BinarySerializer.cpp
++++ b/source/simulation2/serialization/BinarySerializer.cpp
+@@ -52,7 +52,7 @@ static u8 GetArrayType(js::Scalar::Type arrayType)
+ 	case js::Scalar::Uint8Clamped:
+ 		return SCRIPT_TYPED_ARRAY_UINT8_CLAMPED;
+ 	default:
+-		LOGERROR("Cannot serialize unrecognized typed array view: %d", arrayType);
++		LOGERROR("Cannot serialize unrecognized typed array view: %d", static_cast<int>(arrayType));
+ 		throw PSERROR_Serialize_InvalidScriptValue();
+ 	}
+ }
diff --git a/srcpkgs/0ad/template b/srcpkgs/0ad/template
index ae29ee78b02335..a0f7607b39e2ad 100644
--- a/srcpkgs/0ad/template
+++ b/srcpkgs/0ad/template
@@ -1,7 +1,7 @@
 # Template file for '0ad'
 pkgname=0ad
 version=0.0.26
-revision=9
+revision=10
 archs="x86_64* i686* aarch64* armv7l* ppc64le*"
 build_helper=rust
 hostmakedepends="pkg-config perl cmake python3.11 rust cargo yasm tar clang"

From 42d3c26e570e74807fef174be46ab3cf8a3a0d59 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:08 +0200
Subject: [PATCH 03/27] Bear: rebuild for fmt-11.0.2

---
 ...afe61299c87449023d63336389f159b55808.patch | 55 +++++++++++++++++++
 srcpkgs/Bear/template                         |  2 +-
 2 files changed, 56 insertions(+), 1 deletion(-)
 create mode 100644 srcpkgs/Bear/patches/8afeafe61299c87449023d63336389f159b55808.patch

diff --git a/srcpkgs/Bear/patches/8afeafe61299c87449023d63336389f159b55808.patch b/srcpkgs/Bear/patches/8afeafe61299c87449023d63336389f159b55808.patch
new file mode 100644
index 00000000000000..0603c34719b655
--- /dev/null
+++ b/srcpkgs/Bear/patches/8afeafe61299c87449023d63336389f159b55808.patch
@@ -0,0 +1,55 @@
+From 8afeafe61299c87449023d63336389f159b55808 Mon Sep 17 00:00:00 2001
+From: Kefu Chai <tchaikov@gmail.com>
+Date: Sun, 14 Jul 2024 08:47:53 +0800
+Subject: [PATCH] citnames: include fmt/ranges.h for using fmt::join()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+fmt::join() was moved into fmt/ranges.h since fmt v11, so include
+this header for using fmt::join(). otherwise, we'd have following
+compilation failure when building Bear with fmt v11 and up:
+
+```
+/builddir/build/BUILD/bear-3.1.4-build/Bear-3.1.4/source/citnames/source/semantic/Parsers.h:255:73: error: ‘join’ is not a member of ‘fmt’
+  255 |                             fmt::format("Failed to recognize: {}", fmt::join(remainder.begin(), remainder.end(), ", "))
+      |                                                                         ^~~~
+```
+
+Signed-off-by: Kefu Chai <tchaikov@gmail.com>
+---
+ source/citnames/source/semantic/Parsers.h   | 1 +
+ source/citnames/source/semantic/Semantic.cc | 3 ++-
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/source/citnames/source/semantic/Parsers.h b/source/citnames/source/semantic/Parsers.h
+index 90e64f9e..34203a17 100644
+--- a/source/citnames/source/semantic/Parsers.h
++++ b/source/citnames/source/semantic/Parsers.h
+@@ -30,6 +30,7 @@
+ #include <optional>
+ 
+ #include <fmt/format.h>
++#include <fmt/ranges.h>
+ 
+ namespace cs::semantic {
+ 
+diff --git a/source/citnames/source/semantic/Semantic.cc b/source/citnames/source/semantic/Semantic.cc
+index da762956..54d3e62d 100644
+--- a/source/citnames/source/semantic/Semantic.cc
++++ b/source/citnames/source/semantic/Semantic.cc
+@@ -21,6 +21,7 @@
+ #include "semantic/Semantic.h"
+ 
+ #include <fmt/format.h>
++#include <fmt/ranges.h>
+ #ifdef HAVE_FMT_STD_H
+ #include <fmt/std.h>
+ #else
+@@ -133,4 +134,4 @@ namespace cs::semantic {
+         }
+         return results;
+     }
+-}
+\ No newline at end of file
++}
diff --git a/srcpkgs/Bear/template b/srcpkgs/Bear/template
index 0d9139fc8f5cc5..338787a9d2fad3 100644
--- a/srcpkgs/Bear/template
+++ b/srcpkgs/Bear/template
@@ -1,7 +1,7 @@
 # Template file for 'Bear'
 pkgname=Bear
 version=3.1.4
-revision=1
+revision=2
 build_style=cmake
 hostmakedepends="pkg-config protobuf protobuf-devel grpc"
 makedepends="json-c++ spdlog grpc-devel protobuf-devel gtest-devel"

From f40599accf8ed3bb6125261262bb527402fbaeca Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:08 +0200
Subject: [PATCH 04/27] MangoHud: rebuild for fmt-11.0.2

---
 srcpkgs/MangoHud/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/MangoHud/template b/srcpkgs/MangoHud/template
index ad1334062d2d35..734d579b616c72 100644
--- a/srcpkgs/MangoHud/template
+++ b/srcpkgs/MangoHud/template
@@ -1,7 +1,7 @@
 # Template file for 'MangoHud'
 pkgname=MangoHud
 version=0.7.2
-revision=2
+revision=3
 build_style=meson
 configure_args="-Dwith_xnvctrl=disabled
  -Dwith_nvml=disabled -Duse_system_spdlog=enabled"

From 8b4f2f7f62504935a822d17f680afd2bc1434ccd Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:08 +0200
Subject: [PATCH 05/27] Waybar: rebuild for fmt-11.0.2

---
 srcpkgs/Waybar/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/Waybar/template b/srcpkgs/Waybar/template
index a3c47d888ddefc..83953beefd9555 100644
--- a/srcpkgs/Waybar/template
+++ b/srcpkgs/Waybar/template
@@ -1,7 +1,7 @@
 # Template file for 'Waybar'
 pkgname=Waybar
 version=0.10.4
-revision=1
+revision=2
 build_style=meson
 configure_args="-Dlibudev=enabled -Dman-pages=enabled
  -Dsystemd=disabled -Drfkill=enabled

From 6be89fa90c50ed65d37c92a0757daecc4fe9cd01 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:08 +0200
Subject: [PATCH 06/27] cherrytree: rebuild for fmt-11.0.2

---
 ...3db2b25977037c7520a8316183636a262130.patch | 221 +++++++
 ...2f3b44fef81e67c9bfbcdaed2f80ab2ff5de.patch |  41 ++
 ...030e2e2b6e1488148d3828baeb8f5911eb8d.patch |  22 +
 ...d101f24a409efddb2f29e8c14002c9836a85.patch | 550 ++++++++++++++++++
 ...7499067b9db9841175b5a2d6934dc65e4522.patch | 151 +++++
 srcpkgs/cherrytree/patches/series             |   5 +
 srcpkgs/cherrytree/template                   |   2 +-
 7 files changed, 991 insertions(+), 1 deletion(-)
 create mode 100644 srcpkgs/cherrytree/patches/05233db2b25977037c7520a8316183636a262130.patch
 create mode 100644 srcpkgs/cherrytree/patches/22142f3b44fef81e67c9bfbcdaed2f80ab2ff5de.patch
 create mode 100644 srcpkgs/cherrytree/patches/76f0030e2e2b6e1488148d3828baeb8f5911eb8d.patch
 create mode 100644 srcpkgs/cherrytree/patches/ccc2d101f24a409efddb2f29e8c14002c9836a85.patch
 create mode 100644 srcpkgs/cherrytree/patches/fc1d7499067b9db9841175b5a2d6934dc65e4522.patch
 create mode 100644 srcpkgs/cherrytree/patches/series

diff --git a/srcpkgs/cherrytree/patches/05233db2b25977037c7520a8316183636a262130.patch b/srcpkgs/cherrytree/patches/05233db2b25977037c7520a8316183636a262130.patch
new file mode 100644
index 00000000000000..31e4d5999fad07
--- /dev/null
+++ b/srcpkgs/cherrytree/patches/05233db2b25977037c7520a8316183636a262130.patch
@@ -0,0 +1,221 @@
+From 05233db2b25977037c7520a8316183636a262130 Mon Sep 17 00:00:00 2001
+From: Giuseppe Penone <giuspen@gmail.com>
+Date: Thu, 22 Aug 2024 22:58:03 +0100
+Subject: [PATCH] fixed fmt issue on fs::path (#2548)
+
+---
+ src/ct/ct_app.cc               |  2 +-
+ src/ct/ct_filesystem.cc        | 20 ++++++++++----------
+ src/ct/ct_imports.cc           |  2 +-
+ src/ct/ct_main_win_file.cc     |  8 ++++----
+ src/ct/ct_storage_control.cc   |  8 ++++----
+ src/ct/ct_storage_multifile.cc |  6 +++---
+ 6 files changed, 23 insertions(+), 23 deletions(-)
+
+diff --git a/src/ct/ct_app.cc b/src/ct/ct_app.cc
+index 788e6092..66460cd0 100644
+--- a/src/ct/ct_app.cc
++++ b/src/ct/ct_app.cc
+@@ -152,7 +152,7 @@ void CtApp::on_activate()
+             }
+             else {
+                 const fs::path last_doc_path{_pCtConfig->recentDocsFilepaths.front()};
+-                spdlog::info("{} Last doc not found: {}", __FUNCTION__, last_doc_path);
++                spdlog::info("{} Last doc not found: {}", __FUNCTION__, last_doc_path.string());
+                 _pCtConfig->recentDocsFilepaths.move_or_push_back(last_doc_path);
+                 pAppWindow->menu_set_items_recent_documents();
+             }
+diff --git a/src/ct/ct_filesystem.cc b/src/ct/ct_filesystem.cc
+index 5c5f5ea7..1b94a186 100644
+--- a/src/ct/ct_filesystem.cc
++++ b/src/ct/ct_filesystem.cc
+@@ -163,13 +163,13 @@ bool remove(const fs::path& path2rm)
+ {
+     if (fs::is_directory(path2rm)) {
+         if (g_rmdir(path2rm.c_str()) != 0) {
+-            spdlog::error("fs::remove: g_rmdir failed to remove {}", path2rm);
++            spdlog::error("fs::remove: g_rmdir failed to remove {}", path2rm.string());
+             return false;
+         }
+     }
+     else if (fs::exists(path2rm)) {
+         if (::g_remove(path2rm.c_str()) != 0) {
+-            spdlog::error("fs::remove: g_remove failed to remove {}", path2rm);
++            spdlog::error("fs::remove: g_remove failed to remove {}", path2rm.string());
+             return false;
+         }
+     }
+@@ -249,13 +249,13 @@ time_t getmtime(const path& p)
+ std::uintmax_t file_size(const path& p)
+ {
+     if (fs::is_directory(p)) {
+-        spdlog::error("fs::file_size: path is a directory, {}", p);
++        spdlog::error("fs::file_size: path is a directory, {}", p.string());
+         return 0;
+     }
+ 
+     GStatBuf st;
+     if (g_stat(p.c_str(), &st) != 0) {
+-        spdlog::error("fs::file_size: g_stat failed, {}", p);
++        spdlog::error("fs::file_size: g_stat failed, {}", p.string());
+         return 0;
+     }
+ 
+@@ -317,7 +317,7 @@ void _open_path_with_default_app(const fs::path& file_or_folder_path)
+ // Open Filepath with External App
+ void open_filepath(const fs::path& filepath, bool open_folder_if_file_not_exists, CtConfig* config)
+ {
+-    spdlog::debug("fs::open_filepath {}", filepath);
++    spdlog::debug("fs::open_filepath {}", filepath.string());
+     if (config->filelinkCustomOn) {
+         std::string cmd = fmt::sprintf(config->filelinkCustomAct, filepath.string());
+         _locale_env_vars_set_for_external_cmd(true/*isPre*/);
+@@ -344,7 +344,7 @@ void open_filepath(const fs::path& filepath, bool open_folder_if_file_not_exists
+ // Open Folderpath with External App
+ void open_folderpath(const fs::path& folderpath, CtConfig* config)
+ {
+-    spdlog::debug("fs::open_folderpath {}", folderpath);
++    spdlog::debug("fs::open_folderpath {}", folderpath.string());
+     if (config->folderlinkCustomOn) {
+         std::string cmd = fmt::sprintf(config->folderlinkCustomAct, folderpath.string());
+         _locale_env_vars_set_for_external_cmd(true/*isPre*/);
+@@ -361,12 +361,12 @@ void open_folderpath(const fs::path& folderpath, CtConfig* config)
+ 
+ path prepare_export_folder(const path& dir_place, path new_folder, bool overwrite_existing)
+ {
+-    if (fs::is_directory(dir_place / new_folder))
+-    {
++    const fs::path dir_place_new_folder = dir_place / new_folder;
++    if (fs::is_directory(dir_place_new_folder)) {
+         // todo:
+         if (overwrite_existing) {
+-            spdlog::debug("fs::prepare_export_folder: removing dir {}", dir_place / new_folder);
+-            remove_all(dir_place / new_folder);
++            spdlog::debug("fs::prepare_export_folder: removing dir {}", dir_place_new_folder.string());
++            remove_all(dir_place_new_folder);
+         }
+         else {
+             int n = 2;
+diff --git a/src/ct/ct_imports.cc b/src/ct/ct_imports.cc
+index 20e5d01d..59947ee4 100644
+--- a/src/ct/ct_imports.cc
++++ b/src/ct/ct_imports.cc
+@@ -454,7 +454,7 @@ std::unique_ptr<CtImportedNode> CtPlainTextImport::import_file(const fs::path& f
+         }
+     }
+     catch (std::exception& ex) {
+-        spdlog::error("{}, what: {}, file: {}", __FUNCTION__, ex.what(), file);
++        spdlog::error("{}, what: {}, file: {}", __FUNCTION__, ex.what(), file.string());
+     }
+     return nullptr;
+ }
+diff --git a/src/ct/ct_main_win_file.cc b/src/ct/ct_main_win_file.cc
+index 52540b7f..752f97ee 100644
+--- a/src/ct/ct_main_win_file.cc
++++ b/src/ct/ct_main_win_file.cc
+@@ -194,14 +194,14 @@ bool CtMainWin::file_open(const fs::path& filepath,
+                         spdlog::debug("trying {} -> {}", curr_backup_file.string(), filepath.string());
+                         new_storage = CtStorageControl::load_from(this, filepath, doc_type, error_or_warning, password);
+                         if (new_storage) {
+-                            spdlog::debug("OK recover from {}", curr_backup_file);
++                            spdlog::debug("OK recover from {}", curr_backup_file.string());
+                             break;
+                         }
+                         fs::move_file(filepath, curr_backup_file);
+                         spdlog::debug("moved back {} -> {}", filepath.string(), curr_backup_file.string());
+                     }
+                     else {
+-                        spdlog::debug("?? backed up data, {} missing", curr_backup_file);
++                        spdlog::debug("?? backed up data, {} missing", curr_backup_file.string());
+                         if (++missing_backup > 3) break;
+                     }
+                 }
+@@ -445,7 +445,7 @@ void CtMainWin::mod_time_sentinel_restart()
+ 
+ bool CtMainWin::file_insert_plain_text(const fs::path& filepath)
+ {
+-    spdlog::debug("trying to insert text file as node: {}", filepath);
++    spdlog::debug("trying to insert text file as node: {}", filepath.string());
+     try {
+         Glib::RefPtr<Gsv::Buffer> pBuffer = Gsv::Buffer::create();
+         if (CtStrUtil::file_any_encoding_load_into_source_buffer(filepath.string(), pBuffer)) {
+@@ -459,7 +459,7 @@ bool CtMainWin::file_insert_plain_text(const fs::path& filepath)
+         }
+     }
+     catch (std::exception& ex) {
+-        spdlog::error("{}, what: {}, file: {}", __FUNCTION__, ex.what(), filepath);
++        spdlog::error("{}, what: {}, file: {}", __FUNCTION__, ex.what(), filepath.string());
+     }
+     return false;
+ }
+diff --git a/src/ct/ct_storage_control.cc b/src/ct/ct_storage_control.cc
+index 9a6e813a..34dd0a1b 100644
+--- a/src/ct/ct_storage_control.cc
++++ b/src/ct/ct_storage_control.cc
+@@ -443,7 +443,7 @@ Glib::RefPtr<Gsv::Buffer> CtStorageControl::get_delayed_text_buffer(const gint64
+                 fs::get_doc_type_from_file_ext(filesInTmpDir.front()) == fs::get_doc_type_from_file_ext(temp_file_path) and
+                 fs::move_file(filesInTmpDir.front(), temp_file_path))
+             {
+-                spdlog::debug("encrypt doc renamed {} -> {}", filesInTmpDir.front().filename(), temp_file_path.filename());
++                spdlog::debug("encrypt doc renamed {} -> {}", filesInTmpDir.front().filename().string(), temp_file_path.filename().string());
+                 return temp_file_path;
+             }
+         }
+@@ -476,7 +476,7 @@ Glib::RefPtr<Gsv::Buffer> CtStorageControl::get_delayed_text_buffer(const gint64
+         return false;
+     }
+     if (not fs::is_regular_file(file_to)) {
+-        spdlog::debug("!! is_regular_file {}", file_to);
++        spdlog::debug("!! is_regular_file {}", file_to.string());
+         if (not tmp_prev_archive.empty()) {
+             (void)fs::move_file(tmp_prev_archive, file_to);
+         }
+@@ -628,7 +628,7 @@ void CtStorageControl::_backupEncryptThread()
+                                 break;
+                             }
+ #if defined(DEBUG_BACKUP_ENCRYPT)
+-                            spdlog::debug("{} -> {}", tilda_node_dir_from, tilda_node_dir_to);
++                            spdlog::debug("{} -> {}", tilda_node_dir_from.string(), tilda_node_dir_to.string());
+ #endif // DEBUG_BACKUP_ENCRYPT
+                         }
+                         tilda_dirpath = tilda_dirpath.string().substr(0, tilda_dirpath.string().size()-1);
+@@ -647,7 +647,7 @@ void CtStorageControl::_backupEncryptThread()
+                 }
+ #if defined(DEBUG_BACKUP_ENCRYPT)
+                 else {
+-                    spdlog::debug("{} -> {}", pBackupEncryptData->main_backup, tilda_node_dir_to);
++                    spdlog::debug("{} -> {}", pBackupEncryptData->main_backup, tilda_node_dir_to.string());
+                 }
+ #endif // DEBUG_BACKUP_ENCRYPT
+             }
+diff --git a/src/ct/ct_storage_multifile.cc b/src/ct/ct_storage_multifile.cc
+index ebd729e0..b7b10b4d 100644
+--- a/src/ct/ct_storage_multifile.cc
++++ b/src/ct/ct_storage_multifile.cc
+@@ -284,7 +284,7 @@ void CtStorageMultiFile::_hier_try_move_node(const fs::path& dir_path_to)
+     };
+     f_find_dir_from(_dir_path);
+     if (not dir_path_from.empty()) {
+-        spdlog::debug("{} -> {}", dir_path_from, dir_path_to);
++        spdlog::debug("{} -> {}", dir_path_from.string(), dir_path_to.string());
+         fs::move_file(dir_path_from, dir_path_to);
+     }
+ }
+@@ -520,7 +520,7 @@ bool CtStorageMultiFile::populate_treestore(const fs::path& dir_path, Glib::ustr
+                     const fs::path curr_backup_dir = first_backup_dir + str::repeat(CtConst::CHAR_TILDE, b).raw();
+                     if (fs::is_directory(curr_backup_dir)) {
+                         missing_backup = 0;
+-                        spdlog::debug("backed up data, {} found", curr_backup_dir);
++                        spdlog::debug("backed up data, {} found", curr_backup_dir.string());
+                         const fs::path backup_node_xml_path = curr_backup_dir / nodedir.filename() / NODE_XML;
+                         try {
+                             pParser = CtStorageXml::get_parser(backup_node_xml_path);
+@@ -541,7 +541,7 @@ bool CtStorageMultiFile::populate_treestore(const fs::path& dir_path, Glib::ustr
+                         }
+                     }
+                     else {
+-                        spdlog::debug("?? backed up data, {} missing", curr_backup_dir);
++                        spdlog::debug("?? backed up data, {} missing", curr_backup_dir.string());
+                         if (++missing_backup > 3) break;
+                     }
+                 }
diff --git a/srcpkgs/cherrytree/patches/22142f3b44fef81e67c9bfbcdaed2f80ab2ff5de.patch b/srcpkgs/cherrytree/patches/22142f3b44fef81e67c9bfbcdaed2f80ab2ff5de.patch
new file mode 100644
index 00000000000000..bb4bcaebb8af15
--- /dev/null
+++ b/srcpkgs/cherrytree/patches/22142f3b44fef81e67c9bfbcdaed2f80ab2ff5de.patch
@@ -0,0 +1,41 @@
+From 22142f3b44fef81e67c9bfbcdaed2f80ab2ff5de Mon Sep 17 00:00:00 2001
+From: Giuseppe Penone <giuspen@gmail.com>
+Date: Thu, 22 Aug 2024 22:22:46 +0100
+Subject: [PATCH] fixed fmt issue on fs::path (#2548)
+
+---
+ src/ct/ct_config.cc | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/ct/ct_config.cc b/src/ct/ct_config.cc
+index 3ebb5451..44a7ab10 100644
+--- a/src/ct/ct_config.cc
++++ b/src/ct/ct_config.cc
+@@ -69,7 +69,7 @@ void CtConfig::move_from_tmp()
+ {
+     if (not _configFilepathTmp.string().empty() and fs::exists(_configFilepathTmp)) {
+         if (not fs::move_file(_configFilepathTmp, _configFilepath)) {
+-            spdlog::error("{} -> {}", _configFilepathTmp, _configFilepath);
++            spdlog::error("{} -> {}", _configFilepathTmp.string(), _configFilepath.string());
+         }
+     }
+ }
+@@ -92,15 +92,15 @@ bool CtConfig::_load_from_file()
+             _uKeyFile->load_from_file(_configFilepath.string());
+         }
+         catch (Glib::Error& error) {
+-            spdlog::error("CtConfig {}: {}", _configFilepath, error.what().raw());
++            spdlog::error("CtConfig {}: {}", _configFilepath.string(), error.what().raw());
+             return false;
+         }
+         _populate_data_from_keyfile();
+         _uKeyFile.reset(nullptr);
+-        spdlog::debug("{} parsed", _configFilepath);
++        spdlog::debug("{} parsed", _configFilepath.string());
+         return true;
+     }
+-    spdlog::warn("{} missing", _configFilepath);
++    spdlog::warn("{} missing", _configFilepath.string());
+     return false;
+ }
+ 
diff --git a/srcpkgs/cherrytree/patches/76f0030e2e2b6e1488148d3828baeb8f5911eb8d.patch b/srcpkgs/cherrytree/patches/76f0030e2e2b6e1488148d3828baeb8f5911eb8d.patch
new file mode 100644
index 00000000000000..88c1030e21cce6
--- /dev/null
+++ b/srcpkgs/cherrytree/patches/76f0030e2e2b6e1488148d3828baeb8f5911eb8d.patch
@@ -0,0 +1,22 @@
+From 76f0030e2e2b6e1488148d3828baeb8f5911eb8d Mon Sep 17 00:00:00 2001
+From: Giuseppe Penone <giuspen@gmail.com>
+Date: Wed, 21 Aug 2024 22:42:54 +0100
+Subject: [PATCH] fixed fmt issue on fs::path (#2548)
+
+---
+ src/ct/ct_actions_others.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/ct/ct_actions_others.cc b/src/ct/ct_actions_others.cc
+index 91ff638e..6931d411 100644
+--- a/src/ct/ct_actions_others.cc
++++ b/src/ct/ct_actions_others.cc
+@@ -898,7 +898,7 @@ bool CtActions::_on_embfiles_sentinel_timeout()
+     for (auto& item : _embfiles_opened) {
+         const fs::path& tmp_filepath = item.second.tmp_filepath;
+         if (not fs::is_regular_file(tmp_filepath)) {
+-            spdlog::debug("embdrop {}", tmp_filepath);
++            spdlog::debug("embdrop {}", tmp_filepath.string());
+             _embfiles_opened.erase(item.first);
+             break;
+         }
diff --git a/srcpkgs/cherrytree/patches/ccc2d101f24a409efddb2f29e8c14002c9836a85.patch b/srcpkgs/cherrytree/patches/ccc2d101f24a409efddb2f29e8c14002c9836a85.patch
new file mode 100644
index 00000000000000..32b2af2060e6e0
--- /dev/null
+++ b/srcpkgs/cherrytree/patches/ccc2d101f24a409efddb2f29e8c14002c9836a85.patch
@@ -0,0 +1,550 @@
+From ccc2d101f24a409efddb2f29e8c14002c9836a85 Mon Sep 17 00:00:00 2001
+From: Giuseppe Penone <giuspen@gmail.com>
+Date: Wed, 21 Aug 2024 18:19:40 +0100
+Subject: [PATCH] removed fmt custom formatter for Glib::ustring (#2548)
+
+---
+ src/ct/ct_actions_edit.cc      |  6 +++---
+ src/ct/ct_actions_find.cc      |  4 ++--
+ src/ct/ct_actions_others.cc    |  2 +-
+ src/ct/ct_clipboard.cc         | 10 +++++-----
+ src/ct/ct_config.cc            |  2 +-
+ src/ct/ct_dialogs_find.cc      |  2 +-
+ src/ct/ct_export2html.cc       | 10 +++++-----
+ src/ct/ct_export2pdf.cc        | 10 +++++-----
+ src/ct/ct_export2txt.cc        |  2 +-
+ src/ct/ct_filesystem.cc        |  2 +-
+ src/ct/ct_image.cc             |  2 +-
+ src/ct/ct_imports.cc           |  4 ++--
+ src/ct/ct_logging.h            | 13 +------------
+ src/ct/ct_main_win_buffer.cc   |  4 ++--
+ src/ct/ct_main_win_events.cc   |  2 +-
+ src/ct/ct_misc_utils.cc        |  4 ++--
+ src/ct/ct_misc_utils.h         |  2 +-
+ src/ct/ct_storage_control.cc   |  6 +++---
+ src/ct/ct_storage_multifile.cc |  2 +-
+ src/ct/ct_storage_sqlite.cc    |  4 ++--
+ src/ct/ct_storage_sqlite.h     |  4 ++--
+ src/ct/ct_storage_xml.cc       |  2 +-
+ src/ct/ct_treestore.cc         |  6 +++---
+ tests/tests_encoding.cpp       |  4 ++--
+ 24 files changed, 49 insertions(+), 60 deletions(-)
+
+diff --git a/src/ct/ct_actions_edit.cc b/src/ct/ct_actions_edit.cc
+index 972838431..155d935ff 100644
+--- a/src/ct/ct_actions_edit.cc
++++ b/src/ct/ct_actions_edit.cc
+@@ -93,7 +93,7 @@ void CtActions::image_insert()
+         rPixbuf = Gdk::Pixbuf::create_from_file(filename);
+     }
+     catch (Glib::Error& error) {
+-        spdlog::error("{} {}", __FUNCTION__, error.what());
++        spdlog::error("{} {}", __FUNCTION__, error.what().raw());
+     }
+     if (rPixbuf)
+         _image_edit_dialog(rPixbuf, _curr_buffer()->get_insert()->get_iter(), nullptr/*pIterBound*/);
+@@ -303,7 +303,7 @@ TocEntry find_toc_entries(CtActions& actions, CtTreeIter& node, unsigned depth)
+     std::unordered_map<int, int> encountered_headers;
+     Glib::RefPtr<Gsv::Buffer> rTextBuffer = node.get_node_text_buffer();
+     if (not rTextBuffer) {
+-        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), node.get_node_name()));
++        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), node.get_node_name().raw()));
+     }
+     Gtk::TextIter text_iter = rTextBuffer->begin();
+ 
+@@ -354,7 +354,7 @@ TocEntry find_toc_entries(CtActions& actions, CtTreeIter& node, unsigned depth)
+                 entry.children.emplace_back(fmt::format("node {} {}", node_id, anchor_txt), false/*is_node*/, txt, depth + 1, h_lvl);
+             }
+             catch(std::invalid_argument&) {
+-                spdlog::error("Could not convert [{}] to an integer", h_level_str);
++                spdlog::error("Could not convert [{}] to an integer", h_level_str.raw());
+             }
+         }
+ 
+diff --git a/src/ct/ct_actions_find.cc b/src/ct/ct_actions_find.cc
+index 47a708873..d0b8cabad 100644
+--- a/src/ct/ct_actions_find.cc
++++ b/src/ct/ct_actions_find.cc
+@@ -218,7 +218,7 @@ void CtActions::find_in_multiple_nodes_ok_clicked()
+         if (_s_options.node_content) {
+             Glib::RefPtr<Gsv::Buffer> rTextBuffer = ct_node_iter.get_node_text_buffer();
+             if (not rTextBuffer) {
+-                CtDialogs::error_dialog(str::format(_("Failed to retrieve the content of the node '%s'"), ct_node_iter.get_node_name()), *_pCtMainWin);
++                CtDialogs::error_dialog(str::format(_("Failed to retrieve the content of the node '%s'"), ct_node_iter.get_node_name().raw()), *_pCtMainWin);
+                 break;
+             }
+         }
+@@ -440,7 +440,7 @@ CtMatchType CtActions::_parse_given_node_content(CtTreeIter node_iter,
+                 if (_s_options.node_content) {
+                     Glib::RefPtr<Gsv::Buffer> rTextBuffer = ct_node_iter.get_node_text_buffer();
+                     if (not rTextBuffer) {
+-                        CtDialogs::error_dialog(str::format(_("Failed to retrieve the content of the node '%s'"), ct_node_iter.get_node_name()), *_pCtMainWin);
++                        CtDialogs::error_dialog(str::format(_("Failed to retrieve the content of the node '%s'"), ct_node_iter.get_node_name().raw()), *_pCtMainWin);
+                         break;
+                     }
+                 }
+diff --git a/src/ct/ct_actions_others.cc b/src/ct/ct_actions_others.cc
+index a7c6746eb..91ff638e4 100644
+--- a/src/ct/ct_actions_others.cc
++++ b/src/ct/ct_actions_others.cc
+@@ -575,7 +575,7 @@ void CtActions::_exec_code(const bool is_all)
+     }
+     else {
+         const int retVal = std::system(terminal_cmd.c_str());
+-        if (retVal != 0) spdlog::error("system({}) returned {}", terminal_cmd, retVal);
++        if (retVal != 0) spdlog::error("system({}) returned {}", terminal_cmd.raw(), retVal);
+     }
+ }
+ 
+diff --git a/src/ct/ct_clipboard.cc b/src/ct/ct_clipboard.cc
+index 9c9bc3ca7..8ca0b080f 100644
+--- a/src/ct/ct_clipboard.cc
++++ b/src/ct/ct_clipboard.cc
+@@ -246,7 +246,7 @@ void CtClipboard::anchor_link_to_clipboard(CtTreeIter node, const Glib::ustring&
+     CtClipboardData* clip_data = new CtClipboardData{};
+     std::string tml = R"XML(<?xml version="1.0" encoding="UTF-8"?><root><slot><rich_text link="node {} {}">{}</rich_text></slot></root>)XML";
+     clip_data->rich_text = fmt::format(tml, node.get_node_id(), str::xml_escape(anchor_name), str::xml_escape(anchor_name));
+-    clip_data->plain_text = fmt::format("{} - {} - {}", node.get_cherrytree_filepath(), CtMiscUtil::get_node_hierarchical_name(node, " / ", false/*for_filename*/).c_str(), anchor_name);
++    clip_data->plain_text = fmt::format("{} - {} - {}", node.get_cherrytree_filepath(), CtMiscUtil::get_node_hierarchical_name(node, " / ", false/*for_filename*/).c_str(), anchor_name.raw());
+ 
+     _set_clipboard_data({CtConst::TARGET_CTD_RICH_TEXT, CtConst::TARGET_CTD_PLAIN_TEXT}, clip_data);
+ }
+@@ -756,7 +756,7 @@ void CtClipboard::on_received_to_uri_list(const Gtk::SelectionData& selection_da
+                 property_value = "webs " + element;
+             }
+             else if (str::startswith(element, "file://")) {
+-                Glib::ustring file_path = element.substr(7);
++                std::string file_path = element.substr(7);
+                 file_path = str::replace(file_path, "%20", CtConst::CHAR_SPACE);
+                 g_autofree gchar* mimetype = g_content_type_guess(file_path.c_str(), nullptr, 0, nullptr);
+                 if (mimetype and str::startswith(mimetype, "image/") and Glib::file_test(file_path, Glib::FILE_TEST_IS_REGULAR)) {
+@@ -794,7 +794,7 @@ void CtClipboard::on_received_to_uri_list(const Gtk::SelectionData& selection_da
+                     _pCtMainWin->get_ct_actions()->embfile_insert_path(element);
+                 }
+                 else {
+-                    spdlog::debug("'{}' not dir or file", element);
++                    spdlog::debug("'{}' not dir or file", element.raw());
+                 }
+             }
+             if (not property_value.empty()) {
+@@ -883,10 +883,10 @@ void CtClipboard::_yaml_to_codebox(const Glib::ustring& yaml_text, Gtk::TextView
+         _xml_to_codebox(xml_doc.write_to_string(), pTextView);
+     }
+     catch (std::exception& e) {
+-        spdlog::error("_yaml_to_codebox exception: {}\n{}", e.what(), yaml_text);
++        spdlog::error("_yaml_to_codebox exception: {}\n{}", e.what(), yaml_text.raw());
+     }
+     catch (...) {
+-        spdlog::error("_yaml_to_codebox unknown exception\n{}", yaml_text);
++        spdlog::error("_yaml_to_codebox unknown exception\n{}", yaml_text.raw());
+     }
+ }
+ 
+diff --git a/src/ct/ct_config.cc b/src/ct/ct_config.cc
+index 2470ab82f..3ebb54512 100644
+--- a/src/ct/ct_config.cc
++++ b/src/ct/ct_config.cc
+@@ -92,7 +92,7 @@ bool CtConfig::_load_from_file()
+             _uKeyFile->load_from_file(_configFilepath.string());
+         }
+         catch (Glib::Error& error) {
+-            spdlog::error("CtConfig {}: {}", _configFilepath, error.what());
++            spdlog::error("CtConfig {}: {}", _configFilepath, error.what().raw());
+             return false;
+         }
+         _populate_data_from_keyfile();
+diff --git a/src/ct/ct_dialogs_find.cc b/src/ct/ct_dialogs_find.cc
+index a4e8c4e4b..78ef6dc31 100644
+--- a/src/ct/ct_dialogs_find.cc
++++ b/src/ct/ct_dialogs_find.cc
+@@ -526,7 +526,7 @@ void CtDialogs::match_dialog(const std::string& str_find,
+     pButtonNext->set_image_position(Gtk::PositionType::POS_RIGHT);
+     CtMenuAction* pAction = pCtMainWin->get_ct_menu().find_action("toggle_show_allmatches_dlg");
+     Glib::ustring label = CtStrUtil::get_accelerator_label(pAction->get_shortcut(pCtMainWin->get_ct_config()));
+-    Gtk::Button* pButtonHide = pMatchesDialog->add_button(str::format(_("Hide (Restore with '%s')"), label), Gtk::RESPONSE_CLOSE);
++    Gtk::Button* pButtonHide = pMatchesDialog->add_button(str::format(_("Hide (Restore with '%s')"), label.raw()), Gtk::RESPONSE_CLOSE);
+     pButtonHide->set_image_from_icon_name("ct_close", Gtk::ICON_SIZE_BUTTON);
+ 
+     rModel->load_current_page();
+diff --git a/src/ct/ct_export2html.cc b/src/ct/ct_export2html.cc
+index ea2acce2c..2e777548a 100644
+--- a/src/ct/ct_export2html.cc
++++ b/src/ct/ct_export2html.cc
+@@ -1,7 +1,7 @@
+ /*
+  * ct_export2html.cc
+  *
+- * Copyright 2009-2023
++ * Copyright 2009-2024
+  * Giuseppe Penone <giuspen@gmail.com>
+  * Evgenii Gurianov <https://github.com/txe>
+  *
+@@ -83,9 +83,9 @@ void CtExport2Html::node_export_to_html(CtTreeIter tree_iter, const CtExportOpti
+ {
+     Glib::RefPtr<Gsv::Buffer> rTextBuffer = tree_iter.get_node_text_buffer();
+     if (not rTextBuffer) {
+-        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), tree_iter.get_node_name()));
++        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), tree_iter.get_node_name().raw()));
+     }
+-    Glib::ustring html_text = str::format(HTML_HEADER, tree_iter.get_node_name());
++    Glib::ustring html_text = str::format(HTML_HEADER, tree_iter.get_node_name().raw());
+     if (not index.empty() and options.index_in_page) {
+         auto script = R"HTML(
+             <script type='text/javascript'>
+@@ -270,7 +270,7 @@ void CtExport2Html::nodes_all_export_to_single_html(bool all_tree, const CtExpor
+         else {
+             Glib::RefPtr<Gsv::Buffer> rTextBuffer = tree_iter.get_node_text_buffer();
+             if (not rTextBuffer) {
+-                throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), tree_iter.get_node_name()));
++                throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), tree_iter.get_node_name().raw()));
+             }
+             html_text += _html_get_from_code_buffer(rTextBuffer, -1, -1, tree_iter.get_node_syntax_highlighting());
+         }
+@@ -529,7 +529,7 @@ void CtExport2Html::_html_get_from_treestore_node(CtTreeIter tree_iter,
+ {
+     Glib::RefPtr<Gsv::Buffer> rTextBuffer = tree_iter.get_node_text_buffer();
+     if (not rTextBuffer) {
+-        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), tree_iter.get_node_name()));
++        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), tree_iter.get_node_name().raw()));
+     }
+     auto widgets = tree_iter.get_anchored_widgets(sel_start, sel_end);
+     out_widgets = std::vector<CtAnchoredWidget*>(widgets.begin(), widgets.end()); // copy from list to vector
+diff --git a/src/ct/ct_export2pdf.cc b/src/ct/ct_export2pdf.cc
+index 88aafdef5..4afacb154 100644
+--- a/src/ct/ct_export2pdf.cc
++++ b/src/ct/ct_export2pdf.cc
+@@ -1,7 +1,7 @@
+ /*
+  * ct_export2pdf.cc
+  *
+- * Copyright 2009-2023
++ * Copyright 2009-2024
+  * Giuseppe Penone <giuspen@gmail.com>
+  * Evgenii Gurianov <https://github.com/txe>
+  *
+@@ -355,7 +355,7 @@ std::shared_ptr<CtPangoText> CtExport2Pango::_pango_link_url(const Glib::ustring
+ #endif /* !_WIN32 && !__APPLE__ */
+     }
+     else {
+-        spdlog::debug("invalid link entry {}, text {}", link, tagged_text);
++        spdlog::debug("invalid link entry {}, text {}", link.raw(), tagged_text.raw());
+         return std::make_shared<CtPangoText>(tagged_text, CtConst::RICH_TEXT_ID, indent, pango_dir);
+     }
+ 
+@@ -367,7 +367,7 @@ void CtExport2Pdf::node_export_print(const fs::path& pdf_filepath, CtTreeIter tr
+ {
+     Glib::RefPtr<Gsv::Buffer> rTextBuffer = tree_iter.get_node_text_buffer();
+     if (not rTextBuffer) {
+-        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), tree_iter.get_node_name()));
++        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), tree_iter.get_node_name().raw()));
+     }
+     std::vector<CtPangoObjectPtr> pango_slots;
+     if (tree_iter.get_node_is_text()) {
+@@ -409,7 +409,7 @@ void CtExport2Pdf::_nodes_all_export_print_iter(CtTreeIter tree_iter,
+ {
+     Glib::RefPtr<Gsv::Buffer> rTextBuffer = tree_iter.get_node_text_buffer();
+     if (not rTextBuffer) {
+-        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), tree_iter.get_node_name()));
++        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), tree_iter.get_node_name().raw()));
+     }
+     std::vector<CtPangoObjectPtr> node_pango_slots;
+     if (tree_iter.get_node_is_text()) {
+@@ -592,7 +592,7 @@ bool CtPrint::_cairo_tag_can_apply(const Glib::ustring& tag_name, const Glib::us
+             return true;
+         }
+     }
+-    spdlog::debug("{} dropped", tag_attr);
++    spdlog::debug("{} dropped", tag_attr.raw());
+     return false;
+ }
+ 
+diff --git a/src/ct/ct_export2txt.cc b/src/ct/ct_export2txt.cc
+index fbf4a810c..4d471a41b 100644
+--- a/src/ct/ct_export2txt.cc
++++ b/src/ct/ct_export2txt.cc
+@@ -34,7 +34,7 @@ Glib::ustring CtExport2Txt::node_export_to_txt(CtTreeIter tree_iter, fs::path fi
+ {
+     Glib::RefPtr<Gsv::Buffer> rTextBuffer = tree_iter.get_node_text_buffer();
+     if (not rTextBuffer) {
+-        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), tree_iter.get_node_name()));
++        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), tree_iter.get_node_name().raw()));
+     }
+     Glib::ustring plain_text;
+     if (export_options.include_node_name) {
+diff --git a/src/ct/ct_filesystem.cc b/src/ct/ct_filesystem.cc
+index 821d470d9..5c5f5ea7d 100644
+--- a/src/ct/ct_filesystem.cc
++++ b/src/ct/ct_filesystem.cc
+@@ -202,7 +202,7 @@ bool copy_file(const path& from, const path& to)
+         return rFileFrom->copy(rFileTo, Gio::FILE_COPY_OVERWRITE);
+     }
+     catch (Gio::Error& error) {
+-        spdlog::debug("fs::copy_file, error: {}, from: {}, to: {}", error.what(), from.string(), to.string());
++        spdlog::debug("fs::copy_file, error: {}, from: {}, to: {}", error.what().raw(), from.string(), to.string());
+         return false;
+     }
+ }
+diff --git a/src/ct/ct_image.cc b/src/ct/ct_image.cc
+index 50e807985..12944e73d 100644
+--- a/src/ct/ct_image.cc
++++ b/src/ct/ct_image.cc
+@@ -433,7 +433,7 @@ static const char* get_dvipng_bin_cmd()
+         return rPixbuf;
+     }
+     catch (Glib::Error& error) {
+-        spdlog::error("{} {}", __FUNCTION__, error.what());
++        spdlog::error("{} {}", __FUNCTION__, error.what().raw());
+     }
+     // fallback
+     return pCtMainWin->get_icon_theme()->load_icon("ct_warning", 48);
+diff --git a/src/ct/ct_imports.cc b/src/ct/ct_imports.cc
+index 203ca6650..20e5d01dc 100644
+--- a/src/ct/ct_imports.cc
++++ b/src/ct/ct_imports.cc
+@@ -1,7 +1,7 @@
+ /*
+  * ct_imports.cc
+  *
+- * Copyright 2009-2023
++ * Copyright 2009-2024
+  * Giuseppe Penone <giuspen@gmail.com>
+  * Evgenii Gurianov <https://github.com/txe>
+  *
+@@ -384,7 +384,7 @@ void CtTomboyImport::_iterate_tomboy_note(xmlpp::Element* iter, std::unique_ptr<
+                 _is_link_to_node = false;
+             }
+             else {
+-                spdlog::debug(dom_iter->get_name());
++                spdlog::debug(dom_iter->get_name().raw());
+                 _iterate_tomboy_note(dom_iter_el, node);
+             }
+         }
+diff --git a/src/ct/ct_logging.h b/src/ct/ct_logging.h
+index dfe2ef7fb..e447ba4e1 100644
+--- a/src/ct/ct_logging.h
++++ b/src/ct/ct_logging.h
+@@ -1,7 +1,7 @@
+ /*
+  * ct_logging.h
+  *
+- * Copyright 2009-2021
++ * Copyright 2009-2024
+  * Giuseppe Penone <giuspen@gmail.com>
+  * Evgenii Gurianov <https://github.com/txe>
+  *
+@@ -32,14 +32,3 @@
+ #include "spdlog/fmt/bundled/core.h"
+ #include "spdlog/fmt/bundled/printf.h"
+ #endif // not SHARED_FMT_SPDLOG
+-#include <glibmm/ustring.h>
+-
+-// ostream works badly on Win32 due to locale encoding
+-template <>
+-struct fmt::formatter<Glib::ustring>: formatter<string_view> {
+-  // parse is inherited from formatter<string_view>.
+-  template <typename FormatContext>
+-  auto format(Glib::ustring c, FormatContext& ctx) {
+-    return formatter<string_view>::format(c.c_str(), ctx);
+-  }
+-};
+diff --git a/src/ct/ct_main_win_buffer.cc b/src/ct/ct_main_win_buffer.cc
+index 4d69e89d3..f04471ae5 100644
+--- a/src/ct/ct_main_win_buffer.cc
++++ b/src/ct/ct_main_win_buffer.cc
+@@ -125,7 +125,7 @@ void CtMainWin::reapply_syntax_highlighting(const char target/*'r':RichText, 'p'
+                 if (node.get_node_is_rich_text()) {
+                     Glib::RefPtr<Gsv::Buffer> rTextBuffer = node.get_node_text_buffer();
+                     if (not rTextBuffer) {
+-                        error = str::format(_("Failed to retrieve the content of the node '%s'"), node.get_node_name());
++                        error = str::format(_("Failed to retrieve the content of the node '%s'"), node.get_node_name().raw());
+                         return true; /* true for stop */
+                     }
+                     apply_syntax_highlighting(rTextBuffer, node.get_node_syntax_highlighting(), true/*forceReApply*/);
+@@ -144,7 +144,7 @@ void CtMainWin::reapply_syntax_highlighting(const char target/*'r':RichText, 'p'
+                 else {
+                     Glib::RefPtr<Gsv::Buffer> rTextBuffer = node.get_node_text_buffer();
+                     if (not rTextBuffer) {
+-                        error = str::format(_("Failed to retrieve the content of the node '%s'"), node.get_node_name());
++                        error = str::format(_("Failed to retrieve the content of the node '%s'"), node.get_node_name().raw());
+                         return true; /* true for stop */
+                     }
+                     apply_syntax_highlighting(rTextBuffer, node.get_node_syntax_highlighting(), true/*forceReApply*/);
+diff --git a/src/ct/ct_main_win_events.cc b/src/ct/ct_main_win_events.cc
+index 732336414..99095a392 100644
+--- a/src/ct/ct_main_win_events.cc
++++ b/src/ct/ct_main_win_events.cc
+@@ -56,7 +56,7 @@ void CtMainWin::_on_treeview_cursor_changed()
+ 
+     Glib::RefPtr<Gsv::Buffer> rTextBuffer = treeIter.get_node_text_buffer();
+     if (not rTextBuffer) {
+-        CtDialogs::error_dialog(str::format(_("Failed to retrieve the content of the node '%s'"), treeIter.get_node_name()), *this);
++        CtDialogs::error_dialog(str::format(_("Failed to retrieve the content of the node '%s'"), treeIter.get_node_name().raw()), *this);
+         if (_prevTreeIter) {
+             _uCtTreeview->set_cursor_safe(_prevTreeIter);
+         }
+diff --git a/src/ct/ct_misc_utils.cc b/src/ct/ct_misc_utils.cc
+index 8ed98b8b3..2b452fe86 100644
+--- a/src/ct/ct_misc_utils.cc
++++ b/src/ct/ct_misc_utils.cc
+@@ -1160,7 +1160,7 @@ int str::indexOf(const Glib::ustring& str, const gunichar& uc)
+     return index != std::string::npos ? static_cast<int>(index) : -1;
+ }
+ 
+-Glib::ustring str::xml_escape(const Glib::ustring& text)
++std::string str::xml_escape(const Glib::ustring& text)
+ {
+     Glib::ustring buffer;
+     buffer.reserve(text.size());
+@@ -1175,7 +1175,7 @@ Glib::ustring str::xml_escape(const Glib::ustring& text)
+             default:   buffer.append(1, *ch);        break;
+         }
+     }
+-    return buffer;
++    return buffer.raw();
+ }
+ 
+ Glib::ustring str::sanitize_bad_symbols(const Glib::ustring& xml_content)
+diff --git a/src/ct/ct_misc_utils.h b/src/ct/ct_misc_utils.h
+index dc2cb09a2..d75a0f263 100644
+--- a/src/ct/ct_misc_utils.h
++++ b/src/ct/ct_misc_utils.h
+@@ -328,7 +328,7 @@ int indexOf(const std::array<T, size>& array, const T& uc)
+     return -1;
+ }
+ 
+-Glib::ustring xml_escape(const Glib::ustring& text);
++std::string xml_escape(const Glib::ustring& text);
+ 
+ Glib::ustring sanitize_bad_symbols(const Glib::ustring& xml_content);
+ 
+diff --git a/src/ct/ct_storage_control.cc b/src/ct/ct_storage_control.cc
+index 54b9c145b..9a6e813a0 100644
+--- a/src/ct/ct_storage_control.cc
++++ b/src/ct/ct_storage_control.cc
+@@ -140,7 +140,7 @@ static const std::string BAD_ARCHIVE{"_BAD_ARC_"};
+             return Glib::build_filename(first_backup_dir, CtConst::CHAR_DOT + Glib::path_get_basename(file_or_dir_path)) + CtConst::CHAR_TILDE;
+         }
+         catch (Glib::Error& ex) {
+-            spdlog::error("failed to create backup directory: {}, \n{}", first_backup_dir, ex.what());
++            spdlog::error("failed to create backup directory: {}, \n{}", first_backup_dir, ex.what().raw());
+             return "";
+         }
+     };
+@@ -778,7 +778,7 @@ void CtStorageCache::generate_cache(CtMainWin* pCtMainWin, const CtStorageSyncPe
+             CtTreeIter ct_tree_iter = store.to_ct_tree_iter(iter);
+             Glib::RefPtr<Gsv::Buffer> rTextBuffer = ct_tree_iter.get_node_text_buffer();
+             if (not rTextBuffer) {
+-                error = str::format(_("Failed to retrieve the content of the node '%s'"), ct_tree_iter.get_node_name());
++                error = str::format(_("Failed to retrieve the content of the node '%s'"), ct_tree_iter.get_node_name().raw());
+                 return true; /* true for stop */
+             }
+             for (auto widget : ct_tree_iter.get_anchored_widgets_fast())
+@@ -795,7 +795,7 @@ void CtStorageCache::generate_cache(CtMainWin* pCtMainWin, const CtStorageSyncPe
+             if (node_pair.second.buff && ct_tree_iter.get_node_is_rich_text()) {
+                 Glib::RefPtr<Gsv::Buffer> rTextBuffer = ct_tree_iter.get_node_text_buffer();
+                 if (not rTextBuffer) {
+-                    throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), ct_tree_iter.get_node_name()));
++                    throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), ct_tree_iter.get_node_name().raw()));
+                 }
+                 for (auto widget : ct_tree_iter.get_anchored_widgets_fast())
+                     if (widget->get_type() == CtAnchWidgType::ImagePng) // important to check type
+diff --git a/src/ct/ct_storage_multifile.cc b/src/ct/ct_storage_multifile.cc
+index 966cba10c..ebd729e0e 100644
+--- a/src/ct/ct_storage_multifile.cc
++++ b/src/ct/ct_storage_multifile.cc
+@@ -455,7 +455,7 @@ bool CtStorageMultiFile::_nodes_to_multifile(const CtTreeIter* ct_tree_iter,
+         }
+     }
+     catch (Glib::Error& error) {
+-        spdlog::error("{} {}", __FUNCTION__, error.what());
++        spdlog::error("{} {}", __FUNCTION__, error.what().raw());
+     }
+     return false;
+ }
+diff --git a/src/ct/ct_storage_sqlite.cc b/src/ct/ct_storage_sqlite.cc
+index 476e563ed..dd2c703bb 100644
+--- a/src/ct/ct_storage_sqlite.cc
++++ b/src/ct/ct_storage_sqlite.cc
+@@ -108,8 +108,8 @@ const char CtStorageSqlite::TABLE_BOOKMARK_CREATE[]{"CREATE TABLE bookmark ("
+ const char CtStorageSqlite::TABLE_BOOKMARK_INSERT[]{"INSERT INTO bookmark VALUES(?,?)"};
+ const char CtStorageSqlite::TABLE_BOOKMARK_DELETE[]{"DELETE FROM bookmark"};
+ 
+-const Glib::ustring CtStorageSqlite::ERR_SQLITE_PREPV2{"!! sqlite3_prepare_v2: "};
+-const Glib::ustring CtStorageSqlite::ERR_SQLITE_STEP{"!! sqlite3_step: "};
++/*static*/const std::string CtStorageSqlite::ERR_SQLITE_PREPV2{"!! sqlite3_prepare_v2: "};
++/*static*/const std::string CtStorageSqlite::ERR_SQLITE_STEP{"!! sqlite3_step: "};
+ 
+ class Sqlite3StmtAuto
+ {
+diff --git a/src/ct/ct_storage_sqlite.h b/src/ct/ct_storage_sqlite.h
+index e6cad42df..e42fe9cd4 100644
+--- a/src/ct/ct_storage_sqlite.h
++++ b/src/ct/ct_storage_sqlite.h
+@@ -129,8 +129,8 @@ class CtStorageSqlite : public CtStorageEntity
+     static const char TABLE_BOOKMARK_CREATE[];
+     static const char TABLE_BOOKMARK_INSERT[];
+     static const char TABLE_BOOKMARK_DELETE[];
+-    static const Glib::ustring ERR_SQLITE_PREPV2;
+-    static const Glib::ustring ERR_SQLITE_STEP;
++    static const std::string ERR_SQLITE_PREPV2;
++    static const std::string ERR_SQLITE_STEP;
+     static const char* safe_sqlite3_column_text(sqlite3_stmt* stmt, int iCol);
+ 
+ private:
+diff --git a/src/ct/ct_storage_xml.cc b/src/ct/ct_storage_xml.cc
+index 555c72362..3e0fc8cc4 100644
+--- a/src/ct/ct_storage_xml.cc
++++ b/src/ct/ct_storage_xml.cc
+@@ -249,7 +249,7 @@ void CtStorageXml::_nodes_to_xml(CtTreeIter* ct_tree_iter,
+ {
+     Glib::RefPtr<Gsv::Buffer> rTextBuffer = ct_tree_iter->get_node_text_buffer();
+     if (not rTextBuffer) {
+-        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), ct_tree_iter->get_node_name()));
++        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), ct_tree_iter->get_node_name().raw()));
+     }
+     xmlpp::Element* p_node_node =  CtStorageXmlHelper{_pCtMainWin}.node_to_xml(
+         ct_tree_iter,
+diff --git a/src/ct/ct_treestore.cc b/src/ct/ct_treestore.cc
+index 44c0d14bf..bd3d34eac 100644
+--- a/src/ct/ct_treestore.cc
++++ b/src/ct/ct_treestore.cc
+@@ -866,8 +866,8 @@ void CtTreeStore::text_view_apply_textbuffer(CtTreeIter& treeIter, CtTextView* p
+     const gint64 nodeMasterId = treeIter.get_node_shared_master_id();
+     const gint64 nodeId = treeIter.get_node_id();
+     const Glib::ustring nodeName = treeIter.get_node_name();
+-    if (nodeMasterId <= 0) spdlog::debug("Node {} > {}", nodeId, nodeName);
+-    else spdlog::debug("Node {}[{}] > {}", nodeId, nodeMasterId, nodeName);
++    if (nodeMasterId <= 0) spdlog::debug("Node {} > {}", nodeId, nodeName.raw());
++    else spdlog::debug("Node {}[{}] > {}", nodeId, nodeMasterId, nodeName.raw());
+ 
+     Glib::RefPtr<Gsv::Buffer> rTextBuffer = treeIter.get_node_text_buffer();
+     _pCtMainWin->apply_syntax_highlighting(rTextBuffer, treeIter.get_node_syntax_highlighting(), false/*forceReApply*/);
+@@ -1416,7 +1416,7 @@ bool CtTreeStore::populate_summary_info(CtSummaryInfo& summaryInfo)
+             // ensure the node content is populated
+             Glib::RefPtr<Gsv::Buffer> rTextBuffer = ctTreeIter.get_node_text_buffer();
+             if (not rTextBuffer) {
+-                error = str::format(_("Failed to retrieve the content of the node '%s'"), ctTreeIter.get_node_name());
++                error = str::format(_("Failed to retrieve the content of the node '%s'"), ctTreeIter.get_node_name().raw());
+                 return true; /* true for stop */
+             }
+             const gint64 shared_master_id = ctTreeIter.get_node_shared_master_id();
+diff --git a/tests/tests_encoding.cpp b/tests/tests_encoding.cpp
+index ce3ce3101..80683ced8 100644
+--- a/tests/tests_encoding.cpp
++++ b/tests/tests_encoding.cpp
+@@ -1,7 +1,7 @@
+ /*
+  * tests_encoding.cpp
+  *
+- * Copyright 2009-2020
++ * Copyright 2009-2024
+  * Giuseppe Penone <giuspen@gmail.com>
+  * Evgenii Gurianov <https://github.com/txe>
+  *
+@@ -28,5 +28,5 @@ TEST(EncodingGroup, ustring_format)
+ {
+     // on win32 this could throw an exception due to locale
+     Glib::ustring str = "привет こんにちは";
+-    ASSERT_STREQ(str.c_str(), fmt::format("{}", str).c_str());
++    ASSERT_STREQ(str.c_str(), fmt::format("{}", str.raw()).c_str());
+ }
diff --git a/srcpkgs/cherrytree/patches/fc1d7499067b9db9841175b5a2d6934dc65e4522.patch b/srcpkgs/cherrytree/patches/fc1d7499067b9db9841175b5a2d6934dc65e4522.patch
new file mode 100644
index 00000000000000..dd117eaf8c83b3
--- /dev/null
+++ b/srcpkgs/cherrytree/patches/fc1d7499067b9db9841175b5a2d6934dc65e4522.patch
@@ -0,0 +1,151 @@
+From fc1d7499067b9db9841175b5a2d6934dc65e4522 Mon Sep 17 00:00:00 2001
+From: Ben Cotton <bcotton@funnelfiasco.com>
+Date: Fri, 23 Aug 2024 06:02:31 -0400
+Subject: [PATCH] Fix formatting issues with fmt 11 (#2548) (#2560)
+
+CherryTree fails to build on Fedora Rawhide due to errors introduced by
+fmt 11. This commit fixes all of the remaining errors raised during
+compile.
+
+Fixes #2548
+
+Signed-off-by: Ben Cotton <bcotton@fedoraproject.org>
+Co-authored-by: Ben Cotton <bcotton@fedoraproject.org>
+---
+ src/ct/ct_export2html.cc       |  4 ++--
+ src/ct/ct_storage_control.cc   | 12 ++++++------
+ src/ct/ct_storage_multifile.cc |  6 +++---
+ src/ct/ct_storage_sqlite.cc    |  6 +++---
+ 4 files changed, 14 insertions(+), 14 deletions(-)
+
+diff --git a/src/ct/ct_export2html.cc b/src/ct/ct_export2html.cc
+index 2e777548..b74aff5a 100644
+--- a/src/ct/ct_export2html.cc
++++ b/src/ct/ct_export2html.cc
+@@ -180,7 +180,7 @@ void CtExport2Html::nodes_all_export_to_multiple_html(bool all_tree, const CtExp
+     tree_links_text += "</div>\n";
+ 
+     // create index html page
+-    Glib::ustring html_text = str::format(HTML_HEADER, _pCtMainWin->get_ct_storage()->get_file_name());
++    Glib::ustring html_text = str::format(HTML_HEADER, _pCtMainWin->get_ct_storage()->get_file_name().string());
+     if (options.index_in_page) {
+         html_text += "<div class='two-panels'>\n<div class='tree-panel'>\n";
+         html_text += tree_links_text;
+@@ -283,7 +283,7 @@ void CtExport2Html::nodes_all_export_to_single_html(bool all_tree, const CtExpor
+         }
+     };
+ 
+-    Glib::ustring html_header = str::format(HTML_HEADER, _pCtMainWin->get_ct_storage()->get_file_name());
++    Glib::ustring html_header = str::format(HTML_HEADER, _pCtMainWin->get_ct_storage()->get_file_name().string());
+     rFileStream->write(html_header.c_str(), html_header.bytes());
+ 
+     // start to iterarte nodes
+diff --git a/src/ct/ct_storage_control.cc b/src/ct/ct_storage_control.cc
+index 34dd0a1b..e2b6f114 100644
+--- a/src/ct/ct_storage_control.cc
++++ b/src/ct/ct_storage_control.cc
+@@ -78,7 +78,7 @@ static const std::string BAD_ARCHIVE{"_BAD_ARC_"};
+                     return nullptr;
+                 }
+                 if (extracted_file_path.string() == BAD_ARCHIVE) {
+-                    throw std::runtime_error(str::format(_("'%s' is Not a Valid Archive"), file_path));
++                    throw std::runtime_error(str::format(_("'%s' is Not a Valid Archive"), file_path.string()));
+                 }
+             }
+         }
+@@ -533,14 +533,14 @@ void CtStorageControl::_backupEncryptThread()
+                 // move back the latest file version
+                 (void)fs::move_file(pBackupEncryptData->main_backup, pBackupEncryptData->file_path);
+ #if defined(DEBUG_BACKUP_ENCRYPT)
+-                spdlog::debug("{} -> {}", pBackupEncryptData->main_backup, pBackupEncryptData->file_path);
++                spdlog::debug("{} -> {}", pBackupEncryptData->main_backup, pBackupEncryptData->file_path.string());
+ #endif // DEBUG_BACKUP_ENCRYPT
+                 _pCtMainWin->errorsDEQueue.push_back(_("Failed to encrypt the file"));
+                 _pCtMainWin->dispatcherErrorMsg.emit();
+                 continue;
+             }
+ #if defined(DEBUG_BACKUP_ENCRYPT)
+-            spdlog::debug("{} => {}", pBackupEncryptData->extracted_copy, pBackupEncryptData->file_path);
++            spdlog::debug("{} => {}", pBackupEncryptData->extracted_copy, pBackupEncryptData->file_path.string());
+ #endif // DEBUG_BACKUP_ENCRYPT
+         }
+ 
+@@ -729,12 +729,12 @@ void CtStorageControl::add_nodes_from_storage(const fs::path& file_path,
+ {
+     if (is_folder) {
+         if (not fs::is_directory(file_path)) {
+-            throw std::runtime_error(fmt::format("{} not a dir", file_path));
++            throw std::runtime_error(fmt::format("{} not a dir", file_path.string()));
+         }
+     }
+     else {
+         if (not fs::is_regular_file(file_path)) {
+-            throw std::runtime_error(fmt::format("{} not a file", file_path));
++            throw std::runtime_error(fmt::format("{} not a file", file_path.string()));
+         }
+     }
+ 
+@@ -747,7 +747,7 @@ void CtStorageControl::add_nodes_from_storage(const fs::path& file_path,
+             return;
+         }
+         if (extracted_file_path.string() == BAD_ARCHIVE) {
+-            throw std::runtime_error(str::format(_("'%s' is Not a Valid Archive"), file_path));
++            throw std::runtime_error(str::format(_("'%s' is Not a Valid Archive"), file_path.string()));
+         }
+     }
+ 
+diff --git a/src/ct/ct_storage_multifile.cc b/src/ct/ct_storage_multifile.cc
+index b7b10b4d..94db12bb 100644
+--- a/src/ct/ct_storage_multifile.cc
++++ b/src/ct/ct_storage_multifile.cc
+@@ -510,7 +510,7 @@ bool CtStorageMultiFile::populate_treestore(const fs::path& dir_path, Glib::ustr
+                 parsingOk = true;
+             }
+             catch (std::exception& ex) {
+-                spdlog::error("parse {} : {} - trying first backup...", node_xml_path, ex.what());
++                spdlog::error("parse {} : {} - trying first backup...", node_xml_path.string(), ex.what());
+             }
+             if (not parsingOk) {
+                 std::string first_backup_dir;
+@@ -527,13 +527,13 @@ bool CtStorageMultiFile::populate_treestore(const fs::path& dir_path, Glib::ustr
+                             parsingOk = true;
+                         }
+                         catch (std::exception& ex) {
+-                            spdlog::error("parse {} : {} - trying backup {}...", node_xml_path, ex.what(), b+2);
++                            spdlog::error("parse {} : {} - trying backup {}...", node_xml_path.string(), ex.what(), b+2);
+                         }
+                         if (parsingOk) {
+                             if (fs::exists(node_xml_path)) {
+                                 fs::move_file(node_xml_path, node_xml_path.parent_path() / (node_xml_path.stem() + std::string{"_BAD.xml"}));
+                             }
+-                            spdlog::debug("parse backed up data ok, copying {} -> {}", backup_node_xml_path, node_xml_path);
++                            spdlog::debug("parse backed up data ok, copying {} -> {}", backup_node_xml_path.string(), node_xml_path.string());
+                             fs::copy_file(backup_node_xml_path, node_xml_path);
+                             if (error.empty()) error += _("A Restore From Backup Was Necessary For:");
+                             error += "\n\n" + node_xml_path.string();
+diff --git a/src/ct/ct_storage_sqlite.cc b/src/ct/ct_storage_sqlite.cc
+index dd2c703b..3b0b9217 100644
+--- a/src/ct/ct_storage_sqlite.cc
++++ b/src/ct/ct_storage_sqlite.cc
+@@ -207,10 +207,10 @@ void CtStorageSqlite::test_connection()
+     }
+     catch(std::exception& e) {
+         spdlog::debug("{} {}", __FUNCTION__, e.what());
+-        throw std::runtime_error(str::format(_("%s write failed - file is missing. Reattach USB drive or shared resource!"), _file_path));
++        throw std::runtime_error(str::format(_("%s write failed - file is missing. Reattach USB drive or shared resource!"), _file_path.string()));
+     }
+     if (not test_readwrite())
+-        throw std::runtime_error(str::format(_("%s write failed - is file blocked by a sync program?"), _file_path));
++        throw std::runtime_error(str::format(_("%s write failed - is file blocked by a sync program?"), _file_path.string()));
+     (void)_check_database_integrity();
+ }
+ 
+@@ -223,7 +223,7 @@ void CtStorageSqlite::try_reopen()
+     }
+     catch(std::exception& e) {
+         spdlog::debug("{} {}", __FUNCTION__, e.what());
+-        throw std::runtime_error(str::format(_("%s reopen failed - file is missing. Reattach USB drive or shared resource!"), _file_path));
++        throw std::runtime_error(str::format(_("%s reopen failed - file is missing. Reattach USB drive or shared resource!"), _file_path.string()));
+     }
+     (void)_check_database_integrity();
+ }
diff --git a/srcpkgs/cherrytree/patches/series b/srcpkgs/cherrytree/patches/series
new file mode 100644
index 00000000000000..22ed6296f2952f
--- /dev/null
+++ b/srcpkgs/cherrytree/patches/series
@@ -0,0 +1,5 @@
+76f0030e2e2b6e1488148d3828baeb8f5911eb8d.patch
+ccc2d101f24a409efddb2f29e8c14002c9836a85.patch
+22142f3b44fef81e67c9bfbcdaed2f80ab2ff5de.patch
+05233db2b25977037c7520a8316183636a262130.patch
+fc1d7499067b9db9841175b5a2d6934dc65e4522.patch
diff --git a/srcpkgs/cherrytree/template b/srcpkgs/cherrytree/template
index 61ce49b4b43c6d..712ad0e7e3edab 100644
--- a/srcpkgs/cherrytree/template
+++ b/srcpkgs/cherrytree/template
@@ -1,7 +1,7 @@
 # Template file for 'cherrytree'
 pkgname=cherrytree
 version=1.1.4
-revision=1
+revision=2
 build_style=cmake
 # Tests are built during the normal build process and require access to X server
 configure_args="-DBUILD_TESTING=OFF"

From 0839ed54c4f053e463f737b0988eaa88bfaeda1a Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:08 +0200
Subject: [PATCH 07/27] coeurl: update to 0.3.1

---
 srcpkgs/coeurl/patches/fix-build.diff | 11 -----------
 srcpkgs/coeurl/template               |  4 ++--
 2 files changed, 2 insertions(+), 13 deletions(-)
 delete mode 100644 srcpkgs/coeurl/patches/fix-build.diff

diff --git a/srcpkgs/coeurl/patches/fix-build.diff b/srcpkgs/coeurl/patches/fix-build.diff
deleted file mode 100644
index 6b3b33e6806a24..00000000000000
--- a/srcpkgs/coeurl/patches/fix-build.diff
+++ /dev/null
@@ -1,11 +0,0 @@
-diff --git a/subprojects/curl.wrap b/subprojects/curl.wrap
-index f1510b4ba5..ec9710f9d7 100644
---- a/subprojects/curl.wrap
-+++ b/subprojects/curl.wrap
-@@ -5,5 +5,5 @@ source_url = https://github.com/curl/curl/releases/download/curl-7_77_0/curl-7.7
- source_filename = curl-7.77.0.tar.xz
- source_hash = 0f64582c54282f31c0de9f0a1a596b182776bd4df9a4c4a2a41bbeb54f62594b
- 
--[provides]
-+[provide]
- dependency_names = libcurl
diff --git a/srcpkgs/coeurl/template b/srcpkgs/coeurl/template
index fc0175da3c486c..b73eb89978ab8d 100644
--- a/srcpkgs/coeurl/template
+++ b/srcpkgs/coeurl/template
@@ -1,6 +1,6 @@
 # Template file for 'coeurl'
 pkgname=coeurl
-version=0.3.0
+version=0.3.1
 revision=1
 build_style=meson
 hostmakedepends="pkg-config"
@@ -10,7 +10,7 @@ maintainer="Orphaned <orphan@voidlinux.org>"
 license="MIT"
 homepage="https://nheko.im/nheko-reborn/coeurl"
 distfiles="https://nheko.im/nheko-reborn/coeurl/-/archive/v${version}/coeurl-v${version}.tar.gz"
-checksum=48b07482364edcbed03e352f6b8b07e327c331eaa45707ad58e62930fa361382
+checksum=6203654c2eec7a286388a6cfa8d8ea5698c57b7b8be235b2cc165f0b4c7bee0b
 
 post_install() {
 	vlicense LICENSE

From b7989248cf1fc7411f4069e0d6b34d4a78311b24 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:09 +0200
Subject: [PATCH 08/27] cryfs: rebuild for fmt-11.0.2

---
 srcpkgs/cryfs/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/cryfs/template b/srcpkgs/cryfs/template
index bb2109c034e8cb..3e523766b129c1 100644
--- a/srcpkgs/cryfs/template
+++ b/srcpkgs/cryfs/template
@@ -1,7 +1,7 @@
 # Template file for 'cryfs'
 pkgname=cryfs
 version=0.11.4
-revision=2
+revision=3
 build_style=cmake
 configure_args="-DBoost_USE_STATIC_LIBS=OFF -DCRYFS_UPDATE_CHECKS=off
  -DDEPENDENCY_CONFIG=../cmake-utils/DependenciesFromLocalSystem.cmake"

From 19ba84d84011b92db343bfaaeba8a636b463d9fd Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:09 +0200
Subject: [PATCH 09/27] devilutionX: update to 1.5.3.

---
 srcpkgs/devilutionX/template | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/devilutionX/template b/srcpkgs/devilutionX/template
index ad911b48f8631c..c052c2518fcd8c 100644
--- a/srcpkgs/devilutionX/template
+++ b/srcpkgs/devilutionX/template
@@ -1,7 +1,7 @@
 # Template file for 'devilutionX'
 pkgname=devilutionX
-version=1.4.1
-revision=3
+version=1.5.3
+revision=1
 build_style=cmake
 configure_args="-DVERSION_NUM=$version -DDISABLE_ZERO_TIER=ON"
 hostmakedepends="pkg-config"
@@ -13,8 +13,8 @@ license="Unlicense"
 homepage="https://github.com/diasurgical/devilutionX"
 changelog="https://raw.githubusercontent.com/diasurgical/devilutionX/master/docs/CHANGELOG.md"
 distfiles="https://github.com/diasurgical/devilutionX/releases/download/${version}/devilutionx-src.tar.xz"
-checksum=f80a5414bb7b5a5ae9f6dbc69cec4ae080c29dd0a8a553cedd405d631011da9f
+checksum=ea948933eb5fbffb12d72743ef15b626e7004a88bd4f1415b26a9f45240f4a7e
 
 post_install() {
-	vlicense LICENSE
+	vlicense LICENSE.md
 }

From 4e4edb98ba9f7f66ac44ba4a23f21fb59f203f38 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:09 +0200
Subject: [PATCH 10/27] easyeffects: rebuild for fmt-11.0.2

---
 srcpkgs/easyeffects/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/easyeffects/template b/srcpkgs/easyeffects/template
index 4bd7570991347d..dceb132e246a59 100644
--- a/srcpkgs/easyeffects/template
+++ b/srcpkgs/easyeffects/template
@@ -1,7 +1,7 @@
 # Template file for 'easyeffects'
 pkgname=easyeffects
 version=7.1.7
-revision=2
+revision=3
 build_style=meson
 hostmakedepends="pkg-config gettext itstool glib-devel desktop-file-utils
  gtk4-update-icon-cache"

From e74eb4967deb8e815e731dd5dd2df0869286f71c Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:09 +0200
Subject: [PATCH 11/27] freecad: rebuild for fmt-11.0.2

---
 srcpkgs/freecad/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/freecad/template b/srcpkgs/freecad/template
index 2c0e80315116fd..3d5e31790bb62b 100644
--- a/srcpkgs/freecad/template
+++ b/srcpkgs/freecad/template
@@ -1,7 +1,7 @@
 # Template file for 'freecad'
 pkgname=freecad
 version=0.21.2
-revision=1
+revision=2
 build_wrksrc="FreeCAD-${version}"
 build_style=cmake
 pycompile_dirs="usr/lib/${pkgname}/Mod"

From b0699e50b4361df3845dca06ebf1d629b2c08bef Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:09 +0200
Subject: [PATCH 12/27] furnace: rebuild for fmt-11.0.2

---
 srcpkgs/furnace/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/furnace/template b/srcpkgs/furnace/template
index 4e0bcbe473a307..e22134b048d815 100644
--- a/srcpkgs/furnace/template
+++ b/srcpkgs/furnace/template
@@ -1,7 +1,7 @@
 # Template file for 'furnace'
 pkgname=furnace
 version=0.6.7
-revision=1
+revision=2
 _adpcm_commit="ef7a217154badc3b99978ac481b268c8aab67bd8"
 build_style=cmake
 configure_args="-DSYSTEM_FFTW=ON -DSYSTEM_FMT=ON -DSYSTEM_FREETYPE=ON

From 0c4d955e12a241e0624f3f96e947ce1b74dff4d2 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:09 +0200
Subject: [PATCH 13/27] gerbera: update to 2.2.0.

---
 srcpkgs/gerbera/template | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/gerbera/template b/srcpkgs/gerbera/template
index 5e2da9c98da86b..20df4f404f5f55 100644
--- a/srcpkgs/gerbera/template
+++ b/srcpkgs/gerbera/template
@@ -1,20 +1,20 @@
 # Template file for 'gerbera'
 pkgname=gerbera
-version=1.12.1
-revision=2
+version=2.2.0
+revision=1
 build_style=cmake
 configure_args="-DWITH_SYSTEMD=0 -DWITH_AVCODEC=1"
 hostmakedepends="pkg-config"
 makedepends="duktape-devel expat-devel ffmpeg6-devel file-devel libcurl-devel
  libexif-devel libupnp-devel libuuid-devel sqlite-devel taglib-devel
- fmt-devel spdlog pugixml-devel libebml-devel libmatroska-devel"
+ fmt-devel spdlog pugixml-devel libebml-devel libmatroska-devel exiv2-devel"
 short_desc="UPnP Media Server based on MediaTomb"
 maintainer="Alexander Gehrke <void@qwertyuiop.de>"
 license="GPL-2.0-only"
 homepage="http://gerbera.io/"
 changelog="https://raw.githubusercontent.com/gerbera/gerbera/master/ChangeLog.md"
 distfiles="https://github.com/gerbera/gerbera/archive/v${version}.tar.gz"
-checksum=2144a7c4a13e8b43aa0c911fbeae65f05e2c42254ddd03be5c41f5fcf103a93c
+checksum=c77f4a8ccbed5e18499c0854803fec65ae2f26af633818b52584651fbd3eec13
 
 # libupnp uses large file support, so users must do that, too
 CXXFLAGS="-D_FILE_OFFSET_BITS=64"

From c9b81515431179273a2d57563286808bdfb71fa5 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:09 +0200
Subject: [PATCH 14/27] gnuradio: rebuild for fmt-11.0.2

---
 ...70051c1c2b5fb6f2da8fb6422b27418c3dfa.patch | 47 +++++++++++++++++++
 srcpkgs/gnuradio/template                     |  2 +-
 2 files changed, 48 insertions(+), 1 deletion(-)
 create mode 100644 srcpkgs/gnuradio/patches/19b070051c1c2b5fb6f2da8fb6422b27418c3dfa.patch

diff --git a/srcpkgs/gnuradio/patches/19b070051c1c2b5fb6f2da8fb6422b27418c3dfa.patch b/srcpkgs/gnuradio/patches/19b070051c1c2b5fb6f2da8fb6422b27418c3dfa.patch
new file mode 100644
index 00000000000000..9de16700eac8f4
--- /dev/null
+++ b/srcpkgs/gnuradio/patches/19b070051c1c2b5fb6f2da8fb6422b27418c3dfa.patch
@@ -0,0 +1,47 @@
+From 19b070051c1c2b5fb6f2da8fb6422b27418c3dfa Mon Sep 17 00:00:00 2001
+From: Kefu Chai <tchaikov@gmail.com>
+Date: Mon, 15 Jul 2024 09:27:16 +0800
+Subject: [PATCH] blocks,runtime: io_signature: include spdlog/*/ranges.h for
+ using fmt::join()
+
+fmt::join() was moved into fmt/ranges.h since fmt 11, so let's
+include the corresponding header in spdlog for using it.
+
+Signed-off-by: Kefu Chai <tchaikov@gmail.com>
+---
+ gnuradio-runtime/lib/io_signature.cc | 5 +++++
+ gr-blocks/lib/message_debug_impl.cc  | 5 +++++
+ 2 files changed, 10 insertions(+)
+
+diff --git a/gnuradio-runtime/lib/io_signature.cc b/gnuradio-runtime/lib/io_signature.cc
+index 812f444f8bb..76bb2aba670 100644
+--- a/gnuradio-runtime/lib/io_signature.cc
++++ b/gnuradio-runtime/lib/io_signature.cc
+@@ -16,6 +16,11 @@
+ #include <spdlog/tweakme.h>
+ 
+ #include <spdlog/fmt/fmt.h>
++#if __has_include(<spdlog/fmt/ranges.h>)
++#include <spdlog/fmt/ranges.h>
++#elif __has_include(<spdlog/fmt/bundled/ranges.h>)
++#include <spdlog/fmt/bundled/ranges.h>
++#endif
+ #include <string_view>
+ #include <algorithm>
+ #include <memory>
+diff --git a/gr-blocks/lib/message_debug_impl.cc b/gr-blocks/lib/message_debug_impl.cc
+index 41d312e43c3..373287b02ab 100644
+--- a/gr-blocks/lib/message_debug_impl.cc
++++ b/gr-blocks/lib/message_debug_impl.cc
+@@ -19,6 +19,11 @@
+ #include <pmt/pmt.h>
+ #include <spdlog/common.h>
+ #include <spdlog/fmt/fmt.h>
++#if __has_include(<spdlog/fmt/ranges.h>)
++#include <spdlog/fmt/ranges.h>
++#elif __has_include(<spdlog/fmt/bundled/ranges.h>)
++#include <spdlog/fmt/bundled/ranges.h>
++#endif
+ #include <functional>
+ #include <utility>
+ #include <vector>
diff --git a/srcpkgs/gnuradio/template b/srcpkgs/gnuradio/template
index 88dd446a846d25..37aac47fd64fd8 100644
--- a/srcpkgs/gnuradio/template
+++ b/srcpkgs/gnuradio/template
@@ -1,7 +1,7 @@
 # Template file for 'gnuradio'
 pkgname=gnuradio
 version=3.10.10.0
-revision=2
+revision=3
 build_style=cmake
 build_helper="python3"
 conf_files="/etc/gnuradio/conf.d/*"

From ec10008495891beea744cf5f539858d345c53168 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:10 +0200
Subject: [PATCH 15/27] imhex: rebuild for fmt-11.0.2

---
 srcpkgs/imhex/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/imhex/template b/srcpkgs/imhex/template
index 9e8cd7184a1520..b10c948af3d79f 100644
--- a/srcpkgs/imhex/template
+++ b/srcpkgs/imhex/template
@@ -1,7 +1,7 @@
 # Template file for 'imhex'
 pkgname=imhex
 version=1.35.4
-revision=1
+revision=2
 build_wrksrc="ImHex"
 build_style=cmake
 build_helper=qemu

From 2fbd9eb91ae09ba37c31adbd1b2298b58ad4c92c Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:10 +0200
Subject: [PATCH 16/27] j4-dmenu-desktop: rebuild for fmt-11.0.2

---
 srcpkgs/j4-dmenu-desktop/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/j4-dmenu-desktop/template b/srcpkgs/j4-dmenu-desktop/template
index c352d51b0469f8..e5df41d8e7bc6f 100644
--- a/srcpkgs/j4-dmenu-desktop/template
+++ b/srcpkgs/j4-dmenu-desktop/template
@@ -1,7 +1,7 @@
 # Template file for 'j4-dmenu-desktop'
 pkgname=j4-dmenu-desktop
 version=3.1
-revision=1
+revision=2
 build_style=meson
 configure_args="-Denable-tests=false"
 hostmakedepends="pkg-config"

From 2853e8078175e811629ef6286cb77d7ce252542d Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:10 +0200
Subject: [PATCH 17/27] justbuild: rebuild for fmt-11.0.2

---
 srcpkgs/justbuild/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/justbuild/template b/srcpkgs/justbuild/template
index e9b03509c08398..74d03063cfa329 100644
--- a/srcpkgs/justbuild/template
+++ b/srcpkgs/justbuild/template
@@ -1,7 +1,7 @@
 # Template file for 'justbuild'
 pkgname=justbuild
 version=1.3.1
-revision=1
+revision=2
 create_wrksrc=yes
 hostmakedepends="jo pandoc pkg-config python3 tar unzip wget grpc protobuf"
 makedepends="abseil-cpp-devel c-ares-devel catch2 fmt-devel grpc-devel json-c++

From 2504606665cbbeb76c438f083169453e6bf422f5 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:10 +0200
Subject: [PATCH 18/27] kodi: rebuild for fmt-11.0.2

---
 srcpkgs/kodi/patches/pagesize.patch | 20 ++++++++++++++++++++
 srcpkgs/kodi/template               |  2 +-
 2 files changed, 21 insertions(+), 1 deletion(-)
 create mode 100644 srcpkgs/kodi/patches/pagesize.patch

diff --git a/srcpkgs/kodi/patches/pagesize.patch b/srcpkgs/kodi/patches/pagesize.patch
new file mode 100644
index 00000000000000..71f9baf2720ba6
--- /dev/null
+++ b/srcpkgs/kodi/patches/pagesize.patch
@@ -0,0 +1,20 @@
+--- a/xbmc/utils/UDMABufferObject.cpp	2024-04-06 04:29:22.000000000 +0200
++++ -	2024-09-07 20:00:02.010184618 +0200
+@@ -23,7 +23,7 @@
+ namespace
+ {
+ 
+-const auto PAGESIZE = getpagesize();
++const auto pagesize = getpagesize();
+ 
+ int RoundUp(int num, int factor)
+ {
+@@ -93,7 +93,7 @@
+ bool CUDMABufferObject::CreateBufferObject(uint64_t size)
+ {
+   // Must be rounded to the system page size
+-  m_size = RoundUp(size, PAGESIZE);
++  m_size = RoundUp(size, pagesize);
+ 
+   m_memfd = memfd_create("kodi", MFD_CLOEXEC | MFD_ALLOW_SEALING);
+   if (m_memfd < 0)
diff --git a/srcpkgs/kodi/template b/srcpkgs/kodi/template
index 94f8fa33c3cd8e..f412e5a07f2d3c 100644
--- a/srcpkgs/kodi/template
+++ b/srcpkgs/kodi/template
@@ -1,7 +1,7 @@
 # Template file for 'kodi'
 pkgname=kodi
 version=21.0
-revision=1
+revision=2
 _codename="Omega"
 _crossguid_ver="ca1bf4b810e2d188d04cb6286f957008ee1b7681"
 _dvdcss_ver="1.4.3-Next-Nexus-Alpha2-2"

From 7b727c48839209d74f256864fd2e5d381d2c73ba Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:10 +0200
Subject: [PATCH 19/27] mkvtoolnix: update to 87.0.

---
 srcpkgs/mkvtoolnix/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/mkvtoolnix/template b/srcpkgs/mkvtoolnix/template
index a2fb9ba5cc9819..e72d5415267684 100644
--- a/srcpkgs/mkvtoolnix/template
+++ b/srcpkgs/mkvtoolnix/template
@@ -1,6 +1,6 @@
 # Template file for 'mkvtoolnix'
 pkgname=mkvtoolnix
-version=86.0
+version=87.0
 revision=1
 build_style=gnu-configure
 build_helper="qmake6"
@@ -16,7 +16,7 @@ license="GPL-2.0-only"
 homepage="https://mkvtoolnix.download"
 changelog="https://mkvtoolnix.download/doc/NEWS.md"
 distfiles="https://mkvtoolnix.download/sources/mkvtoolnix-${version}.tar.xz"
-checksum=29a9155fbba99f9074de2abcfbdc4e966ea38c16d9f6f547cf2d8d9a48152c97
+checksum=01cdfcbe01d9a771da4d475ed44d882a97695d08b6939684cebf56231bdee820
 
 if [ "$CROSS_BUILD" ]; then
 	configure_args+=" --with-boost=${XBPS_CROSS_BASE}/usr"

From e83fb193473be09a437becf739dbb12308bbf99a Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:10 +0200
Subject: [PATCH 20/27] mpd: rebuild for fmt-11.0.2

---
 ...869715e3efca87942d79c3173a6b21a6925d.patch | 79 +++++++++++++++++++
 srcpkgs/mpd/template                          |  2 +-
 2 files changed, 80 insertions(+), 1 deletion(-)
 create mode 100644 srcpkgs/mpd/patches/1402869715e3efca87942d79c3173a6b21a6925d.patch

diff --git a/srcpkgs/mpd/patches/1402869715e3efca87942d79c3173a6b21a6925d.patch b/srcpkgs/mpd/patches/1402869715e3efca87942d79c3173a6b21a6925d.patch
new file mode 100644
index 00000000000000..f6d8c7d3376906
--- /dev/null
+++ b/srcpkgs/mpd/patches/1402869715e3efca87942d79c3173a6b21a6925d.patch
@@ -0,0 +1,79 @@
+From 1402869715e3efca87942d79c3173a6b21a6925d Mon Sep 17 00:00:00 2001
+From: Rudi Heitbaum <rudi@heitbaum.com>
+Date: Fri, 5 Jul 2024 14:27:45 +0000
+Subject: [PATCH] lib/fmt: support build with libfmt-11.0.0
+
+Upstream libfmt commit fmtlib/fmt@d707292
+now requires the format function to be const.
+
+Adjust the function prototype so it is const and can compile.
+
+Signed-off-by: Rudi Heitbaum <rudi@heitbaum.com>
+---
+ src/lib/ffmpeg/LibFmt.hxx            | 2 +-
+ src/lib/fmt/AudioFormatFormatter.hxx | 4 ++--
+ src/lib/fmt/ExceptionFormatter.hxx   | 2 +-
+ src/lib/fmt/PathFormatter.hxx        | 2 +-
+ 4 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/lib/ffmpeg/LibFmt.hxx b/src/lib/ffmpeg/LibFmt.hxx
+index aa068711f3..dee83ed2d5 100644
+--- a/src/lib/ffmpeg/LibFmt.hxx
++++ b/src/lib/ffmpeg/LibFmt.hxx
+@@ -13,7 +13,7 @@ template<>
+ struct fmt::formatter<AVSampleFormat> : formatter<string_view>
+ {
+ 	template<typename FormatContext>
+-	auto format(const AVSampleFormat format, FormatContext &ctx) {
++	auto format(const AVSampleFormat format, FormatContext &ctx) const {
+ 		const char *name = av_get_sample_fmt_name(format);
+ 		if (name == nullptr)
+ 			name = "?";
+diff --git a/src/lib/fmt/AudioFormatFormatter.hxx b/src/lib/fmt/AudioFormatFormatter.hxx
+index e0ffb62160..8da98efd41 100644
+--- a/src/lib/fmt/AudioFormatFormatter.hxx
++++ b/src/lib/fmt/AudioFormatFormatter.hxx
+@@ -13,7 +13,7 @@ template<>
+ struct fmt::formatter<SampleFormat> : formatter<string_view>
+ {
+ 	template<typename FormatContext>
+-	auto format(const SampleFormat format, FormatContext &ctx) {
++	auto format(const SampleFormat format, FormatContext &ctx) const {
+ 		return formatter<string_view>::format(sample_format_to_string(format),
+ 						      ctx);
+ 	}
+@@ -23,7 +23,7 @@ template<>
+ struct fmt::formatter<AudioFormat> : formatter<string_view>
+ {
+ 	template<typename FormatContext>
+-	auto format(const AudioFormat &af, FormatContext &ctx) {
++	auto format(const AudioFormat &af, FormatContext &ctx) const {
+ 		return formatter<string_view>::format(ToString(af).c_str(),
+ 						      ctx);
+ 	}
+diff --git a/src/lib/fmt/ExceptionFormatter.hxx b/src/lib/fmt/ExceptionFormatter.hxx
+index 3f342df672..f08b3bb228 100644
+--- a/src/lib/fmt/ExceptionFormatter.hxx
++++ b/src/lib/fmt/ExceptionFormatter.hxx
+@@ -12,7 +12,7 @@ template<>
+ struct fmt::formatter<std::exception_ptr> : formatter<string_view>
+ {
+ 	template<typename FormatContext>
+-	auto format(std::exception_ptr e, FormatContext &ctx) {
++	auto format(std::exception_ptr e, FormatContext &ctx) const {
+ 		return formatter<string_view>::format(GetFullMessage(e), ctx);
+ 	}
+ };
+diff --git a/src/lib/fmt/PathFormatter.hxx b/src/lib/fmt/PathFormatter.hxx
+index e5ae89dec5..add06df81b 100644
+--- a/src/lib/fmt/PathFormatter.hxx
++++ b/src/lib/fmt/PathFormatter.hxx
+@@ -13,7 +13,7 @@ template<std::convertible_to<Path> T>
+ struct fmt::formatter<T> : formatter<string_view>
+ {
+ 	template<typename FormatContext>
+-	auto format(Path path, FormatContext &ctx) {
++	auto format(Path path, FormatContext &ctx) const {
+ 		return formatter<string_view>::format(path.ToUTF8(), ctx);
+ 	}
+ };
diff --git a/srcpkgs/mpd/template b/srcpkgs/mpd/template
index 7e059ca3f78af5..1fb1c1762c3241 100644
--- a/srcpkgs/mpd/template
+++ b/srcpkgs/mpd/template
@@ -1,7 +1,7 @@
 # Template file for 'mpd'
 pkgname=mpd
 version=0.23.15
-revision=3
+revision=4
 build_style=meson
 configure_args="-Dopus=enabled -Dmikmod=enabled -Dneighbor=true
  -Dsoundcloud=enabled -Dpipe=true -Dtwolame=enabled -Dbzip2=enabled

From fe6fc2f3724ea34d7b4d9b870b24791aafc83fa2 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:11 +0200
Subject: [PATCH 21/27] mtxclient: rebuild for fmt-11.0.2

---
 ...26c77123f805cff8b954909663eaed296558.patch | 46 +++++++++++++++++++
 srcpkgs/mtxclient/template                    |  2 +-
 2 files changed, 47 insertions(+), 1 deletion(-)
 create mode 100644 srcpkgs/mtxclient/patches/4a4726c77123f805cff8b954909663eaed296558.patch

diff --git a/srcpkgs/mtxclient/patches/4a4726c77123f805cff8b954909663eaed296558.patch b/srcpkgs/mtxclient/patches/4a4726c77123f805cff8b954909663eaed296558.patch
new file mode 100644
index 00000000000000..6f82aa274c383b
--- /dev/null
+++ b/srcpkgs/mtxclient/patches/4a4726c77123f805cff8b954909663eaed296558.patch
@@ -0,0 +1,46 @@
+From 4a4726c77123f805cff8b954909663eaed296558 Mon Sep 17 00:00:00 2001
+From: Kefu Chai <tchaikov@gmail.com>
+Date: Mon, 15 Jul 2024 11:35:09 +0800
+Subject: [PATCH] Fix build with fmt 11
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+fmt 11 enforces that fmt::formatter<..>::format() should be const.
+otherwise the tree does not build:
+
+```
+/usr/include/fmt/base.h:1392:29: error: passing ‘const fmt::v11::formatter<std::optional<mtx::http::ClientError> >’ as ‘this’ argument discards qualifiers [-fpermissive]
+ 1392 |     ctx.advance_to(cf.format(*static_cast<qualified_type*>(arg), ctx));
+      |                    ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+```
+
+so let's mark the `format()` with `const` specifier.
+
+Signed-off-by: Kefu Chai <tchaikov@gmail.com>
+---
+ include/mtxclient/http/errors.hpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/include/mtxclient/http/errors.hpp b/include/mtxclient/http/errors.hpp
+index 2d0e7a45..b99ff90e 100644
+--- a/include/mtxclient/http/errors.hpp
++++ b/include/mtxclient/http/errors.hpp
+@@ -87,7 +87,7 @@ struct fmt::formatter<mtx::http::ClientError>
+     // Formats the point p using the parsed format specification (presentation)
+     // stored in this formatter.
+     template<typename FormatContext>
+-    auto format(const mtx::http::ClientError &e, FormatContext &ctx) -> decltype(ctx.out())
++    auto format(const mtx::http::ClientError &e, FormatContext &ctx) const -> decltype(ctx.out())
+     {
+         // ctx.out() is an output iterator to write to.
+         bool prepend_comma = false;
+@@ -132,7 +132,7 @@ struct fmt::formatter<std::optional<mtx::http::ClientError>> : formatter<mtx::ht
+ {
+     // parse is inherited from formatter<string_view>.
+     template<typename FormatContext>
+-    auto format(std::optional<mtx::http::ClientError> c, FormatContext &ctx)
++    auto format(std::optional<mtx::http::ClientError> c, FormatContext &ctx) const
+     {
+         if (!c)
+             return fmt::format_to(ctx.out(), "(no error)");
diff --git a/srcpkgs/mtxclient/template b/srcpkgs/mtxclient/template
index 99d61932d3b56b..07e471e1753ca8 100644
--- a/srcpkgs/mtxclient/template
+++ b/srcpkgs/mtxclient/template
@@ -1,7 +1,7 @@
 # Template file for 'mtxclient'
 pkgname=mtxclient
 version=0.10.0
-revision=2
+revision=3
 build_style=cmake
 configure_args="-DBUILD_LIB_TESTS=OFF -DBUILD_LIB_EXAMPLES=OFF"
 hostmakedepends="pkg-config"

From 0e618bb05c2f366bea825f5c668e459d3dbac04f Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:11 +0200
Subject: [PATCH 22/27] nheko: rebuild for fmt-11.0.2

---
 ...8245275eeb0cfe4ed40bd62b97cebbce4861.patch | 48 +++++++++++++++++++
 srcpkgs/nheko/template                        |  2 +-
 2 files changed, 49 insertions(+), 1 deletion(-)
 create mode 100644 srcpkgs/nheko/patches/8ff28245275eeb0cfe4ed40bd62b97cebbce4861.patch

diff --git a/srcpkgs/nheko/patches/8ff28245275eeb0cfe4ed40bd62b97cebbce4861.patch b/srcpkgs/nheko/patches/8ff28245275eeb0cfe4ed40bd62b97cebbce4861.patch
new file mode 100644
index 00000000000000..65a3b87ed90682
--- /dev/null
+++ b/srcpkgs/nheko/patches/8ff28245275eeb0cfe4ed40bd62b97cebbce4861.patch
@@ -0,0 +1,48 @@
+From 8ff28245275eeb0cfe4ed40bd62b97cebbce4861 Mon Sep 17 00:00:00 2001
+From: Vitaly <vitaly@easycoding.org>
+Date: Tue, 16 Jul 2024 12:30:45 +0200
+Subject: [PATCH] Fixed build against fmt 11.
+
+---
+ src/RegisterPage.cpp                      | 2 ++
+ src/Utils.cpp                             | 1 +
+ src/encryption/DeviceVerificationFlow.cpp | 1 +
+ 3 files changed, 4 insertions(+)
+
+diff --git a/src/RegisterPage.cpp b/src/RegisterPage.cpp
+index 93e2cf1bb..562d2c82a 100644
+--- a/src/RegisterPage.cpp
++++ b/src/RegisterPage.cpp
+@@ -4,6 +4,8 @@
+ 
+ #include <set>
+ 
++#include <fmt/ranges.h>
++
+ #include <mtx/responses/common.hpp>
+ #include <mtx/responses/register.hpp>
+ #include <mtx/responses/version.hpp>
+diff --git a/src/Utils.cpp b/src/Utils.cpp
+index 3e7340f44..99d337c4d 100644
+--- a/src/Utils.cpp
++++ b/src/Utils.cpp
+@@ -26,6 +26,7 @@
+ #include <QWindow>
+ #include <QXmlStreamReader>
+ 
++#include <fmt/ranges.h>
+ #include <nlohmann/json.hpp>
+ 
+ #include <cmark.h>
+diff --git a/src/encryption/DeviceVerificationFlow.cpp b/src/encryption/DeviceVerificationFlow.cpp
+index cb595df0e..0757d88cb 100644
+--- a/src/encryption/DeviceVerificationFlow.cpp
++++ b/src/encryption/DeviceVerificationFlow.cpp
+@@ -9,6 +9,7 @@
+ #include <QDateTime>
+ #include <QTimer>
+ 
++#include <fmt/ranges.h>
+ #include <nlohmann/json.hpp>
+ 
+ #include "Cache.h"
diff --git a/srcpkgs/nheko/template b/srcpkgs/nheko/template
index 72ab2d3a1c69ed..9af55f3ec46d0e 100644
--- a/srcpkgs/nheko/template
+++ b/srcpkgs/nheko/template
@@ -1,7 +1,7 @@
 # Template file for 'nheko'
 pkgname=nheko
 version=0.12.0
-revision=2
+revision=3
 build_style=cmake
 hostmakedepends="qt6-base qt6-tools qt6-declarative-host-tools pkg-config asciidoc"
 makedepends="qt6-multimedia-devel qt6-svg-devel qt6-declarative-private-devel fmt-devel

From 0dde7b51e22820e37fca6cf19cac4dd6be7f0d32 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:11 +0200
Subject: [PATCH 23/27] opendht: rebuild for fmt-11.0.2

---
 srcpkgs/opendht/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/opendht/template b/srcpkgs/opendht/template
index b18ada2e756011..f11babfddc8595 100644
--- a/srcpkgs/opendht/template
+++ b/srcpkgs/opendht/template
@@ -1,7 +1,7 @@
 # Template file for 'opendht'
 pkgname=opendht
 version=2.6.0.4
-revision=2
+revision=3
 build_style=cmake
 configure_args="-DOPENDHT_SYSTEMD=OFF -DOPENDHT_TOOLS=OFF
  -DOPENDHT_TESTS_NETWORK=OFF"

From 879c71f117c52fdb814fa80800f698bc384767a8 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:11 +0200
Subject: [PATCH 24/27] paps: rebuild for fmt-11.0.2

---
 srcpkgs/paps/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/paps/template b/srcpkgs/paps/template
index 460daaaae5486d..71a802089a7c14 100644
--- a/srcpkgs/paps/template
+++ b/srcpkgs/paps/template
@@ -1,7 +1,7 @@
 # Template file for 'paps'
 pkgname=paps
 version=0.8.0
-revision=1
+revision=2
 build_style=meson
 hostmakedepends="pkg-config cmake"
 makedepends="fmt-devel freetype-devel pango-devel"

From 8b0963cbef116a3c5e0763da2d1893abbb29a4fc Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:11 +0200
Subject: [PATCH 25/27] python3-syndom: rebuild for fmt-11.0.2

---
 srcpkgs/python3-syndom/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/python3-syndom/template b/srcpkgs/python3-syndom/template
index 2d1e037ddf3124..906c6a17c086ad 100644
--- a/srcpkgs/python3-syndom/template
+++ b/srcpkgs/python3-syndom/template
@@ -1,7 +1,7 @@
 # Template file for 'python3-syndom'
 pkgname=python3-syndom
 version=1.0
-revision=1
+revision=2
 build_style=meson
 hostmakedepends="pkg-config python3-pybind11"
 makedepends="fmt-devel libtidy5-devel pugixml-devel python3-pybind11"

From cd8cdada3be5d884eee06e64213e1b90c99fde99 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:11 +0200
Subject: [PATCH 26/27] spdlog: update to 1.14.1.

---
 common/shlibs           | 2 +-
 srcpkgs/spdlog/template | 5 +++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/common/shlibs b/common/shlibs
index 32f3725e3767fa..a275fce1d7df93 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -4209,7 +4209,7 @@ libwayland-client++.so.1 libwaylandpp-1.0.0_1
 libwayland-cursor++.so.1 libwaylandpp-1.0.0_1
 libwayland-egl++.so.1 libwaylandpp-1.0.0_1
 libwayland-client-extra++.so.1 libwaylandpp-1.0.0_1
-libspdlog.so.1.11 libspdlog-1.11.0_1
+libspdlog.so.1.14 libspdlog-1.14.1_1
 libmd.so.0 libmd-1.0.3_1
 libldacBT_abr.so.2 ldacBT-2.0.2.3_1
 libldacBT_enc.so.2 ldacBT-2.0.2.3_1
diff --git a/srcpkgs/spdlog/template b/srcpkgs/spdlog/template
index 045f86def2cc33..fb073f81fceca4 100644
--- a/srcpkgs/spdlog/template
+++ b/srcpkgs/spdlog/template
@@ -1,6 +1,6 @@
 # Template file for 'spdlog'
 pkgname=spdlog
-version=1.11.0
+version=1.14.1
 revision=1
 build_style=cmake
 configure_args="-DSPDLOG_BUILD_EXAMPLE=OFF -DSPDLOG_FMT_EXTERNAL=ON
@@ -13,10 +13,11 @@ maintainer="skmpz <dem.procopiou@gmail.com>"
 license="MIT"
 homepage="https://github.com/gabime/spdlog"
 distfiles="https://github.com/gabime/spdlog/archive/v${version}.tar.gz"
-checksum=ca5cae8d6cac15dae0ec63b21d6ad3530070650f68076f3a4a862ca293a858bb
+checksum=1586508029a7d0670dfcb2d97575dcdc242d3868a259742b69f100801ab4e16b
 
 if [ "$XBPS_CHECK_PKGS" ]; then
 	configure_args+=" -DSPDLOG_BUILD_TESTS_HO=ON"
+	hostmakedepends+=" catch2"
 fi
 
 libspdlog_package() {

From bc68dc08460a1934285b9a681ab475cafe548c90 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:12 +0200
Subject: [PATCH 27/27] vtk: update to 9.3.1.

---
 common/shlibs                            | 220 +++++++++++------------
 srcpkgs/vtk/patches/01-vtkioss-fmt.patch |  59 ++++++
 srcpkgs/vtk/patches/02-vtkioss-fmt.patch |  23 +++
 srcpkgs/vtk/patches/gcc13.patch          |  13 --
 srcpkgs/vtk/patches/vtkioss-unistd.patch |   6 +-
 srcpkgs/vtk/template                     |   7 +-
 6 files changed, 199 insertions(+), 129 deletions(-)
 create mode 100644 srcpkgs/vtk/patches/01-vtkioss-fmt.patch
 create mode 100644 srcpkgs/vtk/patches/02-vtkioss-fmt.patch
 delete mode 100644 srcpkgs/vtk/patches/gcc13.patch

diff --git a/common/shlibs b/common/shlibs
index a275fce1d7df93..b51a07b1011ffc 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -3340,116 +3340,116 @@ libgnuradio-pdu.so.3.10.10 gnuradio-3.10.10.0_1
 libgnuradio-osmosdr.so.0.2.0 gnuradio-osmosdr-0.2.0_1
 libflann_cpp.so.1.9 flann-1.9.1_1
 libflann.so.1.9 flann-1.9.1_1
-libvtkCommonCore-9.2.so.1 vtk-9.2.2_1
-libvtksys-9.2.so.1 vtk-9.2.2_1
-libvtkCommonMisc-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingContext2D-9.2.so.1 vtk-9.2.2_1
-libvtkCommonTransforms-9.2.so.1 vtk-9.2.2_1
-libvtkCommonMath-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingLOD-9.2.so.1 vtk-9.2.2_1
-libvtkViewsInfovis-9.2.so.1 vtk-9.2.2_1
-libvtkIOIOSS-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingLabel-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersPoints-9.2.so.1 vtk-9.2.2_1
-libvtkCommonExecutionModel-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingHyperTreeGrid-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersGeometry-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersGeneral-9.2.so.1 vtk-9.2.2_1
-libvtkCommonDataModel-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersTopology-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersSources-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingVolumeOpenGL2-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingCore-9.2.so.1 vtk-9.2.2_1
-libvtkIOOggTheora-9.2.so.1 vtk-9.2.2_1
-libvtkIOExportGL2PS-9.2.so.1 vtk-9.2.2_1
-libvtkIOAMR-9.2.so.1 vtk-9.2.2_1
-libvtkIOCesium3DTiles-9.2.so.1 vtk-9.2.2_1
-libvtkIOSegY-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingVtkJS-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersTexture-9.2.so.1 vtk-9.2.2_1
-libvtkIOVideo-9.2.so.1 vtk-9.2.2_1
-libvtkImagingSources-9.2.so.1 vtk-9.2.2_1
-libvtkImagingStencil-9.2.so.1 vtk-9.2.2_1
-libvtkIOCGNSReader-9.2.so.1 vtk-9.2.2_1
-libvtkCommonComputationalGeometry-9.2.so.1 vtk-9.2.2_1
-libvtkIOVeraOut-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersHybrid-9.2.so.1 vtk-9.2.2_1
-libvtkInteractionImage-9.2.so.1 vtk-9.2.2_1
-libvtkChartsCore-9.2.so.1 vtk-9.2.2_1
-libvtkImagingStatistics-9.2.so.1 vtk-9.2.2_1
-libvtkImagingHybrid-9.2.so.1 vtk-9.2.2_1
-libvtkGeovisCore-9.2.so.1 vtk-9.2.2_1
-libvtkInteractionWidgets-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersImaging-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersVerdict-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersSMP-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingUI-9.2.so.1 vtk-9.2.2_1
-libvtkIOHDF-9.2.so.1 vtk-9.2.2_1
-libvtkCommonSystem-9.2.so.1 vtk-9.2.2_1
-libvtkImagingColor-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingSceneGraph-9.2.so.1 vtk-9.2.2_1
-libvtkParallelCore-9.2.so.1 vtk-9.2.2_1
-libvtkIOInfovis-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingOpenGL2-9.2.so.1 vtk-9.2.2_1
-libvtkImagingFourier-9.2.so.1 vtk-9.2.2_1
-libvtkCommonColor-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingAnnotation-9.2.so.1 vtk-9.2.2_1
-libvtkIOSQL-9.2.so.1 vtk-9.2.2_1
-libvtkIOImage-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersCore-9.2.so.1 vtk-9.2.2_1
-libvtkInfovisCore-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersExtraction-9.2.so.1 vtk-9.2.2_1
-libvtkIOGeometry-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersFlowPaths-9.2.so.1 vtk-9.2.2_1
-libvtkIOMovie-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingVolume-9.2.so.1 vtk-9.2.2_1
-libvtkIOEnSight-9.2.so.1 vtk-9.2.2_1
-libvtkDomainsChemistryOpenGL2-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersStatistics-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersSelection-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersModeling-9.2.so.1 vtk-9.2.2_1
-libvtkViewsCore-9.2.so.1 vtk-9.2.2_1
-libvtkIOMotionFX-9.2.so.1 vtk-9.2.2_1
-libvtkIOLSDyna-9.2.so.1 vtk-9.2.2_1
-libvtkIOParallel-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingContextOpenGL2-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingImage-9.2.so.1 vtk-9.2.2_1
-libvtkIOXMLParser-9.2.so.1 vtk-9.2.2_1
-libvtkImagingMorphological-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersParallel-9.2.so.1 vtk-9.2.2_1
-libvtkViewsContext2D-9.2.so.1 vtk-9.2.2_1
-libvtkIOImport-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingLICOpenGL2-9.2.so.1 vtk-9.2.2_1
-libvtkIOAsynchronous-9.2.so.1 vtk-9.2.2_1
-libvtkIOTecplotTable-9.2.so.1 vtk-9.2.2_1
-libvtkIOCityGML-9.2.so.1 vtk-9.2.2_1
-libvtkImagingMath-9.2.so.1 vtk-9.2.2_1
-libvtkIOParallelXML-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingGL2PSOpenGL2-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersGeneric-9.2.so.1 vtk-9.2.2_1
-libvtkIONetCDF-9.2.so.1 vtk-9.2.2_1
-libvtkImagingCore-9.2.so.1 vtk-9.2.2_1
-libvtkInfovisLayout-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersHyperTree-9.2.so.1 vtk-9.2.2_1
-libvtkIOExportPDF-9.2.so.1 vtk-9.2.2_1
-libvtkImagingGeneral-9.2.so.1 vtk-9.2.2_1
-libvtkIOXML-9.2.so.1 vtk-9.2.2_1
-libvtkIOChemistry-9.2.so.1 vtk-9.2.2_1
-libvtkInteractionStyle-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersAMR-9.2.so.1 vtk-9.2.2_1
-libvtkIOMINC-9.2.so.1 vtk-9.2.2_1
-libvtkTestingRendering-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersParallelImaging-9.2.so.1 vtk-9.2.2_1
-libvtkDomainsChemistry-9.2.so.1 vtk-9.2.2_1
-libvtkIOExport-9.2.so.1 vtk-9.2.2_1
-libvtkIOCore-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersProgrammable-9.2.so.1 vtk-9.2.2_1
-libvtkIOCONVERGECFD-9.2.so.1 vtk-9.2.2_1
-libvtkIOLegacy-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingFreeType-9.2.so.1 vtk-9.2.2_1
-libvtkIOPLY-9.2.so.1 vtk-9.2.2_1
-libvtkIOExodus-9.2.so.1 vtk-9.2.2_1
-libvtkkissfft-9.2.so.1 vtk-9.2.2_1
+libvtkCommonCore-9.3.so.1 vtk-9.3.2_1
+libvtksys-9.3.so.1 vtk-9.3.2_1
+libvtkCommonMisc-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingContext2D-9.3.so.1 vtk-9.3.2_1
+libvtkCommonTransforms-9.3.so.1 vtk-9.3.2_1
+libvtkCommonMath-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingLOD-9.3.so.1 vtk-9.3.2_1
+libvtkViewsInfovis-9.3.so.1 vtk-9.3.2_1
+libvtkIOIOSS-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingLabel-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersPoints-9.3.so.1 vtk-9.3.2_1
+libvtkCommonExecutionModel-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingHyperTreeGrid-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersGeometry-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersGeneral-9.3.so.1 vtk-9.3.2_1
+libvtkCommonDataModel-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersTopology-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersSources-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingVolumeOpenGL2-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingCore-9.3.so.1 vtk-9.3.2_1
+libvtkIOOggTheora-9.3.so.1 vtk-9.3.2_1
+libvtkIOExportGL2PS-9.3.so.1 vtk-9.3.2_1
+libvtkIOAMR-9.3.so.1 vtk-9.3.2_1
+libvtkIOCesium3DTiles-9.3.so.1 vtk-9.3.2_1
+libvtkIOSegY-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingVtkJS-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersTexture-9.3.so.1 vtk-9.3.2_1
+libvtkIOVideo-9.3.so.1 vtk-9.3.2_1
+libvtkImagingSources-9.3.so.1 vtk-9.3.2_1
+libvtkImagingStencil-9.3.so.1 vtk-9.3.2_1
+libvtkIOCGNSReader-9.3.so.1 vtk-9.3.2_1
+libvtkCommonComputationalGeometry-9.3.so.1 vtk-9.3.2_1
+libvtkIOVeraOut-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersHybrid-9.3.so.1 vtk-9.3.2_1
+libvtkInteractionImage-9.3.so.1 vtk-9.3.2_1
+libvtkChartsCore-9.3.so.1 vtk-9.3.2_1
+libvtkImagingStatistics-9.3.so.1 vtk-9.3.2_1
+libvtkImagingHybrid-9.3.so.1 vtk-9.3.2_1
+libvtkGeovisCore-9.3.so.1 vtk-9.3.2_1
+libvtkInteractionWidgets-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersImaging-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersVerdict-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersSMP-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingUI-9.3.so.1 vtk-9.3.2_1
+libvtkIOHDF-9.3.so.1 vtk-9.3.2_1
+libvtkCommonSystem-9.3.so.1 vtk-9.3.2_1
+libvtkImagingColor-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingSceneGraph-9.3.so.1 vtk-9.3.2_1
+libvtkParallelCore-9.3.so.1 vtk-9.3.2_1
+libvtkIOInfovis-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingOpenGL2-9.3.so.1 vtk-9.3.2_1
+libvtkImagingFourier-9.3.so.1 vtk-9.3.2_1
+libvtkCommonColor-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingAnnotation-9.3.so.1 vtk-9.3.2_1
+libvtkIOSQL-9.3.so.1 vtk-9.3.2_1
+libvtkIOImage-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersCore-9.3.so.1 vtk-9.3.2_1
+libvtkInfovisCore-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersExtraction-9.3.so.1 vtk-9.3.2_1
+libvtkIOGeometry-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersFlowPaths-9.3.so.1 vtk-9.3.2_1
+libvtkIOMovie-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingVolume-9.3.so.1 vtk-9.3.2_1
+libvtkIOEnSight-9.3.so.1 vtk-9.3.2_1
+libvtkDomainsChemistryOpenGL2-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersStatistics-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersSelection-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersModeling-9.3.so.1 vtk-9.3.2_1
+libvtkViewsCore-9.3.so.1 vtk-9.3.2_1
+libvtkIOMotionFX-9.3.so.1 vtk-9.3.2_1
+libvtkIOLSDyna-9.3.so.1 vtk-9.3.2_1
+libvtkIOParallel-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingContextOpenGL2-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingImage-9.3.so.1 vtk-9.3.2_1
+libvtkIOXMLParser-9.3.so.1 vtk-9.3.2_1
+libvtkImagingMorphological-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersParallel-9.3.so.1 vtk-9.3.2_1
+libvtkViewsContext2D-9.3.so.1 vtk-9.3.2_1
+libvtkIOImport-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingLICOpenGL2-9.3.so.1 vtk-9.3.2_1
+libvtkIOAsynchronous-9.3.so.1 vtk-9.3.2_1
+libvtkIOTecplotTable-9.3.so.1 vtk-9.3.2_1
+libvtkIOCityGML-9.3.so.1 vtk-9.3.2_1
+libvtkImagingMath-9.3.so.1 vtk-9.3.2_1
+libvtkIOParallelXML-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingGL2PSOpenGL2-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersGeneric-9.3.so.1 vtk-9.3.2_1
+libvtkIONetCDF-9.3.so.1 vtk-9.3.2_1
+libvtkImagingCore-9.3.so.1 vtk-9.3.2_1
+libvtkInfovisLayout-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersHyperTree-9.3.so.1 vtk-9.3.2_1
+libvtkIOExportPDF-9.3.so.1 vtk-9.3.2_1
+libvtkImagingGeneral-9.3.so.1 vtk-9.3.2_1
+libvtkIOXML-9.3.so.1 vtk-9.3.2_1
+libvtkIOChemistry-9.3.so.1 vtk-9.3.2_1
+libvtkInteractionStyle-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersAMR-9.3.so.1 vtk-9.3.2_1
+libvtkIOMINC-9.3.so.1 vtk-9.3.2_1
+libvtkTestingRendering-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersParallelImaging-9.3.so.1 vtk-9.3.2_1
+libvtkDomainsChemistry-9.3.so.1 vtk-9.3.2_1
+libvtkIOExport-9.3.so.1 vtk-9.3.2_1
+libvtkIOCore-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersProgrammable-9.3.so.1 vtk-9.3.2_1
+libvtkIOCONVERGECFD-9.3.so.1 vtk-9.3.2_1
+libvtkIOLegacy-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingFreeType-9.3.so.1 vtk-9.3.2_1
+libvtkIOPLY-9.3.so.1 vtk-9.3.2_1
+libvtkIOExodus-9.3.so.1 vtk-9.3.2_1
+libvtkkissfft-9.3.so.1 vtk-9.3.2_1
 libvolume_key.so.1 volume_key-0.3.9_1
 librand48_r.so.0 rand48_r-0.1_1
 libxxhash.so.0 libxxHash-0.6.5_2
diff --git a/srcpkgs/vtk/patches/01-vtkioss-fmt.patch b/srcpkgs/vtk/patches/01-vtkioss-fmt.patch
new file mode 100644
index 00000000000000..45c60721ae0862
--- /dev/null
+++ b/srcpkgs/vtk/patches/01-vtkioss-fmt.patch
@@ -0,0 +1,59 @@
+From ff6336d8ca857d6909987a82526cefdfd34aaf2c Mon Sep 17 00:00:00 2001
+From: Greg Sjaardema <gdsjaar@sandia.gov>
+Date: Tue, 2 Jan 2024 17:25:41 -0700
+Subject: [PATCH] FMT: Fixes for latest releast of lib::fmt
+
+---
+ ThirdParty/ioss/vtkioss/Ioss_IOFactory.C        | 1 +
+ ThirdParty/ioss/vtkioss/Ioss_StructuredBlock.C  | 1 +
+ ThirdParty/ioss/vtkioss/Ioss_Utils.C            | 1 +
+ ThirdParty/ioss/vtkioss/Ioss_ZoneConnectivity.C | 1 +
+ 15 files changed, 15 insertions(+)
+
+diff --git a/ThirdParty/ioss/vtkioss/Ioss_IOFactory.C b/ThirdParty/ioss/vtkioss/Ioss_IOFactory.C
+--- a/ThirdParty/ioss/vtkioss/Ioss_IOFactory.C
++++ b/ThirdParty/ioss/vtkioss/Ioss_IOFactory.C
+@@ -12,6 +12,7 @@
+ #include <cstddef> // for nullptr
+ #include "vtk_fmt.h"
+ #include VTK_FMT(fmt/ostream.h)
++#include VTK_FMT(fmt/ranges.h)
+ #include <map>     // for _Rb_tree_iterator, etc
+ #include <ostream> // for basic_ostream, etc
+ #include <set>
+diff --git a/ThirdParty/ioss/vtkioss/Ioss_StructuredBlock.C b/ThirdParty/ioss/vtkioss/Ioss_StructuredBlock.C
+index d650c38c84..581c21b158 100644
+--- a/ThirdParty/ioss/vtkioss/Ioss_StructuredBlock.C
++++ b/ThirdParty/ioss/vtkioss/Ioss_StructuredBlock.C
+@@ -15,6 +15,7 @@
+ #include <Ioss_StructuredBlock.h>
+ #include "vtk_fmt.h"
+ #include VTK_FMT(fmt/ostream.h)
++#include VTK_FMT(fmt/ranges.h)
+ 
+ #include <cstddef> // for size_t
+ #include <numeric>
+diff --git a/ThirdParty/ioss/vtkioss/Ioss_Utils.C b/ThirdParty/ioss/vtkioss/Ioss_Utils.C
+index effcfd6199..6e98057473 100644
+--- a/ThirdParty/ioss/vtkioss/Ioss_Utils.C
++++ b/ThirdParty/ioss/vtkioss/Ioss_Utils.C
+@@ -21,6 +21,7 @@
+ #include VTK_FMT(fmt/chrono.h)
+ #include VTK_FMT(fmt/format.h)
+ #include VTK_FMT(fmt/ostream.h)
++#include VTK_FMT(fmt/ranges.h)
+ #include <fstream>
+ #include <sstream>
+ #include <string>
+diff --git a/ThirdParty/ioss/vtkioss/Ioss_ZoneConnectivity.C b/ThirdParty/ioss/vtkioss/Ioss_ZoneConnectivity.C
+index edee536489..b0f9706b7c 100644
+--- a/ThirdParty/ioss/vtkioss/Ioss_ZoneConnectivity.C
++++ b/ThirdParty/ioss/vtkioss/Ioss_ZoneConnectivity.C
+@@ -9,6 +9,7 @@
+ #include <cstddef> // for size_t
+ #include "vtk_fmt.h"
+ #include VTK_FMT(fmt/ostream.h)
++#include VTK_FMT(fmt/ranges.h)
+ #include <string> // for string
+ #include <vector> // for vector
+ 
diff --git a/srcpkgs/vtk/patches/02-vtkioss-fmt.patch b/srcpkgs/vtk/patches/02-vtkioss-fmt.patch
new file mode 100644
index 00000000000000..b3070a1722908a
--- /dev/null
+++ b/srcpkgs/vtk/patches/02-vtkioss-fmt.patch
@@ -0,0 +1,23 @@
+From 80470e638859457c6bd2513dbc85a725b2bef78d Mon Sep 17 00:00:00 2001
+From: Greg Sjaardema <gdsjaar@sandia.gov>
+Date: Wed, 31 Jul 2024 07:38:40 -0600
+Subject: [PATCH] IOSS: Fix some misues of lib::fmt causing issues with C++20
+
+---
+ ThirdParty/ioss/vtkioss/Ioss_DatabaseIO.C | 7 ++-----
+ ThirdParty/ioss/vtkioss/Ioss_Utils.C      | 2 +-
+ 2 files changed, 3 insertions(+), 6 deletions(-)
+
+diff --git a/ThirdParty/ioss/vtkioss/Ioss_DatabaseIO.C b/ThirdParty/ioss/vtkioss/Ioss_DatabaseIO.C
+index 870140a1d2..f16b426753 100644
+--- a/ThirdParty/ioss/vtkioss/Ioss_DatabaseIO.C
++++ b/ThirdParty/ioss/vtkioss/Ioss_DatabaseIO.C
+@@ -1638,7 +1635,7 @@ namespace {
+       else {
+         char sep = (util.parallel_size() > 1) ? ':' : ' ';
+         for (auto &p_time : all_times) {
+-          fmt::print(strm, "{:8d}{}", p_time, sep);
++          fmt::print(strm, "{:8}{}", p_time, sep);
+         }
+       }
+       if (util.parallel_size() > 1) {
diff --git a/srcpkgs/vtk/patches/gcc13.patch b/srcpkgs/vtk/patches/gcc13.patch
deleted file mode 100644
index d0ba2017b70ca0..00000000000000
--- a/srcpkgs/vtk/patches/gcc13.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Source: https://src.fedoraproject.org/rpms/vtk/blob/1a12f28665b2f24537b98fcf4b3fb3a176fa7fba/f/vtk-include.patch
-
-diff -up VTK-9.2.5/IO/Image/vtkSEPReader.h.include VTK-9.2.5/IO/Image/vtkSEPReader.h
---- VTK-9.2.5/IO/Image/vtkSEPReader.h.include	2023-01-05 08:51:35.000000000 -0700
-+++ VTK-9.2.5/IO/Image/vtkSEPReader.h	2023-01-17 07:43:41.988095734 -0700
-@@ -26,6 +26,7 @@
- #include "vtkNew.h" // for ivars
- 
- #include <array>  // for std::array
-+#include <cstdint> // for std::uint8_t
- #include <string> // for std::string
- 
- namespace details
diff --git a/srcpkgs/vtk/patches/vtkioss-unistd.patch b/srcpkgs/vtk/patches/vtkioss-unistd.patch
index df43a1fe5bba9c..d07abb59fe5edd 100644
--- a/srcpkgs/vtk/patches/vtkioss-unistd.patch
+++ b/srcpkgs/vtk/patches/vtkioss-unistd.patch
@@ -11,9 +11,9 @@ index ca5f15de..99c2bbdd 100644
  #else
 -#include <sys/unistd.h>
 +#include <unistd.h>
- #endif
- 
- #ifdef SEACAS_HAVE_MPI
+ #if defined(__APPLE__) && defined(__MACH__)
+ #include <sys/param.h>
+ #include <sys/mount.h>
 @@ -35,9 +35,6 @@
  
  #include <cstdio>
diff --git a/srcpkgs/vtk/template b/srcpkgs/vtk/template
index 189591d55725a7..5d87abde765f37 100644
--- a/srcpkgs/vtk/template
+++ b/srcpkgs/vtk/template
@@ -1,7 +1,7 @@
 # Template file for 'vtk'
 pkgname=vtk
-version=9.2.6
-revision=3
+version=9.3.1
+revision=1
 build_style=cmake
 # vtk can be huge, especially with -DVTK_BUILD_ALL_MODULES=ON"
 # Build only the core modules plus python bindings for now
@@ -14,6 +14,7 @@ configure_args="-DBUILD_SHARED_LIBS=ON -DVTK_FORBID_DOWNLOADS=ON
  -DVTK_MODULE_USE_EXTERNAL_VTK_ioss=OFF
  -DVTK_MODULE_USE_EXTERNAL_VTK_cgns=OFF
  -DVTK_MODULE_USE_EXTERNAL_VTK_verdict=OFF
+ -DVTK_MODULE_USE_EXTERNAL_VTK_fast_float=OFF
  -DVTK_WRAP_PYTHON=ON -DVTK_PYTHON_VERSION=3"
 # vtk forks libharu, bumps to v2.4.0, and requires libharu>=2.4.0
 makedepends="zlib-devel freetype-devel liblz4-devel expat-devel MesaLib-devel
@@ -26,7 +27,7 @@ maintainer="Piraty <mail@piraty.dev>"
 license="BSD-3-Clause"
 homepage="https://www.vtk.org"
 distfiles="https://www.vtk.org/files/release/${version:0:3}/VTK-${version}.tar.gz"
-checksum=06fc8d49c4e56f498c40fcb38a563ed8d4ec31358d0101e8988f0bb4d539dd12
+checksum=8354ec084ea0d2dc3d23dbe4243823c4bfc270382d0ce8d658939fd50061cab8
 
 if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
 	makedepends+=" libexecinfo-devel"

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: fmt: update to 11.0.2
  2024-09-07 21:24 [PR PATCH] fmt: update to 11.0.2 Johnnynator
@ 2024-09-09 17:09 ` meator
  2024-09-09 17:30 ` Calandracas606
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: meator @ 2024-09-09 17:09 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 175 bytes --]

New comment by meator on void-packages repository

https://github.com/void-linux/void-packages/pull/52140#issuecomment-2338640133

Comment:
Related to #50183: @Calandracas606

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: fmt: update to 11.0.2
  2024-09-07 21:24 [PR PATCH] fmt: update to 11.0.2 Johnnynator
  2024-09-09 17:09 ` meator
@ 2024-09-09 17:30 ` Calandracas606
  2024-09-10 12:51 ` Johnnynator
  2024-09-11 18:34 ` [PR PATCH] [Updated] " Johnnynator
  3 siblings, 0 replies; 5+ messages in thread
From: Calandracas606 @ 2024-09-09 17:30 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 231 bytes --]

New comment by Calandracas606 on void-packages repository

https://github.com/void-linux/void-packages/pull/52140#issuecomment-2338677752

Comment:
my pr builds for all arches last time i checked.

probably needs a rebase though

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: fmt: update to 11.0.2
  2024-09-07 21:24 [PR PATCH] fmt: update to 11.0.2 Johnnynator
  2024-09-09 17:09 ` meator
  2024-09-09 17:30 ` Calandracas606
@ 2024-09-10 12:51 ` Johnnynator
  2024-09-11 18:34 ` [PR PATCH] [Updated] " Johnnynator
  3 siblings, 0 replies; 5+ messages in thread
From: Johnnynator @ 2024-09-10 12:51 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 357 bytes --]

New comment by Johnnynator on void-packages repository

https://github.com/void-linux/void-packages/pull/52140#issuecomment-2340657997

Comment:
> my pr builds for all arches last time i checked.
> 
> probably needs a rebase though

The kodi failure is unrelated to the PR and also in master right now. And fmt 11 seems to have broken some more things.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PR PATCH] [Updated] fmt: update to 11.0.2
  2024-09-07 21:24 [PR PATCH] fmt: update to 11.0.2 Johnnynator
                   ` (2 preceding siblings ...)
  2024-09-10 12:51 ` Johnnynator
@ 2024-09-11 18:34 ` Johnnynator
  3 siblings, 0 replies; 5+ messages in thread
From: Johnnynator @ 2024-09-11 18:34 UTC (permalink / raw)
  To: ml

[-- Attachment #1: Type: text/plain, Size: 1311 bytes --]

There is an updated pull request by Johnnynator against master on the void-packages repository

https://github.com/Johnnynator/void-packages android-tools
https://github.com/void-linux/void-packages/pull/52140

fmt: update to 11.0.2
- **fmt: update to 11.0.2.**
- **0ad: rebuild for fmt-11.0.2**
- **Bear: rebuild for fmt-11.0.2**
- **MangoHud: rebuild for fmt-11.0.2**
- **Waybar: rebuild for fmt-11.0.2**
- **cherrytree: rebuild for fmt-11.0.2**
- **coeurl: update to 0.3.1**
- **cryfs: rebuild for fmt-11.0.2**
- **devilutionX: update to 1.5.3.**
- **easyeffects: rebuild for fmt-11.0.2**
- **freecad: rebuild for fmt-11.0.2**
- **furnace: rebuild for fmt-11.0.2**
- **gerbera: update to 2.2.0.**
- **gnuradio: rebuild for fmt-11.0.2**
- **imhex: rebuild for fmt-11.0.2**
- **j4-dmenu-desktop: rebuild for fmt-11.0.2**
- **justbuild: rebuild for fmt-11.0.2**
- **kodi: rebuild for fmt-11.0.2**
- **mkvtoolnix: update to 87.0.**
- **mpd: rebuild for fmt-11.0.2**
- **mtxclient: rebuild for fmt-11.0.2**
- **nheko: rebuild for fmt-11.0.2**
- **opendht: rebuild for fmt-11.0.2**
- **paps: rebuild for fmt-11.0.2**
- **python3-syndom: rebuild for fmt-11.0.2**
- **spdlog: update to 1.14.1.**
- **vtk: update to 9.3.1.**


A patch file from https://github.com/void-linux/void-packages/pull/52140.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-android-tools-52140.patch --]
[-- Type: text/x-diff, Size: 107816 bytes --]

From f8e25600c7f94d6f17e3fa8b958b21875c6c8b1f Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:17:03 +0200
Subject: [PATCH 01/27] fmt: update to 11.0.2.

---
 common/shlibs        | 2 +-
 srcpkgs/fmt/template | 6 +++---
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/common/shlibs b/common/shlibs
index 1e27ac5df0d58c..4a8397a0369657 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -3627,7 +3627,7 @@ libcotp.so.3 libcotp-3.0.0_1
 libunarr.so.1 libunarr-1.0.1_1
 libretro-gtk-1.so.0 retro-gtk-1.0.0_1
 libmanette-0.2.so.0 libmanette-0.2.1_1
-libfmt.so.9 fmt-9.0.0_1
+libfmt.so.11 fmt-11.0.0_1
 libelementary-calendar.so.0 libio.elementary.calendar-4.2.3_1
 libolm.so.3 olm-3.0.0_1
 libtls.so.29 libtls-3.9.1_1
diff --git a/srcpkgs/fmt/template b/srcpkgs/fmt/template
index c32298a35a90ff..e79643a0fa9bf4 100644
--- a/srcpkgs/fmt/template
+++ b/srcpkgs/fmt/template
@@ -1,6 +1,6 @@
 # Template file for 'fmt'
 pkgname=fmt
-version=9.1.0
+version=11.0.2
 revision=1
 build_style=cmake
 configure_args="-DBUILD_SHARED_LIBS=ON -DFMT_DOC=OFF -DFMT_TEST=OFF"
@@ -10,10 +10,10 @@ license="MIT WITH fmt-exception"
 homepage="https://github.com/fmtlib/fmt"
 changelog="https://raw.githubusercontent.com/fmtlib/fmt/master/ChangeLog.rst"
 distfiles="https://github.com/fmtlib/fmt/archive/${version}.tar.gz"
-checksum=5dea48d1fcddc3ec571ce2058e13910a0d4a6bab4cc09a809d8b1dd1c88ae6f2
+checksum=6cb1e6d37bdcb756dbbe59be438790db409cdb4868c66e888d5df9f13f7c027f
 
 post_install() {
-	vlicense LICENSE.rst LICENSE
+	vlicense LICENSE
 }
 
 fmt-devel_package() {

From ac52d6fe89960536e07854dc25e32729f3345ceb Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:08 +0200
Subject: [PATCH 02/27] 0ad: rebuild for fmt-11.0.2

---
 srcpkgs/0ad/patches/fmt-10.patch | 26 ++++++++++++++++++++++++++
 srcpkgs/0ad/template             |  2 +-
 2 files changed, 27 insertions(+), 1 deletion(-)
 create mode 100644 srcpkgs/0ad/patches/fmt-10.patch

diff --git a/srcpkgs/0ad/patches/fmt-10.patch b/srcpkgs/0ad/patches/fmt-10.patch
new file mode 100644
index 00000000000000..ada783ac3c2239
--- /dev/null
+++ b/srcpkgs/0ad/patches/fmt-10.patch
@@ -0,0 +1,26 @@
+diff --git a/source/network/NetMessage.cpp b/source/network/NetMessage.cpp
+index 61126d8..8945175 100644
+--- a/source/network/NetMessage.cpp
++++ b/source/network/NetMessage.cpp
+@@ -216,7 +216,7 @@ CNetMessage* CNetMessageFactory::CreateMessage(const void* pData,
+ 		break;
+ 
+ 	default:
+-		LOGERROR("CNetMessageFactory::CreateMessage(): Unknown message type '%d' received", header.GetType());
++		LOGERROR("CNetMessageFactory::CreateMessage(): Unknown message type '%d' received", static_cast<int>(header.GetType()));
+ 		break;
+ 	}
+ 
+diff --git a/source/simulation2/serialization/BinarySerializer.cpp b/source/simulation2/serialization/BinarySerializer.cpp
+index 6a0b4e4..7d30c5b 100644
+--- a/source/simulation2/serialization/BinarySerializer.cpp
++++ b/source/simulation2/serialization/BinarySerializer.cpp
+@@ -52,7 +52,7 @@ static u8 GetArrayType(js::Scalar::Type arrayType)
+ 	case js::Scalar::Uint8Clamped:
+ 		return SCRIPT_TYPED_ARRAY_UINT8_CLAMPED;
+ 	default:
+-		LOGERROR("Cannot serialize unrecognized typed array view: %d", arrayType);
++		LOGERROR("Cannot serialize unrecognized typed array view: %d", static_cast<int>(arrayType));
+ 		throw PSERROR_Serialize_InvalidScriptValue();
+ 	}
+ }
diff --git a/srcpkgs/0ad/template b/srcpkgs/0ad/template
index ae29ee78b02335..a0f7607b39e2ad 100644
--- a/srcpkgs/0ad/template
+++ b/srcpkgs/0ad/template
@@ -1,7 +1,7 @@
 # Template file for '0ad'
 pkgname=0ad
 version=0.0.26
-revision=9
+revision=10
 archs="x86_64* i686* aarch64* armv7l* ppc64le*"
 build_helper=rust
 hostmakedepends="pkg-config perl cmake python3.11 rust cargo yasm tar clang"

From eb863d91254aaad4b1a5751afa64af980410f4ef Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:08 +0200
Subject: [PATCH 03/27] Bear: rebuild for fmt-11.0.2

---
 ...afe61299c87449023d63336389f159b55808.patch | 55 +++++++++++++++++++
 srcpkgs/Bear/template                         |  2 +-
 2 files changed, 56 insertions(+), 1 deletion(-)
 create mode 100644 srcpkgs/Bear/patches/8afeafe61299c87449023d63336389f159b55808.patch

diff --git a/srcpkgs/Bear/patches/8afeafe61299c87449023d63336389f159b55808.patch b/srcpkgs/Bear/patches/8afeafe61299c87449023d63336389f159b55808.patch
new file mode 100644
index 00000000000000..0603c34719b655
--- /dev/null
+++ b/srcpkgs/Bear/patches/8afeafe61299c87449023d63336389f159b55808.patch
@@ -0,0 +1,55 @@
+From 8afeafe61299c87449023d63336389f159b55808 Mon Sep 17 00:00:00 2001
+From: Kefu Chai <tchaikov@gmail.com>
+Date: Sun, 14 Jul 2024 08:47:53 +0800
+Subject: [PATCH] citnames: include fmt/ranges.h for using fmt::join()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+fmt::join() was moved into fmt/ranges.h since fmt v11, so include
+this header for using fmt::join(). otherwise, we'd have following
+compilation failure when building Bear with fmt v11 and up:
+
+```
+/builddir/build/BUILD/bear-3.1.4-build/Bear-3.1.4/source/citnames/source/semantic/Parsers.h:255:73: error: ‘join’ is not a member of ‘fmt’
+  255 |                             fmt::format("Failed to recognize: {}", fmt::join(remainder.begin(), remainder.end(), ", "))
+      |                                                                         ^~~~
+```
+
+Signed-off-by: Kefu Chai <tchaikov@gmail.com>
+---
+ source/citnames/source/semantic/Parsers.h   | 1 +
+ source/citnames/source/semantic/Semantic.cc | 3 ++-
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/source/citnames/source/semantic/Parsers.h b/source/citnames/source/semantic/Parsers.h
+index 90e64f9e..34203a17 100644
+--- a/source/citnames/source/semantic/Parsers.h
++++ b/source/citnames/source/semantic/Parsers.h
+@@ -30,6 +30,7 @@
+ #include <optional>
+ 
+ #include <fmt/format.h>
++#include <fmt/ranges.h>
+ 
+ namespace cs::semantic {
+ 
+diff --git a/source/citnames/source/semantic/Semantic.cc b/source/citnames/source/semantic/Semantic.cc
+index da762956..54d3e62d 100644
+--- a/source/citnames/source/semantic/Semantic.cc
++++ b/source/citnames/source/semantic/Semantic.cc
+@@ -21,6 +21,7 @@
+ #include "semantic/Semantic.h"
+ 
+ #include <fmt/format.h>
++#include <fmt/ranges.h>
+ #ifdef HAVE_FMT_STD_H
+ #include <fmt/std.h>
+ #else
+@@ -133,4 +134,4 @@ namespace cs::semantic {
+         }
+         return results;
+     }
+-}
+\ No newline at end of file
++}
diff --git a/srcpkgs/Bear/template b/srcpkgs/Bear/template
index 0d9139fc8f5cc5..338787a9d2fad3 100644
--- a/srcpkgs/Bear/template
+++ b/srcpkgs/Bear/template
@@ -1,7 +1,7 @@
 # Template file for 'Bear'
 pkgname=Bear
 version=3.1.4
-revision=1
+revision=2
 build_style=cmake
 hostmakedepends="pkg-config protobuf protobuf-devel grpc"
 makedepends="json-c++ spdlog grpc-devel protobuf-devel gtest-devel"

From 03f567abbdd47a2fd5cde1ec73bc75d5a8b60199 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:08 +0200
Subject: [PATCH 04/27] MangoHud: rebuild for fmt-11.0.2

---
 srcpkgs/MangoHud/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/MangoHud/template b/srcpkgs/MangoHud/template
index ad1334062d2d35..734d579b616c72 100644
--- a/srcpkgs/MangoHud/template
+++ b/srcpkgs/MangoHud/template
@@ -1,7 +1,7 @@
 # Template file for 'MangoHud'
 pkgname=MangoHud
 version=0.7.2
-revision=2
+revision=3
 build_style=meson
 configure_args="-Dwith_xnvctrl=disabled
  -Dwith_nvml=disabled -Duse_system_spdlog=enabled"

From fec2e258c1df0cfb886f0cde1c466ed7a14ae569 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:08 +0200
Subject: [PATCH 05/27] Waybar: rebuild for fmt-11.0.2

---
 srcpkgs/Waybar/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/Waybar/template b/srcpkgs/Waybar/template
index a3c47d888ddefc..83953beefd9555 100644
--- a/srcpkgs/Waybar/template
+++ b/srcpkgs/Waybar/template
@@ -1,7 +1,7 @@
 # Template file for 'Waybar'
 pkgname=Waybar
 version=0.10.4
-revision=1
+revision=2
 build_style=meson
 configure_args="-Dlibudev=enabled -Dman-pages=enabled
  -Dsystemd=disabled -Drfkill=enabled

From 98e65211ece6ce816dd3aeb4f0e36c654a882be2 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:08 +0200
Subject: [PATCH 06/27] cherrytree: rebuild for fmt-11.0.2

---
 ...3db2b25977037c7520a8316183636a262130.patch | 221 +++++++
 ...2f3b44fef81e67c9bfbcdaed2f80ab2ff5de.patch |  41 ++
 ...030e2e2b6e1488148d3828baeb8f5911eb8d.patch |  22 +
 ...d101f24a409efddb2f29e8c14002c9836a85.patch | 550 ++++++++++++++++++
 ...7499067b9db9841175b5a2d6934dc65e4522.patch | 151 +++++
 srcpkgs/cherrytree/patches/series             |   5 +
 srcpkgs/cherrytree/template                   |   2 +-
 7 files changed, 991 insertions(+), 1 deletion(-)
 create mode 100644 srcpkgs/cherrytree/patches/05233db2b25977037c7520a8316183636a262130.patch
 create mode 100644 srcpkgs/cherrytree/patches/22142f3b44fef81e67c9bfbcdaed2f80ab2ff5de.patch
 create mode 100644 srcpkgs/cherrytree/patches/76f0030e2e2b6e1488148d3828baeb8f5911eb8d.patch
 create mode 100644 srcpkgs/cherrytree/patches/ccc2d101f24a409efddb2f29e8c14002c9836a85.patch
 create mode 100644 srcpkgs/cherrytree/patches/fc1d7499067b9db9841175b5a2d6934dc65e4522.patch
 create mode 100644 srcpkgs/cherrytree/patches/series

diff --git a/srcpkgs/cherrytree/patches/05233db2b25977037c7520a8316183636a262130.patch b/srcpkgs/cherrytree/patches/05233db2b25977037c7520a8316183636a262130.patch
new file mode 100644
index 00000000000000..31e4d5999fad07
--- /dev/null
+++ b/srcpkgs/cherrytree/patches/05233db2b25977037c7520a8316183636a262130.patch
@@ -0,0 +1,221 @@
+From 05233db2b25977037c7520a8316183636a262130 Mon Sep 17 00:00:00 2001
+From: Giuseppe Penone <giuspen@gmail.com>
+Date: Thu, 22 Aug 2024 22:58:03 +0100
+Subject: [PATCH] fixed fmt issue on fs::path (#2548)
+
+---
+ src/ct/ct_app.cc               |  2 +-
+ src/ct/ct_filesystem.cc        | 20 ++++++++++----------
+ src/ct/ct_imports.cc           |  2 +-
+ src/ct/ct_main_win_file.cc     |  8 ++++----
+ src/ct/ct_storage_control.cc   |  8 ++++----
+ src/ct/ct_storage_multifile.cc |  6 +++---
+ 6 files changed, 23 insertions(+), 23 deletions(-)
+
+diff --git a/src/ct/ct_app.cc b/src/ct/ct_app.cc
+index 788e6092..66460cd0 100644
+--- a/src/ct/ct_app.cc
++++ b/src/ct/ct_app.cc
+@@ -152,7 +152,7 @@ void CtApp::on_activate()
+             }
+             else {
+                 const fs::path last_doc_path{_pCtConfig->recentDocsFilepaths.front()};
+-                spdlog::info("{} Last doc not found: {}", __FUNCTION__, last_doc_path);
++                spdlog::info("{} Last doc not found: {}", __FUNCTION__, last_doc_path.string());
+                 _pCtConfig->recentDocsFilepaths.move_or_push_back(last_doc_path);
+                 pAppWindow->menu_set_items_recent_documents();
+             }
+diff --git a/src/ct/ct_filesystem.cc b/src/ct/ct_filesystem.cc
+index 5c5f5ea7..1b94a186 100644
+--- a/src/ct/ct_filesystem.cc
++++ b/src/ct/ct_filesystem.cc
+@@ -163,13 +163,13 @@ bool remove(const fs::path& path2rm)
+ {
+     if (fs::is_directory(path2rm)) {
+         if (g_rmdir(path2rm.c_str()) != 0) {
+-            spdlog::error("fs::remove: g_rmdir failed to remove {}", path2rm);
++            spdlog::error("fs::remove: g_rmdir failed to remove {}", path2rm.string());
+             return false;
+         }
+     }
+     else if (fs::exists(path2rm)) {
+         if (::g_remove(path2rm.c_str()) != 0) {
+-            spdlog::error("fs::remove: g_remove failed to remove {}", path2rm);
++            spdlog::error("fs::remove: g_remove failed to remove {}", path2rm.string());
+             return false;
+         }
+     }
+@@ -249,13 +249,13 @@ time_t getmtime(const path& p)
+ std::uintmax_t file_size(const path& p)
+ {
+     if (fs::is_directory(p)) {
+-        spdlog::error("fs::file_size: path is a directory, {}", p);
++        spdlog::error("fs::file_size: path is a directory, {}", p.string());
+         return 0;
+     }
+ 
+     GStatBuf st;
+     if (g_stat(p.c_str(), &st) != 0) {
+-        spdlog::error("fs::file_size: g_stat failed, {}", p);
++        spdlog::error("fs::file_size: g_stat failed, {}", p.string());
+         return 0;
+     }
+ 
+@@ -317,7 +317,7 @@ void _open_path_with_default_app(const fs::path& file_or_folder_path)
+ // Open Filepath with External App
+ void open_filepath(const fs::path& filepath, bool open_folder_if_file_not_exists, CtConfig* config)
+ {
+-    spdlog::debug("fs::open_filepath {}", filepath);
++    spdlog::debug("fs::open_filepath {}", filepath.string());
+     if (config->filelinkCustomOn) {
+         std::string cmd = fmt::sprintf(config->filelinkCustomAct, filepath.string());
+         _locale_env_vars_set_for_external_cmd(true/*isPre*/);
+@@ -344,7 +344,7 @@ void open_filepath(const fs::path& filepath, bool open_folder_if_file_not_exists
+ // Open Folderpath with External App
+ void open_folderpath(const fs::path& folderpath, CtConfig* config)
+ {
+-    spdlog::debug("fs::open_folderpath {}", folderpath);
++    spdlog::debug("fs::open_folderpath {}", folderpath.string());
+     if (config->folderlinkCustomOn) {
+         std::string cmd = fmt::sprintf(config->folderlinkCustomAct, folderpath.string());
+         _locale_env_vars_set_for_external_cmd(true/*isPre*/);
+@@ -361,12 +361,12 @@ void open_folderpath(const fs::path& folderpath, CtConfig* config)
+ 
+ path prepare_export_folder(const path& dir_place, path new_folder, bool overwrite_existing)
+ {
+-    if (fs::is_directory(dir_place / new_folder))
+-    {
++    const fs::path dir_place_new_folder = dir_place / new_folder;
++    if (fs::is_directory(dir_place_new_folder)) {
+         // todo:
+         if (overwrite_existing) {
+-            spdlog::debug("fs::prepare_export_folder: removing dir {}", dir_place / new_folder);
+-            remove_all(dir_place / new_folder);
++            spdlog::debug("fs::prepare_export_folder: removing dir {}", dir_place_new_folder.string());
++            remove_all(dir_place_new_folder);
+         }
+         else {
+             int n = 2;
+diff --git a/src/ct/ct_imports.cc b/src/ct/ct_imports.cc
+index 20e5d01d..59947ee4 100644
+--- a/src/ct/ct_imports.cc
++++ b/src/ct/ct_imports.cc
+@@ -454,7 +454,7 @@ std::unique_ptr<CtImportedNode> CtPlainTextImport::import_file(const fs::path& f
+         }
+     }
+     catch (std::exception& ex) {
+-        spdlog::error("{}, what: {}, file: {}", __FUNCTION__, ex.what(), file);
++        spdlog::error("{}, what: {}, file: {}", __FUNCTION__, ex.what(), file.string());
+     }
+     return nullptr;
+ }
+diff --git a/src/ct/ct_main_win_file.cc b/src/ct/ct_main_win_file.cc
+index 52540b7f..752f97ee 100644
+--- a/src/ct/ct_main_win_file.cc
++++ b/src/ct/ct_main_win_file.cc
+@@ -194,14 +194,14 @@ bool CtMainWin::file_open(const fs::path& filepath,
+                         spdlog::debug("trying {} -> {}", curr_backup_file.string(), filepath.string());
+                         new_storage = CtStorageControl::load_from(this, filepath, doc_type, error_or_warning, password);
+                         if (new_storage) {
+-                            spdlog::debug("OK recover from {}", curr_backup_file);
++                            spdlog::debug("OK recover from {}", curr_backup_file.string());
+                             break;
+                         }
+                         fs::move_file(filepath, curr_backup_file);
+                         spdlog::debug("moved back {} -> {}", filepath.string(), curr_backup_file.string());
+                     }
+                     else {
+-                        spdlog::debug("?? backed up data, {} missing", curr_backup_file);
++                        spdlog::debug("?? backed up data, {} missing", curr_backup_file.string());
+                         if (++missing_backup > 3) break;
+                     }
+                 }
+@@ -445,7 +445,7 @@ void CtMainWin::mod_time_sentinel_restart()
+ 
+ bool CtMainWin::file_insert_plain_text(const fs::path& filepath)
+ {
+-    spdlog::debug("trying to insert text file as node: {}", filepath);
++    spdlog::debug("trying to insert text file as node: {}", filepath.string());
+     try {
+         Glib::RefPtr<Gsv::Buffer> pBuffer = Gsv::Buffer::create();
+         if (CtStrUtil::file_any_encoding_load_into_source_buffer(filepath.string(), pBuffer)) {
+@@ -459,7 +459,7 @@ bool CtMainWin::file_insert_plain_text(const fs::path& filepath)
+         }
+     }
+     catch (std::exception& ex) {
+-        spdlog::error("{}, what: {}, file: {}", __FUNCTION__, ex.what(), filepath);
++        spdlog::error("{}, what: {}, file: {}", __FUNCTION__, ex.what(), filepath.string());
+     }
+     return false;
+ }
+diff --git a/src/ct/ct_storage_control.cc b/src/ct/ct_storage_control.cc
+index 9a6e813a..34dd0a1b 100644
+--- a/src/ct/ct_storage_control.cc
++++ b/src/ct/ct_storage_control.cc
+@@ -443,7 +443,7 @@ Glib::RefPtr<Gsv::Buffer> CtStorageControl::get_delayed_text_buffer(const gint64
+                 fs::get_doc_type_from_file_ext(filesInTmpDir.front()) == fs::get_doc_type_from_file_ext(temp_file_path) and
+                 fs::move_file(filesInTmpDir.front(), temp_file_path))
+             {
+-                spdlog::debug("encrypt doc renamed {} -> {}", filesInTmpDir.front().filename(), temp_file_path.filename());
++                spdlog::debug("encrypt doc renamed {} -> {}", filesInTmpDir.front().filename().string(), temp_file_path.filename().string());
+                 return temp_file_path;
+             }
+         }
+@@ -476,7 +476,7 @@ Glib::RefPtr<Gsv::Buffer> CtStorageControl::get_delayed_text_buffer(const gint64
+         return false;
+     }
+     if (not fs::is_regular_file(file_to)) {
+-        spdlog::debug("!! is_regular_file {}", file_to);
++        spdlog::debug("!! is_regular_file {}", file_to.string());
+         if (not tmp_prev_archive.empty()) {
+             (void)fs::move_file(tmp_prev_archive, file_to);
+         }
+@@ -628,7 +628,7 @@ void CtStorageControl::_backupEncryptThread()
+                                 break;
+                             }
+ #if defined(DEBUG_BACKUP_ENCRYPT)
+-                            spdlog::debug("{} -> {}", tilda_node_dir_from, tilda_node_dir_to);
++                            spdlog::debug("{} -> {}", tilda_node_dir_from.string(), tilda_node_dir_to.string());
+ #endif // DEBUG_BACKUP_ENCRYPT
+                         }
+                         tilda_dirpath = tilda_dirpath.string().substr(0, tilda_dirpath.string().size()-1);
+@@ -647,7 +647,7 @@ void CtStorageControl::_backupEncryptThread()
+                 }
+ #if defined(DEBUG_BACKUP_ENCRYPT)
+                 else {
+-                    spdlog::debug("{} -> {}", pBackupEncryptData->main_backup, tilda_node_dir_to);
++                    spdlog::debug("{} -> {}", pBackupEncryptData->main_backup, tilda_node_dir_to.string());
+                 }
+ #endif // DEBUG_BACKUP_ENCRYPT
+             }
+diff --git a/src/ct/ct_storage_multifile.cc b/src/ct/ct_storage_multifile.cc
+index ebd729e0..b7b10b4d 100644
+--- a/src/ct/ct_storage_multifile.cc
++++ b/src/ct/ct_storage_multifile.cc
+@@ -284,7 +284,7 @@ void CtStorageMultiFile::_hier_try_move_node(const fs::path& dir_path_to)
+     };
+     f_find_dir_from(_dir_path);
+     if (not dir_path_from.empty()) {
+-        spdlog::debug("{} -> {}", dir_path_from, dir_path_to);
++        spdlog::debug("{} -> {}", dir_path_from.string(), dir_path_to.string());
+         fs::move_file(dir_path_from, dir_path_to);
+     }
+ }
+@@ -520,7 +520,7 @@ bool CtStorageMultiFile::populate_treestore(const fs::path& dir_path, Glib::ustr
+                     const fs::path curr_backup_dir = first_backup_dir + str::repeat(CtConst::CHAR_TILDE, b).raw();
+                     if (fs::is_directory(curr_backup_dir)) {
+                         missing_backup = 0;
+-                        spdlog::debug("backed up data, {} found", curr_backup_dir);
++                        spdlog::debug("backed up data, {} found", curr_backup_dir.string());
+                         const fs::path backup_node_xml_path = curr_backup_dir / nodedir.filename() / NODE_XML;
+                         try {
+                             pParser = CtStorageXml::get_parser(backup_node_xml_path);
+@@ -541,7 +541,7 @@ bool CtStorageMultiFile::populate_treestore(const fs::path& dir_path, Glib::ustr
+                         }
+                     }
+                     else {
+-                        spdlog::debug("?? backed up data, {} missing", curr_backup_dir);
++                        spdlog::debug("?? backed up data, {} missing", curr_backup_dir.string());
+                         if (++missing_backup > 3) break;
+                     }
+                 }
diff --git a/srcpkgs/cherrytree/patches/22142f3b44fef81e67c9bfbcdaed2f80ab2ff5de.patch b/srcpkgs/cherrytree/patches/22142f3b44fef81e67c9bfbcdaed2f80ab2ff5de.patch
new file mode 100644
index 00000000000000..bb4bcaebb8af15
--- /dev/null
+++ b/srcpkgs/cherrytree/patches/22142f3b44fef81e67c9bfbcdaed2f80ab2ff5de.patch
@@ -0,0 +1,41 @@
+From 22142f3b44fef81e67c9bfbcdaed2f80ab2ff5de Mon Sep 17 00:00:00 2001
+From: Giuseppe Penone <giuspen@gmail.com>
+Date: Thu, 22 Aug 2024 22:22:46 +0100
+Subject: [PATCH] fixed fmt issue on fs::path (#2548)
+
+---
+ src/ct/ct_config.cc | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/ct/ct_config.cc b/src/ct/ct_config.cc
+index 3ebb5451..44a7ab10 100644
+--- a/src/ct/ct_config.cc
++++ b/src/ct/ct_config.cc
+@@ -69,7 +69,7 @@ void CtConfig::move_from_tmp()
+ {
+     if (not _configFilepathTmp.string().empty() and fs::exists(_configFilepathTmp)) {
+         if (not fs::move_file(_configFilepathTmp, _configFilepath)) {
+-            spdlog::error("{} -> {}", _configFilepathTmp, _configFilepath);
++            spdlog::error("{} -> {}", _configFilepathTmp.string(), _configFilepath.string());
+         }
+     }
+ }
+@@ -92,15 +92,15 @@ bool CtConfig::_load_from_file()
+             _uKeyFile->load_from_file(_configFilepath.string());
+         }
+         catch (Glib::Error& error) {
+-            spdlog::error("CtConfig {}: {}", _configFilepath, error.what().raw());
++            spdlog::error("CtConfig {}: {}", _configFilepath.string(), error.what().raw());
+             return false;
+         }
+         _populate_data_from_keyfile();
+         _uKeyFile.reset(nullptr);
+-        spdlog::debug("{} parsed", _configFilepath);
++        spdlog::debug("{} parsed", _configFilepath.string());
+         return true;
+     }
+-    spdlog::warn("{} missing", _configFilepath);
++    spdlog::warn("{} missing", _configFilepath.string());
+     return false;
+ }
+ 
diff --git a/srcpkgs/cherrytree/patches/76f0030e2e2b6e1488148d3828baeb8f5911eb8d.patch b/srcpkgs/cherrytree/patches/76f0030e2e2b6e1488148d3828baeb8f5911eb8d.patch
new file mode 100644
index 00000000000000..88c1030e21cce6
--- /dev/null
+++ b/srcpkgs/cherrytree/patches/76f0030e2e2b6e1488148d3828baeb8f5911eb8d.patch
@@ -0,0 +1,22 @@
+From 76f0030e2e2b6e1488148d3828baeb8f5911eb8d Mon Sep 17 00:00:00 2001
+From: Giuseppe Penone <giuspen@gmail.com>
+Date: Wed, 21 Aug 2024 22:42:54 +0100
+Subject: [PATCH] fixed fmt issue on fs::path (#2548)
+
+---
+ src/ct/ct_actions_others.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/ct/ct_actions_others.cc b/src/ct/ct_actions_others.cc
+index 91ff638e..6931d411 100644
+--- a/src/ct/ct_actions_others.cc
++++ b/src/ct/ct_actions_others.cc
+@@ -898,7 +898,7 @@ bool CtActions::_on_embfiles_sentinel_timeout()
+     for (auto& item : _embfiles_opened) {
+         const fs::path& tmp_filepath = item.second.tmp_filepath;
+         if (not fs::is_regular_file(tmp_filepath)) {
+-            spdlog::debug("embdrop {}", tmp_filepath);
++            spdlog::debug("embdrop {}", tmp_filepath.string());
+             _embfiles_opened.erase(item.first);
+             break;
+         }
diff --git a/srcpkgs/cherrytree/patches/ccc2d101f24a409efddb2f29e8c14002c9836a85.patch b/srcpkgs/cherrytree/patches/ccc2d101f24a409efddb2f29e8c14002c9836a85.patch
new file mode 100644
index 00000000000000..32b2af2060e6e0
--- /dev/null
+++ b/srcpkgs/cherrytree/patches/ccc2d101f24a409efddb2f29e8c14002c9836a85.patch
@@ -0,0 +1,550 @@
+From ccc2d101f24a409efddb2f29e8c14002c9836a85 Mon Sep 17 00:00:00 2001
+From: Giuseppe Penone <giuspen@gmail.com>
+Date: Wed, 21 Aug 2024 18:19:40 +0100
+Subject: [PATCH] removed fmt custom formatter for Glib::ustring (#2548)
+
+---
+ src/ct/ct_actions_edit.cc      |  6 +++---
+ src/ct/ct_actions_find.cc      |  4 ++--
+ src/ct/ct_actions_others.cc    |  2 +-
+ src/ct/ct_clipboard.cc         | 10 +++++-----
+ src/ct/ct_config.cc            |  2 +-
+ src/ct/ct_dialogs_find.cc      |  2 +-
+ src/ct/ct_export2html.cc       | 10 +++++-----
+ src/ct/ct_export2pdf.cc        | 10 +++++-----
+ src/ct/ct_export2txt.cc        |  2 +-
+ src/ct/ct_filesystem.cc        |  2 +-
+ src/ct/ct_image.cc             |  2 +-
+ src/ct/ct_imports.cc           |  4 ++--
+ src/ct/ct_logging.h            | 13 +------------
+ src/ct/ct_main_win_buffer.cc   |  4 ++--
+ src/ct/ct_main_win_events.cc   |  2 +-
+ src/ct/ct_misc_utils.cc        |  4 ++--
+ src/ct/ct_misc_utils.h         |  2 +-
+ src/ct/ct_storage_control.cc   |  6 +++---
+ src/ct/ct_storage_multifile.cc |  2 +-
+ src/ct/ct_storage_sqlite.cc    |  4 ++--
+ src/ct/ct_storage_sqlite.h     |  4 ++--
+ src/ct/ct_storage_xml.cc       |  2 +-
+ src/ct/ct_treestore.cc         |  6 +++---
+ tests/tests_encoding.cpp       |  4 ++--
+ 24 files changed, 49 insertions(+), 60 deletions(-)
+
+diff --git a/src/ct/ct_actions_edit.cc b/src/ct/ct_actions_edit.cc
+index 972838431..155d935ff 100644
+--- a/src/ct/ct_actions_edit.cc
++++ b/src/ct/ct_actions_edit.cc
+@@ -93,7 +93,7 @@ void CtActions::image_insert()
+         rPixbuf = Gdk::Pixbuf::create_from_file(filename);
+     }
+     catch (Glib::Error& error) {
+-        spdlog::error("{} {}", __FUNCTION__, error.what());
++        spdlog::error("{} {}", __FUNCTION__, error.what().raw());
+     }
+     if (rPixbuf)
+         _image_edit_dialog(rPixbuf, _curr_buffer()->get_insert()->get_iter(), nullptr/*pIterBound*/);
+@@ -303,7 +303,7 @@ TocEntry find_toc_entries(CtActions& actions, CtTreeIter& node, unsigned depth)
+     std::unordered_map<int, int> encountered_headers;
+     Glib::RefPtr<Gsv::Buffer> rTextBuffer = node.get_node_text_buffer();
+     if (not rTextBuffer) {
+-        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), node.get_node_name()));
++        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), node.get_node_name().raw()));
+     }
+     Gtk::TextIter text_iter = rTextBuffer->begin();
+ 
+@@ -354,7 +354,7 @@ TocEntry find_toc_entries(CtActions& actions, CtTreeIter& node, unsigned depth)
+                 entry.children.emplace_back(fmt::format("node {} {}", node_id, anchor_txt), false/*is_node*/, txt, depth + 1, h_lvl);
+             }
+             catch(std::invalid_argument&) {
+-                spdlog::error("Could not convert [{}] to an integer", h_level_str);
++                spdlog::error("Could not convert [{}] to an integer", h_level_str.raw());
+             }
+         }
+ 
+diff --git a/src/ct/ct_actions_find.cc b/src/ct/ct_actions_find.cc
+index 47a708873..d0b8cabad 100644
+--- a/src/ct/ct_actions_find.cc
++++ b/src/ct/ct_actions_find.cc
+@@ -218,7 +218,7 @@ void CtActions::find_in_multiple_nodes_ok_clicked()
+         if (_s_options.node_content) {
+             Glib::RefPtr<Gsv::Buffer> rTextBuffer = ct_node_iter.get_node_text_buffer();
+             if (not rTextBuffer) {
+-                CtDialogs::error_dialog(str::format(_("Failed to retrieve the content of the node '%s'"), ct_node_iter.get_node_name()), *_pCtMainWin);
++                CtDialogs::error_dialog(str::format(_("Failed to retrieve the content of the node '%s'"), ct_node_iter.get_node_name().raw()), *_pCtMainWin);
+                 break;
+             }
+         }
+@@ -440,7 +440,7 @@ CtMatchType CtActions::_parse_given_node_content(CtTreeIter node_iter,
+                 if (_s_options.node_content) {
+                     Glib::RefPtr<Gsv::Buffer> rTextBuffer = ct_node_iter.get_node_text_buffer();
+                     if (not rTextBuffer) {
+-                        CtDialogs::error_dialog(str::format(_("Failed to retrieve the content of the node '%s'"), ct_node_iter.get_node_name()), *_pCtMainWin);
++                        CtDialogs::error_dialog(str::format(_("Failed to retrieve the content of the node '%s'"), ct_node_iter.get_node_name().raw()), *_pCtMainWin);
+                         break;
+                     }
+                 }
+diff --git a/src/ct/ct_actions_others.cc b/src/ct/ct_actions_others.cc
+index a7c6746eb..91ff638e4 100644
+--- a/src/ct/ct_actions_others.cc
++++ b/src/ct/ct_actions_others.cc
+@@ -575,7 +575,7 @@ void CtActions::_exec_code(const bool is_all)
+     }
+     else {
+         const int retVal = std::system(terminal_cmd.c_str());
+-        if (retVal != 0) spdlog::error("system({}) returned {}", terminal_cmd, retVal);
++        if (retVal != 0) spdlog::error("system({}) returned {}", terminal_cmd.raw(), retVal);
+     }
+ }
+ 
+diff --git a/src/ct/ct_clipboard.cc b/src/ct/ct_clipboard.cc
+index 9c9bc3ca7..8ca0b080f 100644
+--- a/src/ct/ct_clipboard.cc
++++ b/src/ct/ct_clipboard.cc
+@@ -246,7 +246,7 @@ void CtClipboard::anchor_link_to_clipboard(CtTreeIter node, const Glib::ustring&
+     CtClipboardData* clip_data = new CtClipboardData{};
+     std::string tml = R"XML(<?xml version="1.0" encoding="UTF-8"?><root><slot><rich_text link="node {} {}">{}</rich_text></slot></root>)XML";
+     clip_data->rich_text = fmt::format(tml, node.get_node_id(), str::xml_escape(anchor_name), str::xml_escape(anchor_name));
+-    clip_data->plain_text = fmt::format("{} - {} - {}", node.get_cherrytree_filepath(), CtMiscUtil::get_node_hierarchical_name(node, " / ", false/*for_filename*/).c_str(), anchor_name);
++    clip_data->plain_text = fmt::format("{} - {} - {}", node.get_cherrytree_filepath(), CtMiscUtil::get_node_hierarchical_name(node, " / ", false/*for_filename*/).c_str(), anchor_name.raw());
+ 
+     _set_clipboard_data({CtConst::TARGET_CTD_RICH_TEXT, CtConst::TARGET_CTD_PLAIN_TEXT}, clip_data);
+ }
+@@ -756,7 +756,7 @@ void CtClipboard::on_received_to_uri_list(const Gtk::SelectionData& selection_da
+                 property_value = "webs " + element;
+             }
+             else if (str::startswith(element, "file://")) {
+-                Glib::ustring file_path = element.substr(7);
++                std::string file_path = element.substr(7);
+                 file_path = str::replace(file_path, "%20", CtConst::CHAR_SPACE);
+                 g_autofree gchar* mimetype = g_content_type_guess(file_path.c_str(), nullptr, 0, nullptr);
+                 if (mimetype and str::startswith(mimetype, "image/") and Glib::file_test(file_path, Glib::FILE_TEST_IS_REGULAR)) {
+@@ -794,7 +794,7 @@ void CtClipboard::on_received_to_uri_list(const Gtk::SelectionData& selection_da
+                     _pCtMainWin->get_ct_actions()->embfile_insert_path(element);
+                 }
+                 else {
+-                    spdlog::debug("'{}' not dir or file", element);
++                    spdlog::debug("'{}' not dir or file", element.raw());
+                 }
+             }
+             if (not property_value.empty()) {
+@@ -883,10 +883,10 @@ void CtClipboard::_yaml_to_codebox(const Glib::ustring& yaml_text, Gtk::TextView
+         _xml_to_codebox(xml_doc.write_to_string(), pTextView);
+     }
+     catch (std::exception& e) {
+-        spdlog::error("_yaml_to_codebox exception: {}\n{}", e.what(), yaml_text);
++        spdlog::error("_yaml_to_codebox exception: {}\n{}", e.what(), yaml_text.raw());
+     }
+     catch (...) {
+-        spdlog::error("_yaml_to_codebox unknown exception\n{}", yaml_text);
++        spdlog::error("_yaml_to_codebox unknown exception\n{}", yaml_text.raw());
+     }
+ }
+ 
+diff --git a/src/ct/ct_config.cc b/src/ct/ct_config.cc
+index 2470ab82f..3ebb54512 100644
+--- a/src/ct/ct_config.cc
++++ b/src/ct/ct_config.cc
+@@ -92,7 +92,7 @@ bool CtConfig::_load_from_file()
+             _uKeyFile->load_from_file(_configFilepath.string());
+         }
+         catch (Glib::Error& error) {
+-            spdlog::error("CtConfig {}: {}", _configFilepath, error.what());
++            spdlog::error("CtConfig {}: {}", _configFilepath, error.what().raw());
+             return false;
+         }
+         _populate_data_from_keyfile();
+diff --git a/src/ct/ct_dialogs_find.cc b/src/ct/ct_dialogs_find.cc
+index a4e8c4e4b..78ef6dc31 100644
+--- a/src/ct/ct_dialogs_find.cc
++++ b/src/ct/ct_dialogs_find.cc
+@@ -526,7 +526,7 @@ void CtDialogs::match_dialog(const std::string& str_find,
+     pButtonNext->set_image_position(Gtk::PositionType::POS_RIGHT);
+     CtMenuAction* pAction = pCtMainWin->get_ct_menu().find_action("toggle_show_allmatches_dlg");
+     Glib::ustring label = CtStrUtil::get_accelerator_label(pAction->get_shortcut(pCtMainWin->get_ct_config()));
+-    Gtk::Button* pButtonHide = pMatchesDialog->add_button(str::format(_("Hide (Restore with '%s')"), label), Gtk::RESPONSE_CLOSE);
++    Gtk::Button* pButtonHide = pMatchesDialog->add_button(str::format(_("Hide (Restore with '%s')"), label.raw()), Gtk::RESPONSE_CLOSE);
+     pButtonHide->set_image_from_icon_name("ct_close", Gtk::ICON_SIZE_BUTTON);
+ 
+     rModel->load_current_page();
+diff --git a/src/ct/ct_export2html.cc b/src/ct/ct_export2html.cc
+index ea2acce2c..2e777548a 100644
+--- a/src/ct/ct_export2html.cc
++++ b/src/ct/ct_export2html.cc
+@@ -1,7 +1,7 @@
+ /*
+  * ct_export2html.cc
+  *
+- * Copyright 2009-2023
++ * Copyright 2009-2024
+  * Giuseppe Penone <giuspen@gmail.com>
+  * Evgenii Gurianov <https://github.com/txe>
+  *
+@@ -83,9 +83,9 @@ void CtExport2Html::node_export_to_html(CtTreeIter tree_iter, const CtExportOpti
+ {
+     Glib::RefPtr<Gsv::Buffer> rTextBuffer = tree_iter.get_node_text_buffer();
+     if (not rTextBuffer) {
+-        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), tree_iter.get_node_name()));
++        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), tree_iter.get_node_name().raw()));
+     }
+-    Glib::ustring html_text = str::format(HTML_HEADER, tree_iter.get_node_name());
++    Glib::ustring html_text = str::format(HTML_HEADER, tree_iter.get_node_name().raw());
+     if (not index.empty() and options.index_in_page) {
+         auto script = R"HTML(
+             <script type='text/javascript'>
+@@ -270,7 +270,7 @@ void CtExport2Html::nodes_all_export_to_single_html(bool all_tree, const CtExpor
+         else {
+             Glib::RefPtr<Gsv::Buffer> rTextBuffer = tree_iter.get_node_text_buffer();
+             if (not rTextBuffer) {
+-                throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), tree_iter.get_node_name()));
++                throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), tree_iter.get_node_name().raw()));
+             }
+             html_text += _html_get_from_code_buffer(rTextBuffer, -1, -1, tree_iter.get_node_syntax_highlighting());
+         }
+@@ -529,7 +529,7 @@ void CtExport2Html::_html_get_from_treestore_node(CtTreeIter tree_iter,
+ {
+     Glib::RefPtr<Gsv::Buffer> rTextBuffer = tree_iter.get_node_text_buffer();
+     if (not rTextBuffer) {
+-        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), tree_iter.get_node_name()));
++        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), tree_iter.get_node_name().raw()));
+     }
+     auto widgets = tree_iter.get_anchored_widgets(sel_start, sel_end);
+     out_widgets = std::vector<CtAnchoredWidget*>(widgets.begin(), widgets.end()); // copy from list to vector
+diff --git a/src/ct/ct_export2pdf.cc b/src/ct/ct_export2pdf.cc
+index 88aafdef5..4afacb154 100644
+--- a/src/ct/ct_export2pdf.cc
++++ b/src/ct/ct_export2pdf.cc
+@@ -1,7 +1,7 @@
+ /*
+  * ct_export2pdf.cc
+  *
+- * Copyright 2009-2023
++ * Copyright 2009-2024
+  * Giuseppe Penone <giuspen@gmail.com>
+  * Evgenii Gurianov <https://github.com/txe>
+  *
+@@ -355,7 +355,7 @@ std::shared_ptr<CtPangoText> CtExport2Pango::_pango_link_url(const Glib::ustring
+ #endif /* !_WIN32 && !__APPLE__ */
+     }
+     else {
+-        spdlog::debug("invalid link entry {}, text {}", link, tagged_text);
++        spdlog::debug("invalid link entry {}, text {}", link.raw(), tagged_text.raw());
+         return std::make_shared<CtPangoText>(tagged_text, CtConst::RICH_TEXT_ID, indent, pango_dir);
+     }
+ 
+@@ -367,7 +367,7 @@ void CtExport2Pdf::node_export_print(const fs::path& pdf_filepath, CtTreeIter tr
+ {
+     Glib::RefPtr<Gsv::Buffer> rTextBuffer = tree_iter.get_node_text_buffer();
+     if (not rTextBuffer) {
+-        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), tree_iter.get_node_name()));
++        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), tree_iter.get_node_name().raw()));
+     }
+     std::vector<CtPangoObjectPtr> pango_slots;
+     if (tree_iter.get_node_is_text()) {
+@@ -409,7 +409,7 @@ void CtExport2Pdf::_nodes_all_export_print_iter(CtTreeIter tree_iter,
+ {
+     Glib::RefPtr<Gsv::Buffer> rTextBuffer = tree_iter.get_node_text_buffer();
+     if (not rTextBuffer) {
+-        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), tree_iter.get_node_name()));
++        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), tree_iter.get_node_name().raw()));
+     }
+     std::vector<CtPangoObjectPtr> node_pango_slots;
+     if (tree_iter.get_node_is_text()) {
+@@ -592,7 +592,7 @@ bool CtPrint::_cairo_tag_can_apply(const Glib::ustring& tag_name, const Glib::us
+             return true;
+         }
+     }
+-    spdlog::debug("{} dropped", tag_attr);
++    spdlog::debug("{} dropped", tag_attr.raw());
+     return false;
+ }
+ 
+diff --git a/src/ct/ct_export2txt.cc b/src/ct/ct_export2txt.cc
+index fbf4a810c..4d471a41b 100644
+--- a/src/ct/ct_export2txt.cc
++++ b/src/ct/ct_export2txt.cc
+@@ -34,7 +34,7 @@ Glib::ustring CtExport2Txt::node_export_to_txt(CtTreeIter tree_iter, fs::path fi
+ {
+     Glib::RefPtr<Gsv::Buffer> rTextBuffer = tree_iter.get_node_text_buffer();
+     if (not rTextBuffer) {
+-        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), tree_iter.get_node_name()));
++        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), tree_iter.get_node_name().raw()));
+     }
+     Glib::ustring plain_text;
+     if (export_options.include_node_name) {
+diff --git a/src/ct/ct_filesystem.cc b/src/ct/ct_filesystem.cc
+index 821d470d9..5c5f5ea7d 100644
+--- a/src/ct/ct_filesystem.cc
++++ b/src/ct/ct_filesystem.cc
+@@ -202,7 +202,7 @@ bool copy_file(const path& from, const path& to)
+         return rFileFrom->copy(rFileTo, Gio::FILE_COPY_OVERWRITE);
+     }
+     catch (Gio::Error& error) {
+-        spdlog::debug("fs::copy_file, error: {}, from: {}, to: {}", error.what(), from.string(), to.string());
++        spdlog::debug("fs::copy_file, error: {}, from: {}, to: {}", error.what().raw(), from.string(), to.string());
+         return false;
+     }
+ }
+diff --git a/src/ct/ct_image.cc b/src/ct/ct_image.cc
+index 50e807985..12944e73d 100644
+--- a/src/ct/ct_image.cc
++++ b/src/ct/ct_image.cc
+@@ -433,7 +433,7 @@ static const char* get_dvipng_bin_cmd()
+         return rPixbuf;
+     }
+     catch (Glib::Error& error) {
+-        spdlog::error("{} {}", __FUNCTION__, error.what());
++        spdlog::error("{} {}", __FUNCTION__, error.what().raw());
+     }
+     // fallback
+     return pCtMainWin->get_icon_theme()->load_icon("ct_warning", 48);
+diff --git a/src/ct/ct_imports.cc b/src/ct/ct_imports.cc
+index 203ca6650..20e5d01dc 100644
+--- a/src/ct/ct_imports.cc
++++ b/src/ct/ct_imports.cc
+@@ -1,7 +1,7 @@
+ /*
+  * ct_imports.cc
+  *
+- * Copyright 2009-2023
++ * Copyright 2009-2024
+  * Giuseppe Penone <giuspen@gmail.com>
+  * Evgenii Gurianov <https://github.com/txe>
+  *
+@@ -384,7 +384,7 @@ void CtTomboyImport::_iterate_tomboy_note(xmlpp::Element* iter, std::unique_ptr<
+                 _is_link_to_node = false;
+             }
+             else {
+-                spdlog::debug(dom_iter->get_name());
++                spdlog::debug(dom_iter->get_name().raw());
+                 _iterate_tomboy_note(dom_iter_el, node);
+             }
+         }
+diff --git a/src/ct/ct_logging.h b/src/ct/ct_logging.h
+index dfe2ef7fb..e447ba4e1 100644
+--- a/src/ct/ct_logging.h
++++ b/src/ct/ct_logging.h
+@@ -1,7 +1,7 @@
+ /*
+  * ct_logging.h
+  *
+- * Copyright 2009-2021
++ * Copyright 2009-2024
+  * Giuseppe Penone <giuspen@gmail.com>
+  * Evgenii Gurianov <https://github.com/txe>
+  *
+@@ -32,14 +32,3 @@
+ #include "spdlog/fmt/bundled/core.h"
+ #include "spdlog/fmt/bundled/printf.h"
+ #endif // not SHARED_FMT_SPDLOG
+-#include <glibmm/ustring.h>
+-
+-// ostream works badly on Win32 due to locale encoding
+-template <>
+-struct fmt::formatter<Glib::ustring>: formatter<string_view> {
+-  // parse is inherited from formatter<string_view>.
+-  template <typename FormatContext>
+-  auto format(Glib::ustring c, FormatContext& ctx) {
+-    return formatter<string_view>::format(c.c_str(), ctx);
+-  }
+-};
+diff --git a/src/ct/ct_main_win_buffer.cc b/src/ct/ct_main_win_buffer.cc
+index 4d69e89d3..f04471ae5 100644
+--- a/src/ct/ct_main_win_buffer.cc
++++ b/src/ct/ct_main_win_buffer.cc
+@@ -125,7 +125,7 @@ void CtMainWin::reapply_syntax_highlighting(const char target/*'r':RichText, 'p'
+                 if (node.get_node_is_rich_text()) {
+                     Glib::RefPtr<Gsv::Buffer> rTextBuffer = node.get_node_text_buffer();
+                     if (not rTextBuffer) {
+-                        error = str::format(_("Failed to retrieve the content of the node '%s'"), node.get_node_name());
++                        error = str::format(_("Failed to retrieve the content of the node '%s'"), node.get_node_name().raw());
+                         return true; /* true for stop */
+                     }
+                     apply_syntax_highlighting(rTextBuffer, node.get_node_syntax_highlighting(), true/*forceReApply*/);
+@@ -144,7 +144,7 @@ void CtMainWin::reapply_syntax_highlighting(const char target/*'r':RichText, 'p'
+                 else {
+                     Glib::RefPtr<Gsv::Buffer> rTextBuffer = node.get_node_text_buffer();
+                     if (not rTextBuffer) {
+-                        error = str::format(_("Failed to retrieve the content of the node '%s'"), node.get_node_name());
++                        error = str::format(_("Failed to retrieve the content of the node '%s'"), node.get_node_name().raw());
+                         return true; /* true for stop */
+                     }
+                     apply_syntax_highlighting(rTextBuffer, node.get_node_syntax_highlighting(), true/*forceReApply*/);
+diff --git a/src/ct/ct_main_win_events.cc b/src/ct/ct_main_win_events.cc
+index 732336414..99095a392 100644
+--- a/src/ct/ct_main_win_events.cc
++++ b/src/ct/ct_main_win_events.cc
+@@ -56,7 +56,7 @@ void CtMainWin::_on_treeview_cursor_changed()
+ 
+     Glib::RefPtr<Gsv::Buffer> rTextBuffer = treeIter.get_node_text_buffer();
+     if (not rTextBuffer) {
+-        CtDialogs::error_dialog(str::format(_("Failed to retrieve the content of the node '%s'"), treeIter.get_node_name()), *this);
++        CtDialogs::error_dialog(str::format(_("Failed to retrieve the content of the node '%s'"), treeIter.get_node_name().raw()), *this);
+         if (_prevTreeIter) {
+             _uCtTreeview->set_cursor_safe(_prevTreeIter);
+         }
+diff --git a/src/ct/ct_misc_utils.cc b/src/ct/ct_misc_utils.cc
+index 8ed98b8b3..2b452fe86 100644
+--- a/src/ct/ct_misc_utils.cc
++++ b/src/ct/ct_misc_utils.cc
+@@ -1160,7 +1160,7 @@ int str::indexOf(const Glib::ustring& str, const gunichar& uc)
+     return index != std::string::npos ? static_cast<int>(index) : -1;
+ }
+ 
+-Glib::ustring str::xml_escape(const Glib::ustring& text)
++std::string str::xml_escape(const Glib::ustring& text)
+ {
+     Glib::ustring buffer;
+     buffer.reserve(text.size());
+@@ -1175,7 +1175,7 @@ Glib::ustring str::xml_escape(const Glib::ustring& text)
+             default:   buffer.append(1, *ch);        break;
+         }
+     }
+-    return buffer;
++    return buffer.raw();
+ }
+ 
+ Glib::ustring str::sanitize_bad_symbols(const Glib::ustring& xml_content)
+diff --git a/src/ct/ct_misc_utils.h b/src/ct/ct_misc_utils.h
+index dc2cb09a2..d75a0f263 100644
+--- a/src/ct/ct_misc_utils.h
++++ b/src/ct/ct_misc_utils.h
+@@ -328,7 +328,7 @@ int indexOf(const std::array<T, size>& array, const T& uc)
+     return -1;
+ }
+ 
+-Glib::ustring xml_escape(const Glib::ustring& text);
++std::string xml_escape(const Glib::ustring& text);
+ 
+ Glib::ustring sanitize_bad_symbols(const Glib::ustring& xml_content);
+ 
+diff --git a/src/ct/ct_storage_control.cc b/src/ct/ct_storage_control.cc
+index 54b9c145b..9a6e813a0 100644
+--- a/src/ct/ct_storage_control.cc
++++ b/src/ct/ct_storage_control.cc
+@@ -140,7 +140,7 @@ static const std::string BAD_ARCHIVE{"_BAD_ARC_"};
+             return Glib::build_filename(first_backup_dir, CtConst::CHAR_DOT + Glib::path_get_basename(file_or_dir_path)) + CtConst::CHAR_TILDE;
+         }
+         catch (Glib::Error& ex) {
+-            spdlog::error("failed to create backup directory: {}, \n{}", first_backup_dir, ex.what());
++            spdlog::error("failed to create backup directory: {}, \n{}", first_backup_dir, ex.what().raw());
+             return "";
+         }
+     };
+@@ -778,7 +778,7 @@ void CtStorageCache::generate_cache(CtMainWin* pCtMainWin, const CtStorageSyncPe
+             CtTreeIter ct_tree_iter = store.to_ct_tree_iter(iter);
+             Glib::RefPtr<Gsv::Buffer> rTextBuffer = ct_tree_iter.get_node_text_buffer();
+             if (not rTextBuffer) {
+-                error = str::format(_("Failed to retrieve the content of the node '%s'"), ct_tree_iter.get_node_name());
++                error = str::format(_("Failed to retrieve the content of the node '%s'"), ct_tree_iter.get_node_name().raw());
+                 return true; /* true for stop */
+             }
+             for (auto widget : ct_tree_iter.get_anchored_widgets_fast())
+@@ -795,7 +795,7 @@ void CtStorageCache::generate_cache(CtMainWin* pCtMainWin, const CtStorageSyncPe
+             if (node_pair.second.buff && ct_tree_iter.get_node_is_rich_text()) {
+                 Glib::RefPtr<Gsv::Buffer> rTextBuffer = ct_tree_iter.get_node_text_buffer();
+                 if (not rTextBuffer) {
+-                    throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), ct_tree_iter.get_node_name()));
++                    throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), ct_tree_iter.get_node_name().raw()));
+                 }
+                 for (auto widget : ct_tree_iter.get_anchored_widgets_fast())
+                     if (widget->get_type() == CtAnchWidgType::ImagePng) // important to check type
+diff --git a/src/ct/ct_storage_multifile.cc b/src/ct/ct_storage_multifile.cc
+index 966cba10c..ebd729e0e 100644
+--- a/src/ct/ct_storage_multifile.cc
++++ b/src/ct/ct_storage_multifile.cc
+@@ -455,7 +455,7 @@ bool CtStorageMultiFile::_nodes_to_multifile(const CtTreeIter* ct_tree_iter,
+         }
+     }
+     catch (Glib::Error& error) {
+-        spdlog::error("{} {}", __FUNCTION__, error.what());
++        spdlog::error("{} {}", __FUNCTION__, error.what().raw());
+     }
+     return false;
+ }
+diff --git a/src/ct/ct_storage_sqlite.cc b/src/ct/ct_storage_sqlite.cc
+index 476e563ed..dd2c703bb 100644
+--- a/src/ct/ct_storage_sqlite.cc
++++ b/src/ct/ct_storage_sqlite.cc
+@@ -108,8 +108,8 @@ const char CtStorageSqlite::TABLE_BOOKMARK_CREATE[]{"CREATE TABLE bookmark ("
+ const char CtStorageSqlite::TABLE_BOOKMARK_INSERT[]{"INSERT INTO bookmark VALUES(?,?)"};
+ const char CtStorageSqlite::TABLE_BOOKMARK_DELETE[]{"DELETE FROM bookmark"};
+ 
+-const Glib::ustring CtStorageSqlite::ERR_SQLITE_PREPV2{"!! sqlite3_prepare_v2: "};
+-const Glib::ustring CtStorageSqlite::ERR_SQLITE_STEP{"!! sqlite3_step: "};
++/*static*/const std::string CtStorageSqlite::ERR_SQLITE_PREPV2{"!! sqlite3_prepare_v2: "};
++/*static*/const std::string CtStorageSqlite::ERR_SQLITE_STEP{"!! sqlite3_step: "};
+ 
+ class Sqlite3StmtAuto
+ {
+diff --git a/src/ct/ct_storage_sqlite.h b/src/ct/ct_storage_sqlite.h
+index e6cad42df..e42fe9cd4 100644
+--- a/src/ct/ct_storage_sqlite.h
++++ b/src/ct/ct_storage_sqlite.h
+@@ -129,8 +129,8 @@ class CtStorageSqlite : public CtStorageEntity
+     static const char TABLE_BOOKMARK_CREATE[];
+     static const char TABLE_BOOKMARK_INSERT[];
+     static const char TABLE_BOOKMARK_DELETE[];
+-    static const Glib::ustring ERR_SQLITE_PREPV2;
+-    static const Glib::ustring ERR_SQLITE_STEP;
++    static const std::string ERR_SQLITE_PREPV2;
++    static const std::string ERR_SQLITE_STEP;
+     static const char* safe_sqlite3_column_text(sqlite3_stmt* stmt, int iCol);
+ 
+ private:
+diff --git a/src/ct/ct_storage_xml.cc b/src/ct/ct_storage_xml.cc
+index 555c72362..3e0fc8cc4 100644
+--- a/src/ct/ct_storage_xml.cc
++++ b/src/ct/ct_storage_xml.cc
+@@ -249,7 +249,7 @@ void CtStorageXml::_nodes_to_xml(CtTreeIter* ct_tree_iter,
+ {
+     Glib::RefPtr<Gsv::Buffer> rTextBuffer = ct_tree_iter->get_node_text_buffer();
+     if (not rTextBuffer) {
+-        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), ct_tree_iter->get_node_name()));
++        throw std::runtime_error(str::format(_("Failed to retrieve the content of the node '%s'"), ct_tree_iter->get_node_name().raw()));
+     }
+     xmlpp::Element* p_node_node =  CtStorageXmlHelper{_pCtMainWin}.node_to_xml(
+         ct_tree_iter,
+diff --git a/src/ct/ct_treestore.cc b/src/ct/ct_treestore.cc
+index 44c0d14bf..bd3d34eac 100644
+--- a/src/ct/ct_treestore.cc
++++ b/src/ct/ct_treestore.cc
+@@ -866,8 +866,8 @@ void CtTreeStore::text_view_apply_textbuffer(CtTreeIter& treeIter, CtTextView* p
+     const gint64 nodeMasterId = treeIter.get_node_shared_master_id();
+     const gint64 nodeId = treeIter.get_node_id();
+     const Glib::ustring nodeName = treeIter.get_node_name();
+-    if (nodeMasterId <= 0) spdlog::debug("Node {} > {}", nodeId, nodeName);
+-    else spdlog::debug("Node {}[{}] > {}", nodeId, nodeMasterId, nodeName);
++    if (nodeMasterId <= 0) spdlog::debug("Node {} > {}", nodeId, nodeName.raw());
++    else spdlog::debug("Node {}[{}] > {}", nodeId, nodeMasterId, nodeName.raw());
+ 
+     Glib::RefPtr<Gsv::Buffer> rTextBuffer = treeIter.get_node_text_buffer();
+     _pCtMainWin->apply_syntax_highlighting(rTextBuffer, treeIter.get_node_syntax_highlighting(), false/*forceReApply*/);
+@@ -1416,7 +1416,7 @@ bool CtTreeStore::populate_summary_info(CtSummaryInfo& summaryInfo)
+             // ensure the node content is populated
+             Glib::RefPtr<Gsv::Buffer> rTextBuffer = ctTreeIter.get_node_text_buffer();
+             if (not rTextBuffer) {
+-                error = str::format(_("Failed to retrieve the content of the node '%s'"), ctTreeIter.get_node_name());
++                error = str::format(_("Failed to retrieve the content of the node '%s'"), ctTreeIter.get_node_name().raw());
+                 return true; /* true for stop */
+             }
+             const gint64 shared_master_id = ctTreeIter.get_node_shared_master_id();
+diff --git a/tests/tests_encoding.cpp b/tests/tests_encoding.cpp
+index ce3ce3101..80683ced8 100644
+--- a/tests/tests_encoding.cpp
++++ b/tests/tests_encoding.cpp
+@@ -1,7 +1,7 @@
+ /*
+  * tests_encoding.cpp
+  *
+- * Copyright 2009-2020
++ * Copyright 2009-2024
+  * Giuseppe Penone <giuspen@gmail.com>
+  * Evgenii Gurianov <https://github.com/txe>
+  *
+@@ -28,5 +28,5 @@ TEST(EncodingGroup, ustring_format)
+ {
+     // on win32 this could throw an exception due to locale
+     Glib::ustring str = "привет こんにちは";
+-    ASSERT_STREQ(str.c_str(), fmt::format("{}", str).c_str());
++    ASSERT_STREQ(str.c_str(), fmt::format("{}", str.raw()).c_str());
+ }
diff --git a/srcpkgs/cherrytree/patches/fc1d7499067b9db9841175b5a2d6934dc65e4522.patch b/srcpkgs/cherrytree/patches/fc1d7499067b9db9841175b5a2d6934dc65e4522.patch
new file mode 100644
index 00000000000000..dd117eaf8c83b3
--- /dev/null
+++ b/srcpkgs/cherrytree/patches/fc1d7499067b9db9841175b5a2d6934dc65e4522.patch
@@ -0,0 +1,151 @@
+From fc1d7499067b9db9841175b5a2d6934dc65e4522 Mon Sep 17 00:00:00 2001
+From: Ben Cotton <bcotton@funnelfiasco.com>
+Date: Fri, 23 Aug 2024 06:02:31 -0400
+Subject: [PATCH] Fix formatting issues with fmt 11 (#2548) (#2560)
+
+CherryTree fails to build on Fedora Rawhide due to errors introduced by
+fmt 11. This commit fixes all of the remaining errors raised during
+compile.
+
+Fixes #2548
+
+Signed-off-by: Ben Cotton <bcotton@fedoraproject.org>
+Co-authored-by: Ben Cotton <bcotton@fedoraproject.org>
+---
+ src/ct/ct_export2html.cc       |  4 ++--
+ src/ct/ct_storage_control.cc   | 12 ++++++------
+ src/ct/ct_storage_multifile.cc |  6 +++---
+ src/ct/ct_storage_sqlite.cc    |  6 +++---
+ 4 files changed, 14 insertions(+), 14 deletions(-)
+
+diff --git a/src/ct/ct_export2html.cc b/src/ct/ct_export2html.cc
+index 2e777548..b74aff5a 100644
+--- a/src/ct/ct_export2html.cc
++++ b/src/ct/ct_export2html.cc
+@@ -180,7 +180,7 @@ void CtExport2Html::nodes_all_export_to_multiple_html(bool all_tree, const CtExp
+     tree_links_text += "</div>\n";
+ 
+     // create index html page
+-    Glib::ustring html_text = str::format(HTML_HEADER, _pCtMainWin->get_ct_storage()->get_file_name());
++    Glib::ustring html_text = str::format(HTML_HEADER, _pCtMainWin->get_ct_storage()->get_file_name().string());
+     if (options.index_in_page) {
+         html_text += "<div class='two-panels'>\n<div class='tree-panel'>\n";
+         html_text += tree_links_text;
+@@ -283,7 +283,7 @@ void CtExport2Html::nodes_all_export_to_single_html(bool all_tree, const CtExpor
+         }
+     };
+ 
+-    Glib::ustring html_header = str::format(HTML_HEADER, _pCtMainWin->get_ct_storage()->get_file_name());
++    Glib::ustring html_header = str::format(HTML_HEADER, _pCtMainWin->get_ct_storage()->get_file_name().string());
+     rFileStream->write(html_header.c_str(), html_header.bytes());
+ 
+     // start to iterarte nodes
+diff --git a/src/ct/ct_storage_control.cc b/src/ct/ct_storage_control.cc
+index 34dd0a1b..e2b6f114 100644
+--- a/src/ct/ct_storage_control.cc
++++ b/src/ct/ct_storage_control.cc
+@@ -78,7 +78,7 @@ static const std::string BAD_ARCHIVE{"_BAD_ARC_"};
+                     return nullptr;
+                 }
+                 if (extracted_file_path.string() == BAD_ARCHIVE) {
+-                    throw std::runtime_error(str::format(_("'%s' is Not a Valid Archive"), file_path));
++                    throw std::runtime_error(str::format(_("'%s' is Not a Valid Archive"), file_path.string()));
+                 }
+             }
+         }
+@@ -533,14 +533,14 @@ void CtStorageControl::_backupEncryptThread()
+                 // move back the latest file version
+                 (void)fs::move_file(pBackupEncryptData->main_backup, pBackupEncryptData->file_path);
+ #if defined(DEBUG_BACKUP_ENCRYPT)
+-                spdlog::debug("{} -> {}", pBackupEncryptData->main_backup, pBackupEncryptData->file_path);
++                spdlog::debug("{} -> {}", pBackupEncryptData->main_backup, pBackupEncryptData->file_path.string());
+ #endif // DEBUG_BACKUP_ENCRYPT
+                 _pCtMainWin->errorsDEQueue.push_back(_("Failed to encrypt the file"));
+                 _pCtMainWin->dispatcherErrorMsg.emit();
+                 continue;
+             }
+ #if defined(DEBUG_BACKUP_ENCRYPT)
+-            spdlog::debug("{} => {}", pBackupEncryptData->extracted_copy, pBackupEncryptData->file_path);
++            spdlog::debug("{} => {}", pBackupEncryptData->extracted_copy, pBackupEncryptData->file_path.string());
+ #endif // DEBUG_BACKUP_ENCRYPT
+         }
+ 
+@@ -729,12 +729,12 @@ void CtStorageControl::add_nodes_from_storage(const fs::path& file_path,
+ {
+     if (is_folder) {
+         if (not fs::is_directory(file_path)) {
+-            throw std::runtime_error(fmt::format("{} not a dir", file_path));
++            throw std::runtime_error(fmt::format("{} not a dir", file_path.string()));
+         }
+     }
+     else {
+         if (not fs::is_regular_file(file_path)) {
+-            throw std::runtime_error(fmt::format("{} not a file", file_path));
++            throw std::runtime_error(fmt::format("{} not a file", file_path.string()));
+         }
+     }
+ 
+@@ -747,7 +747,7 @@ void CtStorageControl::add_nodes_from_storage(const fs::path& file_path,
+             return;
+         }
+         if (extracted_file_path.string() == BAD_ARCHIVE) {
+-            throw std::runtime_error(str::format(_("'%s' is Not a Valid Archive"), file_path));
++            throw std::runtime_error(str::format(_("'%s' is Not a Valid Archive"), file_path.string()));
+         }
+     }
+ 
+diff --git a/src/ct/ct_storage_multifile.cc b/src/ct/ct_storage_multifile.cc
+index b7b10b4d..94db12bb 100644
+--- a/src/ct/ct_storage_multifile.cc
++++ b/src/ct/ct_storage_multifile.cc
+@@ -510,7 +510,7 @@ bool CtStorageMultiFile::populate_treestore(const fs::path& dir_path, Glib::ustr
+                 parsingOk = true;
+             }
+             catch (std::exception& ex) {
+-                spdlog::error("parse {} : {} - trying first backup...", node_xml_path, ex.what());
++                spdlog::error("parse {} : {} - trying first backup...", node_xml_path.string(), ex.what());
+             }
+             if (not parsingOk) {
+                 std::string first_backup_dir;
+@@ -527,13 +527,13 @@ bool CtStorageMultiFile::populate_treestore(const fs::path& dir_path, Glib::ustr
+                             parsingOk = true;
+                         }
+                         catch (std::exception& ex) {
+-                            spdlog::error("parse {} : {} - trying backup {}...", node_xml_path, ex.what(), b+2);
++                            spdlog::error("parse {} : {} - trying backup {}...", node_xml_path.string(), ex.what(), b+2);
+                         }
+                         if (parsingOk) {
+                             if (fs::exists(node_xml_path)) {
+                                 fs::move_file(node_xml_path, node_xml_path.parent_path() / (node_xml_path.stem() + std::string{"_BAD.xml"}));
+                             }
+-                            spdlog::debug("parse backed up data ok, copying {} -> {}", backup_node_xml_path, node_xml_path);
++                            spdlog::debug("parse backed up data ok, copying {} -> {}", backup_node_xml_path.string(), node_xml_path.string());
+                             fs::copy_file(backup_node_xml_path, node_xml_path);
+                             if (error.empty()) error += _("A Restore From Backup Was Necessary For:");
+                             error += "\n\n" + node_xml_path.string();
+diff --git a/src/ct/ct_storage_sqlite.cc b/src/ct/ct_storage_sqlite.cc
+index dd2c703b..3b0b9217 100644
+--- a/src/ct/ct_storage_sqlite.cc
++++ b/src/ct/ct_storage_sqlite.cc
+@@ -207,10 +207,10 @@ void CtStorageSqlite::test_connection()
+     }
+     catch(std::exception& e) {
+         spdlog::debug("{} {}", __FUNCTION__, e.what());
+-        throw std::runtime_error(str::format(_("%s write failed - file is missing. Reattach USB drive or shared resource!"), _file_path));
++        throw std::runtime_error(str::format(_("%s write failed - file is missing. Reattach USB drive or shared resource!"), _file_path.string()));
+     }
+     if (not test_readwrite())
+-        throw std::runtime_error(str::format(_("%s write failed - is file blocked by a sync program?"), _file_path));
++        throw std::runtime_error(str::format(_("%s write failed - is file blocked by a sync program?"), _file_path.string()));
+     (void)_check_database_integrity();
+ }
+ 
+@@ -223,7 +223,7 @@ void CtStorageSqlite::try_reopen()
+     }
+     catch(std::exception& e) {
+         spdlog::debug("{} {}", __FUNCTION__, e.what());
+-        throw std::runtime_error(str::format(_("%s reopen failed - file is missing. Reattach USB drive or shared resource!"), _file_path));
++        throw std::runtime_error(str::format(_("%s reopen failed - file is missing. Reattach USB drive or shared resource!"), _file_path.string()));
+     }
+     (void)_check_database_integrity();
+ }
diff --git a/srcpkgs/cherrytree/patches/series b/srcpkgs/cherrytree/patches/series
new file mode 100644
index 00000000000000..22ed6296f2952f
--- /dev/null
+++ b/srcpkgs/cherrytree/patches/series
@@ -0,0 +1,5 @@
+76f0030e2e2b6e1488148d3828baeb8f5911eb8d.patch
+ccc2d101f24a409efddb2f29e8c14002c9836a85.patch
+22142f3b44fef81e67c9bfbcdaed2f80ab2ff5de.patch
+05233db2b25977037c7520a8316183636a262130.patch
+fc1d7499067b9db9841175b5a2d6934dc65e4522.patch
diff --git a/srcpkgs/cherrytree/template b/srcpkgs/cherrytree/template
index 61ce49b4b43c6d..712ad0e7e3edab 100644
--- a/srcpkgs/cherrytree/template
+++ b/srcpkgs/cherrytree/template
@@ -1,7 +1,7 @@
 # Template file for 'cherrytree'
 pkgname=cherrytree
 version=1.1.4
-revision=1
+revision=2
 build_style=cmake
 # Tests are built during the normal build process and require access to X server
 configure_args="-DBUILD_TESTING=OFF"

From a18d9bb35ee1a55d6c89af28b8c6ab3c8af27926 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:08 +0200
Subject: [PATCH 07/27] coeurl: update to 0.3.1

---
 srcpkgs/coeurl/patches/fix-build.diff | 11 -----------
 srcpkgs/coeurl/template               |  4 ++--
 2 files changed, 2 insertions(+), 13 deletions(-)
 delete mode 100644 srcpkgs/coeurl/patches/fix-build.diff

diff --git a/srcpkgs/coeurl/patches/fix-build.diff b/srcpkgs/coeurl/patches/fix-build.diff
deleted file mode 100644
index 6b3b33e6806a24..00000000000000
--- a/srcpkgs/coeurl/patches/fix-build.diff
+++ /dev/null
@@ -1,11 +0,0 @@
-diff --git a/subprojects/curl.wrap b/subprojects/curl.wrap
-index f1510b4ba5..ec9710f9d7 100644
---- a/subprojects/curl.wrap
-+++ b/subprojects/curl.wrap
-@@ -5,5 +5,5 @@ source_url = https://github.com/curl/curl/releases/download/curl-7_77_0/curl-7.7
- source_filename = curl-7.77.0.tar.xz
- source_hash = 0f64582c54282f31c0de9f0a1a596b182776bd4df9a4c4a2a41bbeb54f62594b
- 
--[provides]
-+[provide]
- dependency_names = libcurl
diff --git a/srcpkgs/coeurl/template b/srcpkgs/coeurl/template
index fc0175da3c486c..b73eb89978ab8d 100644
--- a/srcpkgs/coeurl/template
+++ b/srcpkgs/coeurl/template
@@ -1,6 +1,6 @@
 # Template file for 'coeurl'
 pkgname=coeurl
-version=0.3.0
+version=0.3.1
 revision=1
 build_style=meson
 hostmakedepends="pkg-config"
@@ -10,7 +10,7 @@ maintainer="Orphaned <orphan@voidlinux.org>"
 license="MIT"
 homepage="https://nheko.im/nheko-reborn/coeurl"
 distfiles="https://nheko.im/nheko-reborn/coeurl/-/archive/v${version}/coeurl-v${version}.tar.gz"
-checksum=48b07482364edcbed03e352f6b8b07e327c331eaa45707ad58e62930fa361382
+checksum=6203654c2eec7a286388a6cfa8d8ea5698c57b7b8be235b2cc165f0b4c7bee0b
 
 post_install() {
 	vlicense LICENSE

From 60665c51726986253285a065a58ab78c1a81f006 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:09 +0200
Subject: [PATCH 08/27] cryfs: rebuild for fmt-11.0.2

---
 srcpkgs/cryfs/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/cryfs/template b/srcpkgs/cryfs/template
index bb2109c034e8cb..3e523766b129c1 100644
--- a/srcpkgs/cryfs/template
+++ b/srcpkgs/cryfs/template
@@ -1,7 +1,7 @@
 # Template file for 'cryfs'
 pkgname=cryfs
 version=0.11.4
-revision=2
+revision=3
 build_style=cmake
 configure_args="-DBoost_USE_STATIC_LIBS=OFF -DCRYFS_UPDATE_CHECKS=off
  -DDEPENDENCY_CONFIG=../cmake-utils/DependenciesFromLocalSystem.cmake"

From 3011d8a4bb7cf9ab602e70a161593f28b31fc4a2 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:09 +0200
Subject: [PATCH 09/27] devilutionX: update to 1.5.3.

---
 srcpkgs/devilutionX/template | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/devilutionX/template b/srcpkgs/devilutionX/template
index ad911b48f8631c..c052c2518fcd8c 100644
--- a/srcpkgs/devilutionX/template
+++ b/srcpkgs/devilutionX/template
@@ -1,7 +1,7 @@
 # Template file for 'devilutionX'
 pkgname=devilutionX
-version=1.4.1
-revision=3
+version=1.5.3
+revision=1
 build_style=cmake
 configure_args="-DVERSION_NUM=$version -DDISABLE_ZERO_TIER=ON"
 hostmakedepends="pkg-config"
@@ -13,8 +13,8 @@ license="Unlicense"
 homepage="https://github.com/diasurgical/devilutionX"
 changelog="https://raw.githubusercontent.com/diasurgical/devilutionX/master/docs/CHANGELOG.md"
 distfiles="https://github.com/diasurgical/devilutionX/releases/download/${version}/devilutionx-src.tar.xz"
-checksum=f80a5414bb7b5a5ae9f6dbc69cec4ae080c29dd0a8a553cedd405d631011da9f
+checksum=ea948933eb5fbffb12d72743ef15b626e7004a88bd4f1415b26a9f45240f4a7e
 
 post_install() {
-	vlicense LICENSE
+	vlicense LICENSE.md
 }

From e24d29d8d236bd29dfea67c1602304bdfbbcc979 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:09 +0200
Subject: [PATCH 10/27] easyeffects: rebuild for fmt-11.0.2

---
 srcpkgs/easyeffects/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/easyeffects/template b/srcpkgs/easyeffects/template
index 4bd7570991347d..dceb132e246a59 100644
--- a/srcpkgs/easyeffects/template
+++ b/srcpkgs/easyeffects/template
@@ -1,7 +1,7 @@
 # Template file for 'easyeffects'
 pkgname=easyeffects
 version=7.1.7
-revision=2
+revision=3
 build_style=meson
 hostmakedepends="pkg-config gettext itstool glib-devel desktop-file-utils
  gtk4-update-icon-cache"

From 686fafd867035a7da6c50a77c93ef14c4585a373 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:09 +0200
Subject: [PATCH 11/27] freecad: rebuild for fmt-11.0.2

---
 srcpkgs/freecad/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/freecad/template b/srcpkgs/freecad/template
index 2c0e80315116fd..3d5e31790bb62b 100644
--- a/srcpkgs/freecad/template
+++ b/srcpkgs/freecad/template
@@ -1,7 +1,7 @@
 # Template file for 'freecad'
 pkgname=freecad
 version=0.21.2
-revision=1
+revision=2
 build_wrksrc="FreeCAD-${version}"
 build_style=cmake
 pycompile_dirs="usr/lib/${pkgname}/Mod"

From c5fd0f8d7fd6a916d2e88af285c0f88e1ff7ea05 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:09 +0200
Subject: [PATCH 12/27] furnace: rebuild for fmt-11.0.2

---
 srcpkgs/furnace/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/furnace/template b/srcpkgs/furnace/template
index 4e0bcbe473a307..e22134b048d815 100644
--- a/srcpkgs/furnace/template
+++ b/srcpkgs/furnace/template
@@ -1,7 +1,7 @@
 # Template file for 'furnace'
 pkgname=furnace
 version=0.6.7
-revision=1
+revision=2
 _adpcm_commit="ef7a217154badc3b99978ac481b268c8aab67bd8"
 build_style=cmake
 configure_args="-DSYSTEM_FFTW=ON -DSYSTEM_FMT=ON -DSYSTEM_FREETYPE=ON

From f6e171ad6dce3d89f6290a7115703472db6982dd Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:09 +0200
Subject: [PATCH 13/27] gerbera: update to 2.2.0.

---
 srcpkgs/gerbera/template | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/srcpkgs/gerbera/template b/srcpkgs/gerbera/template
index 5e2da9c98da86b..20df4f404f5f55 100644
--- a/srcpkgs/gerbera/template
+++ b/srcpkgs/gerbera/template
@@ -1,20 +1,20 @@
 # Template file for 'gerbera'
 pkgname=gerbera
-version=1.12.1
-revision=2
+version=2.2.0
+revision=1
 build_style=cmake
 configure_args="-DWITH_SYSTEMD=0 -DWITH_AVCODEC=1"
 hostmakedepends="pkg-config"
 makedepends="duktape-devel expat-devel ffmpeg6-devel file-devel libcurl-devel
  libexif-devel libupnp-devel libuuid-devel sqlite-devel taglib-devel
- fmt-devel spdlog pugixml-devel libebml-devel libmatroska-devel"
+ fmt-devel spdlog pugixml-devel libebml-devel libmatroska-devel exiv2-devel"
 short_desc="UPnP Media Server based on MediaTomb"
 maintainer="Alexander Gehrke <void@qwertyuiop.de>"
 license="GPL-2.0-only"
 homepage="http://gerbera.io/"
 changelog="https://raw.githubusercontent.com/gerbera/gerbera/master/ChangeLog.md"
 distfiles="https://github.com/gerbera/gerbera/archive/v${version}.tar.gz"
-checksum=2144a7c4a13e8b43aa0c911fbeae65f05e2c42254ddd03be5c41f5fcf103a93c
+checksum=c77f4a8ccbed5e18499c0854803fec65ae2f26af633818b52584651fbd3eec13
 
 # libupnp uses large file support, so users must do that, too
 CXXFLAGS="-D_FILE_OFFSET_BITS=64"

From d934ca0bea5fd837f808b396036e3535802cedf3 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:09 +0200
Subject: [PATCH 14/27] gnuradio: rebuild for fmt-11.0.2

---
 ...70051c1c2b5fb6f2da8fb6422b27418c3dfa.patch | 47 +++++++++++++++++++
 srcpkgs/gnuradio/template                     |  2 +-
 2 files changed, 48 insertions(+), 1 deletion(-)
 create mode 100644 srcpkgs/gnuradio/patches/19b070051c1c2b5fb6f2da8fb6422b27418c3dfa.patch

diff --git a/srcpkgs/gnuradio/patches/19b070051c1c2b5fb6f2da8fb6422b27418c3dfa.patch b/srcpkgs/gnuradio/patches/19b070051c1c2b5fb6f2da8fb6422b27418c3dfa.patch
new file mode 100644
index 00000000000000..9de16700eac8f4
--- /dev/null
+++ b/srcpkgs/gnuradio/patches/19b070051c1c2b5fb6f2da8fb6422b27418c3dfa.patch
@@ -0,0 +1,47 @@
+From 19b070051c1c2b5fb6f2da8fb6422b27418c3dfa Mon Sep 17 00:00:00 2001
+From: Kefu Chai <tchaikov@gmail.com>
+Date: Mon, 15 Jul 2024 09:27:16 +0800
+Subject: [PATCH] blocks,runtime: io_signature: include spdlog/*/ranges.h for
+ using fmt::join()
+
+fmt::join() was moved into fmt/ranges.h since fmt 11, so let's
+include the corresponding header in spdlog for using it.
+
+Signed-off-by: Kefu Chai <tchaikov@gmail.com>
+---
+ gnuradio-runtime/lib/io_signature.cc | 5 +++++
+ gr-blocks/lib/message_debug_impl.cc  | 5 +++++
+ 2 files changed, 10 insertions(+)
+
+diff --git a/gnuradio-runtime/lib/io_signature.cc b/gnuradio-runtime/lib/io_signature.cc
+index 812f444f8bb..76bb2aba670 100644
+--- a/gnuradio-runtime/lib/io_signature.cc
++++ b/gnuradio-runtime/lib/io_signature.cc
+@@ -16,6 +16,11 @@
+ #include <spdlog/tweakme.h>
+ 
+ #include <spdlog/fmt/fmt.h>
++#if __has_include(<spdlog/fmt/ranges.h>)
++#include <spdlog/fmt/ranges.h>
++#elif __has_include(<spdlog/fmt/bundled/ranges.h>)
++#include <spdlog/fmt/bundled/ranges.h>
++#endif
+ #include <string_view>
+ #include <algorithm>
+ #include <memory>
+diff --git a/gr-blocks/lib/message_debug_impl.cc b/gr-blocks/lib/message_debug_impl.cc
+index 41d312e43c3..373287b02ab 100644
+--- a/gr-blocks/lib/message_debug_impl.cc
++++ b/gr-blocks/lib/message_debug_impl.cc
+@@ -19,6 +19,11 @@
+ #include <pmt/pmt.h>
+ #include <spdlog/common.h>
+ #include <spdlog/fmt/fmt.h>
++#if __has_include(<spdlog/fmt/ranges.h>)
++#include <spdlog/fmt/ranges.h>
++#elif __has_include(<spdlog/fmt/bundled/ranges.h>)
++#include <spdlog/fmt/bundled/ranges.h>
++#endif
+ #include <functional>
+ #include <utility>
+ #include <vector>
diff --git a/srcpkgs/gnuradio/template b/srcpkgs/gnuradio/template
index 88dd446a846d25..37aac47fd64fd8 100644
--- a/srcpkgs/gnuradio/template
+++ b/srcpkgs/gnuradio/template
@@ -1,7 +1,7 @@
 # Template file for 'gnuradio'
 pkgname=gnuradio
 version=3.10.10.0
-revision=2
+revision=3
 build_style=cmake
 build_helper="python3"
 conf_files="/etc/gnuradio/conf.d/*"

From 5443479b929de62448b849101689d81dcf9510ac Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:10 +0200
Subject: [PATCH 15/27] j4-dmenu-desktop: rebuild for fmt-11.0.2

---
 srcpkgs/j4-dmenu-desktop/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/j4-dmenu-desktop/template b/srcpkgs/j4-dmenu-desktop/template
index c352d51b0469f8..e5df41d8e7bc6f 100644
--- a/srcpkgs/j4-dmenu-desktop/template
+++ b/srcpkgs/j4-dmenu-desktop/template
@@ -1,7 +1,7 @@
 # Template file for 'j4-dmenu-desktop'
 pkgname=j4-dmenu-desktop
 version=3.1
-revision=1
+revision=2
 build_style=meson
 configure_args="-Denable-tests=false"
 hostmakedepends="pkg-config"

From d5a87907435d031e3ef4939e58dfd6b8d92df127 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:10 +0200
Subject: [PATCH 16/27] justbuild: rebuild for fmt-11.0.2

---
 srcpkgs/justbuild/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/justbuild/template b/srcpkgs/justbuild/template
index e5dfede6dd9506..63e8168cc22d42 100644
--- a/srcpkgs/justbuild/template
+++ b/srcpkgs/justbuild/template
@@ -1,7 +1,7 @@
 # Template file for 'justbuild'
 pkgname=justbuild
 version=1.3.2
-revision=1
+revision=2
 create_wrksrc=yes
 hostmakedepends="jo pandoc pkg-config python3 tar unzip wget grpc protobuf"
 makedepends="abseil-cpp-devel c-ares-devel catch2 fmt-devel grpc-devel json-c++

From 2a49e493fb8bd1bd7cfd0ce6d54ac5eca743a83f Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:10 +0200
Subject: [PATCH 17/27] kodi: rebuild for fmt-11.0.2

---
 srcpkgs/kodi/patches/pagesize.patch | 20 ++++++++++++++++++++
 srcpkgs/kodi/template               |  2 +-
 2 files changed, 21 insertions(+), 1 deletion(-)
 create mode 100644 srcpkgs/kodi/patches/pagesize.patch

diff --git a/srcpkgs/kodi/patches/pagesize.patch b/srcpkgs/kodi/patches/pagesize.patch
new file mode 100644
index 00000000000000..71f9baf2720ba6
--- /dev/null
+++ b/srcpkgs/kodi/patches/pagesize.patch
@@ -0,0 +1,20 @@
+--- a/xbmc/utils/UDMABufferObject.cpp	2024-04-06 04:29:22.000000000 +0200
++++ -	2024-09-07 20:00:02.010184618 +0200
+@@ -23,7 +23,7 @@
+ namespace
+ {
+ 
+-const auto PAGESIZE = getpagesize();
++const auto pagesize = getpagesize();
+ 
+ int RoundUp(int num, int factor)
+ {
+@@ -93,7 +93,7 @@
+ bool CUDMABufferObject::CreateBufferObject(uint64_t size)
+ {
+   // Must be rounded to the system page size
+-  m_size = RoundUp(size, PAGESIZE);
++  m_size = RoundUp(size, pagesize);
+ 
+   m_memfd = memfd_create("kodi", MFD_CLOEXEC | MFD_ALLOW_SEALING);
+   if (m_memfd < 0)
diff --git a/srcpkgs/kodi/template b/srcpkgs/kodi/template
index 6e94577ff2cfeb..066e4bfa7321cd 100644
--- a/srcpkgs/kodi/template
+++ b/srcpkgs/kodi/template
@@ -1,7 +1,7 @@
 # Template file for 'kodi'
 pkgname=kodi
 version=21.0
-revision=1
+revision=2
 _codename="Omega"
 _crossguid_ver="ca1bf4b810e2d188d04cb6286f957008ee1b7681"
 _dvdcss_ver="1.4.3-Next-Nexus-Alpha2-2"

From 24fed927bcd1fce1da526d0c365fd368040b15d0 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:10 +0200
Subject: [PATCH 18/27] mkvtoolnix: update to 87.0.

---
 srcpkgs/mkvtoolnix/template | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/srcpkgs/mkvtoolnix/template b/srcpkgs/mkvtoolnix/template
index a2fb9ba5cc9819..e72d5415267684 100644
--- a/srcpkgs/mkvtoolnix/template
+++ b/srcpkgs/mkvtoolnix/template
@@ -1,6 +1,6 @@
 # Template file for 'mkvtoolnix'
 pkgname=mkvtoolnix
-version=86.0
+version=87.0
 revision=1
 build_style=gnu-configure
 build_helper="qmake6"
@@ -16,7 +16,7 @@ license="GPL-2.0-only"
 homepage="https://mkvtoolnix.download"
 changelog="https://mkvtoolnix.download/doc/NEWS.md"
 distfiles="https://mkvtoolnix.download/sources/mkvtoolnix-${version}.tar.xz"
-checksum=29a9155fbba99f9074de2abcfbdc4e966ea38c16d9f6f547cf2d8d9a48152c97
+checksum=01cdfcbe01d9a771da4d475ed44d882a97695d08b6939684cebf56231bdee820
 
 if [ "$CROSS_BUILD" ]; then
 	configure_args+=" --with-boost=${XBPS_CROSS_BASE}/usr"

From e72330a4e7db11d0d66c7735960098d03d92269f Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:10 +0200
Subject: [PATCH 19/27] mpd: rebuild for fmt-11.0.2

---
 ...869715e3efca87942d79c3173a6b21a6925d.patch | 79 +++++++++++++++++++
 srcpkgs/mpd/template                          |  2 +-
 2 files changed, 80 insertions(+), 1 deletion(-)
 create mode 100644 srcpkgs/mpd/patches/1402869715e3efca87942d79c3173a6b21a6925d.patch

diff --git a/srcpkgs/mpd/patches/1402869715e3efca87942d79c3173a6b21a6925d.patch b/srcpkgs/mpd/patches/1402869715e3efca87942d79c3173a6b21a6925d.patch
new file mode 100644
index 00000000000000..f6d8c7d3376906
--- /dev/null
+++ b/srcpkgs/mpd/patches/1402869715e3efca87942d79c3173a6b21a6925d.patch
@@ -0,0 +1,79 @@
+From 1402869715e3efca87942d79c3173a6b21a6925d Mon Sep 17 00:00:00 2001
+From: Rudi Heitbaum <rudi@heitbaum.com>
+Date: Fri, 5 Jul 2024 14:27:45 +0000
+Subject: [PATCH] lib/fmt: support build with libfmt-11.0.0
+
+Upstream libfmt commit fmtlib/fmt@d707292
+now requires the format function to be const.
+
+Adjust the function prototype so it is const and can compile.
+
+Signed-off-by: Rudi Heitbaum <rudi@heitbaum.com>
+---
+ src/lib/ffmpeg/LibFmt.hxx            | 2 +-
+ src/lib/fmt/AudioFormatFormatter.hxx | 4 ++--
+ src/lib/fmt/ExceptionFormatter.hxx   | 2 +-
+ src/lib/fmt/PathFormatter.hxx        | 2 +-
+ 4 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/lib/ffmpeg/LibFmt.hxx b/src/lib/ffmpeg/LibFmt.hxx
+index aa068711f3..dee83ed2d5 100644
+--- a/src/lib/ffmpeg/LibFmt.hxx
++++ b/src/lib/ffmpeg/LibFmt.hxx
+@@ -13,7 +13,7 @@ template<>
+ struct fmt::formatter<AVSampleFormat> : formatter<string_view>
+ {
+ 	template<typename FormatContext>
+-	auto format(const AVSampleFormat format, FormatContext &ctx) {
++	auto format(const AVSampleFormat format, FormatContext &ctx) const {
+ 		const char *name = av_get_sample_fmt_name(format);
+ 		if (name == nullptr)
+ 			name = "?";
+diff --git a/src/lib/fmt/AudioFormatFormatter.hxx b/src/lib/fmt/AudioFormatFormatter.hxx
+index e0ffb62160..8da98efd41 100644
+--- a/src/lib/fmt/AudioFormatFormatter.hxx
++++ b/src/lib/fmt/AudioFormatFormatter.hxx
+@@ -13,7 +13,7 @@ template<>
+ struct fmt::formatter<SampleFormat> : formatter<string_view>
+ {
+ 	template<typename FormatContext>
+-	auto format(const SampleFormat format, FormatContext &ctx) {
++	auto format(const SampleFormat format, FormatContext &ctx) const {
+ 		return formatter<string_view>::format(sample_format_to_string(format),
+ 						      ctx);
+ 	}
+@@ -23,7 +23,7 @@ template<>
+ struct fmt::formatter<AudioFormat> : formatter<string_view>
+ {
+ 	template<typename FormatContext>
+-	auto format(const AudioFormat &af, FormatContext &ctx) {
++	auto format(const AudioFormat &af, FormatContext &ctx) const {
+ 		return formatter<string_view>::format(ToString(af).c_str(),
+ 						      ctx);
+ 	}
+diff --git a/src/lib/fmt/ExceptionFormatter.hxx b/src/lib/fmt/ExceptionFormatter.hxx
+index 3f342df672..f08b3bb228 100644
+--- a/src/lib/fmt/ExceptionFormatter.hxx
++++ b/src/lib/fmt/ExceptionFormatter.hxx
+@@ -12,7 +12,7 @@ template<>
+ struct fmt::formatter<std::exception_ptr> : formatter<string_view>
+ {
+ 	template<typename FormatContext>
+-	auto format(std::exception_ptr e, FormatContext &ctx) {
++	auto format(std::exception_ptr e, FormatContext &ctx) const {
+ 		return formatter<string_view>::format(GetFullMessage(e), ctx);
+ 	}
+ };
+diff --git a/src/lib/fmt/PathFormatter.hxx b/src/lib/fmt/PathFormatter.hxx
+index e5ae89dec5..add06df81b 100644
+--- a/src/lib/fmt/PathFormatter.hxx
++++ b/src/lib/fmt/PathFormatter.hxx
+@@ -13,7 +13,7 @@ template<std::convertible_to<Path> T>
+ struct fmt::formatter<T> : formatter<string_view>
+ {
+ 	template<typename FormatContext>
+-	auto format(Path path, FormatContext &ctx) {
++	auto format(Path path, FormatContext &ctx) const {
+ 		return formatter<string_view>::format(path.ToUTF8(), ctx);
+ 	}
+ };
diff --git a/srcpkgs/mpd/template b/srcpkgs/mpd/template
index 7e059ca3f78af5..1fb1c1762c3241 100644
--- a/srcpkgs/mpd/template
+++ b/srcpkgs/mpd/template
@@ -1,7 +1,7 @@
 # Template file for 'mpd'
 pkgname=mpd
 version=0.23.15
-revision=3
+revision=4
 build_style=meson
 configure_args="-Dopus=enabled -Dmikmod=enabled -Dneighbor=true
  -Dsoundcloud=enabled -Dpipe=true -Dtwolame=enabled -Dbzip2=enabled

From 545e431b62fe95ea053331808c844d41ffba9076 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:11 +0200
Subject: [PATCH 20/27] mtxclient: rebuild for fmt-11.0.2

---
 ...26c77123f805cff8b954909663eaed296558.patch | 46 +++++++++++++++++++
 srcpkgs/mtxclient/template                    |  2 +-
 2 files changed, 47 insertions(+), 1 deletion(-)
 create mode 100644 srcpkgs/mtxclient/patches/4a4726c77123f805cff8b954909663eaed296558.patch

diff --git a/srcpkgs/mtxclient/patches/4a4726c77123f805cff8b954909663eaed296558.patch b/srcpkgs/mtxclient/patches/4a4726c77123f805cff8b954909663eaed296558.patch
new file mode 100644
index 00000000000000..6f82aa274c383b
--- /dev/null
+++ b/srcpkgs/mtxclient/patches/4a4726c77123f805cff8b954909663eaed296558.patch
@@ -0,0 +1,46 @@
+From 4a4726c77123f805cff8b954909663eaed296558 Mon Sep 17 00:00:00 2001
+From: Kefu Chai <tchaikov@gmail.com>
+Date: Mon, 15 Jul 2024 11:35:09 +0800
+Subject: [PATCH] Fix build with fmt 11
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+fmt 11 enforces that fmt::formatter<..>::format() should be const.
+otherwise the tree does not build:
+
+```
+/usr/include/fmt/base.h:1392:29: error: passing ‘const fmt::v11::formatter<std::optional<mtx::http::ClientError> >’ as ‘this’ argument discards qualifiers [-fpermissive]
+ 1392 |     ctx.advance_to(cf.format(*static_cast<qualified_type*>(arg), ctx));
+      |                    ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+```
+
+so let's mark the `format()` with `const` specifier.
+
+Signed-off-by: Kefu Chai <tchaikov@gmail.com>
+---
+ include/mtxclient/http/errors.hpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/include/mtxclient/http/errors.hpp b/include/mtxclient/http/errors.hpp
+index 2d0e7a45..b99ff90e 100644
+--- a/include/mtxclient/http/errors.hpp
++++ b/include/mtxclient/http/errors.hpp
+@@ -87,7 +87,7 @@ struct fmt::formatter<mtx::http::ClientError>
+     // Formats the point p using the parsed format specification (presentation)
+     // stored in this formatter.
+     template<typename FormatContext>
+-    auto format(const mtx::http::ClientError &e, FormatContext &ctx) -> decltype(ctx.out())
++    auto format(const mtx::http::ClientError &e, FormatContext &ctx) const -> decltype(ctx.out())
+     {
+         // ctx.out() is an output iterator to write to.
+         bool prepend_comma = false;
+@@ -132,7 +132,7 @@ struct fmt::formatter<std::optional<mtx::http::ClientError>> : formatter<mtx::ht
+ {
+     // parse is inherited from formatter<string_view>.
+     template<typename FormatContext>
+-    auto format(std::optional<mtx::http::ClientError> c, FormatContext &ctx)
++    auto format(std::optional<mtx::http::ClientError> c, FormatContext &ctx) const
+     {
+         if (!c)
+             return fmt::format_to(ctx.out(), "(no error)");
diff --git a/srcpkgs/mtxclient/template b/srcpkgs/mtxclient/template
index 99d61932d3b56b..07e471e1753ca8 100644
--- a/srcpkgs/mtxclient/template
+++ b/srcpkgs/mtxclient/template
@@ -1,7 +1,7 @@
 # Template file for 'mtxclient'
 pkgname=mtxclient
 version=0.10.0
-revision=2
+revision=3
 build_style=cmake
 configure_args="-DBUILD_LIB_TESTS=OFF -DBUILD_LIB_EXAMPLES=OFF"
 hostmakedepends="pkg-config"

From e1e75542e2d5f54f116c9181cb71cd387bced206 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:11 +0200
Subject: [PATCH 21/27] nheko: rebuild for fmt-11.0.2

---
 ...8245275eeb0cfe4ed40bd62b97cebbce4861.patch | 48 +++++++++++++++++++
 srcpkgs/nheko/template                        |  2 +-
 2 files changed, 49 insertions(+), 1 deletion(-)
 create mode 100644 srcpkgs/nheko/patches/8ff28245275eeb0cfe4ed40bd62b97cebbce4861.patch

diff --git a/srcpkgs/nheko/patches/8ff28245275eeb0cfe4ed40bd62b97cebbce4861.patch b/srcpkgs/nheko/patches/8ff28245275eeb0cfe4ed40bd62b97cebbce4861.patch
new file mode 100644
index 00000000000000..65a3b87ed90682
--- /dev/null
+++ b/srcpkgs/nheko/patches/8ff28245275eeb0cfe4ed40bd62b97cebbce4861.patch
@@ -0,0 +1,48 @@
+From 8ff28245275eeb0cfe4ed40bd62b97cebbce4861 Mon Sep 17 00:00:00 2001
+From: Vitaly <vitaly@easycoding.org>
+Date: Tue, 16 Jul 2024 12:30:45 +0200
+Subject: [PATCH] Fixed build against fmt 11.
+
+---
+ src/RegisterPage.cpp                      | 2 ++
+ src/Utils.cpp                             | 1 +
+ src/encryption/DeviceVerificationFlow.cpp | 1 +
+ 3 files changed, 4 insertions(+)
+
+diff --git a/src/RegisterPage.cpp b/src/RegisterPage.cpp
+index 93e2cf1bb..562d2c82a 100644
+--- a/src/RegisterPage.cpp
++++ b/src/RegisterPage.cpp
+@@ -4,6 +4,8 @@
+ 
+ #include <set>
+ 
++#include <fmt/ranges.h>
++
+ #include <mtx/responses/common.hpp>
+ #include <mtx/responses/register.hpp>
+ #include <mtx/responses/version.hpp>
+diff --git a/src/Utils.cpp b/src/Utils.cpp
+index 3e7340f44..99d337c4d 100644
+--- a/src/Utils.cpp
++++ b/src/Utils.cpp
+@@ -26,6 +26,7 @@
+ #include <QWindow>
+ #include <QXmlStreamReader>
+ 
++#include <fmt/ranges.h>
+ #include <nlohmann/json.hpp>
+ 
+ #include <cmark.h>
+diff --git a/src/encryption/DeviceVerificationFlow.cpp b/src/encryption/DeviceVerificationFlow.cpp
+index cb595df0e..0757d88cb 100644
+--- a/src/encryption/DeviceVerificationFlow.cpp
++++ b/src/encryption/DeviceVerificationFlow.cpp
+@@ -9,6 +9,7 @@
+ #include <QDateTime>
+ #include <QTimer>
+ 
++#include <fmt/ranges.h>
+ #include <nlohmann/json.hpp>
+ 
+ #include "Cache.h"
diff --git a/srcpkgs/nheko/template b/srcpkgs/nheko/template
index 72ab2d3a1c69ed..9af55f3ec46d0e 100644
--- a/srcpkgs/nheko/template
+++ b/srcpkgs/nheko/template
@@ -1,7 +1,7 @@
 # Template file for 'nheko'
 pkgname=nheko
 version=0.12.0
-revision=2
+revision=3
 build_style=cmake
 hostmakedepends="qt6-base qt6-tools qt6-declarative-host-tools pkg-config asciidoc"
 makedepends="qt6-multimedia-devel qt6-svg-devel qt6-declarative-private-devel fmt-devel

From 2fcfc651b2202060c67b308b6a99b3550704ffaa Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:11 +0200
Subject: [PATCH 22/27] opendht: rebuild for fmt-11.0.2

---
 srcpkgs/opendht/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/opendht/template b/srcpkgs/opendht/template
index b18ada2e756011..f11babfddc8595 100644
--- a/srcpkgs/opendht/template
+++ b/srcpkgs/opendht/template
@@ -1,7 +1,7 @@
 # Template file for 'opendht'
 pkgname=opendht
 version=2.6.0.4
-revision=2
+revision=3
 build_style=cmake
 configure_args="-DOPENDHT_SYSTEMD=OFF -DOPENDHT_TOOLS=OFF
  -DOPENDHT_TESTS_NETWORK=OFF"

From df39f151f9304456f01e557a47aa68b292d8db74 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:11 +0200
Subject: [PATCH 23/27] paps: rebuild for fmt-11.0.2

---
 srcpkgs/paps/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/paps/template b/srcpkgs/paps/template
index 460daaaae5486d..71a802089a7c14 100644
--- a/srcpkgs/paps/template
+++ b/srcpkgs/paps/template
@@ -1,7 +1,7 @@
 # Template file for 'paps'
 pkgname=paps
 version=0.8.0
-revision=1
+revision=2
 build_style=meson
 hostmakedepends="pkg-config cmake"
 makedepends="fmt-devel freetype-devel pango-devel"

From 6762f8b9552c8de317421fc11465da23ed5bfa66 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:11 +0200
Subject: [PATCH 24/27] python3-syndom: rebuild for fmt-11.0.2

---
 srcpkgs/python3-syndom/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/python3-syndom/template b/srcpkgs/python3-syndom/template
index 2d1e037ddf3124..906c6a17c086ad 100644
--- a/srcpkgs/python3-syndom/template
+++ b/srcpkgs/python3-syndom/template
@@ -1,7 +1,7 @@
 # Template file for 'python3-syndom'
 pkgname=python3-syndom
 version=1.0
-revision=1
+revision=2
 build_style=meson
 hostmakedepends="pkg-config python3-pybind11"
 makedepends="fmt-devel libtidy5-devel pugixml-devel python3-pybind11"

From 6e4f73e771fa5fbed2dd158ef0fdf312aeff135f Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:11 +0200
Subject: [PATCH 25/27] spdlog: update to 1.14.1.

---
 common/shlibs           | 2 +-
 srcpkgs/spdlog/template | 5 +++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/common/shlibs b/common/shlibs
index 4a8397a0369657..32fd6477657de3 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -4212,7 +4212,7 @@ libwayland-client++.so.1 libwaylandpp-1.0.0_1
 libwayland-cursor++.so.1 libwaylandpp-1.0.0_1
 libwayland-egl++.so.1 libwaylandpp-1.0.0_1
 libwayland-client-extra++.so.1 libwaylandpp-1.0.0_1
-libspdlog.so.1.11 libspdlog-1.11.0_1
+libspdlog.so.1.14 libspdlog-1.14.1_1
 libmd.so.0 libmd-1.0.3_1
 libldacBT_abr.so.2 ldacBT-2.0.2.3_1
 libldacBT_enc.so.2 ldacBT-2.0.2.3_1
diff --git a/srcpkgs/spdlog/template b/srcpkgs/spdlog/template
index 045f86def2cc33..fb073f81fceca4 100644
--- a/srcpkgs/spdlog/template
+++ b/srcpkgs/spdlog/template
@@ -1,6 +1,6 @@
 # Template file for 'spdlog'
 pkgname=spdlog
-version=1.11.0
+version=1.14.1
 revision=1
 build_style=cmake
 configure_args="-DSPDLOG_BUILD_EXAMPLE=OFF -DSPDLOG_FMT_EXTERNAL=ON
@@ -13,10 +13,11 @@ maintainer="skmpz <dem.procopiou@gmail.com>"
 license="MIT"
 homepage="https://github.com/gabime/spdlog"
 distfiles="https://github.com/gabime/spdlog/archive/v${version}.tar.gz"
-checksum=ca5cae8d6cac15dae0ec63b21d6ad3530070650f68076f3a4a862ca293a858bb
+checksum=1586508029a7d0670dfcb2d97575dcdc242d3868a259742b69f100801ab4e16b
 
 if [ "$XBPS_CHECK_PKGS" ]; then
 	configure_args+=" -DSPDLOG_BUILD_TESTS_HO=ON"
+	hostmakedepends+=" catch2"
 fi
 
 libspdlog_package() {

From f87787d2a39d90d8edd11f49701de42f67b42ad5 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Sat, 7 Sep 2024 16:22:12 +0200
Subject: [PATCH 26/27] vtk: update to 9.3.1.

---
 common/shlibs                            | 220 +++++++++++------------
 srcpkgs/vtk/patches/01-vtkioss-fmt.patch |  59 ++++++
 srcpkgs/vtk/patches/02-vtkioss-fmt.patch |  23 +++
 srcpkgs/vtk/patches/gcc13.patch          |  13 --
 srcpkgs/vtk/patches/vtkioss-unistd.patch |   6 +-
 srcpkgs/vtk/template                     |   7 +-
 6 files changed, 199 insertions(+), 129 deletions(-)
 create mode 100644 srcpkgs/vtk/patches/01-vtkioss-fmt.patch
 create mode 100644 srcpkgs/vtk/patches/02-vtkioss-fmt.patch
 delete mode 100644 srcpkgs/vtk/patches/gcc13.patch

diff --git a/common/shlibs b/common/shlibs
index 32fd6477657de3..e76eafb4dc015c 100644
--- a/common/shlibs
+++ b/common/shlibs
@@ -3343,116 +3343,116 @@ libgnuradio-pdu.so.3.10.10 gnuradio-3.10.10.0_1
 libgnuradio-osmosdr.so.0.2.0 gnuradio-osmosdr-0.2.0_1
 libflann_cpp.so.1.9 flann-1.9.1_1
 libflann.so.1.9 flann-1.9.1_1
-libvtkCommonCore-9.2.so.1 vtk-9.2.2_1
-libvtksys-9.2.so.1 vtk-9.2.2_1
-libvtkCommonMisc-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingContext2D-9.2.so.1 vtk-9.2.2_1
-libvtkCommonTransforms-9.2.so.1 vtk-9.2.2_1
-libvtkCommonMath-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingLOD-9.2.so.1 vtk-9.2.2_1
-libvtkViewsInfovis-9.2.so.1 vtk-9.2.2_1
-libvtkIOIOSS-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingLabel-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersPoints-9.2.so.1 vtk-9.2.2_1
-libvtkCommonExecutionModel-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingHyperTreeGrid-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersGeometry-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersGeneral-9.2.so.1 vtk-9.2.2_1
-libvtkCommonDataModel-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersTopology-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersSources-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingVolumeOpenGL2-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingCore-9.2.so.1 vtk-9.2.2_1
-libvtkIOOggTheora-9.2.so.1 vtk-9.2.2_1
-libvtkIOExportGL2PS-9.2.so.1 vtk-9.2.2_1
-libvtkIOAMR-9.2.so.1 vtk-9.2.2_1
-libvtkIOCesium3DTiles-9.2.so.1 vtk-9.2.2_1
-libvtkIOSegY-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingVtkJS-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersTexture-9.2.so.1 vtk-9.2.2_1
-libvtkIOVideo-9.2.so.1 vtk-9.2.2_1
-libvtkImagingSources-9.2.so.1 vtk-9.2.2_1
-libvtkImagingStencil-9.2.so.1 vtk-9.2.2_1
-libvtkIOCGNSReader-9.2.so.1 vtk-9.2.2_1
-libvtkCommonComputationalGeometry-9.2.so.1 vtk-9.2.2_1
-libvtkIOVeraOut-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersHybrid-9.2.so.1 vtk-9.2.2_1
-libvtkInteractionImage-9.2.so.1 vtk-9.2.2_1
-libvtkChartsCore-9.2.so.1 vtk-9.2.2_1
-libvtkImagingStatistics-9.2.so.1 vtk-9.2.2_1
-libvtkImagingHybrid-9.2.so.1 vtk-9.2.2_1
-libvtkGeovisCore-9.2.so.1 vtk-9.2.2_1
-libvtkInteractionWidgets-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersImaging-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersVerdict-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersSMP-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingUI-9.2.so.1 vtk-9.2.2_1
-libvtkIOHDF-9.2.so.1 vtk-9.2.2_1
-libvtkCommonSystem-9.2.so.1 vtk-9.2.2_1
-libvtkImagingColor-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingSceneGraph-9.2.so.1 vtk-9.2.2_1
-libvtkParallelCore-9.2.so.1 vtk-9.2.2_1
-libvtkIOInfovis-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingOpenGL2-9.2.so.1 vtk-9.2.2_1
-libvtkImagingFourier-9.2.so.1 vtk-9.2.2_1
-libvtkCommonColor-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingAnnotation-9.2.so.1 vtk-9.2.2_1
-libvtkIOSQL-9.2.so.1 vtk-9.2.2_1
-libvtkIOImage-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersCore-9.2.so.1 vtk-9.2.2_1
-libvtkInfovisCore-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersExtraction-9.2.so.1 vtk-9.2.2_1
-libvtkIOGeometry-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersFlowPaths-9.2.so.1 vtk-9.2.2_1
-libvtkIOMovie-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingVolume-9.2.so.1 vtk-9.2.2_1
-libvtkIOEnSight-9.2.so.1 vtk-9.2.2_1
-libvtkDomainsChemistryOpenGL2-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersStatistics-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersSelection-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersModeling-9.2.so.1 vtk-9.2.2_1
-libvtkViewsCore-9.2.so.1 vtk-9.2.2_1
-libvtkIOMotionFX-9.2.so.1 vtk-9.2.2_1
-libvtkIOLSDyna-9.2.so.1 vtk-9.2.2_1
-libvtkIOParallel-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingContextOpenGL2-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingImage-9.2.so.1 vtk-9.2.2_1
-libvtkIOXMLParser-9.2.so.1 vtk-9.2.2_1
-libvtkImagingMorphological-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersParallel-9.2.so.1 vtk-9.2.2_1
-libvtkViewsContext2D-9.2.so.1 vtk-9.2.2_1
-libvtkIOImport-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingLICOpenGL2-9.2.so.1 vtk-9.2.2_1
-libvtkIOAsynchronous-9.2.so.1 vtk-9.2.2_1
-libvtkIOTecplotTable-9.2.so.1 vtk-9.2.2_1
-libvtkIOCityGML-9.2.so.1 vtk-9.2.2_1
-libvtkImagingMath-9.2.so.1 vtk-9.2.2_1
-libvtkIOParallelXML-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingGL2PSOpenGL2-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersGeneric-9.2.so.1 vtk-9.2.2_1
-libvtkIONetCDF-9.2.so.1 vtk-9.2.2_1
-libvtkImagingCore-9.2.so.1 vtk-9.2.2_1
-libvtkInfovisLayout-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersHyperTree-9.2.so.1 vtk-9.2.2_1
-libvtkIOExportPDF-9.2.so.1 vtk-9.2.2_1
-libvtkImagingGeneral-9.2.so.1 vtk-9.2.2_1
-libvtkIOXML-9.2.so.1 vtk-9.2.2_1
-libvtkIOChemistry-9.2.so.1 vtk-9.2.2_1
-libvtkInteractionStyle-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersAMR-9.2.so.1 vtk-9.2.2_1
-libvtkIOMINC-9.2.so.1 vtk-9.2.2_1
-libvtkTestingRendering-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersParallelImaging-9.2.so.1 vtk-9.2.2_1
-libvtkDomainsChemistry-9.2.so.1 vtk-9.2.2_1
-libvtkIOExport-9.2.so.1 vtk-9.2.2_1
-libvtkIOCore-9.2.so.1 vtk-9.2.2_1
-libvtkFiltersProgrammable-9.2.so.1 vtk-9.2.2_1
-libvtkIOCONVERGECFD-9.2.so.1 vtk-9.2.2_1
-libvtkIOLegacy-9.2.so.1 vtk-9.2.2_1
-libvtkRenderingFreeType-9.2.so.1 vtk-9.2.2_1
-libvtkIOPLY-9.2.so.1 vtk-9.2.2_1
-libvtkIOExodus-9.2.so.1 vtk-9.2.2_1
-libvtkkissfft-9.2.so.1 vtk-9.2.2_1
+libvtkCommonCore-9.3.so.1 vtk-9.3.2_1
+libvtksys-9.3.so.1 vtk-9.3.2_1
+libvtkCommonMisc-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingContext2D-9.3.so.1 vtk-9.3.2_1
+libvtkCommonTransforms-9.3.so.1 vtk-9.3.2_1
+libvtkCommonMath-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingLOD-9.3.so.1 vtk-9.3.2_1
+libvtkViewsInfovis-9.3.so.1 vtk-9.3.2_1
+libvtkIOIOSS-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingLabel-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersPoints-9.3.so.1 vtk-9.3.2_1
+libvtkCommonExecutionModel-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingHyperTreeGrid-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersGeometry-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersGeneral-9.3.so.1 vtk-9.3.2_1
+libvtkCommonDataModel-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersTopology-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersSources-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingVolumeOpenGL2-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingCore-9.3.so.1 vtk-9.3.2_1
+libvtkIOOggTheora-9.3.so.1 vtk-9.3.2_1
+libvtkIOExportGL2PS-9.3.so.1 vtk-9.3.2_1
+libvtkIOAMR-9.3.so.1 vtk-9.3.2_1
+libvtkIOCesium3DTiles-9.3.so.1 vtk-9.3.2_1
+libvtkIOSegY-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingVtkJS-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersTexture-9.3.so.1 vtk-9.3.2_1
+libvtkIOVideo-9.3.so.1 vtk-9.3.2_1
+libvtkImagingSources-9.3.so.1 vtk-9.3.2_1
+libvtkImagingStencil-9.3.so.1 vtk-9.3.2_1
+libvtkIOCGNSReader-9.3.so.1 vtk-9.3.2_1
+libvtkCommonComputationalGeometry-9.3.so.1 vtk-9.3.2_1
+libvtkIOVeraOut-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersHybrid-9.3.so.1 vtk-9.3.2_1
+libvtkInteractionImage-9.3.so.1 vtk-9.3.2_1
+libvtkChartsCore-9.3.so.1 vtk-9.3.2_1
+libvtkImagingStatistics-9.3.so.1 vtk-9.3.2_1
+libvtkImagingHybrid-9.3.so.1 vtk-9.3.2_1
+libvtkGeovisCore-9.3.so.1 vtk-9.3.2_1
+libvtkInteractionWidgets-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersImaging-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersVerdict-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersSMP-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingUI-9.3.so.1 vtk-9.3.2_1
+libvtkIOHDF-9.3.so.1 vtk-9.3.2_1
+libvtkCommonSystem-9.3.so.1 vtk-9.3.2_1
+libvtkImagingColor-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingSceneGraph-9.3.so.1 vtk-9.3.2_1
+libvtkParallelCore-9.3.so.1 vtk-9.3.2_1
+libvtkIOInfovis-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingOpenGL2-9.3.so.1 vtk-9.3.2_1
+libvtkImagingFourier-9.3.so.1 vtk-9.3.2_1
+libvtkCommonColor-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingAnnotation-9.3.so.1 vtk-9.3.2_1
+libvtkIOSQL-9.3.so.1 vtk-9.3.2_1
+libvtkIOImage-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersCore-9.3.so.1 vtk-9.3.2_1
+libvtkInfovisCore-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersExtraction-9.3.so.1 vtk-9.3.2_1
+libvtkIOGeometry-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersFlowPaths-9.3.so.1 vtk-9.3.2_1
+libvtkIOMovie-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingVolume-9.3.so.1 vtk-9.3.2_1
+libvtkIOEnSight-9.3.so.1 vtk-9.3.2_1
+libvtkDomainsChemistryOpenGL2-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersStatistics-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersSelection-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersModeling-9.3.so.1 vtk-9.3.2_1
+libvtkViewsCore-9.3.so.1 vtk-9.3.2_1
+libvtkIOMotionFX-9.3.so.1 vtk-9.3.2_1
+libvtkIOLSDyna-9.3.so.1 vtk-9.3.2_1
+libvtkIOParallel-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingContextOpenGL2-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingImage-9.3.so.1 vtk-9.3.2_1
+libvtkIOXMLParser-9.3.so.1 vtk-9.3.2_1
+libvtkImagingMorphological-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersParallel-9.3.so.1 vtk-9.3.2_1
+libvtkViewsContext2D-9.3.so.1 vtk-9.3.2_1
+libvtkIOImport-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingLICOpenGL2-9.3.so.1 vtk-9.3.2_1
+libvtkIOAsynchronous-9.3.so.1 vtk-9.3.2_1
+libvtkIOTecplotTable-9.3.so.1 vtk-9.3.2_1
+libvtkIOCityGML-9.3.so.1 vtk-9.3.2_1
+libvtkImagingMath-9.3.so.1 vtk-9.3.2_1
+libvtkIOParallelXML-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingGL2PSOpenGL2-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersGeneric-9.3.so.1 vtk-9.3.2_1
+libvtkIONetCDF-9.3.so.1 vtk-9.3.2_1
+libvtkImagingCore-9.3.so.1 vtk-9.3.2_1
+libvtkInfovisLayout-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersHyperTree-9.3.so.1 vtk-9.3.2_1
+libvtkIOExportPDF-9.3.so.1 vtk-9.3.2_1
+libvtkImagingGeneral-9.3.so.1 vtk-9.3.2_1
+libvtkIOXML-9.3.so.1 vtk-9.3.2_1
+libvtkIOChemistry-9.3.so.1 vtk-9.3.2_1
+libvtkInteractionStyle-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersAMR-9.3.so.1 vtk-9.3.2_1
+libvtkIOMINC-9.3.so.1 vtk-9.3.2_1
+libvtkTestingRendering-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersParallelImaging-9.3.so.1 vtk-9.3.2_1
+libvtkDomainsChemistry-9.3.so.1 vtk-9.3.2_1
+libvtkIOExport-9.3.so.1 vtk-9.3.2_1
+libvtkIOCore-9.3.so.1 vtk-9.3.2_1
+libvtkFiltersProgrammable-9.3.so.1 vtk-9.3.2_1
+libvtkIOCONVERGECFD-9.3.so.1 vtk-9.3.2_1
+libvtkIOLegacy-9.3.so.1 vtk-9.3.2_1
+libvtkRenderingFreeType-9.3.so.1 vtk-9.3.2_1
+libvtkIOPLY-9.3.so.1 vtk-9.3.2_1
+libvtkIOExodus-9.3.so.1 vtk-9.3.2_1
+libvtkkissfft-9.3.so.1 vtk-9.3.2_1
 libvolume_key.so.1 volume_key-0.3.9_1
 librand48_r.so.0 rand48_r-0.1_1
 libxxhash.so.0 libxxHash-0.6.5_2
diff --git a/srcpkgs/vtk/patches/01-vtkioss-fmt.patch b/srcpkgs/vtk/patches/01-vtkioss-fmt.patch
new file mode 100644
index 00000000000000..45c60721ae0862
--- /dev/null
+++ b/srcpkgs/vtk/patches/01-vtkioss-fmt.patch
@@ -0,0 +1,59 @@
+From ff6336d8ca857d6909987a82526cefdfd34aaf2c Mon Sep 17 00:00:00 2001
+From: Greg Sjaardema <gdsjaar@sandia.gov>
+Date: Tue, 2 Jan 2024 17:25:41 -0700
+Subject: [PATCH] FMT: Fixes for latest releast of lib::fmt
+
+---
+ ThirdParty/ioss/vtkioss/Ioss_IOFactory.C        | 1 +
+ ThirdParty/ioss/vtkioss/Ioss_StructuredBlock.C  | 1 +
+ ThirdParty/ioss/vtkioss/Ioss_Utils.C            | 1 +
+ ThirdParty/ioss/vtkioss/Ioss_ZoneConnectivity.C | 1 +
+ 15 files changed, 15 insertions(+)
+
+diff --git a/ThirdParty/ioss/vtkioss/Ioss_IOFactory.C b/ThirdParty/ioss/vtkioss/Ioss_IOFactory.C
+--- a/ThirdParty/ioss/vtkioss/Ioss_IOFactory.C
++++ b/ThirdParty/ioss/vtkioss/Ioss_IOFactory.C
+@@ -12,6 +12,7 @@
+ #include <cstddef> // for nullptr
+ #include "vtk_fmt.h"
+ #include VTK_FMT(fmt/ostream.h)
++#include VTK_FMT(fmt/ranges.h)
+ #include <map>     // for _Rb_tree_iterator, etc
+ #include <ostream> // for basic_ostream, etc
+ #include <set>
+diff --git a/ThirdParty/ioss/vtkioss/Ioss_StructuredBlock.C b/ThirdParty/ioss/vtkioss/Ioss_StructuredBlock.C
+index d650c38c84..581c21b158 100644
+--- a/ThirdParty/ioss/vtkioss/Ioss_StructuredBlock.C
++++ b/ThirdParty/ioss/vtkioss/Ioss_StructuredBlock.C
+@@ -15,6 +15,7 @@
+ #include <Ioss_StructuredBlock.h>
+ #include "vtk_fmt.h"
+ #include VTK_FMT(fmt/ostream.h)
++#include VTK_FMT(fmt/ranges.h)
+ 
+ #include <cstddef> // for size_t
+ #include <numeric>
+diff --git a/ThirdParty/ioss/vtkioss/Ioss_Utils.C b/ThirdParty/ioss/vtkioss/Ioss_Utils.C
+index effcfd6199..6e98057473 100644
+--- a/ThirdParty/ioss/vtkioss/Ioss_Utils.C
++++ b/ThirdParty/ioss/vtkioss/Ioss_Utils.C
+@@ -21,6 +21,7 @@
+ #include VTK_FMT(fmt/chrono.h)
+ #include VTK_FMT(fmt/format.h)
+ #include VTK_FMT(fmt/ostream.h)
++#include VTK_FMT(fmt/ranges.h)
+ #include <fstream>
+ #include <sstream>
+ #include <string>
+diff --git a/ThirdParty/ioss/vtkioss/Ioss_ZoneConnectivity.C b/ThirdParty/ioss/vtkioss/Ioss_ZoneConnectivity.C
+index edee536489..b0f9706b7c 100644
+--- a/ThirdParty/ioss/vtkioss/Ioss_ZoneConnectivity.C
++++ b/ThirdParty/ioss/vtkioss/Ioss_ZoneConnectivity.C
+@@ -9,6 +9,7 @@
+ #include <cstddef> // for size_t
+ #include "vtk_fmt.h"
+ #include VTK_FMT(fmt/ostream.h)
++#include VTK_FMT(fmt/ranges.h)
+ #include <string> // for string
+ #include <vector> // for vector
+ 
diff --git a/srcpkgs/vtk/patches/02-vtkioss-fmt.patch b/srcpkgs/vtk/patches/02-vtkioss-fmt.patch
new file mode 100644
index 00000000000000..b3070a1722908a
--- /dev/null
+++ b/srcpkgs/vtk/patches/02-vtkioss-fmt.patch
@@ -0,0 +1,23 @@
+From 80470e638859457c6bd2513dbc85a725b2bef78d Mon Sep 17 00:00:00 2001
+From: Greg Sjaardema <gdsjaar@sandia.gov>
+Date: Wed, 31 Jul 2024 07:38:40 -0600
+Subject: [PATCH] IOSS: Fix some misues of lib::fmt causing issues with C++20
+
+---
+ ThirdParty/ioss/vtkioss/Ioss_DatabaseIO.C | 7 ++-----
+ ThirdParty/ioss/vtkioss/Ioss_Utils.C      | 2 +-
+ 2 files changed, 3 insertions(+), 6 deletions(-)
+
+diff --git a/ThirdParty/ioss/vtkioss/Ioss_DatabaseIO.C b/ThirdParty/ioss/vtkioss/Ioss_DatabaseIO.C
+index 870140a1d2..f16b426753 100644
+--- a/ThirdParty/ioss/vtkioss/Ioss_DatabaseIO.C
++++ b/ThirdParty/ioss/vtkioss/Ioss_DatabaseIO.C
+@@ -1638,7 +1635,7 @@ namespace {
+       else {
+         char sep = (util.parallel_size() > 1) ? ':' : ' ';
+         for (auto &p_time : all_times) {
+-          fmt::print(strm, "{:8d}{}", p_time, sep);
++          fmt::print(strm, "{:8}{}", p_time, sep);
+         }
+       }
+       if (util.parallel_size() > 1) {
diff --git a/srcpkgs/vtk/patches/gcc13.patch b/srcpkgs/vtk/patches/gcc13.patch
deleted file mode 100644
index d0ba2017b70ca0..00000000000000
--- a/srcpkgs/vtk/patches/gcc13.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Source: https://src.fedoraproject.org/rpms/vtk/blob/1a12f28665b2f24537b98fcf4b3fb3a176fa7fba/f/vtk-include.patch
-
-diff -up VTK-9.2.5/IO/Image/vtkSEPReader.h.include VTK-9.2.5/IO/Image/vtkSEPReader.h
---- VTK-9.2.5/IO/Image/vtkSEPReader.h.include	2023-01-05 08:51:35.000000000 -0700
-+++ VTK-9.2.5/IO/Image/vtkSEPReader.h	2023-01-17 07:43:41.988095734 -0700
-@@ -26,6 +26,7 @@
- #include "vtkNew.h" // for ivars
- 
- #include <array>  // for std::array
-+#include <cstdint> // for std::uint8_t
- #include <string> // for std::string
- 
- namespace details
diff --git a/srcpkgs/vtk/patches/vtkioss-unistd.patch b/srcpkgs/vtk/patches/vtkioss-unistd.patch
index df43a1fe5bba9c..d07abb59fe5edd 100644
--- a/srcpkgs/vtk/patches/vtkioss-unistd.patch
+++ b/srcpkgs/vtk/patches/vtkioss-unistd.patch
@@ -11,9 +11,9 @@ index ca5f15de..99c2bbdd 100644
  #else
 -#include <sys/unistd.h>
 +#include <unistd.h>
- #endif
- 
- #ifdef SEACAS_HAVE_MPI
+ #if defined(__APPLE__) && defined(__MACH__)
+ #include <sys/param.h>
+ #include <sys/mount.h>
 @@ -35,9 +35,6 @@
  
  #include <cstdio>
diff --git a/srcpkgs/vtk/template b/srcpkgs/vtk/template
index 189591d55725a7..5d87abde765f37 100644
--- a/srcpkgs/vtk/template
+++ b/srcpkgs/vtk/template
@@ -1,7 +1,7 @@
 # Template file for 'vtk'
 pkgname=vtk
-version=9.2.6
-revision=3
+version=9.3.1
+revision=1
 build_style=cmake
 # vtk can be huge, especially with -DVTK_BUILD_ALL_MODULES=ON"
 # Build only the core modules plus python bindings for now
@@ -14,6 +14,7 @@ configure_args="-DBUILD_SHARED_LIBS=ON -DVTK_FORBID_DOWNLOADS=ON
  -DVTK_MODULE_USE_EXTERNAL_VTK_ioss=OFF
  -DVTK_MODULE_USE_EXTERNAL_VTK_cgns=OFF
  -DVTK_MODULE_USE_EXTERNAL_VTK_verdict=OFF
+ -DVTK_MODULE_USE_EXTERNAL_VTK_fast_float=OFF
  -DVTK_WRAP_PYTHON=ON -DVTK_PYTHON_VERSION=3"
 # vtk forks libharu, bumps to v2.4.0, and requires libharu>=2.4.0
 makedepends="zlib-devel freetype-devel liblz4-devel expat-devel MesaLib-devel
@@ -26,7 +27,7 @@ maintainer="Piraty <mail@piraty.dev>"
 license="BSD-3-Clause"
 homepage="https://www.vtk.org"
 distfiles="https://www.vtk.org/files/release/${version:0:3}/VTK-${version}.tar.gz"
-checksum=06fc8d49c4e56f498c40fcb38a563ed8d4ec31358d0101e8988f0bb4d539dd12
+checksum=8354ec084ea0d2dc3d23dbe4243823c4bfc270382d0ce8d658939fd50061cab8
 
 if [ "$XBPS_TARGET_LIBC" = "musl" ]; then
 	makedepends+=" libexecinfo-devel"

From cc8a6352421e8d3291e3c24605f1ce82e1e5d163 Mon Sep 17 00:00:00 2001
From: John <me@johnnynator.dev>
Date: Tue, 10 Sep 2024 22:45:12 +0200
Subject: [PATCH 27/27] imhex: rebuild for fmt-11.0.2

---
 srcpkgs/imhex/template | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/srcpkgs/imhex/template b/srcpkgs/imhex/template
index b10c948af3d79f..059b50da85b00f 100644
--- a/srcpkgs/imhex/template
+++ b/srcpkgs/imhex/template
@@ -1,7 +1,7 @@
 # Template file for 'imhex'
 pkgname=imhex
 version=1.35.4
-revision=2
+revision=3
 build_wrksrc="ImHex"
 build_style=cmake
 build_helper=qemu

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-09-11 18:34 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-09-07 21:24 [PR PATCH] fmt: update to 11.0.2 Johnnynator
2024-09-09 17:09 ` meator
2024-09-09 17:30 ` Calandracas606
2024-09-10 12:51 ` Johnnynator
2024-09-11 18:34 ` [PR PATCH] [Updated] " Johnnynator

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).