From 475deb51ac7c04059251309806f9dcd3ead2245d Mon Sep 17 00:00:00 2001 From: Florent Kermarrec Date: Tue, 23 Apr 2019 17:40:24 +0200 Subject: [PATCH] build: add migen and litex git revision to generated file --- litex/build/altera/quartus.py | 2 +- litex/build/lattice/diamond.py | 4 ++-- litex/build/lattice/icestorm.py | 4 ++-- litex/build/lattice/trellis.py | 4 ++-- litex/build/microsemi/libero_soc.py | 4 ++-- litex/build/tools.py | 26 ++++++++++++++++++++------ litex/build/xilinx/ise.py | 4 ++-- litex/build/xilinx/vivado.py | 4 ++-- 8 files changed, 33 insertions(+), 19 deletions(-) diff --git a/litex/build/altera/quartus.py b/litex/build/altera/quartus.py index 29f695eb2..b34de9c17 100644 --- a/litex/build/altera/quartus.py +++ b/litex/build/altera/quartus.py @@ -111,7 +111,7 @@ def _build_files(device, sources, vincpaths, named_sc, named_pc, build_name): def _run_quartus(build_name, quartus_path): - build_script_contents = "# Autogenerated by LiteX / git: " + tools.git_revision() + "\n" + build_script_contents = "# Autogenerated by LiteX / git: " + tools.get_litex_git_revision() + "\n" build_script_contents += """ set -e diff --git a/litex/build/lattice/diamond.py b/litex/build/lattice/diamond.py index 56179faa9..95e634d28 100644 --- a/litex/build/lattice/diamond.py +++ b/litex/build/lattice/diamond.py @@ -72,12 +72,12 @@ def _build_files(device, sources, vincpaths, build_name): def _build_script(build_name, device, toolchain_path, ver=None): if sys.platform in ("win32", "cygwin"): script_ext = ".bat" - build_script_contents = "@echo off\nrem Autogenerated by LiteX / git: " + tools.git_revision() + "\n\n" + build_script_contents = "@echo off\nrem Autogenerated by LiteX / git: " + tools.get_litex_git_revision() + "\n\n" copy_stmt = "copy" fail_stmt = " || exit /b" else: script_ext = ".sh" - build_script_contents = "# Autogenerated by LiteX / git: " + tools.git_revision() + "\nset -e\n" + build_script_contents = "# Autogenerated by LiteX / git: " + tools.get_litex_git_revision() + "\nset -e\n" copy_stmt = "cp" fail_stmt = "" diff --git a/litex/build/lattice/icestorm.py b/litex/build/lattice/icestorm.py index 71d3d9735..90bbdefaf 100644 --- a/litex/build/lattice/icestorm.py +++ b/litex/build/lattice/icestorm.py @@ -35,11 +35,11 @@ def _build_pre_pack(vns, freq_cstrs): def _build_script(source, build_template, build_name, **kwargs): if sys.platform in ("win32", "cygwin"): script_ext = ".bat" - build_script_contents = "@echo off\nrem Autogenerated by LiteX / git: " + tools.git_revision() + "\n\n" + build_script_contents = "@echo off\nrem Autogenerated by LiteX / git: " + tools.get_litex_git_revision() + "\n\n" fail_stmt = " || exit /b" else: script_ext = ".sh" - build_script_contents = "# Autogenerated by LiteX / git: " + tools.git_revision() + "\nset -e\n" + build_script_contents = "# Autogenerated by LiteX / git: " + tools.get_litex_git_revision() + "\nset -e\n" fail_stmt = "" for s in build_template: diff --git a/litex/build/lattice/trellis.py b/litex/build/lattice/trellis.py index 2790b28d7..6558466a4 100644 --- a/litex/build/lattice/trellis.py +++ b/litex/build/lattice/trellis.py @@ -75,11 +75,11 @@ def _build_script(source, build_template, build_name, architecture, package, freq_constraint): if sys.platform in ("win32", "cygwin"): script_ext = ".bat" - build_script_contents = "@echo off\nrem Autogenerated by LiteX / git: " + tools.git_revision() + "\n\n" + build_script_contents = "@echo off\nrem Autogenerated by LiteX / git: " + tools.get_litex_git_revision() + "\n\n" fail_stmt = " || exit /b" else: script_ext = ".sh" - build_script_contents = "# Autogenerated by LiteX / git: " + tools.git_revision() + "\nset -e\n" + build_script_contents = "# Autogenerated by LiteX / git: " + tools.get_litex_git_revision() + "\nset -e\n" fail_stmt = "" for s in build_template: diff --git a/litex/build/microsemi/libero_soc.py b/litex/build/microsemi/libero_soc.py index e38e0590b..670a0c331 100644 --- a/litex/build/microsemi/libero_soc.py +++ b/litex/build/microsemi/libero_soc.py @@ -181,12 +181,12 @@ def _build_timing_sdc(vns, clocks, false_paths, build_name, additional_timing_co def _build_script(build_name, device, toolchain_path, ver=None): if sys.platform in ("win32", "cygwin"): script_ext = ".bat" - build_script_contents = "@echo off\nrem Autogenerated by LiteX / git: " + tools.git_revision() + "\n\n" + build_script_contents = "@echo off\nrem Autogenerated by LiteX / git: " + tools.get_litex_git_revision() + "\n\n" copy_stmt = "copy" fail_stmt = " || exit /b" else: script_ext = ".sh" - build_script_contents = "# Autogenerated by LiteX / git: " + tools.git_revision() + "\n" + build_script_contents = "# Autogenerated by LiteX / git: " + tools.get_litex_git_revision() + "\n" copy_stmt = "cp" fail_stmt = " || exit 1" diff --git a/litex/build/tools.py b/litex/build/tools.py index da8631b97..5cd92eb43 100644 --- a/litex/build/tools.py +++ b/litex/build/tools.py @@ -91,13 +91,27 @@ else: def cygpath(p): return p -def git_revision(): - return "--------" +def get_migen_get_revision(): + import migen + d = os.getcwd() + os.chdir(os.path.dirname(migen.__file__)) + r = subprocess.check_output(["git", "rev-parse", "--short", "HEAD"])[:-1].decode("utf-8") + os.chdir(d) + return r + +def get_litex_get_revision(): + import litex + d = os.getcwd() + os.chdir(os.path.dirname(litex.__file__)) + r = subprocess.check_output(["git", "rev-parse", "--short", "HEAD"])[:-1].decode("utf-8") + os.chdir(d) + return r def generated_banner(line_comment="//"): - r = line_comment + "-"*60 + "\n" - r += line_comment + " Generated by Migen & LiteX / " - r += git_revision() + " / " + r = line_comment + "-"*80 + "\n" + r += line_comment + " Auto-generated by Migen ({}) & LiteX ({}) on ".format( + get_migen_get_revision(), + get_litex_get_revision()) r += "{}\n".format(datetime.datetime.fromtimestamp(time.time()).strftime("%Y-%m-%d %H:%M:%S")) - r += line_comment + "-"*60 + "\n" + r += line_comment + "-"*80 + "\n" return r \ No newline at end of file diff --git a/litex/build/xilinx/ise.py b/litex/build/xilinx/ise.py index bbf9a5b58..9a0485759 100644 --- a/litex/build/xilinx/ise.py +++ b/litex/build/xilinx/ise.py @@ -91,13 +91,13 @@ def _run_ise(build_name, ise_path, source, mode, ngdbuild_opt, source_cmd = "call " script_ext = ".bat" shell = ["cmd", "/c"] - build_script_contents = "@echo off\nrem Autogenerated by LiteX / git: " + tools.git_revision() + "\n" + build_script_contents = "@echo off\nrem Autogenerated by LiteX / git: " + tools.get_litex_git_revision() + "\n" fail_stmt = " || exit /b" else: source_cmd = "source " script_ext = ".sh" shell = ["bash"] - build_script_contents = "# Autogenerated by LiteX / git: " + tools.git_revision() + "\nset -e\n" + build_script_contents = "# Autogenerated by LiteX / git: " + tools.get_litex_git_revision() + "\nset -e\n" fail_stmt = "" if source: settings = common.settings(ise_path, ver, "ISE_DS") diff --git a/litex/build/xilinx/vivado.py b/litex/build/xilinx/vivado.py index 4a940021e..fb039d0ef 100644 --- a/litex/build/xilinx/vivado.py +++ b/litex/build/xilinx/vivado.py @@ -58,13 +58,13 @@ def _build_xdc(named_sc, named_pc): def _run_vivado(build_name, vivado_path, source, ver=None): if sys.platform == "win32" or sys.platform == "cygwin": - build_script_contents = "REM Autogenerated by LiteX / git: " + tools.git_revision() + "\n" + build_script_contents = "REM Autogenerated by LiteX / git: " + tools.get_litex_git_revision() + "\n" build_script_contents += "vivado -mode batch -source " + build_name + ".tcl\n" build_script_file = "build_" + build_name + ".bat" tools.write_to_file(build_script_file, build_script_contents) command = build_script_file else: - build_script_contents = "# Autogenerated by LiteX / git: " + tools.git_revision() + "\nset -e\n" + build_script_contents = "# Autogenerated by LiteX / git: " + tools.get_litex_git_revision() + "\nset -e\n" # Only source Vivado settings if not already in our $PATH if not find_executable("vivado"): # For backwards compatibility with ISE paths, also