More speed increases for make-ing ports

Andrew Pantyukhin infofarmer at FreeBSD.org
Tue May 22 13:34:34 UTC 2007


On 5/22/07, Stephen Montgomery-Smith <stephen at math.missouri.edu> wrote:
> Andrew Pantyukhin wrote:
> > On 5/22/07, Alexander Leidinger <Alexander at leidinger.net> wrote:
> >> Quoting Andrew Pantyukhin <infofarmer at FreeBSD.org> (from Tue, 22 May
> >> 2007 11:55:39 +0400):
> >>
> >> > On 5/22/07, Kris Kennaway <kris at obsecurity.org> wrote:
> >> >> On Tue, May 22, 2007 at 01:47:23AM -0500, Stephen Montgomery-Smith
> >> wrote:
> >> >>> This small modification cuts off about 25% off pkg_version on my
> >> system.
> >> >>>
> >> >>> Basically bsd.gnome.mk recursively finds all the dependencies, but
> >> many
> >> >>> of them are listed many times.  This makes make work extra hard
> >> when it
> >> >>> doesn't have to.  I simply weed out the repeated entries.
> >> >>>
> >> >>
> >> >>> --- bsd.gnome.mk-orig Tue May 22 01:29:08 2007
> >> >>> +++ bsd.gnome.mk      Tue May 22 01:29:22 2007
> >> >>> @@ -655,6 +655,8 @@
> >> >>>  _USE_GNOME+= ${${component}_USE_GNOME_IMPL} ${component}
> >> >>>  . endfor
> >> >>>
> >> >>> +_USE_GNOME!=(for i in ${_USE_GNOME}; do ${ECHO_CMD} $$i; done) |
> >> sort -u
> >> >>> +
> >> >>>  # Setup the GTK+ API version for pixbuf loaders, input method
> >> modules,
> >> >>>  # and theme engines.
> >> >>>  PLIST_SUB+=                  GTK2_VERSION="${GTK2_VERSION}"
> >> >>
> >> >> Be careful, != assignments may add thousands of process invocations to
> >> >> large targets like 'make index' and can slow it down dramatically.
> >> >
> >> > Right, and uniqueness logic can be implemented in make.
> >>
> >> Be proactive and tell/point out how... :)
> >
> > TMTOWTDI. There are several examples in bsd.*.mk. The
> > obvious one is "flags" (you set or unset flag vars
> > first, then traverse them and add what you need to
> > the list). In recent versions of our make you can
> > also use ${VAR:O:u}
>
> I must admit I was looking for the :u.  Definitely a good feature -
> maybe it could be invoked in the make file conditional on an appropriate
> value of OSVERSION.
>
> Incidently if you want to save a few more != assignments, I notice that
> setting the variables
> ARCH=i386
> OPSYS=FreeBSD
> OSREL=6.2
> OSVERSION=602110
> in /etc/make.conf will do this for you.

A seemingly better way may be to make these system vars
available in make by default. They may even be compiled
in - to achieve virtually no performance impact (except
for a bit larger default var table).


More information about the freebsd-ports mailing list