Date: Wed, 8 Oct 2003 18:51:13 -0600 From: Greg Lewis <glewis@eyesbeyond.com> To: freebsd-java@freebsd.org Cc: phantom@freebsd.org Subject: jdk14 patches Message-ID: <20031009005113.GA50130@misty.eyesbeyond.com>
next in thread | raw e-mail | index | archive | help
--3V7upXqbjpZ4EhLz Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi all, Attached is a set of patches for the jdk14 port. These should fix a number of well known bugs, including getting things compiling on -CURRENT. Assuming: 1) Someone confirms these do actually get things compiling on -CURRENT. 2) Patchset 4 doesn't come out (*). 3) They get a positive review from Alexey (or no response). Then I'll commit the patches in a weeks time. If not, then hopefully collecting them together like this will at least help some people. I am currently running these changes at work, FWIW. Alexey, please take a look at these. The changes to the Makefile and installation of preferences files are independent of patchset 4. * I don't know when patchset 4 is coming out. Please direct questions about this to Alexey. -- Greg Lewis Email : glewis@eyesbeyond.com Eyes Beyond Web : http://www.eyesbeyond.com Information Technology FreeBSD : glewis@FreeBSD.org --3V7upXqbjpZ4EhLz Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="jdk14.diff" Index: Makefile =================================================================== RCS file: /var/fcvs/ports/java/jdk14/Makefile,v retrieving revision 1.60 diff -u -r1.60 Makefile --- Makefile 1 Oct 2003 16:14:20 -0000 1.60 +++ Makefile 8 Oct 2003 21:49:45 -0000 @@ -43,6 +43,7 @@ # workaround to handle both 'zip' and 'tar.gz' distfiles USE_ZIP= YES +USE_REINPLACE= YES EXTRACT_ONLY= ${SRCFILE} ONLY_FOR_ARCHS= i386 @@ -74,6 +75,13 @@ PLIST_SUB+= DEBUG:="" .endif +PTHREAD_FILES= hotspot/build/bsd/makefiles/gcc.make \ + hotspot/build/bsd/makefiles/vm.make \ + j2se/make/common/Defs.gmk \ + j2se/make/common/Program.gmk \ + j2se/make/common/Defs-bsd.gmk \ + j2se/make/java/hpi/native/Makefile + .include <bsd.port.pre.mk> # Check for JDK sources @@ -150,6 +158,11 @@ ${CHMOD} -R u+w * && \ ${PATCH} -p0 < ${WRKDIR}/jdk14.patches +post-patch: + @for file in ${PTHREAD_FILES}; do \ + ${REINPLACE_CMD} -e "s:-pthread:${PTHREAD_LIBS}:g; s:-lc_r:${PTHREAD_LIBS}:g" ${WRKDIR}/$${file}; \ + done + .if !defined(NATIVE_BOOTSTRAP) ECHO_MSG=echo pre-build: @@ -217,5 +230,8 @@ post-install: @${LOCALBASE}/bin/registervm "${PREFIX}/jdk${JDK_VERSION}/bin/java # FREEBSD-JDK${JDK_VERSION}" + @${SED} -e "s:%%JRE_HOME%%:${PREFIX}/jdk${JDK_VERSION}/jre:g" \ + < ${FILESDIR}/pkg-install.in > ${PKGINSTALL} + @${SETENV} PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL .include <bsd.port.post.mk> Index: pkg-plist =================================================================== RCS file: /var/fcvs/ports/java/jdk14/pkg-plist,v retrieving revision 1.16 diff -u -r1.16 pkg-plist --- pkg-plist 8 May 2003 23:53:06 -0000 1.16 +++ pkg-plist 1 Oct 2003 14:36:44 -0000 @@ -461,6 +461,8 @@ jdk%%JDK_VERSION%%/include/jni.h jdk%%JDK_VERSION%%/include/jvmdi.h jdk%%JDK_VERSION%%/include/jvmpi.h +jdk%%JDK_VERSION%%/jre/.systemPrefs/.system.lock +jdk%%JDK_VERSION%%/jre/.systemPrefs/.systemRootModFile jdk%%JDK_VERSION%%/jre/CHANGES jdk%%JDK_VERSION%%/jre/COPYRIGHT jdk%%JDK_VERSION%%/jre/LICENSE @@ -1157,6 +1159,7 @@ @dirrm jdk%%JDK_VERSION%%/jre/lib/zi/Pacific @dirrm jdk%%JDK_VERSION%%/jre/lib/zi @dirrm jdk%%JDK_VERSION%%/jre/lib +@dirrm jdk%%JDK_VERSION%%/jre/.systemPrefs @dirrm jdk%%JDK_VERSION%%/jre @dirrm jdk%%JDK_VERSION%%/lib @dirrm jdk%%JDK_VERSION%%/man/man1 Index: files/patch-DefaultSelectorProvider.java =================================================================== RCS file: files/patch-DefaultSelectorProvider.java diff -N files/patch-DefaultSelectorProvider.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ files/patch-DefaultSelectorProvider.java 8 Oct 2003 19:02:21 -0000 @@ -0,0 +1,31 @@ +$FreeBSD$ + +--- ../../j2se/src/solaris/classes/sun/nio/ch/DefaultSelectorProvider.java 8 Jun 2002 04:46:35 -0000 1.1 ++++ ../../j2se/src/solaris/classes/sun/nio/ch/DefaultSelectorProvider.java 7 Jun 2003 07:44:32 -0000 1.2 +@@ -27,14 +27,20 @@ + * Returns the default SelectorProvider. + */ + public static SelectorProvider create() { +- PrivilegedAction pa +- = new GetPropertyAction("os.version"); ++ PrivilegedAction pa = new GetPropertyAction("os.name"); + String result = (String) AccessController.doPrivileged(pa); +- String[] numbers = result.split("\\.", 0); +- if (numbers[1].compareTo("7") < 0) ++ if (result.equals("SunOS")) { ++ pa = new GetPropertyAction("os.version"); ++ result = (String) AccessController.doPrivileged(pa); ++ String[] numbers = result.split("\\.", 0); ++ if (numbers[1].compareTo("7") < 0) ++ return new sun.nio.ch.PollSelectorProvider(); ++ else ++ return new sun.nio.ch.DevPollSelectorProvider(); ++ } ++ else { + return new sun.nio.ch.PollSelectorProvider(); +- else +- return new sun.nio.ch.DevPollSelectorProvider(); ++ } + } + + } Index: files/patch-FileChannelImpl.c =================================================================== RCS file: files/patch-FileChannelImpl.c diff -N files/patch-FileChannelImpl.c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ files/patch-FileChannelImpl.c 8 Oct 2003 19:05:00 -0000 @@ -0,0 +1,55 @@ +$FreeBSD$ + +--- ../../j2se/src/solaris/native/sun/nio/ch/FileChannelImpl.c 6 Jun 2003 15:31:42 -0000 1.5 ++++ ../../j2se/src/solaris/native/sun/nio/ch/FileChannelImpl.c 8 Sep 2003 08:19:29 -0000 1.7 +@@ -170,6 +170,8 @@ + #include <sys/sendfile.h> + #elif defined(_BSD_SOURCE) + #include <sys/socket.h> ++#include <errno.h> ++#include <stdlib.h> + #endif + + JNIEXPORT int JNICALL +@@ -188,13 +190,38 @@ + #elif defined(__FreeBSD__) + /* + * XXXBSD: make sure that we're returning what java class may understand ++ * ++ * XXXBSD: I'd prefer to have it implemented with sendfile(), but since ++ * FreeBSD's sendfile() is only supposed to be used in file->socket ++ * schema we need to provide some kind of fall-back operation, if ++ * sendfile() failed with ENOTSOCK error only. + */ ++ void *buf; + off_t offset = (off_t)position; +- int n = sendfile(dstFD, srcFD, offset, (size_t)count, NULL, NULL, 0); +- if (n < 0) { ++ int r, w; ++ ++ buf = malloc(4096); ++ if (buf == NULL) { ++ JNU_ThrowOutOfMemoryError(env, "heap allocation failed"); ++ return (0); ++ } ++ ++ while ((r = pread(srcFD, buf, 4096, offset)) > 0) { ++ w = write(dstFD, buf, r); ++ if (w == -1) ++ break; ++ offset += w; ++ } ++ free(buf); ++ ++ /* ++ * XXXBSD: there're potential problems with NBIO fd's. Check it. ++ */ ++ if (r == -1 || w == -1) { ++ fprintf(stderr, "%d %d %d %d %d\n", srcFD, dstFD, r, w, errno); + JNU_ThrowIOExceptionWithLastError(env, "Transfer failed"); + } +- return n; ++ return (offset - (off_t)position); + #else + return IOS_UNSUPPORTED; + #endif Index: files/patch-Inet6AddressImpl.c =================================================================== RCS file: files/patch-Inet6AddressImpl.c diff -N files/patch-Inet6AddressImpl.c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ files/patch-Inet6AddressImpl.c 8 Oct 2003 19:01:07 -0000 @@ -0,0 +1,21 @@ +$FreeBSD$ + +--- ../../j2se/src/solaris/native/java/net/Inet6AddressImpl.c.orig Sat Aug 23 23:44:36 2003 ++++ ../../j2se/src/solaris/native/java/net/Inet6AddressImpl.c Sat Aug 23 23:45:08 2003 +@@ -14,6 +14,7 @@ + #include <strings.h> + #include <stdlib.h> + #include <ctype.h> ++#include <unistd.h> + + #include "jvm.h" + #include "jni_util.h" +@@ -26,7 +27,7 @@ + #define NI_MAXHOST 1025 + #endif + +-#ifndef __GLIBC__ ++#if !defined(__GLIBC__) && !defined(__FreeBSD__) + /* gethostname() is in libc.so but I can't find a header file for it */ + extern int gethostname(char *buf, int buf_len); + #endif Index: files/patch-jni.cpp =================================================================== RCS file: files/patch-jni.cpp diff -N files/patch-jni.cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ files/patch-jni.cpp 8 Oct 2003 19:01:25 -0000 @@ -0,0 +1,108 @@ +$FreeBSD$ + +--- ../../hotspot/src/share/vm/prims/jni.cpp 23 Jan 2003 12:48:13 -0000 1.1.1.2 ++++ ../../hotspot/src/share/vm/prims/jni.cpp 6 Aug 2003 20:56:29 -0000 1.2 +@@ -902,7 +902,7 @@ + JNI_ArgumentPusherVaArg ap(methodID, args); \ + jni_invoke_nonstatic(env, &jvalue, obj, JNI_VIRTUAL, methodID, &ap, CHECK_0); \ + va_end(args); \ +- return (ResultType)(jvalue._value.##unionType); \ ++ return (ResultType)(jvalue._value.unionType); \ + JNI_END \ + \ + \ +@@ -912,7 +912,7 @@ + JavaValue jvalue(Tag); \ + JNI_ArgumentPusherVaArg ap(methodID, args); \ + jni_invoke_nonstatic(env, &jvalue, obj, JNI_VIRTUAL, methodID, &ap, CHECK_0); \ +- return (ResultType)(jvalue._value.##unionType); \ ++ return (ResultType)(jvalue._value.unionType); \ + JNI_END \ + \ + \ +@@ -922,7 +922,7 @@ + JavaValue jvalue(Tag); \ + JNI_ArgumentPusherArray ap(methodID, args); \ + jni_invoke_nonstatic(env, &jvalue, obj, JNI_VIRTUAL, methodID, &ap, CHECK_0); \ +- return (ResultType)(jvalue._value.##unionType); \ ++ return (ResultType)(jvalue._value.unionType); \ + JNI_END + + // the runtime type of subword integral basic types is integer +@@ -976,7 +976,7 @@ + JNI_ArgumentPusherVaArg ap(methodID, args); \ + jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK_0); \ + va_end(args); \ +- return (ResultType)(jvalue._value.##unionType); \ ++ return (ResultType)(jvalue._value.unionType); \ + JNI_END \ + \ + \ +@@ -986,7 +986,7 @@ + JavaValue jvalue(Tag); \ + JNI_ArgumentPusherVaArg ap(methodID, args); \ + jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK_0); \ +- return (ResultType)(jvalue._value.##unionType); \ ++ return (ResultType)(jvalue._value.unionType); \ + JNI_END \ + \ + \ +@@ -996,7 +996,7 @@ + JavaValue jvalue(Tag); \ + JNI_ArgumentPusherArray ap(methodID, args); \ + jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK_0); \ +- return (ResultType)(jvalue._value.##unionType); \ ++ return (ResultType)(jvalue._value.unionType); \ + JNI_END + + // the runtime type of subword integral basic types is integer +@@ -1051,7 +1051,7 @@ + JNI_ArgumentPusherVaArg ap(methodID, args); \ + jni_invoke_static(env, &jvalue, NULL, JNI_STATIC, methodID, &ap, CHECK_0); \ + va_end(args); \ +- return (ResultType)(jvalue._value.##unionType); \ ++ return (ResultType)(jvalue._value.unionType); \ + JNI_END \ + \ + \ +@@ -1061,7 +1061,7 @@ + JavaValue jvalue(Tag); \ + JNI_ArgumentPusherVaArg ap(methodID, args); \ + jni_invoke_static(env, &jvalue, NULL, JNI_STATIC, methodID, &ap, CHECK_0); \ +- return (ResultType)(jvalue._value.##unionType); \ ++ return (ResultType)(jvalue._value.unionType); \ + JNI_END \ + \ + \ +@@ -1071,7 +1071,7 @@ + JavaValue jvalue(Tag); \ + JNI_ArgumentPusherArray ap(methodID, args); \ + jni_invoke_static(env, &jvalue, NULL, JNI_STATIC, methodID, &ap, CHECK_0); \ +- return (ResultType)(jvalue._value.##unionType); \ ++ return (ResultType)(jvalue._value.unionType); \ + JNI_END + + // the runtime type of subword integral basic types is integer +@@ -1204,7 +1204,7 @@ + /* and creates a ResetNoHandleMark. */ \ + if (jvmdi::enabled()) { \ + jvalue field_value; \ +- field_value.##unionType = value; \ ++ field_value.unionType = value; \ + o = jvmdi::jni_SetField_probe_nh(thread, obj, o, k, fieldID, false, SigType, (jvalue *)&field_value); \ + } \ + o->Fieldname##_field_put(offset, value); \ +@@ -1333,7 +1333,7 @@ + /* jni_SetField_probe() assumes that is okay to create handles. */ \ + if (jvmdi::enabled()) { \ + jvalue field_value; \ +- field_value.##unionType = value; \ ++ field_value.unionType = value; \ + jvmdi::jni_SetField_probe(thread, NULL, NULL, id->holder(), fieldID, true, SigType, (jvalue *)&field_value); \ + } \ + id->holder()-> Fieldname##_field_put (id->offset(), value); \ +Index: hotspot/src/share/vm/runtime/jvmdiInterfaceSupport.hpp +=================================================================== +RCS file: /var/jcvs/javasrc_1_4_scsl/hotspot/src/share/vm/runtime/jvmdiInterfaceSupport.hpp,v +retrieving revision 1.1.1.2 +retrieving revision 1.2 Index: files/patch-jvmdiInterfaceSupport.hpp =================================================================== RCS file: files/patch-jvmdiInterfaceSupport.hpp diff -N files/patch-jvmdiInterfaceSupport.hpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ files/patch-jvmdiInterfaceSupport.hpp 8 Oct 2003 19:01:48 -0000 @@ -0,0 +1,18 @@ +$FreeBSD$ + +--- ../../hotspot/src/share/vm/runtime/jvmdiInterfaceSupport.hpp 23 Jan 2003 12:48:15 -0000 1.1.1.2 ++++ ../../hotspot/src/share/vm/runtime/jvmdiInterfaceSupport.hpp 6 Aug 2003 20:55:55 -0000 1.2 +@@ -24,7 +24,7 @@ + result_type JNICALL methodName signature { \ + JavaThread* thread = (JavaThread*) ThreadLocalStorage::thread(); \ + TransitionClass __tiv(thread); \ +- __ENTRY(result_type, methodName##signature, thread) \ ++ __ENTRY(result_type, methodName signature, thread) \ + debug_only(VMNativeEntryWrapper __vew;) \ + debug_only(const char* const _jvmdi_methodName_ = #methodName;) \ + debug_only(bool _trace_ = trace; ); \ +Index: hotspot/src/share/vm/runtime/mutexLocker.cpp +=================================================================== +RCS file: /var/jcvs/javasrc_1_4_scsl/hotspot/src/share/vm/runtime/mutexLocker.cpp,v +retrieving revision 1.1.1.2 +retrieving revision 1.2 Index: files/patch-mutexLocker.cpp =================================================================== RCS file: files/patch-mutexLocker.cpp diff -N files/patch-mutexLocker.cpp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ files/patch-mutexLocker.cpp 8 Oct 2003 19:01:58 -0000 @@ -0,0 +1,13 @@ +$FreeBSD$ + +--- ../../hotspot/src/share/vm/runtime/mutexLocker.cpp 23 Jan 2003 12:48:15 -0000 1.1.1.2 ++++ ../../hotspot/src/share/vm/runtime/mutexLocker.cpp 6 Aug 2003 20:55:15 -0000 1.2 +@@ -95,7 +95,7 @@ + #endif + + #define def(var, type, pri, vm_block) \ +- var = new type(Mutex::##pri, #var, vm_block) ++ var = new type(Mutex::pri, #var, vm_block) + + void mutex_init() { + def(Event_lock , Mutex , event, true ); // allow to lock in VM Index: files/patch-nio::Makefile =================================================================== RCS file: files/patch-nio::Makefile diff -N files/patch-nio::Makefile --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ files/patch-nio::Makefile 8 Oct 2003 19:02:11 -0000 @@ -0,0 +1,13 @@ +$FreeBSD$ + +--- ../../j2se/make/java/nio/Makefile 15 Feb 2003 14:45:49 -0000 1.4 ++++ ../../j2se/make/java/nio/Makefile 24 Aug 2003 05:37:04 -0000 +@@ -131,7 +131,7 @@ + + # XXXBSD: really need it for BSD ? + ifeq ($(PLATFORM), bsd) +-OTHER_CFLAGS += -Werror ++#OTHER_CFLAGS += -Werror + OTHER_LDLIBS += -L$(LIBDIR)/$(LIBARCH)$(SUFFIX) -ljava$(SUFFIX) -lnet$(SUFFIX) + endif + Index: files/pkg-install.in =================================================================== RCS file: files/pkg-install.in diff -N files/pkg-install.in --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ files/pkg-install.in 1 Oct 2003 14:31:17 -0000 @@ -0,0 +1,19 @@ +#!/bin/sh + +# System preference location +PREFS_LOCATION=%%JRE_HOME%% + +# Set up system preferences during post install +if [ "$2" = "POST-INSTALL" ]; then + if [ ! -d "${PREFS_LOCATION}/.systemPrefs" ] ; then + mkdir -m 755 "${PREFS_LOCATION}/.systemPrefs" + fi + if [ ! -f "${PREFS_LOCATION}/.systemPrefs/.system.lock" ] ; then + touch "${PREFS_LOCATION}/.systemPrefs/.system.lock" + chmod 644 "${PREFS_LOCATION}/.systemPrefs/.system.lock" + fi + if [ ! -f "${PREFS_LOCATION}/.systemPrefs/.systemRootModFile" ] ; then + touch "${PREFS_LOCATION}/.systemPrefs/.systemRootModFile" + chmod 644 "${PREFS_LOCATION}/.systemPrefs/.systemRootModFile" + fi +fi --3V7upXqbjpZ4EhLz--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20031009005113.GA50130>