* Update to Python 3.x to generate the build scripts and other related things
* Update to Clang 12.x to work with Visual Studio 2022
* Update all Windows builds to use Visual Studio 2022
* Update the required .net tools
* Streamline the pipeline a bit more
* Extracted all the tool install yaml into scripts so they can be better edited and tracked
This commit is contained in:
Matthew Leibowitz 2022-03-02 15:24:47 +08:00 коммит произвёл GitHub
Родитель f4f689e4be
Коммит 2f218deb78
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
36 изменённых файлов: 454 добавлений и 177 удалений

Просмотреть файл

@ -3,10 +3,28 @@
"isRoot": true,
"tools": {
"cake.tool": {
"version": "1.2.0",
"version": "2.1.0",
"commands": [
"dotnet-cake"
]
},
"nano-api-scan": {
"version": "1.0.1",
"commands": [
"nano-api-scan"
]
},
"dotnet-reportgenerator-globaltool": {
"version": "5.0.4",
"commands": [
"reportgenerator"
]
},
"microsoft.dotnet.xharness.cli": {
"version": "1.0.0-prerelease.22124.1",
"commands": [
"xharness"
]
}
}
}

Просмотреть файл

@ -1,6 +1,6 @@
<Project Sdk="MSBuild.Sdk.Extras/3.0.44">
<PropertyGroup>
<TargetFramework>monoandroid9.0</TargetFramework>
<TargetFramework>monoandroid10.0</TargetFramework>
<RootNamespace>HarfBuzzSharp</RootNamespace>
<AssemblyName>HarfBuzzSharp</AssemblyName>
<PackagingGroup>HarfBuzzSharp</PackagingGroup>

Просмотреть файл

@ -1,6 +1,6 @@
<Project Sdk="MSBuild.Sdk.Extras/3.0.44">
<PropertyGroup>
<TargetFramework>monoandroid9.0</TargetFramework>
<TargetFramework>monoandroid10.0</TargetFramework>
<RootNamespace>SkiaSharp</RootNamespace>
<AssemblyName>SkiaSharp</AssemblyName>
<PackagingGroup>SkiaSharp</PackagingGroup>

Просмотреть файл

@ -88,13 +88,12 @@ void RunNetCorePublish(FilePath testProject, DirectoryPath output)
void RunCodeCoverage(string testResultsGlob, DirectoryPath output)
{
try {
RunProcess("reportgenerator", new ProcessSettings {
Arguments =
$"-reports:{testResultsGlob} " +
$"-targetdir:{output} " +
$"-reporttypes:HtmlInline_AzurePipelines;Cobertura " +
$"-assemblyfilters:-*.Tests"
});
DotNetTool(
$"reportgenerator" +
$" -reports:{testResultsGlob}" +
$" -targetdir:{output}" +
$" -reporttypes:HtmlInline_AzurePipelines;Cobertura" +
$" -assemblyfilters:-*.Tests");
} catch (Exception ex) {
Error("Make sure to install the 'dotnet-reportgenerator-globaltool' .NET Core global tool.");
Error(ex);

Просмотреть файл

@ -21,6 +21,9 @@ foreach (var cake in GetFiles("native/*/build.cake"))
Task("externals-osx")
.IsDependentOn("externals-macos");
Task("externals-nano")
.IsDependentOn("externals-nanoserver");
Task("externals-catalyst")
.IsDependentOn("externals-maccatalyst");
@ -79,6 +82,9 @@ bool ShouldBuildExternal(string platform)
case "win":
platform = "windows";
break;
case "nano":
platform = "nanoserver";
break;
}
if (SKIP_EXTERNALS.Contains(platform))

Просмотреть файл

@ -1,6 +1,6 @@
#load "shared.cake"
var PYTHON_EXE = Argument("python", EnvironmentVariable("PYTHON_EXE") ?? "python");
var PYTHON_EXE = Argument("python", EnvironmentVariable("PYTHON_EXE") ?? "python3");
if (!string.IsNullOrEmpty(PYTHON_EXE) && FileExists(PYTHON_EXE)) {
var dir = MakeAbsolute((FilePath)PYTHON_EXE).GetDirectory();

Просмотреть файл

@ -42,7 +42,7 @@ void RunCake(FilePath cake, string target = null, Dictionary<string, string> arg
cmd += $@" --{arg.Key}=""{arg.Value}""";
}
DotNetCoreTool(cmd);
DotNetTool(cmd);
}
void RunProcess(FilePath process, string args = "")

Просмотреть файл

@ -7,7 +7,7 @@ DirectoryPath ROOT_PATH = MakeAbsolute(Directory(".."));
// required
FilePath PROJECT = Argument("project", EnvironmentVariable("ANDROID_TEST_PROJECT") ?? "");
string TEST_DEVICE = Argument("device", EnvironmentVariable("ANDROID_TEST_DEVICE") ?? "android-emulator-32_30");
string TEST_DEVICE = Argument("device", EnvironmentVariable("ANDROID_TEST_DEVICE") ?? "android-emulator-64_30");
string DEVICE_NAME = Argument("skin", EnvironmentVariable("ANDROID_TEST_SKIN") ?? "Nexus 5X");
// optional
@ -179,7 +179,7 @@ Task("Default")
CleanDirectories(TEST_RESULTS);
RunProcess("xharness", "android test " +
DotNetTool("xharness android test " +
$"--app=\"{TEST_APP}\" " +
$"--package-name=\"{TEST_APP_PACKAGE_NAME}\" " +
$"--instrumentation=\"{TEST_APP_INSTRUMENTATION}\" " +

Просмотреть файл

@ -37,7 +37,7 @@ Task("Default")
CleanDirectories(TEST_RESULTS);
try {
RunProcess("xharness", "apple test " +
DotNetTool("xharness apple test " +
$"--app=\"{TEST_APP}\" " +
$"--targets=\"{TEST_DEVICE}\" " +
$"--output-directory=\"{TEST_RESULTS}\" " +

2
externals/depot_tools поставляемый

@ -1 +1 @@
Subproject commit 44134341fa8b46e83bad3bef48a8bc6badaa3083
Subproject commit 42cf2acbaee8f149fdc08661eece63aaf271b4bc

2
externals/skia поставляемый

@ -1 +1 @@
Subproject commit 916a1e9721de74a05c75391f52393972ed7f736c
Subproject commit 1ee0f9b67ac345bc9a2b1fe9554c9e23694f7d28

Просмотреть файл

@ -13,7 +13,7 @@ Task("libSkiaSharp")
{ "arch", "x64" },
});
RunProcess("nano-api-scan", OUTPUT_PATH.CombineWithFilePath("nanoserver/x64/libSkiaSharp.dll").FullPath);
DotNetTool("nano-api-scan " + OUTPUT_PATH.CombineWithFilePath("nanoserver/x64/libSkiaSharp.dll").FullPath);
});
Task("libHarfBuzzSharp")
@ -30,7 +30,7 @@ Task("libHarfBuzzSharp")
CopyFileToDirectory(srcDir.CombineWithFilePath("libHarfBuzzSharp.dll"), outDir);
CopyFileToDirectory(srcDir.CombineWithFilePath("libHarfBuzzSharp.pdb"), outDir);
RunProcess("nano-api-scan", OUTPUT_PATH.CombineWithFilePath("nanoserver/x64/libHarfBuzzSharp.dll").FullPath);
DotNetTool("nano-api-scan " + OUTPUT_PATH.CombineWithFilePath("nanoserver/x64/libHarfBuzzSharp.dll").FullPath);
});
Task("Default")

Просмотреть файл

@ -5,9 +5,5 @@
<add key="dotnet-public" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json" />
<add key="dotnet6" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6/nuget/v3/index.json" />
<add key="dotnet-eng" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" />
<add key="darc-pub-dotnet-aspnetcore" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-aspnetcore-7c57ecbd-3/nuget/v3/index.json" />
<add key="darc-pub-dotnet-runtime" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-runtime-4822e3c3-5/nuget/v3/index.json" />
<add key="darc-pub-dotnet-windowsdesktop" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-windowsdesktop-59fea7da-4/nuget/v3/index.json" />
<add key="darc-pub-dotnet-emsdk" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-emsdk-1ec2e17f-4/nuget/v3/index.json" />
</packageSources>
</configuration>

Просмотреть файл

@ -3,7 +3,7 @@ FROM amd64/alpine:3.9
# Arguments:
# DOTNET_SDK_VERSION - the version of dotnet for the Cake script [ 3.1.412 | * ]
RUN apk add --no-cache bash curl wget python git build-base ninja fontconfig-dev libintl
RUN apk add --no-cache bash curl wget python python3 git build-base ninja fontconfig-dev libintl
RUN apk add --no-cache samurai --repository http://dl-cdn.alpinelinux.org/alpine/edge/main
RUN apk add --no-cache clang gn --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing

Просмотреть файл

@ -2,13 +2,13 @@ FROM amd64/debian:9
# Arguments:
# DOTNET_SDK_VERSION - the version of dotnet for the Cake script [ 3.1.412 | * ]
# CLANG_VERSION - the version of clang/llvm tools [ 10 | * ]
# CLANG_VERSION - the version of clang/llvm tools [ 12 | * ]
# TOOLCHAIN_VERSION - the version of the GCC toolchain [ 6 | * ]
ARG CLANG_VERSION=10
ARG CLANG_VERSION=12
ARG TOOLCHAIN_VERSION=6
RUN apt-get update \
&& apt-get install -y apt-transport-https curl wget python git make dirmngr gnupg \
&& apt-get install -y apt-transport-https curl wget python python3 git make dirmngr gnupg \
&& curl -L https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - \
&& echo "deb http://apt.llvm.org/stretch/ llvm-toolchain-stretch-${CLANG_VERSION} main" | tee /etc/apt/sources.list.d/llvm.list \
&& apt-get update \

Просмотреть файл

@ -2,7 +2,7 @@ FROM amd64/debian:9
# Arguments:
# DOTNET_SDK_VERSION - the version of dotnet for the Cake script [ 3.1.412 | * ]
# CLANG_VERSION - the version of clang/llvm tools [ 10 | * ]
# CLANG_VERSION - the version of clang/llvm tools [ 12 | * ]
# TOOLCHAIN_VERSION - the version of the GCC toolchain [ 6 | * ]
# TOOLCHAIN_ARCH - the architecture of the GCC toolchain [ arm-linux-gnueabihf | aarch64-linux-gnu]
# TOOLCHAIN_ARCH_SHORT - the short form architecture of the GCC toolchain [ armhf | arm64 ]
@ -14,9 +14,9 @@ FROM amd64/debian:9
# --build-arg TOOLCHAIN_ARCH=aarch64-linux-gnu --build-arg TOOLCHAIN_ARCH_SHORT=arm64
# pre-requisites for building (python, git)
ARG CLANG_VERSION=10
ARG CLANG_VERSION=12
RUN apt-get update \
&& apt-get install -y apt-transport-https curl wget python git make dirmngr gnupg \
&& apt-get install -y apt-transport-https curl wget python python3 git make dirmngr gnupg \
&& curl -L https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - \
&& echo "deb http://apt.llvm.org/stretch/ llvm-toolchain-stretch-${CLANG_VERSION} main" | tee /etc/apt/sources.list.d/llvm.list \
&& apt-get update \

Просмотреть файл

@ -14,17 +14,20 @@ parameters:
type: number
default: 0
- name: VM_IMAGE_WINDOWS
type: string
default: 'Azure-Pipelines-windows-2022'
- name: VM_IMAGE_WINDOWS_NATIVE
type: string
default: 'Azure-Pipelines-windows-2019'
type: object
default:
name: Azure Pipelines
vmImage: windows-2022
- name: VM_IMAGE_MAC
type: string
default: 'Azure-Pipelines-macOS-10.15'
type: object
default:
name: Azure Pipelines
vmImage: macOS-10.15
- name: VM_IMAGE_LINUX
type: string
default: 'Azure-Pipelines-ubuntu-18.04'
type: object
default:
name: Azure Pipelines
vmImage: ubuntu-18.04
variables:
SKIASHARP_VERSION: 2.88.0
@ -45,14 +48,12 @@ variables:
DOTNET_VERSION: 6.0.200
DOTNET_VERSION_PREVIEW: ''
DOTNET_WORKLOAD_SOURCE: 'https://aka.ms/dotnet/maui/6.0.200/preview.13.json'
VS_VERSION_PREVIEW: 17/pre
CONFIGURATION: 'Release'
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
THROW_ON_TEST_FAILURE: true
NUGET_DIFF_PRERELEASE: false
ENABLE_CODE_COVERAGE: true
EMSCRIPTEN_VERSION: 2.0.23
XHARNESS_VERSION: 1.0.0-prerelease.21404.1
resources:
repositories:
@ -68,11 +69,7 @@ stages:
jobs:
- job: prepare # Prepare Build
displayName: Prepare Build
pool:
${{ if startsWith(parameters.VM_IMAGE_LINUX, 'Azure-Pipelines-') }}:
vmImage: ${{ replace(parameters.VM_IMAGE_LINUX, 'Azure-Pipelines-', '') }}
${{ if not(startsWith(parameters.VM_IMAGE_LINUX, 'Azure-Pipelines-')) }}:
name: ${{ parameters.VM_IMAGE_LINUX }}
pool: ${{ parameters.VM_IMAGE_LINUX }}
steps:
- checkout: none
- template: azure-templates-variables.yml
@ -88,7 +85,7 @@ stages:
name: native_android_x86_windows
displayName: Android x86
buildExternals: ${{ parameters.buildExternals }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE}}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS}}
target: externals-android
additionalArgs: --buildarch=x86
installWindowsSdk: false
@ -98,7 +95,7 @@ stages:
name: native_android_x64_windows
displayName: Android x64
buildExternals: ${{ parameters.buildExternals }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE}}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS}}
target: externals-android
additionalArgs: --buildarch=x64
installWindowsSdk: false
@ -108,7 +105,7 @@ stages:
name: native_android_arm_windows
displayName: Android arm
buildExternals: ${{ parameters.buildExternals }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE}}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS}}
target: externals-android
additionalArgs: --buildarch=arm
installWindowsSdk: false
@ -118,7 +115,7 @@ stages:
name: native_android_arm64_windows
displayName: Android arm64
buildExternals: ${{ parameters.buildExternals }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE}}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS}}
target: externals-android
additionalArgs: --buildarch=arm64
installWindowsSdk: false
@ -128,7 +125,7 @@ stages:
name: native_tizen_windows
displayName: Tizen
buildExternals: ${{ parameters.buildExternals }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE}}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS}}
target: externals-tizen
installWindowsSdk: false
artifactName: native
@ -137,7 +134,7 @@ stages:
name: native_uwp_angle_x86_windows
displayName: ANGLE x86
buildExternals: ${{ parameters.buildExternals }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE}}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS}}
target: ANGLE
additionalArgs: -Script .\native\uwp\build.cake --buildarch=x86
artifactName: native
@ -146,7 +143,7 @@ stages:
name: native_uwp_angle_x64_windows
displayName: ANGLE x64
buildExternals: ${{ parameters.buildExternals }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE}}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS}}
target: ANGLE
additionalArgs: -Script .\native\uwp\build.cake --buildarch=x64
artifactName: native
@ -155,7 +152,7 @@ stages:
name: native_uwp_angle_arm_windows
displayName: ANGLE arm
buildExternals: ${{ parameters.buildExternals }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE}}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS}}
target: ANGLE
additionalArgs: -Script .\native\uwp\build.cake --buildarch=arm
artifactName: native
@ -164,7 +161,7 @@ stages:
name: native_uwp_angle_arm64_windows
displayName: ANGLE arm64
buildExternals: ${{ parameters.buildExternals }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE}}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS}}
target: ANGLE
additionalArgs: -Script .\native\uwp\build.cake --buildarch=arm64
artifactName: native
@ -173,7 +170,7 @@ stages:
name: native_uwp_x86_windows
displayName: UWP x86
buildExternals: ${{ parameters.buildExternals }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE}}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS}}
target: externals-uwp
additionalArgs: --buildarch=x86 --skipAngle=true
artifactName: native
@ -182,7 +179,7 @@ stages:
name: native_uwp_x64_windows
displayName: UWP x64
buildExternals: ${{ parameters.buildExternals }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE}}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS}}
target: externals-uwp
additionalArgs: --buildarch=x64 --skipAngle=true
artifactName: native
@ -191,7 +188,7 @@ stages:
name: native_uwp_arm_windows
displayName: UWP arm
buildExternals: ${{ parameters.buildExternals }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE}}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS}}
target: externals-uwp
additionalArgs: --buildarch=arm --skipAngle=true
artifactName: native
@ -200,7 +197,7 @@ stages:
name: native_uwp_arm64_windows
displayName: UWP arm64
buildExternals: ${{ parameters.buildExternals }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE}}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS}}
target: externals-uwp
additionalArgs: --buildarch=arm64 --skipAngle=true
artifactName: native
@ -209,7 +206,7 @@ stages:
name: native_win32_x86_windows
displayName: Win32 x86
buildExternals: ${{ parameters.buildExternals }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE}}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS}}
target: externals-windows
additionalArgs: --buildarch=x86
artifactName: native
@ -218,7 +215,7 @@ stages:
name: native_win32_x64_windows
displayName: Win32 x64
buildExternals: ${{ parameters.buildExternals }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE}}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS}}
target: externals-windows
additionalArgs: --buildarch=x64
artifactName: native
@ -227,7 +224,7 @@ stages:
name: native_win32_arm64_windows
displayName: Win32 arm64
buildExternals: ${{ parameters.buildExternals }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE}}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS}}
target: externals-windows
additionalArgs: --buildarch=arm64
artifactName: native
@ -236,12 +233,10 @@ stages:
name: native_win32_x64_nanoserver_windows
displayName: Nano Server x64
buildExternals: ${{ parameters.buildExternals }}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS_NATIVE}}
vmImage: ${{ parameters.VM_IMAGE_WINDOWS}}
target: externals-nanoserver
additionalArgs: --buildarch=x64
artifactName: native
tools:
- nano-api-scan
- stage: native_macos
displayName: Native macOS
@ -444,6 +439,7 @@ stages:
target: nuget
additionalArgs: --packall=true --skipbuild=true
installWindowsSdk: false
installAndroidSdk: false
installDotNet: false
requiredArtifacts:
- managed
@ -567,8 +563,6 @@ stages:
requiredArtifacts:
- native_win32_x86_windows
- native_win32_x64_windows
tools:
- dotnet-reportgenerator-globaltool
postBuildSteps:
- task: PublishTestResults@2
displayName: Publish the .NET Core test results
@ -610,8 +604,6 @@ stages:
shouldPublish: false
requiredArtifacts:
- native_macos_macos
tools:
- dotnet-reportgenerator-globaltool
postBuildSteps:
- task: PublishTestResults@2
displayName: Publish the .NET Core test results
@ -631,7 +623,7 @@ stages:
displayName: Android (macOS)
vmImage: ${{ parameters.VM_IMAGE_MAC }}
target: tests-android
additionalArgs: --device=android-emulator-32_30 --skipExternals="all" --throwOnTestFailure=$(THROW_ON_TEST_FAILURE) --coverage=$(ENABLE_CODE_COVERAGE)
additionalArgs: --device=android-emulator-64_30 --skipExternals="all" --throwOnTestFailure=$(THROW_ON_TEST_FAILURE) --coverage=$(ENABLE_CODE_COVERAGE)
shouldPublish: false
requiredArtifacts:
- native_android_x86_macos
@ -639,14 +631,10 @@ stages:
- native_android_arm_macos
- native_android_arm64_macos
preBuildSteps:
- pwsh: |
dotnet tool install Microsoft.DotNet.XHarness.CLI `
--global `
--add-source https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json `
--version "$env:XHARNESS_VERSION"
displayName: Install the xharness .NET Core tool
- bash: sh -c "echo \"y\" | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager \"emulator\" \"system-images;android-30;google_apis_playstore;x86\""
- pwsh: .\scripts\install-android-package.ps1 -Package "emulator"
displayName: Install the Android emulator
- pwsh: .\scripts\install-android-package.ps1 -Package "system-images;android-30;google_apis_playstore;x86_64"
displayName: Install the Android API 30 emulator image
postBuildSteps:
- task: PublishTestResults@2
displayName: Publish the Android test results
@ -673,12 +661,6 @@ stages:
- native_ios_macos
preBuildSteps:
- template: azure-templates-provisioning-profiles.yml
- pwsh: |
dotnet tool install Microsoft.DotNet.XHarness.CLI `
--global `
--add-source https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json `
--version "$env:XHARNESS_VERSION"
displayName: Install the xharness .NET Core tool
postBuildSteps:
- task: PublishTestResults@2
displayName: Publish the iOS test results
@ -723,8 +705,6 @@ stages:
shouldPublish: false
requiredArtifacts:
- native_linux_x64_linux
tools:
- dotnet-reportgenerator-globaltool
postBuildSteps:
- task: PublishTestResults@2
displayName: Publish the .NET Core test results
@ -764,11 +744,7 @@ stages:
# TODO: add tests for windows nano server
- job: coverage_reports # Coverage Reports
displayName: Coverage Reports
pool:
${{ if startsWith(parameters.VM_IMAGE_LINUX, 'Azure-Pipelines-') }}:
vmImage: ${{ replace(parameters.VM_IMAGE_LINUX, 'Azure-Pipelines-', '') }}
${{ if not(startsWith(parameters.VM_IMAGE_LINUX, 'Azure-Pipelines-')) }}:
name: ${{ parameters.VM_IMAGE_LINUX }}
pool: ${{ parameters.VM_IMAGE_LINUX }}
dependsOn:
- tests_netcore_windows
- tests_netcore_macos
@ -854,6 +830,7 @@ stages:
target: git-sync-deps
installWindowsSdk: false
installDotNet: false
installAndroidSdk: false
shouldPublish: false
postBuildSteps:
- task: CredScan@2

Просмотреть файл

@ -8,7 +8,6 @@ parameters:
variables: [] # the job variables
requiredArtifacts: [] # the artifacts that this build needs to download
requiredArtifactsMap: [] # the artifacts that this build needs to download
demands: [] # the demands
preBuildSteps: [] # any steps to run before the build
postBuildSteps: [] # any additional steps to run after the build
initScript: '' # any scripts to run before starting the bootstrapper
@ -22,6 +21,7 @@ parameters:
docker: '' # the Docker image to build and use
dockerArgs: '' # any additional arguments to pass to docker build
installAndroidNdk: true # whether or not to install the Android NDK
installAndroidSdk: true # whether or not to install the Android SDK
installTizenSdk: true # whether or not to install the Tizen SDK
installWindowsSdk: true # whether or not to install the Windows SDK
installPreviewVs: false # whether or not to install the preview VS
@ -44,7 +44,6 @@ jobs:
variables: ${{ parameters.variables }}
requiredArtifacts: ${{ parameters.requiredArtifacts }}
requiredArtifactsMap: ${{ parameters.requiredArtifactsMap }}
demands: ${{ parameters.demands }}
preBuildSteps: ${{ parameters.preBuildSteps }}
postBuildSteps: ${{ parameters.postBuildSteps }}
initScript: ${{ parameters.initScript }}
@ -58,6 +57,7 @@ jobs:
docker: ${{ parameters.docker }}
dockerArgs: ${{ parameters.dockerArgs }}
installAndroidNdk: ${{ parameters.installAndroidNdk }}
installAndroidSdk: ${{ parameters.installAndroidSdk }}
installTizenSdk: ${{ parameters.installTizenSdk }}
installWindowsSdk: ${{ parameters.installWindowsSdk }}
installPreviewVs: ${{ parameters.installPreviewVs }}
@ -79,7 +79,6 @@ jobs:
variables: ${{ parameters.variables }}
requiredArtifacts: ${{ parameters.requiredArtifacts }}
requiredArtifactsMap: ${{ parameters.requiredArtifactsMap }}
demands: ${{ parameters.demands }}
preBuildSteps: ${{ parameters.preBuildSteps }}
postBuildSteps: ${{ parameters.postBuildSteps }}
initScript: ${{ parameters.initScript }}

Просмотреть файл

@ -8,7 +8,6 @@ parameters:
variables: [] # the job variables
requiredArtifacts: [] # the artifacts that this build needs to download
requiredArtifactsMap: [] # the artifacts that this build needs to download
demands: [] # the demands
preBuildSteps: [] # any steps to run before the build
postBuildSteps: [] # any additional steps to run after the build
initScript: '' # any scripts to run before starting the bootstrapper
@ -21,6 +20,7 @@ parameters:
docker: '' # the Docker image to build and use
dockerArgs: '' # any additional arguments to pass to docker build
installAndroidNdk: true # whether or not to install the Android NDK
installAndroidSdk: true # whether or not to install the Android SDK
installTizenSdk: true # whether or not to install the Tizen SDK
installWindowsSdk: true # whether or not to install the Windows SDK
installPreviewVs: false # whether or not to install the preview VS
@ -33,12 +33,7 @@ jobs:
- job: ${{ parameters.name }}
displayName: ${{ parameters.displayName }}
timeoutInMinutes: 180
pool:
demands: ${{ parameters.demands }}
${{ if startsWith(parameters.vmImage, 'Azure-Pipelines-') }}:
vmImage: ${{ replace(parameters.vmImage, 'Azure-Pipelines-', '') }}
${{ if not(startsWith(parameters.vmImage, 'Azure-Pipelines-')) }}:
name: ${{ parameters.vmImage }}
pool: ${{ parameters.vmImage }}
dependsOn: ${{ parameters.dependsOn }}
condition: ${{ parameters.condition }}
variables: ${{ parameters.variables }}
@ -58,15 +53,7 @@ jobs:
# make sure mono/msbuild is the correct version
- ${{ if and(ne(variables['MONO_VERSION_LINUX'], ''), eq(parameters.docker, ''), endsWith(parameters.name, '_linux')) }}:
- bash: |
sudo apt remove -y mono-complete msbuild
sudo apt autoremove -y
sudo rm /etc/mono/config
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/ubuntu $(MONO_VERSION_LINUX) main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
sudo apt update
sudo apt install -y mono-complete msbuild
mono --version
- bash: ./scripts/install-mono.sh $(MONO_VERSION_LINUX)
displayName: Install Mono and MSBuild
- ${{ if endsWith(parameters.name, '_macos') }}:
- bash: sudo $(Agent.HomeDirectory)/scripts/select-xamarin-sdk.sh $(MONO_VERSION_MACOS)
@ -75,13 +62,12 @@ jobs:
# install extra bits for the native builds
- ${{ if startsWith(parameters.name, 'native_') }}:
# switch to the correct Python version
- pwsh: .\scripts\install-python.ps1
displayName: Install Python
- task: UsePythonVersion@0
displayName: Switch to the correct Python version
inputs:
${{ if endsWith(parameters.name, '_windows') }}:
versionSpec: '3.x'
${{ if not(endsWith(parameters.name, '_windows')) }}:
versionSpec: '2.7'
versionSpec: '3.x'
architecture: 'x64'
- ${{ if not(contains(parameters.name, '_checks_')) }}:
# install android ndk
@ -94,11 +80,34 @@ jobs:
displayName: Install the Tizen SDK
# install llvm
- ${{ if and(eq(parameters.installLlvm, 'true'), contains(parameters.name, '_win32_')) }}:
- pwsh: .\scripts\install-7zip.ps1
displayName: Install 7-zip
- pwsh: .\scripts\install-llvm.ps1
displayName: Install LLVM
# install extra bits for the manged builds
- ${{ if not(startsWith(parameters.name, 'native_')) }}:
# install extra bits for the managed builds
- ${{ if and(not(startsWith(parameters.name, 'native_')), not(endsWith(parameters.name, '_linux'))) }}:
# install the bits needed for Android
- ${{ if eq(parameters.installAndroidSdk, 'true') }}:
# install the correct version of the JDK for .NET 6
- pwsh: |
if ("$env:JAVA_HOME_11_X64") {
echo "##vso[task.setvariable variable=JAVA_HOME]$env:JAVA_HOME_11_X64"
} else {
.\scripts\install-openjdk.ps1
}
displayName: Install OpenJDK
# install the correct version of the Android SDK
- pwsh: .\scripts\install-android-sdk.ps1
displayName: Install Android SDK
# install the required version of the Android Platforms
- pwsh: .\scripts\install-android-platform.ps1 -API 29
displayName: Install Android API 29 (v10)
- pwsh: .\scripts\install-android-platform.ps1 -API 30
displayName: Install Android API 30 (v11)
- pwsh: .\scripts\install-android-platform.ps1 -API 31
displayName: Install Android API 31 (v12)
# install the bits needed for .NET
- ${{ if eq(parameters.installDotNet, 'true') }}:
- task: UseDotNet@2
inputs:
@ -118,10 +127,8 @@ jobs:
condition: ne(variables.DOTNET_VERSION_PREVIEW, '')
- ${{ if endsWith(parameters.name, '_windows') }}:
- ${{ if eq(parameters.installPreviewVs, 'true') }}:
- pwsh: .\scripts\install-vs.ps1 -Version $env:VS_VERSION_PREVIEW
- pwsh: .\scripts\install-vs.ps1
displayName: Install Visual Studio
- pwsh: .\scripts\select-vs.ps1
displayName: Select Visual Studio
- ${{ if not(endsWith(parameters.name, '_linux')) }}:
- pwsh: .\scripts\install-dotnet-workloads.ps1 -InstallDir "$env:AGENT_TOOLSDIRECTORY/dotnet" -SourceUrl "$env:DOTNET_WORKLOAD_SOURCE" -IsPreview $true
condition: ne(variables.DOTNET_VERSION_PREVIEW, '')
@ -133,9 +140,10 @@ jobs:
- pwsh: dotnet --info
displayName: Display all the .NET information
# select the correct version of the JDK for .NET 6
- pwsh: echo "##vso[task.setvariable variable=JAVA_HOME]$(JAVA_HOME_11_X64)"
displayName: Select JDK 11
# select the correct/latest version of Visual Studio
- ${{ if endsWith(parameters.name, '_windows') }}:
- pwsh: .\scripts\select-vs.ps1
displayName: Select Visual Studio
# install the mac tools
- ${{ if endsWith(parameters.name, '_macos') }}:
@ -144,10 +152,7 @@ jobs:
# install the linux tools
- ${{ if and(eq(parameters.installEmsdk, 'true'), endsWith(parameters.name, '_linux')) }}:
- bash: |
git clone --branch $(EMSCRIPTEN_VERSION) https://github.com/emscripten-core/emsdk ~/emsdk
~/emsdk/emsdk install $(EMSCRIPTEN_VERSION)
~/emsdk/emsdk activate $(EMSCRIPTEN_VERSION)
- bash: ./scripts/install-emsdk.sh $(EMSCRIPTEN_VERSION)
displayName: Install the Emscripten SDK
# install the Windows tools
@ -155,21 +160,24 @@ jobs:
- ${{ if not(contains(parameters.name, '_checks_')) }}:
# install the older Windows SDKs
- ${{ if eq(parameters.installWindowsSdk, 'true') }}:
- pwsh: .\scripts\install-winsdk.ps1 -LinkId 619296
- pwsh: .\scripts\install-winsdk.ps1 -LinkId 619296 -Version 10.0.10240.0
displayName: Install the Windows 10 SDK 10.0.10240
- ${{ if and(not(startsWith(parameters.name, 'native_')), not(startsWith(parameters.name, 'api_diff_'))) }}:
- pwsh: .\scripts\install-winsdk.ps1 -LinkId 864422
displayName: Install the Windows 10 SDK 10.0.16299
- pwsh: .\scripts\install-winsdk.ps1 -LinkId 2083338
displayName: Install the Windows 10 SDK 10.0.18362
# - pwsh: .\scripts\install-winsdk.ps1 -LinkId 2120843
# displayName: Install the Windows 10 SDK 10.0.19041
- pwsh: .\scripts\install-winsdk.ps1 -LinkId 864422 -Version 10.0.16299.0
displayName: Install the Windows 10 SDK 10.0.16299
- pwsh: .\scripts\install-winsdk.ps1 -LinkId 2083338 -Version 10.0.18362.0
displayName: Install the Windows 10 SDK 10.0.18362
- pwsh: .\scripts\install-winsdk.ps1 -LinkId 2120843 -Version 10.0.19041.0
displayName: Install the Windows 10 SDK 10.0.19041
# install any .NET Core global tools
- ${{ each tool in parameters.tools }}:
- pwsh: dotnet tool install -g ${{ tool }}
displayName: Install ${{ tool }}
# install nuget
- pwsh: .\scripts\install-nuget.ps1
displayName: Install NuGet
# download artifacts
- ${{ each dep in parameters.requiredArtifacts }}:
- ${{ if ne(dep, '') }}:
@ -248,12 +256,6 @@ jobs:
- ${{ parameters.postBuildSteps }}
# publish artifacts
- ${{ if endsWith(parameters.name, '_linux') }}:
- bash: |
mkdir -p ./output/logs/
cp $HOME/.config/NuGet/NuGet.Config ./output/logs/
condition: failed()
displayName: Copy the sometimes corrupt NuGet.Config to the logs
- task: PublishBuildArtifacts@1
displayName: Publish the ${{ parameters.name }} artifacts
condition: or(${{ parameters.shouldPublish }}, failed())

Просмотреть файл

@ -10,11 +10,7 @@ parameters:
jobs:
- job: ${{ parameters.name }}
displayName: ${{ parameters.displayName }}
pool:
${{ if startsWith(parameters.vmImage, 'Azure-Pipelines-') }}:
vmImage: ${{ replace(parameters.vmImage, 'Azure-Pipelines-', '') }}
${{ if not(startsWith(parameters.vmImage, 'Azure-Pipelines-')) }}:
name: ${{ parameters.vmImage }}
pool: ${{ parameters.vmImage }}
condition: ${{ parameters.condition }}
steps:
- checkout: none

32
scripts/install-7zip.ps1 Normal file
Просмотреть файл

@ -0,0 +1,32 @@
Param(
[string] $Version = '21.07'
)
$ErrorActionPreference = 'Stop'
try {
7z --help
Write-Host "7-zip already installed."
exit 0
} catch {
# no op
}
$uri = "https://www.7-zip.org/a/7z$($Version.Replace('.', ''))-x64.msi"
$HOME_DIR = if ($env:HOME) { $env:HOME } else { $env:USERPROFILE }
$tempDir = Join-Path "$HOME_DIR" "7zip-temp"
$installer = Join-Path "$tempDir" "7zip.msi"
New-Item -ItemType Directory -Force -Path $tempDir | Out-Null
Write-Host "Downloading 7-zip Installer: $uri..."
.\scripts\download-file.ps1 -Uri $uri -OutFile $installer
$p = "$env:BUILD_SOURCESDIRECTORY\output\logs\install-logs"
New-Item -ItemType Directory -Force -Path $p | Out-Null
msiexec /i $installer /norestart /quiet /l* $p\7zip-install.log
Write-Host "##vso[task.setvariable variable=PATH;]C:\Program Files\7-Zip;$env:PATH";
exit $LASTEXITCODE

Просмотреть файл

@ -0,0 +1,32 @@
Param(
[string] $Package
)
$ErrorActionPreference = 'Stop'
.\scripts\install-android-sdk.ps1
$sdk = "$env:ANDROID_SDK_ROOT"
$latest = Join-Path "$sdk" "cmdline-tools" "latest"
if (-not (Test-Path $latest)) {
$versions = Get-ChildItem (Join-Path "$sdk" "cmdline-tools")
$latest = ($versions | Select-Object -Last 1)[0]
}
if (-not $IsMacOS -and -not $IsLinux) {
$ext = ".bat"
}
$sdkmanager = Join-Path "$latest" "bin" "sdkmanager$ext"
Set-Content -Value "y" -Path "yes.txt"
try {
if ($IsMacOS -or $IsLinux) {
sh -c "`"$sdkmanager`" `"$($Package.Replace(';', '\;'))`" < yes.txt"
} else {
cmd /c "`"$sdkmanager`" `"$Package`" < yes.txt"
}
} finally {
Remove-Item "yes.txt"
}
exit $LASTEXITCODE

Просмотреть файл

@ -0,0 +1,38 @@
Param(
[string] $API
)
$ErrorActionPreference = 'Stop'
.\scripts\install-android-sdk.ps1
$sdk = "$env:ANDROID_SDK_ROOT"
$apiPath = Join-Path "$sdk" "platforms" "android-$API" "android.jar"
if (Test-Path $apiPath) {
Write-Host "Android API level $API was already installed."
exit 0
}
$latest = Join-Path "$sdk" "cmdline-tools" "latest"
if (-not (Test-Path $latest)) {
$versions = Get-ChildItem (Join-Path "$sdk" "cmdline-tools")
$latest = ($versions | Select-Object -Last 1)[0]
}
if (-not $IsMacOS -and -not $IsLinux) {
$ext = ".bat"
}
$sdkmanager = Join-Path "$latest" "bin" "sdkmanager$ext"
Set-Content -Value "y" -Path "yes.txt"
try {
if ($IsMacOS -or $IsLinux) {
sh -c "`"$sdkmanager`" `"platforms\;android-$API`" < yes.txt"
} else {
cmd /c "`"$sdkmanager`" `"platforms;android-$API`" < yes.txt"
}
} finally {
Remove-Item "yes.txt"
}
exit $LASTEXITCODE

Просмотреть файл

@ -0,0 +1,36 @@
$ErrorActionPreference = 'Stop'
if ("$env:ANDROID_HOME" -and "$env:ANDROID_SDK_ROOT") {
Write-Host "Android SDK is already installed."
exit 0
}
# try use some environment variables
if ("$env:ANDROID_SDK_ROOT") {
$sdk = "$env:ANDROID_SDK_ROOT"
} elseif ("$env:ANDROID_HOME") {
$sdk = "$env:ANDROID_HOME"
}
# look in program files from VS
if (-not $IsMacOS -and -not $IsLinux) {
$pfsdk = Join-Path "${env:ProgramFiles(x86)}" "Android" "android-sdk"
$adb = Join-Path "$pfsdk" "platform-tools" "adb.exe"
if (Test-Path $adb) {
$sdk = $pfsdk
}
}
# for now just thro as most machines have the SDK somewhere
if (-not $sdk) {
Write-Error "TODO: actually install the Android SDK"
exit 1
}
# make sure that the SDK is in ANDROID_HOME and ANDROID_SDK_ROOT
Write-Host "##vso[task.setvariable variable=ANDROID_SDK_ROOT;]$sdk";
Write-Host "##vso[task.setvariable variable=ANDROID_HOME;]$sdk";
$env:ANDROID_SDK_ROOT = $sdk
$env:ANDROID_HOME = $sdk
exit $LASTEXITCODE

6
scripts/install-emsdk.sh Executable file
Просмотреть файл

@ -0,0 +1,6 @@
#!/usr/bin/env bash
set -e
git clone --branch $@ https://github.com/emscripten-core/emsdk ~/emsdk
~/emsdk/emsdk install $@
~/emsdk/emsdk activate $@

Просмотреть файл

@ -4,13 +4,19 @@ Param(
$ErrorActionPreference = 'Stop'
$uri = "https://xamarin.azureedge.net/GTKforWindows/Windows/gtk-sharp-$Version.msi"
$HOME_DIR = if ($env:HOME) { $env:HOME } else { $env:USERPROFILE }
$tempDir = Join-Path "$HOME_DIR" "gtk-sharp-temp"
$installer = Join-Path "$tempDir" "gtk-sharp.msi"
New-Item -ItemType Directory -Force -Path $tempDir | Out-Null
Write-Host "Downloading GTK# Installer: $uri..."
.\scripts\download-file.ps1 -Uri $uri -OutFile $installer
$p = "$env:BUILD_SOURCESDIRECTORY\output\logs\install-logs"
New-Item -ItemType Directory -Force -Path $p | Out-Null
$uri = "https://xamarin.azureedge.net/GTKforWindows/Windows/gtk-sharp-$Version.msi"
msiexec /i $installer /norestart /quiet /l* $p\gtk-sharp-install.log
.\scripts\download-file.ps1 -Uri $uri -OutFile gtk-sharp.msi
msiexec /i gtk-sharp.msi /norestart /quiet /l* $p\gtk-sharp-install.log
exit $LASTEXITCODE
exit $LASTEXITCODE

Просмотреть файл

@ -1,5 +1,5 @@
Param(
[string] $Version = "11.1.0",
[string] $Version = "12.0.0",
[string] $InstallDestination = "C:\Program Files\LLVM"
)

11
scripts/install-mono.sh Executable file
Просмотреть файл

@ -0,0 +1,11 @@
#!/usr/bin/env bash
set -e
sudo apt remove -y mono-complete msbuild
sudo apt autoremove -y
sudo rm /etc/mono/config
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/ubuntu $@ main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
sudo apt update
sudo apt install -y mono-complete msbuild
mono --version

28
scripts/install-nuget.ps1 Normal file
Просмотреть файл

@ -0,0 +1,28 @@
Param(
[string] $Version = 'latest'
)
$ErrorActionPreference = 'Stop'
try {
nuget
Write-Host "NuGet already installed."
exit 0
} catch {
# no op
}
$uri = "https://dist.nuget.org/win-x86-commandline/$Version/nuget.exe"
$HOME_DIR = if ($env:HOME) { $env:HOME } else { $env:USERPROFILE }
$destDir = Join-Path "$HOME_DIR" "nuget"
$exe = Join-Path "$destDir" "nuget.exe"
New-Item -ItemType Directory -Force -Path $destDir | Out-Null
Write-Host "Downloading NuGet: $uri..."
.\scripts\download-file.ps1 -Uri $uri -OutFile $exe
Write-Host "##vso[task.setvariable variable=PATH;]$destDir;$env:PATH";
$env:PATH = "$destDir;$env:PATH"
exit $LASTEXITCODE

Просмотреть файл

@ -1,4 +1,5 @@
Param(
[string] $Version = '11.0.14.9.1',
[string] $InstallDestination = $null
)
@ -8,16 +9,15 @@ Add-Type -AssemblyName System.IO.Compression.FileSystem
$HOME_DIR = if ($env:HOME) { $env:HOME } else { $env:USERPROFILE }
$version = "13.0.2"
if ($IsMacOS) {
$ext = "tar.gz"
$url = "https://download.java.net/java/GA/jdk13.0.2/d4173c853231432d94f001e99d882ca7/8/GPL/openjdk-13.0.2_osx-x64_bin.tar.gz"
$url = "https://aka.ms/download-jdk/microsoft-jdk-$Version-macOS-x64.tar.gz"
} elseif ($IsLinux) {
$ext = "tar.gz"
$url = "https://download.java.net/java/GA/jdk13.0.2/d4173c853231432d94f001e99d882ca7/8/GPL/openjdk-13.0.2_linux-x64_bin.tar.gz"
$url = "https://aka.ms/download-jdk/microsoft-jdk-$Version-linux-x64.tar.gz"
} else {
$ext = "zip"
$url = "https://download.java.net/java/GA/jdk13.0.2/d4173c853231432d94f001e99d882ca7/8/GPL/openjdk-13.0.2_windows-x64_bin.zip"
$url = "https://aka.ms/download-jdk/microsoft-jdk-$Version-windows-x64.zip"
}
$jdk = Join-Path "$HOME_DIR" "openjdk"
@ -44,15 +44,21 @@ if ($IsMacOS -or $IsLinux) {
}
# set the JAVA_HOME
$VersionParts = $Version.Split(".")
$FolderVersion = "$($VersionParts[0]).$($VersionParts[1]).$($VersionParts[2])+$($VersionParts[3])"
if ($IsMacOS) {
$java_home = Join-Path "$jdk" "jdk-$version.jdk/Contents/Home"
$java_home = Join-Path "$jdk" "jdk-$FolderVersion/Contents/Home"
} else {
$java_home = Join-Path "$jdk" "jdk-$version"
$java_home = Join-Path "$jdk" "jdk-$FolderVersion"
}
Write-Host "##vso[task.setvariable variable=JAVA_HOME;]$java_home"
$env:JAVA_HOME = "$java_home"
# make sure that JAVA_HOME/bin is in the PATH
$javaBin = Join-Path "$java_home" "bin"
Write-Host "##vso[task.setvariable variable=PATH;]$javaBin;$env:PATH";
$env:PATH = "$env:JAVA_HOME\bin;$env:PATH"
java -version
exit $LASTEXITCODE

Просмотреть файл

@ -0,0 +1,67 @@
Param(
[string] $Version = '3.10.2',
[string] $Arch = 'x64'
)
$ErrorActionPreference = 'Stop'
Add-Type -AssemblyName System.IO.Compression.FileSystem
$HOME_DIR = if ($env:HOME) { $env:HOME } else { $env:USERPROFILE }
$destDir = Join-Path "$env:AGENT_TOOLSDIRECTORY" "Python" "$Version" "$Arch"
$completeFile = "$destDir.complete"
if (Test-Path $completeFile) {
Write-Host "Python $Version ($Arch) already installed."
exit 0;
} else {
Write-Host "No matching Python found."
}
Write-Host "Downloading manifest..."
$pythonManifestUri = "https://raw.githubusercontent.com/actions/python-versions/main/versions-manifest.json"
$pythonManifest = Invoke-WebRequest -Uri $pythonManifestUri | ConvertFrom-Json
if ($IsMacOS) {
$platform = "darwin"
} elseif ($IsLinux) {
$platform = "linux"
} else {
$platform = "win32"
}
$downloadUrl = (($pythonManifest
| Where-Object { $_.version -eq $Version }
| Select-Object -First 1).files
| Where-Object { $_.platform -eq $platform -and $_.arch -eq $Arch }
| Select-Object -First 1).download_url
# download
$tempDir = Join-Path "$HOME_DIR" "python-temp"
$archive = Join-Path "$tempDir" (Split-Path $downloadUrl -Leaf)
New-Item -ItemType Directory -Force -Path "$tempDir" | Out-Null
Write-Host "Downloading Python package '$downloadUrl' to '$archive'..."
(New-Object System.Net.WebClient).DownloadFile("$downloadUrl", "$archive")
# extract
Write-Host "Extracting Python to '$tempDir'..."
if ($IsMacOS -or $IsLinux) {
tar -vxzf "$archive" -C "$tempDir"
} else {
[System.IO.Compression.ZipFile]::ExtractToDirectory("$archive", "$tempDir")
}
Write-Host "Extraction complete."
# install
Write-Host "Installing Python..."
try {
Push-Location "$tempDir"
.\setup.ps1
} finally {
Pop-Location
}
exit $LASTEXITCODE

Просмотреть файл

@ -1,15 +1,22 @@
Param(
[string] $Version = "17/pre"
[string] $Version = "17/pre",
[string] $TestPath = "2022\Preview"
)
$ErrorActionPreference = 'Stop'
$fullPath = "C:\Program Files\Microsoft Visual Studio\$TestPath\Common7\IDE\devenv.exe"
if (Test-Path $fullPath) {
Write-Host "Visual Studio $($TestPath.Replace('\',' ')) ($Version) already installed."
exit 0
}
$startTime = Get-Date
Write-Host "Downloading Visual Studio Installer..."
Invoke-WebRequest -UseBasicParsing `
-Uri "https://aka.ms/vs/install/latest/vs_setup.exe" `
-OutFile "$env:TEMP\dd_vs_setup.exe"
-Uri "https://aka.ms/vs/install/latest/vs_setup.exe" `
-OutFile "$env:TEMP\dd_vs_setup.exe"
Write-Host "Updating the Visual Studio Installer..."
$exitCode = & "$env:TEMP\dd_vs_setup.exe" --update --quiet --wait | Out-Null
@ -18,8 +25,8 @@ Write-Host "Exit code: $exitCode"
Write-Host "Downloading Visual Studio ($Version)..."
Invoke-WebRequest -UseBasicParsing `
-Uri "https://aka.ms/vs/$Version/vs_community.exe" `
-OutFile "$env:TEMP\dd_vs_community.exe"
-Uri "https://aka.ms/vs/$Version/vs_community.exe" `
-OutFile "$env:TEMP\dd_vs_community.exe"
Write-Host "Installing Visual Studio..."
$exitCode = & "$env:TEMP\dd_vs_community.exe" --quiet --norestart --wait `

Просмотреть файл

@ -1,21 +1,40 @@
Param(
[string] $LinkId
[string] $LinkId,
[string] $Version = ''
)
$ErrorActionPreference = 'Stop'
Write-Host "Installed Windows SDKs:"
Get-ChildItem -Name "${env:ProgramFiles(x86)}\Windows Kits\10\Lib"
$sdkLibDir = "${env:ProgramFiles(x86)}\Windows Kits\10\Lib"
$sdkWinmdDir = "${env:ProgramFiles(x86)}\Windows Kits\10\UnionMetadata"
$installedLibs = @()
$installedWinmds = @()
$installedSdks = @()
$installedLibs += (Get-ChildItem -Name "$sdkLibDir")
if (Test-Path (Join-Path "$sdkWinmdDir" "Windows.winmd")) {
$installedWinmds += @("10.0.10240.0")
}
$installedWinmds += (Get-ChildItem -Name "$sdkWinmdDir\10.0.*")
$installedSdks = $installedLibs | Where-Object { $installedWinmds -contains $_ }
if ($Version -and ($installedSdks -contains $Version)) {
Write-Host "Windows SDK $Version already installed."
exit 0
}
$uri = "https://go.microsoft.com/fwlink/p/?LinkId=$LinkId"
$HOME_DIR = if ($env:HOME) { $env:HOME } else { $env:USERPROFILE }
$tempDir = Join-Path "$HOME_DIR" "sdksetup-$LinkId-temp"
$installer = Join-Path "$tempDir" "sdksetup-$LinkId.exe"
New-Item -ItemType Directory -Force -Path $tempDir | Out-Null
Write-Host "Downloading Windows SDK Installer: $uri..."
.\scripts\download-file.ps1 -Uri $uri -OutFile sdksetup.exe
.\scripts\download-file.ps1 -Uri $uri -OutFile $installer
Write-Host "Installing Windows SDK..."
.\sdksetup.exe /norestart /quiet | Out-Null
Write-Host "Installed Windows SDKs:"
Get-ChildItem -Name "${env:ProgramFiles(x86)}\Windows Kits\10\Lib"
& $installer /norestart /quiet | Out-Null
exit $LASTEXITCODE

Просмотреть файл

@ -1,7 +1,3 @@
Param(
[string] $Version = "17/pre"
)
$ErrorActionPreference = 'Stop'
$vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
@ -10,7 +6,7 @@ Write-Host "Setting Environment Variables..."
$installationPath = & $vswhere -latest -prerelease -property installationPath
Write-Host "##vso[task.prependpath]$installationPath\MSBuild\Current\Bin"
Write-Host "##vso[task.setvariable variable=VS_INSTALL]$installationPath"
Write-Host "##vso[task.setvariable variable=VSINSTALLDIR]$installationPath"
$env:VS_INSTALL = $installationPath
Write-Host "Installed Visual Studio Versions:"
& $vswhere -all -prerelease -property installationPath

Просмотреть файл

@ -1,6 +1,6 @@
<Project Sdk="MSBuild.Sdk.Extras/3.0.44">
<PropertyGroup>
<TargetFramework>monoandroid9.0</TargetFramework>
<TargetFramework>monoandroid10.0</TargetFramework>
<RootNamespace>SkiaSharp.Views.Forms</RootNamespace>
<AssemblyName>SkiaSharp.Views.Forms</AssemblyName>
<SignAssembly>false</SignAssembly>

Просмотреть файл

@ -1,6 +1,6 @@
<Project Sdk="MSBuild.Sdk.Extras/3.0.44">
<PropertyGroup>
<TargetFramework>monoandroid9.0</TargetFramework>
<TargetFramework>monoandroid10.0</TargetFramework>
<RootNamespace>SkiaSharp.Views.Android</RootNamespace>
<AssemblyName>SkiaSharp.Views.Android</AssemblyName>
<PackagingGroup>SkiaSharp.Views</PackagingGroup>