Merge pull request #140 from dotnet/port2arcade
Move core-sdk to arcade
This commit is contained in:
commit
ebd23a5c95
362 changed files with 6595 additions and 2638 deletions
8
.gitignore
vendored
8
.gitignore
vendored
|
@ -15,9 +15,6 @@ Library/
|
|||
# local nuget cache
|
||||
.nuget/
|
||||
|
||||
# NuGet.Config at the root
|
||||
/NuGet.Config
|
||||
|
||||
# NuGet v3 restore drops these even though we don't use MSBuild :(
|
||||
*.nuget.targets
|
||||
*.nuget.props
|
||||
|
@ -96,10 +93,10 @@ TestResult.xml
|
|||
[Rr]eleasePS/
|
||||
dlldata.c
|
||||
|
||||
# DNX
|
||||
project.lock.json
|
||||
# Build artifacts
|
||||
artifacts/
|
||||
bin/
|
||||
.dotnet/
|
||||
|
||||
*_i.c
|
||||
*_p.c
|
||||
|
@ -309,3 +306,4 @@ launchSettings.json
|
|||
!TestAssets/TestProjects/TestAppWithLibrary/TestLibrary/TestLibrary.xproj.user
|
||||
!TestAssets/TestProjects/TestAppWithLibrary/TestApp/TestApp.xproj.user
|
||||
!TestAssets/TestProjects/PJTestAppSimple/PJTestAppSimple.xproj.user
|
||||
|
||||
|
|
|
@ -66,6 +66,7 @@ phases:
|
|||
_RuntimeIdentifier: ''
|
||||
_BuildArchitecture: 'x64'
|
||||
_DropSuffix: ''
|
||||
_AdditionalBuildParameters: '-p:DisableSourceLink=true'
|
||||
Build_Fedora_27_Debug_x64:
|
||||
_BuildConfig: Debug
|
||||
_DockerParameter: '--docker fedora.27'
|
||||
|
@ -108,6 +109,7 @@ phases:
|
|||
_RuntimeIdentifier: '--runtime-id rhel.6-x64'
|
||||
_BuildArchitecture: 'x64'
|
||||
_DropSuffix: ''
|
||||
_AdditionalBuildParameters: '-p:DisableSourceLink=true'
|
||||
Build_Arm_Debug:
|
||||
_BuildConfig: Debug
|
||||
_DockerParameter: ''
|
||||
|
|
|
@ -1,69 +1,27 @@
|
|||
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
|
||||
<!--
|
||||
Projects which don't import dir.props:
|
||||
|
||||
build\RestoreDependency.proj
|
||||
build\Signing.proj
|
||||
build\package\Installer.DEB.proj
|
||||
build\sdks\sdks.csproj
|
||||
build\templates\templates.csproj
|
||||
build\test\RunTest.proj
|
||||
build_projects\Microsoft.DotNet.Cli.Build.SelfTest\InvokeWithStage2.proj
|
||||
build_projects\update-dependencies\update-dependencies.csproj
|
||||
tools\TestAssetsDependencies\TestAssetsDependencies.csproj
|
||||
|
||||
-->
|
||||
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<RepoRoot>$(MSBuildThisFileDirectory)</RepoRoot>
|
||||
|
||||
<NuGetPackagesDir>$(NUGET_PACKAGES)</NuGetPackagesDir>
|
||||
<NuGetPackagesDir Condition=" '$(NuGetPackagesDir)' == '' ">$(RepoRoot)/.nuget/packages</NuGetPackagesDir>
|
||||
|
||||
<RelativeCLIBuildBinaries>build_projects/dotnet-cli-build/bin</RelativeCLIBuildBinaries>
|
||||
<RelativeCLIBuildDllName>dotnet-cli-build.dll</RelativeCLIBuildDllName>
|
||||
<CLIBuildDll>$(RepoRoot)/$(RelativeCLIBuildBinaries)/$(RelativeCLIBuildDllName)</CLIBuildDll>
|
||||
<BuildTasksFeedDll>$(RepoRoot)/build_projects/dotnet-cli-build/bin/Microsoft.DotNet.Build.Tasks.Feed.dll</BuildTasksFeedDll>
|
||||
|
||||
<DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
|
||||
<DisableImplicitPackageTargetFallback>true</DisableImplicitPackageTargetFallback>
|
||||
<ImportNetSdkFromRepoToolset>false</ImportNetSdkFromRepoToolset>
|
||||
</PropertyGroup>
|
||||
|
||||
<Import Project="build/TargetFramework.props" />
|
||||
<Import Project="build/InitRepo.props" />
|
||||
<Import Condition=" '$(GeneratePropsFile)' != 'true' " Project="$(GitCommitInfoProps)" />
|
||||
<Import Condition=" '$(GeneratePropsFile)' != 'true' " Project="$(HostInfoProps)" />
|
||||
<Import Condition=" '$(GeneratePropsFile)' != 'true' " Project="$(BuildInfoProps)" />
|
||||
<Import Project="Sdk.props" Sdk="Microsoft.DotNet.Arcade.Sdk" />
|
||||
|
||||
<Import Project="build/BranchInfo.props" />
|
||||
<PropertyGroup>
|
||||
<TreatWarningsAsErrors>True</TreatWarningsAsErrors>
|
||||
<DebugType>embedded</DebugType>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
|
||||
<Import Project="build/AzureInfo.props" />
|
||||
<IsShipping>true</IsShipping>
|
||||
<CoreSdkTargetFramework>netcoreapp3.0</CoreSdkTargetFramework>
|
||||
|
||||
<Import Project="build/DependencyVersions.props" />
|
||||
<Import Project="build/Version.props" />
|
||||
<Import Project="build/DerivedHostMachineInfo.props" />
|
||||
<Import Project="build/Branding.props" />
|
||||
<ArtifactsShippingSymbolsDir>$(ArtifactsDir)symbols\$(Configuration)\Shipping</ArtifactsShippingSymbolsDir>
|
||||
</PropertyGroup>
|
||||
|
||||
<Import Project="build/FileExtensions.props" />
|
||||
<Import Project="build/InputDirectories.props" />
|
||||
<Import Project="build/SetupPreviousStage.props" />
|
||||
<Import Project="build/OutputDirectories.props" />
|
||||
|
||||
<ImportGroup Condition=" '$(BuildingSigningProject)' != 'true' ">
|
||||
<!-- These imports aren't required for signing, and some of them have syntax which isn't supported in MSBuild 14,
|
||||
which is what the signing build uses -->
|
||||
<Import Project="build/BundledTemplates.props" />
|
||||
<Import Project="build/BundledDotnetTools.props" />
|
||||
|
||||
<Import Project="build/BuildDefaults.props" />
|
||||
<Import Project="build/BundledRuntimes.props" />
|
||||
<Import Project="build/BundledToolset.props" />
|
||||
<Import Project="build/CrossGen.props" />
|
||||
<Import Project="build/BackwardsCompatibilityRuntimes.props" />
|
||||
|
||||
<Import Project="build/InstallerInfo.props" />
|
||||
<Import Project="build/GenerateResxSource.targets" />
|
||||
</ImportGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(DisableSourceLink)' == 'true'">
|
||||
<EnableSourceLink>false</EnableSourceLink>
|
||||
<EnableSourceControlManagerQueries>false</EnableSourceControlManagerQueries>
|
||||
<DeterministicSourcePaths>false</DeterministicSourcePaths>
|
||||
<!-- Normally set by sourcelink, and needed by the Pack targets -->
|
||||
<RepositoryUrl>https://github.com/dotnet/core-sdk</RepositoryUrl>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
|
4
Directory.Build.targets
Normal file
4
Directory.Build.targets
Normal file
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project>
|
||||
<Import Project="Sdk.targets" Sdk="Microsoft.DotNet.Arcade.Sdk" />
|
||||
</Project>
|
|
@ -5,152 +5,15 @@ VisualStudioVersion = 15.0.27130.2020
|
|||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{ED2FE3E2-F7E7-4389-8231-B65123F2076F}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{5A29E8E3-A0FC-4C57-81DD-297B56D1A119}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
build.proj = build.proj
|
||||
global.json = global.json
|
||||
NuGet.Config = NuGet.Config
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{17735A9D-BFD9-4585-A7CB-3208CA6EA8A7}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build_projects", "build_projects", "{88278B81-7649-45DC-8A6A-D3A645C5AFC3}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TestAssets", "TestAssets", "{ADA7052B-884B-4776-8B8D-D04191D0AA70}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TestPackages", "TestPackages", "{1AB5B24B-B317-4142-A5D1-A6E84F15BA34}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{89905EC4-BC0F-443B-8ADF-691321F10108}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
build\AppHostTemplate.proj = build\AppHostTemplate.proj
|
||||
build\AzureInfo.props = build\AzureInfo.props
|
||||
build\BackwardsCompatibilityRuntimes.props = build\BackwardsCompatibilityRuntimes.props
|
||||
build\BranchInfo.props = build\BranchInfo.props
|
||||
build\Branding.props = build\Branding.props
|
||||
build\BuildDefaults.props = build\BuildDefaults.props
|
||||
build\BuildInfo.targets = build\BuildInfo.targets
|
||||
build\BundledDotnetTools.proj = build\BundledDotnetTools.proj
|
||||
build\BundledDotnetTools.props = build\BundledDotnetTools.props
|
||||
build\BundledRuntimes.props = build\BundledRuntimes.props
|
||||
build\BundledSdks.props = build\BundledSdks.props
|
||||
build\BundledTemplates.proj = build\BundledTemplates.proj
|
||||
build\BundledTemplates.props = build\BundledTemplates.props
|
||||
build\BundledTools.props = build\BundledTools.props
|
||||
build\Compile.targets = build\Compile.targets
|
||||
build\CrossGen.props = build\CrossGen.props
|
||||
build\DependencyVersions.props = build\DependencyVersions.props
|
||||
build\DerivedHostMachineInfo.props = build\DerivedHostMachineInfo.props
|
||||
build\FileExtensions.props = build\FileExtensions.props
|
||||
build\GitCommitInfo.targets = build\GitCommitInfo.targets
|
||||
build\HostInfo.targets = build\HostInfo.targets
|
||||
build\InitRepo.props = build\InitRepo.props
|
||||
build\InitRepo.targets = build\InitRepo.targets
|
||||
build\InputDirectories.props = build\InputDirectories.props
|
||||
build\InstallerInfo.props = build\InstallerInfo.props
|
||||
build\Microsoft.DotNet.Cli.tasks = build\Microsoft.DotNet.Cli.tasks
|
||||
build\MSBuildExtensions.props = build\MSBuildExtensions.props
|
||||
build\MSBuildExtensions.targets = build\MSBuildExtensions.targets
|
||||
build\OutputDirectories.props = build\OutputDirectories.props
|
||||
build\Package.targets = build\Package.targets
|
||||
build\Prepare.targets = build\Prepare.targets
|
||||
build\Publish.targets = build\Publish.targets
|
||||
build\RestoreDependency.proj = build\RestoreDependency.proj
|
||||
build\sdks\sdks.csproj = build\sdks\sdks.csproj
|
||||
build\SetupPreviousStage.props = build\SetupPreviousStage.props
|
||||
build\Signing.proj = build\Signing.proj
|
||||
build\Test.targets = build\Test.targets
|
||||
build\Version.props = build\Version.props
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "package", "package", "{FD7D515A-D10F-4F49-B8AE-21CF7ED071AE}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
build\package\Archive.targets = build\package\Archive.targets
|
||||
build\package\Installer.DEB.proj = build\package\Installer.DEB.proj
|
||||
build\package\Installer.DEB.targets = build\package\Installer.DEB.targets
|
||||
build\package\Installer.MSI.targets = build\package\Installer.MSI.targets
|
||||
build\package\Installer.PKG.targets = build\package\Installer.PKG.targets
|
||||
build\package\Installer.RPM.props = build\package\Installer.RPM.props
|
||||
build\package\Installer.RPM.targets = build\package\Installer.RPM.targets
|
||||
build\package\Layout.targets = build\package\Layout.targets
|
||||
build\package\Nupkg.targets = build\package\Nupkg.targets
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{FF498306-2DE2-47F6-8C35-3CF0589CF2B8}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
build\test\RunTest.proj = build\test\RunTest.proj
|
||||
build\test\TestAssetProjects.targets = build\test\TestAssetProjects.targets
|
||||
build\test\TestPackageProjects.targets = build\test\TestPackageProjects.targets
|
||||
build\test\TestProjects.targets = build\test\TestProjects.targets
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "publish", "publish", "{27B12960-ABB0-4903-9C60-5E9157E659C8}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
build\publish\Badge.targets = build\publish\Badge.targets
|
||||
build\publish\Checksum.targets = build\publish\Checksum.targets
|
||||
build\publish\FinishBuild.targets = build\publish\FinishBuild.targets
|
||||
build\publish\PublishContent.targets = build\publish\PublishContent.targets
|
||||
build\publish\PublishDebian.targets = build\publish\PublishDebian.targets
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-cli-build", "build_projects\dotnet-cli-build\dotnet-cli-build.csproj", "{8A2FA2D8-0DA1-4814-B5C1-2ECEAA613EB1}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "prepare", "prepare", "{2BDC1BC2-867E-47C0-BAD0-ADE897F07F78}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
build\prepare\CentosCoreclrAndCoreFxDependencies.props = build\prepare\CentosCoreclrAndCoreFxDependencies.props
|
||||
build\prepare\CheckPrereqs.targets = build\prepare\CheckPrereqs.targets
|
||||
build\prepare\DebianPackageBuildDependencies.props = build\prepare\DebianPackageBuildDependencies.props
|
||||
build\prepare\UbuntuCoreclrAndCoreFxDependencies.props = build\prepare\UbuntuCoreclrAndCoreFxDependencies.props
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-dependency-context-test", "TestAssets\TestPackages\dotnet-dependency-context-test\dotnet-dependency-context-test.csproj", "{48A62BA4-D798-46A2-AB49-8A8471CF8165}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-dependency-tool-invoker", "TestAssets\TestPackages\dotnet-dependency-tool-invoker\dotnet-dependency-tool-invoker.csproj", "{7C3D62C6-1D71-4C45-872F-7583F2AB304A}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-desktop-and-portable", "TestAssets\TestPackages\dotnet-desktop-and-portable\dotnet-desktop-and-portable.csproj", "{79B4932C-3D57-494B-95AF-E5624F9D2F01}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-desktop-binding-redirects", "TestAssets\TestPackages\dotnet-desktop-binding-redirects\dotnet-desktop-binding-redirects.csproj", "{1FC7922B-489D-42BF-81CD-31A37DD17E5D}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "v1", "v1", "{6BC1E4BF-7291-478A-ACF7-A0ED6F5A26D6}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "v2", "v2", "{590CF173-498A-4687-82FD-2649AA87274B}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-hello", "TestAssets\TestPackages\dotnet-hello\v1\dotnet-hello\dotnet-hello.csproj", "{AA831686-C4EB-4250-9EC3-D252303B36A2}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-hello", "TestAssets\TestPackages\dotnet-hello\v2\dotnet-hello\dotnet-hello.csproj", "{DED9654E-74A5-4BCB-83A4-05D4B78D7833}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-portable", "TestAssets\TestPackages\dotnet-portable\dotnet-portable.csproj", "{2E852476-0B95-4A5B-9C29-53A950D1278F}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-prefercliruntime", "TestAssets\TestPackages\dotnet-prefercliruntime\dotnet-prefercliruntime.csproj", "{736BF068-7389-41B9-BF63-D4E49B9BC833}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageWithFakeNativeDep", "TestAssets\TestPackages\PackageWithFakeNativeDep\PackageWithFakeNativeDep.csproj", "{48408A19-CCC5-4C85-990B-0A9F827BF29A}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ToolWithOutputName", "TestAssets\TestPackages\ToolWithOutputName\ToolWithOutputName.csproj", "{8FB83810-5A4C-4097-9A79-8E687E4981CB}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "redist", "src\redist\redist.csproj", "{098D9321-1201-4974-A75E-F58EBCD98ACF}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EndToEnd", "test\EndToEnd\EndToEnd.csproj", "{1BFF54F9-4E35-49DB-893C-AF2047722FC6}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EndToEnd.Tests", "test\EndToEnd\EndToEnd.Tests.csproj", "{1BFF54F9-4E35-49DB-893C-AF2047722FC6}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.DotNet.Tools.Tests.Utilities", "test\Microsoft.DotNet.Tools.Tests.Utilities\Microsoft.DotNet.Tools.Tests.Utilities.csproj", "{48E260F4-6F3F-4387-B61F-D15BABD06D9A}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "core-sdk-tasks", "src\core-sdk-tasks\core-sdk-tasks.csproj", "{53AF2D01-B69F-4CD0-86A7-8FD95967D23C}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.DotNet.Cli.Build.Framework", "build_projects\Microsoft.DotNet.Cli.Build.Framework\Microsoft.DotNet.Cli.Build.Framework.csproj", "{AA744891-5209-4335-8457-37EC347DF833}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "shared-build-targets-utils", "build_projects\shared-build-targets-utils\shared-build-targets-utils.csproj", "{DA3595A8-35DE-42B9-97A4-4A2461BAD554}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "update-dependencies", "build_projects\update-dependencies\update-dependencies.csproj", "{F2D1A7DA-B3EB-4CA7-BAA9-A18CEC398853}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sdk", "sdk", "{3275D006-54C8-4C64-A537-B9941C5D2F0C}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
build\sdks\sdks.csproj = build\sdks\sdks.csproj
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "templates", "templates", "{DE4D1AEB-871B-4E7C-945A-453F9A490C06}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
build\templates\templates.csproj = build\templates\templates.csproj
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "dotnet-outputsframeworkversion-netcoreapp1.0", "TestAssets\TestPackages\dotnet-outputsframeworkversion\dotnet-outputsframeworkversion-netcoreapp1.0\dotnet-outputsframeworkversion-netcoreapp1.0.csproj", "{3F7D56A3-A280-467E-8916-C18659C243BA}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.DotNet.TestFramework", "test\Microsoft.DotNet.TestFramework\Microsoft.DotNet.TestFramework.csproj", "{C8424FA7-BFBE-42BF-A12E-C5AE2BFFD689}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.DotNet.Tools.Tests.Utilities", "test\Microsoft.DotNet.Tools.Tests.Utilities\Microsoft.DotNet.Tools.Tests.Utilities.csproj", "{78E15EC1-7732-41E3-8591-934E9F583254}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
|
@ -168,270 +31,6 @@ Global
|
|||
RelWithDebInfo|x86 = RelWithDebInfo|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{8A2FA2D8-0DA1-4814-B5C1-2ECEAA613EB1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{8A2FA2D8-0DA1-4814-B5C1-2ECEAA613EB1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{8A2FA2D8-0DA1-4814-B5C1-2ECEAA613EB1}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{8A2FA2D8-0DA1-4814-B5C1-2ECEAA613EB1}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{8A2FA2D8-0DA1-4814-B5C1-2ECEAA613EB1}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{8A2FA2D8-0DA1-4814-B5C1-2ECEAA613EB1}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{8A2FA2D8-0DA1-4814-B5C1-2ECEAA613EB1}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{8A2FA2D8-0DA1-4814-B5C1-2ECEAA613EB1}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU
|
||||
{8A2FA2D8-0DA1-4814-B5C1-2ECEAA613EB1}.MinSizeRel|x64.ActiveCfg = Release|Any CPU
|
||||
{8A2FA2D8-0DA1-4814-B5C1-2ECEAA613EB1}.MinSizeRel|x64.Build.0 = Release|Any CPU
|
||||
{8A2FA2D8-0DA1-4814-B5C1-2ECEAA613EB1}.MinSizeRel|x86.ActiveCfg = Release|Any CPU
|
||||
{8A2FA2D8-0DA1-4814-B5C1-2ECEAA613EB1}.MinSizeRel|x86.Build.0 = Release|Any CPU
|
||||
{8A2FA2D8-0DA1-4814-B5C1-2ECEAA613EB1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{8A2FA2D8-0DA1-4814-B5C1-2ECEAA613EB1}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{8A2FA2D8-0DA1-4814-B5C1-2ECEAA613EB1}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{8A2FA2D8-0DA1-4814-B5C1-2ECEAA613EB1}.Release|x64.Build.0 = Release|Any CPU
|
||||
{8A2FA2D8-0DA1-4814-B5C1-2ECEAA613EB1}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{8A2FA2D8-0DA1-4814-B5C1-2ECEAA613EB1}.Release|x86.Build.0 = Release|Any CPU
|
||||
{8A2FA2D8-0DA1-4814-B5C1-2ECEAA613EB1}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{8A2FA2D8-0DA1-4814-B5C1-2ECEAA613EB1}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
|
||||
{8A2FA2D8-0DA1-4814-B5C1-2ECEAA613EB1}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
|
||||
{8A2FA2D8-0DA1-4814-B5C1-2ECEAA613EB1}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
|
||||
{8A2FA2D8-0DA1-4814-B5C1-2ECEAA613EB1}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
|
||||
{8A2FA2D8-0DA1-4814-B5C1-2ECEAA613EB1}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
|
||||
{48A62BA4-D798-46A2-AB49-8A8471CF8165}.Debug|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{48A62BA4-D798-46A2-AB49-8A8471CF8165}.Debug|Any CPU.Build.0 = Release|Any CPU
|
||||
{48A62BA4-D798-46A2-AB49-8A8471CF8165}.Debug|x64.ActiveCfg = Release|Any CPU
|
||||
{48A62BA4-D798-46A2-AB49-8A8471CF8165}.Debug|x64.Build.0 = Release|Any CPU
|
||||
{48A62BA4-D798-46A2-AB49-8A8471CF8165}.Debug|x86.ActiveCfg = Release|Any CPU
|
||||
{48A62BA4-D798-46A2-AB49-8A8471CF8165}.Debug|x86.Build.0 = Release|Any CPU
|
||||
{48A62BA4-D798-46A2-AB49-8A8471CF8165}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{48A62BA4-D798-46A2-AB49-8A8471CF8165}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU
|
||||
{48A62BA4-D798-46A2-AB49-8A8471CF8165}.MinSizeRel|x64.ActiveCfg = Release|Any CPU
|
||||
{48A62BA4-D798-46A2-AB49-8A8471CF8165}.MinSizeRel|x64.Build.0 = Release|Any CPU
|
||||
{48A62BA4-D798-46A2-AB49-8A8471CF8165}.MinSizeRel|x86.ActiveCfg = Release|Any CPU
|
||||
{48A62BA4-D798-46A2-AB49-8A8471CF8165}.MinSizeRel|x86.Build.0 = Release|Any CPU
|
||||
{48A62BA4-D798-46A2-AB49-8A8471CF8165}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{48A62BA4-D798-46A2-AB49-8A8471CF8165}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{48A62BA4-D798-46A2-AB49-8A8471CF8165}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{48A62BA4-D798-46A2-AB49-8A8471CF8165}.Release|x64.Build.0 = Release|Any CPU
|
||||
{48A62BA4-D798-46A2-AB49-8A8471CF8165}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{48A62BA4-D798-46A2-AB49-8A8471CF8165}.Release|x86.Build.0 = Release|Any CPU
|
||||
{48A62BA4-D798-46A2-AB49-8A8471CF8165}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{48A62BA4-D798-46A2-AB49-8A8471CF8165}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
|
||||
{48A62BA4-D798-46A2-AB49-8A8471CF8165}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
|
||||
{48A62BA4-D798-46A2-AB49-8A8471CF8165}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
|
||||
{48A62BA4-D798-46A2-AB49-8A8471CF8165}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
|
||||
{48A62BA4-D798-46A2-AB49-8A8471CF8165}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
|
||||
{7C3D62C6-1D71-4C45-872F-7583F2AB304A}.Debug|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7C3D62C6-1D71-4C45-872F-7583F2AB304A}.Debug|Any CPU.Build.0 = Release|Any CPU
|
||||
{7C3D62C6-1D71-4C45-872F-7583F2AB304A}.Debug|x64.ActiveCfg = Release|Any CPU
|
||||
{7C3D62C6-1D71-4C45-872F-7583F2AB304A}.Debug|x64.Build.0 = Release|Any CPU
|
||||
{7C3D62C6-1D71-4C45-872F-7583F2AB304A}.Debug|x86.ActiveCfg = Release|Any CPU
|
||||
{7C3D62C6-1D71-4C45-872F-7583F2AB304A}.Debug|x86.Build.0 = Release|Any CPU
|
||||
{7C3D62C6-1D71-4C45-872F-7583F2AB304A}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7C3D62C6-1D71-4C45-872F-7583F2AB304A}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU
|
||||
{7C3D62C6-1D71-4C45-872F-7583F2AB304A}.MinSizeRel|x64.ActiveCfg = Release|Any CPU
|
||||
{7C3D62C6-1D71-4C45-872F-7583F2AB304A}.MinSizeRel|x64.Build.0 = Release|Any CPU
|
||||
{7C3D62C6-1D71-4C45-872F-7583F2AB304A}.MinSizeRel|x86.ActiveCfg = Release|Any CPU
|
||||
{7C3D62C6-1D71-4C45-872F-7583F2AB304A}.MinSizeRel|x86.Build.0 = Release|Any CPU
|
||||
{7C3D62C6-1D71-4C45-872F-7583F2AB304A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7C3D62C6-1D71-4C45-872F-7583F2AB304A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7C3D62C6-1D71-4C45-872F-7583F2AB304A}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{7C3D62C6-1D71-4C45-872F-7583F2AB304A}.Release|x64.Build.0 = Release|Any CPU
|
||||
{7C3D62C6-1D71-4C45-872F-7583F2AB304A}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{7C3D62C6-1D71-4C45-872F-7583F2AB304A}.Release|x86.Build.0 = Release|Any CPU
|
||||
{7C3D62C6-1D71-4C45-872F-7583F2AB304A}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7C3D62C6-1D71-4C45-872F-7583F2AB304A}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
|
||||
{7C3D62C6-1D71-4C45-872F-7583F2AB304A}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
|
||||
{7C3D62C6-1D71-4C45-872F-7583F2AB304A}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
|
||||
{7C3D62C6-1D71-4C45-872F-7583F2AB304A}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
|
||||
{7C3D62C6-1D71-4C45-872F-7583F2AB304A}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
|
||||
{79B4932C-3D57-494B-95AF-E5624F9D2F01}.Debug|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{79B4932C-3D57-494B-95AF-E5624F9D2F01}.Debug|Any CPU.Build.0 = Release|Any CPU
|
||||
{79B4932C-3D57-494B-95AF-E5624F9D2F01}.Debug|x64.ActiveCfg = Release|Any CPU
|
||||
{79B4932C-3D57-494B-95AF-E5624F9D2F01}.Debug|x64.Build.0 = Release|Any CPU
|
||||
{79B4932C-3D57-494B-95AF-E5624F9D2F01}.Debug|x86.ActiveCfg = Release|Any CPU
|
||||
{79B4932C-3D57-494B-95AF-E5624F9D2F01}.Debug|x86.Build.0 = Release|Any CPU
|
||||
{79B4932C-3D57-494B-95AF-E5624F9D2F01}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{79B4932C-3D57-494B-95AF-E5624F9D2F01}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU
|
||||
{79B4932C-3D57-494B-95AF-E5624F9D2F01}.MinSizeRel|x64.ActiveCfg = Release|Any CPU
|
||||
{79B4932C-3D57-494B-95AF-E5624F9D2F01}.MinSizeRel|x64.Build.0 = Release|Any CPU
|
||||
{79B4932C-3D57-494B-95AF-E5624F9D2F01}.MinSizeRel|x86.ActiveCfg = Release|Any CPU
|
||||
{79B4932C-3D57-494B-95AF-E5624F9D2F01}.MinSizeRel|x86.Build.0 = Release|Any CPU
|
||||
{79B4932C-3D57-494B-95AF-E5624F9D2F01}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{79B4932C-3D57-494B-95AF-E5624F9D2F01}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{79B4932C-3D57-494B-95AF-E5624F9D2F01}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{79B4932C-3D57-494B-95AF-E5624F9D2F01}.Release|x64.Build.0 = Release|Any CPU
|
||||
{79B4932C-3D57-494B-95AF-E5624F9D2F01}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{79B4932C-3D57-494B-95AF-E5624F9D2F01}.Release|x86.Build.0 = Release|Any CPU
|
||||
{79B4932C-3D57-494B-95AF-E5624F9D2F01}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{79B4932C-3D57-494B-95AF-E5624F9D2F01}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
|
||||
{79B4932C-3D57-494B-95AF-E5624F9D2F01}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
|
||||
{79B4932C-3D57-494B-95AF-E5624F9D2F01}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
|
||||
{79B4932C-3D57-494B-95AF-E5624F9D2F01}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
|
||||
{79B4932C-3D57-494B-95AF-E5624F9D2F01}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
|
||||
{1FC7922B-489D-42BF-81CD-31A37DD17E5D}.Debug|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1FC7922B-489D-42BF-81CD-31A37DD17E5D}.Debug|Any CPU.Build.0 = Release|Any CPU
|
||||
{1FC7922B-489D-42BF-81CD-31A37DD17E5D}.Debug|x64.ActiveCfg = Release|Any CPU
|
||||
{1FC7922B-489D-42BF-81CD-31A37DD17E5D}.Debug|x64.Build.0 = Release|Any CPU
|
||||
{1FC7922B-489D-42BF-81CD-31A37DD17E5D}.Debug|x86.ActiveCfg = Release|Any CPU
|
||||
{1FC7922B-489D-42BF-81CD-31A37DD17E5D}.Debug|x86.Build.0 = Release|Any CPU
|
||||
{1FC7922B-489D-42BF-81CD-31A37DD17E5D}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1FC7922B-489D-42BF-81CD-31A37DD17E5D}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU
|
||||
{1FC7922B-489D-42BF-81CD-31A37DD17E5D}.MinSizeRel|x64.ActiveCfg = Release|Any CPU
|
||||
{1FC7922B-489D-42BF-81CD-31A37DD17E5D}.MinSizeRel|x64.Build.0 = Release|Any CPU
|
||||
{1FC7922B-489D-42BF-81CD-31A37DD17E5D}.MinSizeRel|x86.ActiveCfg = Release|Any CPU
|
||||
{1FC7922B-489D-42BF-81CD-31A37DD17E5D}.MinSizeRel|x86.Build.0 = Release|Any CPU
|
||||
{1FC7922B-489D-42BF-81CD-31A37DD17E5D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1FC7922B-489D-42BF-81CD-31A37DD17E5D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{1FC7922B-489D-42BF-81CD-31A37DD17E5D}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{1FC7922B-489D-42BF-81CD-31A37DD17E5D}.Release|x64.Build.0 = Release|Any CPU
|
||||
{1FC7922B-489D-42BF-81CD-31A37DD17E5D}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{1FC7922B-489D-42BF-81CD-31A37DD17E5D}.Release|x86.Build.0 = Release|Any CPU
|
||||
{1FC7922B-489D-42BF-81CD-31A37DD17E5D}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1FC7922B-489D-42BF-81CD-31A37DD17E5D}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
|
||||
{1FC7922B-489D-42BF-81CD-31A37DD17E5D}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
|
||||
{1FC7922B-489D-42BF-81CD-31A37DD17E5D}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
|
||||
{1FC7922B-489D-42BF-81CD-31A37DD17E5D}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
|
||||
{1FC7922B-489D-42BF-81CD-31A37DD17E5D}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
|
||||
{AA831686-C4EB-4250-9EC3-D252303B36A2}.Debug|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{AA831686-C4EB-4250-9EC3-D252303B36A2}.Debug|Any CPU.Build.0 = Release|Any CPU
|
||||
{AA831686-C4EB-4250-9EC3-D252303B36A2}.Debug|x64.ActiveCfg = Release|Any CPU
|
||||
{AA831686-C4EB-4250-9EC3-D252303B36A2}.Debug|x64.Build.0 = Release|Any CPU
|
||||
{AA831686-C4EB-4250-9EC3-D252303B36A2}.Debug|x86.ActiveCfg = Release|Any CPU
|
||||
{AA831686-C4EB-4250-9EC3-D252303B36A2}.Debug|x86.Build.0 = Release|Any CPU
|
||||
{AA831686-C4EB-4250-9EC3-D252303B36A2}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{AA831686-C4EB-4250-9EC3-D252303B36A2}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU
|
||||
{AA831686-C4EB-4250-9EC3-D252303B36A2}.MinSizeRel|x64.ActiveCfg = Release|Any CPU
|
||||
{AA831686-C4EB-4250-9EC3-D252303B36A2}.MinSizeRel|x64.Build.0 = Release|Any CPU
|
||||
{AA831686-C4EB-4250-9EC3-D252303B36A2}.MinSizeRel|x86.ActiveCfg = Release|Any CPU
|
||||
{AA831686-C4EB-4250-9EC3-D252303B36A2}.MinSizeRel|x86.Build.0 = Release|Any CPU
|
||||
{AA831686-C4EB-4250-9EC3-D252303B36A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{AA831686-C4EB-4250-9EC3-D252303B36A2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{AA831686-C4EB-4250-9EC3-D252303B36A2}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{AA831686-C4EB-4250-9EC3-D252303B36A2}.Release|x64.Build.0 = Release|Any CPU
|
||||
{AA831686-C4EB-4250-9EC3-D252303B36A2}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{AA831686-C4EB-4250-9EC3-D252303B36A2}.Release|x86.Build.0 = Release|Any CPU
|
||||
{AA831686-C4EB-4250-9EC3-D252303B36A2}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{AA831686-C4EB-4250-9EC3-D252303B36A2}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
|
||||
{AA831686-C4EB-4250-9EC3-D252303B36A2}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
|
||||
{AA831686-C4EB-4250-9EC3-D252303B36A2}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
|
||||
{AA831686-C4EB-4250-9EC3-D252303B36A2}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
|
||||
{AA831686-C4EB-4250-9EC3-D252303B36A2}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
|
||||
{DED9654E-74A5-4BCB-83A4-05D4B78D7833}.Debug|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{DED9654E-74A5-4BCB-83A4-05D4B78D7833}.Debug|Any CPU.Build.0 = Release|Any CPU
|
||||
{DED9654E-74A5-4BCB-83A4-05D4B78D7833}.Debug|x64.ActiveCfg = Release|Any CPU
|
||||
{DED9654E-74A5-4BCB-83A4-05D4B78D7833}.Debug|x64.Build.0 = Release|Any CPU
|
||||
{DED9654E-74A5-4BCB-83A4-05D4B78D7833}.Debug|x86.ActiveCfg = Release|Any CPU
|
||||
{DED9654E-74A5-4BCB-83A4-05D4B78D7833}.Debug|x86.Build.0 = Release|Any CPU
|
||||
{DED9654E-74A5-4BCB-83A4-05D4B78D7833}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{DED9654E-74A5-4BCB-83A4-05D4B78D7833}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU
|
||||
{DED9654E-74A5-4BCB-83A4-05D4B78D7833}.MinSizeRel|x64.ActiveCfg = Release|Any CPU
|
||||
{DED9654E-74A5-4BCB-83A4-05D4B78D7833}.MinSizeRel|x64.Build.0 = Release|Any CPU
|
||||
{DED9654E-74A5-4BCB-83A4-05D4B78D7833}.MinSizeRel|x86.ActiveCfg = Release|Any CPU
|
||||
{DED9654E-74A5-4BCB-83A4-05D4B78D7833}.MinSizeRel|x86.Build.0 = Release|Any CPU
|
||||
{DED9654E-74A5-4BCB-83A4-05D4B78D7833}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{DED9654E-74A5-4BCB-83A4-05D4B78D7833}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{DED9654E-74A5-4BCB-83A4-05D4B78D7833}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{DED9654E-74A5-4BCB-83A4-05D4B78D7833}.Release|x64.Build.0 = Release|Any CPU
|
||||
{DED9654E-74A5-4BCB-83A4-05D4B78D7833}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{DED9654E-74A5-4BCB-83A4-05D4B78D7833}.Release|x86.Build.0 = Release|Any CPU
|
||||
{DED9654E-74A5-4BCB-83A4-05D4B78D7833}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{DED9654E-74A5-4BCB-83A4-05D4B78D7833}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
|
||||
{DED9654E-74A5-4BCB-83A4-05D4B78D7833}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
|
||||
{DED9654E-74A5-4BCB-83A4-05D4B78D7833}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
|
||||
{DED9654E-74A5-4BCB-83A4-05D4B78D7833}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
|
||||
{DED9654E-74A5-4BCB-83A4-05D4B78D7833}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
|
||||
{2E852476-0B95-4A5B-9C29-53A950D1278F}.Debug|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2E852476-0B95-4A5B-9C29-53A950D1278F}.Debug|Any CPU.Build.0 = Release|Any CPU
|
||||
{2E852476-0B95-4A5B-9C29-53A950D1278F}.Debug|x64.ActiveCfg = Release|Any CPU
|
||||
{2E852476-0B95-4A5B-9C29-53A950D1278F}.Debug|x64.Build.0 = Release|Any CPU
|
||||
{2E852476-0B95-4A5B-9C29-53A950D1278F}.Debug|x86.ActiveCfg = Release|Any CPU
|
||||
{2E852476-0B95-4A5B-9C29-53A950D1278F}.Debug|x86.Build.0 = Release|Any CPU
|
||||
{2E852476-0B95-4A5B-9C29-53A950D1278F}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2E852476-0B95-4A5B-9C29-53A950D1278F}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU
|
||||
{2E852476-0B95-4A5B-9C29-53A950D1278F}.MinSizeRel|x64.ActiveCfg = Release|Any CPU
|
||||
{2E852476-0B95-4A5B-9C29-53A950D1278F}.MinSizeRel|x64.Build.0 = Release|Any CPU
|
||||
{2E852476-0B95-4A5B-9C29-53A950D1278F}.MinSizeRel|x86.ActiveCfg = Release|Any CPU
|
||||
{2E852476-0B95-4A5B-9C29-53A950D1278F}.MinSizeRel|x86.Build.0 = Release|Any CPU
|
||||
{2E852476-0B95-4A5B-9C29-53A950D1278F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2E852476-0B95-4A5B-9C29-53A950D1278F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{2E852476-0B95-4A5B-9C29-53A950D1278F}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{2E852476-0B95-4A5B-9C29-53A950D1278F}.Release|x64.Build.0 = Release|Any CPU
|
||||
{2E852476-0B95-4A5B-9C29-53A950D1278F}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{2E852476-0B95-4A5B-9C29-53A950D1278F}.Release|x86.Build.0 = Release|Any CPU
|
||||
{2E852476-0B95-4A5B-9C29-53A950D1278F}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2E852476-0B95-4A5B-9C29-53A950D1278F}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
|
||||
{2E852476-0B95-4A5B-9C29-53A950D1278F}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
|
||||
{2E852476-0B95-4A5B-9C29-53A950D1278F}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
|
||||
{2E852476-0B95-4A5B-9C29-53A950D1278F}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
|
||||
{2E852476-0B95-4A5B-9C29-53A950D1278F}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
|
||||
{736BF068-7389-41B9-BF63-D4E49B9BC833}.Debug|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{736BF068-7389-41B9-BF63-D4E49B9BC833}.Debug|Any CPU.Build.0 = Release|Any CPU
|
||||
{736BF068-7389-41B9-BF63-D4E49B9BC833}.Debug|x64.ActiveCfg = Release|Any CPU
|
||||
{736BF068-7389-41B9-BF63-D4E49B9BC833}.Debug|x64.Build.0 = Release|Any CPU
|
||||
{736BF068-7389-41B9-BF63-D4E49B9BC833}.Debug|x86.ActiveCfg = Release|Any CPU
|
||||
{736BF068-7389-41B9-BF63-D4E49B9BC833}.Debug|x86.Build.0 = Release|Any CPU
|
||||
{736BF068-7389-41B9-BF63-D4E49B9BC833}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{736BF068-7389-41B9-BF63-D4E49B9BC833}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU
|
||||
{736BF068-7389-41B9-BF63-D4E49B9BC833}.MinSizeRel|x64.ActiveCfg = Release|Any CPU
|
||||
{736BF068-7389-41B9-BF63-D4E49B9BC833}.MinSizeRel|x64.Build.0 = Release|Any CPU
|
||||
{736BF068-7389-41B9-BF63-D4E49B9BC833}.MinSizeRel|x86.ActiveCfg = Release|Any CPU
|
||||
{736BF068-7389-41B9-BF63-D4E49B9BC833}.MinSizeRel|x86.Build.0 = Release|Any CPU
|
||||
{736BF068-7389-41B9-BF63-D4E49B9BC833}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{736BF068-7389-41B9-BF63-D4E49B9BC833}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{736BF068-7389-41B9-BF63-D4E49B9BC833}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{736BF068-7389-41B9-BF63-D4E49B9BC833}.Release|x64.Build.0 = Release|Any CPU
|
||||
{736BF068-7389-41B9-BF63-D4E49B9BC833}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{736BF068-7389-41B9-BF63-D4E49B9BC833}.Release|x86.Build.0 = Release|Any CPU
|
||||
{736BF068-7389-41B9-BF63-D4E49B9BC833}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{736BF068-7389-41B9-BF63-D4E49B9BC833}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
|
||||
{736BF068-7389-41B9-BF63-D4E49B9BC833}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
|
||||
{736BF068-7389-41B9-BF63-D4E49B9BC833}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
|
||||
{736BF068-7389-41B9-BF63-D4E49B9BC833}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
|
||||
{736BF068-7389-41B9-BF63-D4E49B9BC833}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
|
||||
{48408A19-CCC5-4C85-990B-0A9F827BF29A}.Debug|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{48408A19-CCC5-4C85-990B-0A9F827BF29A}.Debug|Any CPU.Build.0 = Release|Any CPU
|
||||
{48408A19-CCC5-4C85-990B-0A9F827BF29A}.Debug|x64.ActiveCfg = Release|Any CPU
|
||||
{48408A19-CCC5-4C85-990B-0A9F827BF29A}.Debug|x64.Build.0 = Release|Any CPU
|
||||
{48408A19-CCC5-4C85-990B-0A9F827BF29A}.Debug|x86.ActiveCfg = Release|Any CPU
|
||||
{48408A19-CCC5-4C85-990B-0A9F827BF29A}.Debug|x86.Build.0 = Release|Any CPU
|
||||
{48408A19-CCC5-4C85-990B-0A9F827BF29A}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{48408A19-CCC5-4C85-990B-0A9F827BF29A}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU
|
||||
{48408A19-CCC5-4C85-990B-0A9F827BF29A}.MinSizeRel|x64.ActiveCfg = Release|Any CPU
|
||||
{48408A19-CCC5-4C85-990B-0A9F827BF29A}.MinSizeRel|x64.Build.0 = Release|Any CPU
|
||||
{48408A19-CCC5-4C85-990B-0A9F827BF29A}.MinSizeRel|x86.ActiveCfg = Release|Any CPU
|
||||
{48408A19-CCC5-4C85-990B-0A9F827BF29A}.MinSizeRel|x86.Build.0 = Release|Any CPU
|
||||
{48408A19-CCC5-4C85-990B-0A9F827BF29A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{48408A19-CCC5-4C85-990B-0A9F827BF29A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{48408A19-CCC5-4C85-990B-0A9F827BF29A}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{48408A19-CCC5-4C85-990B-0A9F827BF29A}.Release|x64.Build.0 = Release|Any CPU
|
||||
{48408A19-CCC5-4C85-990B-0A9F827BF29A}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{48408A19-CCC5-4C85-990B-0A9F827BF29A}.Release|x86.Build.0 = Release|Any CPU
|
||||
{48408A19-CCC5-4C85-990B-0A9F827BF29A}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{48408A19-CCC5-4C85-990B-0A9F827BF29A}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
|
||||
{48408A19-CCC5-4C85-990B-0A9F827BF29A}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
|
||||
{48408A19-CCC5-4C85-990B-0A9F827BF29A}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
|
||||
{48408A19-CCC5-4C85-990B-0A9F827BF29A}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
|
||||
{48408A19-CCC5-4C85-990B-0A9F827BF29A}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
|
||||
{8FB83810-5A4C-4097-9A79-8E687E4981CB}.Debug|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{8FB83810-5A4C-4097-9A79-8E687E4981CB}.Debug|Any CPU.Build.0 = Release|Any CPU
|
||||
{8FB83810-5A4C-4097-9A79-8E687E4981CB}.Debug|x64.ActiveCfg = Release|Any CPU
|
||||
{8FB83810-5A4C-4097-9A79-8E687E4981CB}.Debug|x64.Build.0 = Release|Any CPU
|
||||
{8FB83810-5A4C-4097-9A79-8E687E4981CB}.Debug|x86.ActiveCfg = Release|Any CPU
|
||||
{8FB83810-5A4C-4097-9A79-8E687E4981CB}.Debug|x86.Build.0 = Release|Any CPU
|
||||
{8FB83810-5A4C-4097-9A79-8E687E4981CB}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{8FB83810-5A4C-4097-9A79-8E687E4981CB}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU
|
||||
{8FB83810-5A4C-4097-9A79-8E687E4981CB}.MinSizeRel|x64.ActiveCfg = Release|Any CPU
|
||||
{8FB83810-5A4C-4097-9A79-8E687E4981CB}.MinSizeRel|x64.Build.0 = Release|Any CPU
|
||||
{8FB83810-5A4C-4097-9A79-8E687E4981CB}.MinSizeRel|x86.ActiveCfg = Release|Any CPU
|
||||
{8FB83810-5A4C-4097-9A79-8E687E4981CB}.MinSizeRel|x86.Build.0 = Release|Any CPU
|
||||
{8FB83810-5A4C-4097-9A79-8E687E4981CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{8FB83810-5A4C-4097-9A79-8E687E4981CB}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{8FB83810-5A4C-4097-9A79-8E687E4981CB}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{8FB83810-5A4C-4097-9A79-8E687E4981CB}.Release|x64.Build.0 = Release|Any CPU
|
||||
{8FB83810-5A4C-4097-9A79-8E687E4981CB}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{8FB83810-5A4C-4097-9A79-8E687E4981CB}.Release|x86.Build.0 = Release|Any CPU
|
||||
{8FB83810-5A4C-4097-9A79-8E687E4981CB}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{8FB83810-5A4C-4097-9A79-8E687E4981CB}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
|
||||
{8FB83810-5A4C-4097-9A79-8E687E4981CB}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
|
||||
{8FB83810-5A4C-4097-9A79-8E687E4981CB}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
|
||||
{8FB83810-5A4C-4097-9A79-8E687E4981CB}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
|
||||
{8FB83810-5A4C-4097-9A79-8E687E4981CB}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
|
||||
{098D9321-1201-4974-A75E-F58EBCD98ACF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{098D9321-1201-4974-A75E-F58EBCD98ACF}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{098D9321-1201-4974-A75E-F58EBCD98ACF}.Debug|x64.ActiveCfg = Release|Any CPU
|
||||
|
@ -480,184 +79,63 @@ Global
|
|||
{1BFF54F9-4E35-49DB-893C-AF2047722FC6}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
|
||||
{1BFF54F9-4E35-49DB-893C-AF2047722FC6}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
|
||||
{1BFF54F9-4E35-49DB-893C-AF2047722FC6}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
|
||||
{48E260F4-6F3F-4387-B61F-D15BABD06D9A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{48E260F4-6F3F-4387-B61F-D15BABD06D9A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{48E260F4-6F3F-4387-B61F-D15BABD06D9A}.Debug|x64.ActiveCfg = Release|Any CPU
|
||||
{48E260F4-6F3F-4387-B61F-D15BABD06D9A}.Debug|x64.Build.0 = Release|Any CPU
|
||||
{48E260F4-6F3F-4387-B61F-D15BABD06D9A}.Debug|x86.ActiveCfg = Release|Any CPU
|
||||
{48E260F4-6F3F-4387-B61F-D15BABD06D9A}.Debug|x86.Build.0 = Release|Any CPU
|
||||
{48E260F4-6F3F-4387-B61F-D15BABD06D9A}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{48E260F4-6F3F-4387-B61F-D15BABD06D9A}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU
|
||||
{48E260F4-6F3F-4387-B61F-D15BABD06D9A}.MinSizeRel|x64.ActiveCfg = Release|Any CPU
|
||||
{48E260F4-6F3F-4387-B61F-D15BABD06D9A}.MinSizeRel|x64.Build.0 = Release|Any CPU
|
||||
{48E260F4-6F3F-4387-B61F-D15BABD06D9A}.MinSizeRel|x86.ActiveCfg = Release|Any CPU
|
||||
{48E260F4-6F3F-4387-B61F-D15BABD06D9A}.MinSizeRel|x86.Build.0 = Release|Any CPU
|
||||
{48E260F4-6F3F-4387-B61F-D15BABD06D9A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{48E260F4-6F3F-4387-B61F-D15BABD06D9A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{48E260F4-6F3F-4387-B61F-D15BABD06D9A}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{48E260F4-6F3F-4387-B61F-D15BABD06D9A}.Release|x64.Build.0 = Release|Any CPU
|
||||
{48E260F4-6F3F-4387-B61F-D15BABD06D9A}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{48E260F4-6F3F-4387-B61F-D15BABD06D9A}.Release|x86.Build.0 = Release|Any CPU
|
||||
{48E260F4-6F3F-4387-B61F-D15BABD06D9A}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{48E260F4-6F3F-4387-B61F-D15BABD06D9A}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
|
||||
{48E260F4-6F3F-4387-B61F-D15BABD06D9A}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
|
||||
{48E260F4-6F3F-4387-B61F-D15BABD06D9A}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
|
||||
{48E260F4-6F3F-4387-B61F-D15BABD06D9A}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
|
||||
{48E260F4-6F3F-4387-B61F-D15BABD06D9A}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
|
||||
{AA744891-5209-4335-8457-37EC347DF833}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{AA744891-5209-4335-8457-37EC347DF833}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{AA744891-5209-4335-8457-37EC347DF833}.Debug|x64.ActiveCfg = Release|Any CPU
|
||||
{AA744891-5209-4335-8457-37EC347DF833}.Debug|x64.Build.0 = Release|Any CPU
|
||||
{AA744891-5209-4335-8457-37EC347DF833}.Debug|x86.ActiveCfg = Release|Any CPU
|
||||
{AA744891-5209-4335-8457-37EC347DF833}.Debug|x86.Build.0 = Release|Any CPU
|
||||
{AA744891-5209-4335-8457-37EC347DF833}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{AA744891-5209-4335-8457-37EC347DF833}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU
|
||||
{AA744891-5209-4335-8457-37EC347DF833}.MinSizeRel|x64.ActiveCfg = Release|Any CPU
|
||||
{AA744891-5209-4335-8457-37EC347DF833}.MinSizeRel|x64.Build.0 = Release|Any CPU
|
||||
{AA744891-5209-4335-8457-37EC347DF833}.MinSizeRel|x86.ActiveCfg = Release|Any CPU
|
||||
{AA744891-5209-4335-8457-37EC347DF833}.MinSizeRel|x86.Build.0 = Release|Any CPU
|
||||
{AA744891-5209-4335-8457-37EC347DF833}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{AA744891-5209-4335-8457-37EC347DF833}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{AA744891-5209-4335-8457-37EC347DF833}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{AA744891-5209-4335-8457-37EC347DF833}.Release|x64.Build.0 = Release|Any CPU
|
||||
{AA744891-5209-4335-8457-37EC347DF833}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{AA744891-5209-4335-8457-37EC347DF833}.Release|x86.Build.0 = Release|Any CPU
|
||||
{AA744891-5209-4335-8457-37EC347DF833}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{AA744891-5209-4335-8457-37EC347DF833}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
|
||||
{AA744891-5209-4335-8457-37EC347DF833}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
|
||||
{AA744891-5209-4335-8457-37EC347DF833}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
|
||||
{AA744891-5209-4335-8457-37EC347DF833}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
|
||||
{AA744891-5209-4335-8457-37EC347DF833}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
|
||||
{DA3595A8-35DE-42B9-97A4-4A2461BAD554}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{DA3595A8-35DE-42B9-97A4-4A2461BAD554}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{DA3595A8-35DE-42B9-97A4-4A2461BAD554}.Debug|x64.ActiveCfg = Release|Any CPU
|
||||
{DA3595A8-35DE-42B9-97A4-4A2461BAD554}.Debug|x64.Build.0 = Release|Any CPU
|
||||
{DA3595A8-35DE-42B9-97A4-4A2461BAD554}.Debug|x86.ActiveCfg = Release|Any CPU
|
||||
{DA3595A8-35DE-42B9-97A4-4A2461BAD554}.Debug|x86.Build.0 = Release|Any CPU
|
||||
{DA3595A8-35DE-42B9-97A4-4A2461BAD554}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{DA3595A8-35DE-42B9-97A4-4A2461BAD554}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU
|
||||
{DA3595A8-35DE-42B9-97A4-4A2461BAD554}.MinSizeRel|x64.ActiveCfg = Release|Any CPU
|
||||
{DA3595A8-35DE-42B9-97A4-4A2461BAD554}.MinSizeRel|x64.Build.0 = Release|Any CPU
|
||||
{DA3595A8-35DE-42B9-97A4-4A2461BAD554}.MinSizeRel|x86.ActiveCfg = Release|Any CPU
|
||||
{DA3595A8-35DE-42B9-97A4-4A2461BAD554}.MinSizeRel|x86.Build.0 = Release|Any CPU
|
||||
{DA3595A8-35DE-42B9-97A4-4A2461BAD554}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{DA3595A8-35DE-42B9-97A4-4A2461BAD554}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{DA3595A8-35DE-42B9-97A4-4A2461BAD554}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{DA3595A8-35DE-42B9-97A4-4A2461BAD554}.Release|x64.Build.0 = Release|Any CPU
|
||||
{DA3595A8-35DE-42B9-97A4-4A2461BAD554}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{DA3595A8-35DE-42B9-97A4-4A2461BAD554}.Release|x86.Build.0 = Release|Any CPU
|
||||
{DA3595A8-35DE-42B9-97A4-4A2461BAD554}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{DA3595A8-35DE-42B9-97A4-4A2461BAD554}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
|
||||
{DA3595A8-35DE-42B9-97A4-4A2461BAD554}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
|
||||
{DA3595A8-35DE-42B9-97A4-4A2461BAD554}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
|
||||
{DA3595A8-35DE-42B9-97A4-4A2461BAD554}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
|
||||
{DA3595A8-35DE-42B9-97A4-4A2461BAD554}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
|
||||
{F2D1A7DA-B3EB-4CA7-BAA9-A18CEC398853}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F2D1A7DA-B3EB-4CA7-BAA9-A18CEC398853}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F2D1A7DA-B3EB-4CA7-BAA9-A18CEC398853}.Debug|x64.ActiveCfg = Release|Any CPU
|
||||
{F2D1A7DA-B3EB-4CA7-BAA9-A18CEC398853}.Debug|x64.Build.0 = Release|Any CPU
|
||||
{F2D1A7DA-B3EB-4CA7-BAA9-A18CEC398853}.Debug|x86.ActiveCfg = Release|Any CPU
|
||||
{F2D1A7DA-B3EB-4CA7-BAA9-A18CEC398853}.Debug|x86.Build.0 = Release|Any CPU
|
||||
{F2D1A7DA-B3EB-4CA7-BAA9-A18CEC398853}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F2D1A7DA-B3EB-4CA7-BAA9-A18CEC398853}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU
|
||||
{F2D1A7DA-B3EB-4CA7-BAA9-A18CEC398853}.MinSizeRel|x64.ActiveCfg = Release|Any CPU
|
||||
{F2D1A7DA-B3EB-4CA7-BAA9-A18CEC398853}.MinSizeRel|x64.Build.0 = Release|Any CPU
|
||||
{F2D1A7DA-B3EB-4CA7-BAA9-A18CEC398853}.MinSizeRel|x86.ActiveCfg = Release|Any CPU
|
||||
{F2D1A7DA-B3EB-4CA7-BAA9-A18CEC398853}.MinSizeRel|x86.Build.0 = Release|Any CPU
|
||||
{F2D1A7DA-B3EB-4CA7-BAA9-A18CEC398853}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F2D1A7DA-B3EB-4CA7-BAA9-A18CEC398853}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F2D1A7DA-B3EB-4CA7-BAA9-A18CEC398853}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{F2D1A7DA-B3EB-4CA7-BAA9-A18CEC398853}.Release|x64.Build.0 = Release|Any CPU
|
||||
{F2D1A7DA-B3EB-4CA7-BAA9-A18CEC398853}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{F2D1A7DA-B3EB-4CA7-BAA9-A18CEC398853}.Release|x86.Build.0 = Release|Any CPU
|
||||
{F2D1A7DA-B3EB-4CA7-BAA9-A18CEC398853}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F2D1A7DA-B3EB-4CA7-BAA9-A18CEC398853}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
|
||||
{F2D1A7DA-B3EB-4CA7-BAA9-A18CEC398853}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
|
||||
{F2D1A7DA-B3EB-4CA7-BAA9-A18CEC398853}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
|
||||
{F2D1A7DA-B3EB-4CA7-BAA9-A18CEC398853}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
|
||||
{F2D1A7DA-B3EB-4CA7-BAA9-A18CEC398853}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
|
||||
{3F7D56A3-A280-467E-8916-C18659C243BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3F7D56A3-A280-467E-8916-C18659C243BA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3F7D56A3-A280-467E-8916-C18659C243BA}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{3F7D56A3-A280-467E-8916-C18659C243BA}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{3F7D56A3-A280-467E-8916-C18659C243BA}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{3F7D56A3-A280-467E-8916-C18659C243BA}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{3F7D56A3-A280-467E-8916-C18659C243BA}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3F7D56A3-A280-467E-8916-C18659C243BA}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3F7D56A3-A280-467E-8916-C18659C243BA}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
|
||||
{3F7D56A3-A280-467E-8916-C18659C243BA}.MinSizeRel|x64.Build.0 = Debug|Any CPU
|
||||
{3F7D56A3-A280-467E-8916-C18659C243BA}.MinSizeRel|x86.ActiveCfg = Debug|Any CPU
|
||||
{3F7D56A3-A280-467E-8916-C18659C243BA}.MinSizeRel|x86.Build.0 = Debug|Any CPU
|
||||
{3F7D56A3-A280-467E-8916-C18659C243BA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3F7D56A3-A280-467E-8916-C18659C243BA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3F7D56A3-A280-467E-8916-C18659C243BA}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{3F7D56A3-A280-467E-8916-C18659C243BA}.Release|x64.Build.0 = Release|Any CPU
|
||||
{3F7D56A3-A280-467E-8916-C18659C243BA}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{3F7D56A3-A280-467E-8916-C18659C243BA}.Release|x86.Build.0 = Release|Any CPU
|
||||
{3F7D56A3-A280-467E-8916-C18659C243BA}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3F7D56A3-A280-467E-8916-C18659C243BA}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
|
||||
{3F7D56A3-A280-467E-8916-C18659C243BA}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
|
||||
{3F7D56A3-A280-467E-8916-C18659C243BA}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
|
||||
{3F7D56A3-A280-467E-8916-C18659C243BA}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
|
||||
{3F7D56A3-A280-467E-8916-C18659C243BA}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
|
||||
{C8424FA7-BFBE-42BF-A12E-C5AE2BFFD689}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C8424FA7-BFBE-42BF-A12E-C5AE2BFFD689}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C8424FA7-BFBE-42BF-A12E-C5AE2BFFD689}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{C8424FA7-BFBE-42BF-A12E-C5AE2BFFD689}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{C8424FA7-BFBE-42BF-A12E-C5AE2BFFD689}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{C8424FA7-BFBE-42BF-A12E-C5AE2BFFD689}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{C8424FA7-BFBE-42BF-A12E-C5AE2BFFD689}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C8424FA7-BFBE-42BF-A12E-C5AE2BFFD689}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C8424FA7-BFBE-42BF-A12E-C5AE2BFFD689}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
|
||||
{C8424FA7-BFBE-42BF-A12E-C5AE2BFFD689}.MinSizeRel|x64.Build.0 = Debug|Any CPU
|
||||
{C8424FA7-BFBE-42BF-A12E-C5AE2BFFD689}.MinSizeRel|x86.ActiveCfg = Debug|Any CPU
|
||||
{C8424FA7-BFBE-42BF-A12E-C5AE2BFFD689}.MinSizeRel|x86.Build.0 = Debug|Any CPU
|
||||
{C8424FA7-BFBE-42BF-A12E-C5AE2BFFD689}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C8424FA7-BFBE-42BF-A12E-C5AE2BFFD689}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C8424FA7-BFBE-42BF-A12E-C5AE2BFFD689}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{C8424FA7-BFBE-42BF-A12E-C5AE2BFFD689}.Release|x64.Build.0 = Release|Any CPU
|
||||
{C8424FA7-BFBE-42BF-A12E-C5AE2BFFD689}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{C8424FA7-BFBE-42BF-A12E-C5AE2BFFD689}.Release|x86.Build.0 = Release|Any CPU
|
||||
{C8424FA7-BFBE-42BF-A12E-C5AE2BFFD689}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C8424FA7-BFBE-42BF-A12E-C5AE2BFFD689}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
|
||||
{C8424FA7-BFBE-42BF-A12E-C5AE2BFFD689}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
|
||||
{C8424FA7-BFBE-42BF-A12E-C5AE2BFFD689}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
|
||||
{C8424FA7-BFBE-42BF-A12E-C5AE2BFFD689}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
|
||||
{C8424FA7-BFBE-42BF-A12E-C5AE2BFFD689}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
|
||||
{53AF2D01-B69F-4CD0-86A7-8FD95967D23C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{53AF2D01-B69F-4CD0-86A7-8FD95967D23C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{53AF2D01-B69F-4CD0-86A7-8FD95967D23C}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{53AF2D01-B69F-4CD0-86A7-8FD95967D23C}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{53AF2D01-B69F-4CD0-86A7-8FD95967D23C}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{53AF2D01-B69F-4CD0-86A7-8FD95967D23C}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{53AF2D01-B69F-4CD0-86A7-8FD95967D23C}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{53AF2D01-B69F-4CD0-86A7-8FD95967D23C}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU
|
||||
{53AF2D01-B69F-4CD0-86A7-8FD95967D23C}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
|
||||
{53AF2D01-B69F-4CD0-86A7-8FD95967D23C}.MinSizeRel|x64.Build.0 = Debug|Any CPU
|
||||
{53AF2D01-B69F-4CD0-86A7-8FD95967D23C}.MinSizeRel|x86.ActiveCfg = Debug|Any CPU
|
||||
{53AF2D01-B69F-4CD0-86A7-8FD95967D23C}.MinSizeRel|x86.Build.0 = Debug|Any CPU
|
||||
{53AF2D01-B69F-4CD0-86A7-8FD95967D23C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{53AF2D01-B69F-4CD0-86A7-8FD95967D23C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{53AF2D01-B69F-4CD0-86A7-8FD95967D23C}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{53AF2D01-B69F-4CD0-86A7-8FD95967D23C}.Release|x64.Build.0 = Release|Any CPU
|
||||
{53AF2D01-B69F-4CD0-86A7-8FD95967D23C}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{53AF2D01-B69F-4CD0-86A7-8FD95967D23C}.Release|x86.Build.0 = Release|Any CPU
|
||||
{53AF2D01-B69F-4CD0-86A7-8FD95967D23C}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{53AF2D01-B69F-4CD0-86A7-8FD95967D23C}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
|
||||
{53AF2D01-B69F-4CD0-86A7-8FD95967D23C}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
|
||||
{53AF2D01-B69F-4CD0-86A7-8FD95967D23C}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
|
||||
{53AF2D01-B69F-4CD0-86A7-8FD95967D23C}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
|
||||
{53AF2D01-B69F-4CD0-86A7-8FD95967D23C}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
|
||||
{78E15EC1-7732-41E3-8591-934E9F583254}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{78E15EC1-7732-41E3-8591-934E9F583254}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{78E15EC1-7732-41E3-8591-934E9F583254}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{78E15EC1-7732-41E3-8591-934E9F583254}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{78E15EC1-7732-41E3-8591-934E9F583254}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{78E15EC1-7732-41E3-8591-934E9F583254}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{78E15EC1-7732-41E3-8591-934E9F583254}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{78E15EC1-7732-41E3-8591-934E9F583254}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU
|
||||
{78E15EC1-7732-41E3-8591-934E9F583254}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU
|
||||
{78E15EC1-7732-41E3-8591-934E9F583254}.MinSizeRel|x64.Build.0 = Debug|Any CPU
|
||||
{78E15EC1-7732-41E3-8591-934E9F583254}.MinSizeRel|x86.ActiveCfg = Debug|Any CPU
|
||||
{78E15EC1-7732-41E3-8591-934E9F583254}.MinSizeRel|x86.Build.0 = Debug|Any CPU
|
||||
{78E15EC1-7732-41E3-8591-934E9F583254}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{78E15EC1-7732-41E3-8591-934E9F583254}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{78E15EC1-7732-41E3-8591-934E9F583254}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{78E15EC1-7732-41E3-8591-934E9F583254}.Release|x64.Build.0 = Release|Any CPU
|
||||
{78E15EC1-7732-41E3-8591-934E9F583254}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{78E15EC1-7732-41E3-8591-934E9F583254}.Release|x86.Build.0 = Release|Any CPU
|
||||
{78E15EC1-7732-41E3-8591-934E9F583254}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{78E15EC1-7732-41E3-8591-934E9F583254}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU
|
||||
{78E15EC1-7732-41E3-8591-934E9F583254}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU
|
||||
{78E15EC1-7732-41E3-8591-934E9F583254}.RelWithDebInfo|x64.Build.0 = Release|Any CPU
|
||||
{78E15EC1-7732-41E3-8591-934E9F583254}.RelWithDebInfo|x86.ActiveCfg = Release|Any CPU
|
||||
{78E15EC1-7732-41E3-8591-934E9F583254}.RelWithDebInfo|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{1AB5B24B-B317-4142-A5D1-A6E84F15BA34} = {ADA7052B-884B-4776-8B8D-D04191D0AA70}
|
||||
{FD7D515A-D10F-4F49-B8AE-21CF7ED071AE} = {89905EC4-BC0F-443B-8ADF-691321F10108}
|
||||
{8E3354BD-827F-41B7-9EE6-6BE1F1EDD8E9} = {89905EC4-BC0F-443B-8ADF-691321F10108}
|
||||
{FF498306-2DE2-47F6-8C35-3CF0589CF2B8} = {89905EC4-BC0F-443B-8ADF-691321F10108}
|
||||
{27B12960-ABB0-4903-9C60-5E9157E659C8} = {89905EC4-BC0F-443B-8ADF-691321F10108}
|
||||
{8A2FA2D8-0DA1-4814-B5C1-2ECEAA613EB1} = {88278B81-7649-45DC-8A6A-D3A645C5AFC3}
|
||||
{2BDC1BC2-867E-47C0-BAD0-ADE897F07F78} = {89905EC4-BC0F-443B-8ADF-691321F10108}
|
||||
{48A62BA4-D798-46A2-AB49-8A8471CF8165} = {1AB5B24B-B317-4142-A5D1-A6E84F15BA34}
|
||||
{7C3D62C6-1D71-4C45-872F-7583F2AB304A} = {1AB5B24B-B317-4142-A5D1-A6E84F15BA34}
|
||||
{79B4932C-3D57-494B-95AF-E5624F9D2F01} = {1AB5B24B-B317-4142-A5D1-A6E84F15BA34}
|
||||
{1FC7922B-489D-42BF-81CD-31A37DD17E5D} = {1AB5B24B-B317-4142-A5D1-A6E84F15BA34}
|
||||
{6BC1E4BF-7291-478A-ACF7-A0ED6F5A26D6} = {1AB5B24B-B317-4142-A5D1-A6E84F15BA34}
|
||||
{590CF173-498A-4687-82FD-2649AA87274B} = {1AB5B24B-B317-4142-A5D1-A6E84F15BA34}
|
||||
{AA831686-C4EB-4250-9EC3-D252303B36A2} = {6BC1E4BF-7291-478A-ACF7-A0ED6F5A26D6}
|
||||
{DED9654E-74A5-4BCB-83A4-05D4B78D7833} = {590CF173-498A-4687-82FD-2649AA87274B}
|
||||
{2E852476-0B95-4A5B-9C29-53A950D1278F} = {1AB5B24B-B317-4142-A5D1-A6E84F15BA34}
|
||||
{736BF068-7389-41B9-BF63-D4E49B9BC833} = {1AB5B24B-B317-4142-A5D1-A6E84F15BA34}
|
||||
{48408A19-CCC5-4C85-990B-0A9F827BF29A} = {1AB5B24B-B317-4142-A5D1-A6E84F15BA34}
|
||||
{8FB83810-5A4C-4097-9A79-8E687E4981CB} = {1AB5B24B-B317-4142-A5D1-A6E84F15BA34}
|
||||
{098D9321-1201-4974-A75E-F58EBCD98ACF} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F}
|
||||
{1BFF54F9-4E35-49DB-893C-AF2047722FC6} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7}
|
||||
{48E260F4-6F3F-4387-B61F-D15BABD06D9A} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7}
|
||||
{AA744891-5209-4335-8457-37EC347DF833} = {88278B81-7649-45DC-8A6A-D3A645C5AFC3}
|
||||
{DA3595A8-35DE-42B9-97A4-4A2461BAD554} = {88278B81-7649-45DC-8A6A-D3A645C5AFC3}
|
||||
{F2D1A7DA-B3EB-4CA7-BAA9-A18CEC398853} = {88278B81-7649-45DC-8A6A-D3A645C5AFC3}
|
||||
{3275D006-54C8-4C64-A537-B9941C5D2F0C} = {89905EC4-BC0F-443B-8ADF-691321F10108}
|
||||
{DE4D1AEB-871B-4E7C-945A-453F9A490C06} = {89905EC4-BC0F-443B-8ADF-691321F10108}
|
||||
{3F7D56A3-A280-467E-8916-C18659C243BA} = {1AB5B24B-B317-4142-A5D1-A6E84F15BA34}
|
||||
{C8424FA7-BFBE-42BF-A12E-C5AE2BFFD689} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7}
|
||||
{53AF2D01-B69F-4CD0-86A7-8FD95967D23C} = {ED2FE3E2-F7E7-4389-8231-B65123F2076F}
|
||||
{78E15EC1-7732-41E3-8591-934E9F583254} = {17735A9D-BFD9-4585-A7CB-3208CA6EA8A7}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {B526D2CE-EE2D-4AD4-93EF-1867D90FF1F5}
|
||||
|
|
15
NuGet.config
Normal file
15
NuGet.config
Normal file
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<solution>
|
||||
<add key="disableSourceControlIntegration" value="true" />
|
||||
</solution>
|
||||
<!-- Only specify feed for Arcade SDK (see https://github.com/Microsoft/msbuild/issues/2982) -->
|
||||
<packageSources>
|
||||
<clear />
|
||||
<add key="dotnet-core" value="https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json" />
|
||||
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
|
||||
</packageSources>
|
||||
<disabledPackageSources>
|
||||
<clear />
|
||||
</disabledPackageSources>
|
||||
</configuration>
|
3
TestAssets/Directory.Build.targets
Normal file
3
TestAssets/Directory.Build.targets
Normal file
|
@ -0,0 +1,3 @@
|
|||
<Project>
|
||||
<!-- Empty Directory.Build.targets file to prevent test asset projects from picking up the repo's Directory.Build.props' -->
|
||||
</Project>
|
|
@ -1,8 +1,6 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), testAsset.props))\testAsset.props" />
|
||||
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>$(CliTargetFramework)</TargetFramework>
|
||||
<TargetFramework>netcoreapp3.0</TargetFramework>
|
||||
<OutputType>Exe</OutputType>
|
||||
</PropertyGroup>
|
||||
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), testAsset.props))\testAsset.props" />
|
||||
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>$(CliTargetFramework)</TargetFramework>
|
||||
<TargetFramework>netcoreapp3.0</TargetFramework>
|
||||
<OutputType>Exe</OutputType>
|
||||
<VersionSuffix></VersionSuffix>
|
||||
</PropertyGroup>
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), testAsset.props))\testAsset.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>$(CliTargetFramework)</TargetFramework>
|
||||
<RuntimeIdentifiers>win7-x64;win7-x86;osx.10.12-x64;ubuntu.14.04-x64;ubuntu.16.04-x64;ubuntu.16.10-x64;rhel.6-x64;centos.7-x64;rhel.7-x64;debian.8-x64;fedora.24-x64;opensuse.42.1-x64;linux-musl-x64</RuntimeIdentifiers>
|
||||
<TargetFramework>netcoreapp3.0</TargetFramework>
|
||||
<RestoreAdditionalProjectSources Condition="'$(TEST_PACKAGES)' != ''">$(TEST_PACKAGES)</RestoreAdditionalProjectSources>
|
||||
</PropertyGroup>
|
||||
|
||||
|
|
5
build.sh
5
build.sh
|
@ -34,6 +34,9 @@ while [[ $# > 0 ]]; do
|
|||
export DOCKER_IMAGENAME=$2
|
||||
shift
|
||||
;;
|
||||
--noprettyprint)
|
||||
export DOTNET_CORESDK_NOPRETTYPRINT=1
|
||||
;;
|
||||
*)
|
||||
args="$args $1"
|
||||
;;
|
||||
|
@ -43,7 +46,7 @@ done
|
|||
|
||||
dockerbuild()
|
||||
{
|
||||
BUILD_COMMAND=/opt/code/run-build.sh $DIR/scripts/dockerrun.sh --non-interactive "$@"
|
||||
BUILD_COMMAND=/opt/code/run-build.sh $DIR/eng/dockerrun.sh --non-interactive "$@"
|
||||
}
|
||||
|
||||
# Check if we need to build in docker
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Condition=" '$(IncludeAspNetCoreRuntime)' != 'false' ">
|
||||
<BundledDotnetTools Include="dotnet-dev-certs" Version="$(DotnetDevCertsPackageVersion)" />
|
||||
<BundledDotnetTools Include="dotnet-ef" Version="$(DotnetEfPackageVersion)" ObsoletesCliTool="Microsoft.EntityFrameworkCore.Tools.DotNet" />
|
||||
<BundledDotnetTools Include="dotnet-sql-cache" Version="$(DotnetSqlCachePackageVersion)" ObsoletesCliTool="Microsoft.Extensions.Caching.SqlConfig.Tools" />
|
||||
<BundledDotnetTools Include="dotnet-user-secrets" Version="$(DotnetUserSecretsPackageVersion)" ObsoletesCliTool="Microsoft.Extensions.SecretManager.Tools" />
|
||||
<BundledDotnetTools Include="dotnet-watch" Version="$(DotnetWatchPackageVersion)" ObsoletesCliTool="Microsoft.DotNet.Watcher.Tools" />
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -1,216 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
|
||||
<UsingTask TaskName="DotNetDebTool" AssemblyFile="$(CLIBuildDll)" />
|
||||
|
||||
<Import Project="Installer.DEB.targets" />
|
||||
|
||||
<!-- Re-enable "TestSdkDeb" when the following issue is resolved: https://github.com/dotnet/cli/issues/9672 -->
|
||||
<Target Name="GenerateDebs"
|
||||
DependsOnTargets="SetupDebProps;
|
||||
TestDebuild;
|
||||
BuildSdkDeb"
|
||||
Condition=" '$(IsDebianBaseDistro)' == 'True' "
|
||||
Outputs="@(GeneratedInstallers)"/>
|
||||
|
||||
<Target Name="GetAspNetSharedFxInstallArgs" DependsOnTargets="EvaluateRuntimeCoherence">
|
||||
<PropertyGroup>
|
||||
<AspNetVersionPrereleaseSeparator>$(AspNetCoreSharedFxBaseRuntimeVersion.IndexOf('-'))</AspNetVersionPrereleaseSeparator>
|
||||
<AspNetSimpleVersion>$(AspNetCoreSharedFxBaseRuntimeVersion)</AspNetSimpleVersion>
|
||||
<AspNetSimpleVersion Condition=" '$(AspNetVersionPrereleaseSeparator)' != -1 ">$(AspNetCoreSharedFxBaseRuntimeVersion.Substring(0, $(AspNetVersionPrereleaseSeparator)))</AspNetSimpleVersion>
|
||||
|
||||
<AspNetVersionPatchSeparator>$(AspNetSimpleVersion.LastIndexOf('.'))</AspNetVersionPatchSeparator>
|
||||
<AspNetSimpleVersion Condition=" '$(AspNetVersionPatchSeparator)' != -1 ">$(AspNetSimpleVersion.Substring(0, $(AspNetVersionPatchSeparator)))</AspNetSimpleVersion>
|
||||
|
||||
<!-- dotnet-runtime package may not currently be available -->
|
||||
<InstallAspNetCoreSharedFxArgs>--ignore-depends=dotnet-runtime-$(AspNetSimpleVersion)</InstallAspNetCoreSharedFxArgs>
|
||||
</PropertyGroup>
|
||||
</Target>
|
||||
|
||||
<Target Name="BuildSdkDeb"
|
||||
Condition=" '$(IsDebianBaseDistro)' == 'True' AND '$(DebuildPresent)' == 'true' "
|
||||
DependsOnTargets="PrepareDotnetDebDirectories;
|
||||
PrepareDotnetDebTool;
|
||||
GetAspNetSharedFxInstallArgs;"
|
||||
Inputs="@(CLISdkFiles)"
|
||||
Outputs="$(SdkInstallerFile)" >
|
||||
<!-- Install Shared Framework Packages -->
|
||||
|
||||
<Exec Command="sudo dpkg -i $(DownloadedRuntimeDepsInstallerFile)" />
|
||||
<Exec Command="sudo dpkg -i $(DownloadedSharedHostInstallerFile)" />
|
||||
<Exec Command="sudo dpkg -i $(DownloadedHostFxrInstallerFile)" />
|
||||
<Exec Command="sudo dpkg -i $(DownloadedSharedFrameworkInstallerFile)" />
|
||||
<Exec Command="sudo dpkg $(InstallAspNetCoreSharedFxArgs) -i $(DownloadedAspNetCoreSharedFxInstallerFile)" />
|
||||
|
||||
<!-- Create layout: Binaries -->
|
||||
<Copy
|
||||
DestinationFiles="@(CLISdkFiles->'$(LayoutPackageRootDir)/sdk/%(RecursiveDir)%(Filename)%(Extension)')"
|
||||
SourceFiles="@(CLISdkFiles)"
|
||||
OverwriteReadOnlyFiles="True"
|
||||
SkipUnchangedFiles="False"
|
||||
UseHardlinksIfPossible="False" />
|
||||
|
||||
<!-- Create layout: Man Pages -->
|
||||
<Copy
|
||||
DestinationFiles="@(SdkDebManPageFiles->'$(LayoutDocsDir)/%(RecursiveDir)%(Filename)-$(SdkVersion)%(Extension)')"
|
||||
SourceFiles="@(SdkDebManPageFiles)"
|
||||
OverwriteReadOnlyFiles="True"
|
||||
SkipUnchangedFiles="False"
|
||||
UseHardlinksIfPossible="False" />
|
||||
|
||||
<!-- Create layout: Generate and Place postinst -->
|
||||
<ReplaceFileContents
|
||||
InputFiles="$(DebianPostinstTemplateFile)"
|
||||
DestinationFiles="$(DebianPostinstFile)"
|
||||
ReplacementItems="@(DebianPostInstTokenValues)" />
|
||||
|
||||
<Chmod
|
||||
Glob="$(DebianPostinstFile)"
|
||||
Mode="ugo+x" />
|
||||
|
||||
<!-- Create layout: Generate and Place debian_config.json -->
|
||||
<ReplaceFileContents
|
||||
InputFiles="$(DebianConfigTemplateFile)"
|
||||
DestinationFiles="$(DebianConfigJsonFile)"
|
||||
ReplacementItems="@(DebianConfigTokenValues)" />
|
||||
|
||||
<Chmod
|
||||
Glob="$(PackageTool)"
|
||||
Mode="u+x" />
|
||||
|
||||
<!-- Build SDK Deb package -->
|
||||
<DotNetDebTool ToolPath="$(PreviousStageDirectory)"
|
||||
InputDirectory="$(LayoutDirectory)"
|
||||
OutputDirectory="$(DotNetDebToolOutputDirectory)"
|
||||
PackageName="$(SdkDebianPackageName)"
|
||||
PackageVersion="$(SdkVersion)"
|
||||
WorkingDirectory="$(DotnetDebToolDir)" />
|
||||
|
||||
<!-- Copy SDK package to output -->
|
||||
<ItemGroup>
|
||||
<GeneratedDebFiles Include="$(DotNetDebToolOutputDirectory)/*.deb" />
|
||||
</ItemGroup>
|
||||
|
||||
<Error Text="@(GeneratedDebFiles->Count()) .deb files generated." Condition="'@(GeneratedDebFiles->Count())' != 1" />
|
||||
|
||||
<Copy
|
||||
DestinationFiles="$(SdkInstallerFile)"
|
||||
SourceFiles="@(GeneratedDebFiles)"
|
||||
OverwriteReadOnlyFiles="True"
|
||||
SkipUnchangedFiles="False"
|
||||
UseHardlinksIfPossible="False" />
|
||||
|
||||
<!-- Proactively remove all possible Shared Framework and Debian Packages -->
|
||||
<ItemGroup>
|
||||
<SetupDebPackageToRemove Include="$(SdkDebianPackageName)" />
|
||||
<SetupDebPackageToRemove Include="$(AspNetCoreSharedFxDebianPackageName)" />
|
||||
<SetupDebPackageToRemove Include="$(AspNetCoreSharedFxDebianPackageFileName)" />
|
||||
<SetupDebPackageToRemove Include="$(SharedFxDebianPackageName)" />
|
||||
<SetupDebPackageToRemove Include="$(SharedFxDebianPackageFileName)" />
|
||||
<SetupDebPackageToRemove Include="$(HostFxrDebianPackageName)" />
|
||||
<SetupDebPackageToRemove Include="$(HostFxrDebianPackageFileName)" />
|
||||
<SetupDebPackageToRemove Include="$(HostDebianPackageName)" />
|
||||
<SetupDebPackageToRemove Include="$(RuntimeDepsPackageName)" />
|
||||
</ItemGroup>
|
||||
<!-- The following line is needed. So it won't warning dotnet folder is not empty after uninstall -->
|
||||
<Exec Command="sudo rm -rf /usr/share/dotnet/sdk/NuGetFallbackFolder" />
|
||||
<Exec Command="!(dpkg-query -W %(SetupDebPackageToRemove.Identity)) || sudo dpkg -r %(SetupDebPackageToRemove.Identity)" />
|
||||
</Target>
|
||||
|
||||
<Target Name="TestSdkDeb"
|
||||
Condition=" '$(CLIBUILD_SKIP_TESTS)' != 'true' and '$(IsDebianBaseDistro)' == 'True' and '$(DebuildPresent)' == 'true' "
|
||||
DependsOnTargets="RestoreTests;GetAspNetSharedFxInstallArgs"
|
||||
Inputs="$(DownloadedSharedHostInstallerFile);
|
||||
$(DownloadedHostFxrInstallerFile);
|
||||
$(DownloadedSharedFrameworkInstallerFile);
|
||||
$(SdkInstallerFile);"
|
||||
Outputs="$(DebianTestResultsXmlFile)" >
|
||||
|
||||
<!-- Install Dependencies and SDK Packages -->
|
||||
<Exec Command="sudo dpkg -i $(DownloadedRuntimeDepsInstallerFile)" />
|
||||
<Exec Command="sudo dpkg -i $(DownloadedSharedHostInstallerFile)" />
|
||||
<Exec Command="sudo dpkg -i $(DownloadedHostFxrInstallerFile)" />
|
||||
<Exec Command="sudo dpkg -i $(DownloadedSharedFrameworkInstallerFile)" />
|
||||
<Exec Command="sudo dpkg $(InstallAspNetCoreSharedFxArgs) -i $(DownloadedAspNetCoreSharedFxInstallerFile)" />
|
||||
|
||||
<Exec Command="sudo dpkg -i $(SdkInstallerFile)" />
|
||||
|
||||
<!-- Run E2E -->
|
||||
<DotNetRestore ProjectPath="$(EndToEndTestProject)"
|
||||
ToolPath="$(DebianInstalledDirectory)" />
|
||||
|
||||
<DotNetTest ProjectPath="$(EndToEndTestProject)"
|
||||
EnvironmentVariables="@(TestSdkDebTaskEnvironmentVariables)"
|
||||
ToolPath="$(DebianInstalledDirectory)" />
|
||||
|
||||
<!-- Clean up Packages -->
|
||||
<!-- The following line is needed. So it won't warning dotnet folder is not empty after uninstall -->
|
||||
<Exec Command="sudo rm -rf /usr/share/dotnet/sdk/NuGetFallbackFolder" />
|
||||
|
||||
<ItemGroup>
|
||||
<TestSdkDebPackageToRemove Include="$(SdkDebianPackageName)" />
|
||||
<TestSdkDebPackageToRemove Include="$(AspNetCoreSharedFxDebianPackageName)" />
|
||||
<TestSdkDebPackageToRemove Include="$(SharedFxDebianPackageName)" />
|
||||
<TestSdkDebPackageToRemove Include="$(HostFxrDebianPackageName)" />
|
||||
<TestSdkDebPackageToRemove Include="$(HostDebianPackageName)" />
|
||||
<TestSdkDebPackageToRemove Include="$(RuntimeDepsPackageName)"/>
|
||||
</ItemGroup>
|
||||
<!-- If package installed remove it -->
|
||||
<Exec Command="!(dpkg-query -W %(TestSdkDebPackageToRemove.Identity)) || sudo dpkg -r %(TestSdkDebPackageToRemove.Identity)" />
|
||||
</Target>
|
||||
|
||||
<Target Name="PrepareDotnetDebDirectories">
|
||||
|
||||
<!-- Clean the workspace -->
|
||||
<ItemGroup>
|
||||
<FilesToClean Remove="*" />
|
||||
<FilesToClean Include="$(SdkInstallerFile)" />
|
||||
|
||||
<WorkspaceDirectories Remove="*" />
|
||||
<WorkspaceDirectories Include="$(SdkDebianIntermediateDirectory);
|
||||
$(LayoutDirectory)" />
|
||||
|
||||
<LayoutSubDirectories Remove="*" />
|
||||
<LayoutSubDirectories Include="$(LayoutPackageRootDir);
|
||||
$(LayoutAbsolutePlacementDir);
|
||||
$(LayoutSamplesDir);
|
||||
$(LayoutDocsDir);
|
||||
$(LayoutDebianFilesDir)" />
|
||||
</ItemGroup>
|
||||
|
||||
<Delete Files="@(FilesToClean)" />
|
||||
<RemoveDir Directories="@(WorkspaceDirectories)" />
|
||||
|
||||
<!-- Rebuild the workspace -->
|
||||
<MakeDir Directories="@(WorkspaceDirectories)" />
|
||||
<MakeDir Directories="@(LayoutSubDirectories)" />
|
||||
<MakeDir Directories="$(DotNetDebToolOutputDirectory)" />
|
||||
</Target>
|
||||
|
||||
<Target Name="PrepareDotnetDebTool">
|
||||
|
||||
<DotNetRestore ToolPath="$(PreviousStageDirectory)"
|
||||
WorkingDirectory="$(DotnetDebToolDir)" />
|
||||
</Target>
|
||||
|
||||
<Target Name="TestDebuild">
|
||||
<Message Text="Don't remove this" />
|
||||
|
||||
<!-- run Debuild -->
|
||||
<!-- NB: IgnoreExitCode prevents Exec from failing, but does not prevent us from retrieving the exit code. -->
|
||||
<Exec Command="/usr/bin/env debuild -h > /dev/null 2>&1" IgnoreExitCode="true">
|
||||
<Output TaskParameter="ExitCode" PropertyName="DebuildExitCode" />
|
||||
</Exec>
|
||||
|
||||
<!-- Check if it returned 0 -->
|
||||
<PropertyGroup>
|
||||
<DebuildPresent>false</DebuildPresent>
|
||||
<DebuildPresent Condition=" '$(DebuildExitCode)' == '0' ">true</DebuildPresent>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Workaround for Ubuntu16 Jenkins https://github.com/dotnet/core-setup/issues/167 -->
|
||||
<Message Condition=" '$(DebuildPresent)' != 'true' "
|
||||
Text="Debuild Not found, Debian packages will not be built."
|
||||
Importance="High" />
|
||||
</Target>
|
||||
</Project>
|
|
@ -1,132 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Target Name="SetupDebProps"
|
||||
DependsOnTargets="Init;
|
||||
CalculateLinuxNativeInstallerDependencyVersions">
|
||||
<!-- dotnet deb-tool -->
|
||||
<PropertyGroup>
|
||||
<DotnetDebToolDir>$(MSBuildThisFileDirectory)/dotnet-deb-tool-consumer</DotnetDebToolDir>
|
||||
<PackageTool>$(NuGetPackagesDir)/dotnet-deb-tool/$(DotnetDebToolVersion)/lib/netcoreapp2.0/tool/package_tool</PackageTool>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- constants -->
|
||||
<PropertyGroup>
|
||||
<DebianInstalledDirectory>/usr/share/dotnet</DebianInstalledDirectory>
|
||||
|
||||
<LayoutPackageRootDirName>package_root</LayoutPackageRootDirName>
|
||||
<LayoutAbsolutePlacementDirName>$</LayoutAbsolutePlacementDirName>
|
||||
<LayoutSamplesDirName>samples</LayoutSamplesDirName>
|
||||
<LayoutDocsDirName>docs</LayoutDocsDirName>
|
||||
<LayoutDebianFilesDirName>debian</LayoutDebianFilesDirName>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Package Identities -->
|
||||
<PropertyGroup>
|
||||
<RuntimeDepsPackageVersion>$(MicrosoftNETCoreAppMajorMinorVersion)</RuntimeDepsPackageVersion>
|
||||
<RuntimeDepsPackageName>dotnet-runtime-deps-$(RuntimeDepsPackageVersion)</RuntimeDepsPackageName>
|
||||
<SdkDebianPackageVersion>$(MajorMinorVersion)</SdkDebianPackageVersion>
|
||||
<SdkDebianPackageName>dotnet-sdk-$(SdkDebianPackageVersion)</SdkDebianPackageName>
|
||||
<SharedFxDebianPackageFileVersion>$(MicrosoftNETCoreAppPackageVersion)</SharedFxDebianPackageFileVersion>
|
||||
<SharedFxDebianPackageVersion>$(MicrosoftNETCoreAppMajorMinorVersion)</SharedFxDebianPackageVersion>
|
||||
<SharedFxDebianPackageFileName>dotnet-runtime-$(SharedFxDebianPackageFileVersion)</SharedFxDebianPackageFileName>
|
||||
<SharedFxDebianPackageFileName>$(SharedFxDebianPackageFileName.ToLower())</SharedFxDebianPackageFileName>
|
||||
<SharedFxDebianPackageName>dotnet-runtime-$(SharedFxDebianPackageVersion)</SharedFxDebianPackageName>
|
||||
<SharedFxDebianPackageName>$(SharedFxDebianPackageName.ToLower())</SharedFxDebianPackageName>
|
||||
<HostFxrDebianPackageFileName>dotnet-hostfxr-$(HostFxrVersion)</HostFxrDebianPackageFileName>
|
||||
<HostFxrDebianPackageFileName>$(HostFxrDebianPackageFileName.ToLower())</HostFxrDebianPackageFileName>
|
||||
<HostFxrDebianPackageName>dotnet-hostfxr-$(HostFxrMajorMinorVersion)</HostFxrDebianPackageName>
|
||||
<HostFxrDebianPackageName>$(HostFxrDebianPackageName.ToLower())</HostFxrDebianPackageName>
|
||||
<HostDebianPackageName>dotnet-host</HostDebianPackageName>
|
||||
<AspNetCoreSharedFxDebianPackageFileName>aspnetcore-runtime-$(AspNetCoreVersion)</AspNetCoreSharedFxDebianPackageFileName>
|
||||
<AspNetCoreSharedFxDebianPackageFileName>$(AspNetCoreSharedFxDebianPackageFileName.ToLower())</AspNetCoreSharedFxDebianPackageFileName>
|
||||
<AspNetCoreSharedFxDebianPackageName>aspnetcore-runtime-$(AspNetCoreMajorMinorVersion)</AspNetCoreSharedFxDebianPackageName>
|
||||
<AspNetCoreSharedFxDebianPackageName>$(AspNetCoreSharedFxDebianPackageName.ToLower())</AspNetCoreSharedFxDebianPackageName>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Inputs -->
|
||||
<PropertyGroup>
|
||||
<ManpagesDirectory>$(RepoRoot)/Documentation/manpages</ManpagesDirectory>
|
||||
<EndToEndTestProject>$(RepoRoot)/test/EndToEnd/EndToEnd.csproj</EndToEndTestProject>
|
||||
<CLISdkRoot>$(OutputDirectory)/sdk</CLISdkRoot>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<CLISdkFiles Include="$(CLISdkRoot)/**/*" />
|
||||
<SdkDebManPageFiles Include="$(ManpagesDirectory)/**/*" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Output Directories -->
|
||||
<PropertyGroup>
|
||||
<InstallerOutputDirectory>$(PackagesDirectory)</InstallerOutputDirectory>
|
||||
<SdkInstallerFile>$(InstallerOutputDirectory)/$(DistroSpecificArtifactNameWithVersionCombinedHostHostFxrFrameworkSdk)$(InstallerExtension)</SdkInstallerFile>
|
||||
<SdkDebianIntermediateDirectory>$(IntermediateDirectory)/debian/sdk</SdkDebianIntermediateDirectory>
|
||||
<DotNetDebToolOutputDirectory>$(SdkDebianIntermediateDirectory)/deb-tool-output</DotNetDebToolOutputDirectory>
|
||||
<DebianTestResultsXmlFile>$(SdkDebianIntermediateDirectory)/debian-testResults.xml</DebianTestResultsXmlFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Layout Directories -->
|
||||
<PropertyGroup>
|
||||
<LayoutDirectory>$(SdkDebianIntermediateDirectory)/debianLayoutDirectory</LayoutDirectory>
|
||||
<LayoutPackageRootDir>$(LayoutDirectory)/$(LayoutPackageRootDirName)</LayoutPackageRootDir>
|
||||
<LayoutAbsolutePlacementDir>$(LayoutDirectory)/$(LayoutAbsolutePlacementDirName)</LayoutAbsolutePlacementDir>
|
||||
<LayoutSamplesDir>$(LayoutDirectory)/$(LayoutSamplesDirName)</LayoutSamplesDir>
|
||||
<LayoutDocsDir>$(LayoutDirectory)/$(LayoutDocsDirName)</LayoutDocsDir>
|
||||
<LayoutDebianFilesDir>$(LayoutDirectory)/$(LayoutDebianFilesDirName)</LayoutDebianFilesDir>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- debian_config.json -->
|
||||
<PropertyGroup>
|
||||
<DebianConfigTemplateFile>$(RepoRoot)/packaging/deb/dotnet-debian_config.json</DebianConfigTemplateFile>
|
||||
<DebianConfigJsonFile>$(LayoutDirectory)/debian_config.json</DebianConfigJsonFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<DebianPostinstTemplateFile>$(RepoRoot)/packaging/deb/postinst</DebianPostinstTemplateFile>
|
||||
<DebianPostinstFile>$(LayoutDirectory)/debian/postinst</DebianPostinstFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<DebianConfigTokenValues Include="%SHARED_FRAMEWORK_DEBIAN_PACKAGE_NAME%">
|
||||
<ReplacementString>$(SharedFxDebianPackageName)</ReplacementString>
|
||||
</DebianConfigTokenValues>
|
||||
<DebianConfigTokenValues Include="%ASPNETCORE_SHAREDFX_DEBIAN_PACKAGE_NAME%">
|
||||
<ReplacementString>$(AspNetCoreSharedFxDebianPackageName)</ReplacementString>
|
||||
</DebianConfigTokenValues>
|
||||
<DebianConfigTokenValues Include="%SHARED_FRAMEWORK_DEBIAN_PACKAGE_ADDITIONAL_DEPENDENCY%"
|
||||
Condition="'$(IncludeAdditionalSharedFrameworks)' == 'true'">
|
||||
<ReplacementString>,
|
||||
"$(AdditionalSharedFxDebianPackageName)" : {}</ReplacementString>
|
||||
</DebianConfigTokenValues>
|
||||
<DebianConfigTokenValues Include="%SHARED_FRAMEWORK_DEBIAN_PACKAGE_ADDITIONAL_DEPENDENCY%"
|
||||
Condition="'$(IncludeAdditionalSharedFrameworks)' != 'true'">
|
||||
<ReplacementString></ReplacementString>
|
||||
</DebianConfigTokenValues>
|
||||
<DebianConfigTokenValues Include="%SDK_NUGET_VERSION%">
|
||||
<ReplacementString>$(MajorMinorVersion)</ReplacementString>
|
||||
</DebianConfigTokenValues>
|
||||
<DebianConfigTokenValues Include="%CLI_SDK_BRAND_NAME%">
|
||||
<ReplacementString>$(SdkBrandName)</ReplacementString>
|
||||
</DebianConfigTokenValues>
|
||||
<DebianConfigTokenValues Include="%SHARED_FRAMEWORK_DEBIAN_PACKAGE_VERSIONS%">
|
||||
<ReplacementString>$(MicrosoftNETCoreAppPackageVersionWithTilda)</ReplacementString>
|
||||
</DebianConfigTokenValues>
|
||||
<DebianConfigTokenValues Include="%ASPNETCORE_SHAREDFX_DEBIAN_PACKAGE_VERSION%">
|
||||
<ReplacementString>$(AspNetCoreVersionWithTilda)</ReplacementString>
|
||||
</DebianConfigTokenValues>
|
||||
|
||||
<DebianPostInstTokenValues Include="%SDK_VERSION%">
|
||||
<ReplacementString>$(SdkVersion)</ReplacementString>
|
||||
</DebianPostInstTokenValues>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<TestSdkDebTaskEnvironmentVariables Include="PATH=$(DebianInstalledDirectory)$(PathListSeparator)$(PATH)" />
|
||||
<TestSdkDebTaskEnvironmentVariables Include="TEST_ARTIFACTS=$(TestArtifactsDir)" />
|
||||
<TestSdkDebTaskEnvironmentVariables Include="TEST_PACKAGES=$(TestPackagesDir)" />
|
||||
<TestSdkDebTaskEnvironmentVariables Include="PreviousStageProps=$(NextStagePropsPath)" />
|
||||
|
||||
<!-- Consumed By Publish -->
|
||||
<GeneratedInstallers Include="$(SdkInstallerFile)" />
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
</Project>
|
|
@ -1,228 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<!-- AcquireWix Properties -->
|
||||
<PropertyGroup>
|
||||
<WixVersion>3.10.4</WixVersion>
|
||||
<WixDownloadUrl>https://dotnetcli.azureedge.net/build/wix/wix.$(WixVersion).zip</WixDownloadUrl>
|
||||
<WixRoot>$(IntermediateDirectory)/WixTools/$(WixVersion)</WixRoot>
|
||||
<WixDestinationPath>$(WixRoot)/WixTools.$(WixVersion).zip</WixDestinationPath>
|
||||
<WixDownloadSentinel>$(WixRoot)/WixDownload.$(WixVersion).sentinel</WixDownloadSentinel>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Generate MSI/Bundle Properties -->
|
||||
<PropertyGroup>
|
||||
<CombinedFrameworkSdkHostBundleEngineName>$(InstallerOutputDirectory)/$(ArtifactNameWithVersionCombinedHostHostFxrFrameworkSdk)-engine.exe</CombinedFrameworkSdkHostBundleEngineName>
|
||||
|
||||
<SdkGenerateMsiPowershellScript>$(RepoRoot)/packaging/windows/clisdk/generatemsi.ps1</SdkGenerateMsiPowershellScript>
|
||||
<SdkStableFileIdForApphostTransform>$(RepoRoot)/packaging/windows/clisdk/stablefileidforapphosttransform.xslt</SdkStableFileIdForApphostTransform>
|
||||
<SdkGenerateBundlePowershellScript>$(RepoRoot)/packaging/windows/clisdk/generatebundle.ps1</SdkGenerateBundlePowershellScript>
|
||||
<SdkGenerateNupkgPowershellScript>$(RepoRoot)/packaging/windows/clisdk/generatenupkg.ps1</SdkGenerateNupkgPowershellScript>
|
||||
|
||||
<MSBuildExtensionsGenerateMsiPowershellScript>$(RepoRoot)/packaging/windows/msbuildextensions/generatemsi.ps1</MSBuildExtensionsGenerateMsiPowershellScript>
|
||||
|
||||
<SdkInstallerNuspecFile>$(RepoRoot)/packaging/windows/clisdk/VS.Redist.Common.Net.Core.SDK.$(Architecture).nuspec</SdkInstallerNuspecFile>
|
||||
<SdkInstallerNupkgFile>$(InstallerOutputDirectory)/VS.Redist.Common.Net.Core.SDK.$(Architecture).$(FullNugetVersion).nupkg</SdkInstallerNupkgFile>
|
||||
|
||||
<SdkMSBuildExtensionsNuspecFile>$(RepoRoot)/packaging/windows/clisdk/VS.Redist.Common.Net.Core.SDK.MSBuildExtensions.nuspec</SdkMSBuildExtensionsNuspecFile>
|
||||
<SdkMSBuildExtensionsNupkgFile>$(InstallerOutputDirectory)/VS.Redist.Common.Net.Core.SDK.MSBuildExtensions.$(FullNugetVersion).nupkg</SdkMSBuildExtensionsNupkgFile>
|
||||
<SdkMSBuildExtensionsSwrFile>$(InstallerOutputDirectory)/VS.Redist.Common.Net.Core.SDK.MSBuildExtensions.swr</SdkMSBuildExtensionsSwrFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Test Sdk MSI Properties -->
|
||||
<PropertyGroup>
|
||||
<SdkTestMsiPowershellScript>$(RepoRoot)/test/Installer/testmsi.ps1</SdkTestMsiPowershellScript>
|
||||
<SdkMsiTestedSentinel>$(InstallerOutputDirectory)/$(ArtifactNameWithVersionSdk).MsiTested.sentinel</SdkMsiTestedSentinel>
|
||||
</PropertyGroup>
|
||||
|
||||
<Target Name="MsiTargetsSetupInputOutputs" DependsOnTargets="Init">
|
||||
<!-- Generate SDK MSI Inputs -->
|
||||
<ItemGroup>
|
||||
<GenerateSdkMsiInputs Include="$(SdkLayoutOutputDirectory)/**/*;
|
||||
$(SdkGenerateMsiPowershellScript)" />
|
||||
<GenerateMSBuildExtensionsMsiInputs Include="$(MSBuildExtensionsOutputDirectory)/**/*;
|
||||
$(MSBuildExtensionsGenerateMsiPowershellScript)" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Consumed By Publish -->
|
||||
<ItemGroup>
|
||||
<GeneratedInstallers Include="$(SdkInstallerFile);$(CombinedFrameworkSdkHostInstallerFile)" />
|
||||
<!-- Disabling this for now because we don't have the MSBuildExtensions available. -->
|
||||
<!--
|
||||
<GeneratedInstallers Condition=" '$(Architecture)' == 'x86' " Include="$(MSBuildExtensionsInstallerFile)" />
|
||||
-->
|
||||
</ItemGroup>
|
||||
|
||||
<GenerateMsiVersion CommitCount="$(CommitCount)"
|
||||
VersionMajor="$(VersionMajor)"
|
||||
VersionMinor="$(VersionMinor)"
|
||||
VersionPatch="$(VersionPatch)">
|
||||
<Output TaskParameter="MsiVersion" PropertyName="MsiVersion" />
|
||||
</GenerateMsiVersion>
|
||||
|
||||
<GenerateGuidFromName Name="$(SdkInstallerFile)">
|
||||
<Output TaskParameter="OutputGuid"
|
||||
PropertyName="SdkInstallerUpgradeCode" />
|
||||
</GenerateGuidFromName>
|
||||
|
||||
<GenerateGuidFromName Name="$(MSBuildExtensionsInstallerFile)">
|
||||
<Output TaskParameter="OutputGuid"
|
||||
PropertyName="MSBuildExtensionsInstallerUpgradeCode" />
|
||||
</GenerateGuidFromName>
|
||||
|
||||
<GenerateGuidFromName Name="$(CombinedFrameworkSdkHostInstallerFile)">
|
||||
<Output TaskParameter="OutputGuid"
|
||||
PropertyName="CombinedFrameworkSDKHostInstallerUpgradeCode" />
|
||||
</GenerateGuidFromName>
|
||||
</Target>
|
||||
|
||||
<Target Name="AcquireWix"
|
||||
DependsOnTargets="Init;MsiTargetsSetupInputOutputs"
|
||||
Inputs="$(WixDownloadSentinel)"
|
||||
Outputs="$(WixDestinationPath)">
|
||||
|
||||
<!-- Setup sentinel to take advantage of incrementality -->
|
||||
<MakeDir Directories="$(WixRoot)" />
|
||||
<WriteLinesToFile
|
||||
File="$(WixDownloadSentinel)"
|
||||
Lines="$(WixVersion)"
|
||||
Overwrite="true"
|
||||
Encoding="Unicode"/>
|
||||
|
||||
<DownloadFile
|
||||
Uri="$(WixDownloadUrl)"
|
||||
DestinationPath="$(WixDestinationPath)"
|
||||
Overwrite="false" />
|
||||
|
||||
<ZipFileExtractToDirectory
|
||||
SourceArchive="$(WixDestinationPath)"
|
||||
DestinationDirectory="$(WixRoot)" />
|
||||
|
||||
</Target>
|
||||
|
||||
<Target Name="GenerateSdkMsi"
|
||||
DependsOnTargets="Init;Layout;AcquireWix;MsiTargetsSetupInputOutputs"
|
||||
Condition=" '$(OS)' == 'Windows_NT'"
|
||||
Inputs="@(GenerateSdkMsiInputs)"
|
||||
Outputs="$(SdkInstallerFile)">
|
||||
|
||||
<Exec Command="powershell -NoProfile -NoLogo $(SdkGenerateMsiPowershellScript) ^
|
||||
'$(SdkLayoutOutputDirectory)' ^
|
||||
'$(SdkInstallerFile)' ^
|
||||
'$(WixRoot)' ^
|
||||
'$(SdkBrandName)' ^
|
||||
'$(MsiVersion)' ^
|
||||
'$(SimpleVersion)' ^
|
||||
'$(NugetVersion)' ^
|
||||
'$(SdkInstallerUpgradeCode)' ^
|
||||
'$(Architecture)' ^
|
||||
'$(SdkStableFileIdForApphostTransform)'" />
|
||||
</Target>
|
||||
|
||||
<Target Name="GenerateMSBuildExtensionsMsi"
|
||||
DependsOnTargets="Init;Layout;AcquireWix;MsiTargetsSetupInputOutputs"
|
||||
Condition=" '$(OS)' == 'Windows_NT' And '$(Architecture)' == 'x86' "
|
||||
Inputs="@(GenerateMSBuildExtensionsMsiInputs)"
|
||||
Outputs="$(MSBuildExtensionsInstallerFile)">
|
||||
|
||||
<!-- Disabling this for now because we don't have the MSBuildExtensions available. -->
|
||||
|
||||
<!-- <Exec Command="powershell -NoProfile -NoLogo $(MSBuildExtensionsGenerateMsiPowershellScript) ^
|
||||
'$(MSBuildExtensionsOutputDirectory)' ^
|
||||
'$(MSBuildExtensionsInstallerFile)' ^
|
||||
'$(WixRoot)' ^
|
||||
'$(MSBuildExtensionsBrandName)' ^
|
||||
'$(SimpleVersion)' ^
|
||||
'$(SimpleVersion)' ^
|
||||
'$(NugetVersion)' ^
|
||||
'$(MSBuildExtensionsInstallerUpgradeCode)' ^
|
||||
'$(Architecture)'" /> -->
|
||||
</Target>
|
||||
|
||||
<Target Name="GenerateSdkBundle"
|
||||
DependsOnTargets="Init;Layout;AcquireWix;MsiTargetsSetupInputOutputs;GenerateSdkMsi"
|
||||
Condition=" '$(OS)' == 'Windows_NT'"
|
||||
Inputs="$(SdkInstallerFile);
|
||||
$(DownloadedSharedFrameworkInstallerFile);
|
||||
$(DownloadedHostFxrInstallerFile);
|
||||
$(DownloadedSharedHostInstallerFile);
|
||||
$(SdkGenerateBundlePowershellScript)"
|
||||
Outputs="$(CombinedFrameworkSdkHostInstallerFile)">
|
||||
|
||||
<Exec Command="powershell -NoProfile -NoLogo $(SdkGenerateBundlePowershellScript) ^
|
||||
'$(SdkInstallerFile)' ^
|
||||
'$(DownloadedAspNetCoreSharedFxInstallerFile)' ^
|
||||
'$(DownloadedSharedFrameworkInstallerFile)' ^
|
||||
'$(DownloadedHostFxrInstallerFile)' ^
|
||||
'$(DownloadedSharedHostInstallerFile)' ^
|
||||
'$(DownloadedWinFormsAndWpfSharedFrameworkInstallerFile)' ^
|
||||
'$(CombinedFrameworkSdkHostInstallerFile)' ^
|
||||
'$(WixRoot)' ^
|
||||
'$(SdkBrandName)' ^
|
||||
'$(MsiVersion)' ^
|
||||
'$(SimpleVersion)' ^
|
||||
'$(NugetVersion)' ^
|
||||
'$(CombinedFrameworkSDKHostInstallerUpgradeCode)' ^
|
||||
'$(Architecture)' ^
|
||||
'$(MicrosoftNETCoreAppPackageVersion)' ^
|
||||
'$(AspNetCoreVersion)'" />
|
||||
</Target>
|
||||
|
||||
<Target Name="GenerateSdkNupkg"
|
||||
DependsOnTargets="Init;Layout;MsiTargetsSetupInputOutputs;GenerateSdkBundle"
|
||||
Condition=" '$(OS)' == 'Windows_NT'"
|
||||
Inputs="$(CombinedFrameworkSdkHostInstallerFile);
|
||||
$(SdkInstallerNuspecFile);
|
||||
$(SdkGenerateNupkgPowershellScript)"
|
||||
Outputs="$(SdkInstallerNupkgFile)">
|
||||
|
||||
<Exec Command="powershell -NoProfile -NoLogo $(SdkGenerateNupkgPowershellScript) ^
|
||||
'$(CombinedFrameworkSdkHostInstallerFile)' ^
|
||||
'$(FullNugetVersion)' ^
|
||||
'$(SdkInstallerNuspecFile)' ^
|
||||
'$(SdkInstallerNupkgFile)'" />
|
||||
</Target>
|
||||
|
||||
<Target Name="GenerateSdkMSBuildExtensionsNupkg"
|
||||
DependsOnTargets="Init;Layout;MsiTargetsSetupInputOutputs;GenerateSdkBundle"
|
||||
Condition=" '$(OS)' == 'Windows_NT' And '$(Architecture)' == 'x64' "
|
||||
Inputs="$(MSBuildExtensionsLayoutDirectory)/**/*;
|
||||
$(SdkInstallerNuspecFile);
|
||||
$(SdkGenerateNupkgPowershellScript)"
|
||||
Outputs="$(SdkMSBuildExtensionsNupkgFile);$(SdkMSBuildExtensionsSwrFile)">
|
||||
|
||||
<!-- Disabling this for now because we don't have the MSBuildExtensions available. -->
|
||||
|
||||
<!-- <Exec Command="powershell -NoProfile -NoLogo $(SdkGenerateNupkgPowershellScript) ^
|
||||
'$(MSBuildExtensionsLayoutDirectory)' ^
|
||||
'$(FullNugetVersion)' ^
|
||||
'$(SdkMSBuildExtensionsNuspecFile)' ^
|
||||
'$(SdkMSBuildExtensionsNupkgFile)'" />
|
||||
|
||||
<GenerateMSBuildExtensionsSWR MSBuildExtensionsLayoutDirectory="$(MSBuildExtensionsLayoutDirectory)"
|
||||
OutputFile="$(SdkMSBuildExtensionsSwrFile)"/> -->
|
||||
|
||||
</Target>
|
||||
|
||||
<Target Name="GenerateMsis"
|
||||
DependsOnTargets="Init;
|
||||
Layout;
|
||||
MsiTargetsSetupInputOutputs;
|
||||
AcquireWix;
|
||||
GenerateSdkMsi;
|
||||
GenerateMSBuildExtensionsMsi;
|
||||
GenerateSdkBundle;
|
||||
GenerateSdkNupkg;
|
||||
GenerateSdkMSBuildExtensionsNupkg"
|
||||
Condition=" '$(OS)' == 'Windows_NT'" />
|
||||
|
||||
<!-- These targets are used in signing, don't remove them! -->
|
||||
<Target Name="ExtractEngineFromSdkBundle"
|
||||
DependsOnTargets="MsiTargetsSetupInputOutputs">
|
||||
<Exec Command="$(WixRoot)/insignia.exe -ib $(CombinedFrameworkSdkHostInstallerFile) -o $(CombinedFrameworkSdkHostBundleEngineName)" />
|
||||
</Target>
|
||||
|
||||
<Target Name="ReattachEngineToSdkBundle"
|
||||
DependsOnTargets="MsiTargetsSetupInputOutputs">
|
||||
<Exec Command="$(WixRoot)/insignia.exe -ab $(CombinedFrameworkSdkHostBundleEngineName) $(CombinedFrameworkSdkHostInstallerFile) -o $(CombinedFrameworkSdkHostInstallerFile)" />
|
||||
</Target>
|
||||
</Project>
|
|
@ -1,9 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<RpmConfigJsonName>rpm_config.json</RpmConfigJsonName>
|
||||
<TemplatesDir>$(RepoRoot)/packaging/rpm/templates</TemplatesDir>
|
||||
<ScriptsDir>$(RepoRoot)/packaging/rpm/scripts</ScriptsDir>
|
||||
<AfterInstallHostScriptName>after_install_host.sh</AfterInstallHostScriptName>
|
||||
</PropertyGroup>
|
||||
</Project>
|
|
@ -1,14 +0,0 @@
|
|||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Library</OutputType>
|
||||
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="$(TemplateFillInPackageName)" Version="$(TemplateFillInPackageVersion)" />
|
||||
</ItemGroup>
|
||||
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
|
@ -1,85 +0,0 @@
|
|||
// Licensed to the .NET Foundation under one or more agreements.
|
||||
// The .NET Foundation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using Microsoft.Build.Framework;
|
||||
using Microsoft.Build.Utilities;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.IO.Compression;
|
||||
|
||||
namespace Microsoft.DotNet.Build.Tasks
|
||||
{
|
||||
public sealed class ZipFileExtractToDirectory : Task
|
||||
{
|
||||
/// <summary>
|
||||
/// The path to the directory to be archived.
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string SourceArchive { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The path of the archive to be created.
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string DestinationDirectory { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Indicates if the destination directory should be cleaned if it already exists.
|
||||
/// </summary>
|
||||
public bool OverwriteDestination { get; set; }
|
||||
|
||||
public override bool Execute()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (Directory.Exists(DestinationDirectory))
|
||||
{
|
||||
if (OverwriteDestination == true)
|
||||
{
|
||||
Log.LogMessage(MessageImportance.Low, "'{0}' already exists, trying to delete before unzipping...", DestinationDirectory);
|
||||
Directory.Delete(DestinationDirectory, recursive: true);
|
||||
}
|
||||
}
|
||||
|
||||
Log.LogMessage(MessageImportance.High, "Decompressing '{0}' into '{1}'...", SourceArchive, DestinationDirectory);
|
||||
if (!Directory.Exists(Path.GetDirectoryName(DestinationDirectory)))
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(DestinationDirectory));
|
||||
|
||||
// match tar default behavior to overwrite by default
|
||||
// Replace this code with ZipFile.ExtractToDirectory when https://github.com/dotnet/corefx/pull/14806 is available
|
||||
using (ZipArchive archive = ZipFile.Open(SourceArchive, ZipArchiveMode.Read))
|
||||
{
|
||||
DirectoryInfo di = Directory.CreateDirectory(DestinationDirectory);
|
||||
string destinationDirectoryFullPath = di.FullName;
|
||||
|
||||
foreach (ZipArchiveEntry entry in archive.Entries)
|
||||
{
|
||||
string fileDestinationPath = Path.GetFullPath(Path.Combine(destinationDirectoryFullPath, entry.FullName));
|
||||
|
||||
if (Path.GetFileName(fileDestinationPath).Length == 0)
|
||||
{
|
||||
// If it is a directory:
|
||||
Directory.CreateDirectory(fileDestinationPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
// If it is a file:
|
||||
// Create containing directory:
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(fileDestinationPath));
|
||||
entry.ExtractToFile(fileDestinationPath, overwrite: true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
// We have 2 log calls because we want a nice error message but we also want to capture the callstack in the log.
|
||||
Log.LogError("An exception has occured while trying to decompress '{0}' into '{1}'.", SourceArchive, DestinationDirectory);
|
||||
Log.LogMessage(MessageImportance.Low, e.ToString());
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -32,9 +32,6 @@
|
|||
<NUnit3TemplatesVersion>1.5.1</NUnit3TemplatesVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- NOTE: The property group above is in alignment with orchestrated build version naming conventions. -->
|
||||
<Import Condition=" Exists('$(OrchestratedPackageVersionsProps)') " Project="$(OrchestratedPackageVersionsProps)" />
|
||||
|
||||
<PropertyGroup>
|
||||
<CLI_NETStandardLibraryNETFrameworkVersion>2.0.1-servicing-26011-01</CLI_NETStandardLibraryNETFrameworkVersion>
|
||||
|
||||
|
@ -51,6 +48,17 @@
|
|||
<BuildTasksFeedToolVersion>2.1.0-prerelease-02430-04</BuildTasksFeedToolVersion>
|
||||
<VersionToolsVersion>$(BuildTasksFeedToolVersion)</VersionToolsVersion>
|
||||
<DotnetDebToolVersion>2.0.0</DotnetDebToolVersion>
|
||||
<MicrosoftNETTestSdkVersion>15.8.0</MicrosoftNETTestSdkVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<RestoreSources>
|
||||
$(RestoreSources);
|
||||
https://dotnet.myget.org/F/msbuild/api/v3/index.json;
|
||||
https://dotnet.myget.org/F/nuget-build/api/v3/index.json;
|
||||
https://dotnet.myget.org/F/templating/api/v3/index.json;
|
||||
https://dotnet.myget.org/F/aspnetcore-dev/api/v3/index.json;
|
||||
</RestoreSources>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
|
@ -5,7 +5,7 @@
|
|||
#
|
||||
|
||||
# Detect build servers
|
||||
if [[ ! -z "$JENKINS_URL" || ! -z "$BUILD_BUILDID" ]]; then
|
||||
if [[ ! -z "$JENKINS_URL" || ! -z "$BUILD_BUILDID" || ! -z "$DOTNET_CORESDK_NOPRETTYPRINT" ]]; then
|
||||
# Jenkins or VSO build, disable colors because they make things gross.
|
||||
NO_COLOR=1
|
||||
fi
|
|
@ -8,6 +8,7 @@ phases:
|
|||
parameters:
|
||||
name: ${{ parameters.agentOs }}
|
||||
enableTelemetry: true
|
||||
enableMicrobuild: true
|
||||
publicBuildReasons: PullRequest
|
||||
queue: ${{ parameters.queue }}
|
||||
variables:
|
||||
|
@ -21,12 +22,28 @@ phases:
|
|||
DockerParameter: $(_DockerParameter)
|
||||
LinuxPortable: $(_LinuxPortable)
|
||||
RuntimeId: $(_RuntimeIdentifier)
|
||||
AdditionalBuildParameters: $(_AdditionalBuildParameters)
|
||||
|
||||
steps:
|
||||
- script: 'eng\setbuildinfo.bat $(BuildArchitecture) $(BuildConfig)'
|
||||
condition: eq(variables['_AgentOSName'], 'Windows_NT')
|
||||
displayName: Set test info (Windows)
|
||||
- script: 'eng/setbuildinfo.sh $(BuildArchitecture) $(BuildConfig)'
|
||||
condition: ne(variables['_AgentOSName'], 'Windows_NT')
|
||||
displayName: Set test info (Non-Windows)
|
||||
- script: 'echo TestParameter: $(TestParameter)'
|
||||
displayName: Show TestParameter
|
||||
- script: 'echo RunTests: $(RunTests)'
|
||||
displayName: Show RunTests
|
||||
- script: 'echo AdditionalBuildParameters: $(AdditionalBuildParameters)'
|
||||
displayName: Show AdditionalBuildParameters
|
||||
- ${{ if eq(parameters.agentOs, 'Windows_NT') }}:
|
||||
- script: build.cmd
|
||||
$(TestParameter)
|
||||
-pack -publish
|
||||
-Configuration $(BuildConfig)
|
||||
-Architecture $(BuildArchitecture)
|
||||
$(AdditionalBuildParameters)
|
||||
displayName: Build
|
||||
env:
|
||||
DOTNET_CLI_UI_LANGUAGE: $(_DOTNET_CLI_UI_LANGUAGE)
|
||||
|
@ -34,40 +51,43 @@ phases:
|
|||
|
||||
- ${{ if eq(parameters.agentOs, 'Linux') }}:
|
||||
- script: ./build.sh
|
||||
--skip-prereqs
|
||||
$(TestParameter)
|
||||
--pack --publish
|
||||
--noprettyprint
|
||||
--configuration $(BuildConfig)
|
||||
$(DockerParameter)
|
||||
--architecture $(BuildArchitecture)
|
||||
$(LinuxPortable)
|
||||
$(RuntimeId)
|
||||
$(AdditionalBuildParameters)
|
||||
displayName: Build
|
||||
env:
|
||||
DropSuffix: $(_DropSuffix)
|
||||
|
||||
- ${{ if eq(parameters.agentOs, 'Darwin') }}:
|
||||
- script: ./build.sh
|
||||
--skip-prereqs
|
||||
$(TestParameter)
|
||||
--pack --publish
|
||||
--noprettyprint
|
||||
--configuration $(BuildConfig)
|
||||
displayName: Build
|
||||
|
||||
- task: PublishTestResults@1
|
||||
displayName: Publish Test Results
|
||||
inputs:
|
||||
testRunner: VSTest
|
||||
testResultsFiles: '**/*.trx'
|
||||
testRunTitle: 'Unit Test Results'
|
||||
testRunner: XUnit
|
||||
testResultsFiles: 'artifacts/TestResults/$(_BuildConfig)/*.xml'
|
||||
testRunTitle: '$(_AgentOSName)_$(Agent.JobName)'
|
||||
platform: '$(BuildPlatform)'
|
||||
configuration: '$(_BuildConfig)'
|
||||
condition: and(succeededOrFailed(), ne(variables['PB_SkipTests'], 'true'))
|
||||
|
||||
condition: and(succeededOrFailed(), ne(variables['PB_SkipTests'], 'true'), ne(variables['RunTests'], 'false'))
|
||||
- task: CopyFiles@2
|
||||
displayName: Gather Logs
|
||||
inputs:
|
||||
SourceFolder: '$(Build.SourcesDirectory)'
|
||||
Contents: |
|
||||
msbuild.log
|
||||
msbuild.binlog
|
||||
msbuild.generatepropsfile.binlog
|
||||
artifacts/log/$(_BuildConfig)/**/*
|
||||
artifacts/TestResults/$(_BuildConfig)/**/*
|
||||
TargetFolder: '$(Build.ArtifactStagingDirectory)'
|
||||
continueOnError: true
|
||||
condition: always()
|
||||
|
|
3
eng/common/CIBuild.cmd
Normal file
3
eng/common/CIBuild.cmd
Normal file
|
@ -0,0 +1,3 @@
|
|||
@echo off
|
||||
powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0Build.ps1""" -restore -build -test -sign -pack -publish -ci %*"
|
||||
exit /b %ErrorLevel%
|
3
eng/common/PublishBuildAssets.cmd
Normal file
3
eng/common/PublishBuildAssets.cmd
Normal file
|
@ -0,0 +1,3 @@
|
|||
@echo off
|
||||
powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0Build.ps1""" -msbuildEngine dotnet -restore -execute /p:PublishBuildAssets=true /p:SdkTaskProjects=PublishBuildAssets.proj %*"
|
||||
exit /b %ErrorLevel%
|
12
eng/common/Signing.props
Normal file
12
eng/common/Signing.props
Normal file
|
@ -0,0 +1,12 @@
|
|||
<Project>
|
||||
<ItemGroup>
|
||||
<!-- Remove all automatically included packages -->
|
||||
<ItemsToSign Remove="@(ItemsToSign)" />
|
||||
|
||||
<!-- Only sign the NuGet packages with the default signing infrastructure, as the other files need to be signed
|
||||
as part of the build (as the default infrastructure doesn't support signing everything inside packages the
|
||||
way they would need to be done if signing was done after all packages were produced. -->
|
||||
<ItemsToSign Include="$(ArtifactsShippingPackagesDir)*.nupkg"/>
|
||||
|
||||
</ItemGroup>
|
||||
</Project>
|
108
eng/common/build.ps1
Normal file
108
eng/common/build.ps1
Normal file
|
@ -0,0 +1,108 @@
|
|||
[CmdletBinding(PositionalBinding=$false)]
|
||||
Param(
|
||||
[string] $configuration = "Debug",
|
||||
[string] $projects = "",
|
||||
[string] $verbosity = "minimal",
|
||||
[string] $msbuildEngine = $null,
|
||||
[bool] $warnaserror = $true,
|
||||
[bool] $nodereuse = $true,
|
||||
[switch] $execute,
|
||||
[switch] $restore,
|
||||
[switch] $deployDeps,
|
||||
[switch] $build,
|
||||
[switch] $rebuild,
|
||||
[switch] $deploy,
|
||||
[switch] $test,
|
||||
[switch] $integrationTest,
|
||||
[switch] $performanceTest,
|
||||
[switch] $sign,
|
||||
[switch] $pack,
|
||||
[switch] $publish,
|
||||
[switch] $publishBuildAssets,
|
||||
[switch] $ci,
|
||||
[switch] $prepareMachine,
|
||||
[switch] $help,
|
||||
[Parameter(ValueFromRemainingArguments=$true)][String[]]$properties
|
||||
)
|
||||
|
||||
. $PSScriptRoot\tools.ps1
|
||||
|
||||
function Print-Usage() {
|
||||
Write-Host "Common settings:"
|
||||
Write-Host " -configuration <value> Build configuration Debug, Release"
|
||||
Write-Host " -verbosity <value> Msbuild verbosity (q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic])"
|
||||
Write-Host " -help Print help and exit"
|
||||
Write-Host ""
|
||||
|
||||
Write-Host "Actions:"
|
||||
Write-Host " -restore Restore dependencies"
|
||||
Write-Host " -build Build solution"
|
||||
Write-Host " -rebuild Rebuild solution"
|
||||
Write-Host " -deploy Deploy built VSIXes"
|
||||
Write-Host " -deployDeps Deploy dependencies (e.g. VSIXes for integration tests)"
|
||||
Write-Host " -test Run all unit tests in the solution"
|
||||
Write-Host " -pack Package build outputs into NuGet packages and Willow components"
|
||||
Write-Host " -integrationTest Run all integration tests in the solution"
|
||||
Write-Host " -performanceTest Run all performance tests in the solution"
|
||||
Write-Host " -sign Sign build outputs"
|
||||
Write-Host " -publish Publish artifacts (e.g. symbols)"
|
||||
Write-Host " -publishBuildAssets Push assets to BAR"
|
||||
Write-Host ""
|
||||
|
||||
Write-Host "Advanced settings:"
|
||||
Write-Host " -projects <value> Semi-colon delimited list of sln/proj's to build. Globbing is supported (*.sln)"
|
||||
Write-Host " -ci Set when running on CI server"
|
||||
Write-Host " -prepareMachine Prepare machine for CI run"
|
||||
Write-Host " -msbuildEngine <value> Msbuild engine to use to run build ('dotnet', 'vs', or unspecified)."
|
||||
Write-Host ""
|
||||
Write-Host "Command line arguments not listed above are passed thru to msbuild."
|
||||
Write-Host "The above arguments can be shortened as much as to be unambiguous (e.g. -co for configuration, -t for test, etc.)."
|
||||
}
|
||||
|
||||
if ($help -or (($properties -ne $null) -and ($properties.Contains("/help") -or $properties.Contains("/?")))) {
|
||||
Print-Usage
|
||||
exit 0
|
||||
}
|
||||
|
||||
try {
|
||||
if ($projects -eq "") {
|
||||
$projects = Join-Path $RepoRoot "*.sln"
|
||||
}
|
||||
|
||||
InitializeTools
|
||||
|
||||
$BuildLog = Join-Path $LogDir "Build.binlog"
|
||||
|
||||
MSBuild $ToolsetBuildProj `
|
||||
/bl:$BuildLog `
|
||||
/p:Configuration=$configuration `
|
||||
/p:Projects=$projects `
|
||||
/p:RepoRoot=$RepoRoot `
|
||||
/p:Restore=$restore `
|
||||
/p:DeployDeps=$deployDeps `
|
||||
/p:Build=$build `
|
||||
/p:Rebuild=$rebuild `
|
||||
/p:Deploy=$deploy `
|
||||
/p:Test=$test `
|
||||
/p:Pack=$pack `
|
||||
/p:IntegrationTest=$integrationTest `
|
||||
/p:PerformanceTest=$performanceTest `
|
||||
/p:Sign=$sign `
|
||||
/p:Publish=$publish `
|
||||
/p:Execute=$execute `
|
||||
/p:ContinuousIntegrationBuild=$ci `
|
||||
@properties
|
||||
|
||||
if ($lastExitCode -ne 0) {
|
||||
Write-Host "Build Failed (exit code '$lastExitCode'). See log: $BuildLog" -ForegroundColor Red
|
||||
ExitWithExitCode $lastExitCode
|
||||
}
|
||||
|
||||
ExitWithExitCode $lastExitCode
|
||||
}
|
||||
catch {
|
||||
Write-Host $_
|
||||
Write-Host $_.Exception
|
||||
Write-Host $_.ScriptStackTrace
|
||||
ExitWithExitCode 1
|
||||
}
|
171
eng/common/build.sh
Normal file
171
eng/common/build.sh
Normal file
|
@ -0,0 +1,171 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
source="${BASH_SOURCE[0]}"
|
||||
|
||||
# resolve $source until the file is no longer a symlink
|
||||
while [[ -h "$source" ]]; do
|
||||
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
|
||||
source="$(readlink "$source")"
|
||||
# if $source was a relative symlink, we need to resolve it relative to the path where the
|
||||
# symlink file was located
|
||||
[[ $source != /* ]] && source="$scriptroot/$source"
|
||||
done
|
||||
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
|
||||
|
||||
help=false
|
||||
restore=false
|
||||
build=false
|
||||
rebuild=false
|
||||
test=false
|
||||
pack=false
|
||||
publish=false
|
||||
integration_test=false
|
||||
performance_test=false
|
||||
sign=false
|
||||
public=false
|
||||
ci=false
|
||||
|
||||
warnaserror=true
|
||||
nodereuse=true
|
||||
|
||||
projects=''
|
||||
configuration='Debug'
|
||||
prepare_machine=false
|
||||
verbosity='minimal'
|
||||
properties=''
|
||||
|
||||
while (($# > 0)); do
|
||||
lowerI="$(echo $1 | awk '{print tolower($0)}')"
|
||||
case $lowerI in
|
||||
--build)
|
||||
build=true
|
||||
shift 1
|
||||
;;
|
||||
--ci)
|
||||
ci=true
|
||||
shift 1
|
||||
;;
|
||||
--configuration)
|
||||
configuration=$2
|
||||
shift 2
|
||||
;;
|
||||
--help)
|
||||
echo "Common settings:"
|
||||
echo " --configuration <value> Build configuration Debug, Release"
|
||||
echo " --verbosity <value> Msbuild verbosity (q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic])"
|
||||
echo " --help Print help and exit"
|
||||
echo ""
|
||||
echo "Actions:"
|
||||
echo " --restore Restore dependencies"
|
||||
echo " --build Build solution"
|
||||
echo " --rebuild Rebuild solution"
|
||||
echo " --test Run all unit tests in the solution"
|
||||
echo " --sign Sign build outputs"
|
||||
echo " --publish Publish artifacts (e.g. symbols)"
|
||||
echo " --pack Package build outputs into NuGet packages and Willow components"
|
||||
echo ""
|
||||
echo "Advanced settings:"
|
||||
echo " --solution <value> Path to solution to build"
|
||||
echo " --ci Set when running on CI server"
|
||||
echo " --prepareMachine Prepare machine for CI run"
|
||||
echo ""
|
||||
echo "Command line arguments not listed above are passed through to MSBuild."
|
||||
exit 0
|
||||
;;
|
||||
--pack)
|
||||
pack=true
|
||||
shift 1
|
||||
;;
|
||||
--preparemachine)
|
||||
prepare_machine=true
|
||||
shift 1
|
||||
;;
|
||||
--rebuild)
|
||||
rebuild=true
|
||||
shift 1
|
||||
;;
|
||||
--restore)
|
||||
restore=true
|
||||
shift 1
|
||||
;;
|
||||
--sign)
|
||||
sign=true
|
||||
shift 1
|
||||
;;
|
||||
--solution)
|
||||
solution=$2
|
||||
shift 2
|
||||
;;
|
||||
--projects)
|
||||
projects=$2
|
||||
shift 2
|
||||
;;
|
||||
--test)
|
||||
test=true
|
||||
shift 1
|
||||
;;
|
||||
--integrationtest)
|
||||
integration_test=true
|
||||
shift 1
|
||||
;;
|
||||
--performancetest)
|
||||
performance_test=true
|
||||
shift 1
|
||||
;;
|
||||
--publish)
|
||||
publish=true
|
||||
shift 1
|
||||
;;
|
||||
--verbosity)
|
||||
verbosity=$2
|
||||
shift 2
|
||||
;;
|
||||
--warnaserror)
|
||||
warnaserror=$2
|
||||
shift 2
|
||||
;;
|
||||
--nodereuse)
|
||||
nodereuse=$2
|
||||
shift 2
|
||||
;;
|
||||
*)
|
||||
properties="$properties $1"
|
||||
shift 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
. "$scriptroot/tools.sh"
|
||||
|
||||
if [[ -z $projects ]]; then
|
||||
projects="$repo_root/*.sln"
|
||||
fi
|
||||
|
||||
InitializeTools
|
||||
|
||||
build_log="$log_dir/Build.binlog"
|
||||
|
||||
MSBuild "$toolset_build_proj" \
|
||||
/bl:"$build_log" \
|
||||
/p:Configuration=$configuration \
|
||||
/p:Projects="$projects" \
|
||||
/p:RepoRoot="$repo_root" \
|
||||
/p:Restore=$restore \
|
||||
/p:Build=$build \
|
||||
/p:Rebuild=$rebuild \
|
||||
/p:Test=$test \
|
||||
/p:Pack=$pack \
|
||||
/p:IntegrationTest=$integration_test \
|
||||
/p:PerformanceTest=$performance_test \
|
||||
/p:Sign=$sign \
|
||||
/p:Publish=$publish \
|
||||
/p:ContinuousIntegrationBuild=$ci \
|
||||
$properties
|
||||
|
||||
lastexitcode=$?
|
||||
|
||||
if [[ $lastexitcode != 0 ]]; then
|
||||
echo "Build failed (exit code '$lastexitcode'). See log: $build_log"
|
||||
fi
|
||||
|
||||
ExitWithExitCode $lastexitcode
|
16
eng/common/cibuild.sh
Normal file
16
eng/common/cibuild.sh
Normal file
|
@ -0,0 +1,16 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
source="${BASH_SOURCE[0]}"
|
||||
|
||||
# resolve $SOURCE until the file is no longer a symlink
|
||||
while [[ -h $source ]]; do
|
||||
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
|
||||
source="$(readlink "$source")"
|
||||
|
||||
# if $source was a relative symlink, we need to resolve it relative to the path where
|
||||
# the symlink file was located
|
||||
[[ $source != /* ]] && source="$scriptroot/$source"
|
||||
done
|
||||
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
|
||||
|
||||
. "$scriptroot/build.sh" --restore --build --test --pack --publish --ci $@
|
41
eng/common/cross/android/arm/toolchain.cmake
Normal file
41
eng/common/cross/android/arm/toolchain.cmake
Normal file
|
@ -0,0 +1,41 @@
|
|||
set(CROSS_NDK_TOOLCHAIN $ENV{ROOTFS_DIR}/../)
|
||||
set(CROSS_ROOTFS ${CROSS_NDK_TOOLCHAIN}/sysroot)
|
||||
set(CLR_CMAKE_PLATFORM_ANDROID "Android")
|
||||
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
set(CMAKE_SYSTEM_PROCESSOR arm)
|
||||
|
||||
## Specify the toolchain
|
||||
set(TOOLCHAIN "arm-linux-androideabi")
|
||||
set(CMAKE_PREFIX_PATH ${CROSS_NDK_TOOLCHAIN})
|
||||
set(TOOLCHAIN_PREFIX ${TOOLCHAIN}-)
|
||||
|
||||
find_program(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}clang)
|
||||
find_program(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}clang++)
|
||||
find_program(CMAKE_ASM_COMPILER ${TOOLCHAIN_PREFIX}clang)
|
||||
find_program(CMAKE_AR ${TOOLCHAIN_PREFIX}ar)
|
||||
find_program(CMAKE_LD ${TOOLCHAIN_PREFIX}ar)
|
||||
find_program(CMAKE_OBJCOPY ${TOOLCHAIN_PREFIX}objcopy)
|
||||
find_program(CMAKE_OBJDUMP ${TOOLCHAIN_PREFIX}objdump)
|
||||
|
||||
add_compile_options(--sysroot=${CROSS_ROOTFS})
|
||||
add_compile_options(-fPIE)
|
||||
add_compile_options(-mfloat-abi=soft)
|
||||
include_directories(SYSTEM ${CROSS_NDK_TOOLCHAIN}/include/c++/4.9.x/)
|
||||
include_directories(SYSTEM ${CROSS_NDK_TOOLCHAIN}/include/c++/4.9.x/arm-linux-androideabi/)
|
||||
|
||||
set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -B ${CROSS_ROOTFS}/usr/lib/gcc/${TOOLCHAIN}")
|
||||
set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -L${CROSS_ROOTFS}/lib/${TOOLCHAIN}")
|
||||
set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} --sysroot=${CROSS_ROOTFS}")
|
||||
set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -fPIE -pie")
|
||||
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
|
||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH "${CROSS_ROOTFS}")
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
42
eng/common/cross/android/arm64/toolchain.cmake
Normal file
42
eng/common/cross/android/arm64/toolchain.cmake
Normal file
|
@ -0,0 +1,42 @@
|
|||
set(CROSS_NDK_TOOLCHAIN $ENV{ROOTFS_DIR}/../)
|
||||
set(CROSS_ROOTFS ${CROSS_NDK_TOOLCHAIN}/sysroot)
|
||||
set(CLR_CMAKE_PLATFORM_ANDROID "Android")
|
||||
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
set(CMAKE_SYSTEM_PROCESSOR aarch64)
|
||||
|
||||
## Specify the toolchain
|
||||
set(TOOLCHAIN "aarch64-linux-android")
|
||||
set(CMAKE_PREFIX_PATH ${CROSS_NDK_TOOLCHAIN})
|
||||
set(TOOLCHAIN_PREFIX ${TOOLCHAIN}-)
|
||||
|
||||
find_program(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}clang)
|
||||
find_program(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}clang++)
|
||||
find_program(CMAKE_ASM_COMPILER ${TOOLCHAIN_PREFIX}clang)
|
||||
find_program(CMAKE_AR ${TOOLCHAIN_PREFIX}ar)
|
||||
find_program(CMAKE_LD ${TOOLCHAIN_PREFIX}ar)
|
||||
find_program(CMAKE_OBJCOPY ${TOOLCHAIN_PREFIX}objcopy)
|
||||
find_program(CMAKE_OBJDUMP ${TOOLCHAIN_PREFIX}objdump)
|
||||
|
||||
add_compile_options(--sysroot=${CROSS_ROOTFS})
|
||||
add_compile_options(-fPIE)
|
||||
|
||||
## Needed for Android or bionic specific conditionals
|
||||
add_compile_options(-D__ANDROID__)
|
||||
add_compile_options(-D__BIONIC__)
|
||||
|
||||
set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -B ${CROSS_ROOTFS}/usr/lib/gcc/${TOOLCHAIN}")
|
||||
set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -L${CROSS_ROOTFS}/lib/${TOOLCHAIN}")
|
||||
set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} --sysroot=${CROSS_ROOTFS}")
|
||||
set(CROSS_LINK_FLAGS "${CROSS_LINK_FLAGS} -fPIE -pie")
|
||||
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
|
||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${CROSS_LINK_FLAGS}" CACHE STRING "" FORCE)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH "${CROSS_ROOTFS}")
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
11
eng/common/cross/arm/sources.list.bionic
Normal file
11
eng/common/cross/arm/sources.list.bionic
Normal file
|
@ -0,0 +1,11 @@
|
|||
deb http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse
|
3
eng/common/cross/arm/sources.list.jessie
Normal file
3
eng/common/cross/arm/sources.list.jessie
Normal file
|
@ -0,0 +1,3 @@
|
|||
# Debian (sid) # UNSTABLE
|
||||
deb http://ftp.debian.org/debian/ sid main contrib non-free
|
||||
deb-src http://ftp.debian.org/debian/ sid main contrib non-free
|
11
eng/common/cross/arm/sources.list.trusty
Normal file
11
eng/common/cross/arm/sources.list.trusty
Normal file
|
@ -0,0 +1,11 @@
|
|||
deb http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted universe
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted universe
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ trusty-backports main restricted
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-backports main restricted
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted universe multiverse
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted universe multiverse
|
11
eng/common/cross/arm/sources.list.vivid
Normal file
11
eng/common/cross/arm/sources.list.vivid
Normal file
|
@ -0,0 +1,11 @@
|
|||
deb http://ports.ubuntu.com/ubuntu-ports/ vivid main restricted universe
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ vivid main restricted universe
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ vivid-updates main restricted universe
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ vivid-updates main restricted universe
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ vivid-backports main restricted
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ vivid-backports main restricted
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ vivid-security main restricted universe multiverse
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ vivid-security main restricted universe multiverse
|
11
eng/common/cross/arm/sources.list.wily
Normal file
11
eng/common/cross/arm/sources.list.wily
Normal file
|
@ -0,0 +1,11 @@
|
|||
deb http://ports.ubuntu.com/ubuntu-ports/ wily main restricted universe
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ wily main restricted universe
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ wily-updates main restricted universe
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ wily-updates main restricted universe
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ wily-backports main restricted
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ wily-backports main restricted
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ wily-security main restricted universe multiverse
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ wily-security main restricted universe multiverse
|
11
eng/common/cross/arm/sources.list.xenial
Normal file
11
eng/common/cross/arm/sources.list.xenial
Normal file
|
@ -0,0 +1,11 @@
|
|||
deb http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted universe
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted universe
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted universe
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted universe
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse
|
11
eng/common/cross/arm/sources.list.zesty
Normal file
11
eng/common/cross/arm/sources.list.zesty
Normal file
|
@ -0,0 +1,11 @@
|
|||
deb http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse
|
71
eng/common/cross/arm/trusty-lttng-2.4.patch
Normal file
71
eng/common/cross/arm/trusty-lttng-2.4.patch
Normal file
|
@ -0,0 +1,71 @@
|
|||
From e72c9d7ead60e3317bd6d1fade995c07021c947b Mon Sep 17 00:00:00 2001
|
||||
From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
Date: Thu, 7 May 2015 13:25:04 -0400
|
||||
Subject: [PATCH] Fix: building probe providers with C++ compiler
|
||||
|
||||
Robert Daniels wrote:
|
||||
> > I'm attempting to use lttng userspace tracing with a C++ application
|
||||
> > on an ARM platform. I'm using GCC 4.8.4 on Linux 3.14 with the 2.6
|
||||
> > release of lttng. I've compiled lttng-modules, lttng-ust, and
|
||||
> > lttng-tools and have been able to get a simple test working with C
|
||||
> > code. When I attempt to run the hello.cxx test on my target it will
|
||||
> > segfault.
|
||||
>
|
||||
>
|
||||
> I spent a little time digging into this issue and finally discovered the
|
||||
> cause of my segfault with ARM C++ tracepoints.
|
||||
>
|
||||
> There is a struct called 'lttng_event' in ust-events.h which contains an
|
||||
> empty union 'u'. This was the cause of my issue. Under C, this empty union
|
||||
> compiles to a zero byte member while under C++ it compiles to a one byte
|
||||
> member, and in my case was four-byte aligned which caused my C++ code to
|
||||
> have the 'cds_list_head node' offset incorrectly by four bytes. This lead
|
||||
> to an incorrect linked list structure which caused my issue.
|
||||
>
|
||||
> Since this union is empty, I simply removed it from the struct and everything
|
||||
> worked correctly.
|
||||
>
|
||||
> I don't know the history or purpose behind this empty union so I'd like to
|
||||
> know if this is a safe fix. If it is I can submit a patch with the union
|
||||
> removed.
|
||||
|
||||
That's a very nice catch!
|
||||
|
||||
We do not support building tracepoint probe provider with
|
||||
g++ yet, as stated in lttng-ust(3):
|
||||
|
||||
"- Note for C++ support: although an application instrumented with
|
||||
tracepoints can be compiled with g++, tracepoint probes should be
|
||||
compiled with gcc (only tested with gcc so far)."
|
||||
|
||||
However, if it works fine with this fix, then I'm tempted to take it,
|
||||
especially because removing the empty union does not appear to affect
|
||||
the layout of struct lttng_event as seen from liblttng-ust, which must
|
||||
be compiled with a C compiler, and from probe providers compiled with
|
||||
a C compiler. So all we are changing is the layout of a probe provider
|
||||
compiled with a C++ compiler, which is anyway buggy at the moment,
|
||||
because it is not compatible with the layout expected by liblttng-ust
|
||||
compiled with a C compiler.
|
||||
|
||||
Reported-by: Robert Daniels <robert.daniels@vantagecontrols.com>
|
||||
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
---
|
||||
include/lttng/ust-events.h | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
diff --git a/usr/include/lttng/ust-events.h b/usr/include/lttng/ust-events.h
|
||||
index 328a875..3d7a274 100644
|
||||
--- a/usr/include/lttng/ust-events.h
|
||||
+++ b/usr/include/lttng/ust-events.h
|
||||
@@ -407,8 +407,6 @@ struct lttng_event {
|
||||
void *_deprecated1;
|
||||
struct lttng_ctx *ctx;
|
||||
enum lttng_ust_instrumentation instrumentation;
|
||||
- union {
|
||||
- } u;
|
||||
struct cds_list_head node; /* Event list in session */
|
||||
struct cds_list_head _deprecated2;
|
||||
void *_deprecated3;
|
||||
--
|
||||
2.7.4
|
||||
|
97
eng/common/cross/arm/trusty.patch
Normal file
97
eng/common/cross/arm/trusty.patch
Normal file
|
@ -0,0 +1,97 @@
|
|||
diff -u -r a/usr/include/urcu/uatomic/generic.h b/usr/include/urcu/uatomic/generic.h
|
||||
--- a/usr/include/urcu/uatomic/generic.h 2014-03-28 06:04:42.000000000 +0900
|
||||
+++ b/usr/include/urcu/uatomic/generic.h 2017-02-13 10:35:21.189927116 +0900
|
||||
@@ -65,17 +65,17 @@
|
||||
switch (len) {
|
||||
#ifdef UATOMIC_HAS_ATOMIC_BYTE
|
||||
case 1:
|
||||
- return __sync_val_compare_and_swap_1(addr, old, _new);
|
||||
+ return __sync_val_compare_and_swap_1((uint8_t *) addr, old, _new);
|
||||
#endif
|
||||
#ifdef UATOMIC_HAS_ATOMIC_SHORT
|
||||
case 2:
|
||||
- return __sync_val_compare_and_swap_2(addr, old, _new);
|
||||
+ return __sync_val_compare_and_swap_2((uint16_t *) addr, old, _new);
|
||||
#endif
|
||||
case 4:
|
||||
- return __sync_val_compare_and_swap_4(addr, old, _new);
|
||||
+ return __sync_val_compare_and_swap_4((uint32_t *) addr, old, _new);
|
||||
#if (CAA_BITS_PER_LONG == 64)
|
||||
case 8:
|
||||
- return __sync_val_compare_and_swap_8(addr, old, _new);
|
||||
+ return __sync_val_compare_and_swap_8((uint64_t *) addr, old, _new);
|
||||
#endif
|
||||
}
|
||||
_uatomic_link_error();
|
||||
@@ -100,20 +100,20 @@
|
||||
switch (len) {
|
||||
#ifdef UATOMIC_HAS_ATOMIC_BYTE
|
||||
case 1:
|
||||
- __sync_and_and_fetch_1(addr, val);
|
||||
+ __sync_and_and_fetch_1((uint8_t *) addr, val);
|
||||
return;
|
||||
#endif
|
||||
#ifdef UATOMIC_HAS_ATOMIC_SHORT
|
||||
case 2:
|
||||
- __sync_and_and_fetch_2(addr, val);
|
||||
+ __sync_and_and_fetch_2((uint16_t *) addr, val);
|
||||
return;
|
||||
#endif
|
||||
case 4:
|
||||
- __sync_and_and_fetch_4(addr, val);
|
||||
+ __sync_and_and_fetch_4((uint32_t *) addr, val);
|
||||
return;
|
||||
#if (CAA_BITS_PER_LONG == 64)
|
||||
case 8:
|
||||
- __sync_and_and_fetch_8(addr, val);
|
||||
+ __sync_and_and_fetch_8((uint64_t *) addr, val);
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
@@ -139,20 +139,20 @@
|
||||
switch (len) {
|
||||
#ifdef UATOMIC_HAS_ATOMIC_BYTE
|
||||
case 1:
|
||||
- __sync_or_and_fetch_1(addr, val);
|
||||
+ __sync_or_and_fetch_1((uint8_t *) addr, val);
|
||||
return;
|
||||
#endif
|
||||
#ifdef UATOMIC_HAS_ATOMIC_SHORT
|
||||
case 2:
|
||||
- __sync_or_and_fetch_2(addr, val);
|
||||
+ __sync_or_and_fetch_2((uint16_t *) addr, val);
|
||||
return;
|
||||
#endif
|
||||
case 4:
|
||||
- __sync_or_and_fetch_4(addr, val);
|
||||
+ __sync_or_and_fetch_4((uint32_t *) addr, val);
|
||||
return;
|
||||
#if (CAA_BITS_PER_LONG == 64)
|
||||
case 8:
|
||||
- __sync_or_and_fetch_8(addr, val);
|
||||
+ __sync_or_and_fetch_8((uint64_t *) addr, val);
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
@@ -180,17 +180,17 @@
|
||||
switch (len) {
|
||||
#ifdef UATOMIC_HAS_ATOMIC_BYTE
|
||||
case 1:
|
||||
- return __sync_add_and_fetch_1(addr, val);
|
||||
+ return __sync_add_and_fetch_1((uint8_t *) addr, val);
|
||||
#endif
|
||||
#ifdef UATOMIC_HAS_ATOMIC_SHORT
|
||||
case 2:
|
||||
- return __sync_add_and_fetch_2(addr, val);
|
||||
+ return __sync_add_and_fetch_2((uint16_t *) addr, val);
|
||||
#endif
|
||||
case 4:
|
||||
- return __sync_add_and_fetch_4(addr, val);
|
||||
+ return __sync_add_and_fetch_4((uint32_t *) addr, val);
|
||||
#if (CAA_BITS_PER_LONG == 64)
|
||||
case 8:
|
||||
- return __sync_add_and_fetch_8(addr, val);
|
||||
+ return __sync_add_and_fetch_8((uint64_t *) addr, val);
|
||||
#endif
|
||||
}
|
||||
_uatomic_link_error();
|
11
eng/common/cross/arm64/sources.list.bionic
Normal file
11
eng/common/cross/arm64/sources.list.bionic
Normal file
|
@ -0,0 +1,11 @@
|
|||
deb http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic main restricted universe
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-updates main restricted universe
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-backports main restricted
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ bionic-security main restricted universe multiverse
|
11
eng/common/cross/arm64/sources.list.trusty
Normal file
11
eng/common/cross/arm64/sources.list.trusty
Normal file
|
@ -0,0 +1,11 @@
|
|||
deb http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty main restricted universe
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted universe
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main restricted universe
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ trusty-backports main restricted
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-backports main restricted
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted universe multiverse
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ trusty-security main restricted universe multiverse
|
11
eng/common/cross/arm64/sources.list.vivid
Normal file
11
eng/common/cross/arm64/sources.list.vivid
Normal file
|
@ -0,0 +1,11 @@
|
|||
deb http://ports.ubuntu.com/ubuntu-ports/ vivid main restricted universe
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ vivid main restricted universe
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ vivid-updates main restricted universe
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ vivid-updates main restricted universe
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ vivid-backports main restricted
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ vivid-backports main restricted
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ vivid-security main restricted universe multiverse
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ vivid-security main restricted universe multiverse
|
11
eng/common/cross/arm64/sources.list.wily
Normal file
11
eng/common/cross/arm64/sources.list.wily
Normal file
|
@ -0,0 +1,11 @@
|
|||
deb http://ports.ubuntu.com/ubuntu-ports/ wily main restricted universe
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ wily main restricted universe
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ wily-updates main restricted universe
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ wily-updates main restricted universe
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ wily-backports main restricted
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ wily-backports main restricted
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ wily-security main restricted universe multiverse
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ wily-security main restricted universe multiverse
|
11
eng/common/cross/arm64/sources.list.xenial
Normal file
11
eng/common/cross/arm64/sources.list.xenial
Normal file
|
@ -0,0 +1,11 @@
|
|||
deb http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted universe
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted universe
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted universe
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main restricted universe
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-backports main restricted
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-security main restricted universe multiverse
|
11
eng/common/cross/arm64/sources.list.zesty
Normal file
11
eng/common/cross/arm64/sources.list.zesty
Normal file
|
@ -0,0 +1,11 @@
|
|||
deb http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted
|
||||
|
||||
deb http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse
|
||||
deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse
|
3
eng/common/cross/armel/sources.list.jessie
Normal file
3
eng/common/cross/armel/sources.list.jessie
Normal file
|
@ -0,0 +1,3 @@
|
|||
# Debian (jessie) # Stable
|
||||
deb http://ftp.debian.org/debian/ jessie main contrib non-free
|
||||
deb-src http://ftp.debian.org/debian/ jessie main contrib non-free
|
44
eng/common/cross/armel/tizen-build-rootfs.sh
Normal file
44
eng/common/cross/armel/tizen-build-rootfs.sh
Normal file
|
@ -0,0 +1,44 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
__ARM_SOFTFP_CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
__TIZEN_CROSSDIR="$__ARM_SOFTFP_CrossDir/tizen"
|
||||
|
||||
if [[ -z "$ROOTFS_DIR" ]]; then
|
||||
echo "ROOTFS_DIR is not defined."
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
# Clean-up (TODO-Cleanup: We may already delete $ROOTFS_DIR at ./cross/build-rootfs.sh.)
|
||||
# hk0110
|
||||
if [ -d "$ROOTFS_DIR" ]; then
|
||||
umount $ROOTFS_DIR/*
|
||||
rm -rf $ROOTFS_DIR
|
||||
fi
|
||||
|
||||
TIZEN_TMP_DIR=$ROOTFS_DIR/tizen_tmp
|
||||
mkdir -p $TIZEN_TMP_DIR
|
||||
|
||||
# Download files
|
||||
echo ">>Start downloading files"
|
||||
VERBOSE=1 $__ARM_SOFTFP_CrossDir/tizen-fetch.sh $TIZEN_TMP_DIR
|
||||
echo "<<Finish downloading files"
|
||||
|
||||
echo ">>Start constructing Tizen rootfs"
|
||||
TIZEN_RPM_FILES=`ls $TIZEN_TMP_DIR/*.rpm`
|
||||
cd $ROOTFS_DIR
|
||||
for f in $TIZEN_RPM_FILES; do
|
||||
rpm2cpio $f | cpio -idm --quiet
|
||||
done
|
||||
echo "<<Finish constructing Tizen rootfs"
|
||||
|
||||
# Cleanup tmp
|
||||
rm -rf $TIZEN_TMP_DIR
|
||||
|
||||
# Configure Tizen rootfs
|
||||
echo ">>Start configuring Tizen rootfs"
|
||||
rm ./usr/lib/libunwind.so
|
||||
ln -s libunwind.so.8 ./usr/lib/libunwind.so
|
||||
ln -sfn asm-arm ./usr/include/asm
|
||||
patch -p1 < $__TIZEN_CROSSDIR/tizen.patch
|
||||
echo "<<Finish configuring Tizen rootfs"
|
171
eng/common/cross/armel/tizen-fetch.sh
Normal file
171
eng/common/cross/armel/tizen-fetch.sh
Normal file
|
@ -0,0 +1,171 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
if [[ -z "${VERBOSE// }" ]] || [ "$VERBOSE" -ne "$VERBOSE" ] 2>/dev/null; then
|
||||
VERBOSE=0
|
||||
fi
|
||||
|
||||
Log()
|
||||
{
|
||||
if [ $VERBOSE -ge $1 ]; then
|
||||
echo ${@:2}
|
||||
fi
|
||||
}
|
||||
|
||||
Inform()
|
||||
{
|
||||
Log 1 -e "\x1B[0;34m$@\x1B[m"
|
||||
}
|
||||
|
||||
Debug()
|
||||
{
|
||||
Log 2 -e "\x1B[0;32m$@\x1B[m"
|
||||
}
|
||||
|
||||
Error()
|
||||
{
|
||||
>&2 Log 0 -e "\x1B[0;31m$@\x1B[m"
|
||||
}
|
||||
|
||||
Fetch()
|
||||
{
|
||||
URL=$1
|
||||
FILE=$2
|
||||
PROGRESS=$3
|
||||
if [ $VERBOSE -ge 1 ] && [ $PROGRESS ]; then
|
||||
CURL_OPT="--progress-bar"
|
||||
else
|
||||
CURL_OPT="--silent"
|
||||
fi
|
||||
curl $CURL_OPT $URL > $FILE
|
||||
}
|
||||
|
||||
hash curl 2> /dev/null || { Error "Require 'curl' Aborting."; exit 1; }
|
||||
hash xmllint 2> /dev/null || { Error "Require 'xmllint' Aborting."; exit 1; }
|
||||
hash sha256sum 2> /dev/null || { Error "Require 'sha256sum' Aborting."; exit 1; }
|
||||
|
||||
TMPDIR=$1
|
||||
if [ ! -d $TMPDIR ]; then
|
||||
TMPDIR=./tizen_tmp
|
||||
Debug "Create temporary directory : $TMPDIR"
|
||||
mkdir -p $TMPDIR
|
||||
fi
|
||||
|
||||
TIZEN_URL=http://download.tizen.org/releases/milestone/tizen
|
||||
BUILD_XML=build.xml
|
||||
REPOMD_XML=repomd.xml
|
||||
PRIMARY_XML=primary.xml
|
||||
TARGET_URL="http://__not_initialized"
|
||||
|
||||
Xpath_get()
|
||||
{
|
||||
XPATH_RESULT=''
|
||||
XPATH=$1
|
||||
XML_FILE=$2
|
||||
RESULT=$(xmllint --xpath $XPATH $XML_FILE)
|
||||
if [[ -z ${RESULT// } ]]; then
|
||||
Error "Can not find target from $XML_FILE"
|
||||
Debug "Xpath = $XPATH"
|
||||
exit 1
|
||||
fi
|
||||
XPATH_RESULT=$RESULT
|
||||
}
|
||||
|
||||
fetch_tizen_pkgs_init()
|
||||
{
|
||||
TARGET=$1
|
||||
PROFILE=$2
|
||||
Debug "Initialize TARGET=$TARGET, PROFILE=$PROFILE"
|
||||
|
||||
TMP_PKG_DIR=$TMPDIR/tizen_${PROFILE}_pkgs
|
||||
if [ -d $TMP_PKG_DIR ]; then rm -rf $TMP_PKG_DIR; fi
|
||||
mkdir -p $TMP_PKG_DIR
|
||||
|
||||
PKG_URL=$TIZEN_URL/$PROFILE/latest
|
||||
|
||||
BUILD_XML_URL=$PKG_URL/$BUILD_XML
|
||||
TMP_BUILD=$TMP_PKG_DIR/$BUILD_XML
|
||||
TMP_REPOMD=$TMP_PKG_DIR/$REPOMD_XML
|
||||
TMP_PRIMARY=$TMP_PKG_DIR/$PRIMARY_XML
|
||||
TMP_PRIMARYGZ=${TMP_PRIMARY}.gz
|
||||
|
||||
Fetch $BUILD_XML_URL $TMP_BUILD
|
||||
|
||||
Debug "fetch $BUILD_XML_URL to $TMP_BUILD"
|
||||
|
||||
TARGET_XPATH="//build/buildtargets/buildtarget[@name=\"$TARGET\"]/repo[@type=\"binary\"]/text()"
|
||||
Xpath_get $TARGET_XPATH $TMP_BUILD
|
||||
TARGET_PATH=$XPATH_RESULT
|
||||
TARGET_URL=$PKG_URL/$TARGET_PATH
|
||||
|
||||
REPOMD_URL=$TARGET_URL/repodata/repomd.xml
|
||||
PRIMARY_XPATH='string(//*[local-name()="data"][@type="primary"]/*[local-name()="location"]/@href)'
|
||||
|
||||
Fetch $REPOMD_URL $TMP_REPOMD
|
||||
|
||||
Debug "fetch $REPOMD_URL to $TMP_REPOMD"
|
||||
|
||||
Xpath_get $PRIMARY_XPATH $TMP_REPOMD
|
||||
PRIMARY_XML_PATH=$XPATH_RESULT
|
||||
PRIMARY_URL=$TARGET_URL/$PRIMARY_XML_PATH
|
||||
|
||||
Fetch $PRIMARY_URL $TMP_PRIMARYGZ
|
||||
|
||||
Debug "fetch $PRIMARY_URL to $TMP_PRIMARYGZ"
|
||||
|
||||
gunzip $TMP_PRIMARYGZ
|
||||
|
||||
Debug "unzip $TMP_PRIMARYGZ to $TMP_PRIMARY"
|
||||
}
|
||||
|
||||
fetch_tizen_pkgs()
|
||||
{
|
||||
ARCH=$1
|
||||
PACKAGE_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="location"]/@href)'
|
||||
|
||||
PACKAGE_CHECKSUM_XPATH_TPL='string(//*[local-name()="metadata"]/*[local-name()="package"][*[local-name()="name"][text()="_PKG_"]][*[local-name()="arch"][text()="_ARCH_"]]/*[local-name()="checksum"]/text())'
|
||||
|
||||
for pkg in ${@:2}
|
||||
do
|
||||
Inform "Fetching... $pkg"
|
||||
XPATH=${PACKAGE_XPATH_TPL/_PKG_/$pkg}
|
||||
XPATH=${XPATH/_ARCH_/$ARCH}
|
||||
Xpath_get $XPATH $TMP_PRIMARY
|
||||
PKG_PATH=$XPATH_RESULT
|
||||
|
||||
XPATH=${PACKAGE_CHECKSUM_XPATH_TPL/_PKG_/$pkg}
|
||||
XPATH=${XPATH/_ARCH_/$ARCH}
|
||||
Xpath_get $XPATH $TMP_PRIMARY
|
||||
CHECKSUM=$XPATH_RESULT
|
||||
|
||||
PKG_URL=$TARGET_URL/$PKG_PATH
|
||||
PKG_FILE=$(basename $PKG_PATH)
|
||||
PKG_PATH=$TMPDIR/$PKG_FILE
|
||||
|
||||
Debug "Download $PKG_URL to $PKG_PATH"
|
||||
Fetch $PKG_URL $PKG_PATH true
|
||||
|
||||
echo "$CHECKSUM $PKG_PATH" | sha256sum -c - > /dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
Error "Fail to fetch $PKG_URL to $PKG_PATH"
|
||||
Debug "Checksum = $CHECKSUM"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
Inform "Initialize arm base"
|
||||
fetch_tizen_pkgs_init standard base
|
||||
Inform "fetch common packages"
|
||||
fetch_tizen_pkgs armv7l gcc glibc glibc-devel libicu libicu-devel
|
||||
fetch_tizen_pkgs noarch linux-glibc-devel
|
||||
Inform "fetch coreclr packages"
|
||||
fetch_tizen_pkgs armv7l lldb lldb-devel libgcc libstdc++ libstdc++-devel libunwind libunwind-devel tizen-release lttng-ust-devel lttng-ust userspace-rcu-devel userspace-rcu
|
||||
Inform "fetch corefx packages"
|
||||
fetch_tizen_pkgs armv7l libcom_err libcom_err-devel zlib zlib-devel libopenssl libopenssl-devel krb5 krb5-devel libcurl libcurl-devel
|
||||
|
||||
Inform "Initialize standard unified"
|
||||
fetch_tizen_pkgs_init standard unified
|
||||
Inform "fetch corefx packages"
|
||||
fetch_tizen_pkgs armv7l gssdp gssdp-devel
|
||||
|
50
eng/common/cross/armel/tizen/tizen-dotnet.ks
Normal file
50
eng/common/cross/armel/tizen/tizen-dotnet.ks
Normal file
|
@ -0,0 +1,50 @@
|
|||
lang en_US.UTF-8
|
||||
keyboard us
|
||||
timezone --utc Asia/Seoul
|
||||
|
||||
part / --fstype="ext4" --size=3500 --ondisk=mmcblk0 --label rootfs --fsoptions=defaults,noatime
|
||||
|
||||
rootpw tizen
|
||||
desktop --autologinuser=root
|
||||
user --name root --groups audio,video --password 'tizen'
|
||||
|
||||
repo --name=standard --baseurl=http://download.tizen.org/releases/milestone/tizen/unified/latest/repos/standard/packages/ --ssl_verify=no
|
||||
repo --name=base --baseurl=http://download.tizen.org/releases/milestone/tizen/base/latest/repos/standard/packages/ --ssl_verify=no
|
||||
|
||||
%packages
|
||||
tar
|
||||
gzip
|
||||
|
||||
sed
|
||||
grep
|
||||
gawk
|
||||
perl
|
||||
|
||||
binutils
|
||||
findutils
|
||||
util-linux
|
||||
lttng-ust
|
||||
userspace-rcu
|
||||
procps-ng
|
||||
tzdata
|
||||
ca-certificates
|
||||
|
||||
|
||||
### Core FX
|
||||
libicu
|
||||
libunwind
|
||||
iputils
|
||||
zlib
|
||||
krb5
|
||||
libcurl
|
||||
libopenssl
|
||||
|
||||
%end
|
||||
|
||||
%post
|
||||
|
||||
### Update /tmp privilege
|
||||
chmod 777 /tmp
|
||||
####################################
|
||||
|
||||
%end
|
18
eng/common/cross/armel/tizen/tizen.patch
Normal file
18
eng/common/cross/armel/tizen/tizen.patch
Normal file
|
@ -0,0 +1,18 @@
|
|||
diff -u -r a/usr/lib/libc.so b/usr/lib/libc.so
|
||||
--- a/usr/lib/libc.so 2016-12-30 23:00:08.284951863 +0900
|
||||
+++ b/usr/lib/libc.so 2016-12-30 23:00:32.140951815 +0900
|
||||
@@ -2,4 +2,4 @@
|
||||
Use the shared library, but some functions are only in
|
||||
the static library, so try that secondarily. */
|
||||
OUTPUT_FORMAT(elf32-littlearm)
|
||||
-GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a AS_NEEDED ( /lib/ld-linux.so.3 ) )
|
||||
+GROUP ( libc.so.6 libc_nonshared.a AS_NEEDED ( ld-linux.so.3 ) )
|
||||
diff -u -r a/usr/lib/libpthread.so b/usr/lib/libpthread.so
|
||||
--- a/usr/lib/libpthread.so 2016-12-30 23:00:19.408951841 +0900
|
||||
+++ b/usr/lib/libpthread.so 2016-12-30 23:00:39.068951801 +0900
|
||||
@@ -2,4 +2,4 @@
|
||||
Use the shared library, but some functions are only in
|
||||
the static library, so try that secondarily. */
|
||||
OUTPUT_FORMAT(elf32-littlearm)
|
||||
-GROUP ( /lib/libpthread.so.0 /usr/lib/libpthread_nonshared.a )
|
||||
+GROUP ( libpthread.so.0 libpthread_nonshared.a )
|
137
eng/common/cross/build-android-rootfs.sh
Normal file
137
eng/common/cross/build-android-rootfs.sh
Normal file
|
@ -0,0 +1,137 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
__NDK_Version=r14
|
||||
|
||||
usage()
|
||||
{
|
||||
echo "Creates a toolchain and sysroot used for cross-compiling for Android."
|
||||
echo.
|
||||
echo "Usage: $0 [BuildArch] [ApiLevel]"
|
||||
echo.
|
||||
echo "BuildArch is the target architecture of Android. Currently only arm64 is supported."
|
||||
echo "ApiLevel is the target Android API level. API levels usually match to Android releases. See https://source.android.com/source/build-numbers.html"
|
||||
echo.
|
||||
echo "By default, the toolchain and sysroot will be generated in cross/android-rootfs/toolchain/[BuildArch]. You can change this behavior"
|
||||
echo "by setting the TOOLCHAIN_DIR environment variable"
|
||||
echo.
|
||||
echo "By default, the NDK will be downloaded into the cross/android-rootfs/android-ndk-$__NDK_Version directory. If you already have an NDK installation,"
|
||||
echo "you can set the NDK_DIR environment variable to have this script use that installation of the NDK."
|
||||
echo "By default, this script will generate a file, android_platform, in the root of the ROOTFS_DIR directory that contains the RID for the supported and tested Android build: android.21-arm64. This file is to replace '/etc/os-release', which is not available for Android."
|
||||
exit 1
|
||||
}
|
||||
|
||||
__ApiLevel=21 # The minimum platform for arm64 is API level 21
|
||||
__BuildArch=arm64
|
||||
__AndroidArch=aarch64
|
||||
__AndroidToolchain=aarch64-linux-android
|
||||
|
||||
for i in "$@"
|
||||
do
|
||||
lowerI="$(echo $i | awk '{print tolower($0)}')"
|
||||
case $lowerI in
|
||||
-?|-h|--help)
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
arm64)
|
||||
__BuildArch=arm64
|
||||
__AndroidArch=aarch64
|
||||
__AndroidToolchain=aarch64-linux-android
|
||||
;;
|
||||
arm)
|
||||
__BuildArch=arm
|
||||
__AndroidArch=arm
|
||||
__AndroidToolchain=arm-linux-androideabi
|
||||
;;
|
||||
*[0-9])
|
||||
__ApiLevel=$i
|
||||
;;
|
||||
*)
|
||||
__UnprocessedBuildArgs="$__UnprocessedBuildArgs $i"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Obtain the location of the bash script to figure out where the root of the repo is.
|
||||
__CrossDir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
__Android_Cross_Dir="$__CrossDir/android-rootfs"
|
||||
__NDK_Dir="$__Android_Cross_Dir/android-ndk-$__NDK_Version"
|
||||
__libunwind_Dir="$__Android_Cross_Dir/libunwind"
|
||||
__lldb_Dir="$__Android_Cross_Dir/lldb"
|
||||
__ToolchainDir="$__Android_Cross_Dir/toolchain/$__BuildArch"
|
||||
|
||||
if [[ -n "$TOOLCHAIN_DIR" ]]; then
|
||||
__ToolchainDir=$TOOLCHAIN_DIR
|
||||
fi
|
||||
|
||||
if [[ -n "$NDK_DIR" ]]; then
|
||||
__NDK_Dir=$NDK_DIR
|
||||
fi
|
||||
|
||||
echo "Target API level: $__ApiLevel"
|
||||
echo "Target architecture: $__BuildArch"
|
||||
echo "NDK location: $__NDK_Dir"
|
||||
echo "Target Toolchain location: $__ToolchainDir"
|
||||
|
||||
# Download the NDK if required
|
||||
if [ ! -d $__NDK_Dir ]; then
|
||||
echo Downloading the NDK into $__NDK_Dir
|
||||
mkdir -p $__NDK_Dir
|
||||
wget -nv -nc --show-progress https://dl.google.com/android/repository/android-ndk-$__NDK_Version-linux-x86_64.zip -O $__Android_Cross_Dir/android-ndk-$__NDK_Version-linux-x86_64.zip
|
||||
unzip -q $__Android_Cross_Dir/android-ndk-$__NDK_Version-linux-x86_64.zip -d $__Android_Cross_Dir
|
||||
fi
|
||||
|
||||
if [ ! -d $__lldb_Dir ]; then
|
||||
mkdir -p $__lldb_Dir
|
||||
echo Downloading LLDB into $__lldb_Dir
|
||||
wget -nv -nc --show-progress https://dl.google.com/android/repository/lldb-2.3.3614996-linux-x86_64.zip -O $__Android_Cross_Dir/lldb-2.3.3614996-linux-x86_64.zip
|
||||
unzip -q $__Android_Cross_Dir/lldb-2.3.3614996-linux-x86_64.zip -d $__lldb_Dir
|
||||
fi
|
||||
|
||||
# Create the RootFS for both arm64 as well as aarch
|
||||
rm -rf $__Android_Cross_Dir/toolchain
|
||||
|
||||
echo Generating the $__BuildArch toolchain
|
||||
$__NDK_Dir/build/tools/make_standalone_toolchain.py --arch $__BuildArch --api $__ApiLevel --install-dir $__ToolchainDir
|
||||
|
||||
# Install the required packages into the toolchain
|
||||
# TODO: Add logic to get latest pkg version instead of specific version number
|
||||
rm -rf $__Android_Cross_Dir/deb/
|
||||
rm -rf $__Android_Cross_Dir/tmp
|
||||
|
||||
mkdir -p $__Android_Cross_Dir/deb/
|
||||
mkdir -p $__Android_Cross_Dir/tmp/$arch/
|
||||
wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libicu_60.2_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libicu_60.2_$__AndroidArch.deb
|
||||
wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libicu-dev_60.2_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libicu-dev_60.2_$__AndroidArch.deb
|
||||
|
||||
wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libandroid-glob-dev_0.4_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libandroid-glob-dev_0.4_$__AndroidArch.deb
|
||||
wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libandroid-glob_0.4_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libandroid-glob_0.4_$__AndroidArch.deb
|
||||
wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libandroid-support-dev_22_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libandroid-support-dev_22_$__AndroidArch.deb
|
||||
wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libandroid-support_22_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libandroid-support_22_$__AndroidArch.deb
|
||||
wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/liblzma-dev_5.2.3_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/liblzma-dev_5.2.3_$__AndroidArch.deb
|
||||
wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/liblzma_5.2.3_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/liblzma_5.2.3_$__AndroidArch.deb
|
||||
wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libunwind-dev_1.2.20170304_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libunwind-dev_1.2.20170304_$__AndroidArch.deb
|
||||
wget -nv -nc http://termux.net/dists/stable/main/binary-$__AndroidArch/libunwind_1.2.20170304_$__AndroidArch.deb -O $__Android_Cross_Dir/deb/libunwind_1.2.20170304_$__AndroidArch.deb
|
||||
|
||||
echo Unpacking Termux packages
|
||||
dpkg -x $__Android_Cross_Dir/deb/libicu_60.2_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
|
||||
dpkg -x $__Android_Cross_Dir/deb/libicu-dev_60.2_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
|
||||
dpkg -x $__Android_Cross_Dir/deb/libandroid-glob-dev_0.4_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
|
||||
dpkg -x $__Android_Cross_Dir/deb/libandroid-glob_0.4_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
|
||||
dpkg -x $__Android_Cross_Dir/deb/libandroid-support-dev_22_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
|
||||
dpkg -x $__Android_Cross_Dir/deb/libandroid-support_22_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
|
||||
dpkg -x $__Android_Cross_Dir/deb/liblzma-dev_5.2.3_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
|
||||
dpkg -x $__Android_Cross_Dir/deb/liblzma_5.2.3_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
|
||||
dpkg -x $__Android_Cross_Dir/deb/libunwind-dev_1.2.20170304_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
|
||||
dpkg -x $__Android_Cross_Dir/deb/libunwind_1.2.20170304_$__AndroidArch.deb $__Android_Cross_Dir/tmp/$__AndroidArch/
|
||||
|
||||
cp -R $__Android_Cross_Dir/tmp/$__AndroidArch/data/data/com.termux/files/usr/* $__ToolchainDir/sysroot/usr/
|
||||
|
||||
# Generate platform file for build.sh script to assign to __DistroRid
|
||||
echo "Generating platform file..."
|
||||
|
||||
echo "RID=android.21-arm64" > $__ToolchainDir/sysroot/android_platform
|
||||
echo Now run:
|
||||
echo CONFIG_DIR=\`realpath cross/android/$__BuildArch\` ROOTFS_DIR=\`realpath $__ToolchainDir/sysroot\` ./build.sh cross $__BuildArch skipgenerateversion skipnuget cmakeargs -DENABLE_LLDBPLUGIN=0
|
||||
|
210
eng/common/cross/build-rootfs.sh
Normal file
210
eng/common/cross/build-rootfs.sh
Normal file
|
@ -0,0 +1,210 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
usage()
|
||||
{
|
||||
echo "Usage: $0 [BuildArch] [LinuxCodeName] [lldbx.y] [--skipunmount]"
|
||||
echo "BuildArch can be: arm(default), armel, arm64, x86"
|
||||
echo "LinuxCodeName - optional, Code name for Linux, can be: trusty(default), vivid, wily, xenial, zesty, bionic, alpine. If BuildArch is armel, LinuxCodeName is jessie(default) or tizen."
|
||||
echo "lldbx.y - optional, LLDB version, can be: lldb3.6(default), lldb3.8, lldb3.9, lldb4.0, no-lldb. Ignored for alpine"
|
||||
echo "--skipunmount - optional, will skip the unmount of rootfs folder."
|
||||
exit 1
|
||||
}
|
||||
|
||||
__LinuxCodeName=trusty
|
||||
__CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
__InitialDir=$PWD
|
||||
__BuildArch=arm
|
||||
__UbuntuArch=armhf
|
||||
__UbuntuRepo="http://ports.ubuntu.com/"
|
||||
__LLDB_Package="lldb-3.6-dev"
|
||||
__SkipUnmount=0
|
||||
|
||||
# base development support
|
||||
__UbuntuPackages="build-essential"
|
||||
|
||||
__AlpinePackages="alpine-base"
|
||||
__AlpinePackages+=" build-base"
|
||||
__AlpinePackages+=" linux-headers"
|
||||
__AlpinePackages+=" lldb-dev"
|
||||
__AlpinePackages+=" llvm-dev"
|
||||
|
||||
# symlinks fixer
|
||||
__UbuntuPackages+=" symlinks"
|
||||
|
||||
# CoreCLR and CoreFX dependencies
|
||||
__UbuntuPackages+=" libicu-dev"
|
||||
__UbuntuPackages+=" liblttng-ust-dev"
|
||||
__UbuntuPackages+=" libunwind8-dev"
|
||||
|
||||
__AlpinePackages+=" gettext-dev"
|
||||
__AlpinePackages+=" icu-dev"
|
||||
__AlpinePackages+=" libunwind-dev"
|
||||
__AlpinePackages+=" lttng-ust-dev"
|
||||
|
||||
# CoreFX dependencies
|
||||
__UbuntuPackages+=" libcurl4-openssl-dev"
|
||||
__UbuntuPackages+=" libkrb5-dev"
|
||||
__UbuntuPackages+=" libssl-dev"
|
||||
__UbuntuPackages+=" zlib1g-dev"
|
||||
|
||||
__AlpinePackages+=" curl-dev"
|
||||
__AlpinePackages+=" krb5-dev"
|
||||
__AlpinePackages+=" openssl-dev"
|
||||
__AlpinePackages+=" zlib-dev"
|
||||
|
||||
__UnprocessedBuildArgs=
|
||||
for i in "$@" ; do
|
||||
lowerI="$(echo $i | awk '{print tolower($0)}')"
|
||||
case $lowerI in
|
||||
-?|-h|--help)
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
arm)
|
||||
__BuildArch=arm
|
||||
__UbuntuArch=armhf
|
||||
__AlpineArch=armhf
|
||||
__QEMUArch=arm
|
||||
;;
|
||||
arm64)
|
||||
__BuildArch=arm64
|
||||
__UbuntuArch=arm64
|
||||
__AlpineArch=aarch64
|
||||
__QEMUArch=aarch64
|
||||
;;
|
||||
armel)
|
||||
__BuildArch=armel
|
||||
__UbuntuArch=armel
|
||||
__UbuntuRepo="http://ftp.debian.org/debian/"
|
||||
__LinuxCodeName=jessie
|
||||
;;
|
||||
x86)
|
||||
__BuildArch=x86
|
||||
__UbuntuArch=i386
|
||||
__UbuntuRepo="http://archive.ubuntu.com/ubuntu/"
|
||||
;;
|
||||
lldb3.6)
|
||||
__LLDB_Package="lldb-3.6-dev"
|
||||
;;
|
||||
lldb3.8)
|
||||
__LLDB_Package="lldb-3.8-dev"
|
||||
;;
|
||||
lldb3.9)
|
||||
__LLDB_Package="liblldb-3.9-dev"
|
||||
;;
|
||||
lldb4.0)
|
||||
__LLDB_Package="liblldb-4.0-dev"
|
||||
;;
|
||||
no-lldb)
|
||||
unset __LLDB_Package
|
||||
;;
|
||||
vivid)
|
||||
if [ "$__LinuxCodeName" != "jessie" ]; then
|
||||
__LinuxCodeName=vivid
|
||||
fi
|
||||
;;
|
||||
wily)
|
||||
if [ "$__LinuxCodeName" != "jessie" ]; then
|
||||
__LinuxCodeName=wily
|
||||
fi
|
||||
;;
|
||||
xenial)
|
||||
if [ "$__LinuxCodeName" != "jessie" ]; then
|
||||
__LinuxCodeName=xenial
|
||||
fi
|
||||
;;
|
||||
zesty)
|
||||
if [ "$__LinuxCodeName" != "jessie" ]; then
|
||||
__LinuxCodeName=zesty
|
||||
fi
|
||||
;;
|
||||
bionic)
|
||||
if [ "$__LinuxCodeName" != "jessie" ]; then
|
||||
__LinuxCodeName=bionic
|
||||
fi
|
||||
;;
|
||||
jessie)
|
||||
__LinuxCodeName=jessie
|
||||
__UbuntuRepo="http://ftp.debian.org/debian/"
|
||||
;;
|
||||
tizen)
|
||||
if [ "$__BuildArch" != "armel" ]; then
|
||||
echo "Tizen is available only for armel."
|
||||
usage;
|
||||
exit 1;
|
||||
fi
|
||||
__LinuxCodeName=
|
||||
__UbuntuRepo=
|
||||
__Tizen=tizen
|
||||
;;
|
||||
alpine)
|
||||
__LinuxCodeName=alpine
|
||||
__UbuntuRepo=
|
||||
;;
|
||||
--skipunmount)
|
||||
__SkipUnmount=1
|
||||
;;
|
||||
*)
|
||||
__UnprocessedBuildArgs="$__UnprocessedBuildArgs $i"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ "$__BuildArch" == "armel" ]; then
|
||||
__LLDB_Package="lldb-3.5-dev"
|
||||
fi
|
||||
__UbuntuPackages+=" ${__LLDB_Package:-}"
|
||||
|
||||
__RootfsDir="$__CrossDir/rootfs/$__BuildArch"
|
||||
|
||||
if [[ -n "$ROOTFS_DIR" ]]; then
|
||||
__RootfsDir=$ROOTFS_DIR
|
||||
fi
|
||||
|
||||
if [ -d "$__RootfsDir" ]; then
|
||||
if [ $__SkipUnmount == 0 ]; then
|
||||
umount $__RootfsDir/*
|
||||
fi
|
||||
rm -rf $__RootfsDir
|
||||
fi
|
||||
|
||||
if [[ "$__LinuxCodeName" == "alpine" ]]; then
|
||||
__ApkToolsVersion=2.9.1
|
||||
__AlpineVersion=3.7
|
||||
__ApkToolsDir=$(mktemp -d)
|
||||
wget https://github.com/alpinelinux/apk-tools/releases/download/v$__ApkToolsVersion/apk-tools-$__ApkToolsVersion-x86_64-linux.tar.gz -P $__ApkToolsDir
|
||||
tar -xf $__ApkToolsDir/apk-tools-$__ApkToolsVersion-x86_64-linux.tar.gz -C $__ApkToolsDir
|
||||
mkdir -p $__RootfsDir/usr/bin
|
||||
cp -v /usr/bin/qemu-$__QEMUArch-static $__RootfsDir/usr/bin
|
||||
$__ApkToolsDir/apk-tools-$__ApkToolsVersion/apk \
|
||||
-X http://dl-cdn.alpinelinux.org/alpine/v$__AlpineVersion/main \
|
||||
-X http://dl-cdn.alpinelinux.org/alpine/v$__AlpineVersion/community \
|
||||
-X http://dl-cdn.alpinelinux.org/alpine/edge/testing \
|
||||
-U --allow-untrusted --root $__RootfsDir --arch $__AlpineArch --initdb \
|
||||
add $__AlpinePackages
|
||||
rm -r $__ApkToolsDir
|
||||
elif [[ -n $__LinuxCodeName ]]; then
|
||||
qemu-debootstrap --arch $__UbuntuArch $__LinuxCodeName $__RootfsDir $__UbuntuRepo
|
||||
cp $__CrossDir/$__BuildArch/sources.list.$__LinuxCodeName $__RootfsDir/etc/apt/sources.list
|
||||
chroot $__RootfsDir apt-get update
|
||||
chroot $__RootfsDir apt-get -f -y install
|
||||
chroot $__RootfsDir apt-get -y install $__UbuntuPackages
|
||||
chroot $__RootfsDir symlinks -cr /usr
|
||||
|
||||
if [ $__SkipUnmount == 0 ]; then
|
||||
umount $__RootfsDir/*
|
||||
fi
|
||||
|
||||
if [[ "$__BuildArch" == "arm" && "$__LinuxCodeName" == "trusty" ]]; then
|
||||
pushd $__RootfsDir
|
||||
patch -p1 < $__CrossDir/$__BuildArch/trusty.patch
|
||||
patch -p1 < $__CrossDir/$__BuildArch/trusty-lttng-2.4.patch
|
||||
popd
|
||||
fi
|
||||
elif [ "$__Tizen" == "tizen" ]; then
|
||||
ROOTFS_DIR=$__RootfsDir $__CrossDir/$__BuildArch/tizen-build-rootfs.sh
|
||||
else
|
||||
echo "Unsupported target platform."
|
||||
usage;
|
||||
exit 1
|
||||
fi
|
138
eng/common/cross/toolchain.cmake
Normal file
138
eng/common/cross/toolchain.cmake
Normal file
|
@ -0,0 +1,138 @@
|
|||
set(CROSS_ROOTFS $ENV{ROOTFS_DIR})
|
||||
|
||||
set(TARGET_ARCH_NAME $ENV{TARGET_BUILD_ARCH})
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_VERSION 1)
|
||||
|
||||
if(TARGET_ARCH_NAME STREQUAL "armel")
|
||||
set(CMAKE_SYSTEM_PROCESSOR armv7l)
|
||||
set(TOOLCHAIN "arm-linux-gnueabi")
|
||||
if("$ENV{__DistroRid}" MATCHES "tizen.*")
|
||||
set(TIZEN_TOOLCHAIN "armv7l-tizen-linux-gnueabi/6.2.1")
|
||||
endif()
|
||||
elseif(TARGET_ARCH_NAME STREQUAL "arm")
|
||||
set(CMAKE_SYSTEM_PROCESSOR armv7l)
|
||||
if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/armv6-alpine-linux-musleabihf)
|
||||
set(TOOLCHAIN "armv6-alpine-linux-musleabihf")
|
||||
else()
|
||||
set(TOOLCHAIN "arm-linux-gnueabihf")
|
||||
endif()
|
||||
elseif(TARGET_ARCH_NAME STREQUAL "arm64")
|
||||
set(CMAKE_SYSTEM_PROCESSOR aarch64)
|
||||
if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/aarch64-alpine-linux-musl)
|
||||
set(TOOLCHAIN "aarch64-alpine-linux-musl")
|
||||
else()
|
||||
set(TOOLCHAIN "aarch64-linux-gnu")
|
||||
endif()
|
||||
elseif(TARGET_ARCH_NAME STREQUAL "x86")
|
||||
set(CMAKE_SYSTEM_PROCESSOR i686)
|
||||
set(TOOLCHAIN "i686-linux-gnu")
|
||||
else()
|
||||
message(FATAL_ERROR "Arch is ${TARGET_ARCH_NAME}. Only armel, arm, arm64 and x86 are supported!")
|
||||
endif()
|
||||
|
||||
# Specify include paths
|
||||
if(TARGET_ARCH_NAME STREQUAL "armel")
|
||||
if(DEFINED TIZEN_TOOLCHAIN)
|
||||
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/)
|
||||
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/armv7l-tizen-linux-gnueabi)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# add_compile_param - adds only new options without duplicates.
|
||||
# arg0 - list with result options, arg1 - list with new options.
|
||||
# arg2 - optional argument, quick summary string for optional using CACHE FORCE mode.
|
||||
macro(add_compile_param)
|
||||
if(NOT ${ARGC} MATCHES "^(2|3)$")
|
||||
message(FATAL_ERROR "Wrong using add_compile_param! Two or three parameters must be given! See add_compile_param description.")
|
||||
endif()
|
||||
foreach(OPTION ${ARGV1})
|
||||
if(NOT ${ARGV0} MATCHES "${OPTION}($| )")
|
||||
set(${ARGV0} "${${ARGV0}} ${OPTION}")
|
||||
if(${ARGC} EQUAL "3") # CACHE FORCE mode
|
||||
set(${ARGV0} "${${ARGV0}}" CACHE STRING "${ARGV2}" FORCE)
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
# Specify link flags
|
||||
add_compile_param(CROSS_LINK_FLAGS "--sysroot=${CROSS_ROOTFS}")
|
||||
add_compile_param(CROSS_LINK_FLAGS "--gcc-toolchain=${CROSS_ROOTFS}/usr")
|
||||
add_compile_param(CROSS_LINK_FLAGS "--target=${TOOLCHAIN}")
|
||||
add_compile_param(CROSS_LINK_FLAGS "-fuse-ld=gold")
|
||||
|
||||
if(TARGET_ARCH_NAME STREQUAL "armel")
|
||||
if(DEFINED TIZEN_TOOLCHAIN) # For Tizen only
|
||||
add_compile_param(CROSS_LINK_FLAGS "-B${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
|
||||
add_compile_param(CROSS_LINK_FLAGS "-L${CROSS_ROOTFS}/lib")
|
||||
add_compile_param(CROSS_LINK_FLAGS "-L${CROSS_ROOTFS}/usr/lib")
|
||||
add_compile_param(CROSS_LINK_FLAGS "-L${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
|
||||
endif()
|
||||
elseif(TARGET_ARCH_NAME STREQUAL "x86")
|
||||
add_compile_param(CROSS_LINK_FLAGS "-m32")
|
||||
endif()
|
||||
|
||||
add_compile_param(CMAKE_EXE_LINKER_FLAGS "${CROSS_LINK_FLAGS}" "TOOLCHAIN_EXE_LINKER_FLAGS")
|
||||
add_compile_param(CMAKE_SHARED_LINKER_FLAGS "${CROSS_LINK_FLAGS}" "TOOLCHAIN_EXE_LINKER_FLAGS")
|
||||
add_compile_param(CMAKE_MODULE_LINKER_FLAGS "${CROSS_LINK_FLAGS}" "TOOLCHAIN_EXE_LINKER_FLAGS")
|
||||
|
||||
# Specify compile options
|
||||
add_compile_options("--sysroot=${CROSS_ROOTFS}")
|
||||
add_compile_options("--target=${TOOLCHAIN}")
|
||||
add_compile_options("--gcc-toolchain=${CROSS_ROOTFS}/usr")
|
||||
|
||||
if(TARGET_ARCH_NAME MATCHES "^(arm|armel|arm64)$")
|
||||
set(CMAKE_C_COMPILER_TARGET ${TOOLCHAIN})
|
||||
set(CMAKE_CXX_COMPILER_TARGET ${TOOLCHAIN})
|
||||
set(CMAKE_ASM_COMPILER_TARGET ${TOOLCHAIN})
|
||||
endif()
|
||||
|
||||
if(TARGET_ARCH_NAME MATCHES "^(arm|armel)$")
|
||||
add_compile_options(-mthumb)
|
||||
add_compile_options(-mfpu=vfpv3)
|
||||
if(TARGET_ARCH_NAME STREQUAL "armel")
|
||||
add_compile_options(-mfloat-abi=softfp)
|
||||
if(DEFINED TIZEN_TOOLCHAIN)
|
||||
add_compile_options(-Wno-deprecated-declarations) # compile-time option
|
||||
add_compile_options(-D__extern_always_inline=inline) # compile-time option
|
||||
endif()
|
||||
endif()
|
||||
elseif(TARGET_ARCH_NAME STREQUAL "x86")
|
||||
add_compile_options(-m32)
|
||||
add_compile_options(-Wno-error=unused-command-line-argument)
|
||||
endif()
|
||||
|
||||
# Set LLDB include and library paths
|
||||
if(TARGET_ARCH_NAME MATCHES "^(arm|armel|x86)$")
|
||||
if(TARGET_ARCH_NAME STREQUAL "x86")
|
||||
set(LLVM_CROSS_DIR "$ENV{LLVM_CROSS_HOME}")
|
||||
else() # arm/armel case
|
||||
set(LLVM_CROSS_DIR "$ENV{LLVM_ARM_HOME}")
|
||||
endif()
|
||||
if(LLVM_CROSS_DIR)
|
||||
set(WITH_LLDB_LIBS "${LLVM_CROSS_DIR}/lib/" CACHE STRING "")
|
||||
set(WITH_LLDB_INCLUDES "${LLVM_CROSS_DIR}/include" CACHE STRING "")
|
||||
set(LLDB_H "${WITH_LLDB_INCLUDES}" CACHE STRING "")
|
||||
set(LLDB "${LLVM_CROSS_DIR}/lib/liblldb.so" CACHE STRING "")
|
||||
else()
|
||||
if(TARGET_ARCH_NAME STREQUAL "x86")
|
||||
set(WITH_LLDB_LIBS "${CROSS_ROOTFS}/usr/lib/i386-linux-gnu" CACHE STRING "")
|
||||
set(CHECK_LLVM_DIR "${CROSS_ROOTFS}/usr/lib/llvm-3.8/include")
|
||||
if(EXISTS "${CHECK_LLVM_DIR}" AND IS_DIRECTORY "${CHECK_LLVM_DIR}")
|
||||
set(WITH_LLDB_INCLUDES "${CHECK_LLVM_DIR}")
|
||||
else()
|
||||
set(WITH_LLDB_INCLUDES "${CROSS_ROOTFS}/usr/lib/llvm-3.6/include")
|
||||
endif()
|
||||
else() # arm/armel case
|
||||
set(WITH_LLDB_LIBS "${CROSS_ROOTFS}/usr/lib/${TOOLCHAIN}" CACHE STRING "")
|
||||
set(WITH_LLDB_INCLUDES "${CROSS_ROOTFS}/usr/lib/llvm-3.6/include" CACHE STRING "")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH "${CROSS_ROOTFS}")
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
21
eng/common/darc-init.ps1
Normal file
21
eng/common/darc-init.ps1
Normal file
|
@ -0,0 +1,21 @@
|
|||
$verbosity = "m"
|
||||
. $PSScriptRoot\tools.ps1
|
||||
|
||||
function InstallDarcCli {
|
||||
$darcCliPackageName = "microsoft.dotnet.darc"
|
||||
$dotnet = "$env:DOTNET_INSTALL_DIR\dotnet.exe"
|
||||
$toolList = Invoke-Expression "& `"$dotnet`" tool list -g"
|
||||
|
||||
if ($toolList -like "*$darcCliPackageName*") {
|
||||
Invoke-Expression "& `"$dotnet`" tool uninstall $darcCliPackageName -g"
|
||||
}
|
||||
|
||||
$toolsetVersion = $GlobalJson.'msbuild-sdks'.'Microsoft.DotNet.Arcade.Sdk'
|
||||
|
||||
Write-Host "Installing Darc CLI version $toolsetVersion..."
|
||||
Write-Host "You may need to restart your command window if this is the first dotnet tool you have installed."
|
||||
Invoke-Expression "& `"$dotnet`" tool install $darcCliPackageName --version $toolsetVersion -v $verbosity -g"
|
||||
}
|
||||
|
||||
InitializeTools
|
||||
InstallDarcCli
|
35
eng/common/darc-init.sh
Normal file
35
eng/common/darc-init.sh
Normal file
|
@ -0,0 +1,35 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
source="${BASH_SOURCE[0]}"
|
||||
|
||||
# resolve $source until the file is no longer a symlink
|
||||
while [[ -h "$source" ]]; do
|
||||
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
|
||||
source="$(readlink "$source")"
|
||||
# if $source was a relative symlink, we need to resolve it relative to the path where the
|
||||
# symlink file was located
|
||||
[[ $source != /* ]] && source="$scriptroot/$source"
|
||||
done
|
||||
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
|
||||
verbosity=m
|
||||
|
||||
. "$scriptroot/tools.sh"
|
||||
|
||||
function InstallDarcCli {
|
||||
local darc_cli_package_name="microsoft.dotnet.darc"
|
||||
local uninstall_command=`$DOTNET_INSTALL_DIR/dotnet tool uninstall $darc_cli_package_name -g`
|
||||
local tool_list=$($DOTNET_INSTALL_DIR/dotnet tool list -g)
|
||||
if [[ $tool_list = *$darc_cli_package_name* ]]; then
|
||||
echo $($DOTNET_INSTALL_DIR/dotnet tool uninstall $darc_cli_package_name -g)
|
||||
fi
|
||||
|
||||
ReadGlobalVersion "Microsoft.DotNet.Arcade.Sdk"
|
||||
local toolset_version=$_ReadGlobalVersion
|
||||
|
||||
echo "Installing Darc CLI version $toolset_version..."
|
||||
echo "You may need to restart your command shell if this is the first dotnet tool you have installed."
|
||||
echo $($DOTNET_INSTALL_DIR/dotnet tool install $darc_cli_package_name --version $toolset_version -v $verbosity -g)
|
||||
}
|
||||
|
||||
InitializeTools
|
||||
InstallDarcCli
|
25
eng/common/helixpublish.proj
Normal file
25
eng/common/helixpublish.proj
Normal file
|
@ -0,0 +1,25 @@
|
|||
<Project Sdk="Microsoft.DotNet.Helix.Sdk" DefaultTargets="Test">
|
||||
|
||||
<PropertyGroup>
|
||||
<Language>msbuild</Language>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<HelixCorrelationPayload Include="$(CorrelationPayloadDirectory)">
|
||||
<PayloadDirectory>%(Identity)</PayloadDirectory>
|
||||
</HelixCorrelationPayload>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<HelixWorkItem Include="WorkItem" Condition="'$(WorkItemDirectory)' != ''">
|
||||
<PayloadDirectory>$(WorkItemDirectory)</PayloadDirectory>
|
||||
<Command>$(WorkItemCommand)</Command>
|
||||
</HelixWorkItem>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<XUnitProject Include="$(XUnitProjects.Split(';'))">
|
||||
<Arguments />
|
||||
</XUnitProject>
|
||||
</ItemGroup>
|
||||
</Project>
|
3
eng/common/init-tools-native.cmd
Normal file
3
eng/common/init-tools-native.cmd
Normal file
|
@ -0,0 +1,3 @@
|
|||
@echo off
|
||||
powershell -NoProfile -NoLogo -ExecutionPolicy ByPass -command "& """%~dp0init-tools-native.ps1""" %*"
|
||||
exit /b %ErrorLevel%
|
128
eng/common/init-tools-native.ps1
Normal file
128
eng/common/init-tools-native.ps1
Normal file
|
@ -0,0 +1,128 @@
|
|||
<#
|
||||
.SYNOPSIS
|
||||
Entry point script for installing native tools
|
||||
|
||||
.DESCRIPTION
|
||||
Reads $RepoRoot\global.json file to determine native assets to install
|
||||
and executes installers for those tools
|
||||
|
||||
.PARAMETER BaseUri
|
||||
Base file directory or Url from which to acquire tool archives
|
||||
|
||||
.PARAMETER InstallDirectory
|
||||
Directory to install native toolset. This is a command-line override for the default
|
||||
Install directory precedence order:
|
||||
- InstallDirectory command-line override
|
||||
- NETCOREENG_INSTALL_DIRECTORY environment variable
|
||||
- (default) %USERPROFILE%/.netcoreeng/native
|
||||
|
||||
.PARAMETER Clean
|
||||
Switch specifying to not install anything, but cleanup native asset folders
|
||||
|
||||
.PARAMETER Force
|
||||
Clean and then install tools
|
||||
|
||||
.PARAMETER DownloadRetries
|
||||
Total number of retry attempts
|
||||
|
||||
.PARAMETER RetryWaitTimeInSeconds
|
||||
Wait time between retry attempts in seconds
|
||||
|
||||
.PARAMETER GlobalJsonFile
|
||||
File path to global.json file
|
||||
|
||||
.NOTES
|
||||
#>
|
||||
[CmdletBinding(PositionalBinding=$false)]
|
||||
Param (
|
||||
[string] $BaseUri = "https://netcorenativeassets.blob.core.windows.net/resource-packages/external",
|
||||
[string] $InstallDirectory,
|
||||
[switch] $Clean = $False,
|
||||
[switch] $Force = $False,
|
||||
[int] $DownloadRetries = 5,
|
||||
[int] $RetryWaitTimeInSeconds = 30,
|
||||
[string] $GlobalJsonFile = "$PSScriptRoot\..\..\global.json"
|
||||
)
|
||||
|
||||
Set-StrictMode -version 2.0
|
||||
$ErrorActionPreference="Stop"
|
||||
|
||||
Import-Module -Name (Join-Path $PSScriptRoot "native\CommonLibrary.psm1")
|
||||
|
||||
try {
|
||||
# Define verbose switch if undefined
|
||||
$Verbose = $VerbosePreference -Eq "Continue"
|
||||
|
||||
$EngCommonBaseDir = Join-Path $PSScriptRoot "native\"
|
||||
$NativeBaseDir = $InstallDirectory
|
||||
if (!$NativeBaseDir) {
|
||||
$NativeBaseDir = CommonLibrary\Get-NativeInstallDirectory
|
||||
}
|
||||
$Env:CommonLibrary_NativeInstallDir = $NativeBaseDir
|
||||
$InstallBin = Join-Path $NativeBaseDir "bin"
|
||||
$InstallerPath = Join-Path $EngCommonBaseDir "install-tool.ps1"
|
||||
|
||||
# Process tools list
|
||||
Write-Host "Processing $GlobalJsonFile"
|
||||
If (-Not (Test-Path $GlobalJsonFile)) {
|
||||
Write-Host "Unable to find '$GlobalJsonFile'"
|
||||
exit 0
|
||||
}
|
||||
$NativeTools = Get-Content($GlobalJsonFile) -Raw |
|
||||
ConvertFrom-Json |
|
||||
Select-Object -Expand "native-tools" -ErrorAction SilentlyContinue
|
||||
if ($NativeTools) {
|
||||
$NativeTools.PSObject.Properties | ForEach-Object {
|
||||
$ToolName = $_.Name
|
||||
$ToolVersion = $_.Value
|
||||
$LocalInstallerCommand = $InstallerPath
|
||||
$LocalInstallerCommand += " -ToolName $ToolName"
|
||||
$LocalInstallerCommand += " -InstallPath $InstallBin"
|
||||
$LocalInstallerCommand += " -BaseUri $BaseUri"
|
||||
$LocalInstallerCommand += " -CommonLibraryDirectory $EngCommonBaseDir"
|
||||
$LocalInstallerCommand += " -Version $ToolVersion"
|
||||
|
||||
if ($Verbose) {
|
||||
$LocalInstallerCommand += " -Verbose"
|
||||
}
|
||||
if (Get-Variable 'Force' -ErrorAction 'SilentlyContinue') {
|
||||
if($Force) {
|
||||
$LocalInstallerCommand += " -Force"
|
||||
}
|
||||
}
|
||||
if ($Clean) {
|
||||
$LocalInstallerCommand += " -Clean"
|
||||
}
|
||||
|
||||
Write-Verbose "Installing $ToolName version $ToolVersion"
|
||||
Write-Verbose "Executing '$LocalInstallerCommand'"
|
||||
Invoke-Expression "$LocalInstallerCommand"
|
||||
if ($LASTEXITCODE -Ne "0") {
|
||||
Write-Error "Execution failed"
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
Write-Host "No native tools defined in global.json"
|
||||
exit 0
|
||||
}
|
||||
|
||||
if ($Clean) {
|
||||
exit 0
|
||||
}
|
||||
if (Test-Path $InstallBin) {
|
||||
Write-Host "Native tools are available from" (Convert-Path -Path $InstallBin)
|
||||
Write-Host "##vso[task.prependpath]$(Convert-Path -Path $InstallBin)"
|
||||
}
|
||||
else {
|
||||
Write-Error "Native tools install directory does not exist, installation failed"
|
||||
exit 1
|
||||
}
|
||||
exit 0
|
||||
}
|
||||
catch {
|
||||
Write-Host $_
|
||||
Write-Host $_.Exception
|
||||
exit 1
|
||||
}
|
145
eng/common/init-tools-native.sh
Normal file
145
eng/common/init-tools-native.sh
Normal file
|
@ -0,0 +1,145 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
source="${BASH_SOURCE[0]}"
|
||||
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
|
||||
|
||||
base_uri='https://netcorenativeassets.blob.core.windows.net/resource-packages/external'
|
||||
install_directory=''
|
||||
clean=false
|
||||
force=false
|
||||
download_retries=5
|
||||
retry_wait_time_seconds=30
|
||||
global_json_file="${scriptroot}/../../global.json"
|
||||
declare -A native_assets
|
||||
|
||||
. $scriptroot/native/common-library.sh
|
||||
|
||||
while (($# > 0)); do
|
||||
lowerI="$(echo $1 | awk '{print tolower($0)}')"
|
||||
case $lowerI in
|
||||
--baseuri)
|
||||
base_uri=$2
|
||||
shift 2
|
||||
;;
|
||||
--installdirectory)
|
||||
install_directory=$2
|
||||
shift 2
|
||||
;;
|
||||
--clean)
|
||||
clean=true
|
||||
shift 1
|
||||
;;
|
||||
--force)
|
||||
force=true
|
||||
shift 1
|
||||
;;
|
||||
--downloadretries)
|
||||
download_retries=$2
|
||||
shift 2
|
||||
;;
|
||||
--retrywaittimeseconds)
|
||||
retry_wait_time_seconds=$2
|
||||
shift 2
|
||||
;;
|
||||
--help)
|
||||
echo "Common settings:"
|
||||
echo " --installdirectory Directory to install native toolset."
|
||||
echo " This is a command-line override for the default"
|
||||
echo " Install directory precedence order:"
|
||||
echo " - InstallDirectory command-line override"
|
||||
echo " - NETCOREENG_INSTALL_DIRECTORY environment variable"
|
||||
echo " - (default) %USERPROFILE%/.netcoreeng/native"
|
||||
echo ""
|
||||
echo " --clean Switch specifying not to install anything, but cleanup native asset folders"
|
||||
echo " --force Clean and then install tools"
|
||||
echo " --help Print help and exit"
|
||||
echo ""
|
||||
echo "Advanced settings:"
|
||||
echo " --baseuri <value> Base URI for where to download native tools from"
|
||||
echo " --downloadretries <value> Number of times a download should be attempted"
|
||||
echo " --retrywaittimeseconds <value> Wait time between download attempts"
|
||||
echo ""
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
function ReadGlobalJsonNativeTools {
|
||||
# Get the native-tools section from the global.json.
|
||||
local native_tools_section=$(cat $global_json_file | awk '/"native-tools"/,/}/')
|
||||
# Only extract the contents of the object.
|
||||
local native_tools_list=$(echo $native_tools_section | awk -F"[{}]" '{print $2}')
|
||||
native_tools_list=${native_tools_list//[\" ]/}
|
||||
native_tools_list=${native_tools_list//,/$'\n'}
|
||||
|
||||
local old_IFS=$IFS
|
||||
while read -r line; do
|
||||
# Lines are of the form: 'tool:version'
|
||||
IFS=:
|
||||
while read -r key value; do
|
||||
native_assets[$key]=$value
|
||||
done <<< "$line"
|
||||
done <<< "$native_tools_list"
|
||||
IFS=$old_IFS
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
native_base_dir=$install_directory
|
||||
if [[ -z $install_directory ]]; then
|
||||
native_base_dir=$(GetNativeInstallDirectory)
|
||||
fi
|
||||
|
||||
install_bin="${native_base_dir}/bin"
|
||||
|
||||
ReadGlobalJsonNativeTools
|
||||
|
||||
if [[ ${#native_assets[@]} -eq 0 ]]; then
|
||||
echo "No native tools defined in global.json"
|
||||
exit 0;
|
||||
else
|
||||
native_installer_dir="$scriptroot/native"
|
||||
for tool in "${!native_assets[@]}"
|
||||
do
|
||||
tool_version=${native_assets[$tool]}
|
||||
installer_name="install-$tool.sh"
|
||||
installer_command="$native_installer_dir/$installer_name"
|
||||
installer_command+=" --baseuri $base_uri"
|
||||
installer_command+=" --installpath $install_bin"
|
||||
installer_command+=" --version $tool_version"
|
||||
|
||||
if [[ $force = true ]]; then
|
||||
installer_command+=" --force"
|
||||
fi
|
||||
|
||||
if [[ $clean = true ]]; then
|
||||
installer_command+=" --clean"
|
||||
fi
|
||||
|
||||
echo "Installing $tool version $tool_version"
|
||||
echo "Executing '$installer_command'"
|
||||
$installer_command
|
||||
|
||||
if [[ $? != 0 ]]; then
|
||||
echo "Execution Failed" >&2
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if [[ ! -z $clean ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [[ -d $install_bin ]]; then
|
||||
echo "Native tools are available from $install_bin"
|
||||
if [[ !-z BUILD_BUILDNUMBER ]]; then
|
||||
echo "##vso[task.prependpath]$install_bin"
|
||||
fi
|
||||
else
|
||||
echo "Native tools install directory does not exist, installation failed" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
23
eng/common/msbuild.ps1
Normal file
23
eng/common/msbuild.ps1
Normal file
|
@ -0,0 +1,23 @@
|
|||
[CmdletBinding(PositionalBinding=$false)]
|
||||
Param(
|
||||
[string] $verbosity = "minimal",
|
||||
[bool] $warnaserror = $true,
|
||||
[bool] $nodereuse = $true,
|
||||
[switch] $ci,
|
||||
[switch] $prepareMachine,
|
||||
[Parameter(ValueFromRemainingArguments=$true)][String[]]$extraArgs
|
||||
)
|
||||
|
||||
. $PSScriptRoot\tools.ps1
|
||||
|
||||
try {
|
||||
InitializeTools
|
||||
MSBuild @extraArgs
|
||||
ExitWithExitCode $lastExitCode
|
||||
}
|
||||
catch {
|
||||
Write-Host $_
|
||||
Write-Host $_.Exception
|
||||
Write-Host $_.ScriptStackTrace
|
||||
ExitWithExitCode 1
|
||||
}
|
55
eng/common/msbuild.sh
Normal file
55
eng/common/msbuild.sh
Normal file
|
@ -0,0 +1,55 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
source="${BASH_SOURCE[0]}"
|
||||
|
||||
# resolve $source until the file is no longer a symlink
|
||||
while [[ -h "$source" ]]; do
|
||||
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
|
||||
source="$(readlink "$source")"
|
||||
# if $source was a relative symlink, we need to resolve it relative to the path where the
|
||||
# symlink file was located
|
||||
[[ $source != /* ]] && source="$scriptroot/$source"
|
||||
done
|
||||
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
|
||||
|
||||
verbosity='minimal'
|
||||
warnaserror=true
|
||||
nodereuse=true
|
||||
prepare_machine=false
|
||||
extraargs=''
|
||||
|
||||
while (($# > 0)); do
|
||||
lowerI="$(echo $1 | awk '{print tolower($0)}')"
|
||||
case $lowerI in
|
||||
--verbosity)
|
||||
verbosity=$2
|
||||
shift 2
|
||||
;;
|
||||
--warnaserror)
|
||||
warnaserror=$2
|
||||
shift 2
|
||||
;;
|
||||
--nodereuse)
|
||||
nodereuse=$2
|
||||
shift 2
|
||||
;;
|
||||
--ci)
|
||||
ci=true
|
||||
shift 1
|
||||
;;
|
||||
--preparemachine)
|
||||
prepare_machine=true
|
||||
shift 1
|
||||
;;
|
||||
*)
|
||||
extraargs="$extraargs $1"
|
||||
shift 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
. "$scriptroot/tools.sh"
|
||||
|
||||
InitializeTools
|
||||
MSBuild $extraargs
|
||||
ExitWithExitCode $?
|
358
eng/common/native/CommonLibrary.psm1
Normal file
358
eng/common/native/CommonLibrary.psm1
Normal file
|
@ -0,0 +1,358 @@
|
|||
<#
|
||||
.SYNOPSIS
|
||||
Helper module to install an archive to a directory
|
||||
|
||||
.DESCRIPTION
|
||||
Helper module to download and extract an archive to a specified directory
|
||||
|
||||
.PARAMETER Uri
|
||||
Uri of artifact to download
|
||||
|
||||
.PARAMETER InstallDirectory
|
||||
Directory to extract artifact contents to
|
||||
|
||||
.PARAMETER Force
|
||||
Force download / extraction if file or contents already exist. Default = False
|
||||
|
||||
.PARAMETER DownloadRetries
|
||||
Total number of retry attempts. Default = 5
|
||||
|
||||
.PARAMETER RetryWaitTimeInSeconds
|
||||
Wait time between retry attempts in seconds. Default = 30
|
||||
|
||||
.NOTES
|
||||
Returns False if download or extraction fail, True otherwise
|
||||
#>
|
||||
function DownloadAndExtract {
|
||||
[CmdletBinding(PositionalBinding=$false)]
|
||||
Param (
|
||||
[Parameter(Mandatory=$True)]
|
||||
[string] $Uri,
|
||||
[Parameter(Mandatory=$True)]
|
||||
[string] $InstallDirectory,
|
||||
[switch] $Force = $False,
|
||||
[int] $DownloadRetries = 5,
|
||||
[int] $RetryWaitTimeInSeconds = 30
|
||||
)
|
||||
# Define verbose switch if undefined
|
||||
$Verbose = $VerbosePreference -Eq "Continue"
|
||||
|
||||
$TempToolPath = CommonLibrary\Get-TempPathFilename -Path $Uri
|
||||
|
||||
# Download native tool
|
||||
$DownloadStatus = CommonLibrary\Get-File -Uri $Uri `
|
||||
-Path $TempToolPath `
|
||||
-DownloadRetries $DownloadRetries `
|
||||
-RetryWaitTimeInSeconds $RetryWaitTimeInSeconds `
|
||||
-Force:$Force `
|
||||
-Verbose:$Verbose
|
||||
|
||||
if ($DownloadStatus -Eq $False) {
|
||||
Write-Error "Download failed"
|
||||
return $False
|
||||
}
|
||||
|
||||
# Extract native tool
|
||||
$UnzipStatus = CommonLibrary\Expand-Zip -ZipPath $TempToolPath `
|
||||
-OutputDirectory $InstallDirectory `
|
||||
-Force:$Force `
|
||||
-Verbose:$Verbose
|
||||
|
||||
if ($UnzipStatus -Eq $False) {
|
||||
Write-Error "Unzip failed"
|
||||
return $False
|
||||
}
|
||||
return $True
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Download a file, retry on failure
|
||||
|
||||
.DESCRIPTION
|
||||
Download specified file and retry if attempt fails
|
||||
|
||||
.PARAMETER Uri
|
||||
Uri of file to download. If Uri is a local path, the file will be copied instead of downloaded
|
||||
|
||||
.PARAMETER Path
|
||||
Path to download or copy uri file to
|
||||
|
||||
.PARAMETER Force
|
||||
Overwrite existing file if present. Default = False
|
||||
|
||||
.PARAMETER DownloadRetries
|
||||
Total number of retry attempts. Default = 5
|
||||
|
||||
.PARAMETER RetryWaitTimeInSeconds
|
||||
Wait time between retry attempts in seconds Default = 30
|
||||
|
||||
#>
|
||||
function Get-File {
|
||||
[CmdletBinding(PositionalBinding=$false)]
|
||||
Param (
|
||||
[Parameter(Mandatory=$True)]
|
||||
[string] $Uri,
|
||||
[Parameter(Mandatory=$True)]
|
||||
[string] $Path,
|
||||
[int] $DownloadRetries = 5,
|
||||
[int] $RetryWaitTimeInSeconds = 30,
|
||||
[switch] $Force = $False
|
||||
)
|
||||
$Attempt = 0
|
||||
|
||||
if ($Force) {
|
||||
if (Test-Path $Path) {
|
||||
Remove-Item $Path -Force
|
||||
}
|
||||
}
|
||||
if (Test-Path $Path) {
|
||||
Write-Host "File '$Path' already exists, skipping download"
|
||||
return $True
|
||||
}
|
||||
|
||||
$DownloadDirectory = Split-Path -ErrorAction Ignore -Path "$Path" -Parent
|
||||
if (-Not (Test-Path $DownloadDirectory)) {
|
||||
New-Item -path $DownloadDirectory -force -itemType "Directory" | Out-Null
|
||||
}
|
||||
|
||||
if (Test-Path -IsValid -Path $Uri) {
|
||||
Write-Verbose "'$Uri' is a file path, copying file to '$Path'"
|
||||
Copy-Item -Path $Uri -Destination $Path
|
||||
return $?
|
||||
}
|
||||
else {
|
||||
Write-Verbose "Downloading $Uri"
|
||||
while($Attempt -Lt $DownloadRetries)
|
||||
{
|
||||
try {
|
||||
Invoke-WebRequest -UseBasicParsing -Uri $Uri -OutFile $Path
|
||||
Write-Verbose "Downloaded to '$Path'"
|
||||
return $True
|
||||
}
|
||||
catch {
|
||||
$Attempt++
|
||||
if ($Attempt -Lt $DownloadRetries) {
|
||||
$AttemptsLeft = $DownloadRetries - $Attempt
|
||||
Write-Warning "Download failed, $AttemptsLeft attempts remaining, will retry in $RetryWaitTimeInSeconds seconds"
|
||||
Start-Sleep -Seconds $RetryWaitTimeInSeconds
|
||||
}
|
||||
else {
|
||||
Write-Error $_
|
||||
Write-Error $_.Exception
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $False
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Generate a shim for a native tool
|
||||
|
||||
.DESCRIPTION
|
||||
Creates a wrapper script (shim) that passes arguments forward to native tool assembly
|
||||
|
||||
.PARAMETER ShimName
|
||||
The name of the shim
|
||||
|
||||
.PARAMETER ShimDirectory
|
||||
The directory where shims are stored
|
||||
|
||||
.PARAMETER ToolFilePath
|
||||
Path to file that shim forwards to
|
||||
|
||||
.PARAMETER Force
|
||||
Replace shim if already present. Default = False
|
||||
|
||||
.NOTES
|
||||
Returns $True if generating shim succeeds, $False otherwise
|
||||
#>
|
||||
function New-ScriptShim {
|
||||
[CmdletBinding(PositionalBinding=$false)]
|
||||
Param (
|
||||
[Parameter(Mandatory=$True)]
|
||||
[string] $ShimName,
|
||||
[Parameter(Mandatory=$True)]
|
||||
[string] $ShimDirectory,
|
||||
[Parameter(Mandatory=$True)]
|
||||
[string] $ToolFilePath,
|
||||
[Parameter(Mandatory=$True)]
|
||||
[string] $BaseUri,
|
||||
[switch] $Force
|
||||
)
|
||||
try {
|
||||
Write-Verbose "Generating '$ShimName' shim"
|
||||
|
||||
if (-Not (Test-Path $ToolFilePath)){
|
||||
Write-Error "Specified tool file path '$ToolFilePath' does not exist"
|
||||
return $False
|
||||
}
|
||||
|
||||
# WinShimmer is a small .NET Framework program that creates .exe shims to bootstrapped programs
|
||||
# Many of the checks for installed programs expect a .exe extension for Windows tools, rather
|
||||
# than a .bat or .cmd file.
|
||||
# Source: https://github.com/dotnet/arcade/tree/master/src/WinShimmer
|
||||
if (-Not (Test-Path "$ShimDirectory\WinShimmer\winshimmer.exe")) {
|
||||
$InstallStatus = DownloadAndExtract -Uri "$BaseUri/windows/winshimmer/WinShimmer.zip" `
|
||||
-InstallDirectory $ShimDirectory\WinShimmer `
|
||||
-Force:$Force `
|
||||
-DownloadRetries 2 `
|
||||
-RetryWaitTimeInSeconds 5 `
|
||||
-Verbose:$Verbose
|
||||
}
|
||||
|
||||
if ((Test-Path (Join-Path $ShimDirectory "$ShimName.exe"))) {
|
||||
Write-Host "$ShimName.exe already exists; replacing..."
|
||||
Remove-Item (Join-Path $ShimDirectory "$ShimName.exe")
|
||||
}
|
||||
|
||||
Invoke-Expression "$ShimDirectory\WinShimmer\winshimmer.exe $ShimName $ToolFilePath $ShimDirectory"
|
||||
return $True
|
||||
}
|
||||
catch {
|
||||
Write-Host $_
|
||||
Write-Host $_.Exception
|
||||
return $False
|
||||
}
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Returns the machine architecture of the host machine
|
||||
|
||||
.NOTES
|
||||
Returns 'x64' on 64 bit machines
|
||||
Returns 'x86' on 32 bit machines
|
||||
#>
|
||||
function Get-MachineArchitecture {
|
||||
$ProcessorArchitecture = $Env:PROCESSOR_ARCHITECTURE
|
||||
$ProcessorArchitectureW6432 = $Env:PROCESSOR_ARCHITEW6432
|
||||
if($ProcessorArchitecture -Eq "X86")
|
||||
{
|
||||
if(($ProcessorArchitectureW6432 -Eq "") -Or
|
||||
($ProcessorArchitectureW6432 -Eq "X86")) {
|
||||
return "x86"
|
||||
}
|
||||
$ProcessorArchitecture = $ProcessorArchitectureW6432
|
||||
}
|
||||
if (($ProcessorArchitecture -Eq "AMD64") -Or
|
||||
($ProcessorArchitecture -Eq "IA64") -Or
|
||||
($ProcessorArchitecture -Eq "ARM64")) {
|
||||
return "x64"
|
||||
}
|
||||
return "x86"
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Get the name of a temporary folder under the native install directory
|
||||
#>
|
||||
function Get-TempDirectory {
|
||||
return Join-Path (Get-NativeInstallDirectory) "temp/"
|
||||
}
|
||||
|
||||
function Get-TempPathFilename {
|
||||
[CmdletBinding(PositionalBinding=$false)]
|
||||
Param (
|
||||
[Parameter(Mandatory=$True)]
|
||||
[string] $Path
|
||||
)
|
||||
$TempDir = CommonLibrary\Get-TempDirectory
|
||||
$TempFilename = Split-Path $Path -leaf
|
||||
$TempPath = Join-Path $TempDir $TempFilename
|
||||
return $TempPath
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Returns the base directory to use for native tool installation
|
||||
|
||||
.NOTES
|
||||
Returns the value of the NETCOREENG_INSTALL_DIRECTORY if that environment variable
|
||||
is set, or otherwise returns an install directory under the %USERPROFILE%
|
||||
#>
|
||||
function Get-NativeInstallDirectory {
|
||||
$InstallDir = $Env:NETCOREENG_INSTALL_DIRECTORY
|
||||
if (!$InstallDir) {
|
||||
$InstallDir = Join-Path $Env:USERPROFILE ".netcoreeng/native/"
|
||||
}
|
||||
return $InstallDir
|
||||
}
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Unzip an archive
|
||||
|
||||
.DESCRIPTION
|
||||
Powershell module to unzip an archive to a specified directory
|
||||
|
||||
.PARAMETER ZipPath (Required)
|
||||
Path to archive to unzip
|
||||
|
||||
.PARAMETER OutputDirectory (Required)
|
||||
Output directory for archive contents
|
||||
|
||||
.PARAMETER Force
|
||||
Overwrite output directory contents if they already exist
|
||||
|
||||
.NOTES
|
||||
- Returns True and does not perform an extraction if output directory already exists but Overwrite is not True.
|
||||
- Returns True if unzip operation is successful
|
||||
- Returns False if Overwrite is True and it is unable to remove contents of OutputDirectory
|
||||
- Returns False if unable to extract zip archive
|
||||
#>
|
||||
function Expand-Zip {
|
||||
[CmdletBinding(PositionalBinding=$false)]
|
||||
Param (
|
||||
[Parameter(Mandatory=$True)]
|
||||
[string] $ZipPath,
|
||||
[Parameter(Mandatory=$True)]
|
||||
[string] $OutputDirectory,
|
||||
[switch] $Force
|
||||
)
|
||||
|
||||
Write-Verbose "Extracting '$ZipPath' to '$OutputDirectory'"
|
||||
try {
|
||||
if ((Test-Path $OutputDirectory) -And (-Not $Force)) {
|
||||
Write-Host "Directory '$OutputDirectory' already exists, skipping extract"
|
||||
return $True
|
||||
}
|
||||
if (Test-Path $OutputDirectory) {
|
||||
Write-Verbose "'Force' is 'True', but '$OutputDirectory' exists, removing directory"
|
||||
Remove-Item $OutputDirectory -Force -Recurse
|
||||
if ($? -Eq $False) {
|
||||
Write-Error "Unable to remove '$OutputDirectory'"
|
||||
return $False
|
||||
}
|
||||
}
|
||||
if (-Not (Test-Path $OutputDirectory)) {
|
||||
New-Item -path $OutputDirectory -Force -itemType "Directory" | Out-Null
|
||||
}
|
||||
|
||||
Add-Type -assembly "system.io.compression.filesystem"
|
||||
[io.compression.zipfile]::ExtractToDirectory("$ZipPath", "$OutputDirectory")
|
||||
if ($? -Eq $False) {
|
||||
Write-Error "Unable to extract '$ZipPath'"
|
||||
return $False
|
||||
}
|
||||
}
|
||||
catch {
|
||||
Write-Host $_
|
||||
Write-Host $_.Exception
|
||||
|
||||
return $False
|
||||
}
|
||||
return $True
|
||||
}
|
||||
|
||||
export-modulemember -function DownloadAndExtract
|
||||
export-modulemember -function Expand-Zip
|
||||
export-modulemember -function Get-File
|
||||
export-modulemember -function Get-MachineArchitecture
|
||||
export-modulemember -function Get-NativeInstallDirectory
|
||||
export-modulemember -function Get-TempDirectory
|
||||
export-modulemember -function Get-TempPathFilename
|
||||
export-modulemember -function New-ScriptShim
|
168
eng/common/native/common-library.sh
Normal file
168
eng/common/native/common-library.sh
Normal file
|
@ -0,0 +1,168 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
function GetNativeInstallDirectory {
|
||||
local install_dir
|
||||
|
||||
if [[ -z $NETCOREENG_INSTALL_DIRECTORY ]]; then
|
||||
install_dir=$HOME/.netcoreeng/native/
|
||||
else
|
||||
install_dir=$NETCOREENG_INSTALL_DIRECTORY
|
||||
fi
|
||||
|
||||
echo $install_dir
|
||||
return 0
|
||||
}
|
||||
|
||||
function GetTempDirectory {
|
||||
|
||||
echo $(GetNativeInstallDirectory)temp/
|
||||
return 0
|
||||
}
|
||||
|
||||
function ExpandZip {
|
||||
local zip_path=$1
|
||||
local output_directory=$2
|
||||
local force=${3:-false}
|
||||
|
||||
echo "Extracting $zip_path to $output_directory"
|
||||
if [[ -d $output_directory ]] && [[ $force = false ]]; then
|
||||
echo "Directory '$output_directory' already exists, skipping extract"
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [[ -d $output_directory ]]; then
|
||||
echo "'Force flag enabled, but '$output_directory' exists. Removing directory"
|
||||
rm -rf $output_directory
|
||||
if [[ $? != 0 ]]; then
|
||||
echo Unable to remove '$output_directory'>&2
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Creating directory: '$output_directory'"
|
||||
mkdir -p $output_directory
|
||||
|
||||
echo "Extracting archive"
|
||||
tar -xf $zip_path -C $output_directory
|
||||
if [[ $? != 0 ]]; then
|
||||
echo "Unable to extract '$zip_path'" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
function GetCurrentOS {
|
||||
local unameOut="$(uname -s)"
|
||||
case $unameOut in
|
||||
Linux*) echo "Linux";;
|
||||
Darwin*) echo "MacOS";;
|
||||
esac
|
||||
return 0
|
||||
}
|
||||
|
||||
function GetFile {
|
||||
local uri=$1
|
||||
local path=$2
|
||||
local force=${3:-false}
|
||||
local download_retries=${4:-5}
|
||||
local retry_wait_time_seconds=${5:-30}
|
||||
|
||||
if [[ -f $path ]]; then
|
||||
if [[ $force = false ]]; then
|
||||
echo "File '$path' already exists. Skipping download"
|
||||
return 0
|
||||
else
|
||||
rm -rf $path
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -f $uri ]]; then
|
||||
echo "'$uri' is a file path, copying file to '$path'"
|
||||
cp $uri $path
|
||||
return $?
|
||||
fi
|
||||
|
||||
echo "Downloading $uri"
|
||||
# Use curl if available, otherwise use wget
|
||||
if command -v curl > /dev/null; then
|
||||
curl "$uri" -sSL --retry $download_retries --retry-delay $retry_wait_time_seconds --create-dirs -o "$path" --fail
|
||||
else
|
||||
wget -q -O "$path" "$uri" --tries="$download_retries"
|
||||
fi
|
||||
|
||||
return $?
|
||||
}
|
||||
|
||||
function GetTempPathFileName {
|
||||
local path=$1
|
||||
|
||||
local temp_dir=$(GetTempDirectory)
|
||||
local temp_file_name=$(basename $path)
|
||||
echo $temp_dir$temp_file_name
|
||||
return 0
|
||||
}
|
||||
|
||||
function DownloadAndExtract {
|
||||
local uri=$1
|
||||
local installDir=$2
|
||||
local force=${3:-false}
|
||||
local download_retries=${4:-5}
|
||||
local retry_wait_time_seconds=${5:-30}
|
||||
|
||||
local temp_tool_path=$(GetTempPathFileName $uri)
|
||||
|
||||
echo "downloading to: $temp_tool_path"
|
||||
|
||||
# Download file
|
||||
GetFile "$uri" "$temp_tool_path" $force $download_retries $retry_wait_time_seconds
|
||||
if [[ $? != 0 ]]; then
|
||||
echo "Failed to download '$uri' to '$temp_tool_path'." >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Extract File
|
||||
echo "extracting from $temp_tool_path to $installDir"
|
||||
ExpandZip "$temp_tool_path" "$installDir" $force $download_retries $retry_wait_time_seconds
|
||||
if [[ $? != 0 ]]; then
|
||||
echo "Failed to extract '$temp_tool_path' to '$installDir'." >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
function NewScriptShim {
|
||||
local shimpath=$1
|
||||
local tool_file_path=$2
|
||||
local force=${3:-false}
|
||||
|
||||
echo "Generating '$shimpath' shim"
|
||||
if [[ -f $shimpath ]]; then
|
||||
if [[ $force = false ]]; then
|
||||
echo "File '$shimpath' already exists." >&2
|
||||
return 1
|
||||
else
|
||||
rm -rf $shimpath
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ ! -f $tool_file_path ]]; then
|
||||
echo "Specified tool file path:'$tool_file_path' does not exist" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
local shim_contents=$'#!/usr/bin/env bash\n'
|
||||
shim_contents+="SHIMARGS="$'$1\n'
|
||||
shim_contents+="$tool_file_path"$' $SHIMARGS\n'
|
||||
|
||||
# Write shim file
|
||||
echo "$shim_contents" > $shimpath
|
||||
|
||||
chmod +x $shimpath
|
||||
|
||||
echo "Finished generating shim '$shimpath'"
|
||||
|
||||
return $?
|
||||
}
|
||||
|
117
eng/common/native/install-cmake.sh
Normal file
117
eng/common/native/install-cmake.sh
Normal file
|
@ -0,0 +1,117 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
source="${BASH_SOURCE[0]}"
|
||||
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
|
||||
|
||||
. $scriptroot/common-library.sh
|
||||
|
||||
base_uri=
|
||||
install_path=
|
||||
version=
|
||||
clean=false
|
||||
force=false
|
||||
download_retries=5
|
||||
retry_wait_time_seconds=30
|
||||
|
||||
while (($# > 0)); do
|
||||
lowerI="$(echo $1 | awk '{print tolower($0)}')"
|
||||
case $lowerI in
|
||||
--baseuri)
|
||||
base_uri=$2
|
||||
shift 2
|
||||
;;
|
||||
--installpath)
|
||||
install_path=$2
|
||||
shift 2
|
||||
;;
|
||||
--version)
|
||||
version=$2
|
||||
shift 2
|
||||
;;
|
||||
--clean)
|
||||
clean=true
|
||||
shift 1
|
||||
;;
|
||||
--force)
|
||||
force=true
|
||||
shift 1
|
||||
;;
|
||||
--downloadretries)
|
||||
download_retries=$2
|
||||
shift 2
|
||||
;;
|
||||
--retrywaittimeseconds)
|
||||
retry_wait_time_seconds=$2
|
||||
shift 2
|
||||
;;
|
||||
--help)
|
||||
echo "Common settings:"
|
||||
echo " --baseuri <value> Base file directory or Url wrom which to acquire tool archives"
|
||||
echo " --installpath <value> Base directory to install native tool to"
|
||||
echo " --clean Don't install the tool, just clean up the current install of the tool"
|
||||
echo " --force Force install of tools even if they previously exist"
|
||||
echo " --help Print help and exit"
|
||||
echo ""
|
||||
echo "Advanced settings:"
|
||||
echo " --downloadretries Total number of retry attempts"
|
||||
echo " --retrywaittimeseconds Wait time between retry attempts in seconds"
|
||||
echo ""
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
tool_name="cmake"
|
||||
tool_os=$(GetCurrentOS)
|
||||
tool_folder=$(echo $tool_os | awk '{print tolower($0)}')
|
||||
tool_arch="x86_64"
|
||||
tool_name_moniker="$tool_name-$version-$tool_os-$tool_arch"
|
||||
tool_install_directory="$install_path/$tool_name/$version"
|
||||
tool_file_path="$tool_install_directory/$tool_name_moniker/bin/$tool_name"
|
||||
shim_path="$install_path/$tool_name.sh"
|
||||
uri="${base_uri}/$tool_folder/cmake/$tool_name_moniker.tar.gz"
|
||||
|
||||
# Clean up tool and installers
|
||||
if [[ $clean = true ]]; then
|
||||
echo "Cleaning $tool_install_directory"
|
||||
if [[ -d $tool_install_directory ]]; then
|
||||
rm -rf $tool_install_directory
|
||||
fi
|
||||
|
||||
echo "Cleaning $shim_path"
|
||||
if [[ -f $shim_path ]]; then
|
||||
rm -rf $shim_path
|
||||
fi
|
||||
|
||||
tool_temp_path=$(GetTempPathFileName $uri)
|
||||
echo "Cleaning $tool_temp_path"
|
||||
if [[ -f $tool_temp_path ]]; then
|
||||
rm -rf $tool_temp_path
|
||||
fi
|
||||
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Install tool
|
||||
if [[ -f $tool_file_path ]] && [[ $force = false ]]; then
|
||||
echo "$tool_name ($version) already exists, skipping install"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
DownloadAndExtract $uri $tool_install_directory $force $download_retries $retry_wait_time_seconds
|
||||
|
||||
if [[ $? != 0 ]]; then
|
||||
echo "Installation failed" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Generate Shim
|
||||
# Always rewrite shims so that we are referencing the expected version
|
||||
NewScriptShim $shim_path $tool_file_path true
|
||||
|
||||
if [[ $? != 0 ]]; then
|
||||
echo "Shim generation failed" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
130
eng/common/native/install-tool.ps1
Normal file
130
eng/common/native/install-tool.ps1
Normal file
|
@ -0,0 +1,130 @@
|
|||
<#
|
||||
.SYNOPSIS
|
||||
Install native tool
|
||||
|
||||
.DESCRIPTION
|
||||
Install cmake native tool from Azure blob storage
|
||||
|
||||
.PARAMETER InstallPath
|
||||
Base directory to install native tool to
|
||||
|
||||
.PARAMETER BaseUri
|
||||
Base file directory or Url from which to acquire tool archives
|
||||
|
||||
.PARAMETER CommonLibraryDirectory
|
||||
Path to folder containing common library modules
|
||||
|
||||
.PARAMETER Force
|
||||
Force install of tools even if they previously exist
|
||||
|
||||
.PARAMETER Clean
|
||||
Don't install the tool, just clean up the current install of the tool
|
||||
|
||||
.PARAMETER DownloadRetries
|
||||
Total number of retry attempts
|
||||
|
||||
.PARAMETER RetryWaitTimeInSeconds
|
||||
Wait time between retry attempts in seconds
|
||||
|
||||
.NOTES
|
||||
Returns 0 if install succeeds, 1 otherwise
|
||||
#>
|
||||
[CmdletBinding(PositionalBinding=$false)]
|
||||
Param (
|
||||
[Parameter(Mandatory=$True)]
|
||||
[string] $ToolName,
|
||||
[Parameter(Mandatory=$True)]
|
||||
[string] $InstallPath,
|
||||
[Parameter(Mandatory=$True)]
|
||||
[string] $BaseUri,
|
||||
[Parameter(Mandatory=$True)]
|
||||
[string] $Version,
|
||||
[string] $CommonLibraryDirectory = $PSScriptRoot,
|
||||
[switch] $Force = $False,
|
||||
[switch] $Clean = $False,
|
||||
[int] $DownloadRetries = 5,
|
||||
[int] $RetryWaitTimeInSeconds = 30
|
||||
)
|
||||
|
||||
# Import common library modules
|
||||
Import-Module -Name (Join-Path $CommonLibraryDirectory "CommonLibrary.psm1")
|
||||
|
||||
try {
|
||||
# Define verbose switch if undefined
|
||||
$Verbose = $VerbosePreference -Eq "Continue"
|
||||
|
||||
$Arch = CommonLibrary\Get-MachineArchitecture
|
||||
$ToolOs = "win64"
|
||||
if($Arch -Eq "x32") {
|
||||
$ToolOs = "win32"
|
||||
}
|
||||
$ToolNameMoniker = "$ToolName-$Version-$ToolOs-$Arch"
|
||||
$ToolInstallDirectory = Join-Path $InstallPath "$ToolName\$Version\"
|
||||
$Uri = "$BaseUri/windows/$ToolName/$ToolNameMoniker.zip"
|
||||
$ShimPath = Join-Path $InstallPath "$ToolName.exe"
|
||||
|
||||
if ($Clean) {
|
||||
Write-Host "Cleaning $ToolInstallDirectory"
|
||||
if (Test-Path $ToolInstallDirectory) {
|
||||
Remove-Item $ToolInstallDirectory -Force -Recurse
|
||||
}
|
||||
Write-Host "Cleaning $ShimPath"
|
||||
if (Test-Path $ShimPath) {
|
||||
Remove-Item $ShimPath -Force
|
||||
}
|
||||
$ToolTempPath = CommonLibrary\Get-TempPathFilename -Path $Uri
|
||||
Write-Host "Cleaning $ToolTempPath"
|
||||
if (Test-Path $ToolTempPath) {
|
||||
Remove-Item $ToolTempPath -Force
|
||||
}
|
||||
exit 0
|
||||
}
|
||||
|
||||
# Install tool
|
||||
if ((Test-Path $ToolInstallDirectory) -And (-Not $Force)) {
|
||||
Write-Verbose "$ToolName ($Version) already exists, skipping install"
|
||||
}
|
||||
else {
|
||||
$InstallStatus = CommonLibrary\DownloadAndExtract -Uri $Uri `
|
||||
-InstallDirectory $ToolInstallDirectory `
|
||||
-Force:$Force `
|
||||
-DownloadRetries $DownloadRetries `
|
||||
-RetryWaitTimeInSeconds $RetryWaitTimeInSeconds `
|
||||
-Verbose:$Verbose
|
||||
|
||||
if ($InstallStatus -Eq $False) {
|
||||
Write-Error "Installation failed"
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
$ToolFilePath = Get-ChildItem $ToolInstallDirectory -Recurse -Filter "$ToolName.exe" | % { $_.FullName }
|
||||
if (@($ToolFilePath).Length -Gt 1) {
|
||||
Write-Error "There are multiple copies of $ToolName in $($ToolInstallDirectory): `n$(@($ToolFilePath | out-string))"
|
||||
exit 1
|
||||
} elseif (@($ToolFilePath).Length -Lt 1) {
|
||||
Write-Error "$ToolName was not found in $ToolFilePath."
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Generate shim
|
||||
# Always rewrite shims so that we are referencing the expected version
|
||||
$GenerateShimStatus = CommonLibrary\New-ScriptShim -ShimName $ToolName `
|
||||
-ShimDirectory $InstallPath `
|
||||
-ToolFilePath "$ToolFilePath" `
|
||||
-BaseUri $BaseUri `
|
||||
-Force:$Force `
|
||||
-Verbose:$Verbose
|
||||
|
||||
if ($GenerateShimStatus -Eq $False) {
|
||||
Write-Error "Generate shim failed"
|
||||
return 1
|
||||
}
|
||||
|
||||
exit 0
|
||||
}
|
||||
catch {
|
||||
Write-Host $_
|
||||
Write-Host $_.Exception
|
||||
exit 1
|
||||
}
|
190
eng/common/templates/job/job.yml
Normal file
190
eng/common/templates/job/job.yml
Normal file
|
@ -0,0 +1,190 @@
|
|||
parameters:
|
||||
# Job schema parameters - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job
|
||||
cancelTimeoutInMinutes: ''
|
||||
|
||||
condition: ''
|
||||
|
||||
continueOnError: false
|
||||
|
||||
container: ''
|
||||
|
||||
dependsOn: ''
|
||||
|
||||
displayName: ''
|
||||
|
||||
steps: []
|
||||
|
||||
pool: ''
|
||||
|
||||
strategy: ''
|
||||
|
||||
timeoutInMinutes: ''
|
||||
|
||||
variables: []
|
||||
|
||||
workspace: ''
|
||||
|
||||
# Job base template specific parameters
|
||||
# Optional: Enable installing Microbuild plugin
|
||||
# if 'true', these "variables" must be specified in the variables object or as part of the queue matrix
|
||||
# _TeamName - the name of your team
|
||||
# _SignType - 'test' or 'real'
|
||||
enableMicrobuild: false
|
||||
|
||||
# Optional: Include PublishBuildArtifacts task
|
||||
enablePublishBuildArtifacts: false
|
||||
|
||||
# Optional: Enable publishing to the build asset registry
|
||||
enablePublishBuildAssets: false
|
||||
|
||||
# Optional: Include PublishTestResults task
|
||||
enablePublishTestResults: false
|
||||
|
||||
# Optional: enable sending telemetry
|
||||
# if 'true', these "variables" must be specified in the variables object or as part of the queue matrix
|
||||
# _HelixBuildConfig - differentiate between Debug, Release, other
|
||||
# _HelixType - Example: build/product/
|
||||
# _HelixSource - Example: official/dotnet/arcade/$(Build.SourceBranch)
|
||||
enableTelemetry: false
|
||||
|
||||
# Optional: If specified, then automatically derive "_HelixSource" variable for telemetry
|
||||
helixRepo: ''
|
||||
|
||||
# Optional: Define the type for helix telemetry (must end in '/')
|
||||
helixType: build/product/
|
||||
|
||||
# Required: name of the job
|
||||
name: ''
|
||||
|
||||
# Optional: should run as a public build even in the internal project
|
||||
# if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects.
|
||||
runAsPublic: false
|
||||
|
||||
# Internal resources (telemetry, microbuild) can only be accessed from non-public projects,
|
||||
# and some (Microbuild) should only be applied to non-PR cases for internal builds.
|
||||
|
||||
jobs:
|
||||
- job: ${{ parameters.name }}
|
||||
|
||||
${{ if ne(parameters.cancelTimeoutInMinutes, '') }}:
|
||||
cancelTimeoutInMinutes: ${{ parameters.cancelTimeoutInMinutes }}
|
||||
|
||||
${{ if ne(parameters.condition, '') }}:
|
||||
condition: ${{ parameters.condition }}
|
||||
|
||||
${{ if ne(parameters.container, '') }}:
|
||||
container: ${{ parameters.container }}
|
||||
|
||||
${{ if ne(parameters.continueOnError, '') }}:
|
||||
continueOnError: ${{ parameters.continueOnError }}
|
||||
|
||||
${{ if ne(parameters.dependsOn, '') }}:
|
||||
dependsOn: ${{ parameters.dependsOn }}
|
||||
|
||||
${{ if ne(parameters.displayName, '') }}:
|
||||
displayName: ${{ parameters.displayName }}
|
||||
|
||||
${{ if ne(parameters.pool, '') }}:
|
||||
pool: ${{ parameters.pool }}
|
||||
|
||||
${{ if ne(parameters.strategy, '') }}:
|
||||
strategy: ${{ parameters.strategy }}
|
||||
|
||||
${{ if ne(parameters.timeoutInMinutes, '') }}:
|
||||
timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
|
||||
|
||||
variables:
|
||||
- ${{ each variable in parameters.variables }}:
|
||||
- ${{ if ne(variable.name, '') }}:
|
||||
- name: ${{ variable.name }}
|
||||
value: ${{ variable.value }}
|
||||
- ${{ if ne(variable.group, '') }}:
|
||||
- group: ${{ variable.group }}
|
||||
# Add additional variables
|
||||
- ${{ if and(ne(parameters.helixRepo, ''), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notIn(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- name: _HelixSource
|
||||
value: official/${{ parameters.helixRepo }}/$(Build.SourceBranch)
|
||||
- ${{ if and(ne(parameters.helixRepo, ''), or(ne(parameters.runAsPublic, 'false'), eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest'))) }}:
|
||||
- name: _HelixSource
|
||||
value: pr/${{ parameters.helixRepo }}/$(Build.SourceBranch)
|
||||
- name: _HelixType
|
||||
value: ${{ parameters.helixType }}
|
||||
- name: _HelixBuildConfig
|
||||
value: $(_BuildConfig)
|
||||
|
||||
${{ if ne(parameters.workspace, '') }}:
|
||||
workspace: ${{ parameters.workspace }}
|
||||
|
||||
steps:
|
||||
- ${{ if eq(parameters.enableTelemetry, 'true') }}:
|
||||
- template: /eng/common/templates/steps/telemetry-start.yml
|
||||
parameters:
|
||||
buildConfig: $(_HelixBuildConfig)
|
||||
helixSource: $(_HelixSource)
|
||||
helixType: $(_HelixType)
|
||||
runAsPublic: ${{ parameters.runAsPublic }}
|
||||
|
||||
- ${{ if eq(parameters.enableMicrobuild, 'true') }}:
|
||||
- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- task: MicroBuildSigningPlugin@2
|
||||
displayName: Install MicroBuild plugin
|
||||
inputs:
|
||||
signType: $(_SignType)
|
||||
zipSources: false
|
||||
feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json
|
||||
env:
|
||||
TeamName: $(_TeamName)
|
||||
continueOnError: ${{ parameters.continueOnError }}
|
||||
condition: and(succeeded(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT'))
|
||||
|
||||
- ${{ each step in parameters.steps }}:
|
||||
- ${{ step }}
|
||||
|
||||
- ${{ if eq(parameters.enableMicrobuild, 'true') }}:
|
||||
- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- task: MicroBuildCleanup@1
|
||||
displayName: Execute Microbuild cleanup tasks
|
||||
condition: and(always(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT'))
|
||||
continueOnError: ${{ parameters.continueOnError }}
|
||||
env:
|
||||
TeamName: $(_TeamName)
|
||||
|
||||
- ${{ if eq(parameters.enableTelemetry, 'true') }}:
|
||||
- template: /eng/common/templates/steps/telemetry-end.yml
|
||||
|
||||
- ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}:
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: Publish Logs to VSTS
|
||||
inputs:
|
||||
PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)'
|
||||
PublishLocation: Container
|
||||
ArtifactName: $(Agent.Os)_$(Agent.JobName)
|
||||
continueOnError: true
|
||||
condition: always()
|
||||
|
||||
- ${{ if eq(parameters.enablePublishTestResults, 'true') }}:
|
||||
- task: PublishTestResults@2
|
||||
displayName: Publish Test Results
|
||||
inputs:
|
||||
testResultsFormat: 'xUnit'
|
||||
testResultsFiles: '*.xml'
|
||||
searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)'
|
||||
continueOnError: true
|
||||
condition: always()
|
||||
|
||||
- ${{ if and(eq(parameters.enablePublishBuildAssets, true), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- task: CopyFiles@2
|
||||
displayName: Gather Asset Manifests
|
||||
inputs:
|
||||
SourceFolder: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/AssetManifest'
|
||||
TargetFolder: '$(Build.StagingDirectory)/AssetManifests'
|
||||
continueOnError: ${{ parameters.continueOnError }}
|
||||
condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true'))
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: Push Asset Manifests
|
||||
inputs:
|
||||
PathtoPublish: '$(Build.StagingDirectory)/AssetManifests'
|
||||
PublishLocation: Container
|
||||
ArtifactName: AssetManifests
|
||||
continueOnError: ${{ parameters.continueOnError }}
|
||||
condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true'))
|
51
eng/common/templates/job/publish-build-assets.yml
Normal file
51
eng/common/templates/job/publish-build-assets.yml
Normal file
|
@ -0,0 +1,51 @@
|
|||
parameters:
|
||||
# Optional: dependencies of the job
|
||||
dependsOn: ''
|
||||
|
||||
# Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool
|
||||
pool: {}
|
||||
|
||||
configuration: 'Debug'
|
||||
|
||||
# Optional: condition for the job to run
|
||||
condition: ''
|
||||
|
||||
# Optional: 'true' if future jobs should run even if this job fails
|
||||
continueOnError: false
|
||||
|
||||
# Optional: should run as a public build even in the internal project
|
||||
# if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects.
|
||||
runAsPublic: false
|
||||
|
||||
jobs:
|
||||
- job: Asset_Registry_Publish
|
||||
|
||||
dependsOn: ${{ parameters.dependsOn }}
|
||||
|
||||
displayName: Publish to Build Asset Registry
|
||||
|
||||
pool: ${{ parameters.pool }}
|
||||
|
||||
variables:
|
||||
- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- name: _BuildConfig
|
||||
value: ${{ parameters.configuration }}
|
||||
- group: Publish-Build-Assets
|
||||
|
||||
steps:
|
||||
- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- task: DownloadBuildArtifacts@0
|
||||
displayName: Download artifact
|
||||
inputs:
|
||||
artifactName: AssetManifests
|
||||
downloadPath: '$(Build.StagingDirectory)/Download'
|
||||
condition: ${{ parameters.condition }}
|
||||
continueOnError: ${{ parameters.continueOnError }}
|
||||
- script: eng\common\publishbuildassets.cmd
|
||||
/p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests'
|
||||
/p:BuildAssetRegistryToken=$(MaestroAccessToken)
|
||||
/p:MaestroApiEndpoint=https://maestro-prod.westus2.cloudapp.azure.com
|
||||
/p:Configuration=$(_BuildConfig)
|
||||
displayName: Publish Build Assets
|
||||
condition: ${{ parameters.condition }}
|
||||
continueOnError: ${{ parameters.continueOnError }}
|
75
eng/common/templates/jobs/jobs.yml
Normal file
75
eng/common/templates/jobs/jobs.yml
Normal file
|
@ -0,0 +1,75 @@
|
|||
parameters:
|
||||
# Optional: 'true' if failures in job.yml job should not fail the job
|
||||
continueOnError: false
|
||||
|
||||
# Optional: Enable installing Microbuild plugin
|
||||
# if 'true', these "variables" must be specified in the variables object or as part of the queue matrix
|
||||
# _TeamName - the name of your team
|
||||
# _SignType - 'test' or 'real'
|
||||
enableMicrobuild: false
|
||||
|
||||
# Optional: Include PublishBuildArtifacts task
|
||||
enablePublishBuildArtifacts: false
|
||||
|
||||
# Optional: Enable publishing to the build asset registry
|
||||
enablePublishBuildAssets: false
|
||||
|
||||
# Optional: Include PublishTestResults task
|
||||
enablePublishTestResults: false
|
||||
|
||||
# Optional: enable sending telemetry
|
||||
# if 'true', these "variables" must be specified in the variables object or as part of the queue matrix
|
||||
# _HelixBuildConfig - differentiate between Debug, Release, other
|
||||
# _HelixSource - Example: build/product/
|
||||
# _HelixType - Example: official/dotnet/arcade/$(Build.SourceBranch)
|
||||
enableTelemetry: false
|
||||
|
||||
# Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job
|
||||
jobs: []
|
||||
|
||||
# Optional: If specified, then automatically derive "_HelixSource" variable for telemetry
|
||||
helixRepo: ''
|
||||
|
||||
# Optional: Define the type for helix telemetry (must end in '/')
|
||||
helixType: build/product/
|
||||
|
||||
# Optional: Override automatically derived dependsOn value for "publish build assets" job
|
||||
publishBuildAssetsDependsOn: ''
|
||||
|
||||
# Optional: should run as a public build even in the internal project
|
||||
# if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects.
|
||||
runAsPublic: false
|
||||
|
||||
# Internal resources (telemetry, microbuild) can only be accessed from non-public projects,
|
||||
# and some (Microbuild) should only be applied to non-PR cases for internal builds.
|
||||
|
||||
jobs:
|
||||
- ${{ each job in parameters.jobs }}:
|
||||
- template: ../job/job.yml
|
||||
parameters:
|
||||
# pass along parameters
|
||||
${{ each parameter in parameters }}:
|
||||
${{ if ne(parameter.key, 'jobs') }}:
|
||||
${{ parameter.key }}: ${{ parameter.value }}
|
||||
|
||||
# pass along job properties
|
||||
${{ each property in job }}:
|
||||
${{ if ne(property.key, 'job') }}:
|
||||
${{ property.key }}: ${{ property.value }}
|
||||
|
||||
name: ${{ job.job }}
|
||||
|
||||
- ${{ if and(eq(parameters.enablePublishBuildAssets, true), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- template: ../job/publish-build-assets.yml
|
||||
parameters:
|
||||
continueOnError: ${{ parameters.continueOnError }}
|
||||
dependsOn:
|
||||
- ${{ if ne(parameters.publishBuildAssetsDependsOn, '') }}:
|
||||
- ${{ each job in parameters.publishBuildAssetsDependsOn }}:
|
||||
- ${{ job.job }}
|
||||
- ${{ if eq(parameters.publishBuildAssetsDependsOn, '') }}:
|
||||
- ${{ each job in parameters.jobs }}:
|
||||
- ${{ job.job }}
|
||||
pool:
|
||||
vmImage: vs2017-win2016
|
||||
runAsPublic: ${{ parameters.runAsPublic }}
|
|
@ -7,6 +7,14 @@ parameters:
|
|||
|
||||
# Optional: name of the phase (not specifying phase name may cause name collisions)
|
||||
name: ''
|
||||
# Optional: display name of the phase
|
||||
displayName: ''
|
||||
|
||||
# Optional: condition for the job to run
|
||||
condition: ''
|
||||
|
||||
# Optional: dependencies of the phase
|
||||
dependsOn: ''
|
||||
|
||||
# Required: A defined YAML queue
|
||||
queue: {}
|
||||
|
@ -17,6 +25,10 @@ parameters:
|
|||
# Optional: variables
|
||||
variables: {}
|
||||
|
||||
# Optional: should run as a public build even in the internal project
|
||||
# if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects.
|
||||
runAsPublic: false
|
||||
|
||||
## Telemetry variables
|
||||
|
||||
# Optional: enable sending telemetry
|
||||
|
@ -38,10 +50,20 @@ parameters:
|
|||
phases:
|
||||
- phase: ${{ parameters.name }}
|
||||
|
||||
${{ if ne(parameters.displayName, '') }}:
|
||||
displayName: ${{ parameters.displayName }}
|
||||
|
||||
${{ if ne(parameters.condition, '') }}:
|
||||
condition: ${{ parameters.condition }}
|
||||
|
||||
${{ if ne(parameters.dependsOn, '') }}:
|
||||
dependsOn: ${{ parameters.dependsOn }}
|
||||
|
||||
queue: ${{ parameters.queue }}
|
||||
|
||||
${{ if ne(parameters.variables, '') }}:
|
||||
variables: ${{ parameters.variables }}
|
||||
variables:
|
||||
${{ insert }}: ${{ parameters.variables }}
|
||||
|
||||
steps:
|
||||
- checkout: self
|
||||
|
@ -55,13 +77,15 @@ phases:
|
|||
buildConfig: $(_HelixBuildConfig)
|
||||
helixSource: $(_HelixSource)
|
||||
helixType: $(_HelixType)
|
||||
runAsPublic: ${{ parameters.runAsPublic }}
|
||||
|
||||
- ${{ if eq(parameters.enableMicrobuild, 'true') }}:
|
||||
# Internal only resource, and Microbuild signing shouldn't be applied to PRs.
|
||||
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- task: MicroBuildSigningPlugin@1
|
||||
- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- task: MicroBuildSigningPlugin@2
|
||||
displayName: Install MicroBuild plugin
|
||||
inputs:
|
||||
version: 1.1.35
|
||||
signType: $(_SignType)
|
||||
zipSources: false
|
||||
feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json
|
||||
|
@ -76,7 +100,7 @@ phases:
|
|||
|
||||
- ${{ if eq(parameters.enableMicrobuild, 'true') }}:
|
||||
# Internal only resources
|
||||
- ${{ if ne(variables['System.TeamProject'], 'public') }}:
|
||||
- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- task: MicroBuildCleanup@1
|
||||
displayName: Execute Microbuild cleanup tasks
|
||||
condition: and(always(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT'))
|
||||
|
@ -89,19 +113,19 @@ phases:
|
|||
helixSource: $(_HelixSource)
|
||||
helixType: $(_HelixType)
|
||||
|
||||
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- task: CopyFiles@2
|
||||
displayName: Gather Asset Manifests
|
||||
inputs:
|
||||
SourceFolder: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/AssetManifest'
|
||||
TargetFolder: '$(Build.StagingDirectory)/AssetManifests'
|
||||
continueOnError: false
|
||||
condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true'))
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: Push Asset Manifests
|
||||
inputs:
|
||||
PathtoPublish: '$(Build.StagingDirectory)/AssetManifests'
|
||||
PublishLocation: Container
|
||||
ArtifactName: AssetManifests
|
||||
continueOnError: false
|
||||
condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true'))
|
||||
- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- task: CopyFiles@2
|
||||
displayName: Gather Asset Manifests
|
||||
inputs:
|
||||
SourceFolder: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/AssetManifest'
|
||||
TargetFolder: '$(Build.StagingDirectory)/AssetManifests'
|
||||
continueOnError: false
|
||||
condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true'))
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: Push Asset Manifests
|
||||
inputs:
|
||||
PathtoPublish: '$(Build.StagingDirectory)/AssetManifests'
|
||||
PublishLocation: Container
|
||||
ArtifactName: AssetManifests
|
||||
continueOnError: false
|
||||
condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true'))
|
||||
|
|
|
@ -1,26 +0,0 @@
|
|||
parameters:
|
||||
dependsOn: ''
|
||||
queue: {}
|
||||
phases:
|
||||
- phase: Push to B.A.R.
|
||||
dependsOn: ${{ parameters.dependsOn }}
|
||||
queue: ${{ parameters.queue }}
|
||||
steps:
|
||||
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- task: DownloadBuildArtifacts@0
|
||||
displayName: Download artifact
|
||||
inputs:
|
||||
artifactName: AssetManifests
|
||||
downloadPath: '$(Build.StagingDirectory)/Download'
|
||||
condition: succeeded()
|
||||
- task: AzureKeyVault@1
|
||||
inputs:
|
||||
azureSubscription: 'DotNet-Engineering-Services_KeyVault'
|
||||
KeyVaultName: EngKeyVault
|
||||
SecretsFilter: 'MaestroAccessToken'
|
||||
condition: succeeded()
|
||||
- script: eng\common\publishbuildassets.cmd
|
||||
/p:ManifestZipFilePath='$(Build.StagingDirectory)/Download/AssetManifests'
|
||||
/p:BuildAssetRegistryToken=$(MaestroAccessToken)
|
||||
/p:MaestroApiEndpoint=https://maestro-int.westus2.cloudapp.azure.com
|
||||
displayName: Push Build Assets
|
46
eng/common/templates/phases/publish-build-assets.yml
Normal file
46
eng/common/templates/phases/publish-build-assets.yml
Normal file
|
@ -0,0 +1,46 @@
|
|||
parameters:
|
||||
dependsOn: ''
|
||||
queue: {}
|
||||
configuration: 'Debug'
|
||||
condition: succeeded()
|
||||
continueOnError: false
|
||||
runAsPublic: false
|
||||
phases:
|
||||
- phase: Asset_Registry_Publish
|
||||
displayName: Publish to Build Asset Registry
|
||||
dependsOn: ${{ parameters.dependsOn }}
|
||||
queue: ${{ parameters.queue }}
|
||||
variables:
|
||||
_BuildConfig: ${{ parameters.configuration }}
|
||||
steps:
|
||||
- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
|
||||
- task: DownloadBuildArtifacts@0
|
||||
displayName: Download artifact
|
||||
inputs:
|
||||
artifactName: AssetManifests
|
||||
downloadPath: '$(Build.StagingDirectory)/Download'
|
||||
condition: ${{ parameters.condition }}
|
||||
continueOnError: ${{ parameters.continueOnError }}
|
||||
- task: AzureKeyVault@1
|
||||
inputs:
|
||||
azureSubscription: 'DotNet-Engineering-Services_KeyVault'
|
||||
KeyVaultName: EngKeyVault
|
||||
SecretsFilter: 'MaestroAccessToken'
|
||||
condition: ${{ parameters.condition }}
|
||||
continueOnError: ${{ parameters.continueOnError }}
|
||||
- script: eng\common\publishbuildassets.cmd
|
||||
-configuration $(_BuildConfig)
|
||||
/p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests'
|
||||
/p:BuildAssetRegistryToken=$(MaestroAccessToken)
|
||||
/p:MaestroApiEndpoint=https://maestro-prod.westus2.cloudapp.azure.com
|
||||
displayName: Publish Build Assets
|
||||
condition: ${{ parameters.condition }}
|
||||
continueOnError: ${{ parameters.continueOnError }}
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: Publish Logs to VSTS
|
||||
inputs:
|
||||
PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)'
|
||||
PublishLocation: Container
|
||||
ArtifactName: $(Agent.Os)_Asset_Registry_Publish
|
||||
continueOnError: true
|
||||
condition: always()
|
51
eng/common/templates/steps/helix-publish.yml
Normal file
51
eng/common/templates/steps/helix-publish.yml
Normal file
|
@ -0,0 +1,51 @@
|
|||
parameters:
|
||||
HelixSource: 'pr/dotnet-github-anon-kaonashi-bot'
|
||||
HelixType: ̓'tests/default'
|
||||
HelixBuild: $(Build.BuildNumber)
|
||||
HelixTargetQueues: ''
|
||||
HelixAccessToken: ''
|
||||
HelixPreCommands: ''
|
||||
HelixPostCommands: ''
|
||||
WorkItemDirectory: ''
|
||||
WorkItemCommand: ''
|
||||
CorrelationPayloadDirectory: ''
|
||||
XUnitProjects: ''
|
||||
XUnitTargetFramework: ''
|
||||
XUnitRunnerVersion: ''
|
||||
IncludeDotNetCli: false
|
||||
DotNetCliPackageType: ''
|
||||
DotNetCliVersion: ''
|
||||
EnableXUnitReporter: false
|
||||
WaitForWorkItemCompletion: true
|
||||
condition: succeeded()
|
||||
continueOnError: false
|
||||
|
||||
steps:
|
||||
- task: DotNetCoreCLI@2
|
||||
inputs:
|
||||
command: custom
|
||||
projects: eng/common/helixpublish.proj
|
||||
custom: msbuild
|
||||
arguments: '/bl:$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/SendToHelix.binlog'
|
||||
displayName: Send job to Helix
|
||||
env:
|
||||
HelixSource: ${{ parameters.HelixSource }}
|
||||
HelixType: ${{ parameters.HelixType }}
|
||||
HelixBuild: ${{ parameters.HelixBuild }}
|
||||
HelixTargetQueues: ${{ parameters.HelixTargetQueues }}
|
||||
HelixAccessToken: ${{ parameters.HelixAccessToken }}
|
||||
HelixPreCommands: ${{ parameters.HelixPreCommands }}
|
||||
HelixPostCommands: ${{ parameters.HelixPostCommands }}
|
||||
WorkItemDirectory: ${{ parameters.WorkItemDirectory }}
|
||||
WorkItemCommand: ${{ parameters.WorkItemCommand }}
|
||||
CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }}
|
||||
XUnitProjects: ${{ parameters.XUnitProjects }}
|
||||
XUnitTargetFramework: ${{ parameters.XUnitTargetFramework }}
|
||||
XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }}
|
||||
IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }}
|
||||
DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }}
|
||||
DotNetCliVersion: ${{ parameters.DotNetCliVersion }}
|
||||
EnableXUnitReporter: ${{ parameters.EnableXUnitReporter }}
|
||||
WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }}
|
||||
condition: ${{ parameters.condition }}
|
||||
continueOnError: ${{ parameters.continueOnError }}
|
|
@ -1,7 +1,3 @@
|
|||
parameters:
|
||||
helixSource: 'undefined_defaulted_in_telemetry.yml'
|
||||
helixType: 'undefined_defaulted_in_telemetry.yml'
|
||||
|
||||
steps:
|
||||
- bash: |
|
||||
if [ "$AGENT_JOBSTATUS" = "Succeeded" ] || [ "$AGENT_JOBSTATUS" = "PartiallySucceeded" ]; then
|
||||
|
|
|
@ -2,9 +2,10 @@ parameters:
|
|||
helixSource: 'undefined_defaulted_in_telemetry.yml'
|
||||
helixType: 'undefined_defaulted_in_telemetry.yml'
|
||||
buildConfig: ''
|
||||
runAsPublic: false
|
||||
|
||||
steps:
|
||||
- ${{ if not(eq(variables['System.TeamProject'], 'public')) }}:
|
||||
- ${{ if and(eq(parameters.runAsPublic, 'false'), not(eq(variables['System.TeamProject'], 'public'))) }}:
|
||||
- task: AzureKeyVault@1
|
||||
inputs:
|
||||
azureSubscription: 'HelixProd_KeyVault'
|
||||
|
@ -30,17 +31,16 @@ steps:
|
|||
}
|
||||
JobListStuff
|
||||
|
||||
cat $jobInfo
|
||||
|
||||
# create a temporary file for curl output
|
||||
res=`mktemp`
|
||||
|
||||
accessTokenParameter=''
|
||||
if [[ ! "$HelixApiAccessToken" == "" ]]; then
|
||||
accessTokenParameter="?access_token=$HelixApiAccessToken"
|
||||
fi
|
||||
accessTokenParameter="?access_token=$HelixApiAccessToken"
|
||||
|
||||
curlResult=`
|
||||
cat $jobInfo |\
|
||||
curl --verbose --output $res --write-out "%{http_code}" \
|
||||
curl --trace - --verbose --output $res --write-out "%{http_code}" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-X POST "https://helix.dot.net/api/2018-03-14/telemetry/job$accessTokenParameter" -d @-`
|
||||
curlStatus=$?
|
||||
|
|
374
eng/common/tools.ps1
Normal file
374
eng/common/tools.ps1
Normal file
|
@ -0,0 +1,374 @@
|
|||
# Initialize variables if they aren't already defined
|
||||
|
||||
$ci = if (Test-Path variable:ci) { $ci } else { $false }
|
||||
$configuration = if (Test-Path variable:configuration) { $configuration } else { "Debug" }
|
||||
$nodereuse = if (Test-Path variable:nodereuse) { $nodereuse } else { !$ci }
|
||||
$prepareMachine = if (Test-Path variable:prepareMachine) { $prepareMachine } else { $false }
|
||||
$restore = if (Test-Path variable:restore) { $restore } else { $true }
|
||||
$verbosity = if (Test-Path variable:verbosity) { $verbosity } else { "minimal" }
|
||||
$warnaserror = if (Test-Path variable:warnaserror) { $warnaserror } else { $true }
|
||||
$msbuildEngine = if (Test-Path variable:msbuildEngine) { $msbuildEngine } else { $null }
|
||||
$useInstalledDotNetCli = if (Test-Path variable:useInstalledDotNetCli) { $useInstalledDotNetCli } else { $true }
|
||||
|
||||
set-strictmode -version 2.0
|
||||
$ErrorActionPreference = "Stop"
|
||||
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
||||
|
||||
function Create-Directory([string[]] $path) {
|
||||
if (!(Test-Path $path)) {
|
||||
New-Item -path $path -force -itemType "Directory" | Out-Null
|
||||
}
|
||||
}
|
||||
|
||||
function Unzip([string]$zipfile, [string]$outpath) {
|
||||
Add-Type -AssemblyName System.IO.Compression.FileSystem
|
||||
[System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath)
|
||||
}
|
||||
|
||||
function InitializeDotNetCli([bool]$install) {
|
||||
# Don't resolve runtime, shared framework, or SDK from other locations to ensure build determinism
|
||||
$env:DOTNET_MULTILEVEL_LOOKUP=0
|
||||
|
||||
# Disable first run since we do not need all ASP.NET packages restored.
|
||||
$env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
||||
|
||||
# Source Build uses DotNetCoreSdkDir variable
|
||||
if ($env:DotNetCoreSdkDir -ne $null) {
|
||||
$env:DOTNET_INSTALL_DIR = $env:DotNetCoreSdkDir
|
||||
}
|
||||
|
||||
# Find the first path on %PATH% that contains the dotnet.exe
|
||||
if ($useInstalledDotNetCli -and ($env:DOTNET_INSTALL_DIR -eq $null)) {
|
||||
$env:DOTNET_INSTALL_DIR = ${env:PATH}.Split(';') | where { ($_ -ne "") -and (Test-Path (Join-Path $_ "dotnet.exe")) }
|
||||
}
|
||||
|
||||
$dotnetSdkVersion = $GlobalJson.tools.dotnet
|
||||
|
||||
# Use dotnet installation specified in DOTNET_INSTALL_DIR if it contains the required SDK version,
|
||||
# otherwise install the dotnet CLI and SDK to repo local .dotnet directory to avoid potential permission issues.
|
||||
if (($env:DOTNET_INSTALL_DIR -ne $null) -and (Test-Path(Join-Path $env:DOTNET_INSTALL_DIR "sdk\$dotnetSdkVersion"))) {
|
||||
$dotnetRoot = $env:DOTNET_INSTALL_DIR
|
||||
} else {
|
||||
$dotnetRoot = Join-Path $RepoRoot ".dotnet"
|
||||
if ($env:ARCADE_DOTNET_DIR -ne $null)
|
||||
{
|
||||
$dotnetRoot = $env:ARCADE_DOTNET_DIR
|
||||
}
|
||||
$env:DOTNET_INSTALL_DIR = $dotnetRoot
|
||||
|
||||
if (-not (Test-Path(Join-Path $env:DOTNET_INSTALL_DIR "sdk\$dotnetSdkVersion"))) {
|
||||
if ($install) {
|
||||
InstallDotNetSdk $dotnetRoot $dotnetSdkVersion
|
||||
} else {
|
||||
Write-Host "Unable to find dotnet with SDK version '$dotnetSdkVersion'" -ForegroundColor Red
|
||||
ExitWithExitCode 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $dotnetRoot
|
||||
}
|
||||
|
||||
function GetDotNetInstallScript([string] $dotnetRoot) {
|
||||
$installScript = "$dotnetRoot\dotnet-install.ps1"
|
||||
if (!(Test-Path $installScript)) {
|
||||
Create-Directory $dotnetRoot
|
||||
Invoke-WebRequest "https://dot.net/v1/dotnet-install.ps1" -OutFile $installScript
|
||||
}
|
||||
|
||||
return $installScript
|
||||
}
|
||||
|
||||
function InstallDotNetSdk([string] $dotnetRoot, [string] $version) {
|
||||
$installScript = GetDotNetInstallScript $dotnetRoot
|
||||
& $installScript -Version $version -InstallDir $dotnetRoot
|
||||
if ($lastExitCode -ne 0) {
|
||||
Write-Host "Failed to install dotnet cli (exit code '$lastExitCode')." -ForegroundColor Red
|
||||
ExitWithExitCode $lastExitCode
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# Locates Visual Studio MSBuild installation.
|
||||
# The preference order for MSBuild to use is as follows:
|
||||
#
|
||||
# 1. MSBuild from an active VS command prompt
|
||||
# 2. MSBuild from a compatible VS installation
|
||||
# 3. MSBuild from the xcopy tool package
|
||||
#
|
||||
# Returns full path to msbuild.exe.
|
||||
# Throws on failure.
|
||||
#
|
||||
function InitializeVisualStudioMSBuild {
|
||||
$vsMinVersionStr = if (!$GlobalJson.tools.vs.version) { $GlobalJson.tools.vs.version } else { "15.9" }
|
||||
$vsMinVersion = [Version]::new($vsMinVersionStr)
|
||||
|
||||
# Try msbuild command available in the environment.
|
||||
if ($env:VSINSTALLDIR -ne $null) {
|
||||
$msbuildCmd = Get-Command "msbuild.exe" -ErrorAction SilentlyContinue
|
||||
if ($msbuildCmd -ne $null) {
|
||||
if ($msbuildCmd.Version -ge $vsMinVersion) {
|
||||
return $msbuildCmd.Path
|
||||
}
|
||||
|
||||
# Report error - the developer environment is initialized with incompatible VS version.
|
||||
throw "Developer Command Prompt for VS $($env:VisualStudioVersion) is not recent enough. Please upgrade to $vsMinVersionStr or build from a plain CMD window"
|
||||
}
|
||||
}
|
||||
|
||||
# Locate Visual Studio installation or download x-copy msbuild.
|
||||
$vsInfo = LocateVisualStudio
|
||||
if ($vsInfo -ne $null) {
|
||||
$vsInstallDir = $vsInfo.installationPath
|
||||
$vsMajorVersion = $vsInfo.installationVersion.Split('.')[0]
|
||||
|
||||
InitializeVisualStudioEnvironmentVariables $vsInstallDir $vsMajorVersion
|
||||
} else {
|
||||
|
||||
if (Get-Member -InputObject $GlobalJson.tools -Name "xcopy-msbuild") {
|
||||
$xcopyMSBuildVersion = $GlobalJson.tools.'xcopy-msbuild'
|
||||
$vsMajorVersion = $xcopyMSBuildVersion.Split('.')[0]
|
||||
} else {
|
||||
$vsMajorVersion = $vsMinVersion.Major
|
||||
$xcopyMSBuildVersion = "$vsMajorVersion.$($vsMinVersion.Minor).0-alpha"
|
||||
}
|
||||
|
||||
$vsInstallDir = InstallXCopyMSBuild $xcopyMSBuildVersion
|
||||
}
|
||||
|
||||
$msbuildVersionDir = if ([int]$vsMajorVersion -lt 16) { "$vsMajorVersion.0" } else { "Current" }
|
||||
return Join-Path $vsInstallDir "MSBuild\$msbuildVersionDir\Bin\msbuild.exe"
|
||||
}
|
||||
|
||||
function InitializeVisualStudioEnvironmentVariables([string] $vsInstallDir, [string] $vsMajorVersion) {
|
||||
$env:VSINSTALLDIR = $vsInstallDir
|
||||
Set-Item "env:VS$($vsMajorVersion)0COMNTOOLS" (Join-Path $vsInstallDir "Common7\Tools\")
|
||||
|
||||
$vsSdkInstallDir = Join-Path $vsInstallDir "VSSDK\"
|
||||
if (Test-Path $vsSdkInstallDir) {
|
||||
Set-Item "env:VSSDK$($vsMajorVersion)0Install" $vsSdkInstallDir
|
||||
$env:VSSDKInstall = $vsSdkInstallDir
|
||||
}
|
||||
}
|
||||
|
||||
function InstallXCopyMSBuild([string] $packageVersion) {
|
||||
$packageName = "RoslynTools.MSBuild"
|
||||
$packageDir = Join-Path $ToolsDir "msbuild\$packageVersion"
|
||||
$packagePath = Join-Path $packageDir "$packageName.$packageVersion.nupkg"
|
||||
|
||||
if (!(Test-Path $packageDir)) {
|
||||
Create-Directory $packageDir
|
||||
Write-Host "Downloading $packageName $packageVersion"
|
||||
Invoke-WebRequest "https://dotnet.myget.org/F/roslyn-tools/api/v2/package/$packageName/$packageVersion/" -OutFile $packagePath
|
||||
Unzip $packagePath $packageDir
|
||||
}
|
||||
|
||||
return Join-Path $packageDir "tools"
|
||||
}
|
||||
|
||||
#
|
||||
# Locates Visual Studio instance that meets the minimal requirements specified by tools.vs object in global.json.
|
||||
#
|
||||
# The following properties of tools.vs are recognized:
|
||||
# "version": "{major}.{minor}"
|
||||
# Two part minimal VS version, e.g. "15.9", "16.0", etc.
|
||||
# "components": ["componentId1", "componentId2", ...]
|
||||
# Array of ids of workload components that must be available in the VS instance.
|
||||
# See e.g. https://docs.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-enterprise?view=vs-2017
|
||||
#
|
||||
# Returns JSON describing the located VS instance (same format as returned by vswhere),
|
||||
# or $null if no instance meeting the requirements is found on the machine.
|
||||
#
|
||||
function LocateVisualStudio {
|
||||
$vswhereVersion = Get-Member -InputObject $GlobalJson.tools -Name "vswhere"
|
||||
if ($vsWhereVersion -eq $null) {
|
||||
$vswhereVersion = "2.5.2"
|
||||
}
|
||||
|
||||
$vsWhereDir = Join-Path $ToolsDir "vswhere\$vswhereVersion"
|
||||
$vsWhereExe = Join-Path $vsWhereDir "vswhere.exe"
|
||||
|
||||
if (!(Test-Path $vsWhereExe)) {
|
||||
Create-Directory $vsWhereDir
|
||||
Write-Host "Downloading vswhere"
|
||||
Invoke-WebRequest "https://github.com/Microsoft/vswhere/releases/download/$vswhereVersion/vswhere.exe" -OutFile $vswhereExe
|
||||
}
|
||||
|
||||
$vs = $GlobalJson.tools.vs
|
||||
$args = @("-latest", "-prerelease", "-format", "json", "-requires", "Microsoft.Component.MSBuild")
|
||||
|
||||
if (Get-Member -InputObject $vs -Name "version") {
|
||||
$args += "-version"
|
||||
$args += $vs.version
|
||||
}
|
||||
|
||||
if (Get-Member -InputObject $vs -Name "components") {
|
||||
foreach ($component in $vs.components) {
|
||||
$args += "-requires"
|
||||
$args += $component
|
||||
}
|
||||
}
|
||||
|
||||
$vsInfo =& $vsWhereExe $args | ConvertFrom-Json
|
||||
|
||||
if ($lastExitCode -ne 0) {
|
||||
return $null
|
||||
}
|
||||
|
||||
# use first matching instance
|
||||
return $vsInfo[0]
|
||||
}
|
||||
|
||||
function ConfigureTools {
|
||||
# Include custom tools configuration
|
||||
$script = Join-Path $EngRoot "configure-toolset.ps1"
|
||||
|
||||
if (Test-Path $script) {
|
||||
. $script
|
||||
}
|
||||
}
|
||||
|
||||
function InitializeTools() {
|
||||
ConfigureTools
|
||||
|
||||
$tools = $GlobalJson.tools
|
||||
|
||||
# Initialize dotnet cli if listed in 'tools'
|
||||
$dotnetRoot = $null
|
||||
if (Get-Member -InputObject $tools -Name "dotnet") {
|
||||
$dotnetRoot = InitializeDotNetCli -install:$restore
|
||||
}
|
||||
|
||||
if (-not $msbuildEngine) {
|
||||
# Presence of tools.vs indicates the repo needs to build using VS msbuild on Windows.
|
||||
if (Get-Member -InputObject $tools -Name "vs") {
|
||||
$msbuildEngine = "vs"
|
||||
} elseif ($dotnetRoot -ne $null) {
|
||||
$msbuildEngine = "dotnet"
|
||||
} else {
|
||||
Write-Host "-msbuildEngine must be specified, or /global.json must specify 'tools.dotnet' or 'tools.vs'." -ForegroundColor Red
|
||||
ExitWithExitCode 1
|
||||
}
|
||||
}
|
||||
|
||||
if ($msbuildEngine -eq "dotnet") {
|
||||
if (!$dotnetRoot) {
|
||||
Write-Host "/global.json must specify 'tools.dotnet'." -ForegroundColor Red
|
||||
ExitWithExitCode 1
|
||||
}
|
||||
|
||||
$script:buildDriver = Join-Path $dotnetRoot "dotnet.exe"
|
||||
$script:buildArgs = "msbuild"
|
||||
} elseif ($msbuildEngine -eq "vs") {
|
||||
try {
|
||||
$script:buildDriver = InitializeVisualStudioMSBuild
|
||||
$script:buildArgs = ""
|
||||
} catch {
|
||||
Write-Host $_ -ForegroundColor Red
|
||||
ExitWithExitCode 1
|
||||
}
|
||||
} else {
|
||||
Write-Host "Unexpected value of -msbuildEngine: '$msbuildEngine'." -ForegroundColor Red
|
||||
ExitWithExitCode 1
|
||||
}
|
||||
|
||||
InitializeToolSet $script:buildDriver $script:buildArgs
|
||||
InitializeCustomToolset
|
||||
}
|
||||
|
||||
function InitializeToolset([string] $buildDriver, [string]$buildArgs) {
|
||||
$toolsetVersion = $GlobalJson.'msbuild-sdks'.'Microsoft.DotNet.Arcade.Sdk'
|
||||
$toolsetLocationFile = Join-Path $ToolsetDir "$toolsetVersion.txt"
|
||||
|
||||
if (Test-Path $toolsetLocationFile) {
|
||||
$path = Get-Content $toolsetLocationFile -TotalCount 1
|
||||
if (Test-Path $path) {
|
||||
$script:ToolsetBuildProj = $path
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if (-not $restore) {
|
||||
Write-Host "Toolset version $toolsetVersion has not been restored."
|
||||
ExitWithExitCode 1
|
||||
}
|
||||
|
||||
$ToolsetRestoreLog = Join-Path $LogDir "ToolsetRestore.binlog"
|
||||
$proj = Join-Path $ToolsetDir "restore.proj"
|
||||
|
||||
'<Project Sdk="Microsoft.DotNet.Arcade.Sdk"/>' | Set-Content $proj
|
||||
MSBuild $proj /t:__WriteToolsetLocation /clp:None /bl:$ToolsetRestoreLog /p:__ToolsetLocationOutputFile=$toolsetLocationFile
|
||||
|
||||
if ($lastExitCode -ne 0) {
|
||||
Write-Host "Failed to restore toolset (exit code '$lastExitCode'). See log: $ToolsetRestoreLog" -ForegroundColor Red
|
||||
ExitWithExitCode $lastExitCode
|
||||
}
|
||||
|
||||
$path = Get-Content $toolsetLocationFile -TotalCount 1
|
||||
if (!(Test-Path $path)) {
|
||||
throw "Invalid toolset path: $path"
|
||||
}
|
||||
|
||||
$script:ToolsetBuildProj = $path
|
||||
}
|
||||
|
||||
function InitializeCustomToolset {
|
||||
if (-not $restore) {
|
||||
return
|
||||
}
|
||||
|
||||
$script = Join-Path $EngRoot "restore-toolset.ps1"
|
||||
|
||||
if (Test-Path $script) {
|
||||
. $script
|
||||
}
|
||||
}
|
||||
|
||||
function ExitWithExitCode([int] $exitCode) {
|
||||
if ($ci -and $prepareMachine) {
|
||||
Stop-Processes
|
||||
}
|
||||
exit $exitCode
|
||||
}
|
||||
|
||||
function Stop-Processes() {
|
||||
Write-Host "Killing running build processes..."
|
||||
Get-Process -Name "msbuild" -ErrorAction SilentlyContinue | Stop-Process
|
||||
Get-Process -Name "dotnet" -ErrorAction SilentlyContinue | Stop-Process
|
||||
Get-Process -Name "vbcscompiler" -ErrorAction SilentlyContinue | Stop-Process
|
||||
}
|
||||
|
||||
function MsBuild() {
|
||||
$warnaserrorSwitch = if ($warnaserror) { "/warnaserror" } else { "" }
|
||||
& $buildDriver $buildArgs $warnaserrorSwitch /m /nologo /clp:Summary /v:$verbosity /nr:$nodereuse $args
|
||||
}
|
||||
|
||||
$RepoRoot = Resolve-Path (Join-Path $PSScriptRoot "..\..")
|
||||
$EngRoot = Resolve-Path (Join-Path $PSScriptRoot "..")
|
||||
$ArtifactsDir = Join-Path $RepoRoot "artifacts"
|
||||
if ($env:ARCADE_ARTIFACTS_DIR -ne $null)
|
||||
{
|
||||
$ArtifactsDir = [System.IO.Path]::GetFullPath($env:ARCADE_ARTIFACTS_DIR) + "\"
|
||||
$env:ArtifactsDir = $ArtifactsDir
|
||||
}
|
||||
$ToolsetDir = Join-Path $ArtifactsDir "toolset"
|
||||
$ToolsDir = Join-Path $RepoRoot ".tools"
|
||||
$LogDir = Join-Path (Join-Path $ArtifactsDir "log") $configuration
|
||||
$TempDir = Join-Path (Join-Path $ArtifactsDir "tmp") $configuration
|
||||
$GlobalJson = Get-Content -Raw -Path (Join-Path $RepoRoot "global.json") | ConvertFrom-Json
|
||||
|
||||
if ($env:NUGET_PACKAGES -eq $null) {
|
||||
# Use local cache on CI to ensure deterministic build,
|
||||
# use global cache in dev builds to avoid cost of downloading packages.
|
||||
$env:NUGET_PACKAGES = if ($ci) { Join-Path $RepoRoot ".packages" }
|
||||
else { Join-Path $env:UserProfile ".nuget\packages" }
|
||||
}
|
||||
|
||||
Create-Directory $ToolsetDir
|
||||
Create-Directory $LogDir
|
||||
|
||||
if ($ci) {
|
||||
Create-Directory $TempDir
|
||||
$env:TEMP = $TempDir
|
||||
$env:TMP = $TempDir
|
||||
}
|
267
eng/common/tools.sh
Normal file
267
eng/common/tools.sh
Normal file
|
@ -0,0 +1,267 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Stop script if unbound variable found (use ${var:-} if intentional)
|
||||
set -u
|
||||
|
||||
ci=${ci:-false}
|
||||
configuration=${configuration:-'Debug'}
|
||||
nodereuse=${nodereuse:-true}
|
||||
prepare_machine=${prepare_machine:-false}
|
||||
restore=${restore:-true}
|
||||
verbosity=${verbosity:-'minimal'}
|
||||
warnaserror=${warnaserror:-true}
|
||||
useInstalledDotNetCli=${useInstalledDotNetCli:-true}
|
||||
|
||||
repo_root="$scriptroot/../.."
|
||||
eng_root="$scriptroot/.."
|
||||
artifacts_dir="$repo_root/artifacts"
|
||||
if [[ -n "${ARCADE_ARTIFACTS_DIR:-}" ]]; then
|
||||
artifacts_dir="$ARCADE_ARTIFACTS_DIR"
|
||||
export ArtifactsDir="$artifacts_dir"
|
||||
fi
|
||||
|
||||
toolset_dir="$artifacts_dir/toolset"
|
||||
log_dir="$artifacts_dir/log/$configuration"
|
||||
temp_dir="$artifacts_dir/tmp/$configuration"
|
||||
|
||||
global_json_file="$repo_root/global.json"
|
||||
build_driver=""
|
||||
toolset_build_proj=""
|
||||
|
||||
function ResolvePath {
|
||||
local path=$1
|
||||
|
||||
# resolve $path until the file is no longer a symlink
|
||||
while [[ -h $path ]]; do
|
||||
local dir="$( cd -P "$( dirname "$path" )" && pwd )"
|
||||
path="$(readlink "$path")"
|
||||
|
||||
# if $path was a relative symlink, we need to resolve it relative to the path where the
|
||||
# symlink file was located
|
||||
[[ $path != /* ]] && path="$dir/$path"
|
||||
done
|
||||
|
||||
# return value
|
||||
_ResolvePath="$path"
|
||||
}
|
||||
|
||||
# ReadVersionFromJson [json key]
|
||||
function ReadGlobalVersion {
|
||||
local key=$1
|
||||
|
||||
local line=`grep -m 1 "$key" "$global_json_file"`
|
||||
local pattern="\"$key\" *: *\"(.*)\""
|
||||
|
||||
if [[ ! $line =~ $pattern ]]; then
|
||||
echo "Error: Cannot find \"$key\" in $global_json_file" >&2
|
||||
ExitWithExitCode 1
|
||||
fi
|
||||
|
||||
# return value
|
||||
_ReadGlobalVersion=${BASH_REMATCH[1]}
|
||||
}
|
||||
|
||||
function InitializeDotNetCli {
|
||||
local install=$1
|
||||
|
||||
# Don't resolve runtime, shared framework, or SDK from other locations to ensure build determinism
|
||||
export DOTNET_MULTILEVEL_LOOKUP=0
|
||||
|
||||
# Disable first run since we want to control all package sources
|
||||
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
||||
|
||||
# Source Build uses DotNetCoreSdkDir variable
|
||||
if [[ -n "${DotNetCoreSdkDir:-}" ]]; then
|
||||
export DOTNET_INSTALL_DIR="$DotNetCoreSdkDir"
|
||||
fi
|
||||
|
||||
# Find the first path on $PATH that contains the dotnet.exe
|
||||
if [[ "$useInstalledDotNetCli" == true && -z "${DOTNET_INSTALL_DIR:-}" ]]; then
|
||||
local dotnet_path=`command -v dotnet`
|
||||
if [[ -n "$dotnet_path" ]]; then
|
||||
ResolvePath "$dotnet_path"
|
||||
export DOTNET_INSTALL_DIR=`dirname "$_ResolvePath"`
|
||||
fi
|
||||
fi
|
||||
|
||||
ReadGlobalVersion "dotnet"
|
||||
local dotnet_sdk_version=$_ReadGlobalVersion
|
||||
local dotnet_root=""
|
||||
|
||||
# Use dotnet installation specified in DOTNET_INSTALL_DIR if it contains the required SDK version,
|
||||
# otherwise install the dotnet CLI and SDK to repo local .dotnet directory to avoid potential permission issues.
|
||||
if [[ -n "${DOTNET_INSTALL_DIR:-}" && -d "$DOTNET_INSTALL_DIR/sdk/$dotnet_sdk_version" ]]; then
|
||||
dotnet_root="$DOTNET_INSTALL_DIR"
|
||||
else
|
||||
dotnet_root="$repo_root/.dotnet"
|
||||
if [[ -n "${ARCADE_DOTNET_DIR:-}" ]]; then
|
||||
dotnet_root="$ARCADE_DOTNET_DIR"
|
||||
fi
|
||||
|
||||
export DOTNET_INSTALL_DIR="$dotnet_root"
|
||||
|
||||
if [[ ! -d "$DOTNET_INSTALL_DIR/sdk/$dotnet_sdk_version" ]]; then
|
||||
if [[ "$install" == true ]]; then
|
||||
InstallDotNetSdk "$dotnet_root" "$dotnet_sdk_version"
|
||||
else
|
||||
echo "Unable to find dotnet with SDK version '$dotnet_sdk_version'" >&2
|
||||
ExitWithExitCode 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# return value
|
||||
_InitializeDotNetCli="$dotnet_root"
|
||||
}
|
||||
|
||||
function InstallDotNetSdk {
|
||||
local root=$1
|
||||
local version=$2
|
||||
|
||||
GetDotNetInstallScript "$root"
|
||||
local install_script=$_GetDotNetInstallScript
|
||||
|
||||
bash "$install_script" --version $version --install-dir "$root"
|
||||
local lastexitcode=$?
|
||||
|
||||
if [[ $lastexitcode != 0 ]]; then
|
||||
echo "Failed to install dotnet SDK (exit code '$lastexitcode')." >&2
|
||||
ExitWithExitCode $lastexitcode
|
||||
fi
|
||||
}
|
||||
|
||||
function GetDotNetInstallScript {
|
||||
local root=$1
|
||||
local install_script="$root/dotnet-install.sh"
|
||||
local install_script_url="https://dot.net/v1/dotnet-install.sh"
|
||||
|
||||
if [[ ! -a "$install_script" ]]; then
|
||||
mkdir -p "$root"
|
||||
|
||||
echo "Downloading '$install_script_url'"
|
||||
|
||||
# Use curl if available, otherwise use wget
|
||||
if command -v curl > /dev/null; then
|
||||
curl "$install_script_url" -sSL --retry 10 --create-dirs -o "$install_script"
|
||||
else
|
||||
wget -q -O "$install_script" "$install_script_url"
|
||||
fi
|
||||
fi
|
||||
|
||||
# return value
|
||||
_GetDotNetInstallScript="$install_script"
|
||||
}
|
||||
|
||||
function InitializeToolset {
|
||||
ReadGlobalVersion "Microsoft.DotNet.Arcade.Sdk"
|
||||
|
||||
local toolset_version=$_ReadGlobalVersion
|
||||
local toolset_location_file="$toolset_dir/$toolset_version.txt"
|
||||
|
||||
if [[ -a "$toolset_location_file" ]]; then
|
||||
local path=`cat "$toolset_location_file"`
|
||||
if [[ -a "$path" ]]; then
|
||||
toolset_build_proj="$path"
|
||||
return
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$restore" != true ]]; then
|
||||
echo "Toolset version $toolsetVersion has not been restored." >&2
|
||||
ExitWithExitCode 2
|
||||
fi
|
||||
|
||||
local toolset_restore_log="$log_dir/ToolsetRestore.binlog"
|
||||
local proj="$toolset_dir/restore.proj"
|
||||
|
||||
echo '<Project Sdk="Microsoft.DotNet.Arcade.Sdk"/>' > "$proj"
|
||||
|
||||
MSBuild "$proj" /t:__WriteToolsetLocation /clp:None /bl:"$toolset_restore_log" /p:__ToolsetLocationOutputFile="$toolset_location_file"
|
||||
local lastexitcode=$?
|
||||
|
||||
if [[ $lastexitcode != 0 ]]; then
|
||||
echo "Failed to restore toolset (exit code '$lastexitcode'). See log: $toolset_restore_log" >&2
|
||||
ExitWithExitCode $lastexitcode
|
||||
fi
|
||||
|
||||
toolset_build_proj=`cat "$toolset_location_file"`
|
||||
|
||||
if [[ ! -a "$toolset_build_proj" ]]; then
|
||||
echo "Invalid toolset path: $toolset_build_proj" >&2
|
||||
ExitWithExitCode 3
|
||||
fi
|
||||
}
|
||||
|
||||
function InitializeCustomToolset {
|
||||
local script="$eng_root/restore-toolset.sh"
|
||||
|
||||
if [[ -a "$script" ]]; then
|
||||
. "$script"
|
||||
fi
|
||||
}
|
||||
|
||||
function ConfigureTools {
|
||||
local script="$eng_root/configure-toolset.sh"
|
||||
|
||||
if [[ -a "$script" ]]; then
|
||||
. "$script"
|
||||
fi
|
||||
}
|
||||
|
||||
function InitializeTools {
|
||||
ConfigureTools
|
||||
|
||||
InitializeDotNetCli $restore
|
||||
build_driver="$_InitializeDotNetCli/dotnet"
|
||||
|
||||
InitializeToolset
|
||||
InitializeCustomToolset
|
||||
}
|
||||
|
||||
function ExitWithExitCode {
|
||||
if [[ "$ci" == true && "$prepare_machine" == true ]]; then
|
||||
StopProcesses
|
||||
fi
|
||||
exit $1
|
||||
}
|
||||
|
||||
function StopProcesses {
|
||||
echo "Killing running build processes..."
|
||||
pkill -9 "dotnet"
|
||||
pkill -9 "vbcscompiler"
|
||||
return 0
|
||||
}
|
||||
|
||||
function MSBuild {
|
||||
local warnaserror_switch=""
|
||||
if [[ $warnaserror == true ]]; then
|
||||
warnaserror_switch="/warnaserror"
|
||||
fi
|
||||
|
||||
"$build_driver" msbuild /m /nologo /clp:Summary /v:$verbosity /nr:$nodereuse $warnaserror_switch "$@"
|
||||
|
||||
return $?
|
||||
}
|
||||
|
||||
# HOME may not be defined in some scenarios, but it is required by NuGet
|
||||
if [[ -z $HOME ]]; then
|
||||
export HOME="$repo_root/artifacts/.home/"
|
||||
mkdir -p "$HOME"
|
||||
fi
|
||||
|
||||
if [[ -z ${NUGET_PACKAGES:-} ]]; then
|
||||
if [[ $ci == true ]]; then
|
||||
export NUGET_PACKAGES="$repo_root/.packages"
|
||||
else
|
||||
export NUGET_PACKAGES="$HOME/.nuget/packages"
|
||||
fi
|
||||
fi
|
||||
|
||||
mkdir -p "$toolset_dir"
|
||||
mkdir -p "$log_dir"
|
||||
|
||||
if [[ $ci == true ]]; then
|
||||
mkdir -p "$temp_dir"
|
||||
export TEMP="$temp_dir"
|
||||
export TMP="$temp_dir"
|
||||
fi
|
|
@ -10,11 +10,7 @@ for %%i in (%~dp0..\) DO (
|
|||
title Core SDK Test (%CLI_REPO_ROOT%)
|
||||
|
||||
REM Add Stage 2 CLI to path
|
||||
set PATH=%CLI_REPO_ROOT%bin\2\win-x64\dotnet;%PATH%
|
||||
set PATH=%CLI_REPO_ROOT%artifacts\bin\redist\Debug\dotnet;%PATH%
|
||||
|
||||
set DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
||||
set DOTNET_MULTILEVEL_LOOKUP=0
|
||||
set NUGET_PACKAGES=%CLI_REPO_ROOT%.nuget\packages
|
||||
set TEST_PACKAGES=%CLI_REPO_ROOT%bin\2\win-x64\test\packages
|
||||
set TEST_ARTIFACTS=%CLI_REPO_ROOT%bin\2\win-x64\test\artifacts
|
||||
set PreviousStageProps=%CLI_REPO_ROOT%bin\2\win-x64\PreviousStage.props
|
17
scripts/cli-test-env.sh → eng/core-sdk-test-env.sh
Executable file → Normal file
17
scripts/cli-test-env.sh → eng/core-sdk-test-env.sh
Executable file → Normal file
|
@ -13,22 +13,9 @@ done
|
|||
|
||||
REPO_ROOT="$( cd -P "$( dirname "$SOURCE" )/../" && pwd )"
|
||||
|
||||
uname=$(uname)
|
||||
if [ "$(uname)" = "Darwin" ]
|
||||
then
|
||||
RID=osx-x64
|
||||
else
|
||||
RID=linux-x64
|
||||
fi
|
||||
|
||||
STAGE2_DIR=$REPO_ROOT/bin/2/$RID/dotnet
|
||||
STAGE2_DIR=$REPO_ROOT/artifacts/bin/redist/Debug/dotnet
|
||||
export PATH=$STAGE2_DIR:$PATH
|
||||
|
||||
|
||||
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
||||
export DOTNET_MULTILEVEL_LOOKUP=0
|
||||
|
||||
export NUGET_PACKAGES=$REPO_ROOT/.nuget/packages
|
||||
export TEST_PACKAGES=$REPO_ROOT/bin/2/$RID/test/packages
|
||||
export TEST_ARTIFACTS=$REPO_ROOT/bin/2/$RID/test/artifacts
|
||||
export PreviousStageProps=$REPO_ROOT/bin/2/$RID/PreviousStage.props
|
||||
export DOTNET_MULTILEVEL_LOOKUP=0
|
61
eng/dockerrun.ps1
Normal file
61
eng/dockerrun.ps1
Normal file
|
@ -0,0 +1,61 @@
|
|||
[CmdletBinding(PositionalBinding=$false)]
|
||||
Param(
|
||||
[bool] $noninteractive = $false,
|
||||
[string] $dockerImageName,
|
||||
[string] $dockerContainerTag = "dotnetcli-build",
|
||||
[string] $dockerContainerName = "dotnetcli-build-container",
|
||||
[Parameter(ValueFromRemainingArguments=$true)][String[]]$additionalArgs
|
||||
)
|
||||
|
||||
# sample command line: .\eng\dockerrun.ps1 -dockerImageName ubuntu.18.04 /p:DisableSourceLink=true --test --pack --publish
|
||||
|
||||
Write-Host "Docker image name: $dockerImageName"
|
||||
Write-Host "Additional args: $additionalArgs"
|
||||
|
||||
. $PSScriptRoot\common\tools.ps1
|
||||
|
||||
# docker build -f old\scripts\docker\rhel\Dockerfile --build-arg USER_ID=1000 -t redhat .
|
||||
# docker run -it -v c:\git\core-sdk-arcade:/opt/code redhat bash
|
||||
|
||||
$dockerFile = Resolve-Path (Join-Path $RepoRoot "eng\docker\$dockerImageName")
|
||||
|
||||
docker build --build-arg USER_ID=1000 -t "$dockerContainerTag" $dockerFile
|
||||
|
||||
$interactiveFlag = "-i"
|
||||
if ($noninteractive)
|
||||
{
|
||||
$interactiveFlag = ""
|
||||
}
|
||||
|
||||
` # -e DOTNET_INSTALL_DIR=/opt/code/artifacts/docker/$dockerImageName/.dotnet `
|
||||
|
||||
docker run $interactiveFlag -t --rm --sig-proxy=true `
|
||||
--name "$dockerContainerName" `
|
||||
-v "${RepoRoot}:/opt/code" `
|
||||
-e DOTNET_CORESDK_IGNORE_TAR_EXIT_CODE=1 `
|
||||
-e CHANNEL `
|
||||
-e DOTNET_BUILD_SKIP_CROSSGEN `
|
||||
-e PUBLISH_TO_AZURE_BLOB `
|
||||
-e NUGET_FEED_URL `
|
||||
-e NUGET_API_KEY `
|
||||
-e ARTIFACT_STORAGE_ACCOUNT `
|
||||
-e ARTIFACT_STORAGE_CONTAINER `
|
||||
-e CHECKSUM_STORAGE_ACCOUNT `
|
||||
-e CHECKSUM_STORAGE_CONTAINER `
|
||||
-e BLOBFEED_STORAGE_CONTAINER `
|
||||
-e CLIBUILD_SKIP_TESTS `
|
||||
-e COMMITCOUNT `
|
||||
-e DROPSUFFIX `
|
||||
-e RELEASESUFFIX `
|
||||
-e COREFXAZURECONTAINER `
|
||||
-e AZUREACCOUNTNAME `
|
||||
-e RELEASETOOLSGITURL `
|
||||
-e CORESETUPBLOBROOTURL `
|
||||
-e PB_ASSETROOTURL `
|
||||
-e PB_PACKAGEVERSIONPROPSURL `
|
||||
-e PB_PUBLISHBLOBFEEDURL `
|
||||
-e EXTERNALRESTORESOURCES `
|
||||
-e ARCADE_DOTNET_DIR="/opt/code/artifacts/docker/${dockerImageName}/.dotnet" `
|
||||
-e ARCADE_ARTIFACTS_DIR="/opt/code/artifacts/docker/${dockerImageName}/" `
|
||||
$dockerContainerTag `
|
||||
/opt/code/run-build.sh @additionalArgs
|
|
@ -38,7 +38,7 @@ while [[ $# > 0 ]]; do
|
|||
echo ""
|
||||
echo "Options:"
|
||||
echo " <Dockerfile> The path to the Dockerfile to use to create the build container"
|
||||
echo " <ImageName> The name of an existing Dockerfile folder under scripts/docker to use as the Dockerfile"
|
||||
echo " <ImageName> The name of an existing Dockerfile folder under eng/docker to use as the Dockerfile"
|
||||
echo " <Command> The command to run once inside the container (/opt/code is mapped to the repo root; defaults to nothing, which runs the default shell)"
|
||||
exit 0
|
||||
;;
|
||||
|
@ -54,44 +54,44 @@ if [ -z "$DOCKERFILE" ]; then
|
|||
if [ -z "$DOCKER_IMAGENAME" ]; then
|
||||
if [ "$(uname)" == "Darwin" ]; then
|
||||
echo "Defaulting to 'ubuntu' image for Darwin"
|
||||
export DOCKERFILE=scripts/docker/ubuntu
|
||||
export DOCKERFILE=eng/docker/ubuntu
|
||||
elif [ "$(cat /etc/*-release | grep -cim1 ubuntu)" -eq 1 ]; then
|
||||
echo "Detected current OS as Ubuntu, determining ubuntu version to use..."
|
||||
if [ "$(cat /etc/*-release | grep -cim1 16.04)" -eq 1 ]; then
|
||||
echo "using 'ubuntu.16.04' image"
|
||||
export DOCKERFILE=scripts/docker/ubuntu.16.04
|
||||
export DOCKERFILE=eng/docker/ubuntu.16.04
|
||||
else
|
||||
echo "using 'ubuntu' image"
|
||||
export DOCKERFILE=scripts/docker/ubuntu
|
||||
export DOCKERFILE=eng/docker/ubuntu
|
||||
fi
|
||||
elif [ "$(cat /etc/*-release | grep -cim1 centos)" -eq 1 ]; then
|
||||
echo "Detected current OS as CentOS, using 'centos' image"
|
||||
export DOCKERFILE=scripts/docker/centos
|
||||
export DOCKERFILE=eng/docker/centos
|
||||
elif [ "$(cat /etc/*-release | grep -cim1 rhel)" -eq 1 ]; then
|
||||
echo "Detected current OS as rhel, using 'rhel' image"
|
||||
export DOCKERFILE=scripts/docker/rhel
|
||||
export DOCKERFILE=eng/docker/rhel
|
||||
elif [ "$(cat /etc/*-release | grep -cim1 debian)" -eq 1 ]; then
|
||||
echo "Detected current OS as Debian, using 'debian' image"
|
||||
export DOCKERFILE=scripts/docker/debian
|
||||
export DOCKERFILE=eng/docker/debian
|
||||
elif [ "$(cat /etc/*-release | grep -cim1 fedora)" -eq 1 ]; then
|
||||
echo "Detected current OS as Fedora, determining fedora version to use..."
|
||||
if [ "$(cat /etc/*-release | grep -cim1 23)" -eq 1 ]; then
|
||||
echo "using 'fedora.23' image"
|
||||
export DOCKERFILE=scripts/docker/fedora.23
|
||||
export DOCKERFILE=eng/docker/fedora.23
|
||||
fi
|
||||
elif [ "$(cat /etc/*-release | grep -cim1 opensuse)" -eq 1 ]; then
|
||||
echo "Detected current OS as openSUSE, determining openSUSE version to use..."
|
||||
if [ "$(cat /etc/*-release | grep -cim1 13.2)" -eq 1 ]; then
|
||||
echo "using 'openSUSE.13.2' image"
|
||||
export DOCKERFILE=scripts/docker/opensuse.13.2
|
||||
export DOCKERFILE=eng/docker/opensuse.13.2
|
||||
fi
|
||||
else
|
||||
echo "Unknown Linux Distro. Using 'ubuntu' image"
|
||||
export DOCKERFILE=scripts/docker/ubuntu
|
||||
export DOCKERFILE=eng/docker/ubuntu
|
||||
fi
|
||||
else
|
||||
echo "Using requested image: $DOCKER_IMAGENAME"
|
||||
export DOCKERFILE="scripts/docker/$DOCKER_IMAGENAME"
|
||||
export DOCKERFILE="eng/docker/$DOCKER_IMAGENAME"
|
||||
fi
|
||||
fi
|
||||
|
50
eng/restore-toolset.ps1
Normal file
50
eng/restore-toolset.ps1
Normal file
|
@ -0,0 +1,50 @@
|
|||
function InitializeCustomSDKToolset {
|
||||
if (-not $restore) {
|
||||
return
|
||||
}
|
||||
|
||||
# The following frameworks and tools are used only for testing.
|
||||
# Do not attempt to install them in source build.
|
||||
if ($env:DotNetBuildFromSource -eq "true") {
|
||||
return
|
||||
}
|
||||
|
||||
# InstallDotNetSharedFramework "1.0.5"
|
||||
# InstallDotNetSharedFramework "1.1.2"
|
||||
# InstallDotNetSharedFramework "2.1.0"
|
||||
|
||||
CreateBuildEnvScript
|
||||
}
|
||||
|
||||
function CreateBuildEnvScript()
|
||||
{
|
||||
Create-Directory $ArtifactsDir
|
||||
$scriptPath = Join-Path $ArtifactsDir "core-sdk-build-env.bat"
|
||||
$scriptContents = @"
|
||||
@echo off
|
||||
title Core SDK Build ($RepoRoot)
|
||||
set DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
||||
set DOTNET_MULTILEVEL_LOOKUP=0
|
||||
|
||||
set PATH=$env:DOTNET_INSTALL_DIR;%PATH%
|
||||
set NUGET_PACKAGES=$env:NUGET_PACKAGES
|
||||
"@
|
||||
|
||||
Out-File -FilePath $scriptPath -InputObject $scriptContents -Encoding ASCII
|
||||
}
|
||||
|
||||
function InstallDotNetSharedFramework([string]$version) {
|
||||
$dotnetRoot = $env:DOTNET_INSTALL_DIR
|
||||
$fxDir = Join-Path $dotnetRoot "shared\Microsoft.NETCore.App\$version"
|
||||
|
||||
if (!(Test-Path $fxDir)) {
|
||||
$installScript = GetDotNetInstallScript $dotnetRoot
|
||||
& $installScript -Version $version -InstallDir $dotnetRoot -Runtime "dotnet"
|
||||
|
||||
if($lastExitCode -ne 0) {
|
||||
throw "Failed to install shared Framework $version to '$dotnetRoot' (exit code '$lastExitCode')."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
InitializeCustomSDKToolset
|
39
eng/restore-toolset.sh
Normal file
39
eng/restore-toolset.sh
Normal file
|
@ -0,0 +1,39 @@
|
|||
function InitializeCustomSDKToolset {
|
||||
if [[ "$restore" != true ]]; then
|
||||
return
|
||||
fi
|
||||
|
||||
# The following frameworks and tools are used only for testing.
|
||||
# Do not attempt to install them in source build.
|
||||
if [[ "${DotNetBuildFromSource:-}" == "true" ]]; then
|
||||
return
|
||||
fi
|
||||
|
||||
#InstallDotNetSharedFramework "1.0.5"
|
||||
#InstallDotNetSharedFramework "1.1.2"
|
||||
|
||||
# Install 2.1 framework for dotnet-deb-tool
|
||||
InstallDotNetSharedFramework "2.1.0"
|
||||
}
|
||||
|
||||
# Installs additional shared frameworks for testing purposes
|
||||
function InstallDotNetSharedFramework {
|
||||
local version=$1
|
||||
local dotnet_root=$DOTNET_INSTALL_DIR
|
||||
local fx_dir="$dotnet_root/shared/Microsoft.NETCore.App/$version"
|
||||
|
||||
if [[ ! -d "$fx_dir" ]]; then
|
||||
GetDotNetInstallScript "$dotnet_root"
|
||||
local install_script=$_GetDotNetInstallScript
|
||||
|
||||
bash "$install_script" --version $version --install-dir "$dotnet_root" --runtime "dotnet"
|
||||
local lastexitcode=$?
|
||||
|
||||
if [[ $lastexitcode != 0 ]]; then
|
||||
echo "Failed to install Shared Framework $version to '$dotnet_root' (exit code '$lastexitcode')."
|
||||
ExitWithExitCode $lastexitcode
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
InitializeCustomSDKToolset
|
38
eng/setbuildinfo.bat
Normal file
38
eng/setbuildinfo.bat
Normal file
|
@ -0,0 +1,38 @@
|
|||
@echo off
|
||||
|
||||
setlocal
|
||||
|
||||
set Architecture=%1
|
||||
set Config=%2
|
||||
|
||||
if "%AdditionalBuildParameters%" == "$(_AdditionalBuildParameters)" (
|
||||
REM Prevent the literal "$(_AdditionalBuildParameters)" to be passed to the build script
|
||||
ECHO Setting AdditionalBuildParameters to empty
|
||||
ECHO ##vso[task.setvariable variable=AdditionalBuildParameters]
|
||||
) ELSE (
|
||||
ECHO AdditionalBuildParameters is already set to: %AdditionalBuildParameters%
|
||||
)
|
||||
|
||||
if /I "%SYSTEM_TEAMPROJECT%" == "Public" (
|
||||
ECHO Public CI
|
||||
SET SignType=test
|
||||
) ELSE (
|
||||
ECHO Not public CI
|
||||
SET SignType=real
|
||||
)
|
||||
ECHO ##vso[task.setvariable variable=SignType]%SignType%
|
||||
|
||||
IF /I "%Architecture:~0,3%"=="ARM" (
|
||||
ECHO ARM
|
||||
ECHO ##vso[task.setvariable variable=TestParameter]
|
||||
ECHO ##vso[task.setvariable variable=RunTests]false
|
||||
|
||||
ECHO ##vso[task.setvariable variable=AdditionalBuildParameters]/p:SignCoreSdk=true /p:DotNetSignType=%SignType%
|
||||
|
||||
) ELSE (
|
||||
ECHO NOT ARM
|
||||
ECHO ##vso[task.setvariable variable=TestParameter]-test
|
||||
ECHO ##vso[task.setvariable variable=RunTests]true
|
||||
|
||||
ECHO ##vso[task.setvariable variable=AdditionalBuildParameters]-sign /p:SignCoreSdk=true /p:DotNetSignType=%SignType%
|
||||
)
|
19
eng/setbuildinfo.sh
Executable file
19
eng/setbuildinfo.sh
Executable file
|
@ -0,0 +1,19 @@
|
|||
#!/bin/bash
|
||||
|
||||
shopt -s nocasematch
|
||||
|
||||
if [[ "$1" == ARM* ]]
|
||||
then
|
||||
echo "ARM"
|
||||
echo "##vso[task.setvariable variable=TestParameter]"
|
||||
echo "##vso[task.setvariable variable=RunTests]false"
|
||||
else
|
||||
echo "NOT ARM"
|
||||
echo "##vso[task.setvariable variable=TestParameter]--test"
|
||||
echo "##vso[task.setvariable variable=RunTests]true"
|
||||
fi
|
||||
|
||||
if [[ "$AdditionalBuildParameters" == '$(_AdditionalBuildParameters)' ]]
|
||||
then
|
||||
echo "##vso[task.setvariable variable=AdditionalBuildParameters]"
|
||||
fi
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue