From 57b759ff26257c956f799b5c1bfe276688913e88 Mon Sep 17 00:00:00 2001 From: Kleis Auke Wolthuizen Date: Tue, 9 Dec 2025 20:20:06 +0100 Subject: [PATCH] Fix build against GraphicsMagick (#4798) GraphicsMagick does not provide the `MagickPathExtent` definition, use `MaxPathExtent` instead. Resolves: #4796. --- libvips/foreign/magick6load.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libvips/foreign/magick6load.c b/libvips/foreign/magick6load.c index b809fae301..83055b7492 100644 --- a/libvips/foreign/magick6load.c +++ b/libvips/foreign/magick6load.c @@ -1120,7 +1120,7 @@ vips_foreign_load_magick_source_header(VipsForeignLoad *load) const char *filename = vips_connection_filename(VIPS_CONNECTION(magick_source->source)); - g_strlcpy(magick->image_info->filename, filename, MagickPathExtent); + g_strlcpy(magick->image_info->filename, filename, MaxPathExtent); magick_sniff_file(magick->image_info, filename); magick->image = ReadImage(magick->image_info, magick->exception); } From 7470eb84b060eea0c6ece9b6f4add1f262b50445 Mon Sep 17 00:00:00 2001 From: Kleis Auke Wolthuizen Date: Tue, 9 Dec 2025 16:52:22 +0100 Subject: [PATCH] Ensure compatibility with libraw < 0.21 Resolves: #4795. --- libvips/foreign/dcrawload.c | 19 +++++++++++++++++++ meson.build | 3 ++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/libvips/foreign/dcrawload.c b/libvips/foreign/dcrawload.c index 74bc5067be..c2c710937e 100644 --- a/libvips/foreign/dcrawload.c +++ b/libvips/foreign/dcrawload.c @@ -133,8 +133,10 @@ vips_foreign_load_dcraw_set_metadata(VipsForeignLoadDcRaw *raw, raw->raw_processor->idata.make); vips_image_set_string(image, "raw-model", raw->raw_processor->idata.model); +#if LIBRAW_COMPILE_CHECK_VERSION_NOTLESS(0, 17) vips_image_set_string(image, "raw-software", raw->raw_processor->idata.software); +#endif /*LIBRAW_COMPILE_CHECK_VERSION_NOTLESS(0, 17)*/ vips_image_set_double(image, "raw-iso", raw->raw_processor->other.iso_speed); vips_image_set_double(image, "raw-shutter", @@ -144,6 +146,9 @@ vips_foreign_load_dcraw_set_metadata(VipsForeignLoadDcRaw *raw, vips_image_set_double(image, "raw-focal-length", raw->raw_processor->other.focal_len); + /* See also: vips__get_iso8601() + */ +#if GLIB_CHECK_VERSION(2, 62, 0) GDateTime *dt = g_date_time_new_from_unix_utc(raw->raw_processor->other.timestamp); if (dt) { @@ -156,7 +161,18 @@ vips_foreign_load_dcraw_set_metadata(VipsForeignLoadDcRaw *raw, g_date_time_unref(dt); } +#else /*!GLIB_CHECK_VERSION(2, 62, 0)*/ + GTimeVal val = { raw->raw_processor->other.timestamp, 0 }; + + char *str = g_time_val_to_iso8601(&val); + if (str) { + vips_image_set_string(image, "raw-timestamp", str); + + g_free(str); + } +#endif /*GLIB_CHECK_VERSION(2, 62, 0)*/ +#if LIBRAW_COMPILE_CHECK_VERSION_NOTLESS(0, 17) if (raw->raw_processor->idata.xmpdata) vips_image_set_blob_copy(image, VIPS_META_XMP_NAME, raw->raw_processor->idata.xmpdata, @@ -164,6 +180,7 @@ vips_foreign_load_dcraw_set_metadata(VipsForeignLoadDcRaw *raw, vips_image_set_string(image, "raw-lens", raw->raw_processor->lens.Lens); +#endif /*LIBRAW_COMPILE_CHECK_VERSION_NOTLESS(0, 17)*/ if (raw->raw_processor->color.profile) vips_image_set_blob_copy(image, VIPS_META_ICC_NAME, @@ -197,6 +214,7 @@ vips_foreign_load_dcraw_set_metadata(VipsForeignLoadDcRaw *raw, } vips_image_set_int(image, VIPS_META_ORIENTATION, orientation); +#if LIBRAW_COMPILE_CHECK_VERSION_NOTLESS(0, 21) /* Search the available thumbnails for the largest that's smaller than * the main image and has a known type. */ @@ -251,6 +269,7 @@ vips_foreign_load_dcraw_set_metadata(VipsForeignLoadDcRaw *raw, raw->raw_processor->thumbnail.thumb, raw->raw_processor->thumbnail.tlength); } +#endif /*LIBRAW_COMPILE_CHECK_VERSION_NOTLESS(0, 21)*/ return 0; } diff --git a/meson.build b/meson.build index 6f2f8c02f1..7b3705a33d 100644 --- a/meson.build +++ b/meson.build @@ -455,7 +455,8 @@ if openexr_dep.found() cfg_var.set('HAVE_OPENEXR', true) endif -libraw_dep = dependency('libraw_r', required: get_option('raw')) +# require 0.14 for LIBRAW_COMPILE_CHECK_VERSION_NOTLESS +libraw_dep = dependency('libraw_r', version: '>=0.14', required: get_option('raw')) if libraw_dep.found() external_deps += libraw_dep cfg_var.set('HAVE_LIBRAW', true)