Skip to content

Commit 3513ba7

Browse files
committed
Add MANDREL-Readme and workflows
1 parent d0ddd3a commit 3513ba7

File tree

11 files changed

+195
-9
lines changed

11 files changed

+195
-9
lines changed

.github/workflows/mandrel.yml

+119
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
name: Mandrel-Quarkus tests
2+
3+
on:
4+
push:
5+
paths-ignore:
6+
- '.github/workflows/main.yml'
7+
- '.github/workflows/quarkus.yml'
8+
- '**.md'
9+
pull_request:
10+
paths-ignore:
11+
- '.github/workflows/main.yml'
12+
- '.github/workflows/quarkus.yml'
13+
- '**.md'
14+
workflow_dispatch:
15+
16+
# The following aims to reduce CI CPU cycles by:
17+
# 1. Cancelling any previous builds of this PR when pushing new changes to it
18+
# 2. Cancelling any previous builds of a branch when pushing new changes to it in a fork
19+
# 3. Cancelling any pending builds, but not active ones, when pushing to a branch in the main
20+
# repository. This prevents us from constantly cancelling CI runs, while being able to skip
21+
# intermediate builds. E.g., if we perform two pushes the first one will start a CI job and
22+
# the second one will add another one to the queue; if we perform a third push while the
23+
# first CI job is still running the previously queued CI job (for the second push) will be
24+
# cancelled and a new CI job will be queued for the latest (third) push.
25+
concurrency:
26+
group: "workflow = ${{ github.workflow }}, ref = ${{ github.event.ref }}, pr = ${{ github.event.pull_request.id }}"
27+
cancel-in-progress: ${{ github.event_name == 'pull_request' || github.repository != 'graalvm/mandrel' }}
28+
29+
jobs:
30+
q-main-ea:
31+
name: "Q main M 22.2 EA"
32+
uses: graalvm/mandrel/.github/workflows/base.yml@default
33+
with:
34+
quarkus-version: "main"
35+
repo: ${{ github.repository }}
36+
version: ${{ github.ref }}
37+
mandrel-packaging-version: "22.2"
38+
jdk: "11/ea"
39+
q-main-ea-win:
40+
name: "Q main M 22.2 windows EA"
41+
uses: graalvm/mandrel/.github/workflows/base-windows.yml@default
42+
with:
43+
quarkus-version: "main"
44+
repo: ${{ github.repository }}
45+
version: ${{ github.ref }}
46+
mandrel-packaging-version: "22.2"
47+
jdk: "11/ea"
48+
q-main-ea-17:
49+
name: "Q main M 17 22.2 EA"
50+
uses: graalvm/mandrel/.github/workflows/base.yml@default
51+
with:
52+
quarkus-version: "main"
53+
repo: ${{ github.repository }}
54+
version: ${{ github.ref }}
55+
mandrel-packaging-version: "22.2"
56+
jdk: "17/ea"
57+
q-main-ea-17-win:
58+
name: "Q main M 17 22.2 windows EA"
59+
uses: graalvm/mandrel/.github/workflows/base-windows.yml@default
60+
with:
61+
quarkus-version: "main"
62+
repo: ${{ github.repository }}
63+
version: ${{ github.ref }}
64+
mandrel-packaging-version: "22.2"
65+
jdk: "17/ea"
66+
q-latest-ea:
67+
name: "Q latest M 22.2 EA"
68+
uses: graalvm/mandrel/.github/workflows/base.yml@default
69+
with:
70+
quarkus-version: "latest"
71+
repo: ${{ github.repository }}
72+
version: ${{ github.ref }}
73+
mandrel-packaging-version: "22.2"
74+
jdk: "11/ea"
75+
q-latest-ea-win:
76+
name: "Q latest M 22.2 windows EA"
77+
uses: graalvm/mandrel/.github/workflows/base-windows.yml@default
78+
with:
79+
quarkus-version: "latest"
80+
repo: ${{ github.repository }}
81+
version: ${{ github.ref }}
82+
mandrel-packaging-version: "22.2"
83+
jdk: "11/ea"
84+
# q-main-ga:
85+
# name: "Q main M 22.2"
86+
# uses: graalvm/mandrel/.github/workflows/base.yml@default
87+
# with:
88+
# quarkus-version: "main"
89+
# repo: ${{ github.repository }}
90+
# version: ${{ github.ref }}
91+
# mandrel-packaging-version: "22.2"
92+
# jdk: "11/ga"
93+
# q-main-ga-win:
94+
# name: "Q main M 22.2 windows"
95+
# uses: graalvm/mandrel/.github/workflows/base-windows.yml@default
96+
# with:
97+
# quarkus-version: "main"
98+
# repo: ${{ github.repository }}
99+
# version: ${{ github.ref }}
100+
# mandrel-packaging-version: "22.2"
101+
# jdk: "11/ga"
102+
# q-latest-ga:
103+
# name: "Q latest M 22.2"
104+
# uses: graalvm/mandrel/.github/workflows/base.yml@default
105+
# with:
106+
# quarkus-version: "latest"
107+
# repo: ${{ github.repository }}
108+
# version: ${{ github.ref }}
109+
# mandrel-packaging-version: "22.2"
110+
# jdk: "11/ga"
111+
# q-latest-ga-win:
112+
# name: "Q latest M 22.2 windows"
113+
# uses: graalvm/mandrel/.github/workflows/base-windows.yml@default
114+
# with:
115+
# quarkus-version: "latest"
116+
# repo: ${{ github.repository }}
117+
# version: ${{ github.ref }}
118+
# mandrel-packaging-version: "22.2"
119+
# jdk: "11/ga"

README-Mandrel.md

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# Mandrel
2+
3+
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/).
4+
Mandrel's main goal is to provide a `native-image` release specifically to support [Quarkus](https://quarkus.io).
5+
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.
6+
Mandrel can best be described as a distribution of a regular OpenJDK with a specially packaged GraalVM Native Image builder (`native-image`).
7+
8+
## How Does Mandrel Differ From Graal
9+
10+
Mandrel releases are built from a code base derived from the upstream GraalVM code base, with only minor changes but some significant exclusions.
11+
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.
12+
Mandrel is the small subset of that functionality we support for the `native-image` use-case.
13+
14+
Mandrel's `native-image` also doesn't include the following features:
15+
* The experimental image-build server, i.e., the `--experimental-build-server` option.
16+
* The LLVM backend, i.e., the `-H:CompilerBackend=llvm` option.
17+
* The musl libc implementation, i.e., the `--libc=musl` option.
18+
* Support for generating static native images, i.e., the `--static` option.
19+
* Support for non JVM-based languages and polyglot, i.e., the `--language:<languageId>` option.
20+
21+
Mandrel is also built slightly differently to GraalVM, using the standard OpenJDK project release of jdk11u.
22+
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.
23+
Most of these enhancements are to the JVMCI module that allows the Graal compiler to be run inside OpenJDK.
24+
The others are small cosmetic changes to behaviour.
25+
These enhancements may in some cases cause minor differences in the progress of native image generation.
26+
They should not cause the resulting images themselves to execute in a noticeably different manner.
27+
28+
## Communication Channels
29+
30+
* [Slack](https://www.graalvm.org/slack-invitation) - Join `#mandrel` channel at graalvm's slack workspace
31+
* [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)
32+
* [GitHub issues](https://github.com/graalvm/mandrel/issues) for bug reports, questions, or requests for enhancements.
33+
34+
Please report security vulnerabilities according to the [Reporting Vulnerabilities guide](https://www.oracle.com/corporate/security-practices/assurance/vulnerability/reporting.html).
35+
36+
## Getting Started
37+
38+
Mandrel distributions can be downloaded from [the repository's releases](https://github.com/graalvm/mandrel/releases)
39+
and container images are available at [quay.io](https://quay.io/repository/quarkus/ubi-quarkus-mandrel?tag=latest&tab=tags).
40+
41+
### Prerequisites
42+
43+
Mandrel's `native-image` depends on the following packages:
44+
* freetype-devel
45+
* gcc
46+
* glibc-devel
47+
* libstdc++-static
48+
* zlib-devel
49+
50+
On Fedora/CentOS/RHEL they can be installed with:
51+
```bash
52+
dnf install glibc-devel zlib-devel gcc freetype-devel libstdc++-static
53+
```
54+
55+
**Note**: The package might be called `glibc-static` or `libstdc++-devel` instead of `libstdc++-static` depending on your system.
56+
If the system is missing stdc++, `gcc-c++` package is needed too.
57+
58+
On Ubuntu-like systems with:
59+
```bash
60+
apt install g++ zlib1g-dev libfreetype6-dev
61+
```
62+
63+
## Building Mandrel From Source
64+
65+
For building Mandrel from source please see [mandrel-packaging](https://github.com/graalvm/mandrel-packaging)
66+
and consult [Repository Structure in CONTRIBUTING.md](CONTRIBUTING.md#repository-structure) regarding which branch of Mandrel to use.
67+

compiler/mx.compiler/suite.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"sourceinprojectwhitelist" : [],
55

66
"groupId" : "org.graalvm.compiler",
7-
"version" : "22.2.0.1",
7+
"version" : "22.2.0.0",
88
"release" : False,
99
"url" : "http://www.graalvm.org/",
1010
"developer" : {

espresso/mx.espresso/suite.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
suite = {
2424
"mxversion": "6.0.1",
2525
"name": "espresso",
26-
"version" : "22.2.0.1",
26+
"version" : "22.2.0.0",
2727
"release" : False,
2828
"groupId" : "org.graalvm.espresso",
2929
"url" : "https://www.graalvm.org/reference-manual/java-on-truffle/",

regex/mx.regex/suite.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343

4444
"name" : "regex",
4545

46-
"version" : "22.2.0.1",
46+
"version" : "22.2.0.0",
4747
"release" : False,
4848
"groupId" : "org.graalvm.regex",
4949
"url" : "http://www.graalvm.org/",

sdk/mx.sdk/suite.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
suite = {
4242
"mxversion" : "6.0.1",
4343
"name" : "sdk",
44-
"version" : "22.2.0.1",
44+
"version" : "22.2.0.0",
4545
"release" : False,
4646
"sourceinprojectwhitelist" : [],
4747
"url" : "https://github.com/oracle/graal",

substratevm/mx.substratevm/suite.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
suite = {
33
"mxversion": "6.0.1",
44
"name": "substratevm",
5-
"version" : "22.2.0.1",
5+
"version" : "22.2.0.0",
66
"release" : False,
77
"url" : "https://github.com/oracle/graal/tree/master/substratevm",
88

tools/mx.tools/suite.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
"defaultLicense" : "GPLv2-CPE",
2727

2828
"groupId" : "org.graalvm.tools",
29-
"version" : "22.2.0.1",
29+
"version" : "22.2.0.0",
3030
"release" : False,
3131
"url" : "http://openjdk.java.net/projects/graal",
3232
"developer" : {

truffle/mx.truffle/suite.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
suite = {
4242
"mxversion" : "6.0.1",
4343
"name" : "truffle",
44-
"version" : "22.2.0.1",
44+
"version" : "22.2.0.0",
4545
"release" : False,
4646
"groupId" : "org.graalvm.truffle",
4747
"sourceinprojectwhitelist" : [],

vm/mx.vm/suite.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
suite = {
22
"name": "vm",
3-
"version" : "22.2.0.1",
3+
"version" : "22.2.0.0",
44
"mxversion" : "6.0.1",
55
"release" : False,
66
"groupId" : "org.graalvm",

wasm/mx.wasm/suite.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
"mxversion" : "6.0.1",
4343
"name" : "wasm",
4444
"groupId" : "org.graalvm.wasm",
45-
"version" : "22.2.0.1",
45+
"version" : "22.2.0.0",
4646
"versionConflictResolution" : "latest",
4747
"url" : "http://graalvm.org/",
4848
"developer" : {

0 commit comments

Comments
 (0)