Blob Blame History Raw
#
# Fedora spec file for php-simplesamlphp-saml2_3
#
# Copyright (c) 2017-2019 Shawn Iwinski <shawn@iwin.ski>
#
# License: MIT
# http://opensource.org/licenses/MIT
#
# Please preserve the changelog entries
#

%global github_owner     simplesamlphp
%global github_name      saml2
%global github_version   3.4.1
%global github_commit    4faed2faa324f96e5082146933fc189c0a970074

%global composer_vendor  simplesamlphp
%global composer_project saml2

# "php": ">=5.4"
%global php_min_ver 5.4
# "mockery/mockery": "~0.9"
%global mockery_min_ver 0.9
%global mockery_max_ver 1.0
# "psr/log": "~1.0"
#     NOTE: Min version not 1.0 because autoloader required
%global psr_log_min_ver 1.0.1
%global psr_log_max_ver 2.0
# "webmozart/assert": "^1.4"
%global webmozart_assert_min_ver 1.4
%global webmozart_assert_max_ver 2.0
# "robrichards/xmlseclibs": "^3.0"
%global xmlseclibs_min_ver 3.0
%global xmlseclibs_max_ver 4.0

# Build using "--without tests" to disable tests
%global with_tests 0%{!?_without_tests:1}

%{!?phpdir:  %global phpdir  %{_datadir}/php}

Name:          php-%{composer_vendor}-%{composer_project}_3
Version:       %{github_version}
Release:       1%{?github_release}%{?dist}
Summary:       SAML2 PHP library from SimpleSAMLphp (version 3)

License:       LGPLv2+
URL:           https://github.com/%{github_owner}/%{github_name}

# GitHub export does not include tests.
# Run php-simplesamlphp-saml2_3-get-source.sh to create full source.
Source0:       %{name}-%{github_version}-%{github_commit}.tar.gz
Source1:       %{name}-get-source.sh

BuildArch:     noarch
# Tests
%if %{with_tests}
## composer.json
BuildRequires: php(language) >= %{php_min_ver}
BuildRequires: php-composer(phpunit/phpunit)
%if 0%{?fedora} >= 27 || 0%{?rhel} >= 8
BuildRequires: (php-composer(mockery/mockery) >= %{mockery_min_ver} with php-composer(mockery/mockery) < %{mockery_max_ver})
BuildRequires: (php-composer(psr/log) >= %{psr_log_min_ver} with php-composer(psr/log) < %{psr_log_max_ver})
BuildRequires: (php-composer(robrichards/xmlseclibs) >= %{xmlseclibs_min_ver} with php-composer(robrichards/xmlseclibs) < %{xmlseclibs_max_ver})
BuildRequires: (php-composer(webmozart/assert) >= %{webmozart_assert_min_ver} with php-composer(webmozart/assert) < %{webmozart_assert_max_ver})
%else
BuildRequires: php-composer(mockery/mockery) <  %{mockery_max_ver}
BuildRequires: php-composer(mockery/mockery) >= %{mockery_min_ver}
BuildRequires: php-composer(psr/log) <  %{psr_log_max_ver}
BuildRequires: php-composer(psr/log) >= %{psr_log_min_ver}
BuildRequires: php-composer(robrichards/xmlseclibs) <  %{xmlseclibs_max_ver}
BuildRequires: php-composer(robrichards/xmlseclibs) >= %{xmlseclibs_min_ver}
BuildRequires: php-composer(webmozart/assert) <  %{webmozart_assert_max_ver}
BuildRequires: php-composer(webmozart/assert) >= %{webmozart_assert_min_ver}
%endif
BuildRequires: php-dom
BuildRequires: php-openssl
BuildRequires: php-zlib
## phpcompatinfo (computed from version 3.4.1)
BuildRequires: php-date
BuildRequires: php-filter
BuildRequires: php-libxml
BuildRequires: php-pcre
BuildRequires: php-soap
BuildRequires: php-spl
%endif
## Autoloader
BuildRequires: php-fedora-autoloader-devel

# composer.json
Requires:      php(language) >= %{php_min_ver}
%if 0%{?fedora} >= 27 || 0%{?rhel} >= 8
Requires:      (php-composer(psr/log) >= %{psr_log_min_ver} with php-composer(psr/log) < %{psr_log_max_ver})
Requires:      (php-composer(robrichards/xmlseclibs) >= %{xmlseclibs_min_ver} with php-composer(robrichards/xmlseclibs) < %{xmlseclibs_max_ver})
Requires:      (php-composer(webmozart/assert) >= %{webmozart_assert_min_ver} with php-composer(webmozart/assert) < %{webmozart_assert_max_ver})
%else
Requires:      php-composer(psr/log) <  %{psr_log_max_ver}
Requires:      php-composer(psr/log) >= %{psr_log_min_ver}
Requires:      php-composer(robrichards/xmlseclibs) <  %{xmlseclibs_max_ver}
Requires:      php-composer(robrichards/xmlseclibs) >= %{xmlseclibs_min_ver}
Requires:      php-composer(webmozart/assert) <  %{webmozart_assert_max_ver}
Requires:      php-composer(webmozart/assert) >= %{webmozart_assert_min_ver}
%endif
Requires:      php-dom
Requires:      php-openssl
Requires:      php-zlib
# phpcompatinfo (computed from version 3.4.1)
Requires:      php-date
Requires:      php-filter
Requires:      php-libxml
Requires:      php-pcre
Requires:      php-soap
Requires:      php-spl
# Autoloader
Requires:      php-composer(fedora/autoloader)

# Composer
Provides:      php-composer(%{composer_vendor}/%{composer_project}) = %{version}


%description
A PHP library for SAML2 related functionality. Extracted from SimpleSAMLphp [1],
used by OpenConext [2]. This library started as a collaboration between
UNINETT [3] and SURFnet [4] but everyone is invited to contribute.

Autoloader: %{phpdir}/SAML2_3/autoload.php

[1] https://www.simplesamlphp.org/
[2] https://www.openconext.org/
[3] https://www.uninett.no/
[4] https://www.surfnet.nl/


%prep
%setup -qn %{github_name}-%{github_commit}


%build
: Create autoloader
%{_bindir}/phpab --template fedora --output src/SAML2/autoload.php src/SAML2
cat <<'AUTOLOAD' >> src/SAML2/autoload.php

class_alias('\\SAML2\\Constants', 'SAML2_Const');

\Fedora\Autoloader\Dependencies::required(array(
    '%{phpdir}/Psr/Log/autoload.php',
    '%{phpdir}/RobRichards/XMLSecLibs3/autoload.php',
    '%{phpdir}/Webmozart/Assert/autoload.php',
));
AUTOLOAD


%install
mkdir -p %{buildroot}%{phpdir}
cp -rp src/SAML2 %{buildroot}%{phpdir}/SAML2_3


%check
%if %{with_tests}
: Create pseudo Composer autoloader
mkdir vendor
%{_bindir}/phpab --template fedora --output vendor/autoload.php tests
cat <<'AUTOLOAD' | tee -a vendor/autoload.php
require_once '%{buildroot}%{phpdir}/SAML2_3/autoload.php';
require_once '%{phpdir}/Mockery/autoload.php';
AUTOLOAD

: Skip tests known to fail
sed -e 's/function testMarshalling/function SKIP_testMarshalling/' \
    -e 's/function testMarshallingChildren/function SKIP_testMarshallingChildren/' \
    -i tests/SAML2/XML/mdui/DiscoHintsTest.php
sed -e 's/function testMarshalling/function SKIP_testMarshalling/' \
    -e 's/function testMarshallingChildren/function SKIP_testMarshallingChildren/' \
    -i tests/SAML2/XML/mdui/UIInfoTest.php
sed 's/function testToString/function SKIP_testToString/' \
    -i tests/SAML2/XML/saml/NameIDTest.php

: Upstream tests
RETURN_CODE=0
PHPUNIT=$(which phpunit)
for PHP_EXEC in php %{?rhel:php55 php56} php70 php71 php72 php73 php74; do
    if [ "php" = "$PHP_EXEC" ] || which $PHP_EXEC; then
        $PHP_EXEC $PHPUNIT --configuration=tools/phpunit --verbose || RETURN_CODE=1
    fi
done
exit $RETURN_CODE
%else
: Tests skipped
%endif


%files
%{!?_licensedir:%global license %%doc}
%license LICENSE
%doc *.md
%doc composer.json
%{phpdir}/SAML2_3


%changelog
* Tue May 21 2019 Shawn Iwinski <shawn@iwin.ski> - 3.4.1-1
- Update to 3.4.1 (RHBZ #1688285)

* Wed Feb 13 2019 Shawn Iwinski <shawn@iwin.ski> - 3.3.8-1
- Update to 3.3.8 (RHBZ #1600514)

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

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

* Sat May 26 2018 Shawn Iwinski <shawn@iwin.ski> - 3.1.6-1
- Update to 3.1.6 (RHBZ #1581245)

* Sun Apr 29 2018 Shawn Iwinski <shawn@iwin.ski> - 3.1.5-1
- Update to 3.1.5 (RHBZ #1568917)

* Mon Mar 12 2018 Shawn Iwinski <shawn@iwin.ski> - 3.1.4-3
- Update range dependencies' conditional to include RHEL 8+

* Mon Mar 12 2018 Remi Collet <remi@remirepo.net> - 3.1.4-2
- fix dependencies

* Sat Mar 10 2018 Shawn Iwinski <shawn@iwin.ski> - 3.1.4-1
- Update to 3.1.4 (RHBZ #1528489, SSPSA 201801-01, CVE-2018-6519, SSPSA 201802-01, CVE-2018-7644, SSPSA 201803-01, CVE-2018-7711)
- License changed from LGPLv2 to LGPLv2+
- Update "get source" to save tarball in same directory as spec file
- Use range dependencies on F27+

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

* Wed Aug 30 2017 Shawn Iwinski <shawn@iwin.ski> - 3.0.2-3
- Drop support for simplesamlphp/xmlseclibs v2

* Tue Aug 22 2017 Shawn Iwinski <shawn@iwin.ski> - 3.0.2-2
- Build require mcrypt for robrichards/xmlseclibs version 2

* Sun Aug 20 2017 Shawn Iwinski <shawn@iwin.ski> - 3.0.2-1
- Update to 3.0.2

* Wed Jul 12 2017 Shawn Iwinski <shawn@iwin.ski> - 3.0.0-1
- Initial package