summaryrefslogtreecommitdiff
path: root/eclass
diff options
context:
space:
mode:
authorNP-Hardass <NP-Hardass@gentoo.org>2016-04-13 15:42:26 -0400
committerNP-Hardass <NP-Hardass@gentoo.org>2016-06-17 13:33:31 -0400
commit2a881787f33e83999fbf86d57a60d57042efef25 (patch)
tree84bcb87dbdc701bf2df063039c6f48840cfd9bec /eclass
parentmate-base/mate: Add ~arm keyword wrt bug #508072 (diff)
downloadgentoo-mate-2a881787f33e83999fbf86d57a60d57042efef25.tar.gz
gentoo-mate-2a881787f33e83999fbf86d57a60d57042efef25.tar.bz2
gentoo-mate-2a881787f33e83999fbf86d57a60d57042efef25.zip
eclass: mate{,-desktop.org}.eclass: Initial implementations
Diffstat (limited to 'eclass')
-rw-r--r--eclass/mate-desktop.org.eclass64
-rw-r--r--eclass/mate.eclass147
2 files changed, 211 insertions, 0 deletions
diff --git a/eclass/mate-desktop.org.eclass b/eclass/mate-desktop.org.eclass
new file mode 100644
index 0000000..c57528d
--- /dev/null
+++ b/eclass/mate-desktop.org.eclass
@@ -0,0 +1,64 @@
+# 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.
+if [[ "${EAPI:-0}" != "6" ]]; then
+ die "EAPI=${EAPI:-0} is not supported"
+fi
+
+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
index 0000000..9259634
--- /dev/null
+++ b/eclass/mate.eclass
@@ -0,0 +1,147 @@
+# 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
+if [[ "${EAPI:-0}" != "6" ]]; then
+ die "EAPI=${EAPI:-0} is not supported"
+fi
+
+# 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
+
+if [[ "${EAPI:-0}" == "6" ]]; then
+ EXPORT_FUNCTIONS src_prepare src_configure src_install pkg_preinst pkg_postinst pkg_postrm
+fi
+
+# 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: FORCE_AUTORECONF
+# @DESCRIPTION:
+# Available values for 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
+ eautoreconf
+ 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 "$@"
+}