diff options
author | NP-Hardass <NP-Hardass@gentoo.org> | 2016-04-13 15:42:26 -0400 |
---|---|---|
committer | NP-Hardass <NP-Hardass@gentoo.org> | 2016-06-17 13:33:31 -0400 |
commit | 2a881787f33e83999fbf86d57a60d57042efef25 (patch) | |
tree | 84bcb87dbdc701bf2df063039c6f48840cfd9bec /eclass | |
parent | mate-base/mate: Add ~arm keyword wrt bug #508072 (diff) | |
download | gentoo-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.eclass | 64 | ||||
-rw-r--r-- | eclass/mate.eclass | 147 |
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 "$@" +} |