From 12219f55fe14585575c45ac0da2939e185bbec62 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Wed, 14 Nov 2018 15:47:24 +0100 Subject: add php-maxmind-db-reader sub-package providing the library open https://github.com/maxmind/MaxMind-DB-Reader-php/issues/77 to report test failures on 32-bit --- php-maxminddb.spec | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 109 insertions(+), 5 deletions(-) diff --git a/php-maxminddb.spec b/php-maxminddb.spec index 4b3e7b5..a9c229f 100644 --- a/php-maxminddb.spec +++ b/php-maxminddb.spec @@ -9,8 +9,16 @@ %if 0%{?scl:1} %global sub_prefix %{scl_prefix} %scl_package php-maxminddb +%global with_lib 0 %else %global pkg_name %{name} +%global with_lib 1 +%endif +# for the pure PHP library - disabled on EL < 8 because of PHPUnit dependency +%if 0%{?fedora} >= 20 || 0%{?rhel} >= 8 +%global with_tests 0%{!?_without_tests:1} +%else +%global with_tests 0%{?_with_tests:1} %endif @@ -21,11 +29,15 @@ %global pecl_name maxminddb %global with_zts 0%{!?_without_zts:%{?__ztsphp:1}} %global ini_name 40-%{pecl_name}.ini +# pure PHP library +%global pk_vendor maxmind-db +%global pk_project reader Summary: MaxMind DB Reader extension Name: %{?sub_prefix}php-maxminddb Version: 1.3.0 -Release: 2%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}} +%global rpmrel 3 +Release: %{rpmrel}%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}} License: ASL 2.0 URL: https://github.com/%{gh_owner}/%{gh_project} @@ -90,6 +102,53 @@ MaxMind\Db\Reader. Package built for PHP %(%{__php} -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')%{?scl: as Software Collection (%{scl} by %{?scl_vendor}%{!?scl_vendor:rh})}. +%if %{with_lib} +%package -n php-%{pk_vendor}-%{pk_project} +Summary: MaxMind DB Reader +Release: %{rpmrel}%{?dist} + +BuildArch: noarch +BuildRequires: php-fedora-autoloader-devel +%if %{with_tests} +BuildRequires: php-bcmath +BuildRequires: php-gmp +# from composer.json "require-dev": { +# "friendsofphp/php-cs-fixer": "2.*", +# "phpunit/phpunit": "4.* || 5.*", +# "satooshi/php-coveralls": "1.0.*", +# "squizlabs/php_codesniffer": "3.*" +BuildRequires: php-composer(phpunit/phpunit) +%endif + +# from composer.json "require": { +# "php": ">=5.4" +Requires: php(language) >= 5.4 +# from composer.json "suggest": { +# "ext-bcmath": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder", +# "ext-gmp": "bcmath or gmp is required for decoding larger integers with the pure PHP decoder", +# "ext-maxminddb": "A C-based database decoder that provides significantly faster lookups" +%if 0%{?fedora} >= 27 || 0%{?rhel} >= 8 +Recommends: php-bcmath +Recommends: php-gmp +Recommends: php-maxminddb +%endif +# From phpcompatifo report for 1.3.0 +Requires: php-filter +Requires: php-spl + +Provides: php-composer(%{pk_vendor}/%{pk_project}) = %{version} + + +%description -n php-%{pk_vendor}-%{pk_project} +MaxMind DB Reader PHP API. + +MaxMind DB is a binary file format that stores data indexed by +IP address subnets (IPv4 or IPv6). + +Autoloader: %{_datadir}/php/MaxMind/Db/Reader/autoload.php +%endif + + %prep %setup -q -n %{gh_project}-%{gh_commit} %patch0 -p1 -b up0 @@ -97,6 +156,13 @@ Package built for PHP %(%{__php} -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSIO %patch2 -p1 -b up2 %patch3 -p1 -b up3 +%if %{with_lib} +%{_bindir}/phpab \ + --template fedora \ + --output src/MaxMind/Db/Reader/autoload.php \ + src/MaxMind/Db +%endif + mv ext NTS cd NTS @@ -156,21 +222,27 @@ make -C ZTS install INSTALL_ROOT=%{buildroot} install -D -m 644 %{ini_name} %{buildroot}%{php_ztsinidir}/%{ini_name} %endif +%if %{with_lib} +mkdir -p %{buildroot}%{_datadir}/php/MaxMind +cp -pr src/MaxMind/Db %{buildroot}%{_datadir}/php/MaxMind/Db +%endif %check +ret=0 + cd NTS : 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 +: Upstream test suite for NTS extension TEST_PHP_EXECUTABLE=%{__php} \ TEST_PHP_ARGS="-n -d extension=%{buildroot}%{php_extdir}/%{pecl_name}.so" \ NO_INTERACTION=1 \ REPORT_EXIT_STATUS=1 \ -%{__php} -n run-tests.php --show-diff || : ignore +%{__php} -n run-tests.php --show-diff || ret=1 %if %{with_zts} cd ../ZTS @@ -179,14 +251,31 @@ cd ../ZTS --define extension=%{buildroot}%{php_ztsextdir}/%{pecl_name}.so \ --modules | grep %{pecl_name} -: Upstream test suite for ZTS extension +: Upstream test suite for ZTS extension TEST_PHP_EXECUTABLE=%{__ztsphp} \ TEST_PHP_ARGS="-n -d extension=%{buildroot}%{php_ztsextdir}/%{pecl_name}.so" \ NO_INTERACTION=1 \ REPORT_EXIT_STATUS=1 \ -%{__ztsphp} -n run-tests.php --show-diff +%{__ztsphp} -n run-tests.php --show-diff || ret=1 %endif +%if %{with_lib} && %{with_tests} +cd .. +: Upstream test suite for the library +for cmd in php php56 php70 php71 php72 php73; do + if which $cmd; then + $cmd %{_bindir}/phpunit \ + --bootstrap %{buildroot}%{_datadir}/php/MaxMind/Db/Reader/autoload.php \ +%if %{__isa_bits} == 64 + --verbose || ret=1 +%else + --verbose || : ignore per https://github.com/maxmind/MaxMind-DB-Reader-php/issues/77 +%endif + fi +done +%endif +exit $ret + %files %{!?_licensedir:%global license %%doc} @@ -202,7 +291,22 @@ REPORT_EXIT_STATUS=1 \ %endif +%if %{with_lib} +%files -n php-%{pk_vendor}-%{pk_project} +%license LICENSE +%doc composer.json +%doc *.md +%dir %{_datadir}/php/MaxMind + %{_datadir}/php/MaxMind/Db +%endif + + %changelog +* Wed Nov 14 2018 Remi Collet - 1.3.0-3 +- add php-maxmind-db-reader sub-package providing the library +- open https://github.com/maxmind/MaxMind-DB-Reader-php/issues/77 + to report test failures on 32-bit + * Thu Nov 8 2018 Remi Collet - 1.3.0-2 - add upstream patches from merged PRs - add weak dependencies on geolite2 databases -- cgit