diff --git a/PKGBUILD b/PKGBUILD index 0ebabaf58123306f07307933b751e293213e6e08..3f8546ba2ad39ba9de855233c089c10aa79a1b63 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -19,7 +19,7 @@ pkgname=('php' 'php-tidy' 'php-xsl') pkgver=8.3.8 -pkgrel=1 +pkgrel=2 arch=('x86_64') license=('PHP-3.01') url='https://www.php.net/' @@ -28,14 +28,16 @@ makedepends=('apache' 'aspell' 'enchant' 'gd' 'gmp' 'icu' 'libsodium' 'libxslt' 'oniguruma') checkdepends=('procps-ng') source=("https://php.net/distributions/${pkgbase}-${pkgver}.tar.xz"{,.asc} - 'apache.patch' 'apache.conf' 'php-fpm.patch' 'php-fpm.tmpfiles' 'php.ini.patch') + 'apache.patch' 'apache.conf' 'php-fpm.patch' 'php-fpm.tmpfiles' 'php.ini.patch' + 'method-visibility.patch') sha256sums=('aea358b56186f943c2bbd350c9005b9359133d47e954cfc561385319ae5bb8d7' 'SKIP' '702b163c66c65af92dcad8d79f41bda84bcd5d863235fcf1497c33a86db9e4ca' '4a2add00d93fa991ccdf6356090264c1059c79935642afff6e8d4a2107fa037e' '78b8074461cdfc5d4e0ba428a8387f308d60720c8ad35c6176801e5088f02090' '640dba0d960bfeaae9ad38d2826d3f6b5d6c175a4d3e16664eefff29141faad5' - 'bf1de5ae6014f0593dacca2c046eb5a2d7c179733859854713b6813ebc629b08') + 'bf1de5ae6014f0593dacca2c046eb5a2d7c179733859854713b6813ebc629b08' + '083e2b17a49166fe6891a6d7f7baece9fce42f0db3192fdac1fd1975e226eba8') validpgpkeys=('1198C0117593497A5EC5C199286AF1F9897469DC' 'AFD8691FDAEDF03BDF6E460563F15A9B715376CA' 'C28D937575603EB4ABB725861C0779DC5C0A9DE4') @@ -47,6 +49,8 @@ prepare() { patch -p0 -i "${srcdir}/apache.patch" patch -p0 -i "${srcdir}/php-fpm.patch" patch -p0 -i "${srcdir}/php.ini.patch" + # Fix https://gitlab.archlinux.org/archlinux/packaging/packages/php/-/issues/3 + patch -p1 -i "${srcdir}/method-visibility.patch" autoconf # Disable failing tests diff --git a/method-visibility.patch b/method-visibility.patch new file mode 100644 index 0000000000000000000000000000000000000000..ce5e253311de69e15f56a0c488b0bd732970ff11 --- /dev/null +++ b/method-visibility.patch @@ -0,0 +1,89 @@ +diff --git a/Zend/tests/gh14480.phpt b/Zend/tests/gh14480.phpt +new file mode 100644 +index 0000000000..bab74785b6 +--- /dev/null ++++ b/Zend/tests/gh14480.phpt +@@ -0,0 +1,60 @@ ++--TEST-- ++GH-14480: Method visibility issue ++--FILE-- ++<?php ++trait PropertyHelperTrait ++{ ++ protected function splitPropertyParts(): void ++ { ++ echo "OK\n"; ++ } ++} ++ ++trait OrmPropertyHelperTrait ++{ ++ abstract protected function splitPropertyParts(): void; ++ ++ protected function addJoinsForNestedProperty(): void ++ { ++ $this->splitPropertyParts(); ++ } ++} ++ ++trait SearchFilterTrait ++{ ++ use PropertyHelperTrait; ++} ++ ++abstract class AbstractFilter ++{ ++ use OrmPropertyHelperTrait, PropertyHelperTrait; ++ ++ public function apply(): void ++ { ++ $this->filterProperty(); ++ } ++ ++ abstract protected function filterProperty(): void; ++} ++ ++class SearchFilter extends AbstractFilter ++{ ++ use SearchFilterTrait; ++ protected function filterProperty(): void ++ { ++ $this->addJoinsForNestedProperty(); ++ } ++} ++ ++class FilterExtension ++{ ++ public function applyToCollection(): void ++ { ++ (new SearchFilter())->apply(); ++ } ++} ++ ++(new FilterExtension)->applyToCollection(); ++?> ++--EXPECT-- ++OK +diff --git a/Zend/zend_inheritance.c b/Zend/zend_inheritance.c +index 402354baa8..228c5b6e54 100644 +--- a/Zend/zend_inheritance.c ++++ b/Zend/zend_inheritance.c +@@ -2018,12 +2018,14 @@ static void zend_add_trait_method(zend_class_entry *ce, zend_string *name, zend_ + if (check_inheritance) { + /* Inherited members are overridden by members inserted by traits. + * Check whether the trait method fulfills the inheritance requirements. */ ++ uint32_t flags = ZEND_INHERITANCE_CHECK_PROTO | ZEND_INHERITANCE_CHECK_VISIBILITY; ++ if (!(existing_fn->common.scope->ce_flags & ZEND_ACC_TRAIT)) { ++ flags |= ZEND_INHERITANCE_SET_CHILD_CHANGED |ZEND_INHERITANCE_SET_CHILD_PROTO | ++ ZEND_INHERITANCE_RESET_CHILD_OVERRIDE; ++ } + do_inheritance_check_on_method( + fn, fixup_trait_scope(fn, ce), existing_fn, fixup_trait_scope(existing_fn, ce), +- ce, NULL, +- ZEND_INHERITANCE_CHECK_PROTO | ZEND_INHERITANCE_CHECK_VISIBILITY | +- ZEND_INHERITANCE_SET_CHILD_CHANGED| ZEND_INHERITANCE_SET_CHILD_PROTO | +- ZEND_INHERITANCE_RESET_CHILD_OVERRIDE); ++ ce, NULL, flags); + } + } + /* }}} */