Fix libraries-interpreter Linux failures: Configuration case mismatch#126377
Fix libraries-interpreter Linux failures: Configuration case mismatch#126377
Conversation
The buildConfig parameter was set to 'release' (lowercase) which flows through to SendToHelix as /p:Configuration=release. However, the build step produces artifacts under the PascalCase 'Release' path. On Linux's case-sensitive filesystem, SendToHelix zips an empty directory because net11.0-linux-release-x64/ != net11.0-linux-Release-x64/, causing all Helix work items to fail with 'dotnet: No such file or directory'. Change buildConfig to 'Release' (PascalCase) to match the convention used by other working pipelines (libraries-jitstress, libraries-gcstress-extra, runtime-nativeaot-outerloop). This pipeline has been 100% red across all 13 retained builds (Mar 2-30). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Tagging subscribers to this area: @dotnet/area-infrastructure-libraries |
There was a problem hiding this comment.
Pull request overview
Updates the CoreCLR libraries-interpreter pipeline configuration casing so the build artifacts and the SendToHelix step agree on Configuration on Linux (case-sensitive paths), preventing empty testhost zips and subsequent “dotnet: No such file or directory” failures.
Changes:
- Change
buildConfigfromrelease→Releasein thelibraries-interpreterpipeline to align with produced artifact folder casing.
🤖 Copilot Code Review — PR #126377Note This review was generated by GitHub Copilot. Holistic AssessmentMotivation: Justified. The Approach: Correct and minimal. Changing Summary: ✅ LGTM. The one-line fix correctly addresses the root cause of the Linux test failures. Detailed Findings✅ Correctness — Fix addresses the real root causeThe bug occurs because
Changing to Note: Azure DevOps ✅ Consistency — Matches established conventionAll working sibling pipelines that use the same
💡 Cross-cutting observation — Sibling pipeline has the same latent bug
|
| parameters: | ||
| jobTemplate: /eng/pipelines/common/global-build-job.yml | ||
| buildConfig: release | ||
| buildConfig: Release |
There was a problem hiding this comment.
Thanks for spotting this! I've read this file multiple times trying to spot anything wrong and just haven't seen this.
There was a problem hiding this comment.
I'll gladly take the credit for copilot ;-)
Summary
The
runtime-libraries-interpreterpipeline has been 100% red across all 13 retained builds (Mar 2–30). The Linux leg fails with:Root Cause
buildConfig: release(lowercase) flows through to SendToHelix as/p:Configuration=release, but the build step produces artifacts under PascalCaseRelease. On Linux's case-sensitive filesystem:NetCoreAppCurrentTestHostPath-c Release)testhost/net11.0-linux-**R**elease-x64//p:Configuration=release)testhost/net11.0-linux-**r**elease-x64/SendToHelix zips an empty directory → Helix work items can't find
dotnet.Windows/macOS are case-insensitive so they find the binary (but then timeout under InterpMode=3 — separate issue).
Fix
Change
buildConfig: release→buildConfig: Releaseto match the convention used by other working pipelines (libraries-jitstress,libraries-gcstress-extra,runtime-nativeaot-outerloop).Confirmed via binlog analysis
Downloaded Build.binlog and SendToHelix.binlog from build 1358001. The
NetCoreAppCurrentTestHostPathproperty differs in casing between the two binlogs.Note
Other pipelines (
gc-longrunning,r2r,superpmi-diffs) also use lowercasebuildConfigand may have the same latent bug on Linux legs.