summaryrefslogtreecommitdiff
path: root/dev-cpp
diff options
context:
space:
mode:
Diffstat (limited to 'dev-cpp')
-rw-r--r--dev-cpp/aws-crt-cpp/Manifest1
-rw-r--r--dev-cpp/aws-crt-cpp/aws-crt-cpp-0.35.4.ebuild45
-rw-r--r--dev-cpp/aws-sdk-cpp/Manifest1
-rw-r--r--dev-cpp/aws-sdk-cpp/aws-sdk-cpp-1.11.712.ebuild69
-rw-r--r--dev-cpp/lucene++/files/lucene++-3.0.9-boost-1.90.patch486
-rw-r--r--dev-cpp/lucene++/lucene++-3.0.9-r2.ebuild54
-rw-r--r--dev-cpp/tlfloat/tlfloat-1.17.1_p20250711.ebuild2
7 files changed, 657 insertions, 1 deletions
diff --git a/dev-cpp/aws-crt-cpp/Manifest b/dev-cpp/aws-crt-cpp/Manifest
index 301cdfcf1a53..4d1a66900037 100644
--- a/dev-cpp/aws-crt-cpp/Manifest
+++ b/dev-cpp/aws-crt-cpp/Manifest
@@ -1 +1,2 @@
DIST aws-crt-cpp-0.35.2.tar.gz 377493 BLAKE2B d37e234702cc3613d5cd11612007275482524a6d83846854d4446942dcfc1ca6340c64176b0aa8929b60bd7aae9e9800b7c41bcb190063a852b1571a6149e945 SHA512 4c788fab14004939f9c780ed4178f07248cdbe6b462957dfb4cff0025da2642a108b90e9192f064c89e5d8f61dbc57fb5dfa1adf3ea36246eb8de2fc6a7f28ab
+DIST aws-crt-cpp-0.35.4.tar.gz 377147 BLAKE2B 9011b1191d5403c5e106c20a1420d4595c873e05a3ce2844198604e22c47544f50d1060ef35989e58d5bf1601078390d68d2e08aa4bc49ce37a95d9d5373562b SHA512 a8620827869be5465828d400f9cefe38e6030982ef45e7b780c84c68b403d1adc74f59c7b4626d84e730c0e197977430e9c5f5b78992fd3c0092d4ecab8a990b
diff --git a/dev-cpp/aws-crt-cpp/aws-crt-cpp-0.35.4.ebuild b/dev-cpp/aws-crt-cpp/aws-crt-cpp-0.35.4.ebuild
new file mode 100644
index 000000000000..2014f3e1b5cb
--- /dev/null
+++ b/dev-cpp/aws-crt-cpp/aws-crt-cpp-0.35.4.ebuild
@@ -0,0 +1,45 @@
+# Copyright 2025-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DESCRIPTION="C++ wrapper around the aws-c-* libraries"
+HOMEPAGE="https://github.com/awslabs/aws-crt-cpp"
+SRC_URI="https://github.com/awslabs/aws-crt-cpp/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+
+inherit cmake
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="test"
+
+RESTRICT="!test? ( test )"
+
+DEPEND="
+ dev-libs/aws-c-auth:=
+ dev-libs/aws-c-cal:=
+ dev-libs/aws-c-common:=
+ dev-libs/aws-c-event-stream:=
+ dev-libs/aws-c-http:=
+ dev-libs/aws-c-io:=
+ dev-libs/aws-c-mqtt:=
+ dev-libs/aws-c-s3:=
+ dev-libs/aws-checksums:=
+ "
+RDEPEND="${DEPEND}"
+BDEPEND="dev-libs/aws-c-common"
+
+src_configure()
+{
+ local mycmakeargs=(
+ -DBUILD_DEPS=OFF # disable embedded 3rd-party repositories.
+ -DBUILD_TESTING=$(usex test)
+ )
+
+ use test && mycmakeargs+=(
+ -DENABLE_NET_TESTS=OFF # Network Sandbox cause these to fail.
+ )
+
+ cmake_src_configure
+}
diff --git a/dev-cpp/aws-sdk-cpp/Manifest b/dev-cpp/aws-sdk-cpp/Manifest
index 2a5d2ceddc65..82feb33e0af1 100644
--- a/dev-cpp/aws-sdk-cpp/Manifest
+++ b/dev-cpp/aws-sdk-cpp/Manifest
@@ -1 +1,2 @@
DIST aws-sdk-cpp-1.11.686.tar.gz 77268552 BLAKE2B 0edb3518e270bd99e3cc2463fd96eb5750e8b89ecbaa1e834b118b710a1f54264c4b4aa0de43c5aefac5a8acafaae1862701b5bdd9d2fd6f089c463be104f4a1 SHA512 c4e1922e35e9316895a13d0c42039cc64e54f34531cb8f89b0609f79c648de9a1d3bc4021003f7b9f54763d6bc889049c27ff9727e29aafca3074890453604ac
+DIST aws-sdk-cpp-1.11.712.tar.gz 80207334 BLAKE2B ae221b828a6b57bacb6a66725e827dd5cc2242e0dcb1434a9d5724ad20b4dd2e3796bca25ec0d490f90195c86d33ca312d60bb32cad44d419235d4a6e359d5ba SHA512 bbf220d3188111f6e93c8f0a36d62be05bf844e9745d1e214a419c2c15b2d7f0abb642b2eff8f47113a1925bf94bdd983db618e5940f3c30a4deed00994b08d6
diff --git a/dev-cpp/aws-sdk-cpp/aws-sdk-cpp-1.11.712.ebuild b/dev-cpp/aws-sdk-cpp/aws-sdk-cpp-1.11.712.ebuild
new file mode 100644
index 000000000000..06e06681983f
--- /dev/null
+++ b/dev-cpp/aws-sdk-cpp/aws-sdk-cpp-1.11.712.ebuild
@@ -0,0 +1,69 @@
+# Copyright 2025-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DESCRIPTION="AWS SDK for C++"
+HOMEPAGE="https://github.com/aws/aws-sdk-cpp"
+SRC_URI="https://github.com/aws/aws-sdk-cpp/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+
+inherit cmake
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+
+# BUILD_ONLY lists
+declare -g -A AWS_GROUPS=(
+ [analytics]="athena;cleanrooms;cleanroomsml;datazone;entityresolution;finspace;finspace-data;firehose;forecast;forecastquery;glue;lakeformation;lookoutequipment;machinelearning;quicksight;repostspace;timestream-influxdb;amp;amplify;amplifybackend;amplifyuibuilder;omics;kafka;kafkaconnect;dsql;appflow;appintegrations;cloudsearch;cloudsearchdomain;databrew;dataexchange;datapipeline;kinesisanalytics;kinesisanalyticsv2;mwaa;mwaa-serverless;pi"
+ [compute]="application-autoscaling;autoscaling;autoscaling-plans;batch;compute-optimizer;compute-optimizer-automation;ec2;ec2-instance-connect;ecr;ecr-public;ecs;eks;elasticbeanstalk;elasticmapreduce;emr-containers;emr-serverless;lambda;lightsail;outposts;simspaceweaver;elasticfilesystem;elasticloadbalancing;elasticloadbalancingv2;m2;s3outposts;imagebuilder;swf;apigateway;apigatewaymanagementapi;apigatewayv2;apprunner;appstream;appsync;eks-auth;states;workspaces-instances"
+ [database]="docdb;docdb-elastic;dynamodb;dynamodbstreams;keyspaces;memorydb;neptune;neptune-graph;neptunedata;opensearch;opensearchserverless;rds;rds-data;redshift;redshift-data;redshift-serverless;sdb;timestream-influxdb;timestream-query;timestream-write;osis;clouddirectory;dax;elasticache;es;odb"
+ [devops]="codeartifact;codebuild;codecatalyst;codecommit;codeconnections;codedeploy;codeguru-reviewer;codeguru-security;codepipeline;codestar-connections;codestar-notifications;devicefarm;gamelift;gameliftstreams;proton;artifact;b2bi;serverlessrepo;schemas;mturk-requester;cloud9;codeguruprofiler;keyspacesstreams"
+ [iot]="greengrass;greengrassv2;groundstation;iot;iot-data;iot-jobs-data;iot-managed-integrations;iotanalytics;iotdeviceadvisor;iotevents;iotevents-data;iotfleetwise;iotsitewise;iotthingsgraph;iottwinmaker;iotwireless;iotsecuretunneling;panorama"
+ [management]="account;appconfig;appconfigdata;applicationcostprofiler;application-insights;application-signals;budgets;billing;billingconductor;ce;cloudcontrol;cloudformation;cloudtrail;cloudtrail-data;controltower;cur;fms;license-manager;license-manager-linux-subscriptions;license-manager-user-subscriptions;marketplace-agreement;marketplace-catalog;marketplace-deployment;marketplace-entitlement;marketplace-reporting;marketplacecommerceanalytics;organizations;ram;resource-explorer-2;resource-groups;resourcegroupstaggingapi;savingsplans;service-quotas;servicecatalog;servicecatalog-appregistry;support;support-app;taxsettings;AWSMigrationHub;cost-optimization-hub;dlm;dms;drs;mgn;migration-hub-refactor-spaces;migrationhub-config;migrationhuborchestrator;migrationhubstrategy;launch-wizard;meteringmarketplace;supplychain;workspaces;workspaces-thin-client;workspaces-web;bcm-data-exports;bcm-pricing-calculator;controlcatalog;discovery;invoicing;partnercentral-selling;partnercentral-account;partnercentral-benefits;partnercentral-channel;ssm;ssm-contacts;ssm-guiconnect;ssm-incidents;ssm-quicksetup;ssm-sap;mpa"
+ [media]="elastictranscoder;ivs;ivs-realtime;kinesis;kinesis-video-archived-media;kinesis-video-media;kinesis-video-signaling;kinesis-video-webrtc-storage;mediaconvert;mediatailor;voice-id;deadline;evs;ivschat;kinesisvideo;mediaconnect;medialive"
+ [messaging]="chatbot;chime;chime-sdk-identity;chime-sdk-media-pipelines;chime-sdk-meetings;chime-sdk-messaging;chime-sdk-voice;connect;connect-contact-lens;connectcampaigns;connectcampaignsv2;connectcases;connectparticipant;customer-profiles;eventbridge;notifications;notificationscontacts;pinpoint;pinpoint-email;pinpoint-sms-voice-v2;pipes;rum;scheduler;sns;sqs;mailmanager;sms-voice;socialmessaging;wisdom;workmail;workmailmessageflow;mq;sesv2;email"
+ [ml]="bedrock;bedrock-agent;bedrock-agent-runtime;bedrock-data-automation;bedrock-data-automation-runtime;bedrock-runtime;comprehend;comprehendmedical;frauddetector;personalize;personalize-events;personalize-runtime;rekognition;sagemaker;sagemaker-a2i-runtime;sagemaker-edge;sagemaker-featurestore-runtime;sagemaker-geospatial;sagemaker-metrics;sagemaker-runtime;sagemaker-runtime-http2;textract;transcribe;transcribestreaming;translate;lex;lex-models;lexv2-models;lexv2-runtime;qapps;qbusiness;medical-imaging;kendra;kendra-ranking;polly;qconnect"
+ [monitor]="config;devops-guru;health;inspector;inspector-scan;inspector2;internetmonitor;logs;monitoring;observabilityadmin;resiliencehub;security-ir;synthetics;trustedadvisor;wellarchitected;xray;fis;grafana;healthlake;oam;aiops;appfabric;evidently"
+ [networking]="appmesh;cloudfront;cloudfront-keyvaluestore;directconnect;globalaccelerator;location;network-firewall;networkflowmonitor;networkmanager;networkmonitor;route53;route53-recovery-cluster;route53-recovery-control-config;route53-recovery-readiness;route53domains;route53profiles;route53resolver;route53globalresolver;vpc-lattice;geo-maps;geo-places;geo-routes;tnb;arc-zonal-shift;servicediscovery"
+ [security]="accessanalyzer;acm;acm-pca;codeguru-security;guardduty;iam;macie2;payment-cryptography;payment-cryptography-data;rolesanywhere;secretsmanager;securityhub;securitylake;shield;signer;verifiedpermissions;waf;waf-regional;wafv2;auditmanager;cloudhsm;cloudhsmv2;detective;directory-service-data;pca-connector-ad;pca-connector-scep;pcs;sso;sso-admin;signin"
+ [storage]="backup;backup-gateway;datasync;ebs;fsx;glacier;mediapackage;mediapackage-vod;mediapackagev2;mediastore;mediastore-data;s3;s3-crt;snow-device-management;snowball;storagegateway;workdocs;awstransfer;importexport;rbin;s3tables;backupsearch;s3control"
+ [uncategorized]="ds;evs;braket;freetier;managedblockchain;managedblockchain-query;nova-act"
+)
+
+IUSE="${!AWS_GROUPS[*]}"
+
+DEPEND="dev-cpp/aws-crt-cpp:=
+ dev-libs/aws-c-auth:=
+ dev-libs/aws-c-common:=
+ dev-libs/aws-c-compression:=
+ dev-libs/aws-c-event-stream:=
+ dev-libs/aws-c-http:=
+ dev-libs/aws-c-io:=
+ dev-libs/aws-c-mqtt:=
+ dev-libs/aws-c-s3:=
+ dev-libs/aws-c-sdkutils:=
+ dev-libs/aws-checksums:=
+ net-misc/curl:=
+ virtual/zlib:="
+RDEPEND="${DEPEND}"
+BDEPEND="dev-libs/aws-c-common"
+
+src_configure() {
+ local mybuildtargets="core;kms;identity-management;sts;cognito-identity;cognito-idp;cognito-sync;identitystore;sso-oidc;events;pricing"
+
+ local g
+ for g in "${!AWS_GROUPS[@]}"; do
+ if use "${g}"; then
+ mybuildtargets+=";${AWS_GROUPS[$g]}"
+ fi
+ done
+
+ local mycmakeargs=(
+ -DLEGACY_BUILD=ON
+ -DBUILD_DEPS=OFF # disable embedded 3rd-party repositories.
+ -DBUILD_ONLY="${mybuildtargets}"
+ )
+
+ cmake_src_configure
+}
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++/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.*:"
+}
diff --git a/dev-cpp/tlfloat/tlfloat-1.17.1_p20250711.ebuild b/dev-cpp/tlfloat/tlfloat-1.17.1_p20250711.ebuild
index 53518dfc4163..f954b85a2097 100644
--- a/dev-cpp/tlfloat/tlfloat-1.17.1_p20250711.ebuild
+++ b/dev-cpp/tlfloat/tlfloat-1.17.1_p20250711.ebuild
@@ -18,7 +18,7 @@ S="${WORKDIR}"/${PN}-${CommitId}
LICENSE="Boost-1.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm64"
+KEYWORDS="~amd64 ~arm64 ~riscv"
IUSE="test"
RESTRICT="!test? ( test )"