aboutsummaryrefslogtreecommitdiff
path: root/java/jdk14
diff options
context:
space:
mode:
authorAlexey Zelkin <phantom@FreeBSD.org>2003-10-29 08:20:59 +0000
committerAlexey Zelkin <phantom@FreeBSD.org>2003-10-29 08:20:59 +0000
commit7d2d0599c7d330076529d5cd10cfe77d7c87a66a (patch)
tree1f6187df706ce4ceb26af41365102ae6bcaba271 /java/jdk14
parent1449be132b26a027ab06ccc734c3bc6a4af75128 (diff)
downloadports-7d2d0599c7d330076529d5cd10cfe77d7c87a66a.tar.gz
ports-7d2d0599c7d330076529d5cd10cfe77d7c87a66a.zip
Notes
Diffstat (limited to 'java/jdk14')
-rw-r--r--java/jdk14/Makefile3
-rw-r--r--java/jdk14/files/patch-UNIXProcess_md.c.bsd93
-rw-r--r--java/jdk14/pkg-plist1
3 files changed, 95 insertions, 2 deletions
diff --git a/java/jdk14/Makefile b/java/jdk14/Makefile
index c40994be3ed5..c1ec79e7fa2c 100644
--- a/java/jdk14/Makefile
+++ b/java/jdk14/Makefile
@@ -7,6 +7,7 @@
PORTNAME= jdk
PORTVERSION= ${JDK_VERSION}p${JDK_PATCHSET_VERSION}
+PORTREVISION= 1
CATEGORIES= java devel
MASTER_SITES= # http://www.sun.com/software/java2/download.html
# http://www.eyesbeyond.com/freebsddom/java/jdk14.html
@@ -211,8 +212,6 @@ post-build:
@# XXX make sure that SwingSet2/resources does not exists
@${RM} -rf ${JDKIMAGEDIR}/demo/jfc/SwingSet2/resources
@${RM} -rf ${JDKIMAGEDIR}/demo/plugin/jfc/SwingSet2/resources
- @# This file serves no purpose (in case of port)
- @${RM} -f ${JDKIMAGEDIR}/src.zip
.if !defined(NODEBUG)
pre-install:
diff --git a/java/jdk14/files/patch-UNIXProcess_md.c.bsd b/java/jdk14/files/patch-UNIXProcess_md.c.bsd
new file mode 100644
index 000000000000..d9ec95eefa7c
--- /dev/null
+++ b/java/jdk14/files/patch-UNIXProcess_md.c.bsd
@@ -0,0 +1,93 @@
+$FreeBSD$
+
+--- ../../j2se/src/solaris/native/java/lang/UNIXProcess_md.c.bsd.orig Wed Oct 29 12:22:58 2003
++++ ../../j2se/src/solaris/native/java/lang/UNIXProcess_md.c.bsd Wed Oct 29 12:23:33 2003
+@@ -22,6 +22,12 @@
+ #include <errno.h>
+ #include <unistd.h>
+
++#if defined(__FreeBSD__)
++#include <dlfcn.h>
++#include <pthread.h>
++#include <pthread_np.h>
++#endif
++
+ /* path in the environment */
+ static char **PATH = 0;
+ /* effective uid */
+@@ -228,6 +234,61 @@
+ }
+ }
+
++#if defined(__FreeBSD__)
++
++extern pid_t __sys_fork(void);
++
++static pid_t
++jdk_fork_wrapper()
++{
++ pid_t resultPid;
++#if (__FreeBSD_version < 5)
++ static int is_libc_r = -1;
++ void *funcref;
++
++ if (is_libc_r == -1) {
++ is_libc_r = 1;
++
++ /*
++ * BSDNOTE: Check for loaded symbols.
++ *
++ * If "_thr_critical_enter" is found assume we are using 'libthr'.
++ * If _kse_critical_enter is found assume we are using 'libkse'.
++ * Otherwise we are using libc_r.
++ *
++ * If libc_r is loaded, use fork system call drectly to avoid
++ * problems with using protected pages.
++ *
++ * --phantom
++ */
++ funcref = dlsym(RTLD_DEFAULT, "_kse_critical_enter");
++ if (funcref != NULL)
++ is_libc_r = 0;
++ else {
++ funcref = dlsym(RTLD_DEFAULT, "_thr_critical_enter");
++ if (funcref != NULL)
++ is_libc_r = 0;
++ }
++ }
++
++ if (is_libc_r == 0) {
++ /* Not a libc_r */
++ resultPid = fork();
++ } else {
++#endif /* __FreeBSD_version < 5 */
++ pthread_suspend_all_np();
++ resultPid = __sys_fork();
++ if (resultPid != 0)
++ /* leave child in single threading mode */
++ pthread_resume_all_np();
++#if (__FreeBSD_version < 5)
++ }
++#endif /* __FreeBSD_version < 5 */
++
++ return resultPid;
++}
++#endif /* __FreeBSD__ */
++
+ JNIEXPORT jint JNICALL
+ Java_java_lang_UNIXProcess_forkAndExec(JNIEnv *env,
+ jobject process,
+@@ -335,8 +396,12 @@
+ if (path != NULL) {
+ cwd = (char *)JNU_GetStringPlatformChars(env, path, NULL);
+ }
+-
++
++#if defined(__FreeBSD__)
++ resultPid = jdk_fork_wrapper();
++#else
+ resultPid = fork();
++#endif
+
+ if (resultPid < 0) {
+ char errmsg[128];
diff --git a/java/jdk14/pkg-plist b/java/jdk14/pkg-plist
index 87b8eb44c341..b10e800df614 100644
--- a/java/jdk14/pkg-plist
+++ b/java/jdk14/pkg-plist
@@ -2,6 +2,7 @@ jdk%%JDK_VERSION%%/COPYRIGHT
jdk%%JDK_VERSION%%/LICENSE
jdk%%JDK_VERSION%%/README
jdk%%JDK_VERSION%%/README.html
+jdk%%JDK_VERSION%%/src.zip
jdk%%JDK_VERSION%%/bin/ControlPanel
jdk%%JDK_VERSION%%/bin/HtmlConverter
jdk%%JDK_VERSION%%/bin/appletviewer