Blob Blame History Raw
# remirepo/fedora spec file for php-bartlett-php-compatinfo-db
#
# Copyright (c) 2015-2020 Remi Collet
# License: CC-BY-SA
# http://creativecommons.org/licenses/by-sa/4.0/
#
# Please, preserve the changelog entries
#
# See https://github.com/llaville/php-compatinfo-db/releases
%global gh_commit    bcd0fa30b6d85e12ee8d22f3d7708004453b5205
%global gh_short     %(c=%{gh_commit}; echo ${c:0:7})
#global gh_date      20151031
%global gh_owner     llaville
%global gh_project   php-compatinfo-db
%global upstream_version  2.10.0
#global upstream_prever   RC1
# Namespace
%global ns_vendor    Bartlett
%global ns_project   CompatInfoDb
# Composer
%global c_vendor     bartlett
%global c_project    php-compatinfo-db
%global with_tests   0%{!?_without_tests:1}

Name:           php-%{c_vendor}-%{c_project}
Version:        %{upstream_version}%{?upstream_prever:~%{upstream_prever}}
%global specrel 1
Release:        %{?gh_date:1%{specrel}.%{?prever}%{!?prever:%{gh_date}git%{gh_short}}}%{!?gh_date:%{specrel}}%{?dist}
Summary:        Reference Database to be used with php-compatinfo library

License:        BSD
URL:            https://github.com/%{gh_owner}/%{gh_project}
Source0:        https://github.com/%{gh_owner}/%{gh_project}/archive/%{gh_commit}/%{name}-%{upstream_version}%{?upstream_prever}-%{gh_short}.tar.gz

# Fix autoloader path
# Fix sqlite database path
# Fix version and avoir jean85/pretty-package-versions (relying on composer.lock)
Patch0:         %{name}-2.0-rpm.patch
# CURL_SSLVERSION constants have been backported
Patch1:         %{name}-curltls.patch

# upstream patches

BuildArch:      noarch
# Needed to build the database from sources
BuildRequires:  php(language) >= 7.1
BuildRequires: (php-composer(composer/semver)               >= 1.0   with php-composer(composer/semver)               <  2)
BuildRequires: (php-composer(symfony/console)               >= 3.0   with php-composer(symfony/console)               <  5)
BuildRequires: (php-composer(league/tactician)              >= 1.0   with php-composer(league/tactician)              <  2)
BuildRequires: (php-composer(zendframework/zenddiagnostics) >= 1.3   with php-composer(zendframework/zenddiagnostics) <  2)
BuildRequires:  php-pdo
BuildRequires:  php-reflection
BuildRequires:  php-curl
BuildRequires:  php-intl
BuildRequires:  php-libxml
BuildRequires:  php-openssl
BuildRequires:  php-pcre
BuildRequires:  php-spl
BuildRequires:  php-json
BuildRequires:  php-pdo_sqlite
# For our patch / autoloader
BuildRequires:  php-composer(fedora/autoloader)
# From composer.json, "require-dev": {
#        "psr/log": "^1.0",
#        "monolog/monolog": "^1.10",
#        "bartlett/phpunit-loggertestlistener": "^2.0",
#        "phpunit/php-timer": "^2.0"
BuildRequires:  php-cli
%if %{with_tests}
BuildRequires:  php-composer(phpunit/phpunit)
%endif

# From composer.json, "require"
#        "php": "^7.1",
#        "composer/semver": "^1.0",
#        "ext-curl": "*",
#        "ext-intl": "*",
#        "ext-libxml": "*",
#        "ext-openssl": "*",
#        "ext-pcre": "*",
#        "ext-spl": "*",
#        "ext-json": "*",
#        "ext-pdo_sqlite": "*",
#        "symfony/console": "^3.0||^4.0",
#        "jean85/pretty-package-versions": "^1.2",
#        "league/tactician": "^1.0",
#        "zendframework/zenddiagnostics": "^1.3"
Requires:       php(language) >= 7.1
Requires:      (php-composer(composer/semver)               >= 1.0   with php-composer(composer/semver)               <  2)
Requires:      (php-composer(symfony/console)               >= 3.0   with php-composer(symfony/console)               <  5)
Requires:      (php-composer(league/tactician)              >= 1.0   with php-composer(league/tactician)              <  2)
Requires:      (php-composer(zendframework/zenddiagnostics) >= 1.3   with php-composer(zendframework/zenddiagnostics) <  2)
Requires:       php-pdo
Requires:       php-reflection
Requires:       php-curl
Requires:       php-date
Requires:       php-intl
Requires:       php-json
Requires:       php-libxml
Requires:       php-openssl
Requires:       php-pcre
Requires:       php-spl
Requires:       php-pdo_sqlite
# Required by autoloader
Requires:       php-composer(fedora/autoloader)

Provides:       php-composer(%{c_vendor}/%{c_project}) = %{version}
# Extracted from bartlett/php-compatinfo 4
Conflicts:      php-bartlett-PHP-CompatInfo < 5


%description
%{summary}.


%prep
%setup -q -n %{gh_project}-%{gh_commit}

%patch0 -p1 -b .rpm
%patch1 -p0 -b .curltls

cat << 'EOF' | tee src/autoload.php
<?php
/**
 * Autoloader %{name} and its dependencies
 */

require_once '%{_datadir}/php/Fedora/Autoloader/autoload.php';

\Fedora\Autoloader\Autoload::addPsr4('Bartlett\\CompatInfoDb\\', __DIR__);
\Fedora\Autoloader\Dependencies::required(array(
    '%{_datadir}/php/Composer/Semver/autoload.php',
    [
        '%{_datadir}/php/Symfony4/Component/Console/autoload.php',
        '%{_datadir}/php/Symfony3/Component/Console/autoload.php',
    ],
    '%{_datadir}/php/League/Tactician/autoload.php',
    '%{_datadir}/php/ZendDiagnostics/autoload.php',
));
EOF

# Use package version
sed -e 's/@VERSION@/%{upstream_version}%{?upstream_prever}/' -i src/Presentation/Console/Application.php

# Cleanup patched files
find src -name \*rpm -delete -print


%build
: Ensure current version is known by reference
OPT=$(php -r '
  require "src/autoload.php";

  switch (PHP_MAJOR_VERSION . PHP_MINOR_VERSION) {
    case "54":
      $max = Bartlett\CompatInfoDb\ExtensionFactory::LATEST_PHP_5_4;
      break;
    case "55":
      $max = Bartlett\CompatInfoDb\ExtensionFactory::LATEST_PHP_5_5;
      break;
    case "56":
      $max = Bartlett\CompatInfoDb\ExtensionFactory::LATEST_PHP_5_6;
      break;
    case "70":
      $max = Bartlett\CompatInfoDb\ExtensionFactory::LATEST_PHP_7_0;
      break;
    case "71":
      $max = Bartlett\CompatInfoDb\ExtensionFactory::LATEST_PHP_7_1;
      break;
    case "72":
      $max = Bartlett\CompatInfoDb\ExtensionFactory::LATEST_PHP_7_2;
      break;
    case "73":
      $max = Bartlett\CompatInfoDb\ExtensionFactory::LATEST_PHP_7_3;
      break;
    case "74":
      $max = Bartlett\CompatInfoDb\ExtensionFactory::LATEST_PHP_7_4;
      break;
    default:
      exit(0);
  }
  if (version_compare(PHP_VERSION, $max, ">")) {
    fputs(STDERR, "Current: " . PHP_VERSION . " > Known: $max\n\n");
    echo "/LATEST_PHP_" . PHP_MAJOR_VERSION . "_" . PHP_MINOR_VERSION .
         "/s/" . PHP_MAJOR_VERSION . "\." .PHP_MINOR_VERSION . "\.[0-9]*/" . PHP_VERSION . "/";
  } else {
    fputs(STDERR, "Current: " . PHP_VERSION . " = Known: $max\n\n");
  }
')
if [ -n "$OPT" ]; then
  sed -e "$OPT" -i  src/ExtensionFactory.php
fi
grep " LATEST" src/ExtensionFactory.php

: Create command using local sources
sed -e "s:%{_datadir}/php/%{ns_vendor}/%{ns_project}:$PWD/src:"	 bin/compatinfo-db >compatinfo-db

: Diag
%{_bindir}/php -d date.timezone=Europe/Paris compatinfo-db bartlett:diagnose

: Fix references database
%{_bindir}/php -d date.timezone=Europe/Paris compatinfo-db bartlett:db:release:php

: Generate the references database
%{_bindir}/php -d date.timezone=Europe/Paris compatinfo-db bartlett:db:init


%install
mkdir -p   %{buildroot}%{_datadir}/php/%{ns_vendor}
cp -pr src %{buildroot}%{_datadir}/php/%{ns_vendor}/%{ns_project}

install -D -p -m 644 data/compatinfo.sqlite %{buildroot}%{_datadir}/%{name}/compatinfo.sqlite
install -D -p -m 755 bin/compatinfo-db      %{buildroot}%{_bindir}/%{name}


%if %{with_tests}
%check
export BARTLETT_COMPATINFO_DB=%{buildroot}%{_datadir}/%{name}/compatinfo.sqlite

cat << 'EOF' | tee tests/bootstrap.php
<?php
require_once '%{buildroot}%{_datadir}/php/%{ns_vendor}/%{ns_project}/autoload.php';
\Fedora\Autoloader\Autoload::addPsr4('Bartlett\\Tests\\CompatInfoDb\\', __DIR__);
EOF

ret=0
%{_bindir}/phpunit \
    --include-path %{buildroot}%{_datadir}/php \
    -d memory_limit=1G || ret=1

exit $ret
%endif


%files
%{!?_licensedir:%global license %%doc}
%license LICENSE
%doc composer.json
%doc *.md
%{_bindir}/%{name}
%dir %{_datadir}/php/%{ns_vendor}
     %{_datadir}/php/%{ns_vendor}/%{ns_project}
     %{_datadir}/%{name}


%changelog
* Mon Jan 27 2020 Remi Collet <remi@remirepo.net> - 2.10.0-1
- update to 2.10.0

* Wed Jan 22 2020 Remi Collet <remi@remirepo.net> - 2.9.0-1
- update to 2.9.0
- open https://github.com/llaville/php-compatinfo-db/issues/38 redis
- open https://github.com/llaville/php-compatinfo-db/issues/39 svn

* Thu Jan  2 2020 Remi Collet <remi@remirepo.net> - 2.8.0-1
- update to 2.8.0

* Tue Dec  3 2019 Remi Collet <remi@remirepo.net> - 2.7.0-1
- update to 2.7.0
- ignore test results with 7.4, reported as
  https://github.com/llaville/php-compatinfo-db/issues/32

* Fri Jul 26 2019 Remi Collet <remi@remirepo.net> - 2.6.0-1
- update to 2.6.0

* Sun Jun 16 2019 Remi Collet <remi@remirepo.net> - 2.5.0-1
- update to 2.5.0
- bump dependency on PHP 7.1
- add dependency on symfony/console 3 or 4
- add dependency on league/tactician
- add dependency on zendframework/zenddiagnostics
- add php-bartlett-php-compatinfo-db command

* Thu Apr 11 2019 Remi Collet <remi@remirepo.net> - 1.42.0-1
- update to 1.42.0
- open https://github.com/llaville/php-compatinfo-db/issues/28
  missing new reference for memcache 4.0.3 and sqlite3

* Mon Mar 11 2019 Remi Collet <remi@remirepo.net> - 1.41.0-1
- update to 1.41.0

* Mon Feb 25 2019 Remi Collet <remi@remirepo.net> - 1.40.1-1
- update to 1.40.1

* Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.39.0-1.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild

* Tue Dec 18 2018 Remi Collet <remi@remirepo.net> - 1.39.0-1
- update to 1.39.0

* Tue Nov 13 2018 Remi Collet <remi@remirepo.net> - 1.38.0-1
- update to 1.38.0

* Fri Oct 12 2018 Remi Collet <remi@remirepo.net> - 1.37.0-1
- update to 1.37.0
- use symfony3
- ignore test failing because of symfony/polyfill

* Sun Oct  7 2018 Remi Collet <remi@remirepo.net> - 1.36.0-2
- update to 1.36.0
- raise dependency on PHP 5.5
- open https://github.com/llaville/php-compatinfo-db/issues/14 zip
- open https://github.com/llaville/php-compatinfo-db/issues/15 http
- open https://github.com/llaville/php-compatinfo-db/issues/16 redis
- open https://github.com/llaville/php-compatinfo-db/issues/17 uopz
- open https://github.com/llaville/php-compatinfo-db/issues/18 varnish

* Wed Aug 29 2018 Remi Collet <remi@remirepo.net> - 1.35.0-2
- update to 1.35.0

* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.33.0-1.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild

* Fri Jul  6 2018 Remi Collet <remi@remirepo.net> - 1.33.0-1
- update to 1.33.0

* Fri Apr 27 2018 Remi Collet <remi@remirepo.net> - 1.32.0-1
- update to 1.32.0

* Thu Apr  5 2018 Remi Collet <remi@remirepo.net> - 1.31.0-1
- update to 1.31.0

* Fri Mar  2 2018 Remi Collet <remi@remirepo.net> - 1.30.0-1
- Update to 1.30.0

* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.29.0-1.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild

* Fri Feb  2 2018 Remi Collet <remi@remirepo.net> - 1.29.0-1
- Update to 1.29.0
- use range dependency on F27+

* Tue Jan  9 2018 Remi Collet <remi@remirepo.net> - 1.28.0-1
- Update to 1.28.0

* Fri Jan  5 2018 Remi Collet <remi@remirepo.net> - 1.27.0-1
- Update to 1.27.0

* Fri Nov 24 2017 Remi Collet <remi@remirepo.net> - 1.26.0-1
- Update to 1.26.0

* Tue Oct 31 2017 Remi Collet <remi@remirepo.net> - 1.25.0-1
- Update to 1.25.0

* Tue Oct  3 2017 Remi Collet <remi@remirepo.net> - 1.24.0-1
- Update to 1.24.0

* Mon Aug  7 2017 Remi Collet <remi@remirepo.net> - 1.23.0-1
- Update to 1.23.0

* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.22.0-1.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild

* Sat Jun 10 2017 Remi Collet <remi@remirepo.net> - 1.22.0-1
- Update to 1.22.0

* Fri Jun  9 2017 Remi Collet <remi@remirepo.net> - 1.21.0-1
- Update to 1.21.0

* Fri Mar 17 2017 Remi Collet <remi@remirepo.net> - 1.19.0-1
- Update to 1.19.0
- adapt patch fixing DB location

* Fri Feb 24 2017 Remi Collet <remi@fedoraproject.org> - 1.18.0-1
- update to 1.18.0

* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.17.0-1.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild

* Tue Jan 24 2017 Remi Collet <remi@fedoraproject.org> - 1.17.0-1
- update to 1.17.0

* Fri Dec 16 2016 Remi Collet <remi@fedoraproject.org> - 1.16.0-1
- update to 1.16.0

* Wed Nov 23 2016 Remi Collet <remi@fedoraproject.org> - 1.15.0-1
- update to 1.15.0
- disable test suite with PHP 7.1, not yet supported
  https://github.com/llaville/php-compatinfo-db/issues/8

* Mon Oct 31 2016 Remi Collet <remi@fedoraproject.org> - 1.14.0-2
- switch to fedora/autoloader

* Sat Oct 15 2016 Remi Collet <remi@fedoraproject.org> - 1.14.0-1
- update to 1.14.0

* Tue Oct  4 2016 Remi Collet <remi@fedoraproject.org> - 1.13.0-1
- update to 1.13.0

* Tue Jul 26 2016 Remi Collet <remi@fedoraproject.org> - 1.11.0-1
- update to 1.11.0

* Tue Jul  5 2016 Remi Collet <remi@fedoraproject.org> - 1.10.0-1
- update to 1.10.0

* Sat May 28 2016 Remi Collet <remi@fedoraproject.org> - 1.9.0-1
- update to 1.9.0

* Tue May  3 2016 Remi Collet <remi@fedoraproject.org> - 1.8.1-1
- update to 1.8.1

* Tue Apr 12 2016 Remi Collet <remi@fedoraproject.org> - 1.7.0-1
- update to 1.7.0

* Sat Mar  5 2016 Remi Collet <remi@fedoraproject.org> - 1.6.0-1
- update to 1.6.0
- use package version as version in database instead of date

* Sat Feb  6 2016 Remi Collet <remi@fedoraproject.org> - 1.5.0-1
- update to 1.5.0

* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.4.0-1.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild

* Sat Jan  9 2016 Remi Collet <remi@fedoraproject.org> - 1.4.0-1
- update to 1.4.0

* Tue Dec 29 2015 Remi Collet <remi@fedoraproject.org> - 1.3.0-1
- update to 1.3.0

* Thu Dec 10 2015 Remi Collet <remi@fedoraproject.org> - 1.2.0-2
- fix reference to ensure current version is known
  as we usually build RC version in rawhide.

* Sat Dec  5 2015 Remi Collet <remi@fedoraproject.org> - 1.2.0-1
- update to 1.2.0
- add dependency on composer/semver

* Wed Nov  4 2015 Remi Collet <remi@fedoraproject.org> - 1.0.0-0.1.alpha1
- Initial package