# # Conditional build: %bcond_without tests # build without tests %define php_name php%{?php_suffix} %define modname memcache %define php_min_version 5.0.0 %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: 1 License: PHP 3.01 Group: Development/Languages/PHP #Source0: http://pecl.php.net/get/%{modname}-%{version}.tgz Source0: https://github.com/websupport-sk/pecl-memcache/archive/NON_BLOCKING_IO_php7.tar.gz # Source0-md5: 7751d8191302a726449d7c6506b8783d Source1: %{modname}.ini Source2: %{modname}-apache.conf Source3: %{modname}-lighttpd.conf Source4: config.php Patch0: %{modname}-webapp.patch Patch1: tests.patch 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 # 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 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}