From 092a55bfc570a7b348893791c58e246d602854ed Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Sat, 22 Mar 2014 10:48:08 +0100 Subject: php-pecl-mysqlnd-qc: SCL + 5.6 patch + move doc + test + panel subpackage --- httpd.conf | 17 ++++ mysqlnd_qc-svn.patch | 75 +++++++++++++++ php-pecl-mysqlnd-qc.spec | 232 ++++++++++++++++++++++++++++++++--------------- 3 files changed, 251 insertions(+), 73 deletions(-) create mode 100644 httpd.conf create mode 100644 mysqlnd_qc-svn.patch 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 + + + + # Apache 2.4 + Require local + + + # Apache 2.2 + Order Deny,Allow + Deny from All + Allow from 127.0.0.1 + Allow from ::1 + + + 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 @@ + + + $details) { + ?> + +@@ -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 @@ + +\ 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 - 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 - 1.2.0-1 - update to 1.2.0-alpha -- cgit