# remirepo spec file for php-pecl-phpy # # Copyright (c) 2024 Remi Collet # License: CC-BY-SA-4.0 # http://creativecommons.org/licenses/by-sa/4.0/ # # Please, preserve the changelog entries # %if 0%{?scl:1} %scl_package php-pecl-phpy %else %global _root_bindir %{_bindir} %endif %global pecl_name phpy %global ini_name 40-%{pecl_name}.ini %global with_zts 0%{!?_without_zts:%{?__ztsphp:1}} %global sources %{pecl_name}-%{version} %global _configure ../%{sources}/configure Summary: An extension for inter-calling Python and PHP Name: %{?scl_prefix}php-pecl-%{pecl_name} Version: 1.0.6 Release: 2%{?dist}%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')} License: Apache-2.0 URL: https://pecl.php.net/package/%{pecl_name} Source0: https://pecl.php.net/get/%{sources}.tgz Source1: https://github.com/swoole/phpy/blob/%{version}/LICENSE Patch0: 61.patch Patch1: 64.patch BuildRequires: make BuildRequires: %{?dtsprefix}gcc BuildRequires: %{?scl_prefix}php-devel >= 8.1 BuildRequires: %{?scl_prefix}php-pear # See https://github.com/swoole/phpy/issues/63 %if 0%{?rhel} == 8 # Retirement date: May 2029 (Full Life) BuildRequires: python3.12-devel >= 3.8 %global __usepyconf python3.12-config %else BuildRequires: python3-devel >= 3.8 %global __usepyconf python3-config %endif 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} %description This extension allows PHP to directly use Python modules and functions without RPC. Including Pytorch, transformer, numpy, tensorflow and other Python AI libraries, which can be used like calling PHP functions. Package built for PHP %(%{__php} -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')%{?scl: as Software Collection (%{scl} by %{?scl_vendor}%{!?scl_vendor:rh})}. %prep %setup -q -c # Don't install/register tests sed -e 's/role="test"/role="src"/' \ -e '/README/s/role="src"/role="doc"/' \ -e '/LICENSE/s/role="doc"/role="src"/' \ -i package.xml cd %{sources} # drop unneeded options (keep std=c++14) sed -s '/-Wall/d' -i config.m4 # See https://github.com/swoole/phpy/pull/61 %patch -P0 -p1 -b .pr61 # See https://github.com/swoole/phpy/pull/64 %patch -P1 -p1 -b .pr64 # See https://github.com/swoole/phpy/pull/62 cp %{SOURCE1} . # Sanity check, really often broken extver=$(sed -n '/# define PHP_PHPY_VERSION/{s/.* "//;s/".*$//;p}' php_phpy.h) if test "x${extver}" != "x%{version}"; then : Error: Upstream extension version is ${extver}, expecting %{version}. exit 1 fi cd .. mkdir NTS %if %{with_zts} mkdir ZTS %endif # Create configuration file cat > %{ini_name} << 'EOF' ; Enable %{pecl_name} extension module extension=%{pecl_name}.so EOF %build %{?dtsenable} cd %{sources} %{__phpize} cd ../NTS %configure \ --enable-phpy \ --with-python-config=%{_root_bindir}/%{__usepyconf} \ --with-libdir=%{_lib} \ --with-php-config=%{__phpconfig} make %{?_smp_mflags} %if %{with_zts} cd ../ZTS %configure \ --enable-phpy \ --with-python-config=%{_root_bindir}/%{__usepyconf} \ --with-libdir=%{_lib} \ --with-php-config=%{__ztsphpconfig} make %{?_smp_mflags} %endif %install %{?dtsenable} make -C NTS \ install INSTALL_ROOT=%{buildroot} # install config file install -D -m 644 %{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 %{ini_name} %{buildroot}%{php_ztsinidir}/%{ini_name} %endif # Documentation for i in LICENSE $(grep 'role="doc"' package.xml | sed -e 's/^.*name="//;s/".*$//') do install -Dpm 644 %{sources}/$i %{buildroot}%{pecl_docdir}/%{pecl_name}/$i done %check cd %{sources} # Minimal load test for NTS extension %{__php} --no-php-ini \ --define extension=%{buildroot}/%{php_extdir}/%{pecl_name}.so \ --modules | grep '^%{pecl_name}$' %if %{with_zts} # Minimal load test for ZTS extension %{__ztsphp} --no-php-ini \ --define extension=%{buildroot}/%{php_ztsextdir}/%{pecl_name}.so \ --modules | grep '^%{pecl_name}$' %endif %files %license %{sources}/LICENSE %doc %{pecl_docdir}/%{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 %changelog * Tue Aug 20 2024 Remi Collet - 1.0.6-2 - use python3.12 on EL-8 - open https://github.com/swoole/phpy/pull/65 use PKG_CHECK_MODULES * Tue Aug 20 2024 Remi Collet - 1.0.6-1 - initial package - open https://github.com/swoole/phpy/pull/61 use cxx linker - open https://github.com/swoole/phpy/pull/62 add LICENSE - open https://github.com/swoole/phpy/issues/63 broken with python 3.6 - open https://github.com/swoole/phpy/pull/64 report python version