From 8709c8a8ee477cf6e25f65a37e105b8d5f2e7603 Mon Sep 17 00:00:00 2001 From: Jannis Harder Date: Mon, 8 Jul 2024 18:11:22 +0200 Subject: [PATCH] Add --version option based on git describe --- .gitattributes | 1 + .gittag | 1 + Makefile | 10 +++++++++- sbysrc/sby.py | 5 ++++- sbysrc/sby_cmdline.py | 4 +++- 5 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 .gitattributes create mode 100644 .gittag diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..b9b5a292 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +/.gittag export-subst diff --git a/.gittag b/.gittag new file mode 100644 index 00000000..f4034a5d --- /dev/null +++ b/.gittag @@ -0,0 +1 @@ +$Format:%(describe)$ diff --git a/Makefile b/Makefile index 28f05657..fa07df37 100644 --- a/Makefile +++ b/Makefile @@ -10,6 +10,12 @@ ifeq ($(OS), Windows_NT) PYTHON = $(shell cygpath -w -m $(PREFIX)/bin/python3) endif +ifeq ($(file < .gittag),$$Format:%(describe)$$) +YOSYS_RELEASE_VERSION := SBY $(shell git describe --dirty) +else +YOSYS_RELEASE_VERSION := SBY $(file < .gittag) +endif + .PHONY: help install ci test html clean help: @@ -38,10 +44,12 @@ install: sed -e 's|##yosys-program-prefix##|"'$(PROGRAM_PREFIX)'"|' < sbysrc/sby_core.py > $(DESTDIR)$(PREFIX)/share/yosys/python3/sby_core.py ifeq ($(OS), Windows_NT) sed -e 's|##yosys-sys-path##|sys.path += [os.path.dirname(__file__) + p for p in ["/share/python3", "/../share/yosys/python3"]]|;' \ + -e "s|##yosys-release-version##|release_version = '$(YOSYS_RELEASE_VERSION)'|;" \ -e "s|#!/usr/bin/env python3|#!$(PYTHON)|" < sbysrc/sby.py > $(DESTDIR)$(PREFIX)/bin/sby-script.py gcc -DGUI=0 -O -s -o $(DESTDIR)$(PREFIX)/bin/sby.exe extern/launcher.c else - sed 's|##yosys-sys-path##|sys.path += [os.path.dirname(__file__) + p for p in ["/share/python3", "/../share/yosys/python3"]]|;' < sbysrc/sby.py > $(DESTDIR)$(PREFIX)/bin/sby + sed -e 's|##yosys-sys-path##|sys.path += [os.path.dirname(__file__) + p for p in ["/share/python3", "/../share/yosys/python3"]]|;' \ + -e "s|##yosys-release-version##|release_version = '$(YOSYS_RELEASE_VERSION)'|;" < sbysrc/sby.py > $(DESTDIR)$(PREFIX)/bin/sby chmod +x $(DESTDIR)$(PREFIX)/bin/sby endif diff --git a/sbysrc/sby.py b/sbysrc/sby.py index a91a18a1..31835be8 100644 --- a/sbysrc/sby.py +++ b/sbysrc/sby.py @@ -25,9 +25,12 @@ from sby_status import SbyStatusDb import time, platform, click +release_version = 'unknown SBY version' +##yosys-release-version## + process_jobserver_environment() # needs to be called early -parser = parser_func() +parser = parser_func(release_version) args = parser.parse_args() diff --git a/sbysrc/sby_cmdline.py b/sbysrc/sby_cmdline.py index bc45b4a5..2c676daf 100644 --- a/sbysrc/sby_cmdline.py +++ b/sbysrc/sby_cmdline.py @@ -6,7 +6,7 @@ def __call__(self, parser, namespace, values, option_string=None): name = option_string.lstrip(parser.prefix_chars).replace("-", "_") getattr(namespace, self.dest)[name] = values -def parser_func(): +def parser_func(release_version='unknown SBY version'): parser = argparse.ArgumentParser(prog="sby", usage="%(prog)s [options] [.sby [tasknames] | ]") parser.set_defaults(exe_paths=dict()) @@ -81,4 +81,6 @@ def parser_func(): parser.add_argument("arg_tasknames", metavar="tasknames", nargs="*", help="tasks to run (only valid when .sby is used)") + parser.add_argument('--version', action='version', version=release_version) + return parser