diff --git a/.gitignore b/.gitignore index bae5bb22d..ef7be5f3a 100644 --- a/.gitignore +++ b/.gitignore @@ -61,7 +61,6 @@ cmake/ [Rr]eleases/ x64/ x86/ -build/ bld/ [Bb]in/ [Oo]bj/ diff --git a/build.proj b/build.proj index 6fe36e4eb..5ea2e224f 100644 --- a/build.proj +++ b/build.proj @@ -1,5 +1,6 @@ + + + + + + + + + + + $(RepoRoot)/artifacts/$(Rid) + $(BaseOutputDirectory)/stage2 + $(BaseOutputDirectory)/stage2compilation + $(BaseOutputDirectory)/intermediate + + + + + + + + + @(BuildVersion ->'%(NugetVersion)') + Microsoft .NET Core 1.0.0 - SDK Preview 2 + + + \ No newline at end of file diff --git a/build_projects/dotnet-cli-build/Architecture.cs b/build_projects/dotnet-cli-build/Architecture.cs new file mode 100644 index 000000000..d807a1032 --- /dev/null +++ b/build_projects/dotnet-cli-build/Architecture.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Runtime.InteropServices; +using System.Net.Http; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; +using Microsoft.DotNet.InternalAbstractions; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; + +namespace Microsoft.DotNet.Cli.Build +{ + public class Architecture : Task + { + [Output] + public string OutputArchitecture { get; set; } + + public override bool Execute() + { + OutputArchitecture = RuntimeEnvironment.RuntimeArchitecture; + + return true; + } + } +} diff --git a/build_projects/dotnet-cli-build/GenerateBuildVersion.cs b/build_projects/dotnet-cli-build/GenerateBuildVersion.cs new file mode 100644 index 000000000..c08887fc4 --- /dev/null +++ b/build_projects/dotnet-cli-build/GenerateBuildVersion.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Runtime.InteropServices; +using System.Net.Http; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; +using Microsoft.DotNet.InternalAbstractions; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; +using System.Security.Cryptography; + +using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; + +namespace Microsoft.DotNet.Cli.Build +{ + public class GenerateBuildVersionInfo : Task + { + [Required] + public string RepoRoot { get; set; } + + [Output] + public ITaskItem OutputBuildVersionInfo { get; set; } + + public override bool Execute() + { + var branchInfo = new BranchInfo(RepoRoot); + + var commitCount = GitUtils.GetCommitCount(); + var commitHash = GitUtils.GetCommitHash(); + + var buildVersion = new BuildVersion() + { + Major = int.Parse(branchInfo.Entries["MAJOR_VERSION"]), + Minor = int.Parse(branchInfo.Entries["MINOR_VERSION"]), + Patch = int.Parse(branchInfo.Entries["PATCH_VERSION"]), + ReleaseSuffix = branchInfo.Entries["RELEASE_SUFFIX"], + CommitCount = commitCount + }; + + OutputBuildVersionInfo = ConstructBuildVersionInfoItem(buildVersion, commitHash); + + return true; + } + + private ITaskItem ConstructBuildVersionInfoItem(BuildVersion buildVersion, string commitHash) + { + var versionInfo = new TaskItem(); + versionInfo.ItemSpec = "BuildVersionInfo"; + + versionInfo.SetMetadata("CommitHash", commitHash); + versionInfo.SetMetadata("Major", buildVersion.Major.ToString()); + versionInfo.SetMetadata("Minor", buildVersion.Minor.ToString()); + versionInfo.SetMetadata("Patch", buildVersion.Patch.ToString()); + versionInfo.SetMetadata("ReleaseSuffix", buildVersion.ReleaseSuffix); + versionInfo.SetMetadata("CommitCount", buildVersion.CommitCountString); + versionInfo.SetMetadata("VersionSuffix", buildVersion.VersionSuffix); + versionInfo.SetMetadata("SimpleVersion", buildVersion.SimpleVersion); + versionInfo.SetMetadata("NugetVersion", buildVersion.NuGetVersion); + versionInfo.SetMetadata("MsiVersion", buildVersion.GenerateMsiVersion()); + + return versionInfo; + } + } +} diff --git a/build_projects/dotnet-cli-build/Rid.cs b/build_projects/dotnet-cli-build/Rid.cs new file mode 100644 index 000000000..f68513e7d --- /dev/null +++ b/build_projects/dotnet-cli-build/Rid.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Runtime.InteropServices; +using System.Net.Http; +using Microsoft.Build.Utilities; +using Microsoft.DotNet.Cli.Build.Framework; +using Microsoft.DotNet.InternalAbstractions; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers; + +namespace Microsoft.DotNet.Cli.Build +{ + public class Rid : Task + { + [Output] + public string OutputRid { get; set; } + + public override bool Execute() + { + OutputRid = RuntimeEnvironment.GetRuntimeIdentifier(); + + return true; + } + } +}