OS check fails on JDK 1.4 & FreeBSD 5.4R

Greg Lewis glewis at eyesbeyond.com
Thu May 26 09:34:29 PDT 2005


On Thu, May 26, 2005 at 12:04:36PM -0400, Scott I. Remick wrote:
> On Thu, 26 May 2005 09:54:59 -0600, Greg Lewis wrote:
> 
> > That would be your problem then.  The test expects to use -lc_r on 5.x
> > and higher:
> > 
> > .if ${OSVERSION} > 500000
> > LINKIT= -lc_r
> > .else
> > LINKIT= -pthread
> > .endif
> 
> Isn't that backwards? The default threading library changed from libc_r to
> libpthread in 5.3

I don't know that its backwards, but it could probably use some help.
-lc_r became the official way early on in 5.x, but was reverted to
-pthread after 5.2.1.  So it was correct for a time, but is now out of
date.  I suspect that the variable should just go away and ${PTHREAD_LIBS}
should take its place.

> > However, you should have libc_r on 5.4:
> ...
> > So your machine would seem to be somewhat hosed unless you've
> > deliberately removed libc_r.

[explanation of removing libc_r snipped]

> So I guess I have 2 questions now:
> 
> 1) If libpthread is the new default, replacing libc_r, and you have to
> have all things linked to just one or the other, basically libc_r has been
> depreciated. How come the OS version check for JDK 1.4 wants libc_r if the
> OS > 5.0?

Because its old (see above).

> 2) What am I to do now, since the purging of all things libc_r when I
> upgraded to 5.3 is what ultimately fixed my system and has kept things
> running smoothly ever since?

You can do one of the following:

1. Try the attached patch.  This would be my preference since if it works
   I'll try and get it committed.
2. Turn on SKIP_OS_CHECK and eliminate the test altogether.

-- 
Greg Lewis                          Email   : glewis at eyesbeyond.com
Eyes Beyond                         Web     : http://www.eyesbeyond.com
Information Technology              FreeBSD : glewis at FreeBSD.org
-------------- next part --------------
Index: Makefile
===================================================================
RCS file: /var/fcvs/ports/java/jdk14/Makefile,v
retrieving revision 1.90
diff -u -r1.90 Makefile
--- Makefile	11 May 2005 21:18:39 -0000	1.90
+++ Makefile	26 May 2005 16:31:42 -0000
@@ -184,17 +184,11 @@
 
 TESTPROG=testos
 
-.if ${OSVERSION} > 500000
-LINKIT=	-lc_r
-.else
-LINKIT=	-pthread
-.endif
-
 check-os:
 .if !defined(SKIP_OS_TEST)
 	- at mkdir -p ${WRKDIR} ; \
 	rm -f ${WRKDIR}/${TESTPROG} ; \
-	gcc ${LINKIT} -o ${WRKDIR}/${TESTPROG} \
+	gcc ${PTHREAD_LIBS} -o ${WRKDIR}/${TESTPROG} \
 		${FILESDIR}/${TESTPROG}.c > /dev/null 2>&1
 	@if [ ! -f ${WRKDIR}/${TESTPROG} ] ; \
 	then \


More information about the freebsd-java mailing list