mirror of https://github.com/minio/minio.git
				
				
				
			build time constants
This commit is contained in:
		
							parent
							
								
									07839caf9b
								
							
						
					
					
						commit
						588833d06f
					
				
							
								
								
									
										24
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										24
									
								
								Makefile
								
								
								
								
							|  | @ -9,9 +9,9 @@ checkgopath: | |||
| 	@for miniopath in $(echo ${GOPATH} | sed 's/:/\n/g'); do if [ ! -d ${miniopath}/src/github.com/minio/minio ]; then echo "Project not found in ${miniopath}, please follow instructions provided at https://github.com/minio/minio/blob/master/CONTRIBUTING.md#setup-your-minio-github-repository" && exit 1; fi done | ||||
| 
 | ||||
| getdeps: checkdeps checkgopath | ||||
| 	@go get github.com/golang/lint/golint && echo "Installed golint:" | ||||
| 	@go get golang.org/x/tools/cmd/vet && echo "Installed vet:" | ||||
| 	@go get github.com/fzipp/gocyclo && echo "Installed gocyclo:" | ||||
| 	@go get -u github.com/golang/lint/golint && echo "Installed golint:" | ||||
| 	@go get -u golang.org/x/tools/cmd/vet && echo "Installed vet:" | ||||
| 	@go get -u github.com/fzipp/gocyclo && echo "Installed gocyclo:" | ||||
| 	@go get -u github.com/remyoudompheng/go-misc/deadcode && echo "Installed deadcode:" | ||||
| 
 | ||||
| verifiers: getdeps vet fmt lint cyclo | ||||
|  | @ -38,8 +38,11 @@ cyclo: | |||
| 	@GO15VENDOREXPERIMENT=1 gocyclo -over 65 *.go | ||||
| 	@GO15VENDOREXPERIMENT=1 gocyclo -over 65 pkg | ||||
| 
 | ||||
| build: getdeps verifiers | ||||
| 	@echo "Installing minio:" #@GO15VENDOREXPERIMENT=1 deadcode | ||||
| build: constants getdeps verifiers | ||||
| 	@echo "Installing minio:" | ||||
| 
 | ||||
| deadcode: | ||||
| 	@GO15VENDOREXPERIMENT=1 deadcode | ||||
| 
 | ||||
| test: build | ||||
| 	@echo "Running all testing:" | ||||
|  | @ -49,13 +52,9 @@ test: build | |||
| gomake-all: build | ||||
| 	@GO15VENDOREXPERIMENT=1 go install github.com/minio/minio | ||||
| 
 | ||||
| release: version | ||||
| 	@echo "Installing minio (new version):" | ||||
| 	@GO15VENDOREXPERIMENT=1 go install github.com/minio/minio | ||||
| 
 | ||||
| version: | ||||
| 	@echo "Generating new version.go" | ||||
| 	@GO15VENDOREXPERIMENT=1 go run buildscripts/genversion.go | ||||
| constants: | ||||
| 	@echo "Generating new build-constants.go" | ||||
| 	@GO15VENDOREXPERIMENT=1 go run buildscripts/gen-constants.go | ||||
| 
 | ||||
| pkg-add: | ||||
| 	@GO15VENDOREXPERIMENT=1 govendor add $(PKG) | ||||
|  | @ -70,6 +69,7 @@ install: gomake-all | |||
| 
 | ||||
| clean: | ||||
| 	@echo "Cleaning up all the generated files:" | ||||
| 	@rm -fv build-constants.go | ||||
| 	@rm -fv cover.out | ||||
| 	@rm -fv minio | ||||
| 	@rm -fv minio.test | ||||
|  |  | |||
|  | @ -0,0 +1,14 @@ | |||
| // --------  DO NOT EDIT --------
 | ||||
| // This file is autogenerated by buildscripts/gen-constants.go during the release process.
 | ||||
| 
 | ||||
| package main | ||||
| 
 | ||||
| const ( | ||||
| 	minioVersion    = "UNOFFICIAL.GOGET" | ||||
| 	minioReleaseTag = "UNOFFICIAL.GOGET" | ||||
| 	minioCommitID   = "UNOFFICIAL.GOGET" | ||||
| ) | ||||
| 
 | ||||
| var ( | ||||
| 	minioShortCommitID = minioCommitID[:] | ||||
| ) | ||||
|  | @ -0,0 +1,109 @@ | |||
| // +build ignore
 | ||||
| 
 | ||||
| /* | ||||
|  * 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" | ||||
| 	"net/http" | ||||
| 	"os" | ||||
| 	"os/exec" | ||||
| 	"strings" | ||||
| 	"text/template" | ||||
| 	"time" | ||||
| ) | ||||
| 
 | ||||
| var constantsTemplate = `// --------  DO NOT EDIT --------
 | ||||
| // This file is autogenerated by buildscripts/gen-constants.go during the release process.
 | ||||
| 
 | ||||
| package main | ||||
| 
 | ||||
| const ( | ||||
| 	minioVersion    = {{if .Version}}"{{.Version}}"{{else}}""{{end}} | ||||
| 	minioReleaseTag = {{if .ReleaseTag}}"{{.ReleaseTag}}"{{else}}""{{end}} | ||||
| 	minioCommitID   = {{if .CommitID}}"{{.CommitID}}"{{else}}""{{end}} | ||||
| ) | ||||
| 
 | ||||
| var ( | ||||
| 	minioShortCommitID = minioCommitID[:12] | ||||
| ) | ||||
| ` | ||||
| 
 | ||||
| // genConstants generates ‘build-constants.go’.
 | ||||
| func genConstants(version string) { | ||||
| 	t := template.Must(template.New("constants").Parse(constantsTemplate)) | ||||
| 	constantsFile, e := os.OpenFile("build-constants.go", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) | ||||
| 	if e != nil { | ||||
| 		fmt.Printf("gen-constants: Unable to create ‘build-constants.go’. Error: %s.\n", e) | ||||
| 		os.Exit(1) | ||||
| 	} | ||||
| 	defer constantsFile.Close() | ||||
| 
 | ||||
| 	e = t.Execute(constantsFile, struct { | ||||
| 		Version    string | ||||
| 		ReleaseTag string | ||||
| 		CommitID   string | ||||
| 	}{version, releaseTag(version), commitID()}) | ||||
| 
 | ||||
| 	if e != nil { | ||||
| 		fmt.Printf("gen-constants: Unable to generate ‘build-constants.go’. Error: %s.\n", e) | ||||
| 		os.Exit(1) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| // genReleaseTag prints release tag to the console for easy git tagging.
 | ||||
| func releaseTag(version string) string { | ||||
| 	relPrefix := "UNOFFICIAL" | ||||
| 	if prefix := os.Getenv("MINIO_RELEASE"); prefix != "" { | ||||
| 		relPrefix = prefix | ||||
| 	} | ||||
| 
 | ||||
| 	relTag := strings.Replace(version, " ", "-", -1) | ||||
| 	relTag = strings.Replace(relTag, ":", "-", -1) | ||||
| 	relTag = strings.Replace(relTag, ",", "", -1) | ||||
| 	return relPrefix + "." + relTag | ||||
| } | ||||
| 
 | ||||
| // commitID returns the abbreviated commit-id hash of the last commit.
 | ||||
| func commitID() string { | ||||
| 	// git log --format="%h" -n1
 | ||||
| 	var ( | ||||
| 		commit []byte | ||||
| 		e      error | ||||
| 	) | ||||
| 	cmdName := "git" | ||||
| 	cmdArgs := []string{"log", "--format=%H", "-n1"} | ||||
| 	if commit, e = exec.Command(cmdName, cmdArgs...).Output(); e != nil { | ||||
| 		fmt.Fprintln(os.Stderr, "Error generating git commit-id: ", e) | ||||
| 		os.Exit(1) | ||||
| 	} | ||||
| 
 | ||||
| 	return strings.TrimSpace(string(commit)) | ||||
| } | ||||
| 
 | ||||
| func main() { | ||||
| 	// Version is in HTTP TimeFormat.
 | ||||
| 	version := time.Now().UTC().Format(http.TimeFormat) | ||||
| 
 | ||||
| 	// generate ‘build-constants.go’ file.
 | ||||
| 	genConstants(version) | ||||
| 
 | ||||
| 	fmt.Println("Version: \"" + version + "\"") | ||||
| 	fmt.Println("Release-Tag: " + releaseTag(version)) | ||||
| 	fmt.Println("Commit-ID: " + commitID()) | ||||
| } | ||||
|  | @ -1,77 +0,0 @@ | |||
| // +build ignore
 | ||||
| 
 | ||||
| /* | ||||
|  * 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" | ||||
| 	"net/http" | ||||
| 	"os" | ||||
| 	"strings" | ||||
| 	"text/template" | ||||
| 	"time" | ||||
| ) | ||||
| 
 | ||||
| var versionTemplate = `// --------  DO NOT EDIT --------
 | ||||
| // This file is autogenerated by genversion.go during the release process.
 | ||||
| 
 | ||||
| package main | ||||
| 
 | ||||
| const minioVersion = {{if .Version}}"{{.Version}}"{{else}}""{{end}} | ||||
| const minioReleaseTag = {{if .ReleaseTag}}"{{.ReleaseTag}}"{{else}}""{{end}} | ||||
| ` | ||||
| 
 | ||||
| // genVersion generates ‘version.go’.
 | ||||
| func genVersion(version string) { | ||||
| 	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 { | ||||
| 		fmt.Printf("genversion: Unable to generate ‘version.go’. Error: %s.\n", err) | ||||
| 		os.Exit(1) | ||||
| 	} | ||||
| 	defer versionFile.Close() | ||||
| 
 | ||||
| 	err = t.Execute(versionFile, struct { | ||||
| 		Version    string | ||||
| 		ReleaseTag string | ||||
| 	}{version, genReleaseTag(version)}) | ||||
| 
 | ||||
| 	if err != nil { | ||||
| 		fmt.Printf("genversion: Unable to generate ‘version.go’. Error: %s.\n", err) | ||||
| 		os.Exit(1) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| // genReleaseTag prints release tag to the console for easy git tagging.
 | ||||
| func genReleaseTag(version string) string { | ||||
| 	relTag := strings.Replace(version, " ", "-", -1) | ||||
| 	relTag = strings.Replace(relTag, ":", "-", -1) | ||||
| 	relTag = strings.Replace(relTag, ",", "", -1) | ||||
| 	return "RELEASE." + relTag | ||||
| } | ||||
| 
 | ||||
| func main() { | ||||
| 	// Version is in HTTP TimeFormat.
 | ||||
| 	version := time.Now().UTC().Format(http.TimeFormat) | ||||
| 
 | ||||
| 	// generate ‘version.go’ file.
 | ||||
| 	genVersion(version) | ||||
| 
 | ||||
| 	fmt.Println("Version: \"" + version + "\"") | ||||
| 	fmt.Println("Release-Tag: " + genReleaseTag(version)) | ||||
| } | ||||
|  | @ -20,7 +20,7 @@ import "github.com/minio/cli" | |||
| 
 | ||||
| var versionCmd = cli.Command{ | ||||
| 	Name:   "version", | ||||
| 	Usage:  "Print version", | ||||
| 	Usage:  "Print version.", | ||||
| 	Action: mainVersion, | ||||
| 	CustomHelpTemplate: `NAME: | ||||
|    minio {{.Name}} - {{.Usage}} | ||||
|  | @ -33,4 +33,5 @@ USAGE: | |||
| func mainVersion(ctxx *cli.Context) { | ||||
| 	Println("Version: " + minioVersion) | ||||
| 	Println("Release-Tag: " + minioReleaseTag) | ||||
| 	Println("Commit-ID: " + minioCommitID) | ||||
| } | ||||
|  |  | |||
|  | @ -1,7 +0,0 @@ | |||
| // --------  DO NOT EDIT --------
 | ||||
| // This file is autogenerated by genversion.go during the release process.
 | ||||
| 
 | ||||
| package main | ||||
| 
 | ||||
| const minioVersion = "Sun, 11 Oct 2015 06:14:24 GMT" | ||||
| const minioReleaseTag = "RELEASE.Sun-11-Oct-2015-06-14-24-GMT" | ||||
		Loading…
	
		Reference in New Issue