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 ¶
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 ¶
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 ¶
func IsMacSysExt() bool
IsMacSysExt whether this binary is from the standalone "System Extension" (a.k.a. "macsys") version of Tailscale for macOS.
func IsRace ¶
func IsRace() bool
IsRace reports whether the current binary was built with the Go race detector enabled.
func IsSandboxedMacOS ¶
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 ¶
func IsUnstableBuild() bool
IsUnstableBuild reports whether this is an unstable build. That is, whether its minor version number is odd.
func IsWindowsGUI ¶
func IsWindowsGUI() bool
IsWindowsGUI reports whether the current process is the Windows GUI.
func Long ¶
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 ¶
func OS() string
OS returns runtime.GOOS, except instead of returning "darwin" it returns "iOS" or "macOS".
func Short ¶
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 ¶
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. |