【Solved myself】How do I build Krita with Docker on Debian GNU Linux OS?

I’m developing new features for Krita.

But

$ cmake …/krita -DCMAKE_INSTALL_PREFIX=$HOME/kritadev/install -DCMAKE_BUILD_TYPE=Debug -DKRITA_DEVS=ON

I get an error when running cmake on Debian.

CMake Error at CMakeLists.txt:1018 (find_package):
By not providing “FindImmer.cmake” in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by “Immer”, but
CMake did not find one.

Could not find a package configuration file provided by “Immer” with any of
the following names:

ImmerConfig.cmake
immer-config.cmake

Add the installation prefix of “Immer” to CMAKE_PREFIX_PATH or set
“Immer_DIR” to a directory containing one of the above files. If “Immer”
provides a separate development package or SDK, be sure it has been
installed.

Immer?

/usr/lib/riscv64-linux-gnu/cmake/Immer/ImmerConfig.cmake

RISC-V?

RISC-V CPU?

The /usr/lib/riscv64-linux-gnu/ directory does not exist on Debian for x86_64 CPU.

How do I build Krita with Docker on Debian?

Maybe I haven’t studied this enough, but I couldn’t understand this explanation.

Also, this explanation assumes Ubuntu, not Debian.

There is no /etc/docker/daemon.json on Docker for Debian.

I did the following on Debian.

$ sudo apt remove docker docker-engine docker.io containerd runc

$ sudo apt update

$ sudo apt install ca-certificates curl gnupg lsb-release

$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

$ echo
“deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] Index of linux/debian/
$(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

$ sudo apt update

$ sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

$ sudo docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

$ sudo docker run -it ubuntu bash

root@xxxxxxxxxxxx:/#

exit

$ cd ~

~$ mkdir docker

~$ sudo vi /etc/docker/daemon.json

{
“data-root” : “/home/yourusername/docker/”
}

:wq

~$ sudo systemctl stop docker.socket

~$ sudo systemctl status docker

Active: inactive (dead)

q

~$ sudo systemctl start docker

~$ git clone Dmitry Kazakov / Krita Docker Env · GitLab krita-auto-1

~$ cd krita-auto-1/

~/krita-auto-1$ mkdir persistent

~/krita-auto-1$ cd persistent/

~/krita-auto-1/persistent$ git clone git@invent.kde.org:youraccountid/krita.git

~/krita-auto-1/persistent$ cd krita

~/krita-auto-1/persistent/krita$ git branch -r | less

q

~/krita-auto-1/persistent/krita$ git checkout -b yourbranchname origin/yourbranchname

~/krita-auto-1/persistent/krita$ cd …

~/krita-auto-1/persistent$ cd …

~/krita-auto-1$ ls

Dockerfile bin default-home ubuntu-focal
README.md data persistent user-hooks.d

~/krita-auto-1$ ./bin/bootstrap-deps.sh

~/krita-auto-1$ ./bin/build_image krita-deps

=> ERROR [base_image 8/16] RUN groupadd -g 105 render 0.3s


[base_image 8/16] RUN groupadd -g 105 render:
0.292 groupadd: GID ‘105’ already exists


ERROR: failed to solve: process “/bin/sh -c groupadd -g ${RENDER_GID} render” did not complete successfully: exit code: 4

As a workaround I did the following:

~/krita-auto-1$ vi Dockerfile

RUN groupadd -g ${RENDER_GID} render

I changed this line to

RUN groupadd -g 1001 render

~/krita-auto-1$ ./bin/build_image krita-deps

~/krita-auto-1$ ./bin/run_container krita-deps krita-auto-1

~/krita-auto-1$ ./bin/enter

appimage@debian-note:/home/appimage/appimage-workspace/krita-build>cd /home/appimage/persistent

appimage@debian-note:/home/appimage/persistent>ls

deps downloads krita qtcreator-package.tar.gz

appimage@debian-note:/home/appimage/persistent>tar -zxvf qtcreator-package.tar.gz

appimage@debian-note:/home/appimage/persistent>cp -rp qtcreator ~/

appimage@debian-note:/home/appimage/persistent>exit

~/krita-auto-1$ ./bin/qtcreator

Menu

File>Open File or Project

/home/appimage/persistent/krita/CMakeLists.txt

Click Open Button

Click on the wrench icon that says Project

Click Configure Project Button

CMake

Build directory:

Click Browse…

/home/appimage/appimage-workspace/krita-build

Click Choose Button

Click OK Button

– Configuring done (15.2s)
– Generating done (6.8s)
CMake Warning:
Manually-specified variables were not used by the project:

QT_QMAKE_EXECUTABLE

– Build files have been written to: /home/appimage/appimage-workspace/krita-build
Elapsed time: 00:23.

Click on the hammer icon in the bottom left of the window to build

Click the 4. Compile Output tab at the bottom of the screen to see the progress of the build

When the build is complete, click the wrench icon on the left

Click the play button icon with the bug in the bottom left to debug

Signal Received - Qt Creator

The inferior stopped because it received a signal from the operating system.

Signal name : SIGABRT
Signal meaning : Aborted

Click OK Button

This will result in an error, but it is the correct procedure

Click the wrench icon labeled Projects on the left

Build & Run

Desktop

Click Run

Run

Run configuration:

Click Add… Button

Enter “Custom Executable” in the “Filter configuration by name” text box

Select Custom Executable and click Create Button

Executable:

Cilck Browse… Button

/home/appimage/appimage-workspace/deps/usr/bin/krita

Click Open Button

Click the play button icon with the bug in the bottom left to run debug

Signal Received - Qt Creator

The inferior stopped because it received a signal from the operating system.

Signal name : SIGABRT
Signal meaning : Aborted

Click OK Button

I successfully started Krita on my development branch debug build via Docker on Debian.

Oh!

I solved this question myself.

2 Likes

Because of:

That is factually wrong:

And here you can read more on this topic, and why it is how it is, if you like to:

But keep in mind, this forum is a project of volunteers and Krita development is run by 5 devs!

Michelist

1 Like

@Michelist
I am sorry.

I am grateful to you.

1 Like

I made a mistake in describing the steps to solve the problem myself, so I’m posting the revised version.

I did the following on Debian.

$ sudo apt remove docker docker-engine docker.io containerd runc

$ sudo apt update

$ sudo apt install ca-certificates curl gnupg lsb-release

$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

$ echo
“deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] Index of linux/debian/
$(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

$ sudo apt update

$ sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

$ sudo docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

$ sudo docker run -it ubuntu bash

root@xxxxxxxxxxxx:/#

exit

$ cd ~

~$ mkdir docker

~$ sudo vi /etc/docker/daemon.json

{
“data-root” : “/home/yourusername/docker/”
}

:wq

~$ sudo systemctl stop docker.socket

~$ sudo systemctl status docker

Active: inactive (dead)

q

~$ sudo systemctl start docker

~$ git clone Dmitry Kazakov / Krita Docker Env · GitLab krita-auto-1

~$ cd krita-auto-1/

~/krita-auto-1$ mkdir persistent

~/krita-auto-1$ cd persistent/

~/krita-auto-1/persistent$ git clone git@invent.kde.org:youraccountid/krita.git

~/krita-auto-1/persistent$ cd krita

~/krita-auto-1/persistent/krita$ git branch -r | less

q

~/krita-auto-1/persistent/krita$ git checkout -b yourbranchname origin/yourbranchname

~/krita-auto-1/persistent/krita$ cd …

~/krita-auto-1/persistent$ cd …

~/krita-auto-1$ ls

Dockerfile bin default-home ubuntu-focal
README.md data persistent user-hooks.d

~/krita-auto-1$ ./bin/bootstrap-deps.sh

~/krita-auto-1$ ./bin/build_image krita-deps

=> ERROR [base_image 8/16] RUN groupadd -g 105 render 0.3s


[base_image 8/16] RUN groupadd -g 105 render:
0.292 groupadd: GID ‘105’ already exists


ERROR: failed to solve: process “/bin/sh -c groupadd -g ${RENDER_GID} render” did not complete successfully: exit code: 4

As a workaround I did the following:

~/krita-auto-1$ vi Dockerfile

RUN groupadd -g ${RENDER_GID} render

I changed this line to

RUN groupadd -g 1001 render

~/krita-auto-1$ ./bin/build_image krita-deps

~/krita-auto-1$ ./bin/run_container krita-deps krita-auto-1

~/krita-auto-1$ ./bin/enter

appimage@debian-note:/home/appimage/appimage-workspace/krita-build>cd /home/appimage/persistent

appimage@debian-note:/home/appimage/persistent>ls

deps downloads krita qtcreator-package.tar.gz

appimage@debian-note:/home/appimage/persistent>tar -zxvf qtcreator-package.tar.gz

appimage@debian-note:/home/appimage/persistent>cp -rp qtcreator ~/

appimage@debian-note:/home/appimage/persistent>exit

~/krita-auto-1$ ./bin/qtcreator

Menu

File>Open File or Project

/home/appimage/persistent/krita/CMakeLists.txt

Click Open Button

Click Configure Project Button

Click on the wrench icon that says Project

CMake

Build directory:

Click Browse…

/home/appimage/appimage-workspace/krita-build

Click Choose Button

Click OK Button

– Configuring done (15.2s)
– Generating done (6.8s)
CMake Warning:
Manually-specified variables were not used by the project:

QT_QMAKE_EXECUTABLE

– Build files have been written to: /home/appimage/appimage-workspace/krita-build
Elapsed time: 00:23.

Click on the hammer icon in the bottom left of the window to build

Click the 4. Compile Output tab at the bottom of the screen to see the progress of the build

When the build is complete, click the wrench icon on the left

Build & Run

Desktop

Click Run

Run

Development

Click Add Deploy Step Button

Click CMake Build

Click the play button icon with the bug in the bottom left to run debug

Signal Received - Qt Creator

The inferior stopped because it received a signal from the operating system.

Signal name : SIGABRT
Signal meaning : Aborted

Click OK Button

This will result in an error, but it is the correct procedure

Click the wrench icon labeled Projects on the left

Run configuration:

Click Add… Button

Enter “Custom Executable” in the “Filter configuration by name” text box

Select Custom Executable and click Create Button

Executable:

Cilck Browse… Button

/home/appimage/appimage-workspace/deps/usr/bin/krita

Click Open Button

Click the play button icon with the bug in the bottom left to run debug

Signal Received - Qt Creator

The inferior stopped because it received a signal from the operating system.

Signal name : SIGABRT
Signal meaning : Aborted

Click OK Button

I successfully started Krita on my development branch debug build via Docker on Debian GNU Linux OS.

Next git push

$ cd ~/krita-auto-1/persistent/krita

~/krita-auto-1/persistent/krita$ git pull

~/krita-auto-1/persistent/krita$ cd ~/krita-auto-1

~/krita-auto-1$ ./bin/qtcreator

1 Like

Don’t worry, there is no need to be sorry, to say “I’m sorry”, you’re new here, and I just wanted to inform you about the context, because many users who are new here are not aware of it. And because of this lack of knowledge, there is often the impression that you are being ignored.
But it’s not like that, as you can see from the number of hits alone, it’s just that not everyone can answer every question.

Michelist