summaryrefslogtreecommitdiff
blob: 48dc17d07cf46580e58fc38207f253b02f005ed7 (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
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$

EAPI="5"

JAVA_PKG_IUSE="source examples doc test"

inherit java-pkg-2 java-ant-2

DESCRIPTION="A low level toolset of Java components focused on HTTP and associated protocols"
HOMEPAGE="http://hc.apache.org/index.html"
SRC_URI="mirror://apache/${PN/-//http}/source/${P}-src.tar.gz"

LICENSE="Apache-2.0"
SLOT="4.5"
KEYWORDS="amd64 x86"

CDEPEND="
	dev-java/ant-junit:0
	dev-java/easymock:3.2
	dev-java/spymemcached:0
	dev-java/osgi-core-api:0
	dev-java/osgi-enterprise-api:0
	dev-java/commons-codec:0
	dev-java/commons-logging:0
	dev-java/httpcomponents-core:4.4
	dev-java/easymock-classextension:3.2
"

RDEPEND=">=virtual/jre-1.6
	${CDEPEND}"

DEPEND=">=virtual/jdk-1.6
	test? (
		dev-java/junit:4
		dev-java/mockito:0
	)
	${CDEPEND}"

JAVA_ANT_REWRITE_CLASSPATH="true"
EANT_GENTOO_CLASSPATH="
	commons-codec
	commons-logging
	spymemcached
	osgi-core-api
	osgi-enterprise-api
	httpcomponents-core-4.4
"

# List of modules to compile and test.
MODULES=(
	httpclient
	httpclient-cache
	httpmime
	fluent-hc
	httpclient-osgi
)

EANT_BUILD_TARGET="package"
EANT_GENTOO_CLASSPATH_EXTRA="${S}/${MODULES[0]}/target/${MODULES[0]}-${PV}.jar"

java_prepare() {
	# copy build.xml files to their location.
	for module in ${MODULES[@]}; do
		cd "${S}"/"${module}" || die
		cp "${FILESDIR}"/"${PN}-${module}-${PV}"-build.xml build.xml
	done

	cd "${S}" || die

	# httpclient:
	# - copy deprecated sources for compilation
	cp -r "${S}"/${MODULES[0]}/src/main/java-deprecated/* \
		"${S}"/${MODULES[0]}/src/main/java/* || die

	# - remove broken tests
	rm -v ${MODULES[0]}/src/test/java/org/apache/http/client/config/TestRequestConfig.java

	# httpclient-cache:
	# - copy deprecated sources into main repository
	cp -r "${S}"/${MODULES[1]}/src/main/java-deprecated/* \
		"${S}"/${MODULES[1]}/src/main/java || die

	# - remove broken tests
	rm -v \
		${MODULES[1]}/src/test/java/org/apache/http/impl/client/cache/TestCachingExec*

	# - disable ehcache support altogether
	# the version in Portage is very old and compilation chokes on missing imports
	rm -rf \
		"${S}"/${MODULES[1]}/src/main/java/org/apache/http/impl/client/cache/ehcache \
		"${S}"/${MODULES[1]}/src/test/java/org/apache/http/impl/client/cache/ehcache

	# httpmime:
	# - copy deprecated sources into main repository
	cp -r "${S}"/${MODULES[2]}/src/main/java-deprecated/* \
		"${S}"/${MODULES[2]}/src/main/java

	# fluent-hc:
	# remove broken tests.
	rm -v ${MODULES[3]}/src/test/java/org/apache/http/client/fluent/TestFluent.java
}

EANT_TEST_GENTOO_CLASSPATH="
	${EANT_GENTOO_CLASSPATH}
	junit-4
	mockito
	easymock-3.2
	easymock-classextension-3.2
"

src_compile() {
	for module in ${MODULES[@]}; do
		EANT_BUILD_XML="${module}/build.xml" \
			java-pkg-2_src_compile
	done
}

src_test() {
	for module in ${MODULES[@]}; do
		ANT_TASKS= \
			EANT_BUILD_XML="${module}/build.xml" \
			java-pkg-2_src_test
	done
}

src_install() {
	for module in ${MODULES[@]}; do
		java-pkg_newjar ${module}/target/${module}-${PV}.jar ${module}.jar
	done

	if use source; then

		java-pkg_dosrc {httpclient,httpclient-cache,httpmime,fluent-hc}/src/main/java/org
	fi

	if use examples; then
		for dir in $(find "${S}" -mindepth 3 -maxdepth 4 -name "examples" -type d -print); do
			java-pkg_doexamples ${dir}/*
		done
	fi

	if use doc; then
		java-pkg_dojavadoc {httpclient,httpclient-cache,httpmime,fluent-hc}/target/site/apidocs/
	fi
}