Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package kontactinterface for
openSUSE:Factory checked in at 2026-08-24 12:03:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kontactinterface (Old)
and /work/SRC/openSUSE:Factory/.kontactinterface.new.1258 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kontactinterface"
Mon Aug 24 12:03:37 2026 rev:130 rq:1372449 version:26.08.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/kontactinterface/kontactinterface.changes
2026-07-02 22:07:13.040240962 +0200
+++
/work/SRC/openSUSE:Factory/.kontactinterface.new.1258/kontactinterface.changes
2026-08-24 12:05:54.692745103 +0200
@@ -1,0 +2,45 @@
+Sun Aug 16 07:27:32 UTC 2026 - Christophe Marin <[email protected]>
+
+- Update to 26.08.0
+ * New feature release
+ * For more details please see:
+ * https://kde.org/announcements/gear/26.08.0/
+- No code change since 26.07.90
+
+-------------------------------------------------------------------
+Sat Aug 1 11:39:14 UTC 2026 - Christophe Marin <[email protected]>
+
+- Update to 26.07.90
+ * New feature release
+- No code change since 26.07.80
+
+-------------------------------------------------------------------
+Sat Jul 18 11:11:55 UTC 2026 - Christophe Marin <[email protected]>
+
+- Update to 26.07.80
+ * New feature release
+- Changes since 26.04.3:
+ * pimuniqueapplication.cpp - prevent crash in exportWindow() with Wayland
+ * Add a signal for minuteChanged()
+ * .kde-ci.yml - require merge requests do not introduce cppcheck issues
+ * Use reinterpret_cast to convert from integral to pointer type
+ * cppcheck-suppressions.xml - add cppcheck suppressions
+ * cppcheck ignoredReturnValue fixes
+ * cppcheck cstyleCast fixes
+ * cppcheck uninitMemberVar fix
+ * clang-tidy readability-const-return-type suppress
+ * clang-tidy readability-inconsistent-declaration-parameter-name fixes
+ * clang-tidy bugprone-integer-division suppression
+ * clang-tidy misc-const-correctness fixes
+ * clang-tidy misc-use-internal-linkage fix
+ * clang-tidy strict-iterators fix
+ * .clang-tidy - add the pim clang-tidy configuration
+ * Add ECMInstalledLibraryCheck support
+ * Fix compile on freebsd
+ * Port to new api
+ * CMAKE_CXX_SCAN_FOR_MODULES is already defined in ecm
+ * Remove unused variable
+ * Move license info in REUSE.toml
+ * Allow to use prek
+
+-------------------------------------------------------------------
Old:
----
kontactinterface-26.04.3.tar.xz
kontactinterface-26.04.3.tar.xz.sig
New:
----
kontactinterface-26.08.0.tar.xz
kontactinterface-26.08.0.tar.xz.sig
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kontactinterface.spec ++++++
--- /var/tmp/diff_new_pack.dDBSTi/_old 2026-08-24 12:05:55.803784667 +0200
+++ /var/tmp/diff_new_pack.dDBSTi/_new 2026-08-24 12:05:55.806784774 +0200
@@ -16,12 +16,12 @@
#
-%define kf6_version 6.19.0
+%define kf6_version 6.27.0
%define qt6_version 6.9.0
%bcond_without released
Name: kontactinterface
-Version: 26.04.3
+Version: 26.08.0
Release: 0
Summary: KDE PIM Libraries: Interface to Contacts
License: LGPL-2.1-or-later
++++++ kontactinterface-26.04.3.tar.xz -> kontactinterface-26.08.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kontactinterface-26.04.3/.clang-tidy
new/kontactinterface-26.08.0/.clang-tidy
--- old/kontactinterface-26.04.3/.clang-tidy 1970-01-01 01:00:00.000000000
+0100
+++ new/kontactinterface-26.08.0/.clang-tidy 2026-08-02 07:45:11.000000000
+0200
@@ -0,0 +1,76 @@
+# clang-analyzer-cplusplus.NewDeleteLeaks triggers false-positives in
QObject::connect()
+# readability-redundant-access-specifiers triggered by Q_SLOTS
+# readability-inconsistent-declaration-parameter-name trigered by generated Qt
code
+# performance-no-automatic-move is triggered by constness of
qstring_literal_tmp in QStringLiteral macro
+#
+# TODO make those pass:
+# readability-function-size - for now some tests and the generated code
contains extremely long
+# functions, which should be split into smaller
functions
+
+Checks: -*,
+ bugprone-*,
+ -bugprone-easily-swappable-parameters,
+ -bugprone-implicit-widening-of-multiplication-result,
+ -bugprone-narrowing-conversions,
+ -bugprone-suspicious-include,
+ clang-analyzer-*,
+ -clang-analyzer-apiModeling.*,
+ -clang-analyzer-optin.osx.*,
+ -clang-analyzer-optin.cplusplus.VirtualCall,
+ -clang-analyzer-cplusplus.NewDeleteLeaks,
+ -clang-analyzer-webkit.*,
+ -google-*,
+ misc-*,
+ -misc-definitions-in-headers,
+ -misc-include-cleaner,
+ -misc-multiple-inheritance,
+ -misc-no-recursion,
+ -misc-use-anonymous-namespace,
+ -*-non-private-member-variables-in-classes,
+ performance-*,
+ -performance-enum-size,
+ -performance-no-automatic-move,
+ readability-*,
+ -readability-avoid-const-params-in-decls,
+ -readability-avoid-nested-conditional-operator,
+ -readability-convert-member-functions-to-static,
+ -readability-else-after-return,
+ -readability-function-cognitive-complexity,
+ -readability-function-size,
+ -readability-identifier-length,
+ -readability-implicit-bool-conversion,
+ -readability-magic-numbers,
+ -readability-make-member-function-const,
+ -readability-math-missing-parentheses,
+ -readability-named-parameter,
+ -readability-qualified-auto,
+ -readability-redundant-access-specifiers,
+ -readability-redundant-casting,
+ -readability-simplify-boolean-expr,
+ -readability-static-accessed-through-instance,
+ -readability-use-std-min-max,
+ -readability-use-anyofallof,
+#WarningsAsErrors: bugprone-*,
+# clang-*,
+# google-*,
+# misc-*,
+# performance-*,
+# readability-*,
+HeaderFilterRegex: '/kontactinterface/src/'
+CheckOptions:
+ - key: bugprone-assert-side-effects.AssertMacros
+ value: 'Q_ASSERT;QVERIFY;QCOMPARE;AKVERIFY'
+ - key: CheckFunctionCalls
+ value: true
+ - key: StringCompareLikeFunctions
+ value: 'QString::compare;QString::localeAwareCompare'
+ - key: WarnOnSizeOfIntegerExpression
+ value: 1
+ - key: bugprone-dangling-handle.HandleClasses
+ value: 'std::string_view;QStringView'
+ - key: IgnoreClassesWithAllMemberVariablesBeingPublic
+ value: true
+ - key: VectorLikeClasses
+ value: 'std::vector;QList'
+ - key: misc-override-with-different-visibility.DisallowedVisibilityChange
+ value: widening
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kontactinterface-26.04.3/.gitlab-ci.yml
new/kontactinterface-26.08.0/.gitlab-ci.yml
--- old/kontactinterface-26.04.3/.gitlab-ci.yml 2026-06-06 06:18:52.000000000
+0200
+++ new/kontactinterface-26.08.0/.gitlab-ci.yml 2026-08-02 07:45:11.000000000
+0200
@@ -8,7 +8,28 @@
- /gitlab-templates/linux-qt6-next.yml
- /gitlab-templates/freebsd-qt6.yml
- /gitlab-templates/windows-qt6.yml
- - /gitlab-templates/reuse-lint.yml
- /gitlab-templates/cppcheck.yml
- /gitlab-templates/alpine-qt6.yml
- /gitlab-templates/pre-commit.yml
+
+
+build_clazy:
+ extends:
+ - .ci_linux_base
+ - .suse_tumbleweed_qt6stable
+ rules:
+ # only run on merge requests
+ - if: $CI_PIPELINE_SOURCE == "merge_request_event"
+ variables:
+ # remove/comment the CXXFLAGS if you don't want the build to fail on clazy
issues
+ CXXFLAGS: -Wno-deprecated-declarations
+ CC: clang
+ CXX: clazy
+ script:
+ - git config --global --add safe.directory $CI_PROJECT_DIR
+ - python3 -u ci-utilities/run-ci-build.py --project $CI_PROJECT_NAME
--branch $CI_COMMIT_REF_NAME --platform Linux/Qt6/Shared
--only-setup-environment
+ - mkdir -p /tmp/$CI_PROJECT_NAME-clazy-build
+ - cd /tmp/$CI_PROJECT_NAME-clazy-build
+ - cmake -DENABLE_PCH=OFF -DKF_SKIP_PO_PROCESSING=True -G Ninja
-DCMAKE_INSTALL_PREFIX=$CI_PROJECT_DIR/_install -DKF6DocTools_FOUND=false
$CI_PROJECT_DIR
+ - ninja -k 0
+ artifacts: null
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kontactinterface-26.04.3/.kde-ci.yml
new/kontactinterface-26.08.0/.kde-ci.yml
--- old/kontactinterface-26.04.3/.kde-ci.yml 2026-06-06 06:18:52.000000000
+0200
+++ new/kontactinterface-26.08.0/.kde-ci.yml 2026-08-02 07:45:11.000000000
+0200
@@ -14,4 +14,6 @@
Options:
require-passing-tests-on: ['Linux', 'FreeBSD', 'Windows']
cmake-options: '-DWARNINGS_AS_ERRORS=ON'
- enable-lsan: True
+ cppcheck-arguments: '--enable=warning,performance,portability,style
--suppress-xml=cppcheck-suppressions.xml'
+ require-cppcheck-clean: true
+ enable-lsan: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kontactinterface-26.04.3/.pre-commit-config.yaml
new/kontactinterface-26.08.0/.pre-commit-config.yaml
--- old/kontactinterface-26.04.3/.pre-commit-config.yaml 2026-06-06
06:18:52.000000000 +0200
+++ new/kontactinterface-26.08.0/.pre-commit-config.yaml 2026-08-02
07:45:11.000000000 +0200
@@ -20,8 +20,12 @@
- id: check-symlinks
- id: destroyed-symlinks
- id: check-executables-have-shebangs
+ - repo: https://github.com/fsfe/reuse-tool
+ rev: v6.2.0
+ hooks:
+ - id: reuse-lint-file
- repo: https://github.com/pre-commit/mirrors-clang-format
- rev: v21.1.8
+ rev: v22.1.5
hooks:
- id: clang-format
# force using this project's configuration rather
@@ -29,14 +33,14 @@
args: ["--style=file:.clang-format-pre-commit"]
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
- rev: v0.15.0
+ rev: v0.15.12
hooks:
# Run the linter.
- id: ruff
# Run the formatter.
- id: ruff-format
- repo: https://github.com/codespell-project/codespell
- rev: v2.4.1
+ rev: v2.4.2
hooks:
- id: codespell
exclude:
(textemoticons/core/data/emoji.json|textgrammarcheck/grammalecte/autotests/data/result1.json|texttranslator/translator/plugins/bergamot/autotests/data/modellanguages/models.json|textgrammarcheck/languagetool/autotests/data/test2.json|textautocorrection/core/autotests/data/custom-fr-ref.xml|textgrammarcheck/common/autotests/grammarresultutiltest.cpp|textautocorrection/core/autotests/data/custom-fr.xml)
@@ -45,15 +49,23 @@
hooks:
- id: gersemi
- repo: https://github.com/DavidAnson/markdownlint-cli2
- rev: v0.20.0
+ rev: v0.22.1
hooks:
- id: markdownlint-cli2
files: \.(md|mdown|markdown)$
- repo: https://github.com/scop/pre-commit-shfmt
- rev: v3.12.0-2
+ rev: v3.13.1-1
hooks:
- id: shfmt
- repo: https://github.com/shellcheck-py/shellcheck-py
rev: v0.11.0.1
hooks:
- id: shellcheck
+ - repo: https://github.com/efrecon/pre-commit-hook-lxml
+ rev: v0.1.4
+ hooks:
+ - id: format-xml
+ args:
[--declaration=double-quotes,--self-closing=nospace,--indent=2,--write]
+ files: \.(xml|kcfg)$
+ types: []
+ exclude: \.(svg)$
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kontactinterface-26.04.3/CMakeLists.txt
new/kontactinterface-26.08.0/CMakeLists.txt
--- old/kontactinterface-26.04.3/CMakeLists.txt 2026-06-06 06:18:52.000000000
+0200
+++ new/kontactinterface-26.08.0/CMakeLists.txt 2026-08-02 07:45:11.000000000
+0200
@@ -1,20 +1,23 @@
# SPDX-FileCopyrightText: none
# SPDX-License-Identifier: BSD-3-Clause
-cmake_minimum_required(VERSION 3.27)
-set(PIM_VERSION "6.7.3")
+cmake_minimum_required(VERSION 3.29)
+set(PIM_VERSION "6.8.0")
project(KontactInterface VERSION ${PIM_VERSION})
# ECM setup
-set(KF_MIN_VERSION "6.22.0")
+set(KF_MIN_VERSION "6.25.0")
set(QT_REQUIRED_VERSION "6.9.0")
find_package(ECM ${KF_MIN_VERSION} CONFIG REQUIRED)
-set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
-set(CMAKE_CXX_SCAN_FOR_MODULES OFF)
+set(CMAKE_MODULE_PATH
+ ${CMAKE_CURRENT_SOURCE_DIR}/cmake/ecmcopy
+ ${ECM_MODULE_PATH}
+)
+
include(KDEInstallDirs)
include(KDECMakeSettings)
include(KDECompilerSettings NO_POLICY_SCOPE)
-
+include(ECMInstalledLibraryCheck)
include(ECMGenerateExportHeader)
include(ECMGenerateHeaders)
@@ -30,6 +33,9 @@
if(GIT_SOURCE_TARBALL)
set(PRE_COMMIT_INSTALLED FALSE)
+ include(KDEGitCommitHooks)
+ include(KDEClangFormat)
+ kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
if(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR})
if(EXISTS "${PROJECT_SOURCE_DIR}/.git/hooks/pre-commit")
file(READ "${PROJECT_SOURCE_DIR}/.git/hooks/pre-commit"
FILE_CONTENTS)
@@ -44,35 +50,38 @@
endif()
endif()
if(NOT ${PRE_COMMIT_INSTALLED})
- find_program(PRE_COMMIT_EXECUTABLE pre-commit)
- if(PRE_COMMIT_EXECUTABLE)
+ function(install_hook executable hook_name)
message(
STATUS
- "This module has pre-commit support. pre-commit binary was
found. Installing pre-commit hook"
+ "This module has ${hook_name} support. ${hook_name} binary was
found. Installing ${hook_name} hook"
)
execute_process(
COMMAND
- "${PRE_COMMIT_EXECUTABLE}" install -f
+ "${executable}" install -f
ERROR_QUIET
RESULT_VARIABLE _precommitresult
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
)
if(_precommitresult EQUAL 0)
- message(STATUS "Pre-commit installed.")
+ message(STATUS "${hook_name} installed.")
else()
message(
WARNING
- "Error during installing pre-commit hook:
${PRE_COMMIT_EXECUTABLE} project source dir ${PROJECT_SOURCE_DIR}"
+ "Error during installing ${hook_name} hook: ${executable}
project source dir ${PROJECT_SOURCE_DIR}"
)
- include(KDEGitCommitHooks)
- include(KDEClangFormat)
- kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
endif()
+ endfunction()
+
+ find_program(PREK_EXECUTABLE prek)
+ if(PREK_EXECUTABLE)
+ install_hook(${PREK_EXECUTABLE} "Prek")
else()
- message(WARNING "This module has pre-commit support. pre-commit
binary was not found.")
- include(KDEGitCommitHooks)
- include(KDEClangFormat)
- kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
+ find_program(PRE_COMMIT_EXECUTABLE pre-commit)
+ if(PRE_COMMIT_EXECUTABLE)
+ install_hook(${PRE_COMMIT_EXECUTABLE} "pre-commit")
+ else()
+ message(WARNING "This module has pre-commit support.
pre-commit binary was not found.")
+ endif()
endif()
endif()
endif()
@@ -93,7 +102,6 @@
add_definitions(-DTRANSLATION_DOMAIN=\"kontactinterfaces6\")
-set(KONTACTINTERFACE_LIB_VERSION ${PIM_VERSION})
set(CMAKECONFIG_INSTALL_DIR
"${KDE_INSTALL_CMAKEPACKAGEDIR}/KPim6KontactInterface")
ecm_setup_version(PROJECT VARIABLE_PREFIX KONTACTINTERFACE
@@ -144,8 +152,8 @@
# see e.g. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56556 or
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79328
string(APPEND CMAKE_CXX_FLAGS " -Wshadow")
endif()
-ecm_set_disabled_deprecation_versions(QT 6.11.0
- KF 6.23.0
+ecm_set_disabled_deprecation_versions(QT 6.12.0
+ KF 6.28.0
)
set(KONTACTINTERFACE_HAVE_X11 ${X11_FOUND})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kontactinterface-26.04.3/CMakePresets.json.license
new/kontactinterface-26.08.0/CMakePresets.json.license
--- old/kontactinterface-26.04.3/CMakePresets.json.license 2026-06-06
06:18:52.000000000 +0200
+++ new/kontactinterface-26.08.0/CMakePresets.json.license 1970-01-01
01:00:00.000000000 +0100
@@ -1,2 +0,0 @@
-# SPDX-FileCopyrightText: 2021-2026 Laurent Montel <[email protected]>
-# SPDX-License-Identifier: BSD-3-Clause
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/kontactinterface-26.04.3/README-ECMInstalledLibraryCheck.md
new/kontactinterface-26.08.0/README-ECMInstalledLibraryCheck.md
--- old/kontactinterface-26.04.3/README-ECMInstalledLibraryCheck.md
1970-01-01 01:00:00.000000000 +0100
+++ new/kontactinterface-26.08.0/README-ECMInstalledLibraryCheck.md
2026-08-02 07:45:11.000000000 +0200
@@ -0,0 +1,11 @@
+# Check Libs
+
+See [C++ Library Headers & CMake Config
Files](https://frinring.wordpress.com/2026/06/30/c-library-headers-cmake-config-files-are-we-serviceable/)
+
+## Execute tests
+
+```bash
+ninja install
+
+ninja all_installed_library_check
+```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/kontactinterface-26.04.3/README-pre-commit.md.license
new/kontactinterface-26.08.0/README-pre-commit.md.license
--- old/kontactinterface-26.04.3/README-pre-commit.md.license 2026-06-06
06:18:52.000000000 +0200
+++ new/kontactinterface-26.08.0/README-pre-commit.md.license 1970-01-01
01:00:00.000000000 +0100
@@ -1,2 +0,0 @@
-SPDX-FileCopyrightText: 2023-2026 Laurent Montel <[email protected]>
-SPDX-License-Identifier: BSD-3-Clause
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kontactinterface-26.04.3/README-qdoc.md.license
new/kontactinterface-26.08.0/README-qdoc.md.license
--- old/kontactinterface-26.04.3/README-qdoc.md.license 2026-06-06
06:18:52.000000000 +0200
+++ new/kontactinterface-26.08.0/README-qdoc.md.license 1970-01-01
01:00:00.000000000 +0100
@@ -1,2 +0,0 @@
-SPDX-FileCopyrightText: 2023-2026 Laurent Montel <[email protected]>
-SPDX-License-Identifier: BSD-3-Clause
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kontactinterface-26.04.3/REUSE.toml
new/kontactinterface-26.08.0/REUSE.toml
--- old/kontactinterface-26.04.3/REUSE.toml 2026-06-06 06:18:52.000000000
+0200
+++ new/kontactinterface-26.08.0/REUSE.toml 2026-08-02 07:45:11.000000000
+0200
@@ -6,13 +6,43 @@
SPDX-PackageDownloadLocation = "https://invent.kde.org/pim/kontactinterface"
[[annotations]]
-path = ["src/kontactinterface-index.qdoc", "src/kontactinterface.qdoc",
"src/kontactinterface.qdocconf"]
+path = ["src/kontactinterface-index.qdoc", "src/kontactinterface.qdoc",
"src/kontactinterface.qdocconf", "readme-build-ftime.txt"]
precedence = "aggregate"
SPDX-FileCopyrightText = "none"
SPDX-License-Identifier = "CC0-1.0"
[[annotations]]
-path = [".gersemirc"]
+path = [".gersemirc", "cppcheck-suppressions.xml", ".clang-tidy"]
precedence = "aggregate"
SPDX-FileCopyrightText = "Allen Winter <[email protected]>"
SPDX-License-Identifier = "CC0-1.0"
+
+[[annotations]]
+path = ["README-pre-commit.md"]
+precedence = "aggregate"
+SPDX-FileCopyrightText = "2023-2026 Laurent Montel <[email protected]>"
+SPDX-License-Identifier = "BSD-3-Clause"
+
+[[annotations]]
+path = ["CMakePresets.json"]
+precedence = "aggregate"
+SPDX-FileCopyrightText = "2021-2026 Laurent Montel <[email protected]>"
+SPDX-License-Identifier = "BSD-3-Clause"
+
+[[annotations]]
+path = ["README-qdoc.md"]
+precedence = "aggregate"
+SPDX-FileCopyrightText = "2023-2026 Laurent Montel <[email protected]>"
+SPDX-License-Identifier = "BSD-3-Clause"
+
+[[annotations]]
+path = ["po/**"]
+precedence = "aggregate"
+SPDX-FileCopyrightText = "none"
+SPDX-License-Identifier = "LGPL-2.0-or-later"
+
+[[annotations]]
+path = ["README-ECMInstalledLibraryCheck.md"]
+precedence = "aggregate"
+SPDX-FileCopyrightText = "2026 Laurent Montel <[email protected]>"
+SPDX-License-Identifier = "BSD-3-Clause"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/kontactinterface-26.04.3/cmake/ecmcopy/ECMInstalledLibraryCheck.cmake
new/kontactinterface-26.08.0/cmake/ecmcopy/ECMInstalledLibraryCheck.cmake
--- old/kontactinterface-26.04.3/cmake/ecmcopy/ECMInstalledLibraryCheck.cmake
1970-01-01 01:00:00.000000000 +0100
+++ new/kontactinterface-26.08.0/cmake/ecmcopy/ECMInstalledLibraryCheck.cmake
2026-08-02 07:45:11.000000000 +0200
@@ -0,0 +1,769 @@
+# SPDX-FileCopyrightText: 2026 Friedrich W. H. Kossebau <[email protected]>
+#
+# SPDX-License-Identifier: BSD-3-Clause
+
+#[=======================================================================[.rst:
+ECMInstalledLibraryCheck
+------------------------
+
+Generates a check to test artifacts of the library installation, like the
+self-containedness of the CMake config files as well as of the official public
+headers in the deployed layout.
+
+::
+
+ ecm_add_installed_library_check(<library_target>
+ [PACKAGE_NAME <package_name>]
+ [PACKAGE_VERSION <package_version>]
+ [PACKAGE_TARGET_NAMESPACE <package_target_namespace>]
+ [NO_PACKAGE_TARGET_NAMESPACE]
+ [COMPILE_DEFINITIONS <definition> [...]]
+ [EXTRA_DEPENDENCIES <dependency> [<version>] [...]]
+ [EXTRA_LINK_LIBRARIES <library> [...]])
+
+The function creates a target "<library_target>_installed_library_check" which
+can be invoked after the installation to check if the installed library
artifacts
+are self-contained when used from a consumer.
+All these targets are added as dependency to a target
+"all_installed_library_check", which is created at the level where this module
+is first included.
+The check generates a CMake project with a dummy library which searches the
given
+package for any specified version, links to the exported target as imported
from
+the package's Cmake config file and as its sources for each given include
strings
+adds a C++ source file with just the content "#include <include_string>".
+This project then is configured with cmake and all these sources are built.
+
+``PACKAGE_NAME`` specifies the name of the CMake package to check for.
+The default is "${PROJECT_NAME}".
+
+``PACKAGE_VERSION`` specifies the version of the CMake package to check for.
+The default is "${PROJECT_VERSION}" if set, otherwise none.
+
+``PACKAGE_TARGET_NAMESPACE`` specifies what namespace the exported target
+name of the library is placed in. The default is the value estimated for
+the package name, unless ``NO_PACKAGE_TARGET_NAMESPACE`` is set.
+
+``NO_PACKAGE_TARGET_NAMESPACE`` defines that the library target is exported
+in the package without any namespace.
+
+``COMPILE_DEFINITIONS`` can be used to set custom definitions for the test
+builds against the headers.
+
+``EXTRA_DEPENDENCIES`` can be used to add custom dependencies to search for
+with "find_package()`. This can be used if the current dependencies declared
+in the installed CMake config are not complete, but can not be changed.
+
+``EXTRA_LINK_LIBRARIES`` can be used to add custom libraries to link to with
+"target_link_libraries()`. This can be used if the current list of libraries
+in the public interface is not complete, but can not be changed.
+
+::
+
+ ecm_installed_library_check_include_strings(<library_target>
+ HEADERS <package_name>
+ [PREFIX <prefix>])
+
+
+``HEADERS`` specifies the header files whose base names will be available as
+public include strings.
+
+``PREFIX`` specifies a prefix, which consumers need to append next to the base
names
+of the headers passed to ``HEADERS``. The argument <prefix> is specified
without a
+trailing "/". Default is none.
+
+::
+
+ ecm_installed_library_check_cmake_variable(<library_target>
+ NAME <name>
+ VALUE <value>
+ [TYPE <type>])
+
+
+``NAME`` specifies the name of a variable expected to be set after finding the
+package.
+
+``VALUE`` specifies the value expected to be set for the variable. For
variables
+of the type "BOOL" the usual evaluation of CMake to a boolean value is
compared.
+
+``TYPE`` specifies the type of the variable. The options are "BOOL", "STRING".
+Default is "STRING"
+
+::
+
+ ecm_installed_library_check_compile_definition(<library_target>
+ NAME <name>
+ [VALUE <value>]
+ [UNDEFINED])
+
+
+``NAME`` specifies the name of a macro to test.
+
+``VALUE`` specifies the value expected to be set for the macro If not passed,
+the macro is only tested for being defined. Only numeric values are supported.
+
+``UNDEFINED`` specifies if the macro should be tested for being undefined.
+
+::
+
+ ecm_installed_library_check_preprocessor_macro(<library_target>
+ NAME <name>
+ [VALUE <value>]
+ [UNDEFINED]
+ [SILENT])
+
+
+``NAME`` specifies the name of a macro to test.
+
+``VALUE`` specifies the value expected to be set for the macro If not passed,
+the macro is only tested for being defined. Only numeric values are supported.
+
+``UNDEFINED`` specifies if the macro should be tested for being undefined.
+
+``SILENT`` specifies if the positive result should not be reported.
+
+::
+
+ ecm_installed_library_check_version_preprocessor_macros(<library_target>
+ PREFIX <prefix>
+ [VERSION <version>]
+ [SILENT])
+
+
+``PREFIX`` specifies the prefix of the version macros to test. The expected
macro
+names are: "<prefix>_VERSION" (hexadecimal number), "<prefix>_VERSION_MAJOR",
+"<prefix>_VERSION_MINOR" and "<prefix>_VERSION_PATCH".
+
+``VERSION`` specifies the version string "<major>.<minor>.<patch>".
+
+``SILENT`` specifies if the positive results should not be reported.
+
+Example usage:
+
+.. code-block:: cmake
+
+ # add a non-default target "MyLib_installed_library_check",
+ # which will test for a CMake config file for "MyPackage",
+ # at version "1.0", with the imported library target
+ # "MyPackage::MyLib" and whose include strings (headers)
+ # can be used self-contained when linking the target
+ ecm_add_installed_library_check(MyLib
+ PACKAGE_NAME "MyPackage"
+ PACKAGE_VERSION "1.0"
+ )
+
+ # for any <MLFoo> etc. includes
+ ecm_installed_library_check_include_strings(MyLib
+ HEADERS
+ /absolute/path/MLFoo
+ relative/path/MLBar
+ # etc
+ )
+
+ # for any <ML/Foo> etc. includes
+ ecm_installed_library_check_include_strings(MyLib
+ HEADERS
+ /absolute/path/Foo
+ relative/path/Bar
+ # etc
+ PREFIX ML
+ )
+
+Since 6.29
+#]=======================================================================]
+
+cmake_policy(VERSION 3.29)
+
+if(NOT TARGET all_installed_library_check)
+ add_custom_target(all_installed_library_check)
+endif()
+
+# Purpose: testing basic self-containedness of public headers and cmake config
files
+# no testing of actual symbols or template methods
+# TODO: support testing with other build metadata formats, like pkgconfig?
+function(ecm_add_installed_library_check _target)
+ set(options NO_PACKAGE_TARGET_NAMESPACE)
+ set(oneValueArgs
+ PACKAGE_NAME
+ PACKAGE_VERSION
+ PACKAGE_TARGET_NAMESPACE
+ )
+ set(multiValueArgs
+ EXTRA_DEPENDENCIES
+ EXTRA_LINK_LIBRARIES
+ COMPILE_DEFINITIONS
+ )
+
+ cmake_parse_arguments(ARG "${options}" "${oneValueArgs}"
"${multiValueArgs}" ${ARGN})
+
+ # argument checks
+ if(ARG_UNPARSED_ARGUMENTS)
+ message(
+ FATAL_ERROR
+ "Unknown keywords given to ecm_add_installed_library_check():
\"${ARG_UNPARSED_ARGUMENTS}\""
+ )
+ endif()
+ if(ARG_NO_PACKAGE_TARGET_NAMESPACE AND ARG_PACKAGE_TARGET_NAMESPACE)
+ message(
+ FATAL_ERROR
+ "ecm_add_installed_library_check cannot be called with both
NO_PACKAGE_TARGET_NAMESPACE and PACKAGE_TARGET_NAMESPACE args."
+ )
+ endif()
+ set(_library_types
+ "STATIC_LIBRARY"
+ "SHARED_LIBRARY"
+ "INTERFACE_LIBRARY"
+ )
+ get_target_property(_type ${_target} TYPE)
+ if(NOT ${_type} IN_LIST _library_types)
+ message(
+ FATAL_ERROR
+ "ecm_add_installed_library_check cannot be called on a target
which is not some library. Was: ${_type}"
+ )
+ endif()
+
+ # setup data
+ if(ARG_PACKAGE_NAME)
+ set(_package_name "${ARG_PACKAGE_NAME}")
+ else()
+ set(_package_name "${PROJECT_NAME}")
+ endif()
+ if(ARG_PACKAGE_VERSION)
+ set(_package_version ${ARG_PACKAGE_VERSION})
+ else()
+ if(PROJECT_VERSION)
+ set(_package_version ${PROJECT_VERSION})
+ else()
+ set(_package_version)
+ endif()
+ endif()
+ if(_package_version)
+ set(_package_version_exact "EXACT")
+ else()
+ set(_package_version_exact)
+ endif()
+ if(ARG_PACKAGE_TARGET_NAMESPACE)
+ set(_library_target_namespace ${ARG_PACKAGE_TARGET_NAMESPACE})
+ else()
+ if(ARG_NO_PACKAGE_TARGET_NAMESPACE)
+ set(_library_target_namespace)
+ else()
+ set(_library_target_namespace "${_package_name}::")
+ endif()
+ endif()
+ set(_extra_find_packages_statements)
+ if(ARG_EXTRA_DEPENDENCIES)
+ list(LENGTH ARG_EXTRA_DEPENDENCIES _deps_count)
+ set(_i 0)
+ while(${_i} LESS ${_deps_count})
+ list(GET ARG_EXTRA_DEPENDENCIES ${_i} _extra_package_name)
+ math(EXPR _i "${_i} + 1")
+ set(_extra_package_version_string)
+ # check next arg if it is version and thus to be consumed
+ if(${_i} LESS ${_deps_count})
+ list(GET ARG_EXTRA_DEPENDENCIES ${_i} _extra_package_version)
+ if(_extra_package_version MATCHES
"^([0-9]+)\\.([0-9]+)(\\.([0-9]+))?$")
+ set(_extra_package_version_string "
${_extra_package_version}")
+ math(EXPR _i "${_i} + 1")
+ endif()
+ endif()
+ set(_extra_find_packages_statements
+
"find_package(${_extra_package_name}${_extra_package_version_string}
REQUIRED)\n"
+ )
+ endwhile()
+ endif()
+ set(_extra_link_libraries_list)
+ foreach(_link_library IN LISTS ARG_EXTRA_LINK_LIBRARIES)
+ string(APPEND _extra_link_libraries_list "\n ${_link_library}")
+ endforeach()
+ set(_compile_definitions_statement)
+ if(ARG_COMPILE_DEFINITIONS)
+ set(_compile_definitions_statement
+ "target_compile_definitions(InstalledLibraryCheck PRIVATE
${ARG_COMPILE_DEFINITIONS})\n"
+ )
+ endif()
+ set(_prefix_path "${CMAKE_INSTALL_PREFIX}")
+
+ set(_compiler_propagation)
+ foreach(_compiler IN ITEMS CMAKE_C_COMPILER CMAKE_CXX_COMPILER)
+ if(${_compiler})
+ list(APPEND _compiler_propagation "-D${_compiler}=${${_compiler}}")
+ endif()
+ endforeach()
+
+ set(_languages)
+ if(CMAKE_C_COMPILER)
+ string(APPEND _languages " C")
+ endif()
+ if(CMAKE_CXX_COMPILER)
+ string(APPEND _languages " CXX")
+ endif()
+ if(_languages)
+ string(PREPEND _languages " LANGUAGES")
+ endif()
+
+ # prepare (generator) expressions
+ set(_installed_library_check_dir
"${CMAKE_CURRENT_BINARY_DIR}/${_target}_ECMInstalledLibraryCheck")
+ set(_include_strings
"$<TARGET_PROPERTY:${_target},ECM_INSTALLED_LIBRARY_INCLUDE_STRINGS>")
+ set(_include_strings_sorted "$<LIST:SORT,${_include_strings}>")
+ set(_include_strings_lines "$<JOIN:${_include_strings_sorted},\n >")
+ set(_exported_target_name "$<TARGET_PROPERTY:${_target},EXPORT_NAME>")
+ set(_library_target_name
+
"${_library_target_namespace}$<IF:$<BOOL:${_exported_target_name}>,${_exported_target_name},${_target}>"
+ )
+
+ set(_cmake_variables_check_statements
+
"$<TARGET_PROPERTY:${_target},ECM_INSTALLED_LIBRARY_CMAKE_VARIABLES_CHECK_CODE>"
+ )
+
+ set(_compile_definitions_check_statements
+
"$<TARGET_PROPERTY:${_target},ECM_INSTALLED_LIBRARY_COMPILE_DEFINITIONS_CHECK_CODE>"
+ )
+ set(_source_file "ecm_installed_library_check_compile_definitions.cpp")
+ set(_compile_definitions_check_code
+ "$<IF:$<BOOL:${_compile_definitions_check_statements}>,
+file(GENERATE OUTPUT ${_source_file} CONTENT
\"${_compile_definitions_check_statements}\")\n
+target_sources(InstalledLibraryCheck PRIVATE ${_source_file})\n,>"
+ )
+
+ set(_preprocessor_macro_check_statements
+
"$<TARGET_PROPERTY:${_target},ECM_INSTALLED_LIBRARY_PREPROCESSOR_MACRO_CHECK_CODE>"
+ )
+ set(_preprocessor_macro_check_code
+ "$<IF:$<BOOL:${_preprocessor_macro_check_statements}>,
+\"${_preprocessor_macro_check_statements}\",>"
+ )
+
+ file(
+ GENERATE OUTPUT "${_installed_library_check_dir}/CMakeLists.txt"
+ CONTENT
+ "# This file was generated by ecm_add_installed_library_check().
DO NOT EDIT!
+cmake_minimum_required(VERSION 3.29)
+
+project(InstalledLibraryCheck${_languages})
+
+find_package(${_package_name} ${_package_version} ${_package_version_exact}
CONFIG REQUIRED NO_DEFAULT_PATH
+ PATHS \"${_prefix_path}\"
+)
+${_extra_find_packages_statements}
+include(FeatureSummary)
+feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
+${_cmake_variables_check_statements}
+add_library(InstalledLibraryCheck MODULE)
+target_link_libraries(InstalledLibraryCheck
+ ${_library_target_name}${_extra_link_libraries_list}
+)
+${_compile_definitions_statement}
+set(_include_strings
+ ${_include_strings_lines}
+)
+${_compile_definitions_check_code}
+set(_preprocessor_macro_check_statements${_preprocessor_macro_check_code})
+
+foreach(_include_string IN LISTS _include_strings)
+ string(REPLACE \"/\" \"__\" _escaped_include_string \${_include_string})
+ set(_source_file
\"\${CMAKE_CURRENT_BINARY_DIR}/\${_escaped_include_string}.cpp\")
+ file(GENERATE OUTPUT \${_source_file} CONTENT \"#include
<\${_include_string}>\\n\${_preprocessor_macro_check_statements}\")
+ target_sources(InstalledLibraryCheck PRIVATE \${_source_file})
+endforeach()
+"
+ )
+
+ set(_check_target_name ${_target}_installed_library_check)
+ add_custom_target(
+ ${_check_target_name}
+ COMMAND
+ ${CMAKE_COMMAND}
+ # TODO: other options to pass on? e.g. for cross-compilation,
tool-chain file?
+ -G ${CMAKE_GENERATOR} ${_compiler_propagation} --fresh .
+ COMMAND
+ ${CMAKE_COMMAND} --build .
+ WORKING_DIRECTORY ${_installed_library_check_dir}
+ JOB_SERVER_AWARE
+ )
+
+ add_dependencies(all_installed_library_check ${_check_target_name})
+endfunction()
+
+function(ecm_installed_library_check_include_strings _target)
+ set(options)
+ set(oneValueArgs PREFIX)
+ set(multiValueArgs HEADERS)
+
+ cmake_parse_arguments(ARG "${options}" "${oneValueArgs}"
"${multiValueArgs}" ${ARGN})
+
+ # argument checks
+ if(ARG_UNPARSED_ARGUMENTS)
+ message(
+ FATAL_ERROR
+ "Unknown keywords given to
ecm_installed_library_check_include_strings(): \"${ARG_UNPARSED_ARGUMENTS}\""
+ )
+ endif()
+
+ # store data with library target
+ get_target_property(_names ${_target}
ECM_INSTALLED_LIBRARY_INCLUDE_STRINGS)
+ if(_names STREQUAL "_names-NOTFOUND")
+ set(_names)
+ endif()
+
+ if(ARG_PREFIX)
+ string(APPEND ARG_PREFIX "/")
+ endif()
+ foreach(_header IN LISTS ARG_HEADERS)
+ cmake_path(GET _header FILENAME _name)
+ list(APPEND _names "${ARG_PREFIX}${_name}")
+ endforeach()
+
+ set_target_properties(
+ ${_target}
+ PROPERTIES
+ ECM_INSTALLED_LIBRARY_INCLUDE_STRINGS
+ "${_names}"
+ )
+endfunction()
+
+function(ecm_installed_library_check_cmake_variable _target)
+ set(options)
+ set(oneValueArgs NAME TYPE VALUE)
+ set(multiValueArgs)
+
+ cmake_parse_arguments(ARG "${options}" "${oneValueArgs}"
"${multiValueArgs}" ${ARGN})
+
+ # argument checks
+ if(ARG_UNPARSED_ARGUMENTS)
+ message(
+ FATAL_ERROR
+ "Unknown keywords given to
ecm_installed_library_check_cmake_variable(): \"${ARG_UNPARSED_ARGUMENTS}\""
+ )
+ endif()
+ if(NOT DEFINED ARG_NAME)
+ message(
+ FATAL_ERROR
+ "Missing NAME argument to
ecm_installed_library_check_cmake_variable(): \"${ARG_UNPARSED_ARGUMENTS}\""
+ )
+ endif()
+ if(ARG_TYPE)
+ set(_variable_types
+ "BOOL"
+ "STRING"
+ )
+ if(NOT ${ARG_TYPE} IN_LIST _variable_types)
+ message(FATAL_ERROR "ecm_installed_library_check_cmake_variable
called with unknown type: ${ARG_TYPE}")
+ endif()
+ else()
+ set(ARG_TYPE "STRING")
+ endif()
+
+ # store code with library target
+ get_target_property(_code ${_target}
ECM_INSTALLED_LIBRARY_CMAKE_VARIABLES_CHECK_CODE)
+ if(_code STREQUAL "_code-NOTFOUND")
+ set(_code "\nmessage(STATUS \"Checking CMake variables\")\n")
+ endif()
+
+ if(${ARG_TYPE} STREQUAL "BOOL")
+ if(${ARG_VALUE})
+ set(_value_condition_code "\${${ARG_NAME}}")
+ set(_value_error_report "is FALSE, expecting TRUE")
+ else()
+ set(_value_condition_code "NOT \${${ARG_NAME}}")
+ set(_value_error_report "is TRUE, expecting FALSE")
+ endif()
+ else() # STRING
+ set(_value_condition_code "\${${ARG_NAME}} STREQUAL \"${ARG_VALUE}\"")
+ set(_value_error_report "is '\${${ARG_NAME}}', expecting
'${ARG_VALUE}'")
+ endif()
+
+ set(_var_check_code
+ "if(NOT DEFINED ${ARG_NAME})
+ message(SEND_ERROR \"${ARG_NAME}: not defined\")
+else()
+ if (${_value_condition_code})
+ message(STATUS \"${ARG_NAME}: passed\")
+ else()
+ message(SEND_ERROR \"${ARG_NAME}: ${_value_error_report}\")
+ endif()
+endif()
+"
+ )
+
+ string(APPEND _code "${_var_check_code}")
+
+ set_target_properties(
+ ${_target}
+ PROPERTIES
+ ECM_INSTALLED_LIBRARY_CMAKE_VARIABLES_CHECK_CODE
+ "${_code}"
+ )
+endfunction()
+
+function(
+ _ecm_installed_library_check_get_check_code
+ _target
+ _var_name
+ _property_name
+ _subject_name
+ _silent
+)
+ get_target_property(_check_code ${_target} ${_property_name})
+ if(_check_code STREQUAL "_check_code-NOTFOUND")
+ if(_silent)
+ set(_check_code "")
+ else()
+ set(_check_code "#pragma message(\\\"Checking
${_subject_name}\\\")\n")
+ endif()
+ string(
+ APPEND _check_code
+ "#define _ECM_INSTALLED_LIBRARY_CHECK_VALUE_TO_STRING(x) #x
+#define _ECM_INSTALLED_LIBRARY_CHECK_VALUE(x)
_ECM_INSTALLED_LIBRARY_CHECK_VALUE_TO_STRING(x)
+"
+ )
+ endif()
+ set(${_var_name} ${_check_code} PARENT_SCOPE)
+endfunction()
+
+function(_ecm_installed_library_check_macro_value_check_code _var_name _name
_value _silent)
+ set(_check_code
+ "#if !defined(${_name})
+ #error(\\\"${_name}: not defined\\\")
+#else
+ #if ${_name} != ${_value}
+ #pragma message(\\\"${_name}: is '\\\"
_ECM_INSTALLED_LIBRARY_CHECK_VALUE(${_name}) \\\"'\\\")
+ #error(\\\"${_name}: expecting '${_value}'\\\")
+"
+ )
+ if(NOT _silent)
+ string(
+ APPEND _check_code
+ " #else
+ #pragma message(\\\"${_name}: passed\\\")
+"
+ )
+ endif()
+ string(
+ APPEND _check_code
+ " #endif
+#endif
+"
+ )
+ set(${_var_name} ${_check_code} PARENT_SCOPE)
+endfunction()
+
+function(_ecm_installed_library_check_macro_defined_check_code _var_name _name
_silent)
+ set(_check_code
+ "#if !defined(${_name})
+ #error(\\\"${_name}: is undefined, expecting defined\\\")
+"
+ )
+ if(NOT _silent)
+ string(
+ APPEND _check_code
+ "#else
+ #pragma message(\\\"${_name}: passed\\\")
+"
+ )
+ endif()
+ string(
+ APPEND _check_code
+ "#endif
+"
+ )
+
+ set(${_var_name} ${_check_code} PARENT_SCOPE)
+endfunction()
+
+function(_ecm_installed_library_check_macro_undefined_check_code _var_name
_name _silent)
+ set(_check_code
+ "#if defined(${_name})
+ #error(\\\"${_name}: is defined, expecting undefined\\\")
+"
+ )
+ if(NOT _silent)
+ string(
+ APPEND _check_code
+ "#else
+ #pragma message(\\\"${_name}: passed\\\")
+"
+ )
+ endif()
+ string(
+ APPEND _check_code
+ "#endif
+"
+ )
+ set(${_var_name} ${_check_code} PARENT_SCOPE)
+endfunction()
+
+function(ecm_installed_library_check_compile_definition _target)
+ set(options UNDEFINED)
+ set(oneValueArgs NAME VALUE)
+ set(multiValueArgs)
+
+ cmake_parse_arguments(ARG "${options}" "${oneValueArgs}"
"${multiValueArgs}" ${ARGN})
+
+ # argument checks
+ if(ARG_UNPARSED_ARGUMENTS)
+ message(
+ FATAL_ERROR
+ "Unknown keywords given to
ecm_installed_library_check_compile_definition(): \"${ARG_UNPARSED_ARGUMENTS}\""
+ )
+ endif()
+ if(NOT DEFINED ARG_NAME)
+ message(
+ FATAL_ERROR
+ "Missing NAME argument to
ecm_installed_library_check_compile_definition(): \"${ARG_UNPARSED_ARGUMENTS}\""
+ )
+ endif()
+ if(ARG_VALUE AND ARG_UNDEFINED)
+ message(
+ FATAL_ERROR
+ "ecm_installed_library_check_compile_definition cannot be called
with both VALUE and UNDEFINED args."
+ )
+ endif()
+
+ # store code with library target
+ _ecm_installed_library_check_get_check_code(${_target} _code
+ ECM_INSTALLED_LIBRARY_COMPILE_DEFINITIONS_CHECK_CODE "compile
definitions" FALSE
+ )
+
+ if(DEFINED ARG_VALUE)
+ _ecm_installed_library_check_macro_value_check_code(_var_check_code
${ARG_NAME} ${ARG_VALUE} FALSE)
+ elseif(ARG_UNDEFINED)
+
_ecm_installed_library_check_macro_undefined_check_code(_var_check_code
${ARG_NAME} FALSE)
+ else()
+ _ecm_installed_library_check_macro_defined_check_code(_var_check_code
${ARG_NAME} FALSE)
+ endif()
+
+ string(APPEND _code "${_var_check_code}")
+
+ set_target_properties(
+ ${_target}
+ PROPERTIES
+ ECM_INSTALLED_LIBRARY_COMPILE_DEFINITIONS_CHECK_CODE
+ "${_code}"
+ )
+endfunction()
+
+function(ecm_installed_library_check_preprocessor_macro _target)
+ set(options
+ UNDEFINED
+ SILENT
+ )
+ set(oneValueArgs NAME VALUE)
+ set(multiValueArgs)
+
+ cmake_parse_arguments(ARG "${options}" "${oneValueArgs}"
"${multiValueArgs}" ${ARGN})
+
+ # argument checks
+ if(ARG_UNPARSED_ARGUMENTS)
+ message(
+ FATAL_ERROR
+ "Unknown keywords given to
ecm_installed_library_check_preprocessor_macro(): \"${ARG_UNPARSED_ARGUMENTS}\""
+ )
+ endif()
+ if(NOT DEFINED ARG_NAME)
+ message(
+ FATAL_ERROR
+ "Missing NAME argument to
ecm_installed_library_check_preprocessor_macro(): \"${ARG_UNPARSED_ARGUMENTS}\""
+ )
+ endif()
+ if(ARG_VALUE AND ARG_UNDEFINED)
+ message(
+ FATAL_ERROR
+ "ecm_installed_library_check_preprocessor_macro cannot be called
with both VALUE and UNDEFINED args."
+ )
+ endif()
+
+ # store code with library target
+ _ecm_installed_library_check_get_check_code(${_target} _code
+ ECM_INSTALLED_LIBRARY_PREPROCESSOR_MACRO_CHECK_CODE "preprocessor
macros" ${ARG_SILENT}
+ )
+
+ if(ARG_SILENT)
+ set(_silent TRUE)
+ else()
+ set(_silent FALSE)
+ endif()
+
+ if(DEFINED ARG_VALUE)
+ _ecm_installed_library_check_macro_value_check_code(_var_check_code
${ARG_NAME} ${ARG_VALUE} ${_silent})
+ elseif(ARG_UNDEFINED)
+
_ecm_installed_library_check_macro_undefined_check_code(_var_check_code
${ARG_NAME} ${_silent})
+ else()
+ _ecm_installed_library_check_macro_defined_check_code(_var_check_code
${ARG_NAME} ${_silent})
+ endif()
+
+ string(APPEND _code "${_var_check_code}")
+
+ set_target_properties(
+ ${_target}
+ PROPERTIES
+ ECM_INSTALLED_LIBRARY_PREPROCESSOR_MACRO_CHECK_CODE
+ "${_code}"
+ )
+endfunction()
+
+function(ecm_installed_library_check_version_preprocessor_macros _target)
+ set(options SILENT)
+ set(oneValueArgs
+ PREFIX
+ VERSION
+ )
+ set(multiValueArgs)
+
+ cmake_parse_arguments(ARG "${options}" "${oneValueArgs}"
"${multiValueArgs}" ${ARGN})
+
+ # argument checks
+ if(ARG_UNPARSED_ARGUMENTS)
+ message(
+ FATAL_ERROR
+ "Unknown keywords given to
ecm_installed_library_check_version_preprocessor_macros():
\"${ARG_UNPARSED_ARGUMENTS}\""
+ )
+ endif()
+ if(NOT DEFINED ARG_PREFIX)
+ message(
+ FATAL_ERROR
+ "Missing NAME argument to
ecm_installed_library_check_version_preprocessor_macros():
\"${ARG_UNPARSED_ARGUMENTS}\""
+ )
+ endif()
+
+ if(NOT DEFINED ARG_VERSION)
+ set(ARG_VERSION "${PROJECT_VERSION}")
+ endif()
+ if(ARG_SILENT)
+ set(_silent SILENT)
+ else()
+ set(_silent)
+ endif()
+
+ string(REGEX MATCH "^0*([0-9]+)\\.0*([0-9]+)\\.0*([0-9]+)$" _
${ARG_VERSION})
+ set(_version_major ${CMAKE_MATCH_1})
+ set(_version_minor ${CMAKE_MATCH_2})
+ set(_version_patch ${CMAKE_MATCH_3})
+
+ math(
+ EXPR
+ _hex_number
+ "${_version_major}*65536 + ${_version_minor}*256 + ${_version_patch}"
+ OUTPUT_FORMAT HEXADECIMAL
+ )
+
+ ecm_installed_library_check_preprocessor_macro(${_target}
+ NAME ${ARG_PREFIX}_VERSION
+ VALUE ${_hex_number}
+ ${_silent}
+ )
+ ecm_installed_library_check_preprocessor_macro(${_target}
+ NAME ${ARG_PREFIX}_VERSION_MAJOR
+ VALUE ${_version_major}
+ ${_silent}
+ )
+ ecm_installed_library_check_preprocessor_macro(${_target}
+ NAME ${ARG_PREFIX}_VERSION_MINOR
+ VALUE ${_version_minor}
+ ${_silent}
+ )
+ ecm_installed_library_check_preprocessor_macro(${_target}
+ NAME ${ARG_PREFIX}_VERSION_PATCH
+ VALUE ${_version_patch}
+ ${_silent}
+ )
+endfunction()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kontactinterface-26.04.3/cppcheck-suppressions.xml
new/kontactinterface-26.08.0/cppcheck-suppressions.xml
--- old/kontactinterface-26.04.3/cppcheck-suppressions.xml 1970-01-01
01:00:00.000000000 +0100
+++ new/kontactinterface-26.08.0/cppcheck-suppressions.xml 2026-08-02
07:45:11.000000000 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<suppressions>
+ <suppress>
+ <id>shadowFunction</id>
+ </suppress>
+ <suppress>
+ <id>useStlAlgorithm</id>
+ </suppress>
+</suppressions>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kontactinterface-26.04.3/po/tr/kontactinterfaces6.po
new/kontactinterface-26.08.0/po/tr/kontactinterfaces6.po
--- old/kontactinterface-26.04.3/po/tr/kontactinterfaces6.po 2026-06-06
06:18:52.000000000 +0200
+++ new/kontactinterface-26.08.0/po/tr/kontactinterfaces6.po 2026-08-02
07:45:11.000000000 +0200
@@ -5,13 +5,13 @@
# H. İbrahim Güngör <[email protected]>, 2011.
# obsoleteman <[email protected]>, 2008.
# Kaan Ozdincer <[email protected]>, 2014.
-# Emir SARI <[email protected]>, 2022.
+# SPDX-FileCopyrightText: 2022, 2026 Emir SARI <[email protected]>
msgid ""
msgstr ""
"Project-Id-Version: kdepimlibs-kde4\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-11-17 11:53+0000\n"
-"PO-Revision-Date: 2022-03-20 12:11+0300\n"
+"PO-Revision-Date: 2026-05-02 19:56+0300\n"
"Last-Translator: Emir SARI <[email protected]>\n"
"Language-Team: Turkish <[email protected]>\n"
"Language: tr\n"
@@ -19,13 +19,13 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Lokalize 21.12.3\n"
+"X-Generator: Lokalize 25.12.3\n"
"(http: //www.transifex.com/projects/p/kdepimlibs-k-tr/language/tr/)\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
-msgstr "Serdar Soytetir, H. İbrahim Güngör, Emir SARI"
+msgstr "Serdar SOYTETİR, H. İbrahim GÜNGÖR, Emir SARI"
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kontactinterface-26.04.3/po/ug/kontactinterfaces6.po
new/kontactinterface-26.08.0/po/ug/kontactinterfaces6.po
--- old/kontactinterface-26.04.3/po/ug/kontactinterfaces6.po 2026-06-06
06:18:52.000000000 +0200
+++ new/kontactinterface-26.08.0/po/ug/kontactinterfaces6.po 2026-08-02
07:45:11.000000000 +0200
@@ -8,21 +8,22 @@
"Project-Id-Version: kontactinterfaces\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2025-11-17 11:53+0000\n"
-"PO-Revision-Date: 2013-09-08 07:05+0900\n"
-"Last-Translator: Gheyret Kenji <[email protected]>\n"
+"PO-Revision-Date: 2026-05-31 19:21-0400\n"
+"Last-Translator: Abduqadir Abliz <[email protected]>\n"
"Language-Team: Uyghur Computer Science Association <[email protected]>\n"
"Language: ug\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 3.9\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
-msgstr "ئابدۇقادىر ئابلىز, غەيرەت كەنجى"
+msgstr "ئابدۇقادىر ئابلىز، غەيرەت كەنجى"
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
-msgstr "[email protected], [email protected]"
+msgstr "[email protected], [email protected]"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/kontactinterface-26.04.3/readme-build-ftime.txt.license
new/kontactinterface-26.08.0/readme-build-ftime.txt.license
--- old/kontactinterface-26.04.3/readme-build-ftime.txt.license 2026-06-06
06:18:52.000000000 +0200
+++ new/kontactinterface-26.08.0/readme-build-ftime.txt.license 1970-01-01
01:00:00.000000000 +0100
@@ -1,2 +0,0 @@
-SPDX-FileCopyrightText: none
-SPDX-License-Identifier: CC0-1.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kontactinterface-26.04.3/src/CMakeLists.txt
new/kontactinterface-26.08.0/src/CMakeLists.txt
--- old/kontactinterface-26.04.3/src/CMakeLists.txt 2026-06-06
06:18:52.000000000 +0200
+++ new/kontactinterface-26.08.0/src/CMakeLists.txt 2026-08-02
07:45:11.000000000 +0200
@@ -114,3 +114,21 @@
ecm_qt_install_logging_categories(EXPORT KONTACTINTERFACE FILE
kontactinterface.categories DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR})
ecm_generate_qdoc(KPim6KontactInterface kontactinterface.qdocconf)
+
+ecm_add_installed_library_check(KPim6KontactInterface
+ PACKAGE_NAME "KPim6KontactInterface"
+ PACKAGE_VERSION ${KONTACTINTERFACE_VERSION}
+ PACKAGE_TARGET_NAMESPACE "KPim6::"
+)
+
+ecm_installed_library_check_include_strings(KPim6KontactInterface
+ HEADERS
+ ${KontactInterface_HEADERS}
+ PREFIX kontactinterface
+)
+
+ecm_installed_library_check_include_strings(KPim6KontactInterface
+ HEADERS
+ ${KontactInterface_CamelCase_HEADERS}
+ PREFIX KontactInterface
+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kontactinterface-26.04.3/src/core.cpp
new/kontactinterface-26.08.0/src/core.cpp
--- old/kontactinterface-26.04.3/src/core.cpp 2026-06-06 06:18:52.000000000
+0200
+++ new/kontactinterface-26.08.0/src/core.cpp 2026-08-02 07:45:11.000000000
+0200
@@ -29,6 +29,7 @@
void slotPartDestroyed(QObject *);
void checkNewDay();
+ void checkNewMinute();
QString lastErrorMessage;
QDate mLastDate;
@@ -50,6 +51,9 @@
connect(timer, &QTimer::timeout, this, [this]() {
d->checkNewDay();
});
+ connect(timer, &QTimer::timeout, this, [this]() {
+ d->checkNewMinute();
+ });
timer->start(1000 * 60);
}
@@ -84,8 +88,8 @@
{
// the part was deleted, we need to remove it from the part map to not
return
// a dangling pointer in createPart
- const QMap<QByteArray, KParts::Part *>::Iterator end = mParts.end();
- QMap<QByteArray, KParts::Part *>::Iterator it = mParts.begin();
+ const QMap<QByteArray, KParts::Part *>::ConstIterator end = mParts.cend();
+ QMap<QByteArray, KParts::Part *>::ConstIterator it = mParts.cbegin();
for (; it != end; ++it) {
if (it.value() == obj) {
mParts.erase(it);
@@ -102,6 +106,12 @@
mLastDate = QDate::currentDate();
}
+void CorePrivate::checkNewMinute()
+{
+ Q_EMIT q->minuteChanged(QDateTime::currentDateTime());
+}
+//@endcond
+
//@endcond
QString Core::lastErrorMessage() const
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kontactinterface-26.04.3/src/core.h
new/kontactinterface-26.08.0/src/core.h
--- old/kontactinterface-26.04.3/src/core.h 2026-06-06 06:18:52.000000000
+0200
+++ new/kontactinterface-26.08.0/src/core.h 2026-08-02 07:45:11.000000000
+0200
@@ -60,10 +60,10 @@
/*!
* \internal (for Plugin)
*
- * \a library the library to create part from
- * Creates a part from the given \a library.
+ * \a libname the library to create part from
+ * Creates a part from the given \a libname.
*/
- [[nodiscard]] KParts::Part *createPart(const char *library);
+ [[nodiscard]] KParts::Part *createPart(const char *libname);
/*!
* \internal (for Plugin)
@@ -76,9 +76,16 @@
/*!
* This signal is emitted whenever a new day starts.
*
- * \a date The date of the new day
+ * arg1 The date of the new day
*/
- void dayChanged(const QDate &date);
+ void dayChanged(const QDate &);
+
+ /*!
+ * This signal is emitted whenever the next minute starts.
+ *
+ * arg1 is the datetime of the next minute.
+ */
+ void minuteChanged(const QDateTime &);
protected:
/*!
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/kontactinterface-26.04.3/src/pimuniqueapplication.cpp
new/kontactinterface-26.08.0/src/pimuniqueapplication.cpp
--- old/kontactinterface-26.04.3/src/pimuniqueapplication.cpp 2026-06-06
06:18:52.000000000 +0200
+++ new/kontactinterface-26.08.0/src/pimuniqueapplication.cpp 2026-08-02
07:45:11.000000000 +0200
@@ -73,7 +73,16 @@
void exportFocusWindow()
{
#ifdef HAVE_WAYLAND
- KWaylandExtras::self()->exportWindow(QGuiApplication::focusWindow());
+ const auto focusWindow = QGuiApplication::focusWindow();
+ if (focusWindow) {
+#if KWINDOWSYSTEM_VERSION >= QT_VERSION_CHECK(6, 28, 0)
+ KWaylandExtras::exportToplevel(focusWindow).then([](const QString
&token) {
+ qputenv("PINENTRY_GEOM_HINT", QUrl::toPercentEncoding(token));
+ });
+#else
+ KWaylandExtras::self()->exportWindow(focusWindow);
+#endif
+ }
#endif
}
@@ -87,8 +96,8 @@
{
#ifdef Q_OS_WIN
if (AttachConsole(ATTACH_PARENT_PROCESS)) {
- freopen("CONOUT$", "w", stdout);
- freopen("CONOUT$", "w", stderr);
+ std::ignore = freopen("CONOUT$", "w", stdout);
+ std::ignore = freopen("CONOUT$", "w", stderr);
}
setStyle(u"breeze"_s);
@@ -99,9 +108,11 @@
#endif
#ifdef HAVE_WAYLAND
+#if KWINDOWSYSTEM_VERSION < QT_VERSION_CHECK(6, 28, 0)
connect(KWaylandExtras::self(), &KWaylandExtras::windowExported, this,
[](const auto, const auto &token) {
qputenv("PINENTRY_GEOM_HINT", QUrl::toPercentEncoding(token));
});
+#endif
connect(qApp, &QGuiApplication::focusWindowChanged, this, [this](auto w) {
if (!w) {
return;
@@ -142,7 +153,7 @@
const QString objectName = u'/' + appName + "_PimApplication"_L1;
QDBusInterface iface(serviceName, objectName,
u"org.kde.PIMUniqueApplication"_s, QDBusConnection::sessionBus());
if (iface.isValid()) {
- QDBusReply<int> reply = iface.call(u"newInstance"_s, asn_id,
arguments, QDir::currentPath());
+ const QDBusReply<int> reply = iface.call(u"newInstance"_s, asn_id,
arguments, QDir::currentPath());
if (reply.isValid()) {
return true;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kontactinterface-26.04.3/src/plugin.cpp
new/kontactinterface-26.08.0/src/plugin.cpp
--- old/kontactinterface-26.04.3/src/plugin.cpp 2026-06-06 06:18:52.000000000
+0200
+++ new/kontactinterface-26.08.0/src/plugin.cpp 2026-08-02 07:45:11.000000000
+0200
@@ -102,9 +102,9 @@
return d->icon;
}
-void Plugin::setExecutableName(const QString &bin)
+void Plugin::setExecutableName(const QString &exeName)
{
- d->executableName = bin;
+ d->executableName = exeName;
}
QString Plugin::executableName() const
@@ -127,7 +127,7 @@
return core()->createPart(d->partLibraryName.constData());
}
-const KAboutData Plugin::aboutData()
+const KAboutData Plugin::aboutData() // NOLINT(readability-const-return-type)
{
return KAboutData();
}
@@ -256,7 +256,7 @@
// 2. Iterate over actions in toolbars
QDomElement actionElem = containerElem.firstChildElement();
while (!actionElem.isNull()) {
- QDomElement nextActionElem = actionElem.nextSiblingElement();
+ const QDomElement nextActionElem =
actionElem.nextSiblingElement();
if (QString::compare(actionElem.tagName(), "Action"_L1,
Qt::CaseInsensitive) == 0) {
// qCDebug(KONTACTINTERFACE_LOG) << "Looking at action" <<
actionElem.attribute("name");
if (hideActions.contains(actionElem.attribute(u"name"_s)))
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kontactinterface-26.04.3/src/plugin.h
new/kontactinterface-26.08.0/src/plugin.h
--- old/kontactinterface-26.04.3/src/plugin.h 2026-06-06 06:18:52.000000000
+0200
+++ new/kontactinterface-26.08.0/src/plugin.h 2026-08-02 07:45:11.000000000
+0200
@@ -118,9 +118,9 @@
[[nodiscard]] QString icon() const;
/*!
- * Sets the \a name of executable (if existent).
+ * Sets the \a exeName of executable (if existent).
*/
- void setExecutableName(const QString &name);
+ void setExecutableName(const QString &exeName);
/*!
* Returns the name of the executable (if existent).
@@ -271,7 +271,7 @@
/*!
* Sets whether the plugin shall be disabled.
*/
- void setDisabled(bool value);
+ void setDisabled(bool disabled);
/*!
* Returns whether the plugin is disabled.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kontactinterface-26.04.3/src/processes.cpp
new/kontactinterface-26.08.0/src/processes.cpp
--- old/kontactinterface-26.04.3/src/processes.cpp 2026-06-06
06:18:52.000000000 +0200
+++ new/kontactinterface-26.08.0/src/processes.cpp 2026-08-02
07:45:11.000000000 +0200
@@ -122,7 +122,8 @@
struct EnumWindowsStruct {
EnumWindowsStruct()
- : windowId(0)
+ : pid(0)
+ , windowId(0)
{
}
int pid;
@@ -135,8 +136,8 @@
DWORD pidwin;
GetWindowThreadProcessId(hwnd, &pidwin);
- if (pidwin == ((EnumWindowsStruct *)lParam)->pid) {
- ((EnumWindowsStruct *)lParam)->windowId = hwnd;
+ if (pidwin == (reinterpret_cast<EnumWindowsStruct *>(lParam))->pid) {
+ (reinterpret_cast<EnumWindowsStruct *>(lParam))->windowId = hwnd;
return FALSE;
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kontactinterface-26.04.3/src/summary.cpp
new/kontactinterface-26.08.0/src/summary.cpp
--- old/kontactinterface-26.04.3/src/summary.cpp 2026-06-06
06:18:52.000000000 +0200
+++ new/kontactinterface-26.08.0/src/summary.cpp 2026-08-02
07:45:11.000000000 +0200
@@ -29,6 +29,8 @@
//@cond PRIVATE
namespace KontactInterface
{
+namespace
+{
class SummaryMimeData : public QMimeData
{
Q_OBJECT
@@ -39,6 +41,7 @@
}
};
}
+}
//@endcond
//@cond PRIVATE
@@ -72,7 +75,7 @@
hbox->setSpacing(0);
box->setAutoFillBackground(true);
- QIcon icon = QIcon::fromTheme(iconname);
+ const QIcon icon = QIcon::fromTheme(iconname);
auto label = new QLabel(box);
hbox->addWidget(label);
@@ -144,7 +147,7 @@
void Summary::dropEvent(QDropEvent *event)
{
- const int alignment = (event->position().y() < (height() / 2) ?
Qt::AlignTop : Qt::AlignBottom);
+ const int alignment = (event->position().y() < (height() / 2) ?
Qt::AlignTop : Qt::AlignBottom); // NOLINT(bugprone-integer-division)
Q_EMIT summaryWidgetDropped(this, event->source(), alignment);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kontactinterface-26.04.3/src/summary.h
new/kontactinterface-26.08.0/src/summary.h
--- old/kontactinterface-26.04.3/src/summary.h 2026-06-06 06:18:52.000000000
+0200
+++ new/kontactinterface-26.08.0/src/summary.h 2026-08-02 07:45:11.000000000
+0200
@@ -85,9 +85,9 @@
Q_SIGNALS:
/*!
* This signal can be emitted to signaling that an action is going on.
- * The \a message will be shown in the status bar.
+ * The specified message QString will be shown in the status bar.
*/
- void message(const QString &message);
+ void message(const QString &);
/*!
* \internal
@@ -95,7 +95,7 @@
* This signal is emitted whenever a summary widget has been dropped on
* this summary widget.
*/
- void summaryWidgetDropped(QWidget *target, QObject *object, int alignment);
+ void summaryWidgetDropped(QWidget *, QObject *, int);
protected:
void mousePressEvent(QMouseEvent *) override;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kontactinterface-26.04.3/src/uniqueapphandler.cpp
new/kontactinterface-26.08.0/src/uniqueapphandler.cpp
--- old/kontactinterface-26.04.3/src/uniqueapphandler.cpp 2026-06-06
06:18:52.000000000 +0200
+++ new/kontactinterface-26.08.0/src/uniqueapphandler.cpp 2026-08-02
07:45:11.000000000 +0200
@@ -189,7 +189,7 @@
}
#endif
- QString owner =
QDBusConnection::sessionBus().interface()->serviceOwner(serviceName);
+ const QString owner =
QDBusConnection::sessionBus().interface()->serviceOwner(serviceName);
if (d->mRunningStandalone && (owner ==
QDBusConnection::sessionBus().baseService())) {
d->mRunningStandalone = false;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/kontactinterface-26.04.3/src/uniqueapphandler.h
new/kontactinterface-26.08.0/src/uniqueapphandler.h
--- old/kontactinterface-26.04.3/src/uniqueapphandler.h 2026-06-06
06:18:52.000000000 +0200
+++ new/kontactinterface-26.08.0/src/uniqueapphandler.h 2026-08-02
07:45:11.000000000 +0200
@@ -57,7 +57,7 @@
[[nodiscard]] QWidget *mainWidget();
public Q_SLOTS: // DBUS methods
- int newInstance(const QByteArray &asn_id, const QStringList &args, const
QString &workingDirectory);
+ int newInstance(const QByteArray &startupId, const QStringList &args,
const QString &workingDirectory);
bool load();
protected: