New version of makemake
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)
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,
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:
@/space/scripts/portbuild 6-amd64-uxb 6-amd64 std "" "" "" "" ""
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:
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):
Please test it out and provide feedback -- I'd like to see it get in for
the impending 2.0 release.
More information about the tinderbox-list