Get Involved/development/Set up a development environment: Difference between revisions

From KDE Community Wiki
(Move video tutorial link here, out of main development page)
(Replace page with move to link)
Tag: Replaced
 
(99 intermediate revisions by 13 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 kdesrc-build for Qt5 and KDE Frameworks 5.<br/>
Setting up kdesrc-build for Qt6 and KDE Frameworks 6 and setting up kdesrc-build inside a Docker container are [[Get_Involved/development/More|advanced topics]].}}
 
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://konsole.kde.org/ Konsole].
 
If you're not familiar with the command line interface, you can [https://lifehacker.com/5633909/who-needs-a-mouse-learn-to-use-the-command-line-for-almost-anything find a reasonable tutorial here]. However, advanced command-line skills are not required, and you will learn what you need along the way!
 
If you're a visual learner, video tutorials can be found [[Get_Involved/development/Video|here]].
 
== 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 install git cmake dialog</code>
* Arch/Manjaro: <code>sudo pacman -S git cmake dialog extra-cmake-modules</code>
* Fedora: <code>sudo dnf install git cmake dialog perl perl-IPC-Cmd perl-MD5 perl-FindBin bzip2</code>
* openSUSE Leap & Tumbleweed: <code>sudo zypper install git breezy cmake dialog</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"
git config --global user.email "[email protected]"
</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 [https://techbase.kde.org/Development/Git/Configuration#Basic_Settings 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].
 
== Set up a graphical IDE/tools ==
While not required, you may benefit from setting up [[Get_Involved/development/IDE_configuration|graphical development tools or an Integrated Development Environment (IDE)]]. You may want to try out [http://www.kdevelop.org KDevelop], the KDE IDE.
 
== Set up kdesrc-build ==
Next, we need a method of '''managing dependencies'''. Every software has dependencies: other pieces of software that provide the functionality they rely on. In order to compile any piece of software, its dependencies must be available.
 
E.g. the KDE application KCalc depends on more than 20 other KDE git repositories: KDE Frameworks and other KDE libraries.
 
Most Linux operating systems do not provide development packages of the KDE Frameworks 5 and of other KDE libraries that are up-to-date enough for us to build from the "master" branch of the KDE git repositories. Therefore we will compile all of the KDE git repositories ourselves, including KDE Frameworks 5 and other KDE libraries. We should not use KDE files (binaries, libraries and other files) from the OS (i.e. the /usr directory). To do this, we use a command-line tool called <code>kdesrc-build</code> to download, manage, build, and install KDE git repositories. Let's set it up now!
 
First, we create a new directory for all the KDE source code we will be using. You will need many GB of free disk space. Budget 50 GB for KDE Frameworks + KDE Plasma, and 10-30 more for some apps as well. We then clone the <code>kdesrc-build</code> git repository in that directory.
 
{{Input|1=<nowiki>
# If you have an old installation of kdesrc-build and you want a clean kdesrc-build installation, run a command line like: # mv ~/.config/kdesrc-buildrc ~/.config/kdesrc-buildrc~bak ; mv ~/kde ~/kde~bak
mkdir -p ~/kde/src
cd ~/kde/src/
git clone https://invent.kde.org/sdk/kdesrc-build.git && cd kdesrc-build
</nowiki>}}
 
Next, it's time to set up <code>kdesrc-build</code> and pick up the changes it made to your <code>~/.bashrc</code> (or  <code>~/.zshrc</code> for zsh users) for the current terminal session:
 
{{Input|1=<nowiki>
# For supported operating systems (OSes), it installs all of the OS packages needed in order to build all of the KDE Frameworks 5.
./kdesrc-build --initial-setup
source ~/.bashrc
 
# Check that the command line above has worked by seeing if the PATH environment variable contains "~/kde/src/kdesrc-build".
echo $PATH
</nowiki>}}
 
{{Warning|Do not run the command <code>kdesrc-build</code> without any arguments because this will build everything, which is probably overkill right now.}}
{{Note|If you use zsh and selected yes for auto-completions during the initial setup for <code>kdesrc-build</code>, add the following to <code>~/.zshrc</code> if it is not already there.
{{Input|1=<nowiki>
autoload -U +X compinit && compinit
autoload -U +X bashcompinit && bashcompinit
</nowiki>}}
}}
 
Run <code>kdesrc-build --help</code> for the kdesrc-build command line help.
 
== Set up Qt ==
Qt is the fundamental framework that is needed for pretty much all KDE development. We need a recent enough version of Qt to proceed. If you are just getting started, we recommend that you [[Get_Involved/development#Operating_system|use a Linux distribution that is well-suited for building software from source code]] either as the primary operating system or in a virtual machine.
 
You can look up the version of the Qt framework installed on your operating system by opening the application "Info Center" (KInfoCenter) > Basic Information > About this System > "Qt Version:"
 
If Qt 5.15 or later is installed, you're already done done with this step and can proceed to the next section! 🎉
 
...otherwise we now need to install a more recent version from somewhere. Your distribution might have one available. Alternatively, we need to configure <code>kdesrc-build</code> to build and install a recent Qt version for you. [[Get_Involved/development/More#Build_Qt_using_kdesrc-build|Building Qt using kdesrc-build]] is a more advanced topic.
 
== 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 <tt>~/kde</tt> to the exclusions list in System Settings > File Search, like so:
 
[[File:Getting involved development file index options.png|center|600px|]]
 
== Download non-KDE dependencies ==
If your distribution is supported, <code>kdesrc-build --initial-setup</code> will install the distribution packages which are needed in order to build KDE software. <code>kdesrc-build</code> is used in order to build any of the KDE git repositories. The packages for Qt and the rest of the dependencies are acquired using your Linux distribution's package manager.
 
Please [[Get_Involved/development/Install_the_dependencies|install at least all of the dependencies needed in order to build all of the KDE Frameworks. Steps 4 and 5 of setting up kdesrc-build are here]]. 
 
'''Reboot your computer''' and log back in so the package changes, and the changed ~/.bashrc take effect on your user account.
 
Once that's done, your development environment is set up and ready to build software! Let's take it for a spin.
 
{{Note|If you happen to find an external dependency needed to build KDE software that was not installed with <code>kdesrc-build --initial-setup</code>, once you finish this tutorial, you may send a merge request to https://invent.kde.org/sdk/kdesrc-build/-/blob/master/modules/ksb/FirstRun.pm in order to include the respective distro package to the list.}}
 
== Next Steps ==
Now that you have a development environment set up, learn how to use KDE's <code>kdesrc-build</code> tool to [[Get_Involved/development/Build_software_with_kdesrc-build|manage and build software from source code]]!

Latest revision as of 16:13, 18 April 2024