# spec file for php-pecl-uopz # # Copyright (c) 2014 Remi Collet # License: CC-BY-SA # http://creativecommons.org/licenses/by-sa/3.0/ # # Please, preserve the changelog entries # %{?scl: %scl_package php-pecl-uopz} %{!?php_inidir: %global php_inidir %{_sysconfdir}/php.d} %{!?__pecl: %global __pecl %{_bindir}/pecl} %{!?__php: %global __php %{_bindir}/php} %global with_zts 0%{?__ztsphp:1} %global pecl_name uopz %if "%{php_version}" < "5.6" # uopz should be loaded before opcache (k as krakjoe) %global ini_name k-%{pecl_name}.ini %else %global ini_name 05-%{pecl_name}.ini %endif Summary: User Operations for Zend Name: %{?scl_prefix}php-pecl-%{pecl_name} Version: 2.0.5 Release: 2%{?dist}%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')} License: PHP Group: Development/Languages URL: http://pecl.php.net/package/%{pecl_name} Source0: http://pecl.php.net/get/%{pecl_name}-%{version}.tgz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: %{?scl_prefix}php-devel > 5.4 BuildRequires: %{?scl_prefix}php-pear Requires(post): %{__pecl} Requires(postun): %{__pecl} Requires: %{?scl_prefix}php(zend-abi) = %{php_zend_api} Requires: %{?scl_prefix}php(api) = %{php_core_api} Provides: %{?scl_prefix}php-%{pecl_name} = %{version} Provides: %{?scl_prefix}php-%{pecl_name}%{?_isa} = %{version} Provides: %{?scl_prefix}php-pecl(%{pecl_name}) = %{version} Provides: %{?scl_prefix}php-pecl(%{pecl_name})%{?_isa} = %{version} %if "%{?vendor}" == "Remi Collet" && 0%{!?scl:1} # Other third party repo stuff Obsoletes: php53-pecl-%{pecl_name} <= %{version} Obsoletes: php53u-pecl-%{pecl_name} <= %{version} Obsoletes: php54-pecl-%{pecl_name} <= %{version} Obsoletes: php54w-pecl-%{pecl_name} <= %{version} %if "%{php_version}" > "5.5" Obsoletes: php55u-pecl-%{pecl_name} <= %{version} Obsoletes: php55w-pecl-%{pecl_name} <= %{version} %endif %if "%{php_version}" > "5.6" Obsoletes: php56u-pecl-%{pecl_name} <= %{version} Obsoletes: php56w-pecl-%{pecl_name} <= %{version} %endif %endif %if 0%{?fedora} < 20 && 0%{?rhel} < 7 # Filter shared private %{?filter_provides_in: %filter_provides_in %{_libdir}/.*\.so$} %{?filter_setup} %endif %description User Operations for Zend: doing things you probably shouldn't since 2014. The uopz extension exposes Zend engine functionality normally used at compilation and execution time in order to allow modification of the internal structures that represent PHP code. It supports the following activities: - Overloading some Zend opcodes including exit/new and composure opcodes - Renaming functions and methods - Aliasing functions and methods - Deletion of functions and methods - Redefinition of constants - Deletion of constants - Runtime composition and modification of classes Documentation: http://php.net/uopz %prep %setup -q -c mv %{pecl_name}-%{version} NTS cd NTS #sed -e /PHP_UOPZ_VERSION/s/2.0.0/%{version}/ -i uopz.h # Sanity check, really often broken extver=$(sed -n '/#define PHP_UOPZ_VERSION/{s/.* "//;s/".*$//;p}' uopz.h) if test "x${extver}" != "x%{version}"; then : Error: Upstream extension version is ${extver}, expecting %{version}. exit 1 fi cd .. # Create configuration files cat << EOF | tee NTS/%{ini_name} ; Enable '%{summary}' extension module %if "%{php_version}" > "5.5" zend_extension=%{pecl_name}.so %else zend_extension=%{php_extdir}/%{pecl_name}.so %endif ; Configuration ; http://php.net/manual/en/uopz.configuration.php ;uopz.overloads=0 ;uopz.backup=1 ;uopz.fixup=0 EOF %if %{with_zts} # Duplicate source tree for NTS / ZTS build cp -pr NTS ZTS cat << EOF | tee ZTS/%{ini_name} ; Enable '%{summary}' extension module %if "%{php_version}" > "5.5" zend_extension=%{pecl_name}.so %else zend_extension=%{php_ztsextdir}/%{pecl_name}.so %endif ; Configuration ; http://php.net/manual/en/uopz.configuration.php ;uopz.overloads=0 ;uopz.backup=1 ;uopz.fixup=0 EOF %endif %build cd NTS %{_bindir}/phpize %configure \ --with-php-config=%{_bindir}/php-config make %{?_smp_mflags} %if %{with_zts} cd ../ZTS %{_bindir}/zts-phpize %configure \ --with-php-config=%{_bindir}/zts-php-config make %{?_smp_mflags} %endif %install rm -rf %{buildroot} make -C NTS install INSTALL_ROOT=%{buildroot} # install config file install -D -m 644 NTS/%{ini_name} %{buildroot}%{php_inidir}/%{ini_name} # Install XML package description install -D -m 644 package.xml %{buildroot}%{pecl_xmldir}/%{name}.xml %if %{with_zts} make -C ZTS install INSTALL_ROOT=%{buildroot} install -D -m 644 ZTS/%{ini_name} %{buildroot}%{php_ztsinidir}/%{ini_name} %endif # Test & Documentation for i in $(grep 'role="test"' package.xml | sed -e 's/^.*name="//;s/".*$//') do install -Dpm 644 NTS/$i %{buildroot}%{pecl_testdir}/%{pecl_name}/$i done for i in $(grep 'role="doc"' package.xml | sed -e 's/^.*name="//;s/".*$//') do install -Dpm 644 NTS/$i %{buildroot}%{pecl_docdir}/%{pecl_name}/$i done %post %{pecl_install} %{pecl_xmldir}/%{name}.xml >/dev/null || : %postun if [ $1 -eq 0 ] ; then %{pecl_uninstall} %{pecl_name} >/dev/null || : fi %check cd NTS : Minimal load test for NTS extension %{__php} --no-php-ini \ --define zend_extension=%{buildroot}%{php_extdir}/%{pecl_name}.so \ --modules | grep %{pecl_name} : Upstream test suite for NTS extension TEST_PHP_EXECUTABLE=%{__php} \ TEST_PHP_ARGS="-n -d zend_extension=$PWD/modules/%{pecl_name}.so" \ NO_INTERACTION=1 \ REPORT_EXIT_STATUS=1 \ %{__php} -n run-tests.php %if %{with_zts} cd ../ZTS : Minimal load test for ZTS extension %{__ztsphp} --no-php-ini \ --define zend_extension=%{buildroot}%{php_ztsextdir}/%{pecl_name}.so \ --modules | grep %{pecl_name} : Upstream test suite for ZTS extension TEST_PHP_EXECUTABLE=%{_bindir}/zts-php \ TEST_PHP_ARGS="-n -d zend_extension=$PWD/modules/%{pecl_name}.so" \ NO_INTERACTION=1 \ REPORT_EXIT_STATUS=1 \ %{_bindir}/zts-php -n run-tests.php %endif %clean rm -rf %{buildroot} %files %defattr(-,root,root,-) %doc %{pecl_docdir}/%{pecl_name} %doc %{pecl_testdir}/%{pecl_name} %{pecl_xmldir}/%{name}.xml %config(noreplace) %{php_inidir}/%{ini_name} %{php_extdir}/%{pecl_name}.so %if %{with_zts} %config(noreplace) %{php_ztsinidir}/%{ini_name} %{php_ztsextdir}/%{pecl_name}.so %endif # add date time as upstream used to release various # archives using the same version :( %changelog * Tue Aug 26 2014 Remi Collet - 2.0.5-2 - improve SCL build * Thu Jun 05 2014 Remi Collet - 2.0.5-1 - Update to 2.0.5 (stable) * Tue Apr 8 2014 Remi Collet - 2.0.4-2 - add numerical prefix to extension configuration files * Fri Apr 04 2014 Remi Collet - 2.0.4-1 - Update to 2.0.4 (stable) - improve uopz.ini (comments) * Thu Apr 03 2014 Remi Collet - 2.0.3-1 - Update to 2.0.3 (stable) * Wed Apr 02 2014 Remi Collet - 2.0.2-1 - Update to 2.0.2 (stable) * Tue Apr 01 2014 Remi Collet - 2.0.1-1 - Update to 2.0.1 (stable) * Mon Mar 31 2014 Remi Collet - 2.0.0-1 - Update to 2.0.0 (2014-03-31 06:00:49, stable) * Sun Mar 30 2014 Remi Collet - 1.0.11-1 - Update to 1.0.11 (2014-03-30 14:05:44, beta) * Fri Mar 28 2014 Remi Collet - 1.0.5-1 - Update to 1.0.5 (2014-03-28 00:48:31, beta) * Thu Mar 27 2014 Remi Collet - 1.0.4-1 - Update to 1.0.4 (2014-03-27 18:34:03, beta) * Thu Mar 27 2014 Remi Collet - 1.0.4-0 - pre-release test build * Tue Mar 25 2014 Remi Collet - 1.0.3-1 - Update to 1.0.3 (2014-03-24 19:37:04, beta) * Mon Mar 24 2014 Remi Collet - 1.0.2-1 - Update to 1.0.2 (2014-03-24 10:34:02, beta) * Mon Mar 24 2014 Remi Collet - 1.0.1-1 - Update to 1.0.1 (2014-03-23 19:03:27, beta) * Sun Mar 23 2014 Remi Collet - 1.0.0-1 - initial package, version 1.0.0 (12:55, beta)