|
|
(10 intermediate revisions by 3 users not shown) |
Line 1: |
Line 1: |
| {{Info|'''Everything on this page only needs to be done once.''' Once you've done it, your development environment is set up and you can use it to submit patches and develop KDE Software!}}
| | Moved to: https://develop.kde.org/docs/getting-started/building/kdesrc-build-setup/ |
| | |
| {{Note|This procedure will set up kde-builder.}}
| |
| | |
| Source code for KDE software lives on [https://invent.kde.org KDE Invent]. But before you can work on it, you'll need to set up a '''development environment''': a set of tools that allows you to access and edit the source code, compile it into a form that the computer can run, and deploy it to a safe location. We will now go through the process of setting one up. To accomplish these tasks, you will need to enter commands using a terminal program, such as KDE's [https://apps.kde.org/konsole Konsole].
| |
| | |
| If you're not familiar with the command line interface, you can [[Get_Involved/development/Learn#Unix_command_line|find tutorials here]]. However, advanced command-line skills are not required, and you will learn what you need along the way!
| |
| | |
| == Install basic tools ==
| |
| | |
| First you will need to use your operating system's package manager to install some basic tools:
| |
| * KDE Neon/Kubuntu/Ubuntu/Debian: <code>sudo apt update && sudo apt install git python3-dbus python3-promise python3-yaml python3-setproctitle</code>
| |
| * Arch/Manjaro: <code>sudo pacman -S git</code>
| |
| * Fedora: <code>sudo dnf install git perl perl-IPC-Cmd perl-MD5 perl-FindBin python3-dbus python3-promise python3-pyyaml python3-setproctitle</code>
| |
| * openSUSE Tumbleweed: <code>sudo zypper refresh && sudo zypper install git</code>
| |
| | |
| == Configure Git ==
| |
| | |
| We need to set your authorship information properly so that any changes you make can be properly attributed to you:
| |
| {{Input|1=<nowiki>
| |
| git config --global user.name "Your Name"
| |
| | |
| </nowiki>}}
| |
| | |
| The name you provide should be your actual name, not your KDE Identity username or a pseudonym. And the email address must be the same as the email address used for your https://bugs.kde.org account. If they don't match, then the <code>BUG: </code> and <code>FEATURE: </code> keywords won't work (see [[Policies/Commit_Policy#Special_keywords_in_GIT_and_SVN_log_messages|this page]] for more information).
| |
| | |
| Next, in order to authenticate yourself when pushing code changes, you need to add an ssh key to your GitLab profile as [https://invent.kde.org/help/user/ssh.md described here].
| |
| | |
| == Install kde-builder ==
| |
| | |
| {{ic|kde-builder}} is the official KDE meta-build-system tool (successor of formerly used '''kdesrc-build'''). It is used to manage the building of many software repositories in an automated fashion. Its primary purpose is to '''manage dependencies'''. Every software has dependencies: other pieces of software that provide lower-level functionality they rely on. In order to compile any piece of software, its dependencies must be available.
| |
| | |
| KDE software has two types of dependencies: dependencies on other pieces of KDE software, and dependencies on 3rd-party software. For example, the KDE application KCalc depends on more than 20 other KDE git repositories as well as the Qt toolkit.
| |
| | |
| Some Linux distributions do not provide development packages for [https://develop.kde.org/products/frameworks/ KDE Frameworks] and of other libraries that are up-to-date enough for us to build from the "main" branch of the KDE git repositories (the branch where the development of the next software versions takes place), so we use {{ic|kde-builder}} to compile them ourselves. The goal is to avoid using KDE binaries, KDE libraries and other KDE files from the operating system where possible (in the Linux case, these files reside in the {{ic|/usr}} directory).
| |
| | |
| === Installation instructions ===
| |
| | |
| See the instructions in [https://invent.kde.org/sdk/kde-builder/-/blob/master/README.md Readme].
| |
| | |
| Finish the '''[https://invent.kde.org/sdk/kde-builder/-/blob/master/README.md#installation Installation]''' procedure.
| |
| | |
| Finish the '''--install-distro-packjages''' step. In case of problems, consult [[Get Involved/development/Install the dependencies]] page.
| |
| | |
| {{Info|
| |
| In ''KDE neon, Debian, Ubuntu, Kubuntu'' you need some source repos enabled before you can install the development packages you need.
| |
| | |
| {{ic|sudo sed -i '/^# deb-src/s/^# //' /etc/apt/sources.list && sudo apt update}}. Look at the content of the file {{ic|/etc/apt/sources.list}}, e.g. {{ic|cat /etc/apt/sources.list}}. Each line that starts with "deb " should be followed by an identical line but the line should start with "deb-src ", e.g.:
| |
| {{bc|
| |
| deb http://us.archive.ubuntu.com/ubuntu/ noble main restricted
| |
| deb-src http://us.archive.ubuntu.com/ubuntu/ noble main restricted
| |
| }}
| |
| |Enabling repositories in Debian-based distros
| |
| }}
| |
| | |
| Finish the '''--generate-config''' step.
| |
| | |
| === Handling dependencies after setup ===
| |
| | |
| The command above installs 3rd-party dependencies once run. But they can change over time, and {{ic|kdesrc-build}}/{{ic|kde-builder}} is currently not smart enough to track those changes and apply them later; see https://invent.kde.org/sdk/kdesrc-build/-/issues/9 for more details.
| |
| | |
| So after setup, if you want to ensure you do not miss some 3rd party dependency do the following:
| |
| * Update the kde-builder/kdesrc-build itself, to ensure you are using latest version.
| |
| * Invoke installation command again: {{ic|kde-builder --install-distro-packages}} or {{ic|kdesrc-build --install-distro-packages}}.
| |
| | |
| If you still find any external dependencies needed to build KDE software that were not installed with {{ic|kde-builder --install-distro-packages}}, then please send a merge request to the [https://invent.kde.org/sysadmin/repo-metadata/-/tree/master/distro-dependencies repo-metadata repository] to include the needed packages in the list.
| |
| | |
| == Prepare sources location ==
| |
| | |
| Create a new directory for all the KDE source code, build files, and installed files. You will need many gigabytes of free disk space. Budget 50 GB for KDE Frameworks + KDE Plasma, and 10-30 GB more for some apps as well.
| |
| | |
| In default configuration, the {{ic|~/kde}} directory is used. The default ''source-dir'' is {{ic|~/kde/src}}, default ''build-dir'' is {{ic|~/kde/build}} and default ''install-dir'' is {{ic|~/kde/usr}}.
| |
| | |
| == Set up Qt ==
| |
| | |
| Qt is the fundamental framework that is needed for pretty much all KDE development. A recent enough version of Qt 6, currently Qt version greater or equal to 6.6, is required to proceed.
| |
| | |
| The initial setup of kde-builder should have installed the required Qt6 packages for you already.
| |
| | |
| If your Linux distribution does not provide recent versions of qt packages, it may be a good time to switch distros to something [[Get_Involved/development#Operating_system|better suited for building KDE software from source code]] either as the primary operating system or in a virtual machine.
| |
| | |
| == Disable indexing for your development environment ==
| |
| | |
| You'll want to disable indexing for your development-related git repos and the files they will build and install. Add the directory <code>~/kde</code> to the exclusions list in System Settings > Workspace > Search > File Search, like so:
| |
| | |
| [[File:Getting involved development file index options.png|center|600px|]]
| |
| | |
| == Next Steps ==
| |
| | |
| '''Reboot your computer''' and log back in so the package changes take effect on your user account. Once that's done, your development environment is set up and ready to build software. Time to learn how to use {{ic|kde-builder}} tool to build software from source code!
| |
| | |
| {{CenteredButton|text=Start compiling KDE software using kde-builder|link=Get_Involved/development/Build_software_with_kde-builder}}
| |