Skip to content

Commit

Permalink
all: refactor goenv.Version to add the git sha1 if needed
Browse files Browse the repository at this point in the history
Previously all (except one!) usage of goenv.Version manually added the
git sha1 hash, leading to duplicate code. I've moved this to do it all
in one place, to avoid this duplication.
  • Loading branch information
aykevl committed Sep 28, 2023
1 parent 6ef8fcd commit dfb725b
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 21 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -878,7 +878,7 @@ deb:
@mkdir -p build/release-deb/usr/local/lib
cp -ar build/release/tinygo build/release-deb/usr/local/lib/tinygo
ln -sf ../lib/tinygo/bin/tinygo build/release-deb/usr/local/bin/tinygo
fpm -f -s dir -t deb -n tinygo -a $(DEB_ARCH) -v $(shell grep "const Version = " goenv/version.go | awk '{print $$NF}') -m '@tinygo-org' --description='TinyGo is a Go compiler for small places.' --license='BSD 3-Clause' --url=https://tinygo.org/ --deb-changelog CHANGELOG.md -p build/release.deb -C ./build/release-deb
fpm -f -s dir -t deb -n tinygo -a $(DEB_ARCH) -v $(shell grep "const version = " goenv/version.go | awk '{print $$NF}') -m '@tinygo-org' --description='TinyGo is a Go compiler for small places.' --license='BSD 3-Clause' --url=https://tinygo.org/ --deb-changelog CHANGELOG.md -p build/release.deb -C ./build/release-deb

ifneq ($(RELEASEONLY), 1)
release: build/release
Expand Down
8 changes: 2 additions & 6 deletions builder/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ func Build(pkgName, outpath, tmpdir string, config *compileopts.Config) (BuildRe
CodeModel: config.CodeModel(),
RelocationModel: config.RelocationModel(),
SizeLevel: sizeLevel,
TinyGoVersion: goenv.Version,
TinyGoVersion: goenv.Version(),

Scheduler: config.Scheduler(),
AutomaticStackSize: config.AutomaticStackSize(),
Expand Down Expand Up @@ -221,14 +221,10 @@ func Build(pkgName, outpath, tmpdir string, config *compileopts.Config) (BuildRe
config.Options.GlobalValues = make(map[string]map[string]string)
}
if config.Options.GlobalValues["runtime"]["buildVersion"] == "" {
version := goenv.Version
if strings.HasSuffix(goenv.Version, "-dev") && goenv.GitSha1 != "" {
version += "-" + goenv.GitSha1
}
if config.Options.GlobalValues["runtime"] == nil {
config.Options.GlobalValues["runtime"] = make(map[string]string)
}
config.Options.GlobalValues["runtime"]["buildVersion"] = version
config.Options.GlobalValues["runtime"]["buildVersion"] = goenv.Version()
}
if config.TestConfig.CompileTestBinary {
// The testing.testBinary is set to "1" when in a test.
Expand Down
12 changes: 11 additions & 1 deletion goenv/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,24 @@ import (

// Version of TinyGo.
// Update this value before release of new version of software.
const Version = "0.30.0"
const version = "0.30.0"

var (
// This variable is set at build time using -ldflags parameters.
// See: https://stackoverflow.com/a/11355611
GitSha1 string
)

// Return TinyGo version, either in the form 0.30.0 or as a development version
// (like 0.30.0-dev-abcd012).
func Version() string {
v := version
if strings.HasSuffix(version, "-dev") && GitSha1 != "" {
v += "-" + GitSha1
}
return v
}

// GetGorootVersion returns the major and minor version for a given GOROOT path.
// If the goroot cannot be determined, (0, 0) is returned.
func GetGorootVersion() (major, minor int, err error) {
Expand Down
13 changes: 2 additions & 11 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -1212,15 +1212,10 @@ func getBMPPorts() (gdbPort, uartPort string, err error) {
}

func usage(command string) {
version := goenv.Version
if strings.HasSuffix(version, "-dev") && goenv.GitSha1 != "" {
version += "-" + goenv.GitSha1
}

switch command {
default:
fmt.Fprintln(os.Stderr, "TinyGo is a Go compiler for small places.")
fmt.Fprintln(os.Stderr, "version:", version)
fmt.Fprintln(os.Stderr, "version:", goenv.Version())
fmt.Fprintf(os.Stderr, "usage: %s <command> [arguments]\n", os.Args[0])
fmt.Fprintln(os.Stderr, "\ncommands:")
fmt.Fprintln(os.Stderr, " build: compile packages and dependencies")
Expand Down Expand Up @@ -1874,11 +1869,7 @@ func main() {
if s, err := goenv.GorootVersionString(); err == nil {
goversion = s
}
version := goenv.Version
if strings.HasSuffix(goenv.Version, "-dev") && goenv.GitSha1 != "" {
version += "-" + goenv.GitSha1
}
fmt.Printf("tinygo version %s %s/%s (using go version %s and LLVM version %s)\n", version, runtime.GOOS, runtime.GOARCH, goversion, llvm.Version)
fmt.Printf("tinygo version %s %s/%s (using go version %s and LLVM version %s)\n", goenv.Version(), runtime.GOOS, runtime.GOARCH, goversion, llvm.Version)
case "env":
if flag.NArg() == 0 {
// Show all environment variables.
Expand Down
3 changes: 1 addition & 2 deletions src/runtime/extern.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@ func Callers(skip int, pc []uintptr) int {
var buildVersion string

// Version returns the Tinygo tree's version string.
// It is the same as goenv.Version, or in case of a development build,
// it will be the concatenation of goenv.Version and the git commit hash.
// It is the same as goenv.Version().
func Version() string {
return buildVersion
}

0 comments on commit dfb725b

Please sign in to comment.