| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | // +build ignore
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | package main | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"bytes" | 
					
						
							|  |  |  | 	"crypto/md5" | 
					
						
							| 
									
										
										
										
											2017-02-24 03:48:31 +08:00
										 |  |  | 	"crypto/sha256" | 
					
						
							| 
									
										
										
										
											2015-03-04 23:23:21 +08:00
										 |  |  | 	"encoding/json" | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | 	"flag" | 
					
						
							|  |  |  | 	"fmt" | 
					
						
							|  |  |  | 	"io" | 
					
						
							| 
									
										
										
										
											2015-03-02 19:56:40 +08:00
										 |  |  | 	"io/ioutil" | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | 	"log" | 
					
						
							|  |  |  | 	"os" | 
					
						
							|  |  |  | 	"os/exec" | 
					
						
							| 
									
										
										
										
											2017-03-21 17:35:18 +08:00
										 |  |  | 	"path" | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | 	"path/filepath" | 
					
						
							|  |  |  | 	"runtime" | 
					
						
							|  |  |  | 	"strconv" | 
					
						
							|  |  |  | 	"strings" | 
					
						
							|  |  |  | 	"time" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-22 16:50:00 +08:00
										 |  |  | const ( | 
					
						
							|  |  |  | 	windows = "windows" | 
					
						
							|  |  |  | 	linux   = "linux" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | var ( | 
					
						
							| 
									
										
										
										
											2018-04-25 00:42:27 +08:00
										 |  |  | 	//versionRe = regexp.MustCompile(`-[0-9]{1,3}-g[0-9a-f]{5,10}`)
 | 
					
						
							|  |  |  | 	goarch  string | 
					
						
							|  |  |  | 	goos    string | 
					
						
							|  |  |  | 	gocc    string | 
					
						
							| 
									
										
										
										
											2018-05-08 15:42:20 +08:00
										 |  |  | 	cgo     bool | 
					
						
							| 
									
										
										
										
											2018-04-25 00:42:27 +08:00
										 |  |  | 	pkgArch string | 
					
						
							|  |  |  | 	version string = "v1" | 
					
						
							| 
									
										
										
										
											2015-04-22 00:46:44 +08:00
										 |  |  | 	// deb & rpm does not support semver so have to handle their version a little differently
 | 
					
						
							|  |  |  | 	linuxPackageVersion   string = "v1" | 
					
						
							|  |  |  | 	linuxPackageIteration string = "" | 
					
						
							|  |  |  | 	race                  bool | 
					
						
							| 
									
										
										
										
											2016-09-18 18:07:12 +08:00
										 |  |  | 	phjsToRelease         string | 
					
						
							| 
									
										
										
										
											2015-04-22 00:46:44 +08:00
										 |  |  | 	workingDir            string | 
					
						
							| 
									
										
										
										
											2018-11-05 22:05:12 +08:00
										 |  |  | 	includeBuildId        bool     = true | 
					
						
							|  |  |  | 	buildId               string   = "0" | 
					
						
							| 
									
										
										
										
											2016-02-15 22:22:03 +08:00
										 |  |  | 	binaries              []string = []string{"grafana-server", "grafana-cli"} | 
					
						
							| 
									
										
										
										
											2018-04-18 17:24:29 +08:00
										 |  |  | 	isDev                 bool     = false | 
					
						
							| 
									
										
										
										
											2018-04-27 19:41:58 +08:00
										 |  |  | 	enterprise            bool     = false | 
					
						
							| 
									
										
										
										
											2019-01-18 18:36:04 +08:00
										 |  |  | 	skipRpmGen            bool     = false | 
					
						
							|  |  |  | 	skipDebGen            bool     = false | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func main() { | 
					
						
							|  |  |  | 	log.SetOutput(os.Stdout) | 
					
						
							|  |  |  | 	log.SetFlags(0) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-02 19:56:40 +08:00
										 |  |  | 	ensureGoPath() | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-05 22:05:12 +08:00
										 |  |  | 	var buildIdRaw string | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | 	flag.StringVar(&goarch, "goarch", runtime.GOARCH, "GOARCH") | 
					
						
							|  |  |  | 	flag.StringVar(&goos, "goos", runtime.GOOS, "GOOS") | 
					
						
							| 
									
										
										
										
											2016-09-18 18:07:12 +08:00
										 |  |  | 	flag.StringVar(&gocc, "cc", "", "CC") | 
					
						
							| 
									
										
										
										
											2018-05-08 15:42:20 +08:00
										 |  |  | 	flag.BoolVar(&cgo, "cgo-enabled", cgo, "Enable cgo") | 
					
						
							| 
									
										
										
										
											2016-09-18 18:07:12 +08:00
										 |  |  | 	flag.StringVar(&pkgArch, "pkg-arch", "", "PKG ARCH") | 
					
						
							|  |  |  | 	flag.StringVar(&phjsToRelease, "phjs", "", "PhantomJS binary") | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | 	flag.BoolVar(&race, "race", race, "Use race detector") | 
					
						
							| 
									
										
										
										
											2018-11-05 22:05:12 +08:00
										 |  |  | 	flag.BoolVar(&includeBuildId, "includeBuildId", includeBuildId, "IncludeBuildId in package name") | 
					
						
							| 
									
										
										
										
											2018-04-27 19:41:58 +08:00
										 |  |  | 	flag.BoolVar(&enterprise, "enterprise", enterprise, "Build enterprise version of Grafana") | 
					
						
							| 
									
										
										
										
											2018-11-05 22:05:12 +08:00
										 |  |  | 	flag.StringVar(&buildIdRaw, "buildId", "0", "Build ID from CI system") | 
					
						
							| 
									
										
										
										
											2018-04-18 17:24:29 +08:00
										 |  |  | 	flag.BoolVar(&isDev, "dev", isDev, "optimal for development, skips certain steps") | 
					
						
							| 
									
										
										
										
											2019-01-18 18:36:04 +08:00
										 |  |  | 	flag.BoolVar(&skipRpmGen, "skipRpm", skipRpmGen, "skip rpm package generation (default: false)") | 
					
						
							|  |  |  | 	flag.BoolVar(&skipDebGen, "skipDeb", skipDebGen, "skip deb package generation (default: false)") | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | 	flag.Parse() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-05 22:05:12 +08:00
										 |  |  | 	buildId = shortenBuildId(buildIdRaw) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-30 22:21:39 +08:00
										 |  |  | 	readVersionFromPackageJson() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-21 15:33:48 +08:00
										 |  |  | 	if pkgArch == "" { | 
					
						
							|  |  |  | 		pkgArch = goarch | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-30 22:21:39 +08:00
										 |  |  | 	log.Printf("Version: %s, Linux Version: %s, Package Iteration: %s\n", version, linuxPackageVersion, linuxPackageIteration) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | 	if flag.NArg() == 0 { | 
					
						
							|  |  |  | 		log.Println("Usage: go run build.go build") | 
					
						
							|  |  |  | 		return | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-28 20:10:09 +08:00
										 |  |  | 	workingDir, _ = os.Getwd() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | 	for _, cmd := range flag.Args() { | 
					
						
							|  |  |  | 		switch cmd { | 
					
						
							|  |  |  | 		case "setup": | 
					
						
							|  |  |  | 			setup() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-02 18:22:51 +08:00
										 |  |  | 		case "build-srv": | 
					
						
							|  |  |  | 			clean() | 
					
						
							|  |  |  | 			build("grafana-server", "./pkg/cmd/grafana-server", []string{}) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-25 21:42:19 +08:00
										 |  |  | 		case "build-cli": | 
					
						
							|  |  |  | 			clean() | 
					
						
							|  |  |  | 			build("grafana-cli", "./pkg/cmd/grafana-cli", []string{}) | 
					
						
							| 
									
										
										
										
											2016-12-09 22:25:02 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-07 06:59:45 +08:00
										 |  |  | 		case "build-server": | 
					
						
							|  |  |  | 			clean() | 
					
						
							|  |  |  | 			build("grafana-server", "./pkg/cmd/grafana-server", []string{}) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | 		case "build": | 
					
						
							| 
									
										
										
										
											2018-05-08 15:42:20 +08:00
										 |  |  | 			//clean()
 | 
					
						
							| 
									
										
										
										
											2016-02-15 22:22:03 +08:00
										 |  |  | 			for _, binary := range binaries { | 
					
						
							|  |  |  | 				build(binary, "./pkg/cmd/"+binary, []string{}) | 
					
						
							|  |  |  | 			} | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-08 15:42:20 +08:00
										 |  |  | 		case "build-frontend": | 
					
						
							|  |  |  | 			grunt(gruntBuildArg("build")...) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | 		case "test": | 
					
						
							| 
									
										
										
										
											2015-01-28 20:10:09 +08:00
										 |  |  | 			test("./pkg/...") | 
					
						
							| 
									
										
										
										
											2015-03-04 21:48:21 +08:00
										 |  |  | 			grunt("test") | 
					
						
							| 
									
										
										
										
											2015-01-28 20:10:09 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		case "package": | 
					
						
							| 
									
										
										
										
											2018-05-08 15:42:20 +08:00
										 |  |  | 			grunt(gruntBuildArg("build")...) | 
					
						
							| 
									
										
										
										
											2018-08-21 15:33:48 +08:00
										 |  |  | 			grunt(gruntBuildArg("package")...) | 
					
						
							| 
									
										
										
										
											2018-09-22 16:50:00 +08:00
										 |  |  | 			if goos == linux { | 
					
						
							| 
									
										
										
										
											2018-08-21 15:33:48 +08:00
										 |  |  | 				createLinuxPackages() | 
					
						
							|  |  |  | 			} | 
					
						
							| 
									
										
										
										
											2018-05-08 15:42:20 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		case "package-only": | 
					
						
							| 
									
										
										
										
											2018-08-21 15:33:48 +08:00
										 |  |  | 			grunt(gruntBuildArg("package")...) | 
					
						
							| 
									
										
										
										
											2018-09-22 16:50:00 +08:00
										 |  |  | 			if goos == linux { | 
					
						
							| 
									
										
										
										
											2018-08-21 15:33:48 +08:00
										 |  |  | 				createLinuxPackages() | 
					
						
							|  |  |  | 			} | 
					
						
							| 
									
										
										
										
											2018-11-15 21:42:09 +08:00
										 |  |  | 		case "pkg-archive": | 
					
						
							|  |  |  | 			grunt(gruntBuildArg("package")...) | 
					
						
							| 
									
										
										
										
											2018-08-21 15:33:48 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-05 05:36:38 +08:00
										 |  |  | 		case "pkg-rpm": | 
					
						
							| 
									
										
										
										
											2016-09-18 18:07:12 +08:00
										 |  |  | 			grunt(gruntBuildArg("release")...) | 
					
						
							| 
									
										
										
										
											2015-12-05 05:36:38 +08:00
										 |  |  | 			createRpmPackages() | 
					
						
							| 
									
										
										
										
											2015-12-05 05:55:23 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-05 05:36:38 +08:00
										 |  |  | 		case "pkg-deb": | 
					
						
							| 
									
										
										
										
											2016-09-18 18:07:12 +08:00
										 |  |  | 			grunt(gruntBuildArg("release")...) | 
					
						
							| 
									
										
										
										
											2015-12-05 05:36:38 +08:00
										 |  |  | 			createDebPackages() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-24 03:48:31 +08:00
										 |  |  | 		case "sha-dist": | 
					
						
							|  |  |  | 			shaFilesInDist() | 
					
						
							| 
									
										
										
										
											2016-10-18 16:54:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-04 23:23:21 +08:00
										 |  |  | 		case "latest": | 
					
						
							|  |  |  | 			makeLatestDistCopies() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | 		case "clean": | 
					
						
							| 
									
										
										
										
											2015-03-03 01:26:43 +08:00
										 |  |  | 			clean() | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		default: | 
					
						
							|  |  |  | 			log.Fatalf("Unknown command %q", cmd) | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-04 23:23:21 +08:00
										 |  |  | func makeLatestDistCopies() { | 
					
						
							| 
									
										
										
										
											2017-02-28 16:09:49 +08:00
										 |  |  | 	files, err := ioutil.ReadDir("dist") | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		log.Fatalf("failed to create latest copies. Cannot read from /dist") | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-21 17:35:18 +08:00
										 |  |  | 	latestMapping := map[string]string{ | 
					
						
							| 
									
										
										
										
											2018-05-28 16:39:42 +08:00
										 |  |  | 		"_amd64.deb":          "dist/grafana_latest_amd64.deb", | 
					
						
							|  |  |  | 		".x86_64.rpm":         "dist/grafana-latest-1.x86_64.rpm", | 
					
						
							| 
									
										
										
										
											2018-05-08 15:42:20 +08:00
										 |  |  | 		".linux-amd64.tar.gz": "dist/grafana-latest.linux-x64.tar.gz", | 
					
						
							| 
									
										
										
										
											2018-12-21 05:48:53 +08:00
										 |  |  | 		".linux-armv7.tar.gz": "dist/grafana-latest.linux-armv7.tar.gz", | 
					
						
							| 
									
										
										
										
											2019-01-11 22:55:22 +08:00
										 |  |  | 		".linux-armv6.tar.gz": "dist/grafana-latest.linux-armv6.tar.gz", | 
					
						
							| 
									
										
										
										
											2018-12-21 05:48:53 +08:00
										 |  |  | 		".linux-arm64.tar.gz": "dist/grafana-latest.linux-arm64.tar.gz", | 
					
						
							| 
									
										
										
										
											2015-10-17 00:26:30 +08:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-28 16:09:49 +08:00
										 |  |  | 	for _, file := range files { | 
					
						
							|  |  |  | 		for extension, fullName := range latestMapping { | 
					
						
							|  |  |  | 			if strings.HasSuffix(file.Name(), extension) { | 
					
						
							|  |  |  | 				runError("cp", path.Join("dist", file.Name()), fullName) | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-03-04 23:23:21 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-03 00:21:52 +08:00
										 |  |  | func readVersionFromPackageJson() { | 
					
						
							| 
									
										
										
										
											2015-03-04 23:23:21 +08:00
										 |  |  | 	reader, err := os.Open("package.json") | 
					
						
							| 
									
										
										
										
											2015-03-03 00:21:52 +08:00
										 |  |  | 	if err != nil { | 
					
						
							| 
									
										
										
										
											2015-03-04 23:23:21 +08:00
										 |  |  | 		log.Fatal("Failed to open package.json") | 
					
						
							|  |  |  | 		return | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	defer reader.Close() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	jsonObj := map[string]interface{}{} | 
					
						
							|  |  |  | 	jsonParser := json.NewDecoder(reader) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if err := jsonParser.Decode(&jsonObj); err != nil { | 
					
						
							|  |  |  | 		log.Fatal("Failed to decode package.json") | 
					
						
							| 
									
										
										
										
											2015-03-03 00:21:52 +08:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-03-04 23:23:21 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	version = jsonObj["version"].(string) | 
					
						
							| 
									
										
										
										
											2015-04-22 00:46:44 +08:00
										 |  |  | 	linuxPackageVersion = version | 
					
						
							|  |  |  | 	linuxPackageIteration = "" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// handle pre version stuff (deb / rpm does not support semver)
 | 
					
						
							| 
									
										
										
										
											2015-04-22 14:56:14 +08:00
										 |  |  | 	parts := strings.Split(version, "-") | 
					
						
							| 
									
										
										
										
											2015-04-22 00:46:44 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-22 14:56:14 +08:00
										 |  |  | 	if len(parts) > 1 { | 
					
						
							|  |  |  | 		linuxPackageVersion = parts[0] | 
					
						
							|  |  |  | 		linuxPackageIteration = parts[1] | 
					
						
							| 
									
										
										
										
											2015-04-22 00:46:44 +08:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2016-05-11 19:20:01 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// add timestamp to iteration
 | 
					
						
							| 
									
										
										
										
											2018-11-05 22:05:12 +08:00
										 |  |  | 	if includeBuildId { | 
					
						
							|  |  |  | 		if buildId != "0" { | 
					
						
							|  |  |  | 			linuxPackageIteration = fmt.Sprintf("%s%s", buildId, linuxPackageIteration) | 
					
						
							| 
									
										
										
										
											2017-02-02 22:55:37 +08:00
										 |  |  | 		} else { | 
					
						
							|  |  |  | 			linuxPackageIteration = fmt.Sprintf("%d%s", time.Now().Unix(), linuxPackageIteration) | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2017-01-30 22:21:39 +08:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-03-03 00:21:52 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-10 22:20:01 +08:00
										 |  |  | type linuxPackageOptions struct { | 
					
						
							|  |  |  | 	packageType            string | 
					
						
							|  |  |  | 	homeDir                string | 
					
						
							| 
									
										
										
										
											2016-02-15 22:22:03 +08:00
										 |  |  | 	binPath                string | 
					
						
							| 
									
										
										
										
											2016-02-15 21:58:16 +08:00
										 |  |  | 	serverBinPath          string | 
					
						
							|  |  |  | 	cliBinPath             string | 
					
						
							| 
									
										
										
										
											2015-04-10 22:20:01 +08:00
										 |  |  | 	configDir              string | 
					
						
							| 
									
										
										
										
											2015-07-15 16:08:23 +08:00
										 |  |  | 	ldapFilePath           string | 
					
						
							| 
									
										
										
										
											2015-04-10 22:20:01 +08:00
										 |  |  | 	etcDefaultPath         string | 
					
						
							|  |  |  | 	etcDefaultFilePath     string | 
					
						
							|  |  |  | 	initdScriptFilePath    string | 
					
						
							|  |  |  | 	systemdServiceFilePath string | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	postinstSrc    string | 
					
						
							|  |  |  | 	initdScriptSrc string | 
					
						
							|  |  |  | 	defaultFileSrc string | 
					
						
							|  |  |  | 	systemdFileSrc string | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	depends []string | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2015-04-08 22:58:05 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-05 05:36:38 +08:00
										 |  |  | func createDebPackages() { | 
					
						
							| 
									
										
										
										
											2018-05-24 05:53:59 +08:00
										 |  |  | 	previousPkgArch := pkgArch | 
					
						
							|  |  |  | 	if pkgArch == "armv7" { | 
					
						
							|  |  |  | 		pkgArch = "armhf" | 
					
						
							| 
									
										
										
										
											2019-01-11 22:55:22 +08:00
										 |  |  | 	} else if pkgArch == "armv6" { | 
					
						
							|  |  |  | 		pkgArch = "armel" | 
					
						
							| 
									
										
										
										
											2018-05-28 16:39:42 +08:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-04-10 22:20:01 +08:00
										 |  |  | 	createPackage(linuxPackageOptions{ | 
					
						
							|  |  |  | 		packageType:            "deb", | 
					
						
							|  |  |  | 		homeDir:                "/usr/share/grafana", | 
					
						
							| 
									
										
										
										
											2016-02-15 22:22:03 +08:00
										 |  |  | 		binPath:                "/usr/sbin", | 
					
						
							| 
									
										
										
										
											2015-04-10 22:20:01 +08:00
										 |  |  | 		configDir:              "/etc/grafana", | 
					
						
							|  |  |  | 		etcDefaultPath:         "/etc/default", | 
					
						
							|  |  |  | 		etcDefaultFilePath:     "/etc/default/grafana-server", | 
					
						
							|  |  |  | 		initdScriptFilePath:    "/etc/init.d/grafana-server", | 
					
						
							|  |  |  | 		systemdServiceFilePath: "/usr/lib/systemd/system/grafana-server.service", | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		postinstSrc:    "packaging/deb/control/postinst", | 
					
						
							|  |  |  | 		initdScriptSrc: "packaging/deb/init.d/grafana-server", | 
					
						
							|  |  |  | 		defaultFileSrc: "packaging/deb/default/grafana-server", | 
					
						
							|  |  |  | 		systemdFileSrc: "packaging/deb/systemd/grafana-server.service", | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		depends: []string{"adduser", "libfontconfig"}, | 
					
						
							|  |  |  | 	}) | 
					
						
							| 
									
										
										
										
											2018-05-24 05:53:59 +08:00
										 |  |  | 	pkgArch = previousPkgArch | 
					
						
							| 
									
										
										
										
											2015-12-05 05:36:38 +08:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2015-04-10 22:20:01 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-05 05:36:38 +08:00
										 |  |  | func createRpmPackages() { | 
					
						
							| 
									
										
										
										
											2018-05-24 05:53:59 +08:00
										 |  |  | 	previousPkgArch := pkgArch | 
					
						
							|  |  |  | 	switch { | 
					
						
							| 
									
										
										
										
											2018-05-28 16:39:42 +08:00
										 |  |  | 	case pkgArch == "armv7": | 
					
						
							|  |  |  | 		pkgArch = "armhfp" | 
					
						
							|  |  |  | 	case pkgArch == "arm64": | 
					
						
							|  |  |  | 		pkgArch = "aarch64" | 
					
						
							| 
									
										
										
										
											2018-05-24 05:53:59 +08:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-04-10 22:20:01 +08:00
										 |  |  | 	createPackage(linuxPackageOptions{ | 
					
						
							|  |  |  | 		packageType:            "rpm", | 
					
						
							|  |  |  | 		homeDir:                "/usr/share/grafana", | 
					
						
							| 
									
										
										
										
											2016-02-15 22:22:03 +08:00
										 |  |  | 		binPath:                "/usr/sbin", | 
					
						
							| 
									
										
										
										
											2015-04-10 22:20:01 +08:00
										 |  |  | 		configDir:              "/etc/grafana", | 
					
						
							|  |  |  | 		etcDefaultPath:         "/etc/sysconfig", | 
					
						
							|  |  |  | 		etcDefaultFilePath:     "/etc/sysconfig/grafana-server", | 
					
						
							|  |  |  | 		initdScriptFilePath:    "/etc/init.d/grafana-server", | 
					
						
							|  |  |  | 		systemdServiceFilePath: "/usr/lib/systemd/system/grafana-server.service", | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		postinstSrc:    "packaging/rpm/control/postinst", | 
					
						
							|  |  |  | 		initdScriptSrc: "packaging/rpm/init.d/grafana-server", | 
					
						
							|  |  |  | 		defaultFileSrc: "packaging/rpm/sysconfig/grafana-server", | 
					
						
							|  |  |  | 		systemdFileSrc: "packaging/rpm/systemd/grafana-server.service", | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-23 19:53:03 +08:00
										 |  |  | 		depends: []string{"/sbin/service", "fontconfig", "freetype", "urw-fonts"}, | 
					
						
							| 
									
										
										
										
											2015-04-10 22:20:01 +08:00
										 |  |  | 	}) | 
					
						
							| 
									
										
										
										
											2018-05-24 05:53:59 +08:00
										 |  |  | 	pkgArch = previousPkgArch | 
					
						
							| 
									
										
										
										
											2015-04-10 22:20:01 +08:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2015-04-08 22:58:05 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-05 05:36:38 +08:00
										 |  |  | func createLinuxPackages() { | 
					
						
							| 
									
										
										
										
											2019-01-18 18:36:04 +08:00
										 |  |  | 	if !skipDebGen { | 
					
						
							|  |  |  | 		createDebPackages() | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if !skipRpmGen { | 
					
						
							|  |  |  | 		createRpmPackages() | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-12-05 05:36:38 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-10 22:20:01 +08:00
										 |  |  | func createPackage(options linuxPackageOptions) { | 
					
						
							|  |  |  | 	packageRoot, _ := ioutil.TempDir("", "grafana-linux-pack") | 
					
						
							| 
									
										
										
										
											2015-03-02 19:56:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-09 23:18:04 +08:00
										 |  |  | 	// create directories
 | 
					
						
							| 
									
										
										
										
											2015-04-10 22:20:01 +08:00
										 |  |  | 	runPrint("mkdir", "-p", filepath.Join(packageRoot, options.homeDir)) | 
					
						
							|  |  |  | 	runPrint("mkdir", "-p", filepath.Join(packageRoot, options.configDir)) | 
					
						
							| 
									
										
										
										
											2015-04-10 16:58:32 +08:00
										 |  |  | 	runPrint("mkdir", "-p", filepath.Join(packageRoot, "/etc/init.d")) | 
					
						
							| 
									
										
										
										
											2015-04-10 22:20:01 +08:00
										 |  |  | 	runPrint("mkdir", "-p", filepath.Join(packageRoot, options.etcDefaultPath)) | 
					
						
							| 
									
										
										
										
											2015-04-10 16:58:32 +08:00
										 |  |  | 	runPrint("mkdir", "-p", filepath.Join(packageRoot, "/usr/lib/systemd/system")) | 
					
						
							|  |  |  | 	runPrint("mkdir", "-p", filepath.Join(packageRoot, "/usr/sbin")) | 
					
						
							| 
									
										
										
										
											2015-03-02 19:56:40 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-09 23:18:04 +08:00
										 |  |  | 	// copy binary
 | 
					
						
							| 
									
										
										
										
											2016-02-15 22:22:03 +08:00
										 |  |  | 	for _, binary := range binaries { | 
					
						
							|  |  |  | 		runPrint("cp", "-p", filepath.Join(workingDir, "tmp/bin/"+binary), filepath.Join(packageRoot, "/usr/sbin/"+binary)) | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-04-08 20:10:04 +08:00
										 |  |  | 	// copy init.d script
 | 
					
						
							| 
									
										
										
										
											2015-04-10 22:20:01 +08:00
										 |  |  | 	runPrint("cp", "-p", options.initdScriptSrc, filepath.Join(packageRoot, options.initdScriptFilePath)) | 
					
						
							| 
									
										
										
										
											2015-04-09 23:18:04 +08:00
										 |  |  | 	// copy environment var file
 | 
					
						
							| 
									
										
										
										
											2015-04-10 22:20:01 +08:00
										 |  |  | 	runPrint("cp", "-p", options.defaultFileSrc, filepath.Join(packageRoot, options.etcDefaultFilePath)) | 
					
						
							| 
									
										
										
										
											2015-04-08 22:58:05 +08:00
										 |  |  | 	// copy systemd file
 | 
					
						
							| 
									
										
										
										
											2015-04-10 22:20:01 +08:00
										 |  |  | 	runPrint("cp", "-p", options.systemdFileSrc, filepath.Join(packageRoot, options.systemdServiceFilePath)) | 
					
						
							| 
									
										
										
										
											2015-04-08 20:10:04 +08:00
										 |  |  | 	// copy release files
 | 
					
						
							| 
									
										
										
										
											2015-04-10 22:20:01 +08:00
										 |  |  | 	runPrint("cp", "-a", filepath.Join(workingDir, "tmp")+"/.", filepath.Join(packageRoot, options.homeDir)) | 
					
						
							| 
									
										
										
										
											2015-04-15 21:41:56 +08:00
										 |  |  | 	// remove bin path
 | 
					
						
							|  |  |  | 	runPrint("rm", "-rf", filepath.Join(packageRoot, options.homeDir, "bin")) | 
					
						
							| 
									
										
										
										
											2015-03-02 19:56:40 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	args := []string{ | 
					
						
							|  |  |  | 		"-s", "dir", | 
					
						
							|  |  |  | 		"--description", "Grafana", | 
					
						
							|  |  |  | 		"-C", packageRoot, | 
					
						
							| 
									
										
										
										
											2017-03-21 22:37:55 +08:00
										 |  |  | 		"--url", "https://grafana.com", | 
					
						
							|  |  |  | 		"--maintainer", "contact@grafana.com", | 
					
						
							| 
									
										
										
										
											2015-04-10 22:20:01 +08:00
										 |  |  | 		"--config-files", options.initdScriptFilePath, | 
					
						
							|  |  |  | 		"--config-files", options.etcDefaultFilePath, | 
					
						
							|  |  |  | 		"--config-files", options.systemdServiceFilePath, | 
					
						
							|  |  |  | 		"--after-install", options.postinstSrc, | 
					
						
							| 
									
										
										
										
											2018-04-27 19:41:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-22 00:46:44 +08:00
										 |  |  | 		"--version", linuxPackageVersion, | 
					
						
							| 
									
										
										
										
											2015-03-02 19:56:40 +08:00
										 |  |  | 		"-p", "./dist", | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-27 19:41:58 +08:00
										 |  |  | 	name := "grafana" | 
					
						
							|  |  |  | 	if enterprise { | 
					
						
							|  |  |  | 		name += "-enterprise" | 
					
						
							| 
									
										
										
										
											2018-07-18 21:40:30 +08:00
										 |  |  | 		args = append(args, "--replaces", "grafana") | 
					
						
							| 
									
										
										
										
											2018-04-27 19:41:58 +08:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	args = append(args, "--name", name) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	description := "Grafana" | 
					
						
							|  |  |  | 	if enterprise { | 
					
						
							|  |  |  | 		description += " Enterprise" | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	args = append(args, "--vendor", description) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if !enterprise { | 
					
						
							|  |  |  | 		args = append(args, "--license", "\"Apache 2.0\"") | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-21 17:35:18 +08:00
										 |  |  | 	if options.packageType == "rpm" { | 
					
						
							|  |  |  | 		args = append(args, "--rpm-posttrans", "packaging/rpm/control/posttrans") | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if options.packageType == "deb" { | 
					
						
							|  |  |  | 		args = append(args, "--deb-no-default-config-files") | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-18 18:07:12 +08:00
										 |  |  | 	if pkgArch != "" { | 
					
						
							|  |  |  | 		args = append(args, "-a", pkgArch) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-22 00:46:44 +08:00
										 |  |  | 	if linuxPackageIteration != "" { | 
					
						
							|  |  |  | 		args = append(args, "--iteration", linuxPackageIteration) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-10 22:20:01 +08:00
										 |  |  | 	// add dependenciesj
 | 
					
						
							|  |  |  | 	for _, dep := range options.depends { | 
					
						
							|  |  |  | 		args = append(args, "--depends", dep) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	args = append(args, ".") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	fmt.Println("Creating package: ", options.packageType) | 
					
						
							|  |  |  | 	runPrint("fpm", append([]string{"-t", options.packageType}, args...)...) | 
					
						
							| 
									
										
										
										
											2015-03-02 19:56:40 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func ensureGoPath() { | 
					
						
							|  |  |  | 	if os.Getenv("GOPATH") == "" { | 
					
						
							|  |  |  | 		cwd, err := os.Getwd() | 
					
						
							|  |  |  | 		if err != nil { | 
					
						
							|  |  |  | 			log.Fatal(err) | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		gopath := filepath.Clean(filepath.Join(cwd, "../../../../")) | 
					
						
							|  |  |  | 		log.Println("GOPATH is", gopath) | 
					
						
							|  |  |  | 		os.Setenv("GOPATH", gopath) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-04 14:09:59 +08:00
										 |  |  | func grunt(params ...string) { | 
					
						
							| 
									
										
										
										
											2018-09-22 16:50:00 +08:00
										 |  |  | 	if runtime.GOOS == windows { | 
					
						
							| 
									
										
										
										
											2018-01-19 17:25:15 +08:00
										 |  |  | 		runPrint(`.\node_modules\.bin\grunt`, params...) | 
					
						
							|  |  |  | 	} else { | 
					
						
							|  |  |  | 		runPrint("./node_modules/.bin/grunt", params...) | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-01-28 20:10:09 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-18 18:07:12 +08:00
										 |  |  | func gruntBuildArg(task string) []string { | 
					
						
							| 
									
										
										
										
											2017-01-31 00:27:12 +08:00
										 |  |  | 	args := []string{task} | 
					
						
							| 
									
										
										
										
											2018-11-05 22:05:12 +08:00
										 |  |  | 	if includeBuildId { | 
					
						
							| 
									
										
										
										
											2017-03-23 18:09:35 +08:00
										 |  |  | 		args = append(args, fmt.Sprintf("--pkgVer=%v-%v", linuxPackageVersion, linuxPackageIteration)) | 
					
						
							| 
									
										
										
										
											2017-01-30 22:21:39 +08:00
										 |  |  | 	} else { | 
					
						
							| 
									
										
										
										
											2017-02-28 16:09:49 +08:00
										 |  |  | 		args = append(args, fmt.Sprintf("--pkgVer=%v", version)) | 
					
						
							| 
									
										
										
										
											2017-01-30 22:21:39 +08:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2016-09-18 18:07:12 +08:00
										 |  |  | 	if pkgArch != "" { | 
					
						
							|  |  |  | 		args = append(args, fmt.Sprintf("--arch=%v", pkgArch)) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	if phjsToRelease != "" { | 
					
						
							|  |  |  | 		args = append(args, fmt.Sprintf("--phjsToRelease=%v", phjsToRelease)) | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-10-25 22:55:27 +08:00
										 |  |  | 	if enterprise { | 
					
						
							|  |  |  | 		args = append(args, "--enterprise") | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-21 15:33:48 +08:00
										 |  |  | 	args = append(args, fmt.Sprintf("--platform=%v", goos)) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-18 18:07:12 +08:00
										 |  |  | 	return args | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | func setup() { | 
					
						
							| 
									
										
										
										
											2018-01-19 17:25:15 +08:00
										 |  |  | 	runPrint("go", "get", "-v", "github.com/golang/dep") | 
					
						
							| 
									
										
										
										
											2016-09-22 16:33:43 +08:00
										 |  |  | 	runPrint("go", "install", "-v", "./pkg/cmd/grafana-server") | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func test(pkg string) { | 
					
						
							|  |  |  | 	setBuildEnv() | 
					
						
							|  |  |  | 	runPrint("go", "test", "-short", "-timeout", "60s", pkg) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-15 21:09:34 +08:00
										 |  |  | func build(binaryName, pkg string, tags []string) { | 
					
						
							| 
									
										
										
										
											2018-05-08 15:42:20 +08:00
										 |  |  | 	binary := fmt.Sprintf("./bin/%s-%s/%s", goos, goarch, binaryName) | 
					
						
							| 
									
										
										
										
											2018-05-28 16:39:42 +08:00
										 |  |  | 	if isDev { | 
					
						
							| 
									
										
										
										
											2018-09-21 17:51:26 +08:00
										 |  |  | 		//don't include os and arch in output path in dev environment
 | 
					
						
							| 
									
										
										
										
											2018-05-28 16:39:42 +08:00
										 |  |  | 		binary = fmt.Sprintf("./bin/%s", binaryName) | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-05-08 15:42:20 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-22 16:50:00 +08:00
										 |  |  | 	if goos == windows { | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | 		binary += ".exe" | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-18 17:24:29 +08:00
										 |  |  | 	if !isDev { | 
					
						
							|  |  |  | 		rmr(binary, binary+".md5") | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | 	args := []string{"build", "-ldflags", ldflags()} | 
					
						
							|  |  |  | 	if len(tags) > 0 { | 
					
						
							|  |  |  | 		args = append(args, "-tags", strings.Join(tags, ",")) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	if race { | 
					
						
							|  |  |  | 		args = append(args, "-race") | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	args = append(args, "-o", binary) | 
					
						
							|  |  |  | 	args = append(args, pkg) | 
					
						
							| 
									
										
										
										
											2015-12-04 18:21:38 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-18 17:24:29 +08:00
										 |  |  | 	if !isDev { | 
					
						
							|  |  |  | 		setBuildEnv() | 
					
						
							|  |  |  | 		runPrint("go", "version") | 
					
						
							| 
									
										
										
										
											2018-05-08 15:42:20 +08:00
										 |  |  | 		fmt.Printf("Targeting %s/%s\n", goos, goarch) | 
					
						
							| 
									
										
										
										
											2018-04-18 17:24:29 +08:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | 	runPrint("go", args...) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-18 17:24:29 +08:00
										 |  |  | 	if !isDev { | 
					
						
							|  |  |  | 		// Create an md5 checksum of the binary, to be included in the archive for
 | 
					
						
							|  |  |  | 		// automatic upgrades.
 | 
					
						
							|  |  |  | 		err := md5File(binary) | 
					
						
							|  |  |  | 		if err != nil { | 
					
						
							|  |  |  | 			log.Fatal(err) | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func ldflags() string { | 
					
						
							|  |  |  | 	var b bytes.Buffer | 
					
						
							|  |  |  | 	b.WriteString("-w") | 
					
						
							| 
									
										
										
										
											2015-12-01 16:23:30 +08:00
										 |  |  | 	b.WriteString(fmt.Sprintf(" -X main.version=%s", version)) | 
					
						
							|  |  |  | 	b.WriteString(fmt.Sprintf(" -X main.commit=%s", getGitSha())) | 
					
						
							|  |  |  | 	b.WriteString(fmt.Sprintf(" -X main.buildstamp=%d", buildStamp())) | 
					
						
							| 
									
										
										
										
											2018-10-29 20:27:29 +08:00
										 |  |  | 	b.WriteString(fmt.Sprintf(" -X main.buildBranch=%s", getGitBranch())) | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | 	return b.String() | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func rmr(paths ...string) { | 
					
						
							|  |  |  | 	for _, path := range paths { | 
					
						
							|  |  |  | 		log.Println("rm -r", path) | 
					
						
							|  |  |  | 		os.RemoveAll(path) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func clean() { | 
					
						
							| 
									
										
										
										
											2018-04-18 17:24:29 +08:00
										 |  |  | 	if isDev { | 
					
						
							|  |  |  | 		return | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-03 01:26:43 +08:00
										 |  |  | 	rmr("dist") | 
					
						
							|  |  |  | 	rmr("tmp") | 
					
						
							| 
									
										
										
										
											2015-03-03 17:18:24 +08:00
										 |  |  | 	rmr(filepath.Join(os.Getenv("GOPATH"), fmt.Sprintf("pkg/%s_%s/github.com/grafana", goos, goarch))) | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func setBuildEnv() { | 
					
						
							|  |  |  | 	os.Setenv("GOOS", goos) | 
					
						
							| 
									
										
										
										
											2018-09-22 16:50:00 +08:00
										 |  |  | 	if goos == windows { | 
					
						
							| 
									
										
										
										
											2018-05-08 15:42:20 +08:00
										 |  |  | 		// require windows >=7
 | 
					
						
							|  |  |  | 		os.Setenv("CGO_CFLAGS", "-D_WIN32_WINNT=0x0601") | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-09-22 16:50:00 +08:00
										 |  |  | 	if goarch != "amd64" || goos != linux { | 
					
						
							| 
									
										
										
										
											2018-05-08 15:42:20 +08:00
										 |  |  | 		// needed for all other archs
 | 
					
						
							|  |  |  | 		cgo = true | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | 	if strings.HasPrefix(goarch, "armv") { | 
					
						
							|  |  |  | 		os.Setenv("GOARCH", "arm") | 
					
						
							|  |  |  | 		os.Setenv("GOARM", goarch[4:]) | 
					
						
							|  |  |  | 	} else { | 
					
						
							|  |  |  | 		os.Setenv("GOARCH", goarch) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	if goarch == "386" { | 
					
						
							|  |  |  | 		os.Setenv("GO386", "387") | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-05-08 15:42:20 +08:00
										 |  |  | 	if cgo { | 
					
						
							|  |  |  | 		os.Setenv("CGO_ENABLED", "1") | 
					
						
							| 
									
										
										
										
											2016-09-18 18:07:12 +08:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	if gocc != "" { | 
					
						
							|  |  |  | 		os.Setenv("CC", gocc) | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-10-29 20:27:29 +08:00
										 |  |  | func getGitBranch() string { | 
					
						
							|  |  |  | 	v, err := runError("git", "rev-parse", "--abbrev-ref", "HEAD") | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return "master" | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return string(v) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | func getGitSha() string { | 
					
						
							| 
									
										
										
										
											2017-01-30 15:08:37 +08:00
										 |  |  | 	v, err := runError("git", "rev-parse", "--short", "HEAD") | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return "unknown-dev" | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return string(v) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func buildStamp() int64 { | 
					
						
							|  |  |  | 	bs, err := runError("git", "show", "-s", "--format=%ct") | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return time.Now().Unix() | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	s, _ := strconv.ParseInt(string(bs), 10, 64) | 
					
						
							|  |  |  | 	return s | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func runError(cmd string, args ...string) ([]byte, error) { | 
					
						
							|  |  |  | 	ecmd := exec.Command(cmd, args...) | 
					
						
							|  |  |  | 	bs, err := ecmd.CombinedOutput() | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return nil, err | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-03-04 23:23:21 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-05 17:46:58 +08:00
										 |  |  | 	return bytes.TrimSpace(bs), nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func runPrint(cmd string, args ...string) { | 
					
						
							|  |  |  | 	log.Println(cmd, strings.Join(args, " ")) | 
					
						
							|  |  |  | 	ecmd := exec.Command(cmd, args...) | 
					
						
							|  |  |  | 	ecmd.Stdout = os.Stdout | 
					
						
							|  |  |  | 	ecmd.Stderr = os.Stderr | 
					
						
							|  |  |  | 	err := ecmd.Run() | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		log.Fatal(err) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func md5File(file string) error { | 
					
						
							|  |  |  | 	fd, err := os.Open(file) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return err | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	defer fd.Close() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	h := md5.New() | 
					
						
							|  |  |  | 	_, err = io.Copy(h, fd) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return err | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	out, err := os.Create(file + ".md5") | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return err | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	_, err = fmt.Fprintf(out, "%x\n", h.Sum(nil)) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return err | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return out.Close() | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2016-10-06 16:53:24 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-24 03:48:31 +08:00
										 |  |  | func shaFilesInDist() { | 
					
						
							| 
									
										
										
										
											2016-10-06 16:53:24 +08:00
										 |  |  | 	filepath.Walk("./dist", func(path string, f os.FileInfo, err error) error { | 
					
						
							| 
									
										
										
										
											2017-01-27 19:41:05 +08:00
										 |  |  | 		if path == "./dist" { | 
					
						
							| 
									
										
										
										
											2017-01-30 15:08:37 +08:00
										 |  |  | 			return nil | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2017-01-27 19:41:05 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
											  
											
												Simplify comparison to bool constant (gosimple)
This fixes:
build.go:553:6: should omit comparison to bool constant, can be simplified to !strings.Contains(path, ".sha256") (S1002)
pkg/cmd/grafana-cli/commands/ls_command.go:27:5: should omit comparison to bool constant, can be simplified to !pluginDirInfo.IsDir() (S1002)
pkg/components/dynmap/dynmap_test.go:24:5: should omit comparison to bool constant, can be simplified to !value (S1002)
pkg/components/dynmap/dynmap_test.go:122:14: should omit comparison to bool constant, can be simplified to b (S1002)
pkg/components/dynmap/dynmap_test.go:125:14: should omit comparison to bool constant, can be simplified to !b (S1002)
pkg/components/dynmap/dynmap_test.go:128:14: should omit comparison to bool constant, can be simplified to !b (S1002)
pkg/models/org_user.go:51:5: should omit comparison to bool constant, can be simplified to !(*r).IsValid() (S1002)
pkg/plugins/datasource/wrapper/datasource_plugin_wrapper_test.go:77:12: should omit comparison to bool constant, can be simplified to !haveBool (S1002)
pkg/services/alerting/conditions/evaluator.go:23:9: should omit comparison to bool constant, can be simplified to !reducedValue.Valid (S1002)
pkg/services/alerting/conditions/evaluator.go:48:5: should omit comparison to bool constant, can be simplified to !reducedValue.Valid (S1002)
pkg/services/alerting/conditions/evaluator.go:91:5: should omit comparison to bool constant, can be simplified to !reducedValue.Valid (S1002)
pkg/services/alerting/conditions/query.go:56:6: should omit comparison to bool constant, can be simplified to !reducedValue.Valid (S1002)
pkg/services/alerting/extractor.go:107:20: should omit comparison to bool constant, can be simplified to !enabled.MustBool() (S1002)
pkg/services/alerting/notifiers/telegram.go:222:41: should omit comparison to bool constant, can be simplified to this.UploadImage (S1002)
pkg/services/sqlstore/apikey.go:58:12: should omit comparison to bool constant, can be simplified to !has (S1002)
pkg/services/sqlstore/apikey.go:72:12: should omit comparison to bool constant, can be simplified to !has (S1002)
pkg/services/sqlstore/dashboard.go:66:33: should omit comparison to bool constant, can be simplified to !cmd.Overwrite (S1002)
pkg/services/sqlstore/dashboard.go:175:12: should omit comparison to bool constant, can be simplified to !has (S1002)
pkg/services/sqlstore/dashboard.go:311:13: should omit comparison to bool constant, can be simplified to !has (S1002)
pkg/services/sqlstore/dashboard.go:444:12: should omit comparison to bool constant, can be simplified to !exists (S1002)
pkg/services/sqlstore/dashboard.go:472:12: should omit comparison to bool constant, can be simplified to !exists (S1002)
pkg/services/sqlstore/dashboard.go:554:32: should omit comparison to bool constant, can be simplified to !cmd.Overwrite (S1002)
pkg/services/sqlstore/dashboard_snapshot.go:83:12: should omit comparison to bool constant, can be simplified to !has (S1002)
pkg/services/sqlstore/plugin_setting.go:39:12: should omit comparison to bool constant, can be simplified to !has (S1002)
pkg/services/sqlstore/quota.go:34:12: should omit comparison to bool constant, can be simplified to !has (S1002)
pkg/services/sqlstore/quota.go:111:6: should omit comparison to bool constant, can be simplified to !has (S1002)
pkg/services/sqlstore/quota.go:136:12: should omit comparison to bool constant, can be simplified to !has (S1002)
pkg/services/sqlstore/quota.go:213:6: should omit comparison to bool constant, can be simplified to !has (S1002)
pkg/services/sqlstore/temp_user.go:129:12: should omit comparison to bool constant, can be simplified to !has (S1002)
pkg/services/sqlstore/user.go:157:12: should omit comparison to bool constant, can be simplified to !has (S1002)
pkg/services/sqlstore/user.go:182:5: should omit comparison to bool constant, can be simplified to !has (S1002)
pkg/services/sqlstore/user.go:191:12: should omit comparison to bool constant, can be simplified to !has (S1002)
pkg/services/sqlstore/user.go:212:12: should omit comparison to bool constant, can be simplified to !has (S1002)
pkg/services/sqlstore/user.go:307:12: should omit comparison to bool constant, can be simplified to !has (S1002)
pkg/social/generic_oauth.go:185:5: should omit comparison to bool constant, can be simplified to !s.extractToken(&data, token) (S1002)
pkg/tsdb/mssql/mssql.go:148:39: should omit comparison to bool constant, can be simplified to ok (S1002)
pkg/tsdb/mssql/mssql.go:212:6: should omit comparison to bool constant, can be simplified to !query.Model.Get("fillNull").MustBool(false) (S1002)
pkg/tsdb/mssql/mssql.go:247:56: should omit comparison to bool constant, can be simplified to ok (S1002)
pkg/tsdb/mssql/mssql.go:274:7: should omit comparison to bool constant, can be simplified to !exist (S1002)
pkg/tsdb/mssql/mssql.go:282:8: should omit comparison to bool constant, can be simplified to !exist (S1002)
pkg/tsdb/mysql/mysql.go:221:6: should omit comparison to bool constant, can be simplified to !query.Model.Get("fillNull").MustBool(false) (S1002)
pkg/tsdb/mysql/mysql.go:256:56: should omit comparison to bool constant, can be simplified to ok (S1002)
pkg/tsdb/mysql/mysql.go:283:7: should omit comparison to bool constant, can be simplified to !exist (S1002)
pkg/tsdb/mysql/mysql.go:291:8: should omit comparison to bool constant, can be simplified to !exist (S1002)
pkg/tsdb/postgres/postgres.go:134:39: should omit comparison to bool constant, can be simplified to ok (S1002)
pkg/tsdb/postgres/postgres.go:201:6: should omit comparison to bool constant, can be simplified to !query.Model.Get("fillNull").MustBool(false) (S1002)
pkg/tsdb/postgres/postgres.go:236:56: should omit comparison to bool constant, can be simplified to ok (S1002)
pkg/tsdb/postgres/postgres.go:263:7: should omit comparison to bool constant, can be simplified to !exist (S1002)
pkg/tsdb/postgres/postgres.go:271:8: should omit comparison to bool constant, can be simplified to !exist (S1002)
											
										 
											2018-04-17 02:12:59 +08:00
										 |  |  | 		if !strings.Contains(path, ".sha256") { | 
					
						
							| 
									
										
										
										
											2017-02-24 03:48:31 +08:00
										 |  |  | 			err := shaFile(path) | 
					
						
							| 
									
										
										
										
											2017-01-30 15:08:37 +08:00
										 |  |  | 			if err != nil { | 
					
						
							|  |  |  | 				log.Printf("Failed to create sha file. error: %v\n", err) | 
					
						
							|  |  |  | 			} | 
					
						
							| 
									
										
										
										
											2016-10-06 16:53:24 +08:00
										 |  |  | 		} | 
					
						
							|  |  |  | 		return nil | 
					
						
							|  |  |  | 	}) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-24 03:48:31 +08:00
										 |  |  | func shaFile(file string) error { | 
					
						
							| 
									
										
										
										
											2016-10-06 16:53:24 +08:00
										 |  |  | 	fd, err := os.Open(file) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return err | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	defer fd.Close() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-24 03:48:31 +08:00
										 |  |  | 	h := sha256.New() | 
					
						
							| 
									
										
										
										
											2016-10-06 16:53:24 +08:00
										 |  |  | 	_, err = io.Copy(h, fd) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return err | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-24 03:48:31 +08:00
										 |  |  | 	out, err := os.Create(file + ".sha256") | 
					
						
							| 
									
										
										
										
											2016-10-06 16:53:24 +08:00
										 |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return err | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	_, err = fmt.Fprintf(out, "%x\n", h.Sum(nil)) | 
					
						
							|  |  |  | 	if err != nil { | 
					
						
							|  |  |  | 		return err | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return out.Close() | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2018-11-05 22:05:12 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | func shortenBuildId(buildId string) string { | 
					
						
							|  |  |  | 	buildId = strings.Replace(buildId, "-", "", -1) | 
					
						
							| 
									
										
										
										
											2018-11-12 17:47:27 +08:00
										 |  |  | 	if len(buildId) < 9 { | 
					
						
							| 
									
										
										
										
											2018-11-05 22:05:12 +08:00
										 |  |  | 		return buildId | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return buildId[0:8] | 
					
						
							|  |  |  | } |