diff --git a/generate_gateware_overlays.py b/generate_gateware_overlays.py index 145f4882c132ba3049673d76e57d88f2ebf603b4..1c034fd3fb43b43bcf4321f5c5c526cf4cf7d43e 100644 --- a/generate_gateware_overlays.py +++ b/generate_gateware_overlays.py @@ -2,6 +2,7 @@ import os import struct import ctypes import sys +import subprocess from gather_dtso import gather_dtso @@ -102,13 +103,34 @@ def create_dtbo_info(overlay_dir_path): print(dtbo_info[:]) +def get_gateware_git_version(work_dir): + cwd = os.getcwd() + gateware_dir = os.path.join(work_dir, '..', 'sources','gateware') + os.chdir(gateware_dir) + try: + git_hash = subprocess.check_output(['git', 'describe', '--tags']) + except subprocess.CalledProcessError as e: + git_hash = 0 + os.chdir(cwd) + return git_hash.decode('ascii').strip("'").strip("\n") + + +def inject_git_info_into_src_dtso(dtso_file, git_version): + with open(dtso_file, "r") as f: + dtso = f.read() + dtso = dtso.replace('GATEWARE_GIT_VERSION', git_version) + with open(dtso_file, "w") as fout: + fout.write(dtso) + + def compile_dtso(work_dir): root_dir = os.path.join(work_dir, 'dtbo', 'context-0') - cwd = os.getcwd() + git_version = get_gateware_git_version(work_dir) for root, dirs, files in os.walk(root_dir): for file in files: if file.endswith(".dtso"): dtso_file = os.path.join(root, file) + inject_git_info_into_src_dtso(dtso_file, git_version) dtbo_file = os.path.splitext(dtso_file)[0] + '.dtbo' cmd = 'dtc -O dtb -I dts -o ' + dtbo_file + ' ' + dtso_file os.system(cmd)