--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
X-Debbugs-Cc: ceph@packages.debian.org
Control: affects -1 + src:ceph
Please unblock package ceph
[ Reason ]
ceph-volume was broken, affected by #1104579.
[ Impact ]
Impossible to setup ceph for operators using ceph-volume.
[ Tests ]
I manually tested that the fix does what it claims.
[ Risks ]
No much risks, except a working ceph-volume.
[ Checklist ]
[x] all changes are documented in the d/changelog
[x] I reviewed all changes and I approve them
[x] attach debdiff against the package in testing
[ Other info ]
The attached debdiff also includes a fix to debian/source/options
to allow seemless builds using gbp buildpackage. This wasn't
updated when upgrading to 18.2.x since Daniel (my co-maintainer)
uses sbuild directly, and not gbp buildpackage like I do. This
has no consequence on the resulting binaries, but it helps me
(and potential contributors), so please allow it too.
unblock ceph/18.2.7-1
diff --git a/debian/changelog b/debian/changelog
index c4854757f2..2ac580bfa7 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+ceph (18.2.7-2) unstable; urgency=medium
+
+ * Add 0010-ceph-volume-fix-importlib.metadata-compat.patch
+ (Closes: #1104579).
+ * Fixed debian/source/options extend-diff-ignore.
+
+ -- Thomas Goirand <zigo@debian.org> Wed, 28 May 2025 11:19:02 +0200
+
ceph (18.2.7-1) sid; urgency=high
* Calling calc-max-parallel.sh silently in makefile to reduce visual
diff --git a/debian/patches/py313-compat/0010-ceph-volume-fix-importlib.metadata-compat.patch b/debian/patches/py313-compat/0010-ceph-volume-fix-importlib.metadata-compat.patch
new file mode 100644
index 0000000000..2d2bff622b
--- /dev/null
+++ b/debian/patches/py313-compat/0010-ceph-volume-fix-importlib.metadata-compat.patch
@@ -0,0 +1,34 @@
+Description: ceph-volume: fix importlib.metadata compat
+ The importlib.metadata library removed older shims in releases >5.0.0
+ where EntryPoints objects use .select() instead of dict-like access.
+ .
+ Fixes: https://tracker.ceph.com/issues/68032
+ .
+Author: Peter Sabaini <peter.sabaini@canonical.com>
+Date: Wed, 11 Sep 2024 16:56:50 +0200
+Signed-off-by: Peter Sabaini <peter.sabaini@canonical.com>
+Origin: upstream, https://patch-diff.githubusercontent.com/raw/ceph/ceph/pull/59739.patch
+Last-Update: 2025-05-28
+
+diff --git a/src/ceph-volume/ceph_volume/main.py b/src/ceph-volume/ceph_volume/main.py
+index f8eca65ec497c..4f27f429e89e2 100644
+--- a/src/ceph-volume/ceph_volume/main.py
++++ b/src/ceph-volume/ceph_volume/main.py
+@@ -11,8 +11,16 @@
+ from importlib.metadata import entry_points
+
+ def get_entry_points(group: str): # type: ignore
+- return entry_points().get(group, []) # type: ignore
++ eps = entry_points()
++ if hasattr(eps, 'select'):
++ # New importlib.metadata uses .select()
++ return eps.select(group=group)
++ else:
++ # Fallback to older EntryPoints that returns dicts
++ return eps.get(group, []) # type: ignore
++
+ except ImportError:
++ # Fallback to `pkg_resources` for older versions
+ from pkg_resources import iter_entry_points as entry_points # type: ignore
+
+ def get_entry_points(group: str): # type: ignore
diff --git a/debian/patches/series b/debian/patches/series
index 2fba4ae4e3..8d2ed4e4b6 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -37,3 +37,4 @@ py313-compat/0005-mgr-do-not-require-NOTIFY_TYPES-in-python-modules.patch
py313-compat/0007-mgr-stop-using-deprecated-API-to-initialize-Python.patch
py313-compat/0008-mgr-set-argv-for-python-in-PyModuleRegistry.patch
py313-compat/0009-mgr-add-site-package-paths-in-PyModuleRegistry.patch
+py313-compat/0010-ceph-volume-fix-importlib.metadata-compat.patch
diff --git a/debian/source/options b/debian/source/options
index d029bb02e6..854e19a179 100644
--- a/debian/source/options
+++ b/debian/source/options
@@ -1,11 +1,13 @@
-extend-diff-ignore = ".*src/rapidjson/thirdparty/gtest/googlemock/msvc/20\d\d/gmock\.sln"
-extend-diff-ignore = ".*src/rapidjson/thirdparty/gtest/googlemock/msvc/20\d\d/gmock.*vcproj"
-extend-diff-ignore = ".*src/rapidjson/thirdparty/gtest/googlemock/msvc/20\d\d/gmock.*vsprops"
-extend-diff-ignore = ".*src/rapidjson/thirdparty/gtest/googlemock/msvc/20\d\d/gmock.*vcxproj"
-extend-diff-ignore = ".*src/rapidjson/thirdparty/gtest/googlemock/msvc/20\d\d/gmock_config.props"
-extend-diff-ignore = ".*src/rapidjson/thirdparty/gtest/googletest/codegear/gtest.*\.cbproj"
-extend-diff-ignore = ".*src/rapidjson/thirdparty/gtest/googletest/codegear/gtest_all\.cc"
-extend-diff-ignore = ".*src/rapidjson/thirdparty/gtest/googletest/codegear/gtest_link\.cc"
-extend-diff-ignore = ".*src/rapidjson/thirdparty/gtest/googletest/codegear/gtest\.groupproj"
-extend-diff-ignore = ".*src/rapidjson/thirdparty/gtest/googletest/msvc/gtest.*\.vcproj"
-extend-diff-ignore = ".*src/rapidjson/thirdparty/gtest/googletest/msvc/gtest.*\.sln"
+extend-diff-ignore = ".*src/jaegertracing/opentelemetry-cpp/third_party/ms-gsl/tests/no_exception_ensure_tests.cpp"
+extend-diff-ignore = ".*src/jaegertracing/opentelemetry-cpp/third_party/ms-gsl/tests/span_ext_tests.cpp"
+extend-diff-ignore = ".*src/s3select/rapidjson/thirdparty/gtest/googlemock/msvc/20\d\d/gmock\.sln"
+extend-diff-ignore = ".*src/s3select/rapidjson/thirdparty/gtest/googlemock/msvc/20\d\d/gmock.*vcproj"
+extend-diff-ignore = ".*src/s3select/rapidjson/thirdparty/gtest/googlemock/msvc/20\d\d/gmock.*vsprops"
+extend-diff-ignore = ".*src/s3select/rapidjson/thirdparty/gtest/googlemock/msvc/20\d\d/gmock.*vcxproj"
+extend-diff-ignore = ".*src/s3select/rapidjson/thirdparty/gtest/googlemock/msvc/20\d\d/gmock_config.props"
+extend-diff-ignore = ".*src/s3select/rapidjson/thirdparty/gtest/googletest/codegear/gtest.*\.cbproj"
+extend-diff-ignore = ".*src/s3select/rapidjson/thirdparty/gtest/googletest/codegear/gtest_all\.cc"
+extend-diff-ignore = ".*src/s3select/rapidjson/thirdparty/gtest/googletest/codegear/gtest_link\.cc"
+extend-diff-ignore = ".*src/s3select/rapidjson/thirdparty/gtest/googletest/codegear/gtest\.groupproj"
+extend-diff-ignore = ".*src/s3select/rapidjson/thirdparty/gtest/googletest/msvc/gtest.*\.vcproj"
+extend-diff-ignore = ".*src/s3select/rapidjson/thirdparty/gtest/googletest/msvc/gtest.*\.sln"
--- End Message ---