On 02/04/2017 08:14 AM, Matthew Dawson wrote: > On Thursday, February 2, 2017 10:08:53 PM EST Jaroslaw Staniek wrote: >> On 1 February 2017 at 14:34, David Faure <fa...@kde.org> wrote: >>> One note though: this is a failure to link a unittest, your release isn't >>> blocked, you can just disable the building of unittests in kconfig. >>> >>> The double definition can be explained, the unittest links to >>> KF5ConfigCore >>> and then also compiles in ../src/core/kconfigdata.cpp because that class >>> is not >>> exported. >> Hi, >> Apparently it is since eab822e20620 (Jan 15). >> The bug #375654 does not seem to provide version info but the fix isn't >> just released, right? CC'd Stephen Kelly. > It seems this class was exported so it can be accessed through the Python > bindings. Considering it wasn't exported before, I'm wondering why it was > exported for Python? > > Since removing it would be an ABI for Python scripts and the tagging is > happening today, can we just back out the KEntryMap API from Python? We can > add it back for the next release if there is a use case for it. > > @David Faure, when do you plan on tagging this change? For now I committed a > change to the auto test so it will at least build on Windows > (b939b48f8d5e5eaf9a51a7e9bda2ad8cedca27d9) which should be included. Would > there be time to remove KEntryMap before the tag/release?
In case you want to not export the class instead, the attached should work. Thanks, Steve.
>From c92bbb5b5978c4bf6a1b93082114a7d84e0d7d43 Mon Sep 17 00:00:00 2001 From: Stephen Kelly <steve...@gmail.com> Date: Sat, 4 Feb 2017 09:45:19 +0000 Subject: [PATCH] Don't export KEntryMap It is internal. --- autotests/CMakeLists.txt | 3 ++- cmake/rules_PyKF5.py | 5 +++++ src/core/CMakeLists.txt | 1 - src/core/kconfigdata.h | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/autotests/CMakeLists.txt b/autotests/CMakeLists.txt index 6d25988..96c7b65 100644 --- a/autotests/CMakeLists.txt +++ b/autotests/CMakeLists.txt @@ -16,7 +16,8 @@ if(NOT Qt5Concurrent_FOUND) return() endif() -set(kentrymaptest_SRCS kentrymaptest.cpp) +# compile KEntryMap into the test since it's not exported +set(kentrymaptest_SRCS kentrymaptest.cpp ../src/core/kconfigdata.cpp) ecm_add_test(${kentrymaptest_SRCS} TEST_NAME kentrymaptest LINK_LIBRARIES KF5::ConfigCore Qt5::Test diff --git a/cmake/rules_PyKF5.py b/cmake/rules_PyKF5.py index 7d3f041..72bee90 100644 --- a/cmake/rules_PyKF5.py +++ b/cmake/rules_PyKF5.py @@ -107,6 +107,11 @@ def local_function_rules(): ["KEntryMap", "setEntryOption", ".*", ".*", ".*", rules_engine.function_discard], ["KEntryMap", "findEntry", ".*", ".*", ".*", rules_engine.function_discard], ["KEntryMap", "findExactEntry", ".*", ".*", ".*", rules_engine.function_discard], + + ["KConfigBackend", "registerMappings", ".*", ".*", ".*", rules_engine.function_discard], + ["KConfigBackend", "parseConfig", ".*", ".*", ".*", rules_engine.function_discard], + ["KConfigBackend", "writeConfig", ".*", ".*", ".*", rules_engine.function_discard], + ] def local_typedef_rules(): diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 83e4f76..72a46b9 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -68,7 +68,6 @@ if (PythonModuleGeneration_FOUND) kconfig.h kconfigbackend.h kconfigbase.h - kconfigdata.h kconfiggroup.h kdesktopfile.h ksharedconfig.h diff --git a/src/core/kconfigdata.h b/src/core/kconfigdata.h index 5839dfd..a243016 100644 --- a/src/core/kconfigdata.h +++ b/src/core/kconfigdata.h @@ -157,7 +157,7 @@ QDebug operator<<(QDebug dbg, const KEntry &entry); * with the group name. * @internal */ -class KCONFIGCORE_EXPORT KEntryMap : public QMap<KEntryKey, KEntry> +class KEntryMap : public QMap<KEntryKey, KEntry> { public: enum SearchFlag { -- 2.7.4