Subject: bug#73289: ceph 17.2.5 no longer installable

From: Yann Dupont <[email-masked]>
Date: Mon, 16 Sep 2024 09:36:47 +0200

here's the patch, I hope I didn't screw up, being notoriously good at it :-)

Please note: there's still a problem with the python-wcwidth module 
that's not found, but the problem existed before. My 1st fix didn't 
work, so I'll try again later.

diff --git a/gnu/packages/patches/ceph-fix-for-newer-boost.patch b/gnu/packages/patches/ceph-fix-for-newer-boost.patch
new file mode 100644
index 0000000000..9f133fcba5
--- /dev/null
+++ b/gnu/packages/patches/ceph-fix-for-newer-boost.patch
@@ -0,0 +1,48 @@
+--- a/src/rgw/rgw_asio_client.cc	1970-01-01 01:00:01.000000000 +0100
++++ b/src/rgw/rgw_asio_client.cc	2024-09-11 08:33:21.723548804 +0200
+@@ -39,11 +39,11 @@
+     const auto& value = header->value();
+ 
+     if (field == beast::http::field::content_length) {
+-      env.set("CONTENT_LENGTH", value.to_string());
++      env.set("CONTENT_LENGTH", std::string(value));
+       continue;
+     }
+     if (field == beast::http::field::content_type) {
+-      env.set("CONTENT_TYPE", value.to_string());
++      env.set("CONTENT_TYPE", std::string(value));
+       continue;
+     }
+ 
+@@ -62,26 +62,26 @@
+     }
+     *dest = '\0';
+ 
+-    env.set(buf, value.to_string());
++    env.set(buf, std::string(value));
+   }
+ 
+   int major = request.version() / 10;
+   int minor = request.version() % 10;
+   env.set("HTTP_VERSION", std::to_string(major) + '.' + std::to_string(minor));
+ 
+-  env.set("REQUEST_METHOD", request.method_string().to_string());
++  env.set("REQUEST_METHOD", std::string(request.method_string()));
+ 
+   // split uri from query
+   auto uri = request.target();
+   auto pos = uri.find('?');
+   if (pos != uri.npos) {
+     auto query = uri.substr(pos + 1);
+-    env.set("QUERY_STRING", query.to_string());
++    env.set("QUERY_STRING", std::string(query));
+     uri = uri.substr(0, pos);
+   }
+-  env.set("SCRIPT_URI", uri.to_string());
++  env.set("SCRIPT_URI", std::string(uri));
+ 
+-  env.set("REQUEST_URI", request.target().to_string());
++  env.set("REQUEST_URI", std::string(request.target()));
+ 
+   char port_buf[16];
+   snprintf(port_buf, sizeof(port_buf), "%d", local_endpoint.port());
diff --git a/gnu/packages/storage.scm b/gnu/packages/storage.scm
index ab7eb6102c..919b72736b 100644
--- a/gnu/packages/storage.scm
+++ b/gnu/packages/storage.scm
@@ -63,17 +63,18 @@ (define-module (gnu packages storage)
 (define-public ceph
   (package
     (name "ceph")
-    (version "17.2.5")
+    (version "17.2.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://download.ceph.com/tarballs/ceph-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "16mjj6cyrpdn49ig82mmrv984vqfdf24d6i4n9sghfli8z0nj8in"))
+                "1612424yrf39dz010ygz8k5x1vc8731549ckfj1r39dg00m62klp"))
               (patches
                (search-patches
-                "ceph-disable-cpu-optimizations.patch"))
+                "ceph-disable-cpu-optimizations.patch"
+                "ceph-fix-for-newer-boost.patch" ))
               (modules '((guix build utils)))
               (snippet
                '(for-each delete-file-recursively