You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Because it uses the `$$` PID of the per-step shell.
(I think the pipe object it goes to may differ across steps too.)
This change gets interleaved high-level `cargo` output and lower
level `cc1` logging, without any other lower level commands as
would be obtained by telling `cargo` to produce more verbose
output. Those two kinds of output are displayed together from the
`cargo install` step. The full log of all `cc1` commands is again
displayed (unless there are no C or C++ builds, then it wouldn't be
created) in the subsequent step.
At this point, I think this approach is working better than the
preceding approach of deleting `cc1` (and, if present, `cc1plus`)
so `cargo` fails if anything uses it. This makes it easier to
figure out everything that will try to run `gcc` in ways that
result in `gcc` running `cc1` (or `cc1plus`), which should usually
only happen in order to compile C (or C++) code or to perform a
closely related operation.
The following two changes are deliberately not made at this time:
- Caching with the `rust-cache` action is not added back to this
job. Although the build is no longer inefficient and complex (as
in the approach of building, cleaning, breaking GCC, and building
again) here there is a simpler reason not to cache: we want to
find out if *any* build step, including for dependencies, is
compiling C (or C++). Caching could potentially hide that, if a
cached build artifact that had done so were able to be reused.
- No attempt is made to deparallelize the build. It would be useful
to do something like `-j1` so that the interleaved log output
would always pertain to an immediately adjacent step. However,
that is usually already the case, and native code builds are not
necessarily successfully deparallelized just by telling `cargo`
to only do one task at a time, since they use custom commands
(and even sometimes build systems) controlled through per-crate
`build.rs` code and build dependencies. Also, since we're not
caching, allowing parallelism may be useful to preserve speed.
(The `flock` command is only locking logging, not the actual
compilations.)
0 commit comments