Re: [patch] fix parallel building

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[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@xxxxxxxxxxxxxx
> 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.

Attachment: signature.asc
Description: Digital signature

_______________________________________________
gpm mailing list
gpm@xxxxxxxxxxxxxx
http://lists.linux.it/listinfo/gpm

[Index of Archives]     [Kernel Development]     [Red Hat Install]     [Red Hat Watch]     [Red Hat Development]     [Gimp]     [Yosemite News]