If you use KDE Neon, run the following commands to install Docker and add yourself to the <code>docker</code> group, so you can use it:

+

If you use KDE Neon, Ubuntu or Debian, run the following commands to install Docker and add yourself to the <code>docker</code> group, so you can use it:

sudo apt install docker.io xserver-xephyr

sudo apt install docker.io xserver-xephyr

sudo usermod -aG docker $(whoami)

sudo usermod -aG docker $(whoami)

newgrp docker

newgrp docker

+

+

{{Warning|It's important to note that any user added to the docker group is root equivalent. More information [https://github.com/docker/docker/issues/9976 here] and [https://docs.docker.com/engine/security/security/ here].}}

On other distributions, please follow your distro's guide on how to set up Docker there, since the steps can differ slightly on different distributions.

On other distributions, please follow your distro's guide on how to set up Docker there, since the steps can differ slightly on different distributions.

Line 40:

Line 42:

In order to build the Docker image, run the <code>build.sh</code> script. If you are

In order to build the Docker image, run the <code>build.sh</code> script. If you are

−

using proprietary NVIDIA drivers, run the script with <code>-n</code> switch.

+

using proprietary NVIDIA drivers, run the script with the <code>-n</code> switch.

−

The command will create kdepim:dev Docker image.

+

The command will create a Docker image called kdepim:dev.

−

== Running Docker container ==

+

== Running the Docker container ==

−

To run the container, use the <code>run.sh</code> script:

+

To run the container, use the <code>run.sh</code> script:

run.sh $HOME/kdepim-dev

run.sh $HOME/kdepim-dev

−

If you are using proprietary NVIDIA drivers, run the script with <code>-n</code> switch:

+

If you are using proprietary NVIDIA drivers, run the script with the <code>-n</code> switch:

run.sh -n $HOME/kdepim-dev

run.sh -n $HOME/kdepim-dev

Line 57:

Line 59:

/home/neon/kdepim directory.

/home/neon/kdepim directory.

−

If you want to get another terminal window opened inside the same container, just run run.sh again, it will automatically create a new terminal on the already running docker.

+

If you want to get another terminal window opened inside the same container, just run run.sh again. It will automatically create a new terminal on the already running container.

+

+

''Note:''

+

<ul>In some systems, the container's /home/neon/kdepim directory may not be writable. If so, edit <code>run.sh</code> to remove the parameter <code>:rw,z</code> from the <code>-v</code> options. Then delete the container with the command <code>docker rm kdepim-dev</code>, and run the container again.

+

</ul>

== Building and updating KDE PIM ==

== Building and updating KDE PIM ==

Once inside the container, you can use the following command to compile the

Once inside the container, you can use the following command to compile the

−

entire KDE PIM:

+

entire KDE PIM suite:

kdesrc-build kde-pim

kdesrc-build kde-pim

This will take a lot of time the first time, but all subsequent builds will be

This will take a lot of time the first time, but all subsequent builds will be

−

faster thanks to incremental builds and use of ccache. You can also build use a specific repository name instead of the

+

faster thanks to incremental builds and use of ccache. You can also use a specific repository name instead of the

<code>kde-pim</code> group.

<code>kde-pim</code> group.

Check the [https://kdesrc-build.kde.org kdesrc-build documentation] for more

Check the [https://kdesrc-build.kde.org kdesrc-build documentation] for more

−

details about using kdesrc-build - for start you may want to customize the <code>-j</code> option in <code>make-options</code> option in kdesrc-build/kdesrc-buildrc.

+

details about using kdesrc-build. For a start, you may want to customize the <code>-j</code> option in the <code>make-options</code> option group in /home/neon/.kdesrc-buildrc.

−

kdesrc-build will clone all the repositories into /home/neon/kdepim/src/kde/pim,

+

kdesrc-build will clone all the repositories into /home/neon/kdepim/src/kde/pim.

−

build directories (where you can run <code>make</code> manually are in /home/neon/kdepim/build/kde/pim.

+

Build directories (where you can run <code>make</code> manually) are in /home/neon/kdepim/build/kde/pim.

−

The binaries are installed into /home/neon/kdepim/install (and the environment

+

The binaries are installed to /home/neon/kdepim/install. The environment

−

of the container is adjusted to work with the custom installation prefix).

+

of the container is adjusted to work with the custom installation prefix.

== Development tools ==

== Development tools ==

Line 89:

Line 95:

== Contributing ==

== Contributing ==

−

You can find more details in the [[KDE_PIM/Development|Development]] section of our wiki. If you have any issues or questions, feel free to stop by on our IRC channel (#kontact), or talk to us on the [[KDE_PIM/Development#Mailing_Lists|kde-pim mailinglist]].

+

You can find more details in the [[KDE_PIM/Development|Development]] section of our wiki. If you have any issues or questions, feel free to stop by on our IRC channel (#kontact) on freenode, or talk to us on the [[KDE_PIM/Development#Mailing_Lists|kde-pim mailinglist]].

Latest revision as of 22:18, 5 October 2018

To make developing KDE PIM as easy as possible we have prepared a Docker image based on the KDE Neon distribution. It contains all the dependencies necessary to compile KDE PIM, the environment for running self-compiled KDE PIM and pre-configured tool (kdesrc-build) used to build latest KDE PIM from sources.

Preparations

Next, create a directory where you want the sources code, build folders and everything else related to KDE PIM development to be stored. This is also where runtime data and configuration of Akonadi, Kontact and other apps you run inside the container will be stored. We will then expose this directory to the Docker container at runtime.

mkdir ~/kdepim-dev

Making OpenGL work in the container

Several parts of KDE PIM depend on OpenGL - this is due to our use of QtWebEngine, which is based on Blink and has a hard dependency on OpenGL for rendering web pages. There's no way around that and so we need to make OpenGL work in the container. Unfortunately, that is not a very straightforward process and it differs for each GPU vendor and drivers used.

NVIDIA proprietary drivers

The easiest way is to use NVIDIA's nvidia-docker from nvidia-docker Github. You can follow the instructions on the Github page regarding how to install it. The nvidia-docker will automatically find your installed NVIDIA drivers and will expose them into the Docker container at runtime, so you don't have to rebuild your container whenever you upgrade your NVIDIA drivers.

Note that if you do this, you must pass -n switch to the build.sh and run.sh scripts from the kdepim-docker.git repository.

Nouveau (NVIDIA opensource drivers)

TODO

Intel

Works out of the box

AMD/ATI

TODO

Building Docker image

In order to build the Docker image, run the build.sh script. If you are
using proprietary NVIDIA drivers, run the script with the -n switch.

The command will create a Docker image called kdepim:dev.

Running the Docker container

To run the container, use the run.sh script:

run.sh $HOME/kdepim-dev

If you are using proprietary NVIDIA drivers, run the script with the -n switch:

run.sh -n $HOME/kdepim-dev

The content of the directory will be available in the container in the
/home/neon/kdepim directory.

If you want to get another terminal window opened inside the same container, just run run.sh again. It will automatically create a new terminal on the already running container.

Note:

In some systems, the container's /home/neon/kdepim directory may not be writable. If so, edit run.sh to remove the parameter :rw,z from the -v options. Then delete the container with the command docker rm kdepim-dev, and run the container again.

Building and updating KDE PIM

Once inside the container, you can use the following command to compile the
entire KDE PIM suite:

kdesrc-build kde-pim

This will take a lot of time the first time, but all subsequent builds will be
faster thanks to incremental builds and use of ccache. You can also use a specific repository name instead of the
kde-pim group.

Check the kdesrc-build documentation for more
details about using kdesrc-build. For a start, you may want to customize the -j option in the make-options option group in /home/neon/.kdesrc-buildrc.

kdesrc-build will clone all the repositories into /home/neon/kdepim/src/kde/pim.
Build directories (where you can run make manually) are in /home/neon/kdepim/build/kde/pim.
The binaries are installed to /home/neon/kdepim/install. The environment
of the container is adjusted to work with the custom installation prefix.

Development tools

There's KDevelop and QtCreator
preinstalled in the container and you can run them from there. You can also use
them from outside of the container, but code completion might not work perfectly then.

You can also use any other IDE of your choice either by installing it into the container
with apt-get or use it from outside of the container.

Contributing

You can find more details in the Development section of our wiki. If you have any issues or questions, feel free to stop by on our IRC channel (#kontact) on freenode, or talk to us on the kde-pim mailinglist.