Gentoo Archives: gentoo-dev

From: Alexandre Rostovtsev <tetromino@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] vala.eclass: change vala_src_prepare behavior when USE=-vala
Date: Thu, 20 Sep 2012 06:15:50
Message-Id: 1348121686.14335.42.camel@rook
In Reply to: [gentoo-dev] vala.eclass: change vala_src_prepare behavior when USE=-vala by Alexandre Rostovtsev
1 Revised to use a separate variable for the name of the flag instead of
2 reading IUSE, as suggested by Ciaran McCreesh. As a result of this
3 change, vala.eclass now defaults to assuming that vala support is
4 optional (which is the case in an overwhelming majority of ebuilds that
5 would want to use this eclass).
6
7 --- a/vala.eclass
8 +++ b/vala.eclass
9 @@ -39,6 +39,19 @@
10 # @DESCRIPTION:
11 # USE dependencies that vala must be built with (e.g. vapigen).
12
13 +# @ECLASS-VARIABLE: VALA_OPTIONAL
14 +# @DESCRIPTION:
15 +# Set to "no" if vala support is not optional.
16 +VALA_OPTIONAL=${VALA_OPTIONAL:-yes}
17 +
18 +# @ECLASS-VARIABLE: VALA_IUSE
19 +# @DESCRIPTION:
20 +# USE flag that enables vala support in the ebuild; will be added to IUSE unless
21 +# VALA_OPTIONAL is "no"; can be prefixed with '+'.
22 +VALA_IUSE=${VALA_IUSE:-vala}
23 +
24 +[[ ${VALA_OPTIONAL} = no ]] || IUSE=${VALA_IUSE}
25 +
26 # @FUNCTION: vala_api_versions
27 # @DESCRIPTION:
28 # Outputs a list of vala API versions from VALA_MAX_API_VERSION down to
29 @@ -49,17 +62,20 @@
30
31 # @FUNCTION: vala_depend
32 # @DESCRIPTION:
33 -# Outputs a ||-dependency string on vala from VALA_MAX_API_VERSION down to
34 -# VALA_MIN_API_VERSION
35 +# Outputs a ||-dependency string on vala satisfying VALA_MAX_API_VERSION,
36 +# VALA_MIN_API_VERSION, and VALA_USE_DEPEND. The dependency will be conditional
37 +# on VALA_IUSE unless vala is non-optional.
38 vala_depend() {
39 local u v versions=$(vala_api_versions)
40 [[ ${VALA_USE_DEPEND} ]] && u="[${VALA_USE_DEPEND}]"
41
42 + [[ ${VALA_OPTIONAL} = no ]] || echo -n "${VALA_IUSE#[+-]}? ( "
43 echo -n "|| ("
44 for v in ${versions}; do
45 echo -n " dev-lang/vala:${v}${u}"
46 done
47 - echo " )"
48 + echo -n " )"
49 + [[ ${VALA_OPTIONAL} = no ]] || echo -n " )"
50 }
51
52 # @FUNCTION: vala_best_api_version
53 @@ -81,17 +97,24 @@
54 # specified API version, or, if no version is specified, for the
55 # highest installed vala API version satisfying
56 # VALA_MAX_API_VERSION, VALA_MIN_API_VERSION, and VALA_USE_DEPEND.
57 -# Dies if called without --vala-api-version and no suitable vala
58 -# version is found.
59 +# Is a no-op if vala support is optional and disabled via USE.
60 +# Dies if the USE check is passed and a suitable vala version is not
61 +# available.
62 vala_src_prepare() {
63 local p d valafoo version
64
65 if [[ $1 = "--vala-api-version" ]]; then
66 version=$2
67 [[ ${version} ]] || die "'--vala-api-version' option requires API version parameter."
68 + fi
69 +
70 + [[ ${VALA_OPTIONAL} = no ]] || use "${VALA_IUSE#[+-]}" || return
71 +
72 + if [[ ${version} ]]; then
73 + has_version "dev-lang/vala:${version}" || die "No installed vala:${version}"
74 else
75 version=$(vala_best_api_version)
76 - [[ ${version} ]] || die "No installed vala in $(vala_depend)"
77 + [[ ${version} ]] || die "No installed vala in $(VALA_OPTIONAL=no vala_depend)"
78 fi
79
80 export VALAC=$(type -P valac-${version})

Replies