Gentoo Archives: gentoo-dev

From: Alexandre Rostovtsev <tetromino@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] [RFC] new vala.eclass
Date: Mon, 27 Aug 2012 13:23:04
Message-Id: 1346073707.9829.124.camel@rook
In Reply to: [gentoo-dev] [RFC] new vala.eclass by Alexandre Rostovtsev
1 Third update; Alexis made a convincing argument that vala_pkg_setup
2 should be changed to vala_src_prepare.
3
4 # Copyright 1999-2012 Gentoo Foundation
5 # Distributed under the terms of the GNU General Public License v2
6 # $Header: $
7
8 # @ECLASS: vala.eclass
9 # @MAINTAINER:
10 # gnome@g.o
11 # @AUTHOR:
12 # Alexandre Rostovtsev <tetromino@g.o>
13 # @BLURB: Sets up the environment for using a specific version of vala.
14 # @DESCRIPTION:
15 # This eclass sets up commonly used environment variables for using a specific
16 # version of dev-lang/vala to configure and build a package. It is needed for
17 # packages whose build systems assume the existence of certain unversioned vala
18 # executables, pkgconfig files, etc., which Gentoo does not provide.
19 #
20 # This eclass provides one phase function: src_prepare.
21
22 inherit multilib
23
24 case "${EAPI:-0}" in
25 0|1)
26 ;;
27 *)
28 EXPORT_FUNCTIONS src_prepare
29 ;;
30 esac
31
32 # @ECLASS-VARIABLE: VALA_API_VERSION
33 # @DEFAULT_UNSET
34 # @DESCRIPTION:
35 # Vala API version (e.g. 0.16).
36
37 # @FUNCTION: vala_src_prepare
38 # @DESCRIPTION:
39 # Sets up the environment variables and pkgconfig files for $VALA_API_VERSION.
40 vala_src_prepare() {
41 local p d valafoo
42
43 [[ ${VALA_API_VERSION} ]] || die "VALA_API_VERSION not set"
44
45 valafoo=$(type -P valac-${VALA_API_VERSION})
46 [[ ${valafoo} ]] && export VALAC="${valafoo}"
47
48 valafoo=$(type -P vala-${VALA_API_VERSION})
49 [[ ${valafoo} ]] && export VALA="${valafoo}"
50
51 valafoo=$(type -P vala-gen-introspect-${VALA_API_VERSION})
52 [[ ${valafoo} ]] && export VALA_GEN_INTROSPECT="${valafoo}"
53
54 valafoo=$(type -P vapigen-${VALA_API_VERSION})
55 [[ ${valafoo} ]] && export VAPIGEN="${valafoo}"
56
57 valafoo="${EPREFIX}/usr/share/vala/Makefile.vapigen"
58 [[ -e ${valafoo} ]] && export VAPIGEN_MAKEFILE="${valafoo}"
59
60 export VAPIGEN_VAPIDIR="${EPREFIX}/usr/share/vala/vapi"
61
62 mkdir -p "${T}/pkgconfig" || die "mkdir failed"
63 for p in libvala vapigen; do
64 for d in "${EPREFIX}/usr/$(get_libdir)/pkgconfig" "${EPREFIX}/usr/share/pkgconfig"; do
65 if [[ -e ${d}/${p}-${VALA_API_VERSION}.pc ]]; then
66 ln -s "${d}/${p}-${VALA_API_VERSION}.pc" "${T}/pkgconfig/${p}.pc" || die "ln failed"
67 break
68 fi
69 done
70 done
71 : ${PKG_CONFIG_PATH:="${EPREFIX}/usr/$(get_libdir)/pkgconfig:${EPREFIX}/usr/share/pkgconfig"}
72 export PKG_CONFIG_PATH="${T}/pkgconfig:${PKG_CONFIG_PATH}"
73 }