diff options
| author | root <root@alpha.trunkmasters.com> | 2026-06-12 19:09:37 -0500 |
|---|---|---|
| committer | root <root@alpha.trunkmasters.com> | 2026-06-12 19:09:37 -0500 |
| commit | b590c8d7572b727d565cc0b8ff660d43569845de (patch) | |
| tree | 06f7a4102ea4e845df8b66660f252920d52952f9 /dev-cpp/lucene++ | |
| parent | 24f9cbfc4c34fdb6a6e03311674414e881ceab47 (diff) | |
| download | baldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.tar.gz baldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.tar.xz baldeagleos-repo-b590c8d7572b727d565cc0b8ff660d43569845de.zip | |
Adding metadata
Diffstat (limited to 'dev-cpp/lucene++')
17 files changed, 1453 insertions, 0 deletions
diff --git a/dev-cpp/lucene++/Manifest b/dev-cpp/lucene++/Manifest new file mode 100644 index 000000000000..2cb8154eec92 --- /dev/null +++ b/dev-cpp/lucene++/Manifest @@ -0,0 +1 @@ +DIST lucene++-3.0.9.tar.gz 2458287 BLAKE2B cbc6c32bd23525ad53fbcf500628f1806496d7f0575ee33baf0bc189d2ea5710334d07b23869e9b3b205bfa229400bc09c108ba6919e2b83bf0c6259e0a88564 SHA512 220fe1b46518018d176ae16434f03b1453fc345d8d552a294d1af927ea4ab69a83ee4b03c82938e648edaa3e7064526ca047fc86e1c71743b0958b520d59e225 diff --git a/dev-cpp/lucene++/files/lucene++-3.0.7-boost-1.85.patch b/dev-cpp/lucene++/files/lucene++-3.0.7-boost-1.85.patch new file mode 100644 index 000000000000..05babf97a08d --- /dev/null +++ b/dev-cpp/lucene++/files/lucene++-3.0.7-boost-1.85.patch @@ -0,0 +1,64 @@ +From c18ead2b0c4aa62af01450cb12353a0baa51411f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Bernhard=20Rosenkr=C3=A4nzer?= <bero@lindev.ch> +Date: Wed, 27 Mar 2024 12:00:18 +0100 +Subject: [PATCH] Fix build with boost 1.85.0 + +boost::filesystem::wpath has been deprecated (and typedef-ed to +boost::filesystem::path) for a long time; it is removed from boost +starting with 1.85.0-beta1. + +Use boost::filesystem::path instead. + +boost/filesystem/convenience.hpp has been removed (and was being +included without being used anyway - its only use was indirectly +pulling in boost/filesystem/directory.hpp, which is actually used). + +Include boost/filesystem/directory.hpp directly instead. +--- + src/core/store/MMapDirectory.cpp | 2 +- + src/core/util/FileUtils.cpp | 6 +++--- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/core/store/MMapDirectory.cpp b/src/core/store/MMapDirectory.cpp +index beac7828..46156e3a 100644 +--- a/src/core/store/MMapDirectory.cpp ++++ b/src/core/store/MMapDirectory.cpp +@@ -36,7 +36,7 @@ MMapIndexInput::MMapIndexInput(const String& path) { + bufferPosition = 0; + if (!path.empty()) { + try { +- file.open(boost::filesystem::wpath(path), _length); ++ file.open(boost::filesystem::path(path), _length); + } catch (...) { + boost::throw_exception(FileNotFoundException(path)); + } +diff --git a/src/core/util/FileUtils.cpp b/src/core/util/FileUtils.cpp +index 51508b57..d92efbb8 100644 +--- a/src/core/util/FileUtils.cpp ++++ b/src/core/util/FileUtils.cpp +@@ -5,9 +5,9 @@ + ///////////////////////////////////////////////////////////////////////////// + + #include "LuceneInc.h" +-#include <boost/filesystem/convenience.hpp> + #include <boost/filesystem/operations.hpp> + #include <boost/filesystem/path.hpp> ++#include <boost/filesystem/directory.hpp> + #include "LuceneThread.h" + #include "StringUtils.h" + #include "FileUtils.h" +@@ -128,12 +128,12 @@ String joinPath(const String& path, const String& file) { + } + + String extractPath(const String& path) { +- boost::filesystem::wpath parentPath(path.c_str()); ++ boost::filesystem::path parentPath(path.c_str()); + return parentPath.parent_path().wstring().c_str(); + } + + String extractFile(const String& path) { +- boost::filesystem::wpath fileName(path.c_str()); ++ boost::filesystem::path fileName(path.c_str()); + return fileName.filename().wstring().c_str(); + } + diff --git a/dev-cpp/lucene++/files/lucene++-3.0.9-boost-1.87.patch b/dev-cpp/lucene++/files/lucene++-3.0.9-boost-1.87.patch new file mode 100644 index 000000000000..8851e2a6749b --- /dev/null +++ b/dev-cpp/lucene++/files/lucene++-3.0.9-boost-1.87.patch @@ -0,0 +1,81 @@ +https://github.com/luceneplusplus/LucenePlusPlus/commit/e6a376836e5c891577eae6369263152106b9bc02 + +From e6a376836e5c891577eae6369263152106b9bc02 Mon Sep 17 00:00:00 2001 +From: Christian Heusel <christian@heusel.eu> +Date: Tue, 21 Jan 2025 01:01:58 +0100 +Subject: [PATCH] Migrate to boost::asio::io_context + +The code previously used the deprecated (and with bost 1.87.0 removed) +`boost::asio::io_service`, which used to be an alias to `io_context`. +The new version heavily changes the `io_context` API and therefore is no +the old interface was removed. + +Fixes https://github.com/luceneplusplus/LucenePlusPlus/issues/208 + +Signed-off-by: Christian Heusel <christian@heusel.eu> +--- + include/lucene++/ThreadPool.h | 10 ++++++---- + src/core/util/ThreadPool.cpp | 9 +++++---- + 2 files changed, 11 insertions(+), 8 deletions(-) + +diff --git a/include/lucene++/ThreadPool.h b/include/lucene++/ThreadPool.h +index dc6446ff..175ac8ad 100644 +--- a/include/lucene++/ThreadPool.h ++++ b/include/lucene++/ThreadPool.h +@@ -14,7 +14,9 @@ + + namespace Lucene { + +-typedef boost::shared_ptr<boost::asio::io_service::work> workPtr; ++ ++typedef boost::asio::io_context io_context_t; ++typedef boost::asio::executor_work_guard<io_context_t::executor_type> work_t; + + /// A Future represents the result of an asynchronous computation. Methods are provided to check if the computation + /// is complete, to wait for its completion, and to retrieve the result of the computation. The result can only be +@@ -51,8 +53,8 @@ class ThreadPool : public LuceneObject { + LUCENE_CLASS(ThreadPool); + + protected: +- boost::asio::io_service io_service; +- workPtr work; ++ io_context_t io_context; ++ work_t work; + boost::thread_group threadGroup; + + static const int32_t THREADPOOL_SIZE; +@@ -64,7 +66,7 @@ class ThreadPool : public LuceneObject { + template <typename FUNC> + FuturePtr scheduleTask(FUNC func) { + FuturePtr future(newInstance<Future>()); +- io_service.post(boost::bind(&ThreadPool::execute<FUNC>, this, func, future)); ++ boost::asio::post(io_context, boost::bind(&ThreadPool::execute<FUNC>, this, func, future)); + return future; + } + +diff --git a/src/core/util/ThreadPool.cpp b/src/core/util/ThreadPool.cpp +index 8086d8b1..116f521c 100644 +--- a/src/core/util/ThreadPool.cpp ++++ b/src/core/util/ThreadPool.cpp +@@ -14,15 +14,16 @@ Future::~Future() { + + const int32_t ThreadPool::THREADPOOL_SIZE = 5; + +-ThreadPool::ThreadPool() { +- work.reset(new boost::asio::io_service::work(io_service)); ++ThreadPool::ThreadPool() ++ : ++ work(boost::asio::make_work_guard(io_context)) ++{ + for (int32_t i = 0; i < THREADPOOL_SIZE; ++i) { +- threadGroup.create_thread(boost::bind(&boost::asio::io_service::run, &io_service)); ++ threadGroup.create_thread(boost::bind(&boost::asio::io_context::run, &io_context)); + } + } + + ThreadPool::~ThreadPool() { +- work.reset(); // stop all threads + threadGroup.join_all(); // wait for all competition + } + + diff --git a/dev-cpp/lucene++/files/lucene++-3.0.9-boost-1.89.patch b/dev-cpp/lucene++/files/lucene++-3.0.9-boost-1.89.patch new file mode 100644 index 000000000000..6ed4f4b4a03e --- /dev/null +++ b/dev-cpp/lucene++/files/lucene++-3.0.9-boost-1.89.patch @@ -0,0 +1,83 @@ +Bug: https://bugs.gentoo.org/963333 + +--- LucenePlusPlus-rel_3.0.9/cmake/dependencies.cmake ++++ LucenePlusPlus-rel_3.0.9-boost-1.89/cmake/dependencies.cmake +@@ -7,7 +7,6 @@ find_package(Boost COMPONENTS + filesystem + iostreams + regex +- system + thread + REQUIRED + ) +@@ -20,7 +19,6 @@ set(lucene_boost_libs + ${Boost_FILESYSTEM_LIBRARIES} + ${Boost_IOSTREAMS_LIBRARIES} + ${Boost_REGEX_LIBRARIES} +- ${Boost_SYSTEM_LIBRARIES} + ${Boost_THREAD_LIBRARIES} + ) + +--- LucenePlusPlus-rel_3.0.9/src/contrib/CMakeLists.txt ++++ LucenePlusPlus-rel_3.0.9-boost-1.89/src/contrib/CMakeLists.txt +@@ -67,7 +67,6 @@ target_link_libraries(lucene++-contrib + Boost::filesystem + Boost::iostreams + Boost::regex +- Boost::system + Boost::thread + ZLIB::ZLIB + lucene++::lucene++) +--- LucenePlusPlus-rel_3.0.9/src/core/CMakeLists.txt ++++ LucenePlusPlus-rel_3.0.9-boost-1.89/src/core/CMakeLists.txt +@@ -57,7 +57,6 @@ target_link_libraries(lucene++ + Boost::filesystem + Boost::iostreams + Boost::regex +- Boost::system + Boost::thread + ZLIB::ZLIB + ) +--- LucenePlusPlus-rel_3.0.9/src/demo/deletefiles/CMakeLists.txt ++++ LucenePlusPlus-rel_3.0.9-boost-1.89/src/demo/deletefiles/CMakeLists.txt +@@ -38,7 +38,6 @@ target_link_libraries(deletefiles + Boost::filesystem + Boost::iostreams + Boost::regex +- Boost::system + Boost::thread + ZLIB::ZLIB + lucene++::lucene++ +diff -rup LucenePlusPlus-rel_3.0.9/src/demo/indexfiles/CMakeLists.txt LucenePlusPlus-rel_3.0.9-boost-1.89/src/demo/indexfiles/CMakeLists.txt +--- LucenePlusPlus-rel_3.0.9/src/demo/indexfiles/CMakeLists.txt ++++ LucenePlusPlus-rel_3.0.9-boost-1.89/src/demo/indexfiles/CMakeLists.txt +@@ -39,7 +39,6 @@ target_link_libraries(indexfiles + Boost::filesystem + Boost::iostreams + Boost::regex +- Boost::system + Boost::thread + ZLIB::ZLIB + lucene++::lucene++ +diff -rup LucenePlusPlus-rel_3.0.9/src/demo/searchfiles/CMakeLists.txt LucenePlusPlus-rel_3.0.9-boost-1.89/src/demo/searchfiles/CMakeLists.txt +--- LucenePlusPlus-rel_3.0.9/src/demo/searchfiles/CMakeLists.txt ++++ LucenePlusPlus-rel_3.0.9-boost-1.89/src/demo/searchfiles/CMakeLists.txt +@@ -38,7 +38,6 @@ target_link_libraries(searchfiles + Boost::filesystem + Boost::iostreams + Boost::regex +- Boost::system + Boost::thread + ZLIB::ZLIB + lucene++::lucene++ +diff -rup LucenePlusPlus-rel_3.0.9/src/test/CMakeLists.txt LucenePlusPlus-rel_3.0.9-boost-1.89/src/test/CMakeLists.txt +--- LucenePlusPlus-rel_3.0.9/src/test/CMakeLists.txt ++++ LucenePlusPlus-rel_3.0.9-boost-1.89/src/test/CMakeLists.txt +@@ -59,7 +59,6 @@ target_link_libraries(lucene++-tester + Boost::filesystem + Boost::iostreams + Boost::regex +- Boost::system + Boost::thread + ZLIB::ZLIB + gtest_main diff --git a/dev-cpp/lucene++/files/lucene++-3.0.9-boost-1.90.patch b/dev-cpp/lucene++/files/lucene++-3.0.9-boost-1.90.patch new file mode 100644 index 000000000000..54ff53938980 --- /dev/null +++ b/dev-cpp/lucene++/files/lucene++-3.0.9-boost-1.90.patch @@ -0,0 +1,486 @@ +https://github.com/luceneplusplus/LucenePlusPlus/pull/222 +Bug: https://bugs.gentoo.org/969181 + +From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= + <congdanhqx@gmail.com> +Date: Fri, 5 Dec 2025 10:37:48 +0700 +Subject: [PATCH 1/2] BitSet: Partial fix for Boost 1.90 + +--- + include/lucene++/BitSet.h | 8 ++++- + src/core/util/BitSet.cpp | 72 ++++++++++++++++++++++++++++++++++++++- + 2 files changed, 78 insertions(+), 2 deletions(-) + +diff --git a/include/lucene++/BitSet.h b/include/lucene++/BitSet.h +index e06e6c7b..d07f12c5 100644 +--- a/include/lucene++/BitSet.h ++++ b/include/lucene++/BitSet.h +@@ -8,6 +8,7 @@ + #define BITSET_H + + #include <boost/dynamic_bitset.hpp> ++#include <boost/version.hpp> + #include "LuceneObject.h" + + namespace Lucene { +@@ -22,9 +23,14 @@ class LPPAPI BitSet : public LuceneObject { + protected: + typedef boost::dynamic_bitset<uint64_t> bitset_type; + bitset_type bitSet; ++#if BOOST_VERSION >= 109000 ++ typedef const bitset_type& get_bits_result; ++#else ++ typedef const uint64_t* get_bits_result; ++#endif + + public: +- const uint64_t* getBits(); ++ get_bits_result getBits(); + void clear(); + void clear(uint32_t bitIndex); + void fastClear(uint32_t bitIndex); +diff --git a/src/core/util/BitSet.cpp b/src/core/util/BitSet.cpp +index 6eb9d943..bff757bb 100644 +--- a/src/core/util/BitSet.cpp ++++ b/src/core/util/BitSet.cpp +@@ -7,6 +7,8 @@ + #include "LuceneInc.h" + #include "BitSet.h" + #include "BitUtil.h" ++#include <boost/version.hpp> ++#include <boost/iterator/function_output_iterator.hpp> + + namespace Lucene { + +@@ -16,8 +18,12 @@ BitSet::BitSet(uint32_t size) : bitSet(size) { + BitSet::~BitSet() { + } + +-const uint64_t* BitSet::getBits() { ++BitSet::get_bits_result BitSet::getBits() { ++#if BOOST_VERSION < 109000 + return bitSet.empty() ? NULL : static_cast<const uint64_t*>(&bitSet.m_bits[0]); ++#else ++ return bitSet; ++#endif + } + + void BitSet::clear() { +@@ -151,6 +157,11 @@ int32_t BitSet::nextSetBit(uint32_t fromIndex) const { + } + + void BitSet::_and(const BitSetPtr& set) { ++#if BOOST_VERSION >= 108900 ++ bitset_type other = set->bitSet; ++ other.resize(bitSet.size()); ++ bitSet &= other; ++#else + bitset_type::size_type minBlocks = std::min(bitSet.num_blocks(), set->bitSet.num_blocks()); + for (bitset_type::size_type i = 0; i < minBlocks; ++i) { + bitSet.m_bits[i] &= set->bitSet.m_bits[i]; +@@ -158,9 +169,20 @@ void BitSet::_and(const BitSetPtr& set) { + if (bitSet.num_blocks() > minBlocks) { + std::fill(bitSet.m_bits.begin() + minBlocks, bitSet.m_bits.end(), bitset_type::block_type(0)); + } ++#endif + } + + void BitSet::_or(const BitSetPtr& set) { ++#if BOOST_VERSION >= 108900 ++ if (set->bitSet.size() > bitSet.size()) { ++ resize(set->bitSet.size()); ++ bitSet |= set->bitSet; ++ } else { ++ bitset_type other = set->bitSet; ++ other.resize(bitSet.size()); ++ bitSet |= other; ++ } ++#else + bitset_type::size_type minBlocks = std::min(bitSet.num_blocks(), set->bitSet.num_blocks()); + if (set->bitSet.size() > bitSet.size()) { + resize(set->bitSet.size()); +@@ -171,9 +193,20 @@ void BitSet::_or(const BitSetPtr& set) { + if (bitSet.num_blocks() > minBlocks) { + std::copy(set->bitSet.m_bits.begin() + minBlocks, set->bitSet.m_bits.end(), bitSet.m_bits.begin() + minBlocks); + } ++#endif + } + + void BitSet::_xor(const BitSetPtr& set) { ++#if BOOST_VERSION >= 108900 ++ if (set->bitSet.size() > bitSet.size()) { ++ resize(set->bitSet.size()); ++ bitSet ^= set->bitSet; ++ } else { ++ bitset_type other = set->bitSet; ++ other.resize(bitSet.size()); ++ bitSet ^= other; ++ } ++#else + bitset_type::size_type minBlocks = std::min(bitSet.num_blocks(), set->bitSet.num_blocks()); + if (set->bitSet.size() > bitSet.size()) { + resize(set->bitSet.size()); +@@ -184,13 +217,20 @@ void BitSet::_xor(const BitSetPtr& set) { + if (bitSet.num_blocks() > minBlocks) { + std::copy(set->bitSet.m_bits.begin() + minBlocks, set->bitSet.m_bits.end(), bitSet.m_bits.begin() + minBlocks); + } ++#endif + } + + void BitSet::andNot(const BitSetPtr& set) { ++#if BOOST_VERSION >= 108900 ++ bitset_type other = set->bitSet; ++ other.resize(bitSet.size()); ++ bitSet &= other.flip(); ++#else + bitset_type::size_type minBlocks = std::min(bitSet.num_blocks(), set->bitSet.num_blocks()); + for (bitset_type::size_type i = 0; i < minBlocks; ++i) { + bitSet.m_bits[i] &= ~set->bitSet.m_bits[i]; + } ++#endif + } + + bool BitSet::intersectsBitSet(const BitSetPtr& set) const { +@@ -198,10 +238,17 @@ bool BitSet::intersectsBitSet(const BitSetPtr& set) const { + } + + uint32_t BitSet::cardinality() { ++#if BOOST_VERSION >= 108900 ++ return bitSet.count(); ++#else + return bitSet.num_blocks() == 0 ? 0 : (uint32_t)BitUtil::pop_array((int64_t*)getBits(), 0, bitSet.num_blocks()); ++#endif + } + + void BitSet::resize(uint32_t size) { ++#if BOOST_VERSION >= 108900 ++ bitSet.resize(size); ++#else + bitset_type::size_type old_num_blocks = bitSet.num_blocks(); + bitset_type::size_type required_blocks = bitSet.calc_num_blocks(size); + if (required_blocks != old_num_blocks) { +@@ -212,6 +259,7 @@ void BitSet::resize(uint32_t size) { + if (extra_bits != 0) { + bitSet.m_bits.back() &= ~(~static_cast<bitset_type::block_type>(0) << extra_bits); + } ++#endif + } + + bool BitSet::equals(const LuceneObjectPtr& other) { +@@ -224,6 +272,18 @@ bool BitSet::equals(const LuceneObjectPtr& other) { + } + BitSetPtr first = bitSet.num_blocks() < otherBitSet->bitSet.num_blocks() ? otherBitSet : shared_from_this(); + BitSetPtr second = bitSet.num_blocks() < otherBitSet->bitSet.num_blocks() ? shared_from_this() : otherBitSet; ++#if BOOST_VERSION >= 108900 ++ bitset_type::size_type f = first->bitSet.find_first(); ++ bitset_type::size_type s = second->bitSet.find_first(); ++ while (f == s) { ++ if (f == bitset_type::npos) { ++ return true; ++ } ++ f = first->bitSet.find_next(f); ++ s = second->bitSet.find_next(s); ++ } ++ return false; ++#else + bitset_type::size_type firstLength = first->bitSet.num_blocks(); + bitset_type::size_type secondLength = second->bitSet.num_blocks(); + for (bitset_type::size_type i = secondLength; i < firstLength; ++i) { +@@ -237,18 +297,28 @@ bool BitSet::equals(const LuceneObjectPtr& other) { + } + } + return true; ++#endif + } + + int32_t BitSet::hashCode() { + // Start with a zero hash and use a mix that results in zero if the input is zero. + // This effectively truncates trailing zeros without an explicit check. + int64_t hash = 0; ++#if BOOST_VERSION >= 108900 ++ to_block_range(bitSet, boost::make_function_output_iterator( ++ [&hash](bitset_type::block_type block) { ++ hash ^= block; ++ hash = (hash << 1) | (hash >> 63); // rotate left ++ } ++ )); ++#else + uint32_t maxSize = bitSet.num_blocks(); + const uint64_t* bits = getBits(); + for (uint32_t bit = 0; bit < maxSize; ++bit) { + hash ^= bits[bit]; + hash = (hash << 1) | (hash >> 63); // rotate left + } ++#endif + // Fold leftmost bits into right and add a constant to prevent empty sets from + // returning 0, which is too common. + return (int32_t)((hash >> 32) ^ hash) + 0x98761234; + +From 55a1238e23c0f98ff375acaf8bb4f6ebba9f2b72 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= + <congdanhqx@gmail.com> +Date: Fri, 5 Dec 2025 11:19:08 +0700 +Subject: [PATCH 2/2] BitSet: prefer builtin boost function + +--- + src/core/util/BitSet.cpp | 126 +++++++-------------------------------- + 1 file changed, 23 insertions(+), 103 deletions(-) + +diff --git a/src/core/util/BitSet.cpp b/src/core/util/BitSet.cpp +index bff757bb..c2fa941b 100644 +--- a/src/core/util/BitSet.cpp ++++ b/src/core/util/BitSet.cpp +@@ -41,16 +41,20 @@ void BitSet::fastClear(uint32_t bitIndex) { + } + + void BitSet::clear(uint32_t fromIndex, uint32_t toIndex) { ++#if BOOST_VERSION >= 106900 ++ fromIndex = std::min<bitset_type::size_type>(fromIndex, bitSet.size()); ++ toIndex = std::min<bitset_type::size_type>(toIndex, bitSet.size()); ++ bitSet.reset(fromIndex, toIndex - fromIndex); ++#else + toIndex = std::min(toIndex, (uint32_t)bitSet.size()); + for (bitset_type::size_type i = std::min(fromIndex, (uint32_t)bitSet.size()); i < toIndex; ++i) { + bitSet.set(i, false); + } ++#endif + } + + void BitSet::fastClear(uint32_t fromIndex, uint32_t toIndex) { +- for (bitset_type::size_type i = fromIndex; i < toIndex; ++i) { +- bitSet.set(i, false); +- } ++ fastSet(fromIndex, toIndex, false); + } + + void BitSet::set(uint32_t bitIndex) { +@@ -76,33 +80,28 @@ void BitSet::fastSet(uint32_t bitIndex, bool value) { + } + + void BitSet::set(uint32_t fromIndex, uint32_t toIndex) { +- if (toIndex >= bitSet.size()) { +- resize(toIndex + 1); +- } +- for (bitset_type::size_type i = fromIndex; i < toIndex; ++i) { +- bitSet.set(i, true); +- } ++ set(fromIndex, toIndex, true); + } + + void BitSet::fastSet(uint32_t fromIndex, uint32_t toIndex) { +- for (bitset_type::size_type i = fromIndex; i < toIndex; ++i) { +- bitSet.set(i, true); +- } ++ fastSet(fromIndex, toIndex, true); + } + + void BitSet::set(uint32_t fromIndex, uint32_t toIndex, bool value) { + if (toIndex >= bitSet.size()) { + resize(toIndex + 1); + } +- for (bitset_type::size_type i = fromIndex; i < toIndex; ++i) { +- bitSet.set(i, value); +- } ++ fastSet(fromIndex, toIndex, value); + } + + void BitSet::fastSet(uint32_t fromIndex, uint32_t toIndex, bool value) { ++#if BOOST_VERSION >= 106900 ++ bitSet.set(fromIndex, toIndex - fromIndex, value); ++#else + for (bitset_type::size_type i = fromIndex; i < toIndex; ++i) { + bitSet.set(i, value); + } ++#endif + } + + void BitSet::flip(uint32_t bitIndex) { +@@ -120,15 +119,17 @@ void BitSet::flip(uint32_t fromIndex, uint32_t toIndex) { + if (toIndex >= bitSet.size()) { + resize(toIndex + 1); + } +- for (bitset_type::size_type i = fromIndex; i < toIndex; ++i) { +- bitSet.flip(i); +- } ++ fastFlip(fromIndex, toIndex); + } + + void BitSet::fastFlip(uint32_t fromIndex, uint32_t toIndex) { ++#if BOOST_VERSION >= 106900 ++ bitSet.flip(fromIndex, toIndex - fromIndex); ++#else + for (bitset_type::size_type i = fromIndex; i < toIndex; ++i) { + bitSet.flip(i); + } ++#endif + } + + uint32_t BitSet::size() const { +@@ -152,28 +153,21 @@ bool BitSet::fastGet(uint32_t bitIndex) const { + } + + int32_t BitSet::nextSetBit(uint32_t fromIndex) const { ++#if BOOST_VERSION >= 108800 ++ return bitSet.find_first(fromIndex); ++#else + bitset_type::size_type next = fromIndex == 0 ? bitSet.find_first() : bitSet.find_next(fromIndex - 1); + return next == bitset_type::npos ? -1 : next; ++#endif + } + + void BitSet::_and(const BitSetPtr& set) { +-#if BOOST_VERSION >= 108900 + bitset_type other = set->bitSet; + other.resize(bitSet.size()); + bitSet &= other; +-#else +- bitset_type::size_type minBlocks = std::min(bitSet.num_blocks(), set->bitSet.num_blocks()); +- for (bitset_type::size_type i = 0; i < minBlocks; ++i) { +- bitSet.m_bits[i] &= set->bitSet.m_bits[i]; +- } +- if (bitSet.num_blocks() > minBlocks) { +- std::fill(bitSet.m_bits.begin() + minBlocks, bitSet.m_bits.end(), bitset_type::block_type(0)); +- } +-#endif + } + + void BitSet::_or(const BitSetPtr& set) { +-#if BOOST_VERSION >= 108900 + if (set->bitSet.size() > bitSet.size()) { + resize(set->bitSet.size()); + bitSet |= set->bitSet; +@@ -182,22 +176,9 @@ void BitSet::_or(const BitSetPtr& set) { + other.resize(bitSet.size()); + bitSet |= other; + } +-#else +- bitset_type::size_type minBlocks = std::min(bitSet.num_blocks(), set->bitSet.num_blocks()); +- if (set->bitSet.size() > bitSet.size()) { +- resize(set->bitSet.size()); +- } +- for (bitset_type::size_type i = 0; i < minBlocks; ++i) { +- bitSet.m_bits[i] |= set->bitSet.m_bits[i]; +- } +- if (bitSet.num_blocks() > minBlocks) { +- std::copy(set->bitSet.m_bits.begin() + minBlocks, set->bitSet.m_bits.end(), bitSet.m_bits.begin() + minBlocks); +- } +-#endif + } + + void BitSet::_xor(const BitSetPtr& set) { +-#if BOOST_VERSION >= 108900 + if (set->bitSet.size() > bitSet.size()) { + resize(set->bitSet.size()); + bitSet ^= set->bitSet; +@@ -206,31 +187,12 @@ void BitSet::_xor(const BitSetPtr& set) { + other.resize(bitSet.size()); + bitSet ^= other; + } +-#else +- bitset_type::size_type minBlocks = std::min(bitSet.num_blocks(), set->bitSet.num_blocks()); +- if (set->bitSet.size() > bitSet.size()) { +- resize(set->bitSet.size()); +- } +- for (bitset_type::size_type i = 0; i < minBlocks; ++i) { +- bitSet.m_bits[i] ^= set->bitSet.m_bits[i]; +- } +- if (bitSet.num_blocks() > minBlocks) { +- std::copy(set->bitSet.m_bits.begin() + minBlocks, set->bitSet.m_bits.end(), bitSet.m_bits.begin() + minBlocks); +- } +-#endif + } + + void BitSet::andNot(const BitSetPtr& set) { +-#if BOOST_VERSION >= 108900 + bitset_type other = set->bitSet; + other.resize(bitSet.size()); + bitSet &= other.flip(); +-#else +- bitset_type::size_type minBlocks = std::min(bitSet.num_blocks(), set->bitSet.num_blocks()); +- for (bitset_type::size_type i = 0; i < minBlocks; ++i) { +- bitSet.m_bits[i] &= ~set->bitSet.m_bits[i]; +- } +-#endif + } + + bool BitSet::intersectsBitSet(const BitSetPtr& set) const { +@@ -238,28 +200,11 @@ bool BitSet::intersectsBitSet(const BitSetPtr& set) const { + } + + uint32_t BitSet::cardinality() { +-#if BOOST_VERSION >= 108900 + return bitSet.count(); +-#else +- return bitSet.num_blocks() == 0 ? 0 : (uint32_t)BitUtil::pop_array((int64_t*)getBits(), 0, bitSet.num_blocks()); +-#endif + } + + void BitSet::resize(uint32_t size) { +-#if BOOST_VERSION >= 108900 + bitSet.resize(size); +-#else +- bitset_type::size_type old_num_blocks = bitSet.num_blocks(); +- bitset_type::size_type required_blocks = bitSet.calc_num_blocks(size); +- if (required_blocks != old_num_blocks) { +- bitSet.m_bits.resize(required_blocks, bitset_type::block_type(0)); +- } +- bitSet.m_num_bits = size; +- uint64_t extra_bits = static_cast<uint64_t>(bitSet.size() % bitSet.bits_per_block); +- if (extra_bits != 0) { +- bitSet.m_bits.back() &= ~(~static_cast<bitset_type::block_type>(0) << extra_bits); +- } +-#endif + } + + bool BitSet::equals(const LuceneObjectPtr& other) { +@@ -272,7 +217,6 @@ bool BitSet::equals(const LuceneObjectPtr& other) { + } + BitSetPtr first = bitSet.num_blocks() < otherBitSet->bitSet.num_blocks() ? otherBitSet : shared_from_this(); + BitSetPtr second = bitSet.num_blocks() < otherBitSet->bitSet.num_blocks() ? shared_from_this() : otherBitSet; +-#if BOOST_VERSION >= 108900 + bitset_type::size_type f = first->bitSet.find_first(); + bitset_type::size_type s = second->bitSet.find_first(); + while (f == s) { +@@ -283,42 +227,18 @@ bool BitSet::equals(const LuceneObjectPtr& other) { + s = second->bitSet.find_next(s); + } + return false; +-#else +- bitset_type::size_type firstLength = first->bitSet.num_blocks(); +- bitset_type::size_type secondLength = second->bitSet.num_blocks(); +- for (bitset_type::size_type i = secondLength; i < firstLength; ++i) { +- if (first->bitSet.m_bits[i] != 0) { +- return false; +- } +- } +- for (bitset_type::size_type i = 0; i < secondLength; ++i) { +- if (first->bitSet.m_bits[i] != second->bitSet.m_bits[i]) { +- return false; +- } +- } +- return true; +-#endif + } + + int32_t BitSet::hashCode() { + // Start with a zero hash and use a mix that results in zero if the input is zero. + // This effectively truncates trailing zeros without an explicit check. + int64_t hash = 0; +-#if BOOST_VERSION >= 108900 + to_block_range(bitSet, boost::make_function_output_iterator( + [&hash](bitset_type::block_type block) { + hash ^= block; + hash = (hash << 1) | (hash >> 63); // rotate left + } + )); +-#else +- uint32_t maxSize = bitSet.num_blocks(); +- const uint64_t* bits = getBits(); +- for (uint32_t bit = 0; bit < maxSize; ++bit) { +- hash ^= bits[bit]; +- hash = (hash << 1) | (hash >> 63); // rotate left +- } +-#endif + // Fold leftmost bits into right and add a constant to prevent empty sets from + // returning 0, which is too common. + return (int32_t)((hash >> 32) ^ hash) + 0x98761234; diff --git a/dev-cpp/lucene++/files/lucene++-3.0.9-boost-bind.patch b/dev-cpp/lucene++/files/lucene++-3.0.9-boost-bind.patch new file mode 100644 index 000000000000..691247f8d581 --- /dev/null +++ b/dev-cpp/lucene++/files/lucene++-3.0.9-boost-bind.patch @@ -0,0 +1,51 @@ +https://github.com/luceneplusplus/LucenePlusPlus/pull/223 + +From: rewine <luhongxu@deepin.org> +Date: Thu, 12 Feb 2026 10:33:33 +0800 +Subject: [PATCH] Fix Boost.Bind deprecation warnings with version compatibility + +Use conditional compilation to support both old and new Boost.Bind API: +- Boost >= 1.73.0: Use boost/bind/bind.hpp +- Boost < 1.73.0: Use boost/bind.hpp + +This approach maintains backward compatibility while fixing deprecation +warnings in newer Boost versions. +--- + src/core/search/ParallelMultiSearcher.cpp | 5 +++++ + src/core/util/ThreadPool.cpp | 6 ++++++ + 2 files changed, 11 insertions(+) + +diff --git a/src/core/search/ParallelMultiSearcher.cpp b/src/core/search/ParallelMultiSearcher.cpp +index f3bf4af0..1d00b612 100644 +--- a/src/core/search/ParallelMultiSearcher.cpp ++++ b/src/core/search/ParallelMultiSearcher.cpp +@@ -5,7 +5,12 @@ + ///////////////////////////////////////////////////////////////////////////// + + #include "LuceneInc.h" ++#include <boost/version.hpp> ++#if BOOST_VERSION >= 107300 // Boost 1.73.0+ ++#include <boost/bind/bind.hpp> ++#else + #include <boost/bind.hpp> ++#endif + #include <boost/bind/protect.hpp> + #include "ParallelMultiSearcher.h" + #include "_MultiSearcher.h" +diff --git a/src/core/util/ThreadPool.cpp b/src/core/util/ThreadPool.cpp +index 116f521c..ee6640b3 100644 +--- a/src/core/util/ThreadPool.cpp ++++ b/src/core/util/ThreadPool.cpp +@@ -5,6 +5,12 @@ + ///////////////////////////////////////////////////////////////////////////// + + #include "LuceneInc.h" ++#include <boost/version.hpp> ++#if BOOST_VERSION >= 107300 // Boost 1.73.0+ ++#include <boost/bind/bind.hpp> ++#else ++#include <boost/bind.hpp> ++#endif + #include "ThreadPool.h" + + namespace Lucene { diff --git a/dev-cpp/lucene++/files/lucene++-3.0.9-cmake4.patch b/dev-cpp/lucene++/files/lucene++-3.0.9-cmake4.patch new file mode 100644 index 000000000000..4e4805fc852d --- /dev/null +++ b/dev-cpp/lucene++/files/lucene++-3.0.9-cmake4.patch @@ -0,0 +1,62 @@ +From: https://github.com/luceneplusplus/LucenePlusPlus/pull/218 + +From: Gianfranco Costamagna <locutusofborg@debian.org> +Date: Mon, 8 Sep 2025 15:05:10 +0200 +Subject: [PATCH] Bump minimum required cmake version to 3.10, for new cmake 4 + compatibility fix + +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -2,7 +2,7 @@ + # init + #################################### + +-cmake_minimum_required(VERSION 3.5) ++cmake_minimum_required(VERSION 3.10) + + project(lucene++) + +--- a/cmake/cotire.cmake ++++ b/cmake/cotire.cmake +@@ -37,7 +37,7 @@ set(__COTIRE_INCLUDED TRUE) + if (NOT CMAKE_SCRIPT_MODE_FILE) + cmake_policy(PUSH) + endif() +-cmake_minimum_required(VERSION 2.8.12) ++cmake_minimum_required(VERSION 3.10) + if (NOT CMAKE_SCRIPT_MODE_FILE) + cmake_policy(POP) + endif() +--- a/src/test/gtest/CMakeLists.txt ++++ b/src/test/gtest/CMakeLists.txt +@@ -1,7 +1,7 @@ + # Note: CMake support is community-based. The maintainers do not use CMake + # internally. + +-cmake_minimum_required(VERSION 2.8.8) ++cmake_minimum_required(VERSION 3.10) + + if (POLICY CMP0048) + cmake_policy(SET CMP0048 NEW) +--- a/src/test/gtest/googlemock/CMakeLists.txt ++++ b/src/test/gtest/googlemock/CMakeLists.txt +@@ -42,7 +42,7 @@ else() + cmake_policy(SET CMP0048 NEW) + project(gmock VERSION ${GOOGLETEST_VERSION} LANGUAGES CXX C) + endif() +-cmake_minimum_required(VERSION 2.6.4) ++cmake_minimum_required(VERSION 3.10) + + if (COMMAND set_up_hermetic_build) + set_up_hermetic_build() +--- a/src/test/gtest/googletest/CMakeLists.txt ++++ b/src/test/gtest/googletest/CMakeLists.txt +@@ -53,7 +53,7 @@ else() + cmake_policy(SET CMP0048 NEW) + project(gtest VERSION ${GOOGLETEST_VERSION} LANGUAGES CXX C) + endif() +-cmake_minimum_required(VERSION 2.6.4) ++cmake_minimum_required(VERSION 3.10) + + if (POLICY CMP0063) # Visibility + cmake_policy(SET CMP0063 NEW) diff --git a/dev-cpp/lucene++/files/lucene++-3.0.9-gcc15.patch b/dev-cpp/lucene++/files/lucene++-3.0.9-gcc15.patch new file mode 100644 index 000000000000..44d935e8eb14 --- /dev/null +++ b/dev-cpp/lucene++/files/lucene++-3.0.9-gcc15.patch @@ -0,0 +1,32 @@ +From: https://github.com/luceneplusplus/LucenePlusPlus/pull/218 + +From: Gianfranco Costamagna <locutusofborg@debian.org> +Date: Mon, 8 Sep 2025 15:05:58 +0200 +Subject: [PATCH] Bump minimum std-version to 17, fixing FTBFS with new gcc-15 + and googletest + +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -47,7 +47,7 @@ include(dependencies) + include(Lucene++Docs) + + # Enable C++11 +-set(CMAKE_CXX_STANDARD 11) ++set(CMAKE_CXX_STANDARD 17) + set(CMAKE_CXX_STANDARD_REQUIRED ON) + + #################################### +--- a/src/test/gtest/CMakeLists.txt ++++ b/src/test/gtest/CMakeLists.txt +@@ -11,9 +11,9 @@ project(googletest-distribution) + set(GOOGLETEST_VERSION 1.10.0) + + if (CMAKE_VERSION VERSION_LESS "3.1") +- add_definitions(-std=c++11) ++ add_definitions(-std=c++17) + else() +- set(CMAKE_CXX_STANDARD 11) ++ set(CMAKE_CXX_STANDARD 17) + set(CMAKE_CXX_STANDARD_REQUIRED ON) + if(NOT CYGWIN) + set(CMAKE_CXX_EXTENSIONS OFF) diff --git a/dev-cpp/lucene++/files/lucene++-3.0.9-no-inline.patch b/dev-cpp/lucene++/files/lucene++-3.0.9-no-inline.patch new file mode 100644 index 000000000000..58b00b2295e1 --- /dev/null +++ b/dev-cpp/lucene++/files/lucene++-3.0.9-no-inline.patch @@ -0,0 +1,70 @@ +From https://github.com/luceneplusplus/LucenePlusPlus/pull/200 +Bug: https://bugs.gentoo.org/973146 +Pruned compiler errors to relevant lines. + +From: Gianfranco Costamagna <costamagnagianfranco@yahoo.it> +Date: Sat, 24 Feb 2024 21:26:58 +0100 +Subject: [PATCH] Update DefaultSimilarity.cpp + +This fixes a linker failure when building tests (lto related?) +https://launchpadlibrarian.net/715939877/buildlog_ubuntu-noble-amd64.lucene++_3.0.9-1_BUILDING.txt.gz +.. +/usr/bin/ld: /tmp/ccUJivoA.ltrans35.ltrans.o:(.data.rel.ro+0x558): undefined reference to `Lucene::DefaultSimilarity::queryNorm(double)' +/usr/bin/ld: /tmp/ccUJivoA.ltrans35.ltrans.o:(.data.rel.ro+0x568): undefined reference to `Lucene::DefaultSimilarity::sloppyFreq(int)' +/usr/bin/ld: /tmp/ccUJivoA.ltrans35.ltrans.o:(.data.rel.ro+0x570): undefined reference to `Lucene::DefaultSimilarity::tf(double)' +/usr/bin/ld: /tmp/ccUJivoA.ltrans35.ltrans.o:(.data.rel.ro+0x588): undefined reference to `Lucene::DefaultSimilarity::idf(int, int)' +/usr/bin/ld: /tmp/ccUJivoA.ltrans35.ltrans.o:(.data.rel.ro+0x590): undefined reference to `Lucene::DefaultSimilarity::coord(int, int)' +/usr/bin/ld: /tmp/ccUJivoA.ltrans72.ltrans.o:(.data.rel.ro+0x360): undefined reference to `Lucene::DefaultSimilarity::lengthNorm(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, int)' +.. +--- + src/core/search/DefaultSimilarity.cpp | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/src/core/search/DefaultSimilarity.cpp b/src/core/search/DefaultSimilarity.cpp +index c98f2d95..da4c3db2 100644 +--- a/src/core/search/DefaultSimilarity.cpp ++++ b/src/core/search/DefaultSimilarity.cpp +@@ -27,35 +27,35 @@ double DefaultSimilarity::computeNorm(const String& fieldName, const FieldInvert + return (state->getBoost() * lengthNorm(fieldName, numTerms)); + } + +-inline double DefaultSimilarity::lengthNorm(const String& fieldName, int32_t numTokens) { ++double DefaultSimilarity::lengthNorm(const String& fieldName, int32_t numTokens) { + return (double)(1.0 / std::sqrt((double)numTokens)); + } + +-inline double DefaultSimilarity::queryNorm(double sumOfSquaredWeights) { ++double DefaultSimilarity::queryNorm(double sumOfSquaredWeights) { + return (double)(1.0 / std::sqrt(sumOfSquaredWeights)); + } + +-inline double DefaultSimilarity::tf(double freq) { ++double DefaultSimilarity::tf(double freq) { + return (double)std::sqrt(freq); + } + +-inline double DefaultSimilarity::sloppyFreq(int32_t distance) { ++double DefaultSimilarity::sloppyFreq(int32_t distance) { + return (1.0 / (double)(distance + 1)); + } + +-inline double DefaultSimilarity::idf(int32_t docFreq, int32_t numDocs) { ++double DefaultSimilarity::idf(int32_t docFreq, int32_t numDocs) { + return (double)(std::log((double)numDocs / (double)(docFreq + 1)) + 1.0); + } + +-inline double DefaultSimilarity::coord(int32_t overlap, int32_t maxOverlap) { ++double DefaultSimilarity::coord(int32_t overlap, int32_t maxOverlap) { + return (double)overlap / (double)maxOverlap; + } + +-inline void DefaultSimilarity::setDiscountOverlaps(bool v) { ++void DefaultSimilarity::setDiscountOverlaps(bool v) { + discountOverlaps = v; + } + +-inline bool DefaultSimilarity::getDiscountOverlaps() { ++bool DefaultSimilarity::getDiscountOverlaps() { + return discountOverlaps; + } + diff --git a/dev-cpp/lucene++/files/lucene++-3.0.9-no-pch.patch b/dev-cpp/lucene++/files/lucene++-3.0.9-no-pch.patch new file mode 100644 index 000000000000..7db9599d2982 --- /dev/null +++ b/dev-cpp/lucene++/files/lucene++-3.0.9-no-pch.patch @@ -0,0 +1,51 @@ +Remove precompiled header support as per Gentoo QA policy. +Bug: https://bugs.gentoo.org/920845 + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 7ce313c..cb2e0c4 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -32,9 +32,6 @@ set(LIB_DESTINATION + set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") + include(options.cmake) + +-# pre-compiled headers support +-include(cotire) +- + # if setup using the Toolchain-llvm.cmake file, then use llvm... + if(ENABLE_LLVM) + include(Toolchain-llvm) +diff --git a/src/contrib/CMakeLists.txt b/src/contrib/CMakeLists.txt +index 7252b73..fa4bc1a 100644 +--- a/src/contrib/CMakeLists.txt ++++ b/src/contrib/CMakeLists.txt +@@ -89,8 +89,6 @@ set_target_properties(lucene++-contrib + VERSION ${lucene++_VERSION} + SOVERSION ${lucene++_SOVERSION}) + +-cotire(lucene++-contrib) +- + install(TARGETS lucene++-contrib + DESTINATION ${CMAKE_INSTALL_LIBDIR} + COMPONENT runtime) +diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt +index 657de54..564286d 100644 +--- a/src/core/CMakeLists.txt ++++ b/src/core/CMakeLists.txt +@@ -78,7 +78,6 @@ set_target_properties(lucene++ + VERSION ${lucene++_VERSION} + SOVERSION ${lucene++_SOVERSION}) + +-cotire(lucene++) + + + install(TARGETS lucene++ +diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt +index a5c1b28..2e9f574 100644 +--- a/src/test/CMakeLists.txt ++++ b/src/test/CMakeLists.txt +@@ -75,4 +75,3 @@ target_link_libraries(lucene++-tester + #################################### + target_compile_options(lucene++-tester PRIVATE -DLPP_EXPOSE_INTERNAL) + +-cotire(lucene++-tester) diff --git a/dev-cpp/lucene++/files/lucene++-3.0.9-odr-fixes.patch b/dev-cpp/lucene++/files/lucene++-3.0.9-odr-fixes.patch new file mode 100644 index 000000000000..6a63ab168297 --- /dev/null +++ b/dev-cpp/lucene++/files/lucene++-3.0.9-odr-fixes.patch @@ -0,0 +1,343 @@ +https://github.com/luceneplusplus/LucenePlusPlus/pull/226 + +diff --git a/src/test/index/AtomicUpdateTest.cpp b/src/test/index/AtomicUpdateTest.cpp +index 0535ee0..4dbbef8 100644 +--- a/src/test/index/AtomicUpdateTest.cpp ++++ b/src/test/index/AtomicUpdateTest.cpp +@@ -24,13 +24,13 @@ using namespace Lucene; + + typedef LuceneTestFixture AtomicUpdateTest; + +-class MockIndexWriter : public IndexWriter { ++class AUTMockIndexWriter : public IndexWriter { + public: +- MockIndexWriter(const DirectoryPtr& dir, const AnalyzerPtr& a, bool create, int32_t mfl) : IndexWriter(dir, a, create, mfl) { ++ AUTMockIndexWriter(const DirectoryPtr& dir, const AnalyzerPtr& a, bool create, int32_t mfl) : IndexWriter(dir, a, create, mfl) { + random = newLucene<Random>(); + } + +- virtual ~MockIndexWriter() { ++ virtual ~AUTMockIndexWriter() { + } + + protected: +@@ -140,7 +140,7 @@ static void runTest(const DirectoryPtr& directory) { + Collection<AtomicTimedThreadPtr> threads(Collection<AtomicTimedThreadPtr>::newInstance(4)); + AnalyzerPtr analyzer = newLucene<SimpleAnalyzer>(); + +- IndexWriterPtr writer = newLucene<MockIndexWriter>(directory, analyzer, true, IndexWriter::MaxFieldLengthUNLIMITED); ++ IndexWriterPtr writer = newLucene<AUTMockIndexWriter>(directory, analyzer, true, IndexWriter::MaxFieldLengthUNLIMITED); + + writer->setMaxBufferedDocs(7); + writer->setMergeFactor(3); +diff --git a/src/test/index/IndexReaderCloneNormsTest.cpp b/src/test/index/IndexReaderCloneNormsTest.cpp +index cdd213f..2deab71 100644 +--- a/src/test/index/IndexReaderCloneNormsTest.cpp ++++ b/src/test/index/IndexReaderCloneNormsTest.cpp +@@ -22,9 +22,9 @@ + + using namespace Lucene; + +-class SimilarityOne : public DefaultSimilarity { ++class IRCNTSimilarityOne : public DefaultSimilarity { + public: +- virtual ~SimilarityOne() { ++ virtual ~IRCNTSimilarityOne() { + } + + public: +@@ -36,7 +36,7 @@ public: + class IndexReaderCloneNormsTest : public LuceneTestFixture { + public: + IndexReaderCloneNormsTest() { +- similarityOne = newLucene<SimilarityOne>(); ++ similarityOne = newLucene<IRCNTSimilarityOne>(); + anlzr = newLucene<StandardAnalyzer>(LuceneVersion::LUCENE_CURRENT); + numDocNorms = 0; + lastNorm = 0.0; +diff --git a/src/test/index/IndexWriterExceptionsTest.cpp b/src/test/index/IndexWriterExceptionsTest.cpp +index ba05c4a..4e5ded3 100644 +--- a/src/test/index/IndexWriterExceptionsTest.cpp ++++ b/src/test/index/IndexWriterExceptionsTest.cpp +@@ -119,13 +119,13 @@ public: + } + }; + +-class MockIndexWriter : public IndexWriter { ++class IWETMockIndexWriter : public IndexWriter { + public: +- MockIndexWriter(const DirectoryPtr& dir, const AnalyzerPtr& a, bool create, int32_t mfl) : IndexWriter(dir, a, create, mfl) { ++ IWETMockIndexWriter(const DirectoryPtr& dir, const AnalyzerPtr& a, bool create, int32_t mfl) : IndexWriter(dir, a, create, mfl) { + this->r = newLucene<Random>(17); + } + +- virtual ~MockIndexWriter() { ++ virtual ~IWETMockIndexWriter() { + } + + protected: +@@ -142,7 +142,7 @@ public: + + TEST_F(IndexWriterExceptionsTest, testRandomExceptions) { + MockRAMDirectoryPtr dir = newLucene<MockRAMDirectory>(); +- IndexWriterPtr writer = newLucene<MockIndexWriter>(dir, newLucene<WhitespaceAnalyzer>(), true, IndexWriter::MaxFieldLengthLIMITED); ++ IndexWriterPtr writer = newLucene<IWETMockIndexWriter>(dir, newLucene<WhitespaceAnalyzer>(), true, IndexWriter::MaxFieldLengthLIMITED); + boost::dynamic_pointer_cast<ConcurrentMergeScheduler>(writer->getMergeScheduler())->setSuppressExceptions(); + + writer->setRAMBufferSizeMB(0.1); +@@ -174,7 +174,7 @@ TEST_F(IndexWriterExceptionsTest, testRandomExceptions) { + + TEST_F(IndexWriterExceptionsTest, testRandomExceptionsThreads) { + MockRAMDirectoryPtr dir = newLucene<MockRAMDirectory>(); +- IndexWriterPtr writer = newLucene<MockIndexWriter>(dir, newLucene<WhitespaceAnalyzer>(), true, IndexWriter::MaxFieldLengthLIMITED); ++ IndexWriterPtr writer = newLucene<IWETMockIndexWriter>(dir, newLucene<WhitespaceAnalyzer>(), true, IndexWriter::MaxFieldLengthLIMITED); + boost::dynamic_pointer_cast<ConcurrentMergeScheduler>(writer->getMergeScheduler())->setSuppressExceptions(); + + writer->setRAMBufferSizeMB(0.2); +diff --git a/src/test/index/NormsTest.cpp b/src/test/index/NormsTest.cpp +index 8212e3b..0321436 100644 +--- a/src/test/index/NormsTest.cpp ++++ b/src/test/index/NormsTest.cpp +@@ -18,12 +18,12 @@ + + using namespace Lucene; + +-class SimilarityOne : public DefaultSimilarity { ++class NTSimilarityOne : public DefaultSimilarity { + public: +- virtual ~SimilarityOne() { ++ virtual ~NTSimilarityOne() { + } + +- LUCENE_CLASS(SimilarityOne); ++ LUCENE_CLASS(NTSimilarityOne); + + public: + virtual double lengthNorm(const String& fieldName, int32_t numTokens) { +@@ -35,7 +35,7 @@ public: + class NormsTest : public LuceneTestFixture { + public: + NormsTest() { +- similarityOne = newLucene<SimilarityOne>(); ++ similarityOne = newLucene<NTSimilarityOne>(); + lastNorm = 0.0; + normDelta = 0.001; + numDocNorms = 0; +diff --git a/src/test/index/OmitTfTest.cpp b/src/test/index/OmitTfTest.cpp +index 618c1dd..0439215 100644 +--- a/src/test/index/OmitTfTest.cpp ++++ b/src/test/index/OmitTfTest.cpp +@@ -29,7 +29,7 @@ using namespace Lucene; + + typedef LuceneTestFixture OmitTfTest; + +-DECLARE_SHARED_PTR(CountingHitCollector) ++DECLARE_SHARED_PTR(OITCountingHitCollector) + + class SimpleIDFExplanation : public IDFExplanation { + public: +@@ -85,18 +85,18 @@ public: + } + }; + +-class CountingHitCollector : public Collector { ++class OITCountingHitCollector : public Collector { + public: +- CountingHitCollector() { ++ OITCountingHitCollector() { + count = 0; + sum = 0; + docBase = -1; + } + +- virtual ~CountingHitCollector() { ++ virtual ~OITCountingHitCollector() { + } + +- LUCENE_CLASS(CountingHitCollector); ++ LUCENE_CLASS(OITCountingHitCollector); + + public: + int32_t count; +@@ -306,7 +306,7 @@ TEST_F(OmitTfTest, testNoPrxFile) { + + namespace TestBasic { + +-class CountingHitCollectorQ1 : public CountingHitCollector { ++class CountingHitCollectorQ1 : public OITCountingHitCollector { + protected: + ScorerPtr scorer; + +@@ -317,11 +317,11 @@ public: + + virtual void collect(int32_t doc) { + EXPECT_EQ(scorer->score(), 1.0); +- CountingHitCollector::collect(doc); ++ OITCountingHitCollector::collect(doc); + } + }; + +-class CountingHitCollectorQ2 : public CountingHitCollector { ++class CountingHitCollectorQ2 : public OITCountingHitCollector { + protected: + ScorerPtr scorer; + +@@ -332,11 +332,11 @@ public: + + virtual void collect(int32_t doc) { + EXPECT_EQ(scorer->score(), 1.0 + (double)doc); +- CountingHitCollector::collect(doc); ++ OITCountingHitCollector::collect(doc); + } + }; + +-class CountingHitCollectorQ3 : public CountingHitCollector { ++class CountingHitCollectorQ3 : public OITCountingHitCollector { + protected: + ScorerPtr scorer; + +@@ -348,11 +348,11 @@ public: + virtual void collect(int32_t doc) { + EXPECT_EQ(scorer->score(), 1.0); + EXPECT_NE(doc % 2, 0); +- CountingHitCollector::collect(doc); ++ OITCountingHitCollector::collect(doc); + } + }; + +-class CountingHitCollectorQ4 : public CountingHitCollector { ++class CountingHitCollectorQ4 : public OITCountingHitCollector { + protected: + ScorerPtr scorer; + +@@ -364,7 +364,7 @@ public: + virtual void collect(int32_t doc) { + EXPECT_EQ(scorer->score(), 1.0); + EXPECT_EQ(doc % 2, 0); +- CountingHitCollector::collect(doc); ++ OITCountingHitCollector::collect(doc); + } + }; + +@@ -424,7 +424,7 @@ TEST_F(OmitTfTest, testBasic) { + bq->add(q1, BooleanClause::MUST); + bq->add(q4, BooleanClause::MUST); + +- CountingHitCollectorPtr collector = newLucene<CountingHitCollector>(); ++ OITCountingHitCollectorPtr collector = newLucene<OITCountingHitCollector>(); + + searcher->search(bq, collector); + EXPECT_EQ(15, collector->count); +diff --git a/src/test/search/ScorerPerfTest.cpp b/src/test/search/ScorerPerfTest.cpp +index 9612c31..0ec1253 100644 +--- a/src/test/search/ScorerPerfTest.cpp ++++ b/src/test/search/ScorerPerfTest.cpp +@@ -21,18 +21,18 @@ + + using namespace Lucene; + +-DECLARE_SHARED_PTR(CountingHitCollector) ++DECLARE_SHARED_PTR(SPTCountingHitCollector) + DECLARE_SHARED_PTR(MatchingHitCollector) + +-class CountingHitCollector : public Collector { ++class SPTCountingHitCollector : public Collector { + public: +- CountingHitCollector() { ++ SPTCountingHitCollector() { + count = 0; + sum = 0; + docBase = 0; + } + +- virtual ~CountingHitCollector() { ++ virtual ~SPTCountingHitCollector() { + } + + public: +@@ -66,7 +66,7 @@ public: + } + }; + +-class MatchingHitCollector : public CountingHitCollector { ++class MatchingHitCollector : public SPTCountingHitCollector { + public: + MatchingHitCollector(const BitSetPtr& answer) { + this->answer = answer; +@@ -86,7 +86,7 @@ public: + if (pos != doc + docBase) { + boost::throw_exception(RuntimeException(L"Expected doc " + StringUtils::toString(pos) + L" but got " + StringUtils::toString(doc + docBase))); + } +- CountingHitCollector::collect(doc); ++ SPTCountingHitCollector::collect(doc); + } + }; + +@@ -160,7 +160,7 @@ public: + result = addClause(bq, result); + } + +- CountingHitCollectorPtr hc = newLucene<MatchingHitCollector>(result); ++ SPTCountingHitCollectorPtr hc = newLucene<MatchingHitCollector>(result); + s->search(bq, hc); + + EXPECT_EQ(result->cardinality(), hc->getCount()); +@@ -182,7 +182,7 @@ public: + oq->add(bq, BooleanClause::MUST); + } + +- CountingHitCollectorPtr hc = newLucene<MatchingHitCollector>(result); ++ SPTCountingHitCollectorPtr hc = newLucene<MatchingHitCollector>(result); + s->search(oq, hc); + + EXPECT_EQ(result->cardinality(), hc->getCount()); +diff --git a/src/test/store/BufferedIndexOutputTest.cpp b/src/test/store/BufferedIndexOutputTest.cpp +index 564a875..fd8490d 100644 +--- a/src/test/store/BufferedIndexOutputTest.cpp ++++ b/src/test/store/BufferedIndexOutputTest.cpp +@@ -97,9 +97,9 @@ TEST_F(BufferedIndexOutputTest, testWriteChars) { + + namespace TestCopyBytes { + +-class SourceIndexInput : public BufferedIndexInput { ++class BIOTSourceIndexInput : public BufferedIndexInput { + public: +- SourceIndexInput(const uint8_t* b, int32_t length) : inputBytes(b), inputLength(length), nextByte(0) { ++ BIOTSourceIndexInput(const uint8_t* b, int32_t length) : inputBytes(b), inputLength(length), nextByte(0) { + } + + virtual void readInternal(uint8_t* b, int32_t offset, int32_t length) { +@@ -129,7 +129,7 @@ protected: + TEST_F(BufferedIndexOutputTest, testCopyBytes) { + ByteArray sourceBytes(ByteArray::newInstance(32768)); + std::generate(sourceBytes.get(), sourceBytes.get() + 32768, rand); +- BufferedIndexInputPtr indexSource(newLucene<TestCopyBytes::SourceIndexInput>(sourceBytes.get(), 32768)); ++ BufferedIndexInputPtr indexSource(newLucene<TestCopyBytes::BIOTSourceIndexInput>(sourceBytes.get(), 32768)); + + ByteArray outputBytes(ByteArray::newInstance(32768)); + TestableBufferedIndexOutput indexOutput(outputBytes.get(), 32768); +diff --git a/src/test/store/IndexOutputTest.cpp b/src/test/store/IndexOutputTest.cpp +index 15ff86b..374da5e 100644 +--- a/src/test/store/IndexOutputTest.cpp ++++ b/src/test/store/IndexOutputTest.cpp +@@ -115,9 +115,9 @@ TEST_F(IndexOutputTest, testWriteChars) { + + namespace TestCopyBytes { + +-class SourceIndexInput : public IndexInput { ++class IOTSourceIndexInput : public IndexInput { + public: +- SourceIndexInput(const uint8_t* b, int32_t length) : inputBytes(b), inputLength(length), nextByte(0) { ++ IOTSourceIndexInput(const uint8_t* b, int32_t length) : inputBytes(b), inputLength(length), nextByte(0) { + } + + virtual uint8_t readByte() { +@@ -158,7 +158,7 @@ protected: + TEST_F(IndexOutputTest, testCopyBytes) { + ByteArray sourceBytes(ByteArray::newInstance(32768)); + std::generate(sourceBytes.get(), sourceBytes.get() + 32768, rand); +- IndexInputPtr indexSource(newLucene<TestCopyBytes::SourceIndexInput>(sourceBytes.get(), 32768)); ++ IndexInputPtr indexSource(newLucene<TestCopyBytes::IOTSourceIndexInput>(sourceBytes.get(), 32768)); + + ByteArray outputBytes(ByteArray::newInstance(32768)); + TestableIndexOutput indexOutput(outputBytes.get(), 32768); diff --git a/dev-cpp/lucene++/files/lucene++-3.0.9-pkgconfig.patch b/dev-cpp/lucene++/files/lucene++-3.0.9-pkgconfig.patch new file mode 100644 index 000000000000..36fea7bb60dd --- /dev/null +++ b/dev-cpp/lucene++/files/lucene++-3.0.9-pkgconfig.patch @@ -0,0 +1,24 @@ +https://github.com/luceneplusplus/LucenePlusPlus/commit/f40f59c6e169b4e16b7a6439ecb26a629c6540d1 + +From f40f59c6e169b4e16b7a6439ecb26a629c6540d1 Mon Sep 17 00:00:00 2001 +From: Sergey Fedorov <vital.had@gmail.com> +Date: Thu, 14 Mar 2024 20:37:34 +0800 +Subject: [PATCH] Fix install path for liblucene++.pc + +--- + src/config/core/CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/config/core/CMakeLists.txt b/src/config/core/CMakeLists.txt +index e5691f54..69cfefcc 100644 +--- a/src/config/core/CMakeLists.txt ++++ b/src/config/core/CMakeLists.txt +@@ -9,7 +9,7 @@ if(NOT WIN32) + install( + FILES + "${CMAKE_CURRENT_BINARY_DIR}/liblucene++.pc" +- DESTINATION "${LIB_DESTINATION}/pkgconfig") ++ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + endif() + + diff --git a/dev-cpp/lucene++/files/lucene++-3.0.9-system-gtest.patch b/dev-cpp/lucene++/files/lucene++-3.0.9-system-gtest.patch new file mode 100644 index 000000000000..11469a2c60fb --- /dev/null +++ b/dev-cpp/lucene++/files/lucene++-3.0.9-system-gtest.patch @@ -0,0 +1,21 @@ +From: https://github.com/luceneplusplus/LucenePlusPlus/pull/218 + +From: Gianfranco Costamagna <locutusofborg@debian.org> +Date: Mon, 8 Sep 2025 15:05:34 +0200 +Subject: [PATCH] Find and use system googletest if available + +--- a/src/test/CMakeLists.txt ++++ b/src/test/CMakeLists.txt +@@ -8,8 +8,10 @@ if(MSVC) + set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) + endif() + +-add_subdirectory(gtest) +- ++find_package(GTest) ++if(NOT GTEST_FOUND) ++ add_subdirectory(gtest) ++endif() + + #################################### + # src diff --git a/dev-cpp/lucene++/files/lucene++-3.0.9-tests-gtest-cstdint.patch b/dev-cpp/lucene++/files/lucene++-3.0.9-tests-gtest-cstdint.patch new file mode 100644 index 000000000000..02cb8956543e --- /dev/null +++ b/dev-cpp/lucene++/files/lucene++-3.0.9-tests-gtest-cstdint.patch @@ -0,0 +1,10 @@ +--- a/src/test/gtest/googletest/src/gtest-death-test.cc ++++ b/src/test/gtest/googletest/src/gtest-death-test.cc +@@ -32,6 +32,7 @@ + + #include "gtest/gtest-death-test.h" + ++#include <cstdint> + #include <utility> + + #include "gtest/internal/gtest-port.h" diff --git a/dev-cpp/lucene++/files/lucene++-3.0.9-threadpool-shutdown.patch b/dev-cpp/lucene++/files/lucene++-3.0.9-threadpool-shutdown.patch new file mode 100644 index 000000000000..c0f1ddb4e77a --- /dev/null +++ b/dev-cpp/lucene++/files/lucene++-3.0.9-threadpool-shutdown.patch @@ -0,0 +1,14 @@ +https://github.com/luceneplusplus/LucenePlusPlus/pull/227 + +diff --git a/src/core/util/ThreadPool.cpp b/src/core/util/ThreadPool.cpp +index ee6640b..38f4170 100644 +--- a/src/core/util/ThreadPool.cpp ++++ b/src/core/util/ThreadPool.cpp +@@ -30,6 +30,7 @@ ThreadPool::ThreadPool() + } + + ThreadPool::~ThreadPool() { ++ io_context.stop(); + threadGroup.join_all(); // wait for all competition + } + diff --git a/dev-cpp/lucene++/lucene++-3.0.9-r2.ebuild b/dev-cpp/lucene++/lucene++-3.0.9-r2.ebuild new file mode 100644 index 000000000000..0fc356701706 --- /dev/null +++ b/dev-cpp/lucene++/lucene++-3.0.9-r2.ebuild @@ -0,0 +1,55 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MY_P="LucenePlusPlus-rel_${PV}" +inherit edo cmake flag-o-matic + +DESCRIPTION="C++ port of Lucene library, a high-performance, full-featured text search engine" +HOMEPAGE="https://github.com/luceneplusplus/LucenePlusPlus" +SRC_URI="https://github.com/luceneplusplus/LucenePlusPlus/archive/rel_${PV}.tar.gz -> ${P}.tar.gz" +S="${WORKDIR}/${MY_P}" + +LICENSE="|| ( LGPL-3 Apache-2.0 )" +SLOT="0" +KEYWORDS="amd64 ~hppa ~loong ppc ppc64 ~sparc x86" +IUSE="debug test" +RESTRICT="!test? ( test )" + +DEPEND="dev-libs/boost:=[zlib]" +RDEPEND="${DEPEND}" +BDEPEND=" + test? ( dev-cpp/gtest ) +" + +PATCHES=( + "${FILESDIR}/${PN}-3.0.7-boost-1.85.patch" + "${FILESDIR}/${PN}-3.0.9-boost-1.87.patch" + "${FILESDIR}/${PN}-3.0.9-pkgconfig.patch" + "${FILESDIR}/${PN}-3.0.9-tests-gtest-cstdint.patch" + "${FILESDIR}/${PN}-3.0.9-cmake4.patch" + "${FILESDIR}/${PN}-3.0.9-system-gtest.patch" + "${FILESDIR}/${PN}-3.0.9-gcc15.patch" + "${FILESDIR}/${PN}-3.0.9-boost-1.89.patch" + "${FILESDIR}/${PN}-3.0.9-boost-1.90.patch" + "${FILESDIR}/${PN}-3.0.9-no-inline.patch" + "${FILESDIR}/${PN}-3.0.9-no-pch.patch" + "${FILESDIR}/${PN}-3.0.9-boost-bind.patch" + "${FILESDIR}/${PN}-3.0.9-odr-fixes.patch" + "${FILESDIR}/${PN}-3.0.9-threadpool-shutdown.patch" +) + +src_configure() { + local mycmakeargs=( + -DENABLE_DEMO=OFF + -DENABLE_TEST=$(usex test) + ) + + cmake_src_configure +} + +src_test() { + edo "${BUILD_DIR}"/src/test/lucene++-tester \ + --test_dir="${S}"/src/test/testfiles +} diff --git a/dev-cpp/lucene++/metadata.xml b/dev-cpp/lucene++/metadata.xml new file mode 100644 index 000000000000..5f33304011d5 --- /dev/null +++ b/dev-cpp/lucene++/metadata.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <origin>baldeagleos-repo</origin> +</pkgmetadata> |
