[gpm] [patch] fix parallel building

Nico Schottelius nico-gpm@schottelius.org
Sat Oct 15 18:40:14 CEST 2005


[x] applied

Mike Frysinger [Tue, May 03, 2005 at 10:01:45PM -0400]:
> if you try to build with `make -j` it'll break for two reasons ...
> 
> (1) the toplevel makefile's all target depends on 'dep' and 'do-all' ... if 
> you build this in parallel on a fast machine, 'do-all' will start executing 
> before 'dep' has finished processing, causing the build to fail.  here's the 
> small fix for that (i indented the 'done' to match the rest of the shell 
> code):
> 
> --- Makefile.in
> +++ Makefile.in
> @@ -25,3 +25,3 @@
>  
> -all: dep do-all
> +all: do-all
>  
> @@ -61,3 +61,3 @@
>  # do-all goes to all subdirectories and does all
> -do-%:
> +do-%: dep
>         @target=`echo $@ | $(SED) -e 's/^do-//'`; \
> @@ -69,3 +69,3 @@
>                 fi; \
> -done
> +       done
>  
> 
> (2) the doc subdir's all target depends on $(MANPAGES).  the $(MANPAGES) rule 
> executes a for loop on all the $(MANPAGES).  the problem is that make will 
> fork 5 children (1 per manpge) and try to execute the $(MANPAGES) target and 
> each child will stomp the work of the others.  the fix is to put all the 
> manpages under one target ('gpm.man') and have all depend on that instead of 
> $(MANPAGES).  also, i moved the 'all' to the top so that way it's the default 
> target when you run just `make`.
> 
> --- doc/Makefile.in
> +++ doc/Makefile.in
> @@ -32,6 +32,8 @@
>  
>  MANPAGES = gpm.8 mev.1 gpm-root.1 gpm-types.7 mouse-test.1
>  
> +all: $(srcdir)/gpm.info gpm.man
> +
>  # HTML (texi2html)
>  %.html: %.texinfo
>     if [ $(TEXI2HTML) != "no" ]; then $(TEXI2HTML) $< ;fi
> @@ -55,13 +57,13 @@
>     $(AWK) -f $(srcdir)/mktxt $< > $@
>  
>  # MAN (-)
> -$(MANPAGES): doc.gpm $(srcdir)/manpager
> +gpm.man: doc.gpm $(srcdir)/manpager
>     $(AWK) -f $(srcdir)/manpager doc.gpm
>     for i in gpm-root.1 gpm-types.7 gpm.8 mev.1 mouse-test.1; do \
>         expand $$i | sed s/^'[ ]*'//g > $$i.new; \
>         mv $$i.new $$i; \
>     done;
> -
> +   touch gpm.man
>  
>  # DVI 
>  # This rule is somewhat a rewrite of texi2dvi. I like make more than sh :-)
> @@ -97,8 +99,6 @@
>  
>  # Main portion
>  
> -all: $(srcdir)/gpm.info $(MANPAGES)
> -
>  # why gpmdoc.ps and gpm.ps??
>  # there is no gpm.ps in my tree and no rule to generate gpm.ps.
>  gpmdoc.ps: gpm.ps
> 
> -mike
> _______________________________________________
> gpm mailing list
> gpm@lists.linux.it
> http://lists.linux.it/listinfo/gpm
> 

-- 
Latest project: cconfig (http://nico.schotteli.us/papers/linux/cconfig/)
Open Source nutures open minds and free, creative developers.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 827 bytes
Desc: Digital signature
Url : http://lists.linux.it/pipermail/gpm/attachments/20051015/fd14bda4/attachment.pgp


More information about the gpm mailing list