cmd/cgo/internal/testcshared: drop bespoke host test support

Updates #59999.

Change-Id: If0b80713a6bb5d8c59d9dd0b219f2f47173090e1
Reviewed-on: https://go-review.googlesource.com/c/go/+/497077
Reviewed-by: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Austin Clements <austin@google.com>
This commit is contained in:
Austin Clements 2023-05-22 12:32:05 -04:00
parent 8c445b7c9f
commit 96a773d61b

View file

@ -31,7 +31,7 @@ var cc []string
var exeSuffix string var exeSuffix string
var GOOS, GOARCH, GOROOT string var GOOS, GOARCH, GOROOT string
var installdir, androiddir string var installdir string
var libgoname string var libgoname string
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
@ -65,17 +65,6 @@ func testMain(m *testing.M) int {
log.Fatalf("Unable able to find GOROOT at '%s'", GOROOT) log.Fatalf("Unable able to find GOROOT at '%s'", GOROOT)
} }
androiddir = fmt.Sprintf("/data/local/tmp/testcshared-%d", os.Getpid())
if runtime.GOOS != GOOS && GOOS == "android" {
args := append(adbCmd(), "exec-out", "mkdir", "-p", androiddir)
cmd := exec.Command(args[0], args[1:]...)
out, err := cmd.CombinedOutput()
if err != nil {
log.Fatalf("setupAndroid failed: %v\n%s\n", err, out)
}
defer cleanupAndroid()
}
cc = []string{goEnv("CC")} cc = []string{goEnv("CC")}
out := goEnv("GOGCCFLAGS") out := goEnv("GOGCCFLAGS")
@ -184,47 +173,6 @@ func cmdToRun(name string) string {
return "./" + name + exeSuffix return "./" + name + exeSuffix
} }
func adbCmd() []string {
cmd := []string{"adb"}
if flags := os.Getenv("GOANDROID_ADB_FLAGS"); flags != "" {
cmd = append(cmd, strings.Split(flags, " ")...)
}
return cmd
}
func adbPush(t *testing.T, filename string) {
if runtime.GOOS == GOOS || GOOS != "android" {
return
}
args := append(adbCmd(), "push", filename, fmt.Sprintf("%s/%s", androiddir, filename))
cmd := exec.Command(args[0], args[1:]...)
if out, err := cmd.CombinedOutput(); err != nil {
t.Fatalf("adb command failed: %v\n%s\n", err, out)
}
}
func adbRun(t *testing.T, env []string, adbargs ...string) string {
if GOOS != "android" {
t.Fatalf("trying to run adb command when operating system is not android.")
}
args := append(adbCmd(), "exec-out")
// Propagate LD_LIBRARY_PATH to the adb shell invocation.
for _, e := range env {
if strings.Contains(e, "LD_LIBRARY_PATH=") {
adbargs = append([]string{e}, adbargs...)
break
}
}
shellcmd := fmt.Sprintf("cd %s; %s", androiddir, strings.Join(adbargs, " "))
args = append(args, shellcmd)
cmd := exec.Command(args[0], args[1:]...)
out, err := cmd.CombinedOutput()
if err != nil {
t.Fatalf("adb command failed: %v\n%s\n", err, out)
}
return strings.Replace(string(out), "\r", "", -1)
}
func run(t *testing.T, extraEnv []string, args ...string) string { func run(t *testing.T, extraEnv []string, args ...string) string {
t.Helper() t.Helper()
cmd := exec.Command(args[0], args[1:]...) cmd := exec.Command(args[0], args[1:]...)
@ -252,9 +200,6 @@ func run(t *testing.T, extraEnv []string, args ...string) string {
func runExe(t *testing.T, extraEnv []string, args ...string) string { func runExe(t *testing.T, extraEnv []string, args ...string) string {
t.Helper() t.Helper()
if runtime.GOOS != GOOS && GOOS == "android" {
return adbRun(t, append(os.Environ(), extraEnv...), args...)
}
return run(t, extraEnv, args...) return run(t, extraEnv, args...)
} }
@ -378,15 +323,6 @@ func createHeaders() error {
} }
} }
if runtime.GOOS != GOOS && GOOS == "android" {
args = append(adbCmd(), "push", libgoname, fmt.Sprintf("%s/%s", androiddir, libgoname))
cmd = exec.Command(args[0], args[1:]...)
out, err = cmd.CombinedOutput()
if err != nil {
return fmt.Errorf("adb command failed: %v\n%s\n", err, out)
}
}
return nil return nil
} }
@ -409,18 +345,6 @@ func createHeadersOnce(t *testing.T) {
} }
} }
func cleanupAndroid() {
if GOOS != "android" {
return
}
args := append(adbCmd(), "exec-out", "rm", "-rf", androiddir)
cmd := exec.Command(args[0], args[1:]...)
out, err := cmd.CombinedOutput()
if err != nil {
log.Panicf("cleanupAndroid failed: %v\n%s\n", err, out)
}
}
// test0: exported symbols in shared lib are accessible. // test0: exported symbols in shared lib are accessible.
func TestExportedSymbols(t *testing.T) { func TestExportedSymbols(t *testing.T) {
testenv.MustHaveCGO(t) testenv.MustHaveCGO(t)
@ -434,7 +358,6 @@ func TestExportedSymbols(t *testing.T) {
createHeadersOnce(t) createHeadersOnce(t)
runCC(t, "-I", installdir, "-o", cmd, "main0.c", libgoname) runCC(t, "-I", installdir, "-o", cmd, "main0.c", libgoname)
adbPush(t, cmd)
defer os.Remove(bin) defer os.Remove(bin)
@ -563,7 +486,6 @@ func TestExportedSymbolsWithDynamicLoad(t *testing.T) {
} else { } else {
runCC(t, "-o", cmd, "main1.c") runCC(t, "-o", cmd, "main1.c")
} }
adbPush(t, cmd)
defer os.Remove(bin) defer os.Remove(bin)
@ -595,7 +517,6 @@ func TestUnexportedSymbols(t *testing.T) {
"-installsuffix", "testcshared", "-installsuffix", "testcshared",
"-o", libname, "./libgo2", "-o", libname, "./libgo2",
) )
adbPush(t, libname)
linkFlags := "-Wl,--no-as-needed" linkFlags := "-Wl,--no-as-needed"
if GOOS == "darwin" || GOOS == "ios" { if GOOS == "darwin" || GOOS == "ios" {
@ -603,7 +524,6 @@ func TestUnexportedSymbols(t *testing.T) {
} }
runCC(t, "-o", cmd, "main2.c", linkFlags, libname) runCC(t, "-o", cmd, "main2.c", linkFlags, libname)
adbPush(t, cmd)
defer os.Remove(libname) defer os.Remove(libname)
defer os.Remove(bin) defer os.Remove(bin)
@ -636,7 +556,6 @@ func TestMainExportedOnAndroid(t *testing.T) {
createHeadersOnce(t) createHeadersOnce(t)
runCC(t, "-o", cmd, "main3.c", "-ldl") runCC(t, "-o", cmd, "main3.c", "-ldl")
adbPush(t, cmd)
defer os.Remove(bin) defer os.Remove(bin)
@ -662,13 +581,11 @@ func testSignalHandlers(t *testing.T, pkgname, cfile, cmd string) {
"-installsuffix", "testcshared", "-installsuffix", "testcshared",
"-o", libname, pkgname, "-o", libname, pkgname,
) )
adbPush(t, libname)
if GOOS != "freebsd" { if GOOS != "freebsd" {
runCC(t, "-pthread", "-o", cmd, cfile, "-ldl") runCC(t, "-pthread", "-o", cmd, cfile, "-ldl")
} else { } else {
runCC(t, "-pthread", "-o", cmd, cfile) runCC(t, "-pthread", "-o", cmd, cfile)
} }
adbPush(t, cmd)
bin := cmdToRun(cmd) bin := cmdToRun(cmd)