From 1175386d8f4dc0b14b3e03a85f2610208cbe10e7 Mon Sep 17 00:00:00 2001 From: Salman Siddiqui Date: Jul 12 2019 15:28:03 +0000 Subject: [PATCH 1/5] Rename in accordance with Flatpak naming convention and add build instructions to README --- diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9b94a69 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +/build/ +/repo/ +/.flatpak-builder/ +/org.openjdk.jmc-linux.gtk.x86_64.tar.gz \ No newline at end of file diff --git a/README.md b/README.md index b60282d..7808ca3 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,49 @@ -# README +# JDK Mission Control Flatpak -Flatpak Files for Java Mission Control (JMC) - -This is for experimental purposes. Do not expect any support. +## Prerequisites +Install `flatpak` and `flatpak-builder`, add the Flathub remote and +install the Gnome runtime and SDK along with the Freedesktop OpenJDK 11 extension: +```bash +sudo dnf install flatpak flatpak-builder +flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo +flatpak install flathub org.gnome.Platform//3.32 org.gnome.Sdk//3.32 org.freedesktop.Sdk.Extension.openjdk11 +``` ## Build +First, [build JDK Mission Control from source](http://hg.openjdk.java.net/jmc/jmc/file/tip/README.md#l177). -The build expects release tarballs (not source) of JMC and JDK 11 with the names: +Place `jmc/target/products/org.openjdk.jmc-linux.gtk.x86_64.tar.gz` into this directory before continuing with the next step. -1. org.openjdk.jmc-linux.gtk.x86_64.tar.gz : Acquired from a JMC build -2. OpenJDK11U-jdk_x64_linux_hotspot_11.0.1_13.tar.gz : Acquired from AdoptOpenJDK https://adoptopenjdk.net/ - -### Build Locally +Build the JMC Flatpak and export to a local repo: +```bash +flatpak-builder --repo repo build org.openjdk.Jmc.json --force-clean +``` +To run this Flatpak, execute: +```bash +flatpak-builder --run build org.openjdk.Jmc.json jmc ``` -$ mkdir -p target -$ flatpak-builder ./target/ ./org.openjdk.JMC.json + +## Install +Install from local repository: +```bash +flatpak --user remote-add --no-gpg-verify jmc-local repo +flatpak --user install jmc-local org.openjdk.Jmc ``` -### Run Locally +Run the installed Flatpak: +```bash +flatpak run org.openjdk.Jmc +``` +## Validation tools +Desktop file: +```bash +desktop-file-validate org.openjdk.Jmc.desktop ``` -$ flatpak-builder --run ./target/ org.openjdk.JMC.json jmc + +Appdata file: +```bash +appstream-util validate-relax org.openjdk.Jmc.appdata.xml ``` diff --git a/flathub.json b/flathub.json deleted file mode 100644 index 0b69b95..0000000 --- a/flathub.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "only-arches": ["x86_64"] -} \ No newline at end of file diff --git a/jmc b/jmc deleted file mode 100755 index 1fd7398..0000000 --- a/jmc +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -/app/jmc/jmc -vm /app/jdk/bin diff --git a/org.openjdk.JMC.appdata.xml b/org.openjdk.JMC.appdata.xml deleted file mode 100644 index 60444c2..0000000 --- a/org.openjdk.JMC.appdata.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - org.openjdk.JMC - CC0-1.0 - UPL - Java Mission Control - Java Mission Control - org.opendjk.JMC.desktop - -

- A profiler for the HotSpot JVM. -

-
-
\ No newline at end of file diff --git a/org.openjdk.JMC.desktop b/org.openjdk.JMC.desktop deleted file mode 100644 index 685c593..0000000 --- a/org.openjdk.JMC.desktop +++ /dev/null @@ -1,8 +0,0 @@ -[Desktop Entry] -Name=Java Mission Control -Comment=Analyze performance of Java applications -Exec=jmc -Icon=org.openjdk.JMC -Terminal=false -Type=Application -Categories=Development;Java;Profiling; \ No newline at end of file diff --git a/org.openjdk.JMC.json b/org.openjdk.JMC.json deleted file mode 100644 index 8b8c260..0000000 --- a/org.openjdk.JMC.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "app-id": "org.openjdk.JMC", - "runtime": "org.freedesktop.Platform", - "runtime-version": "18.08", - "sdk": "org.freedesktop.Sdk", - "separate-locales": "false", - "command": "jmc", - "finish-args": [ - "--device=all", - "--device=dri", - "--socket=x11", - "--filesystem=host", - "--share=ipc", - "--share=network" - ], - "modules": [ - { - "name": "jmc", - "buildsystem": "simple", - "build-commands": [ - "install -dm0755 ${FLATPAK_DEST}/jmc", - "tar xvf org.openjdk.jmc-linux.gtk.x86_64.tar.gz -C ${FLATPAK_DEST}/jmc", - "rm org.openjdk.jmc-linux.gtk.x86_64.tar.gz", - "install -dm0755 ${FLATPAK_DEST}/share/icons/hicolor/48x48", - "mv ${FLATPAK_DEST}/jmc/icon.xpm ${FLATPAK_DEST}/share/icons/hicolor/48x48/org.openjdk.JMC.xpm", - "install -dm0755 ${FLATPAK_DEST}/bin", - "install -Dm0766 -t ${FLATPAK_DEST}/bin jmc" - ], - "sources": [ - { - "type": "file", - "path": "org.openjdk.jmc-linux.gtk.x86_64.tar.gz" - }, - { - "type": "file", - "path": "jmc" - } - ] - }, - { - "name": "desktop", - "buildsystem": "simple", - "build-commands": [ - "install -dm0755 ${FLATPAK_DEST}/share/applications", - "install -Dm0644 -t ${FLATPAK_DEST}/share/applications org.openjdk.JMC.desktop " - ], - "sources": [ - { - "type": "file", - "path" : "org.openjdk.JMC.desktop" - } - ] - }, - { - "name": "appdata", - "buildsystem": "simple", - "build-commands": [ - "install -dm0755 ${FLATPAK_DEST}/share/appdata", - "install -Dm0644 -t ${FLATPAK_DEST}/share/metainfo org.openjdk.JMC.appdata.xml" - ], - "sources": [ - { - "type": "file", - "path": "org.openjdk.JMC.appdata.xml" - } - ] - }, - { - "name": "jdk", - "buildsystem": "simple", - "build-commands": [ - "install -dm0755 ${FLATPAK_DEST}/jdk", - "tar xvf OpenJDK11U-jdk_x64_linux_hotspot_11.0.1_13.tar.gz -C ${FLATPAK_DEST}/jdk --strip-components=1", - "rm OpenJDK11U-jdk_x64_linux_hotspot_11.0.1_13.tar.gz" - ], - "sources": [ - { - "type": "file", - "path": "OpenJDK11U-jdk_x64_linux_hotspot_11.0.1_13.tar.gz" - } - ] - } - ] -} \ No newline at end of file diff --git a/org.openjdk.Jmc b/org.openjdk.Jmc new file mode 100644 index 0000000..6dc04ac --- /dev/null +++ b/org.openjdk.Jmc @@ -0,0 +1,2 @@ +#!/bin/bash +exec /usr/bin/flatpak run org.openjdk.Jmc "$@" diff --git a/org.openjdk.Jmc.appdata.xml b/org.openjdk.Jmc.appdata.xml new file mode 100644 index 0000000..9fca7ec --- /dev/null +++ b/org.openjdk.Jmc.appdata.xml @@ -0,0 +1,18 @@ + + + org.openjdk.Jmc + org.opendjk.JMC.desktop + UPL-1.0 + UPL-1.0 + Java Mission Control + Java Mission Control + +

JDK Mission Control is a powerful profiler for HotSpot JVMs and has an \ + advanced set of tools that enables efficient and detailed analysis of the \ + extensive data collected by JDK Flight Recorder. The tool chain enables \ + developers and administrators to collect and analyze data from Java \ + applications running locally or deployed in production environments.

+
+ https://bugs.openjdk.java.net/projects/JMC/issues/ + https://openjdk.java.net/projects/jmc/ +
\ No newline at end of file diff --git a/org.openjdk.Jmc.desktop b/org.openjdk.Jmc.desktop new file mode 100644 index 0000000..6476b49 --- /dev/null +++ b/org.openjdk.Jmc.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=Java Mission Control +Comment=Analyze performance of Java applications +Exec=/usr/bin/flatpak run --command jmc -vm /app/jre/bin/java +Icon=org.openjdk.Jmc +Terminal=false +Type=Application +Categories=Development;Java;Profiling; +X-Flatpak=org.openjdk.Jmc \ No newline at end of file diff --git a/org.openjdk.Jmc.json b/org.openjdk.Jmc.json new file mode 100644 index 0000000..250c150 --- /dev/null +++ b/org.openjdk.Jmc.json @@ -0,0 +1,69 @@ +{ + "id": "org.openjdk.Jmc", + "app-id": "org.openjdk.Jmc", + "runtime": "org.gnome.Platform", + "runtime-version": "3.32", + "sdk": "org.gnome.Sdk", + "default-branch": "master", + "command": "jmc", + "modules": [ + { + "name": "jmc", + "buildsystem": "simple", + "sources": [ + { + "path": "org.openjdk.jmc-linux.gtk.x86_64.tar.gz", + "type": "file" + }, + { + "path": "org.openjdk.Jmc", + "dest-filename": "org.openjdk.Jmc", + "type": "file" + }, + { + "path" : "org.openjdk.Jmc.desktop", + "dest-filename": "org.openjdk.Jmc.desktop", + "type": "file" + }, + { + "path" : "org.openjdk.Jmc.png", + "dest-filename": "org.openjdk.Jmc.png", + "type": "file" + }, + { + "path": "org.openjdk.Jmc.appdata.xml", + "dest-filename": "org.openjdk.Jmc.appdata.xml", + "type": "file" + } + ], + "build-commands": [ + "install -dm 755 jmc", + "tar xzf org.openjdk.jmc-linux.gtk.x86_64.tar.gz -C jmc", + "install -dm 755 /app/bin", + "mv jmc/ /app", + "ln -s /app/jmc/jmc /app/bin/jmc", + "install -Dm 644 org.openjdk.Jmc.desktop /app/share/applications/org.openjdk.Jmc.desktop", + "install -Dm 644 org.openjdk.Jmc.appdata.xml /app/share/metainfo/org.openjdk.Jmc.appdata.xml", + "install -Dm 644 org.openjdk.Jmc.png /app/share/icons/hicolor/48x48/org.openjdk.Jmc.png", + "install -Dm 755 org.openjdk.Jmc /app/bin/org.openjdk.Jmc" + ] + }, + { + "name" : "openjdk", + "buildsystem" : "simple", + "build-commands" : [ "/usr/lib/sdk/openjdk11/install.sh" ] + } + ], + "sdk-extensions" : [ + "org.freedesktop.Sdk.Extension.openjdk11" + ], + "finish-args": [ + "--socket=x11", + "--share=ipc", + "--filesystem=host", + "--share=network", + "--allow=devel", + "--socket=system-bus", + "--env=PATH=/app/bin:/app/jre/bin:/usr/bin:/var/run/host/usr/bin" + ] +} \ No newline at end of file diff --git a/org.openjdk.Jmc.png b/org.openjdk.Jmc.png new file mode 100644 index 0000000..8d984c1 Binary files /dev/null and b/org.openjdk.Jmc.png differ From 5d549c01f5fe38b9a3abd0668ed7ce0c76c44542 Mon Sep 17 00:00:00 2001 From: Salman Siddiqui Date: Jul 12 2019 15:30:30 +0000 Subject: [PATCH 2/5] Remove unnecessary org.openjdk.Jmc exec script --- diff --git a/org.openjdk.Jmc b/org.openjdk.Jmc deleted file mode 100644 index 6dc04ac..0000000 --- a/org.openjdk.Jmc +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -exec /usr/bin/flatpak run org.openjdk.Jmc "$@" diff --git a/org.openjdk.Jmc.json b/org.openjdk.Jmc.json index 250c150..211a6df 100644 --- a/org.openjdk.Jmc.json +++ b/org.openjdk.Jmc.json @@ -16,11 +16,6 @@ "type": "file" }, { - "path": "org.openjdk.Jmc", - "dest-filename": "org.openjdk.Jmc", - "type": "file" - }, - { "path" : "org.openjdk.Jmc.desktop", "dest-filename": "org.openjdk.Jmc.desktop", "type": "file" @@ -44,8 +39,7 @@ "ln -s /app/jmc/jmc /app/bin/jmc", "install -Dm 644 org.openjdk.Jmc.desktop /app/share/applications/org.openjdk.Jmc.desktop", "install -Dm 644 org.openjdk.Jmc.appdata.xml /app/share/metainfo/org.openjdk.Jmc.appdata.xml", - "install -Dm 644 org.openjdk.Jmc.png /app/share/icons/hicolor/48x48/org.openjdk.Jmc.png", - "install -Dm 755 org.openjdk.Jmc /app/bin/org.openjdk.Jmc" + "install -Dm 644 org.openjdk.Jmc.png /app/share/icons/hicolor/48x48/org.openjdk.Jmc.png" ] }, { From 2a37c5c4ee7ebc5a5b96af18de3f9e9c2d4ebbc8 Mon Sep 17 00:00:00 2001 From: Salman Siddiqui Date: Jul 12 2019 15:30:39 +0000 Subject: [PATCH 3/5] Install and enable openjdk11 sdk extension --- diff --git a/README.md b/README.md index 7808ca3..3581add 100644 --- a/README.md +++ b/README.md @@ -11,9 +11,9 @@ flatpak install flathub org.gnome.Platform//3.32 org.gnome.Sdk//3.32 org.freedes ``` ## Build -First, [build JDK Mission Control from source](http://hg.openjdk.java.net/jmc/jmc/file/tip/README.md#l177). +[Build JDK Mission Control from source](http://hg.openjdk.java.net/jmc/jmc/file/tip/README.md#l177). -Place `jmc/target/products/org.openjdk.jmc-linux.gtk.x86_64.tar.gz` into this directory before continuing with the next step. +Place `jmc/target/products/org.openjdk.jmc-linux.gtk.x86_64.tar.gz` into this directory. Build the JMC Flatpak and export to a local repo: ```bash diff --git a/org.openjdk.Jmc.appdata.xml b/org.openjdk.Jmc.appdata.xml index 9fca7ec..0f4255c 100644 --- a/org.openjdk.Jmc.appdata.xml +++ b/org.openjdk.Jmc.appdata.xml @@ -1,18 +1,18 @@ - org.openjdk.Jmc - org.opendjk.JMC.desktop - UPL-1.0 - UPL-1.0 - Java Mission Control - Java Mission Control - -

JDK Mission Control is a powerful profiler for HotSpot JVMs and has an \ - advanced set of tools that enables efficient and detailed analysis of the \ - extensive data collected by JDK Flight Recorder. The tool chain enables \ - developers and administrators to collect and analyze data from Java \ - applications running locally or deployed in production environments.

-
- https://bugs.openjdk.java.net/projects/JMC/issues/ - https://openjdk.java.net/projects/jmc/ -
\ No newline at end of file + org.openjdk.Jmc + org.opendjk.Jmc.desktop + UPL-1.0 + UPL-1.0 + JDK Mission Control + JDK Mission Control + +

JDK Mission Control is a powerful profiler for HotSpot JVMs and has an \ + advanced set of tools that enables efficient and detailed analysis of the \ + extensive data collected by JDK Flight Recorder. The tool chain enables \ + developers and administrators to collect and analyze data from Java \ + applications running locally or deployed in production environments.

+
+ https://bugs.openjdk.java.net/projects/JMC/issues/ + https://openjdk.java.net/projects/jmc/ + diff --git a/org.openjdk.Jmc.desktop b/org.openjdk.Jmc.desktop index 6476b49..339f0d5 100644 --- a/org.openjdk.Jmc.desktop +++ b/org.openjdk.Jmc.desktop @@ -1,7 +1,7 @@ [Desktop Entry] -Name=Java Mission Control +Name=JDK Mission Control Comment=Analyze performance of Java applications -Exec=/usr/bin/flatpak run --command jmc -vm /app/jre/bin/java +Exec=/usr/bin/flatpak run --command jmc Icon=org.openjdk.Jmc Terminal=false Type=Application diff --git a/org.openjdk.Jmc.json b/org.openjdk.Jmc.json index 211a6df..f0f92de 100644 --- a/org.openjdk.Jmc.json +++ b/org.openjdk.Jmc.json @@ -45,19 +45,21 @@ { "name" : "openjdk", "buildsystem" : "simple", - "build-commands" : [ "/usr/lib/sdk/openjdk11/install.sh" ] + "build-commands" : [ + "/usr/lib/sdk/openjdk11/installjdk.sh", + "/usr/lib/sdk/openjdk11/enable.sh" + ] } ], "sdk-extensions" : [ "org.freedesktop.Sdk.Extension.openjdk11" ], "finish-args": [ + "--socket=wayland", "--socket=x11", "--share=ipc", - "--filesystem=host", "--share=network", - "--allow=devel", - "--socket=system-bus", - "--env=PATH=/app/bin:/app/jre/bin:/usr/bin:/var/run/host/usr/bin" + "--filesystem=host", + "--env=PATH=/app/bin:/usr/bin:/var/run/host/usr/bin:/usr/lib/sdk/openjdk11/jvm/openjdk-11/bin" ] -} \ No newline at end of file +} From c638184fdab026cc8819b524ef81dc937f8e6415 Mon Sep 17 00:00:00 2001 From: Salman Siddiqui Date: Jul 12 2019 15:31:09 +0000 Subject: [PATCH 4/5] Fix JDK path --- diff --git a/org.openjdk.Jmc.json b/org.openjdk.Jmc.json index f0f92de..26d7cd8 100644 --- a/org.openjdk.Jmc.json +++ b/org.openjdk.Jmc.json @@ -60,6 +60,6 @@ "--share=ipc", "--share=network", "--filesystem=host", - "--env=PATH=/app/bin:/usr/bin:/var/run/host/usr/bin:/usr/lib/sdk/openjdk11/jvm/openjdk-11/bin" + "--env=PATH=/app/bin:/usr/bin:/var/run/host/usr/bin:/app/jdk/bin" ] } From 004b725b9f10f0f6d45193b64d1844ef9397d2f0 Mon Sep 17 00:00:00 2001 From: Salman Siddiqui Date: Jul 12 2019 15:31:26 +0000 Subject: [PATCH 5/5] Fix error with SWT Web Extensions --- diff --git a/org.openjdk.Jmc.json b/org.openjdk.Jmc.json index 26d7cd8..21b350d 100644 --- a/org.openjdk.Jmc.json +++ b/org.openjdk.Jmc.json @@ -56,10 +56,11 @@ ], "finish-args": [ "--socket=wayland", + "--device=dri", "--socket=x11", "--share=ipc", "--share=network", - "--filesystem=host", + "--socket=session-bus", "--env=PATH=/app/bin:/usr/bin:/var/run/host/usr/bin:/app/jdk/bin" ] }