forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ant-tasks.eclass
174 lines (147 loc) · 5.02 KB
/
ant-tasks.eclass
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
# Copyright 1999-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License, v2 or later
# @ECLASS: ant-tasks.eclass
# @MAINTAINER:
# @AUTHOR:
# Vlastimil Babka <[email protected]>
# @BLURB: Eclass for building dev-java/ant-* packages
# @DESCRIPTION:
# This eclass provides functionality and default ebuild variables for building
# dev-java/ant-* packages easily.
# we set ant-core dep ourselves, restricted
JAVA_ANT_DISABLE_ANT_CORE_DEP=true
# rewriting build.xml for are the testcases has no reason atm
JAVA_PKG_BSFIX_ALL=no
inherit versionator java-pkg-2 java-ant-2
EXPORT_FUNCTIONS src_unpack src_compile src_install
# @ECLASS-VARIABLE: ANT_TASK_JDKVER
# @DESCRIPTION:
# Affects the >=virtual/jdk version set in DEPEND string. Defaults to 1.5, can
# be overriden from ebuild BEFORE inheriting this eclass.
ANT_TASK_JDKVER=${ANT_TASK_JDKVER-1.5}
# @ECLASS-VARIABLE: ANT_TASK_JREVER
# @DESCRIPTION:
# Affects the >=virtual/jre version set in DEPEND string. Defaults to 1.5, can
# be overriden from ebuild BEFORE inheriting this eclass.
ANT_TASK_JREVER=${ANT_TASK_JREVER-1.5}
# @ECLASS-VARIABLE: ANT_TASK_NAME
# @DESCRIPTION:
# The name of this ant task as recognized by ant's build.xml, derived from $PN
# by removing the ant- prefix. Read-only.
ANT_TASK_NAME="${PN#ant-}"
# @ECLASS-VARIABLE: ANT_TASK_DEPNAME
# @DESCRIPTION:
# Specifies JAVA_PKG_NAME (PN{-SLOT} used with java-pkg_jar-from) of the package
# that this one depends on. Defaults to the name of ant task, ebuild can
# override it before inheriting this eclass.
ANT_TASK_DEPNAME=${ANT_TASK_DEPNAME-${ANT_TASK_NAME}}
# @ECLASS-VARIABLE: ANT_TASK_DISABLE_VM_DEPS
# @DEFAULT_UNSET
# @DESCRIPTION:
# If set, no JDK/JRE deps are added.
# @VARIABLE: ANT_TASK_PV
# @INTERNAL
# Version of ant-core this task is intended to register and thus load with.
ANT_TASK_PV="${PV}"
# special care for beta/RC releases
if [[ ${PV} == *beta2* ]]; then
MY_PV=${PV/_beta2/beta}
UPSTREAM_PREFIX="http://people.apache.org/dist/ant/v1.7.1beta2/src"
GENTOO_PREFIX="https://dev.gentoo.org/~caster/distfiles"
ANT_TASK_PV=$(get_version_component_range 1-3)
elif [[ ${PV} == *_rc* ]]; then
MY_PV=${PV/_rc/RC}
UPSTREAM_PREFIX="https://dev.gentoo.org/~caster/distfiles"
GENTOO_PREFIX="https://dev.gentoo.org/~caster/distfiles"
ANT_TASK_PV=$(get_version_component_range 1-3)
else
# default for final releases
MY_PV=${PV}
case ${PV} in
1.9.*)
UPSTREAM_PREFIX="https://archive.apache.org/dist/ant/source"
GENTOO_PREFIX="https://dev.gentoo.org/~tomwij/files/dist"
;;
*)
UPSTREAM_PREFIX="mirror://apache/ant/source"
GENTOO_PREFIX="https://dev.gentoo.org/~caster/distfiles"
;;
esac
fi
# source/workdir name
MY_P="apache-ant-${MY_PV}"
# Default values for standard ebuild variables, can be overriden from ebuild.
DESCRIPTION="Apache Ant's optional tasks depending on ${ANT_TASK_DEPNAME}"
HOMEPAGE="http://ant.apache.org/"
SRC_URI="${UPSTREAM_PREFIX}/${MY_P}-src.tar.bz2
${GENTOO_PREFIX}/ant-${PV}-gentoo.tar.bz2"
LICENSE="Apache-2.0"
SLOT="0"
RDEPEND="~dev-java/ant-core-${PV}:0"
DEPEND="${RDEPEND}"
if [[ -z "${ANT_TASK_DISABLE_VM_DEPS}" ]]; then
RDEPEND+=" >=virtual/jre-${ANT_TASK_JREVER}"
DEPEND+=" >=virtual/jdk-${ANT_TASK_JDKVER}"
fi
# we need direct blockers with old ant-tasks for file collisions - bug #252324
if version_is_at_least 1.7.1 ; then
DEPEND+=" !dev-java/ant-tasks"
fi
# Would run the full ant test suite for every ant task
RESTRICT="test"
S="${WORKDIR}/${MY_P}"
# @FUNCTION: ant-tasks_src_unpack
# @USAGE: [ base ] [ jar-dep ] [ all ]
# @DESCRIPTION:
# The function Is split into two parts, defaults to both of them ('all').
#
# base: performs the unpack, build.xml replacement and symlinks ant.jar from
# ant-core
#
# jar-dep: symlinks the jar file(s) from dependency package
ant-tasks_src_unpack() {
[[ -z "${1}" ]] && ant-tasks_src_unpack all
while [[ -n "${1}" ]]; do
case ${1} in
base)
unpack ${A}
cd "${S}"
# replace build.xml with our modified for split building
mv -f "${WORKDIR}"/build.xml .
cd lib
# remove bundled xerces
rm -f *.jar
# ant.jar to build against
java-pkg_jar-from --build-only ant-core ant.jar;;
jar-dep)
# get jar from the dependency package
if [[ -n "${ANT_TASK_DEPNAME}" ]]; then
java-pkg_jar-from ${ANT_TASK_DEPNAME}
fi;;
all)
ant-tasks_src_unpack base jar-dep;;
esac
shift
done
}
# @FUNCTION: ant-tasks_src_compile
# @DESCRIPTION:
# Compiles the jar with installed ant-core.
ant-tasks_src_compile() {
ANT_TASKS="none" eant -Dbuild.dep=${ANT_TASK_NAME} jar-dep
}
# @FUNCTION: ant-tasks_src_install
# @DESCRIPTION:
# Installs the jar and registers its presence for the ant launcher script.
# Version param ensures it won't get loaded (thus break) when ant-core is
# updated to newer version.
ant-tasks_src_install() {
java-pkg_dojar build/lib/${PN}.jar
java-pkg_register-ant-task --version "${ANT_TASK_PV}"
# create the compatibility symlink
if version_is_at_least 1.7.1_beta2; then
dodir /usr/share/ant/lib
dosym /usr/share/${PN}/lib/${PN}.jar /usr/share/ant/lib/${PN}.jar
fi
}