From 70800b5aedc441f5c18daddc7274e3720d8ae97b Mon Sep 17 00:00:00 2001 From: Remi Pommarel Date: Fri, 10 Sep 2021 00:30:34 +0200 Subject: [PATCH 1/3] php: Support opcache cross compilation Opcache extension configuration tries to detect some shared memory function by compiling and executing test programs at compile time. This cannot work when cross compiling. To workaround that add proper defines to use those functions anyway if we are cross compiling. That fixes the following error when using opcache extension on arm: Fatal Error Unable to allocate shared memory segment of 134217728 bytes --- srcpkgs/php/template | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/srcpkgs/php/template b/srcpkgs/php/template index a1390b7e1ec2e2..c98c59815ac65d 100644 --- a/srcpkgs/php/template +++ b/srcpkgs/php/template @@ -23,7 +23,14 @@ replaces="php-mcrypt<7.2.0" if [ -n "$CROSS_BUILD" ]; then # php-pear needs php to build hostmakedepends+=" php" - CFLAGS+=" -DHAVE_LIBDL -DHAVE_DLOPEN -DHAVE_DLSYM" + CFLAGS+=" -DHAVE_LIBDL + -DHAVE_DLOPEN + -DHAVE_DLSYM + -DHAVE_SHM_IPC + -DHAVE_SHM_MMAP_ANON + -DHAVE_SHM_MMAP_ZERO + -DHAVE_SHM_MMAP_POSIX + -DHAVE_SHM_MMAP_FILE" fi do_build() { From e55167ddd93d9eaca270fec378dabebf5abbaba9 Mon Sep 17 00:00:00 2001 From: Remi Pommarel Date: Thu, 9 Sep 2021 16:36:50 +0200 Subject: [PATCH 2/3] php: phpize: Modify ltmain.sh to support sysroot path in .la files PHP's phpize is based on a very old libtool to generate build files for its extensions. This libtool does not support .la files with '=' to support sysroot. In order to support more PHP extension cross compilation this modifies ltmain.sh to support such path. This is a bit hackish has it only get sysroot from the used toolchain; the proper way to fix that is to have PHP developpers to update the autotools file used to build there extensions. --- .../patches/php-ltmain-sysroot-support.patch | 39 +++++++++++++++++++ srcpkgs/php/template | 2 +- 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/php/patches/php-ltmain-sysroot-support.patch diff --git a/srcpkgs/php/patches/php-ltmain-sysroot-support.patch b/srcpkgs/php/patches/php-ltmain-sysroot-support.patch new file mode 100644 index 00000000000000..bbe0a514a9e8ac --- /dev/null +++ b/srcpkgs/php/patches/php-ltmain-sysroot-support.patch @@ -0,0 +1,39 @@ +--- a/build/ltmain.sh 2021-09-09 15:19:14.822208365 +0200 ++++ b/build/ltmain.sh 2021-09-09 15:47:55.397011151 +0200 +@@ -2375,6 +2375,13 @@ EOF + *) . ./$lib ;; + esac + ++ newdependency_libs= ++ for deplib in $dependency_libs; do ++ deplib=$(echo "$deplib" | sed "s#^=\(.*\)#$(${CC} --print-sysroot)\1#") ++ newdependency_libs="$newdependency_libs $deplib" ++ done ++ dependency_libs=${newdependency_libs} ++ + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then +@@ -5750,6 +5757,13 @@ fi\ + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac ++ ++ newdependency_libs= ++ for deplib in $dependency_libs; do ++ deplib=$(echo "$deplib" | sed "s#^$(${CC} --print-sysroot)#=#") ++ newdependency_libs="$newdependency_libs $deplib" ++ done ++ + $echo > $output "\ + # $outputname - a libtool library file + # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +@@ -5767,7 +5781,7 @@ library_names='$library_names' + old_library='$old_library' + + # Libraries that this one depends upon. +-dependency_libs='$dependency_libs' ++dependency_libs='$newdependency_libs' + + # Version information for $libname. + current=$current diff --git a/srcpkgs/php/template b/srcpkgs/php/template index c98c59815ac65d..927bbf8504f8e4 100644 --- a/srcpkgs/php/template +++ b/srcpkgs/php/template @@ -1,7 +1,7 @@ # Template file for 'php' pkgname=php version=7.4.14 -revision=5 +revision=6 hostmakedepends="bison pkg-config apache-devel" makedepends="apache-devel enchant-devel freetds-devel freetype-devel gdbm-devel gmp-devel libcurl-devel libjpeg-turbo-devel libmariadbclient-devel From 1814b532e0ba961178506ae9af3fa2695bf697ca Mon Sep 17 00:00:00 2001 From: Remi Pommarel Date: Thu, 9 Sep 2021 16:47:40 +0200 Subject: [PATCH 3/3] php-imagick: Cross compilation support --- ...pile-libmagick-header-file-search-path.patch | 17 +++++++++++++++++ srcpkgs/php-imagick/template | 7 ++----- 2 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 srcpkgs/php-imagick/patches/0001-fix-cross-compile-libmagick-header-file-search-path.patch diff --git a/srcpkgs/php-imagick/patches/0001-fix-cross-compile-libmagick-header-file-search-path.patch b/srcpkgs/php-imagick/patches/0001-fix-cross-compile-libmagick-header-file-search-path.patch new file mode 100644 index 00000000000000..16b8aaa5737151 --- /dev/null +++ b/srcpkgs/php-imagick/patches/0001-fix-cross-compile-libmagick-header-file-search-path.patch @@ -0,0 +1,17 @@ +--- a/imagemagick.m4 2021-09-09 10:53:42.287881616 +0200 ++++ b/imagemagick.m4 2021-09-09 11:14:47.662312430 +0200 +@@ -167,6 +167,14 @@ AC_DEFUN([IM_FIND_IMAGEMAGICK],[ + + AC_MSG_RESULT([user location ${IM_IMAGEMAGICK_PREFIX}/include/ImageMagick-${IM_MAJOR_VERSION}/wand/MagickWand.h]) + ++ elif test -r "${IM_IMAGEMAGICK_PREFIX}/include/ImageMagick-${IM_MAJOR_VERSION}/MagickWand/MagickWand.h"; then ++ ++ IM_INCLUDE_FORMAT="MagickWand/MagickWand.h" ++ IM_HEADER_STYLE="SEVEN" ++ AC_DEFINE([IM_MAGICKWAND_HEADER_STYLE_SEVEN], [1], [ImageMagick 7.x style header]) ++ ++ AC_MSG_RESULT([${IM_PREFIX}/include/ImageMagick-${IM_MAJOR_VERSION}/MagickWand/MagickWand.h]) ++ + elif test -r "${IM_PREFIX}/include/ImageMagick-${IM_MAJOR_VERSION}/MagickWand/MagickWand.h"; then + + IM_INCLUDE_FORMAT="MagickWand/MagickWand.h" diff --git a/srcpkgs/php-imagick/template b/srcpkgs/php-imagick/template index dba22bb860cd37..271bbe6959a9fe 100644 --- a/srcpkgs/php-imagick/template +++ b/srcpkgs/php-imagick/template @@ -1,9 +1,10 @@ # Template file for 'php-imagick' pkgname=php-imagick version=3.4.4 -revision=3 +revision=4 wrksrc="imagick-$version" build_style=gnu-configure +configure_args="--with-imagick=${XBPS_CROSS_BASE}/usr" hostmakedepends="php-devel autoconf pkg-config" makedepends="php-devel pcre2-devel libmagick-devel" depends="php>=7.4.3" @@ -14,10 +15,6 @@ homepage="https://pecl.php.net/package/imagick" distfiles="https://pecl.php.net/get/imagick-$version.tgz" checksum=8dd5aa16465c218651fc8993e1faecd982e6a597870fd4b937e9ece02d567077 -if [ -n "$CROSS_BUILD" ]; then - broken="checking for MagickWand.h or magick-wand.h header... configure: error: Unable to find MagickWand.h or magick-wand.h header" -fi - pre_configure() { phpize }