diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index a8a2e86df85..5f24351bbdc 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -27,26 +27,24 @@ Plan your task: Always run the core command. Always verify exit codes. No assumptions. -## 1. Core Command +## 1. Build ``` -./build.sh -c Release --testcoreclr +dotnet build FSharp.sln -c Release ``` -Non‑zero → classify & stop. -## 2. Bootstrap (Failure Detection Only) -Two-phase build. No separate bootstrap command. -Early proto/tool errors (e.g. "Error building tools") → `BootstrapFailure` (capture key lines). Stop. +## 2. Test +``` +dotnet test tests/FSharp.Compiler.ComponentTests -c Release +dotnet test tests/FSharp.Compiler.Service.Tests -c Release +``` ## 3. Build Failure -Proto ok but solution build fails → `BuildFailure`. Capture exit code, ≤15 error lines (`error FS`, `error F#`, `error MSB`), binlog path: `artifacts/log/Release/Build.*.binlog`. Do not proceed to tests. -## 4. Tests -Core command runs CoreCLR tests: +## 4. Tests (Full Suite) +Additional CoreCLR tests: - FSharp.Test.Utilities -- FSharp.Compiler.ComponentTests -- FSharp.Compiler.Service.Tests - FSharp.Compiler.Private.Scripting.UnitTests - FSharp.Build.UnitTests - FSharp.Core.UnitTests diff --git a/.github/workflows/copilot-setup-steps.yml b/.github/workflows/copilot-setup-steps.yml index 5e2a8cdd00f..9765f0ae337 100644 --- a/.github/workflows/copilot-setup-steps.yml +++ b/.github/workflows/copilot-setup-steps.yml @@ -14,19 +14,12 @@ jobs: # You can define any steps you want, and they will run before the agent starts. # If you do not check out your code, Copilot will do this for you. steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: actions/checkout@v4 - uses: actions/setup-dotnet@v4 with: global-json-file: global.json - - name: Restore the compiler service solution - env: - CI: false - run: ./build.sh -c Release --verbosity quiet || true - - name: Restore the language server solution - env: - CI: false - run: dotnet build ./LSPSolutionSlim.sln -c Release --verbosity quiet || true - - name: Restore dotnet tools - env: - CI: false - run: dotnet tool restore + - name: Restore + run: | + dotnet restore FSharp.sln || true + dotnet restore LSPSolutionSlim.sln || true + dotnet tool restore || true diff --git a/Directory.Build.targets b/Directory.Build.targets index 67e9278086f..635c229660d 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -1,4 +1,5 @@ + diff --git a/eng/targets/Bootstrap.targets b/eng/targets/Bootstrap.targets new file mode 100644 index 00000000000..df383bbcf36 --- /dev/null +++ b/eng/targets/Bootstrap.targets @@ -0,0 +1,92 @@ + + + + + + + $(ArtifactsDir)Bootstrap\ + + + $(BootstrapDir)fslex\fslex.dll + $(BootstrapDir)fsyacc\fsyacc.dll + $(BootstrapDir)fsc\fsc.dll + + + <_SkipBootstrap Condition="'$(Configuration)' == 'Proto'">true + <_SkipBootstrap Condition="'$(DisableCompilerRedirection)' == 'true'">true + <_SkipBootstrap Condition="'$(BUILDING_USING_DOTNET)' == 'true'">true + <_SkipBootstrap Condition="$(MSBuildProjectDirectory.StartsWith('$(ArtifactsDir)'))">true + + + + + + + <_BootstrapNeeded>false + <_BootstrapNeeded Condition="!Exists('$(FsLexBootstrapPath)')">true + <_BootstrapNeeded Condition="!Exists('$(FsYaccBootstrapPath)')">true + <_BootstrapNeeded Condition="!Exists('$(FscBootstrapPath)')">true + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/proto.proj b/proto.proj index 313cf2efdca..b88fff03a8c 100644 --- a/proto.proj +++ b/proto.proj @@ -2,6 +2,7 @@ Bootstrap + Bootstrap