summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dev-java/openjfx/Manifest10
-rw-r--r--dev-java/openjfx/files/11/disable-buildSrc-tests.patch13
-rw-r--r--dev-java/openjfx/files/11/fix-build-on-gradle-5x.patch23
-rw-r--r--dev-java/openjfx/files/11/glibc-compatibility.patch15
-rw-r--r--dev-java/openjfx/files/11/respect-user-cflags.patch227
-rw-r--r--dev-java/openjfx/files/11/use-system-swt-jar.patch25
-rw-r--r--dev-java/openjfx/metadata.xml19
-rw-r--r--dev-java/openjfx/openjfx-11.0.3_p1.ebuild218
8 files changed, 550 insertions, 0 deletions
diff --git a/dev-java/openjfx/Manifest b/dev-java/openjfx/Manifest
new file mode 100644
index 000000000000..f582a7dc84de
--- /dev/null
+++ b/dev-java/openjfx/Manifest
@@ -0,0 +1,10 @@
+DIST ST4-4.0.8.jar 239543 BLAKE2B 72d257c6d0f1b3bde0afce805128dd38d8520b2073377bbb995fed3b4e18a3ea69d508d6d7554755ec68bf50940082b896ed89998a5178272d24376404b389c5 SHA512 9877289297cd5b15ad464a19467699387f57c510fe8a476e07e9d2334bd11933f9bdb9c6caa4972d4d4c84b56740c6d885cd39300dd7ce35b7c5bde536238086
+DIST antlr-complete-3.5.2.jar 2456317 BLAKE2B d9afa08ad98dbff16d30425b97a0ddac7402055916e6a7dd290c3b9a2b26a4751c02f405d8d13c186333430c370c94bd73419b14c8e46df2971f68536cc484a0 SHA512 560f208e38759b5e626de56816e1fce9c191c526c04ca782513859d468ac444d1e8e62c03870a68f8f9d8daee0f45fca465150e2bbfc71b46e46b952519044b1
+DIST gradle-4.8-bin.zip 75885015 BLAKE2B eb6592afe122690f5e013abec2821beabac070563556ceec67ce02506582d4d9ac9c5d9f97ad2c464e442446f26ff90e9ead2c04e462a564411259564e3332c6 SHA512 4b351c9c5b0970bafb3b2b9b9e2ec9f37ff681cc3ac30004852d712cf8bb83061211a58e5b1f101813cde6a0aec914badf4ef0a806eec603418b851b64a06882
+DIST gunit-3.5.2.jar 287425 BLAKE2B 86e759c5bb164758b689d93bef4b6a0bcb39eb9fee28d2a8dc113a4c97e5e8516b55ada87c27738ffa0fc512805caa338d8649f6f5c9ba36490c4c3ebed86fdd SHA512 c9f14dacec2f22f62b7d3849d1c0e9d626b3dc20eb74a85b32f1901f6279b7b84af095107128bcbe80c49ac05448a713309b60d0c3d2f88e0bca8a14690292b2
+DIST lucene-core-7.1.0.jar 2779248 BLAKE2B 9edea1cfdeca2f2ec9e5c014e575774dc32fa5cf12ba02fd419fc252da10c03cd9f6cda989203211de4bc2ffcd2e79e8b97914e9792951bb0877a203760f07ad SHA512 0cd96016de2bc7ad94779e30348c443cf6028119fdae42c6f29e33d84495876a7519640f20680762324ea40c42e21b595f79cd606a6142b9875501f1e9179678
+DIST lucene-grouping-7.1.0.jar 87200 BLAKE2B 93f4ca6938b3fbc74752e22ee9d53022a60c57489017985448ddff46bc8c527b72e615e5f28d0301c28dc8119f0e6c75f4e8a711df3e6aaa418190b8ac8d1857 SHA512 41a85eafde03718efba7cf22598a430efbc6a6a68cf68058988f9eff648d19faa6cc4cf68293fe6e39783a7636eae571f27e04006f4607250dd9f6642184c61d
+DIST lucene-queries-7.1.0.jar 243126 BLAKE2B 166c3efea04c19314be7fd8c1d6b1378b2b967243289d9bded5e9768cb441a35fabbe63641d00b72a8c14aace0bad402df49c21b853f620bf81bc1e829dcecdb SHA512 34df5eccf0577ed037ef347adc9c2552c49d57e35dbff629fdbb860926765be48f8b06fd693bdacfc2edcd9c6ad711c13fe98e5317cb1d1f2157dcab938e34ea
+DIST lucene-queryparser-7.1.0.jar 384680 BLAKE2B adce2572de9f534323eead31dd30f97b853b2d5e4be6828c415f0c647460c361e00680d856ff9ffbba0fe45c3e4a425d68938a3d2dc01c76491bb65673e120fa SHA512 7151ef899e318679995138262c3450577ae33580708864581dc22a027f43ca4989825d434680925547e3c04ad4453a454e7045f605d7eee0da57d63db978ed68
+DIST lucene-sandbox-7.1.0.jar 182914 BLAKE2B 70c795f84d8f0908abe47db77f632eeb6571a77e1445b8ab04a75080cea40e3b8171071965ff7fd9f6d39a450dd33144e922d19c1f07c605de54b45e3e881323 SHA512 6faf9fd9c7c082bf062adb6a28d89447e6e27152eb3f0a325081e5f791196e5440334632ccbf9c458940220676f7e73390a174889d9b7a656d088b3dade5d500
+DIST openjfx-11.0.3_p1.tar.bz2 63272033 BLAKE2B 574a622b2b2587fcdc64c91cfef0fbcc6d97baa7827e84a540bf1c8493b9fbc3629bd131e5c0972fb82687d194ceb527dfdedd6c2a00edc16d9a76850699f9b6 SHA512 8f8e07d7588b1a5fbcdfcc2837ae0389fefea3a1d91f89fdd4aab03e0bc6f5b9a1e66a824ae9388b777b36e76beb19cb6c69c963c7d904d36cad40f36c5ef0c7
diff --git a/dev-java/openjfx/files/11/disable-buildSrc-tests.patch b/dev-java/openjfx/files/11/disable-buildSrc-tests.patch
new file mode 100644
index 000000000000..39e247107992
--- /dev/null
+++ b/dev-java/openjfx/files/11/disable-buildSrc-tests.patch
@@ -0,0 +1,13 @@
+Description: Disables the buildSrc tests to work around a Gradle bug (UnsupportedOperationException: Cannot nest operations in the same thread)
+Author: Emmanuel Bourg <ebourg@apache.org>
+Forwarded: not-needed
+--- a/buildSrc/build.gradle
++++ b/buildSrc/build.gradle
+@@ -81,6 +81,7 @@
+ // Java 7 but when we switch to 8 this will be needed, and probably again when
+ // we start building with Java 9.
+ test {
++ enabled = false;
+ enableAssertions = true;
+ testLogging.exceptionFormat = "full";
+ scanForTestClasses = false;
diff --git a/dev-java/openjfx/files/11/fix-build-on-gradle-5x.patch b/dev-java/openjfx/files/11/fix-build-on-gradle-5x.patch
new file mode 100644
index 000000000000..51fde6ad39a3
--- /dev/null
+++ b/dev-java/openjfx/files/11/fix-build-on-gradle-5x.patch
@@ -0,0 +1,23 @@
+From 2f74649395f0242d08b95572b7b30246457b1d6b Mon Sep 17 00:00:00 2001
+From: Ty Young <BlueGoliath@users.noreply.github.com>
+Date: Mon, 3 Dec 2018 20:34:07 -0600
+Subject: [PATCH] Remove final from HashSet instance
+
+Removes final from HashSet instance at about line 107 which causes build failure
+---
+ .../main/groovy/com/sun/javafx/gradle/NativeCompileTask.groovy | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/buildSrc/src/main/groovy/com/sun/javafx/gradle/NativeCompileTask.groovy b/buildSrc/src/main/groovy/com/sun/javafx/gradle/NativeCompileTask.groovy
+index 10a85d62d1..13d573fe6e 100644
+--- a/buildSrc/src/main/groovy/com/sun/javafx/gradle/NativeCompileTask.groovy
++++ b/buildSrc/src/main/groovy/com/sun/javafx/gradle/NativeCompileTask.groovy
+@@ -102,7 +102,7 @@ class NativeCompileTask extends DefaultTask {
+ updateFiles();
+ def source = project.files(allFiles);
+ boolean forceCompile = false;
+- final Set<File> files = new HashSet<File>();
++ Set<File> files = new HashSet<File>();
+ source.each { File file ->
+ final Map fileData = dependencies.get(file.toString());
+ final boolean isModified = fileData == null ||
diff --git a/dev-java/openjfx/files/11/glibc-compatibility.patch b/dev-java/openjfx/files/11/glibc-compatibility.patch
new file mode 100644
index 000000000000..e7e9b173bb4d
--- /dev/null
+++ b/dev-java/openjfx/files/11/glibc-compatibility.patch
@@ -0,0 +1,15 @@
+Description: Fixes the compatibility with the version of glibc in Debian
+Author: Emmanuel Bourg <ebourg@apache.org>
+Forwarded: https://bugs.openjdk.java.net/browse/JDK-8211399
+--- a/modules/javafx.web/src/main/native/Source/ThirdParty/libxslt/src/libxslt/xsltlocale.h
++++ b/modules/javafx.web/src/main/native/Source/ThirdParty/libxslt/src/libxslt/xsltlocale.h
+@@ -25,9 +25,6 @@
+ #ifdef HAVE_LOCALE_H
+ #include <locale.h>
+ #endif
+-#ifdef HAVE_XLOCALE_H
+-#include <xlocale.h>
+-#endif
+
+ typedef locale_t xsltLocale;
+ typedef xmlChar xsltLocaleChar;
diff --git a/dev-java/openjfx/files/11/respect-user-cflags.patch b/dev-java/openjfx/files/11/respect-user-cflags.patch
new file mode 100644
index 000000000000..2339f905b7fa
--- /dev/null
+++ b/dev-java/openjfx/files/11/respect-user-cflags.patch
@@ -0,0 +1,227 @@
+From a28f9aaab759d82384279c16d86bb98ab47412a3 Mon Sep 17 00:00:00 2001
+From: Georgy Yakovlev <gyakovlev@gentoo.org>
+Date: Sat, 1 Jun 2019 00:12:55 -0700
+Subject: [PATCH] respect user cflags
+
+---
+ buildSrc/linux.gradle | 7 ++++++-
+ .../gstreamer/projects/linux/avplugin/Makefile | 16 ++++++----------
+ .../gstreamer/projects/linux/fxplugins/Makefile | 17 ++++++-----------
+ .../projects/linux/gstreamer-lite/Makefile | 16 ++++++----------
+ .../native/jfxmedia/projects/linux/Makefile | 16 ++++++----------
+ 5 files changed, 30 insertions(+), 42 deletions(-)
+
+diff --git a/buildSrc/linux.gradle b/buildSrc/linux.gradle
+index 7a7cbc72..6705a0f3 100644
+--- a/buildSrc/linux.gradle
++++ b/buildSrc/linux.gradle
+@@ -44,8 +44,11 @@ LINUX.library = { name -> return "lib${name}.so" as String }
+ def commonFlags = [
+ "-fno-strict-aliasing", "-fPIC", "-fno-omit-frame-pointer", // optimization flags
+ "-fstack-protector",
++ "-Wno-error=cast-function-type",
+ "-Wextra", "-Wall", "-Wformat-security", "-Wno-unused", "-Wno-parentheses", "-Werror=implicit-function-declaration"] // warning flags
+
++commonFlags.addAll(System.getenv("CFLAGS").trim().split(" "))
++
+ if (!IS_64) {
+ commonFlags += "-m32"
+ }
+@@ -61,6 +64,8 @@ def linkFlags = ["-static-libgcc", "-static-libstdc++", "-shared", commonFlags,
+ "-z", "relro",
+ "-Wl,--gc-sections"].flatten()
+
++linkFlags.addAll(System.getenv("LDFLAGS").trim().split(" "))
++
+ if (IS_DEBUG_NATIVE) {
+ linkFlags += "-g"
+ }
+@@ -294,7 +299,7 @@ LINUX.iio.nativeSource = [
+ LINUX.iio.compiler = compiler
+ LINUX.iio.ccFlags = [ccFlags].flatten()
+ LINUX.iio.linker = linker
+-LINUX.iio.linkFlags = [linkFlags].flatten()
++LINUX.iio.linkFlags = [linkFlags, "-ljpeg"].flatten()
+ LINUX.iio.lib = "javafx_iio"
+
+ LINUX.prismES2 = [:]
+diff --git a/modules/javafx.media/src/main/native/gstreamer/projects/linux/avplugin/Makefile b/modules/javafx.media/src/main/native/gstreamer/projects/linux/avplugin/Makefile
+index 450b55d3..f27b9479 100644
+--- a/modules/javafx.media/src/main/native/gstreamer/projects/linux/avplugin/Makefile
++++ b/modules/javafx.media/src/main/native/gstreamer/projects/linux/avplugin/Makefile
+@@ -17,7 +17,7 @@ TARGET = $(BUILD_DIR)/lib$(BASE_NAME).so
+ OBJBASE_DIR = $(BUILD_DIR)/obj/plugins/avplugin
+ endif
+
+-CFLAGS = -fPIC \
++CFLAGS := -fPIC \
+ -Wformat \
+ -Wextra \
+ -Wformat-security \
+@@ -29,13 +29,8 @@ CFLAGS = -fPIC \
+ -DLINUX \
+ -DGST_DISABLE_LOADSAVE \
+ -DGSTREAMER_LITE \
+- -ffunction-sections -fdata-sections
+-
+-ifeq ($(BUILD_TYPE), Release)
+- CFLAGS += -Os
+-else
+- CFLAGS += -g -Wall
+-endif
++ -ffunction-sections -fdata-sections \
++ ${CFLAGS}
+
+ PACKAGES_INCLUDES := $(shell pkg-config --cflags glib-2.0)
+ PACKAGES_LIBS := $(shell pkg-config --libs glib-2.0 gobject-2.0)
+@@ -46,11 +41,12 @@ INCLUDES= -I../../../plugins \
+ -I../../../gstreamer-lite/gstreamer/libs \
+ $(PACKAGES_INCLUDES)
+
+-LDFLAGS = -L$(BUILD_DIR) \
++LDFLAGS := -L$(BUILD_DIR) \
+ -lgstreamer-lite \
+ $(PACKAGES_LIBS) \
+ -z relro \
+- -static-libgcc -static-libstdc++ -Wl,--gc-sections
++ -static-libgcc -static-libstdc++ -Wl,--gc-sections \
++ ${LDFLAGS}
+
+ ifneq ($(strip $(LIBAV_DIR)),)
+ INCLUDES += -I$(LIBAV_DIR)/include
+diff --git a/modules/javafx.media/src/main/native/gstreamer/projects/linux/fxplugins/Makefile b/modules/javafx.media/src/main/native/gstreamer/projects/linux/fxplugins/Makefile
+index 1e58d4d3..627865f9 100644
+--- a/modules/javafx.media/src/main/native/gstreamer/projects/linux/fxplugins/Makefile
++++ b/modules/javafx.media/src/main/native/gstreamer/projects/linux/fxplugins/Makefile
+@@ -14,7 +14,7 @@ DIRLIST = progressbuffer \
+
+ TARGET = $(BUILD_DIR)/lib$(BASE_NAME).so
+
+-CFLAGS = -fPIC \
++CFLAGS := -fPIC \
+ -Wformat \
+ -Wextra \
+ -Wformat-security \
+@@ -30,14 +30,8 @@ CFLAGS = -fPIC \
+ -DGST_DISABLE_LOADSAVE \
+ -DGST_DISABLE_GST_DEBUG \
+ -DGSTREAMER_LITE \
+- -ffunction-sections -fdata-sections
+-
+-ifeq ($(BUILD_TYPE), Release)
+- CFLAGS += -Os
+-else
+- CFLAGS += -g -Wall
+-endif
+-
++ -ffunction-sections -fdata-sections \
++ ${CFLAGS}
+
+ INCLUDES = -I$(SRCBASE_DIR) \
+ $(addprefix -I$(SRCBASE_DIR)/,$(DIRLIST)) \
+@@ -47,9 +41,10 @@ INCLUDES = -I$(SRCBASE_DIR) \
+ PACKAGES_INCLUDES := $(shell pkg-config --cflags glib-2.0)
+ PACKAGES_LIBS := $(shell pkg-config --libs glib-2.0 gobject-2.0)
+
+-LDFLAGS = -L$(BUILD_DIR) -lgstreamer-lite $(PACKAGES_LIBS) \
++LDFLAGS := -L$(BUILD_DIR) -lgstreamer-lite $(PACKAGES_LIBS) \
+ -z relro \
+- -static-libgcc -static-libstdc++ -Wl,--gc-sections
++ -static-libgcc -static-libstdc++ -Wl,--gc-sections \
++ ${LDFLAGS}
+
+ ifeq ($(ARCH), x32)
+ CFLAGS += -m32
+diff --git a/modules/javafx.media/src/main/native/gstreamer/projects/linux/gstreamer-lite/Makefile b/modules/javafx.media/src/main/native/gstreamer/projects/linux/gstreamer-lite/Makefile
+index 5baa30a1..ddf0e521 100644
+--- a/modules/javafx.media/src/main/native/gstreamer/projects/linux/gstreamer-lite/Makefile
++++ b/modules/javafx.media/src/main/native/gstreamer/projects/linux/gstreamer-lite/Makefile
+@@ -37,7 +37,7 @@ DIRLIST = gstreamer/gst \
+
+ TARGET = $(BUILD_DIR)/lib$(BASE_NAME).so
+
+-CFLAGS =-fPIC \
++CFLAGS :=-fPIC \
+ -Wformat \
+ -Wextra \
+ -Wformat-security \
+@@ -51,13 +51,8 @@ CFLAGS =-fPIC \
+ -DLINUX \
+ -DGST_DISABLE_GST_DEBUG \
+ -DGST_DISABLE_LOADSAVE \
+- -ffunction-sections -fdata-sections
+-
+-ifeq ($(BUILD_TYPE), Release)
+- CFLAGS += -Os
+-else
+- CFLAGS += -g -Wall
+-endif
++ -ffunction-sections -fdata-sections \
++ ${CFLAGS}
+
+ INCLUDES = -I$(BASE_DIR)/plugins \
+ -I$(SRCBASE_DIR)/projects/build/linux/common \
+@@ -75,9 +70,10 @@ INCLUDES = -I$(BASE_DIR)/plugins \
+ PACKAGES_INCLUDES := $(shell pkg-config --cflags alsa glib-2.0)
+ PACKAGES_LIBS := $(shell pkg-config --libs alsa glib-2.0 gobject-2.0 gmodule-2.0 gthread-2.0)
+
+-LDFLAGS = -L$(BUILD_DIR) -lm $(PACKAGES_LIBS) \
++LDFLAGS := -L$(BUILD_DIR) -lm $(PACKAGES_LIBS) \
+ -z relro \
+- -static-libgcc -static-libstdc++ -Wl,--gc-sections
++ -static-libgcc -static-libstdc++ -Wl,--gc-sections \
++ ${LDFLAGS}
+
+ ifeq ($(ARCH), x32)
+ CFLAGS += -m32
+diff --git a/modules/javafx.media/src/main/native/jfxmedia/projects/linux/Makefile b/modules/javafx.media/src/main/native/jfxmedia/projects/linux/Makefile
+index ecbd859f..5881cf53 100644
+--- a/modules/javafx.media/src/main/native/jfxmedia/projects/linux/Makefile
++++ b/modules/javafx.media/src/main/native/jfxmedia/projects/linux/Makefile
+@@ -17,7 +17,7 @@ DIRLIST = jni \
+
+ TARGET = $(BUILD_DIR)/lib$(BASE_NAME).so
+
+-CFLAGS = -DTARGET_OS_LINUX=1 \
++CFLAGS := -DTARGET_OS_LINUX=1 \
+ -D_GNU_SOURCE \
+ -DGST_REMOVE_DEPRECATED \
+ -DGST_DISABLE_GST_DEBUG \
+@@ -26,7 +26,8 @@ CFLAGS = -DTARGET_OS_LINUX=1 \
+ -DHAVE_CONFIG_H \
+ -DJFXMEDIA_JNI_EXPORTS \
+ -DLINUX \
+- -ffunction-sections -fdata-sections
++ -ffunction-sections -fdata-sections \
++ ${CFLAGS}
+
+ CPPFLAGS = -fno-rtti -ffunction-sections -fdata-sections
+
+@@ -56,21 +57,16 @@ ifdef HOST_COMPILE
+ -I$(GSTREAMER_LITE_DIR)/gstreamer/libs \
+ $(PACKAGES_INCLUDES)
+
+- LDFLAGS = -Wl,-rpath,\$$ORIGIN -L$(BUILD_DIR) -lgstreamer-lite $(PACKAGES_LIBS) \
++ LDFLAGS := -Wl,-rpath,\$$ORIGIN -L$(BUILD_DIR) -lgstreamer-lite $(PACKAGES_LIBS) \
+ -z relro \
+- -static-libgcc -static-libstdc++ -Wl,--gc-sections
++ -static-libgcc -static-libstdc++ -Wl,--gc-sections \
++ ${LDFLAGS}
+ else
+ CFLAGS += $(EXTRA_CFLAGS)
+ INCLUDES = $(BASE_INCLUDES)
+ LDFLAGS = -Wl,-rpath,\$$ORIGIN -L$(BUILD_DIR) $(EXTRA_LDFLAGS)
+ endif
+
+-ifeq ($(BUILD_TYPE), Release)
+- CFLAGS += -Os
+-else
+- CFLAGS += -g -Wall -D_DEBUG
+-endif
+-
+ ifeq ($(ARCH), x32)
+ CFLAGS += -m32
+ LDFLAGS += -m32
+--
+2.21.0
+
diff --git a/dev-java/openjfx/files/11/use-system-swt-jar.patch b/dev-java/openjfx/files/11/use-system-swt-jar.patch
new file mode 100644
index 000000000000..34b4245bf0a0
--- /dev/null
+++ b/dev-java/openjfx/files/11/use-system-swt-jar.patch
@@ -0,0 +1,25 @@
+From c7a04feac8281cd3e53c8d0215a229bb6cd4fce8 Mon Sep 17 00:00:00 2001
+From: Georgy Yakovlev <gyakovlev@gentoo.org>
+Date: Sat, 1 Jun 2019 00:36:04 -0700
+Subject: [PATCH] use system swt jar
+
+---
+ build.gradle | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/build.gradle b/build.gradle
+index 1e414b7..3d967bb 100644
+--- a/build.gradle
++++ b/build.gradle
+@@ -2477,7 +2477,7 @@ project(":swt") {
+ commonModuleSetup(project, [ 'base', 'graphics' ])
+
+ dependencies {
+- compile name: SWT_FILE_NAME
++ compile files("__gentoo_swt_jar__")
+ }
+
+ classes {
+--
+2.21.0
+
diff --git a/dev-java/openjfx/metadata.xml b/dev-java/openjfx/metadata.xml
new file mode 100644
index 000000000000..3ae082145524
--- /dev/null
+++ b/dev-java/openjfx/metadata.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>gyakovlev@gentoo.org</email>
+ <name>Georgy Yakovlev</name>
+ </maintainer>
+ <maintainer type="project">
+ <email>java@gentoo.org</email>
+ </maintainer>
+ <longdescription lang="en">
+ OpenJFX is an open source, next generation client application platform for desktop,
+ mobile and embedded systems built on Java.
+ </longdescription>
+ <use>
+ <flag name="media">Compile media module, based on gstreamer-minimal (does not pull gstreamer)</flag>
+ <flag name="source">Install JavaFX sources</flag>
+ </use>
+</pkgmetadata>
diff --git a/dev-java/openjfx/openjfx-11.0.3_p1.ebuild b/dev-java/openjfx/openjfx-11.0.3_p1.ebuild
new file mode 100644
index 000000000000..24ca44ce7974
--- /dev/null
+++ b/dev-java/openjfx/openjfx-11.0.3_p1.ebuild
@@ -0,0 +1,218 @@
+# Copyright 2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+MY_PV=${PV/_p/+}
+SLOT=${MY_PV%%[.+]*}
+EGRADLE_VER="4.8"
+
+inherit java-pkg-2 multiprocessing
+
+DESCRIPTION="Java OpenJFX 8 client application platform"
+HOMEPAGE="https://openjfx.io"
+
+SRC_URI="https://hg.openjdk.java.net/${PN}/${SLOT}/rt/archive/${MY_PV}.tar.bz2 -> ${P}.tar.bz2
+ https://downloads.gradle.org/distributions/gradle-${EGRADLE_VER}-bin.zip
+ https://repo.maven.apache.org/maven2/org/apache/lucene/lucene-sandbox/7.1.0/lucene-sandbox-7.1.0.jar
+ https://repo.maven.apache.org/maven2/org/apache/lucene/lucene-grouping/7.1.0/lucene-grouping-7.1.0.jar
+ https://repo.maven.apache.org/maven2/org/apache/lucene/lucene-queryparser/7.1.0/lucene-queryparser-7.1.0.jar
+ https://repo.maven.apache.org/maven2/org/apache/lucene/lucene-queries/7.1.0/lucene-queries-7.1.0.jar
+ https://repo.maven.apache.org/maven2/org/apache/lucene/lucene-core/7.1.0/lucene-core-7.1.0.jar
+ https://repo.maven.apache.org/maven2/org/antlr/gunit/3.5.2/gunit-3.5.2.jar
+ https://repo.maven.apache.org/maven2/org/antlr/antlr-complete/3.5.2/antlr-complete-3.5.2.jar
+ https://repo.maven.apache.org/maven2/org/antlr/ST4/4.0.8/ST4-4.0.8.jar
+"
+
+LICENSE="GPL-2-with-classpath-exception"
+SLOT="$(ver_cut 1)"
+KEYWORDS="-* ~amd64"
+
+IUSE="cpu_flags_x86_sse2 debug doc source +media"
+
+RDEPEND="
+ dev-java/swt:4.10[cairo,opengl]
+ dev-libs/atk
+ dev-libs/glib:2
+ dev-libs/libxml2:2
+ dev-libs/libxslt
+ media-libs/freetype:2
+ media-libs/fontconfig:1.0
+ media-video/ffmpeg:0=
+ x11-libs/gdk-pixbuf
+ x11-libs/gtk+:2
+ x11-libs/gtk+:3
+ x11-libs/cairo[glib]
+ x11-libs/libX11
+ x11-libs/libXtst
+ x11-libs/libXxf86vm
+ x11-libs/pango
+ virtual/jpeg
+ virtual/opengl
+ || (
+ dev-java/openjdk-bin:${SLOT}[doc?]
+ dev-java/openjdk:${SLOT}[doc?]
+ )
+"
+
+DEPEND="${RDEPEND}
+ app-arch/unzip
+ app-arch/zip
+ >=dev-java/ant-core-1.10.5-r2:0
+ dev-java/antlr:0
+ dev-java/antlr:3.5
+ dev-java/hamcrest-core:0
+ dev-java/stringtemplate:0
+ virtual/ttf-fonts
+ virtual/pkgconfig
+"
+
+REQUIRED_USE="cpu_flags_x86_sse2"
+
+PATCHES=(
+ "${FILESDIR}"/11/disable-buildSrc-tests.patch
+ "${FILESDIR}"/11/glibc-compatibility.patch
+ "${FILESDIR}"/11/respect-user-cflags.patch
+ "${FILESDIR}"/11/use-system-swt-jar.patch
+ "${FILESDIR}"/11/fix-build-on-gradle-5x.patch
+)
+
+S="${WORKDIR}/rt-${MY_PV}"
+
+egradle() {
+ local GRADLE_HOME="${WORKDIR}/gradle-${EGRADLE_VER}"
+ local gradle="${GRADLE_HOME}/bin/gradle"
+ local gradle_args=(
+ --info
+ --stacktrace
+ --no-build-cache
+ --no-daemon
+ --offline
+ --gradle-user-home "${T}/gradle_user_home"
+ --project-cache-dir "${T}/gradle_project_cache"
+ )
+
+ export GRADLE_HOME
+
+ # FIXME: build.gradle believes $ANT_HOME/bin/ant shoud exist
+ unset ANT_HOME
+
+ einfo "gradle "${gradle_args[@]}" ${@}"
+ "${gradle}" "${gradle_args[@]}" ${@} || die "gradle failed"
+}
+
+pkg_setup() {
+ JAVA_PKG_WANT_BUILD_VM="openjdk-${SLOT} openjdk-bin-${SLOT}"
+ JAVA_PKG_WANT_SOURCE="${SLOT}"
+ JAVA_PKG_WANT_TARGET="${SLOT}"
+
+ # The nastiness below is necessary while the gentoo-vm USE flag is
+ # masked. First we call java-pkg-2_pkg_setup if it looks like the
+ # flag was unmasked against one of the possible build VMs. If not,
+ # we try finding one of them in their expected locations. This would
+ # have been slightly less messy if openjdk-bin had been installed to
+ # /opt/${PN}-${SLOT} or if there was a mechanism to install a VM env
+ # file but disable it so that it would not normally be selectable.
+
+ local vm
+ for vm in ${JAVA_PKG_WANT_BUILD_VM}; do
+ if [[ -d ${EPREFIX}/usr/lib/jvm/${vm} ]]; then
+ java-pkg-2_pkg_setup
+ return
+ fi
+ done
+
+ if has_version --host-root dev-java/openjdk:${SLOT}; then
+ export JAVA_HOME=${EPREFIX}/usr/$(get_libdir)/openjdk-${SLOT}
+ export JDK_HOME="${JAVA_HOME}"
+ export ANT_RESPECT_JAVA_HOME=ture
+
+ else
+ if [[ ${MERGE_TYPE} != "binary" ]]; then
+ JDK_HOME=$(best_version --host-root dev-java/openjdk-bin:${SLOT})
+ [[ -n ${JDK_HOME} ]] || die "Build VM not found!"
+ JDK_HOME=${JDK_HOME#*/}
+ JDK_HOME=${EPREFIX}/opt/${JDK_HOME%-r*}
+ export JDK_HOME
+ export JAVA_HOME="${JDK_HOME}"
+ export ANT_RESPECT_JAVA_HOME=ture
+ fi
+ fi
+}
+
+src_unpack() {
+ unpack "${P}.tar.bz2"
+ unpack "gradle-${EGRADLE_VER}-bin.zip"
+
+ mkdir "${T}/jars" || die
+
+ local line jar
+ for line in ${SRC_URI}; do
+ if [[ ${line} =~ (http|https)://[a-zA-Z0-9.-_]*/(maven2|m2|eclipse)/(.*[.]jar)$ ]]; then
+ jar=$(basename "${BASH_REMATCH[-1]}")
+ cp -v "${DISTDIR}/${jar}" "${T}/jars/" || die
+ fi
+ done
+}
+
+src_prepare() {
+ default
+
+ local d="${T}/jars"
+
+ java-pkg_jar-from --build-only --with-dependencies --into "${d}" antlr
+ java-pkg_jar-from --build-only --with-dependencies --into "${d}" antlr-3.5
+ java-pkg_jar-from --build-only --with-dependencies --into "${d}" stringtemplate
+ java-pkg_jar-from --build-only --with-dependencies --into "${d}" hamcrest-core
+
+ sed -i "s#__gentoo_swt_jar__#$(java-pkg_getjars swt-4.10)#" "${S}"/build.gradle || die
+}
+
+src_configure() {
+ #FIXME: still calls gcc, pkg-config etc by name without chost prefix
+ #FIXME: should we enable webkit? doubt so
+
+ # build is very sensetive to doc presense, take extra steps
+ local jdk_doc
+ if has_version --host-root dev-java/openjdk:${SLOT}[doc]; then
+ jdk_doc="${EROOT%/}/usr/share/doc/openjdk-${SLOT}/html/api"
+ elif has_version --host-root dev-java/java-sdk-docs:${SLOT}; then
+ jdk_doc="${EROOT%/}/usr/share/doc/java-sdk-docs-${SLOT}/html/api"
+ fi
+ [[ -r ${jdk_doc}/element-list ]] || die "JDK Docs not found, terminating build early"
+
+ cat <<- _EOF_ > "${S}"/gradle.properties
+ COMPILE_TARGETS = linux
+ COMPILE_WEBKIT = false
+ COMPILE_MEDIA = $(usex media true false)
+ JDK_DOCS = https://docs.oracle.com/en/java/javase/${SLOT}/docs/api
+ JDK_DOCS_LINK = $(usex doc "${jdk_doc}" "")
+ BUILD_LIBAV_STUBS = false
+ GRADLE_VERSION_CHECK = false
+ LINT = none
+ CONF = $(usex debug DebugNative Release)
+ NUM_COMPILE_THREADS = $(makeopts_jobs)
+ JFX_DEPS_URL = ${T}/jars
+ COMPANY_NAME = "Gentoo"
+ _EOF_
+}
+
+src_compile() {
+ egradle zips $(usex doc "" "--exclude-task javadoc")
+}
+
+src_install() {
+ if ! use source ; then
+ rm -v build/sdk/lib/src.zip || die
+ fi
+
+ insinto "/usr/$(get_libdir)/${PN}-${SLOT}"
+ doins -r build/sdk/.
+ doins build/javafx-exports.zip
+
+ if use doc; then
+ insinto /usr/share/doc/"${PF}"/html
+ doins -r build/javadoc/.
+ dosym /usr/share/doc/"${PF}" /usr/share/doc/"${PN}-${SLOT}"
+ fi
+}