LibRaw is merged into RawTherapee

Great news - RawTherapee switched to LibRaw. I finally can use lossless compressed files from Sony A7IV. Many thanks to @Lawrence37 (and @agriggio) for this work.

5 Likes

That is excellent news!

Not switched, but added. Sony lossless compression support is still incomplete: Issue #7140. Help is appreciated.

1 Like

I built RT from latest sources and now can process lossless compressed files from Sony A7IV which previously could not.

I noticed for some reason the arm64 macOS build is not configuring libraw correctly. The x86_64 build seemed to not complain.

-- Configuring LibRaw
autoreconf: export WARNINGS=
'cp' '-p' '-R' '/Users/runner/work/RawTherapee/RawTherapee/rtengine/libraw' '.'
autoreconf: Entering directory '.'
'/bin/bash' '-l' '-c' 'autoreconf -v --install'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal -I m4
autoreconf: configure.ac: tracing
autoreconf: configure.ac: not using Libtool
autoreconf: configure.ac: not using Intltool
autoreconf: configure.ac: not using Gtkdoc
autoreconf: running: /opt/homebrew/Cellar/autoconf/2.72/bin/autoconf
configure.ac:11: error: possibly undefined macro: AC_PROG_LIBTOOL
      If this token and others are legitimate, please use m4_pattern_allow.
-- Configuring incomplete, errors occurred!
      See the Autoconf documentation.
configure.ac:12: error: possibly undefined macro: AC_ENABLE_SHARED
configure.ac:13: error: possibly undefined macro: AC_ENABLE_STATIC
configure.ac:14: error: possibly undefined macro: AC_LIBTOOL_WIN32_DLL
configure.ac:15: error: possibly undefined macro: AC_LIBTOOL_SETUP
autoreconf: error: /opt/homebrew/Cellar/autoconf/2.72/bin/autoconf failed with exit status: 1
CMake Error at rtengine/LibRaw.cmake:51 (message):
  Could not generate LibRaw configuration script
Call Stack (most recent call first):
  rtengine/CMakeLists.txt:268 (include)

I think it’s because I needed the -DWITH_SYSTEM_LIBRAW directive. Indeed I now have it working in macOS CI: build for arm64 by Benitoite · Pull Request #7132 · Beep6581/RawTherapee · GitHub

I’ve also updated MacOS - RawPedia

1 Like

I am having problems with the dev build on Linux Mint 21.3

I first got the following error:

-- Configuring LibRaw
'cp' '-p' '-R' '/home/richardt/programs/code-rawtherapee/rtengine/libraw' '.'
'/bin/bash' '-l' '-c' 'autoreconf -v --install'
/bin/bash: line 1: autoreconf: command not found
CMake Error at rtengine/LibRaw.cmake:51 (message):
  Could not generate LibRaw configuration script
Call Stack (most recent call first):
  rtengine/CMakeLists.txt:268 (include)

I then installed autoconf using sudo apt-get install autoconf

However the build still failed:

Program name: rawtherapee
Build type: release
Build without updating: false

-- WARNING: gcc 11.4.0 is known to miscompile RawTherapee when using --ffp-contract=fast, forcing the option to be off
-- CMAKE_BUILD_TYPE: release
-- searching for library exiv2 in /usr/lib/x86_64-linux-gnu
--   result: /usr/lib/x86_64-linux-gnu/libexiv2.so
-- Checking for module 'libjxl'
--   No package 'libjxl' found
-- Checking for module 'libjxl_threads'
--   No package 'libjxl_threads' found
-- searching for library lensfun in /usr/lib/x86_64-linux-gnu
--   result: /usr/lib/x86_64-linux-gnu/liblensfun.so
-- Configuring LibRaw
'cp' '-p' '-R' '/home/richardt/programs/code-rawtherapee/rtengine/libraw' '.'
'/bin/bash' '-l' '-c' 'autoreconf -v --install'
autoreconf: export WARNINGS=
autoreconf: Entering directory '.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal -I m4
autoreconf: configure.ac: tracing
autoreconf: configure.ac: not using Libtool
autoreconf: configure.ac: not using Intltool
autoreconf: configure.ac: not using Gtkdoc
autoreconf: running: /usr/bin/autoconf
configure.ac:11: error: possibly undefined macro: AC_PROG_LIBTOOL
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
configure.ac:12: error: possibly undefined macro: AC_ENABLE_SHARED
configure.ac:13: error: possibly undefined macro: AC_ENABLE_STATIC
configure.ac:14: error: possibly undefined macro: AC_LIBTOOL_WIN32_DLL
configure.ac:15: error: possibly undefined macro: AC_LIBTOOL_SETUP
autoreconf: error: /usr/bin/autoconf failed with exit status: 1
CMake Error at rtengine/LibRaw.cmake:51 (message):
  Could not generate LibRaw configuration script
Call Stack (most recent call first):
  rtengine/CMakeLists.txt:268 (include)

@RichardT Do you have all the deps installed?

sudo apt install git build-essential cmake curl pkg-config libgtk-3-dev libgtkmm-3.0-dev liblensfun-dev librsvg2-dev liblcms2-dev libfftw3-dev libiptcdata0-dev libtiff5-dev libcanberra-gtk3-dev libexiv2-dev

https://rawpedia.rawtherapee.com/Linux#Debian/Ubuntu/Mint/elementary_OS

richardt@Pavilion:~ $ sudo apt install git build-essential cmake curl pkg-config libgtk-3-dev libgtkmm-3.0-dev liblensfun-dev librsvg2-dev liblcms2-dev libfftw3-dev libiptcdata0-dev libtiff5-dev libcanberra-gtk3-dev libexiv2-dev
[sudo] password for richardt:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
build-essential is already the newest version (12.9ubuntu3).
libexiv2-dev is already the newest version (0.27.5-3ubuntu1).
libfftw3-dev is already the newest version (3.3.8-2ubuntu8).
libgtkmm-3.0-dev is already the newest version (3.24.5-1build1).
liblcms2-dev is already the newest version (2.12~rc1-2build2).
pkg-config is already the newest version (0.29.2-1ubuntu3).
libiptcdata0-dev is already the newest version (1.0.5-2.3ubuntu1).
liblensfun-dev is already the newest version (0.3.2-6).
cmake is already the newest version (3.22.1-1ubuntu1.22.04.2).
curl is already the newest version (7.81.0-1ubuntu1.16).
git is already the newest version (1:2.34.1-1ubuntu1.11).
libcanberra-gtk3-dev is already the newest version (0.30-10ubuntu1.22.04.1).
libgtk-3-dev is already the newest version (3.24.33-1ubuntu2.2).
librsvg2-dev is already the newest version (2.52.5+dfsg-3ubuntu0.2).
libtiff5-dev is already the newest version (4.3.0-6ubuntu0.9).
The following package was automatically installed and is no longer required:
  libopenshot25
Use 'sudo apt autoremove' to remove it.
0 to upgrade, 0 to newly install, 0 to remove and 0 not to upgrade.

My steps on Fedora are (after installing the required deps):

git clone https://github.com/Beep6581/RawTherapee.git
cd RawTherapee
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j `nproc`

If cmake complains about missing packages I may need to install them manually if I want that functionality.

If my build dir is too old compared to fresh changes in RT sources I delete the build dir, recreate it and rerun cmake.

I guess on Mint the steps should be similar.

I do the following:

cd ~
rm -rf /home/richardt/programs/*
wget https://raw.githubusercontent.com/Beep6581/RawTherapee/dev/tools/build-rawtherapee -O build-rawtherapee
chmod +x build-rawtherapee
./build-rawtherapee

Edit:
Once I have a successful build, I have a cron job which is run 3 times a day and it executes the script ~/programs/code-rawtherapee/tools/build-rawtherapee. Looking at the log files that script ran successfully until 20:00 BST yesterday when the autoreconf error first appeared.

You rely on the build-rawtherapee script to be up-to-date. Apparently it is not the case right now. While the steps I listed above are the official way to build RT from sources and they usually work.

The automatic build script should still work.

I see the error is configure.ac:11: error: possibly undefined macro: AC_PROG_LIBTOOL
A quick internet search indicates this may happen because libtool is not installed.

2 Likes

Thank you @Lawrence37 - I ran the following commands:

sudo apt-get update
sudo apt-get install libtool

The build script then successfully built the RT executables. I have briefly run up the UI and it appears to be working OK.

Perhaps the dependencies on the Wiki page need to be updated to include autoconf and libtool.

1 Like

Indeed adding automake and libtool I think fixed the Mac build, and I’ve updated the macOS compilations instructions on rawpedia.

@Lawrence37 and others here: which new raw format is enabled by the internal libraw? I’d like to run a test of it.

I figured out this enables some newer sony formats like the A7iv. (now reading this info was in the top post. doh.) I found a sample on dpreview since raw.pixls.us seems down (Attn: @patdavid) . As you can see it didn’t get the camera name right:

note: DCPs and camconst.json entries from ART by Lawrence37 · Pull Request #7141 · Beep6581/RawTherapee · GitHub does not fix this.

Also note RawTherapee/README.md at dev · Beep6581/RawTherapee · GitHub will have to be updated to reflect the addition of libraw.

1 Like

Images from my Sony A7IV are displayed correctly as SONY ILCE-7M4.

Are you able to provide a sample raw for testing? (My usual source raw.pixls.us is down)

What is meant by “merged into”?

As far I know, RT has used LibRaw for quite some time. I could be wrong - never really paid that much attention. Was it DCRaw before?

The context in which the merge took place is the software development protocol known as git, a type of version control system. What happened was a while ago, the developer created a feature “branch” from the base code repository to work on integrating libraw into RawTherapee. That feature branch was recently “merged” into the main code base, a branch called dev, which is now under test. The process by which this merge happens is called a “pull request”. When the pull request is approved by the repository owner, the code changes merge into the appropriate branch as indicated in the pull request.

2 Likes

Before the merge RT used only DCRaw. Now LibRaw is added which allowed to support more cameras formats (like lossless compressed from Sony).