Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kf6-kdnssd for openSUSE:Factory checked in at 2026-07-15 16:28:43 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kf6-kdnssd (Old) and /work/SRC/openSUSE:Factory/.kf6-kdnssd.new.1991 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kf6-kdnssd" Wed Jul 15 16:28:43 2026 rev:29 rq:1365103 version:6.28.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kf6-kdnssd/kf6-kdnssd.changes 2026-06-16 13:54:37.376240153 +0200 +++ /work/SRC/openSUSE:Factory/.kf6-kdnssd.new.1991/kf6-kdnssd.changes 2026-07-15 16:35:50.366708055 +0200 @@ -1,0 +2,13 @@ +Fri Jul 10 12:15:49 UTC 2026 - Christophe Marin <[email protected]> + +- Update to 6.28.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/frameworks/6/6.28.0 +- Changes since 6.27.0: + * Update dependency version to 6.28.0 + * Correctly track Avahi service types + * Add basic service browser example + * Update version to 6.28.0 + +------------------------------------------------------------------- Old: ---- kdnssd-6.27.0.tar.xz kdnssd-6.27.0.tar.xz.sig New: ---- kdnssd-6.28.0.tar.xz kdnssd-6.28.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kf6-kdnssd.spec ++++++ --- /var/tmp/diff_new_pack.wRsz32/_old 2026-07-15 16:35:51.970762699 +0200 +++ /var/tmp/diff_new_pack.wRsz32/_new 2026-07-15 16:35:51.970762699 +0200 @@ -19,11 +19,11 @@ %define qt6_version 6.9.0 %define rname kdnssd -# Full KF6 version (e.g. 6.27.0) +# Full KF6 version (e.g. 6.28.0) %{!?_kf6_version: %global _kf6_version %{version}} %bcond_without released Name: kf6-kdnssd -Version: 6.27.0 +Version: 6.28.0 Release: 0 Summary: Network service discovery using Zeroconf License: LGPL-2.1-or-later ++++++ kdnssd-6.27.0.tar.xz -> kdnssd-6.28.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdnssd-6.27.0/CMakeLists.txt new/kdnssd-6.28.0/CMakeLists.txt --- old/kdnssd-6.27.0/CMakeLists.txt 2026-06-05 17:46:29.000000000 +0200 +++ new/kdnssd-6.28.0/CMakeLists.txt 2026-07-03 12:54:26.000000000 +0200 @@ -1,10 +1,10 @@ cmake_minimum_required(VERSION 3.29) -set(KF_VERSION "6.27.0") # handled by release scripts +set(KF_VERSION "6.28.0") # handled by release scripts project(KDNSSD VERSION ${KF_VERSION}) include(FeatureSummary) -find_package(ECM 6.27.0 NO_MODULE) +find_package(ECM 6.28.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://commits.kde.org/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) @@ -27,6 +27,7 @@ set(REQUIRED_QT_VERSION 6.9.0) find_package(Qt6 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Network) +find_package(Qt6 ${REQUIRED_QT_VERSION} CONFIG OPTIONAL_COMPONENTS Widgets) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) @@ -72,6 +73,7 @@ ) add_subdirectory(src) +add_subdirectory(examples) set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF6DNSSD") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdnssd-6.27.0/examples/CMakeLists.txt new/kdnssd-6.28.0/examples/CMakeLists.txt --- old/kdnssd-6.27.0/examples/CMakeLists.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/kdnssd-6.28.0/examples/CMakeLists.txt 2026-07-03 12:54:26.000000000 +0200 @@ -0,0 +1,8 @@ +# SPDX-FileCopyrightText: 2026 Volker Krause <[email protected]> +# SPDX-License-Identifier: BSD-3-Clause + +if(TARGET Qt6::Widgets) + add_executable(zeroconf-browser) + target_sources(zeroconf-browser PRIVATE browser.cpp) + target_link_libraries(zeroconf-browser PRIVATE KF6DNSSD Qt6::Widgets) +endif() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdnssd-6.27.0/examples/browser.cpp new/kdnssd-6.28.0/examples/browser.cpp --- old/kdnssd-6.27.0/examples/browser.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/kdnssd-6.28.0/examples/browser.cpp 2026-07-03 12:54:26.000000000 +0200 @@ -0,0 +1,63 @@ +/* + SPDX-FileCopyrightText: 2026 Volker Krause <[email protected]> + SPDX-License-Identifier: LGPL-2.0-or-later +*/ + +#include <KDNSSD/DomainBrowser> +#include <KDNSSD/DomainModel> +#include <KDNSSD/RemoteService> +#include <KDNSSD/ServiceBrowser> +#include <KDNSSD/ServiceModel> +#include <KDNSSD/ServiceTypeBrowser> + +#include <QApplication> +#include <QComboBox> +#include <QListView> +#include <QTreeView> +#include <QVBoxLayout> + +using namespace Qt::Literals; + +int main(int argc, char **argv) +{ + QApplication app(argc, argv); + + QWidget mainWidget; + auto topLayout = new QVBoxLayout(&mainWidget); + + auto typeBox = new QComboBox; + topLayout->addWidget(typeBox); + + auto serviceTypeBrowser = new KDNSSD::ServiceTypeBrowser({}, &app); + serviceTypeBrowser->startBrowse(); + QObject::connect(serviceTypeBrowser, &KDNSSD::ServiceTypeBrowser::serviceTypeAdded, typeBox, [&]() { + typeBox->clear(); + typeBox->addItems(serviceTypeBrowser->serviceTypes()); + }); + QObject::connect(serviceTypeBrowser, &KDNSSD::ServiceTypeBrowser::serviceTypeRemoved, typeBox, [&]() { + typeBox->clear(); + typeBox->addItems(serviceTypeBrowser->serviceTypes()); + }); + typeBox->addItems(serviceTypeBrowser->serviceTypes()); + + auto serviceView = new QTreeView; + serviceView->setRootIsDecorated(false); + serviceView->setSelectionBehavior(QTreeView::SelectRows); + topLayout->addWidget(serviceView); + + KDNSSD::ServiceModel *serviceModel = nullptr; + QObject::connect(typeBox, &QComboBox::currentTextChanged, &app, [&](const QString &type) { + delete serviceModel; + auto serviceModel = new KDNSSD::ServiceModel(new KDNSSD::ServiceBrowser(type, true)); + serviceView->setModel(serviceModel); + QObject::connect(serviceView->selectionModel(), &QItemSelectionModel::currentRowChanged, &app, [](const auto &idx) { + if (idx.isValid()) { + auto service = idx.data(KDNSSD::ServiceModel::ServicePtrRole).template value<KDNSSD::RemoteService::Ptr>(); + qDebug() << service->textData(); + } + }); + }); + + mainWidget.show(); + return app.exec(); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdnssd-6.27.0/poqm/ia/kdnssd6_qt.po new/kdnssd-6.28.0/poqm/ia/kdnssd6_qt.po --- old/kdnssd-6.27.0/poqm/ia/kdnssd6_qt.po 2026-06-05 17:46:29.000000000 +0200 +++ new/kdnssd-6.28.0/poqm/ia/kdnssd6_qt.po 2026-07-03 12:54:26.000000000 +0200 @@ -919,7 +919,7 @@ #~ msgstr "Patronos" #~ msgid "Wallpapers" -#~ msgstr "Tapetes de papiro" +#~ msgstr "Fundos de schermo" #~ msgid "XDG Application menu (.desktop files)" #~ msgstr "XDG Menu de applicationes (files .desktop)" @@ -8599,7 +8599,7 @@ #~ msgid "Too many requests to server. Please try again in a few minutes." #~ msgstr "" -#~ "Troppo requestas a le servitor. Pro favor prova de nove inter pauc " +#~ "Troppo requestas a le servitor. Pro favor prova de nove inter pauco " #~ "minutas." #~ msgid "Unknown Open Collaboration Service API error. (%1)" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdnssd-6.27.0/poqm/nb/kdnssd6_qt.po new/kdnssd-6.28.0/poqm/nb/kdnssd6_qt.po --- old/kdnssd-6.27.0/poqm/nb/kdnssd6_qt.po 2026-06-05 17:46:29.000000000 +0200 +++ new/kdnssd-6.28.0/poqm/nb/kdnssd6_qt.po 2026-07-03 12:54:26.000000000 +0200 @@ -14,7 +14,7 @@ "POT-Creation-Date: 2014-02-28 03:44+0000\n" "PO-Revision-Date: 2014-04-25 15:53+0200\n" "Last-Translator: Bjørn Steensrud <[email protected]>\n" -"Language-Team: Norwegian Bokmål <[email protected]>\n" +"Language-Team: Norwegian Bokmål <[email protected]>\n" "Language: nb\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdnssd-6.27.0/poqm/nn/kdnssd6_qt.po new/kdnssd-6.28.0/poqm/nn/kdnssd6_qt.po --- old/kdnssd-6.27.0/poqm/nn/kdnssd6_qt.po 2026-06-05 17:46:29.000000000 +0200 +++ new/kdnssd-6.28.0/poqm/nn/kdnssd6_qt.po 2026-07-03 12:54:26.000000000 +0200 @@ -11,7 +11,7 @@ "POT-Creation-Date: 2014-02-28 03:44+0000\n" "PO-Revision-Date: 2015-06-02 19:28+0100\n" "Last-Translator: Karl Ove Hufthammer <[email protected]>\n" -"Language-Team: Norwegian Nynorsk <[email protected]>\n" +"Language-Team: Norwegian Nynorsk <[email protected]>\n" "Language: nn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdnssd-6.27.0/poqm/se/kdnssd6_qt.po new/kdnssd-6.28.0/poqm/se/kdnssd6_qt.po --- old/kdnssd-6.27.0/poqm/se/kdnssd6_qt.po 2026-06-05 17:46:29.000000000 +0200 +++ new/kdnssd-6.28.0/poqm/se/kdnssd6_qt.po 2026-07-03 12:54:26.000000000 +0200 @@ -8,7 +8,7 @@ "POT-Creation-Date: 2014-02-28 03:44+0000\n" "PO-Revision-Date: 2012-05-30 23:19+0200\n" "Last-Translator: Børre Gaup <[email protected]>\n" -"Language-Team: Northern Sami <[email protected]>\n" +"Language-Team: Northern Sami <[email protected]>\n" "Language: se\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdnssd-6.27.0/src/avahi-servicetypebrowser.cpp new/kdnssd-6.28.0/src/avahi-servicetypebrowser.cpp --- old/kdnssd-6.27.0/src/avahi-servicetypebrowser.cpp 2026-06-05 17:46:29.000000000 +0200 +++ new/kdnssd-6.28.0/src/avahi-servicetypebrowser.cpp 2026-07-03 12:54:26.000000000 +0200 @@ -110,24 +110,49 @@ finished(); } -void ServiceTypeBrowserPrivate::gotNewServiceType(int, int, const QString &type, const QString &, uint) +void ServiceTypeBrowserPrivate::gotNewServiceType(int interface, int protocol, const QString &type, const QString &domain, [[maybe_unused]] uint flags) { m_timer.start(TIMEOUT_LAST_SERVICE); - m_servicetypes += type; - Q_EMIT m_parent->serviceTypeAdded(type); + // we can get the same type for e.g. different protocols, so track all of those and only report + // the first time a new type is added and likewise below, the last time a type is removed + const auto newType = std::ranges::find_if(m_servicetypes, + [type](const auto &s) { + return s.type == type; + }) + == m_servicetypes.end(); + m_servicetypes.emplace_back(interface, protocol, type, domain); + if (newType) { + Q_EMIT m_parent->serviceTypeAdded(type); + } } -void ServiceTypeBrowserPrivate::gotRemoveServiceType(int, int, const QString &type, const QString &, uint) +void ServiceTypeBrowserPrivate::gotRemoveServiceType(int interface, int protocol, const QString &type, const QString &domain, [[maybe_unused]] uint flags) { m_timer.start(TIMEOUT_LAST_SERVICE); - m_servicetypes.removeAll(type); - Q_EMIT m_parent->serviceTypeRemoved(type); + auto it = std::ranges::find(m_servicetypes, AvahiServiceType{interface, protocol, type, domain}); + if (it == m_servicetypes.end()) { + return; + } + m_servicetypes.erase(it); + if (std::ranges::find_if(m_servicetypes, + [type](const auto &s) { + return s.type == type; + }) + == m_servicetypes.end()) { + Q_EMIT m_parent->serviceTypeRemoved(type); + } } QStringList ServiceTypeBrowser::serviceTypes() const { Q_D(const ServiceTypeBrowser); - return d->m_servicetypes; + QStringList types; + for (const auto &s : d->m_servicetypes) { + if (!types.contains(s.type)) { + types.push_back(s.type); + } + } + return types; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdnssd-6.27.0/src/avahi-servicetypebrowser_p.h new/kdnssd-6.28.0/src/avahi-servicetypebrowser_p.h --- old/kdnssd-6.27.0/src/avahi-servicetypebrowser_p.h 2026-06-05 17:46:29.000000000 +0200 +++ new/kdnssd-6.28.0/src/avahi-servicetypebrowser_p.h 2026-07-03 12:54:26.000000000 +0200 @@ -37,7 +37,16 @@ org::freedesktop::Avahi::ServiceTypeBrowser *m_browser = nullptr; ServiceTypeBrowser *m_parent = nullptr; bool m_started = false; - QStringList m_servicetypes; + + struct AvahiServiceType { + int interface; + int protocol; + QString type; + QString domain; + bool operator==(const AvahiServiceType &) const = default; + }; + std::vector<AvahiServiceType> m_servicetypes; + QString m_domain; QTimer m_timer;
