diff options
Diffstat (limited to 'php-iliaal-fastjson.spec')
| -rw-r--r-- | php-iliaal-fastjson.spec | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/php-iliaal-fastjson.spec b/php-iliaal-fastjson.spec new file mode 100644 index 0000000..c77a0b1 --- /dev/null +++ b/php-iliaal-fastjson.spec @@ -0,0 +1,141 @@ +# remirepo spec file for php-iliaal-fastjson +# +# SPDX-FileCopyrightText: Copyright 2026 Remi Collet +# SPDX-License-Identifier: CECILL-2.1 +# http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +# +# Please, preserve the changelog entries +# +%if 0%{?scl:1} +%scl_package php-iliaal-fastjson +%else +%global pkg_name %{name} +%endif + +%bcond_without tests + +%global gh_owner iliaal +%global gh_project fastjson +%global ext_name fastjson +%global pie_vend %{gh_owner} +%global pie_proj %{gh_project} +%global ini_name 40-%{ext_name}.ini +%global forgeurl https://github.com/%{gh_owner}/%{gh_project} +%global tag %{version} +# for EL-8 to avoid TAG usage +%global archivename %{gh_project}-%{tag} + +%global libyyjsonver 0.12.0 + +Name: %{?scl_prefix}php-%{pie_vend}-%{pie_proj} +Summary: Fast JSON encode/decode/validate for PHP +# Extension is BSD-3-Clause +# Library is MIT +License: BSD-3-Clause AND MIT +Version: 0.2.1 +Release: 1%{?dist} +%forgemeta +URL: %{forgeurl} +Source0: %{forgesource} + + +BuildRequires: make +BuildRequires: %{?dtsprefix}gcc +BuildRequires: %{?scl_prefix}php-devel >= 8.3 + +Requires: %{?scl_prefix}php(zend-abi) = %{php_zend_api} +Requires: %{?scl_prefix}php(api) = %{php_core_api} + +# See vendor/yyjson/PATCHES.md +Provides: bundled(yyjson) = %{libyyjsonver} + +# Extension +Provides: %{?scl_prefix}php-%{ext_name} = %{version} +Provides: %{?scl_prefix}php-%{ext_name}%{?_isa} = %{version} +# PECL +Provides: %{?scl_prefix}php-pecl-%{ext_name} = %{version} +Provides: %{?scl_prefix}php-pecl-%{ext_name}%{?_isa} = %{version} +# PIE +Provides: %{?scl_prefix}php-pie(%{pie_vend}/%{pie_proj}) = %{version} + + +%description +Fast JSON encode, decode, and validate for PHP. + +Drop-in alternative to ext/json with a namespaced fastjson_* API +and json_last_error-compatible error reporting. + +Backed by yyjson %{libyyjsonver}, one of the fastest portable JSON libraries. + +Coexists with ext/json; adoption is opt-in per call site. + + +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 +%forgesetup + +# Sanity check, really often broken +extver=$(sed -n '/#define PHP_FASTJSON_VERSION/{s/.* "//;s/".*$//;p}' php_fastjson.h) +if test "x${extver}" != "x%{version}"; then + : Error: Upstream extension version is ${extver}, expecting %{version}. + exit 1 +fi + +# Drop in the bit of configuration +cat << 'EOF' | tee %{ini_name} +; Enable '%{summary}' extension module +extension = %{ext_name} +EOF + + +%build +%{?dtsenable} + +%{__phpize} +sed -e 's/INSTALL_ROOT/DESTDIR/' -i build/Makefile.global + +%configure \ + --with-php-config=%{__phpconfig} \ + --with-libdir=%{_lib} \ + --enable-fastjson + +%make_build + + +%install +%{?dtsenable} + +# Install the NTS stuff +%make_install +install -D -m 644 %{ini_name} %{buildroot}%{php_inidir}/%{ini_name} + + +%check +: Minimal load test for NTS extension +%{__php} --no-php-ini \ + --define extension=%{buildroot}%{php_extdir}/%{ext_name}.so \ + --modules | grep '^%{ext_name}$' + +%if %{with tests} +: Upstream test suite for NTS extension +TEST_PHP_ARGS="-n -d extension=%{buildroot}%{php_extdir}/%{ext_name}.so" \ +%{__php} -n run-tests.php --show-diff %{?_smp_mflags} +%endif + + +%files +%license LICENSE +%doc composer.json +%doc docs +%doc *.md + +%config(noreplace) %{php_inidir}/%{ini_name} +%{php_extdir}/%{ext_name}.so + + + +%changelog +* Sat May 16 2026 Remi Collet <remi@remirepo.net> - 0.2.1-1 +- new package |
