From 322f6e78c14174e91931b16dd4b3fa1a3ac7fac3 Mon Sep 17 00:00:00 2001 From: Foivos Zakkak Date: Tue, 21 Sep 2021 18:41:12 +0300 Subject: [PATCH] Add README-Mandrel and fix version --- README-Mandrel.md | 66 +++++++++++++++++++++++++++++ compiler/mx.compiler/suite.py | 2 +- espresso/mx.espresso/suite.py | 2 +- regex/mx.regex/suite.py | 2 +- sdk/mx.sdk/suite.py | 2 +- substratevm/mx.substratevm/suite.py | 2 +- tools/mx.tools/suite.py | 2 +- truffle/mx.truffle/suite.py | 2 +- vm/mx.vm/suite.py | 2 +- wasm/mx.wasm/suite.py | 2 +- 10 files changed, 75 insertions(+), 9 deletions(-) create mode 100644 README-Mandrel.md diff --git a/README-Mandrel.md b/README-Mandrel.md new file mode 100644 index 000000000000..f73bd30811a9 --- /dev/null +++ b/README-Mandrel.md @@ -0,0 +1,66 @@ +# Mandrel + +Mandrel is [a downstream distribution of the GraalVM community edition](https://developers.redhat.com/blog/2020/06/05/mandrel-a-community-distribution-of-graalvm-for-the-red-hat-build-of-quarkus/). +Mandrel's main goal is to provide a `native-image` release specifically to support [Quarkus](https://quarkus.io). +The aim is to align the `native-image` capabilities from GraalVM with OpenJDK and Red Hat Enterprise Linux libraries to improve maintainability for native Quarkus applications. +Mandrel can best be described as a distribution of a regular OpenJDK with a specially packaged GraalVM Native Image builder (`native-image`). + +## How Does Mandrel Differ From Graal + +Mandrel releases are built from a code base derived from the upstream GraalVM code base, with only minor changes but some significant exclusions. +A full distribution of GraalVM is much more than `native-image`: it has polyglot support, the Truffle framework which allows for efficient implementation of interpreters, an LLVM compiler back end for native image, the libgraal JIT compiler as a replacement for Hotspot’s C2 server compiler and much more. +Mandrel is the small subset of that functionality we support for the `native-image` use-case. + +Mandrel's `native-image` also doesn't include the following features: +* The experimental image-build server, i.e., the `--experimental-build-server` option. +* The LLVM backend, i.e., the `-H:CompilerBackend=llvm` option. +* The musl libc implementation, i.e., the `--libc=musl` option. +* Support for generating static native images, i.e., the `--static` option. +* Support for non JVM-based languages and polyglot, i.e., the `--language:` option. + +Mandrel is also built slightly differently to GraalVM, using the standard OpenJDK project release of jdk11u. +This means it does not profit from a few small enhancements that Oracle have added to the version of OpenJDK used to build their own GraalVM downloads. +Most of these enhancements are to the JVMCI module that allows the Graal compiler to be run inside OpenJDK. +The others are small cosmetic changes to behaviour. +These enhancements may in some cases cause minor differences in the progress of native image generation. +They should not cause the resulting images themselves to execute in a noticeably different manner. + +## Communication Channels + +* [Slack](https://www.graalvm.org/slack-invitation) - Join `#mandrel` channel at graalvm's slack workspace +* [graalvm-dev@oss.oracle.com](mailto:graalvm-dev@oss.oracle.com?subject=[MANDREL]) mailing list - Subscribe [here](https://oss.oracle.com/mailman/listinfo/graalvm-dev) +* [GitHub issues](https://github.com/graalvm/mandrel/issues) for bug reports, questions, or requests for enhancements. + +Please report security vulnerabilities according to the [Reporting Vulnerabilities guide](https://www.oracle.com/corporate/security-practices/assurance/vulnerability/reporting.html). + +## Getting Started + +Mandrel distributions can be downloaded from [the repository's releases](https://github.com/graalvm/mandrel/releases) +and container images are available at [quay.io](https://quay.io/repository/quarkus/ubi-quarkus-mandrel?tag=latest&tab=tags). + +### Prerequisites + +Mandrel's `native-image` depends on the following packages: +* freetype-devel +* gcc +* glibc-devel +* libstdc++-static +* zlib-devel + +On Fedora/CentOS/RHEL they can be installed with: +```bash +dnf install glibc-devel zlib-devel gcc freetype-devel libstdc++-static +``` + +**Note**: the package might be called `glibc-static` instead of `libstdc++-static`. + +On Ubuntu-like systems with: +```bash +apt install g++ zlib1g-dev libfreetype6-dev +``` + +## Building Mandrel From Source + +For building Mandrel from source please see [mandrel-packaging](https://github.com/graalvm/mandrel-packaging) +and consult [Repository Structure in CONTRIBUTING.md](CONTRIBUTING.md#repository-structure) regarding which branch of Mandrel to use. + diff --git a/compiler/mx.compiler/suite.py b/compiler/mx.compiler/suite.py index 64f362a8ec93..6d69b81c4dc9 100644 --- a/compiler/mx.compiler/suite.py +++ b/compiler/mx.compiler/suite.py @@ -4,7 +4,7 @@ "sourceinprojectwhitelist" : [], "groupId" : "org.graalvm.compiler", - "version" : "21.3.0", + "version" : "21.3.0.0", "release" : True, "url" : "http://www.graalvm.org/", "developer" : { diff --git a/espresso/mx.espresso/suite.py b/espresso/mx.espresso/suite.py index a6919d36adf6..1e70c9e37dd7 100644 --- a/espresso/mx.espresso/suite.py +++ b/espresso/mx.espresso/suite.py @@ -23,7 +23,7 @@ suite = { "mxversion": "5.280.5", "name": "espresso", - "version" : "21.3.0", + "version" : "21.3.0.0", "release" : True, "groupId" : "org.graalvm.espresso", "url" : "https://www.graalvm.org/reference-manual/java-on-truffle/", diff --git a/regex/mx.regex/suite.py b/regex/mx.regex/suite.py index 219101ba2299..8782271cd626 100644 --- a/regex/mx.regex/suite.py +++ b/regex/mx.regex/suite.py @@ -43,7 +43,7 @@ "name" : "regex", - "version" : "21.3.0", + "version" : "21.3.0.0", "release" : True, "groupId" : "org.graalvm.regex", "url" : "http://www.graalvm.org/", diff --git a/sdk/mx.sdk/suite.py b/sdk/mx.sdk/suite.py index ada8eafb7425..5118b04aa22c 100644 --- a/sdk/mx.sdk/suite.py +++ b/sdk/mx.sdk/suite.py @@ -41,7 +41,7 @@ suite = { "mxversion" : "5.309.1", "name" : "sdk", - "version" : "21.3.0", + "version" : "21.3.0.0", "release" : True, "sourceinprojectwhitelist" : [], "url" : "https://github.com/oracle/graal", diff --git a/substratevm/mx.substratevm/suite.py b/substratevm/mx.substratevm/suite.py index 9a4d84fba302..8a876ec6a3f4 100644 --- a/substratevm/mx.substratevm/suite.py +++ b/substratevm/mx.substratevm/suite.py @@ -2,7 +2,7 @@ suite = { "mxversion": "5.308.1", "name": "substratevm", - "version" : "21.3.0", + "version" : "21.3.0.0", "release" : True, "url" : "https://github.com/oracle/graal/tree/master/substratevm", diff --git a/tools/mx.tools/suite.py b/tools/mx.tools/suite.py index 3a87de2e3a81..46d2aafc97ce 100644 --- a/tools/mx.tools/suite.py +++ b/tools/mx.tools/suite.py @@ -26,7 +26,7 @@ "defaultLicense" : "GPLv2-CPE", "groupId" : "org.graalvm.tools", - "version" : "21.3.0", + "version" : "21.3.0.0", "release" : True, "url" : "http://openjdk.java.net/projects/graal", "developer" : { diff --git a/truffle/mx.truffle/suite.py b/truffle/mx.truffle/suite.py index 027b636ea392..e7933b0146e2 100644 --- a/truffle/mx.truffle/suite.py +++ b/truffle/mx.truffle/suite.py @@ -41,7 +41,7 @@ suite = { "mxversion" : "5.300.4", "name" : "truffle", - "version" : "21.3.0", + "version" : "21.3.0.0", "release" : True, "groupId" : "org.graalvm.truffle", "sourceinprojectwhitelist" : [], diff --git a/vm/mx.vm/suite.py b/vm/mx.vm/suite.py index d4e702a31f1c..6b6638e9f1c1 100644 --- a/vm/mx.vm/suite.py +++ b/vm/mx.vm/suite.py @@ -1,6 +1,6 @@ suite = { "name": "vm", - "version" : "21.3.0", + "version" : "21.3.0.0", "mxversion" : "5.309.2", "release" : True, "groupId" : "org.graalvm", diff --git a/wasm/mx.wasm/suite.py b/wasm/mx.wasm/suite.py index 4bdff093cf08..83eee01b4105 100644 --- a/wasm/mx.wasm/suite.py +++ b/wasm/mx.wasm/suite.py @@ -42,7 +42,7 @@ "mxversion" : "5.301.0", "name" : "wasm", "groupId" : "org.graalvm.wasm", - "version" : "21.3.0", + "version" : "21.3.0.0", "versionConflictResolution" : "latest", "url" : "http://graalvm.org/", "developer" : {