From 5d3379ed7e724583b570be459e280fd26cda3bd0 Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Fri, 31 Jul 2015 17:03:34 -0700 Subject: [PATCH] deprecate 'make.go', go back to Makefile - make.go is not genversion.go --- Makefile | 20 ++++--- genversion.go | 94 +++++++++++++++++++++++++++++++++ make.go | 142 -------------------------------------------------- 3 files changed, 108 insertions(+), 148 deletions(-) create mode 100644 genversion.go delete mode 100644 make.go diff --git a/Makefile b/Makefile index c87c79bf8..ef73e5cd2 100644 --- a/Makefile +++ b/Makefile @@ -31,14 +31,21 @@ cyclo: @echo "Running $@:" @test -z "$$(gocyclo -over 25 . | grep -v Godeps/_workspace/src/ | tee /dev/stderr)" -gomake-all: getdeps verifiers +build: getdeps verifiers @echo "Installing minio:" - @go run make.go -install + @godep go generate ./... + @godep go test -race ./... -release: getdeps verifiers - @echo "Installing minio:" - @go run make.go -release - @go run make.go -install +gomake-all: build + @godep go install github.com/minio/minio + +release: genversion + @echo "Installing minio for new version.go:" + @godep go install github.com/minio/minio + +genversion: + @echo "Generating new minio version.go" + @godep go run genversion.go godepupdate: @(env bash $(PWD)/buildscripts/updatedeps.sh) @@ -59,4 +66,5 @@ clean: @rm -fv cover.out @rm -fv pkg/utils/split/TESTPREFIX.* @rm -fv minio + @godep go clean @find Godeps -name "*.a" -type f -exec rm -vf {} \+ diff --git a/genversion.go b/genversion.go new file mode 100644 index 000000000..3fe0ead1d --- /dev/null +++ b/genversion.go @@ -0,0 +1,94 @@ +// +build ignore + +/* + * Makefile alternative for Minio Cloud Storage, (C) 2015 Minio, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package main + +import ( + "fmt" + "os" + "text/template" + "time" +) + +type Version struct { + Date string + Tag string +} + +func writeVersion(version Version) error { + var versionTemplate = `// -------- DO NOT EDIT -------- +// this is an autogenerated file + +package main + +import ( + "net/http" + "time" +) + +// Version autogenerated +var Version = {{if .Date}}"{{.Date}}"{{else}}""{{end}} + +// Tag is of following format +// +// RELEASE.[WeekDay]-[Month]-[Day]-[Hour]-[Min]-[Sec]-GMT-[Year] +// +var Tag = {{if .Tag}}"{{.Tag}}"{{else}}""{{end}} + +// getVersion - +func getVersion() string { + t, _ := time.Parse(time.RFC3339Nano, Version) + if t.IsZero() { + return "" + } + return t.Format(http.TimeFormat) +} +` + t := template.Must(template.New("version").Parse(versionTemplate)) + versionFile, err := os.OpenFile("version.go", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) + if err != nil { + return err + } + defer versionFile.Close() + err = t.Execute(versionFile, version) + if err != nil { + return err + } + return nil +} + +func main() { + t := time.Now().UTC() + date := t.Format(time.RFC3339Nano) + tag := fmt.Sprintf( + "RELEASE.%s-%s-%02d-%02d-%02d-%02d-GMT-%d", + t.Weekday().String()[0:3], + t.Month().String()[0:3], + t.Day(), + t.Hour(), + t.Minute(), + t.Second(), + t.Year(), + ) + version := Version{Date: date, Tag: tag} + err := writeVersion(version) + if err != nil { + fmt.Print(err) + os.Exit(1) + } +} diff --git a/make.go b/make.go deleted file mode 100644 index 5e3a87bdc..000000000 --- a/make.go +++ /dev/null @@ -1,142 +0,0 @@ -// +build ignore - -/* - * Makefile alternative for Minio Cloud Storage, (C) 2015 Minio, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package main - -import ( - "bytes" - "flag" - "fmt" - "os" - "os/exec" - "text/template" - "time" -) - -type Version struct { - Date string -} - -func writeVersion(version Version) error { - var versionTemplate = `// -------- DO NOT EDIT -------- -// this is an autogenerated file - -package main - -import ( - "net/http" - "time" -) - -// Version autogenerated -var Version = {{if .Date}}"{{.Date}}"{{else}}""{{end}} - -// getVersion - -func getVersion() string { - t, _ := time.Parse(time.RFC3339Nano, Version) - if t.IsZero() { - return "" - } - return t.Format(http.TimeFormat) -} -` - t := template.Must(template.New("version").Parse(versionTemplate)) - versionFile, err := os.OpenFile("version.go", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) - if err != nil { - return err - } - defer versionFile.Close() - err = t.Execute(versionFile, version) - if err != nil { - return err - } - return nil -} - -type command struct { - cmd *exec.Cmd - stderr *bytes.Buffer - stdout *bytes.Buffer -} - -func (c command) runCommand() error { - c.cmd.Stdout = c.stdout - c.cmd.Stderr = c.stderr - return c.cmd.Run() -} -func (c command) String() string { - message := c.stderr.String() - message += c.stdout.String() - return message -} - -func runMinioInstall() { - minioGenerate := command{exec.Command("godep", "go", "generate", "./..."), &bytes.Buffer{}, &bytes.Buffer{}} - minioBuild := command{exec.Command("godep", "go", "build", "-a", "./..."), &bytes.Buffer{}, &bytes.Buffer{}} - minioTest := command{exec.Command("godep", "go", "test", "-race", "./..."), &bytes.Buffer{}, &bytes.Buffer{}} - minioInstall := command{exec.Command("godep", "go", "install", "-a", "github.com/minio/minio"), &bytes.Buffer{}, &bytes.Buffer{}} - minioGenerateErr := minioGenerate.runCommand() - if minioGenerateErr != nil { - fmt.Print(minioGenerate) - os.Exit(1) - } - fmt.Print(minioGenerate) - minioBuildErr := minioBuild.runCommand() - if minioBuildErr != nil { - fmt.Print(minioBuild) - os.Exit(1) - } - fmt.Print(minioBuild) - minioTestErr := minioTest.runCommand() - if minioTestErr != nil { - fmt.Println(minioTest) - os.Exit(1) - } - fmt.Print(minioTest) - minioInstallErr := minioInstall.runCommand() - if minioInstallErr != nil { - fmt.Println(minioInstall) - os.Exit(1) - } - fmt.Print(minioInstall) -} - -func runMinioRelease() { - t := time.Now().UTC() - date := t.Format(time.RFC3339Nano) - version := Version{Date: date} - err := writeVersion(version) - if err != nil { - fmt.Print(err) - os.Exit(1) - } -} - -func main() { - releaseFlag := flag.Bool("release", false, "make a release") - installFlag := flag.Bool("install", false, "install minio") - - flag.Parse() - - if *releaseFlag { - runMinioRelease() - } - if *installFlag { - runMinioInstall() - } -}