diff options
Diffstat (limited to 'java')
34 files changed, 1001 insertions, 43 deletions
diff --git a/java/openjdk11/Makefile b/java/openjdk11/Makefile index 25c3ae414590..a5d9e29dc2aa 100644 --- a/java/openjdk11/Makefile +++ b/java/openjdk11/Makefile @@ -1,6 +1,7 @@ PORTNAME= openjdk DISTVERSIONPREFIX= jdk- DISTVERSION= ${JDK_MAJOR_VERSION}.${JDK_MINOR_VERSION}.${JDK_PATCH_VERSION}+${JDK_BUILD_NUMBER}-${BSD_JDK_VERSION} +PORTREVISION= 1 CATEGORIES= java devel PKGNAMESUFFIX?= ${JDK_MAJOR_VERSION} diff --git a/java/openjdk11/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c b/java/openjdk11/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c new file mode 100644 index 000000000000..4983d68853d1 --- /dev/null +++ b/java/openjdk11/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 2025-04-19 23:57:10 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 + +@@ -261,23 +262,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 */ + /* +@@ -487,6 +508,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 dirent64* dentp; diff --git a/java/openjdk11/pkg-message b/java/openjdk11/pkg-message index fcb6defe8dcd..811dcb1e3b58 100644 --- a/java/openjdk11/pkg-message +++ b/java/openjdk11/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 } diff --git a/java/openjdk17/Makefile b/java/openjdk17/Makefile index 5f9671287f89..6fe93311d295 100644 --- a/java/openjdk17/Makefile +++ b/java/openjdk17/Makefile @@ -1,6 +1,7 @@ PORTNAME= openjdk DISTVERSIONPREFIX= jdk- DISTVERSION= ${JDK_MAJOR_VERSION}.${JDK_MINOR_VERSION}.${JDK_PATCH_VERSION}+${JDK_BUILD_NUMBER}-${BSD_JDK_VERSION} +PORTREVISION= 1 CATEGORIES= java devel PKGNAMESUFFIX?= ${JDK_MAJOR_VERSION} diff --git a/java/openjdk17/files/patch-src_jdk.jdwp.agent_unix_native_libjdwp_exec__md.c b/java/openjdk17/files/patch-src_jdk.jdwp.agent_unix_native_libjdwp_exec__md.c new file mode 100644 index 000000000000..80ae4c90cdf7 --- /dev/null +++ b/java/openjdk17/files/patch-src_jdk.jdwp.agent_unix_native_libjdwp_exec__md.c @@ -0,0 +1,20 @@ +--- src/jdk.jdwp.agent/unix/native/libjdwp/exec_md.c.orig 2025-06-27 12:18:08 UTC ++++ src/jdk.jdwp.agent/unix/native/libjdwp/exec_md.c +@@ -70,6 +70,9 @@ closeDescriptors(void) + int + closeDescriptors(void) + { ++#if defined(__FreeBSD__) ++ closefrom(STDERR_FILENO + 1); ++#else + DIR *dp; + struct dirent *dirp; + /* leave out standard input/output/error descriptors */ +@@ -114,6 +117,7 @@ closeDescriptors(void) + + (void)closedir(dp); + ++#endif + return 1; // success + } + diff --git a/java/openjdk17/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c b/java/openjdk17/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c new file mode 100644 index 000000000000..1131ff26e268 --- /dev/null +++ b/java/openjdk17/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c @@ -0,0 +1,91 @@ +--- src/jdk.management/unix/native/libmanagement_ext/OperatingSystemImpl.c.orig 2025-04-19 18:17:03 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,45 @@ 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; ++ /* if (kve->kve_type != KVME_TYPE_VNODE) ++ continue;*/ ++ total += kve->kve_end - kve->kve_start; ++ } ++ free(buf); + return total; + #else /* _ALLBSD_SOURCE */ + /* +@@ -404,6 +427,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/openjdk17/pkg-message b/java/openjdk17/pkg-message index fcb6defe8dcd..811dcb1e3b58 100644 --- a/java/openjdk17/pkg-message +++ b/java/openjdk17/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 } diff --git a/java/openjdk18/Makefile b/java/openjdk18/Makefile index f2afc74762f9..2ef6fa17ed08 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= 3 CATEGORIES= java devel PKGNAMESUFFIX?= ${JDK_MAJOR_VERSION} 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 } diff --git a/java/openjdk19/Makefile b/java/openjdk19/Makefile index 76e891045906..73c086d5d5ed 100644 --- a/java/openjdk19/Makefile +++ b/java/openjdk19/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= 1 +PORTREVISION= 2 CATEGORIES= java devel PKGNAMESUFFIX?= ${JDK_MAJOR_VERSION} diff --git a/java/openjdk19/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c b/java/openjdk19/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c new file mode 100644 index 000000000000..0e4c9e8aa76a --- /dev/null +++ b/java/openjdk19/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/openjdk19/pkg-message b/java/openjdk19/pkg-message index fcb6defe8dcd..811dcb1e3b58 100644 --- a/java/openjdk19/pkg-message +++ b/java/openjdk19/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 } diff --git a/java/openjdk20/Makefile b/java/openjdk20/Makefile index cc25cb796b82..a4035e25e6bf 100644 --- a/java/openjdk20/Makefile +++ b/java/openjdk20/Makefile @@ -1,6 +1,7 @@ PORTNAME= openjdk DISTVERSIONPREFIX= jdk- DISTVERSION= ${JDK_MAJOR_VERSION}.${JDK_MINOR_VERSION}.${JDK_PATCH_VERSION}+${JDK_BUILD_NUMBER}-${BSD_JDK_VERSION} +PORTREVISION= 1 CATEGORIES= java devel PKGNAMESUFFIX?= ${JDK_MAJOR_VERSION} diff --git a/java/openjdk20/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c b/java/openjdk20/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c new file mode 100644 index 000000000000..421548d0f4a5 --- /dev/null +++ b/java/openjdk20/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 2023-10-01 03:54:04 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 + +@@ -177,23 +178,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 */ + /* +@@ -403,6 +424,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/openjdk20/pkg-message b/java/openjdk20/pkg-message index fcb6defe8dcd..811dcb1e3b58 100644 --- a/java/openjdk20/pkg-message +++ b/java/openjdk20/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 } diff --git a/java/openjdk21/Makefile b/java/openjdk21/Makefile index c8dccf841f5f..3f4f39194c65 100644 --- a/java/openjdk21/Makefile +++ b/java/openjdk21/Makefile @@ -3,6 +3,7 @@ DISTVERSIONPREFIX= jdk- DISTVERSION= ${JDK_MAJOR_VERSION}.${JDK_MINOR_VERSION}.${JDK_PATCH_VERSION}+${JDK_BUILD_NUMBER}-${BSD_JDK_VERSION} CATEGORIES= java devel PKGNAMESUFFIX?= ${JDK_MAJOR_VERSION} +PORTREVISION= 1 MAINTAINER= java@FreeBSD.org COMMENT?= Java Development Kit ${JDK_MAJOR_VERSION} diff --git a/java/openjdk21/files/patch-src_jdk.jdwp.agent_unix_native_libjdwp_exec__md.c b/java/openjdk21/files/patch-src_jdk.jdwp.agent_unix_native_libjdwp_exec__md.c new file mode 100644 index 000000000000..80ae4c90cdf7 --- /dev/null +++ b/java/openjdk21/files/patch-src_jdk.jdwp.agent_unix_native_libjdwp_exec__md.c @@ -0,0 +1,20 @@ +--- src/jdk.jdwp.agent/unix/native/libjdwp/exec_md.c.orig 2025-06-27 12:18:08 UTC ++++ src/jdk.jdwp.agent/unix/native/libjdwp/exec_md.c +@@ -70,6 +70,9 @@ closeDescriptors(void) + int + closeDescriptors(void) + { ++#if defined(__FreeBSD__) ++ closefrom(STDERR_FILENO + 1); ++#else + DIR *dp; + struct dirent *dirp; + /* leave out standard input/output/error descriptors */ +@@ -114,6 +117,7 @@ closeDescriptors(void) + + (void)closedir(dp); + ++#endif + return 1; // success + } + diff --git a/java/openjdk21/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c b/java/openjdk21/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c new file mode 100644 index 000000000000..421548d0f4a5 --- /dev/null +++ b/java/openjdk21/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 2023-10-01 03:54:04 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 + +@@ -177,23 +178,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 */ + /* +@@ -403,6 +424,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/openjdk21/pkg-message b/java/openjdk21/pkg-message index fcb6defe8dcd..811dcb1e3b58 100644 --- a/java/openjdk21/pkg-message +++ b/java/openjdk21/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 } diff --git a/java/openjdk22/Makefile b/java/openjdk22/Makefile index 1abbc17ca84e..d81cbb146655 100644 --- a/java/openjdk22/Makefile +++ b/java/openjdk22/Makefile @@ -1,6 +1,7 @@ PORTNAME= openjdk DISTVERSIONPREFIX= jdk- DISTVERSION= ${JDK_MAJOR_VERSION}.${JDK_MINOR_VERSION}.${JDK_PATCH_VERSION}+${JDK_BUILD_NUMBER}-${BSD_JDK_VERSION} +PORTREVISION= 1 CATEGORIES= java devel PKGNAMESUFFIX?= ${JDK_MAJOR_VERSION} diff --git a/java/openjdk22/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c b/java/openjdk22/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c new file mode 100644 index 000000000000..421548d0f4a5 --- /dev/null +++ b/java/openjdk22/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 2023-10-01 03:54:04 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 + +@@ -177,23 +178,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 */ + /* +@@ -403,6 +424,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/openjdk22/pkg-message b/java/openjdk22/pkg-message index fcb6defe8dcd..811dcb1e3b58 100644 --- a/java/openjdk22/pkg-message +++ b/java/openjdk22/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 } diff --git a/java/openjdk23/Makefile b/java/openjdk23/Makefile index 5706851ce9df..009beccc3d76 100644 --- a/java/openjdk23/Makefile +++ b/java/openjdk23/Makefile @@ -3,7 +3,7 @@ DISTVERSIONPREFIX= jdk- DISTVERSION= ${JDK_MAJOR_VERSION}.${JDK_MINOR_VERSION}.${JDK_PATCH_VERSION}+${JDK_BUILD_NUMBER}-${BSD_JDK_VERSION} CATEGORIES= java devel PKGNAMESUFFIX?= ${JDK_MAJOR_VERSION} -PORTREVISION= 1 +PORTREVISION= 2 MAINTAINER= java@FreeBSD.org COMMENT= Java Development Kit ${JDK_MAJOR_VERSION} diff --git a/java/openjdk23/files/patch-src_jdk.jdwp.agent_unix_native_libjdwp_exec__md.c b/java/openjdk23/files/patch-src_jdk.jdwp.agent_unix_native_libjdwp_exec__md.c new file mode 100644 index 000000000000..80ae4c90cdf7 --- /dev/null +++ b/java/openjdk23/files/patch-src_jdk.jdwp.agent_unix_native_libjdwp_exec__md.c @@ -0,0 +1,20 @@ +--- src/jdk.jdwp.agent/unix/native/libjdwp/exec_md.c.orig 2025-06-27 12:18:08 UTC ++++ src/jdk.jdwp.agent/unix/native/libjdwp/exec_md.c +@@ -70,6 +70,9 @@ closeDescriptors(void) + int + closeDescriptors(void) + { ++#if defined(__FreeBSD__) ++ closefrom(STDERR_FILENO + 1); ++#else + DIR *dp; + struct dirent *dirp; + /* leave out standard input/output/error descriptors */ +@@ -114,6 +117,7 @@ closeDescriptors(void) + + (void)closedir(dp); + ++#endif + return 1; // success + } + diff --git a/java/openjdk23/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c b/java/openjdk23/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c new file mode 100644 index 000000000000..421548d0f4a5 --- /dev/null +++ b/java/openjdk23/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 2023-10-01 03:54:04 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 + +@@ -177,23 +178,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 */ + /* +@@ -403,6 +424,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/openjdk23/pkg-message b/java/openjdk23/pkg-message index 2ea3d87d89c8..c072654ad070 100644 --- a/java/openjdk23/pkg-message +++ b/java/openjdk23/pkg-message @@ -1,17 +1,14 @@ [ { type: install message: <<EOM -This OpenJDK implementation requires fdescfs(5) mounted on /dev/fd and -procfs(5) mounted on /proc. +This OpenJDK implementation may require procfs(5) mounted on /proc. 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 } diff --git a/java/openjdk24/Makefile b/java/openjdk24/Makefile index a3a1acc22792..f40990c831e8 100644 --- a/java/openjdk24/Makefile +++ b/java/openjdk24/Makefile @@ -3,6 +3,7 @@ DISTVERSIONPREFIX= jdk- DISTVERSION= ${JDK_MAJOR_VERSION}.${JDK_MINOR_VERSION}.${JDK_PATCH_VERSION}+${JDK_BUILD_NUMBER}-${BSD_JDK_VERSION} CATEGORIES= java devel PKGNAMESUFFIX?= ${JDK_MAJOR_VERSION} +PORTREVISION= 1 MAINTAINER= java@FreeBSD.org COMMENT= Java Development Kit ${JDK_MAJOR_VERSION} diff --git a/java/openjdk24/files/patch-src_jdk.jdwp.agent_unix_native_libjdwp_exec__md.c b/java/openjdk24/files/patch-src_jdk.jdwp.agent_unix_native_libjdwp_exec__md.c new file mode 100644 index 000000000000..80ae4c90cdf7 --- /dev/null +++ b/java/openjdk24/files/patch-src_jdk.jdwp.agent_unix_native_libjdwp_exec__md.c @@ -0,0 +1,20 @@ +--- src/jdk.jdwp.agent/unix/native/libjdwp/exec_md.c.orig 2025-06-27 12:18:08 UTC ++++ src/jdk.jdwp.agent/unix/native/libjdwp/exec_md.c +@@ -70,6 +70,9 @@ closeDescriptors(void) + int + closeDescriptors(void) + { ++#if defined(__FreeBSD__) ++ closefrom(STDERR_FILENO + 1); ++#else + DIR *dp; + struct dirent *dirp; + /* leave out standard input/output/error descriptors */ +@@ -114,6 +117,7 @@ closeDescriptors(void) + + (void)closedir(dp); + ++#endif + return 1; // success + } + diff --git a/java/openjdk24/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c b/java/openjdk24/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c new file mode 100644 index 000000000000..421548d0f4a5 --- /dev/null +++ b/java/openjdk24/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 2023-10-01 03:54:04 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 + +@@ -177,23 +178,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 */ + /* +@@ -403,6 +424,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/openjdk24/pkg-message b/java/openjdk24/pkg-message index 2ea3d87d89c8..a266eda414d0 100644 --- a/java/openjdk24/pkg-message +++ b/java/openjdk24/pkg-message @@ -1,17 +1,14 @@ [ { type: install message: <<EOM -This OpenJDK implementation requires fdescfs(5) mounted on /dev/fd and -procfs(5) mounted on /proc. +This OpenJDK implementation may requires procfs(5) mounted on /proc. 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 } diff --git a/java/openjdk8/Makefile b/java/openjdk8/Makefile index 7e8727685aa0..4c820c1fbb69 100644 --- a/java/openjdk8/Makefile +++ b/java/openjdk8/Makefile @@ -1,5 +1,6 @@ PORTNAME= openjdk PORTVERSION= ${JDK_MAJOR_VERSION}.${JDK_UPDATE_VERSION}.${JDK_BUILD_NUMBER}.${BSD_JDK_VERSION} +PORTREVISION= 1 CATEGORIES= java devel MASTER_SITES= LOCAL/jkim:jtreg PKGNAMESUFFIX?= ${JDK_MAJOR_VERSION} diff --git a/java/openjdk8/files/patch-jdk_src_solaris_native_sun_management_OperatingSystemImpl.c b/java/openjdk8/files/patch-jdk_src_solaris_native_sun_management_OperatingSystemImpl.c new file mode 100644 index 000000000000..c542431a3ca3 --- /dev/null +++ b/java/openjdk8/files/patch-jdk_src_solaris_native_sun_management_OperatingSystemImpl.c @@ -0,0 +1,90 @@ +--- jdk/src/solaris/native/sun/management/OperatingSystemImpl.c.orig 2025-04-19 16:48:54 UTC ++++ jdk/src/solaris/native/sun/management/OperatingSystemImpl.c +@@ -57,6 +57,7 @@ + #include <stdlib.h> + #include <unistd.h> + #ifdef __FreeBSD__ ++#include <sys/user.h> + #include <vm/vm_param.h> + #endif + +@@ -266,23 +267,45 @@ Java_sun_management_OperatingSystemImpl_getCommittedVi + } + 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 */ + /* +@@ -486,6 +509,21 @@ Java_sun_management_OperatingSystemImpl_getOpenFileDes + 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 dbuf; diff --git a/java/openjdk8/pkg-message b/java/openjdk8/pkg-message index fcb6defe8dcd..811dcb1e3b58 100644 --- a/java/openjdk8/pkg-message +++ b/java/openjdk8/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 } |