Use the host target in the multi-module launcher
This commit is contained in:
@@ -8,6 +8,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"runtime"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
@@ -81,6 +82,11 @@ func TestMultiModuleLauncherUsesSelectedModuleAndProfile(t *testing.T) {
|
|||||||
shim := `#!/bin/sh
|
shim := `#!/bin/sh
|
||||||
set -eu
|
set -eu
|
||||||
printf 'cwd=%s args=%s\n' "$PWD" "$*" >> "$RELEASEKIT_TEST_GO_LOG"
|
printf 'cwd=%s args=%s\n' "$PWD" "$*" >> "$RELEASEKIT_TEST_GO_LOG"
|
||||||
|
if [ "$1" = env ]; then
|
||||||
|
case "$2" in GOHOSTOS) printf '%s\n' "$RELEASEKIT_TEST_HOST_OS" ;; GOHOSTARCH) printf '%s\n' "$RELEASEKIT_TEST_HOST_ARCH" ;; esac
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
case " $* " in *" -deps "*) printf 'target=%s/%s\n' "$GOOS" "$GOARCH" >> "$RELEASEKIT_TEST_GO_LOG" ;; esac
|
||||||
modfile=
|
modfile=
|
||||||
for argument in "$@"; do
|
for argument in "$@"; do
|
||||||
case "$argument" in -modfile=*) modfile=${argument#-modfile=} ;; esac
|
case "$argument" in -modfile=*) modfile=${argument#-modfile=} ;; esac
|
||||||
@@ -98,6 +104,11 @@ fi
|
|||||||
t.Setenv("RELEASEKIT_MODULE_MAP", mapPath)
|
t.Setenv("RELEASEKIT_MODULE_MAP", mapPath)
|
||||||
t.Setenv("RELEASEKIT_TEST_GO_LOG", goLog)
|
t.Setenv("RELEASEKIT_TEST_GO_LOG", goLog)
|
||||||
t.Setenv("RELEASEKIT_TEST_TOOL_ARGS", argsLog)
|
t.Setenv("RELEASEKIT_TEST_TOOL_ARGS", argsLog)
|
||||||
|
t.Setenv("RELEASEKIT_TEST_HOST_OS", runtime.GOOS)
|
||||||
|
t.Setenv("RELEASEKIT_TEST_HOST_ARCH", runtime.GOARCH)
|
||||||
|
foreignOS, foreignArch := foreignTarget()
|
||||||
|
t.Setenv("GOOS", foreignOS)
|
||||||
|
t.Setenv("GOARCH", foreignArch)
|
||||||
launcher := filepath.Join(repository, "release.sh")
|
launcher := filepath.Join(repository, "release.sh")
|
||||||
command := exec.Command(launcher, "with space", "v1.2.4")
|
command := exec.Command(launcher, "with space", "v1.2.4")
|
||||||
var stdout, stderr bytes.Buffer
|
var stdout, stderr bytes.Buffer
|
||||||
@@ -115,6 +126,9 @@ fi
|
|||||||
if !strings.Contains(string(goCommands), "cwd="+wantModule) || !strings.Contains(string(goCommands), "v0.2.299") || strings.Contains(string(goCommands), "v0.2.197") {
|
if !strings.Contains(string(goCommands), "cwd="+wantModule) || !strings.Contains(string(goCommands), "v0.2.299") || strings.Contains(string(goCommands), "v0.2.197") {
|
||||||
t.Fatalf("tool bootstrap did not use selected module metadata: %s", goCommands)
|
t.Fatalf("tool bootstrap did not use selected module metadata: %s", goCommands)
|
||||||
}
|
}
|
||||||
|
if !strings.Contains(string(goCommands), "target="+runtime.GOOS+"/"+runtime.GOARCH) {
|
||||||
|
t.Fatalf("dependency inspection did not use host target: %s", goCommands)
|
||||||
|
}
|
||||||
toolArgs, err := os.ReadFile(argsLog)
|
toolArgs, err := os.ReadFile(argsLog)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
@@ -152,6 +166,9 @@ func TestMultiModuleLauncherRunsToolFromSelectedDependency(t *testing.T) {
|
|||||||
t.Setenv("GOPROXY", "file://"+filepath.ToSlash(proxy))
|
t.Setenv("GOPROXY", "file://"+filepath.ToSlash(proxy))
|
||||||
t.Setenv("GOSUMDB", "off")
|
t.Setenv("GOSUMDB", "off")
|
||||||
t.Setenv("GOTOOLCHAIN", "local")
|
t.Setenv("GOTOOLCHAIN", "local")
|
||||||
|
foreignOS, foreignArch := foreignTarget()
|
||||||
|
t.Setenv("GOOS", foreignOS)
|
||||||
|
t.Setenv("GOARCH", foreignArch)
|
||||||
moduleBefore, err := os.ReadFile(filepath.Join(repository, "integrations", "ckconfig", "go.mod"))
|
moduleBefore, err := os.ReadFile(filepath.Join(repository, "integrations", "ckconfig", "go.mod"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
@@ -203,6 +220,17 @@ func TestMultiModuleLauncherRunsToolFromSelectedDependency(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func foreignTarget() (string, string) {
|
||||||
|
osName, arch := "windows", "arm64"
|
||||||
|
if runtime.GOOS == osName {
|
||||||
|
osName = "linux"
|
||||||
|
}
|
||||||
|
if runtime.GOARCH == arch {
|
||||||
|
arch = "amd64"
|
||||||
|
}
|
||||||
|
return osName, arch
|
||||||
|
}
|
||||||
|
|
||||||
func runModuleSelector(t *testing.T, helper, mode, value, mapPath string) string {
|
func runModuleSelector(t *testing.T, helper, mode, value, mapPath string) string {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
command := exec.Command("sh", helper, mode, value)
|
command := exec.Command("sh", helper, mode, value)
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ checks in Stage 6.
|
|||||||
|
|
||||||
## Stage 1: Normalize the local multi-module launcher
|
## Stage 1: Normalize the local multi-module launcher
|
||||||
|
|
||||||
|
**Completed.**
|
||||||
|
|
||||||
1. In [the multi-module launcher](../../examples/multi-module/release.sh), after
|
1. In [the multi-module launcher](../../examples/multi-module/release.sh), after
|
||||||
entering the selected module and exporting its existing `GOWORK=off` and
|
entering the selected module and exporting its existing `GOWORK=off` and
|
||||||
`GOTOOLCHAIN=local` settings, insert the following before the first Go
|
`GOTOOLCHAIN=local` settings, insert the following before the first Go
|
||||||
|
|||||||
@@ -36,6 +36,9 @@ releasekit_module=go.maximumdirect.net/releasekit
|
|||||||
cd "$module_path"
|
cd "$module_path"
|
||||||
export GOWORK=off
|
export GOWORK=off
|
||||||
export GOTOOLCHAIN=local
|
export GOTOOLCHAIN=local
|
||||||
|
releasekit_host_os=$(go env GOHOSTOS) || exit $?
|
||||||
|
releasekit_host_arch=$(go env GOHOSTARCH) || exit $?
|
||||||
|
export GOOS="$releasekit_host_os" GOARCH="$releasekit_host_arch"
|
||||||
go list -mod=mod -modfile="$bootstrap_dir/releasekit.mod" -m "$releasekit_module"
|
go list -mod=mod -modfile="$bootstrap_dir/releasekit.mod" -m "$releasekit_module"
|
||||||
go mod edit -modfile="$bootstrap_dir/releasekit.mod" -tool="$releasekit_module/cmd/releasekit"
|
go mod edit -modfile="$bootstrap_dir/releasekit.mod" -tool="$releasekit_module/cmd/releasekit"
|
||||||
go list -mod=mod -modfile="$bootstrap_dir/releasekit.mod" -deps "$releasekit_module/cmd/releasekit" > /dev/null
|
go list -mod=mod -modfile="$bootstrap_dir/releasekit.mod" -deps "$releasekit_module/cmd/releasekit" > /dev/null
|
||||||
|
|||||||
Reference in New Issue
Block a user