diff --git a/cmd/buildlet/stage0/Makefile b/cmd/buildlet/stage0/Makefile index 759f7ab5c..fb158a307 100644 --- a/cmd/buildlet/stage0/Makefile +++ b/cmd/buildlet/stage0/Makefile @@ -1,19 +1,25 @@ -buildlet-stage0.windows-amd64: stage0.go - GOOS=windows GOARCH=amd64 go build -o $@ - cat $@ | (cd ../../upload && go run upload.go --public --cacheable=false go-builder-data/$@) +usage: FORCE + # See targets in Makefile + exit 1 -buildlet-stage0.linux-arm-scaleway: stage0.go - GOOS=linux GOARCH=arm go build -o $@ - cat $@ | (cd ../../upload && go run upload.go --public --cacheable=false go-builder-data/$@) +FORCE: + +buildlet-stage0.windows-amd64: FORCE + go install golang.org/x/build/cmd/upload + upload --verbose --osarch=$@ --file=go:golang.org/x/build/cmd/buildlet/stage0 --public --cacheable=false go-builder-data/$@ + +buildlet-stage0.linux-arm-scaleway: FORCE + go install golang.org/x/build/cmd/upload + upload --verbose --osarch=$@ --file=go:golang.org/x/build/cmd/buildlet/stage0 --public --cacheable=false go-builder-data/$@ # No staging vs prod targets here, because this file gets baked into # the Docker layers on gcr.io (which do have staging vs prod names). # That is, this file on GCS is only used at "docker build"-time, not # during day-to-day builds. -buildlet-stage0.linux-amd64-kube: stage0.go - GOOS=linux GOARCH=amd64 go build -o $@ - cat $@ | (cd ../../upload && go run upload.go --public --cacheable=false go-builder-data/$@) +buildlet-stage0.linux-amd64-kube: FORCE + go install golang.org/x/build/cmd/upload + upload --verbose --osarch=$@ --file=go:golang.org/x/build/cmd/buildlet/stage0 --public --cacheable=false go-builder-data/$@ -buildlet-stage0.linux-s390x: stage0.go - GOOS=linux GOARCH=s390x go build -o $@ - cat $@ | (cd ../../upload && go run upload.go --public --cacheable=false go-builder-data/$@) +buildlet-stage0.linux-s390x: FORCE + go install golang.org/x/build/cmd/upload + upload --verbose --osarch=$@ --file=go:golang.org/x/build/cmd/buildlet/stage0 --public --cacheable=false go-builder-data/$@ diff --git a/cmd/buildlet/stage0/stage0.go b/cmd/buildlet/stage0/stage0.go index 0585bc412..52a80d6ed 100644 --- a/cmd/buildlet/stage0/stage0.go +++ b/cmd/buildlet/stage0/stage0.go @@ -11,6 +11,7 @@ package main import ( + "bytes" "encoding/json" "flag" "fmt" @@ -218,6 +219,7 @@ func initScaleway() { initScalewaySwap() initScalewayWorkdir() initScalewayMeta() + initScalewayDNS() initScalewayGo14() log.Printf("Scaleway init complete; metadata is %+v", scalewayMeta) } @@ -253,6 +255,20 @@ func initScalewayMeta() { } } +func initScalewayDNS() { + setFileContents("/etc/resolv.conf", []byte("nameserver 8.8.8.8\n")) +} + +func setFileContents(file string, contents []byte) { + old, err := ioutil.ReadFile(file) + if err == nil && bytes.Equal(old, contents) { + return + } + if err := ioutil.WriteFile(file, contents, 0644); err != nil { + log.Fatal(err) + } +} + func initScalewaySwap() { const swapFile = "/swapfile" slurp, _ := ioutil.ReadFile("/proc/swaps") diff --git a/cmd/upload/upload.go b/cmd/upload/upload.go index e67254b7a..c56fc47d7 100644 --- a/cmd/upload/upload.go +++ b/cmd/upload/upload.go @@ -145,6 +145,9 @@ func buildGoTarget() { if *osarch != "" { *osarch = (*osarch)[strings.LastIndex(*osarch, ".")+1:] v := strings.Split(*osarch, "-") + if len(v) == 3 { + v = v[:2] // support e.g. "linux-arm-scaleway" as GOOS=linux, GOARCH=arm + } if len(v) != 2 || v[0] == "" || v[1] == "" { log.Fatalf("invalid -osarch value %q", *osarch) }