dev-php/twig: Remove obsolete extension and use new autoloader
authorBrian Evans <grknight@gentoo.org>
Thu, 9 May 2019 13:57:38 +0000 (09:57 -0400)
committerBrian Evans <grknight@gentoo.org>
Thu, 9 May 2019 13:57:38 +0000 (09:57 -0400)
The twig extension is no longer necessary as PHP 5.6 is end-of-life

Also, use the dev-php/fedora-autoloader to replace Twig's autoloader
so that it simulates composer loading with Psr4 and does not throw
errors in the logs

In addition, the ctype USE on dev-lang/php is now required

Package-Manager: Portage-2.3.66, Repoman-2.3.12
Signed-off-by: Brian Evans <grknight@gentoo.org>
dev-php/twig/files/Autoloader.php [new file with mode: 0644]
dev-php/twig/twig-1.40.1-r1.ebuild [new file with mode: 0644]

diff --git a/dev-php/twig/files/Autoloader.php b/dev-php/twig/files/Autoloader.php
new file mode 100644 (file)
index 0000000..e4bef54
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+/* Autoloader for dev-php/twig */
+
+if (!class_exists('Twig_Autoloader', false)) {
+    // polyfill for old code
+    class Twig_Autoloader {
+          public static function register(){}
+          public static function autoload(){}
+    }
+}
+
+if (!class_exists('Fedora\\Autoloader\\Autoload', false)) {
+    require_once '/usr/share/php/Fedora/Autoloader/autoload.php';
+}
+
+\Fedora\Autoloader\Autoload::addPsr0('Twig_', __DIR__.'/lib');
+\Fedora\Autoloader\Autoload::addPsr4('Twig\\', __DIR__.'/src');
+
diff --git a/dev-php/twig/twig-1.40.1-r1.ebuild b/dev-php/twig/twig-1.40.1-r1.ebuild
new file mode 100644 (file)
index 0000000..c06e5c6
--- /dev/null
@@ -0,0 +1,49 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+MY_PN="Twig"
+S="${WORKDIR}/${MY_PN}-${PV}"
+
+DESCRIPTION="PHP templating engine with syntax similar to Django"
+HOMEPAGE="http://twig.sensiolabs.org/"
+SRC_URI="https://github.com/twigphp/${MY_PN}/archive/v${PV}.tar.gz
+       -> ${P}.tar.gz"
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="doc test"
+
+RDEPEND="dev-lang/php:*[ctype] dev-php/fedora-autoloader"
+DEPEND="test? ( dev-php/phpunit ${RDEPEND} )"
+# Test fail due to missing Symphony dependencies
+RESTRICT="test"
+
+src_install(){
+       # The autoloader requires the 'T' in "Twig" capitalized.
+       insinto "/usr/share/php/${MY_PN}/lib"
+       doins -r lib/"${MY_PN}"/*
+       insinto "/usr/share/php/${MY_PN}/src"
+       doins -r src/*
+       insinto "/usr/share/php/${MY_PN}"
+       doins "${FILESDIR}/Autoloader.php"
+
+       dodoc README.rst CHANGELOG
+
+       # This installs the reStructuredText source documents. There's got
+       # to be some way to turn them into HTML using Sphinx, but upstream
+       # doesn't provide for it.
+       use doc && dodoc -r doc
+}
+
+src_test(){
+       cp "${FILESDIR}/Autoloader.php" "${S}" || die
+       phpunit --bootstrap Autoloader.php || die "test suite failed"
+       rm "${S}/Autoloader.php" || die
+}
+
+pkg_postinst(){
+       elog "${PN} has been installed in /usr/share/php/${MY_PN}/."
+       elog "To use it in a script, require('${MY_PN}/Autoloader.php')"
+}