diff --git a/cmd/jiri/import_test.go b/cmd/jiri/import_test.go
index 6dd60c6..2410fd4 100644
--- a/cmd/jiri/import_test.go
+++ b/cmd/jiri/import_test.go
@@ -138,7 +138,7 @@
 	opts := gosh.Opts{Fatalf: t.Fatalf, Logf: t.Logf}
 	sh := gosh.NewShell(opts)
 	defer sh.Cleanup()
-	jiriTool := sh.BuildGoPkg("v.io/jiri/cmd/jiri")
+	jiriTool := gosh.BuildGoPkg(sh, sh.MakeTempDir(), "v.io/jiri/cmd/jiri")
 	for _, test := range tests {
 		if err := testImport(opts, jiriTool, test); err != nil {
 			t.Errorf("%v: %v", test.Args, err)
diff --git a/cmd/jiri/upgrade_test.go b/cmd/jiri/upgrade_test.go
index d8913ed..7aae9c5 100644
--- a/cmd/jiri/upgrade_test.go
+++ b/cmd/jiri/upgrade_test.go
@@ -201,7 +201,7 @@
 	opts := gosh.Opts{Fatalf: t.Fatalf, Logf: t.Logf}
 	sh := gosh.NewShell(opts)
 	defer sh.Cleanup()
-	jiriTool := sh.BuildGoPkg("v.io/jiri/cmd/jiri")
+	jiriTool := gosh.BuildGoPkg(sh, sh.MakeTempDir(), "v.io/jiri/cmd/jiri")
 	for _, test := range tests {
 		if err := testUpgrade(opts, jiriTool, test); err != nil {
 			t.Errorf("%v: %v", test.Args, err)
@@ -264,7 +264,7 @@
 	defer sh.Cleanup()
 	jiriRoot := sh.MakeTempDir()
 	sh.Pushd(jiriRoot)
-	jiriTool := sh.BuildGoPkg("v.io/jiri/cmd/jiri")
+	jiriTool := gosh.BuildGoPkg(sh, sh.MakeTempDir(), "v.io/jiri/cmd/jiri")
 	localData := `<manifest/>`
 	jiriData := `<manifest>
   <imports>
diff --git a/cmd/jiri/which_test.go b/cmd/jiri/which_test.go
index a60655a..1e2fe4b 100644
--- a/cmd/jiri/which_test.go
+++ b/cmd/jiri/which_test.go
@@ -16,7 +16,7 @@
 	sh := gosh.NewShell(gosh.Opts{Fatalf: t.Fatalf, Logf: t.Logf, PropagateChildOutput: true})
 	defer sh.Cleanup()
 
-	jiriBinary := sh.BuildGoPkg("v.io/jiri/cmd/jiri")
+	jiriBinary := gosh.BuildGoPkg(sh, sh.MakeTempDir(), "v.io/jiri/cmd/jiri")
 	stdout, stderr := sh.Cmd(jiriBinary, []string{"which"}...).StdoutStderr()
 	if got, want := stdout, fmt.Sprintf("# binary\n%s\n", jiriBinary); got != want {
 		t.Errorf("stdout got %q, want %q", got, want)
diff --git a/profiles/profilescmdline/manager_test.go b/profiles/profilescmdline/manager_test.go
index b00eccc..54a2743 100644
--- a/profiles/profilescmdline/manager_test.go
+++ b/profiles/profilescmdline/manager_test.go
@@ -59,7 +59,7 @@
 
 var (
 	buildInstallersOnce, buildJiriOnce     sync.Once
-	buildInstallersBindir, buildJiriBindir = "", ""
+	buildInstallersBinDir, buildJiriBinDir = "", ""
 )
 
 func newShell(t *testing.T) *gosh.Shell {
@@ -72,25 +72,37 @@
 	return gosh.NewShell(gosh.Opts{Fatalf: fatalf, Logf: t.Logf})
 }
 
+// TODO(sadovsky): This code leaves a lot of temp dirs behind. It would be nice
+// to restructure things so that all temporary artifacts get cleaned up.
 func buildInstallers(t *testing.T) string {
 	buildInstallersOnce.Do(func() {
+		binDir, err := ioutil.TempDir("", "")
+		if err != nil {
+			t.Fatal(err)
+		}
 		sh := newShell(t)
+		defer sh.Cleanup()
 		prefix := "v.io/jiri/profiles/profilescmdline/internal/"
-		sh.BuildGoPkg("v.io/jiri/cmd/jiri", "-o", "jiri")
-		sh.BuildGoPkg(prefix+"i1", "-o", "jiri-profile-i1")
-		sh.BuildGoPkg(prefix+"i2", "-o", "jiri-profile-i2")
-		buildInstallersBindir = sh.Opts.BinDir
+		gosh.BuildGoPkg(sh, binDir, "v.io/jiri/cmd/jiri", "-o", "jiri")
+		gosh.BuildGoPkg(sh, binDir, prefix+"i1", "-o", "jiri-profile-i1")
+		gosh.BuildGoPkg(sh, binDir, prefix+"i2", "-o", "jiri-profile-i2")
+		buildInstallersBinDir = binDir
 	})
-	return buildInstallersBindir
+	return buildInstallersBinDir
 }
 
 func buildJiri(t *testing.T) string {
 	buildJiriOnce.Do(func() {
+		binDir, err := ioutil.TempDir("", "")
+		if err != nil {
+			t.Fatal(err)
+		}
 		sh := newShell(t)
-		sh.BuildGoPkg("v.io/jiri/cmd/jiri", "-o", "jiri")
-		buildJiriBindir = sh.Opts.BinDir
+		defer sh.Cleanup()
+		gosh.BuildGoPkg(sh, binDir, "v.io/jiri/cmd/jiri", "-o", "jiri")
+		buildJiriBinDir = binDir
 	})
-	return buildJiriBindir
+	return buildJiriBinDir
 }
 
 func run(sh *gosh.Shell, dir, bin string, args ...string) string {
