]> Cypherpunks repositories - gostls13.git/commitdiff
build: tidy intermediate files during build
authorRuss Cox <rsc@golang.org>
Wed, 13 Apr 2011 20:24:57 +0000 (16:24 -0400)
committerRuss Cox <rsc@golang.org>
Wed, 13 Apr 2011 20:24:57 +0000 (16:24 -0400)
This CL changes the behavior of 'make install' and 'make test'
in the src/cmd directory and the src/pkg directory to have
each recursive make clean up after itself immediately.

It does the same in test/run, removing $F.$A and $A.out
(the common byproducts) between runs.

On machines with slow disks and aggressive kernel caching,
cleaning up immediately can mean that the intermediate
objects never get written to disk.

This change eliminates almost all the disk waiting during
all.bash on my laptop (a Thinkpad X201s with an SSD running Linux).

147.50u 19.95s 277.34r before
148.53u 21.64s 179.59r after

R=golang-dev, r, iant2
CC=golang-dev
https://golang.org/cl/4413042

src/Make.common
src/pkg/Makefile
test/run

index af6d04adc1480695e1ef7a8075ba9137f668314b..34d7016f4232f705915be454d462889ac5f40b93 100644 (file)
@@ -5,6 +5,15 @@
 clean:
        rm -rf *.o *.a *.[$(OS)] [$(OS)].out $(CLEANFILES)
 
+install.clean: install
+       rm -rf *.o *.a *.[$(OS)] [$(OS)].out $(CLEANFILES)
+
+test.clean: test
+       rm -rf *.o *.a *.[$(OS)] [$(OS)].out $(CLEANFILES)
+
+testshort.clean: testshort
+       rm -rf *.o *.a *.[$(OS)] [$(OS)].out $(CLEANFILES)
+
 %.make:
        $(MAKE) -C $* install
 
index 8eaf39d79d788e4b2068c8164d4f656ae3bfed6c..2e6e092b0bf89911514a8c1b9ea907a7f39cca8c 100644 (file)
@@ -233,18 +233,18 @@ bench.dirs: $(addsuffix .bench, $(BENCH))
 
 %.install:
        +@echo install $*
-       +@$(MAKE) -C $* install >$*/build.out 2>&1 || (echo INSTALL FAIL $*; cat $*/build.out; exit 1)
+       +@$(MAKE) -C $* install.clean >$*/build.out 2>&1 || (echo INSTALL FAIL $*; cat $*/build.out; exit 1)
 
 %.nuke:
        +$(MAKE) -C $* nuke
 
 %.test:
        +@echo test $*
-       +@$(MAKE) -C $* test >$*/test.out 2>&1 || (echo TEST FAIL $*; cat $*/test.out; exit 1)
+       +@$(MAKE) -C $* test.clean >$*/test.out 2>&1 || (echo TEST FAIL $*; cat $*/test.out; exit 1)
 
 %.testshort:
        +@echo test $*
-       +@$(MAKE) -C $* testshort >$*/test.out 2>&1 || (echo TEST FAIL $*; cat $*/test.out; exit 1)
+       +@$(MAKE) -C $* testshort.clean >$*/test.out 2>&1 || (echo TEST FAIL $*; cat $*/test.out; exit 1)
 
 %.bench:
        +$(MAKE) -C $* bench    
index a74933f358d4777493c53e67a3bad973ea72dcfb..628cc2d7b418ddb468e6ccdbfe6b968b18fc5d09 100755 (executable)
--- a/test/run
+++ b/test/run
@@ -99,6 +99,7 @@ do
                        echo $i >>pass.out
                fi
                echo $(awk 'NR==1{print $2}' $TMP2FILE) $D/$F >>times.out
+               rm -f $F.$A $A.out
        ) done
 done | # clean up some stack noise
        egrep -v '^(r[0-9a-z]+|[cfg]s)  +0x'  |