dev-java/openjfx: append -Wno-error
[gentoo.git] / dev-java / openjfx / openjfx-11.0.7_p0.ebuild
1 # Copyright 2019-2020 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
3
4 EAPI=6
5
6 MY_PV="${PV/_p/+}"
7 SLOT="${MY_PV%%[.+]*}"
8 EGRADLE_VER="4.8"
9
10 inherit flag-o-matic java-pkg-2 multiprocessing
11
12 DESCRIPTION="Java OpenJFX client application platform"
13 HOMEPAGE="https://openjfx.io"
14
15 SRC_URI="https://hg.openjdk.java.net/${PN}/${SLOT}-dev/rt/archive/${MY_PV}.tar.bz2 -> ${P}.tar.bz2
16         https://downloads.gradle.org/distributions/gradle-${EGRADLE_VER}-bin.zip
17         https://repo.maven.apache.org/maven2/org/apache/lucene/lucene-sandbox/7.1.0/lucene-sandbox-7.1.0.jar
18         https://repo.maven.apache.org/maven2/org/apache/lucene/lucene-grouping/7.1.0/lucene-grouping-7.1.0.jar
19         https://repo.maven.apache.org/maven2/org/apache/lucene/lucene-queryparser/7.1.0/lucene-queryparser-7.1.0.jar
20         https://repo.maven.apache.org/maven2/org/apache/lucene/lucene-queries/7.1.0/lucene-queries-7.1.0.jar
21         https://repo.maven.apache.org/maven2/org/apache/lucene/lucene-core/7.1.0/lucene-core-7.1.0.jar
22         https://repo.maven.apache.org/maven2/org/antlr/gunit/3.5.2/gunit-3.5.2.jar
23         https://repo1.maven.org/maven2/org/antlr/antlr4/4.7.2/antlr4-4.7.2-complete.jar
24         https://repo.maven.apache.org/maven2/org/antlr/ST4/4.0.8/ST4-4.0.8.jar
25 "
26
27 LICENSE="GPL-2-with-classpath-exception"
28 KEYWORDS="-* ~amd64"
29
30 IUSE="cpu_flags_x86_sse2 debug doc source +media"
31
32 RDEPEND="
33         dev-java/swt:4.10[cairo,opengl]
34         dev-libs/atk
35         dev-libs/glib:2
36         dev-libs/libxml2:2
37         dev-libs/libxslt
38         media-libs/freetype:2
39         media-libs/fontconfig:1.0
40         media-video/ffmpeg:0=
41         x11-libs/gdk-pixbuf
42         x11-libs/gtk+:2
43         x11-libs/gtk+:3
44         x11-libs/cairo[glib]
45         x11-libs/libX11
46         x11-libs/libXtst
47         x11-libs/libXxf86vm
48         x11-libs/pango
49         virtual/jpeg
50         virtual/opengl
51         || (
52                 dev-java/openjdk-bin:${SLOT}[doc?]
53                 dev-java/openjdk:${SLOT}[doc?]
54         )
55 "
56
57 DEPEND="${RDEPEND}
58         app-arch/unzip
59         app-arch/zip
60         >=dev-java/ant-core-1.10.7-r1:0
61         dev-java/antlr:0
62         dev-java/antlr:3.5
63         dev-java/hamcrest-core:0
64         dev-java/stringtemplate:0
65         virtual/ttf-fonts
66         virtual/pkgconfig
67 "
68
69 REQUIRED_USE="cpu_flags_x86_sse2"
70
71 PATCHES=(
72         "${FILESDIR}"/11/disable-buildSrc-tests.patch
73         "${FILESDIR}"/11/glibc-compatibility.patch
74         "${FILESDIR}"/11/respect-user-cflags.patch
75         "${FILESDIR}"/11/use-system-swt-jar.patch
76 )
77
78 S="${WORKDIR}/rt-${MY_PV}"
79
80 egradle() {
81         local GRADLE_HOME="${WORKDIR}/gradle-${EGRADLE_VER}"
82         local gradle="${GRADLE_HOME}/bin/gradle"
83         local gradle_args=(
84                 --info
85                 --stacktrace
86                 --no-build-cache
87                 --no-daemon
88                 --offline
89                 --gradle-user-home "${T}/gradle_user_home"
90                 --project-cache-dir "${T}/gradle_project_cache"
91         )
92
93         export GRADLE_HOME
94
95         # FIXME: build.gradle believes $ANT_HOME/bin/ant shoud exist
96         unset ANT_HOME
97
98         einfo "gradle "${gradle_args[@]}" ${@}"
99         "${gradle}" "${gradle_args[@]}" ${@} || die "gradle failed"
100 }
101
102 pkg_setup() {
103         JAVA_PKG_WANT_BUILD_VM="openjdk-${SLOT} openjdk-bin-${SLOT}"
104         JAVA_PKG_WANT_SOURCE="${SLOT}"
105         JAVA_PKG_WANT_TARGET="${SLOT}"
106
107         # The nastiness below is necessary while the gentoo-vm USE flag is
108         # masked. First we call java-pkg-2_pkg_setup if it looks like the
109         # flag was unmasked against one of the possible build VMs. If not,
110         # we try finding one of them in their expected locations. This would
111         # have been slightly less messy if openjdk-bin had been installed to
112         # /opt/${PN}-${SLOT} or if there was a mechanism to install a VM env
113         # file but disable it so that it would not normally be selectable.
114
115         local vm
116         for vm in ${JAVA_PKG_WANT_BUILD_VM}; do
117                 if [[ -d ${EPREFIX}/usr/lib/jvm/${vm} ]]; then
118                         java-pkg-2_pkg_setup
119                         return
120                 fi
121         done
122
123         if has_version --host-root dev-java/openjdk:${SLOT}; then
124                 export JAVA_HOME=${EPREFIX}/usr/$(get_libdir)/openjdk-${SLOT}
125                 export JDK_HOME="${JAVA_HOME}"
126                 export ANT_RESPECT_JAVA_HOME=ture
127
128         else
129                 if [[ ${MERGE_TYPE} != "binary" ]]; then
130                         JDK_HOME=$(best_version --host-root dev-java/openjdk-bin:${SLOT})
131                         [[ -n ${JDK_HOME} ]] || die "Build VM not found!"
132                         JDK_HOME=${JDK_HOME#*/}
133                         JDK_HOME=${EPREFIX}/opt/${JDK_HOME%-r*}
134                         export JDK_HOME
135                         export JAVA_HOME="${JDK_HOME}"
136                         export ANT_RESPECT_JAVA_HOME=ture
137                 fi
138         fi
139 }
140
141 src_unpack() {
142         unpack "${P}.tar.bz2"
143         unpack "gradle-${EGRADLE_VER}-bin.zip"
144
145         mkdir "${T}/jars" || die
146
147         local line jar
148         for line in ${SRC_URI}; do
149                 if [[ ${line} =~ (http|https)://[a-zA-Z0-9.-_]*/(maven2|m2|eclipse)/(.*[.]jar)$ ]]; then
150                         jar=$(basename "${BASH_REMATCH[-1]}")
151                         cp -v "${DISTDIR}/${jar}" "${T}/jars/" || die
152                 fi
153         done
154 }
155
156 src_prepare() {
157         default
158
159         local d="${T}/jars"
160
161         java-pkg_jar-from --build-only --with-dependencies --into "${d}" antlr
162         java-pkg_jar-from --build-only --with-dependencies --into "${d}" antlr-3.5
163         java-pkg_jar-from --build-only --with-dependencies --into "${d}" stringtemplate
164         java-pkg_jar-from --build-only --with-dependencies --into "${d}" hamcrest-core
165
166         sed -i "s#__gentoo_swt_jar__#$(java-pkg_getjars swt-4.10)#" "${S}"/build.gradle || die
167 }
168
169 src_configure() {
170         append-flags -Wno-error
171
172         #FIXME: still calls gcc, pkg-config etc by name without chost prefix
173         #FIXME: should we enable webkit? doubt so
174
175         # build is very sensetive to doc presense, take extra steps
176         if use doc; then
177                 local jdk_doc
178                 if has_version --host-root dev-java/openjdk:${SLOT}[doc]; then
179                         jdk_doc="${EROOT%/}/usr/share/doc/openjdk-${SLOT}/html/api"
180                 elif has_version --host-root dev-java/java-sdk-docs:${SLOT}; then
181                         jdk_doc="${EROOT%/}/usr/share/doc/java-sdk-docs-${SLOT}/html/api"
182                 fi
183                 [[ -r ${jdk_doc}/element-list ]] || die "JDK Docs not found, terminating build early"
184         fi
185
186         cat <<- _EOF_ > "${S}"/gradle.properties
187                 COMPILE_TARGETS = linux
188                 COMPILE_WEBKIT = false
189                 COMPILE_MEDIA = $(usex media true false)
190                 JDK_DOCS = https://docs.oracle.com/en/java/javase/${SLOT}/docs/api
191                 JDK_DOCS_LINK = $(usex doc "${jdk_doc}" "")
192                 BUILD_LIBAV_STUBS = false
193                 GRADLE_VERSION_CHECK = false
194                 LINT = none
195                 CONF = $(usex debug DebugNative Release)
196                 NUM_COMPILE_THREADS = $(makeopts_jobs)
197                 JFX_DEPS_URL = ${T}/jars
198                 COMPANY_NAME = "Gentoo"
199         _EOF_
200 }
201
202 src_compile() {
203         egradle zips $(usex doc "" "--exclude-task javadoc")
204 }
205
206 src_install() {
207         if ! use source ; then
208                 rm -v build/sdk/lib/src.zip || die
209         fi
210
211         insinto "/usr/$(get_libdir)/${PN}-${SLOT}"
212         doins -r build/sdk/.
213         doins build/javafx-exports.zip
214
215         if use doc; then
216                 docinto html
217                 dodoc -r build/javadoc/.
218                 dosym ../../../usr/share/doc/"${PF}" /usr/share/doc/"${PN}-${SLOT}"
219         fi
220 }