Summary
xmsconan vs2019 build returns exit code 0 even when configurations fail. The summary table reports the failures correctly, but the process return code does not reflect them.
Hit while building xmsmesher 6.0.8 for msvc 192:
==> Summary
+-----------+----------+-------------+-------------+----------+-----------+
| library | status | attempted | succeeded | failed | elapsed |
|-----------+----------+-------------+-------------+----------+-----------|
| xmsmesher | failed | 13 | 9 | 4 | 253.5s |
+-----------+----------+-------------+-------------+----------+-----------+
[exited with code 0]
Note status | failed and failed | 4 alongside a zero return code.
Why this matters
The VS2019 track is a manual, multi-step process: build → upload → wheel-repair → wheel-deploy. Anything that chains those steps — a script, a Makefile, CI if this is ever automated, or an agent driving the tool — will read the exit code, conclude the build was clean, and proceed to publish a partial package set to the shared aquaveo-vs2019 remote.
That remote is hard to un-publish, which makes a silent partial publish considerably worse than a loud failure. In this instance the failure was caught only because the summary table was read by eye.
Expected
Non-zero exit when any configuration fails, so the failure propagates to whatever invoked it.
Worth considering how this should interact with --continue-on-error: that flag reasonably means "keep building the remaining configurations after one fails", but it should probably still exit non-zero at the end, since its purpose is to maximise information from one run rather than to downgrade failures to warnings. In the run above --continue-on-error was not passed, yet the build continued through all 13 configurations anyway — which may be a second, related bug.
Reproduce
Build a library whose test suite fails under msvc 192 — xmsmesher 6.0.8 does this today (see xmsmesher#85, floating-point baseline divergence between msvc 192 and msvc 194):
xmsconan vs2019 build --root <root> --only xmsmesher --version 6.0.8 --python-versions 3.10
echo $? # 0, despite 4 failed configurations
Summary
xmsconan vs2019 buildreturns exit code 0 even when configurations fail. The summary table reports the failures correctly, but the process return code does not reflect them.Hit while building xmsmesher 6.0.8 for msvc 192:
Note
status | failedandfailed | 4alongside a zero return code.Why this matters
The VS2019 track is a manual, multi-step process:
build→upload→wheel-repair→wheel-deploy. Anything that chains those steps — a script, a Makefile, CI if this is ever automated, or an agent driving the tool — will read the exit code, conclude the build was clean, and proceed to publish a partial package set to the sharedaquaveo-vs2019remote.That remote is hard to un-publish, which makes a silent partial publish considerably worse than a loud failure. In this instance the failure was caught only because the summary table was read by eye.
Expected
Non-zero exit when any configuration fails, so the failure propagates to whatever invoked it.
Worth considering how this should interact with
--continue-on-error: that flag reasonably means "keep building the remaining configurations after one fails", but it should probably still exit non-zero at the end, since its purpose is to maximise information from one run rather than to downgrade failures to warnings. In the run above--continue-on-errorwas not passed, yet the build continued through all 13 configurations anyway — which may be a second, related bug.Reproduce
Build a library whose test suite fails under msvc 192 — xmsmesher 6.0.8 does this today (see xmsmesher#85, floating-point baseline divergence between msvc 192 and msvc 194):