diff options
| author | Remi Collet <remi@remirepo.net> | 2026-07-17 09:28:04 +0200 |
|---|---|---|
| committer | Remi Collet <remi@php.net> | 2026-07-17 09:28:04 +0200 |
| commit | 077129cb10451f98cb204248be00aef7c1bc4494 (patch) | |
| tree | 50b75bef5b3b281a3704ee5c20642ce7cc007dbc | |
| parent | 06b1f2469bfdc8aa27fd79bb554dd1574058ce17 (diff) | |
https://github.com/Imagick/imagick/pull/795
rename to php-pecl-imagick always using ImageMagick 7
| -rw-r--r-- | 795.patch | 93 | ||||
| -rw-r--r-- | php-pecl-imagick.spec | 92 |
2 files changed, 120 insertions, 65 deletions
diff --git a/795.patch b/795.patch new file mode 100644 index 0000000..14a7108 --- /dev/null +++ b/795.patch @@ -0,0 +1,93 @@ +From b66718758dd220e95e59f449d59f65d7a5394279 Mon Sep 17 00:00:00 2001 +From: Calvin Buckley <calvin@cmpct.info> +Date: Mon, 6 Jul 2026 14:18:19 -0300 +Subject: [PATCH] XtOffsetOf is removed in 8.6, use standard C offsetof + +--- + imagick.c | 10 +++++----- + php_imagick_defs.h | 10 +++++----- + 2 files changed, 10 insertions(+), 10 deletions(-) + +diff --git a/imagick.c b/imagick.c +index 68e63e13..ed5ad958 100644 +--- a/imagick.c ++++ b/imagick.c +@@ -1057,7 +1057,7 @@ PHP_MINIT_FUNCTION(imagick) + imagick_object_handlers.read_property = php_imagick_read_property; + imagick_object_handlers.count_elements = php_imagick_count_elements; + #if PHP_VERSION_ID >= 70000 +- imagick_object_handlers.offset = XtOffsetOf(php_imagick_object, zo); ++ imagick_object_handlers.offset = offsetof(php_imagick_object, zo); + imagick_object_handlers.free_obj = php_imagick_object_free_storage; + #endif + +@@ -1077,7 +1077,7 @@ PHP_MINIT_FUNCTION(imagick) + #endif + imagickdraw_object_handlers.clone_obj = php_imagick_clone_imagickdraw_object; + #if PHP_VERSION_ID >= 70000 +- imagickdraw_object_handlers.offset = XtOffsetOf(php_imagickdraw_object, zo); ++ imagickdraw_object_handlers.offset = offsetof(php_imagickdraw_object, zo); + imagickdraw_object_handlers.free_obj = php_imagickdraw_object_free_storage; + #endif + php_imagickdraw_sc_entry = zend_register_internal_class(&ce TSRMLS_CC); +@@ -1095,7 +1095,7 @@ PHP_MINIT_FUNCTION(imagick) + #endif + imagickpixeliterator_object_handlers.clone_obj = NULL; + #if PHP_VERSION_ID >= 70000 +- imagickpixeliterator_object_handlers.offset = XtOffsetOf(php_imagickpixeliterator_object, zo); ++ imagickpixeliterator_object_handlers.offset = offsetof(php_imagickpixeliterator_object, zo); + imagickpixeliterator_object_handlers.free_obj = php_imagickpixeliterator_object_free_storage; + #endif + php_imagickpixeliterator_sc_entry = zend_register_internal_class(&ce TSRMLS_CC); +@@ -1114,7 +1114,7 @@ PHP_MINIT_FUNCTION(imagick) + #endif + imagickpixel_object_handlers.clone_obj = php_imagick_clone_imagickpixel_object; + #if PHP_VERSION_ID >= 70000 +- imagickpixel_object_handlers.offset = XtOffsetOf(php_imagickpixel_object, zo); ++ imagickpixel_object_handlers.offset = offsetof(php_imagickpixel_object, zo); + imagickpixel_object_handlers.free_obj = php_imagickpixel_object_free_storage; + #endif + +@@ -1136,7 +1136,7 @@ PHP_MINIT_FUNCTION(imagick) + imagickkernel_object_handlers.get_debug_info = php_imagickkernel_get_debug_info; + imagickkernel_object_handlers.clone_obj = php_imagick_clone_imagickkernel_object; + #if PHP_VERSION_ID >= 70000 +- imagickkernel_object_handlers.offset = XtOffsetOf(php_imagickkernel_object, zo); ++ imagickkernel_object_handlers.offset = offsetof(php_imagickkernel_object, zo); + imagickkernel_object_handlers.free_obj = php_imagickkernel_object_free_storage; + #endif + +diff --git a/php_imagick_defs.h b/php_imagick_defs.h +index 2c5f990a..9ff83620 100644 +--- a/php_imagick_defs.h ++++ b/php_imagick_defs.h +@@ -273,24 +273,24 @@ typedef struct _php_imagickkernel_object { + #if PHP_VERSION_ID >= 70000 + + static inline php_imagick_object *php_imagick_fetch_object(zend_object *obj) { +- return (php_imagick_object *)((char*)(obj) - XtOffsetOf(php_imagick_object, zo)); ++ return (php_imagick_object *)((char*)(obj) - offsetof(php_imagick_object, zo)); + } + + static inline php_imagickdraw_object *php_imagickdraw_fetch_object(zend_object *obj) { +- return (php_imagickdraw_object *)((char*)(obj) - XtOffsetOf(php_imagickdraw_object, zo)); ++ return (php_imagickdraw_object *)((char*)(obj) - offsetof(php_imagickdraw_object, zo)); + } + + static inline php_imagickpixel_object *php_imagickpixel_fetch_object(zend_object *obj) { +- return (php_imagickpixel_object *)((char*)(obj) - XtOffsetOf(php_imagickpixel_object, zo)); ++ return (php_imagickpixel_object *)((char*)(obj) - offsetof(php_imagickpixel_object, zo)); + } + + static inline php_imagickpixeliterator_object *php_imagickpixeliterator_fetch_object(zend_object *obj) { +- return (php_imagickpixeliterator_object *)((char*)(obj) - XtOffsetOf(php_imagickpixeliterator_object, zo)); ++ return (php_imagickpixeliterator_object *)((char*)(obj) - offsetof(php_imagickpixeliterator_object, zo)); + } + + #ifdef IMAGICK_WITH_KERNEL + static inline php_imagickkernel_object *php_imagickkernel_fetch_object(zend_object *obj) { +- return (php_imagickkernel_object *)((char*)(obj) - XtOffsetOf(php_imagickkernel_object, zo)); ++ return (php_imagickkernel_object *)((char*)(obj) - offsetof(php_imagickkernel_object, zo)); + } + #endif + diff --git a/php-pecl-imagick.spec b/php-pecl-imagick.spec index d71cc5b..2032161 100644 --- a/php-pecl-imagick.spec +++ b/php-pecl-imagick.spec @@ -7,21 +7,11 @@ # Please, preserve the changelog entries # +# Disable upstream test suite %bcond_without tests -%bcond_with im6 - -# Distribution default IM version -%if 0%{?fedora} >= 38 || 0%{?rhel} >= 10 -%global default 7 -%else -%global default 6 -%endif -# NOTICE: 2 builds needed to get the full set -# All distro -# default (im7) -# On EL 8 and 9 -# --with im6 +# Use ImageMagick legacy version +%bcond_with im6 %if 0%{?scl:1} %scl_package php-pecl-imagick @@ -45,20 +35,23 @@ %global forgeurl https://github.com/%{gh_vend}/%{gh_proj} %global tag %{upstream_version}%{?upstream_prever} +%global buildver %(pkg-config --silence-errors --modversion MagickWand 2>/dev/null || echo 65536) + +Name: %{?scl_prefix}php-pecl-imagick %if %{with im6} Summary: Extension to create and modify images using ImageMagick 6 -Name: %{?scl_prefix}php-pecl-imagick-im6 %else Summary: Extension to create and modify images using ImageMagick 7 -Name: %{?scl_prefix}php-pecl-imagick-im7 %endif License: PHP-3.01 Version: %{upstream_version}%{?upstream_prever:~%{upstream_prever}} -Release: 2.9%{?dist} +Release: 3%{?dist} %forgemeta URL: %{forgeurl} Source0: %{forgesource} +Patch0: 795.patch + BuildRequires: make BuildRequires: %{?dtsprefix}gcc BuildRequires: %{?scl_prefix}php-devel @@ -71,17 +64,9 @@ BuildRequires: ImageMagick7-devel Requires: %{?scl_prefix}php(zend-abi) = %{php_zend_api} Requires: %{?scl_prefix}php(api) = %{php_core_api} -%if %{with im6} +# Extension Provides: %{?scl_prefix}php-%{pecl_name} = %{version} Provides: %{?scl_prefix}php-%{pecl_name}%{?_isa} = %{version} -Provides: %{?scl_prefix}php-pecl-imagick = %{version}-%{release} -Provides: %{?scl_prefix}php-pecl-imagick%{?_isa} = %{version}-%{release} -%else -Provides: %{?scl_prefix}php-%{pecl_name} = 1:%{version} -Provides: %{?scl_prefix}php-%{pecl_name}%{?_isa} = 1:%{version} -Provides: %{?scl_prefix}php-pecl-imagick = 1:%{version}-%{release} -Provides: %{?scl_prefix}php-pecl-imagick%{?_isa} = 1:%{version}-%{release} -%endif # PECL Provides: %{?scl_prefix}php-pecl(%{pecl_name}) = %{version} Provides: %{?scl_prefix}php-pecl(%{pecl_name})%{?_isa} = %{version} @@ -90,21 +75,10 @@ Provides: %{?scl_prefix}php-pie(%{pie_vend}/%{pie_proj}) = %{version} Provides: %{?scl_prefix}php-%{pie_vend}-%{pie_proj} = %{version} Conflicts: %{?scl_prefix}php-pecl-gmagick -%if %{with im6} -Conflicts: %{?scl_prefix}php-pecl-imagick-im7 <= %{version}-%{release} -%if %{default} == 6 -Obsoletes: %{?scl_prefix}php-pecl-imagick <= %{version}-%{release} -%else -Conflicts: %{?scl_prefix}php-pecl-imagick <= %{version}-%{release} -%endif -%else -Conflicts: %{?scl_prefix}php-pecl-imagick-im6 <= %{version}-%{release} -%if %{default} == 7 -Obsoletes: %{?scl_prefix}php-pecl-imagick <= %{version}-%{release} -%else -Conflicts: %{?scl_prefix}php-pecl-imagick <= %{version}-%{release} -%endif -%endif +Obsoletes: %{?scl_prefix}php-pecl-imagick-im6 < %{version}-%{release} +Obsoletes: %{?scl_prefix}php-pecl-imagick-im7 < %{version}-%{release} +Provides: %{?scl_prefix}php-pecl-imagick-im7 = %{version}-%{release} + %description Imagick is a native php extension to create and modify images @@ -112,37 +86,18 @@ using the ImageMagick API. Documentation: https://www.php.net/imagick -%if %{with im6} -Package built using ImageMagick version 6 -%else -Package built using ImageMagick version 7 -%endif -Package built for PHP %(%{__php} -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')%{?scl: as Software Collection (%{scl} by %{?scl_vendor}%{!?scl_vendor:rh})}. +Package built using ImageMagick version %{buildver} +Package built for PHP %(%{__php} -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')%{?scl: as Software Collection (%{scl} by %{?scl_vendor}%{!?scl_vendor:rh})} %package devel -Summary: %{pecl_name} extension developer files (header) -Group: Development/Libraries +Summary: %{pecl_name} extension developer files (headers) Requires: %{name}%{?_isa} = %{version}-%{release} Requires: %{?scl_prefix}php-devel%{?_isa} -%if %{with im6} -Conflicts: %{?scl_prefix}php-pecl-imagick-im7-devel -%if %{default} == 6 -Obsoletes: %{?scl_prefix}php-pecl-imagick-devel < %{version}-%{release} -%else -Conflicts: %{?scl_prefix}php-pecl-imagick-devel < %{version}-%{release} -%endif -%else -Conflicts: %{?scl_prefix}php-pecl-imagick-im6-devel -%if %{default} == 7 -Obsoletes: %{?scl_prefix}php-pecl-imagick-devel < %{version}-%{release} -%else -Conflicts: %{?scl_prefix}php-pecl-imagick-devel < %{version}-%{release} -%endif -%endif -Provides: %{?scl_prefix}php-pecl-imagick-devel = %{version}-%{release} -Provides: %{?scl_prefix}php-pecl-imagick-devel%{?_isa} = %{version}-%{release} +Obsoletes: %{?scl_prefix}php-pecl-imagick-im6-devel < %{version}-%{release} +Obsoletes: %{?scl_prefix}php-pecl-imagick-im7-devel < %{version}-%{release} +Provides: %{?scl_prefix}php-pecl-imagick-im7-devel = %{version}-%{release} %description devel These are the files needed to compile programs using %{pecl_name} extension. @@ -152,6 +107,8 @@ These are the files needed to compile programs using %{pecl_name} extension. %setup -q -c cd %{sources} +%patch -P0 -p1 + : bundled font rm tests/*.ttf rm tests/015-imagickdrawsetresolution.phpt @@ -327,6 +284,11 @@ exit $ret %changelog +* Fri Jul 17 2026 Remi Collet <remi@remirepo.net> - 3.8.1-3 +- fix build with PHP 8.6.0alpha2 using patch from + https://github.com/Imagick/imagick/pull/795 +- rename to php-pecl-imagick always using ImageMagick 7 + * Fri Mar 13 2026 Remi Collet <remi@remirepo.net> - 3.8.1-2 - drop pear/pecl dependency - sources from github |
