[php] - update to 5.5.0beta3 - allow wildcard in opcache.blacklist_filename and provide default /etc/php.d

Remi Collet remi at fedoraproject.org
Thu Apr 11 07:32:39 UTC 2013


commit 26f57a8682031974d00ec964ab7b2c24817d6d76
Author: Remi Collet <remi at fedoraproject.org>
Date:   Thu Apr 11 09:32:27 2013 +0200

    - update to 5.5.0beta3
    - allow wildcard in opcache.blacklist_filename and provide default /etc/php.d/opcache-default.blacklist
    - clean spec, use only spaces (no tab)

 .gitignore                |    1 +
 opcache-default.blacklist |   11 +++
 opcache.ini               |   11 +--
 php-5.5.0-build.patch     |   14 ----
 php-5.5.0-opcache.patch   |  149 +++++++++++++++++++++++++++++++++++++++++++++
 php.spec                  |   88 +++++++++++++++------------
 sources                   |    2 +-
 7 files changed, 216 insertions(+), 60 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 8847268..f4f6f63 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,3 +18,4 @@ php-5.3*.bz2
 /php-5.4.13.tar.bz2
 /php-5.5.0beta1.tar.xz
 /php-5.5.0beta2.tar.xz
+/php-5.5.0beta3.tar.xz
diff --git a/opcache-default.blacklist b/opcache-default.blacklist
new file mode 100644
index 0000000..0cc2e18
--- /dev/null
+++ b/opcache-default.blacklist
@@ -0,0 +1,11 @@
+; The blacklist file is a text file that holds the names of files
+; that should not be accelerated. The file format is to add each filename
+; to a new line. The filename may be a full path or just a file prefix
+; (i.e., /var/www/x  blacklists all the files and directories in /var/www
+; that start with 'x'). Line starting with a ; are ignored (comments).
+; Files are usually triggered by one of the following three reasons:
+; 1) Directories that contain auto generated code, like Smarty or ZFW cache.
+; 2) Code that does not work well when accelerated, due to some delayed
+;    compile time evaluation.
+; 3) Code that triggers an OPcache bug.
+
diff --git a/opcache.ini b/opcache.ini
index 4498e68..ef6e0e0 100644
--- a/opcache.ini
+++ b/opcache.ini
@@ -60,13 +60,10 @@ opcache.fast_shutdown=1
 ;opcache.inherited_hack=1
 ;opcache.dups_fix=0
 
-; The location of the OPcache blacklist file.
-; The OPcache blacklist file is a text file that holds the names of files
-; that should not be accelerated. The file format is to add each filename
-; to a new line. The filename may be a full path or just a file prefix
-; (i.e., /var/www/x  blacklists all the files and directories in /var/www
-; that start with 'x').
-;opcache.blacklist_filename=
+; The location of the OPcache blacklist file (wildcards allowed).
+; Each OPcache blacklist file is a text file that holds the names of files
+; that should not be accelerated.
+opcache.blacklist_filename=/etc/php.d/opcache*.blacklist
 
 ; Allows exclusion of large files from being cached. By default all files
 ; are cached.
diff --git a/php-5.5.0-opcache.patch b/php-5.5.0-opcache.patch
new file mode 100644
index 0000000..8ef74e9
--- /dev/null
+++ b/php-5.5.0-opcache.patch
@@ -0,0 +1,149 @@
+From af967de2afc584c602c0b6d4d6731e411323d94e Mon Sep 17 00:00:00 2001
+From: Dmitry Stogov <dmitry at zend.com>
+Date: Wed, 10 Apr 2013 21:41:30 +0400
+Subject: [PATCH] Allow wilcards in opcache.blacklist_filename
+
+---
+ ext/opcache/README                       |  8 +++----
+ ext/opcache/tests/blacklist.phpt         | 20 ++++++++++++++++++
+ ext/opcache/tests/opcache-1.blacklist    |  5 +++++
+ ext/opcache/tests/opcache-2.blacklist    |  1 +
+ ext/opcache/zend_accelerator_blacklist.c | 36 ++++++++++++++++++++++++++++++++
+ 5 files changed, 66 insertions(+), 4 deletions(-)
+ create mode 100644 ext/opcache/tests/blacklist.phpt
+ create mode 100644 ext/opcache/tests/opcache-1.blacklist
+ create mode 100644 ext/opcache/tests/opcache-2.blacklist
+
+diff --git a/ext/opcache/README b/ext/opcache/README
+index 03386a0..3110012 100644
+--- a/ext/opcache/README
++++ b/ext/opcache/README
+@@ -151,13 +151,13 @@ opcache.dups_fix (default "0")
+ 	Enable this hack as a workaround for "Cannot redeclare class" errors.
+ 
+ opcache.blacklist_filename
+-	The location of the OPcache blacklist file.
+-	The OPcache blacklist file is a text file that holds the names of files
++	The location of the OPcache blacklist file (wildcards allowed).
++	Each OPcache blacklist file is a text file that holds the names of files
+ 	that should not be accelerated. The file format is to add each filename
+ 	to a new line. The filename may be a full path or just a file prefix
+ 	(i.e., /var/www/x  blacklists all the files and directories in /var/www
+-	that start with 'x'). Files are usually triggered by one of the following
+-	three reasons:
++	that start with 'x'). Line starting with a ; are ignored (comments).
++	Files are usually triggered by one of the following three reasons:
+ 	1) Directories that contain auto generated code, like Smarty or ZFW cache.
+ 	2) Code that does not work well when accelerated, due to some delayed
+ 	   compile time evaluation.
+diff --git a/ext/opcache/tests/blacklist.phpt b/ext/opcache/tests/blacklist.phpt
+new file mode 100644
+index 0000000..f4a3472
+--- /dev/null
++++ b/ext/opcache/tests/blacklist.phpt
+@@ -0,0 +1,20 @@
++--TEST--
++Blacklist (with glob, quote and comments)
++--INI--
++opcache.enable=1
++opcache.enable_cli=1
++opcache.blacklist_filename={PWD}/opcache-*.blacklist
++--SKIPIF--
++<?php require_once('skipif.inc'); ?>
++--FILE--
++<?php
++$conf = opcache_get_configuration();
++print_r($conf['blacklist']);
++?>
++--EXPECT--
++Array
++(
++    [0] => /path/to/foo
++    [1] => /path/to/foo2
++    [2] => /path/to/bar
++)
+\ No newline at end of file
+diff --git a/ext/opcache/tests/opcache-1.blacklist b/ext/opcache/tests/opcache-1.blacklist
+new file mode 100644
+index 0000000..5f498d6
+--- /dev/null
++++ b/ext/opcache/tests/opcache-1.blacklist
+@@ -0,0 +1,5 @@
++; comments are allowed in blacklist file
++; and empty line are ignored
++
++/path/to/foo
++"/path/to/foo2"
+\ No newline at end of file
+diff --git a/ext/opcache/tests/opcache-2.blacklist b/ext/opcache/tests/opcache-2.blacklist
+new file mode 100644
+index 0000000..4f6580a
+--- /dev/null
++++ b/ext/opcache/tests/opcache-2.blacklist
+@@ -0,0 +1 @@
++/path/to/bar
+diff --git a/ext/opcache/zend_accelerator_blacklist.c b/ext/opcache/zend_accelerator_blacklist.c
+index 764c950..b09d0e5 100644
+--- a/ext/opcache/zend_accelerator_blacklist.c
++++ b/ext/opcache/zend_accelerator_blacklist.c
+@@ -36,6 +36,14 @@
+ # define REGEX_MODE (REG_EXTENDED|REG_NOSUB)
+ #endif
+ 
++#ifdef HAVE_GLOB
++#ifdef PHP_WIN32
++#include "win32/glob.h"
++#else
++#include <glob.h>
++#endif
++#endif
++
+ #define ZEND_BLACKLIST_BLOCK_SIZE	32
+ 
+ struct _zend_regexp_list {
+@@ -168,7 +176,11 @@ static inline void zend_accel_blacklist_allocate(zend_blacklist *blacklist)
+ 	}
+ }
+ 
++#ifdef HAVE_GLOB
++static void zend_accel_blacklist_loadone(zend_blacklist *blacklist, char *filename)
++#else
+ void zend_accel_blacklist_load(zend_blacklist *blacklist, char *filename)
++#endif
+ {
+ 	char buf[MAXPATHLEN + 1], real_path[MAXPATHLEN + 1];
+ 	FILE *fp;
+@@ -238,6 +250,30 @@ void zend_accel_blacklist_load(zend_blacklist *blacklist, char *filename)
+ 	zend_accel_blacklist_update_regexp(blacklist);
+ }
+ 
++#ifdef HAVE_GLOB
++void zend_accel_blacklist_load(zend_blacklist *blacklist, char *filename)
++{
++	glob_t globbuf;
++	int    ret, i;
++
++	memset(&globbuf, 0, sizeof(glob_t));
++
++	ret = glob(filename, 0, NULL, &globbuf);
++#ifdef GLOB_NOMATCH
++	if (ret == GLOB_NOMATCH || !globbuf.gl_pathc) {
++#else
++	if (!globbuf.gl_pathc) {
++#endif
++		zend_accel_error(ACCEL_LOG_WARNING, "No blacklist file found matching: %s\n", filename);
++	} else {
++		for(i=0 ; i<globbuf.gl_pathc; i++) {
++			zend_accel_blacklist_loadone(blacklist, globbuf.gl_pathv[i]);
++		}
++		globfree(&globbuf);
++	}
++}
++#endif
++
+ zend_bool zend_accel_blacklist_is_blacklisted(zend_blacklist *blacklist, char *verify_path)
+ {
+ 	int ret = 0;
+-- 
+1.7.11.5
+
diff --git a/php.spec b/php.spec
index 8afb1ca..b92f20b 100644
--- a/php.spec
+++ b/php.spec
@@ -61,12 +61,12 @@
 %global db_devel  libdb-devel
 %endif
 
-%global rcver beta2
+%global rcver beta3
 
 Summary: PHP scripting language for creating dynamic web sites
 Name: php
 Version: 5.5.0
-Release: 0.3.%{rcver}%{?dist}
+Release: 0.4.%{rcver}%{?dist}
 # All files licensed under PHP version 3.01, except
 # Zend is licensed under Zend
 # TSRM is licensed under BSD
@@ -87,13 +87,13 @@ Source9: php.modconf
 Source10: php.ztsmodconf
 # Configuration files for some extensions
 Source50: opcache.ini
+Source51: opcache-default.blacklist
 
 # Build fixes
 Patch5: php-5.2.0-includedir.patch
 Patch6: php-5.2.4-embed.patch
 Patch7: php-5.3.0-recode.patch
 Patch8: php-5.4.7-libdb.patch
-Patch9: php-5.5.0-build.patch
 
 # Fixes for extension modules
 # https://bugs.php.net/63171 no odbc call during timeout
@@ -112,6 +112,8 @@ Patch45: php-5.4.8-ldap_r.patch
 Patch46: php-5.4.9-fixheader.patch
 # drop "Configure command" from phpinfo output
 Patch47: php-5.4.9-phpinfo.patch
+# Allow wildcard il opcache.backlist_filename
+Patch48: php-5.5.0-opcache.patch
 
 
 # Fixes for tests
@@ -287,7 +289,7 @@ Conflicts: php-xcache
 Conflicts: php-pecl-apc < 3.1.15
 
 %description opcache
-The Zend Optimizer+ provides faster PHP execution through opcode caching and
+The Zend OPcache provides faster PHP execution through opcode caching and
 optimization. It improves PHP performance by storing precompiled script
 bytecode in the shared memory. This eliminates the stages of reading code from
 the disk and compiling it on future access. In addition, it applies a few
@@ -465,15 +467,15 @@ The php-soap package contains a dynamic shared object that will add
 support to PHP for using the SOAP web services protocol.
 
 %package interbase
-Summary: 	A module for PHP applications that use Interbase/Firebird databases
-Group: 		Development/Languages
+Summary: A module for PHP applications that use Interbase/Firebird databases
+Group: Development/Languages
 # All files licensed under PHP version 3.01
 License: PHP
 BuildRequires:  firebird-devel
-Requires: 	php-pdo%{?_isa} = %{version}-%{release}
-Provides: 	php_database
-Provides: 	php-firebird, php-firebird%{?_isa}
-Provides: 	php-pdo_firebird, php-pdo_firebird%{?_isa}
+Requires: php-pdo%{?_isa} = %{version}-%{release}
+Provides: php_database
+Provides: php-firebird, php-firebird%{?_isa}
+Provides: php-pdo_firebird, php-pdo_firebird%{?_isa}
 
 %description interbase
 The php-interbase package contains a dynamic shared object that will add
@@ -707,7 +709,6 @@ support for using the enchant library to PHP.
 %patch6 -p1 -b .embed
 %patch7 -p1 -b .recode
 %patch8 -p1 -b .libdb
-%patch9 -p1 -b .build
 
 %patch21 -p1 -b .odbctimer
 
@@ -722,6 +723,7 @@ support for using the enchant library to PHP.
 %endif
 %patch46 -p1 -b .fixheader
 %patch47 -p1 -b .phpinfo
+%patch48 -p1 -b .opcache
 
 # Prevent %%doc confusion over LICENSE files
 cp Zend/LICENSE Zend/ZEND_LICENSE
@@ -853,34 +855,34 @@ mkdir Zend && cp ../Zend/zend_{language,ini}_{parser,scanner}.[ch] Zend
 
 ln -sf ../configure
 %configure \
-	--cache-file=../config.cache \
-	--with-libdir=%{_lib} \
-	--with-config-file-path=%{_sysconfdir} \
-	--with-config-file-scan-dir=%{_sysconfdir}/php.d \
-	--disable-debug \
-	--with-pic \
-	--disable-rpath \
-	--without-pear \
-	--with-exec-dir=%{_bindir} \
-	--with-freetype-dir=%{_prefix} \
-	--with-png-dir=%{_prefix} \
-	--with-xpm-dir=%{_prefix} \
-	--enable-gd-native-ttf \
-	--with-t1lib=%{_prefix} \
-	--without-gdbm \
-	--with-jpeg-dir=%{_prefix} \
-	--with-openssl \
-	--with-pcre-regex=%{_prefix} \
-	--with-zlib \
-	--with-layout=GNU \
-	--with-kerberos \
-	--with-libxml-dir=%{_prefix} \
-	--with-system-tzdata \
-	--with-mhash \
+    --cache-file=../config.cache \
+    --with-libdir=%{_lib} \
+    --with-config-file-path=%{_sysconfdir} \
+    --with-config-file-scan-dir=%{_sysconfdir}/php.d \
+    --disable-debug \
+    --with-pic \
+    --disable-rpath \
+    --without-pear \
+    --with-exec-dir=%{_bindir} \
+    --with-freetype-dir=%{_prefix} \
+    --with-png-dir=%{_prefix} \
+    --with-xpm-dir=%{_prefix} \
+    --enable-gd-native-ttf \
+    --with-t1lib=%{_prefix} \
+    --without-gdbm \
+    --with-jpeg-dir=%{_prefix} \
+    --with-openssl \
+    --with-pcre-regex=%{_prefix} \
+    --with-zlib \
+    --with-layout=GNU \
+    --with-kerberos \
+    --with-libxml-dir=%{_prefix} \
+    --with-system-tzdata \
+    --with-mhash \
 %if %{with_dtrace}
-	--enable-dtrace \
+    --enable-dtrace \
 %endif
-	$*
+    $*
 if test $? != 0; then 
   tail -500 config.log
   : configure failed
@@ -890,7 +892,7 @@ fi
 make %{?_smp_mflags}
 }
 
-# Build /usr/bin/php-cgi with the CGI SAPI, and all the shared extensions
+# Build /usr/bin/php-cgi with the CGI SAPI, and most shared extensions
 pushd build-cgi
 
 build --libdir=%{_libdir}/php \
@@ -1352,6 +1354,9 @@ cat files.json files.curl files.phar files.fileinfo \
 cat files.zip >> files.common
 %endif
 
+# The default Zend OPcache blacklist file
+install -m 644 %{SOURCE51} $RPM_BUILD_ROOT%{_sysconfdir}/php.d/opcache-default.blacklist
+
 # Install the macros file:
 install -d $RPM_BUILD_ROOT%{_sysconfdir}/rpm
 sed -e "s/@PHP_APIVER@/%{apiver}%{isasuffix}/" \
@@ -1550,9 +1555,16 @@ fi
 %files enchant -f files.enchant
 %files mysqlnd -f files.mysqlnd
 %files opcache -f files.opcache
+%config(noreplace) %{_sysconfdir}/php.d/opcache-default.blacklist
 
 
 %changelog
+* Thu Apr 11 2013 Remi Collet <rcollet at redhat.com> 5.5.0-0.4.beta3
+- update to 5.5.0beta3
+- allow wildcard in opcache.blacklist_filename and provide
+  default /etc/php.d/opcache-default.blacklist
+- clean spec, use only spaces (no tab)
+
 * Thu Apr  4 2013 Remi Collet <rcollet at redhat.com> 5.5.0-0.3.beta2
 - clean old deprecated options
 
diff --git a/sources b/sources
index 654b9eb..5c3444e 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-8080295ce454455bff08a10eaa0896aa  php-5.5.0beta2.tar.xz
+7cf9b81a8e9a28b9431f3741d8916a9c  php-5.5.0beta3.tar.xz


More information about the scm-commits mailing list