This is what modules are for, and Go binaries can introspect.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
generate-version-and-build:
@export GIT_CEILING_DIRECTORIES="$(realpath $(CURDIR)/..)" && \
tag="$$(git describe --dirty 2>/dev/null)" && \
- ver="$$(printf 'package device\nconst WireGuardGoVersion = "%s"\n' "$${tag#v}")" && \
- [ "$$(cat device/version.go 2>/dev/null)" != "$$ver" ] && \
- echo "$$ver" > device/version.go && \
- git update-index --assume-unchanged device/version.go || true
+ ver="$$(printf 'package main\nconst Version = "%s"\n' "$$tag")" && \
+ [ "$$(cat version.go 2>/dev/null)" != "$$ver" ] && \
+ echo "$$ver" > version.go && \
+ git update-index --assume-unchanged version.go || true
@$(MAKE) wireguard-go
wireguard-go: $(wildcard *.go) $(wildcard */*.go)
func main() {
if len(os.Args) == 2 && os.Args[1] == "--version" {
- fmt.Printf("wireguard-go v%s\n\nUserspace WireGuard daemon for %s-%s.\nInformation available at https://www.wireguard.com.\nCopyright (C) Jason A. Donenfeld <Jason@zx2c4.com>.\n", device.WireGuardGoVersion, runtime.GOOS, runtime.GOARCH)
+ fmt.Printf("wireguard-go v%s\n\nUserspace WireGuard daemon for %s-%s.\nInformation available at https://www.wireguard.com.\nCopyright (C) Jason A. Donenfeld <Jason@zx2c4.com>.\n", Version, runtime.GOOS, runtime.GOARCH)
return
}
fmt.Sprintf("(%s) ", interfaceName),
)
- logger.Verbosef("Starting wireguard-go version %s", device.WireGuardGoVersion)
+ logger.Verbosef("Starting wireguard-go version %s", Version)
if err != nil {
logger.Errorf("Failed to create TUN device: %v", err)
device.LogLevelVerbose,
fmt.Sprintf("(%s) ", interfaceName),
)
- logger.Verbosef("Starting wireguard-go version %s", device.WireGuardGoVersion)
+ logger.Verbosef("Starting wireguard-go version %s", Version)
tun, err := tun.CreateTUN(interfaceName, 0)
if err == nil {