summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--opcache-default.blacklist11
-rw-r--r--opcache.ini11
-rw-r--r--php-5.5.0-opcache.patch149
-rw-r--r--php55.spec15
5 files changed, 178 insertions, 9 deletions
diff --git a/.gitignore b/.gitignore
index 6be1ada..744ca7b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
build*log
+tembed*
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@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/php55.spec b/php55.spec
index 2e9efb2..32288e6 100644
--- a/php55.spec
+++ b/php55.spec
@@ -79,7 +79,7 @@ Summary: PHP scripting language for creating dynamic web sites
Name: php
Version: 5.5.0
%if 0%{?snapdate:1}%{?rcver:1}
-Release: 0.24.%{?snapdate}%{?rcver}%{?dist}
+Release: 0.25.%{?snapdate}%{?rcver}%{?dist}
%else
Release: 2%{?dist}
%endif
@@ -107,6 +107,7 @@ Source9: php.modconf
Source10: php.ztsmodconf
# Configuration files for some extensions
Source50: opcache.ini
+Source51: opcache-default.blacklist
Source99: php-fpm.init
# Build fixes
@@ -132,6 +133,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
@@ -829,6 +832,7 @@ httpd -V | grep -q 'threaded:.*yes' && exit 1
%endif
%patch46 -p1 -b .fixheader
%patch47 -p1 -b .phpinfo
+%patch48 -p1 -b .opcache
%patch91 -p1 -b .remi-oci8
@@ -1529,6 +1533,9 @@ cat files.json files.curl files.phar files.fileinfo \
cat files.zip >> files.common
%endif
+# The default Zend OPcache blacklist file
+install -m 755 %{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}/" \
@@ -1767,13 +1774,17 @@ fi
%files enchant -f files.enchant
%files mysqlnd -f files.mysqlnd
%files opcache -f files.opcache
-
+%config(noreplace) %{_sysconfdir}/php.d/opcache-default.blacklist
%if %{with_oci8}
%files oci8 -f files.oci8
%endif
%changelog
+* Thu Apr 11 2013 Remi Collet <rcollet@redhat.com> 5.5.0-0.25.beta3
+- allow wildcard in opcache.blacklist_filename and provide
+ default /etc/php.d/opcache-default.blacklist
+
* Wed Apr 10 2013 Remi Collet <rcollet@redhat.com> 5.5.0-0.24.beta3
- update to 5.5.0beta3