# 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 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 - 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