GNU bug report logs - #39745
[PATCH 4/7] gnu: java-openjfx-swing: Add new variable.

Previous Next

Package: guix-patches;

Reported by: Alexey Abramov <levenson <at> mmer.org>

Date: Sat, 22 Feb 2020 20:20:04 UTC

Severity: normal

Tags: patch

Merged with 39741, 39742, 39743, 39744, 39746, 39747

Done: Leo Famulari <leo <at> famulari.name>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 39745 in the body.
You can then email your comments to 39745 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#39745; Package guix-patches. (Sat, 22 Feb 2020 20:20:05 GMT) Full text and rfc822 format available.

Acknowledgement sent to Alexey Abramov <levenson <at> mmer.org>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Sat, 22 Feb 2020 20:20:05 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Alexey Abramov <levenson <at> mmer.org>
To: guix-patches <at> gnu.org
Subject: [PATCH 4/7] gnu: java-openjfx-swing: Add new variable.
Date: Sat, 22 Feb 2020 21:17:52 +0100
* gnu/packages/java.scm (java-openjfx-build): Add patch to the base package.
* gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch: Fix swing compilation for jdk8.
---
 gnu/packages/java.scm                         | 16 ++++-
 ...ld-swing-compile-JFXPanel-with-JDK-8.patch | 58 +++++++++++++++++++
 2 files changed, 73 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch

diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 4e975a0490..f2a3861501 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -2357,7 +2357,8 @@ new Date();"))
               (sha256
                (base32
                 "0yg38mwpivswccv9n96k06x3iv82i4px1a9xg9l8dswzwmfj259f"))
-              (patches (search-patches "java-openjfx-build-get_guix_jdk_version.patch"))))
+              (patches (search-patches "java-openjfx-build-get_guix_jdk_version.patch"
+                                       "java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch"))))
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "java-openjfx.jar"
@@ -3045,6 +3046,19 @@ distribution.")))
             `(("java-openjfx-base" ,java-openjfx-base)
               ("java-swt" ,java-swt)))))
 
+(define-public java-openjfx-swing
+  (package (inherit java-openjfx-build)
+           (name "java-openjfx-swing")
+           (arguments
+            `(#:jar-name "java-openjfx-swing.jar"
+              #:source-dir "modules/swing/src/main/java"
+              #:tests? #f))
+           (inputs
+            `(("antlr3" ,antlr3)
+              ("java-stringtemplate" ,java-stringtemplate)))
+           (propagated-inputs
+            `(("java-openjfx-graphics" ,java-openjfx-graphics)))))
+
 (define-public java-openjfx-media
   (package (inherit java-openjfx-build)
     (name "java-openjfx-media")
diff --git a/gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch b/gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch
new file mode 100644
index 0000000000..948c0355e9
--- /dev/null
+++ b/gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch
@@ -0,0 +1,58 @@
+From 173e65937d9e76872df51f7ba39c9d58986dc38f Mon Sep 17 00:00:00 2001
+From: Alexey Abramov <levenson <at> mmer.org>
+Date: Fri, 3 Jan 2020 01:17:45 +0100
+Subject: [PATCH] java-openjfx-build: Cannot compile JFXPanel with JDK 8
+
+For more info please see https://bugs.openjdk.java.net/browse/JDK-8149967
+---
+ .../java/javafx/embed/swing/JFXPanel.java     | 20 ++++++++++++++++++-
+ 1 file changed, 19 insertions(+), 1 deletion(-)
+
+diff --git a/modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java b/modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java
+index 97515e2290..614ed656b9 100644
+--- a/modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java
++++ b/modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java
+@@ -81,6 +81,7 @@ import sun.awt.AppContext;
+ import sun.awt.CausedFocusEvent;
+ import sun.awt.SunToolkit;
+ import sun.java2d.SunGraphics2D;
++import sun.java2d.SurfaceData;
+ import sun.util.logging.PlatformLogger;
+ import sun.util.logging.PlatformLogger.Level;
+ 
+@@ -681,6 +682,23 @@ 
+                 e.getCaret().getInsertionIndex());
+     }
+
++    // FIXME: once we move to JDK 9 as the boot JDK we should remove the
++    // reflection code from this method, consider changing it to
++    // use double rather than int, and account for the possibility of
++    // a different scale factor in X and Y.
++    private int getDefaultScale(SurfaceData surfaceData) {
++        /*
++          double scale = surfaceData.getDefaultScaleX();
++        */
++        double scale = 1;
++        try {
++            Method meth = SurfaceData.class.getMethod("getDefaultScaleX");
++            scale = (Double)meth.invoke(surfaceData);
++        } catch (Exception ex) {
++        }
++
++        return (int)Math.round(scale);
++    }
+ 
+     /**
+      * Overrides the {@link javax.swing.JComponent#paintComponent(Graphics)}
+@@ -720,7 +738,7 @@ public class JFXPanel extends JComponent {
+ 
+             int newScaleFactor = scaleFactor;
+             if (g instanceof SunGraphics2D) {
+-                newScaleFactor = ((SunGraphics2D)g).surfaceData.getDefaultScale();
++                newScaleFactor = getDefaultScale(((SunGraphics2D)g).surfaceData);
+             }
+             if (scaleFactor != newScaleFactor) {
+                 resizePixelBuffer(newScaleFactor);
+--
+2.24.1
+
-- 
2.24.1





Information forwarded to guix-patches <at> gnu.org:
bug#39745; Package guix-patches. (Wed, 04 Mar 2020 03:05:01 GMT) Full text and rfc822 format available.

Message #8 received at 39745 <at> debbugs.gnu.org (full text, mbox):

From: Leo Famulari <leo <at> famulari.name>
To: Alexey Abramov <levenson <at> mmer.org>
Cc: 39745 <at> debbugs.gnu.org
Subject: Re: [bug#39745] [PATCH 4/7] gnu: java-openjfx-swing: Add new variable.
Date: Tue, 3 Mar 2020 22:04:17 -0500
On Sat, Feb 22, 2020 at 09:17:52PM +0100, Alexey Abramov wrote:
> * gnu/packages/java.scm (java-openjfx-build): Add patch to the base package.
> * gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch: Fix swing compilation for jdk8.

This commit adds the patch file but also makes a new package
java-openjfx-swing. Adding the patch to java-openjfx-build and adding
the new package should be done in separate commits.

Also remember to add the patch to 'gnu/local.mk'.

> +From 173e65937d9e76872df51f7ba39c9d58986dc38f Mon Sep 17 00:00:00 2001
> +From: Alexey Abramov <levenson <at> mmer.org>
> +Date: Fri, 3 Jan 2020 01:17:45 +0100
> +Subject: [PATCH] java-openjfx-build: Cannot compile JFXPanel with JDK 8
> +
> +For more info please see https://bugs.openjdk.java.net/browse/JDK-8149967

This link is great but please add a brief summary of why we need the
patch and what it does (one or two sentences is enough).




Merged 39741 39742 39743 39744 39745 39746 39747. Request was from Leo Famulari <leo <at> famulari.name> to control <at> debbugs.gnu.org. (Wed, 04 Mar 2020 03:15:02 GMT) Full text and rfc822 format available.

Information forwarded to guix-patches <at> gnu.org:
bug#39745; Package guix-patches. (Mon, 09 Mar 2020 16:19:01 GMT) Full text and rfc822 format available.

Message #13 received at 39745 <at> debbugs.gnu.org (full text, mbox):

From: Alexey Abramov <levenson <at> mmer.org>
To: 39745 <at> debbugs.gnu.org
Cc: Alexey Abramov <levenson <at> mmer.org>
Subject: [v2] gnu: java-openjfx-build: Fix openjfx-swing component build for
 JDKu8
Date: Mon,  9 Mar 2020 17:15:27 +0100
* gnu/packages/java.scm (java-openjfx-build)[source]: Use it.
* gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch:
  New file.
* gnu/local.mk (dist_patch_DATA): Add it.
---
 gnu/local.mk                                  |  1 +
 gnu/packages/java.scm                         |  3 +-
 ...ld-swing-compile-JFXPanel-with-JDK-8.patch | 64 +++++++++++++++++++
 3 files changed, 67 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 0bcbde7301..7e4554198c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1034,6 +1034,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/java-commons-collections-fix-java8.patch \
   %D%/packages/patches/java-jeromq-fix-tests.patch		\
   %D%/packages/patches/java-openjfx-build-get_guix_jdk_version.patch    \
+  %D%/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch     \
   %D%/packages/patches/java-powermock-fix-java-files.patch		\
   %D%/packages/patches/java-simple-xml-fix-tests.patch		\
   %D%/packages/patches/java-svg-salamander-Fix-non-det.patch	\
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 349b22419a..21217b0211 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -2363,7 +2363,8 @@ new Date();"))
               (sha256
                (base32
                 "0yg38mwpivswccv9n96k06x3iv82i4px1a9xg9l8dswzwmfj259f"))
-              (patches (search-patches "java-openjfx-build-get_guix_jdk_version.patch"))))
+              (patches (search-patches "java-openjfx-build-get_guix_jdk_version.patch"
+                                       "java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch"))))
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "java-openjfx.jar"
diff --git a/gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch b/gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch
new file mode 100644
index 0000000000..8f222e1780
--- /dev/null
+++ b/gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch
@@ -0,0 +1,64 @@
+From 173e65937d9e76872df51f7ba39c9d58986dc38f Mon Sep 17 00:00:00 2001
+From: Alexey Abramov <levenson <at> mmer.org>
+Date: Fri, 3 Jan 2020 01:17:45 +0100
+Subject: [PATCH] java-openjfx-build: Cannot compile JFXPanel with JDK 8
+
+In JDKu9 getDefaultScale method was removed and sun.java2d.SurfaceData class now
+has separate getDefaultScaleX() and getDefaultScaleY() methods. See
+https://bugs.openjdk.java.net/browse/JDK-8073320 for more info.
+
+Backport the missing port to build openjfx-swing package using JDKu8. For more
+info please see https://bugs.openjdk.java.net/browse/JDK-8149967
+
+---
+ .../java/javafx/embed/swing/JFXPanel.java     | 20 ++++++++++++++++++-
+ 1 file changed, 19 insertions(+), 1 deletion(-)
+
+diff --git a/modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java b/modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java
+index 97515e2290..614ed656b9 100644
+--- a/modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java
++++ b/modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java
+@@ -81,6 +81,7 @@ import sun.awt.AppContext;
+ import sun.awt.CausedFocusEvent;
+ import sun.awt.SunToolkit;
+ import sun.java2d.SunGraphics2D;
++import sun.java2d.SurfaceData;
+ import sun.util.logging.PlatformLogger;
+ import sun.util.logging.PlatformLogger.Level;
+ 
+@@ -681,6 +682,23 @@ 
+                 e.getCaret().getInsertionIndex());
+     }
+
++    // FIXME: once we move to JDK 9 as the boot JDK we should remove the
++    // reflection code from this method, consider changing it to
++    // use double rather than int, and account for the possibility of
++    // a different scale factor in X and Y.
++    private int getDefaultScale(SurfaceData surfaceData) {
++        /*
++          double scale = surfaceData.getDefaultScaleX();
++        */
++        double scale = 1;
++        try {
++            Method meth = SurfaceData.class.getMethod("getDefaultScaleX");
++            scale = (Double)meth.invoke(surfaceData);
++        } catch (Exception ex) {
++        }
++
++        return (int)Math.round(scale);
++    }
+ 
+     /**
+      * Overrides the {@link javax.swing.JComponent#paintComponent(Graphics)}
+@@ -720,7 +738,7 @@ public class JFXPanel extends JComponent {
+ 
+             int newScaleFactor = scaleFactor;
+             if (g instanceof SunGraphics2D) {
+-                newScaleFactor = ((SunGraphics2D)g).surfaceData.getDefaultScale();
++                newScaleFactor = getDefaultScale(((SunGraphics2D)g).surfaceData);
+             }
+             if (scaleFactor != newScaleFactor) {
+                 resizePixelBuffer(newScaleFactor);
+--
+2.24.1
+
-- 
2.24.1





Information forwarded to guix-patches <at> gnu.org:
bug#39745; Package guix-patches. (Mon, 09 Mar 2020 16:37:02 GMT) Full text and rfc822 format available.

Message #16 received at 39745 <at> debbugs.gnu.org (full text, mbox):

From: Alexey Abramov <levenson <at> mmer.org>
To: 39745 <at> debbugs.gnu.org
Cc: Alexey Abramov <levenson <at> mmer.org>
Subject: [v3 2/2] gnu: java-openjfx-swing: Add new variable.
Date: Mon,  9 Mar 2020 17:36:12 +0100
---
 gnu/packages/java.scm | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 21217b0211..6d3f0f6771 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -3084,6 +3084,19 @@ distribution.")))
      `(("java-openjfx-base" ,java-openjfx-base)
        ("java-swt" ,java-swt)))))
 
+(define-public java-openjfx-swing
+  (package (inherit java-openjfx-build)
+    (name "java-openjfx-swing")
+    (arguments
+     `(#:jar-name "java-openjfx-swing.jar"
+       #:source-dir "modules/swing/src/main/java"
+       #:tests? #f))
+    (inputs
+     `(("antlr3" ,antlr3)
+       ("java-stringtemplate" ,java-stringtemplate)))
+    (propagated-inputs
+     `(("java-openjfx-graphics" ,java-openjfx-graphics)))))
+
 (define-public java-openjfx-media
   (package (inherit java-openjfx-build)
     (name "java-openjfx-media")
-- 
2.24.1





Information forwarded to guix-patches <at> gnu.org:
bug#39745; Package guix-patches. (Mon, 09 Mar 2020 16:37:02 GMT) Full text and rfc822 format available.

Message #19 received at 39745 <at> debbugs.gnu.org (full text, mbox):

From: Alexey Abramov <levenson <at> mmer.org>
To: 39745 <at> debbugs.gnu.org
Cc: Alexey Abramov <levenson <at> mmer.org>
Subject: [v3 1/2] gnu: java-openjfx-build: Fix openjfx-swing component build
 for JDKu8
Date: Mon,  9 Mar 2020 17:36:11 +0100
* gnu/packages/java.scm (java-openjfx-build)[source]: Use it.
* gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch:
  New file.
* gnu/local.mk (dist_patch_DATA): Add it.
---
 gnu/local.mk                                  |  1 +
 gnu/packages/java.scm                         |  3 +-
 ...ld-swing-compile-JFXPanel-with-JDK-8.patch | 64 +++++++++++++++++++
 3 files changed, 67 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 0bcbde7301..7e4554198c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1034,6 +1034,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/java-commons-collections-fix-java8.patch \
   %D%/packages/patches/java-jeromq-fix-tests.patch		\
   %D%/packages/patches/java-openjfx-build-get_guix_jdk_version.patch    \
+  %D%/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch     \
   %D%/packages/patches/java-powermock-fix-java-files.patch		\
   %D%/packages/patches/java-simple-xml-fix-tests.patch		\
   %D%/packages/patches/java-svg-salamander-Fix-non-det.patch	\
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 349b22419a..21217b0211 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -2363,7 +2363,8 @@ new Date();"))
               (sha256
                (base32
                 "0yg38mwpivswccv9n96k06x3iv82i4px1a9xg9l8dswzwmfj259f"))
-              (patches (search-patches "java-openjfx-build-get_guix_jdk_version.patch"))))
+              (patches (search-patches "java-openjfx-build-get_guix_jdk_version.patch"
+                                       "java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch"))))
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "java-openjfx.jar"
diff --git a/gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch b/gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch
new file mode 100644
index 0000000000..8f222e1780
--- /dev/null
+++ b/gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch
@@ -0,0 +1,64 @@
+From 173e65937d9e76872df51f7ba39c9d58986dc38f Mon Sep 17 00:00:00 2001
+From: Alexey Abramov <levenson <at> mmer.org>
+Date: Fri, 3 Jan 2020 01:17:45 +0100
+Subject: [PATCH] java-openjfx-build: Cannot compile JFXPanel with JDK 8
+
+In JDKu9 getDefaultScale method was removed and sun.java2d.SurfaceData class now
+has separate getDefaultScaleX() and getDefaultScaleY() methods. See
+https://bugs.openjdk.java.net/browse/JDK-8073320 for more info.
+
+Backport the missing port to build openjfx-swing package using JDKu8. For more
+info please see https://bugs.openjdk.java.net/browse/JDK-8149967
+
+---
+ .../java/javafx/embed/swing/JFXPanel.java     | 20 ++++++++++++++++++-
+ 1 file changed, 19 insertions(+), 1 deletion(-)
+
+diff --git a/modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java b/modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java
+index 97515e2290..614ed656b9 100644
+--- a/modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java
++++ b/modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java
+@@ -81,6 +81,7 @@ import sun.awt.AppContext;
+ import sun.awt.CausedFocusEvent;
+ import sun.awt.SunToolkit;
+ import sun.java2d.SunGraphics2D;
++import sun.java2d.SurfaceData;
+ import sun.util.logging.PlatformLogger;
+ import sun.util.logging.PlatformLogger.Level;
+ 
+@@ -681,6 +682,23 @@ 
+                 e.getCaret().getInsertionIndex());
+     }
+
++    // FIXME: once we move to JDK 9 as the boot JDK we should remove the
++    // reflection code from this method, consider changing it to
++    // use double rather than int, and account for the possibility of
++    // a different scale factor in X and Y.
++    private int getDefaultScale(SurfaceData surfaceData) {
++        /*
++          double scale = surfaceData.getDefaultScaleX();
++        */
++        double scale = 1;
++        try {
++            Method meth = SurfaceData.class.getMethod("getDefaultScaleX");
++            scale = (Double)meth.invoke(surfaceData);
++        } catch (Exception ex) {
++        }
++
++        return (int)Math.round(scale);
++    }
+ 
+     /**
+      * Overrides the {@link javax.swing.JComponent#paintComponent(Graphics)}
+@@ -720,7 +738,7 @@ public class JFXPanel extends JComponent {
+ 
+             int newScaleFactor = scaleFactor;
+             if (g instanceof SunGraphics2D) {
+-                newScaleFactor = ((SunGraphics2D)g).surfaceData.getDefaultScale();
++                newScaleFactor = getDefaultScale(((SunGraphics2D)g).surfaceData);
+             }
+             if (scaleFactor != newScaleFactor) {
+                 resizePixelBuffer(newScaleFactor);
+--
+2.24.1
+
-- 
2.24.1





Information forwarded to guix-patches <at> gnu.org:
bug#39745; Package guix-patches. (Mon, 09 Mar 2020 22:09:02 GMT) Full text and rfc822 format available.

Message #22 received at 39745 <at> debbugs.gnu.org (full text, mbox):

From: levenson <at> mmer.org
To: Leo Famulari <leo <at> famulari.name>
Cc: 39745 <at> debbugs.gnu.org, 39741 <at> debbugs.gnu.org,
 Alexey Abramov <levenson <at> mmer.org>
Subject: Re: [bug#39745] [PATCH 4/7] gnu: java-openjfx-swing: Add new variable.
Date: Mon, 09 Mar 2020 23:08:14 +0100
Thank you!

Leo Famulari <leo <at> famulari.name> writes:

> On Sat, Feb 22, 2020 at 09:17:52PM +0100, Alexey Abramov wrote:
>> * gnu/packages/java.scm (java-openjfx-build): Add patch to the base package.
>> * gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch: Fix swing compilation for jdk8.
>
> This commit adds the patch file but also makes a new package
> java-openjfx-swing. Adding the patch to java-openjfx-build and adding
> the new package should be done in separate commits.

I split the change into two separated commits. v3

> Also remember to add the patch to 'gnu/local.mk'.
>
>> +From 173e65937d9e76872df51f7ba39c9d58986dc38f Mon Sep 17 00:00:00 2001
>> +From: Alexey Abramov <levenson <at> mmer.org>
>> +Date: Fri, 3 Jan 2020 01:17:45 +0100
>> +Subject: [PATCH] java-openjfx-build: Cannot compile JFXPanel with JDK 8
>> +
>> +For more info please see https://bugs.openjdk.java.net/browse/JDK-8149967
>
> This link is great but please add a brief summary of why we need the
> patch and what it does (one or two sentences is enough).

--
Alexey




Information forwarded to guix-patches <at> gnu.org:
bug#39745; Package guix-patches. (Wed, 11 Mar 2020 10:37:01 GMT) Full text and rfc822 format available.

Message #25 received at 39745 <at> debbugs.gnu.org (full text, mbox):

From: Alexey Abramov <levenson <at> mmer.org>
To: 39745 <at> debbugs.gnu.org
Cc: Alexey Abramov <levenson <at> mmer.org>
Subject: [v4 2/2] gnu: java-openjfx-swing: Add new variable.
Date: Wed, 11 Mar 2020 11:36:17 +0100
---
 gnu/packages/java.scm | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 768fbf09a1..494f5e360d 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -3084,6 +3084,19 @@ distribution.")))
      `(("java-openjfx-base" ,java-openjfx-base)
        ("java-swt" ,java-swt)))))
 
+(define-public java-openjfx-swing
+  (package (inherit java-openjfx-build)
+    (name "java-openjfx-swing")
+    (arguments
+     `(#:jar-name "java-openjfx-swing.jar"
+       #:source-dir "modules/swing/src/main/java"
+       #:tests? #f))
+    (inputs
+     `(("antlr3" ,antlr3)
+       ("java-stringtemplate" ,java-stringtemplate)))
+    (propagated-inputs
+     `(("java-openjfx-graphics" ,java-openjfx-graphics)))))
+
 (define-public java-openjfx-media
   (package (inherit java-openjfx-build)
     (name "java-openjfx-media")
--
2.24.1





Information forwarded to guix-patches <at> gnu.org:
bug#39745; Package guix-patches. (Wed, 11 Mar 2020 10:37:02 GMT) Full text and rfc822 format available.

Message #28 received at 39745 <at> debbugs.gnu.org (full text, mbox):

From: Alexey Abramov <levenson <at> mmer.org>
To: 39745 <at> debbugs.gnu.org
Cc: Alexey Abramov <levenson <at> mmer.org>
Subject: [v4 1/2] gnu: java-openjfx-build: Fix openjfx-swing component build
 for JDKu8
Date: Wed, 11 Mar 2020 11:36:16 +0100
* gnu/packages/java.scm (java-openjfx-build)[source]: Use it.
* gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch:
  New file.
* gnu/local.mk (dist_patch_DATA): Add it.
---
 gnu/local.mk                                  |  1 +
 gnu/packages/java.scm                         |  3 +-
 ...ld-swing-compile-JFXPanel-with-JDK-8.patch | 63 +++++++++++++++++++
 3 files changed, 66 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 476aa00511..010247be3b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1033,6 +1033,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/java-commons-collections-fix-java8.patch \
   %D%/packages/patches/java-jeromq-fix-tests.patch		\
   %D%/packages/patches/java-openjfx-build-get_guix_jdk_version.patch    \
+  %D%/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch     \
   %D%/packages/patches/java-powermock-fix-java-files.patch		\
   %D%/packages/patches/java-simple-xml-fix-tests.patch		\
   %D%/packages/patches/java-svg-salamander-Fix-non-det.patch	\
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 6c1c2dba6c..768fbf09a1 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -2363,7 +2363,8 @@ new Date();"))
               (sha256
                (base32
                 "0yg38mwpivswccv9n96k06x3iv82i4px1a9xg9l8dswzwmfj259f"))
-              (patches (search-patches "java-openjfx-build-get_guix_jdk_version.patch"))))
+              (patches (search-patches "java-openjfx-build-get_guix_jdk_version.patch"
+                                       "java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch"))))
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "java-openjfx.jar"
diff --git a/gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch b/gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch
new file mode 100644
index 0000000000..363ce9509b
--- /dev/null
+++ b/gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch
@@ -0,0 +1,63 @@
+From 173e65937d9e76872df51f7ba39c9d58986dc38f Mon Sep 17 00:00:00 2001
+From: Alexey Abramov <levenson <at> mmer.org>
+Date: Fri, 3 Jan 2020 01:17:45 +0100
+Subject: [PATCH] java-openjfx-build: Cannot compile JFXPanel with JDK 8
+
+In JDKu9 getDefaultScale method was removed and sun.java2d.SurfaceData class now
+has separate getDefaultScaleX() and getDefaultScaleY() methods. See
+https://bugs.openjdk.java.net/browse/JDK-8073320 for more info.
+
+Backport the missing port to build openjfx-swing package using JDKu8. For more
+info please see https://bugs.openjdk.java.net/browse/JDK-8149967
+
+---
+ .../java/javafx/embed/swing/JFXPanel.java     | 20 ++++++++++++++++++-
+ 1 file changed, 19 insertions(+), 1 deletion(-)
+
+diff --git a/modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java b/modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java
+index 97515e2290..614ed656b9 100644
+--- a/modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java
++++ b/modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java
+@@ -81,6 +81,7 @@ import sun.awt.AppContext;
+ import sun.awt.CausedFocusEvent;
+ import sun.awt.SunToolkit;
+ import sun.java2d.SunGraphics2D;
++import sun.java2d.SurfaceData;
+ import sun.util.logging.PlatformLogger;
+ import sun.util.logging.PlatformLogger.Level;
+
+@@ -681,6 +682,23 @@
+                 e.getCaret().getInsertionIndex());
+     }
+
++    // FIXME: once we move to JDK 9 as the boot JDK we should remove the
++    // reflection code from this method, consider changing it to
++    // use double rather than int, and account for the possibility of
++    // a different scale factor in X and Y.
++    private int getDefaultScale(SurfaceData surfaceData) {
++        /*
++          double scale = surfaceData.getDefaultScaleX();
++        */
++        double scale = 1;
++        try {
++            Method meth = SurfaceData.class.getMethod("getDefaultScaleX");
++            scale = (Double)meth.invoke(surfaceData);
++        } catch (Exception ex) {
++        }
++
++        return (int)Math.round(scale);
++    }
+
+     /**
+      * Overrides the {@link javax.swing.JComponent#paintComponent(Graphics)}
+@@ -720,7 +738,7 @@ public class JFXPanel extends JComponent {
+
+             int newScaleFactor = scaleFactor;
+             if (g instanceof SunGraphics2D) {
+-                newScaleFactor = ((SunGraphics2D)g).surfaceData.getDefaultScale();
++                newScaleFactor = getDefaultScale(((SunGraphics2D)g).surfaceData);
+             }
+             if (scaleFactor != newScaleFactor) {
+                 resizePixelBuffer(newScaleFactor);
+--
+2.24.1
--
2.24.1





bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Wed, 15 Apr 2020 11:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 4 years and 10 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.