https://community.kde.org/api.php?action=feedcontributions&user=GB+2&feedformat=atomKDE Community Wiki - User contributions [en]2024-03-29T12:58:14ZUser contributionsMediaWiki 1.40.2https://community.kde.org/index.php?title=Guidelines_and_HOWTOs/Build_from_source/Install_the_dependencies&diff=93501Guidelines and HOWTOs/Build from source/Install the dependencies2021-12-21T20:01:37Z<p>GB 2: </p>
<hr />
<div>In the following we give the dependencies to install. However it might change and this page might be quickly outdated.<br />
<br />
{{Note|If some packages fail to install, you can try removing the ones that don't work from the list.}}<br />
<br />
Reading the <code>CMakeLists.txt</code> of the packages you want to install should help you finding what you '''really''' need to install. Or read the error logs (see below).<br />
<br />
If you need help, see https://community.kde.org/Get_Involved#Getting_in_touch_and_working_together<br />
<br />
<br />
=== Enable the source repositories ===<br />
Some operating systems also require that you enable on the source repositories before you can install build dependencies. Do that now, if necessary:<br />
* Kubuntu/Ubuntu/Debian: <code>sudo sed -i '/deb-src/s/^# //' /etc/apt/sources.list && sudo apt update</code> (for more information, see https://askubuntu.com/questions/158871/how-do-i-enable-the-source-code-repositories)<br />
* openSUSE Leap & Tumbleweed: <code>sudo zypper mr -e $(zypper repos | awk '/source/{print $5}')</code><br />
* Gentoo is all built from sources anyway, so in most cases all necessary build dependencies for installed packages will be available from the get-go, but for convenience this page will refer to sets available from [https://wiki.gentoo.org/wiki/KDE/Ebuild_repository KDE ebuild repository]:<br /><code>emerge&nbsp;eselect-repository && eselect&nbsp;repository&nbsp;enable&nbsp;kde</code><br />
<br /><br />
If you don't see your distro in the above list, then there's nothing you need to do here and you can safely move on.<br />
<br /><br />
<br />
== Any dependencies ==<br />
=== KDE neon, Debian, Ubuntu, Kubuntu ===<br />
All the build packages known by the package you want to build can be installed by running:<br />
<br />
<code>sudo apt build-dep <package you want to build></code><br />
<br />
For example, to install the build dependencies for Dolphin, run:<br />
<br />
<code>sudo apt build-dep dolphin</code><br />
<br />
== For the frameworks ==<br />
<br />
=== Arch and Manjaro === <br />
All the dependencies used for building frameworks can be installed by running:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo pacman -Syu --needed phonon-qt5 qt5-webkit qt5-script qt5-svg qt5-tools qt5-x11extras enchant jasper openexr libutempter docbook-xsl shared-mime-info giflib libxss upower udisks2 bzr git doxygen perl-json perl-libwww perl-xml-parser perl-io-socket-ssl akonadi xorg-server-devel libpwquality fontforge eigen libfakekey qca-qt5 xapian-core xsd gperf perl-yaml-syck intltool kdesdk qrencode libdmtx boost ruby-test-unit<br />
</pre><br />
<br />
=== Fedora=== <br />
All the dependencies used for building frameworks can be installed by running:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo dnf install bison flex giflib-devel gperf gpgmepp-devel grantlee-qt5-devel kf5-kconfigwidgets-devel libaccounts-glib-devel libaccounts-qt5-devel libattr-devel libdrm-devel libepoxy-devel libgcrypt-devel libical-devel libinsane-devel libjpeg-turbo-devel libnl3-devel LibRaw-devel libsndfile-devel libSM-devel libXext-devel libxml2-devel libXrender-devel libxslt-devel libXtst-devel lm_sensors-devel lmdb-devel meson ModemManager-devel NetworkManager-libnm-devel ninja-build openal-soft-devel openjpeg2-devel openjpeg-devel openssl-devel perl-FindBin perl-IPC-Cmd perl-JSON-PP perl-YAML-Syck polkit-devel qgpgme-devel qrencode-devel qt5-*-devel qt5-*-static qtkeychain-qt5-devel signon-devel systemd-devel wayland-devel xcb*-devel<br />
</pre><br />
<br />
=== Gentoo ===<br />
Make use of sets provided by KDE ebuild repository to ensure all frameworks packages are installed, thus pulling in all necessary dependencies.<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
# emerge --ask --verbose @kde-frameworks<br />
</pre><br />
Pay attention to the resulting list of packages to be installed and enable additional USE flags to ensure optional dependencies are installed as well.<br />
<br />
=== openSUSE === <br />
==== Installing required development packages with zypper ====<br />
Generally you can install the required -devel packages that are needed to build some KDE software from source by using <code>zypper</code> (as root, or by using <code>sudo</code>), e.g. to install the -devel packages required to build dolphin from source:<br />
{{Input|1=<nowiki><br />
# zypper --plus-content repo-source source-install --build-deps-only dolphin<br />
</nowiki>}}<br />
<br />
replace dolphin with some other package name, e.g. to build ktexteditor from source:<br />
{{Input|1=<nowiki><br />
# zypper --plus-content repo-source source-install --build-deps-only ktexteditor<br />
</nowiki>}}<br />
<br />
Note that the <code>--plus-content</code> option in the above commands means you don't need to have the source repository enabled all the time, <code>--plus-content</code> will make zypper temporarily enable it to get the info it needs.<br />
<br />
==== openSUSE Leap 15 (Argon) ====<br />
<br />
Updated 24 June 2018 (likely incomplete)<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;">$ sudo zypper si -d libqt5-qtbase<br />
$ sudo zypper in libbz2-devel libxslt-devel libxml2-devel shared-mime-info oxygen-icon-theme giflib-devel vlc-devel doxygen gstreamer-devel gstreamer-plugins-base-devel docbook-xml-slides docbook-xsl-stylesheets xcb-util-keysyms-devel perl-JSON boost-devel libxcb-devel libXrender-devel xcb-util-wm-devel xcb-util-devel xcb-util-image-devel gettext-tools libepoxy-devel<br />
$ sudo zypper in gtk3-devel<br />
$ sudo zypper in grantlee5-devel kactivities5-devel plasma-framework-devel plasma5-addons-devel plasma5-workspace-devel libQt5Concurrent-devel libQt5DBus-devel libQt5PrintSupport-devel xcb-util-cursor-devel libqt5-qtx11extras-devel xcb-proto-devel git-core</pre><br />
<br />
==== openSUSE 42.1 ====<br />
<br />
Install these packages (including the recommended packages):<br />
<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo zypper install patterns-openSUSE-devel_kde patterns-openSUSE-devel_kde_frameworks git-core bzr ninja \<br />
gettext-tools libqt5-qttools libgypsy0 libqt5-creator libqt5-linguist libqt5-qtbase-common-devel libqt5-qtbase-devel libqt5-qtbase-examples libqt5-qtdeclarative-devel libqt5-qtdeclarative-examples libqt5-qtdeclarative-tools libqt5-qtdoc libqt5-qtgraphicaleffects libqt5-qtimageformats libqt5-qtimageformats-devel libqt5-qtmultimedia-devel libqt5-qtmultimedia-examples libqt5-qtquick1-devel libqt5-qtquickcontrols libqt5-qtscript-devel libqt5-qtscript-examples libqt5-qtsvg-devel libqt5-qttools-devel libqt5-qtx11extras-devel libqt5-qtxmlpatterns-devel libqt5-qtxmlpatterns-examples libQt5CLucene5 libQt5Concurrent-devel libQt5Concurrent5 libQt5Core-devel libQt5Core5 libQt5DBus-devel libQt5DBus5 libQt5Declarative5 libQt5Designer5 libQt5DesignerComponents5 libQt5Gui-devel libQt5Gui5 libQt5Help5 libQt5Multimedia5 libQt5Network-devel libQt5Network5 libQt5OpenGL-devel libQt5OpenGL5 libQt5Positioning5 libQt5PrintSupport-devel libQt5PrintSupport5 libQt5Script5 libQt5Sensors5 libQt5Sql-devel libQt5Sql5 libQt5Sql5-mysql libQt5Sql5-postgresql libQt5Sql5-sqlite libQt5Sql5-unixODBC libQt5Svg5 libQt5Test-devel libQt5Test5 libQt5WebKit5 libQt5WebKitWidgets5 libQt5Widgets-devel libQt5Widgets5 libQt5X11Extras5 libQt5Xml-devel libQt5Xml5 libQt5XmlPatterns5 libQtQuick5 libQt5WebKitWidgets-devel libqt5-qtbase-private-headers-devel \<br />
xcb-util-keysyms-devel docbook-xsl-stylesheets doxygen polkit-devel libepoxy-devel boost-devel libXcursor-devel libSM-devel giflib-devel libaccounts-qt5-devel gtk3-devel libpng16-devel fltk-devel libopenssl-devel libattr-devel ModemManager-devel NetworkManager-devel wayland-devel lmdb-devel xcb-proto-devel xcb-util-image-devel xcb-util-cursor-devel xcb-util-devel gtk2-devel libqca-qt5-devel libpwquality-devel libical-devel PackageKit-Qt5-devel pam-devel \<br />
bison flex libqt5-qttools-doc<br />
</pre><br />
<br />
* OPEN ISSUES:<br />
** on my system 'ninja-1.6.0' was installed and when using 'custom-build-command ninja' in the kdesrc-buildrc below, the build of modules fails), maybe see https://bugs.kde.org/show_bug.cgi?id=331654<br />
<br />
* Failing modules (of more than 200 modules)<br />
** phonon-vlc, phonon-gstreamer, plasma-pa (PulseAudio missing), kdevplatform, plasma-desktop, kaccounts-integration, kaccounts-mobile, gwenview, kdevelop, libksane, skanlite, ... (see below for solutions)<br />
<br />
==== openSUSE Tumbleweed ====<br />
This more complete list allows to compile everything that kdesrc-build's default setup (kf5-qt5-build-include) compiles. Note that it doesn't contain Qt or Qt-based libs, you need that on top, or to compile your own Qt (and then include custom-qt5-libs-build-include in kdesrc-buildrc).<br />
<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo zypper install aspell-devel atk-devel at-spi2-core-devel audiofile-devel autoconf binutils-devel bluez-devel boost-devel cdparanoia-devel cmake cmark-devel cups-devel cyrus-sasl-devel docbook2X docbook-xsl-stylesheets doxygen eigen3-devel enchant-devel exiv2-devel farstream-devel fdupes ffmpeg-4-libavcodec-devel ffmpeg-4-libavformat-devel ffmpeg-devel fftw3-devel flac-devel flatpak-devel fuse3-devel fwupd-devel gdk-pixbuf-devel gettext-tools giflib-devel git glew-devel grantlee5-devel graphviz-devel gstreamer-devel gstreamermm-devel gstreamer-plugins-bad gstreamer-plugins-base-devel gstreamer-rtsp-server-devel gstreamer-transcoder-devel gstreamer-validate-devel gtk2-devel gtk3-devel hunspell-devel ibus-devel id3lib-devel intltool kcolorpicker-devel kdsoap-devel kimageannotator-devel libaccounts-glib-devel libaccounts-qt5-devel libacl-devel libarchive-devel libassuan-devel libatasmart-devel libattr-devel libblkid-devel libbotan-devel libcanberra-devel libcap-devel libdiscid-devel libdmtx-devel libdwarf-devel libelf-devel libepoxy-devel libepub-devel libepubgen-devel libexiv2-devel libfakekey-devel libffmpegthumbnailer-devel libgbm-devel libgit2-devel libgpgme-devel libgphoto2-devel libgpgmepp-devel libgssglue-devel libgumbo-devel libical-devel libicecream-devel libicu-devel libidn-devel libimobiledevice-devel libiodbc-devel libjasper-devel libkdsoap2 libkolabxml-devel libksane-devel liblcms2-devel libMagick++-devel libmlt++-devel libmms-devel libmtp-devel libmusicbrainz-devel libmysqlclient-devel libmysqld-devel libnl3-devel liboauth-devel libopenssl-devel libopus-devel libotr-devel liboyranos-devel libpcap-devel libpgf-devel libpoppler-devel libpulse-devel libpwquality-devel libqalculate-devel libqgpgme-devel libQt5Charts5-devel libQt5Core-private-headers-devel libQt5PlatformSupport-private-headers-devel libQt5PrintSupport-private-headers-devel libqt5-qtcharts-imports libqt5-qtwayland-private-headers-devel libQt5QuickControls2-devel libraw-devel libsamplerate-devel libsensors4-devel libsignon-qt5-devel libsmbclient-devel libsndfile-devel libspeechd-devel libssh2-devel libssh-devel libudev-devel libusb-1_0-devel libusb-compat-devel libv4l-devel LibVNCServer-devel libvorbis-devel libwacom-devel libxapian-devel libXcm-devel libxkbcommon-devel libxslt-devel libXtst-devel libzeitgeist-devel llvm-clang-devel llvm-devel lmdb-devel make ModemManager-devel mpfr-devel mtdev-devel mozilla-nss-devel NetworkManager-devel openal-soft-devel openconnect-devel opencv-devel openjpeg2-devel openslp-devel PackageKit-devel PackageKit-Qt-devel pam-devel pango-devel parted-devel patterns-kde-devel_kde_frameworks patterns-kde-devel_qt5 pciutils-devel pipewire-devel plymouth-devel polkit-devel postgresql-devel python3 python3-devel python3-openpyxl python3-pycairo python3-python-dateutil qrencode-devel qtkeychain-qt5-devel sane-backends-devel sassc speex-devel taglib tesseract-ocr-devel utempter-devel vlc-devel wayland-protocols-devel wayland-utils xcb-util-cursor-devel xcb-util-image-devel xcb-util-keysyms-devel xcb-util-renderutil-devel xcb-util-wm-devel xf86-input-evdev-devel xf86-input-libinput-devel xf86-input-synaptics-devel xf86-input-wacom-devel xorg-x11-devel xorg-x11-server-sdk xorg-x11-util-devel xz-devel<br />
</pre><br />
<br />
* OPEN ISSUES:<br />
** libeigen2-devel is no longer available on Tumbleweed via official repos, though it's only needed for kdelibs4support<br />
<br />
== For Plasma ==<br />
* Arch/Antergos/Manjaro: <code>sudo pacman -Syu --needed plasma-desktop plasma-wayland-session plasma-workspace kwin</code><br />
* Fedora: <code>sudo dnf install libpcap-devel libnl3-devel libsecret-devel; sudo dnf builddep bluedevil breeze-gtk kde-gtk-config kgamma kscreen kwin plasma-breeze plasma-desktop plasma-discover plasma-disks plasma-drkonqi plasma-firewall plasma-integration plasma-milou plasma-nm plasma-pa plasma-systemmonitor plasma-systemsettings plasma-thunderbolt plasma-vault plasma-wayland-protocols plasma-workspace plasma-workspace-geolocation plasma-workspace-wallpapers plymouth-kcm powerdevil sddm-kcm</code><br />
* Gentoo: <code>emerge --ask --verbose @kde-plasma</code><br />
* KDE neon/Kubuntu/Ubuntu/Debian <code>sudo apt build-dep plasma-desktop plasma-workspace kwin</code><br />
* openSUSE Leap & Tumbleweed: <code>sudo zypper si -d plasma5-desktop plasma5-workspace kwin5</code><br />
<br />
Any other dependencies can be figured out and installed as you continue building the modules one by one.<br />
<br />
Though qt6 is listed as an optional dependency in the build phase and already available in some Linux distros, only building with qt5 is currently supported. See https://bugs.kde.org/show_bug.cgi?id=442296<br />
<br />
== Quick fixes for package manager errors ==<br />
The above lists might not always be working out of the box on your specific distribution or might be out of date for individual packages. In many cases removing single packages from the lists above still allows you to build many KDE frameworks and applications.<br />
<br />
In case it is a package added by a regex, you can exclude the specific package by a workaround using sed. Let us assume for an example that we want to install "libkf5.*-dev" on deb-based systems but have uninstallable packages libkf5example1-dev, libkf5example2-dev. Then we install all "libkf5.*-dev" packages excluding libkf5example1-dev and libkf5example2-dev through:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;">$ sudo apt install $(apt-cache search -n "libkf5.*-dev" | sed 's/ - .*//' | sed '/libkf5example1-dev/d' | sed '/libkf5example2-dev/d')</pre></div>GB 2https://community.kde.org/index.php?title=ISOImageWriter&diff=86346ISOImageWriter2019-09-23T14:18:05Z<p>GB 2: </p>
<hr />
<div>ISO Image Writer is a tool to write a .iso file to a USB disk.<br />
<br />
It uses KAuth so it does not run as root except when required. It will verify ISOs from a range of distros to ensure they are valid compared to the checksums or digital signatures.<br />
<br />
https://fbgsochome.files.wordpress.com/2019/08/screenshot_20190822_194147.png<br />
<br />
==Releases==<br />
Signed by release manager Jonathan Riddell, see announcements for pointer to the signature key for verification. Git tags are also signed by the same key.<br />
<br />
Download from https://download.kde.org/unstable/isoimagewriter/<br />
<br />
=== Alpha 0.8, 22 August 2019 ===<br />
<br />
*User interface revamp<br />
*Windows build<br />
<br />
*[https://fbgsoc.home.blog/2019/08/22/kde-iso-image-writer-release-announcement/ announce blog]<br />
<br />
=== Alpha 0.2, 4 August 2017 ===<br />
<br />
*Verification in a thread to not block UI<br />
*Verifies Arch ISOs<br />
*Build fixes<br />
<br />
*[http://jriddell.org/2017/08/04/iso-image-writer-alpha-0-2/ announce blog]<br />
<br />
=== Alpha 0.1, 22 June 2017 ===<br />
initial release, fork of ROSA image writer, uses KDE i18n, UI guidelines, KAuth, verifies Neon, Netrunner and Kubuntu ISOs<br />
<br />
*[https://mail.kde.org/pipermail/kde-announce-apps/2017-June/005352.html announce e-mail]<br />
*[http://jriddell.org/2017/06/22/iso-image-writer/ announce blog]<br />
<br />
==Maintainer==<br />
<br />
Jonathan Riddell<br />
jr@jriddell.org<br />
Find me on #kde-neon<br />
[https://mail.kde.org/mailman/listinfo/neon neon mailing list]</div>GB 2https://community.kde.org/index.php?title=ISOImageWriter&diff=86345ISOImageWriter2019-09-23T14:13:58Z<p>GB 2: /* Releases */</p>
<hr />
<div>ISO Image Writer is a tool to write a .iso file to a USB disk.<br />
<br />
It uses KAuth so it does not run as root except when required. It will verify ISOs from a range of distros to ensure they are valid compared to the checksums or digital signatures.<br />
<br />
http://embra.edinburghlinux.co.uk/~jr/isoimagewriter.png<br />
<br />
==Releases==<br />
Signed by release manager Jonathan Riddell, see announcements for pointer to the signature key for verification. Git tags are also signed by the same key.<br />
<br />
Download from https://download.kde.org/unstable/isoimagewriter/<br />
<br />
=== Alpha 0.8, 22 August 2019 ===<br />
<br />
*User interface revamp<br />
*Windows build<br />
<br />
*[https://fbgsoc.home.blog/2019/08/22/kde-iso-image-writer-release-announcement/ announce blog]<br />
<br />
=== Alpha 0.2, 4 August 2017 ===<br />
<br />
*Verification in a thread to not block UI<br />
*Verifies Arch ISOs<br />
*Build fixes<br />
<br />
*[http://jriddell.org/2017/08/04/iso-image-writer-alpha-0-2/ announce blog]<br />
<br />
=== Alpha 0.1, 22 June 2017 ===<br />
initial release, fork of ROSA image writer, uses KDE i18n, UI guidelines, KAuth, verifies Neon, Netrunner and Kubuntu ISOs<br />
<br />
*[https://mail.kde.org/pipermail/kde-announce-apps/2017-June/005352.html announce e-mail]<br />
*[http://jriddell.org/2017/06/22/iso-image-writer/ announce blog]<br />
<br />
==Maintainer==<br />
<br />
Jonathan Riddell<br />
jr@jriddell.org<br />
Find me on #kde-neon<br />
[https://mail.kde.org/mailman/listinfo/neon neon mailing list]</div>GB 2https://community.kde.org/index.php?title=Get_Involved/design&diff=86336Get Involved/design2019-09-20T19:56:37Z<p>GB 2: /* Communication and workflow */</p>
<hr />
<div>== About the VDG ==<br />
[[File:Mascot konqi-app-graphics.png|frameless|right|200px|]]<br />
The VDG started out as the Visual Design Group, but has grown into a team dedicated to the whole user experience, including what is often called human interface design. The aim is to help KDE create software that is both beautiful and a pleasure to use. VDG maintains and updates the [https://hig.kde.org/ KDE Human Interface Guidelines].<br />
<br />
VDG is always looking for people with skills in art, visual design, and human-computer interaction--or even just an interest in elegant design! If you have good ideas about how software should look and behave, you are a designer too, and we'd love you to join in. Our group regularly interfaces with users, developers, and the Promo team, so flexibility and the ability to communicate with many different kinds of people are a boon.<br />
<br />
<br />
== Current projects ==<br />
Feel free to have a look at VDG's current projects, which are are listed on the [https://phabricator.kde.org/project/board/89/ Phabricator workboard]. In addition, here are some timeless ways to get involved in ongoing work:<br />
* Learn how to design Breeze icons by reading [https://hig.kde.org/style/icon.html the applicable HIG page], and then work on [https://bugs.kde.org/buglist.cgi?bug_status=UNCONFIRMED&bug_status=CONFIRMED&bug_status=ASSIGNED&bug_status=REOPENED&component=Icons&list_id=1536878&product=Breeze&query_format=advanced Breeze icon bugs]. Here's [[Guidelines and HOWTOs/Submit an icon | how to submit an icon]].<br />
* Submit patches (using [[Infrastructure/Phabricator | Phabricator]]) for corrections and improvements to the [http://hig.kde.org Human Interface Guidelines]<br />
<br />
<br />
== Communication and workflow ==<br />
First, subscribe to the [https://mail.kde.org/mailman/listinfo/visual-design visual-design] mailing list to hear about general news and updates. You'll also want to become a watcher for the [https://phabricator.kde.org/project/profile/89/ VDG project] in Phabricator. Finally, join the [https://webchat.kde.org/#/room/#kde-vdg:kde.org #kde-vdg] channel on [[Matrix]] or the freenode [[Internet Relay Chat | IRC channel]] (which is bridged to the [https://telegram.me/vdgmainroom VDG] Telegram room, if you prefer [[Telegram]]).<br />
<br />
Most VDG discussions start out informally, in the chat channel. Once there's general agreement in the real-time chat, the discussion moves to a Phabricator task. The goal here is to open the discussion to include developers, and make the proposal more concrete using images and mockups. Mockups can be created using KDE's [[KDE Visual Design Group/HIG/MockupToolkit | Mockup Toolkit]] and should be hosted on [https://phabricator.kde.org/pholio/ Pholio].<br />
<br />
It's important that VDG Phabricator tasks subscribe all the developers who may be affected by the proposed work. Try to honestly and fairly summarize the discussion and initial VDG conclusion when writing the task's initial description. It's important not to lose context or history!<br />
<br />
In the Phabricator task, it's common for the details or scope to change based on developer feedback. This is normal! Developers have a better idea of what's technically possible or reasonable to change. Listen to developer feedback and change the design accordingly. At the same time, encourage them to listen to your expertise, and gently stand your ground if a developer tries to dictate design decisions to you.<br />
<br />
Once there's general agreement in the Phabricator task, work should begin and folks can start submitting patches!<br />
<br />
== Know thyself ==<br />
In a highly technical field like programming, it's easy to know the limits of your expertise. This is more difficult in subjective fields like art and design, and it's very important to have a firm grasp of your own limitations. If you know you're not very artistically skilled, don't involve yourself heavily in icon design work, for example. If you don't have any skill or background in human/computer interaction, leave those discussions to the pros!<br />
<br />
==Old Things==<br />
* [[KDE_Visual_Design_Group/Archive | Archive of outdated documents that may still be useful for reference]]<br />
<br />
__NOTOC__</div>GB 2https://community.kde.org/index.php?title=KDE.org/Local_Setup&diff=86311KDE.org/Local Setup2019-09-17T17:05:28Z<p>GB 2: </p>
<hr />
<div>__TOC__<br />
<br />
[[Image:Webworld-128.png|right]]<br />
<br />
== Introduction ==<br />
This page will help you getting started improving the KDE websites. <s>Currently all pages are being ported to WordPress since it offers a full CMS.</s><br />
<br />
== Setting up kde.org ==<br />
<br />
This was done with Arch Linux, PHP 7.3 and Apache 2.4. Expect minor change with another Linux distribution. Note in production, we still use php5, if you find bugs caused by php7, please reports this bugs in [bugs.kde.org bugs.kde.org]. <br />
<br />
* First we need to install and enable apache and php-fpm (See https://wiki.archlinux.org/index.php/Apache_HTTP_Server#Using_php-fpm_and_mod_proxy_fcgi). We also need to enable virtual host.<br />
<br />
* In {{Path|/var/www/}}, clone the following repositories:<br />
{{Input|svn co svn://anonsvn.kde.org/home/kde/trunk/www/sites/www/ kde.org<br />
git clone https://anongit.kde.org/websites/capacity<br />
cd kde.org<br />
git clone git@invent.kde.org:websites/kde-org-applications.git applications<br />
cd applications<br />
git clone git@invent.kde.org:websites/kde-org-applications-extractor.git<br />
}}<br />
<br />
The resulting directory structure should now look like this:<br />
{{Output|├── capacity<br />
└── kde.org<br />
└── applications<br />
└── kde-org-applications-extractor<br />
}}<br />
<br />
<br />
* Create the following vhost file in {{Path|/etc/httpd/conf/vhosts/kde.org.dom}} (Arch Linux)<br />
{{Input|<VirtualHost *:80><br />
ServerName localhost<br />
<br />
DocumentRoot /var/www/kde.org<br />
ErrorLog /var/log/httpd/kde.org-error.log<br />
CustomLog /var/log/httpd/kde.org.log combined<br />
<br />
<Directory /var/www/kde.org><br />
AllowOverride All<br />
Require all granted<br />
FallbackResource /index.php<br />
DirectoryIndex index.php<br />
</Directory><br />
</VirtualHost>}}<br />
<br />
* Enable the newly created virtual host. In Debian/Ubuntu with a2ensite, in Arch Linux by adding the following line to the config file: <code>Include conf/vhosts/kde.org.dom</code><br />
<br />
* Update the <code>include_path</code> variable in the PHP config file, for example in {{Path|/etc/php/7.2/cli/php.ini}} (you can find out which file to use with the command <code>php -i | grep 'php.ini'</code>).<br />
{{Input|1=include_path = ".:/php/includes:/var/www/capacity/includes:"}}<br />
<br />
* Restart the httpd and php-fpm services<br />
{{Input|1=systemctl restart httpd php-fpm}}<br />
<br />
* Setup kde.org/applications. See [[KDE.org/applications]].<br />
<br />
If the instruction didn't work for you, and you weren't able to fix it. Please contact [kde-promo at kde dot org] and ask for help.<br />
<br />
If the instruction didn't work for you, but you were able to fix it. Please add how you did it to this article.<br />
<br />
{{Warning|The information below is mostly outdated.}}<br />
<br />
=== Prerequirements ===<br />
<br />
You should have some things running on your machine already before starting. You will need:<br />
* Apache2 and the usual modules (php such as libapache2-mod-php5)<br />
* mysql<br />
<br />
This could for example look like:<br />
apt-get install apache2 libapache2-mod-php5 php5-mysql mysql-server<br />
<br />
Make sure that it works by checking out localhost in a web browser.<br />
<br />
<br />
You can modify the default setup to do the development in your home directory if it isn't already set up like that. Read up on apache if you want to. Some hints:<br />
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/kdesites<br />
sudo a2ensite kdesites<br />
<br />
The easiest will be to have all kde sites in a subfolder structure, such as:<br />
~/public_html/kdesites/kde.org<br />
~/public_html/kdesites/edu.kde.org<br />
Thus point the apache setup to ''~/public_html/kdesites''<br />
<br />
You can set up local subdomains in ''/etc/hosts''<br />
<br />
=== Setting up ===<br />
For new sites we use WordPress. <br />
You should get the latest WordPress release from: [http://wordpress.org/ wordpress.org]<br />
<br />
Simply unzip/tar the download in a sub-folder. Get WordPress working.<br />
Next after testing that wordpress works, check out the Neverland theme and create a symlink:<br />
git clone git://anongit.kde.org/websites/neverland<br />
cd neverland<br />
git checkout devel # currently the devel branch is the right one, this might change<br />
cd ../wordpress/wp-content/themes<br />
ln -s ../../../neverland/themes/wordpress/neverland/ .<br />
<br />
Check that you have the Neverland theme in wordpress.<br />
The header of the page will look a bit strange until you configured a menu in wordpress.<br />
Log in as administrator and use Appearance -> Menus to set it up.<br />
Also select Screen Options -> Description to be able to edit the menu description (second line of the header).<br />
<br />
[[Category:KDE Web Team]]</div>GB 2https://community.kde.org/index.php?title=Infrastructure/Phabricator&diff=85554Infrastructure/Phabricator2019-08-16T09:36:08Z<p>GB 2: Suggest ~/.config/git/config</p>
<hr />
<div>[http://phabricator.kde.org/ Phabricator] is KDE's task management and patch review system. This page is intended to serve as a general-purpose introduction to the most important aspects: submitting and reviewing patches. It should not take long before you are happily using Phabricator.<br />
<br />
{{Info|The KDE community does not use the Phabricator bug reporting function. We continue to use bugzilla at https://bugs.kde.org}}<br />
<br />
<br />
<br />
= Basic Tasks =<br />
== Logging in ==<br />
Log in to [http://phabricator.kde.org/ Phabricator] with your KDE Identity account. If you don't have one, you can [https://identity.kde.org/index.php?r=registration/index sign up for one here]. At the Phabricator home page, click the "Log in" button on the top of the page and enter your KDE Identity username and password:<br />
<br />
[[File:Phabricator login 2.png ]]<br />
If your KDE Identity account works on http://identity.kde.org but not on http://phabricator.kde.org, please contact the KDE sysadmins at sysadmin@kde.org.<br />
<br />
== Getting help ==<br />
The official documentation is in the [https://secure.phabricator.com/book/phabricator/ Phabricator book] and [https://phacility.com/phabricator/ on their website] -- note that since everything is under rapid development, most of the documentation is incomplete. A good way to find the information you're looking for is to search [https://secure.phabricator.com/ Phabricator upstream].<br />
<br />
== Posting a Patch using the website ==<br />
Once you have [https://community.kde.org/Get_Involved/development#Set_up_your_development_environment set up your development environment] and [https://community.kde.org/Get_Involved/development#Submit_a_patch created a patch], you can submit it using Phabricator!<br />
<br />
Log in to Phabricator and click on <tt>Code Review</tt> in the list on the left. Then, click the <tt>+Create Diff</tt> button in the upper-right corner of the screen. Paste the text of the diff or upload the file using the file dialog. Reviewers are mostly added automatically, but if your patch includes any visual or user interface changes, please add <tt>#vdg</tt> as a reviewer to make sure the [[Get Involved/design | KDE Visual Design Group]] sees it! Please make sure to add a screenshot, too.<br />
<br />
==Formatting your patch ==<br />
The Title of your patch will become the git commit message, so please follow [https://chris.beams.io/posts/git-commit/#seven-rules commit message best practices] when creating a title for the patch.<br />
<br />
In the Summary section, write at least one sentence describing your change and why it is necessary, adding more details if necessary.<br />
<br />
=== Add special keywords ===<br />
If your patch is intended to fix a Bugzilla ticket, include one of the following on its own line in the Summary section:<br />
<pre><br />
BUG: 385942<br />
</pre><br />
or<br />
<pre><br />
FEATURE: 384936<br />
</pre><br />
(Just the Bugzilla ticket number, '''not the full URL''')<br />
<br />
Use <tt>BUG:</tt> If the Bugzilla ticket describes a bug, and <tt>FEATURE:</tt> if the Bugzilla ticket describes a feature request. Either of these tags will cause that Bugzilla ticket to be automatically closed when the patch is committed.<br />
<br />
If you added the <tt>BUG:</tt> or <tt>FEATURE:</tt> tag, also add another tag indicating what version receives the fix or new feature:<br />
<pre><br />
FIXED-IN: [version]<br />
</pre><br />
Replace <tt>[version]</tt> with an appropriate version string; see [[Guidelines and HOWTOs/Write a version string]] to find out how to write one. If you can't figure it out, don't worry about it and just omit the tag; a KDE developer will help you add it during code review.<br />
<br />
[https://techbase.kde.org/Development/Git/Configuration#Commit_Template Here is more information] about other special messages that interact with Bugzilla tickets. You can also add special messages that interact with [https://secure.phabricator.com/T5132 other Phabricator tools] (e.g. Maniphest tasks).<br />
<br />
{{Note|These keywords will only work if the email address in your <tt>~/.config/git/config</tt> file matches the email address used for your https://bugs.kde.org account (See [https://techbase.kde.org/Development/Git/Configuration#Basic_Settings this page] for more information).}}<br />
<br />
=== Include some screenshots ===<br />
For patches that change something about the user interface, it's customary to include a screenshot of how the interface looks with your patch. Bonus points for including a "Before" image too, so reviewers can easily compare them.<br />
<br />
== What happens next? ==<br />
After you've submitted your patch, KDE developers who work with the software in question will review it and provide feedback. This can often take a few days. However, if nobody has responded after a week, it's likely that the review was overlooked (sorry about that!) and it's appropriate to make a comment saying, "Ping!" or something to that effect.<br />
<br />
Once the patch is accepted, KDE Developers will land it for you!<br />
<br />
<br />
<br />
= Using Arcanist to post patches =<br />
After you've posted a few patches, using the web UI to post patches gets tiresome. Arcanist is a tool to simplify and speed up the process of posting, updating, and merging Phabricator patches. Setting it up is easy:<br />
<br />
== Installing Arcanist ==<br />
=== Debian/Ubuntu/KDE Neon ===<br />
{{Input|1=<nowiki><br />
sudo apt install arcanist<br />
</nowiki>}}<br />
<br />
=== Fedora ===<br />
kanarip/phabricator is not an official Fedora repository, so errors may occur.<br />
{{Input|1=<nowiki><br />
sudo dnf copr enable kanarip/phabricator<br />
sudo dnf install arcanist<br />
</nowiki>}}<br />
<br />
Alternatively, install arc manually from the github repository:<br />
{{Input|1=<nowiki><br />
sudo dnf install php-{common,cli}<br />
mkdir somewhere/<br />
cd somewhere/<br />
git clone https://github.com/phacility/libphutil.git<br />
git clone https://github.com/phacility/arcanist.git<br />
ln -s $(pwd)/arcanist/bin/arc ~/.local/bin/arc<br />
</nowiki>}}<br />
<br />
=== openSUSE ===<br />
Tumbleweed:<br />
{{Input|1=<nowiki><br />
sudo zypper ar -f https://download.opensuse.org/repositories/devel:tools:scm/openSUSE_Tumbleweed/devel:tools:scm.repo<br />
sudo zypper install arcanist<br />
</nowiki>}}<br />
<br />
Leap 15:<br />
{{Input|1=<nowiki><br />
sudo zypper ar -f https://download.opensuse.org/repositories/devel:tools:scm/openSUSE_Leap_15.0/devel:tools:scm.repo<br />
sudo zypper install arcanist<br />
</nowiki>}}<br />
<br />
=== Arch / Manjaro ===<br />
{{Input|1=<nowiki><br />
trizen -S arcanist-git<br />
</nowiki>}}<br />
<br />
=== Gentoo ===<br />
The default portage tree does not have an ebuild, so unless you already have it, you need to add an overlay, e.g. the kde one:<br />
<br />
{{Input|1=<nowiki><br />
sudo layman -a kde<br />
</nowiki>}}<br />
<br />
Once that is done, you can emerge it:<br />
<br />
{{Input|1=<nowiki><br />
sudo emerge -av arcanist<br />
</nowiki>}}<br />
<br />
You might have to install and possibly unmask a few php related packages, so follow the instructions portage gives you.<br />
<br />
Keep in mind that it is a vcs version (9999), which means it doesn't have release updates and you are in charge of keeping it up to date.<br />
<br />
=== Windows ===<br />
[https://secure.phabricator.com/book/phabricator/article/arcanist_windows/ Arcanist User Guide: Windows]<br />
<br />
The most non-obvious step is that you will need to configure your [http://php.net/manual/en/install.windows.manual.php PHP installation] to use Curl. This requires editing the <tt>php.ini</tt> configuration file to add the line <tt>extension_dir = "ext"</tt> and add <tt>php_curl</tt> to the list of extensions. After adding <tt>php.exe</tt> to your <tt>PATH</tt> and installing arcanist/libphutil, you can run <tt>arc</tt> by defining a function in your Powershell profile:<br />
<pre><br />
function arc { php -f "C:\path\to\arcanist.php" -- $args }<br />
</pre><br />
<br />
<br/><br />
<br />
After you have installed Arc, you can learn more using <tt>man arc</tt> or <tt>arc --help</tt>. Another command useful for getting a feel for Phabricator's style is <tt>arc anoid</tt>.<br />
<br />
<br />
=== Other operating systems ===<br />
<br />
Follow the instructions from the [https://secure.phabricator.com/book/phabricator/article/arcanist_quick_start/ Arcanist Quick Start] guide.<br />
<br />
== Perform one-time setup steps ==<br />
Before you are able to use <tt>arc</tt> for work you will need to install a certificate that will allow it to login to Phabricator:<br />
{{Input|1=<nowiki><br />
arc install-certificate https://phabricator.kde.org<br />
</nowiki>}}<br />
Just follow the instructions it provides: you will have to visit the page it indicates and copy the API token you find on that page back to the shell.<br />
<br />
Next, you will need to tell git who you really are, so your patches will include correct authorship information and can be attributed to yourself:<br />
{{Input|1=<nowiki><br />
git config --global user.name "<Your real name>"<br />
git config --global user.email "<Your identity.kde.org email address>"<br />
</nowiki>}}<br />
Both of these steps only need to be done once.<br />
<br />
== Workflow ==<br />
The sanest and easiest way to use <tt>arc</tt> is to follow a typical '''feature branch workflow''': keep your master branch synchronized with the upstream repository, and make all changes on separate branches. '''Each patch needs its own private, temporary branch.''' Once your patch has been merged, delete the feature branch, and make another new branch for the next patch.<br />
<br />
The following commands all need to be executed in your source directory. The hidden file/directory "<tt>.arcconfig</tt>" and "<tt>.git</tt>" tell <tt>arc</tt> what to do so you don't have to.<br />
<br />
=== Step 1: Create a new diff ===<br />
Before editing anything, create a new branch for your patch:<br />
{{Input|1=<nowiki><br />
$ arc feature <name-for-your-new-branch><br />
(For Git experts: this is equivalent to `git checkout -t -b <name-for-your-new-branch>`)<br />
</nowiki>}} <br />
Now make changes on the feature branch. When you're ready to have your changes reviewed, enter the following command:<br />
{{Input|1=<nowiki><br />
arc diff # this will do the `git add` and `git commit` for you; if it asks about ignoring untracked files, enter 'y'<br />
</nowiki>}}<br />
When you run <tt>arc diff</tt>, you will go through a series of dialogs. At the end, you will be asked to rewrite your Git commit message to fit the standard Differential format, like so: <br />
<pre><br />
<first line of original git commit message><br />
<br />
Summary: <rest of original commit message><br />
<br />
Test Plan:<br />
<br />
Reviewers:<br />
<br />
Subscribers: <br />
</pre><br />
<br />
<tt><first line of original git commit message></tt> will become the commit message, so please follow [https://chris.beams.io/posts/git-commit/#seven-rules commit message best practices].<br />
<br />
As when using the web UI, enter any special Bugzilla keywords (such as <tt>BUG: 385942</tt>) on their own lines in the "Summary" section.<br />
<br />
As when using the web UI, there is no need to specifically add anyone under the "Reviewers" or "Subscribers" sections unless your patch includes any visual or user interface changes. In this case, please add <tt>#vdg</tt> as a reviewer to make sure the [[Get Involved/design | KDE Visual Design Group]] sees it!<br />
<br />
=== Step 2: Update your diff in response to review comments ===<br />
After <tt>arc</tt> uploads the patch to Phabricator, the project's reviewers will take a look and give you some comments. If you get a thumbs up immediately, you can skip this step. But often you will get a review like "looks good, we can take it if you fix problems x, y, and z." Make the necessary changes, add an extra commit to the git branch, and update the Phabricator revision:<br />
{{Input|1=<nowiki><br />
[implement changes based on review comments]<br />
arc diff<br />
</nowiki>}}<br />
<br />
=== Step 3: Land your diff ===<br />
If you do not have a [[Infrastructure/Get_a_Contributor_Account | KDE Developer Account]], then someone who does will have to land your patch for you. Otherwise, you can do it yourself once the patch has been accepted and reviewers have given you permission to "ship it!"<br />
<br />
First, make sure that the world is sane, and that only your patch will be landed:<br />
{{Input|1=<nowiki><br />
[make sure you are on your feature branch]<br />
arc land --preview<br />
</nowiki>}}<br />
The output of that command should show only the commit message for your patch. If you see more than that, stop and ask your reviewers for help.<br />
<br />
==== Landing on master ====<br />
This is simple:<br />
{{Input|1=<nowiki><br />
arc land<br />
</nowiki>}}<br />
<br />
==== Landing on the "Stable branch" ====<br />
By default, arc will land the patch onto whatever branch was the parent. For example, if you branched from master, <tt>arc</tt> will land on master; if you branched from <tt>Applications/18.12</tt>, arc will land on that branch instead, and so on.<br />
<br />
If you branched your patch from <tt>master</tt> but it is a relatively low-risk bugfix, you will often be a asked to land it on the "stable branch" instead of <tt>master</tt>. The easiest way to do this is to cherry-pick the commit from your feature branch onto the appropriate stable branch and then merge forward.<br />
<br />
{{warning|If at any time you feel nervous or run into trouble, ask your reviewers for help. This can be tricky, and undoing bad merges is a pain in the neck.}}<br />
Here is an example of how to do this with a patch branched from <tt>master</tt> that needs to go into the <tt>Applications/18.12</tt> stable branch (replace <tt>Applications/18.12</tt> with the appropriate stable branch name when you do this yourself, obviously).<br />
<br />
{{Input|1=<nowiki><br />
[make sure you are on your feature branch]<br />
git log -n 1 --pretty=format:"%H"<br />
[copy that commit hash]<br />
git checkout Applications/18.12<br />
git pull<br />
git cherry-pick [the commit hash]<br />
git push<br />
git branch -D [the name of your feature branch]<br />
</nowiki>}}<br />
<br />
Note that after committing to the stable branch you are expected to merge that branch to <tt>master</tt> afterwards:<br />
{{Input|1=<nowiki><br />
git checkout master<br />
git pull<br />
git merge -s recursive -Xours Applications/18.12<br />
git push<br />
</nowiki>}}<br />
<br />
==== Landing someone else's diff ====<br />
If you have a contributor account and you are helping someone without one through the process, you will need to land their diff for them once it's been accepted. Here's how:<br />
{{Input|1=<nowiki><br />
arc patch <revision ID><br />
git show HEAD<br />
</nowiki>}}<br />
<br />
At this point, you need to verify that the authorship information shown is correct. If it's not, you will need to ask the patch author for their real name and email address. Then you use that information to update the local commit for the patch like so:<br />
{{Input|1=<nowiki><br />
# Make sure you're on the branch that corresponds to the patch!<br />
git commit --amend --author="firstname lastname <email address>"<br />
</nowiki>}}<br />
<br />
At this point, you can land the diff normally, [[#Step 3: Land your diff|as described above]].<br />
<br />
<br />
<br />
== Arcanist Tips & Tricks ==<br />
<br />
=== Look before you diff ===<br />
You can check with <tt>arc which</tt> what Arcanist will do before performing the actual upload with <tt>arc diff</tt> if you are unsure what will happen. In particular, look for which commits will be included in your Diff.<br />
<br />
=== arc diff: specify a revision manually ===<br />
Sometimes - if you messed up with your git branches - arc cannot properly determine which revision (D12345) should be updated. In this case you can use <tt>arc diff --update D12345</tt>. See <tt>arc help diff</tt>.<br />
<br />
=== Updating the summary of the Differential from the local Git commit message ===<br />
If you changed the commit message locally and want to update the text in the summary in Differential, call Arc like this:<br />
{{Input|1=<nowiki><br />
arc diff --edit --verbatim<br />
</nowiki>}}<br />
<br />
=== Updating the local Git commit message from changes done on Phabricator ===<br />
If you or someone else updated the title, summary, test plan, reviewers or subscribers of a Diff using the web editor in Phabricator, Arcanist allows to sync those changes back to your local Git commit message:<br />
{{Input|1=<nowiki><br />
arc amend<br />
</nowiki>}}<br />
<br />
Note that in general Arcanist will do this automatically for you once you <tt>arc land</tt>.<br />
<br />
== Advanced Tasks ==<br />
Once in a while, a reviewer will tell you to do specific things. This section will help you figure out what is meant to be done.<br />
<br />
=== "Please do that in a separate commit" ===<br />
Should your patch contain an unrelated change, your reviewer will ask you to undo that part and possibly open a new Diff for that. Here is what you can do:<br />
<br />
If the change in question is in a separate commit on your local branch:<br />
{{Input|1=<nowiki><br />
git revert <unrelated change><br />
arc diff # this updates the first Diff<br />
git checkout -b <new branch name> master<br />
git cherry-pick <unrelated change><br />
arc diff # this creates a new Diff for the unrelated change<br />
</nowiki>}}<br />
<br />
If you mixed different changes into a single commit on your local branch:<br />
{{Input|1=<nowiki><br />
git reset HEAD^<br />
git add -p # type "?" for help, then pick all hunks you want to keep<br />
git stash # the stash now contains the hunks for the second patch<br />
git commit<br />
arc diff # this updates the first Diff<br />
git checkout -b <new branch name> master<br />
git stash pop<br />
git commit<br />
arc diff # this creates a new Diff for the unrelated change<br />
</nowiki>}}<br />
<br />
In case this does not work for you, there's always the plain old copy-and-paste. In general, it is best to avoid adding unrelated changes from the beginning. :-)<br />
<br />
=== Marking patches as dependent on other patches ===<br />
Sometimes you will want to submit a patch that depends on another patch, creating a '''dependency chain'''.<br />
<br />
==== If each patch is intended for a different project ====<br />
Example: you submit a patch to add a new feature to KIO, and then submit another patch for Dolphin that uses that feature. Here's what you do:<br />
<ol><br />
<li>Create your first patch as above</li><br />
<li>When creating the second patch, add the following to its own line in the "Summary" section:<br />
{{Input|1=<nowiki>Depends on DXXXX</nowiki>}}<br />
(Replace "DXXXX" with the ID of the dependent patch, '''not the full URL)'''</li><br />
</ol><br />
<br />
==== If the patches are all for the same project ====<br />
Example: you are implementing multiple new features for a single project that each depend on the patch for the prior feature. Here's what you do:<br />
<ol><br />
<li>Create a branch to track the first feature:<br />
{{Input|1=<nowiki><br />
git checkout -b <branch name for feature 1> --track origin/master<br />
</nowiki>}}<br />
Then implement the feature and make a commit.<br />
</li><br />
<li>Then create a branch for your second feature, ''tracking the first branch:''<br />
{{Input|1=<nowiki><br />
git checkout -b <branch name for feature 2> --track <branch name for feature 1><br />
</nowiki>}}<br />
As above, implement the feature and make a commit. Continue this pattern for any other required dependent features.<br />
</li><br />
<br />
<li><br />
When you're ready to turn your dependency chain feature branches into patches, do the following:<br />
{{Input|1=<nowiki><br />
git checkout <branch name for feature 1><br />
arc diff [then go through the process of creating the patch normally]<br />
git checkout <branch name for feature 2><br />
git commit --amend [then add the special text "Depends on DXXXX", replacing DXXXX with the ID of the first patch<br />
arc diff [then go through the process of creating the patch normally]<br />
</nowiki>}}<br />
...And so on.<br />
</li><br />
<br />
<li>After you get comments, you will have to make changes to your patches and re-base dependent patches:<br />
{{Input|1=<nowiki><br />
git checkout <branch name for feature 1><br />
[Make changes]<br />
git add -u<br />
git commit<br />
arc diff<br />
git checkout <branch name for feature 2><br />
git rebase <branch name for feature 1><br />
git add -u<br />
git commit<br />
arc diff<br />
</nowiki>}}<br />
...And so on.<br />
</li><br />
<br />
<li>When you're ready to land any or all of your patches, do it in sequence, starting from the patch with no unmet dependencies:<br />
{{Input|1=<nowiki><br />
git checkout <branch name for feature 1><br />
arc land<br />
git checkout <branch name for feature 2><br />
git rebase origin/<target branch><br />
arc land<br />
</nowiki>}}<br />
</li><br />
</ol><br />
<br />
<br />
<br />
= How to review someone else's patch =<br />
Arcanist (<tt>arc</tt>) makes it easy to review someone's patch. But first you'll need a development environment set up. If you haven't done that yet, it's time to do so. See [[Get_Involved/development#Set_up_your_development_environment]]. Follow the instructions to compile and run the program.<br />
<br />
== Apply the patch and compile the software ==<br />
Find the patch's revision ID. For example, for https://phabricator.kde.org/D11184, the ID is <tt>D11184</tt>.<br />
<br />
Now check out or enter the source repository for the software that's being patched. The repository is listed on the web UI: <br />
[[File:Konsole repository for patch.png]]<br />
...So this would be a patch for Konsole.<br />
<br />
If you've never built it before, check it out and build it once first:<br />
{{Input|1=<nowiki><br />
kdesrc-build konsole<br />
</nowiki>}}<br />
<br />
Now go to its source directory:<br />
{{Input|1=<nowiki><br />
cd ~/kde/src/konsole<br />
</nowiki>}}<br />
<br />
...and apply the patch:<br />
{{Input|1=<nowiki><br />
arc patch <revision ID><br />
</nowiki>}}<br />
<br />
Answer <tt>y</tt> to any questions that are posed. Arc will automatically create a branch named <tt>arcpatch-<revision ID></tt> for the patch, so it won't damage your checkout at all.<br />
<br />
Now it's time to compile and run the software to make sure that the patch does what it says it does and doesn't cause any regressions! Compile the patched source code:<br />
{{Input|1=<nowiki><br />
kdesrc-build konsole --no-src --resume-from konsole<br />
</nowiki>}}<br />
Those arguments will tell <tt>kdesrc-build</tt> to not update the source code after you applied the patch, and to not build any dependencies.<br />
<br />
If it didn't compile, that's reason alone to reject the patch! Go to the web UI and report your findings, and apply a "Request Changes" status.<br />
<br />
== Perform QA ==<br />
If it did compile, then it's time to perform QA, because it's important to thoroughly test patches to ensure that bad code and regressions don't slip in. '''This is the entire purpose of having a review infrastructure'''; it is very important.<br />
<br />
First make sure the unit tests all pass:<br />
{{Input|1=<nowiki><br />
cd ~kde/build/kde/applications/konsole<br />
ctest<br />
</nowiki>}}<br />
<br />
If any tests fail, report this through a comment on the patch's web page (https://phabricator.kde.org/<revision ID>).<br />
<br />
Next, execute the Test Plan that the submitter wrote. If the patch does not have a Test Plan, request one. Does it all still work for you? If not, return to the web UI and Request Changes, writing a detailed comment explaining what didn't work. It is permissible to do this even if you have not been specified as a reviewer! '''Anyone can reject a patch on the grounds that it does not work, does not do what it says it does, or causes regressions.'''<br />
<br />
If the original Test Plan succeeds, try to break the patch. Here are some ideas:<br />
# Remove the program's configuration file (<tt>~/.config/<program name>rc</tt> ) and re-open it<br />
# Try the program with a HiDPI scale factor (or without one) or with a different default font size<br />
# If it's a new feature, feed it unexpected input<br />
# Test related functionality<br />
<br />
'''Try to break it!''' A good patch will handle corner cases and variations in configuration. The price of configurability is vigilant testing! We owe it to our users to test using many configurations, not just the defaults or our personal settings.<br />
<br />
== Perform code review ==<br />
{{Note|1= Need a section on code review here, preferably written by a core KDE developer or another very experienced developer}}<br />
<br />
== Engage with the author and other reviewers ==<br />
After you have run the program and evaluated the patch, it's time to leave some review comments on the webpage (which again is at https://phabricator.kde.org/<revision ID>). If you have been specified as a reviewer, or are a member of a group that has been specified as a reviewer, it is permissible to Accept the patch. But keep in mind that reviewing involves responsibility: you are giving a thumbs-up to code that will be run potentially by millions of people. If you accept and land a patch that causes regressions, you will share some of the blame. It's important to take the reviewer role seriously.<br />
<br />
= Customization =<br />
== Creating custom dashboard feeds ==<br />
You can customize your Phabricator homepage by creating a new dashboard. However, the selection of what you can post on your dashboard is limited. The defaults will show all tasks from all projects. <br />
<br />
To narrow this down, you need to define a custom query to serve as a filter. For example, if you work on Plasma Mobile and want to monitor the to-do list, perhaps you want to show only tasks that are in Plasma Mobile and are tagged as open. To do that, enter Maniphest, select "advanced search," select the appropriate terms, then click "save custom query." You can give your query a name. Once it is saved, the query will become available as a new filter for creating feeds on your dashboard. (In Differential you seem to need to perform the test search before the "save query" button becomes visible.)</div>GB 2https://community.kde.org/index.php?title=Sysadmin/GitKdeOrgManual&diff=85553Sysadmin/GitKdeOrgManual2019-08-16T09:35:37Z<p>GB 2: Suggest ~/.config/git/config</p>
<hr />
<div>[[File:Mascot konqi-app-system.png|thumbnail|right|[[Konqi]] and the gears.]]<br />
== Overview of facilities ==<br />
<br />
* '''[http://identity.kde.org/ KDE Identity]''' (identity.kde.org)<br />
:Account management; notably managing your SSH public keys for read-write developer access.<br />
<br />
* '''git.kde.org'''<br />
The main git server. Should be used only for pushing new commits to a repository over the SSH protocol. <br />
<br />
* '''anongit.kde.org'''<br />
Several servers which allow read-only access to the repositories via the git:// and http:// protocols. They are requested to update when anyone pushes to a repo on git.kde.org, so it can be thought of as being always up-to-date.<br />
<br />
* '''[https://cgit.kde.org/ cgit.kde.org]'''<br />
:Repository browser. It shows also personal clones of project repositories and personal scratch repositories ([[#Personal repositories|see below]]),.<br />
<br />
* '''[http://phabricator.kde.org/ Phabricator]''' (phabricator.kde.org)<br />
:Patch review (account sign-up via [http://identity.kde.org/ KDE Identity]). [[Infrastructure/Phabricator|Phabricator]], repository browser, calendar and other services.<br />
<br />
* '''commits.kde.org'''<br />
:Provides Git commit "short URLs", redirecting to the repository browser pages as appropriate ([http://commits.kde.org/324dd0cd/a8d1175f61e678f61b3643c867f212ad26ce6f44 example]).<br />
<br />
=== Discontinued services ===<br />
The following services have been discontinued. Usually their role is now provided by other systems, but they typically are missing some important features which the previous systems had. The redesign unfortunately breaks the workflow e.g. in KDevelop which is not yet adapted to the new setup. The culled systems are listed here for reference as they may well still be referenced in older documentation.<br />
<br />
* '''[http://projects.kde.org/ KDE Projects]''' (projects.kde.org)<br />
:Central project hub and primary repository browser.<br />
:Replaced by: the sysadmin/repo-metadata repository (metadata information); phabricator.kde.org (browser)<br />
<br />
* '''[http://commitfilter.kde.org commitfilter.kde.org]'''<br />
:Sends an email with each commit for the projects you want to watch.<br />
<br />
== How to get read-write developer access ==<br />
<br />
KDE developer accounts are managed through [http://identity.kde.org/ KDE Identity]. If you already have a KDE SVN developer account, it has been imported into KDE Identity and you may use the Password Reset feature to set a password and manage your SSH public keys. If you don't have a developer account yet, you can request Developer Access in the website's menu upon registering and logging into your account.<br />
<br />
== Information For KDE Developers ==<br />
<br />
For general information visit the page about [[Infrastructure/Git | the use of Git by KDE]].<br />
<br />
To configure Git for your KDE Development environment, please see the [http://techbase.kde.org/Development/Git/Configuration KDE Git Configuration] page on TechBase.<br />
<br />
You can find some simple step-by-step recipes for using the KDE Git repositories on the [http://techbase.kde.org/Development/Git/Recipes KDE Git Recipes] page on TechBase.<br />
<br />
== Overview of repository URL schemes ==<br />
<br />
=== URL prefixes ===<br />
(KDevelop 5.x users please note: If you came here via the link in KDevelop, note that KDE projects has been '''discontinued''' and replaced by ''Phabricator''. So the neat automatic import of KDE projects ''no longer works'' and you have to do everything manually instead. Sorry!)<br />
<br />
Anonymous read-only access uses the following URL prefix:<br />
<br />
git://anongit.kde.org/<br />
<br />
Read-write developer access uses this prefix instead:<br />
<br />
git@git.kde.org:<br />
<br />
=== Repository paths ===<br />
<br />
Following the prefix, here are the path schemes for different types of repositories:<br />
<br />
* '''<project identifier>'''<br />
:A KDE project repository, be it part of the KDE SC, KDE Extragear or KDE Playground.<br />
<br />
* '''websites/<address sans leading www. and dots replaced by dashes>'''<br />
:A KDE website project, e.g. websites/projects-kde-org.<br />
<br />
* '''sysadmin/<repository name>'''<br />
:Non-public repositories used by KDE's sysadmin team.<br />
<br />
* '''clones/<original repository path>/<KDE Identity user name>/<user-chosen repository name>'''<br />
:Personal clones of project repositories, e.g. <tt>clones/konversation/hein/morecowbell</tt> or <tt>clones/websites/projects-kde-org/hein/pluginwork</tt> ([[#Personal clones of project repositories|more below]]).<br />
<br />
* '''scratch/<KDE identity user name>/<user-chosen repository name>'''<br />
:Personal scratch repositories are a means to start a new project or just to store your favorite .bashrc in a safe location: anything is allowed so long as it is related to KDE or your work for KDE in some way ([[#Personal scratch repositories|more below]]).<br />
<br />
=== Let Git rewrite URL prefixes ===<br />
<br />
Instead of remembering the above URL prefixes, you can also put the following in your <tt>~/.config/git/config</tt>:<br />
<br />
[url "https://anongit.kde.org/"]<br />
insteadOf = kde:<br />
[url "git@git.kde.org:"]<br />
pushInsteadOf = kde:<br />
<br />
Then, to clone e.&nbsp;g. the Amarok repo, just do<br />
<br />
$ git clone kde:amarok<br />
<br />
By using the <tt>kde:</tt> prefix, read access will automatically happen over HTTPS, and authenticated SSH is only required for pushes. Since commits are mirrored to anongit right when you push them, you will not have to worry about anongit being outdated.<br />
<br />
When using invent.kde.org you'll want to use a different hostname instead:<br />
<br />
[url "https://invent.kde.org/kde/"]<br />
insteadOf = invent:<br />
[url "git@invent.kde.org:kde/"]<br />
pushInsteadOf = invent:<br />
<br />
== Server-side commands ==<br />
<br />
git.kde.org understands several server-side commands that can be used on the command line via SSH in this fashion:<br />
<br />
ssh git@git.kde.org <command> [parameters]<br />
<br />
To simplify the first argument to "kde" (i.e. "<tt>ssh kde <command> [parameters]</tt>"), put the following in ~/.ssh/config:<br />
<br />
Host kde<br />
HostName git.kde.org<br />
User git<br />
<br />
The following is a list of the commands that are currently available, broadly divided into categories according to their purpose.<br />
<br />
===Commands for information retrieval===<br />
<br />
*'''<span id="info">info</span>''' <small>[[#info|(link here)]]</small><br />
:Shows a table of repository paths and path patterns you have the permission to see along with details about your access rights to them.<br />
<br />
:A brief legend for the permission flags shown in the listing:<br />
<br />
:* '''@R''' - Read permissions.<br />
:* '''@W''' - Write permissions.<br />
:* '''@C''' - Create permissions (e.g. the initial push to a newly-created repo).<br />
<br />
:If you want to list actual repositories corresponding to patterns listed by <tt>info</tt>, such as your personal [[#Personal scratch repositories|scratch repositories]], see the <tt>[[#expand|expand]]</tt> command described next.<br />
<br />
*'''<span id="expand">expand [regex]</span>''' <small>[[#expand|(link here)]]</small><br />
:Like <tt>[[#info|info]]</tt> above, but actually walks through the repositories to verify the information. It's much slower as a result, and should be used if <tt>info</tt> doesn't provide enough information. For example, <tt>info</tt> will list your personal [[#Personal scratch repositories|scratch space]] only in the form of a pattern while <tt>expand</tt> can list the actual repositories located there.<br />
<br />
:The output is limited to about 20 rows. The optional regex parameter allows you to filter the listing.<br />
<br />
*'''<span id="who-pushed">who-pushed <repository path> <commit sha1 hash></span>''' <small>[[#who-pushed|(link here)]]</small><br />
<br />
:Shows the KDE Identity user name of the contributor who pushed the specified commit to the specified repository.<br />
<br />
===Commands to manage personal repositories===<br />
<br />
*'''<span id="clone">clone <path to source repository> <clone name></span>''' <small>[[#clone|(link here)]]</small><br />
:Can be used to make a personal clone of a project repository.<br />
<br />
:An example:<br />
<br />
ssh git@git.kde.org clone konversation mykonvi<br />
<br />
:This results in a clone at <tt>clones/konversation/<your KDE Identity user name>/mykonvi</tt>.<br />
<br />
:A second example with a longer source repository path:<br />
<br />
ssh git@git.kde.org clone websites/projects-kde-org newtheme<br />
<br />
:This results in a clone at <tt>clones/websites/projects-kde-org/<your KDE Identity user name>/newtheme</tt>.<br />
<br />
:More on personal clones [[#Personal repositories|here]].<br />
<br />
*'''<span id="rm">D rm <repository path></span>''' <small>[[#destroy|(link here)]]</small><br />
:Used to delete a personal clone of a project repository or a personal scratch repository. Requires the repository to be unlocked first using the <tt>[[#unlock|unlock]]</tt> command. See also the <tt>[[#trash|D trash]]</tt> command as an alternative to outright and irrevocable deletion.<br />
<br />
*'''<span id="lock">D lock <repository path></span>''' <small>[[#lock|(link here)]]</small><br />
<br />
:Locks a repository, causing the <tt>[[#destroy|rm]]</tt> command to deny deleting it. <br />
<br />
:Newly-created repositories are locked by default.<br />
<br />
*'''<span id="unlock">D unlock <repository path></span>''' <small>[[#unlock|(link here)]]</small><br />
<br />
:Unlocks a repository, making it possible to delete it using the <tt>[[#destroy|rm]]</tt> command.<br />
<br />
====Commands to manage the personal trash area====<br />
<br />
*'''<span id="trash">D trash <repository path></span>''' <small>[[#trash|(link here)]]</small><br />
<br />
:Moves a repository to the personal trash area, creating an entry in the form <tt><repository path>/<timestamp></tt> there. The timestamps, which have second precision, make it possible to have more than one version of a repository in the trash area at the same time.<br />
<br />
:<span style="color:red">'''Note:'''</span> Entries in the personal trash area are automatically removed after 28 days!<br />
<br />
*'''<span id="restore">D restore <trash area entry></span>''' <small>[[#restore|(link here)]]</small><br />
<br />
:Restores an entry from the personal trash area (see the <tt>[[#list-trash|list-trash]]</tt> command below for how to list the contents of your personal trash area).<br />
<br />
:<tt>restore</tt> will deny restoring an entry if doing so would overwrite an existing repository.<br />
<br />
*'''<span id="list-trash">D list-trash</span>''' <small>[[#list-trash|(link here)]]</small><br />
<br />
:Lists all entries in the personal trash area, in the form <tt><repository path>/<timestamp></tt>.<br />
<br />
===Commands related to repository importing===<br />
*'''<span id="hooks-enable">hooks enable <project repository path></span>''' <small>[[#hooks-enable|(link here)]]</small><br />
<br />
:An example:<br />
<br />
ssh git@git.kde.org hooks enable konversation<br />
<br />
:Available only to repository and system administrators, this command enables several hook scripts that git.kde.org will then execute during a push operation to the specified project repository. Importantly, it also enables write access for non-administrators, which is otherwise disabled along with the hooks scripts. <br />
<br />
:The hook scripts in question are the ones reponsible for forwarding commits to the [https://mail.kde.org/mailman/listinfo/kde-commits kde-commits] mailing list and [http://www.cia.vc/ CIA.vc], and for processing commit message keywords (BUG, CCMAIL, etc.) that may interact with [http://bugs.kde.org/ KDE Bugzilla] or cause further emails to be sent. As these hook scripts are only available to project repositories, and not to [[#Personal repositories|personal repositories]], the command only applies to them.<br />
<br />
:After creating a new, empty project repository for you the system administators will initially disable the hook scripts so you can safely import large numbers of old commits.<br />
<br />
===Commands for system administrators===<br />
<br />
*'''<span id="sudo">sudo <KDE Identity user name> <command></span>''' <small>[[#sudo|(link here)]]</small><br />
:Used by system administrators to run one of the above as another user.<br />
<br />
*'''<span id="able">able <en|dis> <@all|repository path></span>''' <small>[[#able|(link here)]]</small><br />
:Used by system administrators to enable or disable writes to particular repositories or all repositories, for maintenance.<br />
<br />
*'''<span id="hooks-disable">hooks disable <project repository path></span>''' <small>[[#hooks-disable|(link here)]]</small><br />
<br />
:Disables the hook scripts git.kde.org normally executes during a push operation to a project repository. While the hook scripts are disabled only repository administrators can push commits to a repository. Both system and repository administrators have the ability to reenable the hook scripts using the <tt>[[#hooks-enable|hooks enable]]</tt> command.<br />
<br />
*'''<span id="ohnoes">ohnoes <show|recover> <repository path> <gitref></span>''' <small>[[#ohnoes|(link here)]]</small><br />
:Used by system administrators to recover deleted branches or mistaken force pushes (rewinds).<br />
<br />
== Commit hook keywords ==<br />
<br />
See [[Policies/Commit_Policy#Special_keywords_in_GIT_and_SVN_log_messages | Special keywords in GIT and SVN log messages]]<br />
<br />
== Personal repositories ==<br />
<br />
git.kde.org currently offers two types of personal repositories: Personal clones of project repositories and personal scratch repositories.<br />
<br />
=== Personal clones of project repositories ===<br />
<br />
A personal clone of a project repository can be created using the server-side <tt>clone</tt> command on the command line:<br />
<br />
ssh git@git.kde.org clone <path to source repository> <clone name><br />
<br />
This will create a clone of the source repository at <tt>clones/<path to source repository>/<KDE Identity user name>/<clone name></tt>. (See more examples of <tt>clone</tt> in action [[#clone|here]].)<br />
<br />
This scheme makes it very easy to locate all personal clones of a given project and should be preferred over making one in your personal [[#Personal scratch repositories|scratch space]]. (In fact, the server-side <tt>clone</tt> command won't allow you to clone a project repository into your personal scratch space, but nothing technically prevents you from taking the detour of a local clone to achieve this.)<br />
<br />
Personal clones of project repositories currently do not show up on [http://projects.kde.org KDE Projects], but we have plans to change that in the future. Until then, you can use [https://cgit.kde.org/ cgit.kde.org] to browse these repositories.<br />
<br />
=== Personal scratch repositories ===<br />
<br />
Personal scratch repositories are a means to start a new project or just to store your favorite <tt>.bashrc</tt> in a safe location: anything is allowed so long as it is related to KDE or your work for KDE in some way.<br />
<br />
For the rest of this instruction, let's assume the following names:<br />
* <kde-id> - Your KDE identity user name<br />
* <repo> - Your (new) git repository name<br />
<br />
If you start a new project then you need to create a git repository out of it before you start to push it to the scratch repositories. This is done by going into the the directory which will contain your project and type:<br />
<br />
git init<br />
<br />
This will convert the local directory to a git repository. This is of course not necessary if you already have a local git repo containing your project.<br />
<br />
To make pushing to the repository convenient, it is recommended to add a remote to push to first:<br />
<br />
git remote add origin git@git.kde.org:scratch/<kde-id>/<repo><br />
<br />
Now you need to create something to push. Otherwise git will refuse the next step. So it is recommended that you create a README for your project and then commit that. If you are copying in an existing (non-git) project, you should 'git add . && git commit -a' first. Afterward, you perform the first push to the repository as follows:<br />
<br />
git push --all origin<br />
<br />
Now your new scratch repository is created and initialized. It will take about 30 minutes until the creation of the new repository has propagated to the other tools and is visible there.<br />
<br />
git push --all does not push tags. You can push them in a second step with<br />
<br />
git push --tags ...as above...<br />
<br />
Personal scratch repositories can be browsed on [https://cgit.kde.org/ cgit.kde.org].<br />
<br />
You can set a description on your scratch repository by issuing a command<br />
<br />
ssh git@git.kde.org desc scratch/<kde-id>/<repo> "Application to do magic"<br />
<br />
If you feel your new project is ready for the wider world and/or wish to signal that it welcomes outside contributors, you may wish to promote it to the status of a KDE Playground project. KDE Playground project repositories are located at the top-level, i.e. the repository will be moved out of your scratch space and may have to be renamed in the event of a collision with an existing repository name. KDE Playground projects are featured on [http://projects.kde.org KDE Projects] and covered by the [https://mail.kde.org/mailman/listinfo/kde-commits kde-commits] mailing list (and thus [http://commitfilter.kde.org CommitFilter]), [http://lxr.kde.org/ LXR], and [http://www.englishbreakfastnetwork.org/ EBN], unlike personal scratch repositories.<br />
<br />
To request your scratch repository be promoted to the status of a KDE Playground project, you currently need to file a [https://sysadmin.kde.org/tickets/index.php?page=tickets&act=add sysadmin repo request]. In the future we plan to provide a fully automated facility on [http://projects.kde.org KDE Projects].<br />
<br />
Note that we have deliberately decided not to allow the direct creation of KDE Playground projects; the path to existence for a KDE Playground repository project always leads through a personal scratch space first. This is to give you the power to decide whether your project is ready, and also to force you to deliberate whether it truly is.<br />
<br />
===Deleting personal repositories===<br />
<br />
A personal repository can either be deleted outright and irrevocably by using the <tt>[[#rm|rm]]</tt> command (which requires you to <tt>[[#unlock|unlock]]</tt> it first to avoid accidental deletion), or you may move it to the personal trash area with the <tt>[[#trash|trash]]</tt> command.<br />
<br />
ssh git@git.kde.org D trash scratch/<username>/<project><br />
<br />
'''Entries in the personal trash area are kept for 28 days,''' and can be resurrected at any moment during those 28 days by way of the <tt>[[#restore|restore]]</tt> command. You can list the current contents of your personal trash area with the <tt>[[#list-trash|list-trash]]</tt> command.<br />
<br />
== Requesting project migrations from KDE SVN or Gitorious.org ==<br />
<br />
To get your project moved from KDE SVN or Gitorious.org to git.kde.org, you have to file a [http://sysadmin.kde.org/svnaccount/repo-request.php sysadmin request]. It will ask you for the following information:<br />
<br />
* The name and description of the project.<br />
* The current location of the project.<br />
* Its current or intended module (e.g. playground/utils or extragear/network).<br />
* Which KDE Identity user name(s) should have admin rights to the repository and the entry on [http://projects.kde.org KDE Projects].<br />
* The email address that the [http://phabricator.kde.org Phabricator] group for the project should send emails to.<br />
* The date and time the migration should take place (can be "asap").<br />
<br />
When we have completed processing your request, there will be an empty repository at the chosen path ([[#Overview of repository URL schemes|more here]]) that the repository administrators can push the data into. (When converting from KDE svn to git this typically involves [[../DeveloperAccessForRuleWriting|writing a rule set]], running svn-all-fast-export, and then pushing the created repository into the new git path.) Once you are done pushing everything to the repository, use the <tt>[[#hooks-enable|hooks enable]]</tt> command to enable the commit hooks and allow write access to non-administrators.<br />
<br />
== Advanced Git ==<br />
<br />
=== Safety Precautions ===<br />
<br />
With these techniques, always work on a disposable copy of the repo with all the remotes removed, so if you screw up, it doesn't really matter. Also, work on a separate branch. That way, you can usually use <tt>git reset --hard &lt;original-branch&gt;</tt> to get back to the starting state.<br />
<br />
Also, make sure there are no grafts around (eg: linking to the old kdelibs history in the case of frameworks). The safest way to do this is to use fresh checkouts.<br />
<br />
=== Merging repositories ===<br />
<br />
The <tt>git-merge-repo</tt> script in [https://projects.kde.org/projects/kde/kdesdk/kde-dev-scripts kde-dev-scripts] can merge the tree and history of one git repository into another.<br />
<br />
First, create a commit in the source repo that removes any files you don't want to copy, and rearrange the remaining files to be as you want them to appear in the target repo. It is important the HEAD of the source and target repositories have completely disjoint trees (so you could copy one tree into the other with no file conflicts).<br />
<br />
Then go to the root of the target repository and run<br />
<br />
/path/to/kde-dev-scripts/git-merge-repo <path to source repo><br />
<br />
This will preserve commit identities (unless you filter the source repository - see below).<br />
<br />
:<span style="color:red">'''Note:'''</span> Before pushing such a merge, talk to [http://sysadmin.kde.org/ sysadmin] (ideally on #kde-sysadmin in irc). They can temporarily disable commit hooks (like CCMAIL and BUG) so that people do not get emails about old commits.<br />
<br />
=== Filtering ===<br />
<br />
<tt>git filter-branch</tt> allows you to edit history. This is useful when you want to merge only a small part of one repository into another. You can trim the tree, and also alter the commit messages (for example to add information about the origin of the commits).<br />
<br />
A combination of <tt>--tree-filter</tt>, <tt>--prune-empty</tt> and <tt>--msg-filter</tt> generally gets what you want. For example,<br />
<br />
git filter-branch --prune-empty \<br />
--tree-filter "find -type f -\! -path './.git/*' -\! -name foo.\* -delete" \<br />
--msg-filter 'cat; echo; echo "Commit $GIT_COMMIT in <source-repo>"' \<br />
HEAD<br />
<br />
This example will remove everything that does not match <tt>foo.*</tt>. Note the <tt>-path</tt> argument to <tt>find</tt> that makes sure you don't delete any of git's own files. <tt>--prune-empty</tt> will remove non-merge commits that no longer have any effect on the tree (you can run <tt>git rebase</tt> after to trim the merge commits if you want). <tt>--msg-filter</tt> adds information about where the commit came from (don't forget to change <tt>&lt;source-repo&gt;</tt>!)<br />
<br />
More complex filters are possible. Have a look at the man page for <tt>git-filter-branch</tt>. Note that while you could use the commit message filter to neuter commit hook keywords like CCMAIL, it is better to ask a sysadmin to disable the commit hooks temporarily while you push.<br />
<br />
See [http://whileimautomaton.net/2010/04/03012432 mastering git filter-branch: points to extract a subproject] for more helpful hints.</div>GB 2https://community.kde.org/index.php?title=Infrastructure/Git&diff=85552Infrastructure/Git2019-08-16T09:33:44Z<p>GB 2: Suggest ~/.config/git/config</p>
<hr />
<div>[[Category:Needs Attention]]<languages /><br />
<translate><br />
<!--T:1--><br />
This is the hub page for all information about the use of Git by KDE.<br />
<br />
This section provides details on using the KDE Git infrastructure. This is intended for use by KDE developers to find out how KDE uses Git and how to set up Git for use with KDE.<br />
<br />
<br />
== Git at KDE ==<br />
KDE currently offers code hosting using Git. Additionally, KDE also maintains a limited Subversion infrastructure for certain special projects, such as translations and older websites.<br />
<br />
=== Anonymous access ===<br />
<br />
Both Git and Subversion repositories can be accessed anonymously by anyone. This access takes place from <code>anongit.kde.org</code> and <code>anonsvn.kde.org</code> for Git and Subversion respectively, and grants read only access to the same repositories which are available to contributors with developer accounts.<br />
<br />
For Git, it is possible to perform clones and fetches over either the Git or HTTP protocols, depending on your situation. Access over HTTP is usually necessary when you are behind a restrictive network firewall. If your network access is unreliable, then you may want to download an archive of the repository instead, which you can freely resume the download of, as well as commit to and update later by using the usual git commands. These archives can be accessed at <code>https://anongit.kde.org/&lt;repository&gt;/&lt;repository&gt;-latest.tar.gz</code>.<br />
<br />
KDE also maintains a mirror of its mainline Git repositories on [https://github.com/kde/ GitHub]. This mirror is read-only, and disables all of GitHub's additional features, such as issues, the wiki, and downloads, in favour of KDE's own hosted services. Additionally, pull requests on these repositories are not accepted, but code changes can always be accepted through KDE's code-review services. And still, GitHub may be used / searched more intuitively than alternatives, e.g. when a particular [https://github.com/KDE/extra-cmake-modules/releases ECM] version is needed, as it will. <br />
<br />
For Subversion, access is only provided over the Subversion protocol. If you are behind a restrictive firewall and need to access the KDE Subversion repository anonymously (and have no other means of network access), please file a [https://go.kde.org/u/systickets ticket].<br />
<br />
=== Pushing ===<br />
<br />
Push or commit access to all KDE code repositories is open to any holder of a KDE developer account, subject to few limitations. This model allows contributors to easily make contributions to all parts of KDE without needing further approval. All commits made to either Git or Subversion are subject to commit hooks which will perform a few quality control checks and can take other actions on behalf of the developer. In the case of both Git and Subversion it is only possible to commit over SSH.<br />
<br />
With KDE Git, it is recommended to use a shortcut to access repositories instead of directly cloning them from the Git server itself. This shortcut allows you to use a local mirror of the repositories, and should improve response times. To setup a <code>kde:</code> shortcut, you should add the following configuration block to <code>~/.config/git/config</code>. If your network blocks the Git protocol, then you can exchange that for HTTP instead.<br />
<br />
<pre>[url &quot;git://anongit.kde.org/&quot;]<br />
insteadOf = kde:<br />
[url &quot;git@git.kde.org:&quot;]<br />
pushInsteadOf = kde:</pre><br />
Once setup as above, you can clone and push to repositories through the URL <code>kde:repository</code>.<br />
<br />
As Subversion requires that checkouts you are committing from are made from the same location you are committing to, checkouts should be made from the Subversion server directly. It can be accessed at <code>svn+ssh://svn@svn.kde.org/home/kde/</code>. If you have existing checkouts, you will need to relocate them using the <code>svn switch</code> command before you are able to commit.<br />
<br />
=== Browsing ===<br />
<br />
To allow for quick review of code, web repository browsers exist for both Git and Subversion repositories. Those interested in browsing Subversion should visit [https://websvn.kde.org/ WebSVN], which will contain the latest commits made to the KDE Subversion repository subject to a delay of 10 minutes at maximum.<br />
<br />
In the case of Git, repository browsing is available via [https://cgit.kde.org/ cgit]. Additionally, all mainline repositories are available on [https://github.com/kde GitHub] and can be browsed there. Please note that scratch and clone repositories are only browsable on cgit.<br />
<br />
If you need to link to materials which are stored in either Git or Subversion repositories on KDE infrastructure, it is requested that you do not embed the content directly, but simply link to it. Embedding content causes significantly higher load on the repository browser servers, making it unavailable for others wishing to use it. This is particularly relevant for blog posts on Planet or any other high traffic web page.<br />
<br />
=== New repositories ===<br />
<br />
To allow for free form development in a manner similar to Subversion did, KDE Git allows personal repositories to be created on demand as needed. Two types of personal repository are available:<br />
<br />
Scratch repositories are created on the fly when a developer pushes to them for the first time, and exist at <code>scratch/username/myRepo</code>. These are recommended for new development work.<br />
<br />
Clone repositories are created by cloning an existing project repository, and exist at <code>clones/project/username/myClone</code>. They are created by running <code>ssh git@git.kde.org clone project myClone</code> where <code>myClone</code> is the name you wish to call your clone, and <code>project</code> is the name of the repository you are cloning.<br />
<br />
Personal repositories can be deleted at any time.<br />
<br />
From time to time it may be necessary to create new project repositories, to contain newly developed applications, migrate existing applications from Subversion or to bring new projects under the KDE umbrella. New repositories can be requested by filing a [https://go.kde.org/u/systickets ticket], and will usually be created at the top level on <code>git.kde.org</code>.<br />
<br />
=== Extra Karma ===<br />
<br />
At times contributors may find it necessary to push or commit to certain repositories or paths which are protected. In this case the server will reject your request with a message such as '''insufficient karma''' or '''access denied'''. This protection is most often applied to repositories which run parts of the infrastructure such as websites or other crucial components.<br />
<br />
If you would like to request access to these protected areas, please file a [https://go.kde.org/u/systickets ticket], mentioning which repositories or paths you are trying to change.<br />
<br />
A complete manual on how to use KDE's Git services, along with some best practices, is available on the [http://community.kde.org/Sysadmin/GitKdeOrgManual KDE Community Wiki].<br />
<br />
=== Hooks ===<br />
Kde provides some [[/Hooks |git hooks]] to perform and automatize some actions on push.<br />
<br />
=== Server Fingerprints ===<br />
The SSH host server key fingerprints are as follows for both Git and Subversion access:<br />
<br />
* '''RSA-2048 (MD5)''': <code>f9:54:62:b2:90:f2:dc:08:df:f4:a3:fa:c5:2a:a0:c8</code><br />
* '''RSA-2048 (SHA256)''': <code>eONstlOUy0LjhlkjK90e1/bm95fOqnz8qcUsijWuP0Q</code><br />
* '''ECDSA-256 (MD5)''': <code>23:62:3e:0b:18:f2:5d:e9:66:8a:80:fb:82:53:84:b5</code><br />
* '''ECDSA-256 (SHA256)''': <code>Bvp9zqBBiEf9QdpX09B0PL2CkDa1B64WtkKZyTq7XhM</code><br />
* '''ED25519-256 (MD5)''': <code>f3:17:e5:0b:79:16:2b:73:45:fa:5d:23:24:eb:33:40</code><br />
* '''ED25519-256 (SHA256)''': <code>x8pnmJ/gZmuw68V+wJUlT3MreIzPACzKmd/Ybei9gBA</code><br />
<br />
== Resources == <!--T:21--><br />
<br />
<!--T:22--><br />
Links to useful external sites about Git<br />
<br />
=== Official Documentation === <!--T:23--><br />
<br />
<!--T:24--><br />
* [http://git-scm.com/documentation Links to git official documentation]<br />
<br />
=== Git for SVN Users === <!--T:25--><br />
<br />
<!--T:26--><br />
* [http://git-scm.com/course/svn.html The git-svn Crash Course]<br />
<br />
=== Git books === <!--T:27--><br />
<br />
<!--T:28--><br />
* [http://progit.org/book/ Pro Git] - An easy to understand book on git (CC licensed).<br />
<br />
<!--T:30--><br />
* [http://book.git-scm.com/ The git community book], also as a [http://book.git-scm.com/book.pdf pdf]<br />
<br />
=== Tutorials === <!--T:32--><br />
<br />
<!--T:33--><br />
* [http://www-cs-students.stanford.edu/~blynn/gitmagic/ Git Magic] - A good intro to git (in several languages!) <br />
<br />
<!--T:35--><br />
*[http://tom.preston-werner.com/2009/05/19/the-git-parable.html The Git Parable]<br />
- Essential reading if you want to truly understand git.<br />
<br />
<!--T:37--><br />
* [http://www.gitcasts.com/ Git Screencasts]<br />
<br />
<!--T:95--><br />
* [http://try.github.io/ tryGit] A 15 minute online interactive tutorial<br />
<br />
=== KDE's Git Infrastructure ===<br />
<br />
The [http://community.kde.org/Sysadmin/GitKdeOrgManual KDE Git System Administrators Manual] is a useful resource for more details on the technical implementation of the KDE Git infrastructure.<br />
<br />
<!--T:91--><br />
For more information on how the KDE Git Repositories are organized, please see the [[Guidelines_and_HOWTOs/Build_from_source|Build from source]] page.<br />
<br />
<!--T:94--><br />
Other:<br />
* The new [[Policies/Commit Policy|Commit Policy]] is being reviewed, applied to both SVN and Git.<br />
* [[/GitHub Mirror/]] has been created and policy is in development (Sep 2015).<br />
<br />
=== KDE Git Recipes === <!--T:12--><br />
<br />
<!--T:13--><br />
Short recipes for using Git with the KDE infrastructure.<br />
<br />
<!--T:14--><br />
Please see the [[Special:myLanguage/Infrastructure/Git/Recipes|Git Recipes page]].<br />
<br />
=== KDE Git Tutorials === <!--T:16--><br />
<br />
<!--T:17--><br />
More in-depth instructions in using Git.<br />
<br />
<!--T:18--><br />
* [[Special:myLanguage/Infrastructure/Tutorials/Git/GitQuickStart|A quick step-by-step guide for getting started]]<br />
<br />
<!--T:19--><br />
* [[Special:myLanguage/Infrastructure/Tutorials/Git/Create a patch|Creating a patch]]<br />
<br />
<!--T:20--><br />
Please help filling this section by<br />
* checking the links at the bottom of the page and see which still have valid content<br />
* write tutorials yourself<br />
<br />
=== Cheat Sheets === <!--T:38--><br />
<br />
<!--T:39--><br />
* [http://cheat.errtheblog.com/s/git Quick reference]<br />
<br />
<!--T:40--><br />
* [http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html Illustrated git cheat sheet] <br />
(broken image, get it from [[Media:Zrusin-git-cheat-sheet-medium.png]])<br />
</translate></div>GB 2https://community.kde.org/index.php?title=Get_Involved/development&diff=85481Get Involved/development2019-08-11T20:41:26Z<p>GB 2: Fix build.kde.org failing builds URL</p>
<hr />
<div>[[File:Konqui dev close cropped.png|right|x200px|]]<br />
By joining the ranks of KDE developers, you will get to implement new features and defeat bugs both daunting and simple, all while collaborating to make coherent and stable releases. Developers collaborate in teams based on what area they are working in. These can be small teams working on a single application, up to large teams working on a group of related pieces of software. Many developers are in more than one team.<br />
<br />
KDE runs or participates in several mentoring programs to help new developers, including an informal list of people who are willing to help newcomers get started. See the [[Mentoring]] page for more details.<br />
<br />
{{Info|While any operating system can be used to patch or develop KDE software, it's easiest if you use a Linux distribution that provides relatively recent versions of Qt and KDE Frameworks, such as Arch/Manjaro, Fedora, KDE Neon, openSUSE Tumbleweed, or non-LTS versions of Ubuntu.<br /><br />Support for distros that ship older software (such as Debian, Ubuntu/Kubuntu 18.04, and openSUSE Leap 15) is still experimental and you may have a better experience developing with one of the distributions mentioned above in a virtual machine.}}<br />
<br />
<br />
<br />
== New to C++/Qt software development? ==<br />
Most KDE software is written in C++ using the [https://www.qt.io Qt toolkit] and [[Frameworks | KDE Frameworks]]. Though prior experience with these technologies or other programming languages is helpful, you don't need to be a C++ programmer to get started! For example, no programming knowledge whatsoever is required to do things like improve text labels.<br />
<br />
If you'd like to dive deeper, the Qt wiki contains [https://wiki.qt.io/Books a list of online books] for learning Qt programming. Qt also provides [http://doc.qt.io/qt-5/qtexamplesandtutorials.html lots of examples] you can look at. Information about KDE Frameworks can be found on the [https://techbase.kde.org TechBase wiki], and a [[Books | book]] is available.<br />
<br />
<br />
<br />
== One-time setup: your development environment ==<br />
To build software, you need 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 Konsole (but any terminal program will suffice).<br />
<br />
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!<br />
<br />
{{Note|'''Everything in this section 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!}}<br />
<br />
<br />
=== Install basic tools ===<br />
First you will need to use your operating system's package manager to install some basic tools:<br />
* Arch/Manjaro: <code>sudo pacman -S git cmake dialog</code><br />
* Fedora: <code>sudo dnf install git cmake dialog perl</code><br />
* KDE Neon/Kubuntu/Ubuntu/Debian: <code>sudo apt install git cmake dialog</code><br />
* openSUSE Leap & Tumbleweed: <code>sudo zypper install git cmake dialog</code><br />
<br /><br />
<br />
<br />
=== Enable the source repositories ===<br />
Some operating systems also require that you enable on the source repositories before you can install build dependencies (more about that later). Do that now, if necessary:<br />
* Kubuntu/Ubuntu/Debian: <code>sudo sed -i '/deb-src/s/^# //' /etc/apt/sources.list && sudo apt update</code> (for more information, see https://askubuntu.com/questions/158871/how-do-i-enable-the-source-code-repositories)<br />
* openSUSE Leap & Tumbleweed: <code>sudo zypper mr -e $(zypper repos | awk '/source/{print $5}'))</code><br />
<br /><br />
If you don't see your distro in the above list, then there's nothing you need to do here and you can safely move onto the next step.<br />
<br /><br />
<br />
<br />
=== Configure Git ===<br />
We need to set your authorship information properly so that any changes you make can be properly attributed to you:<br />
{{Input|1=<nowiki><br />
git config --global user.name "Your Name"<br />
git config --global user.email "you@email.com"<br />
</nowiki>}}<br />
<br />
{{Note|The name you provide should be your actual name, not your KDE Identity username.<br />
<nowiki><br />
<br />
</nowiki><br />
The email address you specify above must be the same as the email address used for your https://bugs.kde.org account. If they don't match, then the <tt>BUG: </tt> and <tt>FEATURE: </tt> keywords won't work (see [https://techbase.kde.org/Development/Git/Configuration#Basic_Settings this page] for more information).}}<br />
<br /><br />
<br />
=== Set up kdesrc-build ===<br />
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.<br />
<br />
Most Linux-based operating systems do not provide development packages that are up-to-date enough for working on KDE software, so we will compile all the KDE dependencies ourselves. To do this, we use a command-line tool called <code>kdesrc-build</code> to download, manage, and build KDE source code repositories. Let's set it up now:<br />
<br />
{{Input|1=<nowiki><br />
mkdir -p ~/kde/src<br />
cd ~/kde/src/<br />
git clone git://anongit.kde.org/kdesrc-build.git<br />
</nowiki>}}<br />
<br />
This has "cloned" the source code repository that holds <code>kdesrc-build</code>, so you have a local copy of it on your computer.<br />
<br />
Next we want to add the <code>kdesrc-build</code> program to your system's <tt>$PATH</tt> variable so you can access it from anywhere, not just when you're inside <tt>~/kde/src/kdesrc-build</tt>. Use a text editor to open the <tt>~/.bashrc</tt> file and add a new line containing <code>export PATH=~/kde/src/kdesrc-build:$PATH</code>. Then save the file, close it, and run <code>source ~/.bashrc</code> to pick up the changes.<br />
<br />
Next, it's time to set up <code>kdesrc-build</code> using its built-in wizard. Feel free to customize anything, but running it with the default options should be ok:<br />
{{Input|1=<nowiki><br />
kdesrc-build --initial-setup<br />
</nowiki>}}<br />
{{Warning|Do not quote or escape any file paths entered in the wizard! And do not run the command <code>kdesrc-build</code> by itself without any arguments because this will build everything, which is probably overkill right now.}}<br />
<br />
This command does two things. First, it tries to install the basic packages for compiling Qt and KDE software on your distro. Second, it creates a <code>~/.kdesrc-buildrc</code> configuration file.<br />
<br />
{{Note|By default, <code>kdesrc-build</code> will build from source all the dependencies that a program or framework needs, including the Qt toolkit itself. If your Linux distribution provides a recent version of Qt (5.11 or newer), you can save some time and disk space and use that version instead of building your own. To configure <code>kdesrc-build</code> to skip building Qt, open the configuration file <code>~/.kdesrc-buildrc</code> and comment out the <code>qtdir</code> and two <code>include</code> lines related to qt5.<br />
<nowiki><br />
<br />
</nowiki><br />
If you don't want to build all dependencies because you are using a rolling release distro that provides recent versions of software, edit the same configuration file and simply set <code>include-dependencies</code> to '''false'''.}}<br />
<br />
If you want a more guided setup process for <code>kdesrc-build</code>, run the command <code>kdesrc-build-setup</code> instead. However, unlike <code>--initial-setup</code>, it won't install packages from your distro for compiling programs so you will have to do that yourself.<br />
<br />
Consult the [https://docs.kde.org/trunk5/en/extragear-utils//kdesrc-build/ kdesrc-build manual] for more information and options.<br />
<br />
<br />
=== Download non-KDE dependencies ===<br />
Even though <code>kdesrc-build</code> will take care of the KDE dependencies for you, it does not yet have the ability to install non-KDE dependencies (see https://bugs.kde.org/show_bug.cgi?id=402428), which are typically acquired using your package manager. To install the required non-KDE dependencies, [[Guidelines and HOWTOs/Build from source/Install the dependencies|read this page]] and follow the instructions laid out there.<br />
<br />
Once that's done, your development environment is set up and ready to build software! Let's take it for a spin.<br />
<br />
<br />
<br />
== Build some software ==<br />
{{Note|It can take an hour or more to compile a KDE Application, Framework, or Plasma itself for the first time. The reason for this is that <code>kdesrc-build</code> is compiling ''all'' of the KDE dependencies (See https://invent.kde.org/kde/kdesrc-build/issues/17). The next time you want to compile that or any other piece of KDE software, it will be much faster since most of the dependencies will have already been compiled.}}<br />
<br />
=== Applications ===<br />
'''[[KDE Applications]]''' like Dolphin, Okular, Konsole and Gwenview are standalone apps that can be run on multiple platforms, such as Plasma, GNOME, even macOS and Windows! New versions of KDE Applications are [[Schedules/Applications/18.12 Release Schedule|released three times a year]]. Note that the Discover app store (git repo name: <tt>plasma-discover</tt>) and System Settings app (git repo name: <tt>systemsettings</tt>) are distributed alongside Plasma, but they build like apps app using the below instructions. A list of all KDE applications can be found here: https://userbase.kde.org/Applications.<br />
<br />
For example, here is how to build Dolphin, the KDE file manager:<br />
<br />
{{Input|1=<nowiki><br />
kdesrc-build dolphin --include-dependencies<br />
</nowiki>}}<br />
<br />
As a part of this process, Dolphin was installed to <tt>~/kde/usr/bin/dolphin</tt>. '''There is no need to manually install anything;''' <tt>kdesrc-build</tt> installed it for you! <tt>Source</tt> the project's auto-generated <tt>prefix.sh</tt> file every time you want to run your custom-compiled version of Dolphin: <br />
<br />
{{Input|1=<nowiki><br />
source ~/kde/build/dolphin/prefix.sh<br />
~/kde/usr/bin/dolphin<br />
</nowiki>}}<br />
<br />
Did it run? If so, then '''congratulations, you just compiled your own version of Dolphin from source code!'''<br />
<br />
<br />
=== Frameworks ===<br />
'''[[Frameworks|KDE Frameworks]]''' are libraries of tools and features that can be used by any application or Plasma itself. New versions of KDE Frameworks are [[Schedules/Frameworks|released once a month]]. A list of all frameworks can be found here: https://api.kde.org/frameworks/index.html.<br />
<br />
For example, here is how to build the KIO framework:<br />
<br />
{{Input|1=<nowiki><br />
kdesrc-build kio --include-dependencies<br />
</nowiki>}}<br />
<br />
Now you can run an existing app using your custom-made version of the framework! For example, the following will run Dolphin, but it will be using the KIO library that you just built:<br />
<br />
{{Input|1=<nowiki><br />
source ~/kde/build/kio/prefix.sh<br />
~/kde/usr/bin/dolphin<br />
</nowiki>}}<br />
<br />
<br />
=== Plasma ===<br />
'''[[Plasma|KDE Plasma]]''' is the environment in which you can run apps. Plasma is responsible for providing a desktop with wallpaper, app launchers, and widgets; displaying notifications; managing wired and wireless networks; and similar operating-system level tasks. New versions of Plasma are [[Schedules/Plasma 5|released three times a year]].<br />
<br />
Here is how to build the Plasma desktop environment, including its window manager and its built-in apps:<br />
<br />
{{Input|1=<nowiki><br />
kdesrc-build plasma-desktop plasma-workspace plasma-framework plasma-nm plasma-pa plasma-thunderbolt plasma-vault plasma-workspace-wallpapers kdeplasma-addons kwin systemsettings kscreen breeze discover kinfocenter --include-dependencies<br />
</nowiki>}}<br />
<br />
To run your custom-built Plasma, first make it accessible from the SDDM login screen by running the following command:<br />
{{Input|1=<nowiki><br />
sudo ~/kde/build/plasma-workspace/login-sessions/install-sessions.sh<br />
</nowiki>}}<br />
<br />
After that, you can log out and select your new plasma session in SDDM's session chooser menu (which is located in the bottom-left corner of the screen if you're using the Breeze SDDM theme)<br />
<br />
There are a few quirks to keep in mind when running your custom-compiled Plasma:<br />
<br />
===== KAuth & Polkit applications =====<br />
{{Note|This step is optional, but you will need to do it if you want to develop or use apps that display password dialogs.}}<br />
Because we installed Plasma to a custom path, KAuth and Polkit need to be made aware of it. Run the following commands:<br />
<syntaxhighlight lang="bash"><br />
sudo ln -s /home/$USER/kde/usr/etc/dbus-1/system.d/* /etc/dbus-1/system.d/.<br />
sudo ln -s /home/$USER/kde/usr/etc/polkit-1/rules.d* /etc/polkit-1/rules.d/.<br />
</syntaxhighlight><br />
<br />
===== DBus =====<br />
{{Note|This step is optional, but your Plasma session may experience quirky behavior without it.}}<br />
Just like KAuth and PolKit, DBus is not aware of the new Plasma installation and needs to be informed. Unfortunately, unlike Kauth and PolKit, DBus can only be given one path at a time, so we will need to change the path that DBus looks at whenever you use your new Plasma session. Create a file <tt>/etc/dbus-1/session-local.conf.bak</tt> with the following contents:<br />
<pre><br />
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN"<br />
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"><br />
<busconfig><br />
<servicedir>/home/$USER/kde/usr/share/dbus-1/services</servicedir><br />
</busconfig><br />
</pre><br />
<br />
Create another file <tt>/etc/dbus-1/system-local.conf.bak</tt> with the following contents:<br />
<pre><br />
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN"<br />
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"><br />
<busconfig><br />
<servicedir>/home/$USER/kde/usr/share/dbus-1/system-services</servicedir><br />
<includedir>/home/$USER/kde/usr/etc/dbus-1/system.d</includedir><br />
</busconfig><br />
</pre><br />
<br />
Before logging into your new compiled-from-source Plasma session, rename the files like so:<br />
<syntaxhighlight lang="bash"><br />
sudo mv /etc/dbus-1/session-local.conf.bak /etc/dbus-1/session-local.conf<br />
sudo mv /etc/dbus-1/system-local.conf.bak /etc/dbus-1/system-local.conf<br />
</syntaxhighlight><br />
<br />
Then before you log out and return to your normal distro-provided Plasma session, rename them like so:<br />
<syntaxhighlight lang="bash"><br />
sudo mv /etc/dbus-1/session-local.conf /etc/dbus-1/session-local.conf.bak<br />
sudo mv /etc/dbus-1/system-local.conf /etc/dbus-1/system-local.conf.bak<br />
</syntaxhighlight><br />
<br />
=== How to solve build problems ===<br />
Did one or more modules fail to build (displayed in red font) using <code>kdesrc-build</code>? Here's what to do:<br />
<br />
# Try building the failing module again from scratch using <code>kdesrc-build [failing module] --refresh-build</code><br />
# Make sure that you have all the dependencies for the failing module. Go back to the [[#Download non-KDE dependencies]] section and re-install the non-KDE dependencies. If that doesn't fix the problem. Open the log file for the failing module, which <code>kdesrc-build</code> will print the path at the end of its output. Scroll to the bottom of the log file and read the output to see what missing dependency it is complaining about, then find and install the corresponding package using your distro's package manager your distro. If several looks relevant, install them all just to be safe.<br />
# Check the [https://build.kde.org/view/Failing/ list of currently broken modules] on the KDE build server. If it's broken there, then it's not your fault. :)<br />
# Ask for help in the the [https://webchat.kde.org/#/room/#kde-devel:kde.org #kde-devel] channel on [[Matrix]] or freenode [[Internet Relay Chat | IRC]]. See [[Get Involved/development#Communicate with the team]]<br />
<br />
== Choose what to do ==<br />
Now that you can compile and deploy custom versions of KDE software, you can open your editor and start hacking on the source code! The code for the version of Dolphin that you built earlier is located at <tt>~/kde/src/dolphin/</tt>; other projects you build with <code>kdesrc-build</code> will live in similar locations.<br />
<br />
A good place to start is with a small bug or feature in an existing piece of software that affects you personally ("scratch your own itch"). Get in touch with the existing developers (see [[#Communicate with the team|Communicate with the team]], below) and they can help you out, by pointing you to the right place in the code and giving advice about how to tackle the problem.<br />
<br />
Try not to start by proposing or working on major features or significant design changes. These can be controversial, and the smoothest way to get going is by working on relatively non-controversial bugfixes. Start slowly and build trust!<br />
<br />
Here are some other ideas for starting points:<br />
<br />
* Improve awkwardly-worded messages and labels that are written in English. This is a great way for non-programmers to contribute! If you can compile software and have a good grasp of English, you can make a big difference here.<br />
* Work on [https://bugs.kde.org/buglist.cgi?bug_status=UNCONFIRMED&bug_status=CONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&keywords=junior-jobs&list_id=1340815 Junior Jobs], which are small tasks that are suitable for beginners (both bugs and features).<br />
* Work on [https://bugs.kde.org/buglist.cgi?bug_status=UNCONFIRMED&bug_status=CONFIRMED&bug_status=ASSIGNED&bug_status=REOPENED&keywords=usability&keywords_type=allwords&list_id=1493316&order=product%2Cchangeddate%20DESC%2Cbug_status%20DESC%2Cresolution%2Cpriority%2Cassigned_to%2Cbug_id&query_format=advanced Bugs related to] KDE's [[Goals/Usability_%26_Productivity | Usability & Productivity initiative]], many of which are small and easy.<br />
* [http://www.englishbreakfastnetwork.org/ The English Breakfast Network] searches out simple, common issues in code that should be fixed, and going through the problems on there can provide a good overview of the code.<br />
<br />
<br />
<br />
== Test your changes ==<br />
Once you've made some changes, make sure the project still compiles and installs, and make sure the changes have the desired effect when you run the software. Then it's time to run the project's unit tests:<br />
<br />
{{Input|1=<nowiki><br />
cd ~/kde/build/dolphin/<br />
source ./prefix.sh<br />
ctest --output-on-failure<br />
</nowiki>}}<br />
<br />
If any test fails, that needs to be investigated and fixed before you can proceed. Once the tests pass, then run the software again to make sure it still behaves properly. If it doesn't, then go back and work on your patch some more, then re-compile and re-deploy, and test again, until the program does what you'd like it to do and all tests pass.<br />
<br />
<br />
<br />
== Submit a patch ==<br />
Once you're happy with your patch and have verified that it does what you want, it's time to '''generate a diff.''' A diff is a textual representation of the differences between original versions of the files you changed, and the new ones you've produced. You can generate a diff by entering the source repository and running <code>git diff</code>, but we recommend using the <code>arc</code> tool, which will generate a diff and submit it for review very quickly and easily! You can learn how to set it up [https://community.kde.org/Infrastructure/Phabricator#Using_Arcanist_to_post_patches here].<br />
<br />
KDE uses [https://phabricator.kde.org Phabricator] for patch submission and review. [[Infrastructure/Phabricator|Learn more about how to submit a patch with Phabricator]].<br />
<br />
<br />
<br />
== Communicate with the team ==<br />
There are several ways to get in touch with KDE developers, either generally or for a specific project. The most important communications channels are:<br />
* The [https://webchat.kde.org/#/room/#kde-devel:kde.org #kde-devel] channel on [[Matrix]] or the freenode [[Internet Relay Chat | IRC]], which is where KDE developers chat in real time about their work.<br />
* The [https://mail.kde.org/mailman/listinfo/kde-devel kde-devel mailing list] is the primary development mailing list. [http://kde.org/support/#mailinglists Learn more about mailing lists].<br />
<br />
These are general KDE development communication channels, and you may get directed to a more appropriate place for the project you are interested in. There is a [http://www.kde.org/mailinglists/ list of mailing lists] if you want to find a mailing list for a specific team directly. Many teams have their own real-time chat channels, too.<br />
<br />
You can also try looking for the team's section on the [[Main Page]] of this wiki. Many teams have information there for new contributors.<br />
<br />
<br />
<br />
== Next steps ==<br />
Sharpen your skills by going through the [https://techbase.kde.org/Development/Tutorials KDE development tutorials]. And try out [http://www.kdevelop.org KDevelop], the KDE IDE.<br />
<br />
After you have had several drama-free patches accepted, a KDE developer is likely to suggest you get a [[Infrastructure/Get a Developer Account|Developer account]], which will allow you to commit directly to KDE projects. With very few limits on where you can commit, you will be expected to act responsibly. At this point, congratulations! You are officially a KDE developer!<br />
<br />
You may also want to set up a more customized development environment. See [[Guidelines and HOWTOs/Build from source]].<br />
<br />
<br />
<br />
== Best practices & other useful information==<br />
* [[Guidelines_and_HOWTOs/Debugging|Debugging]]<br />
* [[Guidelines and HOWTOs/UnitTests|Unit testing]]<br />
* [[Guidelines and HOWTOs/Code_Checking| Validating code]]<br />
* [[Guidelines and HOWTOs/API Documentation|Writing API documentation]] (related: https://api.kde.org).<br />
* [[Guidelines_and_HOWTOs/Wayland_Porting_Notes|Writing Wayland-friendly code]]<br />
* [[Frameworks/Porting_Notes|Porting from KDE 4 to Frameworks 5]]<br />
* [[Guidelines_and_HOWTOs/Making_apps_run_uninstalled|Running applications and their unit tests without first installing them]]<br />
* [https://community.kde.org/Infrastructure/Phabricator#How_to_review_someone_else.27s_patch How to review patches]</div>GB 2https://community.kde.org/index.php?title=Get_Involved/design&diff=84911Get Involved/design2019-06-11T14:17:02Z<p>GB 2: </p>
<hr />
<div>== About the VDG ==<br />
[[File:Mascot konqi-app-graphics.png|frameless|right|200px|]]<br />
The VDG started out as the Visual Design Group, but has grown into a team dedicated to the whole user experience, including what is often called human interface design. The aim is to help KDE create software that is both beautiful and a pleasure to use. VDG maintains and updates the [https://hig.kde.org/ KDE Human Interface Guidelines].<br />
<br />
VDG is always looking for people with skills in art, visual design, and human-computer interaction--or even just an interest in elegant design! If you have good ideas about how software should look and behave, you are a designer too, and we'd love you to join in. Our group regularly interfaces with users, developers, and the Promo team, so flexibility and the ability to communicate with many different kinds of people are a boon.<br />
<br />
<br />
== Current projects ==<br />
Feel free to have a look at VDG's current projects, which are are listed on the [https://phabricator.kde.org/project/board/89/ Phabricator workboard]. In addition, here are some timeless ways to get involved in ongoing work:<br />
* Learn how to design Breeze icons by reading [https://hig.kde.org/style/icon.html the applicable HIG page], and then work on [https://bugs.kde.org/buglist.cgi?bug_status=UNCONFIRMED&bug_status=CONFIRMED&bug_status=ASSIGNED&bug_status=REOPENED&component=Icons&list_id=1536878&product=Breeze&query_format=advanced Breeze icon bugs]. Here's [[Guidelines and HOWTOs/Submit an icon | how to submit an icon]].<br />
* Submit patches (using [[Infrastructure/Phabricator | Phabricator]]) for corrections and improvements to the [http://hig.kde.org Human Interface Guidelines]<br />
<br />
<br />
== Communication and workflow ==<br />
First, subscribe to the [https://mail.kde.org/mailman/listinfo/visual-design visual-design] mailing list to hear about general news and updates. You'll also want to become a watcher for the [https://phabricator.kde.org/project/profile/89/ VDG project] in Phabricator. Finally, join the [https://webchat.kde.org/#/room/#kde-vdg:kde.org #kde-vdg] channel on [[Matrix]] or the freenode [[Internet Relay Chat | IRC channel]] (which is bridged to the [https://telegram.me/vdgmainroom VDG] Telegram room, if you prefer [[Telegram]]).<br />
<br />
Most VDG discussions start out informally, in IRC. Once there's general agreement in the real-time chat, the discussion moves to a Phabricator task. The goal here is to open the discussion to include developers, and make the proposal more concrete using images and mockups. Mockups can be created using KDE's [[KDE Visual Design Group/HIG/MockupToolkit | Mockup Toolkit]] and should be hosted on [https://phabricator.kde.org/pholio/ Pholio].<br />
<br />
It's important that VDG Phabricator tasks subscribe all the developers who may be affected by the proposed work. Try to honestly and fairly summarize the discussion and initial VDG conclusion when writing the task's initial description. It's important not to lose context or history!<br />
<br />
In the Phabricator task, it's common for the details or scope to change based on developer feedback. This is normal! Developers have a better idea of what's technically possible or reasonable to change. Listen to developer feedback and change the design accordingly. At the same time, encourage them to listen to your expertise, and gently stand your ground if a developer tries to dictate design decisions to you.<br />
<br />
Once there's general agreement in the Phabricator task, work should begin and folks can start submitting patches!<br />
<br />
<br />
== Know thyself ==<br />
In a highly technical field like programming, it's easy to know the limits of your expertise. This is more difficult in subjective fields like art and design, and it's very important to have a firm grasp of your own limitations. If you know you're not very artistically skilled, don't involve yourself heavily in icon design work, for example. If you don't have any skill or background in human/computer interaction, leave those discussions to the pros!<br />
<br />
==Old Things==<br />
* [[KDE_Visual_Design_Group/Archive | Archive of outdated documents that may still be useful for reference]]<br />
<br />
__NOTOC__</div>GB 2https://community.kde.org/index.php?title=Get_Involved&diff=84878Get Involved2019-06-10T10:48:02Z<p>GB 2: Update Konqi mascots</p>
<hr />
<div>[[File:Mascot 20140702 konqui-group.png|thumbnail|right|[[Konqi]] and KDE dragons of different abilities!]]<br />
Welcome to the KDE Community! By joining our team, you will be part of an international effort by thousands of people working to deliver a stunning Free Software computing experience. You will meet new friends, learn new skills and make a difference to millions of users while working with people from all around the globe. This page will give you a brief introduction to things everyone in KDE should know, and help you get started with contributing.<br />
<br />
We want to make sure that the KDE Community remains a welcoming and friendly place where people can feel comfortable. We ask you to abide by the [https://www.kde.org/code-of-conduct/ KDE Community Code of Conduct] when interacting with the rest of the KDE Community.<br />
<br />
== Start Here! ==<br />
KDE wants to make it easy to get involved! Various KDE members are available to help new contributors; you can find them listed on the [[Mentoring]] page. Many of them hang out in the [https://matrix.to/#/#kde-welcome:matrix.org #kde-welcome Matrix room]. Feel free to ask them any questions you may have!<br />
<br />
Beyond that, the best way to contribute is to start at the top of this list and work your way down:<br />
<br />
=== [[ Get Involved/Bug Reporting | Bug Reporting]] [[File:Mascot konqi.png|x120px|right|]] ===<br />
If you've found a problem with a piece of KDE software, report it so the developers can fix it! QA is critically important to ensure quality, and you can be involved in an effort to make sure that our users are happy with the final products. [[ Get Involved/Bug Reporting | Find out more about bug reporting]].<br />
<br />
===[[Guidelines and HOWTOs/Bug triaging|Bug Triaging]] [[File:Mascot konqi-support-bughunt.png|x120px|right|]]===<br />
If you'd like to take the next step in contributing to KDE, help triage all those bugs that people are filing! By separating the wheat from the chaff, you will help developers figure out what bugs they need to work on and help them get the information they need to fix them. You don't need any programming experience to triage bugs, and it's a perfect introduction if you want to eventually become a developer but don't feel like your programming experience is good enough yet. [[Guidelines and HOWTOs/Bug triaging|Find out more about helping squash bugs in KDE software]].<br />
<br />
===[[/development|Development]] [[File:Mascot konqi-app-dev.png|right|x120px|]]===<br />
By becoming a developer in the KDE community, you can affect millions by writing and improving world-class software used around the globe. There are many small jobs available, so you don't even need to be a programmer to start developing for KDE! In the process you'll learn portable, industry-standard skills like C++, Qt, and CMake, and collaborate with people from all around the world. It's a challenging and fun experience. [[/development|Find out more about becoming a KDE developer]].<br />
<br />
===[[/translation|Translation]] [[File:Mascot konqi-international.png|right|x120px|]]===<br />
Are you fluent in multiple languages? By contributing your translations of the text in the user interfaces of KDE software, you can make it more pleasant for you to use, and open it up to millions of potential new users. [[/translation|Find out more about becoming a KDE translator]].<br />
<br />
===[[/design|Visual and Human Interface Design]] [[File:Mascot konqi-app-graphics.png|right|x120px|]]===<br />
Whether you are an artist, a designer, or just someone with an interest in how regular people interact with software, you are welcome to join the KDE Visual Design Group! The VDG makes KDE software both beautiful and usable by helping teams design and refine their user interfaces. This includes creating icons and themes, as well as thinking and researching how to help users do what they are trying to do. By joining this team, you can help make KDE's users happier and more productive. [[/design|Find out more about joining the VDG]].<br />
<br />
===[[/documentation|Documentation]] [[File:Mascot konqi-support-document.png|x120px|right|]]===<br />
Even with the best-designed software, users will need documentation to help them do what they want and get the most out of it. The KDE Community values good-quality documentation, and those who write it. The work of this team has one of the biggest impacts on end-users. [[/documentation|Find out more about joining the KDE documentation team]].<br />
<br />
===[[/promotion|Promotion]] [[File:Mascot konqi-commu-journalist.png|right|x120px|]]===<br />
Do you know how to get the word out on the street? As part of the promo team, you'll help spread the word about KDE to people who don't know the amazing things we make. You'll be part of a great team of people who are moving the world! [[/promotion|Find out more about spreading the word about KDE]].<br />
<br />
===[[/accessibility|Accessibility]] [[File:Mascot konqi-app-system.png |x120px|right|]]===<br />
Part of reaching as wide an audience as possible includes making KDE software easy to use for people with visual, auditory and motor disabilities. Whether you are familiar with the techniques and technologies involved in this or are just keen to help out, your help will be enthusiastically welcomed. [[/accessibility|Find out more about making KDE software more accessible]].<br />
<br />
===[https://www.kde.org/community/donations/index.php Donation] [[File:Mascot konqi-support-business.png |x120px|right|]]===<br />
KDE is a mostly volunteer community made up of people just like you! But not everything in this world is free--including web and file hosting costs, airfare to KDE events, and even hiring some full-time employees. If you would like to help KDE purchase the goods and services necessary to continue producing amazing free software, consider donating. [https://www.kde.org/community/donations/index.php Find out more about making a financial donation to KDE].<br />
<br />
===[[incubator | Add your project to KDE]]===<br />
If you have a project already that you want to bring into KDE, we have an incubation programme to help make that happen. [[incubator | Find out more about making your software a KDE project]].<br />
<br />
== Beginner-friendly projects ==<br />
Here are some beginner-friendly projects with a variety of opportunities to contribute:<br />
* [[Elisa]], a KDE music player<br />
* [[Krita]], a KDE digital painting suite<br />
* [[KDE Connect]], a tool to connect and integrate your mobile device<br />
<br />
== Projects in need of extra love ==<br />
Here are some critically important projects that are in need of more development. The bugs and feature requests found on these pages are especially suitable for an experienced developer looking to make a big impact fast!<br />
* [[Dolphin]], a powerful and user-friendly file manager<br />
* [[Gwenview]], a robust image viewer<br />
* [[Okular]], a feature-filled document viewer<br />
* [[Spectacle]], a flexible screenshot tool<br />
* [[Baloo]], a file content and metadata indexer<br />
* [[Discover]], an App store and package updater<br />
* [[PIM]], a collection of personal information management applications<br />
* [[Breeze GTK theme]], which makes GTK applications look at home in Plasma<br />
* [[Kickoff]], a systemwide application launcher menu<br />
* [[KIO]], which provides I/O operations and the file dialogs<br />
* [[KWallet]], a password manager<br />
<br />
<br />
==Getting in touch and working together==<br />
Part of being in a community involves talking to the other members. Courtesy and politeness are expected. KDE members use a variety of different venues to communicate, depending on the topic.<br />
<br />
* '''To report a bug or request a new feature''', use [https://bugs.kde.org/ bugs.kde.org]. The KDE Bugzilla bug tracker is intended for user-to-developer communication and tracks simple bug reports and feature requests. Sign in with your KDE Bugzilla account; it does not use identity.kde.org credentials. If you don't have a KDE Bugzilla account, [https://bugs.kde.org/createaccount.cgi sign up for one here]. More information about the KDE Bugzilla bug tracker is available [[Get Involved/Bug Reporting | here]].<br />
<br />
* '''To track and discuss work''', use [[Infrastructure/Phabricator | Phabricator]] diffs and tasks. Phabricator is intended for developer-to-developer communication such as offering a patch for review, updating the contents of a website, discussing the implementation of a complex feature, or coordinating a promotional campaign. Sign into Phabricator with the username and password for your [https://identity.kde.org/ identity.kde.org] account; if you don't have one, [https://identity.kde.org/index.php?r=registration/index sign up for one here]. Then return to https://phabricator.kde.org, click the "Log In" button at the top of the page, and enter the username and password for your KDE Identity account. More information about Phabricator is available [[Infrastructure/Phabricator | here]].<br />
<br />
* '''To start a short, goal-driven discussion''', use [[Internet Relay Chat]], [[Matrix]] or [[Telegram]], depending on your preference. These conversations should ideally result in the generation of a patch, task, or bug report.<br />
<br />
* '''To start a long-term, open-ended discussion''', [https://www.kde.org/support/#mailinglists mailing lists] are best. You don't need to subscribe to them all; just a few will do. As a new member of the KDE Community, you should at least subscribe to [https://mail.kde.org/mailman/listinfo/kde-community kde-community] and [https://mail.kde.org/mailman/listinfo/kde-devel kde-devel]. You will need to subscribe before you can send mail to the lists.<br />
<br />
The links in the [[#Start_Here.21|#Start_Here!]] section will take you to pages with more specific information, including how to get in touch with specific teams.<br />
<br />
==More entry points==<br />
KDE participates in a variety of external programs to introduce new contributors to KDE, including the [[GSoC|Google Summer of Code]] and the [[OutreachProgramForWomen|Outreach Program for Women]]. KDE also runs its own programs, such as [[SoK|Season of KDE]].</div>GB 2https://community.kde.org/index.php?title=Guidelines_and_HOWTOs/Build_from_source/Install_the_dependencies&diff=83624Guidelines and HOWTOs/Build from source/Install the dependencies2019-04-06T09:19:03Z<p>GB 2: </p>
<hr />
<div>In the following we give the dependencies to install. However it might change and this page might be quickly outdated.<br />
<br />
{{Note|If some packages fail to install, you can try removing the ones that don't work from the list.}}<br />
<br />
Reading the <code>CMakeLists.txt</code> of the packages you want to install should help you finding what you '''really''' need to install. Or read the error logs (see below).<br />
<br />
If you need help, see https://community.kde.org/Get_Involved#Getting_in_touch<br />
<br />
== All dependencies ==<br />
<br />
=== KDE neon, Debian, Ubuntu, Kubuntu === <br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo apt install autoconf baloo-kf5-dev bison breeze-dev build-essential bzr cmake cmake-data debhelper dh-apparmor doxygen extra-cmake-modules flex fontforge gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 git gperf icu-devtools kded5-dev kgendesignerplugin kinit-dev kirigami2-dev kross-dev kscreenlocker-dev kwin-dev libaccounts-glib-dev libappstreamqt-dev libapr1 libaprutil1 libarchive-dev libasound2-dev libattr1-dev libboost-dev libbz2-dev libcanberra-dev libcap-dev libclang-3.9-dev libclang-dev libcln-dev libcups2-dev libcurl4-gnutls-dev libegl1-mesa-dev libepoxy-dev libexiv2-dev libfakekey-dev libfontconfig1-dev libfreetype6-dev libgbm-dev libgconf2-dev libgcrypt20-dev libgif-dev libglib2.0-dev libgmp-dev libgmpxx4ldbl libgpgme11-dev libgps-dev libgrantlee5-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgtk-3-dev libhunspell-dev libibus-1.0-dev libicu-dev libjpeg8-dev libjpeg-dev libjpeg-turbo8-dev libjson-perl libkaccounts-dev libkdecorations2-dev libkeduvocdocument-dev libkf5activities-dev libkf5activitiesstats-dev libkf5akonadicalendar-dev libkf5akonadicontact-dev libkf5akonadi-dev libkf5akonadimime-dev libkf5akonadinotes-dev libkf5akonadisearch-dev libkf5alarmcalendar-dev libkf5archive-dev libkf5attica-dev libkf5auth-dev libkf5baloowidgets-dev libkf5blog-dev libkf5bluezqt-dev libkf5bookmarks-dev libkf5calendarcore-dev libkf5calendarsupport-dev libkf5calendarutils-dev libkf5cddb-dev libkf5codecs-dev libkf5compactdisc-dev libkf5completion-dev libkf5config-dev libkf5configwidgets-dev libkf5contacteditor-dev libkf5contacts-dev libkf5coreaddons-dev libkf5crash-dev libkf5dbusaddons-dev libkf5declarative-dev libkf5dnssd-dev libkf5doctools-dev libkf5emoticons-dev libkf5eventviews-dev libkf5filemetadata-dev libkf5followupreminder-dev libkf5globalaccel-dev libkf5grantleetheme-dev libkf5gravatar-dev libkf5guiaddons-dev libkf5holidays-dev libkf5i18n-dev libkf5iconthemes-dev libkf5identitymanagement-dev libkf5idletime-dev libkf5imap-dev libkf5incidenceeditor-dev libkf5itemmodels-dev libkf5itemviews-dev libkf5jobwidgets-dev libkf5jsembed-dev libkf5kaddressbookgrantlee-dev libkf5kaddressbookimportexport-dev libkf5kcmutils-dev libkf5kdcraw-dev libkf5kdegames-dev libkf5kdelibs4support-dev libkf5kdepimdbusinterfaces-dev libkf5kexiv2-dev libkf5kgeomap-dev libkf5khtml-dev libkf5kio-dev libkf5kipi-dev libkf5kjs-dev libkf5kmahjongglib-dev libkf5konq-dev libkf5kontactinterface-dev libkf5ksieve-dev libkf5ldap-dev libkf5libkdepim-dev libkf5libkleo-dev libkf5mailcommon-dev libkf5mailimporter-dev libkf5mailtransport-dev libkf5mbox-dev libkf5mediaplayer-dev libkf5mediawiki-dev libkf5messagecomposer-dev libkf5messagecore-dev libkf5messagelist-dev libkf5messageviewer-dev libkf5mime-dev libkf5mimetreeparser-dev libkf5networkmanagerqt-dev libkf5newstuff-dev libkf5notifications-dev libkf5notifyconfig-dev libkf5package-dev libkf5parts-dev libkf5people-dev libkf5pimcommon-dev libkf5pimtextedit-dev libkf5plasma-dev libkf5plotting-dev libkf5prison-dev libkf5pty-dev libkf5purpose-dev libkf5qqc2desktopstyle-dev libkf5runner-dev libkf5sane-dev libkf5screen-dev libkf5sendlater-dev libkf5service-dev libkf5solid-dev libkf5sonnet-dev libkf5style-dev libkf5su-dev libkf5syndication-dev libkf5syntaxhighlighting-dev libkf5sysguard-dev libkf5templateparser-dev libkf5texteditor-dev libkf5textwidgets-dev libkf5threadweaver-dev libkf5tnef-dev libkf5unitconversion-dev libkf5vkontakte-dev libkf5wallet-dev libkf5wayland-dev libkf5webengineviewer-dev libkf5webkit-dev libkf5widgetsaddons-dev libkf5windowsystem-dev libkf5xmlgui-dev libkf5xmlrpcclient-dev libktorrent-dev liblcms2-dev liblmdb-dev libmlt-dev libmlt++-dev libnm-dev libnm-glib-dev libnm-util-dev libpackagekitqt5-dev libpam-dev libphonon4qt5-dev libphonon4qt5experimental-dev libpng-dev libpolkit-agent-1-dev libpolkit-backend-1-dev libpolkit-gobject-1-dev libpulse-dev libpwquality-dev libqalculate-dev libqca-qt5-2-dev libqimageblitz-dev libqrencode-dev libqt5sensors5 libqt5sensors5-dev libqt5svg5-dev libqt5texttospeech5-dev libqt5webkit5-dev libqt5x11extras5-dev libqt5xmlpatterns5-dev libraw1394-dev libscim-dev libserf-1-1 libsm-dev libssl-dev libsvn1 libtiff5-dev libudev-dev libusb-dev libvlccore-dev libvlc-dev libvncserver-dev libwww-perl libx11-dev libx11-xcb-dev libxapian-dev libxcb1-dev libxcb-composite0-dev libxcb-cursor0 libxcb-cursor-dev libxcb-damage0-dev libxcb-dpms0 libxcb-dpms0-dev libxcb-ewmh2 libxcb-ewmh-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-record0-dev libxcb-render-util0-dev libxcb-res0 libxcb-res0-dev libxcb-screensaver0 libxcb-screensaver0-dev libxcb-shm0-dev libxcb-util0-dev libxcb-xf86dri0 libxcb-xf86dri0-dev libxcb-xinerama0 libxcb-xinerama0-dev libxcb-xkb-dev libxcb-xtest0-dev libxcb-xv0 libxcb-xv0-dev libxcb-xvmc0 libxcb-xvmc0-dev libxcursor-dev libxft-dev libxi-dev libxkbfile-dev libxml2-dev libxml-parser-perl libxrender-dev libxslt1-dev libxslt-dev llvm llvm-3.9 modemmanager-dev modemmanager-qt-dev network-manager-dev openbox oxygen-icon-theme perl-modules pkg-config pkg-kde-tools plasma-workspace-dev po-debconf qml-module-qtquick* qt5-qmake qtbase5-dev qtbase5-dev-tools qtbase5-private-dev qtdeclarative5-dev qtmultimedia5-dev qtquickcontrols2-5-dev qtscript5-dev qttools5-dev qtxmlpatterns5-dev-tools shared-mime-info subversion texinfo xauth xcb-proto xserver-xorg-dev xserver-xorg-input-evdev-dev xserver-xorg-input-libinput-dev xserver-xorg-input-synaptics-dev xsltproc xvfb<br />
</pre><br />
<br />
== For the frameworks ==<br />
<br />
=== Arch, Antergos, Manjaro === <br />
All the dependencies used for building frameworks can be installed by running:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo pacman -Sy --needed phonon-qt5 qt5-webkit qt5-script qt5-svg qt5-tools qt5-x11extras enchant jasper openexr libutempter docbook-xsl shared-mime-info giflib libxss upower udisks2 bzr git doxygen perl-json perl-libwww perl-xml-parser perl-io-socket-ssl akonadi xorg-server-devel libpwquality fontforge eigen libfakekey qca-qt5 xapian-core xsd gperf perl-yaml-syck intltool kdesdk<br />
</pre><br />
<br />
<br />
=== Fedora=== <br />
All the dependencies used for building frameworks can be installed by running:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo dnf install perl-IPC-Cmd perl-JSON-PP perl-YAML-Syck qt5-devel qt5-qtquickcontrols2-devel polkit-devel gperf libxslt-devel libxml2-devel kf5-kconfigwidgets-devel libXrender-devel qrencode-devel xcb*-devel flex systemd-devel giflib-devel libjpeg-turbo-devel NetworkManager-glib-devel NetworkManager-libnm-devel ModemManager-devel libattr-devel openssl-devel libSM-devel wayland-devel lmdb-devel libaccounts-qt5-devel libaccounts-glib-devel signon-devel<br />
</pre><br />
<br />
<br />
=== openSUSE === <br />
<br />
==== openSUSE Leap 15 (Argon) ====<br />
<br />
Updated 24 June 2018 (likely incomplete)<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;">$ sudo zypper si -d libqt5-qtbase<br />
$ sudo zypper in libbz2-devel libxslt-devel libxml2-devel shared-mime-info oxygen-icon-theme giflib-devel vlc-devel doxygen gstreamer-devel gstreamer-plugins-base-devel docbook-xml-slides docbook-xsl-stylesheets xcb-util-keysyms-devel perl-JSON boost-devel libxcb-devel libXrender-devel xcb-util-wm-devel xcb-util-devel xcb-util-image-devel gettext-tools libepoxy-devel<br />
$ sudo zypper in gtk3-devel<br />
$ sudo zypper in grantlee5-devel kactivities5-devel plasma-framework-devel plasma5-addons-devel plasma5-workspace-devel libQt5Concurrent-devel libQt5DBus-devel libQt5PrintSupport-devel xcb-util-cursor-devel libqt5-qtx11extras-devel xcb-proto-devel git-core</pre><br />
<br />
==== openSUSE 42.1 ====<br />
<br />
Install these packages (including the recommended packages):<br />
<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo zypper install patterns-openSUSE-devel_kde patterns-openSUSE-devel_kde_frameworks git-core bzr ninja \<br />
gettext-tools libqt5-qttools libgypsy0 libqt5-creator libqt5-linguist libqt5-qtbase-common-devel libqt5-qtbase-devel libqt5-qtbase-examples libqt5-qtdeclarative-devel libqt5-qtdeclarative-examples libqt5-qtdeclarative-tools libqt5-qtdoc libqt5-qtgraphicaleffects libqt5-qtimageformats libqt5-qtimageformats-devel libqt5-qtmultimedia-devel libqt5-qtmultimedia-examples libqt5-qtquick1-devel libqt5-qtquickcontrols libqt5-qtscript-devel libqt5-qtscript-examples libqt5-qtsvg-devel libqt5-qttools-devel libqt5-qtx11extras-devel libqt5-qtxmlpatterns-devel libqt5-qtxmlpatterns-examples libQt5CLucene5 libQt5Concurrent-devel libQt5Concurrent5 libQt5Core-devel libQt5Core5 libQt5DBus-devel libQt5DBus5 libQt5Declarative5 libQt5Designer5 libQt5DesignerComponents5 libQt5Gui-devel libQt5Gui5 libQt5Help5 libQt5Multimedia5 libQt5Network-devel libQt5Network5 libQt5OpenGL-devel libQt5OpenGL5 libQt5Positioning5 libQt5PrintSupport-devel libQt5PrintSupport5 libQt5Script5 libQt5Sensors5 libQt5Sql-devel libQt5Sql5 libQt5Sql5-mysql libQt5Sql5-postgresql libQt5Sql5-sqlite libQt5Sql5-unixODBC libQt5Svg5 libQt5Test-devel libQt5Test5 libQt5WebKit5 libQt5WebKitWidgets5 libQt5Widgets-devel libQt5Widgets5 libQt5X11Extras5 libQt5Xml-devel libQt5Xml5 libQt5XmlPatterns5 libQtQuick5 libQt5WebKitWidgets-devel libqt5-qtbase-private-headers-devel \<br />
xcb-util-keysyms-devel docbook-xsl-stylesheets doxygen polkit-devel libepoxy-devel boost-devel libXcursor-devel libSM-devel giflib-devel libaccounts-qt5-devel gtk3-devel libpng16-devel fltk-devel libopenssl-devel libattr-devel ModemManager-devel NetworkManager-devel wayland-devel lmdb-devel xcb-proto-devel xcb-util-image-devel xcb-util-cursor-devel xcb-util-devel gtk2-devel libqca-qt5-devel libpwquality-devel libical-devel PackageKit-Qt5-devel pam-devel \<br />
bison flex libqt5-qttools-doc<br />
</pre><br />
<br />
* OPEN ISSUES:<br />
** on my system 'ninja-1.6.0' was installed and when using 'custom-build-command ninja' in the kdesrc-buildrc below, the build of modules fails), maybe see https://bugs.kde.org/show_bug.cgi?id=331654<br />
<br />
* Failing modules (of more than 200 modules)<br />
** phonon-vlc, phonon-gstreamer, plasma-pa (PulseAudio missing), kdevplatform, plasma-desktop, kaccounts-integration, kaccounts-mobile, gwenview, kdevelop, libksane, skanlite, ... (see below for solutions)<br />
<br />
==== openSuSE Tumbleweed ====<br />
This more complete list (which probably works for OpenSuSE 42.1 as well) allows to compile everything that kdesrc-build's default setup (kf5-qt5-build-include) compiles. Note that it doesn't contain Qt or Qt-based libs, you need that on top, or to compile your own Qt (and then include custom-qt5-libs-build-include in kdesrc-buildrc).<br />
<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo zypper install patterns-kde-devel_kde_frameworks patterns-kde-devel_qt5 make cmake extra-cmake-modules ccache git bzr antlr antlr-java antlr-devel astyle autoconf flac gettext-tools intltool libMagick++-devel libplotter2 libtool pstoedit subversion-devel subversion-tools xscreensaver-data libxslt-devel docbook-xsl-stylesheets libpoppler-devel aspell-devel enchant-devel libidn-devel polkit-devel update-desktop-files atk-devel bluez-devel fdupes gdk-pixbuf-devel gtk3-devel libcanberra-devel libexiv2-devel libpulse-devel gtk-doc libsmbclient-devel libssh-devel libusb-1_0-devel libusb-compat-devel libxine-devel libxklavier16 libxklavier-devel xwininfo NetworkManager-devel ModemManager-devel libssh2-devel openslp-devel pango-devel xz-devel libgssglue-devel libjasper-devel libudev-devel utempter-devel libbotan-devel libmysqlclient-devel postgresql-devel libmysqld-devel cgdb gstreamer-plugins-base-devel gstreamer-devel libsamplerate-devel audiofile-devel flac-devel libvorbis-devel fftw3-devel libmusicbrainz-devel cdparanoia-devel flex parted-devel libopus-devel giflib-devel pciutils-devel pam-devel boost-devel libv4l-devel cyrus-sasl-devel libgpgme-devel libical-devel sane-backends-devel libgphoto2-devel doxygen makeinfo LibVNCServer-devel speex-devel libotr-devel libmms-devel libsndfile-devel mpfr-devel libzeitgeist-devel gperf libcap-devel libarchive-devel telepathy-logger-devel libpwquality-devel opencv-devel glew-devel libxapian-devel libblkid-devel libatasmart-devel libiodbc-devel xcb-util-wm-devel xcb-util-renderutil-devel xcb-util-keysyms-devel xcb-util-image-devel xcb-util-cursor-devel libxkbcommon-devel vlc-devel libicu-devel icu-data libkolabxml-devel xsd libffi-devel-gcc5 perl-Tie-IxHash perl-JSON perl-Text-CSV perl-YAML-Syck hunspell-devel ffmpeg-devel libacl-devel libnl-devel liboauth-devel libepub-devel libicecream-devel docbook2X liblcms2-devel libeigen2-devel eigen3-devel graphviz-devel liboyranos-devel libraw-devel xf86-input-wacom-devel libwacom-devel xf86-input-synaptics-devel xorg-x11-server-sdk libdiscid-devel libmlt++-devel libdmtx-devel qrencode-devel libfunambol-devel libmtp-devel at-spi2-core-devel openal-soft-devel python-sip-devel libXcm-devel libspeechd-devel libraw-devel ModemManager-devel farstream-devel tesseract-ocr-devel mtdev-devel fontforge-devel cups-devel libepoxy-devel openconnect-devel lmdb-devel libpgf-devel llvm-devel llvm-clang-devel binutils-devel libdwarf-devel libelf-devel plymouth-devel libfakekey-devel python-GitPython php php-curl telepathy-mission-control-devel libaccounts-glib-devel<br />
</pre><br />
<br />
== For Plasma ==<br />
* Arch/Antergos/Manjaro: <code>sudo pacman -S plasma-desktop plasma-workspace kwin</code><br />
* Fedora: <code>sudo dnf builddep plasma-desktop plasma-workspace kwin</code><br />
* KDE neon/Kubuntu/Ubuntu/Debian <code>sudo apt build-dep plasma-desktop plasma-workspace kwin</code><br />
* openSUSE Leap & Tumbleweed: <code>sudo zypper si -d plasma-desktop plasma-workspace kwin</code><br />
<br />
Any other dependencies can be figured out and installed as you continue building the modules one by one.<br />
<br />
== Quick fixes for package manager errors ==<br />
The above lists might not always be working out of the box on your specific distribution or might be out of date for individual packages. In many cases removing single packages from the lists above still allows you to build many KDE frameworks and applications.<br />
<br />
In case it is a package added by a regex, you can exclude the specific package by a workaround using sed. Let us assume for an example that we want to install "libkf5.*-dev" on deb-based systems but have uninstallable packages libkf5example1-dev, libkf5example2-dev. Then we install all "libkf5.*-dev" packages excluding libkf5example1-dev and libkf5example2-dev through:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;">$ sudo apt install $(apt-cache search -n "libkf5.*-dev" | sed 's/ - .*//' | sed '/libkf5example1-dev/d' | sed '/libkf5example2-dev/d')</pre></div>GB 2https://community.kde.org/index.php?title=Guidelines_and_HOWTOs/Build_from_source/Install_the_dependencies&diff=83578Guidelines and HOWTOs/Build from source/Install the dependencies2019-04-02T18:45:34Z<p>GB 2: </p>
<hr />
<div>In the following we give the dependencies to install. However it might change and this page might be quickly outdated.<br />
<br />
{{Note|If some packages fail to install, you can try removing the ones that don't work from the list.}}<br />
<br />
Reading the <code>CMakeLists.txt</code> of the packages you want to install should help you finding what you '''really''' need to install. Or read the error logs (see below).<br />
<br />
If you need help, see https://community.kde.org/Get_Involved#Getting_in_touch<br />
<br />
== All dependencies ==<br />
<br />
=== KDE neon, Debian, Ubuntu, Kubuntu === <br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo apt install libkf5activities-dev libkf5activitiesstats-dev libkf5akonadi-dev libkf5akonadicalendar-dev libkf5akonadicontact-dev libkf5akonadimime-dev libkf5akonadinotes-dev libkf5akonadisearch-dev libkf5alarmcalendar-dev libkf5archive-dev libkf5attica-dev libkf5auth-dev baloo-kf5-dev libkf5baloowidgets-dev libkf5blog-dev libkf5bluezqt-dev libkf5bookmarks-dev libkf5calendarcore-dev libkf5calendarsupport-dev libkf5calendarutils-dev libkf5cddb-dev libkf5codecs-dev libkf5compactdisc-dev libkf5completion-dev libkf5config-dev libkf5configwidgets-dev libkf5contacteditor-dev libkf5contacts-dev libkf5coreaddons-dev libkf5crash-dev libkf5dbusaddons-dev libkf5dnssd-dev libkf5declarative-dev kgendesignerplugin libkf5doctools-dev libkf5emoticons-dev libkf5eventviews-dev libkf5filemetadata-dev libkf5followupreminder-dev libkf5style-dev libkf5globalaccel-dev libkf5grantleetheme-dev libkf5gravatar-dev libkf5guiaddons-dev libkf5holidays-dev libkf5i18n-dev libkf5imap-dev libkf5iconthemes-dev libkf5identitymanagement-dev libkf5idletime-dev libkf5incidenceeditor-dev kinit-dev libkf5itemmodels-dev libkf5itemviews-dev libkf5kjs-dev libkf5jobwidgets-dev libkf5jsembed-dev libkf5kcmutils-dev libkf5kdelibs4support-dev libkf5kdegames-dev libkf5kdcraw-dev libkf5kexiv2-dev libkf5kgeomap-dev libkf5khtml-dev libkf5kio-dev libkf5kmahjongglib-dev libkf5kaddressbookgrantlee-dev libkf5kaddressbookimportexport-dev libkf5kdepimdbusinterfaces-dev libkf5kipi-dev kirigami2-dev libkf5konq-dev libkf5kontactinterface-dev kross-dev libkf5ldap-dev libkf5ksieve-dev libkf5libkdepim-dev libkf5libkleo-dev libkf5mailcommon-dev libkf5mailimporter-dev libkf5mailtransport-dev libkf5mbox-dev libkf5mediaplayer-dev libkf5mediawiki-dev libkf5messagecomposer-dev libkf5messagecore-dev libkf5messagelist-dev libkf5messageviewer-dev libkf5mime-dev libkf5mimetreeparser-dev modemmanager-qt-dev libkf5networkmanagerqt-dev libkf5newstuff-dev libkf5notifications-dev libkf5notifyconfig-dev libkf5package-dev libkf5parts-dev libkf5people-dev libkf5pimcommon-dev libkf5pimtextedit-dev libkf5plasma-dev libkf5plotting-dev libkf5prison-dev libkf5pty-dev libkf5purpose-dev libkf5qqc2desktopstyle-dev libkf5runner-dev libkf5sane-dev libkf5screen-dev libkf5sendlater-dev libkf5service-dev libkf5solid-dev libkf5sonnet-dev libkf5su-dev libkf5syndication-dev libkf5syntaxhighlighting-dev libkf5sysguard-dev libkf5templateparser-dev libkf5texteditor-dev libkf5textwidgets-dev libkf5threadweaver-dev libkf5tnef-dev libktorrent-dev libkf5unitconversion-dev libkf5vkontakte-dev libkf5wallet-dev libkf5wayland-dev libkf5webengineviewer-dev libkf5webkit-dev libkf5widgetsaddons-dev libkf5windowsystem-dev libkf5xmlgui-dev libkf5xmlrpcclient-dev autoconf bison breeze-dev build-essential bzr cmake cmake-data debhelper dh-apparmor doxygen extra-cmake-modules flex fontforge gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 git gperf icu-devtools kded5-dev kscreenlocker-dev kwin-dev libaccounts-glib-dev libappstreamqt-dev libapr1 libaprutil1 libarchive-dev libasound2-dev libattr1-dev libboost-dev libbz2-dev libcanberra-dev libclang-3.9-dev libclang-dev libcln-dev libcups2-dev libegl1-mesa-dev libepoxy-dev libexiv2-dev libfakekey-dev libfontconfig1-dev libfreetype6-dev libgconf2-dev libgcrypt20-dev libgif-dev libglib2.0-dev libgmp-dev libgmpxx4ldbl libgpgme11-dev libgps-dev libgrantlee5-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgtk-3-dev libhunspell-dev libibus-1.0-dev libicu-dev libjpeg8-dev libjpeg-dev libjpeg-turbo8-dev libjson-perl libkaccounts-dev liblcms2-dev liblmdb-dev libmlt-dev libmlt++-dev libnm-dev libnm-glib-dev libnm-util-dev libpackagekitqt5-dev libpam-dev libphonon4qt5-dev libphonon4qt5experimental-dev libpng-dev libpolkit-agent-1-dev libpolkit-backend-1-dev libpolkit-gobject-1-dev libpulse-dev libpwquality-dev libqalculate-dev libqca-qt5-2-dev libqimageblitz-dev libqrencode-dev libqt5sensors5 libqt5sensors5-dev libqt5svg5-dev libqt5texttospeech5-dev libqt5webkit5-dev libqt5x11extras5-dev libqt5xmlpatterns5-dev libraw1394-dev libscim-dev libserf-1-1 libsm-dev libssl-dev libsvn1 libtiff5-dev libudev-dev libusb-dev libvlccore-dev libvlc-dev libvncserver-dev libwww-perl libx11-dev libx11-xcb-dev libxapian-dev libxcb1-dev libxcb-composite0-dev libxcb-cursor0 libxcb-cursor-dev libxcb-damage0-dev libxcb-dpms0 libxcb-dpms0-dev libxcb-ewmh2 libxcb-ewmh-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-record0-dev libxcb-render-util0-dev libxcb-res0 libxcb-res0-dev libxcb-screensaver0 libxcb-screensaver0-dev libxcb-shm0-dev libxcb-util0-dev libxcb-xf86dri0 libxcb-xf86dri0-dev libxcb-xinerama0 libxcb-xinerama0-dev libxcb-xkb-dev libxcb-xtest0-dev libxcb-xv0 libxcb-xv0-dev libxcb-xvmc0 libxcb-xvmc0-dev libxcursor-dev libxft-dev libxi-dev libxkbfile-dev libxml2-dev libxml-parser-perl libxrender-dev libxslt1-dev libxslt-dev llvm llvm-3.9 modemmanager-dev network-manager-dev openbox oxygen-icon-theme perl-modules pkg-config pkg-kde-tools plasma-workspace-dev po-debconf qml-module-qtquick* qt5-qmake qtbase5-dev qtbase5-dev-tools qtbase5-private-dev qtdeclarative5-dev qtquickcontrols2-5-dev qtscript5-dev qttools5-dev qtxmlpatterns5-dev-tools shared-mime-info subversion texinfo xauth xcb-proto xserver-xorg-dev xserver-xorg-input-evdev-dev xserver-xorg-input-libinput-dev xserver-xorg-input-synaptics-dev xsltproc xvfb libkeduvocdocument-dev qtmultimedia5-dev<br />
</pre><br />
<br />
== For the frameworks ==<br />
<br />
=== Arch, Antergos, Manjaro === <br />
All the dependencies used for building frameworks can be installed by running:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo pacman -Sy --needed phonon-qt5 qt5-webkit qt5-script qt5-svg qt5-tools qt5-x11extras enchant jasper openexr libutempter docbook-xsl shared-mime-info giflib libxss upower udisks2 bzr git doxygen perl-json perl-libwww perl-xml-parser perl-io-socket-ssl akonadi xorg-server-devel libpwquality fontforge eigen libfakekey qca-qt5 xapian-core xsd gperf perl-yaml-syck intltool kdesdk<br />
</pre><br />
<br />
<br />
=== Fedora=== <br />
All the dependencies used for building frameworks can be installed by running:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo dnf install perl-IPC-Cmd perl-JSON-PP perl-YAML-Syck qt5-devel qt5-qtquickcontrols2-devel polkit-devel gperf libxslt-devel libxml2-devel kf5-kconfigwidgets-devel libXrender-devel qrencode-devel xcb*-devel flex systemd-devel giflib-devel libjpeg-turbo-devel NetworkManager-glib-devel NetworkManager-libnm-devel ModemManager-devel libattr-devel openssl-devel libSM-devel wayland-devel lmdb-devel libaccounts-qt5-devel libaccounts-glib-devel signon-devel<br />
</pre><br />
<br />
<br />
=== openSUSE === <br />
<br />
==== openSUSE Leap 15 (Argon) ====<br />
<br />
Updated 24 June 2018 (likely incomplete)<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;">$ sudo zypper si -d libqt5-qtbase<br />
$ sudo zypper in libbz2-devel libxslt-devel libxml2-devel shared-mime-info oxygen-icon-theme giflib-devel vlc-devel doxygen gstreamer-devel gstreamer-plugins-base-devel docbook-xml-slides docbook-xsl-stylesheets xcb-util-keysyms-devel perl-JSON boost-devel libxcb-devel libXrender-devel xcb-util-wm-devel xcb-util-devel xcb-util-image-devel gettext-tools libepoxy-devel<br />
$ sudo zypper in gtk3-devel<br />
$ sudo zypper in grantlee5-devel kactivities5-devel plasma-framework-devel plasma5-addons-devel plasma5-workspace-devel libQt5Concurrent-devel libQt5DBus-devel libQt5PrintSupport-devel xcb-util-cursor-devel libqt5-qtx11extras-devel xcb-proto-devel git-core</pre><br />
<br />
==== openSUSE 42.1 ====<br />
<br />
Install these packages (including the recommended packages):<br />
<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo zypper install patterns-openSUSE-devel_kde patterns-openSUSE-devel_kde_frameworks git-core bzr ninja \<br />
gettext-tools libqt5-qttools libgypsy0 libqt5-creator libqt5-linguist libqt5-qtbase-common-devel libqt5-qtbase-devel libqt5-qtbase-examples libqt5-qtdeclarative-devel libqt5-qtdeclarative-examples libqt5-qtdeclarative-tools libqt5-qtdoc libqt5-qtgraphicaleffects libqt5-qtimageformats libqt5-qtimageformats-devel libqt5-qtmultimedia-devel libqt5-qtmultimedia-examples libqt5-qtquick1-devel libqt5-qtquickcontrols libqt5-qtscript-devel libqt5-qtscript-examples libqt5-qtsvg-devel libqt5-qttools-devel libqt5-qtx11extras-devel libqt5-qtxmlpatterns-devel libqt5-qtxmlpatterns-examples libQt5CLucene5 libQt5Concurrent-devel libQt5Concurrent5 libQt5Core-devel libQt5Core5 libQt5DBus-devel libQt5DBus5 libQt5Declarative5 libQt5Designer5 libQt5DesignerComponents5 libQt5Gui-devel libQt5Gui5 libQt5Help5 libQt5Multimedia5 libQt5Network-devel libQt5Network5 libQt5OpenGL-devel libQt5OpenGL5 libQt5Positioning5 libQt5PrintSupport-devel libQt5PrintSupport5 libQt5Script5 libQt5Sensors5 libQt5Sql-devel libQt5Sql5 libQt5Sql5-mysql libQt5Sql5-postgresql libQt5Sql5-sqlite libQt5Sql5-unixODBC libQt5Svg5 libQt5Test-devel libQt5Test5 libQt5WebKit5 libQt5WebKitWidgets5 libQt5Widgets-devel libQt5Widgets5 libQt5X11Extras5 libQt5Xml-devel libQt5Xml5 libQt5XmlPatterns5 libQtQuick5 libQt5WebKitWidgets-devel libqt5-qtbase-private-headers-devel \<br />
xcb-util-keysyms-devel docbook-xsl-stylesheets doxygen polkit-devel libepoxy-devel boost-devel libXcursor-devel libSM-devel giflib-devel libaccounts-qt5-devel gtk3-devel libpng16-devel fltk-devel libopenssl-devel libattr-devel ModemManager-devel NetworkManager-devel wayland-devel lmdb-devel xcb-proto-devel xcb-util-image-devel xcb-util-cursor-devel xcb-util-devel gtk2-devel libqca-qt5-devel libpwquality-devel libical-devel PackageKit-Qt5-devel pam-devel \<br />
bison flex libqt5-qttools-doc<br />
</pre><br />
<br />
* OPEN ISSUES:<br />
** on my system 'ninja-1.6.0' was installed and when using 'custom-build-command ninja' in the kdesrc-buildrc below, the build of modules fails), maybe see https://bugs.kde.org/show_bug.cgi?id=331654<br />
<br />
* Failing modules (of more than 200 modules)<br />
** phonon-vlc, phonon-gstreamer, plasma-pa (PulseAudio missing), kdevplatform, plasma-desktop, kaccounts-integration, kaccounts-mobile, gwenview, kdevelop, libksane, skanlite, ... (see below for solutions)<br />
<br />
==== openSuSE Tumbleweed ====<br />
This more complete list (which probably works for OpenSuSE 42.1 as well) allows to compile everything that kdesrc-build's default setup (kf5-qt5-build-include) compiles. Note that it doesn't contain Qt or Qt-based libs, you need that on top, or to compile your own Qt (and then include custom-qt5-libs-build-include in kdesrc-buildrc).<br />
<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo zypper install patterns-kde-devel_kde_frameworks patterns-kde-devel_qt5 make cmake extra-cmake-modules ccache git bzr antlr antlr-java antlr-devel astyle autoconf flac gettext-tools intltool libMagick++-devel libplotter2 libtool pstoedit subversion-devel subversion-tools xscreensaver-data libxslt-devel docbook-xsl-stylesheets libpoppler-devel aspell-devel enchant-devel libidn-devel polkit-devel update-desktop-files atk-devel bluez-devel fdupes gdk-pixbuf-devel gtk3-devel libcanberra-devel libexiv2-devel libpulse-devel gtk-doc libsmbclient-devel libssh-devel libusb-1_0-devel libusb-compat-devel libxine-devel libxklavier16 libxklavier-devel xwininfo NetworkManager-devel ModemManager-devel libssh2-devel openslp-devel pango-devel xz-devel libgssglue-devel libjasper-devel libudev-devel utempter-devel libbotan-devel libmysqlclient-devel postgresql-devel libmysqld-devel cgdb gstreamer-plugins-base-devel gstreamer-devel libsamplerate-devel audiofile-devel flac-devel libvorbis-devel fftw3-devel libmusicbrainz-devel cdparanoia-devel flex parted-devel libopus-devel giflib-devel pciutils-devel pam-devel boost-devel libv4l-devel cyrus-sasl-devel libgpgme-devel libical-devel sane-backends-devel libgphoto2-devel doxygen makeinfo LibVNCServer-devel speex-devel libotr-devel libmms-devel libsndfile-devel mpfr-devel libzeitgeist-devel gperf libcap-devel libarchive-devel telepathy-logger-devel libpwquality-devel opencv-devel glew-devel libxapian-devel libblkid-devel libatasmart-devel libiodbc-devel xcb-util-wm-devel xcb-util-renderutil-devel xcb-util-keysyms-devel xcb-util-image-devel xcb-util-cursor-devel libxkbcommon-devel vlc-devel libicu-devel icu-data libkolabxml-devel xsd libffi-devel-gcc5 perl-Tie-IxHash perl-JSON perl-Text-CSV perl-YAML-Syck hunspell-devel ffmpeg-devel libacl-devel libnl-devel liboauth-devel libepub-devel libicecream-devel docbook2X liblcms2-devel libeigen2-devel eigen3-devel graphviz-devel liboyranos-devel libraw-devel xf86-input-wacom-devel libwacom-devel xf86-input-synaptics-devel xorg-x11-server-sdk libdiscid-devel libmlt++-devel libdmtx-devel qrencode-devel libfunambol-devel libmtp-devel at-spi2-core-devel openal-soft-devel python-sip-devel libXcm-devel libspeechd-devel libraw-devel ModemManager-devel farstream-devel tesseract-ocr-devel mtdev-devel fontforge-devel cups-devel libepoxy-devel openconnect-devel lmdb-devel libpgf-devel llvm-devel llvm-clang-devel binutils-devel libdwarf-devel libelf-devel plymouth-devel libfakekey-devel python-GitPython php php-curl telepathy-mission-control-devel libaccounts-glib-devel<br />
</pre><br />
<br />
== For Plasma ==<br />
* Arch/Antergos/Manjaro: <code>sudo pacman -S plasma-desktop plasma-workspace kwin</code><br />
* Fedora: <code>sudo dnf builddep plasma-desktop plasma-workspace kwin</code><br />
* KDE neon/Kubuntu/Ubuntu/Debian <code>sudo apt build-dep plasma-desktop plasma-workspace kwin</code><br />
* openSUSE Leap & Tumbleweed: <code>sudo zypper si -d plasma-desktop plasma-workspace kwin</code><br />
<br />
Any other dependencies can be figured out and installed as you continue building the modules one by one.<br />
<br />
== Quick fixes for package manager errors ==<br />
The above lists might not always be working out of the box on your specific distribution or might be out of date for individual packages. In many cases removing single packages from the lists above still allows you to build many KDE frameworks and applications.<br />
<br />
In case it is a package added by a regex, you can exclude the specific package by a workaround using sed. Let us assume for an example that we want to install "libkf5.*-dev" on deb-based systems but have uninstallable packages libkf5example1-dev, libkf5example2-dev. Then we install all "libkf5.*-dev" packages excluding libkf5example1-dev and libkf5example2-dev through:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;">$ sudo apt install $(apt-cache search -n "libkf5.*-dev" | sed 's/ - .*//' | sed '/libkf5example1-dev/d' | sed '/libkf5example2-dev/d')</pre></div>GB 2https://community.kde.org/index.php?title=Guidelines_and_HOWTOs/Build_from_source/Install_the_dependencies&diff=83577Guidelines and HOWTOs/Build from source/Install the dependencies2019-04-02T18:44:25Z<p>GB 2: </p>
<hr />
<div>In the following we give the dependencies to install. However it might change and this page might be quickly outdated.<br />
<br />
'' '''Note''': If some packages fail to install, you can try removing the ones that don't work from the list."<br />
<br />
Reading the <code>CMakeLists.txt</code> of the packages you want to install should help you finding what you '''really''' need to install. Or read the error logs (see below).<br />
<br />
If you need help, see https://community.kde.org/Get_Involved#Getting_in_touch<br />
<br />
== All dependencies ==<br />
<br />
=== KDE neon, Debian, Ubuntu, Kubuntu === <br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo apt install libkf5activities-dev libkf5activitiesstats-dev libkf5akonadi-dev libkf5akonadicalendar-dev libkf5akonadicontact-dev libkf5akonadimime-dev libkf5akonadinotes-dev libkf5akonadisearch-dev libkf5alarmcalendar-dev libkf5archive-dev libkf5attica-dev libkf5auth-dev baloo-kf5-dev libkf5baloowidgets-dev libkf5blog-dev libkf5bluezqt-dev libkf5bookmarks-dev libkf5calendarcore-dev libkf5calendarsupport-dev libkf5calendarutils-dev libkf5cddb-dev libkf5codecs-dev libkf5compactdisc-dev libkf5completion-dev libkf5config-dev libkf5configwidgets-dev libkf5contacteditor-dev libkf5contacts-dev libkf5coreaddons-dev libkf5crash-dev libkf5dbusaddons-dev libkf5dnssd-dev libkf5declarative-dev kgendesignerplugin libkf5doctools-dev libkf5emoticons-dev libkf5eventviews-dev libkf5filemetadata-dev libkf5followupreminder-dev libkf5style-dev libkf5globalaccel-dev libkf5grantleetheme-dev libkf5gravatar-dev libkf5guiaddons-dev libkf5holidays-dev libkf5i18n-dev libkf5imap-dev libkf5iconthemes-dev libkf5identitymanagement-dev libkf5idletime-dev libkf5incidenceeditor-dev kinit-dev libkf5itemmodels-dev libkf5itemviews-dev libkf5kjs-dev libkf5jobwidgets-dev libkf5jsembed-dev libkf5kcmutils-dev libkf5kdelibs4support-dev libkf5kdegames-dev libkf5kdcraw-dev libkf5kexiv2-dev libkf5kgeomap-dev libkf5khtml-dev libkf5kio-dev libkf5kmahjongglib-dev libkf5kaddressbookgrantlee-dev libkf5kaddressbookimportexport-dev libkf5kdepimdbusinterfaces-dev libkf5kipi-dev kirigami2-dev libkf5konq-dev libkf5kontactinterface-dev kross-dev libkf5ldap-dev libkf5ksieve-dev libkf5libkdepim-dev libkf5libkleo-dev libkf5mailcommon-dev libkf5mailimporter-dev libkf5mailtransport-dev libkf5mbox-dev libkf5mediaplayer-dev libkf5mediawiki-dev libkf5messagecomposer-dev libkf5messagecore-dev libkf5messagelist-dev libkf5messageviewer-dev libkf5mime-dev libkf5mimetreeparser-dev modemmanager-qt-dev libkf5networkmanagerqt-dev libkf5newstuff-dev libkf5notifications-dev libkf5notifyconfig-dev libkf5package-dev libkf5parts-dev libkf5people-dev libkf5pimcommon-dev libkf5pimtextedit-dev libkf5plasma-dev libkf5plotting-dev libkf5prison-dev libkf5pty-dev libkf5purpose-dev libkf5qqc2desktopstyle-dev libkf5runner-dev libkf5sane-dev libkf5screen-dev libkf5sendlater-dev libkf5service-dev libkf5solid-dev libkf5sonnet-dev libkf5su-dev libkf5syndication-dev libkf5syntaxhighlighting-dev libkf5sysguard-dev libkf5templateparser-dev libkf5texteditor-dev libkf5textwidgets-dev libkf5threadweaver-dev libkf5tnef-dev libktorrent-dev libkf5unitconversion-dev libkf5vkontakte-dev libkf5wallet-dev libkf5wayland-dev libkf5webengineviewer-dev libkf5webkit-dev libkf5widgetsaddons-dev libkf5windowsystem-dev libkf5xmlgui-dev libkf5xmlrpcclient-dev autoconf bison breeze-dev build-essential bzr cmake cmake-data debhelper dh-apparmor doxygen extra-cmake-modules flex fontforge gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 git gperf icu-devtools kded5-dev kscreenlocker-dev kwin-dev libaccounts-glib-dev libappstreamqt-dev libapr1 libaprutil1 libarchive-dev libasound2-dev libattr1-dev libboost-dev libbz2-dev libcanberra-dev libclang-3.9-dev libclang-dev libcln-dev libcups2-dev libegl1-mesa-dev libepoxy-dev libexiv2-dev libfakekey-dev libfontconfig1-dev libfreetype6-dev libgconf2-dev libgcrypt20-dev libgif-dev libglib2.0-dev libgmp-dev libgmpxx4ldbl libgpgme11-dev libgps-dev libgrantlee5-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgtk-3-dev libhunspell-dev libibus-1.0-dev libicu-dev libjpeg8-dev libjpeg-dev libjpeg-turbo8-dev libjson-perl libkaccounts-dev liblcms2-dev liblmdb-dev libmlt-dev libmlt++-dev libnm-dev libnm-glib-dev libnm-util-dev libpackagekitqt5-dev libpam-dev libphonon4qt5-dev libphonon4qt5experimental-dev libpng-dev libpolkit-agent-1-dev libpolkit-backend-1-dev libpolkit-gobject-1-dev libpulse-dev libpwquality-dev libqalculate-dev libqca-qt5-2-dev libqimageblitz-dev libqrencode-dev libqt5sensors5 libqt5sensors5-dev libqt5svg5-dev libqt5texttospeech5-dev libqt5webkit5-dev libqt5x11extras5-dev libqt5xmlpatterns5-dev libraw1394-dev libscim-dev libserf-1-1 libsm-dev libssl-dev libsvn1 libtiff5-dev libudev-dev libusb-dev libvlccore-dev libvlc-dev libvncserver-dev libwww-perl libx11-dev libx11-xcb-dev libxapian-dev libxcb1-dev libxcb-composite0-dev libxcb-cursor0 libxcb-cursor-dev libxcb-damage0-dev libxcb-dpms0 libxcb-dpms0-dev libxcb-ewmh2 libxcb-ewmh-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-record0-dev libxcb-render-util0-dev libxcb-res0 libxcb-res0-dev libxcb-screensaver0 libxcb-screensaver0-dev libxcb-shm0-dev libxcb-util0-dev libxcb-xf86dri0 libxcb-xf86dri0-dev libxcb-xinerama0 libxcb-xinerama0-dev libxcb-xkb-dev libxcb-xtest0-dev libxcb-xv0 libxcb-xv0-dev libxcb-xvmc0 libxcb-xvmc0-dev libxcursor-dev libxft-dev libxi-dev libxkbfile-dev libxml2-dev libxml-parser-perl libxrender-dev libxslt1-dev libxslt-dev llvm llvm-3.9 modemmanager-dev network-manager-dev openbox oxygen-icon-theme perl-modules pkg-config pkg-kde-tools plasma-workspace-dev po-debconf qml-module-qtquick* qt5-qmake qtbase5-dev qtbase5-dev-tools qtbase5-private-dev qtdeclarative5-dev qtquickcontrols2-5-dev qtscript5-dev qttools5-dev qtxmlpatterns5-dev-tools shared-mime-info subversion texinfo xauth xcb-proto xserver-xorg-dev xserver-xorg-input-evdev-dev xserver-xorg-input-libinput-dev xserver-xorg-input-synaptics-dev xsltproc xvfb libkeduvocdocument-dev qtmultimedia5-dev<br />
</pre><br />
<br />
== For the frameworks ==<br />
<br />
=== Arch, Antergos, Manjaro === <br />
All the dependencies used for building frameworks can be installed by running:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo pacman -Sy --needed phonon-qt5 qt5-webkit qt5-script qt5-svg qt5-tools qt5-x11extras enchant jasper openexr libutempter docbook-xsl shared-mime-info giflib libxss upower udisks2 bzr git doxygen perl-json perl-libwww perl-xml-parser perl-io-socket-ssl akonadi xorg-server-devel libpwquality fontforge eigen libfakekey qca-qt5 xapian-core xsd gperf perl-yaml-syck intltool kdesdk<br />
</pre><br />
<br />
<br />
=== Fedora=== <br />
All the dependencies used for building frameworks can be installed by running:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo dnf install perl-IPC-Cmd perl-JSON-PP perl-YAML-Syck qt5-devel qt5-qtquickcontrols2-devel polkit-devel gperf libxslt-devel libxml2-devel kf5-kconfigwidgets-devel libXrender-devel qrencode-devel xcb*-devel flex systemd-devel giflib-devel libjpeg-turbo-devel NetworkManager-glib-devel NetworkManager-libnm-devel ModemManager-devel libattr-devel openssl-devel libSM-devel wayland-devel lmdb-devel libaccounts-qt5-devel libaccounts-glib-devel signon-devel<br />
</pre><br />
<br />
<br />
=== openSUSE === <br />
<br />
==== openSUSE Leap 15 (Argon) ====<br />
<br />
Updated 24 June 2018 (likely incomplete)<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;">$ sudo zypper si -d libqt5-qtbase<br />
$ sudo zypper in libbz2-devel libxslt-devel libxml2-devel shared-mime-info oxygen-icon-theme giflib-devel vlc-devel doxygen gstreamer-devel gstreamer-plugins-base-devel docbook-xml-slides docbook-xsl-stylesheets xcb-util-keysyms-devel perl-JSON boost-devel libxcb-devel libXrender-devel xcb-util-wm-devel xcb-util-devel xcb-util-image-devel gettext-tools libepoxy-devel<br />
$ sudo zypper in gtk3-devel<br />
$ sudo zypper in grantlee5-devel kactivities5-devel plasma-framework-devel plasma5-addons-devel plasma5-workspace-devel libQt5Concurrent-devel libQt5DBus-devel libQt5PrintSupport-devel xcb-util-cursor-devel libqt5-qtx11extras-devel xcb-proto-devel git-core</pre><br />
<br />
==== openSUSE 42.1 ====<br />
<br />
Install these packages (including the recommended packages):<br />
<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo zypper install patterns-openSUSE-devel_kde patterns-openSUSE-devel_kde_frameworks git-core bzr ninja \<br />
gettext-tools libqt5-qttools libgypsy0 libqt5-creator libqt5-linguist libqt5-qtbase-common-devel libqt5-qtbase-devel libqt5-qtbase-examples libqt5-qtdeclarative-devel libqt5-qtdeclarative-examples libqt5-qtdeclarative-tools libqt5-qtdoc libqt5-qtgraphicaleffects libqt5-qtimageformats libqt5-qtimageformats-devel libqt5-qtmultimedia-devel libqt5-qtmultimedia-examples libqt5-qtquick1-devel libqt5-qtquickcontrols libqt5-qtscript-devel libqt5-qtscript-examples libqt5-qtsvg-devel libqt5-qttools-devel libqt5-qtx11extras-devel libqt5-qtxmlpatterns-devel libqt5-qtxmlpatterns-examples libQt5CLucene5 libQt5Concurrent-devel libQt5Concurrent5 libQt5Core-devel libQt5Core5 libQt5DBus-devel libQt5DBus5 libQt5Declarative5 libQt5Designer5 libQt5DesignerComponents5 libQt5Gui-devel libQt5Gui5 libQt5Help5 libQt5Multimedia5 libQt5Network-devel libQt5Network5 libQt5OpenGL-devel libQt5OpenGL5 libQt5Positioning5 libQt5PrintSupport-devel libQt5PrintSupport5 libQt5Script5 libQt5Sensors5 libQt5Sql-devel libQt5Sql5 libQt5Sql5-mysql libQt5Sql5-postgresql libQt5Sql5-sqlite libQt5Sql5-unixODBC libQt5Svg5 libQt5Test-devel libQt5Test5 libQt5WebKit5 libQt5WebKitWidgets5 libQt5Widgets-devel libQt5Widgets5 libQt5X11Extras5 libQt5Xml-devel libQt5Xml5 libQt5XmlPatterns5 libQtQuick5 libQt5WebKitWidgets-devel libqt5-qtbase-private-headers-devel \<br />
xcb-util-keysyms-devel docbook-xsl-stylesheets doxygen polkit-devel libepoxy-devel boost-devel libXcursor-devel libSM-devel giflib-devel libaccounts-qt5-devel gtk3-devel libpng16-devel fltk-devel libopenssl-devel libattr-devel ModemManager-devel NetworkManager-devel wayland-devel lmdb-devel xcb-proto-devel xcb-util-image-devel xcb-util-cursor-devel xcb-util-devel gtk2-devel libqca-qt5-devel libpwquality-devel libical-devel PackageKit-Qt5-devel pam-devel \<br />
bison flex libqt5-qttools-doc<br />
</pre><br />
<br />
* OPEN ISSUES:<br />
** on my system 'ninja-1.6.0' was installed and when using 'custom-build-command ninja' in the kdesrc-buildrc below, the build of modules fails), maybe see https://bugs.kde.org/show_bug.cgi?id=331654<br />
<br />
* Failing modules (of more than 200 modules)<br />
** phonon-vlc, phonon-gstreamer, plasma-pa (PulseAudio missing), kdevplatform, plasma-desktop, kaccounts-integration, kaccounts-mobile, gwenview, kdevelop, libksane, skanlite, ... (see below for solutions)<br />
<br />
==== openSuSE Tumbleweed ====<br />
This more complete list (which probably works for OpenSuSE 42.1 as well) allows to compile everything that kdesrc-build's default setup (kf5-qt5-build-include) compiles. Note that it doesn't contain Qt or Qt-based libs, you need that on top, or to compile your own Qt (and then include custom-qt5-libs-build-include in kdesrc-buildrc).<br />
<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo zypper install patterns-kde-devel_kde_frameworks patterns-kde-devel_qt5 make cmake extra-cmake-modules ccache git bzr antlr antlr-java antlr-devel astyle autoconf flac gettext-tools intltool libMagick++-devel libplotter2 libtool pstoedit subversion-devel subversion-tools xscreensaver-data libxslt-devel docbook-xsl-stylesheets libpoppler-devel aspell-devel enchant-devel libidn-devel polkit-devel update-desktop-files atk-devel bluez-devel fdupes gdk-pixbuf-devel gtk3-devel libcanberra-devel libexiv2-devel libpulse-devel gtk-doc libsmbclient-devel libssh-devel libusb-1_0-devel libusb-compat-devel libxine-devel libxklavier16 libxklavier-devel xwininfo NetworkManager-devel ModemManager-devel libssh2-devel openslp-devel pango-devel xz-devel libgssglue-devel libjasper-devel libudev-devel utempter-devel libbotan-devel libmysqlclient-devel postgresql-devel libmysqld-devel cgdb gstreamer-plugins-base-devel gstreamer-devel libsamplerate-devel audiofile-devel flac-devel libvorbis-devel fftw3-devel libmusicbrainz-devel cdparanoia-devel flex parted-devel libopus-devel giflib-devel pciutils-devel pam-devel boost-devel libv4l-devel cyrus-sasl-devel libgpgme-devel libical-devel sane-backends-devel libgphoto2-devel doxygen makeinfo LibVNCServer-devel speex-devel libotr-devel libmms-devel libsndfile-devel mpfr-devel libzeitgeist-devel gperf libcap-devel libarchive-devel telepathy-logger-devel libpwquality-devel opencv-devel glew-devel libxapian-devel libblkid-devel libatasmart-devel libiodbc-devel xcb-util-wm-devel xcb-util-renderutil-devel xcb-util-keysyms-devel xcb-util-image-devel xcb-util-cursor-devel libxkbcommon-devel vlc-devel libicu-devel icu-data libkolabxml-devel xsd libffi-devel-gcc5 perl-Tie-IxHash perl-JSON perl-Text-CSV perl-YAML-Syck hunspell-devel ffmpeg-devel libacl-devel libnl-devel liboauth-devel libepub-devel libicecream-devel docbook2X liblcms2-devel libeigen2-devel eigen3-devel graphviz-devel liboyranos-devel libraw-devel xf86-input-wacom-devel libwacom-devel xf86-input-synaptics-devel xorg-x11-server-sdk libdiscid-devel libmlt++-devel libdmtx-devel qrencode-devel libfunambol-devel libmtp-devel at-spi2-core-devel openal-soft-devel python-sip-devel libXcm-devel libspeechd-devel libraw-devel ModemManager-devel farstream-devel tesseract-ocr-devel mtdev-devel fontforge-devel cups-devel libepoxy-devel openconnect-devel lmdb-devel libpgf-devel llvm-devel llvm-clang-devel binutils-devel libdwarf-devel libelf-devel plymouth-devel libfakekey-devel python-GitPython php php-curl telepathy-mission-control-devel libaccounts-glib-devel<br />
</pre><br />
<br />
== For Plasma ==<br />
* Arch/Antergos/Manjaro: <code>sudo pacman -S plasma-desktop plasma-workspace kwin</code><br />
* Fedora: <code>sudo dnf builddep plasma-desktop plasma-workspace kwin</code><br />
* KDE neon/Kubuntu/Ubuntu/Debian <code>sudo apt build-dep plasma-desktop plasma-workspace kwin</code><br />
* openSUSE Leap & Tumbleweed: <code>sudo zypper si -d plasma-desktop plasma-workspace kwin</code><br />
<br />
Any other dependencies can be figured out and installed as you continue building the modules one by one.<br />
<br />
== Quick fixes for package manager errors ==<br />
The above lists might not always be working out of the box on your specific distribution or might be out of date for individual packages. In many cases removing single packages from the lists above still allows you to build many KDE frameworks and applications.<br />
<br />
In case it is a package added by a regex, you can exclude the specific package by a workaround using sed. Let us assume for an example that we want to install "libkf5.*-dev" on deb-based systems but have uninstallable packages libkf5example1-dev, libkf5example2-dev. Then we install all "libkf5.*-dev" packages excluding libkf5example1-dev and libkf5example2-dev through:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;">$ sudo apt install $(apt-cache search -n "libkf5.*-dev" | sed 's/ - .*//' | sed '/libkf5example1-dev/d' | sed '/libkf5example2-dev/d')</pre></div>GB 2https://community.kde.org/index.php?title=Get_Involved/promotion&diff=83541Get Involved/promotion2019-03-31T07:24:07Z<p>GB 2: </p>
<hr />
<div>== Get Involved with KDE Promotion ==<br />
<br />
[[Image:promotion.png|Promotion|left]] Do you know how to get the word out on the street? Marketing and promotion of KDE is done through a mostly grassroots effort. By being a part of the team, you will be spreading the word of KDE to people that may not otherwise be able to benefit from it.<br />
<br />
== Communicating with the team ==<br />
<br />
There are multiple ways to get in touch with the KDE Promo team, but the best way to get started is with the [https://mail.kde.org/mailman/listinfo/kde-promo KDE Promo mailing list] ([http://www.kde.org/support/#mailinglists learn about mailing lists]). On the KDE-Promo mailing list we discuss all of the projects and tasks we're working on. Frequently we ask the list for volunteers to help on these things, so getting involved can be as easy as signing up for the list and waiting for someone to ask for help. It's also a great place to ask for feedback and to see if anyone else is willing to help you out when you end up having an idea you'd like to share and make it come into fruition!<br />
<br />
We also have a [https://webchat.kde.org/#/room/#kde-promo:kde.org #kde-promo] channel on [[Matrix]] or the freenode [[Internet Relay Chat | IRC]]. Most of the time the channel is pretty quiet, but it is sometimes used for meetings where real time discussion is needed.<br />
<br />
== Tasks ==<br />
<br />
The main activities of the project include:<br />
<br />
* Reaching out to the user community to spread word about KDE software. This is done in the form of [http://planetkde.org/ writing your own blog posts], contributing stories to our main news site ([http://dot.kde.org/ the Dot]), and visiting [http://community.kde.org/Promo/Events conference events] on behalf of KDE just to name a few things.<br />
* Helping find new KDE contributors. This is another activity that can occur through blog posts or at conferences, but really can occur just about anywhere you decide to talk to someone about KDE. You could start by simply pointing them to the [http://www.kde.org/community/getinvolved/ Get Involved with KDE] pages you're at right now!<br />
* We also work on a wide variety of other projects and tasks. We maintain [http://community.kde.org/Promo/Material/social_media various social media channels] such as groups on Identi.ca, YouTube, Facebook, LinkedIn, etc. We work with other publication groups to get KDE related articles into their magazines and web sites. These are just a few examples and we cover a wide variety of other things which are generally listed on our [http://community.kde.org/Promo/Tasks Tasks page] on the wiki. If you are interested in helping with one of these tasks or adding some new ones, please communicate with the KDE Promo mailing list to coordinate your efforts.<br />
<br />
== More Information ==<br />
<br />
Please visit the [http://community.kde.org/Promo Promo pages] of the Community wiki for more information, or sign up for our [https://mail.kde.org/mailman/listinfo/kde-promo mailing list]. It's a great place to get a feel for all of the things we're working on. If you feel like you would be able help contribute to KDE as part of the Promo team, please don't hesitate to get in touch!<br />
<br />
[[Category:Needs Attention]]<br />
__NOTOC__</div>GB 2https://community.kde.org/index.php?title=Get_Involved/documentation&diff=83540Get Involved/documentation2019-03-31T07:19:48Z<p>GB 2: /* Getting the resources */</p>
<hr />
<div>== Get Involved with KDE Documentation ==<br />
<br />
[[Image:documentation.png|Documentation|left|60px|margin:10px]] Writing documentation is a great way to start improving your application and KDE software. Your words will be translated to all languages covered by the KDE translations teams, and you will be helping millions of KDE software users to better understand their desktop and applications. Anyone with reasonable English skills and good knowledge of an application can help.<br />
<br />
There are two kinds of documentation in KDE.<br /> Context help explains individual GUI items on the screen. The remainder of this page focuses on help documents (application manuals), which include screenshots and explain an application's features and overview.<br />
<br />
== Communicating with the team ==<br />
<br />
There are many ways to get in touch with the team:<br /> You can chat with the team in the [https://webchat.kde.org/#/room/#kde-docs:kde.org #kde-docs] channel on [[Matrix]] or the freenode [[Internet Relay Chat | IRC]].<br /> The team discusses activities on the mailing list [https://mail.kde.org/mailman/listinfo/kde-doc-english kde-doc-english], [http://kde.org/support/#mailinglists learn about mailing lists].<br />
<br />
== Getting the resources ==<br />
<br />
In order to document KDE projects, you will want to run a recent [[Guidelines_and_HOWTOs/Build_from_source | development version of KDE software]]. To document third-party projects, you will also need a recent version of that program. There is a special [http://l10n.kde.org/docs/tools.php KDE DocBook XML toolchain] used to create documentation. But feel free to write docs in any format you want, and the team will convert it for you! This full manual will be useful: [http://l10n.kde.org/docs/doc-primer/ The documentation Primer]<br />
<br />
== The KDE DocBook format ==<br />
<br />
We use the DocBook XML standardized format, which allows for ease of translation using our custom tools. The markup is extremely self-descriptive, and many people find it easier than HTML to learn. However, if you are not familiar with it, please read up about it below. To produce quality documentation, please have a look at these guides:<br />
<br />
<!--* [http://opensource.bureau-cornavin.com/crash-course/ DocBook Crash Course] --- site has moved to www.workshop-chapina.com, but no longer seems to offer the crash course. The same document is found here: --><br />
* [http://slackermedia.info/sprints/multimediaSprint_v1/ebooks/docbook_crashCourse.pdf DocBook Crash Course]<br />
* [http://l10n.kde.org/doc/screenshots.php The screenshots specification]<br />
<!--* [http://quality.kde.org/develop/howto/howtodocs.php Documentation HOWTO] - more information that should be copied here later--><br />
* [http://l10n.kde.org/docs/gettingstarted.php Getting started guide] on the internationalization site<br />
* [http://l10n.kde.org/docs/doc-primer/ The documentation Primer]<br />
* [http://l10n.kde.org/docs/questionnaire.php Questions You Should Answer When You Document KDE]<br />
* [http://l10n.kde.org/docs/index-script.php The goals of the KDE Editorial Team]<br />
* [http://l10n.kde.org/docs/tools.php The KDE DocBook XML toolchain]<br />
<br />
== Tasks ==<br />
<br />
Now that you have a recent version of KDE running, you can get you first contribution committed today! Here are some tasks for the beginner:<br />
<br />
* [http://l10n.kde.org/docs/current.php Open Documentation Tasks] - a list of the few documentation priorities<br />
* [https://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr&long_desc=&product=docs&component=Screenshots&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED Bugzilla listing of screenshots] that need to be fixed<br />
* [https://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr&long_desc=&product=docs&component=Corrections&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED Bugzilla listing of documentation] that needs to be updated<br />
* [https://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr&long_desc=&product=docs&component=Missing+content&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED Bugzilla listing of applications] missing documentation<br />
* [http://techbase.kde.org/Projects/Documentation/KDE4 Techbase Documentation page]<br />
* [http://techbase.kde.org/Projects/Documentation/KDE4_(health_table) Documentation Status]<br />
* Mail in your creations to [mailto:kde-doc-english@kde.org the KDE documentation team].<br />
<br />
== Mentor program ==<br />
<br />
Getting started in a big project can be hard. Here are some people that are willing to help you one-on-one:<br />
<br />
* Burkhard Lück (<span class="mailme">lueck at hube-lueck dot de</span>)<br /> documentation<br />
* Yuri Chornoivan (<span class="mailme">yurchor at ukr dot net</span>)<br /> documentation<br />
* volunteer to mentor!<br /> your name here<br />
<br />
[[Category:Needs Attention]]<br />
__NOTOC__</div>GB 2https://community.kde.org/index.php?title=Get_Involved/documentation&diff=83539Get Involved/documentation2019-03-31T07:18:24Z<p>GB 2: </p>
<hr />
<div>== Get Involved with KDE Documentation ==<br />
<br />
[[Image:documentation.png|Documentation|left|60px|margin:10px]] Writing documentation is a great way to start improving your application and KDE software. Your words will be translated to all languages covered by the KDE translations teams, and you will be helping millions of KDE software users to better understand their desktop and applications. Anyone with reasonable English skills and good knowledge of an application can help.<br />
<br />
There are two kinds of documentation in KDE.<br /> Context help explains individual GUI items on the screen. The remainder of this page focuses on help documents (application manuals), which include screenshots and explain an application's features and overview.<br />
<br />
== Communicating with the team ==<br />
<br />
There are many ways to get in touch with the team:<br /> You can chat with the team in the [https://webchat.kde.org/#/room/#kde-docs:kde.org #kde-docs] channel on [[Matrix]] or the freenode [[Internet Relay Chat | IRC]].<br /> The team discusses activities on the mailing list [https://mail.kde.org/mailman/listinfo/kde-doc-english kde-doc-english], [http://kde.org/support/#mailinglists learn about mailing lists].<br />
<br />
== Getting the resources ==<br />
<br />
In order to document KDE projects, you will want to run a recent [[Guidelines_and_HOWTOs/Build_from_source | development version of KDE]]. To document third-party projects, you will also need a recent version of that program. There is a special [http://l10n.kde.org/docs/tools.php KDE DocBook XML toolchain] used to create documentation. But feel free to write docs in any format you want, and the team will convert it for you! This full manual will be useful: [http://l10n.kde.org/docs/doc-primer/ The documentation Primer]<br />
<br />
== The KDE DocBook format ==<br />
<br />
We use the DocBook XML standardized format, which allows for ease of translation using our custom tools. The markup is extremely self-descriptive, and many people find it easier than HTML to learn. However, if you are not familiar with it, please read up about it below. To produce quality documentation, please have a look at these guides:<br />
<br />
<!--* [http://opensource.bureau-cornavin.com/crash-course/ DocBook Crash Course] --- site has moved to www.workshop-chapina.com, but no longer seems to offer the crash course. The same document is found here: --><br />
* [http://slackermedia.info/sprints/multimediaSprint_v1/ebooks/docbook_crashCourse.pdf DocBook Crash Course]<br />
* [http://l10n.kde.org/doc/screenshots.php The screenshots specification]<br />
<!--* [http://quality.kde.org/develop/howto/howtodocs.php Documentation HOWTO] - more information that should be copied here later--><br />
* [http://l10n.kde.org/docs/gettingstarted.php Getting started guide] on the internationalization site<br />
* [http://l10n.kde.org/docs/doc-primer/ The documentation Primer]<br />
* [http://l10n.kde.org/docs/questionnaire.php Questions You Should Answer When You Document KDE]<br />
* [http://l10n.kde.org/docs/index-script.php The goals of the KDE Editorial Team]<br />
* [http://l10n.kde.org/docs/tools.php The KDE DocBook XML toolchain]<br />
<br />
== Tasks ==<br />
<br />
Now that you have a recent version of KDE running, you can get you first contribution committed today! Here are some tasks for the beginner:<br />
<br />
* [http://l10n.kde.org/docs/current.php Open Documentation Tasks] - a list of the few documentation priorities<br />
* [https://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr&long_desc=&product=docs&component=Screenshots&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED Bugzilla listing of screenshots] that need to be fixed<br />
* [https://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr&long_desc=&product=docs&component=Corrections&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED Bugzilla listing of documentation] that needs to be updated<br />
* [https://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr&long_desc=&product=docs&component=Missing+content&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED Bugzilla listing of applications] missing documentation<br />
* [http://techbase.kde.org/Projects/Documentation/KDE4 Techbase Documentation page]<br />
* [http://techbase.kde.org/Projects/Documentation/KDE4_(health_table) Documentation Status]<br />
* Mail in your creations to [mailto:kde-doc-english@kde.org the KDE documentation team].<br />
<br />
== Mentor program ==<br />
<br />
Getting started in a big project can be hard. Here are some people that are willing to help you one-on-one:<br />
<br />
* Burkhard Lück (<span class="mailme">lueck at hube-lueck dot de</span>)<br /> documentation<br />
* Yuri Chornoivan (<span class="mailme">yurchor at ukr dot net</span>)<br /> documentation<br />
* volunteer to mentor!<br /> your name here<br />
<br />
[[Category:Needs Attention]]<br />
__NOTOC__</div>GB 2https://community.kde.org/index.php?title=Get_Involved/design&diff=83536Get Involved/design2019-03-31T07:01:35Z<p>GB 2: </p>
<hr />
<div>== About the VDG ==<br />
[[File:Konqui_artistic_cropped.png|frameless|right|200px|]]<br />
The VDG started out as the Visual Design Group, but has grown into a team dedicated to the whole user experience, including what is often called human interface design. The aim is to help KDE create software that is both beautiful and a pleasure to use. VDG maintains and updates the [https://hig.kde.org/ KDE Human Interface Guidelines].<br />
<br />
VDG is always looking for people with skills in art, visual design, and human-computer interaction--or even just an interest in elegant design! If you have good ideas about how software should look and behave, you are a designer too, and we'd love you to join in. Our group regularly interfaces with users, developers, and the Promo team, so flexibility and the ability to communicate with many different kinds of people are a boon.<br />
<br />
<br />
== Current projects ==<br />
Feel free to have a look at VDG's current projects, which are are listed on the [https://phabricator.kde.org/project/board/89/ Phabricator workboard]. In addition, here are some timeless ways to get involved in ongoing work:<br />
* Learn how to design Breeze icons by reading [https://hig.kde.org/style/icon.html the applicable HIG page], and then work on [https://bugs.kde.org/buglist.cgi?bug_status=UNCONFIRMED&bug_status=CONFIRMED&bug_status=ASSIGNED&bug_status=REOPENED&component=Icons&list_id=1536878&product=Breeze&query_format=advanced Breeze icon bugs]. Here's [[Guidelines and HOWTOs/Submit an icon | how to submit an icon]].<br />
* Submit patches (using [[Infrastructure/Phabricator | Phabricator]]) for corrections and improvements to the [http://hig.kde.org Human Interface Guidelines]<br />
<br />
<br />
== Communication and workflow ==<br />
First, subscribe to the [https://mail.kde.org/mailman/listinfo/visual-design visual-design] mailing list to hear about general news and updates. You'll also want to become a watcher for the [https://phabricator.kde.org/project/profile/89/ VDG project] in Phabricator. Finally, join the [https://webchat.kde.org/#/room/#kde-vdg:kde.org #kde-vdg] channel on [[Matrix]] or the freenode [[Internet Relay Chat | IRC channel]] (which is bridged to the [https://telegram.me/vdgmainroom VDG] Telegram room, if you prefer [[Telegram]]).<br />
<br />
Most VDG discussions start out informally, in IRC. Once there's general agreement in the real-time chat, the discussion moves to a Phabricator task. The goal here is to open the discussion to include developers, and make the proposal more concrete using images and mockups. Mockups can be created using KDE's [[KDE Visual Design Group/HIG/MockupToolkit | Mockup Toolkit]] and should be hosted on [https://phabricator.kde.org/pholio/ Pholio].<br />
<br />
It's important that VDG Phabricator tasks subscribe all the developers who may be affected by the proposed work. Try to honestly and fairly summarize the discussion and initial VDG conclusion when writing the task's initial description. It's important not to lose context or history!<br />
<br />
In the Phabricator task, it's common for the details or scope to change based on developer feedback. This is normal! Developers have a better idea of what's technically possible or reasonable to change. Listen to developer feedback and change the design accordingly. At the same time, encourage them to listen to your expertise, and gently stand your ground if a developer tries to dictate design decisions to you.<br />
<br />
Once there's general agreement in the Phabricator task, work should begin and folks can start submitting patches!<br />
<br />
<br />
== Know thyself ==<br />
In a highly technical field like programming, it's easy to know the limits of your expertise. This is more difficult in subjective fields like art and design, and it's very important to have a firm grasp of your own limitations. If you know you're not very artistically skilled, don't involve yourself heavily in icon design work, for example. If you don't have any skill or background in human/computer interaction, leave those discussions to the pros!<br />
<br />
==Old Things==<br />
* [[KDE_Visual_Design_Group/Archive | Archive of outdated documents that may still be useful for reference]]<br />
<br />
__NOTOC__</div>GB 2https://community.kde.org/index.php?title=Get_Involved/development&diff=83535Get Involved/development2019-03-31T06:57:39Z<p>GB 2: </p>
<hr />
<div>[[File:Konqui dev close cropped.png|right|x200px|]]<br />
By joining the ranks of KDE developers, you will get to implement new features and defeat bugs both daunting and simple, all while collaborating to make coherent and stable releases. Developers collaborate in teams based on what area they are working in. These can be small teams working on a single application, up to large teams working on a group of related pieces of software. Many developers are in more than one team.<br />
<br />
KDE runs or participates in several mentoring programs to help new developers, including an informal list of people who are willing to help newcomers get started. See the [[Mentoring]] page for more details.<br />
<br />
<br />
<br />
== New to C++/Qt software development? ==<br />
Most KDE software is written in C++ using the [https://www.qt.io Qt toolkit] and [[Frameworks | KDE Frameworks]]. Though prior experience with these technologies or other programming languages is helpful, you don't need to be a C++ programmer to get started! For example, no programming knowledge whatsoever is required to do things like improve text labels.<br />
<br />
{{Note|The Qt wiki contains [https://wiki.qt.io/Books a list of online books] for learning Qt programming. Qt also provides [http://doc.qt.io/qt-5/qtexamplesandtutorials.html lots of examples] you can look at. Information about KDE Frameworks can be found on the [https://techbase.kde.org TechBase wiki], and a [[Books | book]] is available.}}<br />
<br />
<br />
<br />
== One-time setup: your development environment ==<br />
To build software, you need 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 Konsole (but any terminal program will suffice).<br />
<br />
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!<br />
<br />
{{Note|'''Everything in this section 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!}}<br />
<br />
<br />
=== Install basic tools ===<br />
First you will need to use your operating system's package manager to install some basic tools:<br />
* Arch/Antergos/Manjaro: <code>sudo pacman -S git cmake dialog</code><br />
* Fedora: <code>sudo dnf install git cmake dialog perl</code><br />
* KDE Neon/Kubuntu/Ubuntu/Debian: <code>sudo apt install git cmake dialog</code><br />
* openSUSE Leap & Tumbleweed: <code>sudo zypper install git cmake dialog</code><br />
<br /><br />
Some operating systems also require that you turn on the source repositories before you can install build dependencies (more about that later). Do that now, if necessary:<br />
* Kubuntu/Ubuntu/Debian: https://askubuntu.com/questions/158871/how-do-i-enable-the-source-code-repositories<br />
* openSUSE Leap & Tumbleweed: <code>sudo zypper mr -e $(zypper repos | awk '/source/{print $5}'))</code><br />
<br />
<br />
=== Configure Git ===<br />
We need to set your authorship information properly so that any changes you make can be properly attributed to you:<br />
{{Input|1=<nowiki><br />
git config --global user.name "Your Name"<br />
git config --global user.email "you@email.com"<br />
</nowiki>}}<br />
<br />
{{Note|The email address you specify above must be the same as the email address used for your https://bugs.kde.org account. If they don't match, then the <tt>BUG: </tt> and <tt>FEATURE: </tt> keywords won't work (see [https://techbase.kde.org/Development/Git/Configuration#Basic_Settings this page] for more information).}}<br />
<br />
Now we will set up a '''Git prefix''' to make it easier to interact with KDE's remote Git repositories. Use a text editor to open the <tt>~/.gitconfig</tt> file and add the following:<br />
<br />
<syntaxhighlight lang="ini"><br />
[url "https://anongit.kde.org/"]<br />
insteadOf = kde:<br />
[url "git@git.kde.org:"]<br />
pushInsteadOf = kde:<br />
</syntaxhighlight><br />
<br />
Then save the file and close it. This essentially tells Git to accept "kde:" in place of "https://anongit.kde.org/", which allows us to check out repositories more easily, as we will soon see.<br />
<br />
=== Set up kdesrc-build ===<br />
Next, we need a method of '''managing dependencies'''. Every software has dependencies: other pieces of software that provide functionality they rely on. In order to compile any piece of software, its dependencies must be available.<br />
<br />
Most Linux-based operating systems do not provide development packages that are up-to-date enough for working on KDE software, so we will compile all the KDE dependencies ourselves. To do this, we use a command-line tool called <code>kdesrc-build</code> to download, manage, and build KDE source code repositories. Let's set it up now:<br />
<br />
{{Input|1=<nowiki><br />
mkdir -p ~/kde/src<br />
cd ~/kde/src/<br />
git clone kde:kdesrc-build<br />
</nowiki>}}<br />
<br />
Notice how we're using the "kde:" prefix in our <code>git clone</code> command!<br />
<br />
We want to add <code>kdesrc-build</code> to your system's <tt>$PATH</tt> variable so you can access it from anywhere, not just when you're inside <tt>~/kde/src/kdesrc-build</tt>. Use a text editor to open the <tt>~/.bashrc</tt> file and add <tt>export PATH=~/kde/src/kdesrc-build:$PATH</tt> . Then save the file, close it, and run <code>source ~/.bashrc</code> to pick up the changes.<br />
<br />
Next, set up <code>kdesrc-build</code> using its built-in wizard. The default options should be ok, but feel free to customize anything:<br />
{{Input|1=<nowiki><br />
kdesrc-build --initial-setup<br />
</nowiki>}}<br />
{{Note|Do not quote or escape any file paths entered in the wizard!}}<br />
<br />
=== Download non-KDE dependencies ===<br />
Even though <code>kdesrc-build</code> will take care of the KDE dependencies for you, it does not yet have the ability to install non-KDE dependencies (see https://bugs.kde.org/show_bug.cgi?id=402428), which are typically acquired using your package manager. To install the required non-KDE dependencies, [[Guidelines and HOWTOs/Build from source/Install the dependencies|read this page]] and follow the instructions laid out there.<br />
<br />
Once that's done, your development environment is set up and ready to build software! Let's take it for a spin.<br />
<br />
<br />
== Build some software ==<br />
{{Note|It can take an hour or more to compile a KDE Application, Framework, or Plasma itself for the first time. The reason for this is that <code>kdesrc-build</code> is compiling ''all'' of the KDE dependencies (See https://invent.kde.org/kde/kdesrc-build/issues/17). The next time you want to compile that or any other piece of KDE software, it will be much faster since most of the dependencies will have already been compiled.}}<br />
<br />
=== Applications ===<br />
'''[[KDE Applications]]''' like Dolphin, Okular, Konsole and Gwenview are standalone apps that can be run on multiple platforms, such as Plasma, GNOME, even macOS and Windows! New versions of KDE Applications are [[Schedules/Applications/18.12 Release Schedule|released three times a year]]. Note that the Discover app store (git repo name: <tt>plasma-discover</tt>) and System Settings app (git repo name: <tt>systemsettings</tt>) are distributed alongside Plasma, but they build like apps app using the below instructions. A list of all KDE applications can be found here: https://userbase.kde.org/Applications.<br />
<br />
For example, here is how to build Dolphin, the KDE file manager:<br />
<br />
{{Input|1=<nowiki><br />
kdesrc-build dolphin --include-dependencies<br />
</nowiki>}}<br />
<br />
As a part of this process, Dolphin was installed to <tt>~/kde/usr/bin/dolphin</tt>. '''There is no need to manually install anything;''' <tt>kdesrc-build</tt> installed it for you! <tt>Source</tt> the project's auto-generated <tt>prefix.sh</tt> file every time you want to run your custom-compiled version of Dolphin: <br />
<br />
{{Input|1=<nowiki><br />
source ~/kde/build/dolphin/prefix.sh<br />
~/kde/usr/bin/dolphin<br />
</nowiki>}}<br />
<br />
Did it run? If so, then '''congratulations, you just compiled your own version of Dolphin from source code!'''<br />
<br />
<br />
=== Frameworks ===<br />
'''[[Frameworks|KDE Frameworks]]''' are libraries of tools and features that can be used by any application or Plasma itself. New versions of KDE Frameworks are [[Schedules/Frameworks|released once a month]]. A list of all frameworks can be found here: https://api.kde.org/frameworks/index.html.<br />
<br />
For example, here is how to build the KIO framework:<br />
<br />
{{Input|1=<nowiki><br />
kdesrc-build kio --include-dependencies<br />
</nowiki>}}<br />
<br />
Now you can run an existing app using your custom-made version of the framework! For example, the following will run Dolphin, but it will be using the KIO library that you just built:<br />
<br />
{{Input|1=<nowiki><br />
source ~/kde/build/kio/prefix.sh<br />
~/kde/usr/bin/dolphin<br />
</nowiki>}}<br />
<br />
=== Plasma ===<br />
'''[[Plasma|KDE Plasma]]''' is the environment in which you can run apps. Plasma is responsible for providing a desktop with wallpaper, app launchers, and widgets; displaying notifications; managing wired and wireless networks; and similar operating-system level tasks. New versions of Plasma are [[Schedules/Plasma 5|released three times a year]].<br />
<br />
Here is how to build the Plasma desktop environment and its window manager, KWin:<br />
<br />
{{Input|1=<nowiki><br />
kdesrc-build plasma-desktop plasma-workspace plasma-framework kwin --include-dependencies<br />
</nowiki>}}<br />
<br />
To run your custom-built Plasma, [[Guidelines and HOWTOs/Build from source/Test plasma|follow these instructions]].<br />
<br />
<br />
== Choose what to do ==<br />
Now that you can compile and deploy custom versions of KDE software, you can open your editor and start hacking on the source code! The code for the version of Dolphin that you built earlier is located at <tt>~/kde/src/dolphin/</tt>; other projects you build with <code>kdesrc-build</code> will live in similar locations.<br />
<br />
A good place to start is with a small bug or feature in an existing piece of software that affects you personally ("scratch your own itch"). Get in touch with the existing developers (see [[#Communicate with the team|Communicate with the team]], below) and they can help you out, by pointing you to the right place in the code and giving advice about how to tackle the problem.<br />
<br />
Try not to start by proposing or working on major features or significant design changes. These can be controversial, and the smoothest way to get going is by working on relatively non-controversial bugfixes. Start slowly and build trust!<br />
<br />
Here are some other ideas for starting points:<br />
<br />
* Improve awkwardly-worded messages and labels that are written in English. This is a great way for non-programmers to contribute! If you can compile software and have a good grasp of English, you can make a big difference here.<br />
* Work on [https://bugs.kde.org/buglist.cgi?bug_status=UNCONFIRMED&bug_status=CONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&keywords=junior-jobs&list_id=1340815 Junior Jobs], which are small tasks that are suitable for beginners (both bugs and features).<br />
* Work on [https://bugs.kde.org/buglist.cgi?bug_status=UNCONFIRMED&bug_status=CONFIRMED&bug_status=ASSIGNED&bug_status=REOPENED&keywords=usability&keywords_type=allwords&list_id=1493316&order=product%2Cchangeddate%20DESC%2Cbug_status%20DESC%2Cresolution%2Cpriority%2Cassigned_to%2Cbug_id&query_format=advanced Bugs related to] KDE's [[Goals/Usability_%26_Productivity | Usability & Productivity initiative]], many of which are small and easy.<br />
* [http://www.englishbreakfastnetwork.org/ The English Breakfast Network] searches out simple, common issues in code that should be fixed, and going through the problems on there can provide a good overview of the code.<br />
<br />
== Test your changes ==<br />
Once you've made some changes, make sure the project still compiles and installs, and make sure the changes have the desired effect when you run the software. Then it's time to run the project's unit tests:<br />
<br />
{{Input|1=<nowiki><br />
cd ~/kde/build/dolphin/<br />
source ./prefix.sh<br />
ctest --output-on-failure<br />
</nowiki>}}<br />
<br />
If any test fails, that needs to be investigated and fixed before you can proceed. Once the tests pass, then run the software again to make sure it still behaves properly. If it doesn't, then go back and work on your patch some more, then re-compile and re-deploy, and test again, until the program does what you'd like it to do and all tests pass.<br />
<br />
<br />
<br />
== Submit a patch ==<br />
Once you're happy with your patch and have verified that it does what you want, it's time to '''generate a diff.''' A diff is a textual representation of the differences between original versions of the files you changed, and the new ones you've produced. You can generate a diff by entering thesource repository and running <code>git diff</code>, but we recommend using the <code>arc</code> tool, which will generate a diff and submit it for review very quickly and easily! You can learn how to set it up [https://community.kde.org/Infrastructure/Phabricator#Using_Arcanist_to_post_patches here].<br />
<br />
KDE uses [https://phabricator.kde.org Phabricator] for patch submission and review. [[Infrastructure/Phabricator|Learn more about how to submit a patch with Phabricator]].<br />
<br />
== Communicate with the team ==<br />
There are several ways to get in touch with KDE developers, either generally or for a specific project. The three most important communications channels are:<br />
* The [https://webchat.kde.org/#/room/#kde-devel:kde.org #kde-devel] channel on [[Matrix]] or the freenode [[Internet Relay Chat | IRC]], which is where KDE developers chat in real time about their work.<br />
* The [https://mail.kde.org/mailman/listinfo/kde-devel kde-devel mailing list] is the primary development mailing list. [http://kde.org/support/#mailinglists Learn more about mailing lists].<br />
<br />
Both of these are general KDE development communication channels, and you may get directed to a more appropriate place for the project you are interested in. There is a [http://www.kde.org/mailinglists/ list of mailing lists] if you want to find a mailing list for a specific team directly. Many teams have their own [[Telegram]] rooms, too.<br />
<br />
You can also try looking for the team's section on the [[Main Page]] of this wiki. Many teams have information there for new contributors.<br />
<br />
<br />
<br />
== Next steps ==<br />
Sharpen your skills by going through the [https://techbase.kde.org/Development/Tutorials KDE development tutorials]. And try out [http://www.kdevelop.org KDevelop], the KDE IDE.<br />
<br />
After you have had several drama-free patches accepted, a KDE developer is likely to suggest you get a [[Infrastructure/Get a Developer Account|Developer account]], which will allow you to commit directly to KDE projects. With very few limits on where you can commit, you will be expected to act responsibly. At this point, congratulations! You are officially a KDE developer!<br />
<br />
You may also want to set up a more customized development environment. See [[Guidelines and HOWTOs/Build from source]].<br />
<br />
<br />
<br />
== Best practices & other useful information==<br />
* [[Guidelines_and_HOWTOs/Debugging|Debugging]]<br />
* [[Guidelines and HOWTOs/UnitTests|Unit testing]]<br />
* [[Guidelines and HOWTOs/Code_Checking| Validating code]]<br />
* [[Guidelines and HOWTOs/API Documentation|Writing API documentation]] (related: https://api.kde.org).<br />
* [[Guidelines_and_HOWTOs/Wayland_Porting_Notes|Writing Wayland-friendly code]]<br />
* [[Frameworks/Porting_Notes|Porting from KDE 4 to Frameworks 5]]<br />
* [[Guidelines_and_HOWTOs/Making_apps_run_uninstalled|Running applications and their unit tests without first installing them]]<br />
* [https://community.kde.org/Infrastructure/Phabricator#How_to_review_someone_else.27s_patch How to review patches]</div>GB 2https://community.kde.org/index.php?title=Neon/Docker&diff=83422Neon/Docker2019-03-16T08:20:10Z<p>GB 2: </p>
<hr />
<div>= KDE neon on Docker =<br />
<br />
Do you want to test KDE applications from master without installing KDE neon Dev Unstable edition. Maybe you have Dev Unstable edition installed but want to develop on your stable branch. Maybe you like your larswm setup but wonder if Plasma is the desktop for you and are looking for an easy way to test it out. KDE neon Docker images are the solution to quickly give you access to use or develop another branch without reinstalling your system or spending hours compiling.<br />
<br />
https://c1.staticflickr.com/1/747/32111280196_9b2875a809_b.jpg<br />
The above screenshot shows a computer running its normal Plasma desktop with three KDE neon Docker containers. One is a full Plasma session of KDE neon User Edition, one is a full Plasma session of KDE neon Developer Unstable edition and one is a single app from Developer Stable edition running Okular.<br />
<br />
KDE neon Docker Images comes in two variants each with the same Plasma editions as our archives. [https://hub.docker.com/r/kdeneon/plasma/ Plasma images (~2GB)] come with the same software as our installable ISOs, Plasma and minimal applications. [https://hub.docker.com/r/kdeneon/all All Applications images (~4GB)] come with all applications built on KDE neon.<br />
<br />
Flavours available are: ''kdeneon/plasma:dev-unstable'', ''kdeneon/plasma:dev-stable'', ''kdeneon/plasma:user'', ''kdeneon/plasma:user-lts'' (and the same for kdeneon/all)<br />
<br />
Default user is ''neon'' and password is blank. The user has password-free sudo access.<br />
<br />
To give it a try first set up Docker as you would for your distro. For Ubuntu distros that means running:<br />
{{Input|1=<nowiki><br />
sudo apt install docker.io xserver-xephyr<br />
sudo usermod -aG docker $(whoami)<br />
newgrp docker<br />
systemctl unmask docker.service<br />
systemctl unmask docker.socket<br />
systemctl start docker.service</nowiki>}}<br />
<br />
This will download the latest dev-unstable image from Docker Hub:<br />
{{Input|1=<nowiki><br />
docker pull kdeneon/plasma:dev-unstable</nowiki>}}<br />
<br />
The neondocker script lets you run Neon docker images easily, this is pre-installed on recent KDE <br />
neon installs but works on any distro<br />
<br />
{{Input|1=<nowiki><br />
wget https://cgit.kde.org/docker-neon.git/plain/neondocker/neondocker.rb -O neondocker<br />
chmod +x neondocker<br />
sudo gem install docker-api<br />
sudo apt-get install ruby-dev</nowiki>}}<br />
<br />
By default it will run a full session inside a Xephyr window.<br />
{{Input|1=<nowiki><br />
./neondocker</nowiki>}}<br />
<br />
Or you can tell it to run a single app<br />
{{Input|1=<nowiki><br />
./neondocker okular</nowiki>}}<br />
<br />
This will give you a Bash prompt, you can code as you would on your host machine and run X apps. Type ''exit'' to quit, the ~/src directory will be preserved on your host machine.<br />
<br />
For a Wayland session running in a window under either X or Wayland run. (This seems to stop any more X apps running though, spooky.)<br />
<br />
{{Input|1=<nowiki><br />
./neondocker -w</nowiki>}}<br />
<br />
* For the container to persist after you have closed the window add -k<br />
* To update to the latest build add -p<br />
* To use the Neon All build which has more apps add -a<br />
* To run a different edition add -e user/user-lts/dev-stable<br />
<br />
You can also commit your Docker images if you make changes you would like to come back to such as installing applications. For more information on using Docker see [https://docs.docker.com/engine/userguide/ Docker Engine user guide.]<br />
<br />
For an interactive session where you have access to your coding directory ~/src run<br />
<br />
{{Input|1=<nowiki><br />
xhost +<br />
docker run -ti -v /tmp/.X11-unix:/tmp/.X11-unix -v ~/src:/home/neon/src -e DISPLAY=:0 kdeneon/plasma:dev-unstable bash</nowiki>}}</div>GB 2https://community.kde.org/index.php?title=Neon/Docker&diff=83421Neon/Docker2019-03-16T08:17:25Z<p>GB 2: </p>
<hr />
<div>= KDE neon on Docker =<br />
<br />
Do you want to test KDE applications from master without installing KDE neon Dev Unstable edition. Maybe you have Dev Unstable edition installed but want to develop on your stable branch. Maybe you like your larswm setup but wonder if Plasma is the desktop for you and are looking for an easy way to test it out. KDE neon Docker images are the solution to quickly give you access to use or develop another branch without reinstalling your system or spending hours compiling.<br />
<br />
https://c1.staticflickr.com/1/747/32111280196_9b2875a809_b.jpg<br />
The above screenshot shows a computer running its normal Plasma desktop with three KDE neon Docker containers. One is a full Plasma session of KDE neon User Edition, one is a full Plasma session of KDE neon Developer Unstable edition and one is a single app from Developer Stable edition running Okular.<br />
<br />
KDE neon Docker Images comes in two variants each with the same Plasma editions as our archives. [https://hub.docker.com/r/kdeneon/plasma/ Plasma images (~2GB)] come with the same software as our installable ISOs, Plasma and minimal applications. [https://hub.docker.com/r/kdeneon/all All Applications images (~4GB)] come with all applications built on KDE neon.<br />
<br />
Flavours available are: ''kdeneon/plasma:dev-unstable'', ''kdeneon/plasma:dev-stable'', ''kdeneon/plasma:user'', ''kdeneon/plasma:user-lts'' (and the same for kdeneon/all)<br />
<br />
Default user is ''neon'' and password is blank. The user has password-free sudo access.<br />
<br />
To give it a try first set up Docker as you would for your distro. For Ubuntu distros that means running:<br />
{{Input|1=<nowiki><br />
sudo apt install docker.io xserver-xephyr<br />
sudo usermod -aG docker $(whoami)<br />
newgrp docker<br />
systemctl unmask docker.service<br />
systemctl unmask docker.socket<br />
systemctl start docker.service<br />
docker pull kdeneon/plasma:dev-unstable</nowiki>}}<br />
This will download the latest dev-unstable image from Docker Hub.<br />
<br />
The neondocker script lets you run Neon docker images easily, this is pre-installed on recent KDE <br />
neon installs but works on any distro<br />
<br />
{{Input|1=<nowiki><br />
wget https://cgit.kde.org/docker-neon.git/plain/neondocker/neondocker.rb -O neondocker<br />
chmod +x neondocker<br />
sudo gem install docker-api<br />
sudo apt-get install ruby-dev</nowiki>}}<br />
<br />
By default it will run a full session inside a Xephyr window.<br />
{{Input|1=<nowiki><br />
./neondocker</nowiki>}}<br />
<br />
Or you can tell it to run a single app<br />
{{Input|1=<nowiki><br />
./neondocker okular</nowiki>}}<br />
<br />
This will give you a Bash prompt, you can code as you would on your host machine and run X apps. Type ''exit'' to quit, the ~/src directory will be preserved on your host machine.<br />
<br />
For a Wayland session running in a window under either X or Wayland run. (This seems to stop any more X apps running though, spooky.)<br />
<br />
{{Input|1=<nowiki><br />
./neondocker -w</nowiki>}}<br />
<br />
* For the container to persist after you have closed the window add -k<br />
* To update to the latest build add -p<br />
* To use the Neon All build which has more apps add -a<br />
* To run a different edition add -e user/user-lts/dev-stable<br />
<br />
You can also commit your Docker images if you make changes you would like to come back to such as installing applications. For more information on using Docker see [https://docs.docker.com/engine/userguide/ Docker Engine user guide.]<br />
<br />
For an interactive session where you have access to your coding directory ~/src run<br />
<br />
{{Input|1=<nowiki><br />
xhost +<br />
docker run -ti -v /tmp/.X11-unix:/tmp/.X11-unix -v ~/src:/home/neon/src -e DISPLAY=:0 kdeneon/plasma:dev-unstable bash</nowiki>}}</div>GB 2https://community.kde.org/index.php?title=Guidelines_and_HOWTOs/Build_from_source/Install_the_dependencies&diff=83420Guidelines and HOWTOs/Build from source/Install the dependencies2019-03-16T07:51:50Z<p>GB 2: </p>
<hr />
<div>In the following we give the dependencies to install. However it might change and this page might be quickly outdated. If some packages fail to install, you can try removing the ones that don't work from the list.<br />
<br />
Reading the <code>CMakeLists.txt</code> of the packages you want to install should help you finding what you '''really''' need to install. Or read the error logs (see below).<br />
<br />
If you need help, see https://community.kde.org/Get_Involved#Getting_in_touch<br />
<br />
== All dependencies ==<br />
<br />
=== KDE neon, Debian, Ubuntu, Kubuntu === <br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo apt install libkf5activities-dev libkf5activitiesstats-dev libkf5akonadi-dev libkf5akonadicalendar-dev libkf5akonadicontact-dev libkf5akonadimime-dev libkf5akonadinotes-dev libkf5akonadisearch-dev libkf5alarmcalendar-dev libkf5archive-dev libkf5attica-dev libkf5auth-dev baloo-kf5-dev libkf5baloowidgets-dev libkf5blog-dev libkf5bluezqt-dev libkf5bookmarks-dev libkf5calendarcore-dev libkf5calendarsupport-dev libkf5calendarutils-dev libkf5cddb-dev libkf5codecs-dev libkf5compactdisc-dev libkf5completion-dev libkf5config-dev libkf5configwidgets-dev libkf5contacteditor-dev libkf5contacts-dev libkf5coreaddons-dev libkf5crash-dev libkf5dbusaddons-dev libkf5dnssd-dev libkf5declarative-dev kgendesignerplugin libkf5doctools-dev libkf5emoticons-dev libkf5eventviews-dev libkf5filemetadata-dev libkf5followupreminder-dev libkf5style-dev libkf5globalaccel-dev libkf5grantleetheme-dev libkf5gravatar-dev libkf5guiaddons-dev libkf5holidays-dev libkf5i18n-dev libkf5imap-dev libkf5iconthemes-dev libkf5identitymanagement-dev libkf5idletime-dev libkf5incidenceeditor-dev kinit-dev libkf5itemmodels-dev libkf5itemviews-dev libkf5kjs-dev libkf5jobwidgets-dev libkf5jsembed-dev libkf5kcmutils-dev libkf5kdelibs4support-dev libkf5kdegames-dev libkf5kdcraw-dev libkf5kexiv2-dev libkf5kgeomap-dev libkf5khtml-dev libkf5kio-dev libkf5kmahjongglib-dev libkf5kaddressbookgrantlee-dev libkf5kaddressbookimportexport-dev libkf5kdepimdbusinterfaces-dev libkf5kipi-dev kirigami2-dev libkf5konq-dev libkf5kontactinterface-dev kross-dev libkf5ldap-dev libkf5ksieve-dev libkf5libkdepim-dev libkf5libkleo-dev libkf5mailcommon-dev libkf5mailimporter-dev libkf5mailtransport-dev libkf5mbox-dev libkf5mediaplayer-dev libkf5mediawiki-dev libkf5messagecomposer-dev libkf5messagecore-dev libkf5messagelist-dev libkf5messageviewer-dev libkf5mime-dev libkf5mimetreeparser-dev modemmanager-qt-dev libkf5networkmanagerqt-dev libkf5newstuff-dev libkf5notifications-dev libkf5notifyconfig-dev libkf5package-dev libkf5parts-dev libkf5people-dev libkf5pimcommon-dev libkf5pimtextedit-dev libkf5plasma-dev libkf5plotting-dev libkf5prison-dev libkf5pty-dev libkf5purpose-dev libkf5qqc2desktopstyle-dev libkf5runner-dev libkf5sane-dev libkf5screen-dev libkf5sendlater-dev libkf5service-dev libkf5solid-dev libkf5sonnet-dev libkf5su-dev libkf5syndication-dev libkf5syntaxhighlighting-dev libkf5sysguard-dev libkf5templateparser-dev libkf5texteditor-dev libkf5textwidgets-dev libkf5threadweaver-dev libkf5tnef-dev libktorrent-dev libkf5unitconversion-dev libkf5vkontakte-dev libkf5wallet-dev libkf5wayland-dev libkf5webengineviewer-dev libkf5webkit-dev libkf5widgetsaddons-dev libkf5windowsystem-dev libkf5xmlgui-dev libkf5xmlrpcclient-dev autoconf bison breeze-dev build-essential bzr cmake cmake-data debhelper dh-apparmor doxygen extra-cmake-modules flex fontforge gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 git gperf icu-devtools kded5-dev kscreenlocker-dev kwin-dev libaccounts-glib-dev libappstreamqt-dev libapr1 libaprutil1 libarchive-dev libasound2-dev libattr1-dev libboost-dev libbz2-dev libcanberra-dev libclang-3.9-dev libclang-dev libcln-dev libcups2-dev libegl1-mesa-dev libepoxy-dev libexiv2-dev libfakekey-dev libfontconfig1-dev libfreetype6-dev libgconf2-dev libgcrypt20-dev libgif-dev libglib2.0-dev libgmp-dev libgmpxx4ldbl libgpgme11-dev libgps-dev libgrantlee5-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgtk-3-dev libhunspell-dev libibus-1.0-dev libicu-dev libjpeg8-dev libjpeg-dev libjpeg-turbo8-dev libjson-perl libkaccounts-dev liblcms2-dev liblmdb-dev libmlt-dev libmlt++-dev libnm-dev libnm-glib-dev libnm-util-dev libpackagekitqt5-dev libpam-dev libphonon4qt5-dev libphonon4qt5experimental-dev libpng-dev libpolkit-agent-1-dev libpolkit-backend-1-dev libpolkit-gobject-1-dev libpulse-dev libpwquality-dev libqalculate-dev libqca-qt5-2-dev libqimageblitz-dev libqrencode-dev libqt5sensors5 libqt5sensors5-dev libqt5svg5-dev libqt5texttospeech5-dev libqt5webkit5-dev libqt5x11extras5-dev libqt5xmlpatterns5-dev libraw1394-dev libscim-dev libserf-1-1 libsm-dev libssl-dev libsvn1 libtiff5-dev libudev-dev libusb-dev libvlccore-dev libvlc-dev libvncserver-dev libwww-perl libx11-dev libx11-xcb-dev libxapian-dev libxcb1-dev libxcb-composite0-dev libxcb-cursor0 libxcb-cursor-dev libxcb-damage0-dev libxcb-dpms0 libxcb-dpms0-dev libxcb-ewmh2 libxcb-ewmh-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-record0-dev libxcb-render-util0-dev libxcb-res0 libxcb-res0-dev libxcb-screensaver0 libxcb-screensaver0-dev libxcb-shm0-dev libxcb-util0-dev libxcb-xf86dri0 libxcb-xf86dri0-dev libxcb-xinerama0 libxcb-xinerama0-dev libxcb-xkb-dev libxcb-xtest0-dev libxcb-xv0 libxcb-xv0-dev libxcb-xvmc0 libxcb-xvmc0-dev libxcursor-dev libxft-dev libxi-dev libxkbfile-dev libxml2-dev libxml-parser-perl libxrender-dev libxslt1-dev libxslt-dev llvm llvm-3.9 modemmanager-dev network-manager-dev openbox oxygen-icon-theme perl-modules pkg-config pkg-kde-tools plasma-workspace-dev po-debconf qml-module-qtquick* qt5-qmake qtbase5-dev qtbase5-dev-tools qtbase5-private-dev qtdeclarative5-dev qtquickcontrols2-5-dev qtscript5-dev qttools5-dev qtxmlpatterns5-dev-tools shared-mime-info subversion texinfo xauth xcb-proto xserver-xorg-dev xserver-xorg-input-evdev-dev xserver-xorg-input-libinput-dev xserver-xorg-input-synaptics-dev xsltproc xvfb libkeduvocdocument-dev qtmultimedia5-dev<br />
</pre><br />
<br />
== For the frameworks ==<br />
<br />
=== Arch, Antergos, Manjaro === <br />
All the dependencies used for building frameworks can be installed by running:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo pacman -Sy --needed phonon-qt5 qt5-webkit qt5-script qt5-svg qt5-tools qt5-x11extras enchant jasper openexr libutempter docbook-xsl shared-mime-info giflib libxss upower udisks2 bzr git doxygen perl-json perl-libwww perl-xml-parser perl-io-socket-ssl akonadi xorg-server-devel libpwquality fontforge eigen libfakekey qca-qt5 xapian-core xsd gperf perl-yaml-syck intltool kdesdk<br />
</pre><br />
<br />
<br />
=== Fedora=== <br />
All the dependencies used for building frameworks can be installed by running:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo dnf install perl-IPC-Cmd perl-JSON-PP perl-YAML-Syck qt5-devel qt5-qtquickcontrols2-devel polkit-devel gperf libxslt-devel libxml2-devel kf5-kconfigwidgets-devel libXrender-devel qrencode-devel xcb*-devel flex systemd-devel giflib-devel libjpeg-turbo-devel NetworkManager-glib-devel NetworkManager-libnm-devel ModemManager-devel libattr-devel openssl-devel libSM-devel wayland-devel lmdb-devel libaccounts-qt5-devel libaccounts-glib-devel signon-devel<br />
</pre><br />
<br />
<br />
=== openSUSE === <br />
<br />
==== openSUSE Leap 15 (Argon) ====<br />
<br />
Updated 24 June 2018 (likely incomplete)<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;">$ sudo zypper si -d libqt5-qtbase<br />
$ sudo zypper in libbz2-devel libxslt-devel libxml2-devel shared-mime-info oxygen-icon-theme giflib-devel vlc-devel doxygen gstreamer-devel gstreamer-plugins-base-devel docbook-xml-slides docbook-xsl-stylesheets xcb-util-keysyms-devel perl-JSON boost-devel libxcb-devel libXrender-devel xcb-util-wm-devel xcb-util-devel xcb-util-image-devel gettext-tools libepoxy-devel<br />
$ sudo zypper in gtk3-devel<br />
$ sudo zypper in grantlee5-devel kactivities5-devel plasma-framework-devel plasma5-addons-devel plasma5-workspace-devel libQt5Concurrent-devel libQt5DBus-devel libQt5PrintSupport-devel xcb-util-cursor-devel libqt5-qtx11extras-devel xcb-proto-devel git-core</pre><br />
<br />
==== openSUSE 42.1 ====<br />
<br />
Install these packages (including the recommended packages):<br />
<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo zypper install patterns-openSUSE-devel_kde patterns-openSUSE-devel_kde_frameworks git-core bzr ninja \<br />
gettext-tools libqt5-qttools libgypsy0 libqt5-creator libqt5-linguist libqt5-qtbase-common-devel libqt5-qtbase-devel libqt5-qtbase-examples libqt5-qtdeclarative-devel libqt5-qtdeclarative-examples libqt5-qtdeclarative-tools libqt5-qtdoc libqt5-qtgraphicaleffects libqt5-qtimageformats libqt5-qtimageformats-devel libqt5-qtmultimedia-devel libqt5-qtmultimedia-examples libqt5-qtquick1-devel libqt5-qtquickcontrols libqt5-qtscript-devel libqt5-qtscript-examples libqt5-qtsvg-devel libqt5-qttools-devel libqt5-qtx11extras-devel libqt5-qtxmlpatterns-devel libqt5-qtxmlpatterns-examples libQt5CLucene5 libQt5Concurrent-devel libQt5Concurrent5 libQt5Core-devel libQt5Core5 libQt5DBus-devel libQt5DBus5 libQt5Declarative5 libQt5Designer5 libQt5DesignerComponents5 libQt5Gui-devel libQt5Gui5 libQt5Help5 libQt5Multimedia5 libQt5Network-devel libQt5Network5 libQt5OpenGL-devel libQt5OpenGL5 libQt5Positioning5 libQt5PrintSupport-devel libQt5PrintSupport5 libQt5Script5 libQt5Sensors5 libQt5Sql-devel libQt5Sql5 libQt5Sql5-mysql libQt5Sql5-postgresql libQt5Sql5-sqlite libQt5Sql5-unixODBC libQt5Svg5 libQt5Test-devel libQt5Test5 libQt5WebKit5 libQt5WebKitWidgets5 libQt5Widgets-devel libQt5Widgets5 libQt5X11Extras5 libQt5Xml-devel libQt5Xml5 libQt5XmlPatterns5 libQtQuick5 libQt5WebKitWidgets-devel libqt5-qtbase-private-headers-devel \<br />
xcb-util-keysyms-devel docbook-xsl-stylesheets doxygen polkit-devel libepoxy-devel boost-devel libXcursor-devel libSM-devel giflib-devel libaccounts-qt5-devel gtk3-devel libpng16-devel fltk-devel libopenssl-devel libattr-devel ModemManager-devel NetworkManager-devel wayland-devel lmdb-devel xcb-proto-devel xcb-util-image-devel xcb-util-cursor-devel xcb-util-devel gtk2-devel libqca-qt5-devel libpwquality-devel libical-devel PackageKit-Qt5-devel pam-devel \<br />
bison flex libqt5-qttools-doc<br />
</pre><br />
<br />
* OPEN ISSUES:<br />
** on my system 'ninja-1.6.0' was installed and when using 'custom-build-command ninja' in the kdesrc-buildrc below, the build of modules fails), maybe see https://bugs.kde.org/show_bug.cgi?id=331654<br />
<br />
* Failing modules (of more than 200 modules)<br />
** phonon-vlc, phonon-gstreamer, plasma-pa (PulseAudio missing), kdevplatform, plasma-desktop, kaccounts-integration, kaccounts-mobile, gwenview, kdevelop, libksane, skanlite, ... (see below for solutions)<br />
<br />
==== openSuSE Tumbleweed ====<br />
This more complete list (which probably works for OpenSuSE 42.1 as well) allows to compile everything that kdesrc-build's default setup (kf5-qt5-build-include) compiles. Note that it doesn't contain Qt or Qt-based libs, you need that on top, or to compile your own Qt (and then include custom-qt5-libs-build-include in kdesrc-buildrc).<br />
<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo zypper install patterns-kde-devel_kde_frameworks patterns-kde-devel_qt5 make cmake extra-cmake-modules ccache git bzr antlr antlr-java antlr-devel astyle autoconf flac gettext-tools intltool libMagick++-devel libplotter2 libtool pstoedit subversion-devel subversion-tools xscreensaver-data libxslt-devel docbook-xsl-stylesheets libpoppler-devel aspell-devel enchant-devel libidn-devel polkit-devel update-desktop-files atk-devel bluez-devel fdupes gdk-pixbuf-devel gtk3-devel libcanberra-devel libexiv2-devel libpulse-devel gtk-doc libsmbclient-devel libssh-devel libusb-1_0-devel libusb-compat-devel libxine-devel libxklavier16 libxklavier-devel xwininfo NetworkManager-devel ModemManager-devel libssh2-devel openslp-devel pango-devel xz-devel libgssglue-devel libjasper-devel libudev-devel utempter-devel libbotan-devel libmysqlclient-devel postgresql-devel libmysqld-devel cgdb gstreamer-plugins-base-devel gstreamer-devel libsamplerate-devel audiofile-devel flac-devel libvorbis-devel fftw3-devel libmusicbrainz-devel cdparanoia-devel flex parted-devel libopus-devel giflib-devel pciutils-devel pam-devel boost-devel libv4l-devel cyrus-sasl-devel libgpgme-devel libical-devel sane-backends-devel libgphoto2-devel doxygen makeinfo LibVNCServer-devel speex-devel libotr-devel libmms-devel libsndfile-devel mpfr-devel libzeitgeist-devel gperf libcap-devel libarchive-devel telepathy-logger-devel libpwquality-devel opencv-devel glew-devel libxapian-devel libblkid-devel libatasmart-devel libiodbc-devel xcb-util-wm-devel xcb-util-renderutil-devel xcb-util-keysyms-devel xcb-util-image-devel xcb-util-cursor-devel libxkbcommon-devel vlc-devel libicu-devel icu-data libkolabxml-devel xsd libffi-devel-gcc5 perl-Tie-IxHash perl-JSON perl-Text-CSV perl-YAML-Syck hunspell-devel ffmpeg-devel libacl-devel libnl-devel liboauth-devel libepub-devel libicecream-devel docbook2X liblcms2-devel libeigen2-devel eigen3-devel graphviz-devel liboyranos-devel libraw-devel xf86-input-wacom-devel libwacom-devel xf86-input-synaptics-devel xorg-x11-server-sdk libdiscid-devel libmlt++-devel libdmtx-devel qrencode-devel libfunambol-devel libmtp-devel at-spi2-core-devel openal-soft-devel python-sip-devel libXcm-devel libspeechd-devel libraw-devel ModemManager-devel farstream-devel tesseract-ocr-devel mtdev-devel fontforge-devel cups-devel libepoxy-devel openconnect-devel lmdb-devel libpgf-devel llvm-devel llvm-clang-devel binutils-devel libdwarf-devel libelf-devel plymouth-devel libfakekey-devel python-GitPython php php-curl telepathy-mission-control-devel libaccounts-glib-devel<br />
</pre><br />
<br />
== For Plasma ==<br />
* Arch/Antergos/Manjaro: <code>sudo pacman -S plasma-desktop plasma-workspace kwin</code><br />
* Fedora: <code>sudo dnf builddep plasma-desktop plasma-workspace kwin</code><br />
* KDE neon/Kubuntu/Ubuntu/Debian <code>sudo apt build-dep plasma-desktop plasma-workspace kwin</code><br />
* openSUSE Leap & Tumbleweed: <code>sudo zypper si -d plasma-desktop plasma-workspace kwin</code><br />
<br />
Any other dependencies can be figured out and installed as you continue building the modules one by one.<br />
<br />
== Quick fixes for package manager errors ==<br />
The above lists might not always be working out of the box on your specific distribution or might be out of date for individual packages. In many cases removing single packages from the lists above still allows you to build many KDE frameworks and applications.<br />
<br />
In case it is a package added by a regex, you can exclude the specific package by a workaround using sed. Let us assume for an example that we want to install "libkf5.*-dev" on deb-based systems but have uninstallable packages libkf5example1-dev, libkf5example2-dev. Then we install all "libkf5.*-dev" packages excluding libkf5example1-dev and libkf5example2-dev through:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;">$ sudo apt install $(apt-cache search -n "libkf5.*-dev" | sed 's/ - .*//' | sed '/libkf5example1-dev/d' | sed '/libkf5example2-dev/d')</pre></div>GB 2https://community.kde.org/index.php?title=File:Mascot_konqi-dev-kde.png&diff=83236File:Mascot konqi-dev-kde.png2019-03-08T08:45:33Z<p>GB 2: GB 2 uploaded a new version of File:Mascot konqi-dev-kde.png</p>
<hr />
<div>Konqi and KDE Oxygen logo</div>GB 2https://community.kde.org/index.php?title=File:Mascot_konqi-dev-kde.png&diff=83235File:Mascot konqi-dev-kde.png2019-03-08T07:09:00Z<p>GB 2: GB 2 uploaded a new version of File:Mascot konqi-dev-kde.png</p>
<hr />
<div>Konqi and KDE Oxygen logo</div>GB 2https://community.kde.org/index.php?title=File:Mascot_konqi-dev-kde.png&diff=83234File:Mascot konqi-dev-kde.png2019-03-08T07:06:09Z<p>GB 2: GB 2 uploaded a new version of File:Mascot konqi-dev-kde.png</p>
<hr />
<div>Konqi and KDE Oxygen logo</div>GB 2https://community.kde.org/index.php?title=File:Mascot_konqi-dev-kde.png&diff=83233File:Mascot konqi-dev-kde.png2019-03-08T07:02:15Z<p>GB 2: GB 2 uploaded a new version of File:Mascot konqi-dev-kde.png</p>
<hr />
<div>Konqi and KDE Oxygen logo</div>GB 2https://community.kde.org/index.php?title=Promo/Material/Mascots&diff=83232Promo/Material/Mascots2019-03-08T03:29:28Z<p>GB 2: </p>
<hr />
<div>[[File:Mascot konqi-commu-journalist.png|thumbnail|Konqi is helping with the news!]]<br />
'''Konqi''' is KDE's mascot. Whenever a little fun is needed, Konqi and his colorful KDE dragon friends are here to help! This page contains many artworks that features Konqi and other KDE dragons, as well as guidelines to request and upload new artworks. HTML codes are provided to make webpage implementation easier.<br />
<br />
<br />
'''Want to learn more about Konqi and other KDE dragons?''' Go to [[Konqi|Konqi's page]]!<br />
<br />
=Introduction=<br />
Tyson Tan is responsible for the base design of the current Konqi and other KDE dragons. This page also contains artworks by many other artists.<br />
<br />
*Credit is given to all artists.<br />
*Link is provided to each of their websites.<br />
*When an artist have multiple artworks listed, a new section will be created for them.<br />
<br />
===Artworks by Tyson Tan===<br />
<br />
'''General specifications:'''<br />
*sRGB color space.<br />
*Sized around A4 300 dpi, ready for high-quality printing.<br />
*PNG files with transparent background, easy to be used with any background and surface.<br />
*All made with [[Krita]].<br />
*Licensed under [https://en.wikipedia.org/wiki/Creative_Commons_By_Attribution Creative Commons BY-SA], [https://en.wikipedia.org/wiki/GNU_Free_Documentation_License GFDL] and [https://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License LGPL].<br />
*In case of CC-BY-SA, no need to credit the artist when it is awkward to do so.<br />
<br />
===Requesting a new artwork===<br />
<br />
You may request new KDE dragon artworks as well as to alter the existing ones. The artist can be contacted by:<br />
*twitter: twitter.com/TysonTanX<br />
*email: tysontan@mail.com <br />
<br />
===Uploading your own artwork===<br />
<br />
Thank you very much for helping KDE and making the KDE dragon family larger and more diverse! Please read the guidelines below.<br />
<br />
'''Guidelines:'''<br />
*Ideally, the artwork should have similar specification as Tyson Tan's.<br />
*You don't have to follow the original design strictly. <br />
*The artwork(s) must be your own work.<br />
*By uploading your artwork(s), you agree to licensed them under [https://en.wikipedia.org/wiki/Creative_Commons_By_Attribution Creative Commons BY-SA], [https://en.wikipedia.org/wiki/GNU_Free_Documentation_License GFDL] and [https://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License LGPL].<br />
*In case you based on other artwork(s) to create yours, the source artwork must be (either one below):<br />
*#Not copyrighted. For example: [https://en.wikipedia.org/wiki/Public_domain Public domain], [https://wiki.creativecommons.org/wiki/CC0 Creative Commons Zero].<br />
*#Anything [https://en.wikipedia.org/wiki/Creative_Commons_By_Attribution Creative Commons BY-SA], [https://en.wikipedia.org/wiki/GNU_Free_Documentation_License GFDL], [https://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License LGPL].<br />
*# Any compatible license of the above.<br />
<br />
<br />
'''Method A:''' Contact the artist <br />
*twitter: twitter.com/TysonTanX<br />
*email: tysontan@mail.com <br />
<br />
<br />
'''Method B:''' Do it by yourself<br />
#Use this method if you are familiar with KDE Wikis, or willing to try.<br />
#[https://identity.kde.org/index.php?r=registration/index Register] a [https://identity.kde.org/ KDE Identity]<br />
#[https://community.kde.org/Special:PhabricatorLogin/redirect Login with Phabricator] on [https://community.kde.org KDE Community Wiki]<br />
#[[Special:Upload|Upload your file]]<br />
#[https://community.kde.org/index.php?title=Promo/Material/Mascots&action=edit Edit this page] and insert your artwork to Artworks by other artist sections below.<br />
<br />
<br />
'''Notice:''' Please understand that not all uploaded artworks will be kept on this page, this is to ensure a certain level of artistic quality.<br />
<br />
===A Message for KDE.News ("the Dot")===<br />
<br />
In general, people appreciate a little visual stimulation when reading an article. You can do that by adding an abstract artwork to your article. <br />
<br />
Abstract artwork is what displays on the side of the first paragraph of an article. Have a look at [https://en.wikipedia.org/wiki/Konqi Konqi's Wikipedia page] and you'll get the idea. Normally, you can use a screenshot, a photos or an icon in that corner. But there are times when you have nothing to work with, and that is when Konqi and other KDE dragons come to rescue!<br />
<br />
For Dot, you can click the "edit summary" button to make adjustment to the abstract text. Make sure both the abstract text and the abstract artwork show up on the front page.<br />
<br />
=Overview gallery=<br />
<br />
This section lists the thumbnails of the available artworks, each with suggestions or their usage, for quick overview.<br />
<br />
===Artworks by Tyson Tan===<br />
'''Tyson Tan''': [https://tysontan.com/ Website].<br />
<gallery><br />
File:Mascot konqi.png|Default Konqi: Anything.<br />
File:Mascot konqi-dev-kde.png|Konqi and KDE logo: KDE specific, logo.<br />
File:Mascot konqi-app-dev-katie.png|Katie and laptop: KDE women, mobile device, programming.<br />
File:Mascot konqi-dev-qt.png|Konqi and Qt: Anything Qt.<br />
File:Mascot konqi-base-framework.png|Konqi and KDE Frameworks: KDE Frameworks, Platforms, and other infrastructures.<br />
File:Mascot konqi-base-plasma.png|Konqi and Plasma Desktop: Plasma, window manager, OpenGL, touch.<br />
File:Mascot konqi-app-dev.png|Konqi and his dev PC: KDE development software, multi-screen, programming.<br />
File:Mascot konqi-app-game.png|Konqi and poker: Games<br />
File:Mascot konqi-app-graphics.png|Konqi painting: Graphics and creative applications.<br />
File:Mascot konqi-app-hardware.png|Konqi and hardware: Hardware, CPU/GPU multi-thread load-balancing.<br />
File:Mascot konqi-app-internet.png|Konqi and internet: Internet, web browsers, IRC, instant messenger, networking.<br />
File:Mascot konqi-app-multimedia.png|Konqi and guitar: Music, multimedia, mixer, audio.<br />
File:Mascot konqi-app-office.png|Konqi in office: Office productivity, Calligra Suite.<br />
File:Mascot konqi-app-presentation.png|Konqi giving a presentation: Presentation, education, teaching, mentoring.<br />
File:Mascot konqi-app-science.png|Konqi in the lab: Science software, experimental features.<br />
File:Mascot konqi-app-system.png|Konqi and the gear: System settings, accessibility, KDE system parts.<br />
File:Mascot konqi-app-utilities.png|Konqi the engineer: Utility software, engineering, tools, under construction.<br />
File:Mascot konqi-commu-akademy.png|Konqi on Akademy: Akademy, lecture, presentation.<br />
File:Mascot konqi-commu-journalist.png|Konqi interviewing: Event reporting, media coverage, journalist.<br />
File:Mascot konqi-commu-mail.png|Konqi and mails: Email client, maillist, communication.<br />
File:Mascot konqi-commu-randa.png|Konqi and Randa Meeting: Randa Meeting, alps.<br />
File:Mascot konqi-support-bughunt.png|Konqi hunting bugs: Bug report, sprints.<br />
File:Mascot konqi-support-business.png|Konqi and serious business: KDE.e.V., financial, licensing, law.<br />
File:Mascot konqi-support-document.png|Konqi and documentations: help, support, documentations, books, literature.<br />
File:Mascot konqi-support-search.png|Konqi searching in archive: Search, archive, documentations.<br />
File:Mascot 20140702 konqui-group.png|Konqi and his colorful friends: collective, community, international, cooperation, diversity.<br />
File:Kde dragons.png|The KDE dragons: collective, community, international, cooperation. diversity.<br />
File:Kde.png|The early concept of the current KDE dragons.<br />
</gallery><br />
<br />
===Artworks by Timothée Giet===<br />
'''Timothée Giet (Animtim)''': [http://timotheegiet.com/ Website].<br />
<gallery><br />
File:Flying Konqi.png|Flying Konqi: Anything.<br />
File:Konqi-Timothée-Giet-Postcard01-present.png|Konqi and present: Winter, Christmas, present, at night.<br />
File:Konqi-Timothée-Giet-Postcard02-freedom.png|Konqi experiences freedom: Winter, freedom, at night.<br />
File:Konqi-Timothée-Giet-Postcard03-christmas.png|Konqi and Christmas tree decorations: Winter, Christmas, at night.<br />
</gallery><br />
<br />
===Artworks by other artists===<br />
<gallery><br />
File:Konqi-KDE-20-years-birthday-party-.png|Konqi's birthday by [https://www.artstation.com/artist/eliassilveira Elias Silveira].<br />
</gallery><br />
<br />
=HTML codes for webpage=<br />
<br />
For using the artworks outside of the KDE Wikis, HTML codes are provided for each picture. <br />
<br />
'''Notice'''<br />
*Actual inserted size: 250px wide.<br />
*By using these source codes, you are linking the artwork images directly from KDE Community's server. <br />
<br />
<br />
===Artworks by Tyson Tan===<br />
<br />
[[File:Mascot konqi.png|400px]]<br />
<br />
'''<big>Default Konqi</big>'''<br /><br />
For: Anything.<br /><br />
<nowiki>File:Mascot konqi.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Mascot_konqi.png"><img src="https://community.kde.org/images.community/thumb/4/40/Mascot_konqi.png/250px-Mascot_konqi.png" /></a></div><br />
</syntaxhighlight><br />
<br />
<br />
[[File:Mascot konqi-dev-kde.png|400px]]<br />
<br />
'''<big>Konqi and KDE Oxygen logo</big>'''<br /><br />
For: KDE specific, Oxygen, logo.<br /><br />
<nowiki>File:Mascot konqi-dev-kde.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Mascot_konqi-dev-kde.png"><img src="https://community.kde.org/images.community/thumb/c/ce/Mascot_konqi-dev-kde.png/250px-Mascot_konqi-dev-kde.png" /></a></div><br />
</syntaxhighlight><br />
<br />
<br />
[[File:Mascot konqi-app-dev-katie.png|400px]]<br />
<br />
'''<big>Katie and laptop</big>'''<br /><br />
For: KDE women, mobile device, programming. <br /><br />
<nowiki>File:Mascot konqi-app-dev-katie.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Mascot_konqi-app-dev-katie.png"><img src="https://community.kde.org/images.community/thumb/f/fb/Mascot_konqi-app-dev-katie.png/250px-Mascot_konqi-app-dev-katie.png" /></a></div><br />
</syntaxhighlight><br />
<br />
<br />
[[File:Mascot konqi-dev-qt.png|400px]]<br />
<br />
'''<big>Konqi and Qt</big>'''<br /><br />
For: Anything Qt.<br /><br />
<nowiki>File:Mascot konqi-dev-qt.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Mascot_konqi-dev-qt.png"><img src="https://community.kde.org/images.community/thumb/1/11/Mascot_konqi-dev-qt.png/250px-Mascot_konqi-dev-qt.png" /></a></div><br />
</syntaxhighlight><br />
<br />
<br />
[[File:Mascot konqi-base-framework.png|400px]]<br />
<br />
'''<big>Konqi and KDE Frameworks</big>'''<br /><br />
For: KDE Frameworks, Platforms, and other infrastructures. <br /><br />
<nowiki>File:Mascot konqi-base-framework.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Mascot_konqi-base-framework.png"><img src="https://community.kde.org/images.community/thumb/5/50/Mascot_konqi-base-framework.png/250px-Mascot_konqi-base-framework.png" /></a></div><br />
</syntaxhighlight><br />
<br />
<br />
[[File:Mascot konqi-base-plasma.png|400px]]<br />
<br />
'''<big>Konqi and Plasma Desktop</big>'''<br /><br />
For: Plasma, window manager, OpenGL, touch.<br /><br />
<nowiki>File:Mascot konqi-base-plasma.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Mascot_konqi-base-plasma.png"><img src="https://community.kde.org/images.community/thumb/a/af/Mascot_konqi-base-plasma.png/250px-Mascot_konqi-base-plasma.png" /></a></div><br />
</syntaxhighlight><br />
<br />
<br />
[[File:Mascot konqi-app-dev.png|400px]]<br />
<br />
'''<big>Konqi and his dev PC</big>'''<br /><br />
For: KDE development software, multi-screen, programming.<br /><br />
<nowiki>File:Mascot konqi-app-dev.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Mascot_konqi-app-dev.png"><img src="https://community.kde.org/images.community/thumb/7/79/Mascot_konqi-app-dev.png/250px-Mascot_konqi-app-dev.png" /></a></div><br />
</syntaxhighlight><br />
<br />
<br />
[[File:Mascot konqi-app-game.png|400px]]<br />
<br />
'''<big>Konqi and poker</big>'''<br /><br />
For: Games<br /><br />
<nowiki>File:Mascot konqi-app-game.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Mascot_konqi-app-game.png"><img src="https://community.kde.org/images.community/thumb/8/80/Mascot_konqi-app-game.png/250px-Mascot_konqi-app-game.png" /></a></div><br />
</syntaxhighlight><br />
<br />
<br />
[[File:Mascot konqi-app-graphics.png|400px]]<br />
<br />
'''<big>Konqi painting</big>'''<br /><br />
For: Graphics and creative applications.<br /><br />
<nowiki>File:Mascot konqi-app-graphics.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Mascot_konqi-app-graphics.png"><img src="https://community.kde.org/images.community/thumb/8/88/Mascot_konqi-app-graphics.png/250px-Mascot_konqi-app-graphics.png" /></a></div><br />
</syntaxhighlight><br />
<br />
<br />
[[File:Mascot konqi-app-hardware.png|400px]]<br />
<br />
'''<big>Konqi and hardware</big>'''<br /><br />
For: Hardware, CPU/GPU multi-thread load-balancing.<br /><br />
<nowiki>File:Mascot konqi-app-hardware.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Mascot_konqi-app-hardware.png"><img src="https://community.kde.org/images.community/thumb/9/99/Mascot_konqi-app-hardware.png/250px-Mascot_konqi-app-hardware.png" /></a></div><br />
</syntaxhighlight><br />
<br />
<br />
[[File:Mascot konqi-app-internet.png|400px]]<br />
<br />
'''<big>Konqi and internet</big>'''<br /><br />
For: Internet, web browsers, IRC, instant messenger, networking.<br /><br />
<nowiki>File:Mascot konqi-app-internet.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Mascot_konqi-app-internet.png"><img src="https://community.kde.org/images.community/thumb/a/ad/Mascot_konqi-app-internet.png/250px-Mascot_konqi-app-internet.png" /></a></div><br />
</syntaxhighlight><br />
<br />
<br />
[[File:Mascot konqi-app-multimedia.png|400px]]<br />
<br />
'''<big>Konqi and guitar</big>'''<br /><br />
For: Music, multimedia, mixer, audio.<br /><br />
<nowiki>File:Mascot konqi-app-multimedia.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Mascot_konqi-app-multimedia.png"><img src="https://community.kde.org/images.community/thumb/5/5c/Mascot_konqi-app-multimedia.png/250px-Mascot_konqi-app-multimedia.png" /></a></div><br />
</syntaxhighlight><br />
<br />
<br />
[[File:Mascot konqi-app-office.png|400px]]<br />
<br />
'''<big>Konqi in office</big>'''<br /><br />
For: Office productivity, Calligra Suite. <br /><br />
<nowiki>File:Mascot konqi-app-office.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Mascot_konqi-app-office.png"><img src="https://community.kde.org/images.community/thumb/e/e7/Mascot_konqi-app-office.png/250px-Mascot_konqi-app-office.png" /></a></div><br />
</syntaxhighlight><br />
<br />
<br />
[[File:Mascot konqi-app-presentation.png|400px]]<br />
<br />
'''<big>Konqi giving a presentation</big>'''<br /><br />
For: Presentation, education, teaching, mentoring.<br /><br />
<nowiki>File:Mascot konqi-app-presentation.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Mascot_konqi-app-presentation.png"><img src="https://community.kde.org/images.community/thumb/8/8b/Mascot_konqi-app-presentation.png/250px-Mascot_konqi-app-presentation.png" /></a></div><br />
</syntaxhighlight><br />
<br />
<br />
[[File:Mascot konqi-app-science.png|Konqi in the lab: Science software, experimental features.<br />
|400px]]<br />
<br />
'''<big>Konqi in the lab</big>'''<br /><br />
For: Science software, experimental features.<br /><br />
<nowiki>File:Mascot konqi-app-science.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Mascot_konqi-app-science.png"><img src="https://community.kde.org/images.community/thumb/5/58/Mascot_konqi-app-science.png/250px-Mascot_konqi-app-science.png" /></a></div><br />
</syntaxhighlight><br />
<br />
<br />
[[File:Mascot konqi-app-system.png|400px]]<br />
<br />
'''<big>Konqi and the gear</big>'''<br /><br />
For: System settings, accessibility, KDE system parts.<br /><br />
<nowiki>File:Mascot konqi-app-system.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Mascot_konqi-app-system.png"><img src="https://community.kde.org/images.community/thumb/c/c8/Mascot_konqi-app-system.png/250px-Mascot_konqi-app-system.png" /></a></div><br />
</syntaxhighlight><br />
<br />
<br />
[[File:Mascot konqi-app-utilities.png|400px]]<br />
<br />
'''<big>Konqi the engineer</big>'''<br /><br />
For: Utility software, engineering, tools, under construction.<br /><br />
<nowiki>File:Mascot konqi-app-utilities.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Mascot_konqi-app-utilities.png"><img src="https://community.kde.org/images.community/thumb/9/95/Mascot_konqi-app-utilities.png/250px-Mascot_konqi-app-utilities.png" /></a></div><br />
</syntaxhighlight><br />
<br />
<br />
[[File:Mascot konqi-commu-akademy.png|400px]]<br />
<br />
'''<big>Konqi on Akademy</big>'''<br /><br />
For: Akademy, lecture, presentation.<br /><br />
<nowiki>File:Mascot konqi-commu-akademy.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Mascot_konqi-commu-akademy.png"><img src="https://community.kde.org/images.community/thumb/8/8f/Mascot_konqi-commu-akademy.png/250px-Mascot_konqi-commu-akademy.png" /></a></div><br />
</syntaxhighlight><br />
<br />
<br />
[[File:Mascot konqi-commu-journalist.png|400px]]<br />
<br />
'''<big>Konqi interviewing</big>'''<br /><br />
For: Event reporting, media coverage, journalist.<br /><br />
<nowiki>File:Mascot konqi-commu-journalist.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Mascot_konqi-commu-journalist.png"><img src="https://community.kde.org/images.community/thumb/0/0e/Mascot_konqi-commu-journalist.png/250px-Mascot_konqi-commu-journalist.png" /></a></div><br />
</syntaxhighlight><br />
<br />
<br />
[[File:Mascot konqi-commu-mail.png|400px]]<br />
<br />
'''<big>Konqi and mails</big>'''<br /><br />
For: Email client, maillist, communication.<br /><br />
<nowiki>File:Mascot konqi-commu-mail.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Mascot_konqi-commu-mail.png"><img src="https://community.kde.org/images.community/thumb/5/53/Mascot_konqi-commu-mail.png/250px-Mascot_konqi-commu-mail.png" /></a></div><br />
</syntaxhighlight><br />
<br />
<br />
[[File:Mascot konqi-commu-randa.png|400px]]<br />
<br />
'''<big>Konqi and Randa Meeting</big>'''<br /><br />
For: Randa Meeting, alps. <br /><br />
<nowiki>File:Mascot konqi-commu-randa.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Mascot_konqi-commu-randa.png"><img src="https://community.kde.org/images.community/thumb/f/ff/Mascot_konqi-commu-randa.png/250px-Mascot_konqi-commu-randa.png" /></a></div><br />
</syntaxhighlight><br />
<br />
<br />
[[File:Mascot konqi-support-bughunt.png|400px]]<br />
<br />
'''<big>Konqi hunting bugs</big>'''<br /><br />
For: Bug report, sprints. <br /><br />
<nowiki>File:Mascot konqi-support-bughunt.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Mascot_konqi-support-bughunt.png"><img src="https://community.kde.org/images.community/thumb/2/28/Mascot_konqi-support-bughunt.png/250px-Mascot_konqi-support-bughunt.png" /></a></div><br />
</syntaxhighlight><br />
<br />
<br />
[[File:Mascot konqi-support-business.png|400px]]<br />
<br />
'''<big>Konqi and serious business</big>'''<br /><br />
For: KDE.e.V., financial, licensing, law. <br /><br />
<nowiki>File:Mascot konqi-support-business.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Mascot_konqi-support-business.png"><img src="https://community.kde.org/images.community/thumb/0/03/Mascot_konqi-support-business.png/250px-Mascot_konqi-support-business.png" /></a></div><br />
</syntaxhighlight><br />
<br />
<br />
[[File:Mascot konqi-support-document.png|400px]]<br />
<br />
'''<big>Konqi and documentations</big>'''<br /><br />
For: Help, support, documentations, books, literature.<br /><br />
<nowiki>File:Mascot konqi-support-document.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Mascot_konqi-support-document.png"><img src="https://community.kde.org/images.community/thumb/f/f4/Mascot_konqi-support-document.png/250px-Mascot_konqi-support-document.png" /></a></div><br />
</syntaxhighlight><br />
<br />
<br />
[[File:Mascot konqi-support-search.png|400px]]<br />
<br />
'''<big>Konqi searching in archive</big>'''<br /><br />
For: Search, archive, documentations.<br /><br />
<nowiki>File:Mascot konqi-support-search.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Mascot_konqi-support-search.png"><img src="https://community.kde.org/images.community/thumb/c/ce/Mascot_konqi-support-search.png/250px-Mascot_konqi-support-search.png" /></a></div><br />
</syntaxhighlight><br />
<br />
<br />
[[File:Mascot 20140702 konqui-group.png|400px]]<br />
<br />
'''<big>Konqi and his colorful friends</big>'''<br /><br />
For: Collective, community, international, cooperation, diversity.<br /><br />
<nowiki>File:Mascot 20140702 konqui-group.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Mascot_20140702_konqui-group.png"><img src="https://community.kde.org/images.community/thumb/7/75/Mascot_20140702_konqui-group.png/250px-Mascot_20140702_konqui-group.png" /></a></div><br />
</syntaxhighlight><br />
<br />
<br />
[[File:Kde dragons.png|400px]]<br />
<br />
'''<big>The KDE dragons</big>'''<br /><br />
For: Collective, community, international, cooperation. diversity.<br /><br />
<nowiki>File:Kde dragons.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Kde_dragons.png"><img src="https://community.kde.org/images.community/thumb/1/1b/Kde_dragons.png/250px-Kde_dragons.png" /></a></div><br />
</syntaxhighlight><br />
<br />
===Artworks by Timothée Giet===<br />
[[File:Flying Konqi.png|400px]]<br />
<br />
<big>'''Flying Konqi'''</big><br /><br />
Usage suggestion: Anything<br /><br />
<nowiki>File:Flying Konqi.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Flying Konqi.png"><img src="https://community.kde.org/images.community/thumb/2/2a/Flying_Konqi.png/400px-Flying_Konqi.png" /></a></div><br />
</syntaxhighlight><br />
<br />
[[File:Konqi-Timothée-Giet-Postcard01-present.png|400px]]<br />
<br />
<big>'''Konqi and present'''</big><br /><br />
Usage suggestion: Winter, Christmas, present, at night.<br /><br />
<nowiki>File:Konqi-Timothée-Giet-Postcard01-present.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Konqi-Timoth%C3%A9e-Giet-Postcard01-present.png"><img src="https://community.kde.org/images.community/thumb/b/b9/Konqi-Timoth%C3%A9e-Giet-Postcard01-present.png/250px-Konqi-Timoth%C3%A9e-Giet-Postcard01-present.png" /></a></div><br />
</syntaxhighlight><br />
<br />
[[File:Konqi-Timothée-Giet-Postcard02-freedom.png|400px]]<br />
<br />
<big>'''Konqi experiences freedom'''</big><br /><br />
Usage suggestion: Winter, freedom, at night.<br /><br />
<nowiki>File:Konqi-Timothée-Giet-Postcard02-freedom.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Konqi-Timoth%C3%A9e-Giet-Postcard02-freedom.png"><img src="https://community.kde.org/images.community/thumb/2/28/Konqi-Timoth%C3%A9e-Giet-Postcard02-freedom.png/250px-Konqi-Timoth%C3%A9e-Giet-Postcard02-freedom.png" /></a></div><br />
</syntaxhighlight><br />
<br />
[[File:Konqi-Timothée-Giet-Postcard03-christmas.png|400px]]<br />
<br />
<big>'''Konqi and Christmas tree decorations'''</big><br /><br />
Usage suggestion: Winter, Christmas, at night.<br /><br />
<nowiki>File:Konqi-Timothée-Giet-Postcard03-christmas.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Konqi-Timoth%C3%A9e-Giet-Postcard03-christmas.png"><img src="https://community.kde.org/images.community/thumb/6/61/Konqi-Timoth%C3%A9e-Giet-Postcard03-christmas.png/250px-Konqi-Timoth%C3%A9e-Giet-Postcard03-christmas.png" /></a></div><br />
</syntaxhighlight><br />
<br />
===Artworks by other artists===<br />
[[File:Konqi-KDE-20-years-birthday-party-.png|400px]]<br />
<br />
<big>'''Konqi's birthday'''</big><br /><br />
Usage suggestion: Birthday, project anniversary.<br /><br />
<nowiki>File:Konqi-KDE-20-years-birthday-party-.png</nowiki><br /><br />
HTML for webpage:<br />
<syntaxhighlight lang="html"><br />
<div style="width: 250px; float: right; padding: 1ex; margin: 1ex; border: 0px solid grey;"><a href="https://community.kde.org/File:Konqi-KDE-20-years-birthday-party-.png"><img src="https://community.kde.org/images.community/thumb/b/b8/Konqi-KDE-20-years-birthday-party-.png/250px-Konqi-KDE-20-years-birthday-party-.png" /></a></div><br />
</syntaxhighlight></div>GB 2https://community.kde.org/index.php?title=Guidelines_and_HOWTOs/Build_from_source/Install_the_dependencies&diff=83073Guidelines and HOWTOs/Build from source/Install the dependencies2019-02-22T14:18:55Z<p>GB 2: /* KDE neon, Debian, Ubuntu, Kubuntu */</p>
<hr />
<div>In the following we give the dependencies to install. However it might change and this page might be quickly outdated.<br />
<br />
Reading the <code>CMakeLists.txt</code> of the packages you want to install should help you finding what you '''really''' need to install. Or read the error logs (see below).<br />
<br />
If you need help, see https://community.kde.org/Get_Involved#Getting_in_touch<br />
<br />
== All dependencies ==<br />
<br />
=== KDE neon, Debian, Ubuntu, Kubuntu === <br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo apt install libkf5activities-dev libkf5activitiesstats-dev libkf5akonadi-dev libkf5akonadicalendar-dev libkf5akonadicontact-dev libkf5akonadimime-dev libkf5akonadinotes-dev libkf5akonadisearch-dev libkf5alarmcalendar-dev libkf5archive-dev libkf5attica-dev libkf5auth-dev baloo-kf5-dev libkf5baloowidgets-dev libkf5blog-dev libkf5bluezqt-dev libkf5bookmarks-dev libkf5calendarcore-dev libkf5calendarsupport-dev libkf5calendarutils-dev libkf5cddb-dev libkf5codecs-dev libkf5compactdisc-dev libkf5completion-dev libkf5config-dev libkf5configwidgets-dev libkf5contacteditor-dev libkf5contacts-dev libkf5coreaddons-dev libkf5crash-dev libkf5dbusaddons-dev libkf5dnssd-dev libkf5declarative-dev kgendesignerplugin libkf5doctools-dev libkf5emoticons-dev libkf5eventviews-dev libkf5filemetadata-dev libkf5followupreminder-dev libkf5style-dev libkf5globalaccel-dev libkf5grantleetheme-dev libkf5gravatar-dev libkf5guiaddons-dev libkf5holidays-dev libkf5i18n-dev libkf5imap-dev libkf5iconthemes-dev libkf5identitymanagement-dev libkf5idletime-dev libkf5incidenceeditor-dev kinit-dev libkf5itemmodels-dev libkf5itemviews-dev libkf5kjs-dev libkf5jobwidgets-dev libkf5jsembed-dev libkf5kcmutils-dev libkf5kdelibs4support-dev libkf5kdegames-dev libkf5kdcraw-dev libkf5kexiv2-dev libkf5kgeomap-dev libkf5khtml-dev libkf5kio-dev libkf5kmahjongglib-dev libkf5kaddressbookgrantlee-dev libkf5kaddressbookimportexport-dev libkf5kdepimdbusinterfaces-dev libkf5kipi-dev kirigami2-dev libkf5konq-dev libkf5kontactinterface-dev kross-dev libkf5ldap-dev libkf5ksieve-dev libkf5libkdepim-dev libkf5libkleo-dev libkf5mailcommon-dev libkf5mailimporter-dev libkf5mailtransport-dev libkf5mbox-dev libkf5mediaplayer-dev libkf5mediawiki-dev libkf5messagecomposer-dev libkf5messagecore-dev libkf5messagelist-dev libkf5messageviewer-dev libkf5mime-dev libkf5mimetreeparser-dev modemmanager-qt-dev libkf5networkmanagerqt-dev libkf5newstuff-dev libkf5notifications-dev libkf5notifyconfig-dev libkf5package-dev libkf5parts-dev libkf5people-dev libkf5pimcommon-dev libkf5pimtextedit-dev libkf5plasma-dev libkf5plotting-dev libkf5prison-dev libkf5pty-dev libkf5purpose-dev libkf5qqc2desktopstyle-dev libkf5runner-dev libkf5sane-dev libkf5screen-dev libkf5sendlater-dev libkf5service-dev libkf5solid-dev libkf5sonnet-dev libkf5su-dev libkf5syndication-dev libkf5syntaxhighlighting-dev libkf5sysguard-dev libkf5templateparser-dev libkf5texteditor-dev libkf5textwidgets-dev libkf5threadweaver-dev libkf5tnef-dev libktorrent-dev libkf5unitconversion-dev libkf5vkontakte-dev libkf5wallet-dev libkf5wayland-dev libkf5webengineviewer-dev libkf5webkit-dev libkf5widgetsaddons-dev libkf5windowsystem-dev libkf5xmlgui-dev libkf5xmlrpcclient-dev autoconf bison breeze-dev build-essential bzr cmake cmake-data debhelper dh-apparmor doxygen extra-cmake-modules flex fontforge gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 git gperf icu-devtools kded5-dev kscreenlocker-dev kwin-dev libaccounts-glib-dev libappstreamqt-dev libapr1 libaprutil1 libarchive-dev libasound2-dev libattr1-dev libboost-dev libbz2-dev libcanberra-dev libclang-3.9-dev libclang-dev libcln-dev libcups2-dev libegl1-mesa-dev libepoxy-dev libexiv2-dev libfakekey-dev libfontconfig1-dev libfreetype6-dev libgconf2-dev libgcrypt20-dev libgif-dev libglib2.0-dev libgmp-dev libgmpxx4ldbl libgpgme11-dev libgps-dev libgrantlee5-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgtk-3-dev libhunspell-dev libibus-1.0-dev libicu-dev libjpeg8-dev libjpeg-dev libjpeg-turbo8-dev libjson-perl libkaccounts-dev liblcms2-dev liblmdb-dev libmlt-dev libmlt++-dev libnm-dev libnm-glib-dev libnm-util-dev libpackagekitqt5-dev libpam-dev libphonon4qt5-dev libphonon4qt5experimental-dev libpng-dev libpolkit-agent-1-dev libpolkit-backend-1-dev libpolkit-gobject-1-dev libpulse-dev libpwquality-dev libqalculate-dev libqca-qt5-2-dev libqimageblitz-dev libqrencode-dev libqt5sensors5 libqt5sensors5-dev libqt5svg5-dev libqt5texttospeech5-dev libqt5webkit5-dev libqt5x11extras5-dev libqt5xmlpatterns5-dev libraw1394-dev libscim-dev libserf-1-1 libsm-dev libssl-dev libsvn1 libtiff5-dev libudev-dev libusb-dev libvlccore-dev libvlc-dev libvncserver-dev libwww-perl libx11-dev libx11-xcb-dev libxapian-dev libxcb1-dev libxcb-composite0-dev libxcb-cursor0 libxcb-cursor-dev libxcb-damage0-dev libxcb-dpms0 libxcb-dpms0-dev libxcb-ewmh2 libxcb-ewmh-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-record0-dev libxcb-render-util0-dev libxcb-res0 libxcb-res0-dev libxcb-screensaver0 libxcb-screensaver0-dev libxcb-shm0-dev libxcb-util0-dev libxcb-xf86dri0 libxcb-xf86dri0-dev libxcb-xinerama0 libxcb-xinerama0-dev libxcb-xkb-dev libxcb-xtest0-dev libxcb-xv0 libxcb-xv0-dev libxcb-xvmc0 libxcb-xvmc0-dev libxcursor-dev libxft-dev libxi-dev libxkbfile-dev libxml2-dev libxml-parser-perl libxrender-dev libxslt1-dev libxslt-dev llvm llvm-3.9 modemmanager-dev network-manager-dev openbox oxygen-icon-theme perl-modules pkg-config pkg-kde-tools plasma-workspace-dev po-debconf qml-module-qtquick* qt5-qmake qtbase5-dev qtbase5-dev-tools qtbase5-private-dev qtdeclarative5-dev qtquickcontrols2-5-dev qtscript5-dev qttools5-dev qtxmlpatterns5-dev-tools shared-mime-info subversion texinfo xauth xcb-proto xserver-xorg-dev xserver-xorg-input-evdev-dev xserver-xorg-input-libinput-dev xserver-xorg-input-synaptics-dev xsltproc xvfb<br />
</pre><br />
<br />
== For the frameworks ==<br />
<br />
=== Arch, Antergos, Manjaro === <br />
All the dependencies used for building frameworks can be installed by running:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo pacman -Sy --needed phonon-qt5 qt5-webkit qt5-script qt5-svg qt5-tools qt5-x11extras enchant jasper openexr libutempter docbook-xsl shared-mime-info giflib libxss upower udisks2 bzr git doxygen perl-json perl-libwww perl-xml-parser perl-io-socket-ssl akonadi xorg-server-devel libpwquality fontforge eigen libfakekey qca-qt5 xapian-core xsd gperf perl-yaml-syck intltool kdesdk<br />
</pre><br />
<br />
<br />
=== Fedora=== <br />
All the dependencies used for building frameworks can be installed by running:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo dnf install perl-IPC-Cmd perl-JSON-PP perl-YAML-Syck qt5-devel qt5-qtquickcontrols2-devel polkit-devel gperf libxslt-devel libxml2-devel kf5-kconfigwidgets-devel libXrender-devel qrencode-devel xcb*-devel flex systemd-devel giflib-devel libjpeg-turbo-devel NetworkManager-glib-devel NetworkManager-libnm-devel ModemManager-devel libattr-devel openssl-devel libSM-devel wayland-devel lmdb-devel libaccounts-qt5-devel libaccounts-glib-devel signon-devel<br />
</pre><br />
<br />
<br />
=== openSUSE === <br />
<br />
==== openSUSE Leap 15 (Argon) ====<br />
<br />
Updated 24 June 2018 (likely incomplete)<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;">$ sudo zypper si -d libqt5-qtbase<br />
$ sudo zypper in libbz2-devel libxslt-devel libxml2-devel shared-mime-info oxygen-icon-theme giflib-devel vlc-devel doxygen gstreamer-devel gstreamer-plugins-base-devel docbook-xml-slides docbook-xsl-stylesheets xcb-util-keysyms-devel perl-JSON boost-devel libxcb-devel libXrender-devel xcb-util-wm-devel xcb-util-devel xcb-util-image-devel gettext-tools libepoxy-devel<br />
$ sudo zypper in gtk3-devel<br />
$ sudo zypper in grantlee5-devel kactivities5-devel plasma-framework-devel plasma5-addons-devel plasma5-workspace-devel libQt5Concurrent-devel libQt5DBus-devel libQt5PrintSupport-devel xcb-util-cursor-devel libqt5-qtx11extras-devel xcb-proto-devel git-core</pre><br />
<br />
==== openSUSE 42.1 ====<br />
<br />
Install these packages (including the recommended packages):<br />
<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo zypper install patterns-openSUSE-devel_kde patterns-openSUSE-devel_kde_frameworks git-core bzr ninja \<br />
gettext-tools libqt5-qttools libgypsy0 libqt5-creator libqt5-linguist libqt5-qtbase-common-devel libqt5-qtbase-devel libqt5-qtbase-examples libqt5-qtdeclarative-devel libqt5-qtdeclarative-examples libqt5-qtdeclarative-tools libqt5-qtdoc libqt5-qtgraphicaleffects libqt5-qtimageformats libqt5-qtimageformats-devel libqt5-qtmultimedia-devel libqt5-qtmultimedia-examples libqt5-qtquick1-devel libqt5-qtquickcontrols libqt5-qtscript-devel libqt5-qtscript-examples libqt5-qtsvg-devel libqt5-qttools-devel libqt5-qtx11extras-devel libqt5-qtxmlpatterns-devel libqt5-qtxmlpatterns-examples libQt5CLucene5 libQt5Concurrent-devel libQt5Concurrent5 libQt5Core-devel libQt5Core5 libQt5DBus-devel libQt5DBus5 libQt5Declarative5 libQt5Designer5 libQt5DesignerComponents5 libQt5Gui-devel libQt5Gui5 libQt5Help5 libQt5Multimedia5 libQt5Network-devel libQt5Network5 libQt5OpenGL-devel libQt5OpenGL5 libQt5Positioning5 libQt5PrintSupport-devel libQt5PrintSupport5 libQt5Script5 libQt5Sensors5 libQt5Sql-devel libQt5Sql5 libQt5Sql5-mysql libQt5Sql5-postgresql libQt5Sql5-sqlite libQt5Sql5-unixODBC libQt5Svg5 libQt5Test-devel libQt5Test5 libQt5WebKit5 libQt5WebKitWidgets5 libQt5Widgets-devel libQt5Widgets5 libQt5X11Extras5 libQt5Xml-devel libQt5Xml5 libQt5XmlPatterns5 libQtQuick5 libQt5WebKitWidgets-devel libqt5-qtbase-private-headers-devel \<br />
xcb-util-keysyms-devel docbook-xsl-stylesheets doxygen polkit-devel libepoxy-devel boost-devel libXcursor-devel libSM-devel giflib-devel libaccounts-qt5-devel gtk3-devel libpng16-devel fltk-devel libopenssl-devel libattr-devel ModemManager-devel NetworkManager-devel wayland-devel lmdb-devel xcb-proto-devel xcb-util-image-devel xcb-util-cursor-devel xcb-util-devel gtk2-devel libqca-qt5-devel libpwquality-devel libical-devel PackageKit-Qt5-devel pam-devel \<br />
bison flex libqt5-qttools-doc<br />
</pre><br />
<br />
* OPEN ISSUES:<br />
** on my system 'ninja-1.6.0' was installed and when using 'custom-build-command ninja' in the kdesrc-buildrc below, the build of modules fails), maybe see https://bugs.kde.org/show_bug.cgi?id=331654<br />
<br />
* Failing modules (of more than 200 modules)<br />
** phonon-vlc, phonon-gstreamer, plasma-pa (PulseAudio missing), kdevplatform, plasma-desktop, kaccounts-integration, kaccounts-mobile, gwenview, kdevelop, libksane, skanlite, ... (see below for solutions)<br />
<br />
==== openSuSE Tumbleweed ====<br />
This more complete list (which probably works for OpenSuSE 42.1 as well) allows to compile everything that kdesrc-build's default setup (kf5-qt5-build-include) compiles. Note that it doesn't contain Qt or Qt-based libs, you need that on top, or to compile your own Qt (and then include custom-qt5-libs-build-include in kdesrc-buildrc).<br />
<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo zypper install patterns-kde-devel_kde_frameworks patterns-kde-devel_qt5 make cmake extra-cmake-modules ccache git bzr antlr antlr-java antlr-devel astyle autoconf flac gettext-tools intltool libMagick++-devel libplotter2 libtool pstoedit subversion-devel subversion-tools xscreensaver-data libxslt-devel docbook-xsl-stylesheets libpoppler-devel aspell-devel enchant-devel libidn-devel polkit-devel update-desktop-files atk-devel bluez-devel fdupes gdk-pixbuf-devel gtk3-devel libcanberra-devel libexiv2-devel libpulse-devel gtk-doc libsmbclient-devel libssh-devel libusb-1_0-devel libusb-compat-devel libxine-devel libxklavier16 libxklavier-devel xwininfo NetworkManager-devel ModemManager-devel libssh2-devel openslp-devel pango-devel xz-devel libgssglue-devel libjasper-devel libudev-devel utempter-devel libbotan-devel libmysqlclient-devel postgresql-devel libmysqld-devel cgdb gstreamer-plugins-base-devel gstreamer-devel libsamplerate-devel audiofile-devel flac-devel libvorbis-devel fftw3-devel libmusicbrainz-devel cdparanoia-devel flex parted-devel libopus-devel giflib-devel pciutils-devel pam-devel boost-devel libv4l-devel cyrus-sasl-devel libgpgme-devel libical-devel sane-backends-devel libgphoto2-devel doxygen makeinfo LibVNCServer-devel speex-devel libotr-devel libmms-devel libsndfile-devel mpfr-devel libzeitgeist-devel gperf libcap-devel libarchive-devel telepathy-logger-devel libpwquality-devel opencv-devel glew-devel libxapian-devel libblkid-devel libatasmart-devel libiodbc-devel xcb-util-wm-devel xcb-util-renderutil-devel xcb-util-keysyms-devel xcb-util-image-devel xcb-util-cursor-devel libxkbcommon-devel vlc-devel libicu-devel icu-data libkolabxml-devel xsd libffi-devel-gcc5 perl-Tie-IxHash perl-JSON perl-Text-CSV perl-YAML-Syck hunspell-devel ffmpeg-devel libacl-devel libnl-devel liboauth-devel libepub-devel libicecream-devel docbook2X liblcms2-devel libeigen2-devel eigen3-devel graphviz-devel liboyranos-devel libraw-devel xf86-input-wacom-devel libwacom-devel xf86-input-synaptics-devel xorg-x11-server-sdk libdiscid-devel libmlt++-devel libdmtx-devel qrencode-devel libfunambol-devel libmtp-devel at-spi2-core-devel openal-soft-devel python-sip-devel libXcm-devel libspeechd-devel libraw-devel ModemManager-devel farstream-devel tesseract-ocr-devel mtdev-devel fontforge-devel cups-devel libepoxy-devel openconnect-devel lmdb-devel libpgf-devel llvm-devel llvm-clang-devel binutils-devel libdwarf-devel libelf-devel plymouth-devel libfakekey-devel python-GitPython php php-curl telepathy-mission-control-devel libaccounts-glib-devel<br />
</pre><br />
<br />
== For Plasma ==<br />
* Arch/Antergos/Manjaro: <code>sudo pacman -S plasma-desktop plasma-workspace kwin</code><br />
* Fedora: <code>sudo dnf builddep plasma-desktop plasma-workspace kwin</code><br />
* KDE neon/Kubuntu/Ubuntu/Debian <code>sudo apt build-dep plasma-desktop plasma-workspace kwin</code><br />
* openSUSE Leap & Tumbleweed: <code>sudo zypper si -d plasma-desktop plasma-workspace kwin</code><br />
<br />
Any other dependencies can be figured out and installed as you continue building the modules one by one.<br />
<br />
== Quick fixes for package manager errors ==<br />
The above lists might not always be working out of the box on your specific distribution or might be out of date for individual packages. In many cases removing single packages from the lists above still allows you to build many KDE frameworks and applications.<br />
<br />
In case it is a package added by a regex, you can exclude the specific package by a workaround using sed. Let us assume for an example that we want to install "libkf5.*-dev" on deb-based systems but have uninstallable packages libkf5example1-dev, libkf5example2-dev. Then we install all "libkf5.*-dev" packages excluding libkf5example1-dev and libkf5example2-dev through:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;">$ sudo apt install $(apt-cache search -n "libkf5.*-dev" | sed 's/ - .*//' | sed '/libkf5example1-dev/d' | sed '/libkf5example2-dev/d')</pre></div>GB 2https://community.kde.org/index.php?title=Guidelines_and_HOWTOs/Build_from_source/Install_the_dependencies&diff=83072Guidelines and HOWTOs/Build from source/Install the dependencies2019-02-22T14:17:02Z<p>GB 2: </p>
<hr />
<div>In the following we give the dependencies to install. However it might change and this page might be quickly outdated.<br />
<br />
Reading the <code>CMakeLists.txt</code> of the packages you want to install should help you finding what you '''really''' need to install. Or read the error logs (see below).<br />
<br />
If you need help, see https://community.kde.org/Get_Involved#Getting_in_touch<br />
<br />
== All dependencies ==<br />
<br />
=== KDE neon, Debian, Ubuntu, Kubuntu === <br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo apt install libkf5activities-dev libkf5activitiesstats-dev libkf5akonadi-dev libkf5akonadicalendar-dev libkf5akonadicontact-dev libkf5akonadimime-dev libkf5akonadinotes-dev libkf5akonadisearch-dev libkf5alarmcalendar-dev libkf5archive-dev libkf5attica-dev libkf5auth-dev baloo-kf5-dev libkf5baloowidgets-dev libkf5blog-dev libkf5bluezqt-dev libkf5bookmarks-dev libkf5calendarcore-dev libkf5calendarsupport-dev libkf5calendarutils-dev libkf5cddb-dev libkf5codecs-dev libkf5compactdisc-dev libkf5completion-dev libkf5config-dev libkf5configwidgets-dev libkf5contacteditor-dev libkf5contacts-dev libkf5coreaddons-dev libkf5crash-dev libkf5dbusaddons-dev libkf5dnssd-dev libkf5declarative-dev kgendesignerplugin libkf5doctools-dev libkf5emoticons-dev libkf5eventviews-dev libkf5filemetadata-dev libkf5followupreminder-dev libkf5style-dev libkf5globalaccel-dev libkf5grantleetheme-dev libkf5gravatar-dev libkf5guiaddons-dev libkf5holidays-dev libkf5i18n-dev libkf5imap-dev libkf5iconthemes-dev libkf5identitymanagement-dev libkf5idletime-dev libkf5incidenceeditor-dev kinit-dev libkf5itemmodels-dev libkf5itemviews-dev libkf5kjs-dev libkf5jobwidgets-dev libkf5jsembed-dev libkf5kcmutils-dev libkf5kdelibs4support-dev libkf5kdegames-dev libkf5kdcraw-dev libkf5kexiv2-dev libkf5kgeomap-dev libkf5khtml-dev libkf5kio-dev libkf5kmahjongglib-dev libkf5kaddressbookgrantlee-dev libkf5kaddressbookimportexport-dev libkf5kdepimdbusinterfaces-dev libkf5kipi-dev kirigami2-dev libkf5konq-dev libkf5kontactinterface-dev kross-dev libkf5ldap-dev libkf5ksieve-dev libkf5libkdepim-dev libkf5libkleo-dev libkf5mailcommon-dev libkf5mailimporter-dev libkf5mailtransport-dev libkf5mbox-dev libkf5mediaplayer-dev libkf5mediawiki-dev libkf5messagecomposer-dev libkf5messagecore-dev libkf5messagelist-dev libkf5messageviewer-dev libkf5mime-dev libkf5mimetreeparser-dev modemmanager-qt-dev libkf5networkmanagerqt-dev libkf5newstuff-dev libkf5notifications-dev libkf5notifyconfig-dev libkf5package-dev libkf5parts-dev libkf5people-dev libkf5pimcommon-dev libkf5pimtextedit-dev libkf5plasma-dev libkf5plotting-dev libkf5prison-dev libkf5pty-dev libkf5purpose-dev libkf5qqc2desktopstyle-dev libkf5runner-dev libkf5sane-dev libkf5screen-dev libkf5sendlater-dev libkf5service-dev libkf5solid-dev libkf5sonnet-dev libkf5su-dev libkf5syndication-dev libkf5syntaxhighlighting-dev libkf5sysguard-dev libkf5templateparser-dev libkf5texteditor-dev libkf5textwidgets-dev libkf5threadweaver-dev libkf5tnef-dev libktorrent-dev libkf5unitconversion-dev libkf5vkontakte-dev libkf5wallet-dev libkf5wayland-dev libkf5webengineviewer-dev libkf5webkit-dev libkf5widgetsaddons-dev libkf5windowsystem-dev libkf5xmlgui-dev libkf5xmlrpcclient-dev autoconf bison breeze-dev build-essential bzr cmake cmake-data debhelper dh-apparmor doxygen extra-cmake-modules flex fontforge gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 git gperf icu-devtools kded5-dev kscreenlocker-dev kwin-dev libaccounts-glib-dev libappstreamqt-dev libapr1 libaprutil1 libarchive-dev libasound2-dev libattr1-dev libboost-dev libbz2-dev libcanberra-dev libclang-3.9-dev libclang-dev libcln-dev libcups2-dev libegl1-mesa-dev libepoxy-dev libexiv2-dev libfakekey-dev libfontconfig1-dev libfreetype6-dev libgconf2-dev libgcrypt20-dev libgif-dev libglib2.0-dev libgmp-dev libgmpxx4ldbl libgpgme11-dev libgps-dev libgrantlee5-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgtk-3-dev libhunspell-dev libibus-1.0-dev libicu-dev libjpeg8-dev libjpeg-dev libjpeg-turbo8-dev libjson-perl libkaccounts-dev liblcms2-dev liblmdb-dev libmlt-dev libmlt++-dev libnm-dev libnm-glib-dev libnm-util-dev libpackagekitqt5-dev libpam-dev libphonon4qt5-dev libphonon4qt5experimental-dev libpng-dev libpolkit-agent-1-dev libpolkit-backend-1-dev libpolkit-gobject-1-dev libpulse-dev libpwquality-dev libqalculate-dev libqca-qt5-2-dev libqimageblitz-dev libqrencode-dev libqt5sensors5 libqt5sensors5-dev libqt5svg5-dev libqt5texttospeech5-dev libqt5webkit5-dev libqt5x11extras5-dev libqt5xmlpatterns5-dev libraw1394-dev libscim-dev libserf-1-1 libsm-dev libssl-dev libsvn1 libtiff5-dev libudev-dev libusb-dev libvlccore-dev libvlc-dev libvncserver-dev libwww-perl libx11-dev libx11-xcb-dev libxapian-dev libxcb1-dev libxcb-composite0-dev libxcb-cursor0 libxcb-cursor-dev libxcb-damage0-dev libxcb-dpms0 libxcb-dpms0-dev libxcb-ewmh2 libxcb-ewmh-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-record0-dev libxcb-render-util0-dev libxcb-res0 libxcb-res0-dev libxcb-screensaver0 libxcb-screensaver0-dev libxcb-shm0-dev libxcb-util0-dev libxcb-xf86dri0 libxcb-xf86dri0-dev libxcb-xinerama0 libxcb-xinerama0-dev libxcb-xkb-dev libxcb-xtest0-dev libxcb-xv0 libxcb-xv0-dev libxcb-xvmc0 libxcb-xvmc0-dev libxcursor-dev libxft-dev libxi-dev libxkbfile-dev libxml2-dev libxml-parser-perl libxrender-dev libxslt1-dev libxslt-dev llvm llvm-3.9 modemmanager-dev network-manager-dev openbox oxygen-icon-theme perl-modules pkg-config pkg-kde-tools plasma-workspace-dev po-debconf qml-module-qtquick* qt5-qmake qtbase5-dev qtbase5-dev-tools qtbase5-private-dev qtdeclarative5-dev qtquickcontrols2-5-dev qtscript5-dev qttools5-dev qtxmlpatterns5-dev-tools shared-mime-info subversion texinfo xauth xcb-proto xserver-xorg-dev xserver-xorg-input-evdev-dev xserver-xorg-input-libinput-dev xserver-xorg-input-synaptics-dev xsltproc xvfb<br />
</pre><br />
<br />
<br />
== For the frameworks ==<br />
<br />
=== Arch, Antergos, Manjaro === <br />
All the dependencies used for building frameworks can be installed by running:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo pacman -Sy --needed phonon-qt5 qt5-webkit qt5-script qt5-svg qt5-tools qt5-x11extras enchant jasper openexr libutempter docbook-xsl shared-mime-info giflib libxss upower udisks2 bzr git doxygen perl-json perl-libwww perl-xml-parser perl-io-socket-ssl akonadi xorg-server-devel libpwquality fontforge eigen libfakekey qca-qt5 xapian-core xsd gperf perl-yaml-syck intltool kdesdk<br />
</pre><br />
<br />
<br />
=== Fedora=== <br />
All the dependencies used for building frameworks can be installed by running:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo dnf install perl-IPC-Cmd perl-JSON-PP perl-YAML-Syck qt5-devel qt5-qtquickcontrols2-devel polkit-devel gperf libxslt-devel libxml2-devel kf5-kconfigwidgets-devel libXrender-devel qrencode-devel xcb*-devel flex systemd-devel giflib-devel libjpeg-turbo-devel NetworkManager-glib-devel NetworkManager-libnm-devel ModemManager-devel libattr-devel openssl-devel libSM-devel wayland-devel lmdb-devel libaccounts-qt5-devel libaccounts-glib-devel signon-devel<br />
</pre><br />
<br />
<br />
=== openSUSE === <br />
<br />
==== openSUSE Leap 15 (Argon) ====<br />
<br />
Updated 24 June 2018 (likely incomplete)<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;">$ sudo zypper si -d libqt5-qtbase<br />
$ sudo zypper in libbz2-devel libxslt-devel libxml2-devel shared-mime-info oxygen-icon-theme giflib-devel vlc-devel doxygen gstreamer-devel gstreamer-plugins-base-devel docbook-xml-slides docbook-xsl-stylesheets xcb-util-keysyms-devel perl-JSON boost-devel libxcb-devel libXrender-devel xcb-util-wm-devel xcb-util-devel xcb-util-image-devel gettext-tools libepoxy-devel<br />
$ sudo zypper in gtk3-devel<br />
$ sudo zypper in grantlee5-devel kactivities5-devel plasma-framework-devel plasma5-addons-devel plasma5-workspace-devel libQt5Concurrent-devel libQt5DBus-devel libQt5PrintSupport-devel xcb-util-cursor-devel libqt5-qtx11extras-devel xcb-proto-devel git-core</pre><br />
<br />
==== openSUSE 42.1 ====<br />
<br />
Install these packages (including the recommended packages):<br />
<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo zypper install patterns-openSUSE-devel_kde patterns-openSUSE-devel_kde_frameworks git-core bzr ninja \<br />
gettext-tools libqt5-qttools libgypsy0 libqt5-creator libqt5-linguist libqt5-qtbase-common-devel libqt5-qtbase-devel libqt5-qtbase-examples libqt5-qtdeclarative-devel libqt5-qtdeclarative-examples libqt5-qtdeclarative-tools libqt5-qtdoc libqt5-qtgraphicaleffects libqt5-qtimageformats libqt5-qtimageformats-devel libqt5-qtmultimedia-devel libqt5-qtmultimedia-examples libqt5-qtquick1-devel libqt5-qtquickcontrols libqt5-qtscript-devel libqt5-qtscript-examples libqt5-qtsvg-devel libqt5-qttools-devel libqt5-qtx11extras-devel libqt5-qtxmlpatterns-devel libqt5-qtxmlpatterns-examples libQt5CLucene5 libQt5Concurrent-devel libQt5Concurrent5 libQt5Core-devel libQt5Core5 libQt5DBus-devel libQt5DBus5 libQt5Declarative5 libQt5Designer5 libQt5DesignerComponents5 libQt5Gui-devel libQt5Gui5 libQt5Help5 libQt5Multimedia5 libQt5Network-devel libQt5Network5 libQt5OpenGL-devel libQt5OpenGL5 libQt5Positioning5 libQt5PrintSupport-devel libQt5PrintSupport5 libQt5Script5 libQt5Sensors5 libQt5Sql-devel libQt5Sql5 libQt5Sql5-mysql libQt5Sql5-postgresql libQt5Sql5-sqlite libQt5Sql5-unixODBC libQt5Svg5 libQt5Test-devel libQt5Test5 libQt5WebKit5 libQt5WebKitWidgets5 libQt5Widgets-devel libQt5Widgets5 libQt5X11Extras5 libQt5Xml-devel libQt5Xml5 libQt5XmlPatterns5 libQtQuick5 libQt5WebKitWidgets-devel libqt5-qtbase-private-headers-devel \<br />
xcb-util-keysyms-devel docbook-xsl-stylesheets doxygen polkit-devel libepoxy-devel boost-devel libXcursor-devel libSM-devel giflib-devel libaccounts-qt5-devel gtk3-devel libpng16-devel fltk-devel libopenssl-devel libattr-devel ModemManager-devel NetworkManager-devel wayland-devel lmdb-devel xcb-proto-devel xcb-util-image-devel xcb-util-cursor-devel xcb-util-devel gtk2-devel libqca-qt5-devel libpwquality-devel libical-devel PackageKit-Qt5-devel pam-devel \<br />
bison flex libqt5-qttools-doc<br />
</pre><br />
<br />
* OPEN ISSUES:<br />
** on my system 'ninja-1.6.0' was installed and when using 'custom-build-command ninja' in the kdesrc-buildrc below, the build of modules fails), maybe see https://bugs.kde.org/show_bug.cgi?id=331654<br />
<br />
* Failing modules (of more than 200 modules)<br />
** phonon-vlc, phonon-gstreamer, plasma-pa (PulseAudio missing), kdevplatform, plasma-desktop, kaccounts-integration, kaccounts-mobile, gwenview, kdevelop, libksane, skanlite, ... (see below for solutions)<br />
<br />
==== openSuSE Tumbleweed ====<br />
This more complete list (which probably works for OpenSuSE 42.1 as well) allows to compile everything that kdesrc-build's default setup (kf5-qt5-build-include) compiles. Note that it doesn't contain Qt or Qt-based libs, you need that on top, or to compile your own Qt (and then include custom-qt5-libs-build-include in kdesrc-buildrc).<br />
<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo zypper install patterns-kde-devel_kde_frameworks patterns-kde-devel_qt5 make cmake extra-cmake-modules ccache git bzr antlr antlr-java antlr-devel astyle autoconf flac gettext-tools intltool libMagick++-devel libplotter2 libtool pstoedit subversion-devel subversion-tools xscreensaver-data libxslt-devel docbook-xsl-stylesheets libpoppler-devel aspell-devel enchant-devel libidn-devel polkit-devel update-desktop-files atk-devel bluez-devel fdupes gdk-pixbuf-devel gtk3-devel libcanberra-devel libexiv2-devel libpulse-devel gtk-doc libsmbclient-devel libssh-devel libusb-1_0-devel libusb-compat-devel libxine-devel libxklavier16 libxklavier-devel xwininfo NetworkManager-devel ModemManager-devel libssh2-devel openslp-devel pango-devel xz-devel libgssglue-devel libjasper-devel libudev-devel utempter-devel libbotan-devel libmysqlclient-devel postgresql-devel libmysqld-devel cgdb gstreamer-plugins-base-devel gstreamer-devel libsamplerate-devel audiofile-devel flac-devel libvorbis-devel fftw3-devel libmusicbrainz-devel cdparanoia-devel flex parted-devel libopus-devel giflib-devel pciutils-devel pam-devel boost-devel libv4l-devel cyrus-sasl-devel libgpgme-devel libical-devel sane-backends-devel libgphoto2-devel doxygen makeinfo LibVNCServer-devel speex-devel libotr-devel libmms-devel libsndfile-devel mpfr-devel libzeitgeist-devel gperf libcap-devel libarchive-devel telepathy-logger-devel libpwquality-devel opencv-devel glew-devel libxapian-devel libblkid-devel libatasmart-devel libiodbc-devel xcb-util-wm-devel xcb-util-renderutil-devel xcb-util-keysyms-devel xcb-util-image-devel xcb-util-cursor-devel libxkbcommon-devel vlc-devel libicu-devel icu-data libkolabxml-devel xsd libffi-devel-gcc5 perl-Tie-IxHash perl-JSON perl-Text-CSV perl-YAML-Syck hunspell-devel ffmpeg-devel libacl-devel libnl-devel liboauth-devel libepub-devel libicecream-devel docbook2X liblcms2-devel libeigen2-devel eigen3-devel graphviz-devel liboyranos-devel libraw-devel xf86-input-wacom-devel libwacom-devel xf86-input-synaptics-devel xorg-x11-server-sdk libdiscid-devel libmlt++-devel libdmtx-devel qrencode-devel libfunambol-devel libmtp-devel at-spi2-core-devel openal-soft-devel python-sip-devel libXcm-devel libspeechd-devel libraw-devel ModemManager-devel farstream-devel tesseract-ocr-devel mtdev-devel fontforge-devel cups-devel libepoxy-devel openconnect-devel lmdb-devel libpgf-devel llvm-devel llvm-clang-devel binutils-devel libdwarf-devel libelf-devel plymouth-devel libfakekey-devel python-GitPython php php-curl telepathy-mission-control-devel libaccounts-glib-devel<br />
</pre><br />
<br />
== For Plasma ==<br />
* Arch/Antergos/Manjaro: <code>sudo pacman -S plasma-desktop plasma-workspace kwin</code><br />
* Fedora: <code>sudo dnf builddep plasma-desktop plasma-workspace kwin</code><br />
* KDE neon/Kubuntu/Ubuntu/Debian <code>sudo apt build-dep plasma-desktop plasma-workspace kwin</code><br />
* openSUSE Leap & Tumbleweed: <code>sudo zypper si -d plasma-desktop plasma-workspace kwin</code><br />
<br />
Any other dependencies can be figured out and installed as you continue building the modules one by one.<br />
<br />
== Quick fixes for package manager errors ==<br />
The above lists might not always be working out of the box on your specific distribution or might be out of date for individual packages. In many cases removing single packages from the lists above still allows you to build many KDE frameworks and applications.<br />
<br />
In case it is a package added by a regex, you can exclude the specific package by a workaround using sed. Let us assume for an example that we want to install "libkf5.*-dev" on deb-based systems but have uninstallable packages libkf5example1-dev, libkf5example2-dev. Then we install all "libkf5.*-dev" packages excluding libkf5example1-dev and libkf5example2-dev through:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;">$ sudo apt install $(apt-cache search -n "libkf5.*-dev" | sed 's/ - .*//' | sed '/libkf5example1-dev/d' | sed '/libkf5example2-dev/d')</pre></div>GB 2https://community.kde.org/index.php?title=Guidelines_and_HOWTOs/Build_from_source/Install_the_dependencies&diff=83071Guidelines and HOWTOs/Build from source/Install the dependencies2019-02-22T14:10:35Z<p>GB 2: /* For Plasma */</p>
<hr />
<div>In the following we give the dependencies to install. However it might change and this page might be quickly outdated.<br />
<br />
Reading the <code>CMakeLists.txt</code> of the packages you want to install should help you finding what you '''really''' need to install. Or read the error logs (see below).<br />
<br />
If you need help, see https://community.kde.org/Get_Involved#Getting_in_touch<br />
<br />
== For the frameworks ==<br />
<br />
=== Arch, Antergos, Manjaro === <br />
All the dependencies used for building frameworks can be installed by running:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo pacman -Sy --needed phonon-qt5 qt5-webkit qt5-script qt5-svg qt5-tools qt5-x11extras enchant jasper openexr libutempter docbook-xsl shared-mime-info giflib libxss upower udisks2 bzr git doxygen perl-json perl-libwww perl-xml-parser perl-io-socket-ssl akonadi xorg-server-devel libpwquality fontforge eigen libfakekey qca-qt5 xapian-core xsd gperf perl-yaml-syck intltool kdesdk<br />
</pre><br />
<br />
<br />
=== KDE neon, Debian, Ubuntu, Kubuntu === <br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo apt install libkf5activities-dev libkf5activitiesstats-dev libkf5akonadi-dev libkf5akonadicalendar-dev libkf5akonadicontact-dev libkf5akonadimime-dev libkf5akonadinotes-dev libkf5akonadisearch-dev libkf5alarmcalendar-dev libkf5archive-dev libkf5attica-dev libkf5auth-dev baloo-kf5-dev libkf5baloowidgets-dev libkf5blog-dev libkf5bluezqt-dev libkf5bookmarks-dev libkf5calendarcore-dev libkf5calendarsupport-dev libkf5calendarutils-dev libkf5cddb-dev libkf5codecs-dev libkf5compactdisc-dev libkf5completion-dev libkf5config-dev libkf5configwidgets-dev libkf5contacteditor-dev libkf5contacts-dev libkf5coreaddons-dev libkf5crash-dev libkf5dbusaddons-dev libkf5dnssd-dev libkf5declarative-dev kgendesignerplugin libkf5doctools-dev libkf5emoticons-dev libkf5eventviews-dev libkf5filemetadata-dev libkf5followupreminder-dev libkf5style-dev libkf5globalaccel-dev libkf5grantleetheme-dev libkf5gravatar-dev libkf5guiaddons-dev libkf5holidays-dev libkf5i18n-dev libkf5imap-dev libkf5iconthemes-dev libkf5identitymanagement-dev libkf5idletime-dev libkf5incidenceeditor-dev kinit-dev libkf5itemmodels-dev libkf5itemviews-dev libkf5kjs-dev libkf5jobwidgets-dev libkf5jsembed-dev libkf5kcmutils-dev libkf5kdelibs4support-dev libkf5kdegames-dev libkf5kdcraw-dev libkf5kexiv2-dev libkf5kgeomap-dev libkf5khtml-dev libkf5kio-dev libkf5kmahjongglib-dev libkf5kaddressbookgrantlee-dev libkf5kaddressbookimportexport-dev libkf5kdepimdbusinterfaces-dev libkf5kipi-dev kirigami2-dev libkf5konq-dev libkf5kontactinterface-dev kross-dev libkf5ldap-dev libkf5ksieve-dev libkf5libkdepim-dev libkf5libkleo-dev libkf5mailcommon-dev libkf5mailimporter-dev libkf5mailtransport-dev libkf5mbox-dev libkf5mediaplayer-dev libkf5mediawiki-dev libkf5messagecomposer-dev libkf5messagecore-dev libkf5messagelist-dev libkf5messageviewer-dev libkf5mime-dev libkf5mimetreeparser-dev modemmanager-qt-dev libkf5networkmanagerqt-dev libkf5newstuff-dev libkf5notifications-dev libkf5notifyconfig-dev libkf5package-dev libkf5parts-dev libkf5people-dev libkf5pimcommon-dev libkf5pimtextedit-dev libkf5plasma-dev libkf5plotting-dev libkf5prison-dev libkf5pty-dev libkf5purpose-dev libkf5qqc2desktopstyle-dev libkf5runner-dev libkf5sane-dev libkf5screen-dev libkf5sendlater-dev libkf5service-dev libkf5solid-dev libkf5sonnet-dev libkf5su-dev libkf5syndication-dev libkf5syntaxhighlighting-dev libkf5sysguard-dev libkf5templateparser-dev libkf5texteditor-dev libkf5textwidgets-dev libkf5threadweaver-dev libkf5tnef-dev libktorrent-dev libkf5unitconversion-dev libkf5vkontakte-dev libkf5wallet-dev libkf5wayland-dev libkf5webengineviewer-dev libkf5webkit-dev libkf5widgetsaddons-dev libkf5windowsystem-dev libkf5xmlgui-dev libkf5xmlrpcclient-dev autoconf bison breeze-dev build-essential bzr cmake cmake-data debhelper dh-apparmor doxygen extra-cmake-modules flex fontforge gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 git gperf icu-devtools kded5-dev kscreenlocker-dev kwin-dev libaccounts-glib-dev libappstreamqt-dev libapr1 libaprutil1 libarchive-dev libasound2-dev libattr1-dev libboost-dev libbz2-dev libcanberra-dev libclang-3.9-dev libclang-dev libcln-dev libcups2-dev libegl1-mesa-dev libepoxy-dev libexiv2-dev libfakekey-dev libfontconfig1-dev libfreetype6-dev libgconf2-dev libgcrypt20-dev libgif-dev libglib2.0-dev libgmp-dev libgmpxx4ldbl libgpgme11-dev libgps-dev libgrantlee5-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgtk-3-dev libhunspell-dev libibus-1.0-dev libicu-dev libjpeg8-dev libjpeg-dev libjpeg-turbo8-dev libjson-perl libkaccounts-dev liblcms2-dev liblmdb-dev libmlt-dev libmlt++-dev libnm-dev libnm-glib-dev libnm-util-dev libpackagekitqt5-dev libpam-dev libphonon4qt5-dev libphonon4qt5experimental-dev libpng-dev libpolkit-agent-1-dev libpolkit-backend-1-dev libpolkit-gobject-1-dev libpulse-dev libpwquality-dev libqalculate-dev libqca-qt5-2-dev libqimageblitz-dev libqrencode-dev libqt5sensors5 libqt5sensors5-dev libqt5svg5-dev libqt5texttospeech5-dev libqt5webkit5-dev libqt5x11extras5-dev libqt5xmlpatterns5-dev libraw1394-dev libscim-dev libserf-1-1 libsm-dev libssl-dev libsvn1 libtiff5-dev libudev-dev libusb-dev libvlccore-dev libvlc-dev libvncserver-dev libwww-perl libx11-dev libx11-xcb-dev libxapian-dev libxcb1-dev libxcb-composite0-dev libxcb-cursor0 libxcb-cursor-dev libxcb-damage0-dev libxcb-dpms0 libxcb-dpms0-dev libxcb-ewmh2 libxcb-ewmh-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-record0-dev libxcb-render-util0-dev libxcb-res0 libxcb-res0-dev libxcb-screensaver0 libxcb-screensaver0-dev libxcb-shm0-dev libxcb-util0-dev libxcb-xf86dri0 libxcb-xf86dri0-dev libxcb-xinerama0 libxcb-xinerama0-dev libxcb-xkb-dev libxcb-xtest0-dev libxcb-xv0 libxcb-xv0-dev libxcb-xvmc0 libxcb-xvmc0-dev libxcursor-dev libxft-dev libxi-dev libxkbfile-dev libxml2-dev libxml-parser-perl libxrender-dev libxslt1-dev libxslt-dev llvm llvm-3.9 modemmanager-dev network-manager-dev openbox oxygen-icon-theme perl-modules pkg-config pkg-kde-tools plasma-workspace-dev po-debconf qml-module-qtquick* qt5-qmake qtbase5-dev qtbase5-dev-tools qtbase5-private-dev qtdeclarative5-dev qtquickcontrols2-5-dev qtscript5-dev qttools5-dev qtxmlpatterns5-dev-tools shared-mime-info subversion texinfo xauth xcb-proto xserver-xorg-dev xserver-xorg-input-evdev-dev xserver-xorg-input-libinput-dev xserver-xorg-input-synaptics-dev xsltproc xvfb<br />
</pre><br />
<br />
<br />
=== Fedora=== <br />
All the dependencies used for building frameworks can be installed by running:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo dnf install perl-IPC-Cmd perl-JSON-PP perl-YAML-Syck qt5-devel qt5-qtquickcontrols2-devel polkit-devel gperf libxslt-devel libxml2-devel kf5-kconfigwidgets-devel libXrender-devel qrencode-devel xcb*-devel flex systemd-devel giflib-devel libjpeg-turbo-devel NetworkManager-glib-devel NetworkManager-libnm-devel ModemManager-devel libattr-devel openssl-devel libSM-devel wayland-devel lmdb-devel libaccounts-qt5-devel libaccounts-glib-devel signon-devel<br />
</pre><br />
<br />
<br />
=== openSUSE === <br />
<br />
==== openSUSE Leap 15 (Argon) ====<br />
<br />
Updated 24 June 2018 (likely incomplete)<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;">$ sudo zypper si -d libqt5-qtbase<br />
$ sudo zypper in libbz2-devel libxslt-devel libxml2-devel shared-mime-info oxygen-icon-theme giflib-devel vlc-devel doxygen gstreamer-devel gstreamer-plugins-base-devel docbook-xml-slides docbook-xsl-stylesheets xcb-util-keysyms-devel perl-JSON boost-devel libxcb-devel libXrender-devel xcb-util-wm-devel xcb-util-devel xcb-util-image-devel gettext-tools libepoxy-devel<br />
$ sudo zypper in gtk3-devel<br />
$ sudo zypper in grantlee5-devel kactivities5-devel plasma-framework-devel plasma5-addons-devel plasma5-workspace-devel libQt5Concurrent-devel libQt5DBus-devel libQt5PrintSupport-devel xcb-util-cursor-devel libqt5-qtx11extras-devel xcb-proto-devel git-core</pre><br />
<br />
==== openSUSE 42.1 ====<br />
<br />
Install these packages (including the recommended packages):<br />
<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo zypper install patterns-openSUSE-devel_kde patterns-openSUSE-devel_kde_frameworks git-core bzr ninja \<br />
gettext-tools libqt5-qttools libgypsy0 libqt5-creator libqt5-linguist libqt5-qtbase-common-devel libqt5-qtbase-devel libqt5-qtbase-examples libqt5-qtdeclarative-devel libqt5-qtdeclarative-examples libqt5-qtdeclarative-tools libqt5-qtdoc libqt5-qtgraphicaleffects libqt5-qtimageformats libqt5-qtimageformats-devel libqt5-qtmultimedia-devel libqt5-qtmultimedia-examples libqt5-qtquick1-devel libqt5-qtquickcontrols libqt5-qtscript-devel libqt5-qtscript-examples libqt5-qtsvg-devel libqt5-qttools-devel libqt5-qtx11extras-devel libqt5-qtxmlpatterns-devel libqt5-qtxmlpatterns-examples libQt5CLucene5 libQt5Concurrent-devel libQt5Concurrent5 libQt5Core-devel libQt5Core5 libQt5DBus-devel libQt5DBus5 libQt5Declarative5 libQt5Designer5 libQt5DesignerComponents5 libQt5Gui-devel libQt5Gui5 libQt5Help5 libQt5Multimedia5 libQt5Network-devel libQt5Network5 libQt5OpenGL-devel libQt5OpenGL5 libQt5Positioning5 libQt5PrintSupport-devel libQt5PrintSupport5 libQt5Script5 libQt5Sensors5 libQt5Sql-devel libQt5Sql5 libQt5Sql5-mysql libQt5Sql5-postgresql libQt5Sql5-sqlite libQt5Sql5-unixODBC libQt5Svg5 libQt5Test-devel libQt5Test5 libQt5WebKit5 libQt5WebKitWidgets5 libQt5Widgets-devel libQt5Widgets5 libQt5X11Extras5 libQt5Xml-devel libQt5Xml5 libQt5XmlPatterns5 libQtQuick5 libQt5WebKitWidgets-devel libqt5-qtbase-private-headers-devel \<br />
xcb-util-keysyms-devel docbook-xsl-stylesheets doxygen polkit-devel libepoxy-devel boost-devel libXcursor-devel libSM-devel giflib-devel libaccounts-qt5-devel gtk3-devel libpng16-devel fltk-devel libopenssl-devel libattr-devel ModemManager-devel NetworkManager-devel wayland-devel lmdb-devel xcb-proto-devel xcb-util-image-devel xcb-util-cursor-devel xcb-util-devel gtk2-devel libqca-qt5-devel libpwquality-devel libical-devel PackageKit-Qt5-devel pam-devel \<br />
bison flex libqt5-qttools-doc<br />
</pre><br />
<br />
* OPEN ISSUES:<br />
** on my system 'ninja-1.6.0' was installed and when using 'custom-build-command ninja' in the kdesrc-buildrc below, the build of modules fails), maybe see https://bugs.kde.org/show_bug.cgi?id=331654<br />
<br />
* Failing modules (of more than 200 modules)<br />
** phonon-vlc, phonon-gstreamer, plasma-pa (PulseAudio missing), kdevplatform, plasma-desktop, kaccounts-integration, kaccounts-mobile, gwenview, kdevelop, libksane, skanlite, ... (see below for solutions)<br />
<br />
==== openSuSE Tumbleweed ====<br />
This more complete list (which probably works for OpenSuSE 42.1 as well) allows to compile everything that kdesrc-build's default setup (kf5-qt5-build-include) compiles. Note that it doesn't contain Qt or Qt-based libs, you need that on top, or to compile your own Qt (and then include custom-qt5-libs-build-include in kdesrc-buildrc).<br />
<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo zypper install patterns-kde-devel_kde_frameworks patterns-kde-devel_qt5 make cmake extra-cmake-modules ccache git bzr antlr antlr-java antlr-devel astyle autoconf flac gettext-tools intltool libMagick++-devel libplotter2 libtool pstoedit subversion-devel subversion-tools xscreensaver-data libxslt-devel docbook-xsl-stylesheets libpoppler-devel aspell-devel enchant-devel libidn-devel polkit-devel update-desktop-files atk-devel bluez-devel fdupes gdk-pixbuf-devel gtk3-devel libcanberra-devel libexiv2-devel libpulse-devel gtk-doc libsmbclient-devel libssh-devel libusb-1_0-devel libusb-compat-devel libxine-devel libxklavier16 libxklavier-devel xwininfo NetworkManager-devel ModemManager-devel libssh2-devel openslp-devel pango-devel xz-devel libgssglue-devel libjasper-devel libudev-devel utempter-devel libbotan-devel libmysqlclient-devel postgresql-devel libmysqld-devel cgdb gstreamer-plugins-base-devel gstreamer-devel libsamplerate-devel audiofile-devel flac-devel libvorbis-devel fftw3-devel libmusicbrainz-devel cdparanoia-devel flex parted-devel libopus-devel giflib-devel pciutils-devel pam-devel boost-devel libv4l-devel cyrus-sasl-devel libgpgme-devel libical-devel sane-backends-devel libgphoto2-devel doxygen makeinfo LibVNCServer-devel speex-devel libotr-devel libmms-devel libsndfile-devel mpfr-devel libzeitgeist-devel gperf libcap-devel libarchive-devel telepathy-logger-devel libpwquality-devel opencv-devel glew-devel libxapian-devel libblkid-devel libatasmart-devel libiodbc-devel xcb-util-wm-devel xcb-util-renderutil-devel xcb-util-keysyms-devel xcb-util-image-devel xcb-util-cursor-devel libxkbcommon-devel vlc-devel libicu-devel icu-data libkolabxml-devel xsd libffi-devel-gcc5 perl-Tie-IxHash perl-JSON perl-Text-CSV perl-YAML-Syck hunspell-devel ffmpeg-devel libacl-devel libnl-devel liboauth-devel libepub-devel libicecream-devel docbook2X liblcms2-devel libeigen2-devel eigen3-devel graphviz-devel liboyranos-devel libraw-devel xf86-input-wacom-devel libwacom-devel xf86-input-synaptics-devel xorg-x11-server-sdk libdiscid-devel libmlt++-devel libdmtx-devel qrencode-devel libfunambol-devel libmtp-devel at-spi2-core-devel openal-soft-devel python-sip-devel libXcm-devel libspeechd-devel libraw-devel ModemManager-devel farstream-devel tesseract-ocr-devel mtdev-devel fontforge-devel cups-devel libepoxy-devel openconnect-devel lmdb-devel libpgf-devel llvm-devel llvm-clang-devel binutils-devel libdwarf-devel libelf-devel plymouth-devel libfakekey-devel python-GitPython php php-curl telepathy-mission-control-devel libaccounts-glib-devel<br />
</pre><br />
<br />
== For Plasma ==<br />
* Arch/Antergos/Manjaro: <code>sudo pacman -S plasma-desktop plasma-workspace kwin</code><br />
* Fedora: <code>sudo dnf builddep plasma-desktop plasma-workspace kwin</code><br />
* KDE neon/Kubuntu/Ubuntu/Debian <code>sudo apt build-dep plasma-desktop plasma-workspace kwin</code><br />
* openSUSE Leap & Tumbleweed: <code>sudo zypper si -d plasma-desktop plasma-workspace kwin</code><br />
<br />
Any other dependencies can be figured out and installed as you continue building the modules one by one.<br />
<br />
== Quick fixes for package manager errors ==<br />
The above lists might not always be working out of the box on your specific distribution or might be out of date for individual packages. In many cases removing single packages from the lists above still allows you to build many KDE frameworks and applications.<br />
<br />
In case it is a package added by a regex, you can exclude the specific package by a workaround using sed. Let us assume for an example that we want to install "libkf5.*-dev" on deb-based systems but have uninstallable packages libkf5example1-dev, libkf5example2-dev. Then we install all "libkf5.*-dev" packages excluding libkf5example1-dev and libkf5example2-dev through:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;">$ sudo apt install $(apt-cache search -n "libkf5.*-dev" | sed 's/ - .*//' | sed '/libkf5example1-dev/d' | sed '/libkf5example2-dev/d')</pre></div>GB 2https://community.kde.org/index.php?title=Guidelines_and_HOWTOs/Build_from_source/Install_the_dependencies&diff=83070Guidelines and HOWTOs/Build from source/Install the dependencies2019-02-22T14:08:58Z<p>GB 2: Update KDE neon, Debian, Ubuntu, Kubuntu Packages</p>
<hr />
<div>In the following we give the dependencies to install. However it might change and this page might be quickly outdated.<br />
<br />
Reading the <code>CMakeLists.txt</code> of the packages you want to install should help you finding what you '''really''' need to install. Or read the error logs (see below).<br />
<br />
If you need help, see https://community.kde.org/Get_Involved#Getting_in_touch<br />
<br />
== For the frameworks ==<br />
<br />
=== Arch, Antergos, Manjaro === <br />
All the dependencies used for building frameworks can be installed by running:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo pacman -Sy --needed phonon-qt5 qt5-webkit qt5-script qt5-svg qt5-tools qt5-x11extras enchant jasper openexr libutempter docbook-xsl shared-mime-info giflib libxss upower udisks2 bzr git doxygen perl-json perl-libwww perl-xml-parser perl-io-socket-ssl akonadi xorg-server-devel libpwquality fontforge eigen libfakekey qca-qt5 xapian-core xsd gperf perl-yaml-syck intltool kdesdk<br />
</pre><br />
<br />
<br />
=== KDE neon, Debian, Ubuntu, Kubuntu === <br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo apt install libkf5activities-dev libkf5activitiesstats-dev libkf5akonadi-dev libkf5akonadicalendar-dev libkf5akonadicontact-dev libkf5akonadimime-dev libkf5akonadinotes-dev libkf5akonadisearch-dev libkf5alarmcalendar-dev libkf5archive-dev libkf5attica-dev libkf5auth-dev baloo-kf5-dev libkf5baloowidgets-dev libkf5blog-dev libkf5bluezqt-dev libkf5bookmarks-dev libkf5calendarcore-dev libkf5calendarsupport-dev libkf5calendarutils-dev libkf5cddb-dev libkf5codecs-dev libkf5compactdisc-dev libkf5completion-dev libkf5config-dev libkf5configwidgets-dev libkf5contacteditor-dev libkf5contacts-dev libkf5coreaddons-dev libkf5crash-dev libkf5dbusaddons-dev libkf5dnssd-dev libkf5declarative-dev kgendesignerplugin libkf5doctools-dev libkf5emoticons-dev libkf5eventviews-dev libkf5filemetadata-dev libkf5followupreminder-dev libkf5style-dev libkf5globalaccel-dev libkf5grantleetheme-dev libkf5gravatar-dev libkf5guiaddons-dev libkf5holidays-dev libkf5i18n-dev libkf5imap-dev libkf5iconthemes-dev libkf5identitymanagement-dev libkf5idletime-dev libkf5incidenceeditor-dev kinit-dev libkf5itemmodels-dev libkf5itemviews-dev libkf5kjs-dev libkf5jobwidgets-dev libkf5jsembed-dev libkf5kcmutils-dev libkf5kdelibs4support-dev libkf5kdegames-dev libkf5kdcraw-dev libkf5kexiv2-dev libkf5kgeomap-dev libkf5khtml-dev libkf5kio-dev libkf5kmahjongglib-dev libkf5kaddressbookgrantlee-dev libkf5kaddressbookimportexport-dev libkf5kdepimdbusinterfaces-dev libkf5kipi-dev kirigami2-dev libkf5konq-dev libkf5kontactinterface-dev kross-dev libkf5ldap-dev libkf5ksieve-dev libkf5libkdepim-dev libkf5libkleo-dev libkf5mailcommon-dev libkf5mailimporter-dev libkf5mailtransport-dev libkf5mbox-dev libkf5mediaplayer-dev libkf5mediawiki-dev libkf5messagecomposer-dev libkf5messagecore-dev libkf5messagelist-dev libkf5messageviewer-dev libkf5mime-dev libkf5mimetreeparser-dev modemmanager-qt-dev libkf5networkmanagerqt-dev libkf5newstuff-dev libkf5notifications-dev libkf5notifyconfig-dev libkf5package-dev libkf5parts-dev libkf5people-dev libkf5pimcommon-dev libkf5pimtextedit-dev libkf5plasma-dev libkf5plotting-dev libkf5prison-dev libkf5pty-dev libkf5purpose-dev libkf5qqc2desktopstyle-dev libkf5runner-dev libkf5sane-dev libkf5screen-dev libkf5sendlater-dev libkf5service-dev libkf5solid-dev libkf5sonnet-dev libkf5su-dev libkf5syndication-dev libkf5syntaxhighlighting-dev libkf5sysguard-dev libkf5templateparser-dev libkf5texteditor-dev libkf5textwidgets-dev libkf5threadweaver-dev libkf5tnef-dev libktorrent-dev libkf5unitconversion-dev libkf5vkontakte-dev libkf5wallet-dev libkf5wayland-dev libkf5webengineviewer-dev libkf5webkit-dev libkf5widgetsaddons-dev libkf5windowsystem-dev libkf5xmlgui-dev libkf5xmlrpcclient-dev autoconf bison breeze-dev build-essential bzr cmake cmake-data debhelper dh-apparmor doxygen extra-cmake-modules flex fontforge gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 git gperf icu-devtools kded5-dev kscreenlocker-dev kwin-dev libaccounts-glib-dev libappstreamqt-dev libapr1 libaprutil1 libarchive-dev libasound2-dev libattr1-dev libboost-dev libbz2-dev libcanberra-dev libclang-3.9-dev libclang-dev libcln-dev libcups2-dev libegl1-mesa-dev libepoxy-dev libexiv2-dev libfakekey-dev libfontconfig1-dev libfreetype6-dev libgconf2-dev libgcrypt20-dev libgif-dev libglib2.0-dev libgmp-dev libgmpxx4ldbl libgpgme11-dev libgps-dev libgrantlee5-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgtk-3-dev libhunspell-dev libibus-1.0-dev libicu-dev libjpeg8-dev libjpeg-dev libjpeg-turbo8-dev libjson-perl libkaccounts-dev liblcms2-dev liblmdb-dev libmlt-dev libmlt++-dev libnm-dev libnm-glib-dev libnm-util-dev libpackagekitqt5-dev libpam-dev libphonon4qt5-dev libphonon4qt5experimental-dev libpng-dev libpolkit-agent-1-dev libpolkit-backend-1-dev libpolkit-gobject-1-dev libpulse-dev libpwquality-dev libqalculate-dev libqca-qt5-2-dev libqimageblitz-dev libqrencode-dev libqt5sensors5 libqt5sensors5-dev libqt5svg5-dev libqt5texttospeech5-dev libqt5webkit5-dev libqt5x11extras5-dev libqt5xmlpatterns5-dev libraw1394-dev libscim-dev libserf-1-1 libsm-dev libssl-dev libsvn1 libtiff5-dev libudev-dev libusb-dev libvlccore-dev libvlc-dev libvncserver-dev libwww-perl libx11-dev libx11-xcb-dev libxapian-dev libxcb1-dev libxcb-composite0-dev libxcb-cursor0 libxcb-cursor-dev libxcb-damage0-dev libxcb-dpms0 libxcb-dpms0-dev libxcb-ewmh2 libxcb-ewmh-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-record0-dev libxcb-render-util0-dev libxcb-res0 libxcb-res0-dev libxcb-screensaver0 libxcb-screensaver0-dev libxcb-shm0-dev libxcb-util0-dev libxcb-xf86dri0 libxcb-xf86dri0-dev libxcb-xinerama0 libxcb-xinerama0-dev libxcb-xkb-dev libxcb-xtest0-dev libxcb-xv0 libxcb-xv0-dev libxcb-xvmc0 libxcb-xvmc0-dev libxcursor-dev libxft-dev libxi-dev libxkbfile-dev libxml2-dev libxml-parser-perl libxrender-dev libxslt1-dev libxslt-dev llvm llvm-3.9 modemmanager-dev network-manager-dev openbox oxygen-icon-theme perl-modules pkg-config pkg-kde-tools plasma-workspace-dev po-debconf qml-module-qtquick* qt5-qmake qtbase5-dev qtbase5-dev-tools qtbase5-private-dev qtdeclarative5-dev qtquickcontrols2-5-dev qtscript5-dev qttools5-dev qtxmlpatterns5-dev-tools shared-mime-info subversion texinfo xauth xcb-proto xserver-xorg-dev xserver-xorg-input-evdev-dev xserver-xorg-input-libinput-dev xserver-xorg-input-synaptics-dev xsltproc xvfb<br />
</pre><br />
<br />
<br />
=== Fedora=== <br />
All the dependencies used for building frameworks can be installed by running:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo dnf install perl-IPC-Cmd perl-JSON-PP perl-YAML-Syck qt5-devel qt5-qtquickcontrols2-devel polkit-devel gperf libxslt-devel libxml2-devel kf5-kconfigwidgets-devel libXrender-devel qrencode-devel xcb*-devel flex systemd-devel giflib-devel libjpeg-turbo-devel NetworkManager-glib-devel NetworkManager-libnm-devel ModemManager-devel libattr-devel openssl-devel libSM-devel wayland-devel lmdb-devel libaccounts-qt5-devel libaccounts-glib-devel signon-devel<br />
</pre><br />
<br />
<br />
=== openSUSE === <br />
<br />
==== openSUSE Leap 15 (Argon) ====<br />
<br />
Updated 24 June 2018 (likely incomplete)<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;">$ sudo zypper si -d libqt5-qtbase<br />
$ sudo zypper in libbz2-devel libxslt-devel libxml2-devel shared-mime-info oxygen-icon-theme giflib-devel vlc-devel doxygen gstreamer-devel gstreamer-plugins-base-devel docbook-xml-slides docbook-xsl-stylesheets xcb-util-keysyms-devel perl-JSON boost-devel libxcb-devel libXrender-devel xcb-util-wm-devel xcb-util-devel xcb-util-image-devel gettext-tools libepoxy-devel<br />
$ sudo zypper in gtk3-devel<br />
$ sudo zypper in grantlee5-devel kactivities5-devel plasma-framework-devel plasma5-addons-devel plasma5-workspace-devel libQt5Concurrent-devel libQt5DBus-devel libQt5PrintSupport-devel xcb-util-cursor-devel libqt5-qtx11extras-devel xcb-proto-devel git-core</pre><br />
<br />
==== openSUSE 42.1 ====<br />
<br />
Install these packages (including the recommended packages):<br />
<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo zypper install patterns-openSUSE-devel_kde patterns-openSUSE-devel_kde_frameworks git-core bzr ninja \<br />
gettext-tools libqt5-qttools libgypsy0 libqt5-creator libqt5-linguist libqt5-qtbase-common-devel libqt5-qtbase-devel libqt5-qtbase-examples libqt5-qtdeclarative-devel libqt5-qtdeclarative-examples libqt5-qtdeclarative-tools libqt5-qtdoc libqt5-qtgraphicaleffects libqt5-qtimageformats libqt5-qtimageformats-devel libqt5-qtmultimedia-devel libqt5-qtmultimedia-examples libqt5-qtquick1-devel libqt5-qtquickcontrols libqt5-qtscript-devel libqt5-qtscript-examples libqt5-qtsvg-devel libqt5-qttools-devel libqt5-qtx11extras-devel libqt5-qtxmlpatterns-devel libqt5-qtxmlpatterns-examples libQt5CLucene5 libQt5Concurrent-devel libQt5Concurrent5 libQt5Core-devel libQt5Core5 libQt5DBus-devel libQt5DBus5 libQt5Declarative5 libQt5Designer5 libQt5DesignerComponents5 libQt5Gui-devel libQt5Gui5 libQt5Help5 libQt5Multimedia5 libQt5Network-devel libQt5Network5 libQt5OpenGL-devel libQt5OpenGL5 libQt5Positioning5 libQt5PrintSupport-devel libQt5PrintSupport5 libQt5Script5 libQt5Sensors5 libQt5Sql-devel libQt5Sql5 libQt5Sql5-mysql libQt5Sql5-postgresql libQt5Sql5-sqlite libQt5Sql5-unixODBC libQt5Svg5 libQt5Test-devel libQt5Test5 libQt5WebKit5 libQt5WebKitWidgets5 libQt5Widgets-devel libQt5Widgets5 libQt5X11Extras5 libQt5Xml-devel libQt5Xml5 libQt5XmlPatterns5 libQtQuick5 libQt5WebKitWidgets-devel libqt5-qtbase-private-headers-devel \<br />
xcb-util-keysyms-devel docbook-xsl-stylesheets doxygen polkit-devel libepoxy-devel boost-devel libXcursor-devel libSM-devel giflib-devel libaccounts-qt5-devel gtk3-devel libpng16-devel fltk-devel libopenssl-devel libattr-devel ModemManager-devel NetworkManager-devel wayland-devel lmdb-devel xcb-proto-devel xcb-util-image-devel xcb-util-cursor-devel xcb-util-devel gtk2-devel libqca-qt5-devel libpwquality-devel libical-devel PackageKit-Qt5-devel pam-devel \<br />
bison flex libqt5-qttools-doc<br />
</pre><br />
<br />
* OPEN ISSUES:<br />
** on my system 'ninja-1.6.0' was installed and when using 'custom-build-command ninja' in the kdesrc-buildrc below, the build of modules fails), maybe see https://bugs.kde.org/show_bug.cgi?id=331654<br />
<br />
* Failing modules (of more than 200 modules)<br />
** phonon-vlc, phonon-gstreamer, plasma-pa (PulseAudio missing), kdevplatform, plasma-desktop, kaccounts-integration, kaccounts-mobile, gwenview, kdevelop, libksane, skanlite, ... (see below for solutions)<br />
<br />
==== openSuSE Tumbleweed ====<br />
This more complete list (which probably works for OpenSuSE 42.1 as well) allows to compile everything that kdesrc-build's default setup (kf5-qt5-build-include) compiles. Note that it doesn't contain Qt or Qt-based libs, you need that on top, or to compile your own Qt (and then include custom-qt5-libs-build-include in kdesrc-buildrc).<br />
<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;"><br />
$ sudo zypper install patterns-kde-devel_kde_frameworks patterns-kde-devel_qt5 make cmake extra-cmake-modules ccache git bzr antlr antlr-java antlr-devel astyle autoconf flac gettext-tools intltool libMagick++-devel libplotter2 libtool pstoedit subversion-devel subversion-tools xscreensaver-data libxslt-devel docbook-xsl-stylesheets libpoppler-devel aspell-devel enchant-devel libidn-devel polkit-devel update-desktop-files atk-devel bluez-devel fdupes gdk-pixbuf-devel gtk3-devel libcanberra-devel libexiv2-devel libpulse-devel gtk-doc libsmbclient-devel libssh-devel libusb-1_0-devel libusb-compat-devel libxine-devel libxklavier16 libxklavier-devel xwininfo NetworkManager-devel ModemManager-devel libssh2-devel openslp-devel pango-devel xz-devel libgssglue-devel libjasper-devel libudev-devel utempter-devel libbotan-devel libmysqlclient-devel postgresql-devel libmysqld-devel cgdb gstreamer-plugins-base-devel gstreamer-devel libsamplerate-devel audiofile-devel flac-devel libvorbis-devel fftw3-devel libmusicbrainz-devel cdparanoia-devel flex parted-devel libopus-devel giflib-devel pciutils-devel pam-devel boost-devel libv4l-devel cyrus-sasl-devel libgpgme-devel libical-devel sane-backends-devel libgphoto2-devel doxygen makeinfo LibVNCServer-devel speex-devel libotr-devel libmms-devel libsndfile-devel mpfr-devel libzeitgeist-devel gperf libcap-devel libarchive-devel telepathy-logger-devel libpwquality-devel opencv-devel glew-devel libxapian-devel libblkid-devel libatasmart-devel libiodbc-devel xcb-util-wm-devel xcb-util-renderutil-devel xcb-util-keysyms-devel xcb-util-image-devel xcb-util-cursor-devel libxkbcommon-devel vlc-devel libicu-devel icu-data libkolabxml-devel xsd libffi-devel-gcc5 perl-Tie-IxHash perl-JSON perl-Text-CSV perl-YAML-Syck hunspell-devel ffmpeg-devel libacl-devel libnl-devel liboauth-devel libepub-devel libicecream-devel docbook2X liblcms2-devel libeigen2-devel eigen3-devel graphviz-devel liboyranos-devel libraw-devel xf86-input-wacom-devel libwacom-devel xf86-input-synaptics-devel xorg-x11-server-sdk libdiscid-devel libmlt++-devel libdmtx-devel qrencode-devel libfunambol-devel libmtp-devel at-spi2-core-devel openal-soft-devel python-sip-devel libXcm-devel libspeechd-devel libraw-devel ModemManager-devel farstream-devel tesseract-ocr-devel mtdev-devel fontforge-devel cups-devel libepoxy-devel openconnect-devel lmdb-devel libpgf-devel llvm-devel llvm-clang-devel binutils-devel libdwarf-devel libelf-devel plymouth-devel libfakekey-devel python-GitPython php php-curl telepathy-mission-control-devel libaccounts-glib-devel<br />
</pre><br />
<br />
== For Plasma ==<br />
* Arch/Antergos/Manjaro: <code>sudo pacman -S plasma-desktop plasma-workspace kwin</code><br />
* Fedora: <code>sudo dnf builddep plasma-desktop plasma-workspace kwin</code><br />
* KDE Neon/Kubuntu/Ubuntu/Debian <code>sudo apt build-dep plasma-desktop plasma-workspace kwin</code><br />
* openSUSE Leap & Tumbleweed: <code>sudo zypper si -d plasma-desktop plasma-workspace kwin</code><br />
<br />
Any other dependencies can be figured out and installed as you continue building the modules one by one.<br />
<br />
<br />
== Quick fixes for package manager errors ==<br />
The above lists might not always be working out of the box on your specific distribution or might be out of date for individual packages. In many cases removing single packages from the lists above still allows you to build many KDE frameworks and applications.<br />
<br />
In case it is a package added by a regex, you can exclude the specific package by a workaround using sed. Let us assume for an example that we want to install "libkf5.*-dev" on deb-based systems but have uninstallable packages libkf5example1-dev, libkf5example2-dev. Then we install all "libkf5.*-dev" packages excluding libkf5example1-dev and libkf5example2-dev through:<br />
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: normal;">$ sudo apt install $(apt-cache search -n "libkf5.*-dev" | sed 's/ - .*//' | sed '/libkf5example1-dev/d' | sed '/libkf5example2-dev/d')</pre></div>GB 2