eclass: Add mate{,-desktop.org}.eclass from project repo
authorNP-Hardass <NP-Hardass@gentoo.org>
Thu, 11 Aug 2016 06:14:27 +0000 (02:14 -0400)
committerNP-Hardass <NP-Hardass@gentoo.org>
Fri, 12 Aug 2016 05:11:46 +0000 (01:11 -0400)
eclass/mate-desktop.org.eclass [new file with mode: 0644]
eclass/mate.eclass [new file with mode: 0644]

diff --git a/eclass/mate-desktop.org.eclass b/eclass/mate-desktop.org.eclass
new file mode 100644 (file)
index 0000000..6587957
--- /dev/null
@@ -0,0 +1,65 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+# @ECLASS: mate-desktop.org.eclass
+# @MAINTAINER:
+# mate@gentoo.org
+# @AUTHOR:
+# Authors: NP-Hardass <NP-Hardass@gentoo.org> based upon the gnome.org eclass.
+# @BLURB: Helper eclass for mate-desktop.org hosted archives
+# @DESCRIPTION:
+# Provide a default SRC_URI and EGIT_REPO_URI for MATE packages as well as
+# exporting some useful values like the MATE_BRANCH
+
+# EAPIs < 6 are banned.
+case "${EAPI:-0}" in
+       6) ;;
+       *) die "EAPI=${EAPI:-0} is not supported" ;;
+esac
+
+if [[ ${PV} == 9999 ]]; then
+       inherit git-r3
+fi
+
+inherit versionator
+
+# @ECLASS-VARIABLE: MATE_TARBALL_SUFFIX
+# @INTERNAL
+# @DESCRIPTION:
+# All projects hosted on mate-desktop.org provide tarballs as tar.xz.
+# Undefined in live ebuilds.
+[[ ${PV} != 9999 ]] && : ${MATE_TARBALL_SUFFIX:="xz"}
+
+# @ECLASS-VARIABLE: MATE_DESKTOP_ORG_PN
+# @DESCRIPTION:
+# Name of the package as hosted on mate-desktop.org.
+# Leave unset if package name matches PN.
+: ${MATE_DESKTOP_ORG_PN:=$PN}
+
+# @ECLASS-VARIABLE: MATE_DESKTOP_ORG_PV
+# @DESCRIPTION:
+# Package version string as listed on mate-desktop.org.
+# Leave unset if package version string matches PV.
+: ${MATE_DESKTOP_ORG_PV:=$PV}
+
+# @ECLASS-VARIABLE: MATE_BRANCH
+# @DESCRIPTION:
+# Major and minor numbers of the version number, unless live.
+# If live ebuild, will be set to '9999'.
+: ${MATE_BRANCH:=$(get_version_component_range 1-2)}
+
+# Set SRC_URI or EGIT_REPO_URI based on whether live 
+if [[ ${PV} == 9999 ]]; then
+       EGIT_REPO_URI="
+               https://github.com/mate-desktop/${MATE_DESKTOP_ORG_PN}.git
+               git://github.com/mate-desktop/${MATE_DESKTOP_ORG_PN}.git
+               http://github.com/mate-desktop/${MATE_DESKTOP_ORG_PN}.git
+       "
+       SRC_URI=""
+else
+       SRC_URI="http://pub.mate-desktop.org/releases/${MATE_BRANCH}/${MATE_DESKTOP_ORG_PN}-${MATE_DESKTOP_ORG_PV}.tar.${MATE_TARBALL_SUFFIX}"
+fi
+
+# Set HOMEPAGE for all ebuilds
+HOMEPAGE="http://mate-desktop.org"
diff --git a/eclass/mate.eclass b/eclass/mate.eclass
new file mode 100644 (file)
index 0000000..ac134a9
--- /dev/null
@@ -0,0 +1,149 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+# @ECLASS: mate.eclass
+# @MAINTAINER:
+# mate@gentoo.org
+# @AUTHOR:
+# Authors: NP-Hardass <NP-Hardass@gentoo.org> based upon the gnome2
+# and autotools-utils eclasses
+# @BLURB: Provides phases for MATE based packages.
+# @DESCRIPTION:
+# Exports portage base functions used by ebuilds written for packages using the
+# MATE framework. Occassionally acts as a wrapper to gnome2 due to the
+# fact that MATE is a GNOME fork. For additional functions, see gnome2-utils.eclass.
+
+# Check EAPI only
+case "${EAPI:-0}" in
+       6) ;;
+       *) die "EAPI=${EAPI:-0} is not supported" ;;
+esac
+
+# Inherit happens below after declaration of GNOME2_LA_PUNT
+
+# @ECLASS-VARIABLE: MATE_LA_PUNT
+# @DESCRIPTION:
+# Available values for MATE_LA_PUNT:
+# - "no": will not clean any .la files
+# - "yes": will run prune_libtool_files --modules
+# - If it is not set, it will run prune_libtool_files
+# MATE_LA_PUNT is a stub to GNOME2_LA_PUNT
+GNOME2_LA_PUNT=${MATE_LA_PUNT:-""}
+
+inherit gnome2 autotools mate-desktop.org
+
+case "${EAPI:-0}" in
+       6) EXPORT_FUNCTIONS src_prepare src_configure src_install pkg_preinst pkg_postinst pkg_postrm ;;
+       *) die "EAPI=${EAPI:-0} is not supported" ;;
+esac
+
+# Autotools requires our MATE m4 files
+DEPEND=">=mate-base/mate-common-${MATE_BRANCH}"
+
+# @FUNCTION: mate_py_cond_func_wrap
+# @DESCRIPTION: Wraps a function for conditional python use, to run for each
+# python implementation in the build directory.
+# This function should only be used if the ebuild also inherits the
+# python-r1 eclass
+mate_py_cond_func_wrap() {
+       if [[ ! ${_PYTHON_R1} ]]; then
+               die "This function requires the inheritence of the python-r1 eclass"
+       fi
+       if use python; then
+               python_foreach_impl run_in_build_dir "$@"
+       else
+               $@
+       fi
+}
+
+# @ECLASS-VARIABLE: MATE_FORCE_AUTORECONF
+# @DESCRIPTION:
+# Available values for MATE_FORCE_AUTORECONF:
+# - true: will always run eautoreconf
+# - false: will default to automatic detect
+# - If it is not set, it will default to false
+: ${MATE_FORCE_AUTORECONF:="false"}
+
+# @FUNCTION: ematedocize
+# @DESCRIPTION: A wrapper around mate-doc-common
+ematedocize() {
+       ebegin "Running mate-doc-common --copy"
+               mate-doc-common --copy || die
+       eend $?
+}
+
+# @FUNCTION: want_mate_doc
+# @DESCRIPTION:
+# Returns true/false based on whether eautoreconf should call
+# ematedocize
+want_mate_doc() {
+       grep -q USE_COMMON_DOC_BUILD autogen.sh
+}
+
+# @FUNCTION: mate_src_prepare
+# @DESCRIPTION:
+# Call gnome2_src_prepare to handle environment setup and patching, then
+# call eautoreconf if necessary
+mate_src_prepare() {
+       debug-print-function ${FUNCNAME} "$@"
+
+       local force_autoreconf=${MATE_FORCE_AUTORECONF}
+       [[ ${PV} == 9999 ]] && force_autoreconf="true"
+
+       gen_chksum() {
+               find '(' -name 'Makefile.am' \
+                       -o -name 'configure.ac' \
+                       -o -name 'configure.in' ')' \
+                       -exec cksum {} + | sort -k2
+       }
+
+       local chksum=$(gen_chksum)
+
+       gnome2_src_prepare "$@"
+
+       if [[ "${force_autoreconf}" == "true" ]] || [[ ${chksum} != $(gen_chksum) ]]; then
+               want_mate_doc && ematedocize
+               AT_NOELIBTOOLIZE="yes" eautoreconf # gnome2_src_prepare calls elibtoolize
+       fi
+}
+
+# @FUNCTION: mate_src_configure
+# @DESCRIPTION:
+# MATE specific configure handling
+# Stub to gnome2_src_configure()
+mate_src_configure() {
+       gnome2_src_configure "$@"
+}
+
+# @FUNCTION: mate_src_install
+# @DESCRIPTION:
+# MATE specific install. Stub to gnome2_src_install
+mate_src_install() {
+       gnome2_src_install "$@"
+}
+
+# @FUNCTION: mate_pkg_preinst
+# @DESCRIPTION:
+# Finds Icons, GConf and GSettings schemas for later handling in pkg_postinst
+# Stub to gnome2_pkg_preinst
+mate_pkg_preinst() {
+       gnome2_pkg_preinst "$@"
+}
+
+# @FUNCTION: mate_pkg_postinst
+# @DESCRIPTION:
+# Handle scrollkeeper, GConf, GSettings, Icons, desktop and mime
+# database updates.
+# Stub to gnome2_pkg_postinst
+mate_pkg_postinst() {
+       gnome2_pkg_postinst "$@"
+}
+
+# @FUNCTION: mate_pkg_postrm
+# @DESCRIPTION:
+# Handle scrollkeeper, GSettings, Icons, desktop and mime database updates.
+# Stub to gnome2_pkg_postrm
+mate_pkg_postrm() {
+       gnome2_pkg_postrm "$@"
+}