Skip to content

Commit 78b90fb

Browse files
committed
build.plat,vendor: fix toolchain environment variable check.
The bug was introduced in commit 15b6068. A changelog entry was also missing. Fixes #1089.
1 parent d8f70be commit 78b90fb

File tree

7 files changed

+27
-49
lines changed

7 files changed

+27
-49
lines changed

amaranth/build/plat.py

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,7 @@ def build(self, elaboratable, name="top",
8989
# may fail.
9090
# This is OK because even if `require_tool` succeeds, the toolchain might be broken anyway.
9191
# The check only serves to catch common errors earlier.
92-
got_env_var = any(v in os.environ for v in self._all_toolchain_env_vars)
93-
if do_build and not got_env_var:
92+
if do_build and not self._toolchain_env_var not in os.environ:
9493
for tool in self.required_tools:
9594
require_tool(tool)
9695

@@ -105,7 +104,7 @@ def build(self, elaboratable, name="top",
105104
self.toolchain_program(products, name, **(program_opts or {}))
106105

107106
def has_required_tools(self):
108-
if any(v in os.environ for v in self._all_toolchain_env_vars):
107+
if self._toolchain_env_var in os.environ:
109108
return True
110109
return all(has_tool(name) for name in self.required_tools)
111110

@@ -271,17 +270,13 @@ class TemplatedPlatform(Platform):
271270
#!/bin/sh
272271
# {{autogenerated}}
273272
set -e{{verbose("x")}}
274-
{% for var in platform._all_toolchain_env_vars %}
275-
[ -n "${{var}}" ] && . "${{var}}"
276-
{% endfor %}
273+
[ -n "${{platform._toolchain_env_var}}" ] && . "${{platform._toolchain_env_var}}"
277274
{{emit_commands("sh")}}
278275
""",
279276
"build_{{name}}.bat": """
280277
@rem {{autogenerated}}
281278
{{quiet("@echo off")}}
282-
{% for var in platform._all_toolchain_env_vars %}
283-
if defined {{var}} call %{{var}}%
284-
{% endfor %}
279+
if defined {{platform._toolchain_env_var}} call %{{platform._toolchain_env_var}}%
285280
{{emit_commands("bat")}}
286281
""",
287282
}

amaranth/vendor/_intel.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,11 @@ class IntelPlatform(TemplatedPlatform):
8282
"build_{{name}}.sh": r"""
8383
#!/bin/sh
8484
# {{autogenerated}}
85-
{% for var in platform._all_toolchain_env_vars %}
86-
if [ -n "${{var}}" ]; then
87-
QUARTUS_ROOTDIR=$(dirname $(dirname "${{var}}"))
85+
if [ -n "${{platform._toolchain_env_var}}" ]; then
86+
QUARTUS_ROOTDIR=$(dirname $(dirname "${{platform._toolchain_env_var}}"))
8887
# Quartus' qenv.sh does not work with `set -e`.
89-
. "${{var}}"
88+
. "${{platform._toolchain_env_var}}"
9089
fi
91-
{% endfor %}
9290
set -e{{verbose("x")}}
9391
{{emit_commands("sh")}}
9492
""",

amaranth/vendor/_lattice_ecp5.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -186,12 +186,10 @@ class LatticeECP5Platform(TemplatedPlatform):
186186
# {{autogenerated}}
187187
set -e{{verbose("x")}}
188188
if [ -z "$BASH" ] ; then exec /bin/bash "$0" "$@"; fi
189-
{% for var in platform._all_toolchain_env_vars %}
190-
if [ -n "${{var}}" ]; then
191-
bindir=$(dirname "${{var}}")
192-
. "${{var}}"
189+
if [ -n "${{platform._toolchain_env_var}}" ]; then
190+
bindir=$(dirname "${{platform._toolchain_env_var}}")
191+
. "${{platform._toolchain_env_var}}"
193192
fi
194-
{% endfor %}
195193
{{emit_commands("sh")}}
196194
""",
197195
"{{name}}.v": r"""

amaranth/vendor/_lattice_ice40.py

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -178,22 +178,16 @@ class LatticeICE40Platform(TemplatedPlatform):
178178
#!/bin/sh
179179
# {{autogenerated}}
180180
set -e{{verbose("x")}}
181-
{% for var in platform._all_toolchain_env_vars %}
182-
if [ -n "${{var}}" ]; then
183-
# LSE environment
184-
export LD_LIBRARY_PATH=${{var}}/LSE/bin/lin64:$LD_LIBRARY_PATH
185-
export PATH=${{var}}/LSE/bin/lin64:$PATH
186-
export FOUNDRY=${{var}}/LSE
187-
# Synplify environment
188-
export LD_LIBRARY_PATH=${{var}}/sbt_backend/bin/linux/opt/synpwrap:$LD_LIBRARY_PATH
189-
export PATH=${{var}}/sbt_backend/bin/linux/opt/synpwrap:$PATH
190-
export SYNPLIFY_PATH=${{var}}/synpbase
191-
# Common environment
192-
export SBT_DIR=${{var}}/sbt_backend
193-
else
194-
echo "Variable ${{platform._toolchain_env_var}} must be set" >&2; exit 1
195-
fi
196-
{% endfor %}
181+
# LSE environment
182+
export LD_LIBRARY_PATH=${{platform._toolchain_env_var}}/LSE/bin/lin64:$LD_LIBRARY_PATH
183+
export PATH=${{platform._toolchain_env_var}}/LSE/bin/lin64:$PATH
184+
export FOUNDRY=${{platform._toolchain_env_var}}/LSE
185+
# Synplify environment
186+
export LD_LIBRARY_PATH=${{platform._toolchain_env_var}}/sbt_backend/bin/linux/opt/synpwrap:$LD_LIBRARY_PATH
187+
export PATH=${{platform._toolchain_env_var}}/sbt_backend/bin/linux/opt/synpwrap:$PATH
188+
export SYNPLIFY_PATH=${{platform._toolchain_env_var}}/synpbase
189+
# Common environment
190+
export SBT_DIR=${{platform._toolchain_env_var}}/sbt_backend
197191
{{emit_commands("sh")}}
198192
""",
199193
"{{name}}.v": r"""

amaranth/vendor/_lattice_machxo_2_3l.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,10 @@ class LatticeMachXO2Or3LPlatform(TemplatedPlatform):
5252
# {{autogenerated}}
5353
set -e{{verbose("x")}}
5454
if [ -z "$BASH" ] ; then exec /bin/bash "$0" "$@"; fi
55-
{% for var in platform._all_toolchain_env_vars %}
56-
if [ -n "${{var}}" ]; then
57-
bindir=$(dirname "${{var}}")
58-
. "${{var}}"
55+
if [ -n "${{platform._toolchain_env_var}}" ]; then
56+
bindir=$(dirname "${{platform._toolchain_env_var}}")
57+
. "${{platform._toolchain_env_var}}"
5958
fi
60-
{% endfor %}
6159
{{emit_commands("sh")}}
6260
""",
6361
"{{name}}.v": r"""

amaranth/vendor/_xilinx.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -143,9 +143,7 @@ def vendor_toolchain(self):
143143
# {{autogenerated}}
144144
set -e{{verbose("x")}}
145145
if [ -z "$BASH" ] ; then exec /bin/bash "$0" "$@"; fi
146-
{% for var in platform._all_toolchain_env_vars %}
147-
[ -n "${{var}}" ] && . "${{var}}"
148-
{% endfor %}
146+
[ -n "${{platform._toolchain_env_var}}" ] && . "${{platform._toolchain_env_var}}"
149147
{{emit_commands("sh")}}
150148
""",
151149
"{{name}}.v": r"""
@@ -261,9 +259,7 @@ def vendor_toolchain(self):
261259
# {{autogenerated}}
262260
set -e{{verbose("x")}}
263261
if [ -z "$BASH" ] ; then exec /bin/bash "$0" "$@"; fi
264-
{% for var in platform._all_toolchain_env_vars %}
265-
[ -n "${{var}}" ] && . "${{var}}"
266-
{% endfor %}
262+
[ -n "${{platform._toolchain_env_var}}" ] && . "${{platform._toolchain_env_var}}"
267263
{{emit_commands("sh")}}
268264
""",
269265
"{{name}}.v": r"""
@@ -516,9 +512,7 @@ def _xray_family(self):
516512
"build_{{name}}.sh": r"""
517513
# {{autogenerated}}
518514
set -e{{verbose("x")}}
519-
{% for var in platform._all_toolchain_env_vars %}
520-
[ -n "${{var}}" ] && . "${{var}}"
521-
{% endfor %}
515+
[ -n "${{platform._toolchain_env_var}}" ] && . "${{platform._toolchain_env_var}}"
522516
: ${DB_DIR:=/usr/share/nextpnr/prjxray-db}
523517
: ${CHIPDB_DIR:=/usr/share/nextpnr/xilinx-chipdb}
524518
{{emit_commands("sh")}}

docs/changes.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ Toolchain changes
8282
* Added: ``Simulator.add_testbench``. (`RFC 27`_)
8383
* Deprecated: ``Settle`` simulation command. (`RFC 27`_)
8484
* Deprecated: ``Simulator.add_process``. (`RFC 27`_)
85+
* Removed: (deprecated in 0.4) use of mixed-case toolchain environment variable names, such as ``NMIGEN_ENV_Diamond`` or ``AMARANTH_ENV_Diamond``; use upper-case environment variable names, such as ``AMARANTH_ENV_DIAMOND``.
8586

8687

8788
Platform integration changes

0 commit comments

Comments
 (0)