On Wed, 2007-08-08 at 00:31 +0100, RW wrote: > On Tue, 07 Aug 2007 16:59:09 -0400 > Robert Noland <[EMAIL PROTECTED]> wrote: > > > On Tue, 2007-08-07 at 13:28 -0700, Doug Barton wrote: > > > RW wrote: > > > > Both Portmaster and Portmanager (I haven't tried Portupgrade) > > > > install java/linux-sun-jdk15 on an upgrade of java/jdk15. If I > > > > upgrade jdk15 manually it isn't built, so it must be done by the > > > > tools. > > > > > > > > The way the jdk15 makefile works is that it looks for the location > > > > of an existing jdk installation for bootstrapping and sets > > > > BOOTSTRAPJDKDIR accordingly. We then have: > > > > > > > > # if no valid jdk found, set dependency > > > > .if !defined(BOOTSTRAPJDKDIR) > > > > BOOTSTRAPJDKDIR?=${LOCALBASE}/linux-sun-jdk${SUN_LINUX_JDK_VERSION} > > > > .endif > > > > BUILD_DEPENDS+=${BOOTSTRAPJDKDIR}/bin/javac:${PORTSDIR}/java/linux-sun-jdk15 > > > > > > > > > > > > I don't know why this causes the build-tools to install > > > > linux-sun-jdk15, but simply moving the BUILD_DEPENDS+= line > > > > inside the if-endif block, seems to fix the problem. That line is > > > > only needed if no jdk is present. > > > > > > Your analysis sounds right. > > > > Almost, doing this will remove the dependency on linux-sun-jdk15 if > > another bootstrap is installed, but it won't add one for the installed > > bootstrap. > > In the normal case, the installed bootstrap of a native jdk is going to > be itself, so adding a new dependency is going to be undesirable.
I agree, having it depend on itself isn't good. In the case of jdk14 it can only bootstrap from linux-sun-jdk14 or native jdk14 so either it was built via linux-jdk and should list a dependency on it, or it was built via itself and should not list a dependency. For jdk15 however, it can be built using any 1 of 5 bootstrap jdks, diablo-jdk15, jdk15 (native), jdk14 (native), linux-sun-jdk15, or linux-sun-jdk14 in that order of preference. As it stands, it will always list a dependency on diablo-jdk15 (current cvs) or linux-sun-jdk before. It will always list the same dependency, no matter what jdk was used to bootstrap. The change proposed above would mean that if any eligible bootstrap exists no dependency will be recorded, even if that bootstrap jdk is not itself. The short version is: Without the change, you always record a dependency on diablo-jdk15 With the change, first build record a dependency on diablo-jdk15, subsequent builds record no dependency. robert. > _______________________________________________ > freebsd-ports@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-ports > To unsubscribe, send any mail to "[EMAIL PROTECTED]"
signature.asc
Description: This is a digitally signed message part