summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemi Collet <fedora@famillecollet.com>2014-03-22 10:48:08 +0100
committerRemi Collet <fedora@famillecollet.com>2014-03-22 10:48:08 +0100
commit092a55bfc570a7b348893791c58e246d602854ed (patch)
tree672c5ed2edfb258abc53c73c4cb8534f4ae03c4c
parentca3138335908e4f75a5827ba0194c03a8f83799e (diff)
php-pecl-mysqlnd-qc: SCL + 5.6 patch + move doc + test + panel subpackage
-rw-r--r--httpd.conf17
-rw-r--r--mysqlnd_qc-svn.patch75
-rw-r--r--php-pecl-mysqlnd-qc.spec232
3 files changed, 251 insertions, 73 deletions
diff --git a/httpd.conf b/httpd.conf
new file mode 100644
index 0000000..07f1374
--- /dev/null
+++ b/httpd.conf
@@ -0,0 +1,17 @@
+# Mysqlnd Query Cache Control Panel
+Alias /mysqlnd-qc @DATADIR@/mysqlnd-qc
+
+<Directory @DATADIR@/mysqlnd-qc>
+ <IfModule mod_authz_core.c>
+ # Apache 2.4
+ Require local
+ </IfModule>
+ <IfModule !mod_authz_core.c>
+ # Apache 2.2
+ Order Deny,Allow
+ Deny from All
+ Allow from 127.0.0.1
+ Allow from ::1
+ </IfModule>
+</Directory>
+
diff --git a/mysqlnd_qc-svn.patch b/mysqlnd_qc-svn.patch
new file mode 100644
index 0000000..464b1fb
--- /dev/null
+++ b/mysqlnd_qc-svn.patch
@@ -0,0 +1,75 @@
+--- pecl/mysqlnd_qc/trunk/mysqlnd_qc.c 2014/03/22 06:36:04 333055
++++ pecl/mysqlnd_qc/trunk/mysqlnd_qc.c 2014/03/22 08:20:55 333056
+@@ -613,7 +613,11 @@
+
+ /* {{{ MYSQLND_METHOD(mysqlnd_qc, store_result) */
+ static MYSQLND_RES *
++#if PHP_VERSION_ID < 50600
+ MYSQLND_METHOD(mysqlnd_qc, store_result)(MYSQLND_CONN_DATA * const conn TSRMLS_DC)
++#else
++MYSQLND_METHOD(mysqlnd_qc, store_result)(MYSQLND_CONN_DATA * const conn, const unsigned int flags TSRMLS_DC)
++#endif
+ {
+ MYSQLND_RES * result;
+ uint64_t store_time;
+@@ -621,7 +625,11 @@
+ DBG_ENTER("mysqlnd_qc::store_result");
+
+ STATS_TIME_SET(store_time);
++#if PHP_VERSION_ID < 50600
+ result = QC_CALL_ORIGINAL_CONN_DATA_METHOD(store_result)(conn TSRMLS_CC);
++#else
++ result = QC_CALL_ORIGINAL_CONN_DATA_METHOD(store_result)(conn, flags TSRMLS_CC);
++#endif
+ STATS_TIME_DIFF(store_time);
+ MYSQLND_QC_INC_STATISTIC_W_VALUE(QC_STAT_QUERY_AGGR_STORE_TIME_TOTAL, (uint64_t)store_time);
+
+@@ -777,13 +785,21 @@
+
+ /* {{{ MYSQLND_METHOD(mysqlnd_qc, use_result) */
+ static MYSQLND_RES *
++#if PHP_VERSION_ID < 50600
+ MYSQLND_METHOD(mysqlnd_qc, use_result)(MYSQLND_CONN_DATA * const conn TSRMLS_DC)
++#else
++MYSQLND_METHOD(mysqlnd_qc, use_result)(MYSQLND_CONN_DATA * const conn, const unsigned int flags TSRMLS_DC)
++#endif
+ {
+ MYSQLND_RES * ret;
+ DBG_ENTER("mysqlnd_qc::use_result");
+ MYSQLND_QC_INC_STATISTIC_W_VALUE2(QC_STAT_MISS, 1, QC_STAT_QUERY_UNCACHED_USE_RESULT, 1);
+
++#if PHP_VERSION_ID < 50600
+ ret = QC_CALL_ORIGINAL_CONN_DATA_METHOD(use_result)(conn TSRMLS_CC);
++#else
++ ret = QC_CALL_ORIGINAL_CONN_DATA_METHOD(use_result)(conn, flags TSRMLS_CC);
++#endif
+ if (ret) {
+ QC_DECLARE_AND_LOAD_CONN_DATA(conn_data_pp, conn);
+
+--- pecl/mysqlnd_qc/trunk/web/mysqlnd_qc_monitor_core_functions_inc.php 2014/03/22 08:20:55 333056
++++ pecl/mysqlnd_qc/trunk/web/mysqlnd_qc_monitor_core_functions_inc.php 2014/03/22 09:06:50 333057
+@@ -84,7 +84,7 @@
+ <td align="right"><?php print phpversion(); ?></td>
+ </tr>
+ <?php
+- $handler = mysqlnd_qc_get_handler();
++ $handler = mysqlnd_qc_get_available_handlers();
+ foreach ($handler as $name => $details) {
+ ?>
+ <tr bgcolor="<?php print ($color_idx++ %2 == 0) ? QCM_TD_LIST_COLOR0 : QCM_TD_LIST_COLOR1; ?>">
+@@ -126,7 +126,7 @@
+ *
+ */
+ function qc_print_box_ini_settings_summary() {
+- $handler = mysqlnd_qc_get_handler();
++ $handler = mysqlnd_qc_get_available_handlers();
+ $color_idx = 0;
+
+ ?>
+@@ -1148,4 +1148,4 @@
+ <?php
+ }
+ } // end func qc_print_main_auto_append_details
+-?>
+\ No newline at end of file
++?>
diff --git a/php-pecl-mysqlnd-qc.spec b/php-pecl-mysqlnd-qc.spec
index 6a71787..4d90d30 100644
--- a/php-pecl-mysqlnd-qc.spec
+++ b/php-pecl-mysqlnd-qc.spec
@@ -1,18 +1,44 @@
-%{!?__pecl: %{expand: %%global __pecl %{_bindir}/pecl}}
+# spec file for php-pecl-mysqlnd-qc
+#
+# Copyright (c) 2011-2014 Remi Collet
+# License: CC-BY-SA
+# http://creativecommons.org/licenses/by-sa/3.0/
+#
+# Please, preserve the changelog entries
+#
+%{?scl: %scl_package php-pecl-mysqlnd-ms}
+%{!?scl: %global _root_prefix %{_prefix}}
+%{!?scl: %global _root_sysconfdir %{_sysconfdir}}
+%{!?php_inidir: %global php_inidir %{_sysconfdir}/php.d}
+%{!?php_incldir: %global php_incldir %{_includedir}/php}
+%{!?__pecl: %global __pecl %{_bindir}/pecl}
+%{!?__php: %global __php %{_bindir}/php}
%global pecl_name mysqlnd_qc
%global prever alpha
+%global with_zts 0%{?__ztsphp:1}
-%if 0%{?fedora} >= 9 || 0%{?rhel} >= 6
-%global withsqlite 1
+%if 0%{?fedora} < 9 && 0%{?rhel} < 6
+%global with_sqlite 0
%else
-%global withsqlite 0
+%global with_sqlite 1
%endif
+%if "%{?vendor}" == "Remi Collet"
+%global with_memcache 1
+%else
+%if 0%{?fedora} < 14 && 0%{?rhel} < 7
+%global with_memcache 0
+%else
+%global with_memcache 1
+%endif
+%endif
+
+
Summary: A query cache plugin for mysqlnd
-Name: php-pecl-mysqlnd-qc
+Name: %{?scl_prefix}php-pecl-mysqlnd-qc
Version: 1.2.0
-Release: 1%{?dist}.2
+Release: 4%{?dist}%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}
License: PHP
Group: Development/Languages
URL: http://pecl.php.net/package/mysqlnd_qc
@@ -20,34 +46,48 @@ URL: http://pecl.php.net/package/mysqlnd_qc
Source0: http://pecl.php.net/get/%{pecl_name}-%{version}.tgz
# From http://www.php.net/manual/en/mysqlnd-qc.configuration.php
Source1: mysqlnd_qc.ini
+# Apache configuration for the web panel
+Source2: httpd.conf
+
+# http://svn.php.net/viewvc?view=revision&revision=333056
+# Fix for PHP 5.6
+Patch0: %{pecl_name}-svn.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-BuildRequires: php-devel >= 5.3.4
-BuildRequires: php-mysqlnd
-BuildRequires: php-pear
+BuildRequires: %{?scl_prefix}php-devel >= 5.3.4
+BuildRequires: %{?scl_prefix}php-mysqlnd
+BuildRequires: %{?scl_prefix}php-pear
+%if %{with_memcache}
BuildRequires: libmemcached-devel >= 0.38
-%if %{withsqlite}
+%endif
+%if %{with_sqlite}
BuildRequires: sqlite-devel >= 3.5.9
%endif
Requires(post): %{__pecl}
Requires(postun): %{__pecl}
-Requires: php-mysqlnd%{?_isa}
-Requires: php-sqlite3%{?_isa}
-Requires: php(zend-abi) = %{php_zend_api}
-Requires: php(api) = %{php_core_api}
+Requires: %{?scl_prefix}php-mysqlnd%{?_isa}
+Requires: %{?scl_prefix}php-sqlite3%{?_isa}
+Requires: %{?scl_prefix}php(zend-abi) = %{php_zend_api}
+Requires: %{?scl_prefix}php(api) = %{php_core_api}
-Provides: php-%{pecl_name} = %{version}
-Provides: php-%{pecl_name}%{?_isa} = %{version}
-Provides: php-pecl(%{pecl_name}) = %{version}
-Provides: php-pecl(%{pecl_name})%{?_isa} = %{version}
+Provides: %{?scl_prefix}php-%{pecl_name} = %{version}
+Provides: %{?scl_prefix}php-%{pecl_name}%{?_isa} = %{version}
+Provides: %{?scl_prefix}php-pecl(%{pecl_name}) = %{version}
+Provides: %{?scl_prefix}php-pecl(%{pecl_name})%{?_isa} = %{version}
+%if "%{?vendor}" == "Remi Collet"
# Other third party repo stuff
Obsoletes: php53-pecl-mysqlnd-qc
Obsoletes: php53u-pecl-mysqlnd-qc
-%if "%{php_version}" > "5.4"
Obsoletes: php54-pecl-mysqlnd-qc
+%if "%{php_version}" > "5.5"
+Obsoletes: php55u-pecl-mysqlnd-qc
+%endif
+%if "%{php_version}" > "5.6"
+Obsoletes: php56u-pecl-mysqlnd-qc
+%endif
%endif
%if 0%{?fedora} < 20 && 0%{?rhel} < 7
@@ -69,84 +109,120 @@ Documentation : http://www.php.net/mysqlnd_qc
%package devel
Summary: Mysqlnd_qc developer files (header)
Group: Development/Libraries
-Requires: php-pecl-mysqlnd-qc%{?_isa} = %{version}-%{release}
-Requires: php-devel
+Requires: %{name}%{?_isa} = %{version}-%{release}
+Requires: %{?scl_prefix}php-devel
%description devel
These are the files needed to compile programs using mysqlnd_qc extension.
+%package -n %{?scl_prefix}mysqlnd-qc-panel
+Summary: Mysqlnd Query Cache Monitor
+Group: Applications/Internet
+%if 0%{?fedora} >= 12 || 0%{?rhel} >= 6
+BuildArch: noarch
+%endif
+Requires: %{name} = %{version}-%{release}
+Requires: %{?scl_prefix}mod_php
+Requires: httpd
+
+%description -n %{?scl_prefix}mysqlnd-qc-panel
+This package provides the Mysqlnd Query Cache Monitor, with Apache
+configuration, available on http://localhost/mysqlnd-qc/
+
+
%prep
%setup -c -q
+mv %{pecl_name}-%{version} NTS
+cd NTS
+%patch0 -p3 -b .svn
+
# Check version (often broken)
-extver=$(sed -n '/#define MYSQLND_QC_VERSION_STR/{s/.* "//;s/".*$//;p}' %{pecl_name}-*/php_mysqlnd_qc.h)
+extver=$(sed -n '/#define MYSQLND_QC_VERSION_STR/{s/.* "//;s/".*$//;p}' php_mysqlnd_qc.h)
if test "x${extver}" != "x%{version}%{?prever:-}%{?prever}"; then
: Error: Upstream %{pecl_name} version is now ${extver}, expecting %{version}%{?prever}.
: Update the pdover macro and rebuild.
exit 1
fi
+cd ..
cp %{SOURCE1} %{pecl_name}.ini
+sed -e 's:@DATADIR@:%{_datadir}:' \
+ %{SOURCE2} >httpd.conf
-mv %{pecl_name}-%{version} %{pecl_name}-nts
-
-cp -r %{pecl_name}-nts %{pecl_name}-zts
+%if %{with_zts}
+# Build ZTS extension if ZTS devel available
+cp -r NTS ZTS
+%endif
%build
-cd %{pecl_name}-nts
-
-%{_bindir}/phpize
-
# required by libmemcached
LIBS="-lpthread"
export LIBS
+peclconf() {
# don't use --enable-mysqlnd-qc-apc because:
# APC is onlysupported if both APC and MySQL Query Cache are compiled statically
%configure \
--with-libdir=%{_lib} \
--enable-mysqlnd-qc \
+%if %{with_memcache}
--enable-mysqlnd-qc-memcache \
- --with-libmemcached-dir=%{_prefix} \
-%if %{withsqlite}
+ --with-libmemcached-dir=%{_root_prefix} \
+%endif
+%if %{with_sqlite}
--enable-mysqlnd-qc-sqlite \
- --with-sqlite-dir=%{_prefix} \
+ --with-sqlite-dir=%{_root_prefix} \
%endif
- --with-php-config=%{_bindir}/php-config
+ --with-php-config=$1
+}
+
+cd NTS
+%{_bindir}/phpize
+peclconf %{_bindir}/php-config
make %{?_smp_mflags}
-cd ../%{pecl_name}-zts
+%if %{with_zts}
+cd ../ZTS
%{_bindir}/zts-phpize
-%configure \
- --with-libdir=%{_lib} \
- --enable-mysqlnd-qc \
- --enable-mysqlnd-qc-memcache \
- --with-libmemcached-dir=%{_prefix} \
-%if %{withsqlite}
- --enable-mysqlnd-qc-sqlite \
- --with-sqlite-dir=%{_prefix} \
-%endif
- --with-php-config=%{_bindir}/zts-php-config
+peclconf %{_bindir}/zts-php-config
make %{?_smp_mflags}
+%endif
%install
rm -rf %{buildroot}
-# for short-circuit
-rm -f %{pecl_name}-*/modules/{sqlite3,mysqlnd}.so
-make install -C %{pecl_name}-nts INSTALL_ROOT=%{buildroot}
-make install -C %{pecl_name}-zts INSTALL_ROOT=%{buildroot}
+make install -C NTS INSTALL_ROOT=%{buildroot}
# Drop in the bit of configuration
install -D -m 644 %{pecl_name}.ini %{buildroot}%{php_inidir}/%{pecl_name}.ini
-install -D -m 644 %{pecl_name}.ini %{buildroot}%{php_ztsinidir}/%{pecl_name}.ini
# Install XML package description
install -D -m 644 package.xml %{buildroot}%{pecl_xmldir}/%{name}.xml
+%if %{with_zts}
+make install -C ZTS INSTALL_ROOT=%{buildroot}
+install -D -m 644 %{pecl_name}.ini %{buildroot}%{php_ztsinidir}/%{pecl_name}.ini
+%endif
+
+# Install the Apache configuration
+install -D -m 644 httpd.conf %{buildroot}%{_root_sysconfdir}/httpd/conf.d/mysqlnd-qc-panel.conf
+
+# Install the web interface
+mkdir -p %{buildroot}%{_datadir}
+cp -pr NTS/web %{buildroot}%{_datadir}/mysqlnd-qc
+
+# Test & Documentation
+for i in $(grep 'role="test"' package.xml | sed -e 's/^.*name="//;s/".*$//')
+do install -Dpm 644 NTS/$i %{buildroot}%{pecl_testdir}/%{pecl_name}/$i
+done
+for i in $(grep 'role="doc"' package.xml | sed -e 's/^.*name="//;s/".*$//')
+do install -Dpm 644 NTS/$i %{buildroot}%{pecl_docdir}/%{pecl_name}/$i
+done
+
%clean
rm -rf %{buildroot}
@@ -163,57 +239,67 @@ fi
%check
-cd %{pecl_name}-nts
-ln -s %{php_extdir}/mysqlnd.so modules/
-%if %{withsqlite}
-ln -s %{php_extdir}/sqlite3.so modules/
-%endif
-
+cd NTS
# only check if build extension can be loaded
-php -n -q \
- -d extension_dir=modules \
+%{__php} -n -q \
-d extension=mysqlnd.so \
-%if %{withsqlite}
+%if %{with_sqlite}
-d extension=sqlite3.so \
%endif
- -d extension=%{pecl_name}.so \
+ -d extension=%{buildroot}%{php_extdir}/%{pecl_name}.so \
--modules | grep %{pecl_name}
-cd ../%{pecl_name}-zts
-ln -s %{php_ztsextdir}/mysqlnd.so modules/
-%if %{withsqlite}
-ln -s %{php_ztsextdir}/sqlite3.so modules/
-%endif
-
+%if %{with_zts}
+cd ../ZTS
# only check if build extension can be loaded
-zts-php -n -q \
- -d extension_dir=modules \
+%{__ztsphp} -n -q \
-d extension=mysqlnd.so \
-%if %{withsqlite}
+%if %{with_sqlite}
-d extension=sqlite3.so \
%endif
- -d extension=%{pecl_name}.so \
+ -d extension=%{buildroot}%{php_ztsextdir}/%{pecl_name}.so \
--modules | grep %{pecl_name}
+%endif
%files
%defattr(-, root, root, -)
-%doc %{pecl_name}-nts/{CHANGES,CREDITS,LICENSE,README}
-%doc %{pecl_name}-nts/web
+%doc %{pecl_docdir}/%{pecl_name}
+%{pecl_xmldir}/%{name}.xml
+
%config(noreplace) %{php_inidir}/%{pecl_name}.ini
-%config(noreplace) %{php_ztsinidir}/%{pecl_name}.ini
%{php_extdir}/%{pecl_name}.so
+
+%if %{with_zts}
+%config(noreplace) %{php_ztsinidir}/%{pecl_name}.ini
%{php_ztsextdir}/%{pecl_name}.so
-%{pecl_xmldir}/%{name}.xml
+%endif
%files devel
%defattr(-,root,root,-)
+%doc %{pecl_testdir}/%{pecl_name}
%{_includedir}/php/ext/%{pecl_name}
+
+%if %{with_zts}
%{php_ztsincldir}/ext/%{pecl_name}
+%endif
+
+
+%files -n %{?scl_prefix}mysqlnd-qc-panel
+%defattr(-,root,root,-)
+%{_root_sysconfdir}/httpd/conf.d/mysqlnd-qc-panel.conf
+%{_datadir}/mysqlnd-qc
%changelog
+* Sat Mar 22 2014 Remi Collet <remi@fedoraproject.org> - 1.2.0-4
+- add PHP 5.6 patch
+- allow SCL build
+- move doc in pecl_docdir
+- move tests in pecl_testdir (devel)
+- create mysqlnd-qc-panel sub package
+
* Tue Mar 12 2013 Remi Collet <remi@fedoraproject.org> - 1.2.0-1
- update to 1.2.0-alpha