summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Xu (Hello71)2020-08-01 14:50:49 -0400
committerAlex Xu (Hello71)2020-08-07 09:34:31 -0400
commit837f02072fd33d44b83179638acdb2eba62785b2 (patch)
tree3bdaa7a962597f8e974ae96718050733b63da87f
downloadaur-837f02072fd33d44b83179638acdb2eba62785b2.tar.gz
Initial commit
-rw-r--r--.SRCINFO110
-rw-r--r--.gitignore3
-rw-r--r--PKGBUILD294
-rw-r--r--freedesktop-java.desktop10
-rw-r--r--freedesktop-jconsole.desktop9
-rw-r--r--freedesktop-jshell.desktop9
-rw-r--r--install_jdk-openj9.sh50
-rw-r--r--install_jre-openj9-headless.sh48
-rw-r--r--install_jre-openj9.sh35
-rw-r--r--omr-fam.patch70
-rw-r--r--omr-omrstr-iconv-failure-overflow.patch13
-rw-r--r--openj9-j9utf8-fam.patch26
-rw-r--r--openj9-make-jvmti-test-variables-static.patch68
-rw-r--r--openj9-subscriptionID.patch36
-rw-r--r--openjdk-8238380-childproc-fcommon.patch48
15 files changed, 829 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..75eb58c3f1f5
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,110 @@
+pkgbase = java-openj9
+ pkgver = 14.0.2.b12_openj9_0.21.0
+ pkgrel = 1
+ url = http://www.eclipse.org/openj9/
+ arch = x86_64
+ license = custom
+ makedepends = java-environment>=11
+ makedepends = cpio
+ makedepends = unzip
+ makedepends = zip
+ makedepends = libelf
+ makedepends = libcups
+ makedepends = libx11
+ makedepends = libxrender
+ makedepends = libxtst
+ makedepends = libxt
+ makedepends = libxext
+ makedepends = libxrandr
+ makedepends = alsa-lib
+ makedepends = pandoc
+ makedepends = graphviz
+ makedepends = freetype2
+ makedepends = libjpeg-turbo
+ makedepends = giflib
+ makedepends = libpng
+ makedepends = lcms2
+ makedepends = libnet
+ makedepends = bash
+ makedepends = freemarker
+ source = openj9-openjdk-jdk-0.21.0.tar.gz::https://github.com/ibmruntimes/openj9-openjdk-jdk14/archive/openj9-0.21.0.tar.gz
+ source = https://github.com/eclipse/openj9/archive/openj9-0.21.0.tar.gz
+ source = openj9-omr-0.21.0.tar.gz::https://github.com/eclipse/openj9-omr/archive/openj9-0.21.0.tar.gz
+ source = freedesktop-java.desktop
+ source = freedesktop-jconsole.desktop
+ source = freedesktop-jshell.desktop
+ source = openj9-make-jvmti-test-variables-static.patch
+ source = omr-omrstr-iconv-failure-overflow.patch
+ source = omr-fam.patch
+ sha256sums = f68213a6ecfe608eab4f16e50704912375e22d83b90e30d0aa150d1190f8e901
+ sha256sums = 84eac0ff622847d34704aef92d34d0d83e7ccf91fb9e21f7e9146e0f96d72c3f
+ sha256sums = a7d771a89b734d8f86d17cf5793d7e81e2d915f207739ebafc5208e2efcc2ca8
+ sha256sums = 7cb89746dbbcf498dd43b53fee59b124f42e3ea0d8b7134ab803cc2bd6b50230
+ sha256sums = bf76024528d050fd912f72d73e18a814a930df3478b132a99a887fbbdc0c9dfd
+ sha256sums = bd2d4da78a65eec20dc32e21fd4fe134a2483b0bbe2dfb940d66755acc237975
+ sha256sums = 5b65c0819be140e90ef11c9d7c3011d39aaa304e3fd9af0f8d61c6de618f93bf
+ sha256sums = f37290530dcb8eb5acb4f70609c55b7e2be134f1052ebf20f117c2996a749858
+ sha256sums = c288b0a1a2424967d9c00e4d07d16f5d703f6b9b1195839753480fcd9810faf5
+
+pkgname = jre-openj9-headless
+ pkgdesc = OpenJDK Java 14 headless runtime environment
+ install = install_jre-openj9-headless.sh
+ depends = java-runtime-common>=3
+ depends = ca-certificates-utils
+ depends = nss
+ depends = libjpeg-turbo
+ depends = lcms2
+ depends = libnet
+ depends = freetype2
+ optdepends = java-rhino: for some JavaScript support
+ provides = java-runtime-headless=14
+ provides = java-runtime-headless-openj9=14
+ provides = jre14-openj9-headless=14.0.2.b12_openj9_0.21.0-1
+ backup = etc/java-openj9/logging.properties
+ backup = etc/java-openj9/management/jmxremote.access
+ backup = etc/java-openj9/management/jmxremote.password.template
+ backup = etc/java-openj9/management/management.properties
+ backup = etc/java-openj9/net.properties
+ backup = etc/java-openj9/security/java.policy
+ backup = etc/java-openj9/security/java.security
+ backup = etc/java-openj9/security/policy/README.txt
+ backup = etc/java-openj9/security/policy/limited/default_US_export.policy
+ backup = etc/java-openj9/security/policy/limited/default_local.policy
+ backup = etc/java-openj9/security/policy/limited/exempt_local.policy
+ backup = etc/java-openj9/security/policy/unlimited/default_US_export.policy
+ backup = etc/java-openj9/security/policy/unlimited/default_local.policy
+ backup = etc/java-openj9/sound.properties
+
+pkgname = jre-openj9
+ pkgdesc = OpenJDK Java 14 full runtime environment
+ install = install_jre-openj9.sh
+ depends = jre14-openj9-headless=14.0.2.b12_openj9_0.21.0-1
+ depends = giflib
+ optdepends = alsa-lib: for basic sound support
+ optdepends = gtk2: for the Gtk+ 2 look and feel - desktop usage
+ optdepends = gtk3: for the Gtk+ 3 look and feel - desktop usage
+ provides = java-runtime=14
+ provides = java-runtime-openj9=14
+ provides = jre14-openj9=14.0.2.b12_openj9_0.21.0-1
+
+pkgname = jdk-openj9
+ pkgdesc = OpenJDK Java 14 development kit
+ install = install_jdk-openj9.sh
+ depends = jre14-openj9=14.0.2.b12_openj9_0.21.0-1
+ depends = java-environment-common=3
+ depends = hicolor-icon-theme
+ depends = libelf
+ provides = java-environment=14
+ provides = java-environment-openj9=14
+ provides = jdk14-openj9=14.0.2.b12_openj9_0.21.0-1
+
+pkgname = openj9-src
+ pkgdesc = OpenJDK Java 14 sources
+ depends = jdk14-openj9=14.0.2.b12_openj9_0.21.0-1
+ provides = openj914-src=14.0.2.b12_openj9_0.21.0-1
+
+pkgname = openj9-doc
+ pkgdesc = OpenJDK Java 14 documentation
+ depends = jdk14-openj9=14.0.2.b12_openj9_0.21.0-1
+ provides = openj914-doc=14.0.2.b12_openj9_0.21.0-1
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000000..703cbea26e1c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+*.tar*
+pkg
+src
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..38fe1530e953
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,294 @@
+# Maintainer: Alex Xu (Hello71) <alex_y_xu@yahoo.ca>
+# Contributor: Levente Polyak <anthraxx[at]archlinux[dot]org>
+# Contributor: Guillaume ALAUX <guillaume@archlinux.org>
+
+# TODO add test, see about packaging jtreg and using it here
+
+pkgbase=java-openj9
+pkgname=('jre-openj9-headless' 'jre-openj9' 'jdk-openj9' 'openj9-src' 'openj9-doc')
+_majorver=14
+_minorver=0
+_securityver=2
+_updatever=12
+_openj9ver=0.21.0
+pkgrel=1
+pkgver=${_majorver}.${_minorver}.${_securityver}.b${_updatever}_openj9_${_openj9ver}
+arch=('x86_64')
+url='http://www.eclipse.org/openj9/'
+license=('custom')
+makedepends=('java-environment>=11' 'cpio' 'unzip' 'zip' 'libelf' 'libcups' 'libx11'
+ 'libxrender' 'libxtst' 'libxt' 'libxext' 'libxrandr' 'alsa-lib' 'pandoc'
+ 'graphviz' 'freetype2' 'libjpeg-turbo' 'giflib' 'libpng' 'lcms2'
+ 'libnet' 'bash' 'freemarker')
+source=(openj9-openjdk-jdk-${_openj9ver}.tar.gz::https://github.com/ibmruntimes/openj9-openjdk-jdk${_majorver}/archive/openj9-${_openj9ver}.tar.gz
+ https://github.com/eclipse/openj9/archive/openj9-${_openj9ver}.tar.gz
+ openj9-omr-${_openj9ver}.tar.gz::https://github.com/eclipse/openj9-omr/archive/openj9-${_openj9ver}.tar.gz
+ freedesktop-java.desktop
+ freedesktop-jconsole.desktop
+ freedesktop-jshell.desktop
+ openj9-make-jvmti-test-variables-static.patch
+ omr-omrstr-iconv-failure-overflow.patch
+ omr-fam.patch)
+sha256sums=('f68213a6ecfe608eab4f16e50704912375e22d83b90e30d0aa150d1190f8e901'
+ '84eac0ff622847d34704aef92d34d0d83e7ccf91fb9e21f7e9146e0f96d72c3f'
+ 'a7d771a89b734d8f86d17cf5793d7e81e2d915f207739ebafc5208e2efcc2ca8'
+ '7cb89746dbbcf498dd43b53fee59b124f42e3ea0d8b7134ab803cc2bd6b50230'
+ 'bf76024528d050fd912f72d73e18a814a930df3478b132a99a887fbbdc0c9dfd'
+ 'bd2d4da78a65eec20dc32e21fd4fe134a2483b0bbe2dfb940d66755acc237975'
+ '5b65c0819be140e90ef11c9d7c3011d39aaa304e3fd9af0f8d61c6de618f93bf'
+ 'f37290530dcb8eb5acb4f70609c55b7e2be134f1052ebf20f117c2996a749858'
+ 'c288b0a1a2424967d9c00e4d07d16f5d703f6b9b1195839753480fcd9810faf5')
+
+case "${CARCH}" in
+ x86_64) _JARCH='x86_64';;
+ i686) _JARCH='x86';;
+esac
+
+_jvmdir=/usr/lib/jvm/java-${_majorver}-openj9
+_jdkdir=openj9-openjdk-jdk${_majorver}-openj9-${_openj9ver}
+_imgdir=${_jdkdir}/build/linux-${_JARCH}-server-release/images
+
+_nonheadless=(lib/libawt_xawt.{so,debuginfo}
+ lib/libjawt.{so,debuginfo}
+ lib/libjsound.{so,debuginfo}
+ lib/libsplashscreen.{so,debuginfo})
+
+prepare() {
+ cd ${_jdkdir}
+
+ ln -s ../openj9-openj9-${_openj9ver} openj9
+ ln -s ../openj9-omr-openj9-${_openj9ver} omr
+
+ patch -d openj9 -p1 -i $srcdir/openj9-make-jvmti-test-variables-static.patch
+ patch -d omr -p1 -i $srcdir/omr-omrstr-iconv-failure-overflow.patch
+ patch -d omr -p1 -i $srcdir/omr-fam.patch
+
+ sed -i -e '/^OPENJ9_SHA :=/s/:=.*/:= openj9-'${_openj9ver}/ \
+ -e '/^OPENJ9_TAG :=/s/:=.*/:= openj9-'${_openj9ver}/ \
+ -e '/^OPENJ9OMR_SHA :=/s/:=.*/:= openj9-'${_openj9ver}/ \
+ closed/OpenJ9.gmk
+}
+
+build() {
+ cd ${_jdkdir}
+
+ NUM_PROC_OPT=''
+ MAKEFLAG_J=$(echo ${MAKEFLAGS} | sed -En 's/.*-j([0-9]+).*/\1/p')
+ if [ -n "${MAKEFLAG_J}" ]; then
+ # http://hg.openjdk.java.net/jdk10/jdk10/file/85e6cb013b98/make/InitSupport.gmk#l105
+ echo "Removing '-j${MAKEFLAG_J}' from MAKEFLAGS to prevent build fail. Passing it directly to ./configure."
+ export MAKEFLAGS=${MAKEFLAGS/-j${MAKEFLAG_J}/}
+ NUM_PROC_OPT="--with-num-cores=${MAKEFLAG_J}"
+ fi
+
+ # Avoid optimization of HotSpot to be lowered from O3 to O2
+ local _CFLAGS="${CFLAGS//-O2/-O3} ${CPPFLAGS} -fcommon"
+ local _CXXFLAGS="${CXXFLAGS//-O2/-O3} ${CPPFLAGS} -fcommon"
+ local _LDFLAGS=${LDFLAGS}
+ if [[ ${CARCH} = i686 ]]; then
+ echo "Removing '-fno-plt' from CFLAGS and CXXFLAGS to prevent build fail with this architecture"
+ _CFLAGS=${CFLAGS/-fno-plt/}
+ _CXXFLAGS=${CXXFLAGS/-fno-plt/}
+ fi
+
+ # CFLAGS, CXXFLAGS and LDFLAGS are ignored as shown by a warning
+ # in the output of ./configure unless used like such:
+ # --with-extra-cflags="${CFLAGS}"
+ # --with-extra-cxxflags="${CXXFLAGS}"
+ # --with-extra-ldflags="${LDFLAGS}"
+ # See also paragraph "Configure Control Variables from "jdk${_majorver}-${_hg_tag}/common/doc/building.md
+ unset CFLAGS
+ unset CXXFLAGS
+ unset LDFLAGS
+
+ bash configure \
+ --with-version-build="${_updatever}" \
+ --with-version-pre="" \
+ --with-version-opt="" \
+ --with-stdc++lib=dynamic \
+ --with-extra-cflags="${_CFLAGS}" \
+ --with-extra-cxxflags="${_CXXFLAGS}" \
+ --with-extra-ldflags="${_LDFLAGS}" \
+ --with-libjpeg=system \
+ --with-giflib=system \
+ --with-libpng=system \
+ --with-lcms=system \
+ --with-zlib=system \
+ --with-jvm-features=zgc \
+ --enable-unlimited-crypto \
+ --disable-warnings-as-errors{,-omr,-openj9} \
+ --with-freemarker-jar=/usr/share/java/freemarker/freemarker.jar \
+ --disable-ddr \
+ ${NUM_PROC_OPT}
+ #--disable-javac-server
+
+ make images legacy-jre-image docs
+
+ # https://bugs.openjdk.java.net/browse/JDK-8173610
+ find "../${_imgdir}" -iname '*.so' -exec chmod +x {} \;
+}
+
+package_jre-openj9-headless() {
+ pkgdesc="OpenJDK Java ${_majorver} headless runtime environment"
+ depends=('java-runtime-common>=3' 'ca-certificates-utils' 'nss' 'libjpeg-turbo' 'lcms2' 'libnet' 'freetype2')
+ optdepends=('java-rhino: for some JavaScript support')
+ provides=("java-runtime-headless=${_majorver}" "java-runtime-headless-openj9=${_majorver}" "jre${_majorver}-openj9-headless=${pkgver}-${pkgrel}")
+ backup=(etc/${pkgbase}/logging.properties
+ etc/${pkgbase}/management/jmxremote.access
+ etc/${pkgbase}/management/jmxremote.password.template
+ etc/${pkgbase}/management/management.properties
+ etc/${pkgbase}/net.properties
+ etc/${pkgbase}/security/java.policy
+ etc/${pkgbase}/security/java.security
+ etc/${pkgbase}/security/policy/README.txt
+ etc/${pkgbase}/security/policy/limited/default_US_export.policy
+ etc/${pkgbase}/security/policy/limited/default_local.policy
+ etc/${pkgbase}/security/policy/limited/exempt_local.policy
+ etc/${pkgbase}/security/policy/unlimited/default_US_export.policy
+ etc/${pkgbase}/security/policy/unlimited/default_local.policy
+ etc/${pkgbase}/sound.properties)
+ install=install_jre-openj9-headless.sh
+
+ cd ${_imgdir}/jre
+
+ install -dm 755 "${pkgdir}${_jvmdir}"
+
+ cp -a bin lib \
+ "${pkgdir}${_jvmdir}"
+
+ for f in "${_nonheadless[@]}"; do
+ rm "${pkgdir}${_jvmdir}/${f}"
+ done
+
+ cp ../jdk/release "${pkgdir}${_jvmdir}"
+ cp ../jdk/lib/modules "${pkgdir}${_jvmdir}/lib"
+
+ # Conf
+ install -dm 755 "${pkgdir}/etc"
+ cp -r conf "${pkgdir}/etc/${pkgbase}"
+ ln -s /etc/${pkgbase} "${pkgdir}/${_jvmdir}/conf"
+
+ # Legal
+ install -dm 755 "${pkgdir}/usr/share/licenses"
+ cp -r legal "${pkgdir}/usr/share/licenses/${pkgbase}"
+ ln -s ${pkgbase} "${pkgdir}/usr/share/licenses/${pkgname}"
+ ln -s /usr/share/licenses/${pkgbase} "${pkgdir}/${_jvmdir}/legal"
+
+ # Man pages
+ for f in bin/*; do
+ f=$(basename "${f}")
+ _man=../jdk/man/man1/"${f}.1"
+ test -f "${_man}" && install -Dm 644 "${_man}" "${pkgdir}/usr/share/man/man1/${f}-openj9${_majorver}.1"
+ done
+ ln -s /usr/share/man "${pkgdir}/${_jvmdir}/man"
+
+ # Link JKS keystore from ca-certificates-utils
+ rm -f "${pkgdir}${_jvmdir}/lib/security/cacerts"
+ ln -sf /etc/ssl/certs/java/cacerts "${pkgdir}${_jvmdir}/lib/security/cacerts"
+}
+
+package_jre-openj9() {
+ pkgdesc="OpenJDK Java ${_majorver} full runtime environment"
+ depends=("jre${_majorver}-openj9-headless=${pkgver}-${pkgrel}" 'giflib')
+ optdepends=('alsa-lib: for basic sound support'
+ 'gtk2: for the Gtk+ 2 look and feel - desktop usage'
+ 'gtk3: for the Gtk+ 3 look and feel - desktop usage')
+ provides=("java-runtime=${_majorver}" "java-runtime-openj9=${_majorver}" "jre${_majorver}-openj9=${pkgver}-${pkgrel}")
+ install=install_jre-openj9.sh
+
+ cd ${_imgdir}/jre
+
+ install -dm 755 "${pkgdir}${_jvmdir}"
+
+ for f in "${_nonheadless[@]}"; do
+ install -Dm 644 ${f} "${pkgdir}${_jvmdir}/${f}"
+ done
+
+ # Licenses
+ install -dm 755 "${pkgdir}/usr/share/licenses"
+ ln -s ${pkgbase} "${pkgdir}/usr/share/licenses/${pkgname}"
+}
+
+package_jdk-openj9() {
+ pkgdesc="OpenJDK Java ${_majorver} development kit"
+ depends=("jre${_majorver}-openj9=${pkgver}-${pkgrel}" 'java-environment-common=3' 'hicolor-icon-theme' 'libelf')
+ provides=("java-environment=${_majorver}" "java-environment-openj9=${_majorver}" "jdk${_majorver}-openj9=${pkgver}-${pkgrel}")
+ install=install_jdk-openj9.sh
+
+ cd ${_imgdir}/jdk
+
+ install -dm 755 "${pkgdir}${_jvmdir}"
+
+ cp -a bin demo include jmods lib \
+ "${pkgdir}${_jvmdir}"
+
+ rm "${pkgdir}${_jvmdir}/lib/src.zip"
+
+ # Remove files held by JRE
+ pushd ../jre
+ for d in bin lib; do
+ find ${d} ! -type d -exec rm "${pkgdir}${_jvmdir}/{}" \;
+ done
+ popd
+ find "${pkgdir}${_jvmdir}/lib" -type d -empty -delete
+
+ # Conf files all belong to JRE
+
+ # Legal
+ install -dm 755 "${pkgdir}/usr/share/licenses"
+ cp -r legal "${pkgdir}/usr/share/licenses/${pkgbase}"
+ pushd ../jre/legal
+ find . ! -type d -exec rm "${pkgdir}/usr/share/licenses/${pkgbase}/{}" \;
+ popd
+ find "${pkgdir}/usr/share/licenses" -type d -empty -delete
+ ln -s ${pkgbase} "${pkgdir}/usr/share/licenses/${pkgname}"
+
+ # Man pages
+ for f in bin/*; do
+ f=$(basename "${f}")
+ _man=man/man1/"${f}.1"
+ test -f "../jre/bin/${f}" && continue
+ test -f "${_man}" && install -Dm 644 "${_man}" "${pkgdir}/usr/share/man/man1/${f}-openj9${_majorver}.1"
+ done
+
+ # Icons
+ for s in 16 24 32 48; do
+ install -Dm 644 \
+ "${srcdir}/${_jdkdir}/src/java.desktop/unix/classes/sun/awt/X11/java-icon${s}.png" \
+ "${pkgdir}/usr/share/icons/hicolor/${s}x${s}/apps/${pkgbase}.png"
+ done
+
+ # Desktop files
+ for f in jconsole java jshell; do
+ install -Dm 644 \
+ "${srcdir}/freedesktop-${f}.desktop" \
+ "${pkgdir}/usr/share/applications/${f}-${pkgbase}.desktop"
+ done
+}
+
+package_openj9-src() {
+ pkgdesc="OpenJDK Java ${_majorver} sources"
+ # Depends on JDK to get license files
+ depends=("jdk${_majorver}-openj9=${pkgver}-${pkgrel}")
+ provides=("openj9${_majorver}-src=${pkgver}-${pkgrel}")
+
+ install -Dm 644 -t "${pkgdir}${_jvmdir}/lib" ${_imgdir}/jdk/lib/src.zip
+
+ install -dm 755 "${pkgdir}/usr/share/licenses"
+ ln -s ${pkgbase} "${pkgdir}/usr/share/licenses/${pkgname}"
+}
+
+package_openj9-doc() {
+ pkgdesc="OpenJDK Java ${_majorver} documentation"
+ # Depends on JDK to get license files
+ depends=("jdk${_majorver}-openj9=${pkgver}-${pkgrel}")
+ provides=("openj9${_majorver}-doc=${pkgver}-${pkgrel}")
+
+ install -dm 755 "${pkgdir}/usr/share/doc"
+ cp -r ${_imgdir}/docs "${pkgdir}/usr/share/doc/${pkgbase}"
+
+ install -dm 755 "${pkgdir}/usr/share/licenses"
+ ln -s ${pkgbase} "${pkgdir}/usr/share/licenses/${pkgname}"
+}
+
+# vim: ts=2 sw=2 et:
diff --git a/freedesktop-java.desktop b/freedesktop-java.desktop
new file mode 100644
index 000000000000..942279b61c3b
--- /dev/null
+++ b/freedesktop-java.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Name=OpenJDK Java 14 with OpenJ9 Runtime
+Comment=OpenJDK Java 14 with OpenJ9 Runtime
+Keywords=java;runtime
+Exec=/usr/lib/jvm/java-14-openj9/bin/java -jar
+Terminal=false
+Type=Application
+Icon=java14-openj9
+MimeType=application/x-java-archive;application/java-archive;application/x-jar;
+NoDisplay=true
diff --git a/freedesktop-jconsole.desktop b/freedesktop-jconsole.desktop
new file mode 100644
index 000000000000..6351310866fb
--- /dev/null
+++ b/freedesktop-jconsole.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=OpenJDK Java 14 with OpenJ9 Console
+Comment=OpenJDK Java 14 with OpenJ9 Monitoring & Management Console
+Keywords=java;console;monitoring
+Exec=/usr/lib/jvm/java-14-openj9/bin/jconsole
+Terminal=false
+Type=Application
+Icon=java14-openj9
+Categories=Application;System;
diff --git a/freedesktop-jshell.desktop b/freedesktop-jshell.desktop
new file mode 100644
index 000000000000..d73ffe418dce
--- /dev/null
+++ b/freedesktop-jshell.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=OpenJDK Java 14 with OpenJ9 Shell
+Comment=OpenJDK Java 14 with OpenJ9 Shell
+Keywords=java;shell
+Exec=/usr/lib/jvm/java-14-openj9/bin/jshell
+Terminal=true
+Type=Application
+Icon=java14-openj9
+Categories=Application;System;
diff --git a/install_jdk-openj9.sh b/install_jdk-openj9.sh
new file mode 100644
index 000000000000..113a17b78ea8
--- /dev/null
+++ b/install_jdk-openj9.sh
@@ -0,0 +1,50 @@
+THIS_JDK='java-14-openj9'
+
+fix_default() {
+ if [ ! -x /usr/bin/java ]; then
+ /usr/bin/archlinux-java unset
+ echo ""
+ else
+ /usr/bin/archlinux-java get
+ fi
+}
+
+post_install() {
+ default=$(fix_default)
+ case ${default} in
+ "")
+ /usr/bin/archlinux-java set ${THIS_JDK}
+ ;;
+ ${THIS_JDK})
+ # Nothing
+ ;;
+ *)
+ echo "Default Java environment is already set to '${default}'"
+ echo "See 'archlinux-java help' to change it"
+ ;;
+ esac
+
+ if [ ! -f /etc/ssl/certs/java/cacerts ]; then
+ /usr/bin/update-ca-trust
+ fi
+}
+
+post_upgrade() {
+ default=$(fix_default)
+ if [ -z "${default}" ]; then
+ /usr/bin/archlinux-java set ${THIS_JDK}
+ fi
+
+ if [ ! -f /etc/ssl/certs/java/cacerts ]; then
+ /usr/bin/update-ca-trust
+ fi
+}
+
+pre_remove() {
+ if [ "x$(fix_default)" = "x${THIS_JDK}" ]; then
+ # Check JRE is still available
+ if [ -x /usr/lib/jvm/${THIS_JDK}/bin/java ]; then
+ /usr/bin/archlinux-java unset
+ fi
+ fi
+}
diff --git a/install_jre-openj9-headless.sh b/install_jre-openj9-headless.sh
new file mode 100644
index 000000000000..d60bb04d7d37
--- /dev/null
+++ b/install_jre-openj9-headless.sh
@@ -0,0 +1,48 @@
+THIS_JRE='java-14-openj9'
+
+fix_default() {
+ if [ ! -x /usr/bin/java ]; then
+ /usr/bin/archlinux-java unset
+ echo ""
+ else
+ /usr/bin/archlinux-java get
+ fi
+}
+
+post_install() {
+ default=$(fix_default)
+ case ${default} in
+ "")
+ /usr/bin/archlinux-java set ${THIS_JRE}
+ ;;
+ ${THIS_JRE})
+ # Nothing
+ ;;
+ *)
+ echo "Default Java environment is already set to '${default}'"
+ echo "See 'archlinux-java help' to change it"
+ ;;
+ esac
+
+ if [ ! -f /etc/ssl/certs/java/cacerts ]; then
+ /usr/bin/update-ca-trust
+ fi
+}
+
+post_upgrade() {
+ if [ -z "$(fix_default)" ]; then
+ /usr/bin/archlinux-java set ${THIS_JRE}
+ fi
+
+ if [ ! -f /etc/ssl/certs/java/cacerts ]; then
+ /usr/bin/update-ca-trust
+ fi
+}
+
+pre_remove() {
+ default=$(fix_default)
+ if [ "x${default}" = "x${THIS_JRE}" ]; then
+ /usr/bin/archlinux-java unset
+ echo "No Java environment is set as default anymore"
+ fi
+}
diff --git a/install_jre-openj9.sh b/install_jre-openj9.sh
new file mode 100644
index 000000000000..465082f6370b
--- /dev/null
+++ b/install_jre-openj9.sh
@@ -0,0 +1,35 @@
+THIS_JRE='java-14-openj9'
+
+fix_default() {
+ if [ ! -x /usr/bin/java ]; then
+ /usr/bin/archlinux-java unset
+ echo ""
+ else
+ /usr/bin/archlinux-java get
+ fi
+}
+
+post_install() {
+ default=$(fix_default)
+ case ${default} in
+ "")
+ /usr/bin/archlinux-java set ${THIS_JRE}
+ ;;
+ ${THIS_JRE})
+ # Nothing
+ ;;
+ *)
+ echo "Default Java environment is already set to '${default}'"
+ echo "See 'archlinux-java help' to change it"
+ ;;
+ esac
+
+ echo "when you use a non-reparenting window manager,"
+ echo "set _JAVA_AWT_WM_NONREPARENTING=1 in /etc/profile.d/jre.sh"
+}
+
+post_upgrade() {
+ if [ -z "$(fix_default)" ]; then
+ /usr/bin/archlinux-java set ${THIS_JRE}
+ fi
+}
diff --git a/omr-fam.patch b/omr-fam.patch
new file mode 100644
index 000000000000..9141ec17c68c
--- /dev/null
+++ b/omr-fam.patch
@@ -0,0 +1,70 @@
+diff --git a/ddr/tools/blob_reader/blob_reader.cpp b/ddr/tools/blob_reader/blob_reader.cpp
+index 028decd0c..a0212609f 100644
+--- a/ddr/tools/blob_reader/blob_reader.cpp
++++ b/ddr/tools/blob_reader/blob_reader.cpp
+@@ -85,7 +85,7 @@ struct BlobHeaderV1 {
+
+ struct BlobString {
+ uint16_t length;
+- char data[1]; /* flexible array member */
++ char data[];
+
+ void endian_swap()
+ {
+diff --git a/include_core/ute_core.h b/include_core/ute_core.h
+index 8b3b1c65d..330ea52c6 100644
+--- a/include_core/ute_core.h
++++ b/include_core/ute_core.h
+@@ -125,7 +125,7 @@ typedef struct UtTraceRecord {
+ uint64_t threadSyn2; /* Thread synonym 2 */
+ int32_t firstEntry; /* Offset to first trace entry */
+ int32_t nextEntry; /* Offset to next entry */
+- char threadName[1]; /* Thread name */
++ char threadName[]; /* Thread name */
+ } UtTraceRecord;
+
+ /*
+diff --git a/include_core/ute_dataformat.h b/include_core/ute_dataformat.h
+index 71d9e36ad..8a9dcb487 100644
+--- a/include_core/ute_dataformat.h
++++ b/include_core/ute_dataformat.h
+@@ -180,7 +180,7 @@ typedef struct UtProcSection {
+ #define UT_TRACE_ACTIVE_SECTION_NAME "UTTA"
+ typedef struct UtActiveSection {
+ UtDataHeader header; /* Eyecatcher, version etc */
+- char active[1]; /* Trace activation commands */
++ char active[]; /* Trace activation commands */
+ } UtActiveSection;
+
+ /*
+@@ -191,7 +191,7 @@ typedef struct UtActiveSection {
+ #define UT_TRACE_SERVICE_SECTION_NAME "UTSS"
+ typedef struct UtServiceSection {
+ UtDataHeader header; /* Eyecatcher, version etc */
+- char level[1]; /* Service level info */
++ char level[]; /* Service level info */
+ } UtServiceSection;
+
+ /*
+@@ -202,7 +202,7 @@ typedef struct UtServiceSection {
+ #define UT_TRACE_STARTUP_SECTION_NAME "UTSO"
+ typedef struct UtStartupSection {
+ UtDataHeader header; /* Eyecatcher, version etc */
+- char options[1]; /* Startup options */
++ char options[]; /* Startup options */
+ } UtStartupSection;
+
+ /*
+diff --git a/omrtrace/omrtrace_internal.h b/omrtrace/omrtrace_internal.h
+index e52347eac..a68a88abd 100644
+--- a/omrtrace/omrtrace_internal.h
++++ b/omrtrace/omrtrace_internal.h
+@@ -157,7 +157,7 @@ typedef struct OMR_TraceGlobal OMR_TraceGlobal;
+ typedef struct UtTraceCfg {
+ UtDataHeader header;
+ struct UtTraceCfg *next; /* Next trace config command */
+- char command[1]; /* Start of variable length section */
++ char command[]; /* Start of variable length section */
+ } UtTraceCfg;
+
+ typedef struct UtDeferredConfigInfo {
diff --git a/omr-omrstr-iconv-failure-overflow.patch b/omr-omrstr-iconv-failure-overflow.patch
new file mode 100644
index 000000000000..f90c431c98af
--- /dev/null
+++ b/omr-omrstr-iconv-failure-overflow.patch
@@ -0,0 +1,13 @@
+diff --git a/port/common/omrstr.c b/port/common/omrstr.c
+index ad76cdf93..f936f0026 100644
+--- a/port/common/omrstr.c
++++ b/port/common/omrstr.c
+@@ -3121,7 +3121,7 @@ convertPlatformToWide(struct OMRPortLibrary *portLibrary, charconvState_t encodi
+ } else if (E2BIG == errno) {
+ resultSize = (outBufferSize - wideBufferLimit); /* number of bytes written */
+ } else {
+- resultSize = OMRPORT_ERROR_STRING_ILLEGAL_STRING;
++ return OMRPORT_ERROR_STRING_ILLEGAL_STRING;
+ }
+ } else {
+ resultSize = (outBufferSize - wideBufferLimit); /* number of bytes written */
diff --git a/openj9-j9utf8-fam.patch b/openj9-j9utf8-fam.patch
new file mode 100644
index 000000000000..f45a5394ddf0
--- /dev/null
+++ b/openj9-j9utf8-fam.patch
@@ -0,0 +1,26 @@
+diff --git a/runtime/cfdumper/romdump.c b/runtime/cfdumper/romdump.c
+index 5040c2c25..1cfcd36c7 100644
+--- a/runtime/cfdumper/romdump.c
++++ b/runtime/cfdumper/romdump.c
+@@ -154,7 +154,7 @@ addRegion(J9Pool *regionPool, UDATA offset, UDATA length, UDATA type, const char
+ static UDATA
+ getUTF8Length(J9UTF8 *utf8)
+ {
+- UDATA length = sizeof(J9UTF8) + J9UTF8_LENGTH(utf8) - sizeof(J9UTF8_DATA(utf8));
++ UDATA length = sizeof(J9UTF8) + J9UTF8_LENGTH(utf8);
+ if (length & 1) {
+ length++;
+ }
+diff --git a/runtime/oti/j9nonbuilder.h b/runtime/oti/j9nonbuilder.h
+index c5705188d..e9babe227 100644
+--- a/runtime/oti/j9nonbuilder.h
++++ b/runtime/oti/j9nonbuilder.h
+@@ -3219,7 +3219,7 @@ typedef struct J9ClassLoader {
+
+ typedef struct J9UTF8 {
+ U_16 length;
+- U_8 data[2];
++ U_8 data[];
+ } J9UTF8;
+
+ typedef struct J9ROMClass {
diff --git a/openj9-make-jvmti-test-variables-static.patch b/openj9-make-jvmti-test-variables-static.patch
new file mode 100644
index 000000000000..5d5b8a7fed61
--- /dev/null
+++ b/openj9-make-jvmti-test-variables-static.patch
@@ -0,0 +1,68 @@
+From b91f42fc90179585c3e2a9866e93a3168b1ada9d Mon Sep 17 00:00:00 2001
+From: Graham Chapman <graham_chapman@ca.ibm.com>
+Date: Sat, 25 Jul 2020 16:13:13 -0400
+Subject: [PATCH] Make JVMTI test variables static
+
+Two tests declare the same named global non-statically which breaks some
+newer compilers.
+
+Fixes: #10252
+
+[ci skip]
+
+Signed-off-by: Graham Chapman <graham_chapman@ca.ibm.com>
+---
+ .../src/com/ibm/jvmti/tests/traceSubscription/ts001.c | 4 ++--
+ .../jvmtitests/src/com/ibm/jvmti/tests/verboseGC/vgc001.c | 8 ++++----
+ 2 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/runtime/tests/jvmtitests/src/com/ibm/jvmti/tests/traceSubscription/ts001.c b/runtime/tests/jvmtitests/src/com/ibm/jvmti/tests/traceSubscription/ts001.c
+index 97843fc7c7..2c1e1ae67f 100644
+--- a/runtime/tests/jvmtitests/src/com/ibm/jvmti/tests/traceSubscription/ts001.c
++++ b/runtime/tests/jvmtitests/src/com/ibm/jvmti/tests/traceSubscription/ts001.c
+@@ -1,5 +1,5 @@
+ /*******************************************************************************
+- * Copyright (c) 2001, 2018 IBM Corp. and others
++ * Copyright (c) 2001, 2020 IBM Corp. and others
+ *
+ * This program and the accompanying materials are made available under
+ * the terms of the Eclipse Public License 2.0 which accompanies this
+@@ -35,7 +35,7 @@ static jvmtiExtensionFunction subscribe = NULL;
+ static jvmtiExtensionFunction unsubscribe = NULL;
+ static jvmtiExtensionFunction flush = NULL;
+ static jvmtiExtensionFunction metadata = NULL;
+-void *subscriptionID;
++static void *subscriptionID;
+ volatile static jint bufferCount = 0;
+ volatile static jint bufferCountFinal = 0;
+ volatile static int completed = 0;
+diff --git a/runtime/tests/jvmtitests/src/com/ibm/jvmti/tests/verboseGC/vgc001.c b/runtime/tests/jvmtitests/src/com/ibm/jvmti/tests/verboseGC/vgc001.c
+index 2fda9e8bd7..f1601298af 100644
+--- a/runtime/tests/jvmtitests/src/com/ibm/jvmti/tests/verboseGC/vgc001.c
++++ b/runtime/tests/jvmtitests/src/com/ibm/jvmti/tests/verboseGC/vgc001.c
+@@ -1,5 +1,5 @@
+ /*******************************************************************************
+- * Copyright (c) 2001, 2018 IBM Corp. and others
++ * Copyright (c) 2001, 2020 IBM Corp. and others
+ *
+ * This program and the accompanying materials are made available under
+ * the terms of the Eclipse Public License 2.0 which accompanies this
+@@ -31,15 +31,15 @@ static agentEnv * env;
+ static jvmtiExtensionFunction subscribe = NULL;
+ static jvmtiExtensionFunction unsubscribe = NULL;
+
+-void *subscriptionID;
++static void *subscriptionID;
+ volatile static jint bufferCount = 0;
+ volatile static int alarmed = 0;
+
+-void *subscriptionID2;
++static void *subscriptionID2;
+ volatile static jint bufferCount2 = 0;
+ volatile static int alarmed2 = 0;
+
+-void *subscriptionID3;
++static void *subscriptionID3;
+ volatile static jint bufferCount3 = 0;
+ volatile static int alarmed3 = 0;
+
diff --git a/openj9-subscriptionID.patch b/openj9-subscriptionID.patch
new file mode 100644
index 000000000000..e754e055f16f
--- /dev/null
+++ b/openj9-subscriptionID.patch
@@ -0,0 +1,36 @@
+diff --git a/runtime/tests/jvmtitests/src/com/ibm/jvmti/tests/traceSubscription/ts001.c b/runtime/tests/jvmtitests/src/com/ibm/jvmti/tests/traceSubscription/ts001.c
+index 97843fc7c..a2cc3ffe6 100644
+--- a/runtime/tests/jvmtitests/src/com/ibm/jvmti/tests/traceSubscription/ts001.c
++++ b/runtime/tests/jvmtitests/src/com/ibm/jvmti/tests/traceSubscription/ts001.c
+@@ -35,7 +35,7 @@ static jvmtiExtensionFunction subscribe = NULL;
+ static jvmtiExtensionFunction unsubscribe = NULL;
+ static jvmtiExtensionFunction flush = NULL;
+ static jvmtiExtensionFunction metadata = NULL;
+-void *subscriptionID;
++static void *subscriptionID;
+ volatile static jint bufferCount = 0;
+ volatile static jint bufferCountFinal = 0;
+ volatile static int completed = 0;
+diff --git a/runtime/tests/jvmtitests/src/com/ibm/jvmti/tests/verboseGC/vgc001.c b/runtime/tests/jvmtitests/src/com/ibm/jvmti/tests/verboseGC/vgc001.c
+index 2fda9e8bd..d11047e44 100644
+--- a/runtime/tests/jvmtitests/src/com/ibm/jvmti/tests/verboseGC/vgc001.c
++++ b/runtime/tests/jvmtitests/src/com/ibm/jvmti/tests/verboseGC/vgc001.c
+@@ -31,15 +31,15 @@ static agentEnv * env;
+ static jvmtiExtensionFunction subscribe = NULL;
+ static jvmtiExtensionFunction unsubscribe = NULL;
+
+-void *subscriptionID;
++static void *subscriptionID;
+ volatile static jint bufferCount = 0;
+ volatile static int alarmed = 0;
+
+-void *subscriptionID2;
++static void *subscriptionID2;
+ volatile static jint bufferCount2 = 0;
+ volatile static int alarmed2 = 0;
+
+-void *subscriptionID3;
++static void *subscriptionID3;
+ volatile static jint bufferCount3 = 0;
+ volatile static int alarmed3 = 0;
+
diff --git a/openjdk-8238380-childproc-fcommon.patch b/openjdk-8238380-childproc-fcommon.patch
new file mode 100644
index 000000000000..a972bc66c96b
--- /dev/null
+++ b/openjdk-8238380-childproc-fcommon.patch
@@ -0,0 +1,48 @@
+
+# HG changeset patch
+# User qpzhang
+# Date 1580822830 -28800
+# Node ID 6925fca959590dd0f747a9cffa5f0664ec02c7b1
+# Parent 8f6ffa575f63db3f07f96e52c97883fbaff459b4
+8238380: java.base/unix/native/libjava/childproc.c "multiple definition" link errors with GCC10
+Reviewed-by: stuefe, clanger, rriggs
+Contributed-by: patrick@os.amperecomputing.com
+
+diff -r 8f6ffa575f63 -r 6925fca95959 src/java.base/unix/native/libjava/childproc.c
+--- a/src/java.base/unix/native/libjava/childproc.c Tue Feb 11 11:17:37 2020 +0800
++++ b/src/java.base/unix/native/libjava/childproc.c Tue Feb 04 21:27:10 2020 +0800
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2013, 2019, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -34,6 +34,7 @@
+
+ #include "childproc.h"
+
++const char * const *parentPathv;
+
+ ssize_t
+ restartableWrite(int fd, const void *buf, size_t count)
+diff -r 8f6ffa575f63 -r 6925fca95959 src/java.base/unix/native/libjava/childproc.h
+--- a/src/java.base/unix/native/libjava/childproc.h Tue Feb 11 11:17:37 2020 +0800
++++ b/src/java.base/unix/native/libjava/childproc.h Tue Feb 04 21:27:10 2020 +0800
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -126,7 +126,7 @@
+ * The cached and split version of the JDK's effective PATH.
+ * (We don't support putenv("PATH=...") in native code)
+ */
+-const char * const *parentPathv;
++extern const char * const *parentPathv;
+
+ ssize_t restartableWrite(int fd, const void *buf, size_t count);
+ int restartableDup2(int fd_from, int fd_to);
+