New version of makemake

Ade Lovett ade at FreeBSD.org
Mon Jul 11 03:28:23 EDT 2005


As discussed at some length on #FreeBSD-GNOME recently, I now have
available a new version of scripts/makemake that implements a large
amount of seemless (to the application, it has uses beyond makemake)
caching.

Some example timing tests (all times in minutes:seconds, run on the
FreeBSD ports/ tree -- not the GNOME 2.11 stuff):

----------------------------------------------
WHAT                      OLD             NEW
devel/automake19         0:09            0:01
x11-toolkits/gtk20       0:36            0:03
x11/gnome2-lite         22:55            0:22
x11/gnome2              26:23            0:32
all gnome metaports     36:35            0:55
----------------------------------------------

*x11/gnome2, x11/gnome2-fifth-toe, x11/gnome2-power-tools,
 devel/gnome2-hacker-tools, editors/gnome2-office


The Makefiles generated are somewhat different for three reasons:

1) correction of a *fatal* flaw introduced into the original makemake in
revision 1.25 with multi-stage building.  'build-depends' was being
used, instead of 'build-depends-list' for this step.  As a result, any
port LIB_DEPENDS were not being correctly added before actual generation
of the package, so building devel/gettext, for example:

===>   gettext-0.14.5 depends on shared library: iconv.3 - not found
===>    Verifying install for iconv.3 in /usr/ports/converters/libiconv
[... recompilation of libiconv ...]

in spite of the fact that, in this case, converters/libiconv had been
previously built and packaged.


2) the use of a combination of LIB_DEPENDS/RUN_DEPENDS/DEPENDS to
simulate the previous use of 'run-depends-list' - this results in a
slightly better (in fact more optimal) ordering of dependencies.

This approach (using Makefile variables rather than the target) also
deals with a number of ports (which I have not tracked down) which
result in a number of:

	make: don't know how to make run-depends-list. Stop

possibly from the next part.


3) cleanup of a couple of bugs in makemake that were introducing empty
("") ports into the Makefile, so you'd see things like:

all: .tbz
: .tbz
.tbz:
       @/space/scripts/portbuild 6-amd64-uxb 6-amd64 std  "" "" "" "" ""
.tbz /usr/ports/

at various places in the generated Makefile.  This would also end up
calling "make ignorelist" from the top of the ports tree, so the build
duds file would end up containing every single port that was not
packagable, regardless of what port was specified to be built.


The code can be found at:

	http://tinderbox.lovett.com/patches/makemake
	MD5 is: 243377e234cf3b6aa3bec0aead7aa5c8

and is a direct drop-in replacement for the existing code.  Note that
this is a newer version than the one previously mentioned on irc.

An example run, including logs and packages, against devel/automake19
can be found (at least for now):

	http://tinderbox.lovett.com/showbuild.php?name=6-amd64-uxb

Please test it out and provide feedback -- I'd like to see it get in for
the impending 2.0 release.

-aDe


More information about the tinderbox-list mailing list