From dc42fe23d293468d836c8ee132aa76b5e82a353b Mon Sep 17 00:00:00 2001 From: Andreas Ahlenstorf Date: Thu, 18 Apr 2019 15:30:15 +0200 Subject: [PATCH] Build Linux Packages (#79) * Build deb packages of AdoptOpenJDK * Build RPM packages * Place link to lib/src.zip in Debian packages --- .gitignore | 14 + linux/.editorconfig | 11 + linux/README.md | 138 +++++ linux/build.gradle | 94 ++++ linux/buildSrc/build.gradle | 7 + .../installer/AbstractBuildLinuxPackage.java | 491 ++++++++++++++++++ .../installer/BuildDebianPackage.java | 214 ++++++++ .../installer/BuildRpmPackage.java | 102 ++++ linux/deb/build.gradle | 28 + .../config/jdk-10-hotspot/dependencies.txt | 11 + linux/deb/config/jdk-10-hotspot/provides.txt | 17 + linux/deb/config/jdk-10-hotspot/tools.txt | 42 ++ .../deb/config/jdk-10-openj9/dependencies.txt | 11 + linux/deb/config/jdk-10-openj9/provides.txt | 17 + linux/deb/config/jdk-10-openj9/tools.txt | 41 ++ .../config/jdk-11-hotspot/dependencies.txt | 11 + linux/deb/config/jdk-11-hotspot/provides.txt | 19 + linux/deb/config/jdk-11-hotspot/tools.txt | 33 ++ .../deb/config/jdk-11-openj9/dependencies.txt | 11 + linux/deb/config/jdk-11-openj9/provides.txt | 19 + linux/deb/config/jdk-11-openj9/tools.txt | 27 + .../config/jdk-12-hotspot/dependencies.txt | 11 + linux/deb/config/jdk-12-hotspot/provides.txt | 21 + linux/deb/config/jdk-12-hotspot/tools.txt | 35 ++ .../deb/config/jdk-12-openj9/dependencies.txt | 9 + linux/deb/config/jdk-12-openj9/provides.txt | 21 + linux/deb/config/jdk-12-openj9/tools.txt | 30 ++ .../deb/config/jdk-8-hotspot/dependencies.txt | 11 + linux/deb/config/jdk-8-hotspot/provides.txt | 13 + linux/deb/config/jdk-8-hotspot/tools.txt | 41 ++ .../deb/config/jdk-8-openj9/dependencies.txt | 12 + linux/deb/config/jdk-8-openj9/provides.txt | 13 + linux/deb/config/jdk-8-openj9/tools.txt | 36 ++ .../deb/config/jdk-9-hotspot/dependencies.txt | 12 + linux/deb/config/jdk-9-hotspot/provides.txt | 15 + linux/deb/config/jdk-9-hotspot/tools.txt | 44 ++ .../deb/config/jdk-9-openj9/dependencies.txt | 11 + linux/deb/config/jdk-9-openj9/provides.txt | 15 + linux/deb/config/jdk-9-openj9/tools.txt | 38 ++ linux/deb/config/jinfo | 8 + linux/deb/config/postinst.sh | 33 ++ linux/deb/config/prerm.sh | 18 + linux/find_tools.sh | 9 + linux/gradle.properties | 1 + linux/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 55190 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + linux/gradlew | 172 ++++++ linux/gradlew.bat | 84 +++ linux/required_libs.sh | 14 + linux/rpm/build.gradle | 52 ++ .../config/jdk-10-hotspot/dependencies.txt | 15 + linux/rpm/config/jdk-10-hotspot/postinst.sh | 79 +++ linux/rpm/config/jdk-10-hotspot/provides.txt | 8 + .../rpm/config/jdk-10-openj9/dependencies.txt | 17 + linux/rpm/config/jdk-10-openj9/postinst.sh | 78 +++ linux/rpm/config/jdk-10-openj9/provides.txt | 8 + .../config/jdk-11-hotspot/dependencies.txt | 15 + linux/rpm/config/jdk-11-hotspot/postinst.sh | 61 +++ linux/rpm/config/jdk-11-hotspot/provides.txt | 8 + .../rpm/config/jdk-11-openj9/dependencies.txt | 16 + linux/rpm/config/jdk-11-openj9/postinst.sh | 48 ++ linux/rpm/config/jdk-11-openj9/provides.txt | 8 + .../config/jdk-12-hotspot/dependencies.txt | 15 + linux/rpm/config/jdk-12-hotspot/postinst.sh | 63 +++ linux/rpm/config/jdk-12-hotspot/provides.txt | 8 + .../rpm/config/jdk-12-openj9/dependencies.txt | 15 + linux/rpm/config/jdk-12-openj9/postinst.sh | 52 ++ linux/rpm/config/jdk-12-openj9/provides.txt | 8 + .../rpm/config/jdk-8-hotspot/dependencies.txt | 16 + linux/rpm/config/jdk-8-hotspot/postinst.sh | 84 +++ linux/rpm/config/jdk-8-hotspot/provides.txt | 8 + .../rpm/config/jdk-8-openj9/dependencies.txt | 17 + linux/rpm/config/jdk-8-openj9/postinst.sh | 71 +++ linux/rpm/config/jdk-8-openj9/provides.txt | 8 + .../rpm/config/jdk-9-hotspot/dependencies.txt | 17 + linux/rpm/config/jdk-9-hotspot/postinst.sh | 83 +++ linux/rpm/config/jdk-9-hotspot/provides.txt | 8 + .../rpm/config/jdk-9-openj9/dependencies.txt | 17 + linux/rpm/config/jdk-9-openj9/postinst.sh | 70 +++ linux/rpm/config/jdk-9-openj9/provides.txt | 8 + linux/rpm/config/prerm.sh | 4 + linux/settings.gradle | 1 + 82 files changed, 3076 insertions(+) create mode 100644 linux/.editorconfig create mode 100644 linux/README.md create mode 100644 linux/build.gradle create mode 100644 linux/buildSrc/build.gradle create mode 100644 linux/buildSrc/src/main/java/net/adoptopenjdk/installer/AbstractBuildLinuxPackage.java create mode 100644 linux/buildSrc/src/main/java/net/adoptopenjdk/installer/BuildDebianPackage.java create mode 100644 linux/buildSrc/src/main/java/net/adoptopenjdk/installer/BuildRpmPackage.java create mode 100644 linux/deb/build.gradle create mode 100644 linux/deb/config/jdk-10-hotspot/dependencies.txt create mode 100644 linux/deb/config/jdk-10-hotspot/provides.txt create mode 100644 linux/deb/config/jdk-10-hotspot/tools.txt create mode 100644 linux/deb/config/jdk-10-openj9/dependencies.txt create mode 100644 linux/deb/config/jdk-10-openj9/provides.txt create mode 100644 linux/deb/config/jdk-10-openj9/tools.txt create mode 100644 linux/deb/config/jdk-11-hotspot/dependencies.txt create mode 100644 linux/deb/config/jdk-11-hotspot/provides.txt create mode 100644 linux/deb/config/jdk-11-hotspot/tools.txt create mode 100644 linux/deb/config/jdk-11-openj9/dependencies.txt create mode 100644 linux/deb/config/jdk-11-openj9/provides.txt create mode 100644 linux/deb/config/jdk-11-openj9/tools.txt create mode 100644 linux/deb/config/jdk-12-hotspot/dependencies.txt create mode 100644 linux/deb/config/jdk-12-hotspot/provides.txt create mode 100644 linux/deb/config/jdk-12-hotspot/tools.txt create mode 100644 linux/deb/config/jdk-12-openj9/dependencies.txt create mode 100644 linux/deb/config/jdk-12-openj9/provides.txt create mode 100644 linux/deb/config/jdk-12-openj9/tools.txt create mode 100644 linux/deb/config/jdk-8-hotspot/dependencies.txt create mode 100644 linux/deb/config/jdk-8-hotspot/provides.txt create mode 100644 linux/deb/config/jdk-8-hotspot/tools.txt create mode 100644 linux/deb/config/jdk-8-openj9/dependencies.txt create mode 100644 linux/deb/config/jdk-8-openj9/provides.txt create mode 100644 linux/deb/config/jdk-8-openj9/tools.txt create mode 100644 linux/deb/config/jdk-9-hotspot/dependencies.txt create mode 100644 linux/deb/config/jdk-9-hotspot/provides.txt create mode 100644 linux/deb/config/jdk-9-hotspot/tools.txt create mode 100644 linux/deb/config/jdk-9-openj9/dependencies.txt create mode 100644 linux/deb/config/jdk-9-openj9/provides.txt create mode 100644 linux/deb/config/jdk-9-openj9/tools.txt create mode 100644 linux/deb/config/jinfo create mode 100755 linux/deb/config/postinst.sh create mode 100755 linux/deb/config/prerm.sh create mode 100755 linux/find_tools.sh create mode 100644 linux/gradle.properties create mode 100644 linux/gradle/wrapper/gradle-wrapper.jar create mode 100644 linux/gradle/wrapper/gradle-wrapper.properties create mode 100755 linux/gradlew create mode 100644 linux/gradlew.bat create mode 100755 linux/required_libs.sh create mode 100644 linux/rpm/build.gradle create mode 100644 linux/rpm/config/jdk-10-hotspot/dependencies.txt create mode 100644 linux/rpm/config/jdk-10-hotspot/postinst.sh create mode 100644 linux/rpm/config/jdk-10-hotspot/provides.txt create mode 100644 linux/rpm/config/jdk-10-openj9/dependencies.txt create mode 100644 linux/rpm/config/jdk-10-openj9/postinst.sh create mode 100644 linux/rpm/config/jdk-10-openj9/provides.txt create mode 100644 linux/rpm/config/jdk-11-hotspot/dependencies.txt create mode 100644 linux/rpm/config/jdk-11-hotspot/postinst.sh create mode 100644 linux/rpm/config/jdk-11-hotspot/provides.txt create mode 100644 linux/rpm/config/jdk-11-openj9/dependencies.txt create mode 100644 linux/rpm/config/jdk-11-openj9/postinst.sh create mode 100644 linux/rpm/config/jdk-11-openj9/provides.txt create mode 100644 linux/rpm/config/jdk-12-hotspot/dependencies.txt create mode 100644 linux/rpm/config/jdk-12-hotspot/postinst.sh create mode 100644 linux/rpm/config/jdk-12-hotspot/provides.txt create mode 100644 linux/rpm/config/jdk-12-openj9/dependencies.txt create mode 100644 linux/rpm/config/jdk-12-openj9/postinst.sh create mode 100644 linux/rpm/config/jdk-12-openj9/provides.txt create mode 100644 linux/rpm/config/jdk-8-hotspot/dependencies.txt create mode 100644 linux/rpm/config/jdk-8-hotspot/postinst.sh create mode 100644 linux/rpm/config/jdk-8-hotspot/provides.txt create mode 100644 linux/rpm/config/jdk-8-openj9/dependencies.txt create mode 100644 linux/rpm/config/jdk-8-openj9/postinst.sh create mode 100644 linux/rpm/config/jdk-8-openj9/provides.txt create mode 100644 linux/rpm/config/jdk-9-hotspot/dependencies.txt create mode 100644 linux/rpm/config/jdk-9-hotspot/postinst.sh create mode 100644 linux/rpm/config/jdk-9-hotspot/provides.txt create mode 100644 linux/rpm/config/jdk-9-openj9/dependencies.txt create mode 100644 linux/rpm/config/jdk-9-openj9/postinst.sh create mode 100644 linux/rpm/config/jdk-9-openj9/provides.txt create mode 100644 linux/rpm/config/prerm.sh create mode 100644 linux/settings.gradle diff --git a/.gitignore b/.gitignore index 9557c5158..eb65e6720 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,17 @@ linux_x64/ aix/ linux_s390x/ linux_ppc64le/ + +# Ignore build outputs, temporary directories +build +.gradle + +# Ignore Finder, Explorer files +Thumbs.db +.DS_Store +._* + +# Ignore IDE files +.idea +*.iml + diff --git a/linux/.editorconfig b/linux/.editorconfig new file mode 100644 index 000000000..c3be68e9c --- /dev/null +++ b/linux/.editorconfig @@ -0,0 +1,11 @@ +root = true + +[*] +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +indent_style = space + +[*.gradle] +indent_size = 4 diff --git a/linux/README.md b/linux/README.md new file mode 100644 index 000000000..6c0d8a8a2 --- /dev/null +++ b/linux/README.md @@ -0,0 +1,138 @@ +# Packaging AdoptOpenJDK for Linux + +## Prerequisites + +Note: Linux packages can be created on any Linux distribution and macOS and on any CPU architecture. The package manager which the packages are going to be built for is not required to be present. + +### Linux + +* [fpm](https://fpm.readthedocs.io/en/latest/installing.html) +* JDK 11 or newer +* Ruby +* RubyGems +* rpmbuild + +### macOS + +* [fpm](https://fpm.readthedocs.io/en/latest/installing.html) +* JDK 11 or newer +* Ruby +* RubyGems +* gnutar +* rpmbuild + +## Packaging + +It is possible to simultaneously build Debian and RPM packages by using `./gradlew build` and specifying all properties (`-P`) that required by all package formats. + +### Deb packages + +Deb packages for Debian and Ubuntu (see section *Support Matrix* below for supported combinations) can be packaged with the help of Gradle and fpm: + +``` +./gradlew buildDebPackage \ + -PJDK_DISTRIBUTION_DIR=/path/to/jdk \ + -PJDK_MAJOR_VERSION= \ + -PJDK_VERSION= \ + -PJDK_VM= \ + -PJDK_ARCHITECTURE= \ + -PDEB_JINFO_PRIORITY= +``` + +`JDK_DISTRIBUTION_DIR` must point to a directory with a binary distribution of AdoptOpenJDK (for example an expanded tarball downloaded from https://adoptopenjdk.net/). + +Example: + +``` +./gradlew buildDebPackage \ + -PJDK_DISTRIBUTION_DIR=/path/to/jdk-11.0.2+9 \ + -PJDK_MAJOR_VERSION=11 \ + -PJDK_VERSION="11.0.2+9" \ + -PJDK_VM=hotspot \ + -PJDK_ARCHITECTURE=amd64 \ + -PDEB_JINFO_PRIORITY=1101 +``` + +Table with arguments: + +| | JDK\_MAJOR\_VERSION | JDK\_VERSION | JDK\_VM | JDK\_ARCHITECTURE | DEB\_JINFO\_PRIORITY | +|--------|---------------------|-----------------|---------------------|--------------------------------------|----------------------| +| JDK 8 | 8 | e.g. `8u202` | `hotspot`, `openj9` | `amd64`, `s390x`, `ppc64el`, `arm64` | `1081` | +| JDK 9 | 9 | e.g. `9.0.4+11` | `hotspot`, `openj9` | `amd64`, `s390x`, `ppc64el`, `arm64` | `1091` | +| JDK 10 | 10 | e.g. `10.0.2+13`| `hotspot`, `openj9` | `amd64`, `s390x`, `ppc64el`, `arm64` | `1101` | +| JDK 11 | 11 | e.g. `11.0.2+9` | `hotspot`, `openj9` | `amd64`, `s390x`, `ppc64el`, `arm64` | `1111` | +| JDK 12 | 12 | | `hotspot`, `openj9` | `amd64`, `s390x`, `ppc64el`, `arm64` | `1121` | + +### RPM packages + +RPM packages for CentOS, Fedora, Red Hat Enterprise Linux (RHEL) as well as OpenSUSE and SUSE Enterprise Linux (SLES) (see section *Support Matrix* below for supported combinations) can be packaged with the help of Gradle and fpm: + +``` +./gradlew buildRpmPackage \ + -PJDK_DISTRIBUTION_DIR=/path/to/jdk \ + -PJDK_MAJOR_VERSION= \ + -PJDK_VERSION= \ + -PJDK_VM= \ + -PJDK_ARCHITECTURE= \ + -PSIGN_PACKAGE= +``` + +`JDK_DISTRIBUTION_DIR` must point to a directory with a binary distribution of AdoptOpenJDK (for example an expanded tarball downloaded from https://adoptopenjdk.net/). + +Example: + +``` +./gradlew buildRpmPackage \ + -PJDK_DISTRIBUTION_DIR=/path/to/jdk-11.0.2+9 \ + -PJDK_MAJOR_VERSION=11 \ + -PJDK_VERSION="11.0.2+9" \ + -PJDK_VM=hotspot \ + -PJDK_ARCHITECTURE=amd64 + -PSIGN_PACKAGE=true +``` + +| | JDK\_MAJOR\_VERSION | JDK\_VERSION | JDK\_VM | JDK\_ARCHITECTURE | +|--------|---------------------|-----------------|---------------------|--------------------------------------| +| JDK 8 | 8 | e.g. `8u202` | `hotspot`, `openj9` | `amd64`, `s390x`, `ppc64el`, `arm64` | +| JDK 9 | 9 | e.g. `9.0.4+11` | `hotspot`, `openj9` | `amd64`, `s390x`, `ppc64el`, `arm64` | +| JDK 10 | 10 | e.g. `10.0.2+13`| `hotspot`, `openj9` | `amd64`, `s390x`, `ppc64el`, `arm64` | +| JDK 11 | 11 | e.g. `11.0.2+9` | `hotspot`, `openj9` | `amd64`, `s390x`, `ppc64el`, `arm64` | +| JDK 12 | 12 | | `hotspot`, `openj9` | `amd64`, `s390x`, `ppc64el`, `arm64` | + +RPMs are automatically signed if `SIGN_PACKAGE` is set to `true`. Signing require a file `~/.rpmmacros` to be present that contains the signing config (change values as necessary): + +``` +%_signature gpg +%_gpg_path /path/to/.gnupg +%_gpg_name KEY_ID +%__gpg /usr/bin/gpg +``` + +## Support Matrix + +### Deb packages + +All packages can be installed on Debian and Ubuntu without further changes. They are available for amd64, s390x, ppc64el, arm64 unless otherwise noted. All major versions can be installed side by side. + +| OpenJDK | Debian | Ubuntu | +|--------------------------|--------------------------------------|-----------------------------------------------------------------| +| JDK 8 (Hotspot, OpenJ9) | 8 (jessie), 9 (stretch), 10 (buster) | 14.04* (trusty), 16.04 (xenial), 18.04 (bionic), 18.10 (cosmic) | +| JDK 9 (Hotspot, OpenJ9) | 8 (jessie), 9 (stretch), 10 (buster) | 14.04* (trusty), 16.04 (xenial), 18.04 (bionic), 18.10 (cosmic) | +| JDK 10 (Hotspot, OpenJ9) | 8 (jessie), 9 (stretch), 10 (buster) | 14.04* (trusty), 16.04 (xenial), 18.04 (bionic), 18.10 (cosmic) | +| JDK 11 (Hotspot, OpenJ9) | 8 (jessie), 9 (stretch), 10 (buster) | 14.04* (trusty), 16.04 (xenial), 18.04 (bionic), 18.10 (cosmic) | +| JDK 12 (Hotspot, OpenJ9) | 8 (jessie), 9 (stretch), 10 (buster) | 14.04* (trusty), 16.04 (xenial), 18.04 (bionic), 18.10 (cosmic) | + +\* amd64, ppc64el, arm64 only + +### RPM packages + +All packages can be installed on CentOS, Fedora, Red Hat Enterprise Linux (RHEL) as well as OpenSUSE and SUSE Enterprise Linux (SLES) without further changes. All major versions can be installed side by side. Packages for Fedora and OpenSUSE are only available for amd64, packages for all other distributions are available for amd64, s390x, ppc64el and arm64. + +| OpenJDK | CentOS | Fedora | RHEL | OpenSUSE | SLES | +|--------------------------|--------|--------|------|----------|--------| +| JDK 8 (Hotspot, OpenJ9) | 6, 7 | 28, 29 | 6, 7 | 15.0 | 12, 15 | +| JDK 9 (Hotspot, OpenJ9) | 6, 7 | 28, 29 | 6, 7 | 15.0 | 12, 15 | +| JDK 10 (Hotspot, OpenJ9) | 6, 7 | 28, 29 | 6, 7 | 15.0 | 12, 15 | +| JDK 11 (Hotspot, OpenJ9) | 6, 7 | 28, 29 | 6, 7 | 15.0 | 12, 15 | +| JDK 12 (Hotspot, OpenJ9) | 6, 7 | 28, 29 | 6, 7 | 15.0 | 12, 15 | + diff --git a/linux/build.gradle b/linux/build.gradle new file mode 100644 index 000000000..c5dab3d83 --- /dev/null +++ b/linux/build.gradle @@ -0,0 +1,94 @@ +buildscript { + repositories { + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id "base" +} + +allprojects { + apply plugin: "base" + + version = 1 + + repositories { + mavenCentral() + } +} + +tasks.wrapper { + distributionType = Wrapper.DistributionType.ALL +} + +ext { + jdkMajorVersion = getJdkMajorVersion() + jdkVersion = JDK_VERSION + pkgMetadata = [ + architecture: getJdkArchitecture(), + vm : getJdkVirtualMachine(), + description : "OpenJDK Development Kit ${jdkMajorVersion} (JDK) by AdoptOpenJDK\n" + + " OpenJDK is a development environment for building applications,\n" + + " applets, and components using the Java programming language.", + homepage : "https://adoptopenjdk.net/", + iteration : version, + license : "GPL-2.0+CE", + maintainer : "AdoptOpenJDK", + vendor : "AdoptOpenJDK" + ] + jdkDistributionDir = JDK_DISTRIBUTION_DIR +} + +def getJdkVirtualMachine() { + def valid_vms = ["hotspot", "openj9"] + def key = hasProperty("JDK_VM") ? JDK_VM : "" + + if (!valid_vms.contains(key.toLowerCase(Locale.US))) { + throw new IllegalArgumentException("Unknown JDK VM '$key'") + } + + return JDK_VM.toLowerCase(Locale.US) +} + +def getJdkArchitecture() { + return hasProperty("JDK_ARCHITECTURE") ? + Architecture.valueOf(JDK_ARCHITECTURE.toUpperCase(Locale.US)) : + Architecture.AMD64 +} + +def getJdkMajorVersion() { + def versionString = hasProperty("JDK_MAJOR_VERSION") ? JDK_MAJOR_VERSION : "" + if (!versionString.matches("^[0-9]+\$")) { + throw new IllegalArgumentException("Unparsable JDK major version '$versionString'") + } + int version = Integer.valueOf(versionString) + if (version < 8 || version > 12) { + throw new IllegalArgumentException("JDK major version '$version' out of range") + } + return version +} + +enum Architecture { + AMD64("amd64", "x86_64"), + S390X("s390x", "s390x"), + PPC64EL("ppc64el", "ppc64le"), + ARM64("arm64", "aarch64") + + private final String debQualifier + private final String rpmQualifier + + Architecture(debQualifier, rpmQualifier) { + this.debQualifier = debQualifier + this.rpmQualifier = rpmQualifier + } + + String debQualifier() { + return this.debQualifier + } + + String rpmQualifier() { + return this.rpmQualifier + } +} diff --git a/linux/buildSrc/build.gradle b/linux/buildSrc/build.gradle new file mode 100644 index 000000000..64724d236 --- /dev/null +++ b/linux/buildSrc/build.gradle @@ -0,0 +1,7 @@ +repositories { + mavenCentral() +} + +dependencies { + implementation "com.samskivert:jmustache:1.14" +} diff --git a/linux/buildSrc/src/main/java/net/adoptopenjdk/installer/AbstractBuildLinuxPackage.java b/linux/buildSrc/src/main/java/net/adoptopenjdk/installer/AbstractBuildLinuxPackage.java new file mode 100644 index 000000000..415293a24 --- /dev/null +++ b/linux/buildSrc/src/main/java/net/adoptopenjdk/installer/AbstractBuildLinuxPackage.java @@ -0,0 +1,491 @@ +package net.adoptopenjdk.installer; + +import com.samskivert.mustache.Mustache; +import org.gradle.api.DefaultTask; +import org.gradle.api.resources.ResourceException; +import org.gradle.api.tasks.Input; +import org.gradle.api.tasks.InputDirectory; +import org.gradle.api.tasks.InputFile; +import org.gradle.api.tasks.Optional; +import org.gradle.api.tasks.OutputFile; +import org.gradle.api.tasks.TaskAction; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.Reader; +import java.io.Writer; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static java.nio.charset.StandardCharsets.UTF_8; + +public abstract class AbstractBuildLinuxPackage extends DefaultTask { + /** + * Name of the resulting package + */ + private String packageName; + + /** + * Version of the resulting package + */ + private String packageVersion; + + /** + * Name of the platform which the package is for, e.g. "amd64". + */ + private String architecture; + + private String vm; + + private int iteration; + + private String category; + + private String vendor; + + private String maintainer; + + private String license; + + private String homepage; + + private String packageDescription; + + /** + * Optional list of packages this package requires to be present to function, e.g. "libc6". + */ + private Set dependencies; + + private File dependenciesFile; + + private Set provides; + + private File providesFile; + + private String prefix; + + private File afterInstallScript; + + private File beforeRemoveScript; + + /** + * Path to the directory that should be packaged + */ + private File prebuiltJdkDirectory; + + private String variant; + + @TaskAction + public void exec() { + cleanTemporaryDirectory(); + + getProject().copy(copySpec -> { + copySpec.from(getPrebuiltJdkDirectory()); + copySpec.into(new File(getTemporaryDir(), getJdkDirectoryName())); + }); + + Map templateContext = templateContext(); + getLogger().debug("Package template context: {}", templateContext()); + processTemplate( + getAfterInstallScript(), + new File(getProject().getBuildDir(), getAfterInstallScript().getName()), + templateContext + ); + processTemplate( + getBeforeRemoveScript(), + new File(getProject().getBuildDir(), getBeforeRemoveScript().getName()), + templateContext + ); + + beforePackageBuild(); + + getProject().exec(execSpec -> { + getLogger().debug("fpm arguments: {}", fpmArguments()); + + execSpec.commandLine("fpm"); + execSpec.args(fpmArguments()); + }); + + afterPackageBuild(); + } + + @Input + public String getPackageName() { + return packageName; + } + + public void setPackageName(String packageName) { + this.packageName = packageName; + } + + @Input + public String getPackageVersion() { + return packageVersion; + } + + public void setPackageVersion(String packageVersion) { + this.packageVersion = packageVersion; + } + + @Input + public String getArchitecture() { + return architecture; + } + + public void setArchitecture(String architecture) { + this.architecture = architecture; + } + + public String getVm() { + return vm; + } + + public void setVm(String vm) { + this.vm = vm; + } + + @Input + public int getIteration() { + return iteration; + } + + public void setIteration(int iteration) { + this.iteration = iteration; + } + + @Input + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + @Input + public String getVendor() { + return vendor; + } + + public void setVendor(String vendor) { + this.vendor = vendor; + } + + @Input + public String getMaintainer() { + return maintainer; + } + + public void setMaintainer(String maintainer) { + this.maintainer = maintainer; + } + + @Input + public String getLicense() { + return license; + } + + public void setLicense(String license) { + this.license = license; + } + + @Input + public String getHomepage() { + return homepage; + } + + public void setHomepage(String homepage) { + this.homepage = homepage; + } + + @Input + public String getPackageDescription() { + return packageDescription; + } + + public void setPackageDescription(String packageDescription) { + this.packageDescription = packageDescription; + } + + @Input + @Optional + public Set getDependencies() { + return dependencies; + } + + public void setDependencies(Set dependencies) { + this.dependencies = dependencies; + } + + @InputFile + @Optional + public File getDependenciesFile() { + return dependenciesFile; + } + + public void setDependenciesFile(File dependenciesFile) { + this.dependenciesFile = dependenciesFile; + } + + @Input + @Optional + public Set getProvides() { + return provides; + } + + public void setProvides(Set provides) { + this.provides = provides; + } + + @InputFile + @Optional + public File getProvidesFile() { + return providesFile; + } + + public void setProvidesFile(File providesFile) { + this.providesFile = providesFile; + } + + @Input + public String getPrefix() { + return prefix; + } + + public void setPrefix(String prefix) { + this.prefix = prefix; + } + + @InputFile + @Optional + public File getAfterInstallScript() { + return afterInstallScript; + } + + public void setAfterInstallScript(File afterInstallScript) { + this.afterInstallScript = afterInstallScript; + } + + @InputFile + @Optional + public File getBeforeRemoveScript() { + return beforeRemoveScript; + } + + public void setBeforeRemoveScript(File beforeRemoveScript) { + this.beforeRemoveScript = beforeRemoveScript; + } + + @InputDirectory + public File getPrebuiltJdkDirectory() { + return prebuiltJdkDirectory; + } + + public void setPrebuiltJdkDirectory(String prebuiltJdkDirectory) { + setDistributionDirectory(new File(prebuiltJdkDirectory)); + } + + public void setDistributionDirectory(File distributionDirectory) { + this.prebuiltJdkDirectory = distributionDirectory; + } + + @OutputFile + public abstract File getOutputFile(); + + public abstract String getPackageType(); + + public abstract String getJdkDirectoryName(); + + @Optional + public String getVariant() { + return variant; + } + + /** + * Allows to define a package variant, for example to build slightly differing packages to + * cover distribution differences. If the {@code variant} is set, the packages will be output + * to a folder with the name {@code variant}. + */ + public void setVariant(String variant) { + this.variant = variant; + } + + List fpmArguments() { + List arguments = new ArrayList<>(); + + arguments.add("--input-type=dir"); + arguments.add(String.format("--output-type=%s", getPackageType())); + arguments.add(String.format("--package=%s", getOutputFile())); + arguments.add(String.format("--architecture=%s", getArchitecture())); + arguments.add(String.format("--name=%s", getPackageName())); + arguments.add(String.format("--version=%s", getPackageVersion())); + arguments.add(String.format("--iteration=%s", getIteration())); + arguments.add(String.format("--category=%s", getCategory())); + arguments.add(String.format("--prefix=%s", getPrefix())); + arguments.add(String.format("--maintainer=%s", getMaintainer())); + arguments.add(String.format("--license=%s", getLicense())); + arguments.add(String.format("--url=%s", getHomepage())); + arguments.add(String.format("--description=%s", getPackageDescription())); + arguments.add(String.format("--vendor=%s", getVendor())); + arguments.add(String.format("--chdir=%s", getTemporaryDir())); + + if (getAfterInstallScript() != null) { + arguments.add(String.format("--after-install=%s", + new File(getProject().getBuildDir(), getAfterInstallScript().getName()))); + } + if (getBeforeRemoveScript() != null) { + arguments.add(String.format("--before-remove=%s", + new File(getProject().getBuildDir(), getBeforeRemoveScript().getName()))); + } + for (String dependency : collectDependencies()) { + arguments.add(String.format("--depends=%s", dependency)); + } + for (String providesEntry : collectProvides()) { + arguments.add(String.format("--provides=%s", providesEntry)); + } + + return arguments; + } + + abstract Map templateContext(); + + Set collectDependencies() { + Set collectedDependencies = new LinkedHashSet<>(); + if (getDependencies() != null) { + collectedDependencies.addAll(getDependencies()); + } + if (dependenciesFile != null) { + collectedDependencies.addAll(readSetFromFile(dependenciesFile)); + } + return collectedDependencies; + } + + Set collectProvides() { + Set collectedProvides = new LinkedHashSet<>(); + if (getProvides() != null) { + collectedProvides.addAll(getProvides()); + } + if (providesFile != null) { + collectedProvides.addAll(readSetFromFile(providesFile)); + } + return collectedProvides; + } + + /** + * Template method that is called before the package is built with FPM. + * + * For example it allows to place files into the package directory that are only required by a specific package + * type. + */ + abstract void beforePackageBuild(); + + /** + * Template method that is called after the package has been built with FPM. + */ + abstract void afterPackageBuild(); + + private void cleanTemporaryDirectory() { + Set contentsToRetain = new LinkedHashSet<>(); + contentsToRetain.add(getJdkDirectoryName()); + contentsToRetain.addAll(getDistributionSpecificPackageContents()); + + File[] toDelete = getTemporaryDir().listFiles((dir, name) -> + !contentsToRetain.contains(name) + ); + if (toDelete != null) { + getProject().delete((Object) toDelete); + } + } + + /** + * Returns the names of distribution specific package contents. + */ + abstract Set getDistributionSpecificPackageContents(); + + File getOutputDirectory() { + File outputDirectory = getProject().getBuildDir(); + if (getVariant() != null && !getVariant().trim().isEmpty()) { + outputDirectory = new File(outputDirectory, getVariant()); + } + return outputDirectory; + } + + void processTemplate(File inFile, File outFile, Map context) { + try ( + InputStream inStream = new FileInputStream(inFile); + Reader reader = new BufferedReader(new InputStreamReader(inStream, UTF_8)); + OutputStream outStream = new FileOutputStream(outFile); + Writer writer = new BufferedWriter(new OutputStreamWriter(outStream, UTF_8)) + ) { + Mustache.compiler().escapeHTML(false).compile(reader).execute(context, writer); + } catch (IOException e) { + throw new ResourceException("Could not process template: " + inFile.toPath(), e); + } + } + + Set readSetFromFile(File inFile) { + try ( + InputStream inStream = new FileInputStream(inFile); + BufferedReader reader = new BufferedReader(new InputStreamReader(inStream, UTF_8)) + ) { + Set readEntries = new LinkedHashSet<>(); + + String line; + while ((line = reader.readLine()) != null) { + String entry = line.trim(); + + if (line.isEmpty()) { + continue; + } + + readEntries.add(entry); + } + + return readEntries; + } catch (IOException e) { + throw new ResourceException("Could not read entries from " + inFile.toPath(), e); + } + } + + Map readMapFromFile(File inFile) { + try ( + InputStream inStream = new FileInputStream(inFile); + BufferedReader reader = new BufferedReader(new InputStreamReader(inStream, UTF_8)) + ) { + LinkedHashMap readEntries = new LinkedHashMap<>(); + + String line; + while ((line = reader.readLine()) != null) { + String entry = line.trim(); + + if (line.isEmpty()) { + continue; + } + + String[] results = entry.split("\\s"); + + if (results.length != 2) { + throw new ResourceException("Illegal entry: '" + entry + "' in " + inFile.toPath()); + } + + readEntries.put(results[0], results[1]); + } + + return readEntries; + } catch (IOException e) { + throw new ResourceException("Could not read entries from " + inFile.toPath(), e); + } + } +} diff --git a/linux/buildSrc/src/main/java/net/adoptopenjdk/installer/BuildDebianPackage.java b/linux/buildSrc/src/main/java/net/adoptopenjdk/installer/BuildDebianPackage.java new file mode 100644 index 000000000..3756f4795 --- /dev/null +++ b/linux/buildSrc/src/main/java/net/adoptopenjdk/installer/BuildDebianPackage.java @@ -0,0 +1,214 @@ +package net.adoptopenjdk.installer; + +import org.gradle.api.UncheckedIOException; +import org.gradle.api.tasks.Input; +import org.gradle.api.tasks.InputFile; +import org.gradle.api.tasks.Optional; +import org.gradle.api.tasks.OutputFile; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.Map; +import java.util.Set; +import java.util.StringJoiner; +import java.util.stream.Collectors; + +public class BuildDebianPackage extends AbstractBuildLinuxPackage { + + /** + * Map of tools with their path relative to the root directory of the JDK (key, e.g. + * "bin/javac") and their type (value, e.g. "jdkhl"). + */ + private Map tools; + + private File toolsFile; + + private File jinfoFile; + private int priority; + + public BuildDebianPackage() { + setGroup("Build"); + setDescription("Builds a debian package"); + } + + @Input + @Optional + public Map getTools() { + return tools; + } + + public void setTools(Map tools) { + this.tools = tools; + } + + @InputFile + @Optional + public File getToolsFile() { + return toolsFile; + } + + public void setToolsFile(File toolsFile) { + this.toolsFile = toolsFile; + } + + @InputFile + public File getJinfoFile() { + return jinfoFile; + } + + public void setJinfoFile(File jinfoFile) { + this.jinfoFile = jinfoFile; + } + + @Override + @OutputFile + public File getOutputFile() { + // Result looks like openjdk-11-jdk_11.0.1+13-3ubuntu3.18.10.1_amd64.deb + String outputFileName = String.format( + "%s_%s-%s_%s.deb", + getPackageName(), + getPackageVersion(), + getIteration(), + getArchitecture() + ); + return new File(getOutputDirectory(), outputFileName); + } + + public String getJinfoName() { + return String.format(".%s.jinfo", getJdkDirectoryName()); + } + + @Override + public String getPackageType() { + return "deb"; + } + + @Override + public String getJdkDirectoryName() { + return String.format("%s-%s", getPackageName(), getArchitecture()); + } + + @Override + Map templateContext() { + Set jdkTools = collectTools(); + String toolsAsLine = jdkTools.stream() + .map(JdkTool::getName) + .collect(Collectors.joining(" ")); + + Map context = new LinkedHashMap<>(); + context.put("architecture", getArchitecture()); + context.put("jdkDirectoryName", getJdkDirectoryName()); + context.put("packageName", getPackageName()); + context.put("packageVersion", getPackageVersion()); + context.put("prefix", getPrefix()); + context.put("priority", getPriority()); + context.put("tools", jdkTools); + context.put("toolsAsLine", toolsAsLine); + context.put("vm", getVm()); + context.put("variant", getVariant()); + return context; + } + + Set collectTools() { + Set collectedTools = new LinkedHashSet<>(); + if (getTools() != null) { + for (Map.Entry entry : getTools().entrySet()) { + collectedTools.add(new JdkTool(entry.getKey(), entry.getValue())); + } + } + if (toolsFile != null) { + for (Map.Entry entry : readMapFromFile(toolsFile).entrySet()) { + collectedTools.add(new JdkTool(entry.getKey(), entry.getValue())); + } + } + return collectedTools; + } + + @Override + void beforePackageBuild() { + Map templateContext = templateContext(); + processTemplate( + getJinfoFile(), + new File(getTemporaryDir(), getJinfoName()), + templateContext + ); + + // The upstream packages provided by Debian and Ubuntu place a symlink to src.zip in the root directory of the + // Java distribution. Some of the AdoptOpenJDK releases already have the src.zip in the root directory, others + // have it in lib/. If there's already a src.zip, do nothing, otherwise we create a symlink to lib/src.zip. + Path link = Paths.get(getTemporaryDir().toString(), getJdkDirectoryName(), "src.zip"); + + // The target path must be relative, otherwise it contains the full path to the build + // directory which usually does not correspond to the installation directory on the target machine. + Path target = Paths.get("lib", "src.zip"); + if (!link.toFile().exists()) { + try { + Files.createSymbolicLink(link, target); + } catch (IOException e) { + throw new UncheckedIOException(e); + } + } + } + + @Override + void afterPackageBuild() { + // No post processing needed + } + + @Override + Set getDistributionSpecificPackageContents() { + return Collections.singleton(getJinfoName()); + } + + @Input + public int getPriority() { + return priority; + } + + public void setPriority(int priority) { + this.priority = priority; + } + + static class JdkTool { + + private final String path; + + private final String type; + + JdkTool(String path, String type) { + this.path = path; + this.type = type; + } + + public String getPath() { + return path; + } + + public String getType() { + return type; + } + + public String getName() { + int separatorIdx = path.lastIndexOf('/'); + if (separatorIdx < 0) { + return path; + } + + return path.substring(separatorIdx + 1); + } + + @Override + public String toString() { + return new StringJoiner(", ", JdkTool.class.getSimpleName() + "[", "]") + .add("path='" + path + "'") + .add("type='" + type + "'") + .toString(); + } + } +} diff --git a/linux/buildSrc/src/main/java/net/adoptopenjdk/installer/BuildRpmPackage.java b/linux/buildSrc/src/main/java/net/adoptopenjdk/installer/BuildRpmPackage.java new file mode 100644 index 000000000..5b0959b13 --- /dev/null +++ b/linux/buildSrc/src/main/java/net/adoptopenjdk/installer/BuildRpmPackage.java @@ -0,0 +1,102 @@ +package net.adoptopenjdk.installer; + +import org.gradle.api.tasks.Optional; + +import java.io.File; +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +public class BuildRpmPackage extends AbstractBuildLinuxPackage { + + private boolean signPackage; + + public BuildRpmPackage() { + setGroup("Build"); + setDescription("Builds a rpm package"); + } + + @Optional + public boolean isSignPackage() { + return signPackage; + } + + public void setSignPackage(boolean signPackage) { + this.signPackage = signPackage; + } + + @Override + public File getOutputFile() { + // Result should look like java-11-openjdk-11.0.ea.28-2.fc29.x86_64.rpm + String outputFileName = String.format( + "%s-%s-%s.%s.rpm", + getPackageName(), + getPackageVersion(), + getIteration(), + getArchitecture() + ); + return new File(getOutputDirectory(), outputFileName); + } + + @Override + public String getPackageType() { + return "rpm"; + } + + @Override + public String getJdkDirectoryName() { + return getPackageName(); + } + + @Override + List fpmArguments() { + List args = super.fpmArguments(); + args.add("--rpm-os=linux"); + args.add(String.format("--directories=%s/%s", getPrefix(), getJdkDirectoryName())); + return args; + } + + @Override + Map templateContext() { + Map context = new LinkedHashMap<>(); + context.put("architecture", getArchitecture()); + context.put("jdkDirectoryName", getJdkDirectoryName()); + context.put("packageName", getPackageName()); + context.put("packageVersion", getPackageVersion()); + context.put("prefix", getPrefix()); + context.put("vm", getVm()); + context.put("variant", getVariant()); + return context; + } + + @Override + protected void beforePackageBuild() { + // No pre processing needed. + } + + @Override + void afterPackageBuild() { + if (!isSignPackage()) { + return; + } + + getProject().exec(execSpec -> { + List args = new ArrayList<>(); + args.add("--addsign"); + args.add(getOutputFile().toString()); + + getLogger().debug("rpmsign arguments: {}", args); + + execSpec.commandLine("rpmsign"); + execSpec.args(args); + }); + } + + @Override + Set getDistributionSpecificPackageContents() { + return Collections.emptySet(); + } +} diff --git a/linux/deb/build.gradle b/linux/deb/build.gradle new file mode 100644 index 000000000..11d8ee63e --- /dev/null +++ b/linux/deb/build.gradle @@ -0,0 +1,28 @@ +tasks.register("buildDebianPackage", net.adoptopenjdk.installer.BuildDebianPackage) { + packageName = "adoptopenjdk-${jdkMajorVersion}-${pkgMetadata.vm}" + packageVersion = jdkVersion + iteration = version + priority = getJinfoPriority() + architecture = pkgMetadata.architecture.debQualifier() + vm = pkgMetadata.vm + maintainer = pkgMetadata.maintainer + vendor = pkgMetadata.vendor + homepage = pkgMetadata.homepage + license = pkgMetadata.license + packageDescription = pkgMetadata.description + category = "java" + dependenciesFile = file("config/jdk-${jdkMajorVersion}-${pkgMetadata.vm}/dependencies.txt") + providesFile = file("config/jdk-${jdkMajorVersion}-${pkgMetadata.vm}/provides.txt") + toolsFile = file("config/jdk-${jdkMajorVersion}-${pkgMetadata.vm}/tools.txt") + prefix = "/usr/lib/jvm" + afterInstallScript = file("config/postinst.sh") + beforeRemoveScript = file("config/prerm.sh") + jinfoFile = file("config/jinfo") + prebuiltJdkDirectory = jdkDistributionDir +} + +build.dependsOn(buildDebianPackage) + +def getJinfoPriority() { + return hasProperty("DEB_JINFO_PRIORITY") ? Integer.parseInt(DEB_JINFO_PRIORITY): 0 +} diff --git a/linux/deb/config/jdk-10-hotspot/dependencies.txt b/linux/deb/config/jdk-10-hotspot/dependencies.txt new file mode 100644 index 000000000..a5765e782 --- /dev/null +++ b/linux/deb/config/jdk-10-hotspot/dependencies.txt @@ -0,0 +1,11 @@ +ca-certificates-java +java-common +libasound2 +libc6 +libfreetype6-dev +libx11-6 +libxext6 +libxi6 +libxrender1 +libxtst6 +zlib1g diff --git a/linux/deb/config/jdk-10-hotspot/provides.txt b/linux/deb/config/jdk-10-hotspot/provides.txt new file mode 100644 index 000000000..675e7f02b --- /dev/null +++ b/linux/deb/config/jdk-10-hotspot/provides.txt @@ -0,0 +1,17 @@ +java-compiler +java-sdk-headless +java10-sdk-headless +java2-sdk-headless +java5-sdk-headless +java6-sdk-headless +java7-sdk-headless +java8-sdk-headless +java9-sdk-headless +java-runtime-headless +java10-runtime-headless +java2-runtime-headless +java5-runtime-headless +java6-runtime-headless +java7-runtime-headless +java8-runtime-headless +java9-runtime-headless diff --git a/linux/deb/config/jdk-10-hotspot/tools.txt b/linux/deb/config/jdk-10-hotspot/tools.txt new file mode 100644 index 000000000..a89c33a73 --- /dev/null +++ b/linux/deb/config/jdk-10-hotspot/tools.txt @@ -0,0 +1,42 @@ +bin/appletviewer jdk +bin/idlj jdkhl +bin/jaotc jdkhl +bin/jar jdkhl +bin/jarsigner jdkhl +bin/java hl +bin/javac jdkhl +bin/javadoc jdkhl +bin/javap jdkhl +bin/jcmd jdkhl +bin/jconsole jdk +bin/jdb jdkhl +bin/jdeprscan jdkhl +bin/jdeps jdkhl +bin/jhsdb jdkhl +bin/jimage jdkhl +bin/jinfo jdkhl +bin/jjs hl +bin/jlink jdkhl +bin/jmap jdkhl +bin/jmod jdkhl +bin/jps jdkhl +bin/jrunscript hl +bin/jshell jdkhl +bin/jstack jdkhl +bin/jstat jdkhl +bin/jstatd jdkhl +bin/keytool hl +bin/orbd hl +bin/pack200 hl +bin/rmic jdkhl +bin/rmid hl +bin/rmiregistry hl +bin/schemagen jdkhl +bin/serialver jdkhl +bin/servertool hl +bin/tnameserv hl +bin/unpack200 hl +bin/wsgen jdkhl +bin/wsimport jdkhl +bin/xjc jdkhl +lib/jexec hl diff --git a/linux/deb/config/jdk-10-openj9/dependencies.txt b/linux/deb/config/jdk-10-openj9/dependencies.txt new file mode 100644 index 000000000..a5765e782 --- /dev/null +++ b/linux/deb/config/jdk-10-openj9/dependencies.txt @@ -0,0 +1,11 @@ +ca-certificates-java +java-common +libasound2 +libc6 +libfreetype6-dev +libx11-6 +libxext6 +libxi6 +libxrender1 +libxtst6 +zlib1g diff --git a/linux/deb/config/jdk-10-openj9/provides.txt b/linux/deb/config/jdk-10-openj9/provides.txt new file mode 100644 index 000000000..675e7f02b --- /dev/null +++ b/linux/deb/config/jdk-10-openj9/provides.txt @@ -0,0 +1,17 @@ +java-compiler +java-sdk-headless +java10-sdk-headless +java2-sdk-headless +java5-sdk-headless +java6-sdk-headless +java7-sdk-headless +java8-sdk-headless +java9-sdk-headless +java-runtime-headless +java10-runtime-headless +java2-runtime-headless +java5-runtime-headless +java6-runtime-headless +java7-runtime-headless +java8-runtime-headless +java9-runtime-headless diff --git a/linux/deb/config/jdk-10-openj9/tools.txt b/linux/deb/config/jdk-10-openj9/tools.txt new file mode 100644 index 000000000..2ab6f1f81 --- /dev/null +++ b/linux/deb/config/jdk-10-openj9/tools.txt @@ -0,0 +1,41 @@ +bin/appletviewer jdk +bin/idlj jdkhl +bin/jar jdkhl +bin/jarsigner jdkhl +bin/java hl +bin/javac jdkhl +bin/javadoc jdkhl +bin/javap jdkhl +bin/jconsole jdk +bin/jdb jdkhl +bin/jdeprscan jdkhl +bin/jdeps jdkhl +bin/jdmpview jdkhl +bin/jextract jdkhl +bin/jimage jdkhl +bin/jinfo jdkhl +bin/jjs hl +bin/jlink jdkhl +bin/jmap jdkhl +bin/jmod jdkhl +bin/jps jdkhl +bin/jrunscript hl +bin/jshell jdkhl +bin/jstack jdkhl +bin/jstat jdkhl +bin/keytool hl +bin/orbd hl +bin/pack200 hl +bin/rmic jdkhl +bin/rmid hl +bin/rmiregistry hl +bin/schemagen jdkhl +bin/serialver jdkhl +bin/servertool hl +bin/tnameserv hl +bin/traceformat jdkhl +bin/unpack200 hl +bin/wsgen jdkhl +bin/wsimport jdkhl +bin/xjc jdkhl +lib/jexec hl diff --git a/linux/deb/config/jdk-11-hotspot/dependencies.txt b/linux/deb/config/jdk-11-hotspot/dependencies.txt new file mode 100644 index 000000000..a5765e782 --- /dev/null +++ b/linux/deb/config/jdk-11-hotspot/dependencies.txt @@ -0,0 +1,11 @@ +ca-certificates-java +java-common +libasound2 +libc6 +libfreetype6-dev +libx11-6 +libxext6 +libxi6 +libxrender1 +libxtst6 +zlib1g diff --git a/linux/deb/config/jdk-11-hotspot/provides.txt b/linux/deb/config/jdk-11-hotspot/provides.txt new file mode 100644 index 000000000..96c390ff2 --- /dev/null +++ b/linux/deb/config/jdk-11-hotspot/provides.txt @@ -0,0 +1,19 @@ +java-compiler +java-sdk-headless +java10-sdk-headless +java11-sdk-headless +java2-sdk-headless +java5-sdk-headless +java6-sdk-headless +java7-sdk-headless +java8-sdk-headless +java9-sdk-headless +java-runtime-headless +java10-runtime-headless +java11-runtime-headless +java2-runtime-headless +java5-runtime-headless +java6-runtime-headless +java7-runtime-headless +java8-runtime-headless +java9-runtime-headless diff --git a/linux/deb/config/jdk-11-hotspot/tools.txt b/linux/deb/config/jdk-11-hotspot/tools.txt new file mode 100644 index 000000000..0b39d85e6 --- /dev/null +++ b/linux/deb/config/jdk-11-hotspot/tools.txt @@ -0,0 +1,33 @@ +bin/jaotc jdkhl +bin/jar jdkhl +bin/jarsigner jdkhl +bin/java hl +bin/javac jdkhl +bin/javadoc jdkhl +bin/javap jdkhl +bin/jcmd jdkhl +bin/jconsole jdk +bin/jdb jdkhl +bin/jdeprscan jdkhl +bin/jdeps jdkhl +bin/jhsdb jdkhl +bin/jimage jdkhl +bin/jinfo jdkhl +bin/jjs hl +bin/jlink jdkhl +bin/jmap jdkhl +bin/jmod jdkhl +bin/jps jdkhl +bin/jrunscript hl +bin/jshell jdkhl +bin/jstack jdkhl +bin/jstat jdkhl +bin/jstatd jdkhl +bin/keytool hl +bin/pack200 hl +bin/rmic jdkhl +bin/rmid hl +bin/rmiregistry hl +bin/serialver jdkhl +bin/unpack200 hl +lib/jexec hl diff --git a/linux/deb/config/jdk-11-openj9/dependencies.txt b/linux/deb/config/jdk-11-openj9/dependencies.txt new file mode 100644 index 000000000..a5765e782 --- /dev/null +++ b/linux/deb/config/jdk-11-openj9/dependencies.txt @@ -0,0 +1,11 @@ +ca-certificates-java +java-common +libasound2 +libc6 +libfreetype6-dev +libx11-6 +libxext6 +libxi6 +libxrender1 +libxtst6 +zlib1g diff --git a/linux/deb/config/jdk-11-openj9/provides.txt b/linux/deb/config/jdk-11-openj9/provides.txt new file mode 100644 index 000000000..96c390ff2 --- /dev/null +++ b/linux/deb/config/jdk-11-openj9/provides.txt @@ -0,0 +1,19 @@ +java-compiler +java-sdk-headless +java10-sdk-headless +java11-sdk-headless +java2-sdk-headless +java5-sdk-headless +java6-sdk-headless +java7-sdk-headless +java8-sdk-headless +java9-sdk-headless +java-runtime-headless +java10-runtime-headless +java11-runtime-headless +java2-runtime-headless +java5-runtime-headless +java6-runtime-headless +java7-runtime-headless +java8-runtime-headless +java9-runtime-headless diff --git a/linux/deb/config/jdk-11-openj9/tools.txt b/linux/deb/config/jdk-11-openj9/tools.txt new file mode 100644 index 000000000..acc1675b7 --- /dev/null +++ b/linux/deb/config/jdk-11-openj9/tools.txt @@ -0,0 +1,27 @@ +bin/jar jdkhl +bin/jarsigner jdkhl +bin/java hl +bin/javac jdkhl +bin/javadoc jdkhl +bin/javap jdkhl +bin/jconsole jdk +bin/jdb jdkhl +bin/jdeprscan jdkhl +bin/jdeps jdkhl +bin/jdmpview jdkhl +bin/jextract jdkhl +bin/jimage jdkhl +bin/jjs hl +bin/jlink jdkhl +bin/jmod jdkhl +bin/jrunscript hl +bin/jshell jdkhl +bin/keytool hl +bin/pack200 hl +bin/rmic jdkhl +bin/rmid hl +bin/rmiregistry hl +bin/serialver jdkhl +bin/traceformat jdkhl +bin/unpack200 hl +lib/jexec hl diff --git a/linux/deb/config/jdk-12-hotspot/dependencies.txt b/linux/deb/config/jdk-12-hotspot/dependencies.txt new file mode 100644 index 000000000..a5765e782 --- /dev/null +++ b/linux/deb/config/jdk-12-hotspot/dependencies.txt @@ -0,0 +1,11 @@ +ca-certificates-java +java-common +libasound2 +libc6 +libfreetype6-dev +libx11-6 +libxext6 +libxi6 +libxrender1 +libxtst6 +zlib1g diff --git a/linux/deb/config/jdk-12-hotspot/provides.txt b/linux/deb/config/jdk-12-hotspot/provides.txt new file mode 100644 index 000000000..fd7230837 --- /dev/null +++ b/linux/deb/config/jdk-12-hotspot/provides.txt @@ -0,0 +1,21 @@ +java-compiler +java-sdk-headless +java10-sdk-headless +java11-sdk-headless +java12-sdk-headless +java2-sdk-headless +java5-sdk-headless +java6-sdk-headless +java7-sdk-headless +java8-sdk-headless +java9-sdk-headless +java-runtime-headless +java10-runtime-headless +java11-runtime-headless +java12-runtime-headless +java2-runtime-headless +java5-runtime-headless +java6-runtime-headless +java7-runtime-headless +java8-runtime-headless +java9-runtime-headless diff --git a/linux/deb/config/jdk-12-hotspot/tools.txt b/linux/deb/config/jdk-12-hotspot/tools.txt new file mode 100644 index 000000000..15f4b4465 --- /dev/null +++ b/linux/deb/config/jdk-12-hotspot/tools.txt @@ -0,0 +1,35 @@ +bin/jaotc jdkhl +bin/jar jdkhl +bin/jarsigner jdkhl +bin/java hl +bin/javac jdkhl +bin/javadoc jdkhl +bin/javap jdkhl +bin/jcmd jdkhl +bin/jconsole jdk +bin/jdb jdkhl +bin/jdeprscan jdkhl +bin/jdeps jdkhl +bin/jfr hl +bin/jhsdb jdkhl +bin/jimage jdkhl +bin/jinfo jdkhl +bin/jjs hl +bin/jlink jdkhl +bin/jmap jdkhl +bin/jmod jdkhl +bin/jps jdkhl +bin/jrunscript hl +bin/jshell jdkhl +bin/jstack jdkhl +bin/jstat jdkhl +bin/jstatd jdkhl +bin/keytool hl +bin/pack200 hl +bin/rmic jdkhl +bin/rmid hl +bin/rmiregistry hl +bin/serialver jdkhl +bin/unpack200 hl +lib/jexec hl +lib/jspawnhelper hl diff --git a/linux/deb/config/jdk-12-openj9/dependencies.txt b/linux/deb/config/jdk-12-openj9/dependencies.txt new file mode 100644 index 000000000..d5f2d2350 --- /dev/null +++ b/linux/deb/config/jdk-12-openj9/dependencies.txt @@ -0,0 +1,9 @@ +libasound2 +libc6 +libfreetype6-dev +libx11-6 +libxext6 +libxi6 +libxrender1 +libxtst6 +zlib1g diff --git a/linux/deb/config/jdk-12-openj9/provides.txt b/linux/deb/config/jdk-12-openj9/provides.txt new file mode 100644 index 000000000..fd7230837 --- /dev/null +++ b/linux/deb/config/jdk-12-openj9/provides.txt @@ -0,0 +1,21 @@ +java-compiler +java-sdk-headless +java10-sdk-headless +java11-sdk-headless +java12-sdk-headless +java2-sdk-headless +java5-sdk-headless +java6-sdk-headless +java7-sdk-headless +java8-sdk-headless +java9-sdk-headless +java-runtime-headless +java10-runtime-headless +java11-runtime-headless +java12-runtime-headless +java2-runtime-headless +java5-runtime-headless +java6-runtime-headless +java7-runtime-headless +java8-runtime-headless +java9-runtime-headless diff --git a/linux/deb/config/jdk-12-openj9/tools.txt b/linux/deb/config/jdk-12-openj9/tools.txt new file mode 100644 index 000000000..a06718116 --- /dev/null +++ b/linux/deb/config/jdk-12-openj9/tools.txt @@ -0,0 +1,30 @@ +bin/jar jdkhl +bin/jarsigner jdkhl +bin/java hl +bin/javac jdkhl +bin/javadoc jdkhl +bin/javap jdkhl +bin/jconsole jdk +bin/jdb jdkhl +bin/jdeprscan jdkhl +bin/jdeps jdkhl +bin/jdmpview jdkhl +bin/jextract jdkhl +bin/jfr hl +bin/jimage jdkhl +bin/jjs hl +bin/jlink jdkhl +bin/jmod jdkhl +bin/jps jdkhl +bin/jrunscript hl +bin/jshell jdkhl +bin/keytool hl +bin/pack200 hl +bin/rmic jdkhl +bin/rmid hl +bin/rmiregistry hl +bin/serialver jdkhl +bin/traceformat jdkhl +bin/unpack200 hl +lib/jexec hl +lib/jspawnhelper hl diff --git a/linux/deb/config/jdk-8-hotspot/dependencies.txt b/linux/deb/config/jdk-8-hotspot/dependencies.txt new file mode 100644 index 000000000..a5765e782 --- /dev/null +++ b/linux/deb/config/jdk-8-hotspot/dependencies.txt @@ -0,0 +1,11 @@ +ca-certificates-java +java-common +libasound2 +libc6 +libfreetype6-dev +libx11-6 +libxext6 +libxi6 +libxrender1 +libxtst6 +zlib1g diff --git a/linux/deb/config/jdk-8-hotspot/provides.txt b/linux/deb/config/jdk-8-hotspot/provides.txt new file mode 100644 index 000000000..9583d16f4 --- /dev/null +++ b/linux/deb/config/jdk-8-hotspot/provides.txt @@ -0,0 +1,13 @@ +java-compiler +java-sdk-headless +java2-sdk-headless +java5-sdk-headless +java6-sdk-headless +java7-sdk-headless +java8-sdk-headless +java-runtime-headless +java2-runtime-headless +java5-runtime-headless +java6-runtime-headless +java7-runtime-headless +java8-runtime-headless diff --git a/linux/deb/config/jdk-8-hotspot/tools.txt b/linux/deb/config/jdk-8-hotspot/tools.txt new file mode 100644 index 000000000..bd92c0542 --- /dev/null +++ b/linux/deb/config/jdk-8-hotspot/tools.txt @@ -0,0 +1,41 @@ +bin/appletviewer jdk +bin/extcheck jdkhl +bin/idlj jdkhl +bin/jar jdkhl +bin/jarsigner jdkhl +bin/java hl +bin/javac jdkhl +bin/javadoc jdkhl +bin/javah jdkhl +bin/javap jdkhl +bin/jcmd jdkhl +bin/jconsole jdk +bin/jdb jdkhl +bin/jdeps jdkhl +bin/jhat jdkhl +bin/jinfo jdkhl +bin/jjs hl +bin/jmap jdkhl +bin/jps jdkhl +bin/jrunscript hl +bin/jsadebugd jdkhl +bin/jstack jdkhl +bin/jstat jdkhl +bin/jstatd jdkhl +bin/keytool hl +bin/native2ascii jdkhl +bin/orbd hl +bin/pack200 hl +bin/policytool jre +bin/rmic jdkhl +bin/rmid hl +bin/rmiregistry hl +bin/schemagen jdkhl +bin/serialver jdkhl +bin/servertool hl +bin/tnameserv hl +bin/unpack200 hl +bin/wsgen jdkhl +bin/wsimport jdkhl +bin/xjc jdkhl +lib/jexec hl diff --git a/linux/deb/config/jdk-8-openj9/dependencies.txt b/linux/deb/config/jdk-8-openj9/dependencies.txt new file mode 100644 index 000000000..8eb223b2f --- /dev/null +++ b/linux/deb/config/jdk-8-openj9/dependencies.txt @@ -0,0 +1,12 @@ +ca-certificates-java +java-common +libasound2 +libc6 +libfreetype6-dev +libssl1.1 +libx11-6 +libxext6 +libxi6 +libxrender1 +libxtst6 +zlib1g diff --git a/linux/deb/config/jdk-8-openj9/provides.txt b/linux/deb/config/jdk-8-openj9/provides.txt new file mode 100644 index 000000000..9583d16f4 --- /dev/null +++ b/linux/deb/config/jdk-8-openj9/provides.txt @@ -0,0 +1,13 @@ +java-compiler +java-sdk-headless +java2-sdk-headless +java5-sdk-headless +java6-sdk-headless +java7-sdk-headless +java8-sdk-headless +java-runtime-headless +java2-runtime-headless +java5-runtime-headless +java6-runtime-headless +java7-runtime-headless +java8-runtime-headless diff --git a/linux/deb/config/jdk-8-openj9/tools.txt b/linux/deb/config/jdk-8-openj9/tools.txt new file mode 100644 index 000000000..414bbb41e --- /dev/null +++ b/linux/deb/config/jdk-8-openj9/tools.txt @@ -0,0 +1,36 @@ +bin/appletviewer jdk +bin/extcheck jdkhl +bin/idlj jdkhl +bin/jar jdkhl +bin/jarsigner jdkhl +bin/java hl +bin/javac jdkhl +bin/javadoc jdkhl +bin/javah jdkhl +bin/javap jdkhl +bin/jconsole jdk +bin/jdb jdkhl +bin/jdeps jdkhl +bin/jdmpview jdkhl +bin/jextract jdkhl +bin/jjs hl +bin/jrunscript hl +bin/jsadebugd jdkhl +bin/keytool hl +bin/native2ascii jdkhl +bin/orbd hl +bin/pack200 hl +bin/policytool jre +bin/rmic jdkhl +bin/rmid hl +bin/rmiregistry hl +bin/schemagen jdkhl +bin/serialver jdkhl +bin/servertool hl +bin/tnameserv hl +bin/traceformat jdkhl +bin/unpack200 hl +bin/wsgen jdkhl +bin/wsimport jdkhl +bin/xjc jdkhl +lib/jexec hl diff --git a/linux/deb/config/jdk-9-hotspot/dependencies.txt b/linux/deb/config/jdk-9-hotspot/dependencies.txt new file mode 100644 index 000000000..39c1dd7ff --- /dev/null +++ b/linux/deb/config/jdk-9-hotspot/dependencies.txt @@ -0,0 +1,12 @@ +ca-certificates-java +java-common +libasound2 +libc6 +libfreetype6-dev +libx11-6 +libxext6 +libxi6 +libxrender1 +libxtst6 +zlib1g +libelf1 diff --git a/linux/deb/config/jdk-9-hotspot/provides.txt b/linux/deb/config/jdk-9-hotspot/provides.txt new file mode 100644 index 000000000..62e649cd5 --- /dev/null +++ b/linux/deb/config/jdk-9-hotspot/provides.txt @@ -0,0 +1,15 @@ +java-compiler +java-sdk-headless +java2-sdk-headless +java5-sdk-headless +java6-sdk-headless +java7-sdk-headless +java8-sdk-headless +java9-sdk-headless +java-runtime-headless +java2-runtime-headless +java5-runtime-headless +java6-runtime-headless +java7-runtime-headless +java8-runtime-headless +java9-runtime-headless diff --git a/linux/deb/config/jdk-9-hotspot/tools.txt b/linux/deb/config/jdk-9-hotspot/tools.txt new file mode 100644 index 000000000..a902fef8e --- /dev/null +++ b/linux/deb/config/jdk-9-hotspot/tools.txt @@ -0,0 +1,44 @@ +bin/appletviewer jdk +bin/idlj jdkhl +bin/jaotc jdkhl +bin/jar jdkhl +bin/jarsigner jdkhl +bin/java hl +bin/javac jdkhl +bin/javadoc jdkhl +bin/javah jdkhl +bin/javap jdkhl +bin/jcmd jdkhl +bin/jconsole jdk +bin/jdb jdkhl +bin/jdeprscan jdkhl +bin/jdeps jdkhl +bin/jhsdb jdkhl +bin/jimage jdkhl +bin/jinfo jdkhl +bin/jjs hl +bin/jlink jdkhl +bin/jmap jdkhl +bin/jmod jdkhl +bin/jps jdkhl +bin/jrunscript hl +bin/jshell jdkhl +bin/jstack jdkhl +bin/jstat jdkhl +bin/jstatd jdkhl +bin/keytool hl +bin/orbd hl +bin/pack200 hl +bin/policytool jre +bin/rmic jdkhl +bin/rmid hl +bin/rmiregistry hl +bin/schemagen jdkhl +bin/serialver jdkhl +bin/servertool hl +bin/tnameserv hl +bin/unpack200 hl +bin/wsgen jdkhl +bin/wsimport jdkhl +bin/xjc jdkhl +lib/jexec hl diff --git a/linux/deb/config/jdk-9-openj9/dependencies.txt b/linux/deb/config/jdk-9-openj9/dependencies.txt new file mode 100644 index 000000000..a5765e782 --- /dev/null +++ b/linux/deb/config/jdk-9-openj9/dependencies.txt @@ -0,0 +1,11 @@ +ca-certificates-java +java-common +libasound2 +libc6 +libfreetype6-dev +libx11-6 +libxext6 +libxi6 +libxrender1 +libxtst6 +zlib1g diff --git a/linux/deb/config/jdk-9-openj9/provides.txt b/linux/deb/config/jdk-9-openj9/provides.txt new file mode 100644 index 000000000..62e649cd5 --- /dev/null +++ b/linux/deb/config/jdk-9-openj9/provides.txt @@ -0,0 +1,15 @@ +java-compiler +java-sdk-headless +java2-sdk-headless +java5-sdk-headless +java6-sdk-headless +java7-sdk-headless +java8-sdk-headless +java9-sdk-headless +java-runtime-headless +java2-runtime-headless +java5-runtime-headless +java6-runtime-headless +java7-runtime-headless +java8-runtime-headless +java9-runtime-headless diff --git a/linux/deb/config/jdk-9-openj9/tools.txt b/linux/deb/config/jdk-9-openj9/tools.txt new file mode 100644 index 000000000..87cd116b6 --- /dev/null +++ b/linux/deb/config/jdk-9-openj9/tools.txt @@ -0,0 +1,38 @@ +bin/appletviewer jdk +bin/idlj jdkhl +bin/jar jdkhl +bin/jarsigner jdkhl +bin/java hl +bin/javac jdkhl +bin/javadoc jdkhl +bin/javah jdkhl +bin/javap jdkhl +bin/jconsole jdk +bin/jdb jdkhl +bin/jdeprscan jdkhl +bin/jdeps jdkhl +bin/jdmpview jdkhl +bin/jextract jdkhl +bin/jimage jdkhl +bin/jjs hl +bin/jlink jdkhl +bin/jmod jdkhl +bin/jrunscript hl +bin/jshell jdkhl +bin/keytool hl +bin/orbd hl +bin/pack200 hl +bin/policytool jre +bin/rmic jdkhl +bin/rmid hl +bin/rmiregistry hl +bin/schemagen jdkhl +bin/serialver jdkhl +bin/servertool hl +bin/tnameserv hl +bin/traceformat jdkhl +bin/unpack200 hl +bin/wsgen jdkhl +bin/wsimport jdkhl +bin/xjc jdkhl +lib/jexec hl diff --git a/linux/deb/config/jinfo b/linux/deb/config/jinfo new file mode 100644 index 000000000..492e24ff4 --- /dev/null +++ b/linux/deb/config/jinfo @@ -0,0 +1,8 @@ +name={{ jdkDirectoryName }} +alias={{ jdkDirectoryName }} +priority={{ priority }} +section=contrib + +{{ #tools }} +{{ type }} {{ name}} {{ prefix }}/{{ jdkDirectoryName }}/{{ path }} +{{ /tools }} diff --git a/linux/deb/config/postinst.sh b/linux/deb/config/postinst.sh new file mode 100755 index 000000000..315824810 --- /dev/null +++ b/linux/deb/config/postinst.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +set -eu + +priority={{ priority }} +jdk_base_dir={{ prefix }}/{{ jdkDirectoryName }} +tools="{{ toolsAsLine }}" + +case "$1" in +configure) + for tool in $tools ; do + for tool_path in "$jdk_base_dir/bin/$tool" "$jdk_base_dir/lib/$tool" ; do + if [ ! -e "$tool_path" ]; then + continue + fi + + slave="" + tool_man_path="$jdk_base_dir/man/man1/$tool.1" + if [ -e "$tool_man_path" ]; then + slave="--slave /usr/share/man/man1/$tool.1 $tool.1 $tool_man_path" + fi + + update-alternatives \ + --install \ + "/usr/bin/$tool" \ + "$tool" \ + "$tool_path" \ + "$priority" \ + $slave + done + done +;; +esac diff --git a/linux/deb/config/prerm.sh b/linux/deb/config/prerm.sh new file mode 100755 index 000000000..b3038db1f --- /dev/null +++ b/linux/deb/config/prerm.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +set -eu + +jdk_base_dir={{ prefix }}/{{ jdkDirectoryName }} +tools="{{ toolsAsLine }}" + +if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ] ; then + for tool in $tools ; do + for tool_path in "$jdk_base_dir/bin/$tool" "$jdk_base_dir/lib/$tool" ; do + if [ ! -e "$tool_path" ] ; then + continue + fi + + update-alternatives --remove "$tool" "$tool_path" + done + done +fi diff --git a/linux/find_tools.sh b/linux/find_tools.sh new file mode 100755 index 000000000..a45d7d08c --- /dev/null +++ b/linux/find_tools.sh @@ -0,0 +1,9 @@ +#! /bin/bash + +set -eu + +for tool_path in $(find $1 -type f -executable) ; do + tool_dir_path=${tool_path%/*} + tool_dir=${tool_dir_path##*/} + echo $tool_dir/${tool_path##*/} +done diff --git a/linux/gradle.properties b/linux/gradle.properties new file mode 100644 index 000000000..43dbe1e78 --- /dev/null +++ b/linux/gradle.properties @@ -0,0 +1 @@ +org.gradle.jvmargs="-Dfile.encoding=UTF-8" diff --git a/linux/gradle/wrapper/gradle-wrapper.jar b/linux/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..87b738cbd051603d91cc39de6cb000dd98fe6b02 GIT binary patch literal 55190 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 z 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 \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/linux/gradlew.bat b/linux/gradlew.bat new file mode 100644 index 000000000..0f8d5937c --- /dev/null +++ b/linux/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/linux/required_libs.sh b/linux/required_libs.sh new file mode 100755 index 000000000..244a9dc87 --- /dev/null +++ b/linux/required_libs.sh @@ -0,0 +1,14 @@ +#! /bin/bash + +set -eu + +libs=() +for file in $(find $1 -type f -executable -or -name '*.so') ; do + libs+=( $(objdump -p $file | grep NEEDED | tr -s " " | cut -d" " -f3) ) +done + +unique_libs=( $(printf "%s\n" "${libs[@]}" | sort -u) ); + +for lib in "${unique_libs[@]}" ; do + echo "$lib" +done diff --git a/linux/rpm/build.gradle b/linux/rpm/build.gradle new file mode 100644 index 000000000..a44e62f63 --- /dev/null +++ b/linux/rpm/build.gradle @@ -0,0 +1,52 @@ +tasks.register("buildRedHatRpmPackage", net.adoptopenjdk.installer.BuildRpmPackage) { + packageName = "java-${jdkMajorVersion}-adoptopenjdk-${pkgMetadata.vm}" + packageVersion = jdkVersion + iteration = version + architecture = pkgMetadata.architecture.rpmQualifier() + vm = pkgMetadata.vm + maintainer = pkgMetadata.maintainer + vendor = pkgMetadata.vendor + homepage = pkgMetadata.homepage + license = pkgMetadata.license + packageDescription = pkgMetadata.description + category = "java" + dependenciesFile = file("config/jdk-${jdkMajorVersion}-${pkgMetadata.vm}/dependencies.txt") + providesFile = file("config/jdk-${jdkMajorVersion}-${pkgMetadata.vm}/provides.txt") + prefix = "/usr/lib/jvm" + afterInstallScript = file("config/jdk-${jdkMajorVersion}-${pkgMetadata.vm}/postinst.sh") + beforeRemoveScript = file("config/prerm.sh") + prebuiltJdkDirectory = jdkDistributionDir + variant = "redhat" +} + +tasks.register("buildSuseRpmPackage", net.adoptopenjdk.installer.BuildRpmPackage) { + packageName = "java-${jdkMajorVersion}-adoptopenjdk-${pkgMetadata.vm}" + packageVersion = jdkVersion + iteration = version + architecture = pkgMetadata.architecture.rpmQualifier() + vm = pkgMetadata.vm + maintainer = pkgMetadata.maintainer + vendor = pkgMetadata.vendor + homepage = pkgMetadata.homepage + license = pkgMetadata.license + packageDescription = pkgMetadata.description + category = "java" + dependenciesFile = file("config/jdk-${jdkMajorVersion}-${pkgMetadata.vm}/dependencies.txt") + providesFile = file("config/jdk-${jdkMajorVersion}-${pkgMetadata.vm}/provides.txt") + prefix = "/usr/lib64/jvm" + afterInstallScript = file("config/jdk-${jdkMajorVersion}-${pkgMetadata.vm}/postinst.sh") + beforeRemoveScript = file("config/prerm.sh") + prebuiltJdkDirectory = jdkDistributionDir + variant = "suse" + signPackage = getSignPackageProperty() +} + +task buildRpmPackage { + dependsOn "buildRedHatRpmPackage", "buildSuseRpmPackage" +} + +build.dependsOn(buildRpmPackage) + +def getSignPackageProperty() { + return hasProperty("SIGN_PACKAGE") ? Boolean.parseBoolean(SIGN_PACKAGE) : false +} diff --git a/linux/rpm/config/jdk-10-hotspot/dependencies.txt b/linux/rpm/config/jdk-10-hotspot/dependencies.txt new file mode 100644 index 000000000..711bc739a --- /dev/null +++ b/linux/rpm/config/jdk-10-hotspot/dependencies.txt @@ -0,0 +1,15 @@ +/bin/sh +/usr/sbin/alternatives +ca-certificates +libX11.so.6 +libXext.so.6 +libXi.so.6 +libXrender.so.1 +libXtst.so.6 +libasound.so.2 +libc.so.6 +libdl.so.2 +libm.so.6 +libpthread.so.0 +libthread_db.so.1 +libz.so.1 diff --git a/linux/rpm/config/jdk-10-hotspot/postinst.sh b/linux/rpm/config/jdk-10-hotspot/postinst.sh new file mode 100644 index 000000000..efdc603db --- /dev/null +++ b/linux/rpm/config/jdk-10-hotspot/postinst.sh @@ -0,0 +1,79 @@ +if [ $1 -ge 1 ] ; then + update-alternatives --install /usr/bin/java java {{ prefix }}/{{ jdkDirectoryName }}/bin/java 1101 \ + --slave /usr/bin/jjs jjs {{ prefix }}/{{ jdkDirectoryName }}/bin/jjs \ + --slave /usr/bin/jrunscript jrunscript {{ prefix }}/{{ jdkDirectoryName }}/bin/jrunscript \ + --slave /usr/bin/keytool keytool {{ prefix }}/{{ jdkDirectoryName }}/bin/keytool \ + --slave /usr/bin/orbd orbd {{ prefix }}/{{ jdkDirectoryName }}/bin/orbd \ + --slave /usr/bin/pack200 pack200 {{ prefix }}/{{ jdkDirectoryName }}/bin/pack200 \ + --slave /usr/bin/rmid rmid {{ prefix }}/{{ jdkDirectoryName }}/bin/rmid \ + --slave /usr/bin/rmiregistry rmiregistry {{ prefix }}/{{ jdkDirectoryName }}/bin/rmiregistry \ + --slave /usr/bin/servertool servertool {{ prefix }}/{{ jdkDirectoryName }}/bin/servertool \ + --slave /usr/bin/tnameserv tnameserv {{ prefix }}/{{ jdkDirectoryName }}/bin/tnameserv \ + --slave /usr/bin/unpack200 unpack200 {{ prefix }}/{{ jdkDirectoryName }}/bin/unpack200 \ + --slave /usr/bin/jexec jexec {{ prefix }}/{{ jdkDirectoryName }}/lib/jexec \ + --slave /usr/share/man/man1/java.1 java.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/java.1 \ + --slave /usr/share/man/man1/jjs.1 jjs.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jjs.1 \ + --slave /usr/share/man/man1/jrunscript.1 jrunscript.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jrunscript.1 \ + --slave /usr/share/man/man1/keytool.1 keytool.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/keytool.1 \ + --slave /usr/share/man/man1/orbd.1 orbd.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/orbd.1 \ + --slave /usr/share/man/man1/pack200.1 pack200.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/pack200.1 \ + --slave /usr/share/man/man1/rmid.1 rmid.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmid.1 \ + --slave /usr/share/man/man1/rmiregistry.1 rmiregistry.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmiregistry.1 \ + --slave /usr/share/man/man1/servertool.1 servertool.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/servertool.1 \ + --slave /usr/share/man/man1/tnameserv.1 tnameserv.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/tnameserv.1 \ + --slave /usr/share/man/man1/unpack200.1 unpack200.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/unpack200.1 + + update-alternatives --install /usr/bin/javac javac {{ prefix }}/{{ jdkDirectoryName }}/bin/javac 1101 \ + --slave /usr/bin/appletviewer appletviewer {{ prefix }}/{{ jdkDirectoryName }}/bin/appletviewer \ + --slave /usr/bin/idlj idlj {{ prefix }}/{{ jdkDirectoryName }}/bin/idlj \ + --slave /usr/bin/jaotc jaotc {{ prefix }}/{{ jdkDirectoryName }}/bin/jaotc \ + --slave /usr/bin/jar jar {{ prefix }}/{{ jdkDirectoryName }}/bin/jar \ + --slave /usr/bin/jarsigner jarsigner {{ prefix }}/{{ jdkDirectoryName }}/bin/jarsigner \ + --slave /usr/bin/javadoc javadoc {{ prefix }}/{{ jdkDirectoryName }}/bin/javadoc \ + --slave /usr/bin/javap javap {{ prefix }}/{{ jdkDirectoryName }}/bin/javap \ + --slave /usr/bin/jcmd jcmd {{ prefix }}/{{ jdkDirectoryName }}/bin/jcmd \ + --slave /usr/bin/jconsole jconsole {{ prefix }}/{{ jdkDirectoryName }}/bin/jconsole \ + --slave /usr/bin/jdb jdb {{ prefix }}/{{ jdkDirectoryName }}/bin/jdb \ + --slave /usr/bin/jdeprscan jdeprscan {{ prefix }}/{{ jdkDirectoryName }}/bin/jdeprscan \ + --slave /usr/bin/jdeps jdeps {{ prefix }}/{{ jdkDirectoryName }}/bin/jdeps \ + --slave /usr/bin/jhsdb jhsdb {{ prefix }}/{{ jdkDirectoryName }}/bin/jhsdb \ + --slave /usr/bin/jimage jimage {{ prefix }}/{{ jdkDirectoryName }}/bin/jimage \ + --slave /usr/bin/jinfo jinfo {{ prefix }}/{{ jdkDirectoryName }}/bin/jinfo \ + --slave /usr/bin/jlink jlink {{ prefix }}/{{ jdkDirectoryName }}/bin/jlink \ + --slave /usr/bin/jmap jmap {{ prefix }}/{{ jdkDirectoryName }}/bin/jmap \ + --slave /usr/bin/jmod jmod {{ prefix }}/{{ jdkDirectoryName }}/bin/jmod \ + --slave /usr/bin/jps jps {{ prefix }}/{{ jdkDirectoryName }}/bin/jps \ + --slave /usr/bin/jshell jshell {{ prefix }}/{{ jdkDirectoryName }}/bin/jshell \ + --slave /usr/bin/jstack jstack {{ prefix }}/{{ jdkDirectoryName }}/bin/jstack \ + --slave /usr/bin/jstat jstat {{ prefix }}/{{ jdkDirectoryName }}/bin/jstat \ + --slave /usr/bin/jstatd jstatd {{ prefix }}/{{ jdkDirectoryName }}/bin/jstatd \ + --slave /usr/bin/rmic rmic {{ prefix }}/{{ jdkDirectoryName }}/bin/rmic \ + --slave /usr/bin/schemagen schemagen {{ prefix }}/{{ jdkDirectoryName }}/bin/schemagen \ + --slave /usr/bin/serialver serialver {{ prefix }}/{{ jdkDirectoryName }}/bin/serialver \ + --slave /usr/bin/wsgen wsgen {{ prefix }}/{{ jdkDirectoryName }}/bin/wsgen \ + --slave /usr/bin/wsimport wsimport {{ prefix }}/{{ jdkDirectoryName }}/bin/wsimport \ + --slave /usr/bin/xjc xjc {{ prefix }}/{{ jdkDirectoryName }}/bin/xjc \ + --slave /usr/share/man/man1/appletviewer.1 appletviewer.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/appletviewer.1 \ + --slave /usr/share/man/man1/idlj.1 idlj.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/idlj.1 \ + --slave /usr/share/man/man1/jar.1 jar.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jar.1 \ + --slave /usr/share/man/man1/jarsigner.1 jarsigner.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jarsigner.1 \ + --slave /usr/share/man/man1/javac.1 javac.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javac.1 \ + --slave /usr/share/man/man1/javadoc.1 javadoc.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javadoc.1 \ + --slave /usr/share/man/man1/javap.1 javap.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javap.1 \ + --slave /usr/share/man/man1/jcmd.1 jcmd.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jcmd.1 \ + --slave /usr/share/man/man1/jconsole.1 jconsole.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jconsole.1 \ + --slave /usr/share/man/man1/jdb.1 jdb.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jdb.1 \ + --slave /usr/share/man/man1/jdeps.1 jdeps.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jdeps.1 \ + --slave /usr/share/man/man1/jinfo.1 jinfo.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jinfo.1 \ + --slave /usr/share/man/man1/jmap.1 jmap.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jmap.1 \ + --slave /usr/share/man/man1/jps.1 jps.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jps.1 \ + --slave /usr/share/man/man1/jstack.1 jstack.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jstack.1 \ + --slave /usr/share/man/man1/jstat.1 jstat.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jstat.1 \ + --slave /usr/share/man/man1/jstatd.1 jstatd.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jstatd.1 \ + --slave /usr/share/man/man1/rmic.1 rmic.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmic.1 \ + --slave /usr/share/man/man1/schemagen.1 schemagen.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/schemagen.1 \ + --slave /usr/share/man/man1/serialver.1 serialver.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/serialver.1 \ + --slave /usr/share/man/man1/wsgen.1 wsgen.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/wsgen.1 \ + --slave /usr/share/man/man1/wsimport.1 wsimport.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/wsimport.1 \ + --slave /usr/share/man/man1/xjc.1 xjc.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/xjc.1 +fi diff --git a/linux/rpm/config/jdk-10-hotspot/provides.txt b/linux/rpm/config/jdk-10-hotspot/provides.txt new file mode 100644 index 000000000..3b97f8fea --- /dev/null +++ b/linux/rpm/config/jdk-10-hotspot/provides.txt @@ -0,0 +1,8 @@ +java +java-10 +java-10-openjdk +java-openjdk +jre +jre-10 +jre-10-openjdk +jre-openjdk diff --git a/linux/rpm/config/jdk-10-openj9/dependencies.txt b/linux/rpm/config/jdk-10-openj9/dependencies.txt new file mode 100644 index 000000000..31aaca919 --- /dev/null +++ b/linux/rpm/config/jdk-10-openj9/dependencies.txt @@ -0,0 +1,17 @@ +/bin/sh +/usr/sbin/alternatives +ca-certificates +libX11.so.6 +libXext.so.6 +libXi.so.6 +libXrender.so.1 +libXtst.so.6 +libasound.so.2 +libc.so.6 +libdl.so.2 +libgcc_s.so.1 +libm.so.6 +libpthread.so.0 +libthread_db.so.1 +librt.so.1 +libz.so.1 diff --git a/linux/rpm/config/jdk-10-openj9/postinst.sh b/linux/rpm/config/jdk-10-openj9/postinst.sh new file mode 100644 index 000000000..afb1324d7 --- /dev/null +++ b/linux/rpm/config/jdk-10-openj9/postinst.sh @@ -0,0 +1,78 @@ +if [ $1 -ge 1 ] ; then + update-alternatives --install /usr/bin/java java {{ prefix }}/{{ jdkDirectoryName }}/bin/java 1101 \ + --slave /usr/bin/jjs jjs {{ prefix }}/{{ jdkDirectoryName }}/bin/jjs \ + --slave /usr/bin/jrunscript jrunscript {{ prefix }}/{{ jdkDirectoryName }}/bin/jrunscript \ + --slave /usr/bin/keytool keytool {{ prefix }}/{{ jdkDirectoryName }}/bin/keytool \ + --slave /usr/bin/orbd orbd {{ prefix }}/{{ jdkDirectoryName }}/bin/orbd \ + --slave /usr/bin/pack200 pack200 {{ prefix }}/{{ jdkDirectoryName }}/bin/pack200 \ + --slave /usr/bin/rmid rmid {{ prefix }}/{{ jdkDirectoryName }}/bin/rmid \ + --slave /usr/bin/rmiregistry rmiregistry {{ prefix }}/{{ jdkDirectoryName }}/bin/rmiregistry \ + --slave /usr/bin/servertool servertool {{ prefix }}/{{ jdkDirectoryName }}/bin/servertool \ + --slave /usr/bin/tnameserv tnameserv {{ prefix }}/{{ jdkDirectoryName }}/bin/tnameserv \ + --slave /usr/bin/unpack200 unpack200 {{ prefix }}/{{ jdkDirectoryName }}/bin/unpack200 \ + --slave /usr/bin/jexec jexec {{ prefix }}/{{ jdkDirectoryName }}/lib/jexec \ + --slave /usr/share/man/man1/java.1 java.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/java.1 \ + --slave /usr/share/man/man1/jjs.1 jjs.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jjs.1 \ + --slave /usr/share/man/man1/jrunscript.1 jrunscript.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jrunscript.1 \ + --slave /usr/share/man/man1/keytool.1 keytool.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/keytool.1 \ + --slave /usr/share/man/man1/orbd.1 orbd.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/orbd.1 \ + --slave /usr/share/man/man1/pack200.1 pack200.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/pack200.1 \ + --slave /usr/share/man/man1/rmid.1 rmid.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmid.1 \ + --slave /usr/share/man/man1/rmiregistry.1 rmiregistry.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmiregistry.1 \ + --slave /usr/share/man/man1/servertool.1 servertool.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/servertool.1 \ + --slave /usr/share/man/man1/tnameserv.1 tnameserv.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/tnameserv.1 \ + --slave /usr/share/man/man1/unpack200.1 unpack200.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/unpack200.1 + + update-alternatives --install /usr/bin/javac javac {{ prefix }}/{{ jdkDirectoryName }}/bin/javac 1101 \ + --slave /usr/bin/appletviewer appletviewer {{ prefix }}/{{ jdkDirectoryName }}/bin/appletviewer \ + --slave /usr/bin/idlj idlj {{ prefix }}/{{ jdkDirectoryName }}/bin/idlj \ + --slave /usr/bin/jar jar {{ prefix }}/{{ jdkDirectoryName }}/bin/jar \ + --slave /usr/bin/jarsigner jarsigner {{ prefix }}/{{ jdkDirectoryName }}/bin/jarsigner \ + --slave /usr/bin/javadoc javadoc {{ prefix }}/{{ jdkDirectoryName }}/bin/javadoc \ + --slave /usr/bin/javap javap {{ prefix }}/{{ jdkDirectoryName }}/bin/javap \ + --slave /usr/bin/jcmd jcmd {{ prefix }}/{{ jdkDirectoryName }}/bin/jcmd \ + --slave /usr/bin/jconsole jconsole {{ prefix }}/{{ jdkDirectoryName }}/bin/jconsole \ + --slave /usr/bin/jdb jdb {{ prefix }}/{{ jdkDirectoryName }}/bin/jdb \ + --slave /usr/bin/jdeprscan jdeprscan {{ prefix }}/{{ jdkDirectoryName }}/bin/jdeprscan \ + --slave /usr/bin/jdeps jdeps {{ prefix }}/{{ jdkDirectoryName }}/bin/jdeps \ + --slave /usr/bin/jdmpview jdmpview {{ prefix }}/{{ jdkDirectoryName }}/bin/jdmpview \ + --slave /usr/bin/jextract jextract {{ prefix }}/{{ jdkDirectoryName }}/bin/jextract \ + --slave /usr/bin/jimage jimage {{ prefix }}/{{ jdkDirectoryName }}/bin/jimage \ + --slave /usr/bin/jinfo jinfo {{ prefix }}/{{ jdkDirectoryName }}/bin/jinfo \ + --slave /usr/bin/jlink jlink {{ prefix }}/{{ jdkDirectoryName }}/bin/jlink \ + --slave /usr/bin/jmap jmap {{ prefix }}/{{ jdkDirectoryName }}/bin/jmap \ + --slave /usr/bin/jmod jmod {{ prefix }}/{{ jdkDirectoryName }}/bin/jmod \ + --slave /usr/bin/jps jps {{ prefix }}/{{ jdkDirectoryName }}/bin/jps \ + --slave /usr/bin/jshell jshell {{ prefix }}/{{ jdkDirectoryName }}/bin/jshell \ + --slave /usr/bin/jstack jstack {{ prefix }}/{{ jdkDirectoryName }}/bin/jstack \ + --slave /usr/bin/jstat jstat {{ prefix }}/{{ jdkDirectoryName }}/bin/jstat \ + --slave /usr/bin/rmic rmic {{ prefix }}/{{ jdkDirectoryName }}/bin/rmic \ + --slave /usr/bin/schemagen schemagen {{ prefix }}/{{ jdkDirectoryName }}/bin/schemagen \ + --slave /usr/bin/serialver serialver {{ prefix }}/{{ jdkDirectoryName }}/bin/serialver \ + --slave /usr/bin/traceformat traceformat {{ prefix }}/{{ jdkDirectoryName }}/bin/traceformat \ + --slave /usr/bin/wsgen wsgen {{ prefix }}/{{ jdkDirectoryName }}/bin/wsgen \ + --slave /usr/bin/wsimport wsimport {{ prefix }}/{{ jdkDirectoryName }}/bin/wsimport \ + --slave /usr/bin/xjc xjc {{ prefix }}/{{ jdkDirectoryName }}/bin/xjc \ + --slave /usr/share/man/man1/appletviewer.1 appletviewer.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/appletviewer.1 \ + --slave /usr/share/man/man1/idlj.1 idlj.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/idlj.1 \ + --slave /usr/share/man/man1/jar.1 jar.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jar.1 \ + --slave /usr/share/man/man1/jarsigner.1 jarsigner.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jarsigner.1 \ + --slave /usr/share/man/man1/javac.1 javac.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javac.1 \ + --slave /usr/share/man/man1/javadoc.1 javadoc.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javadoc.1 \ + --slave /usr/share/man/man1/javap.1 javap.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javap.1 \ + --slave /usr/share/man/man1/jcmd.1 jcmd.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jcmd.1 \ + --slave /usr/share/man/man1/jconsole.1 jconsole.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jconsole.1 \ + --slave /usr/share/man/man1/jdb.1 jdb.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jdb.1 \ + --slave /usr/share/man/man1/jdeps.1 jdeps.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jdeps.1 \ + --slave /usr/share/man/man1/jinfo.1 jinfo.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jinfo.1 \ + --slave /usr/share/man/man1/jmap.1 jmap.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jmap.1 \ + --slave /usr/share/man/man1/jps.1 jps.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jps.1 \ + --slave /usr/share/man/man1/jstack.1 jstack.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jstack.1 \ + --slave /usr/share/man/man1/jstat.1 jstat.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jstat.1 \ + --slave /usr/share/man/man1/rmic.1 rmic.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmic.1 \ + --slave /usr/share/man/man1/schemagen.1 schemagen.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/schemagen.1 \ + --slave /usr/share/man/man1/serialver.1 serialver.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/serialver.1 \ + --slave /usr/share/man/man1/wsgen.1 wsgen.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/wsgen.1 \ + --slave /usr/share/man/man1/wsimport.1 wsimport.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/wsimport.1 \ + --slave /usr/share/man/man1/xjc.1 xjc.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/xjc.1 +fi diff --git a/linux/rpm/config/jdk-10-openj9/provides.txt b/linux/rpm/config/jdk-10-openj9/provides.txt new file mode 100644 index 000000000..3b97f8fea --- /dev/null +++ b/linux/rpm/config/jdk-10-openj9/provides.txt @@ -0,0 +1,8 @@ +java +java-10 +java-10-openjdk +java-openjdk +jre +jre-10 +jre-10-openjdk +jre-openjdk diff --git a/linux/rpm/config/jdk-11-hotspot/dependencies.txt b/linux/rpm/config/jdk-11-hotspot/dependencies.txt new file mode 100644 index 000000000..711bc739a --- /dev/null +++ b/linux/rpm/config/jdk-11-hotspot/dependencies.txt @@ -0,0 +1,15 @@ +/bin/sh +/usr/sbin/alternatives +ca-certificates +libX11.so.6 +libXext.so.6 +libXi.so.6 +libXrender.so.1 +libXtst.so.6 +libasound.so.2 +libc.so.6 +libdl.so.2 +libm.so.6 +libpthread.so.0 +libthread_db.so.1 +libz.so.1 diff --git a/linux/rpm/config/jdk-11-hotspot/postinst.sh b/linux/rpm/config/jdk-11-hotspot/postinst.sh new file mode 100644 index 000000000..df47463f8 --- /dev/null +++ b/linux/rpm/config/jdk-11-hotspot/postinst.sh @@ -0,0 +1,61 @@ +if [ $1 -ge 1 ] ; then + update-alternatives --install /usr/bin/java java {{ prefix }}/{{ jdkDirectoryName }}/bin/java 1111 \ + --slave /usr/bin/jjs jjs {{ prefix }}/{{ jdkDirectoryName }}/bin/jjs \ + --slave /usr/bin/jrunscript jrunscript {{ prefix }}/{{ jdkDirectoryName }}/bin/jrunscript \ + --slave /usr/bin/keytool keytool {{ prefix }}/{{ jdkDirectoryName }}/bin/keytool \ + --slave /usr/bin/pack200 pack200 {{ prefix }}/{{ jdkDirectoryName }}/bin/pack200 \ + --slave /usr/bin/rmid rmid {{ prefix }}/{{ jdkDirectoryName }}/bin/rmid \ + --slave /usr/bin/rmiregistry rmiregistry {{ prefix }}/{{ jdkDirectoryName }}/bin/rmiregistry \ + --slave /usr/bin/unpack200 unpack200 {{ prefix }}/{{ jdkDirectoryName }}/bin/unpack200 \ + --slave /usr/bin/jexec jexec {{ prefix }}/{{ jdkDirectoryName }}/lib/jexec \ + --slave /usr/share/man/man1/java.1 java.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/java.1 \ + --slave /usr/share/man/man1/jjs.1 jjs.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jjs.1 \ + --slave /usr/share/man/man1/jrunscript.1 jrunscript.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jrunscript.1 \ + --slave /usr/share/man/man1/keytool.1 keytool.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/keytool.1 \ + --slave /usr/share/man/man1/pack200.1 pack200.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/pack200.1 \ + --slave /usr/share/man/man1/rmid.1 rmid.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmid.1 \ + --slave /usr/share/man/man1/rmiregistry.1 rmiregistry.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmiregistry.1 \ + --slave /usr/share/man/man1/unpack200.1 unpack200.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/unpack200.1 + + update-alternatives --install /usr/bin/javac javac {{ prefix }}/{{ jdkDirectoryName }}/bin/javac 1111 \ + --slave /usr/bin/jaotc jaotc {{ prefix }}/{{ jdkDirectoryName }}/bin/jaotc \ + --slave /usr/bin/jar jar {{ prefix }}/{{ jdkDirectoryName }}/bin/jar \ + --slave /usr/bin/jarsigner jarsigner {{ prefix }}/{{ jdkDirectoryName }}/bin/jarsigner \ + --slave /usr/bin/javadoc javadoc {{ prefix }}/{{ jdkDirectoryName }}/bin/javadoc \ + --slave /usr/bin/javap javap {{ prefix }}/{{ jdkDirectoryName }}/bin/javap \ + --slave /usr/bin/jcmd jcmd {{ prefix }}/{{ jdkDirectoryName }}/bin/jcmd \ + --slave /usr/bin/jconsole jconsole {{ prefix }}/{{ jdkDirectoryName }}/bin/jconsole \ + --slave /usr/bin/jdb jdb {{ prefix }}/{{ jdkDirectoryName }}/bin/jdb \ + --slave /usr/bin/jdeprscan jdeprscan {{ prefix }}/{{ jdkDirectoryName }}/bin/jdeprscan \ + --slave /usr/bin/jdeps jdeps {{ prefix }}/{{ jdkDirectoryName }}/bin/jdeps \ + --slave /usr/bin/jhsdb jhsdb {{ prefix }}/{{ jdkDirectoryName }}/bin/jhsdb \ + --slave /usr/bin/jimage jimage {{ prefix }}/{{ jdkDirectoryName }}/bin/jimage \ + --slave /usr/bin/jinfo jinfo {{ prefix }}/{{ jdkDirectoryName }}/bin/jinfo \ + --slave /usr/bin/jlink jlink {{ prefix }}/{{ jdkDirectoryName }}/bin/jlink \ + --slave /usr/bin/jmap jmap {{ prefix }}/{{ jdkDirectoryName }}/bin/jmap \ + --slave /usr/bin/jmod jmod {{ prefix }}/{{ jdkDirectoryName }}/bin/jmod \ + --slave /usr/bin/jps jps {{ prefix }}/{{ jdkDirectoryName }}/bin/jps \ + --slave /usr/bin/jshell jshell {{ prefix }}/{{ jdkDirectoryName }}/bin/jshell \ + --slave /usr/bin/jstack jstack {{ prefix }}/{{ jdkDirectoryName }}/bin/jstack \ + --slave /usr/bin/jstat jstat {{ prefix }}/{{ jdkDirectoryName }}/bin/jstat \ + --slave /usr/bin/jstatd jstatd {{ prefix }}/{{ jdkDirectoryName }}/bin/jstatd \ + --slave /usr/bin/rmic rmic {{ prefix }}/{{ jdkDirectoryName }}/bin/rmic \ + --slave /usr/bin/serialver serialver {{ prefix }}/{{ jdkDirectoryName }}/bin/serialver \ + --slave /usr/share/man/man1/jar.1 jar.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jar.1 \ + --slave /usr/share/man/man1/jarsigner.1 jarsigner.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jarsigner.1 \ + --slave /usr/share/man/man1/javac.1 javac.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javac.1 \ + --slave /usr/share/man/man1/javadoc.1 javadoc.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javadoc.1 \ + --slave /usr/share/man/man1/javap.1 javap.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javap.1 \ + --slave /usr/share/man/man1/jcmd.1 jcmd.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jcmd.1 \ + --slave /usr/share/man/man1/jconsole.1 jconsole.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jconsole.1 \ + --slave /usr/share/man/man1/jdb.1 jdb.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jdb.1 \ + --slave /usr/share/man/man1/jdeps.1 jdeps.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jdeps.1 \ + --slave /usr/share/man/man1/jinfo.1 jinfo.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jinfo.1 \ + --slave /usr/share/man/man1/jmap.1 jmap.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jmap.1 \ + --slave /usr/share/man/man1/jps.1 jps.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jps.1 \ + --slave /usr/share/man/man1/jstack.1 jstack.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jstack.1 \ + --slave /usr/share/man/man1/jstat.1 jstat.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jstat.1 \ + --slave /usr/share/man/man1/jstatd.1 jstatd.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jstatd.1 \ + --slave /usr/share/man/man1/rmic.1 rmic.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmic.1 \ + --slave /usr/share/man/man1/serialver.1 serialver.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/serialver.1 +fi diff --git a/linux/rpm/config/jdk-11-hotspot/provides.txt b/linux/rpm/config/jdk-11-hotspot/provides.txt new file mode 100644 index 000000000..86a6bed8f --- /dev/null +++ b/linux/rpm/config/jdk-11-hotspot/provides.txt @@ -0,0 +1,8 @@ +java +java-11 +java-11-openjdk +java-openjdk +jre +jre-11 +jre-11-openjdk +jre-openjdk diff --git a/linux/rpm/config/jdk-11-openj9/dependencies.txt b/linux/rpm/config/jdk-11-openj9/dependencies.txt new file mode 100644 index 000000000..c6a3607e9 --- /dev/null +++ b/linux/rpm/config/jdk-11-openj9/dependencies.txt @@ -0,0 +1,16 @@ +/bin/sh +/usr/sbin/alternatives +ca-certificates +libX11.so.6 +libXext.so.6 +libXi.so.6 +libXrender.so.1 +libXtst.so.6 +libasound.so.2 +libc.so.6 +libcrypto.so.1.1 +libdl.so.2 +libm.so.6 +libpthread.so.0 +librt.so.1 +libz.so.1 diff --git a/linux/rpm/config/jdk-11-openj9/postinst.sh b/linux/rpm/config/jdk-11-openj9/postinst.sh new file mode 100644 index 000000000..3bf0737ae --- /dev/null +++ b/linux/rpm/config/jdk-11-openj9/postinst.sh @@ -0,0 +1,48 @@ +if [ $1 -ge 1 ] ; then + update-alternatives --install /usr/bin/java java {{ prefix }}/{{ jdkDirectoryName }}/bin/java 1111 \ + --slave /usr/bin/jjs jjs {{ prefix }}/{{ jdkDirectoryName }}/bin/jjs \ + --slave /usr/bin/jrunscript jrunscript {{ prefix }}/{{ jdkDirectoryName }}/bin/jrunscript \ + --slave /usr/bin/keytool keytool {{ prefix }}/{{ jdkDirectoryName }}/bin/keytool \ + --slave /usr/bin/pack200 pack200 {{ prefix }}/{{ jdkDirectoryName }}/bin/pack200 \ + --slave /usr/bin/rmid rmid {{ prefix }}/{{ jdkDirectoryName }}/bin/rmid \ + --slave /usr/bin/rmiregistry rmiregistry {{ prefix }}/{{ jdkDirectoryName }}/bin/rmiregistry \ + --slave /usr/bin/unpack200 unpack200 {{ prefix }}/{{ jdkDirectoryName }}/bin/unpack200 \ + --slave /usr/bin/jexec jexec {{ prefix }}/{{ jdkDirectoryName }}/lib/jexec \ + --slave /usr/share/man/man1/java.1 java.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/java.1 \ + --slave /usr/share/man/man1/jjs.1 jjs.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jjs.1 \ + --slave /usr/share/man/man1/jrunscript.1 jrunscript.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jrunscript.1 \ + --slave /usr/share/man/man1/keytool.1 keytool.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/keytool.1 \ + --slave /usr/share/man/man1/pack200.1 pack200.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/pack200.1 \ + --slave /usr/share/man/man1/rmid.1 rmid.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmid.1 \ + --slave /usr/share/man/man1/rmiregistry.1 rmiregistry.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmiregistry.1 \ + --slave /usr/share/man/man1/unpack200.1 unpack200.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/unpack200.1 + + update-alternatives --install /usr/bin/javac javac {{ prefix }}/{{ jdkDirectoryName }}/bin/javac 1111 \ + --slave /usr/bin/jar jar {{ prefix }}/{{ jdkDirectoryName }}/bin/jar \ + --slave /usr/bin/jarsigner jarsigner {{ prefix }}/{{ jdkDirectoryName }}/bin/jarsigner \ + --slave /usr/bin/javadoc javadoc {{ prefix }}/{{ jdkDirectoryName }}/bin/javadoc \ + --slave /usr/bin/javap javap {{ prefix }}/{{ jdkDirectoryName }}/bin/javap \ + --slave /usr/bin/jconsole jconsole {{ prefix }}/{{ jdkDirectoryName }}/bin/jconsole \ + --slave /usr/bin/jdb jdb {{ prefix }}/{{ jdkDirectoryName }}/bin/jdb \ + --slave /usr/bin/jdeprscan jdeprscan {{ prefix }}/{{ jdkDirectoryName }}/bin/jdeprscan \ + --slave /usr/bin/jdeps jdeps {{ prefix }}/{{ jdkDirectoryName }}/bin/jdeps \ + --slave /usr/bin/jdmpview jdmpview {{ prefix }}/{{ jdkDirectoryName }}/bin/jdmpview \ + --slave /usr/bin/jextract jextract {{ prefix }}/{{ jdkDirectoryName }}/bin/jextract \ + --slave /usr/bin/jimage jimage {{ prefix }}/{{ jdkDirectoryName }}/bin/jimage \ + --slave /usr/bin/jlink jlink {{ prefix }}/{{ jdkDirectoryName }}/bin/jlink \ + --slave /usr/bin/jmod jmod {{ prefix }}/{{ jdkDirectoryName }}/bin/jmod \ + --slave /usr/bin/jshell jshell {{ prefix }}/{{ jdkDirectoryName }}/bin/jshell \ + --slave /usr/bin/rmic rmic {{ prefix }}/{{ jdkDirectoryName }}/bin/rmic \ + --slave /usr/bin/serialver serialver {{ prefix }}/{{ jdkDirectoryName }}/bin/serialver \ + --slave /usr/bin/traceformat traceformat {{ prefix }}/{{ jdkDirectoryName }}/bin/traceformat \ + --slave /usr/share/man/man1/jar.1 jar.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jar.1 \ + --slave /usr/share/man/man1/jarsigner.1 jarsigner.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jarsigner.1 \ + --slave /usr/share/man/man1/javac.1 javac.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javac.1 \ + --slave /usr/share/man/man1/javadoc.1 javadoc.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javadoc.1 \ + --slave /usr/share/man/man1/javap.1 javap.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javap.1 \ + --slave /usr/share/man/man1/jconsole.1 jconsole.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jconsole.1 \ + --slave /usr/share/man/man1/jdb.1 jdb.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jdb.1 \ + --slave /usr/share/man/man1/jdeps.1 jdeps.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jdeps.1 \ + --slave /usr/share/man/man1/rmic.1 rmic.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmic.1 \ + --slave /usr/share/man/man1/serialver.1 serialver.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/serialver.1 +fi diff --git a/linux/rpm/config/jdk-11-openj9/provides.txt b/linux/rpm/config/jdk-11-openj9/provides.txt new file mode 100644 index 000000000..86a6bed8f --- /dev/null +++ b/linux/rpm/config/jdk-11-openj9/provides.txt @@ -0,0 +1,8 @@ +java +java-11 +java-11-openjdk +java-openjdk +jre +jre-11 +jre-11-openjdk +jre-openjdk diff --git a/linux/rpm/config/jdk-12-hotspot/dependencies.txt b/linux/rpm/config/jdk-12-hotspot/dependencies.txt new file mode 100644 index 000000000..711bc739a --- /dev/null +++ b/linux/rpm/config/jdk-12-hotspot/dependencies.txt @@ -0,0 +1,15 @@ +/bin/sh +/usr/sbin/alternatives +ca-certificates +libX11.so.6 +libXext.so.6 +libXi.so.6 +libXrender.so.1 +libXtst.so.6 +libasound.so.2 +libc.so.6 +libdl.so.2 +libm.so.6 +libpthread.so.0 +libthread_db.so.1 +libz.so.1 diff --git a/linux/rpm/config/jdk-12-hotspot/postinst.sh b/linux/rpm/config/jdk-12-hotspot/postinst.sh new file mode 100644 index 000000000..a77990031 --- /dev/null +++ b/linux/rpm/config/jdk-12-hotspot/postinst.sh @@ -0,0 +1,63 @@ +if [ $1 -ge 1 ] ; then + update-alternatives --install /usr/bin/java java {{ prefix }}/{{ jdkDirectoryName }}/bin/java 1121 \ + --slave /usr/bin/jfr jfr {{ prefix }}/{{ jdkDirectoryName }}/bin/jfr \ + --slave /usr/bin/jjs jjs {{ prefix }}/{{ jdkDirectoryName }}/bin/jjs \ + --slave /usr/bin/jrunscript jrunscript {{ prefix }}/{{ jdkDirectoryName }}/bin/jrunscript \ + --slave /usr/bin/keytool keytool {{ prefix }}/{{ jdkDirectoryName }}/bin/keytool \ + --slave /usr/bin/pack200 pack200 {{ prefix }}/{{ jdkDirectoryName }}/bin/pack200 \ + --slave /usr/bin/rmid rmid {{ prefix }}/{{ jdkDirectoryName }}/bin/rmid \ + --slave /usr/bin/rmiregistry rmiregistry {{ prefix }}/{{ jdkDirectoryName }}/bin/rmiregistry \ + --slave /usr/bin/unpack200 unpack200 {{ prefix }}/{{ jdkDirectoryName }}/bin/unpack200 \ + --slave /usr/bin/jexec jexec {{ prefix }}/{{ jdkDirectoryName }}/lib/jexec \ + --slave /usr/bin/jspawnhelper jspawnhelper {{ prefix }}/{{ jdkDirectoryName }}/lib/jspawnhelper \ + --slave /usr/share/man/man1/java.1 java.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/java.1 \ + --slave /usr/share/man/man1/jjs.1 jjs.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jjs.1 \ + --slave /usr/share/man/man1/jrunscript.1 jrunscript.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jrunscript.1 \ + --slave /usr/share/man/man1/keytool.1 keytool.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/keytool.1 \ + --slave /usr/share/man/man1/pack200.1 pack200.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/pack200.1 \ + --slave /usr/share/man/man1/rmid.1 rmid.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmid.1 \ + --slave /usr/share/man/man1/rmiregistry.1 rmiregistry.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmiregistry.1 \ + --slave /usr/share/man/man1/unpack200.1 unpack200.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/unpack200.1 + + update-alternatives --install /usr/bin/javac javac {{ prefix }}/{{ jdkDirectoryName }}/bin/javac 1121 \ + --slave /usr/bin/jaotc jaotc {{ prefix }}/{{ jdkDirectoryName }}/bin/jaotc \ + --slave /usr/bin/jar jar {{ prefix }}/{{ jdkDirectoryName }}/bin/jar \ + --slave /usr/bin/jarsigner jarsigner {{ prefix }}/{{ jdkDirectoryName }}/bin/jarsigner \ + --slave /usr/bin/javadoc javadoc {{ prefix }}/{{ jdkDirectoryName }}/bin/javadoc \ + --slave /usr/bin/javap javap {{ prefix }}/{{ jdkDirectoryName }}/bin/javap \ + --slave /usr/bin/jcmd jcmd {{ prefix }}/{{ jdkDirectoryName }}/bin/jcmd \ + --slave /usr/bin/jconsole jconsole {{ prefix }}/{{ jdkDirectoryName }}/bin/jconsole \ + --slave /usr/bin/jdb jdb {{ prefix }}/{{ jdkDirectoryName }}/bin/jdb \ + --slave /usr/bin/jdeprscan jdeprscan {{ prefix }}/{{ jdkDirectoryName }}/bin/jdeprscan \ + --slave /usr/bin/jdeps jdeps {{ prefix }}/{{ jdkDirectoryName }}/bin/jdeps \ + --slave /usr/bin/jhsdb jhsdb {{ prefix }}/{{ jdkDirectoryName }}/bin/jhsdb \ + --slave /usr/bin/jimage jimage {{ prefix }}/{{ jdkDirectoryName }}/bin/jimage \ + --slave /usr/bin/jinfo jinfo {{ prefix }}/{{ jdkDirectoryName }}/bin/jinfo \ + --slave /usr/bin/jlink jlink {{ prefix }}/{{ jdkDirectoryName }}/bin/jlink \ + --slave /usr/bin/jmap jmap {{ prefix }}/{{ jdkDirectoryName }}/bin/jmap \ + --slave /usr/bin/jmod jmod {{ prefix }}/{{ jdkDirectoryName }}/bin/jmod \ + --slave /usr/bin/jps jps {{ prefix }}/{{ jdkDirectoryName }}/bin/jps \ + --slave /usr/bin/jshell jshell {{ prefix }}/{{ jdkDirectoryName }}/bin/jshell \ + --slave /usr/bin/jstack jstack {{ prefix }}/{{ jdkDirectoryName }}/bin/jstack \ + --slave /usr/bin/jstat jstat {{ prefix }}/{{ jdkDirectoryName }}/bin/jstat \ + --slave /usr/bin/jstatd jstatd {{ prefix }}/{{ jdkDirectoryName }}/bin/jstatd \ + --slave /usr/bin/rmic rmic {{ prefix }}/{{ jdkDirectoryName }}/bin/rmic \ + --slave /usr/bin/serialver serialver {{ prefix }}/{{ jdkDirectoryName }}/bin/serialver \ + --slave /usr/share/man/man1/jar.1 jar.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jar.1 \ + --slave /usr/share/man/man1/jarsigner.1 jarsigner.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jarsigner.1 \ + --slave /usr/share/man/man1/javac.1 javac.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javac.1 \ + --slave /usr/share/man/man1/javadoc.1 javadoc.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javadoc.1 \ + --slave /usr/share/man/man1/javap.1 javap.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javap.1 \ + --slave /usr/share/man/man1/jcmd.1 jcmd.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jcmd.1 \ + --slave /usr/share/man/man1/jconsole.1 jconsole.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jconsole.1 \ + --slave /usr/share/man/man1/jdb.1 jdb.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jdb.1 \ + --slave /usr/share/man/man1/jdeps.1 jdeps.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jdeps.1 \ + --slave /usr/share/man/man1/jinfo.1 jinfo.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jinfo.1 \ + --slave /usr/share/man/man1/jmap.1 jmap.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jmap.1 \ + --slave /usr/share/man/man1/jps.1 jps.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jps.1 \ + --slave /usr/share/man/man1/jstack.1 jstack.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jstack.1 \ + --slave /usr/share/man/man1/jstat.1 jstat.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jstat.1 \ + --slave /usr/share/man/man1/jstatd.1 jstatd.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jstatd.1 \ + --slave /usr/share/man/man1/rmic.1 rmic.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmic.1 \ + --slave /usr/share/man/man1/serialver.1 serialver.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/serialver.1 +fi diff --git a/linux/rpm/config/jdk-12-hotspot/provides.txt b/linux/rpm/config/jdk-12-hotspot/provides.txt new file mode 100644 index 000000000..29caa0224 --- /dev/null +++ b/linux/rpm/config/jdk-12-hotspot/provides.txt @@ -0,0 +1,8 @@ +java +java-12 +java-12-openjdk +java-openjdk +jre +jre-12 +jre-12-openjdk +jre-openjdk diff --git a/linux/rpm/config/jdk-12-openj9/dependencies.txt b/linux/rpm/config/jdk-12-openj9/dependencies.txt new file mode 100644 index 000000000..82c5f36c8 --- /dev/null +++ b/linux/rpm/config/jdk-12-openj9/dependencies.txt @@ -0,0 +1,15 @@ +/bin/sh +/usr/sbin/alternatives +ca-certificates +libX11.so.6 +libXext.so.6 +libXi.so.6 +libXrender.so.1 +libXtst.so.6 +libasound.so.2 +libc.so.6 +libdl.so.2 +libm.so.6 +libpthread.so.0 +librt.so.1 +libz.so.1 diff --git a/linux/rpm/config/jdk-12-openj9/postinst.sh b/linux/rpm/config/jdk-12-openj9/postinst.sh new file mode 100644 index 000000000..0e235e00c --- /dev/null +++ b/linux/rpm/config/jdk-12-openj9/postinst.sh @@ -0,0 +1,52 @@ +if [ $1 -ge 1 ] ; then + update-alternatives --install /usr/bin/java java {{ prefix }}/{{ jdkDirectoryName }}/bin/java 1121 \ + --slave /usr/bin/jfr jfr {{ prefix }}/{{ jdkDirectoryName }}/bin/jfr \ + --slave /usr/bin/jjs jjs {{ prefix }}/{{ jdkDirectoryName }}/bin/jjs \ + --slave /usr/bin/jrunscript jrunscript {{ prefix }}/{{ jdkDirectoryName }}/bin/jrunscript \ + --slave /usr/bin/keytool keytool {{ prefix }}/{{ jdkDirectoryName }}/bin/keytool \ + --slave /usr/bin/pack200 pack200 {{ prefix }}/{{ jdkDirectoryName }}/bin/pack200 \ + --slave /usr/bin/rmid rmid {{ prefix }}/{{ jdkDirectoryName }}/bin/rmid \ + --slave /usr/bin/rmiregistry rmiregistry {{ prefix }}/{{ jdkDirectoryName }}/bin/rmiregistry \ + --slave /usr/bin/unpack200 unpack200 {{ prefix }}/{{ jdkDirectoryName }}/bin/unpack200 \ + --slave /usr/bin/jexec jexec {{ prefix }}/{{ jdkDirectoryName }}/lib/jexec \ + --slave /usr/bin/jspawnhelper jspawnhelper {{ prefix }}/{{ jdkDirectoryName }}/lib/jspawnhelper \ + --slave /usr/share/man/man1/java.1 java.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/java.1 \ + --slave /usr/share/man/man1/jjs.1 jjs.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jjs.1 \ + --slave /usr/share/man/man1/jrunscript.1 jrunscript.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jrunscript.1 \ + --slave /usr/share/man/man1/keytool.1 keytool.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/keytool.1 \ + --slave /usr/share/man/man1/pack200.1 pack200.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/pack200.1 \ + --slave /usr/share/man/man1/rmid.1 rmid.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmid.1 \ + --slave /usr/share/man/man1/rmiregistry.1 rmiregistry.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmiregistry.1 \ + --slave /usr/share/man/man1/unpack200.1 unpack200.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/unpack200.1 + + update-alternatives --install /usr/bin/javac javac {{ prefix }}/{{ jdkDirectoryName }}/bin/javac 1121 \ + --slave /usr/bin/jar jar {{ prefix }}/{{ jdkDirectoryName }}/bin/jar \ + --slave /usr/bin/jarsigner jarsigner {{ prefix }}/{{ jdkDirectoryName }}/bin/jarsigner \ + --slave /usr/bin/javadoc javadoc {{ prefix }}/{{ jdkDirectoryName }}/bin/javadoc \ + --slave /usr/bin/javap javap {{ prefix }}/{{ jdkDirectoryName }}/bin/javap \ + --slave /usr/bin/jconsole jconsole {{ prefix }}/{{ jdkDirectoryName }}/bin/jconsole \ + --slave /usr/bin/jdb jdb {{ prefix }}/{{ jdkDirectoryName }}/bin/jdb \ + --slave /usr/bin/jdeprscan jdeprscan {{ prefix }}/{{ jdkDirectoryName }}/bin/jdeprscan \ + --slave /usr/bin/jdeps jdeps {{ prefix }}/{{ jdkDirectoryName }}/bin/jdeps \ + --slave /usr/bin/jdmpview jdmpview {{ prefix }}/{{ jdkDirectoryName }}/bin/jdmpview \ + --slave /usr/bin/jextract jextract {{ prefix }}/{{ jdkDirectoryName }}/bin/jextract \ + --slave /usr/bin/jimage jimage {{ prefix }}/{{ jdkDirectoryName }}/bin/jimage \ + --slave /usr/bin/jlink jlink {{ prefix }}/{{ jdkDirectoryName }}/bin/jlink \ + --slave /usr/bin/jmod jmod {{ prefix }}/{{ jdkDirectoryName }}/bin/jmod \ + --slave /usr/bin/jps jps {{ prefix }}/{{ jdkDirectoryName }}/bin/jps \ + --slave /usr/bin/jshell jshell {{ prefix }}/{{ jdkDirectoryName }}/bin/jshell \ + --slave /usr/bin/rmic rmic {{ prefix }}/{{ jdkDirectoryName }}/bin/rmic \ + --slave /usr/bin/serialver serialver {{ prefix }}/{{ jdkDirectoryName }}/bin/serialver \ + --slave /usr/bin/traceformat traceformat {{ prefix }}/{{ jdkDirectoryName }}/bin/traceformat \ + --slave /usr/share/man/man1/jar.1 jar.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jar.1 \ + --slave /usr/share/man/man1/jarsigner.1 jarsigner.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jarsigner.1 \ + --slave /usr/share/man/man1/javac.1 javac.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javac.1 \ + --slave /usr/share/man/man1/javadoc.1 javadoc.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javadoc.1 \ + --slave /usr/share/man/man1/javap.1 javap.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javap.1 \ + --slave /usr/share/man/man1/jconsole.1 jconsole.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jconsole.1 \ + --slave /usr/share/man/man1/jdb.1 jdb.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jdb.1 \ + --slave /usr/share/man/man1/jdeps.1 jdeps.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jdeps.1 \ + --slave /usr/share/man/man1/jps.1 jps.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jps.1 \ + --slave /usr/share/man/man1/rmic.1 rmic.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmic.1 \ + --slave /usr/share/man/man1/serialver.1 serialver.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/serialver.1 +fi diff --git a/linux/rpm/config/jdk-12-openj9/provides.txt b/linux/rpm/config/jdk-12-openj9/provides.txt new file mode 100644 index 000000000..29caa0224 --- /dev/null +++ b/linux/rpm/config/jdk-12-openj9/provides.txt @@ -0,0 +1,8 @@ +java +java-12 +java-12-openjdk +java-openjdk +jre +jre-12 +jre-12-openjdk +jre-openjdk diff --git a/linux/rpm/config/jdk-8-hotspot/dependencies.txt b/linux/rpm/config/jdk-8-hotspot/dependencies.txt new file mode 100644 index 000000000..68e1d347a --- /dev/null +++ b/linux/rpm/config/jdk-8-hotspot/dependencies.txt @@ -0,0 +1,16 @@ +/bin/sh +/usr/sbin/alternatives +ca-certificates +libX11.so.6 +libXext.so.6 +libXi.so.6 +libXrender.so.1 +libXtst.so.6 +libasound.so.2 +libc.so.6 +libdl.so.2 +libgcc_s.so.1 +libm.so.6 +libpthread.so.0 +libthread_db.so.1 +libz.so.1 diff --git a/linux/rpm/config/jdk-8-hotspot/postinst.sh b/linux/rpm/config/jdk-8-hotspot/postinst.sh new file mode 100644 index 000000000..079fbed89 --- /dev/null +++ b/linux/rpm/config/jdk-8-hotspot/postinst.sh @@ -0,0 +1,84 @@ +if [ $1 -ge 1 ] ; then + update-alternatives --install /usr/bin/java java {{ prefix }}/{{ jdkDirectoryName }}/bin/java 1081 \ + --slave /usr/bin/jjs jjs {{ prefix }}/{{ jdkDirectoryName }}/bin/jjs \ + --slave /usr/bin/jrunscript jrunscript {{ prefix }}/{{ jdkDirectoryName }}/bin/jrunscript \ + --slave /usr/bin/keytool keytool {{ prefix }}/{{ jdkDirectoryName }}/bin/keytool \ + --slave /usr/bin/orbd orbd {{ prefix }}/{{ jdkDirectoryName }}/bin/orbd \ + --slave /usr/bin/pack200 pack200 {{ prefix }}/{{ jdkDirectoryName }}/bin/pack200 \ + --slave /usr/bin/policytool policytool {{ prefix }}/{{ jdkDirectoryName }}/bin/policytool \ + --slave /usr/bin/rmid rmid {{ prefix }}/{{ jdkDirectoryName }}/bin/rmid \ + --slave /usr/bin/rmiregistry rmiregistry {{ prefix }}/{{ jdkDirectoryName }}/bin/rmiregistry \ + --slave /usr/bin/servertool servertool {{ prefix }}/{{ jdkDirectoryName }}/bin/servertool \ + --slave /usr/bin/tnameserv tnameserv {{ prefix }}/{{ jdkDirectoryName }}/bin/tnameserv \ + --slave /usr/bin/unpack200 unpack200 {{ prefix }}/{{ jdkDirectoryName }}/bin/unpack200 \ + --slave /usr/bin/jexec jexec {{ prefix }}/{{ jdkDirectoryName }}/lib/jexec \ + --slave /usr/share/man/man1/java.1 java.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/java.1 \ + --slave /usr/share/man/man1/jjs.1 jjs.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jjs.1 \ + --slave /usr/share/man/man1/jrunscript.1 jrunscript.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jrunscript.1 \ + --slave /usr/share/man/man1/keytool.1 keytool.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/keytool.1 \ + --slave /usr/share/man/man1/orbd.1 orbd.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/orbd.1 \ + --slave /usr/share/man/man1/pack200.1 pack200.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/pack200.1 \ + --slave /usr/share/man/man1/policytool.1 policytool.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/policytool.1 \ + --slave /usr/share/man/man1/rmid.1 rmid.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmid.1 \ + --slave /usr/share/man/man1/rmiregistry.1 rmiregistry.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmiregistry.1 \ + --slave /usr/share/man/man1/servertool.1 servertool.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/servertool.1 \ + --slave /usr/share/man/man1/tnameserv.1 tnameserv.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/tnameserv.1 \ + --slave /usr/share/man/man1/unpack200.1 unpack200.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/unpack200.1 + + update-alternatives --install /usr/bin/javac javac {{ prefix }}/{{ jdkDirectoryName }}/bin/javac 1081 \ + --slave /usr/bin/appletviewer appletviewer {{ prefix }}/{{ jdkDirectoryName }}/bin/appletviewer \ + --slave /usr/bin/extcheck extcheck {{ prefix }}/{{ jdkDirectoryName }}/bin/extcheck \ + --slave /usr/bin/idlj idlj {{ prefix }}/{{ jdkDirectoryName }}/bin/idlj \ + --slave /usr/bin/jar jar {{ prefix }}/{{ jdkDirectoryName }}/bin/jar \ + --slave /usr/bin/jarsigner jarsigner {{ prefix }}/{{ jdkDirectoryName }}/bin/jarsigner \ + --slave /usr/bin/javadoc javadoc {{ prefix }}/{{ jdkDirectoryName }}/bin/javadoc \ + --slave /usr/bin/javah javah {{ prefix }}/{{ jdkDirectoryName }}/bin/javah \ + --slave /usr/bin/javap javap {{ prefix }}/{{ jdkDirectoryName }}/bin/javap \ + --slave /usr/bin/jcmd jcmd {{ prefix }}/{{ jdkDirectoryName }}/bin/jcmd \ + --slave /usr/bin/jconsole jconsole {{ prefix }}/{{ jdkDirectoryName }}/bin/jconsole \ + --slave /usr/bin/jdb jdb {{ prefix }}/{{ jdkDirectoryName }}/bin/jdb \ + --slave /usr/bin/jdeps jdeps {{ prefix }}/{{ jdkDirectoryName }}/bin/jdeps \ + --slave /usr/bin/jhat jhat {{ prefix }}/{{ jdkDirectoryName }}/bin/jhat \ + --slave /usr/bin/jinfo jinfo {{ prefix }}/{{ jdkDirectoryName }}/bin/jinfo \ + --slave /usr/bin/jmap jmap {{ prefix }}/{{ jdkDirectoryName }}/bin/jmap \ + --slave /usr/bin/jps jps {{ prefix }}/{{ jdkDirectoryName }}/bin/jps \ + --slave /usr/bin/jsadebugd jsadebugd {{ prefix }}/{{ jdkDirectoryName }}/bin/jsadebugd \ + --slave /usr/bin/jstack jstack {{ prefix }}/{{ jdkDirectoryName }}/bin/jstack \ + --slave /usr/bin/jstat jstat {{ prefix }}/{{ jdkDirectoryName }}/bin/jstat \ + --slave /usr/bin/jstatd jstatd {{ prefix }}/{{ jdkDirectoryName }}/bin/jstatd \ + --slave /usr/bin/native2ascii native2ascii {{ prefix }}/{{ jdkDirectoryName }}/bin/native2ascii \ + --slave /usr/bin/rmic rmic {{ prefix }}/{{ jdkDirectoryName }}/bin/rmic \ + --slave /usr/bin/schemagen schemagen {{ prefix }}/{{ jdkDirectoryName }}/bin/schemagen \ + --slave /usr/bin/serialver serialver {{ prefix }}/{{ jdkDirectoryName }}/bin/serialver \ + --slave /usr/bin/wsgen wsgen {{ prefix }}/{{ jdkDirectoryName }}/bin/wsgen \ + --slave /usr/bin/wsimport wsimport {{ prefix }}/{{ jdkDirectoryName }}/bin/wsimport \ + --slave /usr/bin/xjc xjc {{ prefix }}/{{ jdkDirectoryName }}/bin/xjc \ + --slave /usr/share/man/man1/appletviewer.1 appletviewer.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/appletviewer.1 \ + --slave /usr/share/man/man1/extcheck.1 extcheck.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/extcheck.1 \ + --slave /usr/share/man/man1/idlj.1 idlj.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/idlj.1 \ + --slave /usr/share/man/man1/jar.1 jar.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jar.1 \ + --slave /usr/share/man/man1/jarsigner.1 jarsigner.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jarsigner.1 \ + --slave /usr/share/man/man1/javac.1 javac.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javac.1 \ + --slave /usr/share/man/man1/javadoc.1 javadoc.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javadoc.1 \ + --slave /usr/share/man/man1/javah.1 javah.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javah.1 \ + --slave /usr/share/man/man1/javap.1 javap.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javap.1 \ + --slave /usr/share/man/man1/jcmd.1 jcmd.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jcmd.1 \ + --slave /usr/share/man/man1/jconsole.1 jconsole.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jconsole.1 \ + --slave /usr/share/man/man1/jdb.1 jdb.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jdb.1 \ + --slave /usr/share/man/man1/jdeps.1 jdeps.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jdeps.1 \ + --slave /usr/share/man/man1/jhat.1 jhat.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jhat.1 \ + --slave /usr/share/man/man1/jinfo.1 jinfo.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jinfo.1 \ + --slave /usr/share/man/man1/jmap.1 jmap.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jmap.1 \ + --slave /usr/share/man/man1/jps.1 jps.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jps.1 \ + --slave /usr/share/man/man1/jsadebugd.1 jsadebugd.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jsadebugd.1 \ + --slave /usr/share/man/man1/jstack.1 jstack.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jstack.1 \ + --slave /usr/share/man/man1/jstat.1 jstat.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jstat.1 \ + --slave /usr/share/man/man1/jstatd.1 jstatd.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jstatd.1 \ + --slave /usr/share/man/man1/native2ascii.1 native2ascii.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/native2ascii.1 \ + --slave /usr/share/man/man1/rmic.1 rmic.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmic.1 \ + --slave /usr/share/man/man1/schemagen.1 schemagen.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/schemagen.1 \ + --slave /usr/share/man/man1/serialver.1 serialver.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/serialver.1 \ + --slave /usr/share/man/man1/wsgen.1 wsgen.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/wsgen.1 \ + --slave /usr/share/man/man1/wsimport.1 wsimport.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/wsimport.1 \ + --slave /usr/share/man/man1/xjc.1 xjc.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/xjc.1 +fi diff --git a/linux/rpm/config/jdk-8-hotspot/provides.txt b/linux/rpm/config/jdk-8-hotspot/provides.txt new file mode 100644 index 000000000..19ce4e6b0 --- /dev/null +++ b/linux/rpm/config/jdk-8-hotspot/provides.txt @@ -0,0 +1,8 @@ +java +java-1.8.0 +java-1.8.0-openjdk +java-openjdk +jre +jre-1.8.0 +jre-1.8.0-openjdk +jre-openjdk diff --git a/linux/rpm/config/jdk-8-openj9/dependencies.txt b/linux/rpm/config/jdk-8-openj9/dependencies.txt new file mode 100644 index 000000000..b0451d535 --- /dev/null +++ b/linux/rpm/config/jdk-8-openj9/dependencies.txt @@ -0,0 +1,17 @@ +/bin/sh +/usr/sbin/alternatives +ca-certificates +libX11.so.6 +libXext.so.6 +libXi.so.6 +libXrender.so.1 +libXtst.so.6 +libasound.so.2 +libc.so.6 +libcrypto.so.1.1 +libdl.so.2 +libgcc_s.so.1 +libm.so.6 +libpthread.so.0 +librt.so.1 +libz.so.1 diff --git a/linux/rpm/config/jdk-8-openj9/postinst.sh b/linux/rpm/config/jdk-8-openj9/postinst.sh new file mode 100644 index 000000000..573e41545 --- /dev/null +++ b/linux/rpm/config/jdk-8-openj9/postinst.sh @@ -0,0 +1,71 @@ +if [ $1 -ge 1 ] ; then + update-alternatives --install /usr/bin/java java {{ prefix }}/{{ jdkDirectoryName }}/bin/java 1081 \ + --slave /usr/bin/jjs jjs {{ prefix }}/{{ jdkDirectoryName }}/bin/jjs \ + --slave /usr/bin/jrunscript jrunscript {{ prefix }}/{{ jdkDirectoryName }}/bin/jrunscript \ + --slave /usr/bin/keytool keytool {{ prefix }}/{{ jdkDirectoryName }}/bin/keytool \ + --slave /usr/bin/orbd orbd {{ prefix }}/{{ jdkDirectoryName }}/bin/orbd \ + --slave /usr/bin/pack200 pack200 {{ prefix }}/{{ jdkDirectoryName }}/bin/pack200 \ + --slave /usr/bin/policytool policytool {{ prefix }}/{{ jdkDirectoryName }}/bin/policytool \ + --slave /usr/bin/rmid rmid {{ prefix }}/{{ jdkDirectoryName }}/bin/rmid \ + --slave /usr/bin/rmiregistry rmiregistry {{ prefix }}/{{ jdkDirectoryName }}/bin/rmiregistry \ + --slave /usr/bin/servertool servertool {{ prefix }}/{{ jdkDirectoryName }}/bin/servertool \ + --slave /usr/bin/tnameserv tnameserv {{ prefix }}/{{ jdkDirectoryName }}/bin/tnameserv \ + --slave /usr/bin/unpack200 unpack200 {{ prefix }}/{{ jdkDirectoryName }}/bin/unpack200 \ + --slave /usr/bin/jexec jexec {{ prefix }}/{{ jdkDirectoryName }}/lib/jexec \ + --slave /usr/share/man/man1/java.1 java.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/java.1 \ + --slave /usr/share/man/man1/jjs.1 jjs.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jjs.1 \ + --slave /usr/share/man/man1/jrunscript.1 jrunscript.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jrunscript.1 \ + --slave /usr/share/man/man1/keytool.1 keytool.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/keytool.1 \ + --slave /usr/share/man/man1/orbd.1 orbd.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/orbd.1 \ + --slave /usr/share/man/man1/pack200.1 pack200.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/pack200.1 \ + --slave /usr/share/man/man1/policytool.1 policytool.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/policytool.1 \ + --slave /usr/share/man/man1/rmid.1 rmid.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmid.1 \ + --slave /usr/share/man/man1/rmiregistry.1 rmiregistry.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmiregistry.1 \ + --slave /usr/share/man/man1/servertool.1 servertool.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/servertool.1 \ + --slave /usr/share/man/man1/tnameserv.1 tnameserv.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/tnameserv.1 \ + --slave /usr/share/man/man1/unpack200.1 unpack200.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/unpack200.1 + + update-alternatives --install /usr/bin/javac javac {{ prefix }}/{{ jdkDirectoryName }}/bin/javac 1081 \ + --slave /usr/bin/appletviewer appletviewer {{ prefix }}/{{ jdkDirectoryName }}/bin/appletviewer \ + --slave /usr/bin/extcheck extcheck {{ prefix }}/{{ jdkDirectoryName }}/bin/extcheck \ + --slave /usr/bin/idlj idlj {{ prefix }}/{{ jdkDirectoryName }}/bin/idlj \ + --slave /usr/bin/jar jar {{ prefix }}/{{ jdkDirectoryName }}/bin/jar \ + --slave /usr/bin/jarsigner jarsigner {{ prefix }}/{{ jdkDirectoryName }}/bin/jarsigner \ + --slave /usr/bin/javadoc javadoc {{ prefix }}/{{ jdkDirectoryName }}/bin/javadoc \ + --slave /usr/bin/javah javah {{ prefix }}/{{ jdkDirectoryName }}/bin/javah \ + --slave /usr/bin/javap javap {{ prefix }}/{{ jdkDirectoryName }}/bin/javap \ + --slave /usr/bin/jconsole jconsole {{ prefix }}/{{ jdkDirectoryName }}/bin/jconsole \ + --slave /usr/bin/jdb jdb {{ prefix }}/{{ jdkDirectoryName }}/bin/jdb \ + --slave /usr/bin/jdeps jdeps {{ prefix }}/{{ jdkDirectoryName }}/bin/jdeps \ + --slave /usr/bin/jdmpview jdmpview {{ prefix }}/{{ jdkDirectoryName }}/bin/jdmpview \ + --slave /usr/bin/jextract jextract {{ prefix }}/{{ jdkDirectoryName }}/bin/jextract \ + --slave /usr/bin/jsadebugd jsadebugd {{ prefix }}/{{ jdkDirectoryName }}/bin/jsadebugd \ + --slave /usr/bin/native2ascii native2ascii {{ prefix }}/{{ jdkDirectoryName }}/bin/native2ascii \ + --slave /usr/bin/rmic rmic {{ prefix }}/{{ jdkDirectoryName }}/bin/rmic \ + --slave /usr/bin/schemagen schemagen {{ prefix }}/{{ jdkDirectoryName }}/bin/schemagen \ + --slave /usr/bin/serialver serialver {{ prefix }}/{{ jdkDirectoryName }}/bin/serialver \ + --slave /usr/bin/traceformat traceformat {{ prefix }}/{{ jdkDirectoryName }}/bin/traceformat \ + --slave /usr/bin/wsgen wsgen {{ prefix }}/{{ jdkDirectoryName }}/bin/wsgen \ + --slave /usr/bin/wsimport wsimport {{ prefix }}/{{ jdkDirectoryName }}/bin/wsimport \ + --slave /usr/bin/xjc xjc {{ prefix }}/{{ jdkDirectoryName }}/bin/xjc \ + --slave /usr/share/man/man1/appletviewer.1 appletviewer.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/appletviewer.1 \ + --slave /usr/share/man/man1/extcheck.1 extcheck.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/extcheck.1 \ + --slave /usr/share/man/man1/idlj.1 idlj.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/idlj.1 \ + --slave /usr/share/man/man1/jar.1 jar.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jar.1 \ + --slave /usr/share/man/man1/jarsigner.1 jarsigner.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jarsigner.1 \ + --slave /usr/share/man/man1/javac.1 javac.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javac.1 \ + --slave /usr/share/man/man1/javadoc.1 javadoc.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javadoc.1 \ + --slave /usr/share/man/man1/javah.1 javah.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javah.1 \ + --slave /usr/share/man/man1/javap.1 javap.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javap.1 \ + --slave /usr/share/man/man1/jconsole.1 jconsole.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jconsole.1 \ + --slave /usr/share/man/man1/jdb.1 jdb.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jdb.1 \ + --slave /usr/share/man/man1/jdeps.1 jdeps.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jdeps.1 \ + --slave /usr/share/man/man1/jsadebugd.1 jsadebugd.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jsadebugd.1 \ + --slave /usr/share/man/man1/native2ascii.1 native2ascii.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/native2ascii.1 \ + --slave /usr/share/man/man1/rmic.1 rmic.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmic.1 \ + --slave /usr/share/man/man1/schemagen.1 schemagen.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/schemagen.1 \ + --slave /usr/share/man/man1/serialver.1 serialver.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/serialver.1 \ + --slave /usr/share/man/man1/wsgen.1 wsgen.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/wsgen.1 \ + --slave /usr/share/man/man1/wsimport.1 wsimport.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/wsimport.1 \ + --slave /usr/share/man/man1/xjc.1 xjc.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/xjc.1 +fi diff --git a/linux/rpm/config/jdk-8-openj9/provides.txt b/linux/rpm/config/jdk-8-openj9/provides.txt new file mode 100644 index 000000000..19ce4e6b0 --- /dev/null +++ b/linux/rpm/config/jdk-8-openj9/provides.txt @@ -0,0 +1,8 @@ +java +java-1.8.0 +java-1.8.0-openjdk +java-openjdk +jre +jre-1.8.0 +jre-1.8.0-openjdk +jre-openjdk diff --git a/linux/rpm/config/jdk-9-hotspot/dependencies.txt b/linux/rpm/config/jdk-9-hotspot/dependencies.txt new file mode 100644 index 000000000..55a08e214 --- /dev/null +++ b/linux/rpm/config/jdk-9-hotspot/dependencies.txt @@ -0,0 +1,17 @@ +/bin/sh +/usr/sbin/alternatives +ca-certificates +libX11.so.6 +libXext.so.6 +libXi.so.6 +libXrender.so.1 +libXtst.so.6 +libasound.so.2 +libc.so.6 +libelf.so.1 +libdl.so.2 +libgcc_s.so.1 +libm.so.6 +libpthread.so.0 +libthread_db.so.1 +libz.so.1 diff --git a/linux/rpm/config/jdk-9-hotspot/postinst.sh b/linux/rpm/config/jdk-9-hotspot/postinst.sh new file mode 100644 index 000000000..bcaaeacc3 --- /dev/null +++ b/linux/rpm/config/jdk-9-hotspot/postinst.sh @@ -0,0 +1,83 @@ +if [ $1 -ge 1 ] ; then + update-alternatives --install /usr/bin/java java {{ prefix }}/{{ jdkDirectoryName }}/bin/java 1091 \ + --slave /usr/bin/jjs jjs {{ prefix }}/{{ jdkDirectoryName }}/bin/jjs \ + --slave /usr/bin/jrunscript jrunscript {{ prefix }}/{{ jdkDirectoryName }}/bin/jrunscript \ + --slave /usr/bin/keytool keytool {{ prefix }}/{{ jdkDirectoryName }}/bin/keytool \ + --slave /usr/bin/orbd orbd {{ prefix }}/{{ jdkDirectoryName }}/bin/orbd \ + --slave /usr/bin/pack200 pack200 {{ prefix }}/{{ jdkDirectoryName }}/bin/pack200 \ + --slave /usr/bin/policytool policytool {{ prefix }}/{{ jdkDirectoryName }}/bin/policytool \ + --slave /usr/bin/rmid rmid {{ prefix }}/{{ jdkDirectoryName }}/bin/rmid \ + --slave /usr/bin/rmiregistry rmiregistry {{ prefix }}/{{ jdkDirectoryName }}/bin/rmiregistry \ + --slave /usr/bin/servertool servertool {{ prefix }}/{{ jdkDirectoryName }}/bin/servertool \ + --slave /usr/bin/tnameserv tnameserv {{ prefix }}/{{ jdkDirectoryName }}/bin/tnameserv \ + --slave /usr/bin/unpack200 unpack200 {{ prefix }}/{{ jdkDirectoryName }}/bin/unpack200 \ + --slave /usr/bin/jexec jexec {{ prefix }}/{{ jdkDirectoryName }}/lib/jexec \ + --slave /usr/share/man/man1/java.1 java.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/java.1 \ + --slave /usr/share/man/man1/jjs.1 jjs.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jjs.1 \ + --slave /usr/share/man/man1/jrunscript.1 jrunscript.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jrunscript.1 \ + --slave /usr/share/man/man1/keytool.1 keytool.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/keytool.1 \ + --slave /usr/share/man/man1/orbd.1 orbd.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/orbd.1 \ + --slave /usr/share/man/man1/pack200.1 pack200.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/pack200.1 \ + --slave /usr/share/man/man1/policytool.1 policytool.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/policytool.1 \ + --slave /usr/share/man/man1/rmid.1 rmid.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmid.1 \ + --slave /usr/share/man/man1/rmiregistry.1 rmiregistry.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmiregistry.1 \ + --slave /usr/share/man/man1/servertool.1 servertool.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/servertool.1 \ + --slave /usr/share/man/man1/tnameserv.1 tnameserv.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/tnameserv.1 \ + --slave /usr/share/man/man1/unpack200.1 unpack200.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/unpack200.1 + + update-alternatives --install /usr/bin/javac javac {{ prefix }}/{{ jdkDirectoryName }}/bin/javac 1091 \ + --slave /usr/bin/appletviewer appletviewer {{ prefix }}/{{ jdkDirectoryName }}/bin/appletviewer \ + --slave /usr/bin/idlj idlj {{ prefix }}/{{ jdkDirectoryName }}/bin/idlj \ + --slave /usr/bin/jaotc jaotc {{ prefix }}/{{ jdkDirectoryName }}/bin/jaotc \ + --slave /usr/bin/jar jar {{ prefix }}/{{ jdkDirectoryName }}/bin/jar \ + --slave /usr/bin/jarsigner jarsigner {{ prefix }}/{{ jdkDirectoryName }}/bin/jarsigner \ + --slave /usr/bin/javadoc javadoc {{ prefix }}/{{ jdkDirectoryName }}/bin/javadoc \ + --slave /usr/bin/javah javah {{ prefix }}/{{ jdkDirectoryName }}/bin/javah \ + --slave /usr/bin/javap javap {{ prefix }}/{{ jdkDirectoryName }}/bin/javap \ + --slave /usr/bin/jcmd jcmd {{ prefix }}/{{ jdkDirectoryName }}/bin/jcmd \ + --slave /usr/bin/jconsole jconsole {{ prefix }}/{{ jdkDirectoryName }}/bin/jconsole \ + --slave /usr/bin/jdb jdb {{ prefix }}/{{ jdkDirectoryName }}/bin/jdb \ + --slave /usr/bin/jdeprscan jdeprscan {{ prefix }}/{{ jdkDirectoryName }}/bin/jdeprscan \ + --slave /usr/bin/jdeps jdeps {{ prefix }}/{{ jdkDirectoryName }}/bin/jdeps \ + --slave /usr/bin/jhsdb jhsdb {{ prefix }}/{{ jdkDirectoryName }}/bin/jhsdb \ + --slave /usr/bin/jimage jimage {{ prefix }}/{{ jdkDirectoryName }}/bin/jimage \ + --slave /usr/bin/jinfo jinfo {{ prefix }}/{{ jdkDirectoryName }}/bin/jinfo \ + --slave /usr/bin/jlink jlink {{ prefix }}/{{ jdkDirectoryName }}/bin/jlink \ + --slave /usr/bin/jmap jmap {{ prefix }}/{{ jdkDirectoryName }}/bin/jmap \ + --slave /usr/bin/jmod jmod {{ prefix }}/{{ jdkDirectoryName }}/bin/jmod \ + --slave /usr/bin/jps jps {{ prefix }}/{{ jdkDirectoryName }}/bin/jps \ + --slave /usr/bin/jshell jshell {{ prefix }}/{{ jdkDirectoryName }}/bin/jshell \ + --slave /usr/bin/jstack jstack {{ prefix }}/{{ jdkDirectoryName }}/bin/jstack \ + --slave /usr/bin/jstat jstat {{ prefix }}/{{ jdkDirectoryName }}/bin/jstat \ + --slave /usr/bin/jstatd jstatd {{ prefix }}/{{ jdkDirectoryName }}/bin/jstatd \ + --slave /usr/bin/rmic rmic {{ prefix }}/{{ jdkDirectoryName }}/bin/rmic \ + --slave /usr/bin/schemagen schemagen {{ prefix }}/{{ jdkDirectoryName }}/bin/schemagen \ + --slave /usr/bin/serialver serialver {{ prefix }}/{{ jdkDirectoryName }}/bin/serialver \ + --slave /usr/bin/wsgen wsgen {{ prefix }}/{{ jdkDirectoryName }}/bin/wsgen \ + --slave /usr/bin/wsimport wsimport {{ prefix }}/{{ jdkDirectoryName }}/bin/wsimport \ + --slave /usr/bin/xjc xjc {{ prefix }}/{{ jdkDirectoryName }}/bin/xjc \ + --slave /usr/share/man/man1/appletviewer.1 appletviewer.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/appletviewer.1 \ + --slave /usr/share/man/man1/idlj.1 idlj.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/idlj.1 \ + --slave /usr/share/man/man1/jar.1 jar.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jar.1 \ + --slave /usr/share/man/man1/jarsigner.1 jarsigner.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jarsigner.1 \ + --slave /usr/share/man/man1/javac.1 javac.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javac.1 \ + --slave /usr/share/man/man1/javadoc.1 javadoc.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javadoc.1 \ + --slave /usr/share/man/man1/javah.1 javah.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javah.1 \ + --slave /usr/share/man/man1/javap.1 javap.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javap.1 \ + --slave /usr/share/man/man1/jcmd.1 jcmd.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jcmd.1 \ + --slave /usr/share/man/man1/jconsole.1 jconsole.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jconsole.1 \ + --slave /usr/share/man/man1/jdb.1 jdb.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jdb.1 \ + --slave /usr/share/man/man1/jdeps.1 jdeps.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jdeps.1 \ + --slave /usr/share/man/man1/jinfo.1 jinfo.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jinfo.1 \ + --slave /usr/share/man/man1/jmap.1 jmap.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jmap.1 \ + --slave /usr/share/man/man1/jps.1 jps.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jps.1 \ + --slave /usr/share/man/man1/jstack.1 jstack.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jstack.1 \ + --slave /usr/share/man/man1/jstat.1 jstat.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jstat.1 \ + --slave /usr/share/man/man1/jstatd.1 jstatd.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jstatd.1 \ + --slave /usr/share/man/man1/rmic.1 rmic.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmic.1 \ + --slave /usr/share/man/man1/schemagen.1 schemagen.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/schemagen.1 \ + --slave /usr/share/man/man1/serialver.1 serialver.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/serialver.1 \ + --slave /usr/share/man/man1/wsgen.1 wsgen.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/wsgen.1 \ + --slave /usr/share/man/man1/wsimport.1 wsimport.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/wsimport.1 \ + --slave /usr/share/man/man1/xjc.1 xjc.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/xjc.1 +fi diff --git a/linux/rpm/config/jdk-9-hotspot/provides.txt b/linux/rpm/config/jdk-9-hotspot/provides.txt new file mode 100644 index 000000000..09eef2654 --- /dev/null +++ b/linux/rpm/config/jdk-9-hotspot/provides.txt @@ -0,0 +1,8 @@ +java +java-9 +java-9-openjdk +java-openjdk +jre +jre-9 +jre-9-openjdk +jre-openjdk diff --git a/linux/rpm/config/jdk-9-openj9/dependencies.txt b/linux/rpm/config/jdk-9-openj9/dependencies.txt new file mode 100644 index 000000000..55a08e214 --- /dev/null +++ b/linux/rpm/config/jdk-9-openj9/dependencies.txt @@ -0,0 +1,17 @@ +/bin/sh +/usr/sbin/alternatives +ca-certificates +libX11.so.6 +libXext.so.6 +libXi.so.6 +libXrender.so.1 +libXtst.so.6 +libasound.so.2 +libc.so.6 +libelf.so.1 +libdl.so.2 +libgcc_s.so.1 +libm.so.6 +libpthread.so.0 +libthread_db.so.1 +libz.so.1 diff --git a/linux/rpm/config/jdk-9-openj9/postinst.sh b/linux/rpm/config/jdk-9-openj9/postinst.sh new file mode 100644 index 000000000..00264bba6 --- /dev/null +++ b/linux/rpm/config/jdk-9-openj9/postinst.sh @@ -0,0 +1,70 @@ +if [ $1 -ge 1 ] ; then + update-alternatives --install /usr/bin/java java {{ prefix }}/{{ jdkDirectoryName }}/bin/java 1091 \ + --slave /usr/bin/jjs jjs {{ prefix }}/{{ jdkDirectoryName }}/bin/jjs \ + --slave /usr/bin/jrunscript jrunscript {{ prefix }}/{{ jdkDirectoryName }}/bin/jrunscript \ + --slave /usr/bin/keytool keytool {{ prefix }}/{{ jdkDirectoryName }}/bin/keytool \ + --slave /usr/bin/orbd orbd {{ prefix }}/{{ jdkDirectoryName }}/bin/orbd \ + --slave /usr/bin/pack200 pack200 {{ prefix }}/{{ jdkDirectoryName }}/bin/pack200 \ + --slave /usr/bin/policytool policytool {{ prefix }}/{{ jdkDirectoryName }}/bin/policytool \ + --slave /usr/bin/rmid rmid {{ prefix }}/{{ jdkDirectoryName }}/bin/rmid \ + --slave /usr/bin/rmiregistry rmiregistry {{ prefix }}/{{ jdkDirectoryName }}/bin/rmiregistry \ + --slave /usr/bin/servertool servertool {{ prefix }}/{{ jdkDirectoryName }}/bin/servertool \ + --slave /usr/bin/tnameserv tnameserv {{ prefix }}/{{ jdkDirectoryName }}/bin/tnameserv \ + --slave /usr/bin/unpack200 unpack200 {{ prefix }}/{{ jdkDirectoryName }}/bin/unpack200 \ + --slave /usr/bin/jexec jexec {{ prefix }}/{{ jdkDirectoryName }}/lib/jexec \ + --slave /usr/share/man/man1/java.1 java.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/java.1 \ + --slave /usr/share/man/man1/jjs.1 jjs.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jjs.1 \ + --slave /usr/share/man/man1/jrunscript.1 jrunscript.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jrunscript.1 \ + --slave /usr/share/man/man1/keytool.1 keytool.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/keytool.1 \ + --slave /usr/share/man/man1/orbd.1 orbd.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/orbd.1 \ + --slave /usr/share/man/man1/pack200.1 pack200.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/pack200.1 \ + --slave /usr/share/man/man1/policytool.1 policytool.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/policytool.1 \ + --slave /usr/share/man/man1/rmid.1 rmid.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmid.1 \ + --slave /usr/share/man/man1/rmiregistry.1 rmiregistry.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmiregistry.1 \ + --slave /usr/share/man/man1/servertool.1 servertool.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/servertool.1 \ + --slave /usr/share/man/man1/tnameserv.1 tnameserv.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/tnameserv.1 \ + --slave /usr/share/man/man1/unpack200.1 unpack200.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/unpack200.1 + + update-alternatives --install /usr/bin/javac javac {{ prefix }}/{{ jdkDirectoryName }}/bin/javac 1091 \ + --slave /usr/bin/appletviewer appletviewer {{ prefix }}/{{ jdkDirectoryName }}/bin/appletviewer \ + --slave /usr/bin/idlj idlj {{ prefix }}/{{ jdkDirectoryName }}/bin/idlj \ + --slave /usr/bin/jar jar {{ prefix }}/{{ jdkDirectoryName }}/bin/jar \ + --slave /usr/bin/jarsigner jarsigner {{ prefix }}/{{ jdkDirectoryName }}/bin/jarsigner \ + --slave /usr/bin/javadoc javadoc {{ prefix }}/{{ jdkDirectoryName }}/bin/javadoc \ + --slave /usr/bin/javah javah {{ prefix }}/{{ jdkDirectoryName }}/bin/javah \ + --slave /usr/bin/javap javap {{ prefix }}/{{ jdkDirectoryName }}/bin/javap \ + --slave /usr/bin/jconsole jconsole {{ prefix }}/{{ jdkDirectoryName }}/bin/jconsole \ + --slave /usr/bin/jdb jdb {{ prefix }}/{{ jdkDirectoryName }}/bin/jdb \ + --slave /usr/bin/jdeprscan jdeprscan {{ prefix }}/{{ jdkDirectoryName }}/bin/jdeprscan \ + --slave /usr/bin/jdeps jdeps {{ prefix }}/{{ jdkDirectoryName }}/bin/jdeps \ + --slave /usr/bin/jdmpview jdmpview {{ prefix }}/{{ jdkDirectoryName }}/bin/jdmpview \ + --slave /usr/bin/jextract jextract {{ prefix }}/{{ jdkDirectoryName }}/bin/jextract \ + --slave /usr/bin/jimage jimage {{ prefix }}/{{ jdkDirectoryName }}/bin/jimage \ + --slave /usr/bin/jlink jlink {{ prefix }}/{{ jdkDirectoryName }}/bin/jlink \ + --slave /usr/bin/jmod jmod {{ prefix }}/{{ jdkDirectoryName }}/bin/jmod \ + --slave /usr/bin/jshell jshell {{ prefix }}/{{ jdkDirectoryName }}/bin/jshell \ + --slave /usr/bin/rmic rmic {{ prefix }}/{{ jdkDirectoryName }}/bin/rmic \ + --slave /usr/bin/schemagen schemagen {{ prefix }}/{{ jdkDirectoryName }}/bin/schemagen \ + --slave /usr/bin/serialver serialver {{ prefix }}/{{ jdkDirectoryName }}/bin/serialver \ + --slave /usr/bin/traceformat traceformat {{ prefix }}/{{ jdkDirectoryName }}/bin/traceformat \ + --slave /usr/bin/wsgen wsgen {{ prefix }}/{{ jdkDirectoryName }}/bin/wsgen \ + --slave /usr/bin/wsimport wsimport {{ prefix }}/{{ jdkDirectoryName }}/bin/wsimport \ + --slave /usr/bin/xjc xjc {{ prefix }}/{{ jdkDirectoryName }}/bin/xjc \ + --slave /usr/share/man/man1/appletviewer.1 appletviewer.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/appletviewer.1 \ + --slave /usr/share/man/man1/idlj.1 idlj.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/idlj.1 \ + --slave /usr/share/man/man1/jar.1 jar.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jar.1 \ + --slave /usr/share/man/man1/jarsigner.1 jarsigner.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jarsigner.1 \ + --slave /usr/share/man/man1/javac.1 javac.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javac.1 \ + --slave /usr/share/man/man1/javadoc.1 javadoc.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javadoc.1 \ + --slave /usr/share/man/man1/javah.1 javah.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javah.1 \ + --slave /usr/share/man/man1/javap.1 javap.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/javap.1 \ + --slave /usr/share/man/man1/jconsole.1 jconsole.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jconsole.1 \ + --slave /usr/share/man/man1/jdb.1 jdb.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jdb.1 \ + --slave /usr/share/man/man1/jdeps.1 jdeps.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/jdeps.1 \ + --slave /usr/share/man/man1/rmic.1 rmic.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/rmic.1 \ + --slave /usr/share/man/man1/schemagen.1 schemagen.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/schemagen.1 \ + --slave /usr/share/man/man1/serialver.1 serialver.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/serialver.1 \ + --slave /usr/share/man/man1/wsgen.1 wsgen.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/wsgen.1 \ + --slave /usr/share/man/man1/wsimport.1 wsimport.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/wsimport.1 \ + --slave /usr/share/man/man1/xjc.1 xjc.1 {{ prefix }}/{{ jdkDirectoryName }}/man/man1/xjc.1 +fi diff --git a/linux/rpm/config/jdk-9-openj9/provides.txt b/linux/rpm/config/jdk-9-openj9/provides.txt new file mode 100644 index 000000000..09eef2654 --- /dev/null +++ b/linux/rpm/config/jdk-9-openj9/provides.txt @@ -0,0 +1,8 @@ +java +java-9 +java-9-openjdk +java-openjdk +jre +jre-9 +jre-9-openjdk +jre-openjdk diff --git a/linux/rpm/config/prerm.sh b/linux/rpm/config/prerm.sh new file mode 100644 index 000000000..130f23a78 --- /dev/null +++ b/linux/rpm/config/prerm.sh @@ -0,0 +1,4 @@ +if [ $1 -eq 0 ]; then + update-alternatives --remove java {{ prefix }}/{{ jdkDirectoryName }}/bin/java + update-alternatives --remove javac {{ prefix }}/{{ jdkDirectoryName }}/bin/javac +fi diff --git a/linux/settings.gradle b/linux/settings.gradle new file mode 100644 index 000000000..ffd88d700 --- /dev/null +++ b/linux/settings.gradle @@ -0,0 +1 @@ +include ":deb", ":rpm"