build.plat: remove TemplatedPlatform.unix_interpreter.
authorwhitequark <whitequark@whitequark.org>
Wed, 21 Aug 2019 21:02:05 +0000 (21:02 +0000)
committerwhitequark <whitequark@whitequark.org>
Wed, 21 Aug 2019 21:02:13 +0000 (21:02 +0000)
Vendor toolchains generally require far more workarounds than this,
and we already have a perfectly fine way of overriding templates.

nmigen/build/plat.py
nmigen/vendor/xilinx_spartan_3_6.py

index af0edca19f04a1b17e73e39f1ecef656555672fe..20c0e3db51ca344369f32fafe91a567f639f77b3 100644 (file)
@@ -225,13 +225,11 @@ class TemplatedPlatform(Platform):
     toolchain         = abstractproperty()
     file_templates    = abstractproperty()
     command_templates = abstractproperty()
-    unix_interpreter  = "sh"
 
     build_script_templates = {
         "build_{{name}}.sh": """
             # {{autogenerated}}
             set -e{{verbose("x")}}
-            {{emit_unix_interpreter()}}
             [ -n "$NMIGEN_{{platform.toolchain}}_env" ] && . "$NMIGEN_{{platform.toolchain}}_env"
             {{emit_commands("sh")}}
         """,
@@ -248,13 +246,6 @@ class TemplatedPlatform(Platform):
         # and to incorporate the nMigen version into generated code.
         autogenerated = "Automatically generated by nMigen {}. Do not edit.".format(__version__)
 
-        def emit_unix_interpreter():
-            if self.unix_interpreter == "sh":
-                return "# runs on any POSIX sh"
-            if self.unix_interpreter == "bash":
-                return """if [ -z "$BASH" ] ; then exec /bin/bash "$0" "$@"; fi"""
-            assert False
-
         def emit_design(backend):
             backend_mod = {"rtlil": rtlil, "verilog": verilog}[backend]
             return backend_mod.convert_fragment(fragment, name=name)
@@ -321,7 +312,6 @@ class TemplatedPlatform(Platform):
             return compiled.render({
                 "name": name,
                 "platform": self,
-                "emit_unix_interpreter": emit_unix_interpreter,
                 "emit_design": emit_design,
                 "emit_commands": emit_commands,
                 "get_tool": get_tool,
index 2f93e455db9b4a84f119bcb9a1162795cb363c15..ffda165c3c3180a7bf231001242dcd10f80d5e08 100644 (file)
@@ -76,6 +76,13 @@ class XilinxSpartan3Or6Platform(TemplatedPlatform):
 
     file_templates = {
         **TemplatedPlatform.build_script_templates,
+        "build_{{name}}.sh": r"""
+            # {{autogenerated}}
+            set -e{{verbose("x")}}
+            if [ -z "$BASH" ] ; then exec /bin/bash "$0" "$@"; fi
+            [ -n "$NMIGEN_{{platform.toolchain}}_env" ] && . "$NMIGEN_{{platform.toolchain}}_env"
+            {{emit_commands("sh")}}
+        """,
         "{{name}}.v": r"""
             /* {{autogenerated}} */
             {{emit_design("verilog")}}
@@ -118,7 +125,6 @@ class XilinxSpartan3Or6Platform(TemplatedPlatform):
             {{get_override("add_constraints")|default("# (add_constraints placeholder)")}}
         """
     }
-    unix_interpreter  = "bash"
     command_templates = [
         r"""
         {{get_tool("xst")}}