Building GIMP for Linux
The main GIMP building instructions are at Building GIMP. This page is for Linux-specific additions. It will help installing the dependencies for some distros, ideally with all build options enabled.
Supported Distributions
GIMP can be built, in principle, on pretty much any GNU/Linux distribution
out there. For the stable branch in particular, we take great care at
not bumping the minimum requirements too often. We also try not to bump
build tools (e.g. meson
) without a good reason. But we allow a bit more
flexibility for optional dependencies.
For the development branch, requirements might be higher than the stable branch, though we also try to avoid bumping. First, we try to never bump a dependency if the minimum version is not already at least in Debian testing since it is “reasonably recent yet not too recent”. Also, we will try to find ways to use new features while still keeping an old requirement (for instance using macros to test the dependency version).
As a general advice, software contributors should anyway use distributions
providing reasonably recent packages (e.g. Debian testing, Fedora, Arch)
if you don’t want to have to compile yourself too many dependencies,
which sadly is the case of distributions with longer support (e.g. Ubuntu LTS).
Ideally, in GIMP case, you should only have to build babl
, GEGL
and
GIMP
. All the rest could come from the package manager.
Debian testing
Since our CI build for the
development branch uses Debian testing, and that we try to keep this build
as full-featured and up-to-date as possible (because it is here to warn us of
any new issue), if you use Debian testing, it might be a very good idea to look
at the .gitlab-ci.yml
file in the GIMP source you cloned or downloaded.
In particular, look at the image-debian-x64
job for most dependencies
installed from the package manager.
The dependencies we build ourselves are in the main page.
Debian stable
Similarly, our CI build for the
stable branch uses Debian stable. So, look at the stable .gitlab-ci.yml
.
Other distributions
Regarding the distributions below, we reinforce the advice regarding babl and GEGL. Also, some things should be considered:
Debian flavors and derivatives using apt
If your distribution is Debian-based (Ubuntu, Linux Mint…), a good start
would be to install clang
or build-essential
. There exists also a
special command which would install all the packages necessary to build
the GIMP version supported by the distro (normally closer to stable):
sudo apt build-dep gimp
You may get an error about incomplete sources.list
. If this happens,
this forum thread gives a few hints on how to properly set your system
with CLI and
GUI alternative methods:
https://askubuntu.com/a/857433
Fedora and other distributions using dnf
Fedora has a similar command as Debian which will install all packages needed
to build the supported GIMP version (which can, but not always, be close to
master
, due this distro being “dev oriented” like Debian, as said above):
sudo dnf builddep gimp
Note: builddep
is a plug-in to dnf
so it might require getting installed
first.
Building with Flatpak for all distributions
Most contributors simply build GIMP the “old-school” way above, nevertheless it’s possible to use Flatpak as a development environment, which is specially useful for contributors who not use our supported distros. Here is how this can be done:
Running, from GIMP source, build/linux/flatpak/1_build-deps-flatpak.sh
then
build/linux/flatpak/2_build-gimp-flatpak.sh
might be all there is to do.
To better understand the compilation flow, you may read below.
Install the dependencies
Install flatpak-builder
package, available for most distributions.
Install the runtime and corresponding SDK if you haven’t already:
flatpak remote-add --if-not-exists --user --from gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo
flatpak install --user gnome-nightly org.gnome.Platform/$(uname -m)/master org.gnome.Sdk/$(uname -m)/master -y
Setting up the environment
You just need to set GIMP_PREFIX
. Due to sandboxing, the other variables
outlined in the main page are of no use (neither at build time nor at runtime).
Building the software
From GIMP source dir, let’s build all the deps not present in GNOME runtime:
flatpak-builder --force-clean --ccache --state-dir=../.flatpak-builder --keep-build-dirs --stop-at=gimp \
"$GIMP_PREFIX" build/linux/flatpak/org.gimp.GIMP-nightly.json 2>&1 | tee flatpak-builder.log
- Note that this will take a lot of time. So, we configured it to use
ccache
for future speed, and to keep built files (found in../.flatpak-builder/build/
). For that same reason, the command log will be stored inflatpak-builder.log
.
Now build and install GIMP with the standard meson-ninja commands Just make sure of adding, before each of them, a wrapper this way:
flatpak-builder --run --ccache "$GIMP_PREFIX" build/linux/flatpak/org.gimp.GIMP-nightly.json command_here
As explained above, we set only one var so additional meson options are needed:
-Dprefix=/app/ -Dlibdir=/app/lib/
.
Running your flatpak
Finally, you can just run your flatpak directly with:
flatpak-builder --run "$GIMP_PREFIX" build/linux/flatpak/org.gimp.GIMP-nightly.json gimp
If you need to export the built files to a repo or even create a .flatpak to test, you can make things a bit easier by running the scripts this way:
# Build then exports the exact same way as our CI
build/linux/flatpak/1_build-deps-flatpak.sh --ci
build/linux/flatpak/2_build-gimp-flatpak.sh --ci
# Creates .flatpak file to be installed
build/linux/flatpak/3_dist-gimp-flatpak.sh