summaryrefslogtreecommitdiff
path: root/media-gfx/darktable
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-06-08 15:45:39 +0100
committerV3n3RiX <venerix@koprulu.sector>2023-06-08 15:45:39 +0100
commitd5599da3055bf9b900513a61c3c6e4bdbb524503 (patch)
treeb64a792286dd490c9d4fc2c46bbbaa64804efc61 /media-gfx/darktable
parentcfeee79886441e92c8ee094e45b9bcdc9c79137a (diff)
gentoo auto-resync : 08:06:2023 - 15:45:39
Diffstat (limited to 'media-gfx/darktable')
-rw-r--r--media-gfx/darktable/Manifest3
-rw-r--r--media-gfx/darktable/darktable-4.2.1.ebuild2
-rw-r--r--media-gfx/darktable/files/darktable-4.2.1-exiv2-0.28.patch215
3 files changed, 219 insertions, 1 deletions
diff --git a/media-gfx/darktable/Manifest b/media-gfx/darktable/Manifest
index da1da720cdaf..91f178e107e3 100644
--- a/media-gfx/darktable/Manifest
+++ b/media-gfx/darktable/Manifest
@@ -1,9 +1,10 @@
AUX darktable-3.0.2_cmake-march-autodetection.patch 908 BLAKE2B aa1c0cedfe1f267332f11b9a8f38ce368af02b7e4f9751b128b7af91dcdfb066a0529ae126d41a34bc3fc66f336924f3376f270674bcc7e0912d2e23d46ec83b SHA512 da1f10e86b7b9e2a3f317d620a58ebed156a5c6e0f22f429da617cb176d1c18d6d1b6706c1444c9007ccb776bc6b951e3560214e89e95b4050899ec692b74dde
AUX darktable-3.4.0_jsonschema-automagic.patch 891 BLAKE2B b0abdd7ea80a446e2556daf06f78343deeb781a12b670f3c3d2f8a34ec9877e16991f6a105c90d58f437915b30bd8bddfb995d515bc73563a44f3807258c9fee SHA512 57cdf87586c6382347334577fff71d415be0123ad101c073535e9d4e87e7edac275272e0b3be91bd34965bacf1f6166cfc64af34b4cdedfb27b409e27bc3bdc9
AUX darktable-3.4.1_libxcf-cmake.patch 788 BLAKE2B b6ecb84de804b0bf16f907f825d93d00a62c1d996077514b3e55f370347f47e561707cb8da6a270aa42c3320142437691cc8b132718c485b5b7df40068d41ee5 SHA512 d94247c4f2c3b4894bd6455cd036a62ef5edb90a77bf8f930efc3e540d00712000fe8eeb7d4c937fa826aef1dd129448223c8696ff094e823894b17ef2669a4e
+AUX darktable-4.2.1-exiv2-0.28.patch 9139 BLAKE2B 82eb190e1fe9d93af8bce40fdfd7647e69bf620915d5d1cc76faefda17577f7480c7c5b9649b2f5ce7efb86b274b19c426393e2c943383637fe8c18a9ceac372 SHA512 dcdfdf9d62983428c4b0bfc87a747a437cd07cc640cba948309095680c077f118da1a4208362b76eba14044ad0fd8dabbb3715335d30e35e2f84a171ca275c6e
AUX darktable-4.2.1_cmake-musl.patch 796 BLAKE2B 2e26cc969f01dc948f4f92f42c768a28bb879b3592d98dc1de0c3b5b7335a2985fbb5659c58b421fbca896b1f2585a5cb993b5cdf3ee6f87d9834afe3fd1a23a SHA512 82c7a4f6d6112fa024503a99e05d3050922b120821c93922ae846f9da6b02cd6f2e27315448c20ed1032c5526b85cb6d01dd6eec5109db1af3f8e92e4818ea06
DIST darktable-4.2.1.tar.xz 6112480 BLAKE2B bf6f60b1f01b16c7cc4ffae7fbb46c7d2ce465d6fafd507564b8dd20aeadb3cd1116e434214d07c9c53ca621228ea6f7ce75a01650d04d596d1e246789bae752 SHA512 05423c16ff813c10fa2bedbb22bbc886f2cff81aad2493c720f4b2fe32ba89b55c428287cd1c4b24cc98121d441375752015f88c30f796ea46db18461e212d5d
DIST darktable-usermanual-4.2.en.pdf 26559897 BLAKE2B 144b7e76567e92138c7e75c996a63f818dce7eb4f485f0d988d184874d2ee2a72e89efae1d0fb16bc25aac831da040ffbd4a7bbda08d8c750169f06668a98f88 SHA512 a23e9544026d9aff7b92b3ca874217ebc12e1dc876e9d7873e0e7e61a53090179a1377cc4409f2bb8f6d005133e4501ce444c1533c8d66f04b7cc0c5fc5a3531
DIST darktable-usermanual-4.2.uk.pdf 26454596 BLAKE2B e497c87903f85ae7ebb9b9624124ba19936869db6d19d229182e5d249938f5d9461435ac7ae15f9a2fd64b367aa712ac1de5f32d053cc08a99a3bd672e8cac0b SHA512 ba37d680f29d2d79f517360a1b43d88b49cf5810b638aa5bc6eeeb8016bd1634801119c2d283473bafc72920db2525b122815fa475bac0c41a6cc8d2ac579a61
-EBUILD darktable-4.2.1.ebuild 5795 BLAKE2B fbeb3633bd697a66b75da97f2288e831b5ce87e776acadf4b4ba9d26872113903f98c9ca3e7e7c8acb5efe2c95e2494d0343199c96b657309a8efba49fb4a365 SHA512 3f11487381738c8eba2207be5c38e97582d40b5b0687ef7477c9a773ee3a04aeefe2c8a2ed169ce9ab8d31950477c1bbaf64406878229b197f39085cb8be8709
+EBUILD darktable-4.2.1.ebuild 5861 BLAKE2B 56816067d85f643265c4e841abd5fd0eccdd77b351c725c090752d7640522f70e1f74d4ac6c83a57f17a7b154eade7a4a69205c62a5ac12df0bbea7ad45dd282 SHA512 54602e7cd34d251a88d2e69d7e32584747f08aa7217f02162e92c33b150ab1b8024994c741d364bb7d9a51ec27048c93b3b01c94c3e040a71466dd3d0e2ea34e
MISC metadata.xml 1378 BLAKE2B 7373550c5362c32832830bd94dbd712f963246805af5119214a43cfe4dfb1aac9e7bb03d4af6f4f1dfae3cc44e09d6ba8baff53d67b5ddd96115c460b5e19ad9 SHA512 ffdc1ff8eb068372b1f24691bb0832d5a845e49b41adf211dec1c2faf0d1a573a0e4c62c38e97758a8f87de15569ce6f3cd2c7a768c95eb0d2b166e30b20ae3a
diff --git a/media-gfx/darktable/darktable-4.2.1.ebuild b/media-gfx/darktable/darktable-4.2.1.ebuild
index 48162abb7759..bcd74d9a9e34 100644
--- a/media-gfx/darktable/darktable-4.2.1.ebuild
+++ b/media-gfx/darktable/darktable-4.2.1.ebuild
@@ -99,6 +99,8 @@ PATCHES=(
"${FILESDIR}"/${PN}-3.4.0_jsonschema-automagic.patch
"${FILESDIR}"/${PN}-3.4.1_libxcf-cmake.patch
"${FILESDIR}"/${PN}-4.2.1_cmake-musl.patch
+ # patch by ArchLinux
+ "${FILESDIR}"/${P}-exiv2-0.28.patch
)
S="${WORKDIR}/${P/_/~}"
diff --git a/media-gfx/darktable/files/darktable-4.2.1-exiv2-0.28.patch b/media-gfx/darktable/files/darktable-4.2.1-exiv2-0.28.patch
new file mode 100644
index 000000000000..1be8577ae369
--- /dev/null
+++ b/media-gfx/darktable/files/darktable-4.2.1-exiv2-0.28.patch
@@ -0,0 +1,215 @@
+diff --git a/src/common/exif.cc b/src/common/exif.cc
+index 484ebf2207..91ea8e64d0 100644
+--- a/src/common/exif.cc
++++ b/src/common/exif.cc
+@@ -80,6 +80,11 @@ extern "C" {
+
+ #define DT_XMP_EXIF_VERSION 5
+
++#if EXIV2_TEST_VERSION(0,28,0)
++#define AnyError Error
++#define toLong toInt64
++#endif
++
+ // persistent list of exiv2 tags. set up in dt_init()
+ static GList *exiv2_taglist = NULL;
+
+@@ -2658,39 +2663,39 @@ static GList *read_history_v2(Exiv2::XmpData &xmpData, const char *filename)
+ if(g_str_has_prefix(key_iter, "darktable:operation"))
+ {
+ current_entry->have_operation = TRUE;
+- current_entry->operation = g_strdup(history->value().toString().c_str());
++ current_entry->operation = g_strdup(history->toString().c_str());
+ }
+ else if(g_str_has_prefix(key_iter, "darktable:num"))
+ {
+- current_entry->num = history->value().toLong();
++ current_entry->num = history->toLong();
+ }
+ else if(g_str_has_prefix(key_iter, "darktable:enabled"))
+ {
+- current_entry->enabled = history->value().toLong() == 1;
++ current_entry->enabled = history->toLong() == 1;
+ }
+ else if(g_str_has_prefix(key_iter, "darktable:modversion"))
+ {
+ current_entry->have_modversion = TRUE;
+- current_entry->modversion = history->value().toLong();
++ current_entry->modversion = history->toLong();
+ }
+ else if(g_str_has_prefix(key_iter, "darktable:params"))
+ {
+ current_entry->have_params = TRUE;
+- current_entry->params = dt_exif_xmp_decode(history->value().toString().c_str(), history->value().size(),
++ current_entry->params = dt_exif_xmp_decode(history->toString().c_str(), history->size(),
+ &current_entry->params_len);
+ }
+ else if(g_str_has_prefix(key_iter, "darktable:multi_name"))
+ {
+- current_entry->multi_name = g_strdup(history->value().toString().c_str());
++ current_entry->multi_name = g_strdup(history->toString().c_str());
+ }
+ else if(g_str_has_prefix(key_iter, "darktable:multi_priority"))
+ {
+- current_entry->multi_priority = history->value().toLong();
++ current_entry->multi_priority = history->toLong();
+ }
+ else if(g_str_has_prefix(key_iter, "darktable:iop_order"))
+ {
+ // we ensure reading the iop_order as a high precision float
+- string str = g_strdup(history->value().toString().c_str());
++ string str = g_strdup(history->toString().c_str());
+ static const std::locale& c_locale = std::locale("C");
+ std::istringstream istring(str);
+ istring.imbue(c_locale);
+@@ -2698,12 +2703,12 @@ static GList *read_history_v2(Exiv2::XmpData &xmpData, const char *filename)
+ }
+ else if(g_str_has_prefix(key_iter, "darktable:blendop_version"))
+ {
+- current_entry->blendop_version = history->value().toLong();
++ current_entry->blendop_version = history->toLong();
+ }
+ else if(g_str_has_prefix(key_iter, "darktable:blendop_params"))
+ {
+- current_entry->blendop_params = dt_exif_xmp_decode(history->value().toString().c_str(),
+- history->value().size(),
++ current_entry->blendop_params = dt_exif_xmp_decode(history->toString().c_str(),
++ history->size(),
+ &current_entry->blendop_params_len);
+ }
+ }
+@@ -2858,35 +2863,35 @@ static GList *read_masks_v3(Exiv2::XmpData &xmpData, const char *filename, const
+ // go on reading things into current_entry
+ if(g_str_has_prefix(key_iter, "darktable:mask_num"))
+ {
+- current_entry->mask_num = history->value().toLong();
++ current_entry->mask_num = history->toLong();
+ }
+ else if(g_str_has_prefix(key_iter, "darktable:mask_id"))
+ {
+- current_entry->mask_id = history->value().toLong();
++ current_entry->mask_id = history->toLong();
+ }
+ else if(g_str_has_prefix(key_iter, "darktable:mask_type"))
+ {
+- current_entry->mask_type = history->value().toLong();
++ current_entry->mask_type = history->toLong();
+ }
+ else if(g_str_has_prefix(key_iter, "darktable:mask_name"))
+ {
+- current_entry->mask_name = g_strdup(history->value().toString().c_str());
++ current_entry->mask_name = g_strdup(history->toString().c_str());
+ }
+ else if(g_str_has_prefix(key_iter, "darktable:mask_version"))
+ {
+- current_entry->mask_version = history->value().toLong();
++ current_entry->mask_version = history->toLong();
+ }
+ else if(g_str_has_prefix(key_iter, "darktable:mask_points"))
+ {
+- current_entry->mask_points = dt_exif_xmp_decode(history->value().toString().c_str(), history->value().size(), &current_entry->mask_points_len);
++ current_entry->mask_points = dt_exif_xmp_decode(history->toString().c_str(), history->size(), &current_entry->mask_points_len);
+ }
+ else if(g_str_has_prefix(key_iter, "darktable:mask_nb"))
+ {
+- current_entry->mask_nb = history->value().toLong();
++ current_entry->mask_nb = history->toLong();
+ }
+ else if(g_str_has_prefix(key_iter, "darktable:mask_src"))
+ {
+- current_entry->mask_src = dt_exif_xmp_decode(history->value().toString().c_str(), history->value().size(), &current_entry->mask_src_len);
++ current_entry->mask_src = dt_exif_xmp_decode(history->toString().c_str(), history->size(), &current_entry->mask_src_len);
+ }
+
+ }
+@@ -4060,7 +4065,11 @@ char *dt_exif_xmp_read_string(const int imgid)
+ std::string xmpPacket;
+
+ Exiv2::DataBuf buf = Exiv2::readFile(WIDEN(input_filename));
++#if EXIV2_TEST_VERSION(0,28,0)
++ xmpPacket.assign(buf.c_str(), buf.size());
++#else
+ xmpPacket.assign(reinterpret_cast<char *>(buf.pData_), buf.size_);
++#endif
+ Exiv2::XmpParser::decode(xmpData, xmpPacket);
+ // because XmpSeq or XmpBag are added to the list, we first have
+ // to remove these so that we don't end up with a string of duplicates
+@@ -4076,7 +4085,11 @@ char *dt_exif_xmp_read_string(const int imgid)
+ std::string xmpPacket;
+
+ Exiv2::DataBuf buf = Exiv2::readFile(WIDEN(input_filename));
++#if EXIV2_TEST_VERSION(0,28,0)
++ xmpPacket.assign(buf.c_str(), buf.size());
++#else
+ xmpPacket.assign(reinterpret_cast<char *>(buf.pData_), buf.size_);
++#endif
+ Exiv2::XmpParser::decode(sidecarXmpData, xmpPacket);
+
+ for(Exiv2::XmpData::const_iterator it = sidecarXmpData.begin(); it != sidecarXmpData.end(); ++it)
+@@ -4204,7 +4217,11 @@ int dt_exif_xmp_attach_export(const int imgid, const char *filename, void *metad
+ std::string xmpPacket;
+
+ Exiv2::DataBuf buf = Exiv2::readFile(WIDEN(input_filename));
++#if EXIV2_TEST_VERSION(0,28,0)
++ xmpPacket.assign(buf.c_str(), buf.size());
++#else
+ xmpPacket.assign(reinterpret_cast<char *>(buf.pData_), buf.size_);
++#endif
+ Exiv2::XmpParser::decode(sidecarXmpData, xmpPacket);
+
+ for(Exiv2::XmpData::const_iterator it = sidecarXmpData.begin(); it != sidecarXmpData.end(); ++it)
+@@ -4371,7 +4388,7 @@ int dt_exif_xmp_attach_export(const int imgid, const char *filename, void *metad
+ catch(Exiv2::AnyError &e)
+ {
+ #if EXIV2_TEST_VERSION(0,27,0)
+- if(e.code() == Exiv2::kerTooLargeJpegSegment)
++ if(e.code() == Exiv2::ErrorCode::kerTooLargeJpegSegment)
+ #else
+ if(e.code() == 37)
+ #endif
+@@ -4437,7 +4454,11 @@ int dt_exif_xmp_write(const int imgid, const char *filename)
+ }
+
+ Exiv2::DataBuf buf = Exiv2::readFile(WIDEN(filename));
++#if EXIV2_TEST_VERSION(0,28,0)
++ xmpPacket.assign(buf.c_str(), buf.size());
++#else
+ xmpPacket.assign(reinterpret_cast<char *>(buf.pData_), buf.size_);
++#endif
+ Exiv2::XmpParser::decode(xmpData, xmpPacket);
+ // because XmpSeq or XmpBag are added to the list, we first have
+ // to remove these so that we don't end up with a string of duplicates
+diff --git a/tools/basecurve/exif-wrapper.cpp b/tools/basecurve/exif-wrapper.cpp
+index f4d4d46e12..41bb021012 100644
+--- a/tools/basecurve/exif-wrapper.cpp
++++ b/tools/basecurve/exif-wrapper.cpp
+@@ -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)
+ {