From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id D4417138010 for ; Mon, 10 Sep 2012 02:18:10 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 5E76A21C01A; Mon, 10 Sep 2012 02:18:02 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 20C5F21C01A for ; Mon, 10 Sep 2012 02:18:02 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id EA6B033C843 for ; Mon, 10 Sep 2012 02:18:00 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id A10B3E543C for ; Mon, 10 Sep 2012 02:17:59 +0000 (UTC) From: "Alexandre Rostovtsev" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Alexandre Rostovtsev" Message-ID: <1347243445.2a5037f91dea5642e7b1d2885060297469fd062d.tetromino@gentoo> Subject: [gentoo-commits] proj/gnome:master commit in: eclass/ X-VCS-Repository: proj/gnome X-VCS-Files: eclass/vala.eclass X-VCS-Directories: eclass/ X-VCS-Committer: tetromino X-VCS-Committer-Name: Alexandre Rostovtsev X-VCS-Revision: 2a5037f91dea5642e7b1d2885060297469fd062d X-VCS-Branch: master Date: Mon, 10 Sep 2012 02:17:59 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 937e976c-7109-494a-8811-0daeac76b617 X-Archives-Hash: 7bd55ebc44bf8b573d58146ca6a7e302 commit: 2a5037f91dea5642e7b1d2885060297469fd062d Author: Alexandre Rostovtsev gentoo org> AuthorDate: Mon Sep 10 02:17:25 2012 +0000 Commit: Alexandre Rostovtsev gentoo 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 +# @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}" +}