Alexey Abramov wrote 5 years ago
(address . guix-patches@gnu.org)
* gnu/packages/java.scm (java-openjfx-build): Add patch to the base package.
* gnu/packages/patches/java-openjfx-build-web-Check-xlocale.h-header-file.patch: New
file. Remove hardcoded xlocale definitions.
---
gnu/packages/java.scm | 155 +++++++++++++++++-
...uild-web-Check-xlocale.h-header-file.patch | 52 ++++++
2 files changed, 206 insertions(+), 1 deletion(-)
create mode 100644 gnu/packages/patches/java-openjfx-build-web-Check-xlocale.h-header-file.patch
Toggle diff (254 lines)
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index de7efbb29f..a9433b89a3 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -47,11 +47,13 @@
#:use-module (gnu packages cpio)
#:use-module (gnu packages cups)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages cmake)
#:use-module (gnu packages elf)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages gawk)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gcc)
+ #:use-module (gnu packages gperf)
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
#:use-module (gnu packages ghostscript) ;lcms
@@ -71,8 +73,10 @@
#:use-module (gnu packages wget)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages perl)
+ #:use-module (gnu packages python)
#:use-module (gnu packages popt)
#:use-module (gnu packages kerberos)
+ #:use-module (gnu packages ruby)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
#:use-module (gnu packages texinfo)
@@ -2358,7 +2362,8 @@ new Date();"))
(base32
"0yg38mwpivswccv9n96k06x3iv82i4px1a9xg9l8dswzwmfj259f"))
(patches (search-patches "java-openjfx-build-get_guix_jdk_version.patch"
- "java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch"))))
+ "java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch"
+ "java-openjfx-build-web-Check-xlocale.h-header-file.patch"))))
(build-system ant-build-system)
(arguments
`(#:jar-name "java-openjfx.jar"
@@ -3103,6 +3108,154 @@ modern, efficient, and fully featured toolkit for developing rich client
applications. This package contains media-related classes for the
OpenJFX distribution.")))
+(define-public java-openjfx-web
+ (package (inherit java-openjfx-build)
+ (name "java-openjfx-web")
+ (arguments
+ `(#:jar-name "java-openjfx-web.jar"
+ #:source-dir (string-join '("modules/web/src/main/java"
+ "modules/web/src/main/native/Source/WebCore/bindings/java/dom3")
+ ";")
+ #:tests? #f
+ #:modules ((ice-9 match)
+ (guix build ant-build-system)
+ (guix build utils))
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'build
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let* ((module (string-append (getcwd) "/modules/web"))
+ (classes (string-append module "/build/classes/java/main")))
+ (invoke "ant" "compile" (string-append "-Dclasses.dir=" classes)))
+ #t))
+ (add-after 'build 'generate-headers
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let* ((module (string-append (getcwd) "/modules/web"))
+ (classes (string-append module "/build/classes/java/main"))
+ (web-generated-headers (string-append module "/build/generated-src/headers"))
+ (web-generated-classes '("com.sun.webkit.ContextMenu"
+ "com.sun.webkit.ContextMenuItem"
+ "com.sun.webkit.CursorManager"
+ "com.sun.webkit.PageCache"
+ "com.sun.webkit.PopupMenu"
+ "com.sun.webkit.SharedBuffer"
+ "com.sun.webkit.WebPage"
+ "com.sun.webkit.LoadListenerClient"
+ "com.sun.webkit.event.WCFocusEvent"
+ "com.sun.webkit.event.WCKeyEvent"
+ "com.sun.webkit.event.WCMouseEvent"
+ "com.sun.webkit.event.WCMouseWheelEvent"
+ "com.sun.webkit.graphics.GraphicsDecoder"
+ "com.sun.webkit.graphics.RenderMediaControls"
+ "com.sun.webkit.graphics.RenderTheme"
+ "com.sun.webkit.graphics.ScrollBarTheme"
+ "com.sun.webkit.graphics.WCMediaPlayer"
+ "com.sun.webkit.graphics.WCGraphicsManager"
+ "com.sun.webkit.graphics.WCRenderQueue"
+ "com.sun.webkit.graphics.WCPath"
+ "com.sun.webkit.graphics.WCPathIterator"
+ "com.sun.webkit.Timer"
+ "com.sun.webkit.WCFrameView"
+ "com.sun.webkit.WCPasteboard"
+ "com.sun.webkit.WCPluginWidget"
+ "com.sun.webkit.dom.CharacterDataImpl"
+ "com.sun.webkit.dom.JSObject"
+ "com.sun.webkit.network.SocketStreamHandle"
+ "com.sun.webkit.network.URLLoader"
+ "com.sun.webkit.text.TextBreakIterator"
+ "com.sun.webkit.text.TextNormalizer"))
+ (graphics (assoc-ref inputs "java-openjfx-graphics")))
+ (mkdir-p web-generated-headers)
+ (apply invoke `("javah"
+ "-Djava.ext.dirs="
+ "-XDignore.symbol.file"
+ "-XDuseUnsharedTable=true"
+ "-d" ,web-generated-headers
+ "-cp" ,(string-join (cons* classes (find-files graphics ".jar$")) ":")
+ ,@web-generated-classes)))
+ #t))
+
+ (add-after 'generate-headers 'compile-native-linux
+ (lambda* (#:key inputs system #:allow-other-keys)
+ (let* ((module (string-append (getcwd) "/modules/web"))
+ ;;
+ (webkit-native-dest (string-append module "/build/linux"))
+ (webkit-native-src (string-append module "/src/main/native"))
+ ;; uname -m
+ (machine (match system
+ ("x86_64-linux" "x86_64")
+ ("i686-linux" "i686")
+ ;; Prevent errors when querying this
+ ;; package on unsupported platforms,
+ ;; e.g. when running "guix package
+ ;; --search="
+ (_ "UNSUPPORTED"))))
+
+ (mkdir-p webkit-native-dest)
+ (setenv "PYTHONDONTWRITEBYTECODE" "1")
+ (setenv "WEBKIT_OUTPUTDIR" webkit-native-dest)
+ (apply invoke `("perl"
+ ,(string-append webkit-native-src "/Tools/Scripts/set-webkit-configuration")
+ ,(if ,(target-64bit?) "--64-bit" "--32-bit")
+ "--release"))
+
+ (invoke "perl"
+ (string-append webkit-native-src "/Tools/Scripts/build-webkit")
+ "--java" ; webkit port
+ "--skip-library-update"
+ "--verbose"
+ (string-append "--cmakeargs="
+ (string-join `("-DCMAKE_SYSTEM_NAME=Linux"
+ ,(string-append "-DCMAKE_SYSTEM_PROCESSOR=" machine)
+ "-DJAVAFX_RELEASE_VERSION=8.0"
+ "-W"
+ "-Wall"
+ "-Werror=implicit-function-declaration"
+ "-Wl,--gc-sections"
+ "-Wno-parentheses"
+ "-Wno-unused"
+ "-fPIC"
+ "-fno-omit-frame-pointer"
+ "-fno-strict-aliasing"
+ "-fstack-protector")))))
+ #t))
+
+ (add-after 'compile-native-linux 'install-native
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((lib (string-append (assoc-ref outputs "out") "/share/amd64")))
+ (for-each (lambda (file)
+ (install-file file lib))
+ (find-files "." "\\.so$"))
+ #t)))
+
+ (add-before 'install 'build-jar
+ (lambda _
+ (let* ((module (string-append (getcwd) "/modules/web"))
+ (resources (string-append module "/src/main/resources"))
+ (classes (string-append module "/build/classes/java/main")))
+ (copy-recursively resources classes)
+ (invoke "ant" "jar" (string-append "-Dclasses.dir=" classes)))
+ #t)))))
+ (inputs
+ `(("antlr3" ,antlr3)
+ ("java-stringtemplate" ,java-stringtemplate)
+ ("pkg-config" ,pkg-config)))
+ (native-inputs
+ `(("java-junit" ,java-junit)
+ ("java-hamcrest-core" ,java-hamcrest-core)
+ ("cmake" ,cmake)
+ ("gcc" ,gcc)
+ ("gtk" ,gtk+-2)
+ ("gtk3" ,gtk+)
+ ("ruby" ,ruby)
+ ("perl" ,perl)
+ ("gperf" ,gperf)
+ ("python-2" ,python-2)))
+ (propagated-inputs
+ `(("java-openjfx-controls" ,java-openjfx-controls)
+ ("java-openjfx-media" ,java-openjfx-media)
+ ("java-openjfx-graphics" ,java-openjfx-graphics)))))
+
(define-public javacc-4
(package
(name "javacc")
diff --git a/gnu/packages/patches/java-openjfx-build-web-Check-xlocale.h-header-file.patch b/gnu/packages/patches/java-openjfx-build-web-Check-xlocale.h-header-file.patch
new file mode 100644
index 0000000000..5efc9d0a73
--- /dev/null
+++ b/gnu/packages/patches/java-openjfx-build-web-Check-xlocale.h-header-file.patch
@@ -0,0 +1,52 @@
+From 95fe8463a3283f0f2c72fcf3416ebfac095688e5 Mon Sep 17 00:00:00 2001
+From: Alexey Abramov <levenson@mmer.org>
+Date: Sun, 9 Feb 2020 18:31:26 +0100
+Subject: [PATCH] Check <xlocale.h> header file
+
+---
+ .../src/main/native/Source/ThirdParty/libxslt/linux/config.h | 2 +-
+ .../src/main/native/Source/ThirdParty/libxslt/src/config.h.in | 2 +-
+ modules/web/src/main/native/Source/cmake/OptionsCommon.cmake | 1 +
+ 3 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/modules/web/src/main/native/Source/ThirdParty/libxslt/linux/config.h b/modules/web/src/main/native/Source/ThirdParty/libxslt/linux/config.h
+index bd44c163..b19b45f4 100644
+--- a/modules/web/src/main/native/Source/ThirdParty/libxslt/linux/config.h
++++ b/modules/web/src/main/native/Source/ThirdParty/libxslt/linux/config.h
+@@ -143,7 +143,7 @@
+ #define HAVE_VSPRINTF 1
+
+ /* Define to 1 if you have the <xlocale.h> header file. */
+-#define HAVE_XLOCALE_H 1
++/* #define HAVE_XLOCALE_H 1 */
+
+ /* Define to 1 if you have the `_stat' function. */
+ /* #undef HAVE__STAT */
+diff --git a/modules/web/src/main/native/Source/ThirdParty/libxslt/src/config.h.in b/modules/web/src/main/native/Source/ThirdParty/libxslt/src/config.h.in
+index 085354e9..0210fce2 100644
+--- a/modules/web/src/main/native/Source/ThirdParty/libxslt/src/config.h.in
++++ b/modules/web/src/main/native/Source/ThirdParty/libxslt/src/config.h.in
+@@ -142,7 +142,7 @@
+ #undef HAVE_VSPRINTF
+
+ /* Define to 1 if you have the <xlocale.h> header file. */
+-#undef HAVE_XLOCALE_H
++/* #undef HAVE_XLOCALE_H */
+
+ /* Define to 1 if you have the `_stat' function. */
+ #undef HAVE__STAT
+diff --git a/modules/web/src/main/native/Source/cmake/OptionsCommon.cmake b/modules/web/src/main/native/Source/cmake/OptionsCommon.cmake
+index 3bbd2c4a..2b618dd6 100644
+--- a/modules/web/src/main/native/Source/cmake/OptionsCommon.cmake
++++ b/modules/web/src/main/native/Source/cmake/OptionsCommon.cmake
+@@ -148,6 +148,7 @@ _HAVE_CHECK_INCLUDE(HAVE_STRINGS_H strings.h)
+ _HAVE_CHECK_INCLUDE(HAVE_SYS_PARAM_H sys/param.h)
+ _HAVE_CHECK_INCLUDE(HAVE_SYS_TIME_H sys/time.h)
+ _HAVE_CHECK_INCLUDE(HAVE_SYS_TIMEB_H sys/timeb.h)
++_HAVE_CHECK_INCLUDE(HAVE_XLOCALE_H xlocale.h)
+
+ # Check for functions
+ _HAVE_CHECK_FUNCTION(HAVE_ALIGNED_MALLOC _aligned_malloc)
+--
+2.24.1
+
--
2.24.1