summaryrefslogtreecommitdiffstats
path: root/php-maxminddb.spec
diff options
context:
space:
mode:
authorRemi Collet <remi@remirepo.net>2018-11-14 15:47:24 +0100
committerRemi Collet <remi@remirepo.net>2018-11-14 15:47:24 +0100
commit12219f55fe14585575c45ac0da2939e185bbec62 (patch)
tree8af10b05e55b0ad33bf00cb45456c5d68e34d318 /php-maxminddb.spec
parent2cad8f700849d06000ccfc1d877a0c6bf508d090 (diff)
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
Diffstat (limited to 'php-maxminddb.spec')
-rw-r--r--php-maxminddb.spec114
1 files 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 <remi@remirepo.net> - 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 <remi@remirepo.net> - 1.3.0-2
- add upstream patches from merged PRs
- add weak dependencies on geolite2 databases