Changes:
- add a new NuGet dependency on `Microsoft.Applications.Events.Server` (which is the cross-plat Aria SDK)
- use that on Linux and Mac
- delete the native SDK previously used on Mac
Changes:
- fix various file name capitalization errors
- fix various nuget package name capitalization errors
- create and publish `Bond.CSharp.linux-x64` nuget package
- add `/etc` to default untracked scopes
- untrack `$HOME/.dotnet` when running the `Downloader` tool
- consistently spell `App.config`
With these changes, all of the following succeed for me in Ubuntu 20.04 WSL running in Windows 11:
- `./bxl.sh --minimal`
- `./bxl.sh --minimal --internal`
- `./bxl.sh --minimal --internal --shared-comp`
Once the changes make it to LKG, the next step will be to set up a Linux pipeline to build minimal selfhost. Later, that pipeline can be expanded to run unit tests etc.
Various small changes that allow building selfhost with BuildXL on Linux.
What's missing:
- downloading nugets
- remote telemetry
- bond.csharp tool (`gbc`) for Linux (needs to be built from sources and published as a new nuget)
- rush stuff
If (1) nugets are first downloaded manually, and (2) `gbc` is manually replaced with a Linux binary, building minimal selfhost on Linux works.
As of now, to run tests on Mac one must sequentially do the following:
1. run a BuildXL build that only compiles all test assemblies and creates a *standalone* test deployment
1. run another BuildXL build from the previously created standalone test deployment that actually executes the tests
Some drawbacks of this approach:
1. have to run 2 steps in sequence
1. tests that are executed on Mac must be explicitly opted-in (see [tests.osx.dsc](https://dev.azure.com/mseng/Domino/_git/BuildXL.Internal?path=%2FPublic%2FSrc%2FDeployment%2FTests.Osx%2Ftests.osx.dsc&version=GBmaster&line=15&lineEnd=15&lineStartColumn=14&lineEndColumn=27&lineStyle=plain))
- this makes it easy to forget to opt in any newly added test assemblies
1. impossible to execute just a single test class or test method at once
1. some SDKs (e.g., `xunit.dsc`) are duplicated between the main build and the build used for executing standalone test deployments.
The main reason for this setup was the fact that the main build and the unit tests themselves might require different versions of the MacSandbox kext to be loaded.
This PR makes it possible to compile and execute tests in a single build, matching the experience on Windows. For example, running
```bash
./bxl.sh --internal
```
on a Mac will execute the full selfhost build, including executing all the tests. Individual tests can still opt out of Mac (by using the existing mechanisms like `[(Class|Theory|Fact)IfSupported[requiresWindowsBasedOperatingSystem: true]`).
We already have different IDs for the release and debug configurations of the MacSandbox kext, which means we can already have different versions of the kext loaded as long as one is a 'release' and the other is 'debug'. That makes it sufficient for the most common scenario of using a 'release' version of BuildXL to run a build in which tests are executed in 'debug' configuration. It is also possible to execute both 'release' and 'debug' tests in a single build, but for that, a dev version of BuildXL must be built first and then used for subsequent test execution.
**Important Note**: the user is still responsible for ensuring that the necessary kexts are loaded (this needs to be done only when the kext changes; once loaded, the kexts don't need to be touched/reloaded between builds/test executions). To load the debug version of the kext:
```bash
./bxl.sh --minimal # produces out/bin/debug/osx-x64/*
out/bin/debug/osx-x64/bxl.sh --load-kext
```
Main changes:
- annotate Windows-only tests as such (so that they are skipped over when running on Mac)
- fix various small platform-dependent issues (like using an appropriate directory separator char)
- fix DScript SDK tests
- add `--test-method` and `--test-class` switches to `bxl.sh` to correspond to `-TestMethod` and `-TestClass` in `bxl.ps1`
Once this change is merged, I'll update the PR validation pipelines and remove the code for producing the standalone test deployment.
Merged PR 526181
The new LKG contains changes to how nuget/cgmanifest.json is generated. To avoid breaking our validation, the LKG and the generated nuget/cgmanifest.json must be updated together (this is a one-off manual update).
* Adjust tooling to work out of the box with the latest public LKG on macOS
* Update the distributed test commit hash for the CI pipeline Part B
* Only add the deployment root on non-windows runs
* Restore all script exec permissions, update Readme.md with better macOS instructions
* Always run sandboxed when building internal
* Exec permission adjustment for all scripts