Skip to content

Commit

Permalink
Merge branch 'master' into enable-ready-to-run
Browse files Browse the repository at this point in the history
  • Loading branch information
filipw authored Dec 8, 2021
2 parents 43abbcb + 565ba9f commit ecc0e33
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 25 deletions.
50 changes: 27 additions & 23 deletions build.cake
Original file line number Diff line number Diff line change
Expand Up @@ -919,51 +919,51 @@ Task("PublishNet6Builds")
{
if (!Platform.Current.IsWindows)
{
PublishBuild(project, env, buildPlan, configuration, "linux-x64", "net6.0");
PublishBuild(project, env, buildPlan, configuration, "linux-arm64", "net6.0");
PublishBuild(project, env, buildPlan, configuration, "osx-x64", "net6.0");
PublishBuild(project, env, buildPlan, configuration, "osx-arm64", "net6.0");
PublishBuild(project, env, buildPlan, configuration, "linux-x64", "net6.0", includeMSBuild: false);
PublishBuild(project, env, buildPlan, configuration, "linux-arm64", "net6.0", includeMSBuild: false);
PublishBuild(project, env, buildPlan, configuration, "osx-x64", "net6.0", includeMSBuild: false);
PublishBuild(project, env, buildPlan, configuration, "osx-arm64", "net6.0", includeMSBuild: false);
}
else
{
PublishBuild(project, env, buildPlan, configuration, "win7-x86", "net6.0");
PublishBuild(project, env, buildPlan, configuration, "win7-x64", "net6.0");
PublishBuild(project, env, buildPlan, configuration, "win10-arm64", "net6.0");
PublishBuild(project, env, buildPlan, configuration, "win7-x86", "net6.0", includeMSBuild: false);
PublishBuild(project, env, buildPlan, configuration, "win7-x64", "net6.0", includeMSBuild: false);
PublishBuild(project, env, buildPlan, configuration, "win10-arm64", "net6.0", includeMSBuild: false);
}
}
else if (Platform.Current.IsWindows)
{
if (Platform.Current.IsX86)
{
PublishBuild(project, env, buildPlan, configuration, "win7-x86", "net6.0");
PublishBuild(project, env, buildPlan, configuration, "win7-x86", "net6.0", includeMSBuild: false);
}
else if (Platform.Current.IsX64)
{
PublishBuild(project, env, buildPlan, configuration, "win7-x64", "net6.0");
PublishBuild(project, env, buildPlan, configuration, "win7-x64", "net6.0", includeMSBuild: false);
}
else
{
PublishBuild(project, env, buildPlan, configuration, "win10-arm64", "net6.0");
PublishBuild(project, env, buildPlan, configuration, "win10-arm64", "net6.0", includeMSBuild: false);
}
}
else
{
if (Platform.Current.IsMacOS)
{
PublishBuild(project, env, buildPlan, configuration, "osx-x64", "net6.0");
PublishBuild(project, env, buildPlan, configuration, "osx-arm64", "net6.0");
PublishBuild(project, env, buildPlan, configuration, "osx-x64", "net6.0", includeMSBuild: false);
PublishBuild(project, env, buildPlan, configuration, "osx-arm64", "net6.0", includeMSBuild: false);
}
else
{
PublishBuild(project, env, buildPlan, configuration, "linux-x64", "net6.0");
PublishBuild(project, env, buildPlan, configuration, "linux-arm64", "net6.0");
PublishBuild(project, env, buildPlan, configuration, "linux-x64", "net6.0", includeMSBuild: false);
PublishBuild(project, env, buildPlan, configuration, "linux-arm64", "net6.0", includeMSBuild: false);
}
}

}
});

string PublishBuild(string project, BuildEnvironment env, BuildPlan plan, string configuration, string rid, string framework)
string PublishBuild(string project, BuildEnvironment env, BuildPlan plan, string configuration, string rid, string framework, bool includeMSBuild)
{
var projectName = project + ".csproj";
var projectFileName = CombinePaths(env.Folders.Source, project, projectName);
Expand All @@ -978,6 +978,7 @@ string PublishBuild(string project, BuildEnvironment env, BuildPlan plan, string
Framework = framework,
Runtime = rid, // TODO: With everything today do we need to publish this with a rid? This appears to be legacy bit when we used to push for all supported dotnet core rids.
PublishReadyToRun = true, // Improve startup performance by applying some AOT compilation
SelfContained = false, // Since we are specifying a runtime identifier this defaults to true. We don't need to ship a runtime for net6 because we require the .NET SDK to be installed.
Configuration = configuration,
OutputDirectory = outputFolder,
MSBuildSettings = new DotNetCoreMSBuildSettings()
Expand All @@ -997,8 +998,11 @@ string PublishBuild(string project, BuildEnvironment env, BuildPlan plan, string
throw;
}

// Copy MSBuild to output
DirectoryHelper.Copy($"{env.Folders.MSBuild}", CombinePaths(outputFolder, ".msbuild"));
if (includeMSBuild)
{
// Copy MSBuild to output
DirectoryHelper.Copy($"{env.Folders.MSBuild}", CombinePaths(outputFolder, ".msbuild"));
}

CopyExtraDependencies(env, outputFolder);
AddOmniSharpBindingRedirects(outputFolder);
Expand All @@ -1020,9 +1024,9 @@ Task("PublishWindowsBuilds")

if (publishAll)
{
var outputFolderX86 = PublishBuild(project, env, buildPlan, configuration, "win7-x86", "net472");
var outputFolderX64 = PublishBuild(project, env, buildPlan, configuration, "win7-x64", "net472");
var outputFolderArm64 = PublishBuild(project, env, buildPlan, configuration, "win10-arm64", "net472");
var outputFolderX86 = PublishBuild(project, env, buildPlan, configuration, "win7-x86", "net472", includeMSBuild: true);
var outputFolderX64 = PublishBuild(project, env, buildPlan, configuration, "win7-x64", "net472", includeMSBuild: true);
var outputFolderArm64 = PublishBuild(project, env, buildPlan, configuration, "win10-arm64", "net472", includeMSBuild: true);

outputFolder = Platform.Current.IsX86
? outputFolderX86
Expand All @@ -1032,15 +1036,15 @@ Task("PublishWindowsBuilds")
}
else if (Platform.Current.IsX86)
{
outputFolder = PublishBuild(project, env, buildPlan, configuration, "win7-x86", "net472");
outputFolder = PublishBuild(project, env, buildPlan, configuration, "win7-x86", "net472", includeMSBuild: true);
}
else if (Platform.Current.IsX64)
{
outputFolder = PublishBuild(project, env, buildPlan, configuration, "win7-x64", "net472");
outputFolder = PublishBuild(project, env, buildPlan, configuration, "win7-x64", "net472", includeMSBuild: true);
}
else
{
outputFolder = PublishBuild(project, env, buildPlan, configuration, "win10-arm64", "net472");
outputFolder = PublishBuild(project, env, buildPlan, configuration, "win10-arm64", "net472", includeMSBuild: true);
}

CreateRunScript(project, outputFolder, env.Folders.ArtifactsScripts);
Expand Down
6 changes: 6 additions & 0 deletions src/OmniSharp.Host/HostHelpers.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using Microsoft.Extensions.Logging;
using OmniSharp.MSBuild.Discovery;
using OmniSharp.Roslyn;
using OmniSharp.Utilities;

Expand Down Expand Up @@ -28,6 +29,11 @@ public static int Start(Func<int> action)

return action();
}
catch (MSBuildNotFoundException mnfe)
{
Console.Error.WriteLine(mnfe.Message);
return 0xbad;
}
catch (Exception e)
{
Console.Error.WriteLine(e.ToString());
Expand Down
2 changes: 1 addition & 1 deletion src/OmniSharp.Host/MSBuild/Discovery/Extensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ Try updating your MSBuild to version {minimumMSBuildVersion} or higher to enable
}
else
{
logger.LogError("Could not locate MSBuild instance to register with OmniSharp");
throw new MSBuildNotFoundException("Could not locate MSBuild instance to register with OmniSharp.");
}
}

Expand Down
19 changes: 19 additions & 0 deletions src/OmniSharp.Host/MSBuild/Discovery/MSBuildNotFoundException.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using System;

namespace OmniSharp.MSBuild.Discovery
{
internal class MSBuildNotFoundException : Exception
{
public MSBuildNotFoundException()
{
}

public MSBuildNotFoundException(string message) : base(message)
{
}

public MSBuildNotFoundException(string message, Exception innerException) : base(message, innerException)
{
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,17 @@ public override ImmutableArray<MSBuildInstance> GetInstances()
{

#if NETCOREAPP
const string DotNetSdkVersion = "6.0.100";

// Restrict instances to NET 6 SDK
var instances = MicrosoftBuildLocator.QueryVisualStudioInstances()
.Where(instance => instance.Version.Major == 6);
.Where(instance => instance.Version.ToString() == DotNetSdkVersion)
.ToImmutableArray();

if (instances.Length == 0)
{
Logger.LogError($"OmniSharp requires .NET SDK version '{DotNetSdkVersion}' be installed. Please visit https://dotnet.microsoft.com/download/dotnet/6.0 to download the .NET SDK.");
}
#else
if (!PlatformHelper.IsWindows)
{
Expand Down

0 comments on commit ecc0e33

Please sign in to comment.