Blob Blame History Raw
# Fedora spec file for php-zstd
# without SCL compatibility from:
#
# remirepo spec file for php-zstd
#
# Copyright (c) 2018-2024 Remi Collet
# License: CC-BY-SA-4.0
# http://creativecommons.org/licenses/by-sa/4.0/
#
# Please, preserve the changelog entries
#

%global pecl_name   zstd
%global with_zts    0%{!?_without_zts:%{?__ztsphp:1}}
%global ini_name    40-%{pecl_name}.ini
%global sources     %{pecl_name}-%{version}
%global _configure  ../%{sources}/configure

Summary:       Zstandard extension
Name:          php-%{pecl_name}
Version:       0.13.3
Release:       2%{?dist}
License:       MIT
URL:           https://pecl.php.net/package/%{pecl_name}
Source0:       https://pecl.php.net/get/%{sources}.tgz

ExcludeArch:    %{ix86}

BuildRequires: make
BuildRequires: gcc
BuildRequires: php-devel >= 7.0
BuildRequires: php-pecl-apcu-devel
BuildRequires: php-pear
BuildRequires: pkgconfig(libzstd)

Requires:      php(zend-abi) = %{php_zend_api}
Requires:      php(api) = %{php_core_api}

Provides:       php-pecl-%{pecl_name}          = %{version}
Provides:       php-pecl-%{pecl_name}%{?_isa}  = %{version}
Provides:       php-pecl(%{pecl_name})         = %{version}
Provides:       php-pecl(%{pecl_name})%{?_isa} = %{version}


%description
PHP extension for compression and decompression with Zstandard library.


%package devel
Summary:       %{name} developer files (header)
Requires:      %{name}%{?_isa} = %{version}-%{release}
Requires:      php-devel%{?_isa}

%description devel
These are the files needed to compile programs using %{name}.


%prep
%setup -qc

sed -e '/LICENSE/s/role="doc"/role="src"/' -i package.xml
sed -e '\:"zstd/:d' -i package.xml

cd %{sources}
# Use the system library
rm -r zstd

# Sanity check, really often broken
extver=$(sed -n '/#define PHP_ZSTD_VERSION/{s/.* "//;s/".*$//;p}' php_zstd.h)
if test "x${extver}" != "x%{version}%{?gh_date:-dev}"; then
   : Error: Upstream extension version is ${extver}, expecting %{version}%{?gh_date:-dev}.
   exit 1
fi
cd ..

mkdir NTS
%if %{with_zts}
mkdir ZTS
%endif

# Drop in the bit of configuration
cat << 'EOF' | tee %{ini_name}
; Enable '%{summary}' extension module
extension = %{pecl_name}.so
EOF


%build
%{?dtsenable}

cd %{sources}
%{__phpize}

cd ../NTS
%configure \
    --with-php-config=%{__phpconfig} \
    --with-libzstd \
    --with-libdir=%{_lib} \
    --enable-zstd
make %{?_smp_mflags}

%if %{with_zts}
cd ../ZTS
%configure \
    --with-php-config=%{__ztsphpconfig} \
    --with-libzstd \
    --with-libdir=%{_lib} \
    --enable-zstd
make %{?_smp_mflags}
%endif


%install
%{?dtsenable}

# Install the NTS stuff
make -C NTS install INSTALL_ROOT=%{buildroot}
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}
# Install the ZTS stuff
make -C ZTS install INSTALL_ROOT=%{buildroot}
install -D -m 644 %{ini_name} %{buildroot}%{php_ztsinidir}/%{ini_name}
%endif

# Test & Documentation
cd %{sources}
for i in $(grep 'role="test"' ../package.xml | sed -e 's/^.*name="//;s/".*$//')
do install -Dpm 644 $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 $i %{buildroot}%{pecl_docdir}/%{pecl_name}/$i
done


%check
cd %{sources}

export REPORT_EXIT_STATUS=1
%ifarch s390x
: ignore test with erratic results
rm tests/streams_*phpt
%endif

: Minimal load test for NTS extension
%{__php} --no-php-ini \
    --define extension=%{buildroot}%{php_extdir}/%{pecl_name}.so \
    --modules | grep %{pecl_name}

: Check that apcu is aware of zstd serializer
%{__php} --no-php-ini \
    --define extension=apcu.so \
    --define apc.enabled=1 \
    --define apc.enable_cli=1 \
    --define extension=%{buildroot}%{php_extdir}/%{pecl_name}.so \
    --ri apcu | grep '%{pecl_name}'

: Upstream test suite  for NTS extension
TEST_PHP_EXECUTABLE=%{__php} \
TEST_PHP_ARGS="-n -d extension=%{buildroot}%{php_extdir}/%{pecl_name}.so" \
%{__php} -n run-tests.php -q --offline --show-diff

%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}

: Upstream test suite  for ZTS extension
TEST_PHP_EXECUTABLE=%{__ztsphp} \
TEST_PHP_ARGS="-n -d extension=%{buildroot}%{php_ztsextdir}/%{pecl_name}.so" \
%{__ztsphp} -n run-tests.php -q --offline --show-diff
%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


%files devel
%doc %{pecl_testdir}/%{pecl_name}
%{php_incldir}/ext/%{pecl_name}

%if %{with_zts}
%{php_ztsincldir}/ext/%{pecl_name}
%endif


%changelog
* Fri Apr 12 2024 Remi Collet <remi@remirepo.net> - 0.13.2-2
- drop 32-bit support
  https://fedoraproject.org/wiki/Changes/php_no_32_bit

* Mon Jan 29 2024 Remi Collet <remi@remirepo.net> - 0.13.2-1
- update to 0.13.3
- drop patch merged upstream

* Sat Jan 27 2024 Remi Collet <remi@remirepo.net> - 0.13.2-5
- add patch for GCC 14

* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.13.2-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild

* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.13.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild

* Tue Jan 16 2024 Remi Collet <remi@remirepo.net> - 0.13.2-1
- update to 0.13.2 (no change)

* Tue Oct 03 2023 Remi Collet <remi@remirepo.net> - 0.13.1-2
- rebuild for https://fedoraproject.org/wiki/Changes/php83

* Thu Sep  7 2023 Remi Collet <remi@remirepo.net> - 0.13.1-1
- update to 0.13.1 (no change)

* Wed Sep  6 2023 Remi Collet <remi@remirepo.net> - 0.13.0-1
- update to 0.13.0
- fix tests installation path
- build out of sources tree

* Fri Jul 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 0.12.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild

* Tue May  2 2023 Remi Collet <remi@remirepo.net> - 0.12.3-1
- update to 0.12.3
- drop patch merged upstream

* Fri Apr 28 2023 Remi Collet <remi@remirepo.net> - 0.12.2-1
- update to 0.12.2
- fix extension version and build warnings, using patch from
  https://github.com/kjdev/php-ext-zstd/pull/57

* Mon Jan 23 2023 Remi Collet <remi@remirepo.net> - 0.12.1-1
- update to 0.12.1

* Fri Jan 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 0.12.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild

* Tue Nov 22 2022 Remi Collet <remi@remirepo.net> - 0.12.0-1
- update to 0.12.0

* Wed Oct 05 2022 Remi Collet <remi@remirepo.net> - 0.11.0-5
- rebuild for https://fedoraproject.org/wiki/Changes/php82

* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.11.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild

* Fri Jan 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.11.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild

* Thu Oct 28 2021 Remi Collet <remi@remirepo.net> - 0.11.0-2
- rebuild for https://fedoraproject.org/wiki/Changes/php81

* Mon Oct  4 2021 Remi Collet <remi@remirepo.net> - 0.11.0-1
- update to 0.11.0

* Tue Jul 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.10.0-4
- Second attempt - Rebuilt for
  https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild

* Thu Mar  4 2021 Remi Collet <remi@remirepo.net> - 0.10.0-3
- rebuild for https://fedoraproject.org/wiki/Changes/php80

* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.10.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild

* Fri Jan 22 2021 Remi Collet <remi@remirepo.net> - 0.10.0-1
- update to 0.10.0
- enable apcu serializer

* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.9.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild

* Thu Jun  4 2020 Remi Collet <remi@remirepo.net> - 0.9.0-1
- update to 0.9.0 (stable)

* Fri Feb  7 2020 Remi Collet <remi@remirepo.net> - 0.8.0-1
- update to 0.8.0
- sources from pecl

* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.3-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild

* Fri Oct 04 2019 Remi Collet <remi@remirepo.net> - 0.7.3-3
- rebuild for https://fedoraproject.org/wiki/Changes/php74

* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild

* Wed Apr 24 2019 Remi Collet <remi@remirepo.net> - 0.7.3-1
- cleanup for Fedora review

* Wed Apr 24 2019 Remi Collet <remi@remirepo.net> - 0.7.3-1
- update to 0.7.3

* Tue Apr 23 2019 Remi Collet <remi@remirepo.net> - 0.7.2-1
- update to 0.7.2
- use bundled libzstd 1.4.0

* Fri Apr 19 2019 Remi Collet <remi@remirepo.net> - 0.7.1-1
- update to 0.7.1

* Tue Apr 16 2019 Remi Collet <remi@remirepo.net> - 0.7.0-1
- update to 0.7.0

* Mon Apr 15 2019 Remi Collet <remi@remirepo.net> - 0.6.1-2
- test build for Stream implementation, from
  https://github.com/kjdev/php-ext-zstd/pull/17

* Thu Apr  4 2019 Remi Collet <remi@remirepo.net> - 0.6.1-1
- update to 0.6.1

* Tue Mar 26 2019 Remi Collet <remi@remirepo.net> - 0.6.0-1
- update to 0.6.0

* Mon Jan  7 2019 Remi Collet <remi@remirepo.net> - 0.5.0-1
- update to 0.5.0

* Thu Aug 16 2018 Remi Collet <remi@remirepo.net> - 0.4.14-4
- ignore test suite results with newer system library

* Thu Aug 16 2018 Remi Collet <remi@remirepo.net> - 0.4.14-3
- rebuild for 7.3.0beta2 new ABI

* Wed Jul 18 2018 Remi Collet <remi@remirepo.net> - 0.4.14-2
- rebuild for 7.3.0alpha4 new ABI

* Tue Jun 19 2018 Remi Collet <remi@remirepo.net> - 0.4.14-1
- update to 0.4.14

* Mon Apr  9 2018 Remi Collet <remi@remirepo.net> - 0.4.13-1
- update to 0.4.13

* Wed Jan 31 2018 Remi Collet <remi@remirepo.net> - 0.4.12-1
- update to 0.4.12 (no change, PR merged upstream)

* Tue Jan 30 2018 Remi Collet <remi@remirepo.net> - 0.4.11-1
- new package, version 0.4.11
- add patch to build with system libzstd from
  https://github.com/kjdev/php-ext-zstd/pull/7