From 031101b9982eeb4a0b397070ee54b4e94bbc0d05 Mon Sep 17 00:00:00 2001 From: Jerome Duval Date: Fri, 30 Oct 2020 14:11:18 +0100 Subject: [PATCH] openjdk14: new recipe --- dev-lang/openjdk/openjdk14-14.0.2.12.recipe | 255 ++++++++++++++++++ .../patches/openjdk14-14.0.2.12.patchset | 41 +++ 2 files changed, 296 insertions(+) create mode 100644 dev-lang/openjdk/openjdk14-14.0.2.12.recipe create mode 100644 dev-lang/openjdk/patches/openjdk14-14.0.2.12.patchset diff --git a/dev-lang/openjdk/openjdk14-14.0.2.12.recipe b/dev-lang/openjdk/openjdk14-14.0.2.12.recipe new file mode 100644 index 000000000..01d03aa3f --- /dev/null +++ b/dev-lang/openjdk/openjdk14-14.0.2.12.recipe @@ -0,0 +1,255 @@ +SUMMARY="An open-source implementation of the Java Platform, SE" +DESCRIPTION="OpenJDK (Open Java Development Kit) is a free and open source \ +implementation of the Java Platform, Standard Edition (Java SE). It is the \ +result of an effort Sun Microsystems began in 2006. + +The implementation is licensed under the GNU General Public License (GNU GPL) \ +with a linking exception. Were it not for the GPL linking exception, components \ +that linked to the Java class library would be subject to the terms of the GPL \ +license. OpenJDK is the official Java SE 8 reference implementation." +HOMEPAGE="https://openjdk.java.net/" +COPYRIGHT="2007-2020 Oracle and/or its affiliates." +LICENSE="GNU GPL v2" +REVISION="1" +jdkBuild="jdk-${portVersion%.*}+${portVersion##*.}" +srcGitRev="96d328ef6336c7e189638bbf9d208d223e953cb4" +SOURCE_URI="https://github.com/korli/haiku-jdk14u/archive/$srcGitRev.tar.gz" +CHECKSUM_SHA256="f9b01365d730f99036f8c8cfcfd56bf157a3b29ee58c5598c499fb3c6fc4ce4d" +SOURCE_DIR="haiku-jdk14u-$srcGitRev" +SOURCE_FILENAME="jdk14u-$jdkBuild-$srcGitRev.tar.gz" +SOURCE_URI_2="https://ftp.osuosl.org/pub/blfs/conglomeration/openjdk/jtreg-4.2-b13-433.tar.gz" +CHECKSUM_SHA256_2="ddf76660d4f519302b9c6310febcde3ff45313c435fff4e157854d1ff50785b1" +SOURCE_DIR_2="jtreg" +PATCHES="openjdk14-$portVersion.patchset" +ADDITIONAL_FILES=" + elf.h + " + +ARCHITECTURES="!x86_gcc2 ?x86 x86_64" +SECONDARY_ARCHITECTURES="x86" + +DISABLE_SOURCE_PACKAGE="yes" + # at least as long as Ant and a complete SDK image are part of the "sources" package + +PROVIDES=" + openjdk14$secondaryArchSuffix = $portVersion compat >= 14 + java:environment = 14 + " +REQUIRES=" + openjdk14${secondaryArchSuffix}_jre == $portVersion + " + +PROVIDES_default=" + openjdk14${secondaryArchSuffix}_default = $portVersion + cmd:jar = $portVersion compat >= 14 + cmd:jarsigner = $portVersion compat >= 14 + cmd:java = $portVersion compat >= 14 + cmd:javac = $portVersion compat >= 14 + cmd:javadoc = $portVersion compat >= 14 + cmd:javah = $portVersion compat >= 14 + cmd:javap = $portVersion compat >= 14 + cmd:jcmd = $portVersion compat >= 14 + cmd:jconsole = $portVersion compat >= 14 + cmd:jdb = $portVersion compat >= 14 + cmd:jinfo = $portVersion compat >= 14 + cmd:jmap = $portVersion compat >= 14 + cmd:jps = $portVersion compat >= 14 + cmd:jstack = $portVersion compat >= 14 + cmd:jstat = $portVersion compat >= 14 + cmd:jstatd = $portVersion compat >= 14 + cmd:keytool = $portVersion compat >= 14 + cmd:rmic = $portVersion compat >= 14 + cmd:rmid = $portVersion compat >= 14 + cmd:rmiregistry = $portVersion compat >= 14 + cmd:serialver = $portVersion compat >= 14 + " +REQUIRES_default=" + openjdk14$secondaryArchSuffix == $portVersion + " +CONFLICTS_default=" + openjdk8${secondaryArchSuffix}_default + openjdk9${secondaryArchSuffix}_default + openjdk10${secondaryArchSuffix}_default + openjdk11${secondaryArchSuffix}_default + openjdk12${secondaryArchSuffix}_default + openjdk13${secondaryArchSuffix}_default + " + +PROVIDES_jre=" + openjdk14${secondaryArchSuffix}_jre = $portVersion compat >= 14 + java:runtime = 14 + " +REQUIRES_jre=" + haiku$secondaryArchSuffix + lib:libfreetype$secondaryArchSuffix + lib:libiconv$secondaryArchSuffix + lib:libjpeg$secondaryArchSuffix + lib:libz$secondaryArchSuffix + ca_root_certificates_java + dejavu + " + +SUMMARY_sources="JDK source files, demos and examples" +PROVIDES_sources=" + openjdk14${secondaryArchSuffix}_sources = $portVersion compat >= 14 + " +REQUIRES_sources=" + openjdk14$secondaryArchSuffix + " + +BUILD_REQUIRES=" + haiku${secondaryArchSuffix}_devel + java:environment == 13 + ca_root_certificates + devel:libfontconfig$secondaryArchSuffix + devel:libfreetype$secondaryArchSuffix + devel:libiconv$secondaryArchSuffix + devel:libjpeg$secondaryArchSuffix + devel:libz$secondaryArchSuffix + " +BUILD_PREREQUIRES=" + cmd:cpio + cmd:make + cmd:gcc$secondaryArchSuffix + cmd:ld$secondaryArchSuffix + cmd:sed + cmd:tar + cmd:zip + cmd:gawk + cmd:hostname + cmd:find + cmd:unzip + cmd:unzipsfx + cmd:head + cmd:file + cmd:which + cmd:autoconf + cmd:pkg_config$secondaryArchSuffix + " + +TEST_REQUIRES=" + cmd:true + " + +BUILD() +{ + source /system/data/profile.d/openjdk13.sh + export PATH=$JDK13_HOME/bin:$PATH + export COMPANY=HaikuPorts + + ln -sfn $sourceDir2 jtreg + + cp $portDir/additional-files/elf.h src/hotspot/share/utilities + + # If ASLR is enabled, the JVM can fail to find a large enough area for + # the heap. + export DISABLE_ASLR=1 + + # Verify that we can allocate a large enough heap before starting. + java -XX:ThreadStackSize=1536 -Xmx1024M -version + + freeTypeHeaders=$(finddir B_SYSTEM_HEADERS_DIRECTORY)$secondaryArchSubDir/freetype2 + freeTypeLib=$(finddir B_SYSTEM_DEVELOP_DIRECTORY)/lib$secondaryArchSubDir + + bash ./configure \ + --with-freetype-include="${freeTypeHeaders}" \ + --with-freetype-lib="${freeTypeLib}" \ + --with-jtreg=./jtreg \ + --with-version-build="${portVersion//*.}" \ + --with-version-pre="" \ + --with-version-opt="" \ + --with-num-cores=1 \ + --disable-javac-server + + make images LOG=info +} + +INSTALL() +{ + # install the generated SDK image dir + jdkDir=$libDir/openjdk14 + + mkdir -p $jdkDir + cp -a build/haiku-*/images/jdk/* $jdkDir + + # set up the cacerts link + ln -sf $dataDir/ssl/java/cacerts $jdkDir/conf/security/ + + # symlink the executables to binDir + mkdir -p $prefix/bin + bins="jar jarsigner javac javadoc javah javap jcmd jconsole jdb jinfo \ + jmap jps jstack jstat jstatd rmic serialver" + bins_runtime="java keytool rmid rmiregistry" + man_runtime="" + for b in $bins $bins_runtime; do + symlinkRelative -s $jdkDir/bin/$b $prefix/bin + done + for b in $bins_runtime; do + man_runtime+=" $jdkDir/man/man1/$b.1" + done + + mkdir -p $dataDir/profile.d + + # create a profile.d file that sets up JAVA_HOME + jdkProfile=$dataDir/profile.d/openjdk.sh + echo "JAVA_HOME=$jdkDir" > $jdkProfile + echo "export JAVA_HOME" >> $jdkProfile + + # create a profile.d file that sets up JDK14_HOME + jdkProfile=$dataDir/profile.d/openjdk14.sh + echo "JDK14_HOME=$jdkDir" > $jdkProfile + echo "export JDK14_HOME" >> $jdkProfile + + # create a profile.d file that sets up JRE14_HOME + jreProfile=$dataDir/profile.d/openjre14.sh + echo "JRE14_HOME=$(getPackagePrefix jre)/$relativeLibDir/openjdk14" > $jreProfile + echo "export JRE14_HOME" >> $jreProfile + + find $jdkDir -name '*.diz' -o -name '*.debuginfo' -delete + # not for jre + mv $jdkDir/lib/libattach.so $jdkDir/lib/ct.sym $prefix + + packageEntries sources \ + $jdkDir/lib/src.zip \ + $jdkDir/demo + + packageEntries jre \ + $jdkDir/bin/java \ + $jdkDir/bin/jjs \ + $jdkDir/bin/jrunscript \ + $jdkDir/bin/keytool \ + $jdkDir/bin/rmid \ + $jdkDir/bin/rmiregistry \ + $jdkDir/conf \ + $jdkDir/legal \ + $jdkDir/lib \ + $jdkDir/release \ + $dataDir/profile.d/openjre14.sh \ + $man_runtime + + mkdir -p $jdkDir/lib + mv $prefix/libattach.so $prefix/ct.sym $jdkDir/lib/ + + packageEntries default \ + $prefix/bin \ + $dataDir/profile.d/openjdk.sh +} + +TEST() +{ + export DISABLE_ASLR=1 + make test JOBS=1 TEST=jdk_lang + make test-only JOBS=1 TEST=jdk_util + make test-only JOBS=1 TEST=jdk_math + make test-only JOBS=1 TEST=jdk_io + make test-only JOBS=1 TEST=jdk_nio + make test-only JOBS=1 TEST=jdk_net + make test-only JOBS=1 TEST=jdk_time + make test-only JOBS=1 TEST=jdk_rmi + make test-only JOBS=1 TEST=jdk_security + make test-only JOBS=1 TEST=jdk_text + make test-only JOBS=1 TEST=jdk_management + make test-only JOBS=1 TEST=jdk_instrument + make test-only JOBS=1 TEST=jdk_jmx + make test-only JOBS=1 TEST=jdk_jdi +} diff --git a/dev-lang/openjdk/patches/openjdk14-14.0.2.12.patchset b/dev-lang/openjdk/patches/openjdk14-14.0.2.12.patchset new file mode 100644 index 000000000..38fbad478 --- /dev/null +++ b/dev-lang/openjdk/patches/openjdk14-14.0.2.12.patchset @@ -0,0 +1,41 @@ +From 8a856dc15c1825289fadf3d1086d6cc5cd7159af Mon Sep 17 00:00:00 2001 +From: Jerome Duval +Date: Thu, 29 Oct 2020 14:07:26 +0100 +Subject: Haiku: workaround for NetworkInterface ioctl calls + +ATM the Haiku network stack checks for ioctl syscall length parameter. + +diff --git a/src/java.base/unix/native/libnet/NetworkInterface.c b/src/java.base/unix/native/libnet/NetworkInterface.c +index 653576d..6f03884 100644 +--- a/src/java.base/unix/native/libnet/NetworkInterface.c ++++ b/src/java.base/unix/native/libnet/NetworkInterface.c +@@ -2303,7 +2303,7 @@ static int getIndex(int sock, const char *name) { + memset((char *)&if2, 0, sizeof(if2)); + strncpy(if2.ifr_name, name, sizeof(if2.ifr_name) - 1); + +- if (ioctl(sock, SIOCGIFINDEX, (char *)&if2) < 0) { ++ if (ioctl(sock, SIOCGIFINDEX, (char *)&if2, sizeof(if2)) < 0) { + return -1; + } + +@@ -2351,7 +2351,7 @@ static int getMTU(JNIEnv *env, int sock, const char *ifname) { + memset((char *)&if2, 0, sizeof(if2)); + strncpy(if2.ifr_name, ifname, sizeof(if2.ifr_name) - 1); + +- if (ioctl(sock, SIOCGIFMTU, (char *)&if2) < 0) { ++ if (ioctl(sock, SIOCGIFMTU, (char *)&if2, sizeof(if2)) < 0) { + NET_ThrowByNameWithLastError + (env, JNU_JAVANETPKG "SocketException", "ioctl(SIOCGIFMTU) failed"); + return -1; +@@ -2365,7 +2365,7 @@ static int getFlags(int sock, const char *ifname, int *flags) { + memset((char *)&if2, 0, sizeof(if2)); + strncpy(if2.ifr_name, ifname, sizeof(if2.ifr_name) - 1); + +- if (ioctl(sock, SIOCGIFFLAGS, (char *)&if2) < 0) { ++ if (ioctl(sock, SIOCGIFFLAGS, (char *)&if2, sizeof(if2)) < 0) { + return -1; + } + +-- +2.28.0 +