3 %bcond_without tests # build without tests
5 %define php_name php%{?php_suffix}
6 %define modname memcache
7 %define php_min_version 5.0.0
8 %define commit e702b5f91
9 Summary: %{modname} - a memcached extension
10 Summary(pl.UTF-8): %{modname} - rozszerzenie memcached
11 Name: %{php_name}-pecl-%{modname}
15 Group: Development/Languages/PHP
16 Source0: https://pecl.php.net/get/memcache-%{version}.tgz
17 # Source0-md5: 0b11dcaa218872b7645d2c3425ce7fe8
18 Source1: %{modname}.ini
19 Source2: %{modname}-apache.conf
20 Source3: %{modname}-lighttpd.conf
22 Patch0: %{modname}-webapp.patch
24 URL: https://pecl.php.net/package/memcache
25 BuildRequires: %{php_name}-devel >= 3:7.0.0
26 BuildRequires: %{php_name}-pcre
27 BuildRequires: %{php_name}-session
28 BuildRequires: %{php_name}-simplexml
29 BuildRequires: %{php_name}-spl
30 BuildRequires: %{php_name}-xml
31 BuildRequires: php-packagexml2cl
32 BuildRequires: rpm-php-pearprov >= 4.4.2-11
33 BuildRequires: rpmbuild(macros) >= 1.650
35 BuildRequires: %{php_name}-cli
36 BuildRequires: memcached
38 %{?requires_php_extension}
39 Requires: %{php_name}-session
40 Requires: %{php_name}-zlib
42 Provides: php(memcache) = %{version}
43 Obsoletes: php-pecl-memcache < 3.0.8-5
44 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
46 %define _webapps /etc/webapps
47 %define _webapp %{modname}
48 %define _sysconfdir %{_webapps}/%{_webapp}
49 %define _appdir %{_datadir}/%{_webapp}
52 %define _noautopear pear
54 # put it together for rpmbuild
55 %define _noautoreq %{?_noautophp} %{?_noautopear}
58 Memcached is a caching daemon designed especially for dynamic web
59 applications to decrease database load by storing objects in memory.
61 This extension allows you to work with memcached through handy OO and
62 procedural interfaces.
64 %description -l pl.UTF-8
65 Memcached to zaprojektowany dla dynamicznych aplikacji internetowych
66 daemon cachujący mający za zadanie zmniejszenie obciążenia bazy danych
67 przez przechowywanie w pamięci obiektów.
69 To rozszerzenie umożliwia pracę z memcached za pomocą poręcznego
70 zorientowanego obiektowo (oraz przez procedury) interfejsu.
73 Summary: Web interface for memcache
75 # does not require extension itself
76 Requires: php(core) >= %{php_min_version}
81 Requires: webserver(php) >= 5.0
82 %if "%{_rpmversion}" >= "5"
87 Via this web interface script you can manage and view statistics of
96 cat <<'EOF' > run-tests.sh
98 export NO_INTERACTION=1 REPORT_EXIT_STATUS=1 MALLOC_CHECK_=2
100 PHP_EXECUTABLE=%{__php} \
101 %if "%php_major_version.%php_minor_version" >= "7.4"
102 PHP_TEST_SHARED_SYSTEM_EXTENSIONS="simplexml session" \
104 PHP_TEST_SHARED_SYSTEM_EXTENSIONS="pcre spl simplexml session" \
106 RUN_TESTS_SETTINGS="-q $*"
108 chmod +x run-tests.sh
118 t=$(echo "$s" | sed -rne 's/.+\[(.+)\]/\1/p')
120 test -f "$t" || die "Missing $t"
131 memcache->addServer() [tests/019.phpt]
132 memcache->set()/memcache->get() with multiple keys and load balancing [tests/020.phpt]
133 memcache->getExtendedStats() [tests/022.phpt]
134 memcache_get_extended_stats() [tests/022a.phpt]
135 memcache->delete() with load balancing [tests/023.phpt]
136 memcache->increment() with load balancing [tests/025.phpt]
137 memcache->delete() with load balancing [tests/026.phpt]
138 memcache->addServer() adding server in failed mode [tests/031.phpt]
139 memcache->getServerStatus(), memcache->setServerParams() [tests/032.phpt]
140 memcache::connect() with unix domain socket [tests/035.phpt]
141 ini_set('session.save_handler') [tests/036.phpt]
142 ini_set('session.save_path') [tests/036b.phpt]
143 memcache->increment()/decrement() with multiple keys [tests/040.phpt]
144 memcache->delete() with multiple keys [tests/041.phpt]
145 memcache->set() with multiple values [tests/042.phpt]
146 ini_set('memcache.redundancy') [tests/043.phpt]
147 ini_set('memcache.session_redundancy') [tests/044.phpt]
148 hash strategies and functions [tests/046.phpt]
149 ini_set('session.save_handler') with unix domain socket [tests/053.phpt]
150 memcache multi host save path function [tests/bug73539.phpt]
151 session_regenerate_id() should not cause fatal error [tests/githubbug13.phpt]
155 packagexml2cl package.xml > ChangeLog
161 # simple module load test
163 -d extension_dir=modules \
164 %if "%php_major_version.%php_minor_version" >= "7.4"
165 -d extension=%{php_extensiondir}/simplexml.so \
166 -d extension=%{php_extensiondir}/session.so \
168 -d extension=%{php_extensiondir}/pcre.so \
169 -d extension=%{php_extensiondir}/spl.so \
170 -d extension=%{php_extensiondir}/simplexml.so \
171 -d extension=%{php_extensiondir}/session.so \
173 -d extension=%{modname}.so \
175 grep %{modname} modules.log
178 # Launch the Memcached service and stop it on exit
179 domainsocket=$PWD/memcached.sock
180 %{_sbindir}/memcached -p 11211 -U 11211 -d -P $PWD/memcached.pid
181 %{_sbindir}/memcached -s $domainsocket -d -P $PWD/memcached-udp.pid
182 trap 'kill $(cat memcached.pid memcached-udp.pid)' EXIT INT
184 ./run-tests.sh --show-diff
188 rm -rf $RPM_BUILD_ROOT
189 install -d $RPM_BUILD_ROOT{%{php_sysconfdir}/conf.d,%{php_extensiondir},%{_examplesdir}/%{name}-%{version}}
190 install -p modules/%{modname}.so $RPM_BUILD_ROOT%{php_extensiondir}
191 # we use "session_" prefix in inifile to get loader *after* session extension
192 cp -p %{SOURCE1} $RPM_BUILD_ROOT%{php_sysconfdir}/conf.d/session_%{modname}.ini
193 cp -p example.php $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
195 install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_appdir}}
196 cp -p memcache.php $RPM_BUILD_ROOT%{_appdir}
197 cp -p %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/config.php
198 cp -p %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/apache.conf
199 cp -p $RPM_BUILD_ROOT%{_sysconfdir}/{apache,httpd}.conf
200 cp -p %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/lighttpd.conf
203 rm -rf $RPM_BUILD_ROOT
206 %php_webserver_restart
209 if [ "$1" = 0 ]; then
210 %php_webserver_restart
213 %triggerpostun -- %{name} < 3.0.4-2
214 if [ -f %{php_sysconfdir}/conf.d/%{modname}.ini.rpmsave ]; then
215 echo >&2 "Restoring old config: %{modname}.ini.rpmsave -> session_%{modname}.ini in %{php_sysconfdir}/conf.d"
216 cp -f %{php_sysconfdir}/conf.d/session_%{modname}.ini{,.rpmnew}
217 mv -f %{php_sysconfdir}/conf.d/{%{modname}.ini.rpmsave,session_%{modname}.ini}
218 %php_webserver_restart
221 %triggerin web -- apache1 < 1.3.37-3, apache1-base
222 %webapp_register apache %{_webapp}
224 %triggerun web -- apache1 < 1.3.37-3, apache1-base
225 %webapp_unregister apache %{_webapp}
227 %triggerin web -- apache < 2.2.0, apache-base
228 %webapp_register httpd %{_webapp}
230 %triggerun web -- apache < 2.2.0, apache-base
231 %webapp_unregister httpd %{_webapp}
233 %triggerin web -- lighttpd
234 %webapp_register lighttpd %{_webapp}
236 %triggerun web -- lighttpd
237 %webapp_unregister lighttpd %{_webapp}
240 %defattr(644,root,root,755)
241 %doc CREDITS README ChangeLog
242 %config(noreplace) %verify(not md5 mtime size) %{php_sysconfdir}/conf.d/session_%{modname}.ini
243 %attr(755,root,root) %{php_extensiondir}/%{modname}.so
244 %{_examplesdir}/%{name}-%{version}
247 %defattr(644,root,root,755)
248 %dir %attr(750,root,http) %{_sysconfdir}
249 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/apache.conf
250 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/httpd.conf
251 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lighttpd.conf
252 %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/config.php