summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemi Collet <fedora@famillecollet.com>2013-11-04 15:05:34 +0100
committerRemi Collet <fedora@famillecollet.com>2013-11-04 15:05:34 +0100
commit59bffbcceee522cdfe631087997135e1be52aeb2 (patch)
tree922cfd0c671927c01723021e07a1314eb7f39286
parent2011698bdfcd8b47fafb6dc94c0d519767e09537 (diff)
PHP 5.5 test build opcache with phar build shared https://github.com/zendtech/ZendOptimizerPlus/issues/147
-rw-r--r--php-5.4.0-dlopen.patch6
-rw-r--r--php-wip.patch110
-rw-r--r--php55.spec10
3 files changed, 54 insertions, 72 deletions
diff --git a/php-5.4.0-dlopen.patch b/php-5.4.0-dlopen.patch
index 10d3f2b..c2b0e40 100644
--- a/php-5.4.0-dlopen.patch
+++ b/php-5.4.0-dlopen.patch
@@ -5,13 +5,13 @@
# if defined(RTLD_GROUP) && defined(RTLD_WORLD) && defined(RTLD_PARENT)
-# define DL_LOAD(libname) dlopen(libname, RTLD_LAZY | RTLD_GLOBAL | RTLD_GROUP | RTLD_WORLD | RTLD_PARENT)
-+# define DL_LOAD(libname) dlopen(libname, (strstr(libname, "opcache") ? RTLD_LAZY : RTLD_NOW) | RTLD_GLOBAL | RTLD_GROUP | RTLD_WORLD | RTLD_PARENT)
++# define DL_LOAD(libname) dlopen(libname, RTLD_NOW | RTLD_GLOBAL | RTLD_GROUP | RTLD_WORLD | RTLD_PARENT)
# elif defined(RTLD_DEEPBIND)
-# define DL_LOAD(libname) dlopen(libname, RTLD_LAZY | RTLD_GLOBAL | RTLD_DEEPBIND)
-+# define DL_LOAD(libname) dlopen(libname, (strstr(libname, "opcache") ? RTLD_LAZY : RTLD_NOW) | RTLD_GLOBAL | RTLD_DEEPBIND)
++# define DL_LOAD(libname) dlopen(libname, RTLD_NOW | RTLD_GLOBAL | RTLD_DEEPBIND)
# else
-# define DL_LOAD(libname) dlopen(libname, RTLD_LAZY | RTLD_GLOBAL)
-+# define DL_LOAD(libname) dlopen(libname, (strstr(libname, "opcache") ? RTLD_LAZY : RTLD_NOW) | RTLD_GLOBAL)
++# define DL_LOAD(libname) dlopen(libname, RTLD_NOW | RTLD_GLOBAL)
# endif
# define DL_UNLOAD dlclose
# if defined(DLSYM_NEEDS_UNDERSCORE)
diff --git a/php-wip.patch b/php-wip.patch
index 6aee5a9..d6e5131 100644
--- a/php-wip.patch
+++ b/php-wip.patch
@@ -1,69 +1,47 @@
-diff --git a/Zend/zend_exceptions.c b/Zend/zend_exceptions.c
-index 14ae75e..c7f157c 100644
---- a/Zend/zend_exceptions.c
-+++ b/Zend/zend_exceptions.c
-@@ -560,7 +560,7 @@ ZEND_METHOD(exception, getPrevious)
- RETURN_ZVAL(previous, 1, 0);
+diff -up php-5.5.6RC1/ext/opcache/ZendAccelerator.c.wip php-5.5.6RC1/ext/opcache/ZendAccelerator.c
+--- php-5.5.6RC1/ext/opcache/ZendAccelerator.c.wip 2013-10-29 12:09:06.000000000 +0100
++++ php-5.5.6RC1/ext/opcache/ZendAccelerator.c 2013-11-04 14:23:59.395722970 +0100
+@@ -145,9 +145,33 @@ static inline int is_cacheable_stream_pa
+ memcmp(filename, "phar://", sizeof("phar://") - 1) == 0;
}
--int zend_spprintf(char **message, int max_len, char *format, ...) /* {{{ */
-+int zend_spprintf(char **message, int max_len, const char *format, ...) /* {{{ */
++#ifdef COMPILE_DL_PHAR
++static typeof(phar_resolve_alias) *opcache_phar_resolve_alias;
++#else
++# define opcache_phar_resolve_alias phar_resolve_alias
++#endif
++
+ static inline int is_phar_relative_alias_path(const char *filename, char **alias, int *alias_len)
{
- va_list arg;
- int len;
-@@ -732,7 +732,7 @@ ZEND_API zend_class_entry *zend_get_error_exception(TSRMLS_D) /* {{{ */
- }
- /* }}} */
-
--ZEND_API zval * zend_throw_exception(zend_class_entry *exception_ce, char *message, long code TSRMLS_DC) /* {{{ */
-+ZEND_API zval * zend_throw_exception(zend_class_entry *exception_ce, const char *message, long code TSRMLS_DC) /* {{{ */
- {
- zval *ex;
-
-@@ -760,7 +760,7 @@ ZEND_API zval * zend_throw_exception(zend_class_entry *exception_ce, char *messa
- }
- /* }}} */
-
--ZEND_API zval * zend_throw_exception_ex(zend_class_entry *exception_ce, long code TSRMLS_DC, char *format, ...) /* {{{ */
-+ZEND_API zval * zend_throw_exception_ex(zend_class_entry *exception_ce, long code TSRMLS_DC, const char *format, ...) /* {{{ */
- {
- va_list arg;
- char *message;
-@@ -775,7 +775,7 @@ ZEND_API zval * zend_throw_exception_ex(zend_class_entry *exception_ce, long cod
- }
- /* }}} */
-
--ZEND_API zval * zend_throw_error_exception(zend_class_entry *exception_ce, char *message, long code, int severity TSRMLS_DC) /* {{{ */
-+ZEND_API zval * zend_throw_error_exception(zend_class_entry *exception_ce, const char *message, long code, int severity TSRMLS_DC) /* {{{ */
- {
- zval *ex = zend_throw_exception(exception_ce, message, code TSRMLS_CC);
- zend_update_property_long(default_exception_ce, ex, "severity", sizeof("severity")-1, severity TSRMLS_CC);
-diff --git a/Zend/zend_exceptions.h b/Zend/zend_exceptions.h
-index 8263353..81c8a1f 100644
---- a/Zend/zend_exceptions.h
-+++ b/Zend/zend_exceptions.h
-@@ -40,12 +40,12 @@ ZEND_API void zend_register_default_classes(TSRMLS_D);
-
- /* exception_ce NULL or zend_exception_get_default() or a derived class
- * message NULL or the message of the exception */
--ZEND_API zval * zend_throw_exception(zend_class_entry *exception_ce, char *message, long code TSRMLS_DC);
--ZEND_API zval * zend_throw_exception_ex(zend_class_entry *exception_ce, long code TSRMLS_DC, char *format, ...);
-+ZEND_API zval * zend_throw_exception(zend_class_entry *exception_ce, const char *message, long code TSRMLS_DC);
-+ZEND_API zval * zend_throw_exception_ex(zend_class_entry *exception_ce, long code TSRMLS_DC, const char *format, ...);
- ZEND_API void zend_throw_exception_object(zval *exception TSRMLS_DC);
- ZEND_API void zend_clear_exception(TSRMLS_D);
-
--ZEND_API zval * zend_throw_error_exception(zend_class_entry *exception_ce, char *message, long code, int severity TSRMLS_DC);
-+ZEND_API zval * zend_throw_error_exception(zend_class_entry *exception_ce, const char *message, long code, int severity TSRMLS_DC);
-
- extern ZEND_API void (*zend_throw_exception_hook)(zval *ex TSRMLS_DC);
-
-@@ -53,7 +53,7 @@ extern ZEND_API void (*zend_throw_exception_hook)(zval *ex TSRMLS_DC);
- ZEND_API void zend_exception_error(zval *exception, int severity TSRMLS_DC);
-
- /* do not export, in php it's available thru spprintf directly */
--int zend_spprintf(char **message, int max_len, char *format, ...);
-+int zend_spprintf(char **message, int max_len, const char *format, ...);
-
- END_EXTERN_C()
-
+- if (memcmp(filename, "phar://", sizeof("phar://") - 1) == 0
++#ifdef COMPILE_DL_PHAR
++ static int pharloaded = -1;
++
++ /* Only once, retrieve phar_resolve_alias from phar module if loaded */
++ if (pharloaded < 0) {
++ zend_module_entry *phar;
++
++ if (zend_hash_find(&module_registry, "phar", 5, (void**)&phar) == SUCCESS) {
++ opcache_phar_resolve_alias = DL_FETCH_SYMBOL(phar->handle, "phar_resolve_alias");
++ pharloaded = (opcache_phar_resolve_alias ? 1 : 0);
++ } else {
++ pharloaded = 0;
++ }
++ }
++ if (pharloaded &&
++#else
++ if (
++#endif
++ memcmp(filename, "phar://", sizeof("phar://") - 1) == 0
+ && filename[sizeof("phar://") - 1] != '\0' && filename[sizeof("phar://") - 1] != '/') {
+ char *slash;
+ *alias = (char*)filename + sizeof("phar://") - 1;
+@@ -1056,7 +1080,7 @@ char *accel_make_persistent_key_ex(zend_
+ if (is_phar_relative_alias_path(file_handle->filename, &alias, &alias_len)) {
+ char *phar_path;
+ int phar_path_len;
+- if (phar_resolve_alias(alias, alias_len, &phar_path, &phar_path_len TSRMLS_CC) == SUCCESS) {
++ if (opcache_phar_resolve_alias(alias, alias_len, &phar_path, &phar_path_len TSRMLS_CC) == SUCCESS) {
+ int filename_len = strlen(file_handle->filename);
+ memcpy(ZCG(key), "phar://", sizeof("phar://") -1);
+ memcpy(ZCG(key) + sizeof("phar://") - 1, phar_path, phar_path_len);
diff --git a/php55.spec b/php55.spec
index 4d55f2e..88224ed 100644
--- a/php55.spec
+++ b/php55.spec
@@ -100,7 +100,7 @@ Summary: PHP scripting language for creating dynamic web sites
Name: php
Version: 5.5.6
%if 0%{?snapdate:1}%{?rcver:1}
-Release: 0.3.%{?snapdate}%{?rcver}%{?dist}
+Release: 0.4.%{?snapdate}%{?rcver}%{?dist}
%else
Release: 2%{?dist}
%endif
@@ -167,7 +167,7 @@ Patch47: php-5.4.9-phpinfo.patch
Patch91: php-5.3.7-oci8conf.patch
# WIP
-#Patch99: php-wip.patch
+Patch99: php-wip.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -872,7 +872,7 @@ rm -rf ext/json
%patch91 -p1 -b .remi-oci8
# wip patches
-#patch99 -p1 -b .wip
+%patch99 -p1 -b .wip
# Prevent %%doc confusion over LICENSE files
cp Zend/LICENSE Zend/ZEND_LICENSE
@@ -1841,6 +1841,10 @@ fi
%changelog
+* Mon Nov 4 2013 Remi Collet <remi@fedoraproject.org> 5.5.6-0.4.RC1
+- test build opcache with phar build shared
+ https://github.com/zendtech/ZendOptimizerPlus/issues/147
+
* Mon Nov 4 2013 Remi Collet <remi@fedoraproject.org> 5.5.6-0.3.RC1
- build phar shared, opcache loaded with RTLD_LAZY