diff options
-rw-r--r-- | .gitignore | 8 | ||||
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | PHPMailerRpmTest.php | 41 | ||||
-rw-r--r-- | composer.json | 54 | ||||
-rwxr-xr-x | makesrc.sh | 28 | ||||
-rw-r--r-- | php-phpmailer6.spec | 198 |
6 files changed, 333 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fc9aa8c --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +clog +package-*.xml +*.tgz +*.tar.gz +*.tar.xz +*.tar.xz.asc +*.src.rpm +*/*rpm diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..91b0fd5 --- /dev/null +++ b/Makefile @@ -0,0 +1,4 @@ +SRCDIR := $(shell pwd) +NAME := $(shell basename $(SRCDIR)) +include ../../common/Makefile + diff --git a/PHPMailerRpmTest.php b/PHPMailerRpmTest.php new file mode 100644 index 0000000..1a4c903 --- /dev/null +++ b/PHPMailerRpmTest.php @@ -0,0 +1,41 @@ +<?php +/** + * PHPMailer - RPM language file tests. + */ + +namespace PHPMailer\Test; + +use PHPMailer\PHPMailer\PHPMailer; +use PHPUnit\Framework\TestCase; + +/** + * Check language files for RPM packaging + */ +final class PHPMailerRpmTest extends TestCase +{ + /** + * Holds a PHPMailer instance. + * + * @var PHPMailer + */ + private $Mail; + + /** + * Run before each test is started. + */ + protected function setUp() + { + $this->Mail = new PHPMailer(); + } + + public function testTranslation() + { + $this->Mail->setLanguage(); + $tr = $this->Mail->getTranslations(); + $this->assertEquals('Message body empty', $tr['empty_message'], "English message"); + + $this->Mail->setLanguage('fr'); + $tr = $this->Mail->getTranslations(); + $this->assertEquals('Corps du message vide.', $tr['empty_message'], "French message"); + } +} diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..9bff756 --- /dev/null +++ b/composer.json @@ -0,0 +1,54 @@ +{ + "name": "phpmailer/phpmailer", + "type": "library", + "description": "PHPMailer is a full-featured email creation and transfer class for PHP", + "authors": [ + { + "name": "Marcus Bointon", + "email": "phpmailer@synchromedia.co.uk" + }, + { + "name": "Jim Jagielski", + "email": "jimjag@gmail.com" + }, + { + "name": "Andy Prevost", + "email": "codeworxtech@users.sourceforge.net" + }, + { + "name": "Brent R. Matzelle" + } + ], + "require": { + "php": ">=5.5.0", + "ext-ctype": "*" + }, + "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" + }, + "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)" + }, + "autoload": { + "psr-4": { + "PHPMailer\\PHPMailer\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "PHPMailer\\Test\\": "test/" + } + }, + "license": "LGPL-2.1" +} diff --git a/makesrc.sh b/makesrc.sh new file mode 100755 index 0000000..a5cf904 --- /dev/null +++ b/makesrc.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +NAME=$(basename $PWD) +OWNER=$(sed -n '/^%global gh_owner/{s/.* //;p}' $NAME.spec) +PROJECT=$(sed -n '/^%global gh_project/{s/.* //;p}' $NAME.spec) +VERSION=$(sed -n '/^Version:/{s/.* //;p}' $NAME.spec) +COMMIT=$(sed -n '/^%global gh_commit/{s/.* //;p}' $NAME.spec) +SHORT=${COMMIT:0:7} + +echo -e "\nCreate git snapshot\nName=$NAME, Owner=$OWNER, Project=$PROJECT, Version=$VERSION, Commit=$COMMIT\n" + +echo "Cloning..." +git clone https://github.com/$OWNER/$PROJECT.git $PROJECT-$COMMIT + +echo "Getting commit..." +pushd $PROJECT-$COMMIT +git checkout $COMMIT +cp composer.json ../composer.json +popd + +echo "Archiving..." +tar czf $NAME-$VERSION-$SHORT.tgz --exclude .git $PROJECT-$COMMIT + +echo "Cleaning..." +rm -rf $PROJECT-$COMMIT + +echo "Done." + diff --git a/php-phpmailer6.spec b/php-phpmailer6.spec new file mode 100644 index 0000000..618aa2c --- /dev/null +++ b/php-phpmailer6.spec @@ -0,0 +1,198 @@ +# remirepo/fedora spec file for php-phpmailer6 +# +# Copyright (c) 2017 Remi Collet +# License: CC-BY-SA +# http://creativecommons.org/licenses/by-sa/4.0/ +# +# Please preserve changelog entries +# +# Github +%global gh_commit 992392437c2e2784e0dc41446024fe411d293c96 +%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.1 +Release: 1%{?dist} +Summary: Full-featured email creation and transfer class for PHP + +Group: Development/Libraries +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 + +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": "*" +Requires: php(language) >= 5.5 +Requires: php-ctype +# from phpcompatinfo report on version 6.0.1 +Requires: php-date +Requires: php-filter +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} +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 php56 php70 php71 php72; 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 +%doc *.md +%doc examples +%doc composer.json +%{php_home}/%{ns_vendor} + + +%changelog +* 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 |