diff --git a/.files b/.files
index 3e7e4f7..6e688b4 100644
Binary files a/.files and b/.files differ
diff --git a/.rev b/.rev
index 960dddf..36da0ca 100644
--- a/.rev
+++ b/.rev
@@ -77,4 +77,13 @@
1074356
+
+ 0868f4c3de4cf5f83b62f5d77f56ac1e
+ 0.0.26
+
+ anag+factory
+ - Add fix-fmt10-build.patch to fix build with libfmt 10.
+
+ 1131230
+
diff --git a/0ad.changes b/0ad.changes
index e2c6072..5864e44 100644
--- a/0ad.changes
+++ b/0ad.changes
@@ -1,4 +1,9 @@
-------------------------------------------------------------------
+Tue Dec 5 22:44:36 UTC 2023 - Aaron Puchert
+
+- Add fix-fmt10-build.patch to fix build with libfmt 10.
+
+-------------------------------------------------------------------
Sat Mar 25 20:11:43 UTC 2023 - Aaron Puchert
- Add fix-gcc13-build.patch to fix build with GCC 13.
diff --git a/0ad.spec b/0ad.spec
index 78b79b2..fb0e912 100644
--- a/0ad.spec
+++ b/0ad.spec
@@ -48,6 +48,8 @@ Patch2: PrepareZoneForGC.patch
Patch3: premake-no-automatic-rpath.patch
# PATCH-FIX-UPSTREAM -- Fix build with GCC 13
Patch4: fix-gcc13-build.patch
+# PATCH-FIX-UPSTREAM -- Fix build with fmt 10
+Patch5: fix-fmt10-build.patch
BuildRequires: cmake
BuildRequires: gcc-c++
BuildRequires: libXcursor-devel
@@ -100,6 +102,7 @@ flexible game engine.
%patch0 -p1
%patch3 -p1
%patch4 -p1
+%patch5 -p1
%if %{with system_mozjs}
%patch1 -p1
%patch2 -p1
diff --git a/fix-fmt10-build.patch b/fix-fmt10-build.patch
new file mode 100644
index 0000000..53834f0
--- /dev/null
+++ b/fix-fmt10-build.patch
@@ -0,0 +1,48 @@
+From 839edc3ae61cd313d37a14a9a24e2ef1bd4e5808 Mon Sep 17 00:00:00 2001
+From: Stan
+Date: Wed, 31 May 2023 12:03:04 +0000
+Subject: [PATCH] Fix the removal of implicit conversions in libfmt 10 by using
+ explicit casts. Patch by: @phosit Accepted by: @vladislavbelov Comments by:
+ @sera
+
+Differential Revision: https://code.wildfiregames.com/D4998
+
+git-svn-id: https://svn.wildfiregames.com/public/ps/trunk@27657 3db68df2-c116-0410-a063-a993310a9797
+---
+ source/network/NetMessage.cpp | 5 +++--
+ source/simulation2/serialization/BinarySerializer.cpp | 2 +-
+ 2 files changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/source/network/NetMessage.cpp b/source/network/NetMessage.cpp
+index 61126d8e1b0..9515d939ded 100644
+--- a/source/network/NetMessage.cpp
++++ b/source/network/NetMessage.cpp
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2017 Wildfire Games.
++/* Copyright (C) 2023 Wildfire Games.
+ * This file is part of 0 A.D.
+ *
+ * 0 A.D. is free software: you can redistribute it and/or modify
+@@ -216,7 +216,8 @@ 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(header.GetType()));
+ break;
+ }
+
+diff --git a/source/simulation2/serialization/BinarySerializer.cpp b/source/simulation2/serialization/BinarySerializer.cpp
+index c24b84bb2c1..4a6b57d7a99 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(arrayType));
+ throw PSERROR_Serialize_InvalidScriptValue();
+ }
+ }