While error reporting in general is currently poor (see #5), it's especially bad when environment creation fails.
6 got rid of one of the worst offenders in that regard (the implicit source build support), but even dependency download failures can be hard to spot in the middle of a full environment stack build.
The following would provide a general improvement in subprocess output handling:
Set up the subprocess execution such that two log files are created inside each build environment: a merged stdout + stderr file, and a dedicated stderr file (these could either go in a _venvstacks_build subfolder that gets excluded from publish and local-export operations, or else they could be stored outside the build env in a parallel hierarchy, similar to the way the archive metadata is already handled)
Before each subprocess invocation in a given build environment, open and seek to the end of the stderr file
If the subprocess invocation fails, only report the additions to the stderr file since the command was started rather than dumping the whole thing
A simpler first iteration on this idea would be to just log separate stdout and stderr files for each operation during the build (since subprocess.run supports that natively, while merging the two streams while also logging stderr separately needs to be managed by the host app).
It's also worth checking if there are any decent third party libraries for this (since it's hardly a venvstacks-specific problem).
While error reporting in general is currently poor (see #5), it's especially bad when environment creation fails.
6 got rid of one of the worst offenders in that regard (the implicit source build support), but even dependency download failures can be hard to spot in the middle of a full environment stack build.
The following would provide a general improvement in subprocess output handling:
_venvstacks_build
subfolder that gets excluded frompublish
andlocal-export
operations, or else they could be stored outside the build env in a parallel hierarchy, similar to the way the archive metadata is already handled)A simpler first iteration on this idea would be to just log separate stdout and stderr files for each operation during the build (since subprocess.run supports that natively, while merging the two streams while also logging stderr separately needs to be managed by the host app).
It's also worth checking if there are any decent third party libraries for this (since it's hardly a
venvstacks
-specific problem).