
Update .exe's project.json Target Framework from dnxcore50 to netstandardapp1.5. Update .dll's project.json Target Framework from dnxcore50 to netstandard1.3. Adding workaround for DataContractSerialization to src\dotnet\project.json to fix crossgen issue. Build 23901 has a dependency issue that doesn't allow the runtime.any.System.Private.DataContractSerialization package to be restored. When we move to a new build of CoreFX we should take this workaround out.
81 lines
3.7 KiB
C#
81 lines
3.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Runtime.InteropServices;
|
|
using Microsoft.DotNet.Cli.Build.Framework;
|
|
using Microsoft.Extensions.PlatformAbstractions;
|
|
|
|
using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers;
|
|
|
|
namespace Microsoft.DotNet.Cli.Build
|
|
{
|
|
public static class PublishTargets
|
|
{
|
|
[Target(nameof(PrepareTargets.Init))]
|
|
public static BuildTargetResult Publish(BuildTargetContext c)
|
|
{
|
|
if (string.Equals(Environment.GetEnvironmentVariable("DOTNET_BUILD_SKIP_PACKAGING"), "1", StringComparison.Ordinal))
|
|
{
|
|
c.Info("Skipping packaging because DOTNET_BUILD_SKIP_PACKAGING is set");
|
|
return c.Success();
|
|
}
|
|
|
|
// NOTE(anurse): Currently, this just invokes the remaining build scripts as-is. We should port those to C# as well, but
|
|
// I want to get the merged in.
|
|
|
|
// Set up the environment variables previously defined by common.sh/ps1
|
|
// This is overkill, but I want to cover all the variables used in all OSes (including where some have the same names)
|
|
var buildVersion = c.BuildContext.Get<BuildVersion>("BuildVersion");
|
|
var configuration = c.BuildContext.Get<string>("Configuration");
|
|
var architecture = PlatformServices.Default.Runtime.RuntimeArchitecture;
|
|
var env = new Dictionary<string, string>()
|
|
{
|
|
{ "RID", PlatformServices.Default.Runtime.GetRuntimeIdentifier() },
|
|
{ "OSNAME", PlatformServices.Default.Runtime.OperatingSystem },
|
|
{ "TFM", "netstandardapp1.5" },
|
|
{ "OutputDir", Dirs.Output },
|
|
{ "Stage1Dir", Dirs.Stage1 },
|
|
{ "Stage1CompilationDir", Dirs.Stage1Compilation },
|
|
{ "Stage2Dir", Dirs.Stage2 },
|
|
{ "STAGE2_DIR", Dirs.Stage2 },
|
|
{ "Stage2CompilationDir", Dirs.Stage2Compilation },
|
|
{ "HostDir", Dirs.Corehost },
|
|
{ "PackageDir", Path.Combine(Dirs.Packages, "dnvm") }, // Legacy name
|
|
{ "TestBinRoot", Dirs.TestOutput },
|
|
{ "TestPackageDir", Dirs.TestPackages },
|
|
{ "MajorVersion", buildVersion.Major.ToString() },
|
|
{ "MinorVersion", buildVersion.Minor.ToString() },
|
|
{ "PatchVersion", buildVersion.Patch.ToString() },
|
|
{ "CommitCountVersion", buildVersion.CommitCountString },
|
|
{ "COMMIT_COUNT_VERSION", buildVersion.CommitCountString },
|
|
{ "DOTNET_CLI_VERSION", buildVersion.SimpleVersion },
|
|
{ "DOTNET_MSI_VERSION", buildVersion.GenerateMsiVersion() },
|
|
{ "VersionSuffix", buildVersion.VersionSuffix },
|
|
{ "CONFIGURATION", configuration },
|
|
{ "ARCHITECTURE", architecture }
|
|
};
|
|
|
|
if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
|
|
{
|
|
env["OSNAME"] = "osx";
|
|
}
|
|
|
|
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
|
|
{
|
|
Cmd("powershell", "-NoProfile", "-NoLogo", Path.Combine(c.BuildContext.BuildDirectory, "scripts", "package", "package.ps1"))
|
|
.Environment(env)
|
|
.Execute()
|
|
.EnsureSuccessful();
|
|
}
|
|
else
|
|
{
|
|
// Can directly execute scripts on Unix :). Thank you shebangs!
|
|
Cmd(Path.Combine(c.BuildContext.BuildDirectory, "scripts", "package", "package.sh"))
|
|
.Environment(env)
|
|
.Execute()
|
|
.EnsureSuccessful();
|
|
}
|
|
return c.Success();
|
|
}
|
|
}
|
|
}
|