Documentation
¶
Overview ¶
Package version provides the version that the binary was built at.
Index ¶
- func AtLeast(version string, minimum string) bool
- func CmdName() string
- func IsAppleTV() bool
- func IsMacSysExt() bool
- func IsMobile() bool
- func IsRace() bool
- func IsSandboxedMacOS() bool
- func IsUnstableBuild() bool
- func IsWindowsGUI() bool
- func Long() string
- func OS() string
- func Short() string
- func String() string
- type Meta
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AtLeast ¶ added in v0.100.0
AtLeast returns whether version is at least the specified minimum version.
Version comparison in Tailscale is a little complex, because we switched "styles" a few times, and additionally have a completely separate track of version numbers for OSS-only builds.
AtLeast acts conservatively, returning true only if it's certain that version is at least minimum. As a result, it can produce false negatives, for example when an OSS build supports a given feature, but AtLeast is called with an official release number as the minimum
version and minimum can both be either an official Tailscale version numbers (major.minor.patch-extracommits-extrastring), or an OSS build datestamp (date.YYYYMMDD). For Tailscale version numbers, AtLeast also accepts a prefix of a full version, in which case all missing fields are assumed to be zero.
func CmdName ¶
func CmdName() string
CmdName returns either the base name of the current binary using os.Executable. If os.Executable fails (it shouldn't), then "cmd" is returned.
func IsAppleTV ¶ added in v1.44.0
func IsAppleTV() bool
IsAppleTV reports whether this binary is part of the Tailscale network extension for tvOS. Needed because runtime.GOOS returns "ios" otherwise.
func IsMacSysExt ¶ added in v1.8.0
func IsMacSysExt() bool
IsMacSysExt whether this binary is from the standalone "System Extension" (a.k.a. "macsys") version of Tailscale for macOS.
func IsRace ¶ added in v1.10.0
func IsRace() bool
IsRace reports whether the current binary was built with the Go race detector enabled.
func IsSandboxedMacOS ¶ added in v1.8.0
func IsSandboxedMacOS() bool
IsSandboxedMacOS reports whether this process is a sandboxed macOS process (either the app or the extension). It is true for the Mac App Store and macsys (System Extension) version on macOS, and false for tailscaled-on-macOS.
func IsUnstableBuild ¶ added in v1.34.0
func IsUnstableBuild() bool
IsUnstableBuild reports whether this is an unstable build. That is, whether its minor version number is odd.
func IsWindowsGUI ¶ added in v1.20.0
func IsWindowsGUI() bool
IsWindowsGUI reports whether the current process is the Windows GUI.
func Long ¶ added in v1.2.0
func Long() string
Long returns a full version number for this build, of one of the forms:
- "x.y.z-commithash-otherhash" for release builds distributed by Tailscale
- "x.y.z-commithash" for release builds built with build_dist.sh
- "x.y.z-changecount-commithash-otherhash" for untagged release branch builds by Tailscale (these are not distributed).
- "x.y.z-changecount-commithash" for untagged release branch builds built with build_dist.sh
- "x.y.z-devYYYYMMDD-commithash{,-dirty}" for builds made with plain "go build" or "go install"
- "x.y.z-ERR-BuildInfo" for builds made by plain "go run"
func OS ¶ added in v0.98.0
func OS() string
OS returns runtime.GOOS, except instead of returning "darwin" it returns "iOS" or "macOS".
func Short ¶ added in v1.2.0
func Short() string
Short returns a short version number for this build, of the forms:
- "x.y.z" for builds distributed by Tailscale or built with build_dist.sh
- "x.y.z-devYYYYMMDD" for builds made with plain "go build" or "go install"
- "x.y.z-ERR-BuildInfo" for builds made by plain "go run"
Types ¶
type Meta ¶ added in v1.36.0
type Meta struct {
// MajorMinorPatch is the "major.minor.patch" version string, without
// any hyphenated suffix.
MajorMinorPatch string `json:"majorMinorPatch"`
// IsDev is whether Short contains a -dev suffix. This is whether the build
// is a development build (as opposed to an official stable or unstable
// build stamped in the usual ways). If you just run "go install" or "go
// build" on a dev branch, this will be true.
IsDev bool `json:"isDev,omitempty"`
// Short is MajorMinorPatch but optionally adding "-dev" or "-devYYYYMMDD"
// for dev builds, depending on how it was build.
Short string `json:"short"`
// Long is the full version string, including git commit hash(es) as the
// suffix.
Long string `json:"long"`
// UnstableBranch is whether the build is from an unstable (development)
// branch. That is, it reports whether the minor version is odd.
UnstableBranch bool `json:"unstableBranch,omitempty"`
// GitCommit, if non-empty, is the git commit of the
// github.com/tailscale/tailscale repository at which Tailscale was
// built. Its format is the one returned by `git describe --always
// --exclude "*" --dirty --abbrev=200`.
GitCommit string `json:"gitCommit,omitempty"`
// GitDirty is whether Go stamped the binary as having dirty version
// control changes in the working directory (debug.ReadBuildInfo
// setting "vcs.modified" was true).
GitDirty bool `json:"gitDirty,omitempty"`
// ExtraGitCommit, if non-empty, is the git commit of a "supplemental"
// repository at which Tailscale was built. Its format is the same as
// gitCommit.
//
// ExtraGitCommit is used to track the source revision when the main
// Tailscale repository is integrated into and built from another
// repository (for example, Tailscale's proprietary code, or the
// Android OSS repository). Together, GitCommit and ExtraGitCommit
// exactly describe what repositories and commits were used in a
// build.
ExtraGitCommit string `json:"extraGitCommit,omitempty"`
// DaemonLong is the version number from the tailscaled
// daemon, if requested.
DaemonLong string `json:"daemonLong,omitempty"`
// Cap is the current Tailscale capability version. It's a monotonically
// incrementing integer that's incremented whenever a new capability is
// added.
Cap int `json:"cap"`
}
Meta is a JSON-serializable type that contains all the version information.
Directories
¶
| Path | Synopsis |
|---|---|
|
Package distro reports which distro we're running on.
|
Package distro reports which distro we're running on. |
|
Package mkversion gets version info from git and provides a bunch of differently formatted version strings that get used elsewhere in the build system to embed version numbers into binaries.
|
Package mkversion gets version info from git and provides a bunch of differently formatted version strings that get used elsewhere in the build system to embed version numbers into binaries. |