MAKE_JOBS and openjdk6

Greg Lewis glewis at eyesbeyond.com
Sat Sep 4 21:26:30 UTC 2010


On Sun, Aug 29, 2010 at 10:37:37AM +0200, David Naylor wrote:
> On Saturday 28 August 2010 23:30:22 Greg Lewis wrote:
> > On Sun, Aug 29, 2010 at 12:44:39AM +0400, Anonymous wrote:
> > > Greg Lewis <glewis at eyesbeyond.com> writes:
> > > > I would argue that overriding a private variable is a hack (other ports
> > > > doing it doesn't make it not a hack).
> > > 
> > > You could've spoke up in ports/148754 about your concern in order for
> > > portmgr@ to notice. The PR strived to be less intrusive than divorcing
> > > build jobs from make jobs. Besides, I think adding more clutter to
> > > Makefiles defeats purpose of having stuff in bsd.port.mk.
> > 
> > In that case, whichever way you cut it, we're deliberately trying to
> > circumvent what is in bsd.port.mk.
> 
> The circumvention is required because bsd.port.mk assumes a certain interface 
> that may not be applicable for all ports.  
> 
> > > > Alternative patch attached which seems to achieve the same result from
> > > > my perspective without overriding _MAKE_JOBS.
> > > 
> > > Hardcoding kern.smp.cpus and ignoring MAKE_JOBS_SAFE/UNSAFE doesn't seem
> > > like a less hacky solution. I'd argue that it's more confusing because
> > > MAKE_JOBS_UNSAFE is not equal to DISABLE_MAKE_JOBS.
> > 
> > The patch I attached (a) does not ignore MAKE_JOBS_{SAFE,UNSAFE} and (b)
> > the first patch similarly uses DISABLE_MAKE_JOBS.
> > 
> > The first patch does the following:
> > 
> > 1. Sets MAKE_JOBS_SAFE _erroneously_ (the port is _not_ MAKE_JOBS_SAFE)
> >    purely so it can force the setting of MAKE_JOBS_NUMBER.
> 
> Yes and no.  The port is partially MAKE_JOBS_SAFE and is able to build some of 
> the code using make jobs.  This is similar to python26: it is _SAFE but only a 
> small portion of the build actually uses more than one job which in effect 
> makes it the same as _UNSAFE (from a performance perspective).  
> 
> > 2. Overrides passing of -j to the make invocation by fiddling the private
> >    variable _MAKE_JOBS, which it has to do because of (1).
> > 
> > The one I just provided
> > 
> > 1. Leaves the port correctly marked as MAKE_JOBS_UNSAFE and doesn't mess
> >    with any private variables.
> 
> Your attached patch does not explicitly define either MAKE_JOBS_(UN)SAFE.  I 
> would by happy with it being defined as _UNSAFE.  If there are no other 
> problems with your patch (see my comment at the bottom) then I'm happy for 
> this patch to be committed.  

I'd already committed a change that marked the port as MAKE_JOBS_UNSAFE, so
the patch didn't include that.

> There will still be issues with scripts that try some form of load balancing 
> when building ports but either way it will not be doing what was advertised.  
> Similar to python.  
> 
> > 2. Respects MAKE_JOB_NUMBER if it is set and otherwise uses the sysctl
> >    kern.smp.cpus, the latter being what the port _already_ does.
> > 
> > > > Index: Makefile
> > > > ===================================================================
> > > > RCS file: /var/fcvs/ports/java/openjdk6/Makefile,v
> > > > retrieving revision 1.28
> > > > diff -u -r1.28 Makefile
> > > > --- Makefile	15 Aug 2010 05:23:06 -0000	1.28
> > > > +++ Makefile	28 Aug 2010 18:27:44 -0000
> > > > @@ -147,8 +147,14 @@
> > > > 
> > > >  USE_DISPLAY=	yes
> > > >  .endif
> > > > 
> > > > -BUILD_JOBS_NUMBER!=	${SYSCTL} -n kern.smp.cpus
> > > > +.if !defined(DISABLE_MAKE_JOBS)
> > > > +.if defined(MAKE_JOBS_NUMBER)
> > > > +BUILD_JOBS_NUMBER=	${MAKE_JOBS_NUMBER}
> > > > +.else
> > > > +BUILD_JOBS_NUMBER=	`${SYSCTL} -n kern.smp.cpus`
> > > > +.endif
> > > > 
> > > >  MAKE_ENV+=	HOTSPOT_BUILD_JOBS=${BUILD_JOBS_NUMBER}
> 
> Is it safe to pass an empty HOTSPOT_BUILD_JOBS to MAKE_ENV? (i.e. when 
> DISABLE_MAKE_JOBS is defined.)  

Good thought.  I tried the build with DISABLE_MAKE_JOBS set and experienced
no problems, so I think we're ok on that front.

> > > > +.endif
> > > > 
> > > >  COPYDIRS=	\
> > > >  
> > > >  	hotspot/src/os/linux/launcher \

I'm going to commit the change in a day or two if there are no further
objections.  I'll then use it as a template for changes to the other JDK
ports.

-- 
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