Skip to content

Commit

Permalink
cmd/upload: remove special Go1.4 bootstrap support
Browse files Browse the repository at this point in the history
Go 1.4 is no longer used for bootstrap. (Hooray!)

For golang/go#44505.

Change-Id: Id8ad641fa8ed88a2114879eb35ee45fff135eab6
Reviewed-on: https://go-review.googlesource.com/c/build/+/420215
Reviewed-by: Dmitri Shuralyov <[email protected]>
Run-TryBot: Russ Cox <[email protected]>
Reviewed-by: Dmitri Shuralyov <[email protected]>
TryBot-Result: Gopher Robot <[email protected]>
Auto-Submit: Russ Cox <[email protected]>
  • Loading branch information
rsc authored and gopherbot committed Aug 15, 2022
1 parent 5845b37 commit d046b5b
Showing 1 changed file with 2 additions and 88 deletions.
90 changes: 2 additions & 88 deletions cmd/upload/upload.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
package main

import (
"archive/tar"
"bytes"
"compress/gzip"
"context"
Expand All @@ -20,7 +19,6 @@ import (
"log"
"net/http"
"os"
"regexp"
"strings"

"cloud.google.com/go/storage"
Expand All @@ -36,18 +34,9 @@ var (
extraEnv = flag.String("env", "", "comma-separated list of addition KEY=val environment pairs to include in build environment when building a target to upload")
)

// to match uploads to e.g. https://storage.googleapis.com/golang/go1.4-bootstrap-20170531.tar.gz.
var go14BootstrapRx = regexp.MustCompile(`^go1\.4-bootstrap-20\d{6}\.tar\.gz$`)

func main() {
flag.Usage = func() {
fmt.Fprintf(os.Stderr, `Usage: upload [flags] <bucket/object>
If <bucket/object> is of the form "golang/go1.4-bootstrap-20yymmdd.tar.gz",
then the current release-branch.go1.4 is uploaded from Gerrit, with each
tar entry filename beginning with the prefix "go/".
`)
fmt.Fprintf(os.Stderr, "Usage: upload [flags] bucket/object\n")
flag.PrintDefaults()
}
flag.Parse()
Expand All @@ -65,17 +54,6 @@ tar entry filename beginning with the prefix "go/".
}
bucket, object := args[0], args[1]

// Special support for auto-tarring up Go 1.4 tarballs from the 1.4 release branch.
is14Src := bucket == "golang" && go14BootstrapRx.MatchString(object)
if is14Src {
if *file != "-" {
log.Fatalf("invalid use of -file with Go 1.4 tarball %v", object)
}
*doGzip = true
*public = true
*cacheable = true
}

if *doGzip && !strings.HasSuffix(object, ".gz") {
log.Fatalf("-gzip flag requires object ending in .gz")
}
Expand All @@ -94,15 +72,7 @@ tar entry filename beginning with the prefix "go/".
log.Fatalf("storage.NewClient: %v", err)
}

if is14Src {
_, err := storageClient.Bucket(bucket).Object(object).Attrs(context.Background())
if err != storage.ErrObjectNotExist {
if err == nil {
log.Fatalf("object %v already exists; refusing to overwrite.", object)
}
log.Fatalf("error checking for %v: %v", object, err)
}
} else if alreadyUploaded(storageClient, bucket, object) {
if alreadyUploaded(storageClient, bucket, object) {
if *verbose {
log.Printf("gs://%s/%s up-to-date", bucket, object)
}
Expand All @@ -123,8 +93,6 @@ tar entry filename beginning with the prefix "go/".
}
var content io.Reader
switch {
case is14Src:
content = generate14Tarfile()
case *file == "-":
content = os.Stdin
default:
Expand Down Expand Up @@ -218,57 +186,3 @@ func alreadyUploaded(storageClient *storage.Client, bucket, object string) bool
}
return bytes.Equal(m5.Sum(nil), o.MD5)
}

// generate14Tarfile downloads the release-branch.go1.4 release branch
// tarball and returns it uncompressed, with the "go/" prefix before
// each tar header's filename.
func generate14Tarfile() io.Reader {
const tarURL = "https://go.googlesource.com/go/+archive/release-branch.go1.4.tar.gz"
res, err := http.Get(tarURL)
if err != nil {
log.Fatal(err)
}
if res.StatusCode != 200 {
log.Fatalf("%v: %v", tarURL, res.Status)
}
if got, want := res.Header.Get("Content-Type"), "application/x-gzip"; got != want {
log.Fatalf("%v: response Content-Type = %q; expected %q", tarURL, got, want)
}

var out bytes.Buffer // output tar (not gzipped)

tw := tar.NewWriter(&out)

zr, err := gzip.NewReader(res.Body)
if err != nil {
log.Fatal(err)
}
tr := tar.NewReader(zr)

for {
hdr, err := tr.Next()
if err == io.EOF {
break
}
if err != nil {
log.Fatal(err)
}
switch hdr.Typeflag {
case tar.TypeReg, tar.TypeRegA, tar.TypeSymlink, tar.TypeDir:
// Accept these.
default:
continue
}
hdr.Name = "go/" + hdr.Name
if err := tw.WriteHeader(hdr); err != nil {
log.Fatalf("WriteHeader: %v", err)
}
if _, err := io.Copy(tw, tr); err != nil {
log.Fatalf("tar copying %v: %v", hdr.Name, err)
}
}
if err := tw.Close(); err != nil {
log.Fatal(err)
}
return &out
}

0 comments on commit d046b5b

Please sign in to comment.