Compilation Error with KWin- not a dependency issue, as far as I know

Hi everyone! Quick problem, if I could get a solution that would be great!

When I try to use ./kdesrc-build --include-dependencies kwin --num-cores 8 I get this error log:

Log
bash: /root/kde/src/log/2025-02-17-03/kwin/build.log: Permission denied
root@debian:~/kdesrc-build# cat /root/kde/src/log/2025-02-17-03/kwin/build.log
# kdesrc-build running: 'ninja' '-j' '8'
# from directory: /root/kde/build/kwin
[0/2] Re-checking globbed directories...
[1/1843] Building CXX object src/CMakeFiles/kwin.dir/wayland/abstract_drop_handler.cpp.o
[2/1843] Building CXX object src/CMakeFiles/kwin.dir/wayland/abstract_data_source.cpp.o
[3/1843] Building CXX object src/CMakeFiles/kwin.dir/utils/executable_path_proc.cpp.o
[4/1843] Building CXX object src/CMakeFiles/kwin.dir/utils/edid.cpp.o
FAILED: src/CMakeFiles/kwin.dir/utils/edid.cpp.o 
/usr/bin/c++ -DCMS_NO_REGISTER_KEYWORD=1 -DEGL_NO_PLATFORM_SPECIFIC_TYPES -DEGL_NO_X11 -DKCOREADDONS_LIB -DKF_DEPRECATED_WARNINGS_SINCE=0x70000 -DKF_DISABLE_DEPRECATED_BEFORE_AND_AT=0x60900 -DMESA_EGL_NO_X11_HEADERS -DQT_CONCURRENT_LIB -DQT_CORE_LIB -DQT_DBUS_LIB -DQT_DEPRECATED_WARNINGS_SINCE=0x60000 -DQT_DISABLE_DEPRECATED_BEFORE=0x50f00 -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_NO_FOREACH -DQT_NO_KEYWORDS -DQT_NO_URL_CAST_FROM_STRING -DQT_OPENGL_LIB -DQT_QMLBUILTINS_LIB -DQT_QMLINTEGRATION_LIB -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_QUICK_LIB -DQT_SENSORS_LIB -DQT_SVG_LIB -DQT_USE_QSTRINGBUILDER -DQT_WIDGETS_LIB -DTRANSLATION_DOMAIN=\"kwin\" -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -Dkwin_EXPORTS -I/root/kde/build/kwin/src -I/root/kde/src/kwin/src -I/root/kde/build/kwin/src/kwin_autogen/include -I/root/kde/build/kwin/src/wayland -isystem /usr/include/x86_64-linux-gnu/qt6/QtDBus -isystem /usr/include/x86_64-linux-gnu/qt6 -isystem /usr/include/x86_64-linux-gnu/qt6/QtCore -isystem /usr/lib/x86_64-linux-gnu/qt6/mkspecs/linux-g++ -isystem /usr/include/x86_64-linux-gnu/qt6/QtQuick -isystem /usr/include/x86_64-linux-gnu/qt6/QtGui -isystem /usr/include/x86_64-linux-gnu/qt6/QtQml -isystem /usr/include/x86_64-linux-gnu/qt6/QtQmlIntegration -isystem /usr/include/x86_64-linux-gnu/qt6/QtQmlBuiltins -isystem /usr/include/x86_64-linux-gnu/qt6/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt6/QtQmlModels -isystem /usr/include/x86_64-linux-gnu/qt6/QtOpenGL -isystem /usr/include/x86_64-linux-gnu/qt6/QtWidgets -isystem /root/kde/usr/include -isystem /root/kde/usr/include/KF6/KConfig -isystem /root/kde/usr/include/KF6/KConfigCore -isystem /root/kde/usr/include/KF6/KCoreAddons -isystem /root/kde/usr/include/KF6/KWindowSystem -isystem /usr/include/x86_64-linux-gnu/qt6/QtConcurrent -isystem /usr/include/x86_64-linux-gnu/qt6/QtGui/6.7.2 -isystem /usr/include/x86_64-linux-gnu/qt6/QtGui/6.7.2/QtGui -isystem /usr/include/x86_64-linux-gnu/qt6/QtCore/6.7.2 -isystem /usr/include/x86_64-linux-gnu/qt6/QtCore/6.7.2/QtCore -isystem /usr/include/x86_64-linux-gnu/qt6/QtSensors -isystem /usr/include/x86_64-linux-gnu/qt6/QtSvg -isystem /root/kde/usr/include/KF6/KColorScheme -isystem /root/kde/usr/include/KF6/KConfigGui -isystem /root/kde/usr/include/KF6/KConfigQml -isystem /root/kde/usr/include/KF6/KCrash -isystem /root/kde/usr/include/KF6/KGlobalAccel -isystem /root/kde/usr/include/KF6/KI18n -isystem /root/kde/usr/include/KF6/KPackage -isystem /root/kde/usr/include/KF6/KService -isystem /root/kde/usr/include/KDecoration3 -isystem /root/kde/usr/include/KGlobalAccelD -isystem /root/kde/usr/include/KF6/KNotifications -isystem /usr/include/libdrm -isystem /root/kde/usr/include/KWayland -isystem /root/kde/usr/include/PlasmaActivities -isystem /root/kde/usr/include/KScreenLocker -pipe -fno-operator-names -fno-exceptions -Wall -Wextra -Wcast-align -Wchar-subscripts -Wformat-security -Wno-long-long -Wpointer-arith -Wundef -Wnon-virtual-dtor -Woverloaded-virtual -Werror=return-type -Werror=init-self -Wvla -Wdate-time -Wsuggest-override -Wlogical-op -fdiagnostics-color=always -O2 -g -DNDEBUG -std=gnu++23 -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -Wno-unused-parameter -I/usr/include -pthread -MD -MT src/CMakeFiles/kwin.dir/utils/edid.cpp.o -MF src/CMakeFiles/kwin.dir/utils/edid.cpp.o.d -o src/CMakeFiles/kwin.dir/utils/edid.cpp.o -c /root/kde/src/kwin/src/utils/edid.cpp
/root/kde/src/kwin/src/utils/edid.cpp: In constructor ‘KWin::Edid::Edid(QByteArrayView, std::optional<QByteArrayView>)’:
/root/kde/src/kwin/src/utils/edid.cpp:138:54: error: no matching function for call to ‘QByteArray::QByteArray(QByteArrayView&)’
  138 |         m_identifier = QByteArray(*identifierOverride);
      |                                                      ^
In file included from /usr/include/x86_64-linux-gnu/qt6/QtCore/qstringview.h:8,
                 from /usr/include/x86_64-linux-gnu/qt6/QtCore/qchar.h:656,
                 from /usr/include/x86_64-linux-gnu/qt6/QtCore/qstring.h:14,
                 from /usr/include/x86_64-linux-gnu/qt6/QtCore/qhashfunctions.h:8,
                 from /usr/include/x86_64-linux-gnu/qt6/QtCore/qrect.h:7,
                 from /usr/include/x86_64-linux-gnu/qt6/QtGui/qvectornd.h:10,
                 from /usr/include/x86_64-linux-gnu/qt6/QtGui/qvector3d.h:5,
                 from /usr/include/x86_64-linux-gnu/qt6/QtGui/qmatrix4x4.h:8,
                 from /usr/include/x86_64-linux-gnu/qt6/QtGui/QMatrix4x4:1,
                 from /root/kde/src/kwin/src/core/colorspace.h:9,
                 from /root/kde/src/kwin/src/utils/edid.h:12,
                 from /root/kde/src/kwin/src/utils/edid.cpp:10:
/usr/include/x86_64-linux-gnu/qt6/QtCore/qbytearray.h:536:21: note: candidate: ‘QByteArray::QByteArray(DataPointer&&)’
  536 |     explicit inline QByteArray(DataPointer &&dd) : d(std::move(dd)) {}
      |                     ^~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt6/QtCore/qbytearray.h:536:46: note:   no known conversion for argument 1 from ‘QByteArrayView’ to ‘QByteArray::DataPointer&&’ {aka ‘QArrayDataPointer<char>&&’}
  536 |     explicit inline QByteArray(DataPointer &&dd) : d(std::move(dd)) {}
      |                                ~~~~~~~~~~~~~~^~
/usr/include/x86_64-linux-gnu/qt6/QtCore/qbytearray.h:534:21: note: candidate: ‘QByteArray::QByteArray(const DataPointer&)’
  534 |     explicit inline QByteArray(const DataPointer &dd) : d(dd) {}
      |                     ^~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt6/QtCore/qbytearray.h:534:51: note:   no known conversion for argument 1 from ‘QByteArrayView’ to ‘const QByteArray::DataPointer&’ {aka ‘const QArrayDataPointer<char>&’}
  534 |     explicit inline QByteArray(const DataPointer &dd) : d(dd) {}
      |                                ~~~~~~~~~~~~~~~~~~~^~
/usr/include/x86_64-linux-gnu/qt6/QtCore/qbytearray.h:99:12: note: candidate: ‘QByteArray::QByteArray(QByteArray&&)’
   99 |     inline QByteArray(QByteArray && other) noexcept
      |            ^~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt6/QtCore/qbytearray.h:99:37: note:   no known conversion for argument 1 from ‘QByteArrayView’ to ‘QByteArray&&’
   99 |     inline QByteArray(QByteArray && other) noexcept
      |                       ~~~~~~~~~~~~~~^~~~~
/usr/include/x86_64-linux-gnu/qt6/QtCore/qbytearray.h:611:8: note: candidate: ‘QByteArray::QByteArray(const QByteArray&)’
  611 | inline QByteArray::QByteArray(const QByteArray &a) noexcept : d(a.d)
      |        ^~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt6/QtCore/qbytearray.h:611:49: note:   no known conversion for argument 1 from ‘QByteArrayView’ to ‘const QByteArray&’
  611 | inline QByteArray::QByteArray(const QByteArray &a) noexcept : d(a.d)
      |                               ~~~~~~~~~~~~~~~~~~^
/usr/include/x86_64-linux-gnu/qt6/QtCore/qbytearray.h:93:5: note: candidate: ‘QByteArray::QByteArray(qsizetype, Qt::Initialization)’
   93 |     QByteArray(qsizetype size, Qt::Initialization);
      |     ^~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt6/QtCore/qbytearray.h:93:5: note:   candidate expects 2 arguments, 1 provided
/usr/include/x86_64-linux-gnu/qt6/QtCore/qbytearray.h:92:5: note: candidate: ‘QByteArray::QByteArray(qsizetype, char)’
   92 |     QByteArray(qsizetype size, char c);
      |     ^~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt6/QtCore/qbytearray.h:92:5: note:   candidate expects 2 arguments, 1 provided
/usr/include/x86_64-linux-gnu/qt6/QtCore/qbytearray.h:91:5: note: candidate: ‘QByteArray::QByteArray(const char*, qsizetype)’
   91 |     QByteArray(const char *, qsizetype size = -1);
      |     ^~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt6/QtCore/qbytearray.h:91:16: note:   no known conversion for argument 1 from ‘QByteArrayView’ to ‘const char*’
   91 |     QByteArray(const char *, qsizetype size = -1);
      |                ^~~~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt6/QtCore/qbytearray.h:579:18: note: candidate: ‘constexpr QByteArray::QByteArray()’
  579 | inline constexpr QByteArray::QByteArray() noexcept {}
      |                  ^~~~~~~~~~
/usr/include/x86_64-linux-gnu/qt6/QtCore/qbytearray.h:579:18: note:   candidate expects 0 arguments, 1 provided
[5/1843] Building CXX object src/CMakeFiles/kwin.dir/wayland/clientconnection.cpp.o
[6/1843] Building CXX object src/CMakeFiles/kwin.dir/wayland/appmenu.cpp.o
[7/1843] Building CXX object src/CMakeFiles/kwin.dir/wayland/alphamodifier_v1.cpp.o
[8/1843] Building CXX object src/CMakeFiles/kwin.dir/wayland/blur.cpp.o
[9/1843] Building CXX object src/CMakeFiles/kwin.dir/wayland/compositor.cpp.o
[10/1843] Building CXX object src/CMakeFiles/kwin.dir/wayland/colormanagement_v1.cpp.o
[11/1843] Building CXX object src/CMakeFiles/kwin.dir/wayland/contenttype_v1.cpp.o
ninja: build stopped: subcommand failed.

This was being compiled in a Debian Trixie chroot with Sid packages too. This is my third attempt trying to compile the latest KDE Plasma Desktop for Debian, and KWin is being an issue. The actual system is a Debian 12 system. If you need any more info please ask!.

Thanks

What is your compiler version (/usr/b in/c++ --version) and Qt version ?

One of the too might be too old for KWin that uses C++ standard 23.

If that’s Qt that would mean KWin has not the right minimum Qt version.

1 Like

Hi! Thanks for your response!

c++ (Debian 14.2.0-17) 14.2.0

root@debian:/# qmake --version
QMake version 3.1
Using Qt version 5.15.15 in /usr/lib/x86_64-linux-gnu
root@debian:/# 

BTW I think I have QT6 installed.

root@debian:/# sudo apt install qt6-base-dev qt6-tools-dev-tools
qt6-base-dev is already the newest version (6.7.2+dfsg-6).
qt6-tools-dev-tools is already the newest version (6.7.2-6).

I didn’t know why this was using 5.15, so I purged 5.15 from my system, sudo apt remove --purge qt5* libqt5*, then created a symlink: sudo ln -s /usr/lib/qt6/bin/qmake /usr/bin/qmake. I now see it returning 6.7.2

root@debian:/# qmake --version
QMake version 3.1
Using Qt version 6.7.2 in /usr/lib/x86_64-linux-gnu
root@debian:/# 

However, now it seems that I’m getting a totally new issue, even before KWin compilation.

root@debian:~/kdesrc-build# ~/kdesrc-build/kdesrc-build plasma-desktop --num-cores=8
Fetching remote changes to sysadmin-repo-metadata
Merging sysadmin-repo-metadata changes from branch master
 * Module xwaylandvideobridge is apparently a KDE collection, but contains no
active modules to build!
        Although no active modules are available, there were
        1 inactive modules. Perhaps the git modules are not ready?
No modules were defined for the module-set xwaylandvideobridge
You should use the use-modules option to make the module-set useful.
kdesrc-build encountered an exceptional error condition:
 ========
    Runtime Error: ksb::ModuleSet::KDEProjects=HASH(0x55e94d86e220)->name() expanded to an empty list of modules!
 ========
Can't continue, so stopping now.

I know this isn’t explicitly related to the KWin compilation issue, but could I get some help?

Can you share your kdesrc-build config? Are you trying to build plasma desktop 6 or 5?

Hey, thanks for the quick reply!

I’m assuming you mean ~/.config/kdesrc-buildrc

~/.config/kdesrc-buildrc
# This file controls options to apply when configuring/building modules, and
# controls which modules are built in the first place.
# List of all options: https://docs.kde.org/trunk5/en/kdesrc-build/kdesrc-build/conf-options-table.html

global
    branch-group kf6-qt6

    # Finds and includes *KDE*-based dependencies into the build.  This makes
    # it easier to ensure that you have all the modules needed, but the
    # dependencies are not very fine-grained so this can result in quite a few
    # modules being installed that you didn't need.
    include-dependencies true

    # Install directory for KDE software
    install-dir ~/kde/usr

    # Directory for downloaded source code
    source-dir ~/kde/src

    # Directory to build KDE into before installing
    # relative to source-dir by default
    build-dir ~/kde/build

    # qt-install-dir ~/kde/qt # Where to install Qt6 if kdesrc-build supplies it

    cmake-options -DCMAKE_BUILD_TYPE=RelWithDebInfo

    # kdesrc-build sets 2 options which is used in options like make-options or set-env
    # to help manage the number of compile jobs that happen during a build:
    #
    # 1. num-cores, which is just the number of detected CPU cores, and can be passed
    #    to tools like make (needed for parallel build) or ninja (completely optional).
    #
    # 2. num-cores-low-mem, which is set to largest value that appears safe for
    #    particularly heavyweight modules based on total memory, intended for
    #    modules like qtwebengine
    num-cores 8
    num-cores-low-mem 8

    # kdesrc-build can install a sample .xsession file for "Custom"
    # (or "XSession") logins,
    install-session-driver false

    # or add a environment variable-setting script to
    # ~/.config/kde-env-master.sh
    install-environment-driver true

    # Stop the build process on the first failure. If set to false, when kdesrc-build
    # encounters a build failure, it will attempt to continue building other modules, 
    # using libraries from the system in cases where they would otherwise be provided
    # by a module that has failed to build.
    #
    # Unless your system has very up-to-date packages, this is probably not what you want.
    stop-on-failure true

    # Use a flat folder layout under ~/kde/src and ~/kde/build
    # rather than nested directories
    directory-layout flat

    # Use Ninja as cmake generator instead of gmake
    cmake-generator Kate - Ninja

    # Build with LSP support for everything that supports it
    compile-commands-linking false
    compile-commands-export true

    # Generate .vscode config files in project directories
    # Enable this if you want to use Visual Studio Code for development
    generate-vscode-project-config false
end global

# With base options set, the remainder of the file is used to define modules to build, in the
# desired order, and set any module-specific options.

#  This line includes module definitions provided in repo-metadata. Do not comment it.
include ${module-definitions-dir}/kf6-qt6.ksb

# To change options for modules that have already been defined, use an
# 'options' block. See kf6-common-options.ksb for an example

# kate: syntax kdesrc-buildrc;

I’m trying to build Plasma Desktop 6, the latest one that just came out.

Enable the unstable repositories and install it. It works flawlessly.

PLASMA 6.3

root@9600k:~# apt install -t unstable plasma-desktop plasma-workspace ocean-sound-theme oxygen-sounds bluedevil breeze-gtk-theme kde-config-sddm kde-style-oxygen-qt6 kgamma kinfocenter kmenuedit kscreen ksshaskpass kwrited libpam-kwallet5 plasma-browser-integration plasma-desktop-doc plasma-discover plasma-disks plasma-nm plasma-pa plasma-systemmonitor plasma-thunderbolt plasma-vault plasma-welcome systemsettings xdg-desktop-portal-kde ocean-sound-theme oxygen-sounds kde-cli-tools kde-cli-tools-data libkf6screen8 breeze powerdevil libweather-ion7 libplasma5support6 libpowerdevilcore2 powerdevil-data libkworkspace6-6 libkf6screendpms8 ksystemstats libklipper6 qml6-module-org-kde-plasma-plasma5support polkit-kde-agent-1 breeze-cursor-theme breeze-wallpaper kde-style-breeze kwin-style-breeze kde-style-breeze-data kde-style-breeze-qt5 libkdecorations3private1 libkscreen-data plasma5-integration qml6-module-org-kde-pipewire qml6-module-org-kde-breeze print-manager plasma-widgets-addons plasma-wallpapers-addons plasma-runners-addons plasma-dataengines-addons libkpipewirerecord6 libkpipewiredmabuf6 libkpipewire6 libkpipewire-data libkdecorations2private11 kwayland-integration kdeplasma-addons-data krdp

From my install notes that should get you the vast majority of it. It upgraded all of the 6.2.5 I had installed.