# remirepo/fedora spec file for php-phpmailer6
#
# Copyright (c) 2017-2019 Remi Collet
# License: CC-BY-SA
# http://creativecommons.org/licenses/by-sa/4.0/
#
# Please preserve changelog entries
#
# Github
%global gh_commit 0c41a36d4508d470e376498c1c0c527aa36a2d59
%global gh_short %(c=%{gh_commit}; echo ${c:0:7})
%global gh_owner PHPMailer
%global gh_project PHPMailer
# Packagist
%global pk_vendor phpmailer
%global pk_project phpmailer
# Namespace
%global ns_vendor PHPMailer
%global ns_project PHPMailer
# don't change major version used in package name
%global major 6
%global with_tests 0%{!?_without_tests:1}
%global php_home %{_datadir}/php
Name: php-%{pk_project}%{major}
Version: 6.0.7
Release: 1%{?dist}
Summary: Full-featured email creation and transfer class for PHP
License: LGPLv2+
URL: https://github.com/%{gh_owner}/%{gh_project}
# git snapshot to get upstream test suite
Source0: %{name}-%{version}-%{gh_short}.tgz
Source1: makesrc.sh
# Simple unit test for packaging
Source2: PHPMailerRpmTest.php
# Fix path to match RPM installation layout
Patch0: %{name}-layout.patch
BuildArch: noarch
%if %{with_tests}
BuildRequires: php(language) >= 5.5
BuildRequires: php-ctype
BuildRequires: php-date
BuildRequires: php-filter
BuildRequires: php-hash
BuildRequires: php-imap
BuildRequires: php-intl
BuildRequires: php-mbstring
BuildRequires: php-openssl
BuildRequires: php-pcre
BuildRequires: php-fedora-autoloader-devel
# From composer.json, "require-dev": {
# "friendsofphp/php-cs-fixer": "^2.2",
# "phpdocumentor/phpdocumentor": "2.*",
# "phpunit/phpunit": "^4.8 || ^5.7",
# "zendframework/zend-serializer": "2.7.*",
# "doctrine/annotations": "1.2.*",
# "zendframework/zend-eventmanager": "3.0.*",
# "zendframework/zend-i18n": "2.7.3"
BuildRequires: php-phpunit-PHPUnit >= 4.8
BuildRequires: %{_sbindir}/smtp-sink
%endif
# From composer.json, "require": {
# "require": {
# "php": ">=5.5.0",
# "ext-ctype": "*",
# "ext-filter": "*"
Requires: php(language) >= 5.5
Requires: php-ctype
Requires: php-filter
# from phpcompatinfo report on version 6.0.1
Requires: php-date
Requires: php-hash
Requires: php-imap
Requires: php-intl
Requires: php-mbstring
Requires: php-openssl
Requires: php-pcre
# From composer.json, "suggest": {
# "psr/log": "For optional PSR-3 debug logging",
# "league/oauth2-google": "Needed for Google XOAUTH2 authentication",
# "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication",
# "stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication",
# "ext-mbstring": "Needed to send email in multibyte encoding charset",
# "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)"
%if 0%{?fedora}
Suggests: php-composer(psr/log)
%endif
Provides: php-composer(%{pk_vendor}/%{pk_project}) = %{version}
%description
PHPMailer - A full-featured email creation and transfer class for PHP
Class Features
* Probably the world's most popular code for sending email from PHP!
* Used by many open-source projects:
WordPress, Drupal, 1CRM, SugarCRM, Yii, Joomla! and many more
* Integrated SMTP support - send without a local mail server
* Send emails with multiple To, CC, BCC and Reply-to addresses
* Multipart/alternative emails for mail clients that do not read HTML email
* Add attachments, including inline
* Support for UTF-8 content and 8bit, base64, binary, and quoted-printable
encodings
* SMTP authentication with LOGIN, PLAIN, CRAM-MD5 and XOAUTH2 mechanisms
over SSL and SMTP+STARTTLS transports
* Validates email addresses automatically
* Protect against header injection attacks
* Error messages in 47 languages!
* DKIM and S/MIME signing support
* Compatible with PHP 5.5 and later
* Namespaced to prevent name clashes
* Much more!
Autoloader: %{php_home}/%{ns_vendor}/%{ns_project}%{major}/autoload.php
%prep
%setup -q -n %{gh_project}-%{gh_commit}
%patch0 -p1
cp %{SOURCE2} test/PHPMailerRpmTest.php
cat << 'EOF' | tee src/autoload.php
<?php
require_once '%{php_home}/Fedora/Autoloader/autoload.php';
\Fedora\Autoloader\Autoload::addPsr4('PHPMailer\\PHPMailer\\', __DIR__);
\Fedora\Autoloader\Dependencies::optional(array(
'%{php_home}/Psr/Log/autoload.php',
));
EOF
%build
# Empty build section, most likely nothing required.
%install
mkdir -p %{buildroot}/%{php_home}/%{ns_vendor}
cp -pr src %{buildroot}/%{php_home}/%{ns_vendor}/%{ns_project}%{major}
cp -pr language %{buildroot}/%{php_home}/%{ns_vendor}/%{ns_project}%{major}/language
%check
%if %{with_tests}
: Use installed tree and autoloader
mkdir vendor
cat << 'EOF' | tee -a vendor/autoload.php
<?php
require_once '%{buildroot}/%{php_home}/%{ns_vendor}/%{ns_project}%{major}/autoload.php';
\Fedora\Autoloader\Autoload::addPsr4('PHPMailer\\Test\\', dirname(__DIR__) . '/test');
EOF
sed -e '/colors/d;s/logging/nologging/' travis.phpunit.xml.dist > phpunit.xml
: Start fake MTA and test environment
PORT=$(expr 2500 + %{?fedora}%{?rhel})
sed -e "s/2500/$PORT/" test/testbootstrap-dist.php > test/testbootstrap.php
mkdir -p build/logs
chmod +x test/fakesendmail.sh
pushd build
smtp-sink -d "%d.%H.%M.%S" localhost:$PORT 1000 &>/dev/null &
SMTPPID=$!
popd
: Run upstream test suite
ret=0
for cmd in php php70 php71 php72 php73; do
if which $cmd; then
$cmd -d "sendmail_path=$PWD/test/fakesendmail.sh -t -i " \
%{_bindir}/phpunit --exclude slow,pop3,languages --verbose || ret=1
fi
done
: Cleanup
kill $SMTPPID
exit $ret
%endif
%files
%{!?_licensedir:%global license %%doc}
%license LICENSE
%license COMMITMENT
%doc *.md
%doc examples
%doc composer.json
%{php_home}/%{ns_vendor}
%changelog
* Mon Feb 4 2019 Remi Collet <remi@remirepo.net> - 6.0.7-1
- update to 6.0.7
* Fri Nov 16 2018 Remi Collet <remi@remirepo.net> - 6.0.6-1
- update to 6.0.6
* Tue Mar 27 2018 Remi Collet <remi@remirepo.net> - 6.0.4-1
- update to 6.0.4
- add patch to fix lang_path with RPM layout
* Sun Jan 7 2018 Remi Collet <remi@remirepo.net> - 6.0.3-1
- Update to 6.0.3
* Fri Dec 1 2017 Remi Collet <remi@remirepo.net> - 6.0.2-1
- Update to 6.0.2
* Wed Nov 15 2017 Remi Collet <remi@remirepo.net> - 6.0.1-1
- initial rpm, version 6.0.1
- open https://github.com/PHPMailer/PHPMailer/issues/1243 for FSF address