summaryrefslogtreecommitdiff
blob: 0d80ec725477062812a576243ffce38b584f3688 (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
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7

JAVA_PKG_IUSE="source"

inherit eutils java-pkg-2 java-pkg-simple

MY_A="apache-${PN}-${PV}-src"
MY_P="${MY_A/-servlet-api/}"
DESCRIPTION="Tomcat's Servlet API 4.0/JSP API 2.3/EL API 3.0 implementation"
HOMEPAGE="https://tomcat.apache.org/"
SRC_URI="mirror://apache/tomcat/tomcat-9/v${PV}/src/${MY_P}.tar.gz"

LICENSE="Apache-2.0"
SLOT="4.0"
KEYWORDS="amd64 ~arm ~arm64 ~x86 ~amd64-linux ~x86-linux ~x64-solaris ~x86-solaris"
IUSE=""

DEPEND=">=virtual/jdk-1.8"
RDEPEND=">=virtual/jre-1.8"

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

# we don't have the aQute.bnd.annotation.spi packaged
PATCHES=(
	"${FILESDIR}/tomcat-servlet-api-9.0.40-patch-out-aQute.bnd.annotation.spi.ServiceConsumer.patch"
)

JAVA_TEST_SRC_DIR="src/test"

SERVLET_API_JAR="servlet-api.jar"
SERVLET_API_SRC="src/main/servlet-api"
SERVLET_API_RESOURCES="src/resources/servlet-api"
EL_API_JAR="el-api.jar"
EL_API_SRC="src/main/el-api"
EL_API_RESOURCES="src/resources/el-api"
JSP_API_JAR="jsp-api.jar"
JSP_API_SRC="src/main/jsp-api"
JSP_API_RESOURCES="src/resources/jsp-api"

src_prepare() {
	default

	# The sources and also resources are mixed together so we first give it a structure to make it easier to compila and package

	mkdir -p ${SERVLET_API_SRC} ${SERVLET_API_RESOURCES} \
		${EL_API_SRC} ${EL_API_RESOURCES} \
		${JSP_API_SRC}/javax/servlet ${JSP_API_RESOURCES} \
		${JAVA_TEST_SRC_DIR} || die "Failed to create source directory"

	pushd java || die "Failed to cd to java dir"

	cp --parents -R javax/servlet "${S}/${SERVLET_API_SRC}/" || die "Failed to copy servlet-api sources"
	mv "${S}/${SERVLET_API_SRC}/javax/servlet/jsp" "${S}/${JSP_API_SRC}/javax/servlet" || die "Failed to copy jsp-api sources"
	cp --parents -R javax/el "${S}/${EL_API_SRC}/" || die "Failed to copy el-api sources"

	popd

	for file in $(find src -type f | grep -vE "\.java$"); do
		target_dir=$(dirname $file | sed "s%src/main/%src/resources/%g")
		mkdir -p ${target_dir} || die "Failed to create resource directory"
		mv $file ${target_dir} || die "Failed to move resource file"
	done

	mv test/javax ${JAVA_TEST_SRC_DIR} || die "Failed to copy test sources"

	java-pkg-2_src_prepare
}

src_compile() {
	JAVA_SRC_DIR="${SERVLET_API_SRC}"
	JAVA_RESOURCE_DIRS="${SERVLET_API_RESOURCES}"
	JAVA_JAR_FILENAME="${SERVLET_API_JAR}"
	java-pkg-simple_src_compile
	rm -fr target || die "Failed to remove compiled files"

	JAVA_SRC_DIR="${EL_API_SRC}"
	JAVA_RESOURCE_DIRS="${EL_API_RESOURCES}"
	JAVA_JAR_FILENAME="${EL_API_JAR}"
	java-pkg-simple_src_compile
	rm -fr target || die "Failed to remove compiled files"

	JAVA_SRC_DIR="${JSP_API_SRC}"
	JAVA_RESOURCE_DIRS="${JSP_API_RESOURCES}"
	JAVA_JAR_FILENAME="${JSP_API_JAR}"
	JAVA_GENTOO_CLASSPATH_EXTRA="servlet-api.jar:el-api.jar"
	java-pkg-simple_src_compile
}

src_install() {
	JAVA_SRC_DIR="${SERVLET_API_SRC}"
	JAVA_JAR_FILENAME="${SERVLET_API_JAR}"
	java-pkg-simple_src_install

	JAVA_SRC_DIR="${EL_API_SRC}"
	JAVA_JAR_FILENAME="${EL_API_JAR}"
	java-pkg-simple_src_install

	JAVA_SRC_DIR="${JSP_API_SRC}"
	JAVA_JAR_FILENAME="${JSP_API_JAR}"
	java-pkg-simple_src_install
}