|
|
(35 intermediate revisions by 4 users not shown) |
Line 1: |
Line 1: |
| This page is the continuation with more advanced topics of the page [[Get_Involved/development]]. | | This page is the continuation with more advanced topics of the page [[Get_Involved/development]]. |
|
| |
|
| == kde-builder is an alternative to kdesrc-build ==
| | kde-builder has replaced the previous KDE build framework named kdesrc-build. |
| | |
| kdesrc-build and kde-builder are two KDE build frameworks. They are used at the command line and have identical command line syntax, just replace the string "kdesrc-build" with "kde-builder". They use the same configuration file, named <code>kdesrc-buildrc</code>.
| |
| | |
| kde-builder is newer and regularly gets new features and is written in Python.
| |
| | |
| kdesrc-build is in maintenance mode and feature frozen and written in Perl. | |
| | |
| The "how to install kde-builder" procedure is here https://invent.kde.org/sdk/kde-builder/-/blob/master/README.md .
| |
|
| |
|
| == Develop in a Linux container == | | == Develop in a Linux container == |
|
| |
|
| When you start programming for KDE, it is recommended that you [[Get_Involved/development|use kdesrc-build in your main operating system or in a virtual machine]] running on a [[Get_Involved/development#Operating_system|Linux operating system that is better supported by kdesrc-build]]. | | When you start programming for KDE, it is recommended that you [[Get_Involved/development|use kde-builder in your main operating system or in a virtual machine]] running on a [[Get_Involved/development#Operating_system|Linux operating system that is better supported by kde-builder]]. |
| | |
| As an alternative, you can run kdesrc-build in a Linux container (docker, podman, toolbx, distrobox).
| |
| | |
| === Option 1. The KDE PIM Docker image ===
| |
|
| |
|
| You can install Docker and the [[KDE PIM/Docker|KDE PIM Docker image]]. It provides a development environment that is isolated from your day-to-day system. It is based on KDE Neon Unstable.
| | As an alternative, you can run kde-builder in a Linux container (docker, podman, toolbx, distrobox). |
|
| |
|
| === Option 2. distrobox === | | === distrobox === |
|
| |
|
| It is possible to start developing KDE software using container images that are able to see inside your home folder. This can be done using distrobox and podman. | | It is possible to start developing KDE software using container images that are able to see inside your home folder. This can be done using distrobox and podman. |
|
| |
|
| First, install distrobox and podman from your distribution repositories:
| | This solution is particularly useful for users on immutable distributions like Fedora Kinoite, openSUSE Kalpa or Valve's SteamOS 3 |
|
| |
|
| * Debian/Ubuntu: sudo apt install distrobox podman
| | To learn how to build KDE software with distrobox, see: https://develop.kde.org/docs/getting-started/building/containers-distrobox/ |
| * openSUSE: sudo zypper install distrobox podman
| |
| * Fedora: sudo dnf install distrobox podman
| |
| * Arch: sudo pacman --sync distrobox podman
| |
|
| |
|
| On systems which are designed for you to not tamper with their root files (immutable distributions like openSUSE Kalpa, Fedora Kinoite, and SteamOS on the Steam Deck) you can use an [https://distrobox.it/#alternative-methods official alternative method] to install distrobox:
| | == Other operating systems == |
|
| |
|
| {{Input|<nowiki>
| | === Kubuntu >= 24.10 === |
| curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --prefix ~/.local
| |
| </nowiki>}}
| |
|
| |
|
| On the Steam Deck, you will additionally need to add <tt>~/.local/bin</tt> to the <code>$PATH</code>.
| | The default configuration of kde-builder requires Qt version 6.7. Kubuntu 24.10 has Qt version 6.6. It is recommended that you use a [[Get_Involved/development#Operating_system|Linux OS that is better supported by kde-builder]]. |
|
| |
|
| ==== Building without kdesrc-build ====
| | If you are a more seasoned developer you might be able to use Kubuntu for kde-builder by [https://develop.kde.org/docs/getting-started/building/kde-builder-setup/#qt6-online installing Qt6 using the Qt online installer] or by [https://develop.kde.org/docs/getting-started/building/kde-builder-setup/#qt6-build building Qt6 using kde-builder]. |
|
| |
|
| You can build a single repository using the [https://community.kde.org/Neon/Containers KDE Neon Unstable docker image]. We will be using the <code>plasma:unstable</code> image, which comes with the latest KDE software and libraries, and we will be using the minimal version, which requires you to install development libraries before compiling your projects.
| | === Alpine Linux === |
|
| |
|
| After installing distrobox and podman, run the following to create a new distrobox container:
| | <pre> |
| | | apk add git perl doas-sudo-shim |
| {{Input|
| | </pre> |
| podman pull invent-registry.kde.org/neon/docker-images/plasma:unstable
| |
| distrobox create --image invent-registry.kde.org/neon/docker-images/plasma:unstable
| |
| }}
| |
| | |
| This will create a distrobox container named '''plasma-unstable'''.
| |
| | |
| {{Note|The plasma:unstable image size is 5.6 GB.}}
| |
| | |
| Lastly, enter the generated container:
| |
| | |
| {{Input|
| |
| distrobox enter plasma-unstable
| |
| }}
| |
| | |
| You can then just clone the desired repository in your home folder and build it while being inside the container. If any development libraries are missing, you can just install them the same way you would install on Debian/Ubuntu/KDE Neon:
| |
| | |
| {{Input|
| |
| sudo apt install packagename-dev
| |
| }}
| |
| | |
| You can also use <code>build-dep</code> to let apt install the required libraries for the program you will be compiling. For example, to install the development libraries for Kate, you can run:
| |
| | |
| {{Input|
| |
| sudo apt-get build-dep kate
| |
| }}
| |
| | |
| ==== Building with kdesrc-build ====
| |
| | |
| First, install distrobox and podman from your distribution repositories. Then run:
| |
| | |
| {{Input|
| |
| distrobox enter
| |
| }}
| |
| | |
| This should create a container based on your current Linux OS and enter it. It is preferable to use one of the Linux distributions that is better suited for kdesrc-build, as mentioned [[Get_Involved/development#Operating_system|in this wiki page]], so if your distribution does not provide very up-to-date packages, you can download and use a different container image for your distrobox from [https://hub.docker.com/search?type=image Dockerhub]. For example, with openSUSE Tumbleweed:
| |
| | |
| {{Input|
| |
| podman pull opensuse/tumbleweed
| |
| distrobox create --image opensuse/tumbleweed --name tumbleweed
| |
| distrobox enter tumbleweed
| |
| }}
| |
| | |
| Then it's a matter of downloading and running kdesrc-build as detailed in [[Get_Involved/development/Set_up_a_development_environment]]:
| |
| | |
| <syntaxhighlight lang="bash">
| |
| mkdir -p ~/.local/share/
| |
| cd ~/.local/share
| |
| git clone https://invent.kde.org/sdk/kdesrc-build.git | |
| cd kdesrc-build
| |
| ./kdesrc-build --initial-setup
| |
| mkdir -p ~/.local/bin
| |
| ln -sf ~/.local/share/kdesrc-build/kdesrc-build ~/.local/bin
| |
| </syntaxhighlight>
| |
| | |
| From this point on, one important thing to bear in mind is that a distrobox container is transparent in its user space and containerized in its root space: when you are inside a distrobox container, you can see the content of system's home folder, but not your system's root folders, only the container's root folders. This means that you can install packages inside the container using root privileges and access those packages to compile your programs stored in your home, without ever installing those packages in your actual system!
| |
| | |
| You can take advantage of this by installing, for instance, Qt development packages used for kdesrc-build from inside the container. This way, it is not necessary to compile Qt with kdesrc-build. This is particularly convenient if you want to compile KDE software with Qt6 quickly.
| |
| | |
| Likewise, you should [https://community.kde.org/Get_Involved/development/Install_the_dependencies install the required dependencies] from inside the distrobox rather than from your system's repositories. Then you can start compiling as usual.
| |
| | |
| After compiling your program with kdesrc-build from inside the distrobox, you can run it with <code>kdesrc-build run</code>, and despite it originating from inside a container and using the libraries from the container, it will run just fine as a GUI application on your system!
| |
| | |
| {{Note|If you are on an X11 session, you will need to create the file <tt>~/.config/distrobox/distrobox.conf</tt> and add <code>xhost +si:localuser:$USER</code> to it in order for distrobox to be able to run graphical applications.}}
| |
| | |
| The only few gotchas to using this method are:
| |
| | |
| * You cannot use a [[Get_Involved/development/Build_software_with_kdesrc-build#Plasma|full Plasma Desktop session]] made from git.
| |
| * You will need qqc2-desktop-style and Breeze to show the correct theme for your applications.
| |
| * You will need the QtWayland library and its respective development package to run your applications natively on a Wayland session.
| |
| | |
| == Other operating systems ==
| |
| | |
| === Kubuntu >= 23.10 ===
| |
| | |
| The default configuration of kdesrc-build requires Qt version 6.6. Kubuntu 23.10 has Qt version 6.4.2. It is recommended that you use a [[Get_Involved/development#Operating_system|Linux OS that is better supported by kdesrc-build]].
| |
| | |
| If you are a more seasoned developer you might be able to use Kubuntu for kdesrc-build by [[Get_Involved/development/More#Qt_6_installed_using_the_Qt_online_installer|installing Qt6 using the Qt online installer]] or by [[Get_Involved/development/More#Build_Qt_using_kdesrc-build|building Qt6 using kdesrc-build]].
| |
|
| |
|
| === FreeBSD === | | === FreeBSD === |
Line 137: |
Line 43: |
| </pre> | | </pre> |
|
| |
|
| Then set up kdesrc-build using the same procedure as when installing kdesrc-build on a Linux operating system. FreeBSD is currently supported by kdesrc-build. See https://www.youtube.com/watch?v=8MqBnb3Y9JU | | Then set up kde-builder using the same procedure as when installing kde-builder on a Linux operating system. FreeBSD is currently supported by kde-builder. See https://www.youtube.com/watch?v=AhDHUg81M_I and https://www.youtube.com/watch?v=HRiKzaw8cAw . |
|
| |
|
| === OpenBSD >= 7.5 === | | === OpenBSD >= 7.5 === |
Line 147: |
Line 53: |
| cp /etc/examples/doas.conf /etc/doas.conf | | cp /etc/examples/doas.conf /etc/doas.conf |
| exit | | exit |
| # kdesrc-build needs sudo. | | # kde-builder needs sudo. |
| mkdir -p ~/.local/bin ; ln -s /usr/bin/doas ~/.local/bin/sudo | | mkdir -p ~/.local/bin ; ln -s /usr/bin/doas ~/.local/bin/sudo |
| echo "export PATH=~/.local/bin:\$PATH" >> ~/.bashrc | | echo "export PATH=~/.local/bin:\$PATH" >> ~/.bashrc |
Line 168: |
Line 74: |
| </pre> | | </pre> |
|
| |
|
| After you install kdesrc-build: | | After you install kde-builder: |
| <pre> | | <pre> |
| # Edit the kdesrc-buildrc file e.g.: | | # Edit the kdesrc-buildrc file e.g.: |
Line 186: |
Line 92: |
|
| |
|
| You can build and develop KDE projects using the [[Get_Involved/development/Mac|Apple macOS]] operating system. | | You can build and develop KDE projects using the [[Get_Involved/development/Mac|Apple macOS]] operating system. |
|
| |
| == What to do if CMake configure fails because a build dependency is missing ==
| |
|
| |
| See https://community.kde.org/Get_Involved/development/Install_the_dependencies .
| |
|
| |
|
| == Project Documentation == | | == Project Documentation == |
|
| |
|
| * [https://docs.kde.org/trunk5/en/kdesrc-build/kdesrc-build/ Handbook] | | * https://kde-builder.kde.org |
| * [https://invent.kde.org/sdk/kdesrc-build/-/blob/master/README.md Readme #1]
| | * https://invent.kde.org/sdk/kde-builder |
| * [https://invent.kde.org/sdk/kdesrc-build/-/blob/master/doc/README.md Readme #2] | |
| | |
| Developer's documentation can be found in the {{ic|doc/source-reference}} in the project repo.
| |
|
| |
|
| == kf6-qt6 vs. kf5-qt5 == | | == kf6-qt6 vs. kf5-qt5 == |
|
| |
|
| Many KDE git repositories can build correctly and run correctly using "kdesrc-build kf6-qt6". | | Many KDE git repositories can build correctly and run correctly using "kde-builder kf6-qt6". |
|
| |
|
| The KDE git repositories that can build correctly and run correctly using "kdesrc-build kf6-qt6" have two long lived git branches: | | The KDE git repositories that can build correctly and run correctly using "kde-builder kf6-qt6" have two long lived git branches: |
|
| |
|
| * A long lived git branch that does not contain the deprecated symbols from kf5-qt5, named e.g. "master". | | * A long lived git branch that does not contain the deprecated symbols from kf5-qt5, named e.g. "master". |
| * And another long lived git branch for qt5-kf5, where the deprecated symbols still exist. | | * And another long lived git branch for qt5-kf5, where the deprecated symbols still exist. |
|
| |
|
| What is "kf6-qt6"? You just set up kdesrc-build following the procedure. The resulting kdesrc-build installation will be of type kf6-qt6. In kdesrc-buildrc in the "global" section you will have "branch-group kf6-qt6". The git repositories that have only one long lived git branch e.g. named "master" will use that. The git repositories that have a second long lived git branch, will use the git branch where the deprecated symbols do not exist e.g. named "master". | | What is "kf6-qt6"? You just set up kde-builder following the procedure. The resulting kde-builder installation will be of type kf6-qt6. In kde-builder.yaml in the "global:" section you will have "branch-group: kf6-qt6". The git repositories that have only one long lived git branch e.g. named "master" will use that. The git repositories that have a second long lived git branch, will use the git branch where the deprecated symbols do not exist e.g. named "master". |
| | |
| What is "kf5-qt5"? Follow the chapter "kdesrc-build Qt5". The resulting kdesrc-build installation will be of type kf5-qt5. In kdesrc-buildrc in the "global" section you will have "branch-group kf5-qt5". The git repositories that have only one long lived git branch e.g. named "master" will use that. The git repositories that have a second long lived git branch where the deprecated symbols still exist e.g. named "kf5" will use that.
| |
| | |
| == Build Qt using kdesrc-build ==
| |
| | |
| If you cannot build the KDE frameworks using {{ic|kdesrc-build}} and the Qt provided by your Linux distribution is outdated, you might want to build it using {{ic|kdesrc-build}}.
| |
| | |
| In your configuration file use the {{ic|qt-install-dir}} option (in the ''global'' section) with non-empty value, for example:
| |
| | |
| {{bc|
| |
| global
| |
| qt-install-dir ~/kde6/usr_qt
| |
| branch-group kf6-qt6
| |
| end global
| |
| }}
| |
| | |
| Then build it: {{bc|kdesrc-build qt6-set}}
| |
| | |
| If you want the same for Qt5, change {{ic|branch-group}} option and use {{ic|qt5-set}} instead of {{ic|qt6-set}}.
| |
| | |
| To compile Qt6 with Qt X11 Extras (which is a necessary library to compile [https://api.kde.org/frameworks/kwindowsystem/html/ KWindowSystem]), you should enable XCB feature during compilation
| |
| | |
| {{bc|1=kdesrc-build qt6-set --cmake-options="-DQT_FEATURE_xcb=ON"}}
| |
| | |
| After that, you can build other modules.
| |
| | |
| == Qt 6 installed using the Qt online installer ==
| |
| | |
| The homepage of the Qt Framework is https://www.qt.io . Go to this web page, create an online account. https://www.qt.io/download-open-source > "Download the Qt Online Installer" > Linux > "Qt Online Installer for Linux (64-bit)" > download a file named e.g. qt-unified-linux-x64-4.6.1-online.run into the directory e.g. "~/Downloads".
| |
| | |
| <pre>
| |
| ls -la ~/Downloads # The downloaded file needs to hace the "executable" chmod bit set.
| |
| chmod +x ~/Downloads/qt-unified-linux-x64-4.6.1-online.run
| |
| ~/Downloads/qt-unified-linux-x64-4.6.1-online.run
| |
| </pre>
| |
| | |
| Login using your Qt online account. Next > check the checkbox "I have read and agree to the terms and conditions of using OpenSource Qt", check the checkbox "I'm an individual and do not use Qt for any company" > Next > Next > enable "Help us improve" > Next > Custom installation, notice that the install directory is "~/Qt" > Next. Install the latest version of Qt6 and the latest version of the Qt Creator integrated development environment (IDE). There are some Qt6 components that are not used by KDE and can be left out when installing Qt6 e.g. WebAssembly, Android, Sources, Qt Quick 3D, Qt 3D, "Quick: 3D Physics", "Qt debug Information Files".
| |
|
| |
|
| In the KDE Plasma app launcher you now have the application "Qt Maintenance Tool". | | What is "kf5-qt5"? Follow the chapter "kde-builder Qt5". The resulting kde-builder installation will be of type kf5-qt5. In kde-builder.yaml in the "global:" section you will have "branch-group: kf5-qt5". The git repositories that have only one long lived git branch e.g. named "master" will use that. The git repositories that have a second long lived git branch where the deprecated symbols still exist e.g. named "kf5" will use that. |
|
| |
|
| Set up kdesrc-build from scratch as usual.
| | == Two independent kde-builder configurations: kf6-qt6 and kf5-qt5 == |
| | |
| Edit the file kdesrc-buildrc to look like:
| |
| | |
| <pre>
| |
| global
| |
| ...
| |
| qt-install-dir ~/Qt/6.6.0/gcc_64 # Where to install Qt6 if kdesrc-build supplies it
| |
| libname lib
| |
| ...
| |
| end global
| |
| </pre>
| |
| | |
| Make gpgme build:
| |
| | |
| <pre>
| |
| sudo su
| |
| mkdir -p /home/qt/work
| |
| chown -R username:username /home/qt/work
| |
| ln -s /home/username/Qt/6.6.0/gcc_64 /home/qt/work/install
| |
| ls -la /home/qt/work
| |
| </pre>
| |
| | |
| == Two independent kdesrc-build configurations: kf6-qt6 and kf5-qt5 == | |
|
| |
|
| You can switch between configurations with {{ic|--rc-file}} command line option. Generate another config, make the changes for the {{ic|source-dir}}, {{ic|build-dir}}, {{ic|install-dir}}, | | You can switch between configurations with {{ic|--rc-file}} command line option. Generate another config, make the changes for the {{ic|source-dir}}, {{ic|build-dir}}, {{ic|install-dir}}, |
Line 291: |
Line 130: |
| }} | | }} |
|
| |
|
| == Other CPU architectures than x86_64/amd64 and x86 == | | == Other CPU architectures than x86_64/amd64 == |
|
| |
|
| You can build and develop KDE projects using a Linux OS installed on an [[Get_Involved/development/ARM|ARM]] architecture CPU. | | You can build and develop KDE projects using a Linux OS installed on an [[Get_Involved/development/ARM|ARM]] architecture CPU. |
|
| |
|
| == kdesrc-build issues == | | == kde-builder issues == |
|
| |
|
| See https://community.kde.org/Get_Involved/development/Install_the_dependencies
| | === "kde-builder kpat" fails because of black-hole-solitaire === |
| | |
| === wayland-protocols is too old, e.g. "kdesrc-build kidletime" fails === | |
| | |
| <pre>
| |
| mkdir -p ~/kde/misc && cd ~/kde/misc
| |
| wget https://gitlab.freedesktop.org/wayland/wayland-protocols/-/releases/1.31/downloads/wayland-protocols-1.31.tar.xz
| |
| tar -xJvf wayland-protocols-*.tar.xz && mv wayland-protocols-*/ wayland-protocols
| |
| cd wayland-protocols
| |
| meson setup builddir --prefix $HOME/kde/usr
| |
| meson compile -C builddir
| |
| meson install -C builddir
| |
| </pre>
| |
| | |
| === "kdesrc-build kpat" fails because of black-hole-solitaire ===
| |
|
| |
|
| This happens on Debian/Ubuntu/Kubuntu. Because there is no Linux distribution binary package for https://github.com/shlomif/black-hole-solitaire. | | This happens on Debian/Ubuntu/Kubuntu. Because there is no Linux distribution binary package for https://github.com/shlomif/black-hole-solitaire. |
Line 321: |
Line 146: |
| end options | | end options |
| </pre> | | </pre> |
|
| |
| === libdisplay-info is not available ===
| |
|
| |
| If your Linux OS does not have a package for libdisplay-info.
| |
| Append at the end of the file <code>kdesrc-buildrc</code>:
| |
| <pre>
| |
| module libdisplay-info
| |
| repository https://gitlab.freedesktop.org/emersion/libdisplay-info.git
| |
| end module
| |
| </pre>
| |
|
| |
| === Building applications against Qt5 after discontinued support ===
| |
|
| |
| With [https://invent.kde.org/sysadmin/repo-metadata/-/commit/b37ae38cefd9e1c9021afd74cc43e8e64847f550 this] commit, for some applications the support of building against Qt5 was intentionally disabled.
| |
|
| |
| If for some reason you still want to build a Qt5 version of application, you can do it with some hacks. For example, lets say we want Ark. We need to manually see its dependencies listed in metadata:
| |
| {{bc-hl|bash|
| |
| $ ~/.local/state/sysadmin-repo-metadata/dependencies/dependency-data-kf5-qt5 {{!}} grep kde/kdeutils/ark
| |
| }}
| |
|
| |
| Then for each dependency, find out the branch that is used for qt5.
| |
|
| |
| Then create a custom ksb file with custom module-set:
| |
|
| |
| {{hbc-hl|shell|~/ark-qt5.ksb|
| |
| module-set ark-qt5
| |
| repository kde-projects
| |
| use-modules \
| |
| extra-cmake-modules \
| |
| karchive \
| |
| kconfig \
| |
| kcoreaddons \
| |
| kcrash \
| |
| kdbusaddons \
| |
| kdoctools \
| |
| ki18n \
| |
| kiconthemes \
| |
| kio \
| |
| kparts \
| |
| kpty \
| |
| kservice \
| |
| kwidgetsaddons \
| |
| kwindowsystem \
| |
| ark
| |
| end module-set
| |
|
| |
|
| |
| options extra-cmake-modules
| |
| branch kf5
| |
| end options
| |
|
| |
| options karchive
| |
| branch kf5
| |
| end options
| |
|
| |
| options kconfig
| |
| branch kf5
| |
| end options
| |
|
| |
| options kcoreaddons
| |
| branch kf5
| |
| end options
| |
|
| |
| options kcrash
| |
| branch kf5
| |
| end options
| |
|
| |
| options kdbusaddons
| |
| branch kf5
| |
| end options
| |
|
| |
| options kdoctools
| |
| branch kf5
| |
| end options
| |
|
| |
| options ki18n
| |
| branch kf5
| |
| end options
| |
|
| |
| options kiconthemes
| |
| branch kf5
| |
| end options
| |
|
| |
| options kio
| |
| branch kf5
| |
| end options
| |
|
| |
| options kparts
| |
| branch kf5
| |
| end options
| |
|
| |
| options kpty
| |
| branch kf5
| |
| end options
| |
|
| |
| options kservice
| |
| branch kf5
| |
| end options
| |
|
| |
| options kwidgetsaddons
| |
| branch kf5
| |
| end options
| |
|
| |
| options kwindowsystem
| |
| branch kf5
| |
| end options
| |
|
| |
| options ark
| |
| branch release/23.08
| |
| end options
| |
|
| |
| # --
| |
|
| |
| # dependency of extra-cmake-modules
| |
| options polkit-qt-1
| |
| branch qt5
| |
| end options
| |
|
| |
| # dependency of kcoreaddons
| |
| options plasma-wayland-protocols
| |
| branch master
| |
| end options
| |
|
| |
| # dependency of karchive
| |
| options qca
| |
| branch qt5
| |
| end options
| |
| }}
| |
|
| |
| After that, include it in your main config:
| |
|
| |
| {{bc|1=
| |
| global
| |
| _ver 5
| |
| _build_with_qt6 OFF
| |
| branch-group kf${_ver}-qt${_ver}
| |
| cmake-options -DCMAKE_BUILD_TYPE=Debug -DQT_MAJOR_VERSION=${_ver} -DBUILD_WITH_QT6=${_build_with_qt6}
| |
| end global
| |
|
| |
| include ~/Development/kdesrc-build/data/build-include/kf${_ver}-qt${_ver}.ksb
| |
| include ~/ark-qt5.ksb
| |
| }}
| |
|
| |
| Then edit the metadata file:
| |
|
| |
| {{hbc-hl|json|~/.local/state/sysadmin-repo-metadata/dependencies/logical-module-structure.json|
| |
| ...
| |
| "kde/*" : {
| |
| "kf6-qt6": "master",
| |
| "kf5-qt5": "master", // <-- it was empty string, place "master" here
| |
| "stable-kf6-qt6": "release/24.02",
| |
| "stable-kf5-qt5": ""
| |
| },
| |
| ...
| |
| }}
| |
|
| |
| Now you are able to build Ark with qt5:
| |
|
| |
| {{hbc|$ kdesrc-build ark-qt5 --list-build|
| |
| Fetching remote changes to sysadmin-repo-metadata
| |
| Merging sysadmin-repo-metadata changes from branch master
| |
| * You had local changes to sysadmin-repo-metadata, which have been re-applied.
| |
| ...
| |
| ── ark : release/23.08
| |
| }}
| |
This page is the continuation with more advanced topics of the page Get_Involved/development.
kde-builder has replaced the previous KDE build framework named kdesrc-build.
Develop in a Linux container
When you start programming for KDE, it is recommended that you use kde-builder in your main operating system or in a virtual machine running on a Linux operating system that is better supported by kde-builder.
As an alternative, you can run kde-builder in a Linux container (docker, podman, toolbx, distrobox).
distrobox
It is possible to start developing KDE software using container images that are able to see inside your home folder. This can be done using distrobox and podman.
This solution is particularly useful for users on immutable distributions like Fedora Kinoite, openSUSE Kalpa or Valve's SteamOS 3
To learn how to build KDE software with distrobox, see: https://develop.kde.org/docs/getting-started/building/containers-distrobox/
Other operating systems
Kubuntu >= 24.10
The default configuration of kde-builder requires Qt version 6.7. Kubuntu 24.10 has Qt version 6.6. It is recommended that you use a Linux OS that is better supported by kde-builder.
If you are a more seasoned developer you might be able to use Kubuntu for kde-builder by installing Qt6 using the Qt online installer or by building Qt6 using kde-builder.
Alpine Linux
apk add git perl doas-sudo-shim
FreeBSD
Install the latest release of FreeBSD with KDE Plasma Desktop on your hardware computer or in a virtual machine.
Your user should be member of the "wheel" user group (e.g. this can be configured in the FreeBSD installer, when creating your user you can select additional user groups for your user). Your user should be able to use sudo:
pkg install sudo
visudo
# Uncomment the line: %wheel ALL=(ALL:ALL) ALL
Then set up kde-builder using the same procedure as when installing kde-builder on a Linux operating system. FreeBSD is currently supported by kde-builder. See https://www.youtube.com/watch?v=AhDHUg81M_I and https://www.youtube.com/watch?v=HRiKzaw8cAw .
OpenBSD >= 7.5
Install OpenBSD version greater than or equal to 7.5. In the installer keep the defaults, the user created by the installer is named "administrator" in this example.
# Enable doas
su -
cp /etc/examples/doas.conf /etc/doas.conf
exit
# kde-builder needs sudo.
mkdir -p ~/.local/bin ; ln -s /usr/bin/doas ~/.local/bin/sudo
echo "export PATH=~/.local/bin:\$PATH" >> ~/.bashrc
# Test doas.
doas su
# kde-builder needs bash.
pkg_add bash
chsh -s /usr/local/bin/bash
exit
# As user administrator
chsh -s /usr/local/bin/bash
# As per https://rsadowski.de/posts/2024-01-09-openbsd-kde/ , https://openports.pl/path/meta/kde,-plasma
doas su
pkg_add kde-plasma kate
# I recommend that you use tigervnc. https://nmariusp.github.io/install-os.html#openbsd--75
After you install kde-builder:
# Edit the kdesrc-buildrc file e.g.:
cmake-options -DCMAKE_BUILD_TYPE=RelWithDebInfo -DKF_IGNORE_PLATFORM_CHECK=ON
# Also set environment variable:
export CMAKE_PREFIX_PATH=/usr/local/lib/qt6/cmake
# Or
export CMAKE_PREFIX_PATH=/usr/local/lib/qt5/cmake
Microsoft Windows
You can build and develop KDE projects using the Microsoft Windows operating system.
Apple macOS
You can build and develop KDE projects using the Apple macOS operating system.
Project Documentation
kf6-qt6 vs. kf5-qt5
Many KDE git repositories can build correctly and run correctly using "kde-builder kf6-qt6".
The KDE git repositories that can build correctly and run correctly using "kde-builder kf6-qt6" have two long lived git branches:
- A long lived git branch that does not contain the deprecated symbols from kf5-qt5, named e.g. "master".
- And another long lived git branch for qt5-kf5, where the deprecated symbols still exist.
What is "kf6-qt6"? You just set up kde-builder following the procedure. The resulting kde-builder installation will be of type kf6-qt6. In kde-builder.yaml in the "global:" section you will have "branch-group: kf6-qt6". The git repositories that have only one long lived git branch e.g. named "master" will use that. The git repositories that have a second long lived git branch, will use the git branch where the deprecated symbols do not exist e.g. named "master".
What is "kf5-qt5"? Follow the chapter "kde-builder Qt5". The resulting kde-builder installation will be of type kf5-qt5. In kde-builder.yaml in the "global:" section you will have "branch-group: kf5-qt5". The git repositories that have only one long lived git branch e.g. named "master" will use that. The git repositories that have a second long lived git branch where the deprecated symbols still exist e.g. named "kf5" will use that.
Two independent kde-builder configurations: kf6-qt6 and kf5-qt5
You can switch between configurations with --rc-file
command line option. Generate another config, make the changes for the source-dir
, build-dir
, install-dir
,
and other changes you want. Make sure you use different value for persistent-data-file
option, to not mix things up.
As an alternative, you can utilize custom variable to make switch from a single config:
global
_ver 5 # <-- Change this to switch
source-dir ~/kde${_ver}/src
build-dir ~/kde${_ver}/build
install-dir ~/kde${_ver}/usr
persistent-data-file ~/kde${_ver}/persistent-options.json
end global
include ~/.local/share/kdesrc-build/data/build-include/kf${_ver}-qt${_ver}.ksb
Other CPU architectures than x86_64/amd64
You can build and develop KDE projects using a Linux OS installed on an ARM architecture CPU.
kde-builder issues
"kde-builder kpat" fails because of black-hole-solitaire
This happens on Debian/Ubuntu/Kubuntu. Because there is no Linux distribution binary package for https://github.com/shlomif/black-hole-solitaire.
Solution: append at the end of kdesrc-buildrc file:
options kpat
cmake-options -DWITH_BH_SOLVER=OFF
end options