https://bugs.kde.org/show_bug.cgi?id=463421

            Bug ID: 463421
           Summary: KCharsets::codecForName() deprecation breaks Kf6/Qt6
                    build of kconfigwidgets, which uses it unconditionally
    Classification: Frameworks and Libraries
           Product: frameworks-kcodecs
           Version: 5.101.0
          Platform: Other
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: general
          Assignee: kdelibs-b...@kde.org
          Reporter: ferd...@gmail.com
  Target Milestone: ---

SUMMARY
I'm really not sure whether I should be reporting this against kcodecs or
kconfigwidgets, but...

The recent change in kcodecs to mark KCharsets::codecForName() deprecated since
5.101 breaks the kf6-frameworks-build-include build of kconfigwidgets in
kdesrc-build (which is configured,in part:)

module-set frameworks
    cmake-options -DBUILD_TESTING=TRUE -DBUILD_WITH_QT6=ON
-DEXCLUDE_DEPRECATED_BEFORE_AND_AT=5.101.0
end module-set

kcodecwidgets unconditionally uses codecForName() at several points within
kcodecaction.cpp, so removing the method causes build failures.

STEPS TO REPRODUCE
1. install kdesrc-build and configure to build kf6-frameworks for Qt6
2. kdesrc-build kconfigwidgets

OBSERVED RESULT

Building kconfigwidgets from frameworks (13/17)
        Fetching remote changes to kconfigwidgets
        Merging kconfigwidgets changes from branch master
        Source update complete for kconfigwidgets: no files affected
          Rebuilding because the build directory doesn't exist
        Preparing build system for kconfigwidgets.
        Running cmake targeting Unix Makefiles...
        Compiling... failed (after 7 seconds)

See above for details.

EXPECTED RESULT

Successful compilation with no errors.

SOFTWARE/OS VERSIONS
Windows: 
macOS: 
Linux/KDE Plasma: 
(available in About System)
KDE Plasma Version: 
KDE Frameworks Version: Building Kf6 from current sources with kdesrc-build
Qt Version: 6.4.1

ADDITIONAL INFORMATION

<sourcedir>/log/<date>/kconfigwidgets/error.log with the default options:

[ 22%] Building CXX object
src/CMakeFiles/KF5ConfigWidgets.dir/kcolorscheme.cpp.o
.../kconfigwidgets/src/kcodecaction.cpp: In member function ‘int
KCodecAction::mibForName(const QString&, bool*) const’:
.../kconfigwidgets/src/kcodecaction.cpp:108:39: error: ‘class KCharsets’ has no
member named ‘codecForName’; did you mean ‘encodingForName’?
  108 |         QTextCodec *codec = charsets->codecForName(codecName, success);
      |                                       ^~~~~~~~~~~~
      |                                       encodingForName
.../kconfigwidgets/src/kcodecaction.cpp:111:31: error: ‘class KCharsets’ has no
member named ‘codecForName’; did you mean ‘encodingForName’?
  111 |             codec =
charsets->codecForName(charsets->encodingForName(codecName), success);
      |                               ^~~~~~~~~~~~
      |                               encodingForName
.../kconfigwidgets/src/kcodecaction.cpp: In member function ‘bool
KCodecAction::setCurrentCodec(QTextCodec*)’:
.../kconfigwidgets/src/kcodecaction.cpp:214:53: error: ‘class KCharsets’ has no
member named ‘codecForName’; did you mean ‘encodingForName’?
  214 |                 if (codec ==
KCharsets::charsets()->codecForName(actions().at(i)->menu()->actions().at(j)->text()))
{
      |                                                     ^~~~~~~~~~~~
      |                                                     encodingForName
.../kconfigwidgets/src/kcodecaction.cpp: In member function ‘bool
KCodecAction::setCurrentCodec(const QString&)’:
.../kconfigwidgets/src/kcodecaction.cpp:232:51: error: ‘class KCharsets’ has no
member named ‘codecForName’; did you mean ‘encodingForName’?
  232 |     return
setCurrentCodec(KCharsets::charsets()->codecForName(codecName));
      |                                                   ^~~~~~~~~~~~
      |                                                   encodingForName
gmake[2]: *** [src/CMakeFiles/KF5ConfigWidgets.dir/build.make:97:
src/CMakeFiles/KF5ConfigWidgets.dir/kcodecaction.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
gmake[1]: *** [CMakeFiles/Makefile2:741:
src/CMakeFiles/KF5ConfigWidgets.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2


Downgrading to -DEXCLUDE_DEPRECATED_BEFORE_AND_AT=5.100.0 allows kconfigwidgets
to compile successfully, e.g. at the end of $HOME/.config/kdesrc-buildrc:

# Downgrade deprecation exclusions
options frameworks
    cmake-options -DEXCLUDE_DEPRECATED_BEFORE_AND_AT=5.100.0
end options

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to