diff options
author | psykose <alice@ayaya.dev> | 2023-06-05 21:30:54 +0000 |
---|---|---|
committer | psykose <alice@ayaya.dev> | 2023-06-15 07:58:01 +0200 |
commit | f67230aece9661517259b19b8e8a9a32070378eb (patch) | |
tree | acdbb01c9096701745ed6cfd5882de2f953afdae | |
parent | 2ff3c3967e74ebf550e10ceefa77d811a73e5baa (diff) |
community/gthumb: rebuild agianst exiv2-0.28
-rw-r--r-- | community/gthumb/APKBUILD | 4 | ||||
-rw-r--r-- | community/gthumb/exiv2-0.28.patch | 365 |
2 files changed, 368 insertions, 1 deletions
diff --git a/community/gthumb/APKBUILD b/community/gthumb/APKBUILD index 3b46c8a35f6..ca6be8054e7 100644 --- a/community/gthumb/APKBUILD +++ b/community/gthumb/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: Jakub Jirutka <jakub@jirutka.cz> pkgname=gthumb pkgver=3.12.2 -pkgrel=2 +pkgrel=3 pkgdesc="Image viewer and browser from GNOME" url="https://gitlab.gnome.org/GNOME/gthumb" # optional libjxl, but nobody uses this on s390x @@ -46,6 +46,7 @@ subpackages=" $pkgname-full " source="https://gitlab.gnome.org/GNOME/gthumb/-/archive/$pkgver/gthumb-$pkgver.tar.gz + exiv2-0.28.patch libraw-0.21.patch " @@ -210,5 +211,6 @@ _rename() { sha512sums=" 3066c5dd5fdd10fa5f869195adfd9fd3b5ee26cb7902cb87d324a90af535108558a223989ed736a941b8f6ce56e29c27a675da10fa1fb4f76919ced6a3c78b61 gthumb-3.12.2.tar.gz +b83f7666841ea39c45cba10acb653ec822249244e6a2d269ecc320080ab32654bc77e4be81bf0768289c2982bbc6c322abff3f14f522afb43c5f7ce1f37ac687 exiv2-0.28.patch d1ac353f630e4f6dcbec1be2911c3e2ba3558586aac5f688bc46d36ca7facb009624376dc1d000351f5e36ea1687c9e5f6e017c6ef3f8f93147e3d2e4239b562 libraw-0.21.patch " diff --git a/community/gthumb/exiv2-0.28.patch b/community/gthumb/exiv2-0.28.patch new file mode 100644 index 00000000000..e47df5f56f1 --- /dev/null +++ b/community/gthumb/exiv2-0.28.patch @@ -0,0 +1,365 @@ +Patch-Source: https://gitlab.archlinux.org/archlinux/packaging/packages/gthumb/-/blob/362ccadb79f5f4aeca7fa7d2b07047fe9055dd18/exiv2-0.28.patch +-- +diff --git a/extensions/exiv2_tools/exiv2-utils.cpp b/extensions/exiv2_tools/exiv2-utils.cpp +index 56dadb4e..20f049c2 100644 +--- a/extensions/exiv2_tools/exiv2-utils.cpp ++++ b/extensions/exiv2_tools/exiv2-utils.cpp +@@ -740,7 +740,11 @@ get_exif_default_category (const Exiv2::Exifdatum &md) + + + static void ++#if EXIV2_TEST_VERSION(0,28,0) ++exiv2_read_metadata (Exiv2::Image::UniquePtr image, ++#else + exiv2_read_metadata (Exiv2::Image::AutoPtr image, ++#endif + GFileInfo *info, + gboolean update_general_attributes) + { +@@ -875,7 +879,11 @@ exiv2_read_metadata_from_file (GFile *file, + return FALSE; + } + ++#if EXIV2_TEST_VERSION(0,28,0) ++ Exiv2::Image::UniquePtr image = Exiv2::ImageFactory::open(path); ++#else + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(path); ++#endif + g_free (path); + + if (image.get() == 0) { +@@ -885,9 +893,17 @@ exiv2_read_metadata_from_file (GFile *file, + } + // Set the log level to only show errors (and suppress warnings, informational and debug messages) + Exiv2::LogMsg::setLevel(Exiv2::LogMsg::error); ++#if EXIV2_TEST_VERSION(0,28,0) ++ exiv2_read_metadata (std::move(image), info, update_general_attributes); ++#else + exiv2_read_metadata (image, info, update_general_attributes); ++#endif + } ++#if EXIV2_TEST_VERSION(0,28,0) ++ catch (Exiv2::Error& e) { ++#else + catch (Exiv2::AnyError& e) { ++#endif + if (error != NULL) + *error = g_error_new_literal (G_IO_ERROR, G_IO_ERROR_FAILED, e.what()); + return FALSE; +@@ -906,7 +922,11 @@ exiv2_read_metadata_from_buffer (void *buffer, + GError **error) + { + try { ++#if EXIV2_TEST_VERSION(0,28,0) ++ Exiv2::Image::UniquePtr image = Exiv2::ImageFactory::open ((Exiv2::byte*) buffer, buffer_size); ++#else + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open ((Exiv2::byte*) buffer, buffer_size); ++#endif + + if (image.get() == 0) { + if (error != NULL) +@@ -914,9 +934,17 @@ exiv2_read_metadata_from_buffer (void *buffer, + return FALSE; + } + ++#if EXIV2_TEST_VERSION(0,28,0) ++ exiv2_read_metadata (std::move(image), info, update_general_attributes); ++#else + exiv2_read_metadata (image, info, update_general_attributes); ++#endif + } ++#if EXIV2_TEST_VERSION(0,28,0) ++ catch (Exiv2::Error& e) { ++#else + catch (Exiv2::AnyError& e) { ++#endif + if (error != NULL) + *error = g_error_new_literal (G_IO_ERROR, G_IO_ERROR_FAILED, e.what()); + return FALSE; +@@ -965,7 +993,11 @@ exiv2_read_sidecar (GFile *file, + g_free (path); + + std::string xmpPacket; ++#if EXIV2_TEST_VERSION(0,28,0) ++ xmpPacket.assign(reinterpret_cast<char*>(buf.data()), buf.size()); ++#else + xmpPacket.assign(reinterpret_cast<char*>(buf.pData_), buf.size_); ++#endif + Exiv2::XmpData xmpData; + + if (0 != Exiv2::XmpParser::decode(xmpData, xmpPacket)) +@@ -1011,7 +1043,11 @@ exiv2_read_sidecar (GFile *file, + + set_attributes_from_tagsets (info, update_general_attributes); + } ++#if EXIV2_TEST_VERSION(0,28,0) ++ catch (Exiv2::Error& e) { ++#else + catch (Exiv2::AnyError& e) { ++#endif + std::cerr << "Caught Exiv2 exception '" << e << "'\n"; + return FALSE; + } +@@ -1111,7 +1147,11 @@ dump_exif_data (Exiv2::ExifData &exifData, + + + static Exiv2::DataBuf ++#if EXIV2_TEST_VERSION(0,28,0) ++exiv2_write_metadata_private (Exiv2::Image::UniquePtr image, ++#else + exiv2_write_metadata_private (Exiv2::Image::AutoPtr image, ++#endif + GFileInfo *info, + GthImage *image_data) + { +@@ -1148,13 +1188,21 @@ exiv2_write_metadata_private (Exiv2::Image::AutoPtr image, + const char *value_type = gth_main_get_metadata_type (metadatum, attributes[i]); + + if ((raw_value != NULL) && (strcmp (raw_value, "") != 0) && (value_type != NULL)) { ++#if EXIV2_TEST_VERSION(0,28,0) ++ Exiv2::Value::UniquePtr value = Exiv2::Value::create (Exiv2::TypeInfo::typeId (value_type)); ++#else + Exiv2::Value::AutoPtr value = Exiv2::Value::create (Exiv2::TypeInfo::typeId (value_type)); ++#endif + value->read (raw_value); + Exiv2::ExifKey exif_key(key); + ed.add (exif_key, value.get()); + } + } ++#if EXIV2_TEST_VERSION(0,28,0) ++ catch (Exiv2::Error& e) { ++#else + catch (Exiv2::AnyError& e) { ++#endif + /* we don't care about invalid key errors */ + g_warning ("%s", e.what()); + } +@@ -1270,7 +1318,11 @@ exiv2_write_metadata_private (Exiv2::Image::AutoPtr image, + value_type = gth_main_get_metadata_type (metadatum, attributes[i]); + if (value_type != NULL) { + /* See the exif data code above for an explanation. */ ++#if EXIV2_TEST_VERSION(0,28,0) ++ Exiv2::Value::UniquePtr value = Exiv2::Value::create (Exiv2::TypeInfo::typeId (value_type)); ++#else + Exiv2::Value::AutoPtr value = Exiv2::Value::create (Exiv2::TypeInfo::typeId (value_type)); ++#endif + Exiv2::IptcKey iptc_key(key); + + const char *raw_value; +@@ -1296,7 +1348,11 @@ exiv2_write_metadata_private (Exiv2::Image::AutoPtr image, + } + } + } ++#if EXIV2_TEST_VERSION(0,28,0) ++ catch (Exiv2::Error& e) { ++#else + catch (Exiv2::AnyError& e) { ++#endif + /* we don't care about invalid key errors */ + g_warning ("%s", e.what()); + } +@@ -1320,7 +1376,11 @@ exiv2_write_metadata_private (Exiv2::Image::AutoPtr image, + value_type = gth_main_get_metadata_type (metadatum, attributes[i]); + if (value_type != NULL) { + /* See the exif data code above for an explanation. */ ++#if EXIV2_TEST_VERSION(0,28,0) ++ Exiv2::Value::UniquePtr value = Exiv2::Value::create (Exiv2::TypeInfo::typeId (value_type)); ++#else + Exiv2::Value::AutoPtr value = Exiv2::Value::create (Exiv2::TypeInfo::typeId (value_type)); ++#endif + Exiv2::XmpKey xmp_key(key); + + const char *raw_value; +@@ -1346,7 +1406,11 @@ exiv2_write_metadata_private (Exiv2::Image::AutoPtr image, + } + } + } ++#if EXIV2_TEST_VERSION(0,28,0) ++ catch (Exiv2::Error& e) { ++#else + catch (Exiv2::AnyError& e) { ++#endif + /* we don't care about invalid key errors */ + g_warning ("%s", e.what()); + } +@@ -1362,7 +1426,11 @@ exiv2_write_metadata_private (Exiv2::Image::AutoPtr image, + image->setXmpData(xd); + image->writeMetadata(); + } ++#if EXIV2_TEST_VERSION(0,28,0) ++ catch (Exiv2::Error& e) { ++#else + catch (Exiv2::AnyError& e) { ++#endif + g_warning ("%s", e.what()); + } + +@@ -1389,16 +1457,33 @@ exiv2_write_metadata (GthImageSaveData *data) + { + if (exiv2_supports_writes (data->mime_type) && (data->file_data != NULL)) { + try { ++#if EXIV2_TEST_VERSION(0,28,0) ++ Exiv2::Image::UniquePtr image = Exiv2::ImageFactory::open ((Exiv2::byte*) data->buffer, data->buffer_size); ++#else + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open ((Exiv2::byte*) data->buffer, data->buffer_size); ++#endif + g_assert (image.get() != 0); + ++#if EXIV2_TEST_VERSION(0,28,0) ++ Exiv2::DataBuf buf = exiv2_write_metadata_private (std::move(image), data->file_data->info, data->image); ++#else + Exiv2::DataBuf buf = exiv2_write_metadata_private (image, data->file_data->info, data->image); ++#endif + + g_free (data->buffer); ++#if EXIV2_TEST_VERSION(0,28,0) ++ data->buffer = g_memdup (buf.data(), buf.size()); ++ data->buffer_size = buf.size(); ++#else + data->buffer = g_memdup (buf.pData_, buf.size_); + data->buffer_size = buf.size_; ++#endif + } ++#if EXIV2_TEST_VERSION(0,28,0) ++ catch (Exiv2::Error& e) { ++#else + catch (Exiv2::AnyError& e) { ++#endif + if (data->error != NULL) + *data->error = g_error_new_literal (G_IO_ERROR, G_IO_ERROR_FAILED, e.what()); + g_warning ("%s\n", e.what()); +@@ -1419,16 +1504,33 @@ exiv2_write_metadata_to_buffer (void **buffer, + GError **error) + { + try { ++#if EXIV2_TEST_VERSION(0,28,0) ++ Exiv2::Image::UniquePtr image = Exiv2::ImageFactory::open ((Exiv2::byte*) *buffer, *buffer_size); ++#else + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open ((Exiv2::byte*) *buffer, *buffer_size); ++#endif + g_assert (image.get() != 0); + ++#if EXIV2_TEST_VERSION(0,28,0) ++ Exiv2::DataBuf buf = exiv2_write_metadata_private (std::move(image), info, image_data); ++#else + Exiv2::DataBuf buf = exiv2_write_metadata_private (image, info, image_data); ++#endif + + g_free (*buffer); ++#if EXIV2_TEST_VERSION(0,28,0) ++ *buffer = g_memdup (buf.data(), buf.size()); ++ *buffer_size = buf.size(); ++#else + *buffer = g_memdup (buf.pData_, buf.size_); + *buffer_size = buf.size_; ++#endif + } ++#if EXIV2_TEST_VERSION(0,28,0) ++ catch (Exiv2::Error& e) { ++#else + catch (Exiv2::AnyError& e) { ++#endif + if (error != NULL) + *error = g_error_new_literal (G_IO_ERROR, G_IO_ERROR_FAILED, e.what()); + return FALSE; +@@ -1445,7 +1547,11 @@ exiv2_clear_metadata (void **buffer, + GError **error) + { + try { ++#if EXIV2_TEST_VERSION(0,28,0) ++ Exiv2::Image::UniquePtr image = Exiv2::ImageFactory::open ((Exiv2::byte*) *buffer, *buffer_size); ++#else + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open ((Exiv2::byte*) *buffer, *buffer_size); ++#endif + + if (image.get() == 0) { + if (error != NULL) +@@ -1457,7 +1563,11 @@ exiv2_clear_metadata (void **buffer, + image->clearMetadata(); + image->writeMetadata(); + } ++#if EXIV2_TEST_VERSION(0,28,0) ++ catch (Exiv2::Error& e) { ++#else + catch (Exiv2::AnyError& e) { ++#endif + g_warning ("%s", e.what()); + } + +@@ -1466,10 +1576,19 @@ exiv2_clear_metadata (void **buffer, + Exiv2::DataBuf buf = io.read(io.size()); + + g_free (*buffer); ++#if EXIV2_TEST_VERSION(0,28,0) ++ *buffer = g_memdup (buf.data(), buf.size()); ++ *buffer_size = buf.size(); ++#else + *buffer = g_memdup (buf.pData_, buf.size_); + *buffer_size = buf.size_; ++#endif + } ++#if EXIV2_TEST_VERSION(0,28,0) ++ catch (Exiv2::Error& e) { ++#else + catch (Exiv2::AnyError& e) { ++#endif + if (error != NULL) + *error = g_error_new_literal (G_IO_ERROR, G_IO_ERROR_FAILED, e.what()); + return FALSE; +@@ -1502,26 +1621,44 @@ exiv2_generate_thumbnail (const char *uri, + if (path == NULL) + return NULL; + ++#if EXIV2_TEST_VERSION(0,28,0) ++ Exiv2::Image::UniquePtr image = Exiv2::ImageFactory::open (path); ++#else + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open (path); ++#endif + image->readMetadata (); + Exiv2::ExifThumbC exifThumb (image->exifData ()); + Exiv2::DataBuf thumb = exifThumb.copy (); + + g_free (path); + ++#if EXIV2_TEST_VERSION(0,28,0) ++ if (thumb.data() == NULL) ++#else + if (thumb.pData_ == NULL) ++#endif + return NULL; + + Exiv2::ExifData &ed = image->exifData(); + ++#if EXIV2_TEST_VERSION(0,28,0) ++ long orientation = (ed["Exif.Image.Orientation"].count() > 0) ? ed["Exif.Image.Orientation"].toUint32() : 1; ++ long image_width = (ed["Exif.Photo.PixelXDimension"].count() > 0) ? ed["Exif.Photo.PixelXDimension"].toUint32() : -1; ++ long image_height = (ed["Exif.Photo.PixelYDimension"].count() > 0) ? ed["Exif.Photo.PixelYDimension"].toUint32() : -1; ++#else + long orientation = (ed["Exif.Image.Orientation"].count() > 0) ? ed["Exif.Image.Orientation"].toLong() : 1; + long image_width = (ed["Exif.Photo.PixelXDimension"].count() > 0) ? ed["Exif.Photo.PixelXDimension"].toLong() : -1; + long image_height = (ed["Exif.Photo.PixelYDimension"].count() > 0) ? ed["Exif.Photo.PixelYDimension"].toLong() : -1; ++#endif + + if ((orientation != 1) || (image_width <= 0) || (image_height <= 0)) + return NULL; + ++#if EXIV2_TEST_VERSION(0,28,0) ++ GInputStream *stream = g_memory_input_stream_new_from_data (thumb.data(), thumb.size(), NULL); ++#else + GInputStream *stream = g_memory_input_stream_new_from_data (thumb.pData_, thumb.size_, NULL); ++#endif + pixbuf = gdk_pixbuf_new_from_stream (stream, NULL, NULL); + g_object_unref (stream); + +@@ -1575,7 +1712,11 @@ exiv2_generate_thumbnail (const char *uri, + gdk_pixbuf_set_option (pixbuf, "orientation", orientation_s); + g_free (orientation_s); + } ++#if EXIV2_TEST_VERSION(0,28,0) ++ catch (Exiv2::Error& e) { ++#else + catch (Exiv2::AnyError& e) { ++#endif + } + + return pixbuf; |