public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Alexandre Rostovtsev" <tetromino@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/gnome:master commit in: eclass/
Date: Mon, 10 Sep 2012 02:17:59 +0000 (UTC)	[thread overview]
Message-ID: <1347243445.2a5037f91dea5642e7b1d2885060297469fd062d.tetromino@gentoo> (raw)

commit:     2a5037f91dea5642e7b1d2885060297469fd062d
Author:     Alexandre Rostovtsev <tetromino <AT> gentoo <DOT> org>
AuthorDate: Mon Sep 10 02:17:25 2012 +0000
Commit:     Alexandre Rostovtsev <tetromino <AT> gentoo <DOT> org>
CommitDate: Mon Sep 10 02:17:25 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=2a5037f9

eclass/vala.eclass: new eclass added for testing

---
 eclass/vala.eclass |  121 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 121 insertions(+), 0 deletions(-)

diff --git a/eclass/vala.eclass b/eclass/vala.eclass
new file mode 100644
index 0000000..606ff49
--- /dev/null
+++ b/eclass/vala.eclass
@@ -0,0 +1,121 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+# @ECLASS: vala.eclass
+# @MAINTAINER:
+# gnome@gentoo.org
+# @AUTHOR:
+# Alexandre Rostovtsev <tetromino@gentoo.org>
+# @BLURB: Sets up the environment for using a specific version of vala.
+# @DESCRIPTION:
+# This eclass sets up commonly used environment variables for using a specific
+# version of dev-lang/vala to configure and build a package. It is needed for
+# packages whose build systems assume the existence of certain unversioned vala
+# executables, pkgconfig files, etc., which Gentoo does not provide.
+#
+# This eclass provides one phase function: src_prepare.
+
+inherit multilib
+
+case "${EAPI:-0}" in
+	0)	die "EAPI=0 is not supported" ;;
+	1)	;;
+	*)	EXPORT_FUNCTIONS src_prepare ;;
+esac
+
+# @ECLASS-VARIABLE: VALA_MIN_API_VERSION
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Minimum vala API version (e.g. 0.16).
+VALA_MIN_API_VERSION=${VALA_MIN_API_VERSION:-0.10}
+
+# @ECLASS-VARIABLE: VALA_MAX_API_VERSION
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Maximum vala API version (e.g. 0.18).
+VALA_MAX_API_VERSION=${VALA_MAX_API_VERSION:-0.18}
+
+# @ECLASS-VARIABLE: VALA_USE_DEPEND
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# USE dependencies that vala must be built with (e.g. vapigen).
+
+# @FUNCTION: vala_api_versions
+# @DESCRIPTION:
+# Outputs a list of vala API versions from VALA_MAX_API_VERSION down to
+# VALA_MIN_API_VERSION.
+vala_api_versions() {
+	eval "echo 0.{${VALA_MAX_API_VERSION#0.}..${VALA_MIN_API_VERSION#0.}..2}"
+}
+
+# @FUNCTION: vala_depend
+# @DESCRIPTION:
+# Outputs a ||-dependency string on vala from VALA_MAX_API_VERSION down to
+# VALA_MIN_API_VERSION
+vala_depend() {
+	local u v versions=$(vala_api_versions)
+	[[ ${VALA_USE_DEPEND} ]] && u="[${VALA_USE_DEPEND}]"
+
+	echo -n "|| ("
+	for v in ${versions}; do
+		echo -n " dev-lang/vala:${v}${u}"
+	done
+	echo " )"
+}
+
+# @FUNCTION: vala_best_api_version
+# @DESCRIPTION:
+# Returns the highest installed vala API version satisfying
+# VALA_MAX_API_VERSION, VALA_MIN_API_VERSION, and VALA_USE_DEPEND.
+vala_best_api_version() {
+	local u v
+	[[ ${VALA_USE_DEPEND} ]] && u="[${VALA_USE_DEPEND}]"
+	for v in $(vala_api_versions); do
+		has_version "dev-lang/vala:${v}${u}" && echo "${v}" && return
+	done
+}
+
+# @FUNCTION: vala_src_prepare
+# @USAGE: [--vala-api-version api_version]
+# @DESCRIPTION:
+# Sets up the environment variables and pkgconfig files for the
+# specified API version, or, if no version is specified, for the
+# highest installed vala API version satisfying
+# VALA_MAX_API_VERSION, VALA_MIN_API_VERSION, and VALA_USE_DEPEND.
+vala_src_prepare() {
+	local p d valafoo version
+
+	if [[ $1 = "--vala-api-version" ]]; then
+		version=$2
+		[[ ${version} ]] || die "'--vala-api-version' option requires API version parameter."
+	else
+		version=$(vala_best_api_version)
+		[[ ${version} ]] || die "No installed vala in $(vala_depend)"
+	fi
+
+	export VALAC=$(type -P valac-${version})
+
+	valafoo=$(type -P vala-gen-introspect-${VALA_API_VERSION})
+	[[ ${valafoo} ]] && export VALA_GEN_INTROSPECT=$(type -P vala-gen-introspect-${version})
+
+	valafoo=$(type -P vapigen-${VALA_API_VERSION})
+	[[ ${valafoo} ]] && export VAPIGEN="${valafoo}"
+
+	valafoo="${EPREFIX}/usr/share/vala/Makefile.vapigen"
+	[[ -e ${valafoo} ]] && export VAPIGEN_MAKEFILE="${valafoo}"
+
+	export VAPIGEN_VAPIDIR="${EPREFIX}/usr/share/vala/vapi"
+
+	mkdir -p "${T}/pkgconfig" || die "mkdir failed"
+	for p in libvala vapigen; do
+		for d in "${EPREFIX}/usr/$(get_libdir)/pkgconfig" "${EPREFIX}/usr/share/pkgconfig"; do
+			if [[ -e ${d}/${p}-${VALA_API_VERSION}.pc ]]; then
+				ln -s "${d}/${p}-${VALA_API_VERSION}.pc" "${T}/pkgconfig/${p}.pc" || die "ln failed"
+				break
+			fi
+		done
+	done
+	: ${PKG_CONFIG_PATH:="${EPREFIX}/usr/$(get_libdir)/pkgconfig:${EPREFIX}/usr/share/pkgconfig"}
+	export PKG_CONFIG_PATH="${T}/pkgconfig:${PKG_CONFIG_PATH}"
+}


             reply	other threads:[~2012-09-10  2:18 UTC|newest]

Thread overview: 94+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-10  2:17 Alexandre Rostovtsev [this message]
  -- strict thread matches above, loose matches on Subject: below --
2022-08-16 14:16 [gentoo-commits] proj/gnome:master commit in: eclass/ Matt Turner
2021-01-30 20:02 Mart Raudsepp
2021-01-30 20:02 Mart Raudsepp
2019-02-24  8:40 Mart Raudsepp
2019-02-23 20:37 Mart Raudsepp
2018-02-16 16:12 Sobhan Mohammadpour
2018-02-01 10:37 Sobhan Mohammadpour
2018-01-29  7:50 Gilles Dartiguelongue
2018-01-29  7:50 Gilles Dartiguelongue
2017-12-26 12:20 Mart Raudsepp
2017-12-10 18:37 Sobhan Mohammadpour
2017-12-10  4:04 Sobhan Mohammadpour
2017-09-13 22:19 Gilles Dartiguelongue
2016-10-30 11:44 Gilles Dartiguelongue
2016-10-30 11:44 Gilles Dartiguelongue
2016-10-30 11:44 Gilles Dartiguelongue
2016-09-05 22:05 Gilles Dartiguelongue
2015-12-24  1:18 Gilles Dartiguelongue
2015-12-24  1:18 Gilles Dartiguelongue
2015-11-26 22:46 Gilles Dartiguelongue
2015-05-25 16:08 Gilles Dartiguelongue
2015-05-25 16:08 Gilles Dartiguelongue
2015-05-24 16:33 Gilles Dartiguelongue
2015-05-24 16:33 Gilles Dartiguelongue
2015-05-10 21:27 Gilles Dartiguelongue
2014-11-23 22:35 Remi Cardona
2014-11-03 23:24 Gilles Dartiguelongue
2014-11-03 23:24 Gilles Dartiguelongue
2014-11-03 23:24 Gilles Dartiguelongue
2014-11-03 23:24 Gilles Dartiguelongue
2014-11-03 23:24 Gilles Dartiguelongue
2014-11-03 23:24 Gilles Dartiguelongue
2014-11-02 15:58 Gilles Dartiguelongue
2014-04-20 23:44 Gilles Dartiguelongue
2014-04-20 22:57 Gilles Dartiguelongue
2013-12-11 23:44 Gilles Dartiguelongue
2013-01-16 22:56 Gilles Dartiguelongue
2012-12-29 20:21 Gilles Dartiguelongue
2012-12-27 22:54 Gilles Dartiguelongue
2012-12-27 22:51 Gilles Dartiguelongue
2012-12-27 22:51 Gilles Dartiguelongue
2012-12-27 22:19 Gilles Dartiguelongue
2012-12-27 22:19 Gilles Dartiguelongue
2012-12-16 14:16 Gilles Dartiguelongue
2012-12-16 14:16 Gilles Dartiguelongue
2012-12-05 21:59 Alexandre Rostovtsev
2012-12-03 23:43 Gilles Dartiguelongue
2012-12-02 16:02 Gilles Dartiguelongue
2012-12-02 14:50 Gilles Dartiguelongue
2012-12-02 14:50 Gilles Dartiguelongue
2012-12-02 14:50 Gilles Dartiguelongue
2012-12-02 14:50 Gilles Dartiguelongue
2012-11-26 21:35 Gilles Dartiguelongue
2012-11-25 22:38 Gilles Dartiguelongue
2012-11-18 19:11 Gilles Dartiguelongue
2012-11-18 18:50 Gilles Dartiguelongue
2012-11-18 18:50 Gilles Dartiguelongue
2012-11-18 18:25 Gilles Dartiguelongue
2012-10-27  8:42 Gilles Dartiguelongue
2012-09-12 20:23 Alexandre Rostovtsev
2012-05-03  0:03 Alexandre Restovtsev
2012-04-24  3:36 Alexandre Restovtsev
2012-02-26 21:53 Alexandre Restovtsev
2012-02-12 15:32 Gilles Dartiguelongue
2012-01-03 11:56 Priit Laes
2011-12-18  5:26 Alexandre Restovtsev
2011-12-14 19:46 Alexandre Restovtsev
2011-11-15  1:31 Nirbheek Chauhan
2011-11-14  7:01 Alexandre Restovtsev
2011-11-04 20:35 Alexandre Restovtsev
2011-09-27 13:36 Nirbheek Chauhan
2011-09-26  4:46 Alexandre Restovtsev
2011-09-25 20:37 Alexandre Restovtsev
2011-09-20  2:17 Alexandre Restovtsev
2011-09-20  0:12 Alexandre Restovtsev
2011-08-28 18:46 Alexandre Restovtsev
2011-08-24  7:04 Arun Raghavan
2011-08-21  7:06 Alexandre Restovtsev
2011-07-19  0:22 Alexandre Restovtsev
2011-05-08 18:54 Gilles Dartiguelongue
2011-05-08 18:54 Gilles Dartiguelongue
2011-05-08 18:54 Gilles Dartiguelongue
2011-04-21 22:09 Gilles Dartiguelongue
2011-04-20 20:39 Nirbheek Chauhan
2011-04-20 18:58 Nirbheek Chauhan
2011-04-05  0:57 Nirbheek Chauhan
2011-04-05  0:57 Nirbheek Chauhan
2011-03-26  2:17 Nirbheek Chauhan
2011-03-20 22:15 Nirbheek Chauhan
2011-03-20 21:46 Nirbheek Chauhan
2011-03-16 20:20 Nirbheek Chauhan
2011-02-28 10:19 Nirbheek Chauhan
2011-02-25 23:34 Nirbheek Chauhan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1347243445.2a5037f91dea5642e7b1d2885060297469fd062d.tetromino@gentoo \
    --to=tetromino@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox