From 4d4fad681983a1a44da3a7a5c032cb26febd3ef2 Mon Sep 17 00:00:00 2001 From: Julien Lepiller Date: Sat, 28 Jan 2023 14:21:12 +0100 Subject: gnu: php: Update to 8.2.2. * 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 diff --git a/gnu/local.mk b/gnu/local.mk index b432a95026..15cf5f74a9 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 -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-- - - --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 +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-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 @@ ;;"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 @@ (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 @@ "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 @@ ;; 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 @@ ;; 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 @@ ;; 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" -- cgit v1.2.3