$ git diff --patch-with-stat --summary 245ed6637b3fdf811ad77aacb95acc00c038f6a7..9e6c7d83aec9c64514944ccfbe1ec44203e2492d
.abf.yml | 2 +-
.onedev-buildspec.yml | 4 ++
darktable-3.6.0-fix-openmp-version.patch | 44 +++++++--------------
darktable-3.8.0-clang.patch | 11 +++---
darktable-4.2.1-exiv2-0.28.patch | 61 ++++++++++++++++++++++++++++++
darktable-4.4.2-curl-detection.patch | 13 +++++++
darktable.spec | 65 ++++++++++++++++++++++++++++----
fix-aarch64.patch | 8 ++--
8 files changed, 159 insertions(+), 49 deletions(-)
create mode 100644 .onedev-buildspec.yml
create mode 100644 darktable-4.2.1-exiv2-0.28.patch
create mode 100644 darktable-4.4.2-curl-detection.patch
diff --git a/.abf.yml b/.abf.yml
index a9aed16..3abece9 100644
--- a/.abf.yml
+++ b/.abf.yml
@@ -1,2 +1,2 @@
sources:
- darktable-4.0.1.tar.xz: 282639f8c5e89da3b8ee69ab9d010014fdbf840b
+ darktable-5.2.1.tar.xz: 7e6f12f423f327b0314df402a1e43b7eef84d6de
diff --git a/.onedev-buildspec.yml b/.onedev-buildspec.yml
new file mode 100644
index 0000000..b95f83a
--- /dev/null
+++ b/.onedev-buildspec.yml
@@ -0,0 +1,4 @@
+version: 40
+imports:
+- projectPath: OpenMandriva/Packages
+ revision: mirroring
diff --git a/darktable-3.6.0-fix-openmp-version.patch b/darktable-3.6.0-fix-openmp-version.patch
index 48b1f71..cc70cd2 100644
--- a/darktable-3.6.0-fix-openmp-version.patch
+++ b/darktable-3.6.0-fix-openmp-version.patch
@@ -1,7 +1,7 @@
-diff -uraN darktable-3.6.1/CMakeLists.txt omv-darktable-3.6.1/CMakeLists.txt
---- darktable-3.6.1/CMakeLists.txt 2021-09-10 08:20:12.000000000 +0200
-+++ omv-darktable-3.6.1/CMakeLists.txt 2021-11-10 02:07:27.230778664 +0100
-@@ -80,13 +80,13 @@
+diff -uraN darktable-4.6.1/CMakeLists.txt omv-darktable-4.6.1/CMakeLists.txt
+--- darktable-4.6.1/CMakeLists.txt 2024-02-16 18:31:09.000000000 +0100
++++ omv-darktable-4.6.1/CMakeLists.txt 2024-04-30 20:38:50.534686312 +0200
+@@ -81,7 +81,7 @@
# Clang has an option to specify the OpenMP standard to use. Specify it.
# FIXME: Implement this in FindOpenMP.cmake
@@ -10,31 +10,15 @@ diff -uraN darktable-3.6.1/CMakeLists.txt omv-darktable-3.6.1/CMakeLists.txt
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OPENMP_VERSION_SPECIFIER}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OPENMP_VERSION_SPECIFIER}")
- endif()
+diff -uraN darktable-4.6.1/src/external/rawspeed/cmake/src-dependencies.cmake omv-darktable-4.6.1/src/external/rawspeed/cmake/src-dependencies.cmake
+--- darktable-4.6.1/src/external/rawspeed/cmake/src-dependencies.cmake 2024-02-14 23:08:05.000000000 +0100
++++ omv-darktable-4.6.1/src/external/rawspeed/cmake/src-dependencies.cmake 2024-04-30 20:40:29.394049100 +0200
+@@ -39,7 +39,7 @@
-- find_package(OpenMP 4.5 REQUIRED)
-+ find_package(OpenMP 4.5 REQUIRED)
- endif()
+ # NOTE: we want at least 5.0, but we don't need full implementation,
+ # so we neither can't really check for a version, not need to...
+- find_package(OpenMP)
++ find_package(OpenMP 4.5)
- # Check for base threading library
-diff -uraN darktable-3.6.1/src/external/rawspeed/cmake/src-dependencies.cmake omv-darktable-3.6.1/src/external/rawspeed/cmake/src-dependencies.cmake
---- darktable-3.6.1/src/external/rawspeed/cmake/src-dependencies.cmake 2021-09-09 15:34:24.000000000 +0200
-+++ omv-darktable-3.6.1/src/external/rawspeed/cmake/src-dependencies.cmake 2021-11-10 02:06:13.812779364 +0100
-@@ -23,7 +23,7 @@
- if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR
- CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
- # Clang has an option to specify the OpenMP standard to use. Specify it.
-- set(OPENMP_VERSION_SPECIFIER "-fopenmp-version=45")
-+ set(OPENMP_VERSION_SPECIFIER "-fopenmp-version=50")
- endif()
-
- set(CMAKE_C_FLAGS_SAVE "${CMAKE_C_FLAGS}")
-@@ -31,7 +31,7 @@
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OPENMP_VERSION_SPECIFIER}")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OPENMP_VERSION_SPECIFIER}")
-
-- find_package(OpenMP 4.5)
-+ find_package(OpenMP 4.5)
-
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS_SAVE}")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_SAVE}")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS_SAVE}")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_SAVE}")
diff --git a/darktable-3.8.0-clang.patch b/darktable-3.8.0-clang.patch
index 34875dc..0bf61ca 100644
--- a/darktable-3.8.0-clang.patch
+++ b/darktable-3.8.0-clang.patch
@@ -1,9 +1,8 @@
-diff -up darktable-3.8.0/src/common/dttypes.h.omv~ darktable-3.8.0/src/common/dttypes.h
-diff -up darktable-3.8.0/src/develop/noise_generator.h.omv~ darktable-3.8.0/src/develop/noise_generator.h
---- darktable-3.8.0/src/develop/noise_generator.h.omv~ 2021-12-31 03:17:18.977165411 +0100
-+++ darktable-3.8.0/src/develop/noise_generator.h 2021-12-31 03:21:07.366978907 +0100
-@@ -211,8 +211,7 @@ static inline void poisson_noise_simd(co
- // now we have gaussian noise, then apply Anscombe transform to get poissonian one
+diff -uraN darktable-4.6.0/src/develop/noise_generator.h omv-darktable-4.6.0/src/develop/noise_generator.h
+--- darktable-4.6.0/src/develop/noise_generator.h 2023-12-14 20:44:41.000000000 +0100
++++ omv-darktable-4.6.0/src/develop/noise_generator.h 2023-12-24 15:04:27.817312453 +0100
+@@ -241,8 +241,7 @@
+ // Now we have gaussian noise, then apply Anscombe transform to get poissonian one.
dt_aligned_pixel_t r = { 0.f };
- #pragma unroll
diff --git a/darktable-4.2.1-exiv2-0.28.patch b/darktable-4.2.1-exiv2-0.28.patch
new file mode 100644
index 0000000..f185667
--- /dev/null
+++ b/darktable-4.2.1-exiv2-0.28.patch
@@ -0,0 +1,61 @@
+diff -up darktable-4.2.1/src/common/exif.cc.omv~ darktable-4.2.1/src/common/exif.cc
+--- darktable-4.2.1/src/common/exif.cc.omv~ 2023-05-18 03:19:31.207916542 +0200
++++ darktable-4.2.1/src/common/exif.cc 2023-05-18 03:22:51.902769296 +0200
+@@ -45,6 +45,13 @@ extern "C" {
+
+ #include <exiv2/exiv2.hpp>
+
++#if EXIV2_TEST_VERSION(0,28,0)
++#define AnyError Error
++#define toLong toUint32
++#define pData_ data()
++#define size_ size()
++#endif
++
+ #if defined(_WIN32) && defined(EXV_UNICODE_PATH)
+ #define WIDEN(s) pugi::as_wide(s)
+ #else
+@@ -4370,7 +4377,9 @@ int dt_exif_xmp_attach_export(const int
+ }
+ catch(Exiv2::AnyError &e)
+ {
+-#if EXIV2_TEST_VERSION(0,27,0)
++#if EXIV2_TEST_VERSION(0,28,0)
++ if(e.code() == Exiv2::ErrorCode::kerTooLargeJpegSegment)
++#elif EXIV2_TEST_VERSION(0,27,0)
+ if(e.code() == Exiv2::kerTooLargeJpegSegment)
+ #else
+ if(e.code() == 37)
+diff -up darktable-4.2.1/tools/basecurve/exif-wrapper.cpp.omv~ darktable-4.2.1/tools/basecurve/exif-wrapper.cpp
+--- darktable-4.2.1/tools/basecurve/exif-wrapper.cpp.omv~ 2023-05-18 03:17:59.658083590 +0200
++++ darktable-4.2.1/tools/basecurve/exif-wrapper.cpp 2023-05-18 03:19:17.477791064 +0200
+@@ -19,6 +19,7 @@
+ #include <exiv2/exif.hpp>
+ #include <exiv2/error.hpp>
+ #include <exiv2/image.hpp>
++#include <exiv2/version.hpp>
+
+ #include <cstdio>
+ #include <cassert>
+@@ -36,13 +37,21 @@ exif_get_ascii_datafield(
+
+ try
+ {
++#if EXIV2_TEST_VERSION(0,28,0)
++ Exiv2::Image::UniquePtr image = Exiv2::ImageFactory::open(filename);
++#else
+ Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(filename);
++#endif
+ assert(image.get() != 0);
+ image->readMetadata();
+
+ Exiv2::ExifData &exifData = image->exifData();
+
++#if EXIV2_TEST_VERSION(0,28,0)
++ Exiv2::Value::UniquePtr val = exifData[key].getValue();
++#else
+ Exiv2::Value::AutoPtr val = exifData[key].getValue();
++#endif
+
+ if (val->typeId() != Exiv2::asciiString)
+ {
diff --git a/darktable-4.4.2-curl-detection.patch b/darktable-4.4.2-curl-detection.patch
new file mode 100644
index 0000000..f777a0c
--- /dev/null
+++ b/darktable-4.4.2-curl-detection.patch
@@ -0,0 +1,13 @@
+diff -up darktable-4.4.2/src/imageio/storage/CMakeLists.txt.omv~ darktable-4.4.2/src/imageio/storage/CMakeLists.txt
+--- darktable-4.4.2/src/imageio/storage/CMakeLists.txt.omv~ 2023-11-04 19:49:20.714065985 +0100
++++ darktable-4.4.2/src/imageio/storage/CMakeLists.txt 2023-11-04 19:49:33.890193758 +0100
+@@ -7,7 +7,8 @@ add_definitions(-include imageio/storage
+
+ set(MODULES disk email gallery latex)
+
+-find_package(CURL 7.56)
++#find_package(CURL 7.56)
++set(CURL_FOUND ON)
+ if(CURL_FOUND)
+ message(STATUS "Found recent CURL version to build piwigo.")
+ list(APPEND MODULES piwigo)
diff --git a/darktable.spec b/darktable.spec
index 9b5b7b6..d1b27e4 100644
--- a/darktable.spec
+++ b/darktable.spec
@@ -10,11 +10,11 @@
Summary: Utility to organize and develop raw images
Name: darktable
-Version: 4.0.1
-Release: 3
+Version: 5.2.1
+Release: 1
Group: Graphics
License: GPLv3+
-Url: http://www.darktable.org
+Url: https://www.darktable.org
Source0: https://github.com/darktable-org/darktable/releases/download/release-%{version}/%{name}-%{version}.tar.xz
Source100: %{name}.rpmlintrc
# https://github.com/darktable-org/darktable/issues/2093
@@ -22,9 +22,13 @@ Source100: %{name}.rpmlintrc
# Needed or build failed with:
# builddir/build/BUILD/darktable-3.6.1/src/common/darktable.h:576:3: error: unexpected OpenMP clause 'nontemporal' in directive '#pragma omp simd'
# for_each_channel(k,aligned(in,out:16) dt_omp_nontemporal(out)) out[k] = in[k];
-Patch1: darktable-3.6.0-fix-openmp-version.patch
+#Patch1: darktable-3.6.0-fix-openmp-version.patch
Patch2: darktable-3.8.0-clang.patch
-Patch3: darktable-4.0.0-compile.patch
+#Patch3: darktable-4.0.0-compile.patch
+Patch4: fix-aarch64.patch
+# Don't call FindCURL.cmake -- the custom checks
+# clash with the cmake file recently added to CURL itself
+#Patch6: darktable-4.4.2-curl-detection.patch
BuildRequires: cmake
BuildRequires: ninja
@@ -35,6 +39,7 @@ BuildRequires: intltool
BuildRequires: gettext-devel
#BuildRequires: gomp-devel
BuildRequires: jpeg-devel
+BuildRequires: portmidi-devel
BuildRequires: pkgconfig(cairo)
BuildRequires: pkgconfig(colord)
BuildRequires: pkgconfig(colord-gtk)
@@ -44,6 +49,7 @@ BuildRequires: pkgconfig(flickcurl)
BuildRequires: pkgconfig(gconf-2.0)
BuildRequires: pkgconfig(gnome-keyring-1)
BuildRequires: pkgconfig(GraphicsMagick)
+BuildRequires: pkgconfig(jasper)
BuildRequires: pkgconfig(json-glib-1.0)
BuildRequires: pkgconfig(libavif)
BuildRequires: pkgconfig(lcms2)
@@ -54,8 +60,10 @@ BuildRequires: pkgconfig(libgphoto2)
BuildRequires: pkgconfig(libpng)
BuildRequires: pkgconfig(librsvg-2.0)
BuildRequires: pkgconfig(libtiff-4)
+BuildRequires: pkgconfig(libjxl)
BuildRequires: pkgconfig(libwebp)
BuildRequires: pkgconfig(OpenEXR)
+BuildRequires: pkgconfig(sdl2)
BuildRequires: pkgconfig(sqlite3)
BuildRequires: pkgconfig(zlib)
BuildRequires: pugixml-devel
@@ -68,6 +76,8 @@ BuildRequires: pkgconfig(lua)
BuildRequires: pkgconfig(osmgpsmap-1.0)
BuildRequires: cups-devel
BuildRequires: gmic-devel
+BuildRequires: gmic
+BuildRequires: python-jsonschema
BuildRequires: po4a
# For OpenCL
BuildRequires: llvm
@@ -86,6 +96,9 @@ BuildRequires: %{_lib}mlir
BuildRequires: llvm-bolt
BuildRequires: llvm-polly-devel
+Recommends: %{name}-tools-noise = %{EVRD}
+Recommends: %{name}-tools-basecurve = %{EVRD}
+
%description
Darktable is an open source photography workflow application and RAW developer.
A virtual lighttable and darkroom for photographers. It manages your digital
@@ -96,13 +109,46 @@ and enables you to develop raw images and enhance them.
#doc doc/README doc/AUTHORS doc/LICENSE doc/TRANSLATORS
%{_bindir}/%{name}*
%{_libdir}/%{name}
-%{_datadir}/applications/%{name}.desktop
-%{_datadir}/metainfo/darktable.appdata.xml
+%{_datadir}/applications/org.darktable.darktable.desktop
+%{_datadir}/metainfo/org.darktable.darktable.appdata.xml
%{_datadir}/%{name}
%{_iconsdir}/hicolor/*/apps/%{name}*
%{_mandir}/man1/%{name}*
%config %{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf
+%package -n %{name}-tools-noise
+Summary: Noise profiling tool to add support for new cameras in darktable
+Group: Graphics/Photography
+Requires: gnuplot
+Requires: imagemagick
+
+%description -n %{name}-tools-noise
+The darktable noise command line tool can be used to generate noise profiles for
+new cameras which are not included yet in darktable. You can then contribute
+these noise profiles to the darktable project.
+
+%files -n %{name}-tools-noise
+%{_libexecdir}/%{name}/tools/%{name}-gen-noiseprofile
+%{_libexecdir}/%{name}/tools/%{name}-noiseprofile
+%{_libexecdir}/%{name}/tools/profiling-shot.xmp
+%{_libexecdir}/%{name}/tools/subr.sh
+
+%package -n %{name}-tools-basecurve
+Summary: Basecurve tool for darktable
+Group: Graphics/Photography
+Requires: dcraw
+Requires: imagemagick
+Requires: perl-Image-ExifTool
+
+%description -n %{name}-tools-basecurve
+The darktable basecurve command line tool.
+
+%files -n %{name}-tools-basecurve
+%{_libexecdir}/%{name}/tools/%{name}-curve-tool
+%{_libexecdir}/%{name}/tools/%{name}-curve-tool-helper
+%{_datadir}/%{name}/tools/basecurve/
+
+
#----------------------------------------------------------------------------
%prep
@@ -114,6 +160,9 @@ and enables you to develop raw images and enhance them.
-DBINARY_PACKAGE_BUILD=1 \
-DPROJECT_VERSION:STRING="%{version}" \
-DINSTALL_IOP_EXPERIMENTAL:BOOLEAN=ON \
+ -DBUILD_NOISE_TOOLS=ON \
+ -DBUILD_CURVE_TOOLS=ON \
+ -DRAWSPEED_ENABLE_LTO=ON \
-G Ninja
%build
@@ -132,5 +181,5 @@ EOF
%find_lang %{name} --all-name --with-man
-desktop-file-validate %{buildroot}/%{_datadir}/applications/%{name}.desktop
+desktop-file-validate %{buildroot}/%{_datadir}/applications/org.darktable.darktable.desktop
rm -rf %{buildroot}%{_datadir}/doc/%{name}
diff --git a/fix-aarch64.patch b/fix-aarch64.patch
index 1594825..a58a825 100644
--- a/fix-aarch64.patch
+++ b/fix-aarch64.patch
@@ -1,11 +1,11 @@
-diff -uraN darktable-3.4.1/src/is_supported_platform.h omv-darktable-3.4.1/src/is_supported_platform.h
---- darktable-3.4.1/src/is_supported_platform.h 2021-02-03 14:36:49.000000000 +0100
-+++ omv-darktable-3.4.1/src/is_supported_platform.h 2021-02-09 02:42:38.514484224 +0100
+diff -uraN darktable-4.2.0/src/is_supported_platform.h omv-darktable-4.2.0/src/is_supported_platform.h
+--- darktable-4.2.0/src/is_supported_platform.h 2022-12-14 16:18:18.000000000 +0100
++++ omv-darktable-4.2.0/src/is_supported_platform.h 2022-12-24 19:40:37.151786245 +0100
@@ -30,7 +30,7 @@
#define DT_SUPPORTED_X86 0
#endif
--#if defined(__aarch64__) && defined(__ARM_64BIT_STATE) && defined(__ARM_ARCH) && defined(__ARM_ARCH_8A)
+-#if defined(__aarch64__) && (defined(__ARM_64BIT_STATE) && defined(__ARM_ARCH) && (defined(__ARM_ARCH_8A) || __ARM_ARCH_PROFILE == 'A') || defined(__APPLE__) || defined(__MINGW64__))
+#if defined(__aarch64__)
#define DT_SUPPORTED_ARMv8A 1
#else