- 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)
This commit is contained in:
Remi Collet 2013-04-11 09:32:27 +02:00
parent 931edd2dde
commit 26f57a8682
7 changed files with 216 additions and 60 deletions

1
.gitignore vendored
View File

@ -18,3 +18,4 @@ php-5.3*.bz2
/php-5.4.13.tar.bz2 /php-5.4.13.tar.bz2
/php-5.5.0beta1.tar.xz /php-5.5.0beta1.tar.xz
/php-5.5.0beta2.tar.xz /php-5.5.0beta2.tar.xz
/php-5.5.0beta3.tar.xz

11
opcache-default.blacklist Normal file
View File

@ -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.

View File

@ -60,13 +60,10 @@ opcache.fast_shutdown=1
;opcache.inherited_hack=1 ;opcache.inherited_hack=1
;opcache.dups_fix=0 ;opcache.dups_fix=0
; The location of the OPcache blacklist file. ; The location of the OPcache blacklist file (wildcards allowed).
; The OPcache blacklist file is a text file that holds the names of files ; 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 ; that should not be accelerated.
; to a new line. The filename may be a full path or just a file prefix opcache.blacklist_filename=/etc/php.d/opcache*.blacklist
; (i.e., /var/www/x blacklists all the files and directories in /var/www
; that start with 'x').
;opcache.blacklist_filename=
; Allows exclusion of large files from being cached. By default all files ; Allows exclusion of large files from being cached. By default all files
; are cached. ; are cached.

View File

@ -1,14 +0,0 @@
--- php-5.5.0beta2/acinclude.m4.old 2013-03-28 10:00:02.755797575 +0100
+++ php-5.5.0beta2/acinclude.m4 2013-03-28 10:00:57.000941535 +0100
@@ -2342,8 +2342,10 @@
AC_MSG_ERROR([OpenSSL version 0.9.6 or greater required.])
fi
- if test -n "$OPENSSL_LIBS" && test -n "$OPENSSL_INCS"; then
+ if test -n "$OPENSSL_LIBS"; then
PHP_EVAL_LIBLINE($OPENSSL_LIBS, $1)
+ fi
+ if test -n "$OPENSSL_INCS"; then
PHP_EVAL_INCLINE($OPENSSL_INCS)
fi
fi

149
php-5.5.0-opcache.patch Normal file
View File

@ -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

View File

@ -61,12 +61,12 @@
%global db_devel libdb-devel %global db_devel libdb-devel
%endif %endif
%global rcver beta2 %global rcver beta3
Summary: PHP scripting language for creating dynamic web sites Summary: PHP scripting language for creating dynamic web sites
Name: php Name: php
Version: 5.5.0 Version: 5.5.0
Release: 0.3.%{rcver}%{?dist} Release: 0.4.%{rcver}%{?dist}
# All files licensed under PHP version 3.01, except # All files licensed under PHP version 3.01, except
# Zend is licensed under Zend # Zend is licensed under Zend
# TSRM is licensed under BSD # TSRM is licensed under BSD
@ -87,13 +87,13 @@ Source9: php.modconf
Source10: php.ztsmodconf Source10: php.ztsmodconf
# Configuration files for some extensions # Configuration files for some extensions
Source50: opcache.ini Source50: opcache.ini
Source51: opcache-default.blacklist
# Build fixes # Build fixes
Patch5: php-5.2.0-includedir.patch Patch5: php-5.2.0-includedir.patch
Patch6: php-5.2.4-embed.patch Patch6: php-5.2.4-embed.patch
Patch7: php-5.3.0-recode.patch Patch7: php-5.3.0-recode.patch
Patch8: php-5.4.7-libdb.patch Patch8: php-5.4.7-libdb.patch
Patch9: php-5.5.0-build.patch
# Fixes for extension modules # Fixes for extension modules
# https://bugs.php.net/63171 no odbc call during timeout # 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 Patch46: php-5.4.9-fixheader.patch
# drop "Configure command" from phpinfo output # drop "Configure command" from phpinfo output
Patch47: php-5.4.9-phpinfo.patch Patch47: php-5.4.9-phpinfo.patch
# Allow wildcard il opcache.backlist_filename
Patch48: php-5.5.0-opcache.patch
# Fixes for tests # Fixes for tests
@ -287,7 +289,7 @@ Conflicts: php-xcache
Conflicts: php-pecl-apc < 3.1.15 Conflicts: php-pecl-apc < 3.1.15
%description opcache %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 optimization. It improves PHP performance by storing precompiled script
bytecode in the shared memory. This eliminates the stages of reading code from 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 the disk and compiling it on future access. In addition, it applies a few
@ -707,7 +709,6 @@ support for using the enchant library to PHP.
%patch6 -p1 -b .embed %patch6 -p1 -b .embed
%patch7 -p1 -b .recode %patch7 -p1 -b .recode
%patch8 -p1 -b .libdb %patch8 -p1 -b .libdb
%patch9 -p1 -b .build
%patch21 -p1 -b .odbctimer %patch21 -p1 -b .odbctimer
@ -722,6 +723,7 @@ support for using the enchant library to PHP.
%endif %endif
%patch46 -p1 -b .fixheader %patch46 -p1 -b .fixheader
%patch47 -p1 -b .phpinfo %patch47 -p1 -b .phpinfo
%patch48 -p1 -b .opcache
# Prevent %%doc confusion over LICENSE files # Prevent %%doc confusion over LICENSE files
cp Zend/LICENSE Zend/ZEND_LICENSE cp Zend/LICENSE Zend/ZEND_LICENSE
@ -890,7 +892,7 @@ fi
make %{?_smp_mflags} 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 pushd build-cgi
build --libdir=%{_libdir}/php \ build --libdir=%{_libdir}/php \
@ -1352,6 +1354,9 @@ cat files.json files.curl files.phar files.fileinfo \
cat files.zip >> files.common cat files.zip >> files.common
%endif %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 the macros file:
install -d $RPM_BUILD_ROOT%{_sysconfdir}/rpm install -d $RPM_BUILD_ROOT%{_sysconfdir}/rpm
sed -e "s/@PHP_APIVER@/%{apiver}%{isasuffix}/" \ sed -e "s/@PHP_APIVER@/%{apiver}%{isasuffix}/" \
@ -1550,9 +1555,16 @@ fi
%files enchant -f files.enchant %files enchant -f files.enchant
%files mysqlnd -f files.mysqlnd %files mysqlnd -f files.mysqlnd
%files opcache -f files.opcache %files opcache -f files.opcache
%config(noreplace) %{_sysconfdir}/php.d/opcache-default.blacklist
%changelog %changelog
* Thu Apr 11 2013 Remi Collet <rcollet@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@redhat.com> 5.5.0-0.3.beta2 * Thu Apr 4 2013 Remi Collet <rcollet@redhat.com> 5.5.0-0.3.beta2
- clean old deprecated options - clean old deprecated options

View File

@ -1 +1 @@
8080295ce454455bff08a10eaa0896aa php-5.5.0beta2.tar.xz 7cf9b81a8e9a28b9431f3741d8916a9c php-5.5.0beta3.tar.xz