-
Notifications
You must be signed in to change notification settings - Fork 73
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Replace Nashorn with GraalVM #1857
Merged
Changes from 37 commits
Commits
Show all changes
44 commits
Select commit
Hold shift + click to select a range
567752f
First steps (#1637)
plata 8dce77f
Merge branch 'master' into graalvm
plata c098fd2
ShortcutRunner: include by ID
plata 5693b51
Merge branch 'master' into graalvm
plata d0ec44a
Rename Nashorn related classes to "PhoenicisScript..." (#1870)
plata 4f9422f
Allow to create graal.js engine in PhoenicisScriptEngineFactory (#1872)
plata 1eeb9d7
Add phoenicis script engine interface (#1882)
madoar 7f612a7
Remove ScriptObjectMirror (#1883)
plata 14def23
Fix usage of Java interfaces (#1884)
plata 12a80ff
Merge branch 'master' into graalvm
plata 9e5b26d
Add interface communication approach to documentation (#1885)
madoar 52a81f3
Fix retrieval of engine settings (#1886)
plata 091198c
Merge branch 'master' into graalvm
plata 7bead68
Remove unused import
plata 65b1f46
Docs: do not set nashorn compat on command line (#1890)
plata 07c1018
Fix retrieval of engines (#1892)
plata 2f28a88
Restructure phoenicis-scripts module (#1887)
madoar 6c5d7f1
Fix shortcut creation (#1894)
plata a45588b
Merge branch 'master' into graalvm
plata bd3654f
Travis: remove OpenJDK 10
plata f054b39
Update README (remove JDK 10 support)
plata f978412
Update docs (remove Java 11 support)
plata 57c0622
Use 19.0.0
plata 08a040a
Merge branch 'master' into graalvm
plata c69b5b1
Merge branch 'master' into graalvm
plata adc83d3
Package creation fix
56bdfbf
Merge branch 'graalvm' of https://github.com/PhoenicisOrg/phoenicis i…
fa14ad5
Removed useless options
34fea35
Revert Removed useless options
dadc27a
Fix linux build
0e59dd3
Fix linux installation
5853ca7
Packaging with GraalVM support (#1957)
qparis aa18cf0
Merge branch 'master' into graalvm
plata dd6da65
Merge remote-tracking branch 'upstream/graalvm' into graalvm
bd28b7f
Fixed dependencies
6384354
Java12 packaging
36c4ce1
Merging
f05d890
Java12 packaging - Disclaimer
087179e
Jpackager: Java 12+
2fd6be1
Jpackager: Memory switch
47be5f2
Fixed module path
aa3fb2a
Remove classpath parameter
plata c9598be
Merge branch 'master' into graalvm
plata f6073e6
Remove Java 10 support
plata File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
--- | ||
title: "Interaction between Phoenicis and its Scripts" | ||
category: Developers | ||
order: 10 | ||
toc: true | ||
--- | ||
|
||
The interaction between Phoenicis and its scripts occurs through interfaces. | ||
|
||
### Accessing a JavaScript Script from Java | ||
Every script type that Phoenicis uses has its own Java interface. | ||
To access a JavaScript script, Phoenicis proceeds like followed: | ||
|
||
1) Execute the script using a `PhoenicisScriptEngine` | ||
2) Cast the result object of the executed script into the desired interface type | ||
3) Interact with the interface object | ||
|
||
### Existing interfaces | ||
* [`Engine`](https://github.com/PhoenicisOrg/phoenicis/blob/master/phoenicis-engines/src/main/java/org/phoenicis/engines/Engine.java) | ||
* [`Verb`](https://github.com/PhoenicisOrg/phoenicis/blob/master/phoenicis-engines/src/main/java/org/phoenicis/engines/Verb.java) | ||
* [`Installer`](https://github.com/PhoenicisOrg/phoenicis/blob/master/phoenicis-scripts/src/main/java/org/phoenicis/scripts/Installer.java) | ||
* [`EngineTool`](https://github.com/PhoenicisOrg/phoenicis/blob/master/phoenicis-engines/src/main/java/org/phoenicis/engines/EngineTool.java) | ||
|
||
### Easy casting via `PhoenicisScriptEngine` | ||
To provide an easy method to perform all three previously mentioned step in a generic way, they could be implemented inside the `PhoenicisScriptEngine` implementations | ||
Example method signatures: | ||
|
||
```java | ||
public interface PhoenicisScriptEngine { | ||
<E> E evalAndReturn(String script, Class<E> type); | ||
|
||
<E> void eval(String script, Class<E> type, Consumer<E> onSuccess, Consumer<Exception> onError); | ||
} | ||
``` | ||
|
||
Alternatively to the `String` script representation it could be a useful idea to pass `ScriptDTO` objects to the `PhoenicisScriptEngine`s. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
108 changes: 108 additions & 0 deletions
108
phoenicis-dist/src/scripts/phoenicis-create-package-java12.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
#!/bin/bash | ||
|
||
## Dependencies | ||
# Linux: | ||
# - fakeroot | ||
# | ||
|
||
VERSION="$1" | ||
|
||
if [ "$VERSION" = "" ]; then | ||
echo "Warning: Version not specified. Reading from pom.xml" | ||
VERSION="$(cat ../../pom.xml|grep -4 '<parent>'|grep '<version>'|awk -F'[<>]' '/<version>/{print $3}')" | ||
echo "Using $VERSION" | ||
fi | ||
|
||
SCRIPT_PATH="$(dirname "$0")" | ||
cd "$SCRIPT_PATH" | ||
SCRIPT_PATH="$PWD" | ||
|
||
[ "$JAVA_HOME" = "" ] && echo "Please set JAVA_HOME" && exit 0 | ||
|
||
PHOENICIS_OPERATING_SYSTEM="$(uname)" | ||
|
||
if [ "$PHOENICIS_OPERATING_SYSTEM" == "Darwin" ]; then | ||
PHOENICIS_APPTITLE="Phoenicis PlayOnMac" | ||
JPACKAGER_OS="osx" | ||
JAR_RELATIVE_PATH="../Java" | ||
fi | ||
|
||
if [ "$PHOENICIS_OPERATING_SYSTEM" == "Linux" ]; then | ||
PHOENICIS_APPTITLE="Phoenicis PlayOnLinux" | ||
JPACKAGER_OS="linux" | ||
JAR_RELATIVE_PATH="/usr/share/phoenicis/app" | ||
fi | ||
|
||
PHOENICIS_TARGET="$SCRIPT_PATH/../../target" | ||
PHOENICIS_JPACKAGER="$SCRIPT_PATH/../../target/jpackager" | ||
PHOENICIS_RESOURCES="$SCRIPT_PATH/../resources" | ||
PHOENICIS_MODULES="jdk.crypto.ec,java.base,javafx.base,javafx.web,javafx.media,javafx.graphics,javafx.controls,java.naming,java.sql,java.scripting,jdk.scripting.nashorn,jdk.internal.vm.ci,jdk.internal.vm.compiler,org.graalvm.truffle,java.desktop,java.prefs,java.xml" | ||
PHOENICIS_RUNTIME_OPTIONS="-XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI --upgrade-module-path=$JAR_RELATIVE_PATH/compiler.jar" | ||
PHOENICIS_JPACKAGER_ARGUMENTS=("-i" "$PHOENICIS_TARGET/lib" "--main-jar" "phoenicis-javafx-$VERSION.jar" "-n" "$PHOENICIS_APPTITLE" "--output" "$PHOENICIS_TARGET/packages/" "--add-modules" "$PHOENICIS_MODULES" "-p" "$PHOENICIS_TARGET/lib/" "--app-version" "$VERSION" "--java-options" "$PHOENICIS_RUNTIME_OPTIONS") | ||
|
||
|
||
_download_jpackager() { | ||
mkdir -p "$PHOENICIS_JPACKAGER" | ||
cd "$PHOENICIS_JPACKAGER" | ||
wget https://download.java.net/java/early_access/jpackage/49/openjdk-13-jpackage+49_osx-x64_bin.tar.gz | ||
tar -xvf openjdk-13-jpackage+49_osx-x64_bin.tar.gz | ||
} | ||
|
||
|
||
jpackager() { | ||
if [ ! -e "$PHOENICIS_JPACKAGER/jdk-13.jdk/Contents/Home/bin" ]; then | ||
_download_jpackager | ||
fi | ||
|
||
"$PHOENICIS_JPACKAGER/jdk-13.jdk/Contents/Home/bin/jpackage" "$@" | ||
} | ||
|
||
cd "$PHOENICIS_TARGET" | ||
|
||
if [ "$PHOENICIS_OPERATING_SYSTEM" == "Darwin" ]; then | ||
rm -rf "$PHOENICIS_TARGET/packages/Phoenicis PlayOnMac.app" | ||
jpackager create-app-image --icon "$PHOENICIS_RESOURCES/Phoenicis PlayOnMac.icns" "${PHOENICIS_JPACKAGER_ARGUMENTS[@]}" | ||
fi | ||
|
||
if [ "$PHOENICIS_OPERATING_SYSTEM" == "Linux" ]; then | ||
jpackager create-image "${PHOENICIS_JPACKAGER_ARGUMENTS[@]}" --linux-bundle-name "phoenicis-playonlinux" | ||
|
||
packageName="Phoenicis_$VERSION" | ||
cd "$PHOENICIS_TARGET" | ||
rmdir packages/PhoenicisPlayOnLinux/ | ||
rm -rf "packages/phoenicis" 2> /dev/null | ||
mv packages/Phoenicis\ PlayOnLinux/ packages/phoenicis | ||
rm -rf "$packageName" 2> /dev/null | ||
mkdir -p "$packageName/DEBIAN/" | ||
|
||
cat << EOF > "$packageName/DEBIAN/control" | ||
Package: phoenicis-playonlinux | ||
Version: $VERSION | ||
Section: misc | ||
Priority: optional | ||
Architecture: all | ||
Depends: unzip, wget, xterm | x-terminal-emulator, python, imagemagick, cabextract, icoutils, p7zip-full, curl | ||
Maintainer: PlayOnLinux Packaging <[email protected]> | ||
Description: This program is a front-end for wine. | ||
It permits you to install Windows Games and softwares | ||
on Linux. It allows you to manage differents virtual hard drive, | ||
and several wine versions. | ||
Copyright 2011-2019 PlayOnLinux team <[email protected]> | ||
EOF | ||
|
||
mkdir -p $packageName/usr/share/applications | ||
mkdir -p $packageName/usr/share/pixmaps | ||
mkdir -p $packageName/usr/bin | ||
|
||
cp -a packages/phoenicis $packageName/usr/share/ | ||
cp -a "$SCRIPT_PATH/../launchers/phoenicis" $packageName/usr/bin/phoenicis | ||
chmod +x $packageName/usr/bin/phoenicis | ||
|
||
cp "$SCRIPT_PATH/../resources/Phoenicis.desktop" "$packageName/usr/share/applications" | ||
cp "$SCRIPT_PATH/../resources/phoenicis.png" "$packageName/usr/share/pixmaps" | ||
cp "$SCRIPT_PATH/../resources/phoenicis-16.png" "$packageName/usr/share/pixmaps" | ||
cp "$SCRIPT_PATH/../resources/phoenicis-32.png" "$packageName/usr/share/pixmaps" | ||
|
||
fakeroot dpkg-deb --build "$packageName" | ||
rm -rf deb | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't understand why -classpath would be required for GraalVM and not other dependencies. This might cause package problems
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you try if it works for you without it?