# we dont want -z defs linker flag %undefine _strict_symbol_defs_build %global pecl_name brotli %global with_zts 0%{!?_without_zts:%{?__ztsphp:1}} %global ini_name 40-%{pecl_name}.ini Name: php-%{pecl_name} Version: 0.18.2 Release: 1%{?dist} Summary: Brotli Extension for PHP License: MIT URL: https://github.com/kjdev/php-ext-brotli Source0: php-brotli-%{version}.tar.gz BuildRequires: gcc BuildRequires: make BuildRequires: php-devel >= 7.0 Requires: php(zend-abi) = %{php_zend_api} Requires: php(api) = %{php_core_api} Provides: bundled(brotli) = 1.1.0 %description This extension allows Brotli compression and decompression. Brotli is a generic-purpose lossless compression algorithm that compresses data using a combination of a modern variant of the LZ77 algorithm, Huffman coding and 2nd order context modeling, with a compression ratio comparable to the best currently available general-purpose compression methods. %package devel Summary: Development files for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} Requires: php-devel%{?_isa} %description devel These are the files needed to compile programs using %{name}. %prep %setup -q -n php-ext-brotli-%{version} # Sanity check extver=$(sed -n '/#define BROTLI_EXT_VERSION/{s/.* "//;s/".*$//;p}' php_brotli.h) if test "x${extver}" != "x%{version}"; then : Error: Upstream extension version is ${extver}, expecting %{version}. exit 1 fi %if %{with_zts} # Duplicate for ZTS build cp -pr . ../ZTS %endif %build # NTS build %{_bindir}/phpize %configure \ --with-php-config=%{_bindir}/php-config \ --with-libdir=%{_lib} \ --enable-brotli make %{?_smp_mflags} %if %{with_zts} # ZTS build cd ../ZTS %{_bindir}/zts-phpize %configure \ --with-php-config=%{_bindir}/zts-php-config \ --with-libdir=%{_lib} \ --enable-brotli make %{?_smp_mflags} %endif %install # Install NTS extension make install INSTALL_ROOT=%{buildroot} # Install config file install -d %{buildroot}%{php_inidir} cat > %{buildroot}%{php_inidir}/%{ini_name} << EOF ; Enable brotli extension module extension = %{pecl_name}.so ; Configuration ;brotli.output_compression = 0 ;brotli.output_compression_level = -1 EOF %if %{with_zts} # Install ZTS extension cd ../ZTS make install INSTALL_ROOT=%{buildroot} # Install ZTS config file install -d %{buildroot}%{php_ztsinidir} cp %{buildroot}%{php_inidir}/%{ini_name} \ %{buildroot}%{php_ztsinidir}/%{ini_name} %endif # Install headers for devel package install -d %{buildroot}%{php_incldir}/ext/%{pecl_name} cp -p php_brotli.h %{buildroot}%{php_incldir}/ext/%{pecl_name}/ %check # Minimal load test for NTS extension %{__php} --no-php-ini \ --define 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 extension=%{buildroot}%{php_extdir}/%{pecl_name}.so" \ REPORT_EXIT_STATUS=1 \ %{__php} -n run-tests.php -q --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 cd ../ZTS TEST_PHP_EXECUTABLE=%{__ztsphp} \ TEST_PHP_ARGS="-n -d extension=%{buildroot}%{php_ztsextdir}/%{pecl_name}.so" \ REPORT_EXIT_STATUS=1 \ %{__ztsphp} -n run-tests.php -q --show-diff %endif %files %license LICENSE %doc README.md %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 %{php_incldir}/ext/%{pecl_name} %changelog * Fri Sep 05 2025 COPR Builder - 0.18.2-1 - Automated build from GitHub release 0.18.2 - Built with bundled brotli library - Supports both NTS and ZTS builds