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}) |