diff options
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | opcache.ini | 137 | ||||
-rw-r--r-- | php-pecl-zendopcache-dev.spec | 194 | ||||
-rw-r--r-- | php-pecl-zendopcache.spec | 199 |
4 files changed, 534 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..13af741 --- /dev/null +++ b/Makefile @@ -0,0 +1,4 @@ +SRCDIR := $(shell pwd) +NAME := $(shell basename $(SRCDIR)) +include ../../../common/Makefile + diff --git a/opcache.ini b/opcache.ini new file mode 100644 index 0000000..05d75af --- /dev/null +++ b/opcache.ini @@ -0,0 +1,137 @@ +; Enable Zend OPcache extension module +zend_extension=@EXTPATH@/opcache.so + +; Opcache On/Off switch. When set to Off, code is not optimized. +;opcache.enable=1 +;opcache.enable_cli=0 + +; The OPcache shared memory storage size. The amount of memory for storing +; precompiled PHP code in Mbytes. +opcache.memory_consumption=128 + +; The amount of memory for interned strings in Mbytes. +opcache.interned_strings_buffer=8 + +; The maximum number of keys (scripts) in the OPcache hash table. +; The number is actually the the first one in the following set of prime +; numbers that is bigger than the one supplied: { 223, 463, 983, 1979, 3907, +; 7963, 16229, 32531, 65407, 130987 }. Only numbers between 200 and 100000 +; are allowed. +opcache.max_accelerated_files=4000 + +; The maximum percentage of "wasted" memory until a restart is scheduled. +;opcache.max_wasted_percentage=5 + +; When this directive is enabled, the OPcache appends the current working +; directory to the script key, thus eliminating possible collisions between +; files with the same name (basename). Disabling the directive improves +; performance, but may break existing applications. +;opcache.use_cwd=1 + +; When disabled, you must reset the OPcache manually or restart the +; webserver for changes to the filesystem to take effect. +; The frequency of the check is controlled by the directive +; "opcache.revalidate_freq". +;opcache.validate_timestamps=1 + +; How often (in seconds) to check file timestamps for changes to the shared +; memory storage allocation. ("1" means validate once per second, but only +; once per request. "0" means always validate) +;opcache.revalidate_freq=2 + +; Enables or disables file search in include_path optimization +; If the file search is disabled and a cached file is found that uses +; the same include_path, the file is not searched again. Thus, if a file +; with the same name appears somewhere else in include_path, it +; won't be found. Enable this directive if this optimization has an effect on +; your applications. The default for this directive is disabled, which means +; that optimization is active. +;opcache.revalidate_path=0 + +; If disabled, all PHPDoc comments are dropped from the code to reduce the +; size of the optimized code. +;opcache.save_comments=1 + +; If disabled, PHPDoc comments are not loaded from SHM, so "Doc Comments" +; may be always stored (save_comments=1), but not loaded by applications +; that don't need them anyway. +;opcache.load_comments=1 + + +; If enabled, a fast shutdown sequence is used for the accelerated code +; The fast shutdown sequence doesn't free each allocated block, but lets +; the Zend Engine Memory Manager do the work. +opcache.fast_shutdown=1 + +; Allow file existence override (file_exists, etc.) performance feature. +;opcache.enable_file_override=0 + +; A bitmask, where each bit enables or disables the appropriate OPcache +; passes +;opcache.optimization_level="0xffffffff" + +; Enable this hack as a workaround for "can't redeclare class" errors. +; The OPcache stores the places where DECLARE_CLASS opcodes use +; inheritance (These are the only opcodes that can be executed by PHP, +; but which may not be executed because the parent class is missing due to +; optimization). When the file is loaded, OPcache tries to bind the +; inherited classes by using the current environment. The problem with this +; scenario is that, while the DECLARE_CLASS opcode may not be needed for the +; current script, if the script requires that the opcode at least be defined, +; it may not run. The default for this directive is disabled, which means +; that optimization is active. In php-5.3 and above this hack is not needed +; anymore and this setting has no effect. +;opcache.inherited_hack=1 + +; Enable this hack as a workaround for "Cannot redeclare class" errors. +;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'). 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. +;opcache.blacklist_filename + +; Allows exclusion of large files from being cached. +; By default all files are cached. +;opcache.max_file_size=0 + +; Check the cache checksum each N requests. +; The default value of "0" means that the checks are disabled. +; Because calculating the checksum impairs performance, this directive should +; be enabled only as part of a debugging process. +;opcache.consistency_checks=0 + +; How long to wait (in seconds) for a scheduled restart to begin if the cache +; is not being accessed. +; The OPcache uses this directive to identify a situation where there may +; be a problem with a process. After this time period has passed, the +; OPcache assumes that something has happened and starts killing the +; processes that still hold the locks that are preventing a restart. +; If the log level is 3 or above, a "killed locker" error is recorded +; in the Apache logs when this happens. +;opcache.force_restart_timeout=180 + +; OPcache error_log file name. Empty string assumes "stderr". +;opcache.error_log=stderr + +; All OPcache errors go to the Web server log. +; By default, only fatal errors (level 0) or errors (level 1) are logged. +; You can also enable warnings (level 2), info messages (level 3) or +; debug messages (level 4). +;opcache.log_verbosity_level=1 + +; Preferred Shared Memory back-end. Leave empty and let the system decide. +;opcache.preferred_memory_model= + +; Protect the shared memory from unexpected writing during script execution. +; Useful for internal debugging only. +;opcache.protect_memory=0 + diff --git a/php-pecl-zendopcache-dev.spec b/php-pecl-zendopcache-dev.spec new file mode 100644 index 0000000..46003bc --- /dev/null +++ b/php-pecl-zendopcache-dev.spec @@ -0,0 +1,194 @@ +%{!?__pecl: %{expand: %%global __pecl %{_bindir}/pecl}} +%global owner zend-dev +%global commit cef6093956bee5446207d5919fc9d30be58aa245 +%global short %(c=%{commit}; echo ${c:0:7}) +%global prever dev +%global proj_name ZendOptimizerPlus +%global pecl_name zendoptimizerplus +%global plug_name opcache + +Name: php-pecl-%{pecl_name} +Version: 7.0.1 +Release: 0.1.git%{short}%{?dist} +Summary: The Zend Optimizer+ + +Group: Development/Libraries +License: PHP +URL: http://pecl.php.net/package/%{proj_name} +%if 0%{?commit:1} +Source0: https://github.com/%{owner}/%{proj_name}/archive/%{commit}/%{proj_name}-%{version}-%{short}.tar.gz +%else +Source0: http://pecl.php.net/get/%{pecl_name}-%{version}.tgz +%endif +# this extension must be loaded before XDebug +# So "opcache" if before "xdebug" +Source1: %{plug_name}.ini + +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root +BuildRequires: php-devel >= 5.2.0 +BuildRequires: php-pear + +Requires(post): %{__pecl} +Requires(postun): %{__pecl} +Requires: php(zend-abi) = %{php_zend_api} +Requires: php(api) = %{php_core_api} + +# Only one opcode cache could be enabled +Conflicts: php-eaccelerator +Conflicts: php-xcache +# APC 3.1.15 offer an option to disable opcache +Conflicts: php-pecl-apc < 3.1.15 +Provides: php-pecl(%{plug_name}) = %{version}%{?prever} +Provides: php-pecl(%{plug_name})%{?_isa} = %{version}%{?prever} +Provides: php-%{plug_name} = %{version}-%{release} +Provides: php-%{plug_name}%{?_isa} = %{version}-%{release} +Obsoletes: php-%{proj_name} < 7.0.0-1 +Provides: php-%{proj_name} = %{version}-%{release} +Provides: php-%{proj_name}%{?_isa} = %{version}-%{release} + +# Filter private shared +%{?filter_provides_in: %filter_provides_in %{_libdir}/.*\.so$} +%{?filter_setup} + + +%description +The Zend Optimizer+ 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 +bytecode optimization patterns that make code execution faster. + + +%prep +%setup -q -c +%if 0%{?commit:1} +mv %{proj_name}-%{commit} NTS +sed -e '/release/s/7.0.0/%{version}%{prever}/' \ + NTS/package.xml >package.xml +%else +mv %{pecl_name}-%{version} NTS +%endif + +# Sanity check, really often broken +extver=$(sed -n '/#define ACCELERATOR_VERSION/{s/.* "//;s/".*$//;p}' NTS/ZendAccelerator.h) +if test "x${extver}" != "x%{version}%{?prever:-%{prever}}"; then + : Error: Upstream extension version is ${extver}, expecting %{version}%{?prever:-%{prever}}. + exit 1 +fi + +# Duplicate source tree for NTS / ZTS build +cp -pr NTS ZTS + + +%build +cd NTS +%{_bindir}/phpize +%configure \ + --enable-optimizer-plus \ + --with-php-config=%{_bindir}/php-config +make %{?_smp_mflags} + +cd ../ZTS +%{_bindir}/zts-phpize +%configure \ + --enable-optimizer-plus \ + --with-php-config=%{_bindir}/zts-php-config +make %{?_smp_mflags} + + +%install +rm -rf %{buildroot} + +install -D -p -m 644 %{SOURCE1} %{buildroot}%{php_inidir}/%{plug_name}.ini +sed -e 's:@EXTPATH@:%{php_extdir}:' \ + -i %{buildroot}%{php_inidir}/%{plug_name}.ini + +make -C NTS install INSTALL_ROOT=%{buildroot} + +install -D -p -m 644 %{SOURCE1} %{buildroot}%{php_ztsinidir}/%{plug_name}.ini +sed -e 's:@EXTPATH@:%{php_ztsextdir}:' \ + -i %{buildroot}%{php_ztsinidir}/%{plug_name}.ini + +make -C ZTS install INSTALL_ROOT=%{buildroot} + +# Install XML package description +install -D -m 644 package.xml %{buildroot}%{pecl_xmldir}/%{name}.xml + + +%clean +rm -rf %{buildroot} + + +%check +cd NTS +%{__php} \ + -n -d zend_extension=%{buildroot}%{php_extdir}/%{plug_name}.so \ + -m | grep "Zend Optimizer+" + +TEST_PHP_EXECUTABLE=%{__php} \ +TEST_PHP_ARGS="-n -d zend_extension=%{buildroot}%{php_extdir}/%{plug_name}.so" \ +NO_INTERACTION=1 \ +REPORT_EXIT_STATUS=1 \ +%{__php} -n run-tests.php + +cd ../ZTS +%{__ztsphp} \ + -n -d zend_extension=%{buildroot}%{php_ztsextdir}/%{plug_name}.so \ + -m | grep "Zend Optimizer+" + +TEST_PHP_EXECUTABLE=%{__ztsphp} \ +TEST_PHP_ARGS="-n -d zend_extension=%{buildroot}%{php_ztsextdir}/%{plug_name}.so" \ +NO_INTERACTION=1 \ +REPORT_EXIT_STATUS=1 \ +%{__ztsphp} -n run-tests.php + + +%post +%{pecl_install} %{pecl_xmldir}/%{name}.xml >/dev/null || : + + +%postun +if [ $1 -eq 0 ] ; then + %{pecl_uninstall} %{pecl_name} >/dev/null || : +fi + + +%files +%defattr(-,root,root,-) +%doc NTS/{LICENSE,README} +%config(noreplace) %{php_inidir}/%{plug_name}.ini +%{php_extdir}/%{plug_name}.so + +%config(noreplace) %{php_ztsinidir}/%{plug_name}.ini +%{php_ztsextdir}/%{plug_name}.so + +%{pecl_xmldir}/%{name}.xml + + +%changelog +* Mon Mar 18 2013 Remi Collet <remi@fedoraproject.org> - 7.0.1-0.1.gitcef6093 +- update to git snapshot, with new name (opcache) + +* Sun Mar 10 2013 Remi Collet <remi@fedoraproject.org> - 7.0.0-2 +- allow to install with APC >= 3.1.15 (user data cache) + +* Tue Mar 5 2013 Remi Collet <remi@fedoraproject.org> - 7.0.0-1 +- official PECL release, version 7.0.0 (beta) + +* Thu Feb 28 2013 Remi Collet <remi@fedoraproject.org> - 7.0.0-0.7.gitd39a49a +- new snapshot +- run test suite during build + +* Thu Feb 21 2013 Remi Collet <remi@fedoraproject.org> - 7.0.0-0.6.git3a06991 +- new snapshot + +* Fri Feb 15 2013 Remi Collet <remi@fedoraproject.org> - 7.0.0-0.4.git2b6eede +- new snapshot (ZTS fixes) + +* Thu Feb 14 2013 Remi Collet <remi@fedoraproject.org> - 7.0.0-0.2.gitafb43f5 +- new snapshot +- better default configuration file (new upstream recommendation) +- License file now provided by upstream + +* Wed Feb 13 2013 Remi Collet <remi@fedoraproject.org> - 7.0.0-0.1.gitaafc145 +- initial package diff --git a/php-pecl-zendopcache.spec b/php-pecl-zendopcache.spec new file mode 100644 index 0000000..73394a4 --- /dev/null +++ b/php-pecl-zendopcache.spec @@ -0,0 +1,199 @@ +%{!?php_inidir: %{expand: %%global php_inidir %{_sysconfdir}/php.d}} +%{!?__php: %{expand: %%global __php %{_bindir}/php}} +%{!?__pecl: %{expand: %%global __pecl %{_bindir}/pecl}} +%global with_zts 0%{?__ztsphp:1} +%global owner zend-dev +%global commit cef6093956bee5446207d5919fc9d30be58aa245 +%global short %(c=%{commit}; echo ${c:0:7}) +%global prever dev +%global proj_name ZendOptimizerPlus +%global pecl_name zendoptimizerplus +%global plug_name opcache + +Name: php-pecl-%{pecl_name} +Version: 7.0.1 +Release: 0.1.git%{short}%{?dist} +Summary: The Zend Optimizer+ + +Group: Development/Libraries +License: PHP +URL: http://pecl.php.net/package/%{proj_name} +%if 0%{?commit:1} +Source0: https://github.com/%{owner}/%{proj_name}/archive/%{commit}/%{proj_name}-%{version}-%{short}.tar.gz +%else +Source0: http://pecl.php.net/get/%{pecl_name}-%{version}.tgz +%endif +# this extension must be loaded before XDebug +# So "opcache" if before "xdebug" +Source1: %{plug_name}.ini + +BuildRequires: php-devel >= 5.2.0 +BuildRequires: php-pear + +Requires(post): %{__pecl} +Requires(postun): %{__pecl} +Requires: php(zend-abi) = %{php_zend_api} +Requires: php(api) = %{php_core_api} + +# Only one opcode cache could be enabled +Conflicts: php-eaccelerator +Conflicts: php-xcache +# APC 3.1.15 offer an option to disable opcache +Conflicts: php-pecl-apc < 3.1.15 +Provides: php-pecl(%{plug_name}) = %{version}%{?prever} +Provides: php-pecl(%{plug_name})%{?_isa} = %{version}%{?prever} +Provides: php-%{plug_name} = %{version}-%{release} +Provides: php-%{plug_name}%{?_isa} = %{version}-%{release} + +# Filter private shared +%{?filter_provides_in: %filter_provides_in %{_libdir}/.*\.so$} +%{?filter_setup} + + +%description +The Zend Optimizer+ 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 +bytecode optimization patterns that make code execution faster. + + +%prep +%setup -q -c +%if 0%{?commit:1} +mv %{proj_name}-%{commit} NTS +sed -e '/release/s/7.0.0/%{version}%{prever}/' \ + NTS/package.xml >package.xml +%else +mv %{pecl_name}-%{version} NTS +%endif + +# Sanity check, really often broken +extver=$(sed -n '/#define ACCELERATOR_VERSION/{s/.* "//;s/".*$//;p}' NTS/ZendAccelerator.h) +if test "x${extver}" != "x%{version}%{?prever:-%{prever}}"; then + : Error: Upstream extension version is ${extver}, expecting %{version}%{?prever:-%{prever}}. + exit 1 +fi + +%if %{with_zts} +# Duplicate source tree for NTS / ZTS build +cp -pr NTS ZTS +%endif + + +%build +cd NTS +%{_bindir}/phpize +%configure \ + --enable-optimizer-plus \ + --with-php-config=%{_bindir}/php-config +make %{?_smp_mflags} + +%if %{with_zts} +cd ../ZTS +%{_bindir}/zts-phpize +%configure \ + --enable-optimizer-plus \ + --with-php-config=%{_bindir}/zts-php-config +make %{?_smp_mflags} +%endif + + +%install +install -D -p -m 644 %{SOURCE1} %{buildroot}%{php_inidir}/%{plug_name}.ini +sed -e 's:@EXTPATH@:%{php_extdir}:' \ + -i %{buildroot}%{php_inidir}/%{plug_name}.ini + +make -C NTS install INSTALL_ROOT=%{buildroot} + +%if %{with_zts} +install -D -p -m 644 %{SOURCE1} %{buildroot}%{php_ztsinidir}/%{plug_name}.ini +sed -e 's:@EXTPATH@:%{php_ztsextdir}:' \ + -i %{buildroot}%{php_ztsinidir}/%{plug_name}.ini + +make -C ZTS install INSTALL_ROOT=%{buildroot} +%endif + +# Install XML package description +install -D -m 644 package.xml %{buildroot}%{pecl_xmldir}/%{name}.xml + + +%check +cd NTS +%{__php} \ + -n -d zend_extension=%{buildroot}%{php_extdir}/%{plug_name}.so \ + -m | grep "Zend Optimizer+" + +TEST_PHP_EXECUTABLE=%{__php} \ +TEST_PHP_ARGS="-n -d zend_extension=%{buildroot}%{php_extdir}/%{plug_name}.so" \ +NO_INTERACTION=1 \ +REPORT_EXIT_STATUS=1 \ +%{__php} -n run-tests.php + +%if %{with_zts} +cd ../ZTS +%{__ztsphp} \ + -n -d zend_extension=%{buildroot}%{php_ztsextdir}/%{plug_name}.so \ + -m | grep "Zend Optimizer+" + +TEST_PHP_EXECUTABLE=%{__ztsphp} \ +TEST_PHP_ARGS="-n -d zend_extension=%{buildroot}%{php_ztsextdir}/%{plug_name}.so" \ +NO_INTERACTION=1 \ +REPORT_EXIT_STATUS=1 \ +%{__ztsphp} -n run-tests.php +%endif + + +%post +%{pecl_install} %{pecl_xmldir}/%{name}.xml >/dev/null || : + + +%postun +if [ $1 -eq 0 ] ; then + %{pecl_uninstall} %{pecl_name} >/dev/null || : +fi + + +%files +%doc NTS/{LICENSE,README} +%config(noreplace) %{php_inidir}/%{plug_name}.ini +%{php_extdir}/%{plug_name}.so + +%if %{with_zts} +%config(noreplace) %{php_ztsinidir}/%{plug_name}.ini +%{php_ztsextdir}/%{plug_name}.so +%endif + +%{pecl_xmldir}/%{name}.xml + + +%changelog +* Mon Mar 18 2013 Remi Collet <remi@fedoraproject.org> - 7.0.1-0.1.gitcef6093 +- update to git snapshot, with new name (opcache) + +* Sun Mar 10 2013 Remi Collet <remi@fedoraproject.org> - 7.0.0-2 +- allow to install with APC >= 3.1.15 (user data cache) + +* Tue Mar 5 2013 Remi Collet <remi@fedoraproject.org> - 7.0.0-1 +- official PECL release, version 7.0.0 (beta) + +* Thu Feb 28 2013 Remi Collet <remi@fedoraproject.org> - 7.0.0-0.7.gitd39a49a +- new snapshot +- run test suite during build + +* Thu Feb 21 2013 Remi Collet <remi@fedoraproject.org> - 7.0.0-0.6.git3a06991 +- new snapshot + +* Fri Feb 15 2013 Remi Collet <remi@fedoraproject.org> - 7.0.0-0.4.git2b6eede +- new snapshot (ZTS fixes) + +* Thu Feb 14 2013 Remi Collet <remi@fedoraproject.org> - 7.0.0-0.3.gita84b588 +- make zts build optional + +* Thu Feb 14 2013 Remi Collet <remi@fedoraproject.org> - 7.0.0-0.2.gitafb43f5 +- new snapshot +- better default configuration file (new upstream recommendation) +- License file now provided by upstream + +* Wed Feb 13 2013 Remi Collet <remi@fedoraproject.org> - 7.0.0-0.1.gitaafc145 +- initial package |