Portmaster and Portmanager problem with jdk15

Robert Noland rnoland at 2hip.net
Tue Aug 7 17:16:36 PDT 2007


On Wed, 2007-08-08 at 00:31 +0100, RW wrote:
> On Tue, 07 Aug 2007 16:59:09 -0400
> Robert Noland <rnoland at 2hip.net> 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 at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-ports
> To unsubscribe, send any mail to "freebsd-ports-unsubscribe at freebsd.org"
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: This is a digitally signed message part
Url : http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20070808/1388ab1f/attachment.pgp


More information about the freebsd-ports mailing list