Issues with portmaster

Greg Lewis glewis at eyesbeyond.com
Mon Jun 23 20:31:05 UTC 2008


On Mon, Jun 23, 2008 at 12:28:08PM -0700, Doug Barton wrote:
> Alexey Shuvaev wrote:
> >On Mon, Jun 23, 2008 at 10:57:41AM +0200, Alex Dupre wrote:
> >>Alexey Shuvaev ha scritto:
> >>>It seems I don't understand something here. Can someone explain why
> >>>jdk ports need to set BUILD_DEPENDS on diablo-jdk15 unconditionally?
> >>(nearly) every JDK port needs an already usable/installed JDK to  
> >>bootstrap the compilation. This is the reason of the BUILD_DEPENDS on  
> >>javac that you cannot remove. But the port providing the javac binary  
> >                 ^^^^^^^^^^^^^
> >>could not be the diablo-jdk.
> >>
> >Mmmm... why not???
> >In a nutshell, from the user point of view the reason to set BUILD_DEPENDS 
> >is
> >to ensure that some port (java here) is installed prior to build.
> >However, if the port checks against installed java in a more complicated 
> >manner
> >than BUILD_DEPENDS mechanism can provide, I see no reason to set
> >BUILD_DEPENDS to something just for its own sake.
> >And from the build cluster point of view, the port will be built in a clean
> >environment, so port will not detect any installed java and will set
> >BUILD_DEPENDS *conditionally* (.if !defiend(BOOTSTRAPJDKDIR)).
> >
> >I have a feeling that the way BUILD_DEPENDS is set now is overkill, and
> >one can put it under .if !defined(BOOTSTRAPJDKDIR) without any functional
> >change. Of course, the Right Way To Do This would be to set the whole
> >correct BUILD_DEPENDS line based on detected java. Maybe this is even not
> >so complicated. Or I miss something?
> 
> Thanks for the discussion on this. Since I don't use java I'm relying 
> an the users here. Hopefully glewis can weigh in at some point.

Its probably not that complicated for the port to stop "cheating" on the
way it sets up BUILD_DEPENDS.  At the moment it knows the potential
bootstrap JDKs install paths, but it doesn't know where they live in
ports, so it cheats and sets the requirement to the detected javac but
then hardcodes the dependency as Diablo.  This works from a ports point
of view in that the dependency isn't installed if the requirement is
found, but it obviously confuses portsmaster.

>From a partial reading of the email thread, it looks like the simplest
thing to do is to just not set BUILD_DEPENDS if it finds an appropriately
installed JDK.  That way it will only set it if it can't find a bootstrap
JDK and it needs one installed.

-- 
Greg Lewis                          Email   : glewis at eyesbeyond.com
Eyes Beyond                         Web     : http://www.eyesbeyond.com
Information Technology              FreeBSD : glewis at FreeBSD.org


More information about the freebsd-ports mailing list