From 152386ff0947f59e6e077ab92ea7b2f4fa2771e2 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Thu, 30 Oct 2025 08:25:16 +0100 Subject: [PATCH] import php8.4-pecl-redis6 Resolves: RHEL-105827 --- .fmf/version | 1 + .gitignore | 1 + ci.fmf | 2 + gating.yaml | 8 + php8.4-pecl-redis6.spec | 789 +++++++++++++++++++++++++++++++++++++++ plans/tier1-internal.fmf | 10 + redis-8.0.patch | 122 ++++++ sources | 1 + 8 files changed, 934 insertions(+) create mode 100644 .fmf/version create mode 100644 ci.fmf create mode 100644 gating.yaml create mode 100644 php8.4-pecl-redis6.spec create mode 100644 plans/tier1-internal.fmf create mode 100644 redis-8.0.patch create mode 100644 sources diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/.gitignore b/.gitignore index e69de29..7d5b159 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/redis-6.2.0.tgz diff --git a/ci.fmf b/ci.fmf new file mode 100644 index 0000000..da04079 --- /dev/null +++ b/ci.fmf @@ -0,0 +1,2 @@ +resultsdb-testcase: separate + diff --git a/gating.yaml b/gating.yaml new file mode 100644 index 0000000..a44fa83 --- /dev/null +++ b/gating.yaml @@ -0,0 +1,8 @@ +#gating rhel +--- !Policy +product_versions: + - rhel-* +decision_context: osci_compose_gate +rules: + - !PassingTestCaseRule {test_case_name: osci.brew-build./plans/tier1-internal.functional} + diff --git a/php8.4-pecl-redis6.spec b/php8.4-pecl-redis6.spec new file mode 100644 index 0000000..ebf5495 --- /dev/null +++ b/php8.4-pecl-redis6.spec @@ -0,0 +1,789 @@ +# RHEL/Fedora spec file for php-pecl-redis6 +# without SCL compatibility from: +# +# remirepo spec file for php-pecl-redis6 +# +# SPDX-FileCopyrightText: Copyright 2012-2025 Remi Collet +# SPDX-License-Identifier: CECILL-2.1 +# http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +# +# Please, preserve the changelog entries +# + +%global php_base php8.4 + +%bcond_without tests +%if 0%{?fedora} +# optional compressors/serializers enabled by default +%bcond_without igbinary +%bcond_without msgpack +%bcond_without liblzf +%else +# optional compressors/serializers disabled by default +%bcond_with igbinary +%bcond_with msgpack +%bcond_with liblzf +%endif +%bcond_without valkey + +%global pie_vend phpredis +%global pie_proj phpredis +%global pecl_name redis +# after 40-igbinary and 40-msgpack +%global ini_name 50-%{pecl_name}.ini + +%global upstream_version 6.2.0 +#global upstream_prever RC2 +%global sources %{pecl_name}-%{upstream_version}%{?upstream_prever} + +Summary: PHP extension for interfacing with key-value stores +Name: %{php_base}-pecl-redis6 +Version: %{upstream_version}%{?upstream_prever:~%{upstream_prever}} +Release: 3%{?dist} +License: PHP-3.01 +URL: https://pecl.php.net/package/redis +Source0: https://pecl.php.net/get/%{sources}.tgz + +Patch0: redis-8.0.patch + +ExcludeArch: %{ix86} + +BuildRequires: make +BuildRequires: gcc +BuildRequires: %{php_base}-devel >= 8.0 +BuildRequires: php-pear +%if %{with igbinary} +BuildRequires: %{php_base}-pecl-igbinary-devel +%endif +%if %{with msgpack} +BuildRequires: %{php_base}-pecl-msgpack-devel >= 2.0.3 +%endif +%if %{with liblzf} +BuildRequires: pkgconfig(liblzf) +%endif +BuildRequires: pkgconfig(libzstd) >= 1.3.0 +BuildRequires: pkgconfig(liblz4) +# to run Test suite +%if %{with tests} +%if %{with valkey} +BuildRequires: valkey +%else +BuildRequires: redis +%endif +%endif + +Requires: php(zend-abi) = %{php_zend_api} +Requires: php(api) = %{php_core_api} +%if %{with igbinary} +Requires: %{php_base}-pecl-igbinary%{?_isa} +%endif +%if %{with msgpack} +Requires: %{php_base}-pecl-msgpack%{?_isa} +%endif + +Provides: php-%{pecl_name} = %{version} +Provides: php-%{pecl_name}%{?_isa} = %{version} +Provides: php-pecl(%{pecl_name}) = %{version} +Provides: php-pecl(%{pecl_name})%{?_isa} = %{version} +Provides: php-pie(%{pie_vend}/%{pie_proj}) = %{version} +Provides: php-%{pie_vend}-%{pie_proj} = %{version} + +%if "%{php_base}" != "php" +Requires: %{php_base}-common%{?_isa} +Conflicts: php-pecl-%{pecl_name}6 +Provides: php-pecl-%{pecl_name}6 = %{version}-%{release} +Provides: php-pecl-%{pecl_name}6%{?_isa} = %{version}-%{release} +Provides: php-pecl-%{pecl_name} = %{version}-%{release} +Provides: php-pecl-%{pecl_name}%{?_isa} = %{version}-%{release} + +%elif 0%{?fedora} >= 42 || 0%{?rhel} >= 10 || "%{php_version}" > "8.4" +Obsoletes: php-pecl-%{pecl_name} < 6 +Provides: php-pecl-%{pecl_name} = %{version}-%{release} +Provides: php-pecl-%{pecl_name}%{?_isa} = %{version}-%{release} +Obsoletes: php-pecl-%{pecl_name}4 < 6 +Provides: php-pecl-%{pecl_name}4 = %{version}-%{release} +Provides: php-pecl-%{pecl_name}4%{?_isa} = %{version}-%{release} +Obsoletes: php-pecl-%{pecl_name}5 < 6 +Provides: php-pecl-%{pecl_name}5 = %{version}-%{release} +Provides: php-pecl-%{pecl_name}5%{?_isa} = %{version}-%{release} + +%else +# A single version can be installed +Conflicts: php-pecl-%{pecl_name} < 6 +Conflicts: php-pecl-%{pecl_name}4 < 6 +Conflicts: php-pecl-%{pecl_name}5 < 6 +%endif + + +%description +This extension provides an API for communicating with RESP-based key-value +stores, such as Redis, Valkey, and KeyDB. + +This client implements most of the latest API. +As method only works when also implemented on the server side, +some doesn't work with an old server version. + + +%prep +%setup -q -c + +# Don't install/register tests, license, and bundled library +sed -e 's/role="test"/role="src"/' \ + -e '/LICENSE/s/role="doc"/role="src"/' \ + -e '/liblzf/d' \ + -i package.xml + +cd %{sources} +%patch -P0 -p1 + +# Use system library +rm -r liblzf + +# Sanity check, really often broken +extver=$(sed -n '/#define PHP_REDIS_VERSION/{s/.* "//;s/".*$//;p}' php_redis.h) +if test "x${extver}" != "x%{upstream_version}%{?upstream_prever}"; then + : Error: Upstream extension version is ${extver}, expecting %{upstream_version}%{?upstream_prever}. + exit 1 +fi +cd .. + +# Drop in the bit of configuration +cat > %{ini_name} << 'EOF' +; Enable %{pecl_name} extension module +extension = %{pecl_name}.so + +; phpredis can be used to store PHP sessions. +; To do this, uncomment and configure below + +; RPM note : save_handler and save_path are defined +; for mod_php, in /etc/httpd/conf.d/php.conf +; for php-fpm, in %{_sysconfdir}/php-fpm.d/*conf + +;session.save_handler = %{pecl_name} +;session.save_path = "tcp://host1:6379?weight=1, tcp://host2:6379?weight=2&timeout=2.5, tcp://host3:6379?weight=2" + +; Configuration +;redis.arrays.algorithm = '' +;redis.arrays.auth = '' +;redis.arrays.autorehash = 0 +;redis.arrays.connecttimeout = 0 +;redis.arrays.consistent = 0 +;redis.arrays.distributor = '' +;redis.arrays.functions = '' +;redis.arrays.hosts = '' +;redis.arrays.index = 0 +;redis.arrays.lazyconnect = 0 +;redis.arrays.names = '' +;redis.arrays.pconnect = 0 +;redis.arrays.previous = '' +;redis.arrays.readtimeout = 0 +;redis.arrays.retryinterval = 0 +;redis.clusters.auth = 0 +;redis.clusters.cache_slots = 0 +;redis.clusters.persistent = 0 +;redis.clusters.read_timeout = 0 +;redis.clusters.seeds = '' +;redis.clusters.timeout = 0 +;redis.pconnect.pooling_enabled = 1 +;redis.pconnect.connection_limit = 0 +;redis.pconnect.echo_check_liveness = 1 +;redis.pconnect.pool_detect_dirty = 0 +;redis.pconnect.pool_poll_timeout = 0 +;redis.pconnect.pool_pattern => '' +;redis.session.locking_enabled = 0 +;redis.session.lock_expire = 0 +;redis.session.lock_retries = 100 +;redis.session.lock_wait_time = 20000 +;redis.session.early_refresh = 0 +;redis.session.compression = none +;redis.session.compression_level = 3 +EOF + + +%build +peclconf() { +%configure \ + --enable-redis \ + --enable-redis-session \ +%if %{with igbinary} + --enable-redis-igbinary \ +%endif +%if %{with msgpack} + --enable-redis-msgpack \ +%endif +%if %{with liblzf} + --enable-redis-lzf \ + --with-liblzf \ +%else + --disable-redis-lzf \ +%endif + --enable-redis-zstd \ + --with-libzstd \ + --enable-redis-lz4 \ + --with-liblz4 \ + --with-php-config=$1 +} + +cd %{sources} +%{__phpize} +sed -e 's/INSTALL_ROOT/DESTDIR/' -i build/Makefile.global + +peclconf %{__phpconfig} +%make_build + + +%install +# Install the configuration file +install -D -m 644 %{ini_name} %{buildroot}%{php_inidir}/%{ini_name} + +# Install the package XML file +install -D -m 644 package.xml %{buildroot}%{pecl_xmldir}/%{name}.xml + +cd %{sources} +%make_install + +# Documentation +for i in $(grep 'role="doc"' ../package.xml | sed -e 's/^.*name="//;s/".*$//') +do install -Dpm 644 $i %{buildroot}%{pecl_docdir}/%{pecl_name}/$i +done + + +%check +# simple module load test +DEPS="--no-php-ini" +for i in igbinary msgpack +do [ -f %{php_extdir}/${i}.so ] && DEPS="$DEPS --define extension=${i}.so" +done + +%{__php} $DEPS \ + --define extension=%{buildroot}%{php_extdir}/%{pecl_name}.so \ + --modules | grep '^%{pecl_name}$' + +%if %{with tests} +cd %{sources}/tests +: Ignore ONLINE test +sed -e 's/testConnectException/skipConnectException/' -i RedisTest.php + +: Launch redis server +%if %{with valkey} +SRV=%{_bindir}/valkey-server +CLI=%{_bindir}/valkey-cli +%else +SRV=%{_bindir}/redis-server +CLI=%{_bindir}/redis-cli +%endif + +mkdir -p data +pidfile=$PWD/server.pid +port=$(%{__php} -r 'echo 9000 + PHP_MAJOR_VERSION*100 + PHP_MINOR_VERSION*10 + PHP_INT_SIZE;') +$SRV \ + --bind 127.0.0.1 \ + --port $port \ + --daemonize yes \ + --logfile $PWD/server.log \ + --dir $PWD/data \ + --pidfile $pidfile + + +: Run the test Suite +sed -e "s/6379/$port/" -i *.php + +ret=0 +export TEST_PHP_EXECUTABLE=%{__php} +export TEST_PHP_ARGS="$DEPS \ + --define extension=%{buildroot}%{php_extdir}/%{pecl_name}.so" +$TEST_PHP_EXECUTABLE $TEST_PHP_ARGS TestRedis.php || ret=1 + +: Cleanup +if [ -f $pidfile ]; then + $CLI -p $port shutdown nosave + sleep 2 +fi +cat $PWD/server.log + +exit $ret +%else +: Upstream test suite disabled +%endif + +%files +%license %{sources}/LICENSE +%doc %{pecl_docdir}/%{pecl_name} +%{pecl_xmldir}/%{name}.xml + +%{php_extdir}/%{pecl_name}.so +%config(noreplace) %{php_inidir}/%{ini_name} + + +%changelog +* Tue Oct 28 2025 Remi Collet - 6.2.0-3 +- fix dependencies +- add patch for redis 8 + +* Thu Sep 11 2025 Remi Collet - 6.2.0-2 +- build for php8.4 + +* Fri Jul 25 2025 Fedora Release Engineering - 6.2.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Tue Mar 25 2025 Remi Collet - 6.2.0-1 +- update to 6.2.0 +- re-license spec file to CECILL-2.1 +- add virtual provides for pie + +* Sat Jan 18 2025 Fedora Release Engineering - 6.1.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Wed Nov 20 2024 Remi Collet - 6.1.0-3 +- ignore 1 ONLINE test + +* Mon Oct 14 2024 Remi Collet - 6.1.0-2 +- rebuild for https://fedoraproject.org/wiki/Changes/php84 + +* Mon Oct 7 2024 Remi Collet - 6.1.0-1 +- update to 6.1.0 + +* Mon Sep 16 2024 Remi Collet - 6.0.2-3 +- cleanup and modernize spec file + +* Thu Jul 11 2024 Remi Collet - 6.0.2-2 +- use valkey on Fedora 41 +- add upstream patch for PHP 8.4 + +* Mon Oct 23 2023 Remi Collet - 6.0.2-1 +- update to 6.0.2 + +* Mon Sep 25 2023 Remi Collet - 6.0.1-1 +- update to 6.0.1 + +* Mon Sep 11 2023 Remi Collet - 6.0.0-1 +- cleanup SCL stuff for Fedora review + +* Mon Sep 11 2023 Remi Collet - 6.0.0-1 +- update to 6.0.0 + +* Mon Aug 21 2023 Remi Collet - 6.0.0~RC2-1 +- update to 6.0.0RC2 + +* Wed Aug 2 2023 Remi Collet - 6.0.0~RC1-1 +- update to 6.0.0RC1 +- rename to php-pecl-redis6 for new API +- disable test suite for SCL +- open https://github.com/phpredis/phpredis/pull/2367 PHP 7.2 required + +* Wed Jul 12 2023 Remi Collet - 5.3.7-4 +- build out of sources tree + +* Thu Mar 23 2023 Remi Collet - 5.3.7-3 +- add patch for test suite with redis 7.2 from + https://github.com/phpredis/phpredis/pull/2335 + +* Fri Sep 9 2022 Remi Collet - 5.3.7-2 +- rebuild for PHP 8.2 with msgpack and igbinary + +* Wed Feb 16 2022 Remi Collet - 5.3.7-1 +- update to 5.3.7 + +* Mon Feb 14 2022 Remi Collet - 5.3.7~RC2-1 +- update to 5.3.7RC2 (beta, no change) + +* Wed Feb 2 2022 Remi Collet - 5.3.7~RC1-1 +- update to 5.3.7RC1 (alpha) + +* Tue Jan 18 2022 Remi Collet - 5.3.6-1 +- update to 5.3.6 + +* Mon Dec 20 2021 Remi Collet - 5.3.5-1 +- update to 5.3.5 + +* Wed Dec 8 2021 Remi Collet - 5.3.5-0 +- test build for upcoming 5.3.5 + +* Wed Nov 17 2021 Remi Collet - 5.3.5~RC1-1 +- update to 5.3.5RC1 + +* Wed Sep 01 2021 Remi Collet - 5.3.4-2 +- rebuild for 8.1.0RC1 + +* Thu Mar 25 2021 Remi Collet - 5.3.4-1 +- update to 5.3.4 + +* Wed Feb 3 2021 Remi Collet - 5.3.3-1 +- update to 5.3.3 + +* Thu Oct 22 2020 Remi Collet - 5.3.2-1 +- update to 5.3.2 + +* Wed Oct 14 2020 Remi Collet - 5.3.2~RC2-1 +- update to 5.3.2RC2 + +* Wed Oct 7 2020 Remi Collet - 5.3.2~RC1-1 +- update to 5.3.2RC1 +- drop patch merged upstream + +* Wed Sep 30 2020 Remi Collet - 5.3.1-4 +- rebuild for PHP 8.0.0RC1 + +* Wed Sep 23 2020 Remi Collet - 5.3.1-3 +- enable msgpack serializer with PHP 8 + +* Fri Sep 11 2020 Remi Collet - 5.3.1-2 +- add patches for PHP 8 from upstream and + https://github.com/phpredis/phpredis/pull/1845 +- disable msgpack serializer with PHP 8 + +* Wed Jul 8 2020 Remi Collet - 5.3.1-1 +- update to 5.3.1 + +* Wed Jul 1 2020 Remi Collet - 5.3.0-1 +- update to 5.3.0 + +* Sat Jun 27 2020 Remi Collet - 5.3.0~RC2-1 +- update to 5.3.0RC2 +- drop patch merged upstream + +* Fri Jun 26 2020 Remi Collet - 5.3.0~RC1-1 +- update to 5.3.0RC1 +- enable lz4 compression support +- drop patch merged upstream +- add upstream patch to fix lz4 library name +- add new option in provided configuration file + +* Wed May 6 2020 Remi Collet - 5.2.2-2 +- test build for https://github.com/phpredis/phpredis/pull/1750 + +* Wed May 6 2020 Remi Collet - 5.2.2-1 +- update to 5.2.2 +- refresh options in provided configuration file + +* Fri Mar 20 2020 Remi Collet - 5.2.1-1 +- update to 5.2.1 + +* Mon Mar 2 2020 Remi Collet - 5.2.0-1 +- update to 5.2.0 + +* Fri Feb 21 2020 Remi Collet - 5.2.0~RC2-1 +- update to 5.2.0RC2 + +* Mon Feb 17 2020 Remi Collet - 5.2.0~RC1-1 +- update to 5.2.0RC1 + +* Mon Nov 11 2019 Remi Collet - 5.1.1-1 +- update to 5.1.1 + +* Fri Nov 1 2019 Remi Collet - 5.1.0-1 +- update to 5.1.0 + +* Mon Oct 21 2019 Remi Collet - 5.1.0~RC2-1 +- update to 5.1.0RC2 +- drop patch merged upstream + +* Wed Oct 9 2019 Remi Collet - 5.1.0~RC1-1 +- update to 5.1.0RC1 +- enable ZSTD compression support +- open https://github.com/phpredis/phpredis/pull/1648 + +* Tue Sep 03 2019 Remi Collet - 5.0.2-2 +- rebuild for 7.4.0RC1 + +* Tue Jul 30 2019 Remi Collet - 5.0.2-1 +- update to 5.0.2 + +* Tue Jul 23 2019 Remi Collet - 5.0.1-2 +- rebuild for 7.4.0beta1 + +* Fri Jul 12 2019 Remi Collet - 5.0.1-1 +- update to 5.0.1 + +* Tue Jul 2 2019 Remi Collet - 5.0.0-1 +- update to 5.0.0 + +* Wed Jun 26 2019 Remi Collet - 5.0.0~RC2-1 +- update to 5.0.0RC2 + +* Thu Jun 20 2019 Remi Collet - 5.0.0~RC1-1 +- update to 5.0.0RC1 +- rename to php-pecl-redis5 +- raise dependency on PHP 7 +- enable msgpack support +- enable json support +- update configuration for new options +- open https://github.com/phpredis/phpredis/pull/1578 + fix extension dependencies and report about json serializer + +* Wed May 29 2019 Remi Collet - 4.3.0-3 +- rebuild + +* Wed May 22 2019 Remi Collet - 4.3.0-2 +- cleanup + +* Thu Mar 14 2019 Remi Collet - 4.3.0-1 +- update to 4.3.0 (stable) + +* Wed Mar 6 2019 Remi Collet - 4.3.0~RC2-1 +- update to 4.3.0RC2 (beta) + +* Mon Feb 25 2019 Remi Collet - 4.3.0~RC1-1 +- update to 4.3.0RC1 (alpha) + no change sincy 4.2.1RC1, only version change according to semver + see https://github.com/phpredis/phpredis/issues/1517 + +* Mon Feb 25 2019 Remi Collet - 4.2.1~RC1-1 +- update to 4.2.1RC1 (alpha) +- update provided configuration with new runtime option + +* Tue Dec 11 2018 Remi Collet - 4.2.0-3 +- test build for upstream patch + +* Tue Dec 4 2018 Remi Collet - 4.2.0-2 +- open https://github.com/phpredis/phpredis/issues/1472 + tests failing with redis 5.0.2 + +* Sun Nov 18 2018 Remi Collet - 4.2.0-1 +- update to 4.2.0 (stable) + +* Fri Nov 9 2018 Remi Collet - 4.2.0~RC3-1 +- update to 4.2.0RC3 (beta) + +* Wed Nov 7 2018 Remi Collet - 4.2.0~RC2-2 +- test build for https://github.com/phpredis/phpredis/pull/1444 + +* Fri Oct 26 2018 Remi Collet - 4.2.0~RC2-1 +- update to 4.2.0RC2 (beta) +- open https://github.com/phpredis/phpredis/issues/1437 32-bit failed test + +* Sun Oct 21 2018 Remi Collet - 4.2.0~RC1-2 +- test build with upstream patches + +* Fri Oct 12 2018 Remi Collet - 4.2.0~RC1-1 +- update to 4.2.0RC1 (alpha) + +* Thu Aug 16 2018 Remi Collet - 4.1.1-2 +- rebuild for 7.3.0beta2 new ABI + +* Sun Aug 5 2018 Remi Collet - 4.1.1-1 +- update to 4.1.1 + +* Tue Jul 17 2018 Remi Collet - 4.1.0-2 +- rebuld for 7.3.0alpha4 new ABI + +* Tue Jul 10 2018 Remi Collet - 4.1.0-1 +- update to 4.1.0 (stable) + +* Fri Jun 22 2018 Remi Collet - 4.1.0~RC3-1 +- update to 4.1.0RC3 (beta, no change) +- drop patches merged upstream + +* Fri Jun 8 2018 Remi Collet - 4.1.0~RC1-2 +- test build with 7.3 +- open https://github.com/phpredis/phpredis/pull/1366 + Fix: Warning: time() expects exactly 0 parameters, 1 given ... + +* Fri Jun 8 2018 Remi Collet - 4.1.0~RC1-1 +- update to 4.1.0RC1 (alpha) +- open https://github.com/phpredis/phpredis/pull/1365 + use PHP_BINARY instead of php and allow override +- report https://github.com/phpredis/phpredis/issues/1364 + missing files in pecl archive +- add new redis.session.lock* options in provided configuration + +* Wed Apr 25 2018 Remi Collet - 4.0.2-1 +- update to 4.0.2 + +* Wed Apr 18 2018 Remi Collet - 4.0.1-1 +- update to 4.0.1 + +* Mon Mar 19 2018 Remi Collet - 4.0.0-1 +- update to 4.0.0 (stable) + +* Sat Mar 3 2018 Remi Collet - 4.0.0~RC2-1 +- update to 4.0.0RC2 + +* Wed Feb 7 2018 Remi Collet - 4.0.0~RC1-4 +- re-enable s390x build (was a temporary failure) + +* Wed Feb 7 2018 Remi Collet - 4.0.0~RC1-3 +- add patch to skip online test from + https://github.com/phpredis/phpredis/pull/1304 +- exclude s390x arch reported as + https://github.com/phpredis/phpredis/issues/1305 + +* Wed Feb 7 2018 Remi Collet - 4.0.0~RC1-1 +- update to 4.0.0RC1 +- rename to php-pecl-redis4 +- enable lzf support +- update configuration for new options + +* Wed Jan 3 2018 Remi Collet - 3.1.6-1 +- Update to 3.1.6 + +* Thu Dec 21 2017 Remi Collet - 3.1.5-1 +- update to 3.1.5 (stable) + +* Mon Dec 11 2017 Remi Collet - 3.1.5~RC2-1 +- update to 3.1.5RC2 (beta) + +* Fri Dec 1 2017 Remi Collet - 3.1.5~RC1-1 +- update to 3.1.5RC1 (beta) + +* Sun Nov 5 2017 Remi Collet - 3.1.4-3 +- add upstream patch, fix segfault with PHP 5.x + +* Tue Oct 17 2017 Remi Collet - 3.1.4-2 +- rebuild + +* Wed Sep 27 2017 Remi Collet - 3.1.4-1 +- update to 3.1.4 (stable) + +* Wed Sep 13 2017 Remi Collet - 3.1.4~RC3-1 +- update to 3.1.4RC3 (beta) + +* Wed Sep 13 2017 Remi Collet - 3.1.4~RC2-1 +- update to 3.1.4RC2 (beta) +- open https://github.com/phpredis/phpredis/issues/1236 + unwanted noise (warning) not even using the extension + +* Mon Sep 4 2017 Remi Collet - 3.1.4~RC1-1 +- update to 3.1.4RC1 (beta) + +* Tue Jul 18 2017 Remi Collet - 3.1.3-2 +- rebuild for PHP 7.2.0beta1 new API + +* Mon Jul 17 2017 Remi Collet - 3.1.3-1 +- update to 3.1.3 (stable) + +* Tue Jun 27 2017 Remi Collet - 3.1.3~RC2-1 +- update to 3.1.3RC2 (beta) + +* Wed Jun 21 2017 Remi Collet - 3.1.3~RC1-2 +- rebuild for 7.2.0alpha2 + +* Thu Jun 1 2017 Remi Collet - 3.1.3~RC1-1 +- update to 3.1.3RC1 (beta) + +* Sat Mar 25 2017 Remi Collet - 3.1.2-1 +- Update to 3.1.2 (stable) + +* Wed Feb 1 2017 Remi Collet - 3.1.1-1 +- Update to 3.1.1 (stable) + +* Tue Jan 17 2017 Remi Collet - 3.1.1-0.2.RC2 +- Update to 3.1.1RC2 + +* Thu Dec 22 2016 Remi Collet - 3.1.1-0.1.RC1 +- test build for open upcoming 3.1.1RC1 + +* Wed Dec 21 2016 Remi Collet - 3.1.1-0 +- test build for open upcoming 3.1.1 + +* Thu Dec 15 2016 Remi Collet - 3.1.0-2 +- test build for open upcoming 3.1.1 +- open https://github.com/phpredis/phpredis/issues/1060 broken impl + with https://github.com/phpredis/phpredis/pull/1064 +- reed https://github.com/phpredis/phpredis/issues/1062 session php 7.1 + with https://github.com/phpredis/phpredis/pull/1063 + +* Thu Dec 15 2016 Remi Collet - 3.1.0-1 +- update to 3.1.0 +- open https://github.com/phpredis/phpredis/issues/1052 max version +- open https://github.com/phpredis/phpredis/issues/1053 segfault +- open https://github.com/phpredis/phpredis/issues/1054 warnings +- open https://github.com/phpredis/phpredis/issues/1055 reflection +- open https://github.com/phpredis/phpredis/issues/1056 32bits tests + +* Thu Dec 1 2016 Remi Collet - 3.0.0-3 +- rebuild with PHP 7.1.0 GA + +* Wed Sep 14 2016 Remi Collet - 3.0.0-2 +- rebuild for PHP 7.1 new API version + +* Sat Jun 11 2016 Remi Collet - 3.0.0-1 +- Update to 3.0.0 (stable) + +* Thu Jun 9 2016 Remi Collet - 3.0.0-0.1.20160603git6447940 +- refresh and bump version + +* Thu May 5 2016 Remi Collet - 2.2.8-0.6.20160504gitad3c116 +- refresh + +* Thu Mar 3 2016 Remi Collet - 2.2.8-0.5.20160215git2887ad1 +- enable igbinary support + +* Fri Feb 19 2016 Remi Collet - 2.2.8-0.4.20160215git2887ad1 +- refresh + +* Thu Feb 11 2016 Remi Collet - 2.2.8-0.3.20160208git0d4b421 +- refresh + +* Tue Jan 26 2016 Remi Collet - 2.2.8-0.2.20160125git7b36957 +- refresh + +* Sun Jan 10 2016 Remi Collet - 2.2.8-0.2.20160106git4a37e47 +- improve package.xml, set stability=devel + +* Sun Jan 10 2016 Remi Collet - 2.2.8-0.1.20160106git4a37e47 +- update to 2.2.8-dev for PHP 7 +- use git snapshot + +* Sat Jun 20 2015 Remi Collet - 2.2.7-2 +- allow build against rh-php56 (as more-php56) + +* Tue Mar 03 2015 Remi Collet - 2.2.7-1 +- Update to 2.2.7 (stable) +- drop runtime dependency on pear, new scriptlets + +* Wed Dec 24 2014 Remi Collet - 2.2.5-5.1 +- Fedora 21 SCL mass rebuild + +* Fri Oct 3 2014 Remi Collet - 2.2.5-5 +- fix segfault with igbinary serializer + https://github.com/nicolasff/phpredis/issues/341 + +* Mon Aug 25 2014 Remi Collet - 2.2.5-4 +- improve SCL build + +* Wed Apr 16 2014 Remi Collet - 2.2.5-3 +- add numerical prefix to extension configuration file (php 5.6) +- add comment about session configuration + +* Thu Mar 20 2014 Remi Collet - 2.2.5-2 +- fix memory corruption with PHP 5.6 + https://github.com/nicolasff/phpredis/pull/447 + +* Wed Mar 19 2014 Remi Collet - 2.2.5-1 +- Update to 2.2.5 + +* Wed Mar 19 2014 Remi Collet - 2.2.4-3 +- allow SCL build + +* Fri Feb 28 2014 Remi Collet - 2.2.4-2 +- cleaups +- move doc in pecl_docdir + +* Mon Sep 09 2013 Remi Collet - 2.2.4-1 +- Update to 2.2.4 + +* Tue Apr 30 2013 Remi Collet - 2.2.3-1 +- update to 2.2.3 +- upstream moved to pecl, rename from php-redis to php-pecl-redis + +* Tue Sep 11 2012 Remi Collet - 2.2.2-5.git6f7087f +- more docs and improved description + +* Sun Sep 2 2012 Remi Collet - 2.2.2-4.git6f7087f +- latest snahot (without bundled igbinary) +- remove chmod (done upstream) + +* Sat Sep 1 2012 Remi Collet - 2.2.2-3.git5df5153 +- run only test suite with redis > 2.4 + +* Fri Aug 31 2012 Remi Collet - 2.2.2-2.git5df5153 +- latest master +- run test suite + +* Wed Aug 29 2012 Remi Collet - 2.2.2-1 +- update to 2.2.2 +- enable ZTS build + +* Tue Aug 28 2012 Remi Collet - 2.2.1-1 +- initial package diff --git a/plans/tier1-internal.fmf b/plans/tier1-internal.fmf new file mode 100644 index 0000000..41bbd98 --- /dev/null +++ b/plans/tier1-internal.fmf @@ -0,0 +1,10 @@ +summary: Internal Tier1 beakerlib tests +discover: + how: fmf + url: https://gitlab.com/redhat/rhel/tests/php-pecl-redis6 + filter: "tier:1" +execute: + how: tmt +adjust: + enabled: false + when: distro == centos-stream-10 diff --git a/redis-8.0.patch b/redis-8.0.patch new file mode 100644 index 0000000..fd713c5 --- /dev/null +++ b/redis-8.0.patch @@ -0,0 +1,122 @@ +From 593ba012ac49065343f6bbf10adca5047414ce85 Mon Sep 17 00:00:00 2001 +From: michael-grunder +Date: Sun, 4 May 2025 10:20:01 -0700 +Subject: [PATCH] Check for `dragonfly_version` in `HELLO` response + +DragonflyDB will report to be Redis but also include `dragonfly_version` +in the hello response, which we can use to identify the fork. + +Also fix parsing of the `HELLO` response for `serverName()` and +`serverVersion()`. Starting in Redis 8.0 there seem to always be modules +running, which the previous function was not expecting or parsing. +--- + library.c | 39 ++++++++++++++++++++++++++------------- + redis.c | 2 +- + tests/RedisTest.php | 2 ++ + 3 files changed, 29 insertions(+), 14 deletions(-) + +diff --git a/library.c b/library.c +index a9fb523e48..ce3e2672d0 100644 +--- a/library.c ++++ b/library.c +@@ -2018,26 +2018,31 @@ static int + redis_hello_response(INTERNAL_FUNCTION_PARAMETERS, + RedisSock *redis_sock, zval *z_tab, void *ctx) + { +- int numElems; + zval z_ret, *zv; ++ int numElems; + +- if (read_mbulk_header(redis_sock, &numElems) < 0) { +- if (IS_ATOMIC(redis_sock)) { +- RETVAL_FALSE; +- } else { +- add_next_index_bool(z_tab, 0); +- } +- return FAILURE; +- } ++ if (read_mbulk_header(redis_sock, &numElems) < 0) ++ goto fail; + + array_init(&z_ret); +- redis_mbulk_reply_zipped_raw_variant(redis_sock, &z_ret, numElems); ++ ++ if (redis_read_multibulk_recursive(redis_sock, numElems, 0, &z_ret) != SUCCESS || ++ array_zip_values_recursive(&z_ret) != SUCCESS) ++ { ++ zval_dtor(&z_ret); ++ goto fail; ++ } + + if (redis_sock->hello.server) { + zend_string_release(redis_sock->hello.server); + } +- zv = zend_hash_str_find(Z_ARRVAL(z_ret), ZEND_STRL("server")); +- redis_sock->hello.server = zv ? zval_get_string(zv) : ZSTR_EMPTY_ALLOC(); ++ ++ if ((zv = zend_hash_str_find(Z_ARRVAL(z_ret), ZEND_STRL("dragonfly_version")))) { ++ redis_sock->hello.server = zend_string_init(ZEND_STRL("dragonfly"), 0); ++ } else { ++ zv = zend_hash_str_find(Z_ARRVAL(z_ret), ZEND_STRL("server")); ++ redis_sock->hello.server = zv ? zval_get_string(zv) : ZSTR_EMPTY_ALLOC(); ++ } + + if (redis_sock->hello.version) { + zend_string_release(redis_sock->hello.version); +@@ -2063,6 +2068,14 @@ redis_hello_response(INTERNAL_FUNCTION_PARAMETERS, + } + + return SUCCESS; ++ ++fail: ++ if (IS_ATOMIC(redis_sock)) { ++ RETVAL_FALSE; ++ } else { ++ add_next_index_bool(z_tab, 0); ++ } ++ return FAILURE; + } + + +@@ -4302,7 +4315,7 @@ redis_read_multibulk_recursive(RedisSock *redis_sock, long long elements, int st + elements--; + } + +- return 0; ++ return SUCCESS; + } + + static int +diff --git a/redis.c b/redis.c +index 3f13a59888..629dd5c20b 100644 +--- a/redis.c ++++ b/redis.c +@@ -2131,7 +2131,7 @@ redis_sock_read_multibulk_multi_reply_loop(INTERNAL_FUNCTION_PARAMETERS, + + int num = atol(inbuf + 1); + +- if (num > 0 && redis_read_multibulk_recursive(redis_sock, num, 0, &z_ret) < 0) { ++ if (num > 0 && redis_read_multibulk_recursive(redis_sock, num, 0, &z_ret) != SUCCESS) { + return FAILURE; + } + } +diff --git a/tests/RedisTest.php b/tests/RedisTest.php +index e7854da442..1ebcc61e51 100644 +--- a/tests/RedisTest.php ++++ b/tests/RedisTest.php +@@ -2476,6 +2476,7 @@ public function testServerInfo() { + $this->markTestSkipped(); + + $hello = $this->execHello(); ++ + if ( ! $this->assertArrayKey($hello, 'server') || + ! $this->assertArrayKey($hello, 'version')) + { +@@ -2486,6 +2487,7 @@ public function testServerInfo() { + $this->assertEquals($hello['version'], $this->redis->serverVersion()); + + $info = $this->redis->info(); ++ + $cmd1 = $info['total_commands_processed']; + + /* Shouldn't hit the server */ diff --git a/sources b/sources new file mode 100644 index 0000000..8bf7661 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (redis-6.2.0.tgz) = fd4d79cd4f7a3d25c865ae52daea4e6d9e805f55c3b7004633ac23ed6724a30b85ed3034bddee86c42146b39215309cb9c96f5659b248e6b859295cdf10e02f1