summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--recipes-extended/ceph/ceph/0001-common-fix-build-with-GCC-13-missing-cstdint-include.patch41
-rw-r--r--recipes-extended/ceph/ceph/0002-common-replace-BitVector-NoInitAllocator-with-wrappe.patch101
-rw-r--r--recipes-extended/ceph/ceph/0003-librdb-fix-build-with-gcc-13.patch30
-rw-r--r--recipes-extended/ceph/ceph_15.2.15.bb3
4 files changed, 175 insertions, 0 deletions
diff --git a/recipes-extended/ceph/ceph/0001-common-fix-build-with-GCC-13-missing-cstdint-include.patch b/recipes-extended/ceph/ceph/0001-common-fix-build-with-GCC-13-missing-cstdint-include.patch
new file mode 100644
index 00000000..b6ba82b6
--- /dev/null
+++ b/recipes-extended/ceph/ceph/0001-common-fix-build-with-GCC-13-missing-cstdint-include.patch
@@ -0,0 +1,41 @@
1From 59e6b44f7ed4020a860e347322acfdacc6e4560b Mon Sep 17 00:00:00 2001
2From: Sam James <sam@gentoo.org>
3Date: Fri, 28 Oct 2022 16:47:38 +0100
4Subject: [PATCH] common: fix build with GCC 13 (missing <cstdint> include)
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9Needed for uint8_t. Only worked by chance before (see
10https://www.gnu.org/software/gcc/gcc-13/porting_to.html).
11
12```
13FAILED: src/CMakeFiles/common-objs.dir/mds/FSMapUser.cc.o
14/usr/bin/x86_64-pc-linux-gnu-g++ -DBOOST_ASIO_DISABLE_THREAD_KEYWORD_EXTENSION -DHAVE_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -D_REENTRANT -D_THREAD_SAFE -D__CEPH__ -D__STDC_FORMAT_MACROS -D__linux__ -I/var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5_build/src/include -I/var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src -isystem /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5_build/include -isystem /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/xxHash -isystem /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/rapidjson/include -O2 -march=native -pipe -fPIC -U_FORTIFY_SOURCE -Wall -fno-strict-aliasing -fsigned-char -Wtype-limits -Wignored-qualifiers -Wpointer-arith -Werror=format-security -Winit-self -Wno-unknown-pragmas -Wnon-virtual-dtor -Wno-ignored-qualifiers -ftemplate-depth-1024 -Wpessimizing-move -Wredundant-move -Wstrict-null-sentinel -Woverloaded-virtual -fno-new-ttp-matching -fstack-protector-strong -fdiagnostics-color=auto -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free -std=c++17 -MD -MT src/CMakeFiles/common-objs.dir/mds/FSMapUser.cc.o -MF src/CMakeFiles/common-objs.dir/mds/FSMapUser.cc.o.d -o src/CMakeFiles/common-objs.dir/mds/FSMapUser.cc.o -c /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/mds/FSMapUser.cc
15In file included from /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/log/SubsystemMap.h:12,
16 from /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/common/config.h:23,
17 from /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/mds/mdstypes.h:13,
18 from /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/mds/FSMapUser.h:21,
19 from /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/mds/FSMapUser.cc:1:
20/var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/common/subsys_types.h:56:23: error: ‘uint8_t’ in namespace ‘std’ does not name a type; did you mean ‘wint_t’?
21```
22
23Bug: https://bugs.gentoo.org/878531
24Signed-off-by: Sam James <sam@gentoo.org>
25Upstream-Status: Backport [https://github.com/ceph/ceph/commit/74794f9d6f5c6671438085bdba730b504901a7c0]
26---
27 src/common/subsys_types.h | 1 +
28 1 file changed, 1 insertion(+)
29
30diff --git a/src/common/subsys_types.h b/src/common/subsys_types.h
31index 52171809..bd7cc439 100644
32--- a/src/common/subsys_types.h
33+++ b/src/common/subsys_types.h
34@@ -17,6 +17,7 @@
35
36 #include <algorithm>
37 #include <array>
38+#include <cstdint>
39
40 enum ceph_subsys_id_t {
41 ceph_subsys_, // default
diff --git a/recipes-extended/ceph/ceph/0002-common-replace-BitVector-NoInitAllocator-with-wrappe.patch b/recipes-extended/ceph/ceph/0002-common-replace-BitVector-NoInitAllocator-with-wrappe.patch
new file mode 100644
index 00000000..4f46d223
--- /dev/null
+++ b/recipes-extended/ceph/ceph/0002-common-replace-BitVector-NoInitAllocator-with-wrappe.patch
@@ -0,0 +1,101 @@
1From cca3144aca7f7c19772065421f9b02205a84e0b8 Mon Sep 17 00:00:00 2001
2From: Casey Bodley <cbodley@redhat.com>
3Date: Tue, 15 Feb 2022 18:27:10 -0500
4Subject: [PATCH] common: replace BitVector::NoInitAllocator with wrapper
5 struct
6
7in c++20, the deprecated `struct std::allocator<T>::rebind` template was
8removed, so `BitVector` no longer compiles. without a `rebind` to
9inherit, `std::allocator_traits<NoInitAllocator>::rebind_alloc<U>` was
10looking for `NoInitAllocator<U>`, but it isn't a template class
11
12further investigation found that in c++17, `vector<__u32, NoInitAllocator>`
13was rebinding this `NoInitAllocator` to `std::allocator<__u32>` and
14preventing the no-init optimization from taking effect
15
16instead of messing with the allocator to avoid zero-initialization, wrap
17each __u32 in a struct whose constructor does not initialize the value
18
19Fixes: https://tracker.ceph.com/issues/54279
20
21Signed-off-by: Casey Bodley <cbodley@redhat.com>
22---
23Fixes:
24http://errors.yoctoproject.org/Errors/Details/701862/
25
26Upstream-Status: Backport [https://github.com/ceph/ceph/commit/4f0ad8aab6b21a1fd57a7c1630d298e31b5d9bb6]
27
28 src/common/bit_vector.hpp | 27 +++++++++++----------------
29 1 file changed, 11 insertions(+), 16 deletions(-)
30
31diff --git a/src/common/bit_vector.hpp b/src/common/bit_vector.hpp
32index 10ee6c3e..9ce3e8b1 100644
33--- a/src/common/bit_vector.hpp
34+++ b/src/common/bit_vector.hpp
35@@ -223,23 +223,18 @@ public:
36
37 static void generate_test_instances(std::list<BitVector *> &o);
38 private:
39- struct NoInitAllocator : public std::allocator<__u32> {
40- NoInitAllocator() {}
41- NoInitAllocator(const std::allocator<__u32>& alloc)
42- : std::allocator<__u32>(alloc) {
43- }
44-
45- template <class U, class... Args>
46- void construct(U* p, Args&&... args) const {
47- }
48- };
49-
50 bufferlist m_data;
51 uint64_t m_size;
52 bool m_crc_enabled;
53
54 mutable __u32 m_header_crc;
55- mutable std::vector<__u32, NoInitAllocator> m_data_crcs;
56+
57+ // inhibit value-initialization when used in std::vector
58+ struct u32_struct {
59+ u32_struct() {}
60+ __u32 val;
61+ };
62+ mutable std::vector<u32_struct> m_data_crcs;
63
64 void resize(uint64_t elements, bool zero);
65
66@@ -351,7 +346,7 @@ void BitVector<_b>::encode_data(bufferlist& bl, uint64_t data_byte_offset,
67
68 bufferlist bit;
69 bit.substr_of(m_data, data_byte_offset, len);
70- m_data_crcs[data_byte_offset / BLOCK_SIZE] = bit.crc32c(0);
71+ m_data_crcs[data_byte_offset / BLOCK_SIZE].val = bit.crc32c(0);
72
73 bl.claim_append(bit);
74 data_byte_offset += BLOCK_SIZE;
75@@ -385,7 +380,7 @@ void BitVector<_b>::decode_data(bufferlist::const_iterator& it,
76 bufferlist bit;
77 bit.append(ptr);
78 if (m_crc_enabled &&
79- m_data_crcs[data_byte_offset / BLOCK_SIZE] != bit.crc32c(0)) {
80+ m_data_crcs[data_byte_offset / BLOCK_SIZE].val != bit.crc32c(0)) {
81 throw buffer::malformed_input("invalid data block CRC");
82 }
83 data.append(bit);
84@@ -499,7 +494,7 @@ void BitVector<_b>::encode_data_crcs(bufferlist& bl, uint64_t offset,
85 compute_index(offset + length - 1, &index, &shift);
86 uint64_t end_crc_index = index / BLOCK_SIZE;
87 while (crc_index <= end_crc_index) {
88- __u32 crc = m_data_crcs[crc_index++];
89+ __u32 crc = m_data_crcs[crc_index++].val;
90 ceph::encode(crc, bl);
91 }
92 }
93@@ -520,7 +515,7 @@ void BitVector<_b>::decode_data_crcs(bufferlist::const_iterator& it,
94 while (remaining > 0) {
95 __u32 crc;
96 ceph::decode(crc, it);
97- m_data_crcs[crc_index++] = crc;
98+ m_data_crcs[crc_index++].val = crc;
99 --remaining;
100 }
101 }
diff --git a/recipes-extended/ceph/ceph/0003-librdb-fix-build-with-gcc-13.patch b/recipes-extended/ceph/ceph/0003-librdb-fix-build-with-gcc-13.patch
new file mode 100644
index 00000000..c27d6f3e
--- /dev/null
+++ b/recipes-extended/ceph/ceph/0003-librdb-fix-build-with-gcc-13.patch
@@ -0,0 +1,30 @@
1From 937231991bd7e2cd578cf8cb6c1bedf611c5faef Mon Sep 17 00:00:00 2001
2From: Martin Jansa <Martin.Jansa@gmail.com>
3Date: Sat, 29 Apr 2023 13:47:43 +0200
4Subject: [PATCH] librdb: fix build with gcc-13
5
6* fixes:
7ceph-15.2.15/src/librbd/api/PoolMetadata.h:28:19: error: 'uint64_t' has not bee
8n declared
9ceph/15.2.15-r0/ceph-15.2.15/src/librbd/api/PoolMetadata.cc:133:5: error: no declaration matche
10s 'int librbd::api::PoolMetadata<ImageCtxT>::list(librados::v14_2_0::IoCtx&, const std::string&, uint64_t, std::map<std::__cxx11::basic_string<cha
11r>, ceph::buffer::v15_2_0::list>*)'
12
13Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
14Upstream-Status: Pending
15---
16 src/librbd/api/PoolMetadata.h | 1 +
17 1 file changed, 1 insertion(+)
18
19diff --git a/src/librbd/api/PoolMetadata.h b/src/librbd/api/PoolMetadata.h
20index c0a81735..69ab574a 100644
21--- a/src/librbd/api/PoolMetadata.h
22+++ b/src/librbd/api/PoolMetadata.h
23@@ -7,6 +7,7 @@
24 #include "include/buffer_fwd.h"
25 #include "include/rados/librados_fwd.hpp"
26
27+#include <cstdint>
28 #include <map>
29 #include <string>
30
diff --git a/recipes-extended/ceph/ceph_15.2.15.bb b/recipes-extended/ceph/ceph_15.2.15.bb
index 6312fd31..2c5cdf58 100644
--- a/recipes-extended/ceph/ceph_15.2.15.bb
+++ b/recipes-extended/ceph/ceph_15.2.15.bb
@@ -23,6 +23,9 @@ SRC_URI = "http://download.ceph.com/tarballs/ceph-${PV}.tar.gz \
23 file://0004-kv-rocksdb_cache-implement-methods-required-by-rocks.patch \ 23 file://0004-kv-rocksdb_cache-implement-methods-required-by-rocks.patch \
24 file://0005-kv-rocksdb_cache-mark-Shard-const.patch \ 24 file://0005-kv-rocksdb_cache-mark-Shard-const.patch \
25 file://0006-rocksdb-build-with-rocksdb-7.y.z.patch \ 25 file://0006-rocksdb-build-with-rocksdb-7.y.z.patch \
26 file://0001-common-fix-build-with-GCC-13-missing-cstdint-include.patch \
27 file://0002-common-replace-BitVector-NoInitAllocator-with-wrappe.patch \
28 file://0003-librdb-fix-build-with-gcc-13.patch \
26" 29"
27 30
28SRC_URI[sha256sum] = "5dccdaff2ebe18d435b32bfc06f8b5f474bf6ac0432a6a07d144b7c56700d0bf" 31SRC_URI[sha256sum] = "5dccdaff2ebe18d435b32bfc06f8b5f474bf6ac0432a6a07d144b7c56700d0bf"