[PATCH] gnu: php: Update to 8.2.1.

  • Done
  • quality assurance status badge
Details
One participant
  • Julien Lepiller
Owner
unassigned
Submitted by
Julien Lepiller
Severity
normal
J
J
Julien Lepiller wrote on 28 Jan 2023 15:30
(address . guix-patches@gnu.org)
c4d115c7cbc2267fe14dbf8e28a9ab50df46b8a7.1674916243.git.julien@lepiller.eu
* gnu/packages/php.scm (php): Update to 8.2.1.
* gnu/packages/patches/php-curl-compat.patch: Remove file.
* gnu/packages/patches/php-bug-74093-test.patch: Remove file.
* gnu/local.mk (dist_patch_DATA): Remove them.
---
gnu/local.mk | 2 -
gnu/packages/patches/php-bug-74093-test.patch | 48 -------------------
gnu/packages/patches/php-curl-compat.patch | 17 -------
gnu/packages/php.scm | 26 ++++++----
4 files changed, 17 insertions(+), 76 deletions(-)
delete mode 100644 gnu/packages/patches/php-bug-74093-test.patch
delete mode 100644 gnu/packages/patches/php-curl-compat.patch

Toggle diff (165 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 7433654f0b..a899802348 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1668,8 +1668,6 @@ dist_patch_DATA = \
%D%/packages/patches/perl-www-curl-fix-struct-void.patch \
%D%/packages/patches/perl-www-curl-remove-symbol.patch \
%D%/packages/patches/phoronix-test-suite-fsdg.patch \
- %D%/packages/patches/php-bug-74093-test.patch \
- %D%/packages/patches/php-curl-compat.patch \
%D%/packages/patches/picprog-non-intel-support.patch \
%D%/packages/patches/pidgin-add-search-path.patch \
%D%/packages/patches/pinball-system-ltdl.patch \
diff --git a/gnu/packages/patches/php-bug-74093-test.patch b/gnu/packages/patches/php-bug-74093-test.patch
deleted file mode 100644
index 07b1949cef..0000000000
--- a/gnu/packages/patches/php-bug-74093-test.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From c641825c64e42627a2c9cac969b371ed532e0b57 Mon Sep 17 00:00:00 2001
-From: Ryan Sundberg <ryan@arctype.co>
-Date: Mon, 4 Oct 2021 20:12:25 -0700
-Subject: [PATCH] Zend/tests/bug74093.phpt: Fix failing test case
-
-This test case fails (on non-Windows hosts, where it is enabled) due
-to mismatching output in the error log language. This fixes the
-expectation, and also rewrites the test procedure in a more stable
-fashion.
-
-The objective of the test case is to run a program that exceeds
-the max_execution_time and verify that the process was aborted. The
-previous implementation tested this using a loop on array_intersect with
-large enough inputs to "probably" take enough time to trigger
-max_execution_time to abort it. With faster CPUs, over time this test
-can become flaky. Instead we simply spin a loop until enough
-wall clock time has passed to check our assertion.
----
- Zend/tests/bug74093.phpt | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/Zend/tests/bug74093.phpt b/Zend/tests/bug74093.phpt
-index 7f20285805..32eb445ddc 100644
---- a/Zend/tests/bug74093.phpt
-+++ b/Zend/tests/bug74093.phpt
-@@ -1,5 +1,5 @@
- --TEST--
--Bug #74093 (Maximum execution time of n+2 seconds exceed not written in error_log)
-+Bug #74093 (Maximum execution time exceeded not written in error_log)
- --SKIPIF--
- <?php
- if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
-@@ -12,9 +12,9 @@ max_execution_time=1
- hard_timeout=1
- --FILE--
- <?php
--$a1 = range(1, 1000000);
--$a2 = range(100000, 1999999);
--array_intersect($a1, $a2);
-+$start = time();
-+while (time() - $start < 5);
-+die("Failed to interrupt execution");
- ?>
- --EXPECTF--
--Fatal error: Maximum execution time of 1+1 seconds exceeded %s
-+Fatal error: Maximum execution time of 1 second exceeded in %s
---
-2.31.1
diff --git a/gnu/packages/patches/php-curl-compat.patch b/gnu/packages/patches/php-curl-compat.patch
deleted file mode 100644
index 0617251194..0000000000
--- a/gnu/packages/patches/php-curl-compat.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Fix test result with cURL 7.83 and later.
-
-Taken from upstream:
-
- https://github.com/php/php-src/commit/a4179e4c92b6365d39e09cb9cd63c476848013af
-
-diff --git a/ext/curl/tests/curl_basic_007.phpt b/ext/curl/tests/curl_basic_007.phpt
-index 3b53658d6a7e..3834e4674f82 100644
---- a/ext/curl/tests/curl_basic_007.phpt
-+++ b/ext/curl/tests/curl_basic_007.phpt
-@@ -20,5 +20,5 @@ curl_close($ch);
-
- ?>
- --EXPECTF--
--string(%d) "No URL set!%w"
-+string(%d) "No URL set%A"
- int(3)
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
index 645a8edee1..4874e3f50b 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -61,17 +61,15 @@ (define-module (gnu packages php)
(define-public php
(package
(name "php")
- (version "7.4.30")
- (home-page "https://secure.php.net/")
+ (version "8.2.1")
+ (home-page "https://www.php.net/")
(source (origin
(method url-fetch)
(uri (string-append home-page "distributions/"
"php-" version ".tar.xz"))
(sha256
(base32
- "03d7icwys4ikl45q3rgsxv1m3i7kfxhykpx75nn7jzn6697s6wpa"))
- (patches (search-patches "php-bug-74093-test.patch"
- "php-curl-compat.patch"))
+ "1bqp5hhww7kxvqvamgjbaxlx6p54igfz3xm0yq3vzjjnl3bkn3b5"))
(modules '((guix build utils)))
(snippet
'(with-directory-excursion "ext"
@@ -83,8 +81,7 @@ (define-public php
;;"bcmath/libbcmath"
;;"fileinfo/libmagic" ; a patched version of libmagic
'("gd/libgd"
- "pcre/pcre2lib"
- "xmlrpc/libxmlrpc"))))))
+ "pcre/pcre2lib"))))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
@@ -272,8 +269,6 @@ (define-public php
;; Some WebP related tests fail.
"ext/gd/tests/webp_basic.phpt"
"ext/gd/tests/imagecreatefromstring_webp.phpt"
- ;; Expected error message, but from the wrong function
- "ext/gd/tests/bug77269.phpt"
;; TODO: Enable these when libgd is built with xpm support.
"ext/gd/tests/xpm2gd.phpt"
"ext/gd/tests/xpm2jpg.phpt"
@@ -291,6 +286,14 @@ (define-public php
;; The following test fails with "The image size
;; differs: expected 114x115, got 117x117".
"ext/gd/tests/bug79068.phpt"
+ ;; AVIF support disabled
+ "ext/gd/tests/avif_decode_encode.phpt"
+ ;; Typo in expected outputs
+ "ext/gd/tests/bug72339.phpt"
+ "ext/gd/tests/bug77272.phpt"
+ "ext/gd/tests/bug66356.phpt"
+ ;; AVIF support disabled
+ "ext/gd/tests/imagecreatefromstring_avif.phpt"
;; XXX: These iconv tests have the expected outcome,
;; but with different error messages.
@@ -310,6 +313,11 @@ (define-public php
;; XXX: These test failures appear legitimate, needs investigation.
;; open_basedir() restriction failure.
"ext/curl/tests/bug61948-unix.phpt"
+ ;; Same error reason but error code slightly different
+ "ext/curl/tests/curl_setopt_ssl.phpt"
+
+ ;; Wrong error name
+ "ext/dba/tests/dba_gdbm_creation_matrix.phpt"
;; Expects a false boolean, gets empty array from glob().
"ext/standard/tests/file/bug41655_1.phpt"
"ext/standard/tests/file/glob_variation5.phpt"

base-commit: 37fdb382dad47149d8f5be41af108478800e9d30
--
2.38.1
J
J
Julien Lepiller wrote on 30 Jan 2023 21:34
(address . 61123@debbugs.gnu.org)
20230130213428.6a8a00b8@sybil.lepiller.eu
OK, CI is failing for x86_64 and suceeding for aarch64... I managed to
reproduce the same failure on my usual machine.

On the failing machine, I attempted to run issue0115.php. I had to
create a small php.ini to set phar to writable, otherwise it fails
earlier than in the logs:

```php.ini
phar.readonly=Off
```

Then, running `/tmp/guix-build-php-8.2.1.drv-0/php-8.2.1/sapi/cli/php
-c . issue0115.php` from the test directory gives me the same error as
the test:

```
Fatal error: Uncaught PharException: unable to copy stub of old phar to
new phar "/tmp/issue0115_1.phar.php" in /tmp/issue0115.php:7 Stack
trace: #0 /tmp/issue0115.php(7): Phar->offsetSet('index.php', '<?php\n
echo "H...') #1 {main}
thrown in /tmp/issue0115.php on line 7
```

However, I have two partitions: one for / and one for /home on that
computer. They are both SSDs, with btrfs file-system. In any directory
under /home, I'm able to execute the test further, until it fails to
find the php server (it's not running). It at least shows that it was
able to create the phar:

```
Warning: proc_open(): Exec failed: No such file or directory in
/home/tyreunom/projects/packages/new/php_cli_server.inc on line 20
Server is not running
```

Using strace, it seems that the first difference is with this syscall:

```
copy_file_range(4, NULL, 6, NULL, 6641, 0) = 4096
copy_file_range(4, NULL, 6, NULL, 90, 0) = -1 EXDEV (Lien physique
inter-périphérique invalide)
```

Now, EXDEV is documented as "not on the same filesystem", but only for
kernels older than 5.3. Newer kernels are supposed to support that.
Note that when copy_file_range succeeds, the test fails, whereas the
phar is created when copy_file_range fails.

This test succeeds all the time on another aarch64 and an x86_64
machine, with the same php version. However, I noticed that the failing
machine had linux-6.1.5 whereas the two passing machines had
linux-5.19.17. Maybe it's related? It could also be related to
file-systems somehow, but I fail to see a difference between the setup
of my / and my /home...

Ideas? Should we disable these tests? Creating phars is not a usual
operation, as the default php.ini disables it, but it could be useful...
J
J
Julien Lepiller wrote on 7 Feb 2023 22:45
[PATCH v2] gnu: php: Update to 8.2.2.
(address . 61123@debbugs.gnu.org)
6d0031e6771c029bb38afea64518726abbb6e4a2.1675806353.git.julien@lepiller.eu
* gnu/packages/php.scm (php): Update to 8.2.2.
* gnu/packages/patches/php-curl-compat.patch: Remove file.
* gnu/packages/patches/php-bug-74093-test.patch: Remove file.
* gnu/packages/patches/php-fix-streams-copy-length.patch: New file.
* gnu/local.mk (dist_patch_DATA): Remove them. Add it.
---
gnu/local.mk | 3 +-
gnu/packages/patches/php-bug-74093-test.patch | 48 -------------------
gnu/packages/patches/php-curl-compat.patch | 17 -------
.../patches/php-fix-streams-copy-length.patch | 28 +++++++++++
gnu/packages/php.scm | 28 +++++++----
5 files changed, 48 insertions(+), 76 deletions(-)
delete mode 100644 gnu/packages/patches/php-bug-74093-test.patch
delete mode 100644 gnu/packages/patches/php-curl-compat.patch
create mode 100644 gnu/packages/patches/php-fix-streams-copy-length.patch

Toggle diff (209 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 7433654f0b..76e0a8f16c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1627,6 +1627,7 @@ dist_patch_DATA = \
%D%/packages/patches/pciutils-hurd-configure.patch \
%D%/packages/patches/pciutils-hurd-fix.patch \
%D%/packages/patches/petri-foo-0.1.87-fix-recent-file-not-exist.patch \
+ %D%/packages/patches/php-fix-streams-copy-length.patch \
%D%/packages/patches/plasma-framework-fix-KF5PlasmaMacros.cmake.patch \
%D%/packages/patches/pocketfft-cpp-prefer-preprocessor-if.patch \
%D%/packages/patches/pokerth-boost.patch \
@@ -1668,8 +1669,6 @@ dist_patch_DATA = \
%D%/packages/patches/perl-www-curl-fix-struct-void.patch \
%D%/packages/patches/perl-www-curl-remove-symbol.patch \
%D%/packages/patches/phoronix-test-suite-fsdg.patch \
- %D%/packages/patches/php-bug-74093-test.patch \
- %D%/packages/patches/php-curl-compat.patch \
%D%/packages/patches/picprog-non-intel-support.patch \
%D%/packages/patches/pidgin-add-search-path.patch \
%D%/packages/patches/pinball-system-ltdl.patch \
diff --git a/gnu/packages/patches/php-bug-74093-test.patch b/gnu/packages/patches/php-bug-74093-test.patch
deleted file mode 100644
index 07b1949cef..0000000000
--- a/gnu/packages/patches/php-bug-74093-test.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From c641825c64e42627a2c9cac969b371ed532e0b57 Mon Sep 17 00:00:00 2001
-From: Ryan Sundberg <ryan@arctype.co>
-Date: Mon, 4 Oct 2021 20:12:25 -0700
-Subject: [PATCH] Zend/tests/bug74093.phpt: Fix failing test case
-
-This test case fails (on non-Windows hosts, where it is enabled) due
-to mismatching output in the error log language. This fixes the
-expectation, and also rewrites the test procedure in a more stable
-fashion.
-
-The objective of the test case is to run a program that exceeds
-the max_execution_time and verify that the process was aborted. The
-previous implementation tested this using a loop on array_intersect with
-large enough inputs to "probably" take enough time to trigger
-max_execution_time to abort it. With faster CPUs, over time this test
-can become flaky. Instead we simply spin a loop until enough
-wall clock time has passed to check our assertion.
----
- Zend/tests/bug74093.phpt | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/Zend/tests/bug74093.phpt b/Zend/tests/bug74093.phpt
-index 7f20285805..32eb445ddc 100644
---- a/Zend/tests/bug74093.phpt
-+++ b/Zend/tests/bug74093.phpt
-@@ -1,5 +1,5 @@
- --TEST--
--Bug #74093 (Maximum execution time of n+2 seconds exceed not written in error_log)
-+Bug #74093 (Maximum execution time exceeded not written in error_log)
- --SKIPIF--
- <?php
- if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
-@@ -12,9 +12,9 @@ max_execution_time=1
- hard_timeout=1
- --FILE--
- <?php
--$a1 = range(1, 1000000);
--$a2 = range(100000, 1999999);
--array_intersect($a1, $a2);
-+$start = time();
-+while (time() - $start < 5);
-+die("Failed to interrupt execution");
- ?>
- --EXPECTF--
--Fatal error: Maximum execution time of 1+1 seconds exceeded %s
-+Fatal error: Maximum execution time of 1 second exceeded in %s
---
-2.31.1
diff --git a/gnu/packages/patches/php-curl-compat.patch b/gnu/packages/patches/php-curl-compat.patch
deleted file mode 100644
index 0617251194..0000000000
--- a/gnu/packages/patches/php-curl-compat.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Fix test result with cURL 7.83 and later.
-
-Taken from upstream:
-
- https://github.com/php/php-src/commit/a4179e4c92b6365d39e09cb9cd63c476848013af
-
-diff --git a/ext/curl/tests/curl_basic_007.phpt b/ext/curl/tests/curl_basic_007.phpt
-index 3b53658d6a7e..3834e4674f82 100644
---- a/ext/curl/tests/curl_basic_007.phpt
-+++ b/ext/curl/tests/curl_basic_007.phpt
-@@ -20,5 +20,5 @@ curl_close($ch);
-
- ?>
- --EXPECTF--
--string(%d) "No URL set!%w"
-+string(%d) "No URL set%A"
- int(3)
diff --git a/gnu/packages/patches/php-fix-streams-copy-length.patch b/gnu/packages/patches/php-fix-streams-copy-length.patch
new file mode 100644
index 0000000000..6e6bd87981
--- /dev/null
+++ b/gnu/packages/patches/php-fix-streams-copy-length.patch
@@ -0,0 +1,28 @@
+Submitted upstream as https://github.com/php/php-src/pull/10538.
+
+From ee775be9af6fe4de7a5a1b6535cc6a319b87af90 Mon Sep 17 00:00:00 2001
+From: Julien Lepiller <julien@lepiller.eu>
+Date: Tue, 7 Feb 2023 22:35:00 +0100
+Subject: [PATCH] Fix streams copy length after partial copy_file_range.
+
+---
+ main/streams/streams.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/main/streams/streams.c b/main/streams/streams.c
+index 20029fc73e..34fd794136 100644
+--- a/main/streams/streams.c
++++ b/main/streams/streams.c
+@@ -1626,6 +1626,9 @@ PHPAPI zend_result _php_stream_copy_to_stream_ex(php_stream *src, php_stream *de
+ }
+ #endif // HAVE_COPY_FILE_RANGE
+
++ // If we are falling back, remove read bytes from the total size to copy
++ maxlen -= haveread;
++
+ if (maxlen == PHP_STREAM_COPY_ALL) {
+ maxlen = 0;
+ }
+--
+2.38.1
+
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
index 645a8edee1..e93ba0491c 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -61,17 +61,17 @@ (define-module (gnu packages php)
(define-public php
(package
(name "php")
- (version "7.4.30")
- (home-page "https://secure.php.net/")
+ (version "8.2.2")
+ (home-page "https://www.php.net/")
(source (origin
(method url-fetch)
(uri (string-append home-page "distributions/"
"php-" version ".tar.xz"))
(sha256
(base32
- "03d7icwys4ikl45q3rgsxv1m3i7kfxhykpx75nn7jzn6697s6wpa"))
- (patches (search-patches "php-bug-74093-test.patch"
- "php-curl-compat.patch"))
+ "0czflx9ikxymjfgnzaifjx9kc30ww2x4063075hcifjjwqwami5x"))
+ (patches
+ (search-patches "php-fix-streams-copy-length.patch"))
(modules '((guix build utils)))
(snippet
'(with-directory-excursion "ext"
@@ -83,8 +83,7 @@ (define-public php
;;"bcmath/libbcmath"
;;"fileinfo/libmagic" ; a patched version of libmagic
'("gd/libgd"
- "pcre/pcre2lib"
- "xmlrpc/libxmlrpc"))))))
+ "pcre/pcre2lib"))))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
@@ -272,8 +271,6 @@ (define-public php
;; Some WebP related tests fail.
"ext/gd/tests/webp_basic.phpt"
"ext/gd/tests/imagecreatefromstring_webp.phpt"
- ;; Expected error message, but from the wrong function
- "ext/gd/tests/bug77269.phpt"
;; TODO: Enable these when libgd is built with xpm support.
"ext/gd/tests/xpm2gd.phpt"
"ext/gd/tests/xpm2jpg.phpt"
@@ -291,6 +288,14 @@ (define-public php
;; The following test fails with "The image size
;; differs: expected 114x115, got 117x117".
"ext/gd/tests/bug79068.phpt"
+ ;; AVIF support disabled
+ "ext/gd/tests/avif_decode_encode.phpt"
+ ;; Typo in expected outputs
+ "ext/gd/tests/bug72339.phpt"
+ "ext/gd/tests/bug77272.phpt"
+ "ext/gd/tests/bug66356.phpt"
+ ;; AVIF support disabled
+ "ext/gd/tests/imagecreatefromstring_avif.phpt"
;; XXX: These iconv tests have the expected outcome,
;; but with different error messages.
@@ -310,6 +315,11 @@ (define-public php
;; XXX: These test failures appear legitimate, needs investigation.
;; open_basedir() restriction failure.
"ext/curl/tests/bug61948-unix.phpt"
+ ;; Same error reason but error code slightly different
+ "ext/curl/tests/curl_setopt_ssl.phpt"
+
+ ;; Wrong error name
+ "ext/dba/tests/dba_gdbm_creation_matrix.phpt"
;; Expects a false boolean, gets empty array from glob().
"ext/standard/tests/file/bug41655_1.phpt"
"ext/standard/tests/file/glob_variation5.phpt"

base-commit: 37fdb382dad47149d8f5be41af108478800e9d30
--
2.38.1
J
J
Julien Lepiller wrote on 7 Feb 2023 22:57
[PATCH v3] gnu: php: Update to 8.2.2.
(address . 61123@debbugs.gnu.org)
9260309a95293b44b177dfdbc95dcc856de5cd65.1675807058.git.julien@lepiller.eu
* gnu/packages/php.scm (php): Update to 8.2.2.
* gnu/packages/patches/php-curl-compat.patch: Remove file.
* gnu/packages/patches/php-bug-74093-test.patch: Remove file.
* gnu/packages/patches/php-fix-streams-copy-length.patch: New file.
* gnu/local.mk (dist_patch_DATA): Remove them. Add it.
---
gnu/local.mk | 3 +-
gnu/packages/patches/php-bug-74093-test.patch | 48 -----------------
gnu/packages/patches/php-curl-compat.patch | 17 ------
.../patches/php-fix-streams-copy-length.patch | 52 +++++++++++++++++++
gnu/packages/php.scm | 28 ++++++----
5 files changed, 72 insertions(+), 76 deletions(-)
delete mode 100644 gnu/packages/patches/php-bug-74093-test.patch
delete mode 100644 gnu/packages/patches/php-curl-compat.patch
create mode 100644 gnu/packages/patches/php-fix-streams-copy-length.patch

Toggle diff (233 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 7433654f0b..76e0a8f16c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1627,6 +1627,7 @@ dist_patch_DATA = \
%D%/packages/patches/pciutils-hurd-configure.patch \
%D%/packages/patches/pciutils-hurd-fix.patch \
%D%/packages/patches/petri-foo-0.1.87-fix-recent-file-not-exist.patch \
+ %D%/packages/patches/php-fix-streams-copy-length.patch \
%D%/packages/patches/plasma-framework-fix-KF5PlasmaMacros.cmake.patch \
%D%/packages/patches/pocketfft-cpp-prefer-preprocessor-if.patch \
%D%/packages/patches/pokerth-boost.patch \
@@ -1668,8 +1669,6 @@ dist_patch_DATA = \
%D%/packages/patches/perl-www-curl-fix-struct-void.patch \
%D%/packages/patches/perl-www-curl-remove-symbol.patch \
%D%/packages/patches/phoronix-test-suite-fsdg.patch \
- %D%/packages/patches/php-bug-74093-test.patch \
- %D%/packages/patches/php-curl-compat.patch \
%D%/packages/patches/picprog-non-intel-support.patch \
%D%/packages/patches/pidgin-add-search-path.patch \
%D%/packages/patches/pinball-system-ltdl.patch \
diff --git a/gnu/packages/patches/php-bug-74093-test.patch b/gnu/packages/patches/php-bug-74093-test.patch
deleted file mode 100644
index 07b1949cef..0000000000
--- a/gnu/packages/patches/php-bug-74093-test.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From c641825c64e42627a2c9cac969b371ed532e0b57 Mon Sep 17 00:00:00 2001
-From: Ryan Sundberg <ryan@arctype.co>
-Date: Mon, 4 Oct 2021 20:12:25 -0700
-Subject: [PATCH] Zend/tests/bug74093.phpt: Fix failing test case
-
-This test case fails (on non-Windows hosts, where it is enabled) due
-to mismatching output in the error log language. This fixes the
-expectation, and also rewrites the test procedure in a more stable
-fashion.
-
-The objective of the test case is to run a program that exceeds
-the max_execution_time and verify that the process was aborted. The
-previous implementation tested this using a loop on array_intersect with
-large enough inputs to "probably" take enough time to trigger
-max_execution_time to abort it. With faster CPUs, over time this test
-can become flaky. Instead we simply spin a loop until enough
-wall clock time has passed to check our assertion.
----
- Zend/tests/bug74093.phpt | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/Zend/tests/bug74093.phpt b/Zend/tests/bug74093.phpt
-index 7f20285805..32eb445ddc 100644
---- a/Zend/tests/bug74093.phpt
-+++ b/Zend/tests/bug74093.phpt
-@@ -1,5 +1,5 @@
- --TEST--
--Bug #74093 (Maximum execution time of n+2 seconds exceed not written in error_log)
-+Bug #74093 (Maximum execution time exceeded not written in error_log)
- --SKIPIF--
- <?php
- if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
-@@ -12,9 +12,9 @@ max_execution_time=1
- hard_timeout=1
- --FILE--
- <?php
--$a1 = range(1, 1000000);
--$a2 = range(100000, 1999999);
--array_intersect($a1, $a2);
-+$start = time();
-+while (time() - $start < 5);
-+die("Failed to interrupt execution");
- ?>
- --EXPECTF--
--Fatal error: Maximum execution time of 1+1 seconds exceeded %s
-+Fatal error: Maximum execution time of 1 second exceeded in %s
---
-2.31.1
diff --git a/gnu/packages/patches/php-curl-compat.patch b/gnu/packages/patches/php-curl-compat.patch
deleted file mode 100644
index 0617251194..0000000000
--- a/gnu/packages/patches/php-curl-compat.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Fix test result with cURL 7.83 and later.
-
-Taken from upstream:
-
- https://github.com/php/php-src/commit/a4179e4c92b6365d39e09cb9cd63c476848013af
-
-diff --git a/ext/curl/tests/curl_basic_007.phpt b/ext/curl/tests/curl_basic_007.phpt
-index 3b53658d6a7e..3834e4674f82 100644
---- a/ext/curl/tests/curl_basic_007.phpt
-+++ b/ext/curl/tests/curl_basic_007.phpt
-@@ -20,5 +20,5 @@ curl_close($ch);
-
- ?>
- --EXPECTF--
--string(%d) "No URL set!%w"
-+string(%d) "No URL set%A"
- int(3)
diff --git a/gnu/packages/patches/php-fix-streams-copy-length.patch b/gnu/packages/patches/php-fix-streams-copy-length.patch
new file mode 100644
index 0000000000..d68f658071
--- /dev/null
+++ b/gnu/packages/patches/php-fix-streams-copy-length.patch
@@ -0,0 +1,52 @@
+From cddcc10becb013ae498ea9c2836792f407b61678 Mon Sep 17 00:00:00 2001
+From: Julien Lepiller <julien@lepiller.eu>
+Date: Tue, 7 Feb 2023 22:55:59 +0100
+Subject: [PATCH] Fix file corruption when using copy_file_range.
+
+This patch is adapted from https://github.com/php/php-src/pull/10440.
+---
+ main/streams/streams.c | 21 +++++++++++++++++----
+ 1 file changed, 17 insertions(+), 4 deletions(-)
+
+diff --git a/main/streams/streams.c b/main/streams/streams.c
+index 20029fc7..68dc76c5 100644
+--- a/main/streams/streams.c
++++ b/main/streams/streams.c
+@@ -1634,8 +1634,21 @@ PHPAPI zend_result _php_stream_copy_to_stream_ex(php_stream *src, php_stream *de
+ char *p;
+
+ do {
+- size_t chunk_size = (maxlen == 0 || maxlen > PHP_STREAM_MMAP_MAX) ? PHP_STREAM_MMAP_MAX : maxlen;
+- size_t mapped;
++ /* We must not modify maxlen here, because otherwise the file copy fallback below can fail */
++ size_t chunk_size, must_read, mapped;
++ if (maxlen == 0) {
++ /* Unlimited read */
++ must_read = chunk_size = PHP_STREAM_MMAP_MAX;
++ } else {
++ must_read = maxlen - haveread;
++ if (must_read >= PHP_STREAM_MMAP_MAX) {
++ chunk_size = PHP_STREAM_MMAP_MAX;
++ } else {
++ /* In case the length we still have to read from the file could be smaller than the file size,
++ * chunk_size must not get bigger the size we're trying to read. */
++ chunk_size = must_read;
++ }
++ }
+
+ p = php_stream_mmap_range(src, php_stream_tell(src), chunk_size, PHP_STREAM_MAP_MODE_SHARED_READONLY, &mapped);
+
+@@ -1667,8 +1680,8 @@ PHPAPI zend_result _php_stream_copy_to_stream_ex(php_stream *src, php_stream *de
+ return SUCCESS;
+ }
+ if (maxlen != 0) {
+- maxlen -= mapped;
+- if (maxlen == 0) {
++ must_read -= mapped;
++ if (must_read == 0) {
+ return SUCCESS;
+ }
+ }
+--
+2.38.1
+
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
index 645a8edee1..e93ba0491c 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -61,17 +61,17 @@ (define-module (gnu packages php)
(define-public php
(package
(name "php")
- (version "7.4.30")
- (home-page "https://secure.php.net/")
+ (version "8.2.2")
+ (home-page "https://www.php.net/")
(source (origin
(method url-fetch)
(uri (string-append home-page "distributions/"
"php-" version ".tar.xz"))
(sha256
(base32
- "03d7icwys4ikl45q3rgsxv1m3i7kfxhykpx75nn7jzn6697s6wpa"))
- (patches (search-patches "php-bug-74093-test.patch"
- "php-curl-compat.patch"))
+ "0czflx9ikxymjfgnzaifjx9kc30ww2x4063075hcifjjwqwami5x"))
+ (patches
+ (search-patches "php-fix-streams-copy-length.patch"))
(modules '((guix build utils)))
(snippet
'(with-directory-excursion "ext"
@@ -83,8 +83,7 @@ (define-public php
;;"bcmath/libbcmath"
;;"fileinfo/libmagic" ; a patched version of libmagic
'("gd/libgd"
- "pcre/pcre2lib"
- "xmlrpc/libxmlrpc"))))))
+ "pcre/pcre2lib"))))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
@@ -272,8 +271,6 @@ (define-public php
;; Some WebP related tests fail.
"ext/gd/tests/webp_basic.phpt"
"ext/gd/tests/imagecreatefromstring_webp.phpt"
- ;; Expected error message, but from the wrong function
- "ext/gd/tests/bug77269.phpt"
;; TODO: Enable these when libgd is built with xpm support.
"ext/gd/tests/xpm2gd.phpt"
"ext/gd/tests/xpm2jpg.phpt"
@@ -291,6 +288,14 @@ (define-public php
;; The following test fails with "The image size
;; differs: expected 114x115, got 117x117".
"ext/gd/tests/bug79068.phpt"
+ ;; AVIF support disabled
+ "ext/gd/tests/avif_decode_encode.phpt"
+ ;; Typo in expected outputs
+ "ext/gd/tests/bug72339.phpt"
+ "ext/gd/tests/bug77272.phpt"
+ "ext/gd/tests/bug66356.phpt"
+ ;; AVIF support disabled
+ "ext/gd/tests/imagecreatefromstring_avif.phpt"
;; XXX: These iconv tests have the expected outcome,
;; but with different error messages.
@@ -310,6 +315,11 @@ (define-public php
;; XXX: These test failures appear legitimate, needs investigation.
;; open_basedir() restriction failure.
"ext/curl/tests/bug61948-unix.phpt"
+ ;; Same error reason but error code slightly different
+ "ext/curl/tests/curl_setopt_ssl.phpt"
+
+ ;; Wrong error name
+ "ext/dba/tests/dba_gdbm_creation_matrix.phpt"
;; Expects a false boolean, gets empty array from glob().
"ext/standard/tests/file/bug41655_1.phpt"
"ext/standard/tests/file/glob_variation5.phpt"

base-commit: 37fdb382dad47149d8f5be41af108478800e9d30
--
2.38.1
J
J
Julien Lepiller wrote on 9 Feb 2023 19:48
[PATCH v4] gnu: php: Update to 8.2.2.
(address . 61123@debbugs.gnu.org)
3a1ea308984de93d94f8a0c228d83cd819c0f7ce.1675968512.git.julien@lepiller.eu
* gnu/packages/php.scm (php): Update to 8.2.2.
* gnu/packages/patches/php-curl-compat.patch: Remove file.
* gnu/packages/patches/php-bug-74093-test.patch: Remove file.
* gnu/packages/patches/php-fix-streams-copy-length.patch: New file.
* gnu/local.mk (dist_patch_DATA): Remove them. Add it.
---
gnu/local.mk | 3 +-
gnu/packages/patches/php-bug-74093-test.patch | 48 -----------------
gnu/packages/patches/php-curl-compat.patch | 17 ------
.../patches/php-fix-streams-copy-length.patch | 52 +++++++++++++++++++
gnu/packages/php.scm | 34 ++++++++----
5 files changed, 78 insertions(+), 76 deletions(-)
delete mode 100644 gnu/packages/patches/php-bug-74093-test.patch
delete mode 100644 gnu/packages/patches/php-curl-compat.patch
create mode 100644 gnu/packages/patches/php-fix-streams-copy-length.patch

Toggle diff (239 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 7433654f0b..76e0a8f16c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1627,6 +1627,7 @@ dist_patch_DATA = \
%D%/packages/patches/pciutils-hurd-configure.patch \
%D%/packages/patches/pciutils-hurd-fix.patch \
%D%/packages/patches/petri-foo-0.1.87-fix-recent-file-not-exist.patch \
+ %D%/packages/patches/php-fix-streams-copy-length.patch \
%D%/packages/patches/plasma-framework-fix-KF5PlasmaMacros.cmake.patch \
%D%/packages/patches/pocketfft-cpp-prefer-preprocessor-if.patch \
%D%/packages/patches/pokerth-boost.patch \
@@ -1668,8 +1669,6 @@ dist_patch_DATA = \
%D%/packages/patches/perl-www-curl-fix-struct-void.patch \
%D%/packages/patches/perl-www-curl-remove-symbol.patch \
%D%/packages/patches/phoronix-test-suite-fsdg.patch \
- %D%/packages/patches/php-bug-74093-test.patch \
- %D%/packages/patches/php-curl-compat.patch \
%D%/packages/patches/picprog-non-intel-support.patch \
%D%/packages/patches/pidgin-add-search-path.patch \
%D%/packages/patches/pinball-system-ltdl.patch \
diff --git a/gnu/packages/patches/php-bug-74093-test.patch b/gnu/packages/patches/php-bug-74093-test.patch
deleted file mode 100644
index 07b1949cef..0000000000
--- a/gnu/packages/patches/php-bug-74093-test.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From c641825c64e42627a2c9cac969b371ed532e0b57 Mon Sep 17 00:00:00 2001
-From: Ryan Sundberg <ryan@arctype.co>
-Date: Mon, 4 Oct 2021 20:12:25 -0700
-Subject: [PATCH] Zend/tests/bug74093.phpt: Fix failing test case
-
-This test case fails (on non-Windows hosts, where it is enabled) due
-to mismatching output in the error log language. This fixes the
-expectation, and also rewrites the test procedure in a more stable
-fashion.
-
-The objective of the test case is to run a program that exceeds
-the max_execution_time and verify that the process was aborted. The
-previous implementation tested this using a loop on array_intersect with
-large enough inputs to "probably" take enough time to trigger
-max_execution_time to abort it. With faster CPUs, over time this test
-can become flaky. Instead we simply spin a loop until enough
-wall clock time has passed to check our assertion.
----
- Zend/tests/bug74093.phpt | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/Zend/tests/bug74093.phpt b/Zend/tests/bug74093.phpt
-index 7f20285805..32eb445ddc 100644
---- a/Zend/tests/bug74093.phpt
-+++ b/Zend/tests/bug74093.phpt
-@@ -1,5 +1,5 @@
- --TEST--
--Bug #74093 (Maximum execution time of n+2 seconds exceed not written in error_log)
-+Bug #74093 (Maximum execution time exceeded not written in error_log)
- --SKIPIF--
- <?php
- if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
-@@ -12,9 +12,9 @@ max_execution_time=1
- hard_timeout=1
- --FILE--
- <?php
--$a1 = range(1, 1000000);
--$a2 = range(100000, 1999999);
--array_intersect($a1, $a2);
-+$start = time();
-+while (time() - $start < 5);
-+die("Failed to interrupt execution");
- ?>
- --EXPECTF--
--Fatal error: Maximum execution time of 1+1 seconds exceeded %s
-+Fatal error: Maximum execution time of 1 second exceeded in %s
---
-2.31.1
diff --git a/gnu/packages/patches/php-curl-compat.patch b/gnu/packages/patches/php-curl-compat.patch
deleted file mode 100644
index 0617251194..0000000000
--- a/gnu/packages/patches/php-curl-compat.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Fix test result with cURL 7.83 and later.
-
-Taken from upstream:
-
- https://github.com/php/php-src/commit/a4179e4c92b6365d39e09cb9cd63c476848013af
-
-diff --git a/ext/curl/tests/curl_basic_007.phpt b/ext/curl/tests/curl_basic_007.phpt
-index 3b53658d6a7e..3834e4674f82 100644
---- a/ext/curl/tests/curl_basic_007.phpt
-+++ b/ext/curl/tests/curl_basic_007.phpt
-@@ -20,5 +20,5 @@ curl_close($ch);
-
- ?>
- --EXPECTF--
--string(%d) "No URL set!%w"
-+string(%d) "No URL set%A"
- int(3)
diff --git a/gnu/packages/patches/php-fix-streams-copy-length.patch b/gnu/packages/patches/php-fix-streams-copy-length.patch
new file mode 100644
index 0000000000..d68f658071
--- /dev/null
+++ b/gnu/packages/patches/php-fix-streams-copy-length.patch
@@ -0,0 +1,52 @@
+From cddcc10becb013ae498ea9c2836792f407b61678 Mon Sep 17 00:00:00 2001
+From: Julien Lepiller <julien@lepiller.eu>
+Date: Tue, 7 Feb 2023 22:55:59 +0100
+Subject: [PATCH] Fix file corruption when using copy_file_range.
+
+This patch is adapted from https://github.com/php/php-src/pull/10440.
+---
+ main/streams/streams.c | 21 +++++++++++++++++----
+ 1 file changed, 17 insertions(+), 4 deletions(-)
+
+diff --git a/main/streams/streams.c b/main/streams/streams.c
+index 20029fc7..68dc76c5 100644
+--- a/main/streams/streams.c
++++ b/main/streams/streams.c
+@@ -1634,8 +1634,21 @@ PHPAPI zend_result _php_stream_copy_to_stream_ex(php_stream *src, php_stream *de
+ char *p;
+
+ do {
+- size_t chunk_size = (maxlen == 0 || maxlen > PHP_STREAM_MMAP_MAX) ? PHP_STREAM_MMAP_MAX : maxlen;
+- size_t mapped;
++ /* We must not modify maxlen here, because otherwise the file copy fallback below can fail */
++ size_t chunk_size, must_read, mapped;
++ if (maxlen == 0) {
++ /* Unlimited read */
++ must_read = chunk_size = PHP_STREAM_MMAP_MAX;
++ } else {
++ must_read = maxlen - haveread;
++ if (must_read >= PHP_STREAM_MMAP_MAX) {
++ chunk_size = PHP_STREAM_MMAP_MAX;
++ } else {
++ /* In case the length we still have to read from the file could be smaller than the file size,
++ * chunk_size must not get bigger the size we're trying to read. */
++ chunk_size = must_read;
++ }
++ }
+
+ p = php_stream_mmap_range(src, php_stream_tell(src), chunk_size, PHP_STREAM_MAP_MODE_SHARED_READONLY, &mapped);
+
+@@ -1667,8 +1680,8 @@ PHPAPI zend_result _php_stream_copy_to_stream_ex(php_stream *src, php_stream *de
+ return SUCCESS;
+ }
+ if (maxlen != 0) {
+- maxlen -= mapped;
+- if (maxlen == 0) {
++ must_read -= mapped;
++ if (must_read == 0) {
+ return SUCCESS;
+ }
+ }
+--
+2.38.1
+
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
index 645a8edee1..6d8335ec65 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -61,17 +61,17 @@ (define-module (gnu packages php)
(define-public php
(package
(name "php")
- (version "7.4.30")
- (home-page "https://secure.php.net/")
+ (version "8.2.2")
+ (home-page "https://www.php.net/")
(source (origin
(method url-fetch)
(uri (string-append home-page "distributions/"
"php-" version ".tar.xz"))
(sha256
(base32
- "03d7icwys4ikl45q3rgsxv1m3i7kfxhykpx75nn7jzn6697s6wpa"))
- (patches (search-patches "php-bug-74093-test.patch"
- "php-curl-compat.patch"))
+ "0czflx9ikxymjfgnzaifjx9kc30ww2x4063075hcifjjwqwami5x"))
+ (patches
+ (search-patches "php-fix-streams-copy-length.patch"))
(modules '((guix build utils)))
(snippet
'(with-directory-excursion "ext"
@@ -83,8 +83,7 @@ (define-public php
;;"bcmath/libbcmath"
;;"fileinfo/libmagic" ; a patched version of libmagic
'("gd/libgd"
- "pcre/pcre2lib"
- "xmlrpc/libxmlrpc"))))))
+ "pcre/pcre2lib"))))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
@@ -272,8 +271,6 @@ (define-public php
;; Some WebP related tests fail.
"ext/gd/tests/webp_basic.phpt"
"ext/gd/tests/imagecreatefromstring_webp.phpt"
- ;; Expected error message, but from the wrong function
- "ext/gd/tests/bug77269.phpt"
;; TODO: Enable these when libgd is built with xpm support.
"ext/gd/tests/xpm2gd.phpt"
"ext/gd/tests/xpm2jpg.phpt"
@@ -291,6 +288,14 @@ (define-public php
;; The following test fails with "The image size
;; differs: expected 114x115, got 117x117".
"ext/gd/tests/bug79068.phpt"
+ ;; AVIF support disabled
+ "ext/gd/tests/avif_decode_encode.phpt"
+ ;; Typo in expected outputs
+ "ext/gd/tests/bug72339.phpt"
+ "ext/gd/tests/bug77272.phpt"
+ "ext/gd/tests/bug66356.phpt"
+ ;; AVIF support disabled
+ "ext/gd/tests/imagecreatefromstring_avif.phpt"
;; XXX: These iconv tests have the expected outcome,
;; but with different error messages.
@@ -310,6 +315,17 @@ (define-public php
;; XXX: These test failures appear legitimate, needs investigation.
;; open_basedir() restriction failure.
"ext/curl/tests/bug61948-unix.phpt"
+ ;; Same error reason but error code slightly different
+ "ext/curl/tests/curl_setopt_ssl.phpt"
+
+ ;; Fail because there is no "root" in the build container's
+ ;; /etc/passwd
+ "sapi/fpm/tests/bug68591-conf-test-group.phpt"
+ "sapi/fpm/tests/bug68591-conf-test-listen-group.phpt"
+ "sapi/fpm/tests/bug68591-conf-test-listen-owner.phpt"
+
+ ;; Wrong error name
+ "ext/dba/tests/dba_gdbm_creation_matrix.phpt"
;; Expects a false boolean, gets empty array from glob().
"ext/standard/tests/file/bug41655_1.phpt"
"ext/standard/tests/file/glob_variation5.phpt"

base-commit: 37fdb382dad47149d8f5be41af108478800e9d30
--
2.38.1
J
J
Julien Lepiller wrote on 11 Feb 2023 11:50
[PATCH v5] gnu: php: Update to 8.2.2.
(address . 61123@debbugs.gnu.org)
9c8b71c3ff9894b167f2e1d62fb309c1084d9e1a.1676112645.git.julien@lepiller.eu
* gnu/packages/php.scm (php): Update to 8.2.2.
* gnu/packages/patches/php-curl-compat.patch: Remove file.
* gnu/packages/patches/php-bug-74093-test.patch: Remove file.
* gnu/packages/patches/php-fix-streams-copy-length.patch: New file.
* gnu/local.mk (dist_patch_DATA): Remove them. Add it.
---
gnu/local.mk | 3 +-
gnu/packages/patches/php-bug-74093-test.patch | 48 -----------------
gnu/packages/patches/php-curl-compat.patch | 17 ------
.../patches/php-fix-streams-copy-length.patch | 52 +++++++++++++++++++
gnu/packages/php.scm | 46 ++++++++++++----
5 files changed, 88 insertions(+), 78 deletions(-)
delete mode 100644 gnu/packages/patches/php-bug-74093-test.patch
delete mode 100644 gnu/packages/patches/php-curl-compat.patch
create mode 100644 gnu/packages/patches/php-fix-streams-copy-length.patch

Toggle diff (269 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index f1fed73987..e4bf243201 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1627,6 +1627,7 @@ dist_patch_DATA = \
%D%/packages/patches/pciutils-hurd-configure.patch \
%D%/packages/patches/pciutils-hurd-fix.patch \
%D%/packages/patches/petri-foo-0.1.87-fix-recent-file-not-exist.patch \
+ %D%/packages/patches/php-fix-streams-copy-length.patch \
%D%/packages/patches/plasma-framework-fix-KF5PlasmaMacros.cmake.patch \
%D%/packages/patches/pocketfft-cpp-prefer-preprocessor-if.patch \
%D%/packages/patches/pokerth-boost.patch \
@@ -1668,8 +1669,6 @@ dist_patch_DATA = \
%D%/packages/patches/perl-www-curl-fix-struct-void.patch \
%D%/packages/patches/perl-www-curl-remove-symbol.patch \
%D%/packages/patches/phoronix-test-suite-fsdg.patch \
- %D%/packages/patches/php-bug-74093-test.patch \
- %D%/packages/patches/php-curl-compat.patch \
%D%/packages/patches/picprog-non-intel-support.patch \
%D%/packages/patches/pidgin-add-search-path.patch \
%D%/packages/patches/pinball-system-ltdl.patch \
diff --git a/gnu/packages/patches/php-bug-74093-test.patch b/gnu/packages/patches/php-bug-74093-test.patch
deleted file mode 100644
index 07b1949cef..0000000000
--- a/gnu/packages/patches/php-bug-74093-test.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From c641825c64e42627a2c9cac969b371ed532e0b57 Mon Sep 17 00:00:00 2001
-From: Ryan Sundberg <ryan@arctype.co>
-Date: Mon, 4 Oct 2021 20:12:25 -0700
-Subject: [PATCH] Zend/tests/bug74093.phpt: Fix failing test case
-
-This test case fails (on non-Windows hosts, where it is enabled) due
-to mismatching output in the error log language. This fixes the
-expectation, and also rewrites the test procedure in a more stable
-fashion.
-
-The objective of the test case is to run a program that exceeds
-the max_execution_time and verify that the process was aborted. The
-previous implementation tested this using a loop on array_intersect with
-large enough inputs to "probably" take enough time to trigger
-max_execution_time to abort it. With faster CPUs, over time this test
-can become flaky. Instead we simply spin a loop until enough
-wall clock time has passed to check our assertion.
----
- Zend/tests/bug74093.phpt | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/Zend/tests/bug74093.phpt b/Zend/tests/bug74093.phpt
-index 7f20285805..32eb445ddc 100644
---- a/Zend/tests/bug74093.phpt
-+++ b/Zend/tests/bug74093.phpt
-@@ -1,5 +1,5 @@
- --TEST--
--Bug #74093 (Maximum execution time of n+2 seconds exceed not written in error_log)
-+Bug #74093 (Maximum execution time exceeded not written in error_log)
- --SKIPIF--
- <?php
- if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
-@@ -12,9 +12,9 @@ max_execution_time=1
- hard_timeout=1
- --FILE--
- <?php
--$a1 = range(1, 1000000);
--$a2 = range(100000, 1999999);
--array_intersect($a1, $a2);
-+$start = time();
-+while (time() - $start < 5);
-+die("Failed to interrupt execution");
- ?>
- --EXPECTF--
--Fatal error: Maximum execution time of 1+1 seconds exceeded %s
-+Fatal error: Maximum execution time of 1 second exceeded in %s
---
-2.31.1
diff --git a/gnu/packages/patches/php-curl-compat.patch b/gnu/packages/patches/php-curl-compat.patch
deleted file mode 100644
index 0617251194..0000000000
--- a/gnu/packages/patches/php-curl-compat.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Fix test result with cURL 7.83 and later.
-
-Taken from upstream:
-
- https://github.com/php/php-src/commit/a4179e4c92b6365d39e09cb9cd63c476848013af
-
-diff --git a/ext/curl/tests/curl_basic_007.phpt b/ext/curl/tests/curl_basic_007.phpt
-index 3b53658d6a7e..3834e4674f82 100644
---- a/ext/curl/tests/curl_basic_007.phpt
-+++ b/ext/curl/tests/curl_basic_007.phpt
-@@ -20,5 +20,5 @@ curl_close($ch);
-
- ?>
- --EXPECTF--
--string(%d) "No URL set!%w"
-+string(%d) "No URL set%A"
- int(3)
diff --git a/gnu/packages/patches/php-fix-streams-copy-length.patch b/gnu/packages/patches/php-fix-streams-copy-length.patch
new file mode 100644
index 0000000000..d68f658071
--- /dev/null
+++ b/gnu/packages/patches/php-fix-streams-copy-length.patch
@@ -0,0 +1,52 @@
+From cddcc10becb013ae498ea9c2836792f407b61678 Mon Sep 17 00:00:00 2001
+From: Julien Lepiller <julien@lepiller.eu>
+Date: Tue, 7 Feb 2023 22:55:59 +0100
+Subject: [PATCH] Fix file corruption when using copy_file_range.
+
+This patch is adapted from https://github.com/php/php-src/pull/10440.
+---
+ main/streams/streams.c | 21 +++++++++++++++++----
+ 1 file changed, 17 insertions(+), 4 deletions(-)
+
+diff --git a/main/streams/streams.c b/main/streams/streams.c
+index 20029fc7..68dc76c5 100644
+--- a/main/streams/streams.c
++++ b/main/streams/streams.c
+@@ -1634,8 +1634,21 @@ PHPAPI zend_result _php_stream_copy_to_stream_ex(php_stream *src, php_stream *de
+ char *p;
+
+ do {
+- size_t chunk_size = (maxlen == 0 || maxlen > PHP_STREAM_MMAP_MAX) ? PHP_STREAM_MMAP_MAX : maxlen;
+- size_t mapped;
++ /* We must not modify maxlen here, because otherwise the file copy fallback below can fail */
++ size_t chunk_size, must_read, mapped;
++ if (maxlen == 0) {
++ /* Unlimited read */
++ must_read = chunk_size = PHP_STREAM_MMAP_MAX;
++ } else {
++ must_read = maxlen - haveread;
++ if (must_read >= PHP_STREAM_MMAP_MAX) {
++ chunk_size = PHP_STREAM_MMAP_MAX;
++ } else {
++ /* In case the length we still have to read from the file could be smaller than the file size,
++ * chunk_size must not get bigger the size we're trying to read. */
++ chunk_size = must_read;
++ }
++ }
+
+ p = php_stream_mmap_range(src, php_stream_tell(src), chunk_size, PHP_STREAM_MAP_MODE_SHARED_READONLY, &mapped);
+
+@@ -1667,8 +1680,8 @@ PHPAPI zend_result _php_stream_copy_to_stream_ex(php_stream *src, php_stream *de
+ return SUCCESS;
+ }
+ if (maxlen != 0) {
+- maxlen -= mapped;
+- if (maxlen == 0) {
++ must_read -= mapped;
++ if (must_read == 0) {
+ return SUCCESS;
+ }
+ }
+--
+2.38.1
+
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
index 645a8edee1..e0cd47b846 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -61,17 +61,17 @@ (define-module (gnu packages php)
(define-public php
(package
(name "php")
- (version "7.4.30")
- (home-page "https://secure.php.net/")
+ (version "8.2.2")
+ (home-page "https://www.php.net/")
(source (origin
(method url-fetch)
(uri (string-append home-page "distributions/"
"php-" version ".tar.xz"))
(sha256
(base32
- "03d7icwys4ikl45q3rgsxv1m3i7kfxhykpx75nn7jzn6697s6wpa"))
- (patches (search-patches "php-bug-74093-test.patch"
- "php-curl-compat.patch"))
+ "0czflx9ikxymjfgnzaifjx9kc30ww2x4063075hcifjjwqwami5x"))
+ (patches
+ (search-patches "php-fix-streams-copy-length.patch"))
(modules '((guix build utils)))
(snippet
'(with-directory-excursion "ext"
@@ -83,8 +83,7 @@ (define-public php
;;"bcmath/libbcmath"
;;"fileinfo/libmagic" ; a patched version of libmagic
'("gd/libgd"
- "pcre/pcre2lib"
- "xmlrpc/libxmlrpc"))))))
+ "pcre/pcre2lib"))))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
@@ -176,12 +175,13 @@ (define-public php
(substitute* "ext/standard/tests/streams/bug60602.phpt"
(("'ls'") (string-append "'" (which "ls") "'")))
- ,@(if (string-prefix? "arm" (or (%current-system)
- (%current-target-system)))
+ ,@(if (target-arm32?)
;; Drop tests known to fail on armhf.
'((for-each delete-file
(list
"ext/calendar/tests/unixtojd_error1.phpt"
+ "ext/opcache/tests/preload_006.phpt"
+ "ext/opcache/tests/preload_011.phpt"
;; arm can be a lot slower, so a time-related test fails
"ext/fileinfo/tests/cve-2014-3538-nojit.phpt"
"ext/pcntl/tests/pcntl_unshare_01.phpt"
@@ -199,6 +199,13 @@ (define-public php
"Zend/tests/concat_003.phpt")))
'())
+ ,@(if (target-x86-32?)
+ ;; Drop tests known to fail on i686.
+ '((for-each delete-file
+ (list
+ "ext/dba/tests/dba_gdbm.phpt")))
+ '())
+
,@(if (target-ppc64le?)
;; Drop tests known to fail on powerpc64le.
'((for-each delete-file
@@ -272,8 +279,6 @@ (define-public php
;; Some WebP related tests fail.
"ext/gd/tests/webp_basic.phpt"
"ext/gd/tests/imagecreatefromstring_webp.phpt"
- ;; Expected error message, but from the wrong function
- "ext/gd/tests/bug77269.phpt"
;; TODO: Enable these when libgd is built with xpm support.
"ext/gd/tests/xpm2gd.phpt"
"ext/gd/tests/xpm2jpg.phpt"
@@ -291,6 +296,14 @@ (define-public php
;; The following test fails with "The image size
;; differs: expected 114x115, got 117x117".
"ext/gd/tests/bug79068.phpt"
+ ;; AVIF support disabled
+ "ext/gd/tests/avif_decode_encode.phpt"
+ ;; Typo in expected outputs
+ "ext/gd/tests/bug72339.phpt"
+ "ext/gd/tests/bug77272.phpt"
+ "ext/gd/tests/bug66356.phpt"
+ ;; AVIF support disabled
+ "ext/gd/tests/imagecreatefromstring_avif.phpt"
;; XXX: These iconv tests have the expected outcome,
;; but with different error messages.
@@ -310,6 +323,17 @@ (define-public php
;; XXX: These test failures appear legitimate, needs investigation.
;; open_basedir() restriction failure.
"ext/curl/tests/bug61948-unix.phpt"
+ ;; Same error reason but error code slightly different
+ "ext/curl/tests/curl_setopt_ssl.phpt"
+
+ ;; Fail because there is no "root" in the build container's
+ ;; /etc/passwd
+ "sapi/fpm/tests/bug68591-conf-test-group.phpt"
+ "sapi/fpm/tests/bug68591-conf-test-listen-group.phpt"
+ "sapi/fpm/tests/bug68591-conf-test-listen-owner.phpt"
+
+ ;; Wrong error name
+ "ext/dba/tests/dba_gdbm_creation_matrix.phpt"
;; Expects a false boolean, gets empty array from glob().
"ext/standard/tests/file/bug41655_1.phpt"
"ext/standard/tests/file/glob_variation5.phpt"

base-commit: 8a0b625a2d0006621cc90ce85cd1396ac2919b79
--
2.38.1
J
J
Julien Lepiller wrote on 11 Feb 2023 21:17
(address . 61123-done@debbugs.gnu.org)
20230211211741.0300d9b6@sybil.lepiller.eu
QA is now happy for all architectures!

Pushed to master as 4d4fad681983a1a44da3a7a5c032cb26febd3ef2.
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 61123@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 61123
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch