This project has been migrated to GNOME GitLab under World/gimp-ci. Refer to the documentation repository for better information. If you just want to build GIMP, then check out the GIMP development environment based on Docker. The Docker environment also allows you to run GIMP if you have Xorg display; instructions therein.
This is the development environment used by build.gimp.org to build and test GIMP from the latest development branches of BABL, GEGL, and GIMP.
- Getting started
- Building alternate GIMP versions
- Run end to end testing
- Troubleshooting builds on build.gimp.org
- Manually build GIMP inside Docker
Recommended system specifications:
- Recommended CPUs: 2 or more cores (tested with 4 CPUs).
- Recommended RAM: 4GB or more (tested with 32GB RAM).
- Recommended free disk: 2GB or more (tested with 231GB disk).
Recommended Software:
- Linux Kernel (tested with
4.13.0-41-generic x86_64 x86_64
) - Docker (tested with
Docker version 18.03.1-ce, build 9ee9f40
) - X Window System (a.k.a. X11) (tested with
X11R7.7
)
If using Mac OS X:
Running make
without arguments will display a helpful getting started message.
GIMP Development Environment
============================
Welcome to developing GIMP within Docker! Here are some helpful make commands
which simplify using Docker to develop GIMP.
Start the GUI of the latest development version (to run tests remove the
`SKIP_TESTS` argument).
make SKIP_TESTS=1 build-gimp
make gimp-gui
Start an interactive terminal which also supports starting the GUI.
make interactive
Other supported make targets:
make clean
Will only delete the volume used to house internal binary artifacts
for building.
make clean-all
Deletes all volumes and Docker images created by this repository.
If developing the container it is also recommended to run
"docker image prune"
make end-to-end
Builds everything from scratch and runs a test build of GIMP and
its dependencies. Covers GIMP versions 2.8, 2.10, and master.
This is meant for the CI environment to run a full container build
pulling in the latest Debian testing packages.
make promote
Promotes the latest unstable image to stable status and tags it.
This assumes the unstable image passed end to end testing. This is
meant for the CI environment to auto-promote its own images.
make dockerhub-publish
Publishes the latest stable images to the official GIMP Docker Hub
site. Assumes "make promotion" and "docker login" have been run.
This target is meant to be run by the CI environment.
Configurable environment variables:
BIN_SUFFIX
Configures an additional suffix for the gimp-bin docker volume.
The volume is used to hold intermediate binary artifacts. Useful
to customize working on multiple versions of GIMP simultaneously.
GEGL_BRANCH
Customize the git branch to build GEGL. Useful for building
alternate versions of GIMP.
GIMP_BRANCH
Customize the git branch to build GIMP. Useful for building
alternate versions of GIMP.
The GIMP Development Environment by default builds the latest development branch
(GIMP branch master
). However, other branches of GIMP and GEGL can be built
as well. Customizable environment variables.
Variable | Description |
---|---|
BIN_SUFFIX |
Customizes the intermediate binary artifact docker volume. |
GEGL_BRANCH |
Customizes the git branch to build for GEGL. |
GIMP_BRANCH |
Customizes the git branch to build for GIMP. |
The binary artifact volume (can be seen with docker volume ls
command) is
named gimp-bin
by default. This volume is used to share intermediate binary
artifacts in order to build GIMP and all of its dependencies across multiple
containers as well as launching the GIMP GUI. This should definitely be
customized if planning to build and launch multiple versions of GIMP
simultaneously.
To build and run the latest GIMP 2.8 run the following commands.
export BIN_SUFFIX='-2.8'
export GEGL_BRANCH='gegl-0-2'
export GIMP_BRANCH='gimp-2-8'
export SKIP_TESTS=1
make build-gimp
make gimp-gui
To build and run the latest GIMP 2.10 run the following commands.
export BIN_SUFFIX='-2.10'
export GIMP_BRANCH='gimp-2-10'
export SKIP_TESTS=1
make build-gimp
make gimp-gui
No environment changes are required to build GIMP from master
. Simply run:
export SKIP_TESTS=1
make build-gimp
make gimp-gui
End to end testing will start from the latest base debian:testing
docker image and builds from scratch the GIMP development environment (tagged as
docker image gimp:unstable
). Once the development environment is available
this will immediately run through building the latest development versions of
BABL, GEGL, libmypaint,
mypaint-brushes, and GIMP.
make end-to-end
Sometimes it might make sense to troubleshoot and replicate problems from build.gimp.org locally within the docker build environment. To that end the following environment variables and make commands are available.
Build scripts located in this repository are available inside of the interactive
environment at /mnt/debian-testing/
.
The following variables control build scripts. By default, the build scripts
run a build (via make install
) and tests (via make check
).
Variable | Description |
---|---|
SKIP_TESTS |
Skips make check which tests projects. |
INCLUDE_DISTCHECK |
Runs a make distcheck which doesn't run by default. |
The following variables customize what versions are built.
Variable | Description |
---|---|
BABL_BRANCH |
Customizes the git branch to build for BABL. |
GEGL_BRANCH |
Customizes the git branch to build for GEGL. |
GIMP_BRANCH |
Customizes the git branch to build for GIMP. |
# create volumes necessary for building GIMP
make volumes
# build only BABL
make build-babl-only
# build only GEGL
make build-gegl-only
# build only GIMP
make build-gimp-only
Since the gimp-bin
volume is necessary for saving artifacts from builds, then
to reset the troubleshooting environment this should be deleted and recreated
anew.
make clean-bin-volume volumes
Now build commands can run without any prior binary artifacts in the gimp-bin
docker volume.
Sometimes, it is desirable to replicate issues from artifacts created on
build.gimp.org. For example, let's utilize the interactive docker
environment to replicate a hypothetical issue on the GIMP master
branch.
# reset binary volumes
make clean-bin-volume volumes
# enter the interactive environment
make interactive
From within the interactive environment we can troubleshoot a build for GIMP by pulling down its prerequisite artifacts first.
# Download dependent artifacts from build.gimp.org
cd /data/
curl -LO https://build.gimp.org/job/babl/job/master/lastSuccessfulBuild/artifact/babl/babl-internal.tar.gz
curl -LO https://build.gimp.org/job/gegl/job/master/lastSuccessfulBuild/artifact/gegl-internal.tar.gz
curl -LO https://build.gimp.org/job/libmypaint/job/v1.3.0/lastSuccessfulBuild/artifact/libmypaint-internal.tar.gz
curl -LO https://build.gimp.org/job/mypaint-brushes/job/v1.3.x/lastSuccessfulBuild/artifact/mypaint-brushes-internal.tar.gz
cd "$HOME"
# Execute a build on the lastest GIMP master branch using the same build scripts
# as build.gimp.org
SKIP_MAKE_CHECK=1 bash /mnt/debian-testing/gimp.sh
# Execute tests
SKIP_MAKE_BUILD=1 bash /mnt/debian-testing/gimp.sh
# Execute a distcheck
SKIP_MAKE_BUILD=1 SKIP_MAKE_CHECK=1 INCLUDE_DISTCHECK=1 bash /mnt/debian-testing/gimp.sh
# When the build finishes gimp GUI can be started from within the interactive
# container.
gimp-2.99
Refer to detailed instructions on building GIMP within the dockerized development environment from scratch.
- The GIMP Team on IRC for patience and help.