summaryrefslogtreecommitdiff
path: root/java/openjdk18
diff options
context:
space:
mode:
Diffstat (limited to 'java/openjdk18')
-rw-r--r--java/openjdk18/Makefile16
-rw-r--r--java/openjdk18/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c89
-rw-r--r--java/openjdk18/pkg-message6
3 files changed, 105 insertions, 6 deletions
diff --git a/java/openjdk18/Makefile b/java/openjdk18/Makefile
index f2afc74762f9..7c1d3c410707 100644
--- a/java/openjdk18/Makefile
+++ b/java/openjdk18/Makefile
@@ -1,7 +1,7 @@
PORTNAME= openjdk
DISTVERSIONPREFIX= jdk-
DISTVERSION= ${JDK_MAJOR_VERSION}.${JDK_MINOR_VERSION}.${JDK_PATCH_VERSION}+${JDK_BUILD_NUMBER}-${BSD_JDK_VERSION}
-PORTREVISION= 2
+PORTREVISION= 5
CATEGORIES= java devel
PKGNAMESUFFIX?= ${JDK_MAJOR_VERSION}
@@ -11,6 +11,9 @@ WWW= https://openjdk.java.net/projects/jdk/18/
LICENSE= GPLv2
+DEPRECATED= No longer supported by upstream
+EXPIRATION_DATE= 2026-01-12
+
ONLY_FOR_ARCHS= aarch64 amd64 i386 powerpc64 powerpc64le
BUILD_DEPENDS= zip:archivers/zip \
@@ -39,7 +42,9 @@ GH_PROJECT= jdk18u
NO_CCACHE= yes
-_MAKE_JOBS= #
+# Suppress passing -j to do-build target via Mk/bsd.port.mk
+# In the JDK build the number of parallel jobs is passed in via configure --with-num-cores=N
+_MAKE_JOBS=
MAKE_ENV= LANG="C" \
LC_ALL="C" \
CLASSPATH="" \
@@ -48,6 +53,7 @@ MAKE_ENV= LANG="C" \
CC=${CC} \
CXX=${CXX} \
CPP=${CPP} \
+ LOG=cmdlines \
MAKEFLAGS=""
JDK_OSARCH= bsd-${ARCH:S/amd64/x86_64/:S/i386/x86/:S/powerpc64/ppc64/}
@@ -90,6 +96,7 @@ CONFIGURE_ARGS= --with-boot-jdk=${BOOTSTRAPJDKDIR} \
--with-giflib-lib=${LOCALBASE}/lib \
--with-harfbuzz=system \
--with-libpng=system \
+ --with-num-cores=${MAKE_JOBS_NUMBER} \
--with-zlib=system \
--with-lcms=system \
--x-includes=${LOCALBASE}/include \
@@ -113,6 +120,11 @@ JDK_BUILD_TYPE= release
.include <bsd.port.pre.mk>
+# portsfallout.com shows flapping builds on 13.5 and 14.2
+.if ${OPSYS} == FreeBSD && ${OSVERSION} < 1403000
+MAKE_JOBS_UNSAFE= yes
+.endif
+
BOOTSTRAP_JDKS= ${LOCALBASE}/openjdk18
.if ${ARCH} == aarch64 || ${ARCH} == amd64 || ${ARCH} == i386 || ${ARCH:Mpowerpc64*}
BOOTSTRAP_JDKS+= ${LOCALBASE}/bootstrap-openjdk17
diff --git a/java/openjdk18/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c b/java/openjdk18/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c
new file mode 100644
index 000000000000..0e4c9e8aa76a
--- /dev/null
+++ b/java/openjdk18/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c
@@ -0,0 +1,89 @@
+--- src/jdk.management/unix/native/libmanagement_ext/OperatingSystemImpl.c.orig 2022-07-20 22:54:48 UTC
++++ src/jdk.management/unix/native/libmanagement_ext/OperatingSystemImpl.c
+@@ -58,6 +58,7 @@
+ #include <unistd.h>
+
+ #ifdef __FreeBSD__
++#include <sys/user.h>
+ #include <vm/vm_param.h>
+ #endif
+
+@@ -178,23 +179,43 @@ Java_com_sun_management_internal_OperatingSystemImpl_g
+ }
+ return t_info.virtual_size;
+ #elif defined(__FreeBSD__)
+- FILE *fp;
+- unsigned long end, start;
+- jlong total = 0;
++ int mib[4];
++ struct kinfo_vmentry *kve;
++ long total = 0;
++ size_t len = 0;
++ int error;
++ char *buf, *bp, *eb;
+
+- if ((fp = fopen("/proc/curproc/map", "r")) == NULL) {
+- throw_internal_error(env, "Unable to open /proc/curproc/map");
++ mib[0] = CTL_KERN;
++ mib[1] = KERN_PROC;
++ mib[2] = KERN_PROC_VMMAP;
++ mib[3] = getpid();
++ error = sysctl(mib, 4, NULL, &len, NULL, 0);
++ if (error) {
++ throw_internal_error(env, "Cannot sysctl(kern.proc.vvmap)");
+ return -1;
+ }
+-
+- for (;;) {
+- // Ignore everything except start and end entries
+- if (fscanf(fp, "0x%lx 0x%lx %*[^\n]\n", &start, &end) != 2 || start > end)
+- break;
+- total += end - start;
++ len = len * 4 / 3;
++ buf = malloc(len);
++ if (buf == NULL) {
++ throw_internal_error(env, "Fail to allocate memory");
++ return -1;
+ }
+-
+- fclose(fp);
++ error = sysctl(mib, 4, buf, &len, NULL, 0);
++ if (error) {
++ throw_internal_error(env, "Cannot sysctl(kern.proc.vvmap)");
++ return -1;
++ }
++ bp = buf;
++ eb = buf + len;
++ while (bp < eb) {
++ kve = (struct kinfo_vmentry *)(uintptr_t)bp;
++ if (kve->kve_structsize == 0)
++ break;
++ bp += kve->kve_structsize;
++ total += kve->kve_end - kve->kve_start;
++ }
++ free(buf);
+ return total;
+ #else /* _ALLBSD_SOURCE */
+ /*
+@@ -404,6 +425,21 @@ Java_com_sun_management_internal_OperatingSystemImpl_g
+ return nfiles;
+ #elif defined(__OpenBSD__)
+ return getdtablecount();
++#elif defined(__FreeBSD__)
++ int mib[4];
++ int error;
++ int nfds;
++ size_t len;
++
++ len = sizeof(nfds);
++ mib[0] = CTL_KERN;
++ mib[1] = KERN_PROC;
++ mib[2] = KERN_PROC_NFDS;
++ mib[3] = 0;
++
++ if (sysctl(mib, 4, &nfds, &len, NULL, 0) == -1)
++ return -1;
++ return nfds;
+ #else /* solaris/linux */
+ DIR *dirp;
+ struct dirent* dentp;
diff --git a/java/openjdk18/pkg-message b/java/openjdk18/pkg-message
index fcb6defe8dcd..811dcb1e3b58 100644
--- a/java/openjdk18/pkg-message
+++ b/java/openjdk18/pkg-message
@@ -1,17 +1,15 @@
[
{ type: install
message: <<EOM
-This OpenJDK implementation may require fdescfs(5) mounted on /dev/fd
-and procfs(5) mounted on /proc for some applications.
+This OpenJDK implementation may require procfs(5) mounted on /proc for some
+applications.
If you have not done it yet, please do the following:
- mount -t fdescfs fdesc /dev/fd
mount -t procfs proc /proc
To make it permanent, you need the following lines in /etc/fstab:
- fdesc /dev/fd fdescfs rw 0 0
proc /proc procfs rw 0 0
EOM
}