build.run: Ensure batch script returns proper error code. #149
+7
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The Windows command line is a mess.
When trying to synthesize some
nmigen
code today, I ran into anextpnr
problem that caused the whole build to fail. The batch script correctly exited early, butCalledProcessError
was never raised (meaning return code fromcheck_call
was0
). Since I haddo_program=True
,plat.build
continued, and this cascaded into more errors:After doing some research, I found prepending
call
to the batch file command fixes this error. This SO answer goes into detail about how rather screwed up error code returning is on Windows, and is based on someone's assembly-level (!) debugging ofcmd.exe
.With this patch, and with nothing else changes,
nmigen
now raisesCalledProcessError
if the batch script fails: