Skip to content

Isolate ANGLE from inherited Visual Studio state #165

Closed

Description

@wieslawsoltes

Problem

The reusable Windows graphics action initializes the Visual Studio x64 environment for every component. A workflow that composes Dawn and ANGLE in one job therefore enters ANGLE with duplicated developer-command state from Dawn. Chromium then invokes vcvarsall for its x86 environment block and exits 255 before GN generation.

This is distinct from #162: #163 made the x86/target SDK versions deterministic and passes in an isolated ANGLE job. Exact package run 35120274047, job 104876305155, proves sequential composition still fails after Dawn:

vcvarsall.bat amd64_x86 10.0.26100.0

The inherited environment contains repeated Visual Studio PATH, INCLUDE, LIB, LIBPATH, Windows SDK, and VSCMD_* state.

Proposed fix

  1. Derive a private ANGLE child-process environment from the caller environment.
  2. Restore PATH from Visual Studio's __VSCMD_PREINIT_PATH and remove developer-command variables before Chromium runs its own toolchain setup.
  3. Preserve unrelated runner, cache, Git, and WebScene variables.
  4. Leave os.environ and the outer workflow environment unchanged.
  5. Fail closed when an initialized Visual Studio environment does not expose its original path.

Acceptance

  • Unit coverage proves the child environment is clean, unrelated values survive, the caller dictionary is byte-for-byte unchanged, and a missing original path is rejected.
  • Isolated Windows ANGLE graphics validation remains green.
  • A sequential Dawn then ANGLE Windows package job passes GN, full graphics compilation, native CTest, evidence, packaging, and installed consumer gates.

Blocks #160/#161 and Stack #157 (#79, #80). Related to draft consolidation PR #76.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions