diff options
| author | Remi Collet <remi@remirepo.net> | 2026-05-16 15:38:33 +0200 |
|---|---|---|
| committer | Remi Collet <remi@php.net> | 2026-05-16 15:38:33 +0200 |
| commit | 8243434f684a373cac5226d684c6e168c8e3a45e (patch) | |
| tree | c0d546f41fd08e076e330a5cfa7d88f6e8f95fe1 /php-iliaal-fastchart.spec | |
open https://github.com/iliaal/fastchart/pull/1 fix test, ensure searching in the right place
open https://github.com/iliaal/fastchart/pull/2 Fix undefined $ext_builddir
open https://github.com/iliaal/fastchart/pull/3 fix tests, more font paths
Diffstat (limited to 'php-iliaal-fastchart.spec')
| -rw-r--r-- | php-iliaal-fastchart.spec | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/php-iliaal-fastchart.spec b/php-iliaal-fastchart.spec new file mode 100644 index 0000000..0370fcf --- /dev/null +++ b/php-iliaal-fastchart.spec @@ -0,0 +1,171 @@ +# remirepo spec file for php-iliaal-fastchart +# +# 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-fastchart +%else +%global pkg_name %{name} +%endif + +%bcond_without tests + +%global gh_owner iliaal +%global gh_project fastchart +%global ext_name fastchart +%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} + +Name: %{?scl_prefix}php-%{pie_vend}-%{pie_proj} +Summary: Native C PHP extension for fast chart rendering +# Extension is BSD-3-Clause +# Libraries are MIT +License: BSD-3-Clause AND MIT +Version: 1.1.0 +Release: 1%{?dist} +%forgemeta +URL: %{forgeurl} +Source0: %{forgesource} + +Patch0: https://patch-diff.githubusercontent.com/raw/iliaal/fastchart/pull/1.patch +Patch1: https://patch-diff.githubusercontent.com/raw/iliaal/fastchart/pull/2.patch +Patch2: https://patch-diff.githubusercontent.com/raw/iliaal/fastchart/pull/3.patch + +BuildRequires: make +BuildRequires: %{?dtsprefix}gcc +BuildRequires: %{?scl_prefix}php-devel >= 8.3 +BuildRequires: pkgconfig(freetype2) +BuildRequires: pkgconfig(libpng) +BuildRequires: pkgconfig(libjpeg) +BuildRequires: pkgconfig(libwebp) +# for tests +# /usr/share/fonts/dejavu-sans-fonts/DejaVuSans.ttf +BuildRequires: dejavu-sans-fonts +BuildRequires: %{?scl_prefix}php-gd +BuildRequires: %{?scl_prefix}php-simplexml + +Requires: %{?scl_prefix}php(zend-abi) = %{php_zend_api} +Requires: %{?scl_prefix}php(api) = %{php_core_api} +Requires: dejavu-sans-fonts + +Provides: bundled(plutovg) = 1.3.2 +Provides: bundled(plutosvg) = 0.0.7 +Provides: bundled(qrcodegen) + +# 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 +Native C PHP extension. 26 chart types behind a modern OO API with +fluent setters and final classes. Line, area, bar, scatter, bubble, +pie, radar, polar, surface, contour, gauge, gantt, box-plot, treemap, +funnel, waterfall, heatmap, linear meter, plus a deep StockChart +(seven candle styles, SMA / EMA / WMA overlays, volume + indicator panes). + +SVG is the canonical render format. PNG / JPG / WebP outputs flatten text +to glyph paths, run plutovg over the resulting SVG, and encode the RGBA buffer +with libpng / libjpeg-turbo / libwebp. The same chart object serves a sharp +<svg> for dashboards or a PNG for emails without rebuilding state. +renderToFile() picks the encoder from the extension; +renderPng() / renderJpeg() / renderWebp() / renderSvg() return bytes in-process. + +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 + +%patch -P0 -p1 +%patch -P1 -p1 +%patch -P2 -p1 + +cp vendor/qrcodegen/LICENSE qrcodegen_LICENSE +cp vendor/plutovg/LICENSE plutovg_LICENSE +cp vendor/plutosvg/LICENSE plutosvg_LICENSE + +# Sanity check, really often broken +extver=$(sed -n '/#define PHP_FASTCHART_VERSION/{s/.* "//;s/".*$//;p}' php_fastchart.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-fastchart + +%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}$' + +%{__php} --no-php-ini \ + --define extension=%{buildroot}%{php_extdir}/%{ext_name}.so \ + --ri %{ext_name} + +%if %{with tests} +: Upstream test suite for NTS extension +TEST_PHP_ARGS="-n -d extension=gd -d extension=simplexml -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> - 1.1.0-1 +- new package +- open https://github.com/iliaal/fastchart/pull/1 fix test, ensure searching in the right place +- open https://github.com/iliaal/fastchart/pull/2 Fix undefined $ext_builddir +- open https://github.com/iliaal/fastchart/pull/3 fix tests, more font paths |
