forked from dotnet/diagnostics
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.ps1
106 lines (95 loc) · 3.72 KB
/
build.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
[CmdletBinding(PositionalBinding=$false)]
Param(
[ValidateSet("x86","x64","arm","arm64")][string][Alias('a', "platform")]$architecture = [System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture.ToString().ToLowerInvariant(),
[ValidateSet("Debug","Release")][string][Alias('c')] $configuration = "Debug",
[string][Alias('v')] $verbosity = "minimal",
[switch][Alias('t')] $test,
[switch] $installruntimes,
[switch] $privatebuild,
[switch] $ci,
[switch] $skipmanaged,
[switch] $skipnative,
[switch] $bundletools,
[ValidatePattern("(default|\d+\.\d+.\d+(-[a-z0-9\.]+)?)")][string] $dotnetruntimeversion = 'default',
[ValidatePattern("(default|\d+\.\d+.\d+(-[a-z0-9\.]+)?)")][string] $dotnetruntimedownloadversion= 'default',
[string] $runtimesourcefeed = '',
[string] $runtimesourcefeedkey = '',
[Parameter(ValueFromRemainingArguments=$true)][String[]] $remainingargs
)
Set-StrictMode -Version Latest
$ErrorActionPreference = "Stop"
$crossbuild = $false
if (($architecture -eq "arm") -or ($architecture -eq "arm64")) {
$processor = @([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture.ToString().ToLowerInvariant())
if ($architecture -ne $processor) {
$crossbuild = $true
}
}
switch ($configuration.ToLower()) {
{ $_ -eq "debug" } { $configuration = "Debug" }
{ $_ -eq "release" } { $configuration = "Release" }
}
$reporoot = Join-Path $PSScriptRoot ".."
$engroot = Join-Path $reporoot "eng"
$artifactsdir = Join-Path $reporoot "artifacts"
$logdir = Join-Path $artifactsdir "log"
$logdir = Join-Path $logdir Windows_NT.$architecture.$configuration
if ($ci) {
$remainingargs = "-ci " + $remainingargs
}
if ($bundletools) {
$remainingargs = "/p:BundleTools=true " + $remainingargs
$remainingargs = '/bl:"$logdir\BundleTools.binlog" ' + $remainingargs
$remainingargs = '-noBl ' + $remainingargs
$skipnative = $True
$test = $False
}
# Install sdk for building, restore and build managed components.
if (-not $skipmanaged) {
Invoke-Expression "& `"$engroot\common\build.ps1`" -configuration $configuration -verbosity $verbosity /p:BuildArch=$architecture /p:TestArchitectures=$architecture $remainingargs"
if ($lastExitCode -ne 0) {
exit $lastExitCode
}
}
# Build native components
if (-not $skipnative) {
Invoke-Expression "& `"$engroot\Build-Native.cmd`" -architecture $architecture -configuration $configuration -verbosity $verbosity $remainingargs"
if ($lastExitCode -ne 0) {
exit $lastExitCode
}
}
if ($installruntimes -or $privatebuild) {
$privatebuildtesting = "false"
if ($privatebuild) {
$privatebuildtesting = "true"
}
Remove-Item -Force -Recurse -ErrorAction SilentlyContinue "$reporoot\.dotnet-test"
& "$engroot\common\msbuild.ps1" `
$engroot\InstallRuntimes.proj `
-verbosity $verbosity `
/t:InstallTestRuntimes `
/bl:$logdir\InstallRuntimes.binlog `
/p:PrivateBuildTesting=$privatebuildtesting `
/p:BuildArch=$architecture `
/p:TestArchitectures=$architecture
}
# Run the xunit tests
if ($test) {
if (-not $crossbuild) {
& "$engroot\common\build.ps1" `
-test `
-configuration $configuration `
-verbosity $verbosity `
-ci:$ci `
/bl:$logdir\Test.binlog `
/p:BuildArch=$architecture `
/p:TestArchitectures=$architecture `
/p:DotnetRuntimeVersion="$dotnetruntimeversion" `
/p:DotnetRuntimeDownloadVersion="$dotnetruntimedownloadversion" `
/p:RuntimeSourceFeed="$runtimesourcefeed" `
/p:RuntimeSourceFeedKey="$runtimesourcefeedkey"
if ($lastExitCode -ne 0) {
exit $lastExitCode
}
}
}