Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kf6-baloo for openSUSE:Factory checked in at 2025-07-14 10:48:09 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kf6-baloo (Old) and /work/SRC/openSUSE:Factory/.kf6-baloo.new.7373 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kf6-baloo" Mon Jul 14 10:48:09 2025 rev:17 rq:1292112 version:6.16.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kf6-baloo/kf6-baloo.changes 2025-06-18 15:55:47.355330023 +0200 +++ /work/SRC/openSUSE:Factory/.kf6-baloo.new.7373/kf6-baloo.changes 2025-07-14 10:48:44.837331559 +0200 @@ -1,0 +2,15 @@ +Mon Jul 7 07:24:31 UTC 2025 - Christophe Marin <christo...@krop.fr> + +- Update to 6.16.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/frameworks/6/6.16.0 +- Changes since 6.15.0: + * Update dependency version to 6.16.0 + * [termgenerator] Avoid some QString is_shared/detach checks + * [termgeneratortest] Add benchmark for termlist + * Use data driven tests in more places + * [PostingDB] Reduce code duplication, remove DBPostingIterator + * Update version to 6.16.0 + +------------------------------------------------------------------- Old: ---- baloo-6.15.0.tar.xz baloo-6.15.0.tar.xz.sig New: ---- baloo-6.16.0.tar.xz baloo-6.16.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kf6-baloo.spec ++++++ --- /var/tmp/diff_new_pack.e0Q4vf/_old 2025-07-14 10:48:45.785370969 +0200 +++ /var/tmp/diff_new_pack.e0Q4vf/_new 2025-07-14 10:48:45.785370969 +0200 @@ -19,11 +19,11 @@ %define qt6_version 6.8.0 %define rname baloo -# Full KF6 version (e.g. 6.15.0) +# Full KF6 version (e.g. 6.16.0) %{!?_kf6_version: %global _kf6_version %{version}} %bcond_without released Name: kf6-baloo -Version: 6.15.0 +Version: 6.16.0 Release: 0 Summary: Framework for searching and managing metadata License: GPL-2.0-or-later AND LGPL-2.1-or-later AND LGPL-3.0-only ++++++ baloo-6.15.0.tar.xz -> baloo-6.16.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/baloo-6.15.0/CMakeLists.txt new/baloo-6.16.0/CMakeLists.txt --- old/baloo-6.15.0/CMakeLists.txt 2025-06-06 15:28:27.000000000 +0200 +++ new/baloo-6.16.0/CMakeLists.txt 2025-07-04 17:09:01.000000000 +0200 @@ -1,8 +1,8 @@ # set minimum version requirements cmake_minimum_required(VERSION 3.16) set(REQUIRED_QT_VERSION 6.7.0) -set(KF_VERSION "6.15.0") # handled by release scripts -set(KF_DEP_VERSION "6.15.0") # handled by release scripts +set(KF_VERSION "6.16.0") # handled by release scripts +set(KF_DEP_VERSION "6.16.0") # handled by release scripts # set up project project(Baloo VERSION ${KF_VERSION}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/baloo-6.15.0/autotests/unit/engine/CMakeLists.txt new/baloo-6.16.0/autotests/unit/engine/CMakeLists.txt --- old/baloo-6.15.0/autotests/unit/engine/CMakeLists.txt 2025-06-06 15:28:27.000000000 +0200 +++ new/baloo-6.16.0/autotests/unit/engine/CMakeLists.txt 2025-07-04 17:09:01.000000000 +0200 @@ -19,11 +19,21 @@ idfilenamedbtest mtimedbtest - termgeneratortest - # Query andpostingiteratortest orpostingiteratortest postingiteratortest phraseanditeratortest ) + +add_executable(termgeneratortest_bin + termgeneratortest.cpp +) +target_link_libraries(termgeneratortest_bin + Qt6::Test + KF6::BalooEngine +) +ecm_mark_as_test(termgeneratortest_bin) + +# Run the benchmarks with just 1 iteration during CI, so we known it works +add_test(NAME termgeneratortest COMMAND termgeneratortest_bin "-iterations" "1") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/baloo-6.15.0/autotests/unit/engine/termgeneratortest.cpp new/baloo-6.16.0/autotests/unit/engine/termgeneratortest.cpp --- old/baloo-6.15.0/autotests/unit/engine/termgeneratortest.cpp 2025-06-06 15:28:27.000000000 +0200 +++ new/baloo-6.16.0/autotests/unit/engine/termgeneratortest.cpp 2025-07-04 17:09:01.000000000 +0200 @@ -20,14 +20,11 @@ private Q_SLOTS: void testWordBoundaries(); - void testWordBoundariesCJK(); - void testWordBoundariesCJKMixed(); - void testUnderscoreWord(); - void testUnderscore_splitting(); - void testAccentCharacters(); + void testWordBoundaries_data(); + void benchmarkWordBoundaries(); + void benchmarkWordBoundaries_data(); void testUnicodeCompatibleComposition(); void testUnicodeLowering(); - void testEmails(); void testWordPositions(); void testWordPositionsCJK(); void testNumbers(); @@ -50,75 +47,59 @@ void TermGeneratorTest::testWordBoundaries() { - QString str = QString::fromLatin1("The quick (\"brown\") 'fox' can't jump 32.3 feet, right? No-Wrong;xx.txt"); + QFETCH(QString, input); + QFETCH(QList<QByteArray>, expectedWords); - QList<QByteArray> words = allWords(str); - - QList<QByteArray> expectedWords; - expectedWords << QByteArray("32.3") << QByteArray("brown") << QByteArray("can't") << QByteArray("feet") << QByteArray("fox") << QByteArray("jump") - << QByteArray("no") << QByteArray("quick") << QByteArray("right") << QByteArray("the") << QByteArray("txt") << QByteArray("wrong") - << QByteArray("xx"); + QList<QByteArray> words = allWords(input); QCOMPARE(words, expectedWords); } -void TermGeneratorTest::testWordBoundariesCJK() +namespace { - QString str = QString::fromUtf8("你"); - - QList<QByteArray> words = allWords(str); - QList<QByteArray> expectedWords; - expectedWords << QByteArray("你"); - - QCOMPARE(words, expectedWords); -} - -void TermGeneratorTest::testWordBoundariesCJKMixed() +void addData_WordBoundaries() { - // This is a English and CJK mixed string. - QString str = QString::fromUtf8("hello world!你好世界貴方元気켐ㅇㄹ?☺"); + using namespace Qt::Literals::StringLiterals; - QList<QByteArray> words = allWords(str); - QList<QByteArray> expectedWords; - expectedWords << QByteArray("hello") << QByteArray("world") << QByteArray("☺") << QByteArray("你好世界貴方元気") << QByteArray("켐ᄋᄅ"); + QTest::addColumn<QString>("input"); + QTest::addColumn<QList<QByteArray>>("expectedWords"); - QCOMPARE(words, expectedWords); + // clang-format off + QTest::newRow("latin sentence") << u"The quick (\"brown\") 'fox' can't jump 32.3 feet, right? No-Wrong;xx.txt"_s + << QList<QByteArray>{"32.3", "brown", "can't", "feet", "fox", "jump", "no", "quick", "right", "the", "txt", "wrong", "xx"}; + QTest::newRow("CJK") << u"你"_s + << QList<QByteArray>{"你"}; + QTest::newRow("CJK mixed") << u"hello world!你好世界貴方元気켐ㅇㄹ?☺"_s + << QList<QByteArray>{"hello", "world", "☺", "你好世界貴方元気", "켐ᄋᄅ"}; + QTest::newRow("strip underscore") << u"_plant"_s + << QList<QByteArray>{"plant"}; + QTest::newRow("split underscore") << u"Hello_Howdy"_s + << QList<QByteArray>{"hello", "howdy"}; + QTest::newRow("Accented") << u"Como está Kûg"_s + << QList<QByteArray>{"como", "esta", "kug"}; + QTest::newRow("Mail address") << u"m...@vhanda.in"_s + << QList<QByteArray>{"in", "me", "vhanda"}; + // clang-format on } +} // namespace <anonymous> -void TermGeneratorTest::testUnderscoreWord() +void TermGeneratorTest::testWordBoundaries_data() { - QString str = QString::fromLatin1("_plant"); - - QList<QByteArray> words = allWords(str); - - QList<QByteArray> expectedWords; - expectedWords << QByteArray("plant"); - - QCOMPARE(words, expectedWords); + addData_WordBoundaries(); } -void TermGeneratorTest::testUnderscore_splitting() +void TermGeneratorTest::benchmarkWordBoundaries() { - QString str = QString::fromLatin1("Hello_Howdy"); - - QList<QByteArray> words = allWords(str); + QFETCH(QString, input); - QList<QByteArray> expectedWords; - expectedWords << QByteArray("hello") << QByteArray("howdy"); - - QCOMPARE(words, expectedWords); + QBENCHMARK { + TermGenerator::termList(input); + } } -void TermGeneratorTest::testAccentCharacters() +void TermGeneratorTest::benchmarkWordBoundaries_data() { - QString str = QString::fromUtf8("Como est\xC3\xA1 K\xC3\xBBg"); // "Como está Kûg" - - QList<QByteArray> words = allWords(str); - - QList<QByteArray> expectedWords; - expectedWords << QByteArray("como") << QByteArray("esta") << QByteArray("kug"); - - QCOMPARE(words, expectedWords); + addData_WordBoundaries(); } void TermGeneratorTest::testUnicodeCompatibleComposition() @@ -144,18 +125,6 @@ QCOMPARE(words, {QByteArray("hedge")}); } -void TermGeneratorTest::testEmails() -{ - QString str = QString::fromLatin1("m...@vhanda.in"); - - QList<QByteArray> words = allWords(str); - - QList<QByteArray> expectedWords; - expectedWords << QByteArray("in") << QByteArray("me") << QByteArray("vhanda"); - - QCOMPARE(words, expectedWords); -} - void TermGeneratorTest::testWordPositions() { Document doc; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/baloo-6.15.0/src/engine/postingdb.cpp new/baloo-6.16.0/src/engine/postingdb.cpp --- old/baloo-6.15.0/src/engine/postingdb.cpp 2025-06-06 15:28:27.000000000 +0200 +++ new/baloo-6.16.0/src/engine/postingdb.cpp 2025-07-04 17:09:01.000000000 +0200 @@ -5,10 +5,11 @@ SPDX-License-Identifier: LGPL-2.1-or-later */ -#include "enginedebug.h" #include "postingdb.h" +#include "enginedebug.h" #include "orpostingiterator.h" #include "postingcodec.h" +#include "vectorpostingiterator.h" using namespace Baloo; @@ -136,17 +137,6 @@ return terms; } -class DBPostingIterator : public PostingIterator { -public: - DBPostingIterator(void* data, uint size); - quint64 docId() const override; - quint64 next() override; - -private: - const QVector<quint64> m_vec; - int m_pos; -}; - PostingIterator* PostingDB::iter(const QByteArray& term) { MDB_val key; @@ -160,36 +150,8 @@ return nullptr; } - return new DBPostingIterator(val.mv_data, val.mv_size); -} - -// -// Posting Iterator -// -DBPostingIterator::DBPostingIterator(void* data, uint size) - : m_vec(PostingCodec().decode(QByteArray(static_cast<char*>(data), size))) - , m_pos(-1) -{ -} - -quint64 DBPostingIterator::docId() const -{ - if (m_pos < 0 || m_pos >= m_vec.size()) { - return 0; - } - - return m_vec[m_pos]; -} - -quint64 DBPostingIterator::next() -{ - if (m_pos >= m_vec.size() - 1) { - m_pos = m_vec.size(); - return 0; - } - - m_pos++; - return m_vec[m_pos]; + auto values = QByteArray::fromRawData(static_cast<char *>(val.mv_data), val.mv_size); + return new VectorPostingIterator(PostingCodec().decode(values)); } template <typename Validator> @@ -219,7 +181,8 @@ break; } if (validate(arr)) { - termIterators << new DBPostingIterator(val.mv_data, val.mv_size); + auto values = QByteArray::fromRawData(static_cast<char *>(val.mv_data), val.mv_size); + termIterators << new VectorPostingIterator(PostingCodec().decode(values)); } rc = mdb_cursor_get(cursor, &key, &val, MDB_NEXT); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/baloo-6.15.0/src/engine/termgenerator.cpp new/baloo-6.16.0/src/engine/termgenerator.cpp --- old/baloo-6.15.0/src/engine/termgenerator.cpp 2025-06-06 15:28:27.000000000 +0200 +++ new/baloo-6.16.0/src/engine/termgenerator.cpp 2025-07-04 17:09:01.000000000 +0200 @@ -66,7 +66,7 @@ QTextBoundaryFinder bf(QTextBoundaryFinder::Word, text); for (; bf.position() != -1; bf.toNextBoundary()) { int end = bf.position(); - while (start < end && isSkipChar(text[start])) { + while (start < end && isSkipChar(text.at(start))) { start++; } if (end == start) { @@ -83,7 +83,7 @@ // Also commit term if end-of-text is reached or when we find // any punctuation - if (!commit & (end == text.size() || isSkipChar(text[end]))) { + if (!commit & (end == text.size() || isSkipChar(text.at(end)))) { commit = true; }