Skip to content
John Bell edited this page Jun 18, 2024 · 6 revisions

If you are here, the first step you'll need is to be able to build and test darktable.

Building & testing using SCBI

The SCBI tool (Setup Config Build Install) is a tool that can managed softwares from sources. It can configure, build and install it. The nice feature is that this tool is hybrid (can handle fully automated build and at the same time fully configurable from the command line). It handles user's checkout which one very important feature one developing and testing software.

The documentation of the latest release is there:

https://github.com/TurboGit/scbi/releases/download/v6.7/scbi.pdf

The documentation is important as there is lot of features in SCBI that are out of the scope of this simple quick start guide.

And scbi usage can be displayed using standard command:

$ scbi --help

But let's have a little quick start guide here targeted at darktable.

First install the tool:

$ git clone https://github.com/TurboGit/scbi
$ cd scbi
$ make

It will add a binary in $HOME/bin (add it to your PATH) and plug-ins to build sofwares in ~/.config/scbi.

The builds will be done into a sandbox located in:

SCBI_BDIR $HOME/dev/builds

The user's checkout (discussed later) will be checked in:

SCBI_GIT_REPO $HOME/dev/repositories/git

The default build plan is named default:

SCBI_PLAN default

You can change settings above if you like. Create a user's environment file $HOME/.scbi-env:

$ cat $HOME/.scbi-env
SCBI_BDIR=$HOME/dev/builds
SCBI_GIT_REPO=$HOME/dev/git
SCBI_PLAN=default

Working on darktable master

Building

Then building darktable with a proper exiv2 version to support CR3 can be done simply by calling:

$ scbi --deps --update c-darktable

  • --deps : to build dependencies
  • --update : to update the repository
  • c-darktable : the name of the plug-in found in ~/.config/scbi

If some packages are missing scbi will list them and you need to install them before restarting the command above.

When done, exiv2 v0.27.5 will be built and darktable will be linked against libavif.

The installation will be done in /opt/darktable by default because of the rule (prefix) in the plug-in, you can skip the installation with:

$ scbi --deps --update --no-install c-darktable

Or you can change the installation directory with --prefix:

$ scbi --prefix=/some/other/path --deps --update c-darktable

Running

To run darktable from the sandbox with all dependencies:

$ scbi shell --run="darktable" c-darktable

Working on darktable releases

Building

We build the 3.6.1 release using the tag release-3.6.1 and we build using the variant v36 to force the build into a separate directory in the sandbox letting untouched the master build done just above.

$ scbi --deps c-darktable/v36:release-3.6.1

Running

Then to run darktable 3.6.1 directly from the sandbox for testing:

$ scbi shell --run="darktable" c-darktable/v36

Working on darktable with user's checkout

Building

During development you will change darktable sources. For this the setup is easy:

  1. clone darktable Git repository into $SCBI_GIT_REPO
  2. got to $SCBI_GIT_REPO/darktable
  3. edit sources, fix bug...

Then building using this user's checkout instead of the in-sandbox checkout just do:

$ scbi --deps --no-install c-darktable:dev

Note the :dev here which is a special version for user's checkout.

Running

And you can run this version using as before:

$ scbi shell --run="darktable" c-darktable

That's all for this quick start guide. More information into the User's Manual.