Enable partial Linux builds for Copilot support#24494
Conversation
Co-authored-by: rolfbjarne <249268+rolfbjarne@users.noreply.github.com>
Co-authored-by: rolfbjarne <249268+rolfbjarne@users.noreply.github.com>
rolfbjarne
left a comment
There was a problem hiding this comment.
@copilot the network problems have been fixed, please try again
…holder' instead of 'dummy', keep INCLUDE_* variables Co-authored-by: rolfbjarne <249268+rolfbjarne@users.noreply.github.com>
Tested successfully! The build now progresses much further:
The repository now builds successfully on Linux up to the point where Xcode/native tools are required. |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
@copilot Skip the runtime directory in the top-level Makefile when building on Linux. In fact, skip any directory that requires native compilation by skipping it in the parent directory's Makefile. |
Co-authored-by: rolfbjarne <249268+rolfbjarne@users.noreply.github.com>
Done in commit c5ff867. The |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
@copilot Add a CI job/stage to verify that this doesn't regress. |
Co-authored-by: rolfbjarne <249268+rolfbjarne@users.noreply.github.com>
Added in commit e807828. Created a GitHub Actions workflow (
The workflow will fail if any of these Linux build capabilities regress. |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Co-authored-by: rolfbjarne <249268+rolfbjarne@users.noreply.github.com>
✅ [PR Build #8b76d8e] Build passed (Detect API changes) ✅Pipeline on Agent |
✅ [CI Build #8b76d8e] Build passed (Build packages) ✅Pipeline on Agent |
✅ API diff for current PR / commitNET (empty diffs)✅ API diff vs stableNET (empty diffs)ℹ️ Generator diffGenerator Diff: vsdrops (html) vsdrops (raw diff) gist (raw diff) - Please review changes) Pipeline on Agent |
✅ [CI Build #8b76d8e] Build passed (Build macOS tests) ✅Pipeline on Agent |
💻 [CI Build #8b76d8e] Tests on macOS X64 - Mac Sonoma (14) passed 💻✅ All tests on macOS X64 - Mac Sonoma (14) passed. Pipeline on Agent |
💻 [CI Build #8b76d8e] Tests on macOS M1 - Mac Monterey (12) passed 💻✅ All tests on macOS M1 - Mac Monterey (12) passed. Pipeline on Agent |
💻 [CI Build #8b76d8e] Tests on macOS arm64 - Mac Sequoia (15) passed 💻✅ All tests on macOS arm64 - Mac Sequoia (15) passed. Pipeline on Agent |
💻 [CI Build #8b76d8e] Tests on macOS M1 - Mac Ventura (13) passed 💻✅ All tests on macOS M1 - Mac Ventura (13) passed. Pipeline on Agent |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
💻 [CI Build #8b76d8e] Tests on macOS arm64 - Mac Tahoe (26) passed 💻✅ All tests on macOS arm64 - Mac Tahoe (26) passed. Pipeline on Agent |
🚀 [CI Build #8b76d8e] Test results 🚀Test results✅ All tests passed on VSTS: test results. 🎉 All 117 tests passed 🎉 Tests counts✅ cecil: All 1 tests passed. Html Report (VSDrops) Download Pipeline on Agent |
Plan: Enable Building on Linux
system-dependencies.shto skip macOS-only checksMake.configto handle missing Xcode variablesbuilds/Makefilefor Linux compatibility (use CP variable)makeiterates intobuildsandsrc(skipsruntime) ✅Changes Made:
cp -c, create cache directory before useset -ex, just verifiesmakesucceeds, uses parallel make (-j) for speedDotnetGlobals.cs→DotNetGlobals.cs-Fsinstead of-Fhs(GNU ln doesn't support -h flag)Result: Successfully builds on Linux through .NET download and into builds/src/msbuild/tools/tests directories. Builds cleanly on macOS without leaving untracked files. Skips runtime, dotnet, and test-libraries directories that require native compilation or macOS platform. Uses cleaner conditional addition pattern for SUBDIRS. Fixed multiple case-sensitivity, sed syntax (using bash arrays), ln command flags, and git command issues. Simplified CI workflow with parallel make ensures fast builds and prevents regressions.
Original prompt
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.