From 4f6fe5d384310014ba319b16f06722be4671f2df Mon Sep 17 00:00:00 2001 From: Fredric Silberberg Date: Fri, 30 Aug 2019 13:55:06 -0700 Subject: [PATCH] Support building the workspaces layer in source-build. Also added a verification step to CI to ensure we don't break the build. --- azure-pipelines.yml | 17 +++++++++++++++++ eng/build.ps1 | 6 ++++++ eng/build.sh | 6 ++++++ eng/targets/Settings.props | 4 ++++ .../Microsoft.CodeAnalysis.Workspaces.csproj | 3 ++- .../Storage/PersistenceStorageServiceFactory.cs | 5 +++++ 6 files changed, 40 insertions(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 32b320637289e..01ae2059cba99 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -210,6 +210,23 @@ jobs: continueOnError: true condition: not(succeeded()) +- job: SourceBuild_Test + pool: + name: NetCorePublic-Pool + queue: BuildPool.Ubuntu.1604.amd64.Open + timeoutInMinutes: 90 + steps: + - script: ./eng/cibuild.sh --configuration Debug --prepareMachine --docker --sourceBuild + displayName: Build + - task: PublishBuildArtifacts@1 + displayName: Publish Logs + inputs: + PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/Debug' + ArtifactName: 'SourceBuild_Test' + publishLocation: Container + continueOnError: true + condition: not(succeeded()) + - job: macOS_Test pool: vmImage: 'macOS-10.13' diff --git a/eng/build.ps1 b/eng/build.ps1 index 6520919bba32f..baa24295b3a18 100644 --- a/eng/build.ps1 +++ b/eng/build.ps1 @@ -42,6 +42,7 @@ param ( [switch]$prepareMachine, [switch]$useGlobalNuGetCache = $true, [switch]$warnAsError = $false, + [switch]$sourceBuild = $false, # official build settings [string]$officialBuildId = "", @@ -102,6 +103,7 @@ function Print-Usage() { Write-Host " -prepareMachine Prepare machine for CI run, clean up processes after build" Write-Host " -useGlobalNuGetCache Use global NuGet cache." Write-Host " -warnAsError Treat all warnings as errors" + Write-Host " -sourceBuild Simulate building source-build" Write-Host "" Write-Host "Official build settings:" Write-Host " -officialBuildId An official build id, e.g. 20190102.3" @@ -233,6 +235,9 @@ function BuildSolution() { # Workaround for some machines in the AzDO pool not allowing long paths (%5c is msbuild escaped backslash) $ibcDir = Join-Path $RepoRoot ".o%5c" + # Set DotNetBuildFromSource to 'true' if we're simulating building for source-build. + $buildFromSource = if ($sourceBuild) { "/p:DotNetBuildFromSource=true" } else { "" } + try { MSBuild $toolsetBuildProj ` $bl ` @@ -258,6 +263,7 @@ function BuildSolution() { /p:IbcOptimizationDataDir=$ibcDir ` $suppressExtensionDeployment ` $msbuildWarnAsError ` + $buildFromSource ` @properties } finally { diff --git a/eng/build.sh b/eng/build.sh index d9f25b5046929..54a7dd2062d1c 100755 --- a/eng/build.sh +++ b/eng/build.sh @@ -34,6 +34,7 @@ usage() echo " --skipAnalyzers Do not run analyzers during build operations" echo " --prepareMachine Prepare machine for CI run, clean up processes after build" echo " --warnAsError Treat all warnings as errors" + echo " --sourceBuild Simulate building for source-build" echo "" echo "Command line arguments starting with '/p:' are passed through to MSBuild." } @@ -68,6 +69,7 @@ prepare_machine=false warn_as_error=false properties="" disable_parallel_restore=false +source_build=false docker=false args="" @@ -141,6 +143,9 @@ while [[ $# > 0 ]]; do shift continue ;; + --sourcebuild) + source_build=true + ;; /p:*) properties="$properties $1" ;; @@ -274,6 +279,7 @@ function BuildSolution { /p:TreatWarningsAsErrors=true \ /p:RestoreDisableParallel=$disable_parallel_restore \ /p:TestRuntimeAdditionalArguments=$test_runtime_args \ + /p:DotNetBuildFromSource=$source_build \ $test_runtime \ $mono_tool \ $properties diff --git a/eng/targets/Settings.props b/eng/targets/Settings.props index 584c19fb3a7c8..7aeedd9a6b2b8 100644 --- a/eng/targets/Settings.props +++ b/eng/targets/Settings.props @@ -194,4 +194,8 @@ + + + DotNetBuildFromSource + diff --git a/src/Workspaces/Core/Portable/Microsoft.CodeAnalysis.Workspaces.csproj b/src/Workspaces/Core/Portable/Microsoft.CodeAnalysis.Workspaces.csproj index c467c0c8df517..f98e1566adfeb 100644 --- a/src/Workspaces/Core/Portable/Microsoft.CodeAnalysis.Workspaces.csproj +++ b/src/Workspaces/Core/Portable/Microsoft.CodeAnalysis.Workspaces.csproj @@ -24,10 +24,11 @@ - + + Execution\Desktop\DesktopAnalyzerAssemblyLoader.cs diff --git a/src/Workspaces/Core/Portable/Storage/PersistenceStorageServiceFactory.cs b/src/Workspaces/Core/Portable/Storage/PersistenceStorageServiceFactory.cs index b92569a1a58bb..5942bfdd861c5 100644 --- a/src/Workspaces/Core/Portable/Storage/PersistenceStorageServiceFactory.cs +++ b/src/Workspaces/Core/Portable/Storage/PersistenceStorageServiceFactory.cs @@ -5,7 +5,10 @@ using Microsoft.CodeAnalysis.Host.Mef; using Microsoft.CodeAnalysis.Options; using Microsoft.CodeAnalysis.SolutionSize; +// When building for source-build, there is no sqlite dependency +#if !DotNetBuildFromSource using Microsoft.CodeAnalysis.SQLite; +#endif namespace Microsoft.CodeAnalysis.Storage { @@ -22,6 +25,7 @@ public PersistenceStorageServiceFactory(ISolutionSizeTracker solutionSizeTracker public IWorkspaceService CreateService(HostWorkspaceServices workspaceServices) { +#if !DotNetBuildFromSource var optionService = workspaceServices.GetRequiredService(); var database = optionService.GetOption(StorageOptions.Database); switch (database) @@ -35,6 +39,7 @@ public IWorkspaceService CreateService(HostWorkspaceServices workspaceServices) break; } +#endif return NoOpPersistentStorageService.Instance; }