blob: ad7b1440631405465f1ac453f01fd00c1909485f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
# Copyright 2021-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: gradle.eclass
# @MAINTAINER:
# Gentoo Java Project <java@gentoo.org>
# @AUTHOR:
# Florian Schmaus <flow@gentoo.org>
# @BLURB: Utility functions for the gradle build system.
# @DESCRIPTION:
# Utility functions for the gradle build system.
# WARNING: This eclass is currently experimental and
# subject to change.
case ${EAPI} in
7|8) ;;
*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
esac
if [[ -z ${_GRADLE_ECLASS} ]] ; then
_GRADLE_ECLASS=1
inherit edo
# @ECLASS_VARIABLE: EGRADLE_MIN
# @DEFAULT_UNSET
# @DESCRIPTION:
# Minimum required gradle version.
# @ECLASS_VARIABLE: EGRADLE_MAX_EXCLUSIVE
# @DEFAULT_UNSET
# @DESCRIPTION:
# First gradle version that is not supported.
# @ECLASS_VARIABLE: EGRADLE_OVERWRITE
# @USER_VARIABLE
# @DEFAULT_UNSET
# @DESCRIPTION:
# User-specified overwrite of the used gradle binary.
# @FUNCTION: gradle-set_EGRADLE
# @DESCRIPTION:
# Set the EGRADLE environment variable.
gradle-set_EGRADLE() {
[[ -n ${EGRADLE} ]] && return
if [[ -n ${EGRADLE_OVERWRITE} ]]; then
export EGRADLE="${EGRADLE_OVERWRITE}"
return
fi
local candidates candidate selected selected_ver
candidates=$(compgen -c gradle-)
for candidate in ${candidates}; do
if [[ ! ${candidate} =~ gradle(-bin)?-([.0-9]+) ]]; then
continue
fi
local ver
if (( ${#BASH_REMATCH[@]} == 3 )); then
ver="${BASH_REMATCH[2]}"
else
ver="${BASH_REMATCH[1]}"
fi
if [[ -n ${EGRADLE_MIN} ]] \
&& ver_test "${ver}" -lt "${EGRADLE_MIN}"; then
# Candidate does not stisfy EGRADLE_MIN condition.
continue
fi
if [[ -n ${EGRADLE_MAX_EXCLUSIVE} ]] \
&& ver_test "${ver}" -ge "${EGRADLE_MAX_EXCLUSIVE}"; then
# Candidate does not satisfy EGRADLE_MAX_EXCLUSIVE condition.
continue
fi
if [[ -n ${selected_ver} ]] \
&& ver_test "${selected_ver}" -gt "${ver}"; then
# Candidate is older than the currently selected candidate.
continue
fi
selected="${candidate}"
selected_ver="${ver}"
done
if [[ -z ${selected} ]]; then
die "Could not find (suitable) gradle installation in PATH"
fi
export EGRADLE="${selected}"
export EGRADLE_VER="${ver}"
}
# @FUNCTION: egradle
# @USAGE: [gradle-args]
# @DESCRIPTION
# Invoke gradle
egradle() {
gradle-set_EGRADLE
# TODO --no-build-cache ?
local gradle_args=(
--console=plain
--info
--stacktrace
--no-daemon
--offline
--no-build-cache
--gradle-user-home "${T}/gradle_user_home"
--project-cache-dir "${T}/gradle_project_cache"
)
edo "${EGRADLE}" "${gradle_args[@]}" ${@}
}
fi
|