compilation of an older version of darktable

Hi,

To get started with darktable, I bought an online course, it is based on version 3.2.1, I downloaded the sources with git
First step:
To make sure all the dependencies are satisfied, I did a checkout on the release-5.0.0 tag and compiled it.
The compilation was successful without error, I tested, imported photos, used the Tethering module, which I need for a photo project, and everything worked perfectly.
So the build environment is functional and all dependencies are satisfied for version 5.
Second step:
I did a checkout on the release-3.2.1 tag and compiled it.
But the compilation failed.

I’m using debian 12, it seems that some dependencies(OpenCL and LLVM) are not satisfied for release-3.2.1, which debian packages to install?

Benoît



CMake Warning at CMakeLists.txt:291 (find_package):
  Could not find a configuration file for package "LLVM" that is compatible
  with requested version "10".

  The following configuration files were considered but not accepted:

    /usr/lib/llvm-14/cmake/LLVMConfig.cmake, version: 14.0.6
    /lib/llvm-14/cmake/LLVMConfig.cmake, version: 14.0.6

Call Stack (most recent call first):
  CMakeLists.txt:299 (find_llvm)


CMake Warning at CMakeLists.txt:291 (find_package):
  Could not find a configuration file for package "LLVM" that is compatible
  with requested version "9".

  The following configuration files were considered but not accepted:

    /usr/lib/llvm-14/cmake/LLVMConfig.cmake, version: 14.0.6
    /lib/llvm-14/cmake/LLVMConfig.cmake, version: 14.0.6

Call Stack (most recent call first):
  CMakeLists.txt:299 (find_llvm)


CMake Warning at CMakeLists.txt:291 (find_package):
  Could not find a configuration file for package "LLVM" that is compatible
  with requested version "8".

  The following configuration files were considered but not accepted:

    /usr/lib/llvm-14/cmake/LLVMConfig.cmake, version: 14.0.6
    /lib/llvm-14/cmake/LLVMConfig.cmake, version: 14.0.6

Call Stack (most recent call first):
  CMakeLists.txt:299 (find_llvm)


CMake Warning at CMakeLists.txt:291 (find_package):
  Could not find a configuration file for package "LLVM" that is compatible
  with requested version "7".

  The following configuration files were considered but not accepted:

    /usr/lib/llvm-14/cmake/LLVMConfig.cmake, version: 14.0.6
    /lib/llvm-14/cmake/LLVMConfig.cmake, version: 14.0.6

Call Stack (most recent call first):
  CMakeLists.txt:299 (find_llvm)


CMake Warning at CMakeLists.txt:291 (find_package):
  Could not find a configuration file for package "LLVM" that is compatible
  with requested version "6.0".

  The following configuration files were considered but not accepted:

    /usr/lib/llvm-14/cmake/LLVMConfig.cmake, version: 14.0.6
    /lib/llvm-14/cmake/LLVMConfig.cmake, version: 14.0.6

Call Stack (most recent call first):
  CMakeLists.txt:299 (find_llvm)


CMake Warning at CMakeLists.txt:291 (find_package):
  Could not find a configuration file for package "LLVM" that is compatible
  with requested version "5.0".

  The following configuration files were considered but not accepted:

    /usr/lib/llvm-14/cmake/LLVMConfig.cmake, version: 14.0.6
    /lib/llvm-14/cmake/LLVMConfig.cmake, version: 14.0.6

Call Stack (most recent call first):
  CMakeLists.txt:299 (find_llvm)


CMake Warning at CMakeLists.txt:291 (find_package):
  Could not find a configuration file for package "LLVM" that is compatible
  with requested version "4.0".

  The following configuration files were considered but not accepted:

    /usr/lib/llvm-14/cmake/LLVMConfig.cmake, version: 14.0.6
    /lib/llvm-14/cmake/LLVMConfig.cmake, version: 14.0.6

Call Stack (most recent call first):
  CMakeLists.txt:299 (find_llvm)


CMake Warning at CMakeLists.txt:291 (find_package):
  Could not find a configuration file for package "LLVM" that is compatible
  with requested version "3.9".

  The following configuration files were considered but not accepted:

    /usr/lib/llvm-14/cmake/LLVMConfig.cmake, version: 14.0.6
    /lib/llvm-14/cmake/LLVMConfig.cmake, version: 14.0.6

Call Stack (most recent call first):
  CMakeLists.txt:299 (find_llvm)


CMake Warning at CMakeLists.txt:329 (message):
  Could not find LLVM 3.9+


CMake Warning at CMakeLists.txt:330 (message):
  Test-compilation of OpenCL programs can not be done.

_CMakeError.txt (20.7 KB)


The full output is attached

3.2 is very old and so that course is likely to be teaching you things that are no longer relevant, if it covers anything more than the basics. And even those basics could very well be outdated, due to the rapid and fundamental transformation darktable was undergoing at the time. I’m curious which course.

That said, while some modules have been deprecated since (not available for new edits), most of what was in 3.2 is still there, working more or less the same way, so you could likely complete the course with the latest version.

I would recommend getting your money back, and spending your time on the following instead:

Beginner tutorial that covers the essential editing workflow (there’s also a French version on the channel):

Bruce Williams is good for understanding how modules work: https://youtube.com/@audio2u

Boris Hajdukovic is probably the one with the deepest knowledge of DT: https://www.youtube.com/@s7habo

And don’t forget the manual :wink:

2 Likes

I agree that the version is way too old to teach you useful workflow in the greatly improved DT of today.

1 Like

To answer your immediate compilation problem, your version of llvm is newer than what was expected at that time.
If you look at the error problem is pointed at line 299 in the CMakeLists.txt file in the top folder.
If you edit that file, you’ll find that it’s trying to find llvm at one of the specified versions:

  find_llvm("10;9;8;7;6.0;5.0;4.0;3.9")

I suspect just adding version 14 in that list will solve that first issue, like:

  find_llvm("14;10;9;8;7;6.0;5.0;4.0;3.9")

However, there are chances the build will break at other places.

Hi,

find_llvm(“14;10;9;8;7;6.0;5.0;4.0;3.9”)

Thanks, it works! :slight_smile:

there is still an error at the end of the attachment _CMakeError.txt

-- Configuring done
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
_OPENEXR_LIBRARY_IMIMF
    linked by target "lib_darktable" in directory /home/benoit/local/build/darktable/src

in file cmake/modules/FindOpenEXR.cmake

This module defines

# OpenEXR_INCLUDE_DIR, where to find openexr.h, etc.

# OpenEXR_LIBRARIES, the libraries to link against to use openexr.

# OpenEXR_FOUND, If false, do not try to use openexr.

But openexr.h is here :

$ dpkg -L libopenexr-dev | grep openexr.h

/usr/include/OpenEXR/openexr.h

I don’t understand why OpenEXR_FOUND si not set to TRUE

thanks

Benoît

Hello,

Thanks

This video by Aurélien PIERRE is also in French, but on DT version 3.6. There are some very instructive explanations of the theory that will always be relevant. But are the explanations on DT 3.6 ?

Bruce Williams is good for understanding how modules work: https://youtube.com/@audio2u

Boris Hajdukovic is probably the one with the deepest knowledge of DT: https://www.youtube.com/@s7habo

Thanks for these super interesting links
To get started with DT, I need simple explanations in French. I’ll listen them when I’ve understood the basics.

I’m curious which course.

This is a French video course, the most recent I’ve found.
It’s on udemy.com and it’s not expensive…:wink:
I’m a French speaker, listening the video in English while trying to follow and understand in DT is a double effort.

@nwinspeare has many videos on recent versions of darktable, also in French:
https://www.youtube.com/@adabbleinphotography8721

Everything in that tutorial is still relevant, with the exception of some of the settings he’s changing. Filmic has seen some updates since, but the fundamentals are exactly the same. Aurélien was the developer behind the transformation to a scene-referred workflow, and he made the tutorial when all the important parts had been implemented.

Once you are confident with the workflow in that video, you can start adding other modules as needed. These days there’s also Sigmoid, if you find Filmic too complicated.

I assume it’s the one by Nicolas Forgue. It is severely outdated. Pretty much the only part on editing that might still be useful is about masking. So yes, a waste of time and money. All the Udemy courses are outdated, by the way, with none of them teaching anything about the scene-referred workflow, as far as I could see.

To understand what is meant with display-referred and scene-referred, read this:

That’s why I said the build will probably break in other places. That old darktable version also expects older dependencies, like OpenEXR.
Building such an old version requires you to also build old version of the dependencies or find the correct configuration parameters to just disable those, while also loosing some features.
Unless you know how to compile those dependencies, it will be quite difficult to help you get a working build of that old version.
It’s a time consuming process probably better invested in watching more recent videos or reading the user manual.

3 Likes