Skip to content

Native compile [GraalVM]#11298

Closed
calixtus wants to merge 9 commits into
mainfrom
nativecompile
Closed

Native compile [GraalVM]#11298
calixtus wants to merge 9 commits into
mainfrom
nativecompile

Conversation

@calixtus

@calixtus calixtus commented May 17, 2024

Copy link
Copy Markdown
Member

Howto

  • Run gradle task nativeCompile.

TODOs

Mandatory checks

  • Change in CHANGELOG.md described in a way that is understandable for the average user (if applicable)
  • Tests created for changes (if applicable)
  • Manually tested changed features in running JabRef (always required)
  • Screenshots added in PR description (for UI changes)
  • Checked developer's documentation: Is the information available and up to date? If not, I outlined it in this pull request.
  • Checked documentation: Is the information available and up to date? If not, I created an issue at https://github.com/JabRef/user-documentation/issues or, even better, I submitted a pull request to the documentation repository.

@calixtus

Copy link
Copy Markdown
Member Author

image
image

@Siedlerchr

Copy link
Copy Markdown
Member

Caused by: java.lang.module.InvalidModuleDescriptorException: Unsupported major.minor version 66.0

@koppor

koppor commented May 18, 2024

Copy link
Copy Markdown
Member

Caused by: java.lang.module.InvalidModuleDescriptorException: Unsupported major.minor version 66.0

Uhoh. I went back to Java 21 in d39fb35 (#11298), because I didn't know why Java 22 should be important at this point in time.

@koppor

koppor commented May 18, 2024

Copy link
Copy Markdown
Member

With Java 21, the image compiles fine, but cannot be started:

koppor@DESKTOP-KAK953S MINGW64 /c/git-repositories/jabref/build/native/nativeCompile (nativecompile)
$ ./JAbRef.exe
Messages are not initialized before accessing key: Display help on command line options
LOGGER ERROR: Service implementation 'org.tinylog.writers.ConsoleWriter' has no matching constructor
Exception in thread "main" java.lang.NullPointerException
        at org.jabref.logic.l10n.Localization.lookup(Localization.java:146)
        at org.jabref.logic.l10n.Localization.lang(Localization.java:58)
        at org.jabref.cli.JabRefCLI.getOptions(JabRefCLI.java:184)
        at org.jabref.cli.JabRefCLI.<init>(JabRefCLI.java:33)
        at org.jabref.Launcher.main(Launcher.java:59)
        at java.base@21.0.2/java.lang.invoke.LambdaForm$DMH/sa346b79c.invokeStaticInit(LambdaForm$DMH)

@koppor

koppor commented May 18, 2024

Copy link
Copy Markdown
Member

Current hint:

// Source: https://github.com/tinylog-org/tinylog/issues/145#issuecomment-603430594
task generateConfiguration(type: Exec) {
    group = "graal"
    description = "Run application to generate the configuration for native image"
    dependsOn build
    commandLine project.gradle.gradleUserHomeDir.toPath().resolve("caches/com.palantir.graal/$graalVmVersion/graalvm-ce-$graalVmVersion/bin/java"), "-agentlib:native-image-agent=config-output-dir=" + project.buildDir.toPath().resolve("resources/main/META-INF/native-image"), "-cp", sourceSets.main.runtimeClasspath.getAsPath(), javaMainClass

    doFirst {
        mkdir project.buildDir.toPath().resolve("resources/main/META-INF/native-image")
    }
}

@calixtus

Copy link
Copy Markdown
Member Author

Current hint

Requires palantir graal plugin for gradle

@koppor

koppor commented May 18, 2024

Copy link
Copy Markdown
Member

Current hint

Requires palantir graal plugin for gradle

I don't think so. The path starts with plantir, but the content seems to be the real GraalVM. Thus, the paths "just" need to ne adapted to recent GraalVM.

@koppor

koppor commented May 19, 2024

Copy link
Copy Markdown
Member

MWE project to try out a fix: https://github.com/shoneslab/graal-logging (referenced from tinylog-org/tinylog#145 (comment))

@koppor koppor changed the title Native compile Native compile [GraalVM] May 20, 2024
@koppor

koppor commented May 20, 2024

Copy link
Copy Markdown
Member

This needs to be adressed: oracle/graal#7682

Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com>
@calixtus

Copy link
Copy Markdown
Member Author

@koppor

koppor commented May 23, 2024

Copy link
Copy Markdown
Member

https://thenewstack.io/how-to-build-with-graalvm-inside-github-actions/

Doesn't use Toolchain. Think, we already managed to compile using GraalVM, but have issues with our file access

@koppor koppor mentioned this pull request Jul 10, 2024
6 tasks
@koppor

koppor commented Jul 11, 2024

Copy link
Copy Markdown
Member

Tinylog "official" "guide": https://github.com/tinylog-org/tinylog-graal-example

@github-actions

Copy link
Copy Markdown
Contributor

The build of this PR is available at https://builds.jabref.org/pull/11298/merge.

@koppor

koppor commented Jul 11, 2024

Copy link
Copy Markdown
Member

Current error:

Error: Error loading a referenced type: com.oracle.svm.hosted.substitute.DeletedElementException: Unsupported method jdk.internal.loader.NativeLibrary.findEntry0(long, String) is reachable
To diagnose the issue, you can add the option --report-unsupported-elements-at-runtime. The unsupported element is then reported at run time when it is accessed the first time.
Error encountered while parsing org.apache.lucene.store.PosixNativeAccess.lookupMadvise(PosixNativeAccess.java:87) 
Parsing context:
      141 types,   103 fields, and   138 methods registered for JNI access
        5 native libraries: crypt32, ncrypt, psapi, version, winhttp

------------------------------------------------------------------------------------------------------------------------
   at org.apache.lucene.store.PosixNativeAccess.<clinit>(PosixNativeAccess.java:67)
   at static root method.(Unknown Source)

@Siedlerchr

Copy link
Copy Markdown
Member

Might be related oracle/graal#673

@calixtus

calixtus commented Jul 11, 2024

Copy link
Copy Markdown
Member Author

https://www.graalvm.org/22.0/reference-manual/native-image/JNI/

https://github.com/amahfouz1/jna-graalvm

@koppor

koppor commented Aug 4, 2024

Copy link
Copy Markdown
Member

At #11510, we even introduced more reflection.

Closing and re-opening at koppor, because it will take more time.

@koppor koppor closed this Aug 4, 2024
@koppor koppor deleted the nativecompile branch August 4, 2024 20:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants