diff options
author | Alexey Zelkin <phantom@FreeBSD.org> | 2003-10-29 08:20:59 +0000 |
---|---|---|
committer | Alexey Zelkin <phantom@FreeBSD.org> | 2003-10-29 08:20:59 +0000 |
commit | 7d2d0599c7d330076529d5cd10cfe77d7c87a66a (patch) | |
tree | 1f6187df706ce4ceb26af41365102ae6bcaba271 /java/jdk16 | |
parent | 1449be132b26a027ab06ccc734c3bc6a4af75128 (diff) | |
download | ports-7d2d0599c7d330076529d5cd10cfe77d7c87a66a.tar.gz ports-7d2d0599c7d330076529d5cd10cfe77d7c87a66a.zip |
Notes
Diffstat (limited to 'java/jdk16')
-rw-r--r-- | java/jdk16/Makefile | 3 | ||||
-rw-r--r-- | java/jdk16/files/patch-UNIXProcess_md.c.bsd | 93 | ||||
-rw-r--r-- | java/jdk16/pkg-plist | 1 |
3 files changed, 95 insertions, 2 deletions
diff --git a/java/jdk16/Makefile b/java/jdk16/Makefile index c40994be3ed5..c1ec79e7fa2c 100644 --- a/java/jdk16/Makefile +++ b/java/jdk16/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/jdk16/files/patch-UNIXProcess_md.c.bsd b/java/jdk16/files/patch-UNIXProcess_md.c.bsd new file mode 100644 index 000000000000..d9ec95eefa7c --- /dev/null +++ b/java/jdk16/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/jdk16/pkg-plist b/java/jdk16/pkg-plist index 87b8eb44c341..b10e800df614 100644 --- a/java/jdk16/pkg-plist +++ b/java/jdk16/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 |