feat(build): live-stream Linux build output; ns7zip via in-guest clone
Lint / pssa (push) Failing after 26s
Lint / python (push) Successful in 52s

- SshTransport.run_streaming: incremental channel recv, forwards
  stdout/stderr live (no more one-block-at-end). _linux_build uses it
  with PYTHONUNBUFFERED so the guest python flushes promptly.
- _tail_lines split out for failure messages (no double print).
- Windows live streaming deferred (TODO 8.2) — pypsrp execute_ps
  returns only at completion.
- build-ns7zip.yml: use-git-clone:'true' (in-guest), repo-url ->
  https://gitea.emulab.it/... (guest-reachable; host SSH alias was
  host-only). Requires GiteaPAT in the LocalSystem keyring or a public
  nsis-plugin-ns7zip.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Simone
2026-05-17 20:51:48 +02:00
parent 29c4ef09bc
commit 4f22d11a84
5 changed files with 110 additions and 10 deletions
+7
View File
@@ -53,6 +53,13 @@ class _FakeTransport:
raise TransportCommandError(result.returncode, result.stdout, result.stderr)
return result
def run_streaming(
self, script: str, *, check: bool = True, timeout: float | None = None
) -> _FakeResult:
# Tests don't exercise live streaming; delegate to run() so
# capture + check semantics (and _BuildFails overrides) hold.
return self.run(script, check=check)
def copy(self, local_path: str, remote_path: str) -> None:
self.copies.append((str(local_path), remote_path))