#pragma warning disable CS1998 protected override async Task <bool> Execute(Context context) { string monoSourceDir = Configurables.Paths.MonoSourceFullPath; string javaInteropDir = Configurables.Paths.ExternalJavaInteropDir; LogStep(context, "Copying Mono.Cecil files"); Utilities.CopyFilesSimple( Directory.EnumerateFiles(Path.Combine(javaInteropDir, "external"), "Mono.Cecil*"), Path.Combine(monoSourceDir, "external") ); LogStep(context, "Copying code signing keys"); Utilities.CopyFileToDir(Path.Combine(javaInteropDir, "product.snk"), monoSourceDir); Utilities.CopyFileToDir( Path.Combine(monoSourceDir, "mcs", "class", "msfinal.pub"), BuildPaths.XamarinAndroidSourceRoot ); LogStep(context, "Configuring Java.Interop property overrides"); Utilities.CopyFileToDir( Path.Combine(Configurables.Paths.BuildToolsScriptsDir, "Configuration.Java.Interop.Override.props"), javaInteropDir, "Configuration.Override.props" ); return(true); }
protected override async Task <bool> Execute(Context context) { var dotnetPath = context.Properties.GetRequiredValue(KnownProperties.DotNetPreviewPath); dotnetPath = dotnetPath.TrimEnd(new char [] { Path.DirectorySeparatorChar }); var dotnetTool = Path.Combine(dotnetPath, "dotnet"); var dotnetPreviewVersion = context.Properties.GetRequiredValue(KnownProperties.MicrosoftDotnetSdkInternalPackageVersion); var dotnetTestRuntimeVersion = Configurables.Defaults.DotNetTestRuntimeVersion; // Always delete the ~/android-toolchain/dotnet/ directory Utilities.DeleteDirectory(dotnetPath); if (!await InstallDotNetAsync(context, dotnetPath, dotnetPreviewVersion)) { Log.ErrorLine($"Installation of dotnet SDK {dotnetPreviewVersion} failed."); return(false); } if (!await InstallDotNetAsync(context, dotnetPath, dotnetTestRuntimeVersion, runtimeOnly: true)) { Log.ErrorLine($"Installation of dotnet runtime {dotnetTestRuntimeVersion} failed."); return(false); } // Install runtime packs associated with the SDK previously installed. var packageDownloadProj = Path.Combine(BuildPaths.XamarinAndroidSourceRoot, "build-tools", "xaprepare", "xaprepare", "package-download.proj"); var logPath = Path.Combine(Configurables.Paths.BuildBinDir, $"msbuild-{context.BuildTimeStamp}-download-runtime-packs.binlog"); if (!Utilities.RunCommand(dotnetTool, new string [] { "restore", ProcessRunner.QuoteArgument(packageDownloadProj), ProcessRunner.QuoteArgument($"-bl:{logPath}") })) { Log.ErrorLine($"dotnet restore {packageDownloadProj} failed."); return(false); } // Copy the WorkloadManifest.* files from the latest Microsoft.NET.Workload.Mono.ToolChain listed in package-download.proj var destination = Path.Combine(dotnetPath, "sdk-manifests", context.Properties.GetRequiredValue(KnownProperties.DotNetPreviewVersionBand), "microsoft.net.workload.mono.toolchain" ); foreach (var file in Directory.GetFiles(Configurables.Paths.MicrosoftNETWorkloadMonoToolChainDir, "WorkloadManifest.*")) { Utilities.CopyFileToDir(file, destination); } return(true); }
protected override async Task <bool> Execute(Context context) { var dotnetPath = context.Properties.GetRequiredValue(KnownProperties.DotNetPreviewPath); dotnetPath = dotnetPath.TrimEnd(new char [] { Path.DirectorySeparatorChar }); var dotnetTool = Path.Combine(dotnetPath, "dotnet"); var dotnetPreviewVersion = context.Properties.GetRequiredValue(KnownProperties.MicrosoftDotnetSdkInternalPackageVersion); var dotnetTestRuntimeVersion = Configurables.Defaults.DotNetTestRuntimeVersion; // Delete any custom Microsoft.Android packs that may have been installed by test runs. Other ref/runtime packs will be ignored. var packsPath = Path.Combine(dotnetPath, "packs"); if (Directory.Exists(packsPath)) { foreach (var packToRemove in Directory.EnumerateDirectories(packsPath)) { var info = new DirectoryInfo(packToRemove); if (info.Name.IndexOf("Android", StringComparison.OrdinalIgnoreCase) != -1) { Log.StatusLine($"Removing Android pack: {packToRemove}"); Utilities.DeleteDirectory(packToRemove); } } } // Delete Workload manifests, such as sdk-manifests/6.0.100/Microsoft.NET.Sdk.Android var sdkManifestsPath = Path.Combine(dotnetPath, "sdk-manifests"); if (Directory.Exists(sdkManifestsPath)) { foreach (var versionBand in Directory.EnumerateDirectories(sdkManifestsPath)) { foreach (var workloadManifestDirectory in Directory.EnumerateDirectories(versionBand)) { var info = new DirectoryInfo(workloadManifestDirectory); if (info.Name.IndexOf("Android", StringComparison.OrdinalIgnoreCase) != -1) { Log.StatusLine($"Removing Android manifest directory: {workloadManifestDirectory}"); Utilities.DeleteDirectory(workloadManifestDirectory); } } } } // Delete any unnecessary SDKs if they exist. var sdkPath = Path.Combine(dotnetPath, "sdk"); if (Directory.Exists(sdkPath)) { foreach (var sdkToRemove in Directory.EnumerateDirectories(sdkPath).Where(s => new DirectoryInfo(s).Name != dotnetPreviewVersion)) { Log.StatusLine($"Removing out of date SDK: {sdkToRemove}"); Utilities.DeleteDirectory(sdkToRemove); } } // Delete Android template-packs var templatePacksPath = Path.Combine(dotnetPath, "template-packs"); if (Directory.Exists(templatePacksPath)) { foreach (var templateToRemove in Directory.EnumerateFiles(templatePacksPath)) { var name = Path.GetFileName(templateToRemove); if (name.IndexOf("Android", StringComparison.OrdinalIgnoreCase) != -1) { Log.StatusLine($"Removing Android template: {templateToRemove}"); Utilities.DeleteFile(templateToRemove); } } } if (File.Exists(dotnetTool)) { if (!TestDotNetSdk(dotnetTool)) { Log.WarningLine($"Attempt to run `dotnet --version` failed, reinstalling the SDK."); Utilities.DeleteDirectory(dotnetPath); } } if (!await InstallDotNetAsync(context, dotnetPath, dotnetPreviewVersion)) { Log.ErrorLine($"Installation of dotnet SDK {dotnetPreviewVersion} failed."); return(false); } if (!await InstallDotNetAsync(context, dotnetPath, dotnetTestRuntimeVersion, runtimeOnly: true)) { Log.ErrorLine($"Installation of dotnet runtime {dotnetTestRuntimeVersion} failed."); return(false); } // Install runtime packs associated with the SDK previously installed. var packageDownloadProj = Path.Combine(BuildPaths.XamarinAndroidSourceRoot, "build-tools", "xaprepare", "xaprepare", "package-download.proj"); var logPath = Path.Combine(Configurables.Paths.BuildBinDir, $"msbuild-{context.BuildTimeStamp}-download-runtime-packs.binlog"); if (!Utilities.RunCommand(dotnetTool, new string [] { "restore", ProcessRunner.QuoteArgument(packageDownloadProj), ProcessRunner.QuoteArgument($"-bl:{logPath}") })) { Log.ErrorLine($"dotnet restore {packageDownloadProj} failed."); return(false); } // Copy the WorkloadManifest.* files from the latest Microsoft.NET.Workload.Mono.ToolChain listed in package-download.proj var destination = Path.Combine(dotnetPath, "sdk-manifests", context.Properties.GetRequiredValue(KnownProperties.DotNetPreviewVersionBand), "microsoft.net.workload.mono.toolchain" ); foreach (var file in Directory.GetFiles(Configurables.Paths.MicrosoftNETWorkloadMonoToolChainDir, "WorkloadManifest.*")) { Utilities.CopyFileToDir(file, destination); } // Install the microsoft-net-runtime-android workload if (!Utilities.RunCommand(dotnetTool, BuildPaths.XamarinAndroidSourceRoot, ignoreEmptyArguments: false, new [] { "workload", "install", "microsoft-net-runtime-android", "--skip-manifest-update", "--verbosity", "diag" })) { Log.ErrorLine($"dotnet workload install failed."); return(false); } return(true); }