summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/Makefile2
-rw-r--r--java/dbvis/Makefile2
-rw-r--r--java/dbvis/distinfo6
-rw-r--r--java/jaxen/Makefile39
-rw-r--r--java/jaxen/distinfo2
-rw-r--r--java/jaxen/pkg-descr6
-rw-r--r--java/jdom/Makefile49
-rw-r--r--java/jdom/distinfo2
-rw-r--r--java/jdom/pkg-descr4
-rw-r--r--java/openjdk11/Makefile1
-rw-r--r--java/openjdk11/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c89
-rw-r--r--java/openjdk11/pkg-message6
-rw-r--r--java/openjdk17/Makefile1
-rw-r--r--java/openjdk17/files/patch-src_jdk.jdwp.agent_unix_native_libjdwp_exec__md.c20
-rw-r--r--java/openjdk17/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c91
-rw-r--r--java/openjdk17/pkg-message6
-rw-r--r--java/openjdk18/Makefile2
-rw-r--r--java/openjdk18/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c89
-rw-r--r--java/openjdk18/pkg-message6
-rw-r--r--java/openjdk19/Makefile2
-rw-r--r--java/openjdk19/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c89
-rw-r--r--java/openjdk19/pkg-message6
-rw-r--r--java/openjdk20/Makefile1
-rw-r--r--java/openjdk20/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c89
-rw-r--r--java/openjdk20/pkg-message6
-rw-r--r--java/openjdk21/Makefile1
-rw-r--r--java/openjdk21/files/patch-src_jdk.jdwp.agent_unix_native_libjdwp_exec__md.c20
-rw-r--r--java/openjdk21/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c89
-rw-r--r--java/openjdk21/pkg-message6
-rw-r--r--java/openjdk22/Makefile1
-rw-r--r--java/openjdk22/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c89
-rw-r--r--java/openjdk22/pkg-message6
-rw-r--r--java/openjdk23/Makefile2
-rw-r--r--java/openjdk23/files/patch-src_jdk.jdwp.agent_unix_native_libjdwp_exec__md.c20
-rw-r--r--java/openjdk23/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c89
-rw-r--r--java/openjdk23/pkg-message5
-rw-r--r--java/openjdk24/Makefile1
-rw-r--r--java/openjdk24/files/patch-src_jdk.jdwp.agent_unix_native_libjdwp_exec__md.c20
-rw-r--r--java/openjdk24/files/patch-src_jdk.management_unix_native_libmanagement__ext_OperatingSystemImpl.c89
-rw-r--r--java/openjdk24/pkg-message5
-rw-r--r--java/openjdk8/Makefile1
-rw-r--r--java/openjdk8/files/patch-jdk_src_solaris_native_sun_management_OperatingSystemImpl.c90
-rw-r--r--java/openjdk8/pkg-message6
43 files changed, 1005 insertions, 151 deletions
diff --git a/java/Makefile b/java/Makefile
index 42ad384d975f..432e6794f049 100644
--- a/java/Makefile
+++ b/java/Makefile
@@ -49,14 +49,12 @@
SUBDIR += javahelp
SUBDIR += javamail
SUBDIR += javavmwrapper
- SUBDIR += jaxen
SUBDIR += jcalendar
SUBDIR += jcckit
SUBDIR += jcommon
SUBDIR += jd-gui
SUBDIR += jdk11-doc
SUBDIR += jdk8-doc
- SUBDIR += jdom
SUBDIR += jflex
SUBDIR += jfreechart
SUBDIR += jgraph
diff --git a/java/dbvis/Makefile b/java/dbvis/Makefile
index 3c0e73951fad..9d86fc854342 100644
--- a/java/dbvis/Makefile
+++ b/java/dbvis/Makefile
@@ -1,5 +1,5 @@
PORTNAME= dbvis
-DISTVERSION= 25.1.4
+DISTVERSION= 25.2
CATEGORIES= java databases
MASTER_SITES= https://www.dbvis.com/product_download/${PORTNAME}-${DISTVERSION}/media/ \
https://storage.googleapis.com/${PORTNAME}-download/product_download/${PORTNAME}-${DISTVERSION}/media/
diff --git a/java/dbvis/distinfo b/java/dbvis/distinfo
index c96efd66c586..8c117038a040 100644
--- a/java/dbvis/distinfo
+++ b/java/dbvis/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1748297517
-SHA256 (dbvis_linux_25_1_4.tar.gz) = a04a74f8709f23ffee91cab1557e63e9ea76e53b2e387a651ed7969ebce52eef
-SIZE (dbvis_linux_25_1_4.tar.gz) = 186685977
+TIMESTAMP = 1750800000
+SHA256 (dbvis_linux_25_2.tar.gz) = af8ed4c4d8bc4e7f3a018a43b9ee4bfefb34dd906fbf4c36c5018c10cbdd22c2
+SIZE (dbvis_linux_25_2.tar.gz) = 116693845
diff --git a/java/jaxen/Makefile b/java/jaxen/Makefile
deleted file mode 100644
index bbe4fa2ce97e..000000000000
--- a/java/jaxen/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-PORTNAME= jaxen
-PORTVERSION= 1.0
-PORTREVISION= 4
-CATEGORIES= java textproc
-MASTER_SITES= SF/${PORTNAME}/${PORTNAME}/1-0-FCS
-DISTNAME= ${PORTNAME}-${PORTVERSION}-FCS
-
-MAINTAINER= ports@FreeBSD.org
-COMMENT= Java XPath Engine
-WWW= https://jaxen.org
-
-DEPRECATED= Outdated, unsupported upstream and unmaintained in tree for years
-EXPIRATION_DATE=2025-04-30
-
-USES= java
-
-NO_BUILD= YES
-
-JARFILES= jaxen-core.jar jaxen-dom.jar jaxen-dom4j.jar jaxen-exml.jar jaxen-full.jar jaxen-jdom.jar lib/saxpath.jar
-PLIST_FILES+= ${JARFILES:S,^lib/,,:S,^,%%JAVAJARDIR%%/,}
-
-DOCS= default.css download.html faq.html index.html javadoc status.html style
-PORTDOCS= LICENSE ${DOCS}
-
-OPTIONS_DEFINE= DOCS
-
-do-install:
- @${ECHO_MSG} -n ">> Installing JAR files in ${JAVAJARDIR}..."
- @${MKDIR} ${STAGEDIR}${JAVAJARDIR}
- @cd ${WRKSRC} && ${INSTALL_DATA} ${JARFILES} ${STAGEDIR}${JAVAJARDIR}/
- @${ECHO_MSG} " [ DONE ]"
- @${ECHO_MSG} -n ">> Installing documentation in ${DOCSDIR}..."
- @${MKDIR} ${STAGEDIR}${DOCSDIR}
- @cd ${WRKSRC}/doc && ${FIND} ${DOCS} \
- | ${CPIO} -pdmu -R ${SHAREOWN}:${SHAREGRP} ${STAGEDIR}${DOCSDIR} > /dev/null 2>&1
- @${INSTALL_DATA} ${WRKSRC}/LICENSE ${STAGEDIR}${DOCSDIR}/LICENSE
- @${ECHO_MSG} " [ DONE ]"
-
-.include <bsd.port.mk>
diff --git a/java/jaxen/distinfo b/java/jaxen/distinfo
deleted file mode 100644
index 06ade80e07bf..000000000000
--- a/java/jaxen/distinfo
+++ /dev/null
@@ -1,2 +0,0 @@
-SHA256 (jaxen-1.0-FCS.tar.gz) = ceb6997465e9de4efe6b4e8f0c421c12bd115b764f9633b9c8b80b95e3b76377
-SIZE (jaxen-1.0-FCS.tar.gz) = 3195819
diff --git a/java/jaxen/pkg-descr b/java/jaxen/pkg-descr
deleted file mode 100644
index 56055b17b3cb..000000000000
--- a/java/jaxen/pkg-descr
+++ /dev/null
@@ -1,6 +0,0 @@
-The Jaxen project is a Java XPath Engine. jaxen is a universal object model
-walker, capable of evaluating XPath expressions across multiple models.
-Currently supported are dom4j and JDOM .
-
-Jaxen provides a single point for XPath expression evaluation, regardless of
-the target object model, whether its dom4j, JDOM, DOM, JavaBeans, or whatnot.
diff --git a/java/jdom/Makefile b/java/jdom/Makefile
deleted file mode 100644
index f67f1fefe742..000000000000
--- a/java/jdom/Makefile
+++ /dev/null
@@ -1,49 +0,0 @@
-PORTNAME= jdom
-PORTVERSION= 1.1.1
-PORTREVISION= 1
-PORTEPOCH= 1
-CATEGORIES= java textproc
-MASTER_SITES= http://www.jdom.org/dist/source/
-
-MAINTAINER= ports@FreeBSD.org
-COMMENT= Java library for accessing and manipulating XML documents
-WWW= http://www.jdom.org/
-
-DEPRECATED= Depends on exired java/jaxen
-EXPIRATION_DATE=2025-06-04
-
-RUN_DEPENDS= ${JAVALIBDIR}/jaxen-jdom.jar:java/jaxen
-
-USES= java:ant,run
-JAVA_VERSION= 8
-
-ALL_TARGET= package
-
-WRKSRC= ${WRKDIR}/${PORTNAME}
-
-MAKE_ENV+= CLASSPATH=${JAVALIBDIR}/jaxen-jdom.jar
-
-PLIST_FILES= %%JAVAJARDIR%%/jdom.jar
-PORTDOCS= *
-PORTEXAMPLES= *
-
-OPTIONS_DEFINE= DOCS EXAMPLES
-
-DOCS_ALL_TARGET= javadoc
-
-do-install:
- @${MKDIR} ${STAGEDIR}${JAVAJARDIR}
- ${INSTALL_DATA} ${WRKSRC}/build/jdom.jar ${STAGEDIR}${JAVAJARDIR}
-
-do-install-DOCS-on:
- @${MKDIR} ${STAGEDIR}${DOCSDIR}
- (cd ${WRKSRC}/build && ${COPYTREE_SHARE} apidocs ${STAGEDIR}${DOCSDIR})
- (cd ${WRKSRC} && ${INSTALL_DATA} README.txt TODO.txt CHANGES.txt \
- COMMITTERS.txt LICENSE.txt ${STAGEDIR}${DOCSDIR})
-
-do-install-EXAMPLES-on:
- @${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
- (cd ${WRKSRC}/build/samples/ && ${COPYTREE_SHARE} . \
- ${STAGEDIR}${EXAMPLESDIR})
-
-.include <bsd.port.mk>
diff --git a/java/jdom/distinfo b/java/jdom/distinfo
deleted file mode 100644
index 944602d6c090..000000000000
--- a/java/jdom/distinfo
+++ /dev/null
@@ -1,2 +0,0 @@
-SHA256 (jdom-1.1.1.tar.gz) = 1fe5dfd2a339bd2e015a0c805eea1bf4ac601919a6f0bee2ec97e84fd62967d6
-SIZE (jdom-1.1.1.tar.gz) = 3648497
diff --git a/java/jdom/pkg-descr b/java/jdom/pkg-descr
deleted file mode 100644
index e318abf6b128..000000000000
--- a/java/jdom/pkg-descr
+++ /dev/null
@@ -1,4 +0,0 @@
-JDOM is a Java library for accessing and manipulating XML documents.
-It has a straightforward API, is a lightweight and fast, and is
-optimized for the Java programmer. It's an alternative to DOM and
-SAX, although it integrates well with both DOM and SAX.
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
}