summaryrefslogtreecommitdiff
blob: df7f62be6accd373b61a62a34451854b32f13156 (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
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
# Eclass for building dev-java/ant-* packages
#
# Copyright 2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License, v2 or later
# Author Vlastimil Babka <caster@gentoo.org>
# $Header: /var/cvsroot/gentoo-x86/eclass/ant-tasks.eclass,v 1.3 2007/01/21 21:37:02 caster Exp $

inherit java-pkg-2 versionator

EXPORT_FUNCTIONS src_unpack src_compile src_install

# -----------------------------------------------------------------------------
# @eclass-begin
# @eclass-shortdesc Eclass for building dev-java/ant-* packages
# @eclass-maintainer java@gentoo.org
#
# This eclass provides functionality and default ebuild variables for building
# dev-java/ant-* packages easily.
#
# -----------------------------------------------------------------------------

# -----------------------------------------------------------------------------
# @variable-preinherit ANT_TASK_JDKVER
# @variable-default 1.4
#
# Affects the >=virtual/jdk version set in DEPEND string. Defaults to 1.4, can
# be overriden from ebuild BEFORE inheriting this eclass.
# -----------------------------------------------------------------------------
ANT_TASK_JDKVER=${ANT_TASK_JDKVER-1.4}

# -----------------------------------------------------------------------------
# @variable-preinherit ANT_TASK_JREVER
# @variable-default 1.4
#
# Affects the >=virtual/jre version set in DEPEND string. Defaults to 1.4, can
# be overriden from ebuild BEFORE inheriting this eclass.
# -----------------------------------------------------------------------------
ANT_TASK_JREVER=${ANT_TASK_JREVER-1.4}

# -----------------------------------------------------------------------------
# @variable-internal ANT_TASK_NAME
# @variable-default the rest of $PN after "ant-"
#
# The name of this ant task as recognized by ant's build.xml, derived from $PN.
# -----------------------------------------------------------------------------
ANT_TASK_NAME="${PN#ant-}"

# -----------------------------------------------------------------------------
# @variable-preinherit ANT_TASK_DEPNAME
# @variable-default $ANT_TASK_NAME
#
# 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}}

# -----------------------------------------------------------------------------
# @variable-internal ANT_TASK_PV
# @variable-default Just the number in $PV without any beta/RC suffixes
#
# 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} == *beta* ]]; then
	MY_PV=${PV/_beta/Beta}
	SRC_URI_PREFIX="http://dev.gentoo.org/~caster/distfiles"
	ANT_TASK_PV=$(get_version_component_range 1-3)
elif [[ ${PV} == *_rc* ]]; then
	MY_PV=${PV/_rc/RC}
	SRC_URI_PREFIX="http://dev.gentoo.org/~caster/distfiles"
	ANT_TASK_PV=$(get_version_component_range 1-3)
else
	# default for final releases
	MY_PV=${PV}
	SRC_URI_PREFIX="mirror://apache/ant/source"
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="${SRC_URI_PREFIX}/${MY_P}-src.tar.bz2
	mirror://gentoo/ant-${PV}-gentoo.tar.bz2"
LICENSE="Apache-2.0"
SLOT="0"
IUSE=""

RDEPEND=">=virtual/jre-${ANT_TASK_JREVER}
	~dev-java/ant-core-${PV}"
DEPEND=">=virtual/jdk-${ANT_TASK_JDKVER}
	${RDEPEND}"

S="${WORKDIR}/${MY_P}"

# ------------------------------------------------------------------------------
# @eclass-src_unpack
#
# 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
				java-pkg_jar-from ${ANT_TASK_DEPNAME};;
			all)
				ant-tasks_src_unpack base jar-dep;;
		esac
		shift
	done

}

# ------------------------------------------------------------------------------
# @eclass-src_compile
#
# Compiles the jar with installed ant-core.
# ------------------------------------------------------------------------------
ant-tasks_src_compile() {
	ANT_TASKS="none" eant -Dbuild.dep=${ANT_TASK_NAME} jar-dep
}

# ------------------------------------------------------------------------------
# @eclass-src_install
#
# 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}"
}