aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAyke van Laethem <[email protected]>2023-09-28 15:42:50 +0200
committerRon Evans <[email protected]>2023-10-04 16:20:32 +0200
commit5cd8ba242157d552d3104ce09d06c5418c52eab4 (patch)
tree8015fe84aa58fe4b7a8ddcb1e093491502b60ccf
parent2320b18953e925fc6c79347f3fcc94b5b9f77885 (diff)
downloadtinygo-5cd8ba242157d552d3104ce09d06c5418c52eab4.tar.gz
tinygo-5cd8ba242157d552d3104ce09d06c5418c52eab4.zip
all: refactor goenv.Version to add the git sha1 if needed
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.
-rw-r--r--GNUmakefile2
-rw-r--r--builder/build.go8
-rw-r--r--goenv/version.go12
-rw-r--r--main.go13
-rw-r--r--src/runtime/extern.go3
5 files changed, 17 insertions, 21 deletions
diff --git a/GNUmakefile b/GNUmakefile
index a00eee1f9..bd597917d 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -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
diff --git a/builder/build.go b/builder/build.go
index 1f40ab3f6..a7c83a520 100644
--- a/builder/build.go
+++ b/builder/build.go
@@ -168,7 +168,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(),
@@ -220,14 +220,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.
diff --git a/goenv/version.go b/goenv/version.go
index f89b43f1a..fb16d5a4b 100644
--- a/goenv/version.go
+++ b/goenv/version.go
@@ -9,7 +9,7 @@ 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.
@@ -17,6 +17,16 @@ var (
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) {
diff --git a/main.go b/main.go
index 0a8a652b7..ff89fbee5 100644
--- a/main.go
+++ b/main.go
@@ -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")
@@ -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.
diff --git a/src/runtime/extern.go b/src/runtime/extern.go
index 17f42ebee..f4e7c002c 100644
--- a/src/runtime/extern.go
+++ b/src/runtime/extern.go
@@ -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
}