commit:     45e9e1f3c75e104a04775d8f701aeb436ac0b893
Author:     Holger Hoffstätte <holger <AT> applied-asynchrony <DOT> com>
AuthorDate: Sat Jan 24 11:40:22 2026 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sun Jan 25 06:32:24 2026 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=45e9e1f3

dev-cpp/lucene++: fix build with boost-1.90

Closes: https://bugs.gentoo.org/969181
Signed-off-by: Holger Hoffstätte <holger <AT> applied-asynchrony.com>
Part-of: https://github.com/gentoo/gentoo/pull/45503
Closes: https://github.com/gentoo/gentoo/pull/45503
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../lucene++/files/lucene++-3.0.9-boost-1.90.patch | 486 +++++++++++++++++++++
 dev-cpp/lucene++/lucene++-3.0.9-r2.ebuild          |  54 +++
 2 files changed, 540 insertions(+)

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?=
+ <[email protected]>
+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?=
+ <[email protected]>
+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++/lucene++-3.0.9-r2.ebuild 
b/dev-cpp/lucene++/lucene++-3.0.9-r2.ebuild
new file mode 100644
index 000000000000..f92659fc7c3e
--- /dev/null
+++ b/dev-cpp/lucene++/lucene++-3.0.9-r2.ebuild
@@ -0,0 +1,54 @@
+# 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"
+)
+
+src_configure() {
+       # Can't be tested with LTO because of ODR issues in test mocks
+       filter-lto
+
+       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 \
+               --gtest_filter="-ParallelMultiSearcherTest*:SortTest.*:"
+}

Reply via email to