Remi Collet 5c96890
# Fedora spec file for php-pecl-memcache
2fcac67
#
6ad2c6f
# Copyright (c) 2007-2019 Remi Collet
2fcac67
# License: CC-BY-SA
2fcac67
# http://creativecommons.org/licenses/by-sa/3.0/
2fcac67
#
2fcac67
# Please, preserve the changelog entries
2fcac67
#
600c164
600c164
# we don't want -z defs linker flag
600c164
%undefine _strict_symbol_defs_build
600c164
2fcac67
%global pecl_name  memcache
7643fb0
# Not ready, some failed UDP tests. Neded investigation.
2856e51
%global with_tests 0%{!?_without_tests:1}
2fcac67
%global with_zts   0%{?__ztsphp:1}
2fcac67
%global ini_name  40-%{pecl_name}.ini
55ca050
55ca050
Summary:      Extension to work with the Memcached caching daemon
55ca050
Name:         php-pecl-memcache
2856e51
Version:      4.0.5.1
6ad2c6f
Release:      1%{?dist}
1e3f0a8
Source0:      https://pecl.php.net/get/%{pecl_name}-%{version}%{?prever}.tgz
55ca050
License:      PHP
6ad2c6f
Group:        Development/Languages
1e3f0a8
URL:          https://pecl.php.net/package/%{pecl_name}
55ca050
6ad2c6f
BuildRequires: gcc
1e3f0a8
BuildRequires: php-devel > 7
b107d9e
BuildRequires: php-pear
b107d9e
BuildRequires: zlib-devel
7643fb0
%if %{with_tests}
7643fb0
BuildRequires: memcached
7643fb0
%endif
56b1917
55ca050
Requires:     php(zend-abi) = %{php_zend_api}
55ca050
Requires:     php(api) = %{php_core_api}
55ca050
7e426c5
Provides:     php-pecl(%{pecl_name}) = %{version}
ed92d13
Provides:     php-pecl(%{pecl_name})%{?_isa} = %{version}
b107d9e
Provides:     php-%{pecl_name} = %{version}
b107d9e
Provides:     php-%{pecl_name}%{?_isa} = %{version}
7e426c5
56b1917
55ca050
%description
55ca050
Memcached is a caching daemon designed especially for
55ca050
dynamic web applications to decrease database load by
55ca050
storing objects in memory.
55ca050
55ca050
This extension allows you to work with memcached through
55ca050
handy OO and procedural interfaces.
55ca050
c628be5
Memcache can be used as a PHP session handler.
55ca050
a459293
55ca050
%prep 
55ca050
%setup -c -q
2fcac67
mv %{pecl_name}-%{version} NTS
e719b77
e719b77
# Don't install/register tests
e719b77
sed -e 's/role="test"/role="src"/' \
e719b77
    -e '/LICENSE/s/role="doc"/role="src"/' \
e719b77
    -i package.xml
e719b77
2fcac67
pushd NTS
1e3f0a8
# Check version as upstream often forget to update this
9836846
1e3f0a8
dir=php$(%{__php} -r 'echo PHP_MAJOR_VERSION;')
e719b77
extver=$(sed -n '/#define PHP_MEMCACHE_VERSION/{s/.* "//;s/".*$//;p}' $dir/php_memcache.h)
6ad2c6f
if test "x${extver}" != "x%{version}%{?prever:-%{prever}}"; then
6ad2c6f
   : Error: Upstream version is now ${extver}, expecting %{version}%{?prever:-%{prever}}
7e426c5
   : Update the pdover macro and rebuild.
7e426c5
   exit 1
7e426c5
fi
eb3d2f3
popd
55ca050
2fcac67
cat >%{ini_name} << 'EOF'
7c40374
; ----- Enable %{pecl_name} extension module
55ca050
extension=%{pecl_name}.so
55ca050
7c40374
; ----- Options for the %{pecl_name} module
7e426c5
; see http://www.php.net/manual/en/memcache.ini.php
55ca050
7c40374
;  Whether to transparently failover to other servers on errors
55ca050
;memcache.allow_failover=1
7c40374
;  Data will be transferred in chunks of this size
7c40374
;memcache.chunk_size=32768
da0bce1
;  Autocompress large data
da0bce1
;memcache.compress_threshold=20000
7c40374
;  The default TCP port number to use when connecting to the memcached server 
55ca050
;memcache.default_port=11211
7c40374
;  Hash function {crc32, fnv}
c628be5
;memcache.hash_function=crc32
7c40374
;  Hash strategy {standard, consistent}
7c40374
;memcache.hash_strategy=consistent
7c40374
;  Defines how many servers to try when setting and getting data.
7c40374
;memcache.max_failover_attempts=20
7c40374
;  The protocol {ascii, binary} : You need a memcached >= 1.3.0 to use the binary protocol
7c40374
;  The binary protocol results in less traffic and is more efficient
7c40374
;memcache.protocol=ascii
7c40374
;  Redundancy : When enabled the client sends requests to N servers in parallel
7c40374
;memcache.redundancy=1
7c40374
;memcache.session_redundancy=2
01e7d8b
;  Lock Timeout
01e7d8b
;memcache.lock_timeout = 15
55ca050
6ad2c6f
;memcache.prefix_host_key = 0
6ad2c6f
;memcache.prefix_host_key_remove_www = 1
6ad2c6f
;memcache.prefix_host_key_remove_subdomain = 0
6ad2c6f
;memcache.prefix_static_key = ''
6ad2c6f
7c40374
; ----- Options to use the memcache session handler
55ca050
0f87a38
; RPM note : save_handler and save_path are defined
0f87a38
; for mod_php, in /etc/httpd/conf.d/php.conf
0f87a38
; for php-fpm, in /etc/php-fpm.d/*conf
0f87a38
7c40374
;  Use memcache as a session handler
55ca050
;session.save_handler=memcache
7c40374
;  Defines a comma separated of server urls to use for session storage
6ad2c6f
;  Only used when memcache.session_save_path is not set
55ca050
;session.save_path="tcp://localhost:11211?persistent=1&weight=1&timeout=1&retry_interval=15"
6ad2c6f
;memcache.session_prefix_host_key = 0
6ad2c6f
;memcache.session_prefix_host_key_remove_www = 1
6ad2c6f
;memcache.session_prefix_host_key_remove_subdomain = 0
6ad2c6f
;memcache.session_prefix_static_key = ''
6ad2c6f
;memcache.session_save_path = ''
55ca050
EOF
55ca050
7643fb0
%if %{with_zts}
2fcac67
cp -r NTS ZTS
7643fb0
%endif
7643fb0
c49ce34
c49ce34
%build
2fcac67
cd NTS
7643fb0
%{_bindir}/phpize
7643fb0
%configure --with-php-config=%{_bindir}/php-config
7643fb0
make %{?_smp_mflags}
7643fb0
7643fb0
%if %{with_zts}
2fcac67
cd ../ZTS
7643fb0
%{_bindir}/zts-phpize
7643fb0
%configure --with-php-config=%{_bindir}/zts-php-config
c49ce34
make %{?_smp_mflags}
7643fb0
%endif
c49ce34
c49ce34
c49ce34
%install
2fcac67
make -C NTS install INSTALL_ROOT=%{buildroot}
c49ce34
c49ce34
# Drop in the bit of configuration
2fcac67
install -D -m 644 %{ini_name} %{buildroot}%{php_inidir}/%{ini_name}
7643fb0
7643fb0
%if %{with_zts}
2fcac67
make -C ZTS install INSTALL_ROOT=%{buildroot}
7643fb0
2fcac67
install -D -m 644 %{ini_name} %{buildroot}%{php_ztsinidir}/%{ini_name}
7643fb0
%endif
c49ce34
55ca050
# Install XML package description
c49ce34
install -Dpm 644 package.xml %{buildroot}%{pecl_xmldir}/%{name}.xml
55ca050
e719b77
# Documentation
e719b77
for i in $(grep '
2fcac67
do install -Dpm 644 NTS/$i %{buildroot}%{pecl_docdir}/%{pecl_name}/$i
2fcac67
done
2fcac67
55ca050
7242c57
%check
2fcac67
: Minimal load test for NTS extension
7643fb0
%{__php} --no-php-ini \
2fcac67
    --define extension=%{buildroot}%{php_extdir}/%{pecl_name}.so \
2fcac67
    -m | grep %{pecl_name}
7643fb0
7643fb0
%if %{with_zts}
2fcac67
: Minimal load test for ZTS extension
7643fb0
%{__ztsphp} --no-php-ini \
2fcac67
    --define extension=%{buildroot}%{php_ztsextdir}/%{pecl_name}.so \
2fcac67
    -m | grep %{pecl_name}
7643fb0
%endif
7643fb0
7643fb0
%if %{with_tests}
2fcac67
cd NTS
2d3b38b
: ignore test with erratic results
2d3b38b
rm tests/040.phpt
2d3b38b
rm tests/056.phpt
2d3b38b
2d3b38b
: Configuration for tests
7643fb0
sed -e "s:/var/run/memcached/memcached.sock:$PWD/memcached.sock:" \
7643fb0
    -i tests/connect.inc
7643fb0
2fcac67
: Launch the daemons
7643fb0
memcached -p 11211 -U 11211      -d -P $PWD/memcached1.pid
7643fb0
memcached -p 11212 -U 11212      -d -P $PWD/memcached2.pid
7643fb0
memcached -s $PWD/memcached.sock -d -P $PWD/memcached3.pid
7643fb0
2fcac67
: Upstream test suite for NTS extension
7643fb0
ret=0
7643fb0
TEST_PHP_EXECUTABLE=%{_bindir}/php \
7643fb0
TEST_PHP_ARGS="-n -d extension_dir=$PWD/modules -d extension=%{pecl_name}.so" \
7643fb0
NO_INTERACTION=1 \
7643fb0
REPORT_EXIT_STATUS=1 \
2d3b38b
%{_bindir}/php -n run-tests.php --show-diff || ret=1
7643fb0
2fcac67
: Cleanup
7643fb0
if [ -f memcached2.pid ]; then
7643fb0
   kill $(cat memcached?.pid)
7643fb0
fi
7643fb0
7643fb0
exit $ret
7643fb0
%endif
7242c57
7242c57
55ca050
%files
e719b77
%license NTS/LICENSE
2fcac67
%doc %{pecl_docdir}/%{pecl_name}
55ca050
%{pecl_xmldir}/%{name}.xml
2fcac67
%config(noreplace) %{php_inidir}/%{ini_name}
7643fb0
%{php_extdir}/%{pecl_name}.so
7643fb0
7643fb0
%if %{with_zts}
2fcac67
%config(noreplace) %{php_ztsinidir}/%{ini_name}
7643fb0
%{php_ztsextdir}/%{pecl_name}.so
7643fb0
%endif
7643fb0
55ca050
55ca050
55ca050
%changelog
2856e51
* Thu Dec 19 2019 Remi Collet <remi@remirepo.net> - 4.0.5.1-1
2856e51
- update to 4.0.5.1 (no change)
2856e51
- enable test suite
2856e51
1e3f0a8
* Thu Dec 19 2019 Remi Collet <remi@remirepo.net> - 4.0.5-1
1e3f0a8
- update to 4.0.5
1e3f0a8
- switch back to sources from PECL
1e3f0a8
9836846
* Mon Mar 25 2019 Remi Collet <remi@remirepo.net> - 4.0.3-1
9836846
- update to 4.0.3
9836846
- drop patches merged upstream
9836846
- open https://github.com/websupport-sk/pecl-memcache/pull/48 version
9836846
6ad2c6f
* Tue Mar 19 2019 Remi Collet <remi@remirepo.net> - 4.0.2-1
6ad2c6f
- update to 4.0.2 from https://github.com/websupport-sk/pecl-memcache
6ad2c6f
- add patch for PHP < 7.2 from
6ad2c6f
  https://github.com/websupport-sk/pecl-memcache/pull/40
6ad2c6f
- add patch to allow session.save_path from
6ad2c6f
  https://github.com/websupport-sk/pecl-memcache/pull/45
6ad2c6f
67bcfd5
* Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.9-0.12.20170802.e702b5f
67bcfd5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
67bcfd5
cc24044
* Thu Oct 11 2018 Remi Collet <remi@remirepo.net> - 3.0.9-0.11.20170802.e702b5f
cc24044
- Rebuild for https://fedoraproject.org/wiki/Changes/php73
cc24044
- add patch for PHP 7.3 from
cc24044
  https://github.com/websupport-sk/pecl-memcache/pull/30
cc24044
dc56146
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.9-0.10.20170802.e702b5f
dc56146
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
dc56146
1518bc3
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.9-0.9.20170802.e702b5f
1518bc3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
1518bc3
600c164
* Fri Jan 26 2018 Remi Collet <remi@remirepo.net> - 3.0.9-0.8.20170802.e702b5f
600c164
- undefine _strict_symbol_defs_build
600c164
6e0a13f
* Fri Oct  6 2017 Remi Collet <remi@remirepo.net> - 3.0.9-0.7.20170802.e702b5f
6e0a13f
- refresh to more recent snapshot
6e0a13f
- add patch from https://github.com/websupport-sk/pecl-memcache/issues/23
6e0a13f
c34bf93
* Tue Oct  3 2017 Remi Collet <remi@remirepo.net> - 3.0.9-0.6.20161124gitdf7735e
c34bf93
- refresh
c34bf93
70160e3
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.9-0.5.20160311git4991c2f
70160e3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
70160e3
f43104e
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.9-0.4.20160311git4991c2f
f43104e
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
f43104e
46ccfb2
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.9-0.3.20160311git4991c2f
46ccfb2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
46ccfb2
8e404ec
* Mon Nov 14 2016 Remi Collet <remi@fedoraproject.org> - 3.0.9-0.2.20160311git4991c2f
8e404ec
- rebuild for https://fedoraproject.org/wiki/Changes/php71
8e404ec
e719b77
* Mon Jun 27 2016 Remi Collet <rcollet@redhat.com> - 3.0.9-0.1.20160311git4991c2f
e719b77
- git snapshopt for PHP 7
e719b77
- sources from https://github.com/websupport-sk/pecl-memcache (for PHP 7)
e719b77
- don't install/register tests
e719b77
- fix license installation
e719b77
Remi Collet 5c96890
* Wed Feb 10 2016 Remi Collet <remi@fedoraproject.org> - 3.0.8-10
Remi Collet 5c96890
- drop scriptlets (replaced by file triggers in php-pear)
Remi Collet 5c96890
- cleanup
Remi Collet 5c96890
e972746
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.8-9
e972746
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
e972746
895fe40
* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0.8-8
895fe40
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
895fe40
Remi Collet 85845bb
* Tue Feb 10 2015 Remi Collet <rcollet@redhat.com> - 3.0.8-7
Remi Collet 85845bb
- fix gcc 5 FTBFS
Remi Collet 85845bb
28b7596
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0.8-6
28b7596
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
28b7596
12ccc49
* Thu Jun 19 2014 Remi Collet <rcollet@redhat.com> - 3.0.8-5
12ccc49
- rebuild for https://fedoraproject.org/wiki/Changes/Php56
12ccc49
f8529a9
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0.8-4
f8529a9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
f8529a9
2fcac67
* Thu Apr 24 2014 Remi Collet <rcollet@redhat.com> - 3.0.8-3
2fcac67
- add numerical prefix to extension configuration file
2fcac67
- install doc in pecl_docdir
2fcac67
- install tests in pecl_testdir
2fcac67
632ec32
* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0.8-2
632ec32
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
632ec32
7643fb0
* Mon Apr 08 2013 Remi Collet <remi@fedoraproject.org> - 3.0.8-1
7643fb0
- Update to 3.0.8
7643fb0
- enable conditional ZTS extension build
7643fb0
Remi Collet 9350bd9
* Fri Mar 22 2013 Remi Collet <rcollet@redhat.com> - 3.0.7-7
Remi Collet 9350bd9
- rebuild for http://fedoraproject.org/wiki/Features/Php55
Remi Collet 9350bd9
63b9aab
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0.7-6
63b9aab
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
63b9aab
126fdce
* Sat Dec 29 2012 Remi Collet <remi@fedoraproject.org> - 3.0.7-5
b107d9e
- add patch for https://bugs.php.net/59602
b107d9e
  segfault in getExtendedStats
b107d9e
- also provides php-memcache
b107d9e
56d0967
* Fri Oct 19 2012 Remi Collet <remi@fedoraproject.org> - 3.0.7-4
56d0967
- improve comment in configuration about session.
56d0967
bb36b37
* Tue Sep 25 2012 Remi Collet <remi@fedoraproject.org> - 3.0.7-3
bb36b37
- switch back to previous patch as possible memleak
bb36b37
  more acceptable than certain segfault
bb36b37
31bb75f
* Sun Sep 23 2012 Remi Collet <remi@fedoraproject.org> - 3.0.7-2
31bb75f
- use upstream patch instead of our (memleak)
31bb75f
7e426c5
* Sun Sep 23 2012 Remi Collet <remi@fedoraproject.org> - 3.0.7-1
7e426c5
- update to 3.0.7
7e426c5
- drop patches merged upstream
7e426c5
- cleanup spec
7e426c5
579f56e
* Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0.6-5
579f56e
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
579f56e
eb3d2f3
* Thu Jul  5 2012 Joe Orton <jorton@redhat.com> - 3.0.6-4
eb3d2f3
- fix php_stream_cast() usage
eb3d2f3
- fix memory corruption after unserialization (Paul Clifford)
eb3d2f3
- package license
eb3d2f3
c49ce34
* Thu Jan 19 2012 Remi Collet <remi@fedoraproject.org> - 3.0.6-3
c49ce34
- rebuild against PHP 5.4, with patch
c49ce34
- fix filters
c49ce34
5ee0d46
* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0.6-2
5ee0d46
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
5ee0d46
8786f2b
* Mon Apr 11 2011 Remi Collet <Fedora@FamilleCollet.com> 3.0.6-1
8786f2b
- update to 3.0.6
8786f2b
bf6f79e
* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0.5-3
bf6f79e
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
bf6f79e
56b1917
* Sat Oct 23 2010  Remi Collet <Fedora@FamilleCollet.com> 3.0.5-2
56b1917
- add filter_provides to avoid private-shared-object-provides memcache.so
56b1917
6808b5a
* Tue Oct 05 2010 Remi Collet <Fedora@FamilleCollet.com> 3.0.5-1
6808b5a
- update to 3.0.5
6808b5a
7242c57
* Thu Sep 30 2010 Remi Collet <Fedora@FamilleCollet.com> 3.0.4-4
7242c57
- patch for bug #599305 (upstream #17566)
7242c57
- add minimal load test in %%check
7242c57
88c0490
* Sun Jul 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0.4-3
88c0490
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
88c0490
a459293
* Sun Jul 12 2009 Remi Collet <Fedora@FamilleCollet.com> 3.0.4-2
a459293
- rebuild for new PHP 5.3.0 ABI (20090626)
a459293
01e7d8b
* Sat Feb 28 2009 Remi Collet <Fedora@FamilleCollet.com> 3.0.4-1
01e7d8b
- new version 3.0.4
dceb6ae
da0bce1
* Tue Jan 13 2009 Remi Collet <Fedora@FamilleCollet.com> 3.0.3-1
da0bce1
- new version 3.0.3
da0bce1
126fdce
* Thu Sep 11 2008 Remi Collet <Fedora@FamilleCollet.com> 3.0.2-1
7c40374
- new version 3.0.2
7c40374
126fdce
* Thu Sep 11 2008 Remi Collet <Fedora@FamilleCollet.com> 2.2.4-1
7c40374
- new version 2.2.4 (bug fixes)
7c40374
d3349db
* Sat Feb  9 2008 Remi Collet <Fedora@FamilleCollet.com> 2.2.3-1
d3349db
- new version
d3349db
fb06eee
* Thu Jan 10 2008 Remi Collet <Fedora@FamilleCollet.com> 2.2.2-1
fb06eee
- new version
fb06eee
c4080b6
* Thu Nov 01 2007 Remi Collet <Fedora@FamilleCollet.com> 2.2.1-1
c4080b6
- new version
c4080b6
c628be5
* Sat Sep 22 2007 Remi Collet <Fedora@FamilleCollet.com> 2.2.0-1
c628be5
- new version
b142b9b
- add new INI directives (hash_strategy + hash_function) to config
b142b9b
- add BR on php-devel >= 4.3.11 
c628be5
55ca050
* Mon Aug 20 2007 Remi Collet <Fedora@FamilleCollet.com> 2.1.2-1
55ca050
- initial RPM
55ca050