Merge pull request #4718 from kolyshkin/embed-version

Embed version from VERSION
This commit is contained in:
Kir Kolyshkin
2025-04-23 09:50:44 -07:00
committed by GitHub
2 changed files with 33 additions and 21 deletions

View File

@@ -17,8 +17,8 @@ BUILDTAGS += $(EXTRA_BUILDTAGS)
COMMIT := $(shell git describe --dirty --long --always) COMMIT := $(shell git describe --dirty --long --always)
EXTRA_VERSION := EXTRA_VERSION :=
VERSION := $(shell cat ./VERSION)$(EXTRA_VERSION) LDFLAGS_COMMON := -X main.gitCommit=$(COMMIT) \
LDFLAGS_COMMON := -X main.gitCommit=$(COMMIT) -X main.version=$(VERSION) $(if $(strip $(EXTRA_VERSION)),-X main.extraVersion=$(EXTRA_VERSION),)
GOARCH := $(shell $(GO) env GOARCH) GOARCH := $(shell $(GO) env GOARCH)
@@ -118,11 +118,11 @@ release: runcimage
--rm -v $(CURDIR):/go/src/$(PROJECT) \ --rm -v $(CURDIR):/go/src/$(PROJECT) \
-e RELEASE_ARGS=$(RELEASE_ARGS) \ -e RELEASE_ARGS=$(RELEASE_ARGS) \
$(RUNC_IMAGE) make localrelease $(RUNC_IMAGE) make localrelease
script/release_sign.sh -S $(GPG_KEYID) -r release/$(VERSION) -v $(VERSION) script/release_sign.sh -S $(GPG_KEYID)
.PHONY: localrelease .PHONY: localrelease
localrelease: verify-changelog localrelease: verify-changelog
script/release_build.sh -r release/$(VERSION) -v $(VERSION) $(RELEASE_ARGS) script/release_build.sh $(RELEASE_ARGS)
.PHONY: dbuild .PHONY: dbuild
dbuild: runcimage dbuild: runcimage

46
main.go
View File

@@ -1,6 +1,7 @@
package main package main
import ( import (
_ "embed"
"errors" "errors"
"fmt" "fmt"
"io" "io"
@@ -19,14 +20,36 @@ import (
"github.com/urfave/cli" "github.com/urfave/cli"
) )
// version must be set from the contents of VERSION file by go build's // version is set from the contents of VERSION file.
// -X main.version= option in the Makefile. //
var version = "unknown" //go:embed VERSION
var version string
// extraVersion is an optional suffix appended to runc version.
// It can be set via Makefile ("make EXTRA_VERSION=xxx") or by
// adding -X main.extraVersion=xxx option to the go build command.
var extraVersion = ""
// gitCommit will be the hash that the binary was built from // gitCommit will be the hash that the binary was built from
// and will be populated by the Makefile // and will be populated by the Makefile.
var gitCommit = "" var gitCommit = ""
func printVersion(c *cli.Context) {
w := c.App.Writer
fmt.Fprintln(w, "runc version", c.App.Version)
if gitCommit != "" {
fmt.Fprintln(w, "commit:", gitCommit)
}
fmt.Fprintln(w, "spec:", specs.Version)
fmt.Fprintln(w, "go:", runtime.Version())
major, minor, micro := seccomp.Version()
if major+minor+micro > 0 {
fmt.Fprintf(w, "libseccomp: %d.%d.%d\n", major, minor, micro)
}
}
const ( const (
specConfig = "config.json" specConfig = "config.json"
usage = `Open Container Initiative runtime usage = `Open Container Initiative runtime
@@ -57,21 +80,10 @@ value for "bundle" is the current directory.`
func main() { func main() {
app := cli.NewApp() app := cli.NewApp()
app.Name = "runc" app.Name = "runc"
app.Version = strings.TrimSpace(version) + extraVersion
app.Usage = usage app.Usage = usage
v := []string{version} cli.VersionPrinter = printVersion
if gitCommit != "" {
v = append(v, "commit: "+gitCommit)
}
v = append(v, "spec: "+specs.Version)
v = append(v, "go: "+runtime.Version())
major, minor, micro := seccomp.Version()
if major+minor+micro > 0 {
v = append(v, fmt.Sprintf("libseccomp: %d.%d.%d", major, minor, micro))
}
app.Version = strings.Join(v, "\n")
root := "/run/runc" root := "/run/runc"
xdgDirUsed := false xdgDirUsed := false