]> git.pld-linux.org Git - packages/php-pecl-memcache.git/blobdiff - php-pecl-memcache.spec
fix self-test on php 7.4; always do module load test
[packages/php-pecl-memcache.git] / php-pecl-memcache.spec
index a6458a1e26fe737b73291b653e317f4903a1956c..eae669074cade4e482f74d591e555b7672c16ab2 100644 (file)
@@ -1,24 +1,58 @@
-%define                _modname        memcache
-%define                _status         stable
-
-Summary:       %{_modname} - a memcached extension
-Summary(pl):   %{_modname} - rozszerzenie memcached
-Name:          php-pecl-%{_modname}
-Version:       1.4
+#
+# 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:       4.0.4
 Release:       1
 Release:       1
-License:       PHP 2.02
+License:       PHP 3.01
 Group:         Development/Languages/PHP
 Group:         Development/Languages/PHP
-Source0:       http://pecl.php.net/get/%{_modname}-%{version}.tgz
-# Source0-md5: da079652629ba2726d8e66563231bc6b
-URL:           http://pecl.php.net/package/memcached/
-BuildRequires: libtool
-BuildRequires: php-devel
-Requires:      php-common >= 3:4.3.3
-Obsoletes:     php-pear-%{_modname}
+Source0:       https://github.com/websupport-sk/pecl-memcache/archive/%{version}/%{modname}-%{version}.tar.gz
+# Source0-md5: 612c575eccc18d98484b72c0cff6907a
+Source1:       %{modname}.ini
+Source2:       %{modname}-apache.conf
+Source3:       %{modname}-lighttpd.conf
+Source4:       config.php
+Patch0:                %{modname}-webapp.patch
+URL:           https://github.com/websupport-sk/pecl-memcache/
+BuildRequires: %{php_name}-devel >= 3:7.0.0
+BuildRequires: %{php_name}-pcre
+BuildRequires: %{php_name}-session
+BuildRequires: %{php_name}-simplexml
+BuildRequires: %{php_name}-spl
+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: 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)
 
 BuildRoot:     %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
-%define                _sysconfdir     /etc/php
-%define                extensionsdir   %{_libdir}/php
+%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
 
 %description
 Memcached is a caching daemon designed especially for dynamic web
@@ -27,45 +61,187 @@ applications to decrease database load by storing objects in memory.
 This extension allows you to work with memcached through handy OO and
 procedural interfaces.
 
 This extension allows you to work with memcached through handy OO and
 procedural interfaces.
 
-In PECL status of this extension is: %{_status}.
-
-%description -l pl
+%description -l pl.UTF-8
 Memcached to zaprojektowany dla dynamicznych aplikacji internetowych
 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.
+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
+To rozszerzenie umożliwia pracę z memcached za pomocą poręcznego
 zorientowanego obiektowo (oraz przez procedury) interfejsu.
 
 zorientowanego obiektowo (oraz przez procedury) interfejsu.
 
-To rozszerzenie ma w PECL status: %{_status}.
+%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
 
 %prep
-%setup -q -c
+%setup -qc
+mv pecl-%{modname}-*/{.??*,*} .
+%patch0 -p1
+
+cat <<'EOF' > run-tests.sh
+#!/bin/sh
+export NO_INTERACTION=1 REPORT_EXIT_STATUS=1 MALLOC_CHECK_=2
+exec %{__make} test \
+       PHP_EXECUTABLE=%{__php} \
+%if "%php_major_version.%php_minor_version" >= "7.4"
+       PHP_TEST_SHARED_SYSTEM_EXTENSIONS="simplexml session" \
+%else
+       PHP_TEST_SHARED_SYSTEM_EXTENSIONS="pcre spl simplexml session" \
+%endif
+       RUN_TESTS_SETTINGS="-q $*"
+EOF
+chmod +x run-tests.sh
+
+# 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]
+ini_set('session.save_handler') [tests/036.phpt]
+ini_set('session.save_path') [tests/036b.phpt]
+memcache->increment()/decrement() with multiple keys [tests/040.phpt]
+memcache->delete() with multiple keys [tests/041.phpt]
+memcache->set() with multiple values [tests/042.phpt]
+ini_set('memcache.redundancy') [tests/043.phpt]
+ini_set('memcache.session_redundancy') [tests/044.phpt]
+ini_set('memcache.session_redundancy') [tests/044b.phpt]
+hash strategies and functions [tests/046.phpt]
+ini_set('session.save_handler') with unix domain socket [tests/053.phpt]
+memcache multi host save path function [tests/bug73539.phpt]
+session_regenerate_id() should not cause fatal error [tests/githubbug13.phpt]
+EOF
 
 %build
 
 %build
-cd %{_modname}-%{version}
+packagexml2cl package.xml > ChangeLog
 phpize
 phpize
-%configure
+%configure \
+       --with-zlib-dir=/usr
 %{__make}
 
 %{__make}
 
+# simple module load test
+%{__php} -n -q \
+       -d extension_dir=modules \
+%if "%php_major_version.%php_minor_version" >= "7.4"
+       -d extension=%{php_extensiondir}/simplexml.so \
+       -d extension=%{php_extensiondir}/session.so \
+%else
+       -d extension=%{php_extensiondir}/pcre.so \
+       -d extension=%{php_extensiondir}/spl.so \
+       -d extension=%{php_extensiondir}/simplexml.so \
+       -d extension=%{php_extensiondir}/session.so \
+%endif
+       -d extension=%{modname}.so \
+       -m > modules.log
+grep %{modname} modules.log
+
+%if %{with tests}
+# 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 --show-diff
+%endif
+
 %install
 rm -rf $RPM_BUILD_ROOT
 %install
 rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT%{extensionsdir}
-
-install %{_modname}-%{version}/modules/%{_modname}.so $RPM_BUILD_ROOT%{extensionsdir}
+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
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
 %post
-%{_sbindir}/php-module-install install %{_modname} %{_sysconfdir}/php-cgi.ini
+%php_webserver_restart
+
+%postun
+if [ "$1" = 0 ]; then
+       %php_webserver_restart
+fi
 
 
-%preun
-if [ "$1" = "0" ]; then
-       %{_sbindir}/php-module-install remove %{_modname} %{_sysconfdir}/php-cgi.ini
+%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
 
 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)
 %files
 %defattr(644,root,root,755)
-%doc %{_modname}-%{version}/{CREDITS,README}
-%attr(755,root,root) %{extensionsdir}/%{_modname}.so
+%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}
This page took 0.160301 seconds and 4 git commands to generate.