Microsoft Build Accelerator
Перейти к файлу
Sergey Tepliakov db9cad3928 Merged PR 566796: Always update tracker for async copy on pin
This PR has 2 set of changes:

1. It creates a test that covers async copy on pin in way more details. It checks that the lifetime of the pin and async copies are not linked to each other and it also checks that the location is registered once the async copy is done.
2. It changes the behavior of `CancellableOperationContext.Dispose` method.
This is actually the root cause of the cancellations we were seeing in async copies on pin.

`CancellableOperationContext` effectively links a given context together with another cancellation token. The main use case for that is to have a special context that will notify about a shutdown cancellation.

But in some cases, the call to `Dispose` method was cancelling a context as well.

Here is the scenario: `ContentSessionBase.PinAsync` was creating a "linked" context and was passing it to `PinCoreAsync`. Because of the behavior I mentioned above, the token from the context was cancelled when the pin is done.
This was causing the cancellation of the async operation before.

Related work items: #1755629
2020-08-03 17:17:16 +00:00
.config Flaky Test Management Service: Updating flaky tests 2020-07-30 19:02:45 +00:00
.vscode Merged PR 544336: [linux-sandbox] Pass and parse FileAccessManifest 2020-04-02 20:03:13 +00:00
Documentation Merged PR 566486: Update release notes 2020-07-29 19:48:45 +00:00
Examples Merged PR 558490: Remove implicit project reference semantics field on module configuration files 2020-06-15 18:46:10 +00:00
Private Merged PR 564435: Update .NET Core runtime to 3.1.6 2020-07-16 20:03:05 +00:00
Public Merged PR 566796: Always update tracker for async copy on pin 2020-08-03 17:17:16 +00:00
Shared New LKG 0.1.0-20200801.0 2020-08-03 16:08:03 +00:00
cg Merged PR 564947: Upgrade CB.QTest to 20.7.17.160336 2020-07-20 23:50:46 +00:00
third_party Merged PR 529759: Update XNU security headers 2020-01-20 14:24:46 +00:00
.editorconfig Merged PR 555506: Switch to Roslyn 3.5.0 2020-06-01 21:40:43 +00:00
.gitattributes Initial commit for the sandbox client and server 2018-11-06 15:01:51 -08:00
.gitignore Merged PR 543794: Initial sandbox implementation for Linux 2020-04-02 02:48:45 +00:00
BuildCache.cmd Initial sync 2019-03-28 15:35:49 -07:00
BuildCacheDefault.json Initial sync 2019-03-28 15:35:49 -07:00
BuildCacheDefaultNetCore.json Initial sync 2019-03-28 15:35:49 -07:00
BuildCacheOverride.json Initial sync 2019-03-28 15:35:49 -07:00
CODEOWNERS Adding Code owners (#133) 2019-04-11 19:23:06 -07:00
CODE_OF_CONDUCT.md Add CODE_OF_CONDUCT.md document (#765) 2019-08-19 16:56:06 -07:00
CONTRIBUTING.md Documentation updates (#1071) 2019-10-22 16:49:55 -07:00
CreatePr.cmd Merged PR 521990: Update CreatePr Script to work with Azure DevOps again 2019-12-02 20:02:16 +00:00
LICENSE Restoring licence file 2019-04-09 16:12:01 -07:00
README.md Fix a typo in README.md 2019-11-27 22:10:53 +00:00
RunCheckInTests-Test.cmd Initial sync 2019-03-28 15:35:49 -07:00
RunCheckInTests.cmd Merged PR 558613: Remove symlink definition files and lazy symlink materialization 2020-06-18 15:39:45 +00:00
RunCheckInTestsWithPAT.ps1 Nuget Credential Provider Auth Fix (#1087) 2019-10-30 11:34:42 -07:00
SECURITY.md Add Security.md document (#763) 2019-08-19 15:47:52 -07:00
SlimBuildForMacTests.cmd Initial sync 2019-03-28 15:35:49 -07:00
buddy.cmd Merged PR 538749: Add a preliminary Rush frontend to BuildXL 2020-03-12 06:24:11 +00:00
bxl.cmd Initial sync 2019-03-28 15:35:49 -07:00
bxl.sh [linux] changes needed for selfhost build 2020-04-21 18:21:00 +00:00
bxlanalyzer.cmd Merged PR 534479: Add helper to run analyzers quickly 2020-02-11 18:21:50 +00:00
clean.bat Initial sync 2019-03-28 15:35:49 -07:00
config.dsc Merged PR 564435: Update .NET Core runtime to 3.1.6 2020-07-16 20:03:05 +00:00
config.microsoftInternal.dsc Merged PR 564947: Upgrade CB.QTest to 20.7.17.160336 2020-07-20 23:50:46 +00:00
config.nuget.aspNetCore.dsc Merged PR 562793: Remove extraneous aspnetcore packages. Add updated aspnet core packages. Hand... 2020-07-15 16:57:45 +00:00
config.nuget.dotnetcore.dsc Merged PR 556497: Remove msbuild specific dependencies 2020-06-08 23:34:34 +00:00
config.nuget.grpc.dsc Merged PR 562793: Remove extraneous aspnetcore packages. Add updated aspnet core packages. Hand... 2020-07-15 16:57:45 +00:00
config.nuget.vssdk.dsc Merged PR 524279: Remove all nuget workarounds that are no longer needed 2019-12-13 01:03:27 +00:00
domino.cmd Initial sync 2019-03-28 15:35:49 -07:00
drop.cmd Merged PR 565168: Update drop.cmd bootstrap script 2020-07-21 21:16:01 +00:00
dropout.cmd Merged PR 545659: Revert "Fix fingerprint store opening problem" 2020-04-08 21:54:34 +00:00
macos.mounts.dsc Initial sync 2019-03-28 15:35:49 -07:00

README.md

Microsoft Build Accelerator

BuildXL Icon

Introduction

Build Accelerator, BuildXL for short, is a build engine originally developed for large internal teams at Microsoft, and owned by the Tools for Software Engineers team, part of the Microsoft One Engineering System internal engineering group. Internally at Microsoft, BuildXL runs 30,000+ builds per day on monorepo codebases up to a half-terabyte in size with a half-million process executions per build, using distribution to thousands of data center machines and petabytes of source code, package, and build output caching. Thousands of developers use BuildXL on their desktops for faster builds even on mega-sized codebases.

BuildXL accelerates multiple build languages, including:

  • MSBuild (using new features under development in MSBuild 16 which will ship in future versions of Visual Studio 2019 and the .NET Core SDK)
  • CMake (under development)
  • Its own internal scripting language, DScript, an experimental TypeScript based format used as an intermediate language by a small number of teams inside Microsoft

BuildXL has a command-line interface. There are currently no plans to integrate it into Visual Studio. The project is open source in the spirit of transparency of our engineering system. You may find our technology useful if you face similar issues of scale. Note that BuildXL is not intended as a replacement for MSBuild or to indicate any future direction of build languages from Microsoft.

Documentation

The BuildXL documentation main page is here.

Examples and Demos

See the Examples/ folder for basic project examples. See the Demos page for information about various technical demos like using the process sandboxing code.

Building the Code

Build Status - Azure DevOps Pipelines

Build status

Command Line Build and Test

See the Developer Guide for instructions on compiling BuildXL.

Contributing

See CONTRIBUTING.