summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemi Collet <remi@remirepo.net>2026-07-17 09:28:04 +0200
committerRemi Collet <remi@php.net>2026-07-17 09:28:04 +0200
commit077129cb10451f98cb204248be00aef7c1bc4494 (patch)
tree50b75bef5b3b281a3704ee5c20642ce7cc007dbc
parent06b1f2469bfdc8aa27fd79bb554dd1574058ce17 (diff)
fix build with PHP 8.6.0alpha2 using patch fromHEADmaster
https://github.com/Imagick/imagick/pull/795 rename to php-pecl-imagick always using ImageMagick 7
-rw-r--r--795.patch93
-rw-r--r--php-pecl-imagick.spec92
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