commit:     1db6f6ef37158bde0e248c5c84cc9c7f2aa10b93
Author:     Brian Evans <grknight <AT> gentoo <DOT> org>
AuthorDate: Thu Mar  2 14:55:54 2017 +0000
Commit:     Brian Evans <grknight <AT> gentoo <DOT> org>
CommitDate: Thu Mar  2 14:55:54 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1db6f6ef

eclass: new eclass php-pear-r2 to replace php-pear*

 eclass/php-pear-r2.eclass | 122 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 122 insertions(+)

diff --git a/eclass/php-pear-r2.eclass b/eclass/php-pear-r2.eclass
new file mode 100644
index 00000000000..48ff30355f9
--- /dev/null
+++ b/eclass/php-pear-r2.eclass
@@ -0,0 +1,122 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: php-pear-r2.eclass
+# @MAINTAINER:
+# Gentoo PHP Team <php-b...@gentoo.org>
+# @AUTHOR:
+# Author: Brian Evans <grkni...@gentoo.org>
+# @BLURB: Provides means for an easy installation of PEAR packages.
+# @DESCRIPTION:
+# This eclass provides means for an easy installation of PEAR packages.
+# For more information on PEAR, see https://pear.php.net/
+# Note that this eclass doesn't handle dependencies of PEAR packages
+# on purpose; please use (R)DEPEND to define them correctly!
+
+EXPORT_FUNCTIONS src_install pkg_postinst pkg_postrm
+
+case "${EAPI:-0}" in
+       6)
+               ;;
+       *)
+               die "Unsupported EAPI=${EAPI} for ${ECLASS}"
+               ;;
+esac
+
+RDEPEND=">=dev-php/pear-1.8.1"
+
+# @ECLASS-VARIABLE: PHP_PEAR_PKG_NAME
+# @DESCRIPTION:
+# Set this if the PEAR package name differs from ${PN/PEAR-/}
+# (generally shouldn't be the case).
+: ${PHP_PEAR_PKG_NAME:=${PN/PEAR-/}}
+
+# @ECLASS-VARIABLE: PEAR_PV
+# @DESCRIPTION:
+# Set in ebuild if the ${PV} breaks SRC_URI for alpha/beta/rc versions
+: ${PEAR_PV:=${PV}}
+
+PEAR_P="${PHP_PEAR_PKG_NAME}-${PEAR_PV}"
+
+# @ECLASS-VARIABLE: PHP_PEAR_DOMAIN
+# @DESCRIPTION:
+# Set in ebuild to the domain name of the channel if not pear.php.net
+# When the domain is not pear.php.net, setting the SRC_URI is required
+: ${PHP_PEAR_DOMAIN:=pear.php.net}
+
+# @ECLASS-VARIABLE: PHP_PEAR_CHANNEL
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Set in ebuild to the path of channel.xml file which is necessary for
+# 3rd party pear channels (besides pear.php.net) to be added to PEAR
+# Default is unset to do nothing
+
+# set default SRC_URI for pear.php.net packages
+if [[ "${PHP_PEAR_DOMAIN}" == "pear.php.net" ]] ; then
+       SRC_URI="https://pear.php.net/get/${PEAR_P}.tgz";
+fi
+
+: ${HOMEPAGE:=https://${PHP_PEAR_DOMAIN}/package/${PHP_PEAR_PKG_NAME}}
+
+S="${WORKDIR}/${PEAR_P}"
+
+# @FUNCTION php-pear-r2_install_packagexml
+# @DESCRIPTION:
+# Copies the package2.xml or package.xml file and, optionally, the channel.xml
+# file to a Gentoo-specific location so that pkg_postinst can install the 
package
+# to the local PEAR database
+php-pear-r2_install_packagexml() {
+       insinto /usr/share/php/.packagexml
+       if [[ -f "${WORKDIR}/package2.xml" ]] ; then
+               newins "${WORKDIR}/package2.xml" "${PEAR_P}.xml"
+       elif [[ -f "${WORKDIR}/package.xml" ]] ; then
+               newins "${WORKDIR}/package.xml" "${PEAR_P}.xml"
+       fi
+
+       if [[ -f "${PHP_PEAR_CHANNEL}" ]] ; then
+               newins "${PHP_PEAR_CHANNEL}" "${PEAR_P}-channel.xml"
+       fi
+}
+
+# @FUNCTION: php-pear-r2_src_install
+# @DESCRIPTION:
+# Takes care of standard install for PEAR packages.
+# Override src_install if the package installs more than 
"${PHP_PEAR_PKG_NAME}.php"
+# or "${PHP_PEAR_PKG_NAME%%_*}/" as a directory
+php-pear-r2_src_install() {
+       insinto /usr/share/php
+       [[ -f "${PHP_PEAR_PKG_NAME}.php" ]] && doins "${PHP_PEAR_PKG_NAME}.php"
+       [[ -d "${PHP_PEAR_PKG_NAME%%_*}" ]] && doins -r 
"${PHP_PEAR_PKG_NAME%%_*}/"
+       php-pear-r2_install_packagexml
+       einstalldocs
+}
+
+# @FUNCTION: php-pear-r2_pkg_postinst
+# @DESCRIPTION:
+# Register package with the local PEAR database.
+php-pear-r2_pkg_postinst() {
+       # Add unknown channels
+       if [[ -f "${EROOT}usr/share/php/.packagexml/${PEAR_P}-channel.xml" ]] ; 
then
+               if "${EROOT}usr/bin/peardev" channel-info "${PHP_PEAR_DOMAIN}" 
&> /dev/null; then
+                       "${EROOT}usr/bin/peardev" channel-add \
+                               
"${EROOT}usr/share/php/.packagexml/${PEAR_PN}-channel.xml" \
+                               || einfo "Ignore any errors about existing 
channels"
+               fi
+       fi
+
+       # Register the package from the package{,2}.xml file
+       # It is not critical to complete so only warn on failure
+       if [[ -f "${EROOT}usr/share/php/.packagexml/${PEAR_P}.xml" ]] ; then
+               "${EROOT}usr/bin/peardev" install -nrO --force \
+                       "${EROOT}usr/share/php/.packagexml/${PEAR_P}.xml" 2> 
/dev/null \
+                       || ewarn "Failed to insert package into local PEAR 
database"
+       fi
+}
+
+# @FUNCTION: php-pear-r2_pkg_postrm
+# @DESCRIPTION:
+# Deregister package from the local PEAR database
+php-pear-r2_pkg_postrm() {
+       # Uninstall known dependency
+       "${EROOT}usr/bin/peardev" uninstall -nrO 
"${PHP_PEAR_DOMAIN}/${PHP_PEAR_PKG_NAME}"
+}

Reply via email to