Fix determining Verilator revision when within git submodules without tags.
This commit is contained in:
parent
c299b71677
commit
1d9c5c2c6b
1
Changes
1
Changes
|
|
@ -16,6 +16,7 @@ Verilator 5.043 devel
|
||||||
* Optimize away calls to empty functions (#6626). [Geza Lore]
|
* Optimize away calls to empty functions (#6626). [Geza Lore]
|
||||||
* Fix `--timing` with `--x-initial-edge` (#6603) (#6631). [Krzysztof Bieganski, Antmicro Ltd.]
|
* Fix `--timing` with `--x-initial-edge` (#6603) (#6631). [Krzysztof Bieganski, Antmicro Ltd.]
|
||||||
* Fix merging of impure assignments in gate optimization (#6629) (#6630). [Geza Lore]
|
* Fix merging of impure assignments in gate optimization (#6629) (#6630). [Geza Lore]
|
||||||
|
* Fix determining Verilator revision when within git submodules without tags.
|
||||||
|
|
||||||
|
|
||||||
Verilator 5.042 2025-11-02
|
Verilator 5.042 2025-11-02
|
||||||
|
|
|
||||||
|
|
@ -781,7 +781,7 @@ clean mostlyclean distclean maintainer-clean::
|
||||||
|
|
||||||
distclean maintainer-clean::
|
distclean maintainer-clean::
|
||||||
rm -f *.info* *.1 $(INFOS) $(INFOS_OLD) $(VL_INST_MAN_FILES)
|
rm -f *.info* *.1 $(INFOS) $(INFOS_OLD) $(VL_INST_MAN_FILES)
|
||||||
rm -f Makefile config.status config.cache config.log TAGS
|
rm -f Makefile config.status config.cache config.log configure~ TAGS
|
||||||
rm -f verilator_bin* verilator_coverage_bin*
|
rm -f verilator_bin* verilator_coverage_bin*
|
||||||
rm -f bin/verilator_bin* bin/verilator_coverage_bin*
|
rm -f bin/verilator_bin* bin/verilator_coverage_bin*
|
||||||
rm -f include/verilated.mk include/verilated_config.h
|
rm -f include/verilated.mk include/verilated_config.h
|
||||||
|
|
|
||||||
|
|
@ -108,6 +108,7 @@ clang-format:
|
||||||
|
|
||||||
maintainer-copy::
|
maintainer-copy::
|
||||||
clean mostlyclean distclean maintainer-clean::
|
clean mostlyclean distclean maintainer-clean::
|
||||||
|
-rm -f config_rev.h
|
||||||
-rm -rf obj_* *.log *.dmp *.vpd core
|
-rm -rf obj_* *.log *.dmp *.vpd core
|
||||||
-rm -f *.o *.d *_gen_*
|
-rm -f *.o *.d *_gen_*
|
||||||
-rm -f *__gen* obj_*
|
-rm -f *__gen* obj_*
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# mypy: disallow-untyped-defs
|
# mypy: disallow-untyped-defs
|
||||||
# pylint: disable=C0103,C0114
|
# pylint: disable=C0103,C0114,C0116
|
||||||
######################################################################
|
######################################################################
|
||||||
#
|
#
|
||||||
# Copyright 2005-2025 by Wilson Snyder. This program is free software; you
|
# Copyright 2005-2025 by Wilson Snyder. This program is free software; you
|
||||||
|
|
@ -17,32 +17,44 @@ import os
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
from datetime import datetime, timezone
|
||||||
|
|
||||||
|
|
||||||
|
def get_rev() -> str:
|
||||||
|
if 'VERILATOR_SRC_VERSION' in os.environ:
|
||||||
|
# e.g. Ubuntu package build
|
||||||
|
return os.environ['VERILATOR_SRC_VERSION']
|
||||||
|
|
||||||
|
data = os.popen('git describe --always').read()
|
||||||
|
|
||||||
|
result = "vUNKNOWN"
|
||||||
|
|
||||||
|
m = re.search(r'^(v[0-9].*)', data)
|
||||||
|
if m:
|
||||||
|
# e.g. in a complate verilator checkout with tags
|
||||||
|
result = m.group(1)
|
||||||
|
result = re.sub('_', '.', result)
|
||||||
|
else:
|
||||||
|
# e.g. in a sparse submodule checkout without tags
|
||||||
|
m = re.search(r'^([a-f0-9]+)$', data)
|
||||||
|
if m:
|
||||||
|
result = "vUNKNOWN-" + datetime.now(timezone.utc).strftime("%Y%m%d") + "-" + m.group(1)
|
||||||
|
|
||||||
|
data = os.popen('git status').read()
|
||||||
|
if (re.search('Changed but not updated', data, flags=re.IGNORECASE)
|
||||||
|
or re.search('Changes to be committed', data, flags=re.IGNORECASE)
|
||||||
|
or re.search('Changes not staged', data, flags=re.IGNORECASE)):
|
||||||
|
result += " (mod)"
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument('directory')
|
parser.add_argument('directory')
|
||||||
Args = parser.parse_args()
|
Args = parser.parse_args()
|
||||||
|
|
||||||
os.chdir(Args.directory)
|
os.chdir(Args.directory)
|
||||||
|
|
||||||
if 'VERILATOR_SRC_VERSION' in os.environ:
|
rev = get_rev()
|
||||||
rev = os.environ['VERILATOR_SRC_VERSION']
|
print("config_rev using " + rev, file=sys.stderr)
|
||||||
else:
|
|
||||||
rev = 'UNKNOWN_REV'
|
|
||||||
|
|
||||||
data = os.popen('git describe').read()
|
|
||||||
|
|
||||||
match = re.search(r'^(v[0-9].*)', data)
|
|
||||||
if match:
|
|
||||||
rev = match.group(1)
|
|
||||||
rev = re.sub('_', '.', rev)
|
|
||||||
|
|
||||||
data = os.popen('git status').read()
|
|
||||||
if (re.search('Changed but not updated', data, flags=re.IGNORECASE)
|
|
||||||
or re.search('Changes to be committed', data, flags=re.IGNORECASE)
|
|
||||||
or re.search('Changes not staged', data, flags=re.IGNORECASE)):
|
|
||||||
rev += " (mod)"
|
|
||||||
|
|
||||||
print("static const char* const DTVERSION_rev = \"" + rev + "\";")
|
print("static const char* const DTVERSION_rev = \"" + rev + "\";")
|
||||||
|
|
||||||
# Warn after the print, so at least the header has good contents
|
|
||||||
if re.search('UNKNOWN', rev):
|
|
||||||
print("%Warning: No git revision found in config_rev.py", file=sys.stderr)
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue