mirror of
https://github.com/restic/restic.git
synced 2024-12-23 08:16:36 +00:00
Merge pull request #280 from restic/ldflags-go1.5
build.go: Make `-ldflags` compatible to Go 1.5
This commit is contained in:
commit
10f0d7ccac
1 changed files with 28 additions and 4 deletions
32
build.go
32
build.go
|
@ -159,7 +159,7 @@ func verbosePrintf(message string, args ...interface{}) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Printf(message, args...)
|
fmt.Printf("build: "+message, args...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// cleanEnv returns a clean environment with GOPATH and GOBIN removed (if
|
// cleanEnv returns a clean environment with GOPATH and GOBIN removed (if
|
||||||
|
@ -229,6 +229,27 @@ func gitVersion() string {
|
||||||
return version
|
return version
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Constants represents a set of constants that are set in the final binary to
|
||||||
|
// the given value via compiler flags.
|
||||||
|
type Constants map[string]string
|
||||||
|
|
||||||
|
// LDFlags returns the string that can be passed to go build's `-ldflags`.
|
||||||
|
func (cs Constants) LDFlags() string {
|
||||||
|
l := make([]string, 0, len(cs))
|
||||||
|
|
||||||
|
if strings.HasPrefix(runtime.Version(), "go1.5") {
|
||||||
|
for k, v := range cs {
|
||||||
|
l = append(l, fmt.Sprintf(`-X "%s=%s"`, k, v))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for k, v := range cs {
|
||||||
|
l = append(l, fmt.Sprintf(`-X %q %q`, k, v))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return strings.Join(l, " ")
|
||||||
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
buildTags := []string{}
|
buildTags := []string{}
|
||||||
|
|
||||||
|
@ -297,7 +318,7 @@ func main() {
|
||||||
die("remove GOPATH at %s failed: %v\n", err)
|
die("remove GOPATH at %s failed: %v\n", err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
fmt.Printf("leaving temporary GOPATH at %v\n", gopath)
|
verbosePrintf("leaving temporary GOPATH at %v\n", gopath)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
@ -307,10 +328,13 @@ func main() {
|
||||||
}
|
}
|
||||||
version := getVersion()
|
version := getVersion()
|
||||||
compileTime := time.Now().Format(timeFormat)
|
compileTime := time.Now().Format(timeFormat)
|
||||||
ldflags := fmt.Sprintf("-s -X main.compiledAt %q", compileTime)
|
constants := Constants{`main.compiledAt`: compileTime}
|
||||||
if version != "" {
|
if version != "" {
|
||||||
ldflags = fmt.Sprintf("%s -X main.version %q", ldflags, version)
|
constants["main.version"] = version
|
||||||
}
|
}
|
||||||
|
ldflags := "-s " + constants.LDFlags()
|
||||||
|
verbosePrintf("ldflags: %s\n", ldflags)
|
||||||
|
|
||||||
args := []string{
|
args := []string{
|
||||||
"-tags", strings.Join(buildTags, " "),
|
"-tags", strings.Join(buildTags, " "),
|
||||||
"-ldflags", ldflags,
|
"-ldflags", ldflags,
|
||||||
|
|
Loading…
Reference in a new issue