Github messages for voidlinux
 help / color / mirror / Atom feed
From: repk <repk@users.noreply.github.com>
To: ml@inbox.vuxu.org
Subject: Re: [PR PATCH] [Updated] Php imagick cross compilation support
Date: Mon, 04 Oct 2021 15:28:11 +0200	[thread overview]
Message-ID: <20211004132811.6of_Qq23qHH_TfuvsK75KSjvvVdhehvXWqRJqIhgl6Y@z> (raw)
In-Reply-To: <gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-32890@inbox.vuxu.org>

[-- Attachment #1: Type: text/plain, Size: 1662 bytes --]

There is an updated pull request by repk against master on the void-packages repository

https://github.com/repk/void-packages php-imagick-cross
https://github.com/void-linux/void-packages/pull/32890

Php imagick cross compilation support
<!-- Mark items with [x] where applicable -->

#### General
- [ ] This is a new package and it conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements)

#### Have the results of the proposed changes been tested?
- [x] I use the packages affected by the proposed changes on a regular basis and confirm this PR works for me
- [ ] I generally don't use the affected packages but briefly tested this PR

<!--
If GitHub CI cannot be used to validate the build result (for example, if the
build is likely to take several hours), make sure to
[skip CI](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration).
When skipping CI, uncomment and fill out the following section.
Note: for builds that are likely to complete in less than 2 hours, it is not
acceptable to skip CI.
-->
<!-- 
#### Does it build and run successfully? 
(Please choose at least one native build and, if supported, at least one cross build. More are better.)
- [x] I built this PR locally for my native architecture, (ARCH-LIBC)
- [x] I built this PR locally for these architectures (if supported. mark crossbuilds):
  - [x] aarch64-musl
  - [x] armv7l
  - [ ] armv6l-musl
-->

This adds support for php-imagick cross compilation.

A patch file from https://github.com/void-linux/void-packages/pull/32890.patch is attached

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-php-imagick-cross-32890.patch --]
[-- Type: text/x-diff, Size: 7017 bytes --]

From 70800b5aedc441f5c18daddc7274e3720d8ae97b Mon Sep 17 00:00:00 2001
From: Remi Pommarel <repk@triplefau.lt>
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 a1390b7e1ec2..c98c59815ac6 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 <repk@triplefau.lt>
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 000000000000..bbe0a514a9e8
--- /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 c98c59815ac6..927bbf8504f8 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 <repk@triplefau.lt>
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 000000000000..16b8aaa57371
--- /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 dba22bb860cd..271bbe6959a9 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
 }

  parent reply	other threads:[~2021-10-04 13:28 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-09 15:21 [PR PATCH] " repk
2021-09-09 18:22 ` [PR PATCH] [Updated] " repk
2021-10-04 12:21 ` repk
2021-10-04 12:23 ` repk
2021-10-04 13:20 ` [PR REVIEW] " ericonr
2021-10-04 13:20 ` ericonr
2021-10-04 13:28 ` repk [this message]
2021-10-08 14:50 ` [PR PATCH] [Merged]: php: opcache and " ericonr

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211004132811.6of_Qq23qHH_TfuvsK75KSjvvVdhehvXWqRJqIhgl6Y@z \
    --to=repk@users.noreply.github.com \
    --cc=ml@inbox.vuxu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).