# # Conditional build: %bcond_without tests # build without tests %define php_name php%{?php_suffix} %define modname memcache %define php_min_version 5.0.0 %define commit e702b5f91 %include /usr/lib/rpm/macros.php Summary: %{modname} - a memcached extension Summary(pl.UTF-8): %{modname} - rozszerzenie memcached Name: %{php_name}-pecl-%{modname} Version: 3.0.9 Release: 3 License: PHP 3.01 Group: Development/Languages/PHP #Source0: http://pecl.php.net/get/%{modname}-%{version}.tgz # https://github.com/websupport-sk/pecl-memcache/commits/NON_BLOCKING_IO_php7 Source0: https://github.com/websupport-sk/pecl-memcache/archive/%{commit}/%{modname}-%{version}-%{commit}.tar.gz # Source0-md5: 945e6a30b3cac160abf9b6d103c5676b Source1: %{modname}.ini Source2: %{modname}-apache.conf Source3: %{modname}-lighttpd.conf Source4: config.php Patch0: %{modname}-webapp.patch Patch1: https://github.com/websupport-sk/pecl-memcache/pull/26.patch # Patch1-md5: 7d963433154cd82caea94a7476e73697 Patch2: https://github.com/websupport-sk/pecl-memcache/pull/30.patch # Patch2-md5: 770b57a139428cc601f19e13dbdb2247 URL: http://pecl.php.net/package/memcache/ BuildRequires: %{php_name}-devel >= 3:5.0.0 BuildRequires: %{php_name}-xml BuildRequires: php-packagexml2cl BuildRequires: rpm-php-pearprov >= 4.4.2-11 BuildRequires: rpmbuild(macros) >= 1.650 %if %{with tests} BuildRequires: %{php_name}-cli BuildRequires: %{php_name}-pcre BuildRequires: %{php_name}-session BuildRequires: %{php_name}-spl BuildRequires: memcached %endif %{?requires_php_extension} Requires: %{php_name}-session Requires: %{php_name}-zlib Suggests: memcached Provides: php(memcache) = %{version} Obsoletes: php-pecl-memcache < 3.0.8-5 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %define _webapps /etc/webapps %define _webapp %{modname} %define _sysconfdir %{_webapps}/%{_webapp} %define _appdir %{_datadir}/%{_webapp} # bad depsolver %define _noautopear pear # put it together for rpmbuild %define _noautoreq %{?_noautophp} %{?_noautopear} %description Memcached is a caching daemon designed especially for dynamic web applications to decrease database load by storing objects in memory. This extension allows you to work with memcached through handy OO and procedural interfaces. %description -l pl.UTF-8 Memcached to zaprojektowany dla dynamicznych aplikacji internetowych daemon cachujący mający za zadanie zmniejszenie obciążenia bazy danych przez przechowywanie w pamięci obiektów. To rozszerzenie umożliwia pracę z memcached za pomocą poręcznego zorientowanego obiektowo (oraz przez procedury) interfejsu. %package web Summary: Web interface for memcache Group: Libraries # does not require extension itself Requires: php(core) >= %{php_min_version} Requires: php(date) Requires: php(gd) Requires: php(pcre) Requires: webapps Requires: webserver(php) >= 5.0 %if "%{_rpmversion}" >= "5" BuildArch: noarch %endif %description web Via this web interface script you can manage and view statistics of memcache. %prep %setup -qc mv pecl-%{modname}-*/{.??*,*} . %patch0 -p1 %patch1 -p1 %patch2 -p1 # locks up on carme, likely due udp very long timeout rm tests/039.phpt rm tests/041.phpt rm tests/042.phpt # skip failed tests xfail() { set +x while read s; do t=$(echo "$s" | sed -rne 's/.+\[(.+)\]/\1/p') test -f "$t" echo >&2 "XFAIL: $s" cat >> $t <<-EOF --XFAIL-- Skip EOF done } xfail <<'EOF' memcache->addServer() [tests/019.phpt] memcache->set()/memcache->get() with multiple keys and load balancing [tests/020.phpt] memcache->getExtendedStats() [tests/022.phpt] memcache_get_extended_stats() [tests/022a.phpt] memcache->delete() with load balancing [tests/023.phpt] memcache->increment() with load balancing [tests/025.phpt] memcache->delete() with load balancing [tests/026.phpt] memcache->addServer() adding server in failed mode [tests/031.phpt] memcache->getServerStatus(), memcache->setServerParams() [tests/032.phpt] memcache::connect() with unix domain socket [tests/035.phpt] memcache->get() over UDP [tests/038.phpt] memcache->increment()/decrement() with multiple keys [tests/040.phpt] ini_set('memcache.redundancy') [tests/043.phpt] ini_set('memcache.session_redundancy') [tests/044.phpt] hash strategies and functions [tests/046.phpt] ini_set('session.save_handler') with unix domain socket [tests/053.phpt] FLAKY: memcache->addServer() with microsecond timeout [tests/056.phpt] ini_set('session.save_handler') [tests/036.phpt] ini_set("memcache.allow_failover") [tests/029.phpt] %if "%{php_major_version}.%{php_minor_version}" >= "7.1" strange keys [tests/005.phpt] %endif memcache multi host save path function [tests/bug73539.phpt] EOF %build packagexml2cl package.xml > ChangeLog phpize %configure \ --with-zlib-dir=/usr %{__make} %if %{with tests} # simple module load test %{__php} -n -q \ -d extension_dir=modules \ -d extension=%{php_extensiondir}/pcre.so \ -d extension=%{php_extensiondir}/spl.so \ -d extension=%{php_extensiondir}/session.so \ -d extension=%{modname}.so \ -m > modules.log grep %{modname} modules.log cat <<'EOF' > run-tests.sh #!/bin/sh export NO_INTERACTION=1 REPORT_EXIT_STATUS=1 MALLOC_CHECK_=2 exec %{__make} test \ PHP_EXECUTABLE=%{__php} \ PHP_TEST_SHARED_SYSTEM_EXTENSIONS="pcre spl session" \ RUN_TESTS_SETTINGS="-q $*" EOF chmod +x run-tests.sh # Launch the Memcached service and stop it on exit %{_sbindir}/memcached -p 11211 -U 11211 -d -P $PWD/memcached.pid trap 'kill $(cat memcached.pid)' EXIT INT ./run-tests.sh %endif %install rm -rf $RPM_BUILD_ROOT install -d $RPM_BUILD_ROOT{%{php_sysconfdir}/conf.d,%{php_extensiondir},%{_examplesdir}/%{name}-%{version}} install -p modules/%{modname}.so $RPM_BUILD_ROOT%{php_extensiondir} # we use "session_" prefix in inifile to get loader *after* session extension cp -p %{SOURCE1} $RPM_BUILD_ROOT%{php_sysconfdir}/conf.d/session_%{modname}.ini cp -p example.php $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version} install -d $RPM_BUILD_ROOT{%{_sysconfdir},%{_appdir}} cp -p memcache.php $RPM_BUILD_ROOT%{_appdir} cp -p %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/config.php cp -p %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/apache.conf cp -p $RPM_BUILD_ROOT%{_sysconfdir}/{apache,httpd}.conf cp -p %{SOURCE3} $RPM_BUILD_ROOT%{_sysconfdir}/lighttpd.conf %clean rm -rf $RPM_BUILD_ROOT %post %php_webserver_restart %postun if [ "$1" = 0 ]; then %php_webserver_restart fi %triggerpostun -- %{name} < 3.0.4-2 if [ -f %{php_sysconfdir}/conf.d/%{modname}.ini.rpmsave ]; then echo >&2 "Restoring old config: %{modname}.ini.rpmsave -> session_%{modname}.ini in %{php_sysconfdir}/conf.d" cp -f %{php_sysconfdir}/conf.d/session_%{modname}.ini{,.rpmnew} mv -f %{php_sysconfdir}/conf.d/{%{modname}.ini.rpmsave,session_%{modname}.ini} %php_webserver_restart fi %triggerin web -- apache1 < 1.3.37-3, apache1-base %webapp_register apache %{_webapp} %triggerun web -- apache1 < 1.3.37-3, apache1-base %webapp_unregister apache %{_webapp} %triggerin web -- apache < 2.2.0, apache-base %webapp_register httpd %{_webapp} %triggerun web -- apache < 2.2.0, apache-base %webapp_unregister httpd %{_webapp} %triggerin web -- lighttpd %webapp_register lighttpd %{_webapp} %triggerun web -- lighttpd %webapp_unregister lighttpd %{_webapp} %files %defattr(644,root,root,755) %doc CREDITS README ChangeLog %config(noreplace) %verify(not md5 mtime size) %{php_sysconfdir}/conf.d/session_%{modname}.ini %attr(755,root,root) %{php_extensiondir}/%{modname}.so %{_examplesdir}/%{name}-%{version} %files web %defattr(644,root,root,755) %dir %attr(750,root,http) %{_sysconfdir} %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/apache.conf %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/httpd.conf %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lighttpd.conf %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/config.php %{_appdir}