From: Kyle Lemons Date: Wed, 5 Jan 2011 19:34:59 +0000 (-0500) Subject: goinstall: add -clean flag X-Git-Tag: weekly.2011-01-06~12 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=ddc2710d69adceb1f457792f17c4837a3d52a10a;p=gostls13.git goinstall: add -clean flag R=adg, rsc CC=golang-dev https://golang.org/cl/3821042 --- diff --git a/src/cmd/goinstall/main.go b/src/cmd/goinstall/main.go index 9301f27b5a..1736ffc030 100644 --- a/src/cmd/goinstall/main.go +++ b/src/cmd/goinstall/main.go @@ -41,6 +41,7 @@ var ( reportToDashboard = flag.Bool("dashboard", true, "report public packages at "+dashboardURL) logPkgs = flag.Bool("log", true, "log installed packages to $GOROOT/goinstall.log for use by -a") update = flag.Bool("u", false, "update already-downloaded packages") + clean = flag.Bool("clean", false, "clean the package directory before installing") verbose = flag.Bool("v", false, "verbose") ) diff --git a/src/cmd/goinstall/make.go b/src/cmd/goinstall/make.go index 4e001b49bd..58ba5be0a6 100644 --- a/src/cmd/goinstall/make.go +++ b/src/cmd/goinstall/make.go @@ -17,18 +17,27 @@ import ( // For non-local packages or packages without Makefiles, // domake generates a standard Makefile and passes it // to make on standard input. -func domake(dir, pkg string, local bool) os.Error { +func domake(dir, pkg string, local bool) (err os.Error) { + needMakefile := true if local { _, err := os.Stat(dir + "/Makefile") if err == nil { - return run(dir, nil, "gomake", "install") + needMakefile = false } } - makefile, err := makeMakefile(dir, pkg) - if err != nil { - return err + cmd := []string{"gomake"} + var makefile []byte + if needMakefile { + if makefile, err = makeMakefile(dir, pkg); err != nil { + return err + } + cmd = append(cmd, "-f-") + } + if *clean { + cmd = append(cmd, "clean") } - return run(dir, makefile, "gomake", "-f-", "install") + cmd = append(cmd, "install") + return run(dir, makefile, cmd...) } // makeMakefile computes the standard Makefile for the directory dir