Merge pull request #1408 from dotnet/davidfowl/build-cleanup

More build and project clean up
This commit is contained in:
David Fowler 2016-02-15 13:41:32 -08:00
commit c9cf2585a0
15 changed files with 160 additions and 173 deletions

View file

@ -33,6 +33,8 @@ namespace Microsoft.DotNet.Cli.Build.Framework
_maxTargetLen = targets.Values.Select(t => t.Name.Length).Max();
}
public T Get<T>(string name) => (T)this[name];
public BuildTargetResult RunTarget(string name) => RunTarget(name, force: false);
public BuildTargetResult RunTarget(string name, bool force)

View file

@ -1,9 +1,9 @@
using Microsoft.DotNet.Cli.Build.Framework;
using Microsoft.Extensions.PlatformAbstractions;
using System;
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.FS;
using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers;
@ -63,7 +63,7 @@ namespace Microsoft.DotNet.Cli.Build
Rmdir(cmakeOut);
Mkdirp(cmakeOut);
var configuration = (string)c.BuildContext["Configuration"];
var configuration = c.BuildContext.Get<string>("Configuration");
// Run the build
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
@ -120,13 +120,14 @@ namespace Microsoft.DotNet.Cli.Build
[Target]
public static BuildTargetResult CompileStage2(BuildTargetContext c)
{
var configuration = (string)c.BuildContext["Configuration"];
var configuration = c.BuildContext.Get<string>("Configuration");
CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "src"));
CleanBinObj(c, Path.Combine(c.BuildContext.BuildDirectory, "test"));
var result = CompileStage(c,
dotnet: DotNetCli.Stage1,
outputDir: Dirs.Stage2);
if (!result.Success)
{
return result;
@ -137,7 +138,7 @@ namespace Microsoft.DotNet.Cli.Build
{
var packagingOutputDir = Path.Combine(Dirs.Stage2Compilation, "forPackaging");
Mkdirp(packagingOutputDir);
foreach(var project in ProjectsToPack)
foreach (var project in ProjectsToPack)
{
// Just build them, we'll pack later
DotNetCli.Stage1.Build(
@ -158,9 +159,7 @@ namespace Microsoft.DotNet.Cli.Build
{
Rmdir(outputDir);
dotnet.SetDotNetHome();
var configuration = (string)c.BuildContext["Configuration"];
var configuration = c.BuildContext.Get<string>("Configuration");
var binDir = Path.Combine(outputDir, "bin");
var runtimeOutputDir = Path.Combine(outputDir, "runtime", "coreclr");
@ -210,7 +209,7 @@ namespace Microsoft.DotNet.Cli.Build
File.Copy(Path.Combine(Dirs.Corehost, $"{Constants.DynamicLibPrefix}hostpolicy{Constants.DynamicLibSuffix}"), Path.Combine(binDir, $"{Constants.DynamicLibPrefix}hostpolicy{Constants.DynamicLibSuffix}"), overwrite: true);
// Corehostify binaries
foreach(var binaryToCorehostify in BinariesForCoreHost)
foreach (var binaryToCorehostify in BinariesForCoreHost)
{
try
{
@ -219,7 +218,7 @@ namespace Microsoft.DotNet.Cli.Build
File.Delete(Path.Combine(binDir, $"{binaryToCorehostify}.exe"));
File.Copy(Path.Combine(binDir, $"corehost{Constants.ExeSuffix}"), Path.Combine(binDir, binaryToCorehostify + Constants.ExeSuffix));
}
catch(Exception ex)
catch (Exception ex)
{
return c.Failed($"Failed to corehostify '{binaryToCorehostify}': {ex.ToString()}");
}
@ -234,13 +233,13 @@ namespace Microsoft.DotNet.Cli.Build
// Copy AppDeps
result = CopyAppDeps(c, binDir);
if(!result.Success)
if (!result.Success)
{
return result;
}
// Generate .version file
var version = ((BuildVersion)c.BuildContext["BuildVersion"]).SimpleVersion;
var version = c.BuildContext.Get<BuildVersion>("BuildVersion").SimpleVersion;
var content = $@"{c.BuildContext["CommitHash"]}{Environment.NewLine}{version}{Environment.NewLine}";
File.WriteAllText(Path.Combine(outputDir, ".version"), content);

View file

@ -25,10 +25,11 @@ namespace Microsoft.DotNet.Cli.Build
var configEnv = Environment.GetEnvironmentVariable("CONFIGURATION");
if(string.IsNullOrEmpty(configEnv))
if (string.IsNullOrEmpty(configEnv))
{
configEnv = "Debug";
}
c.BuildContext["Configuration"] = configEnv;
c.Info($"Building {c.BuildContext["Configuration"]} to: {Dirs.Output}");
@ -160,22 +161,22 @@ cmake is required to build the native host 'corehost'";
try
{
// Read the cache file
if(File.Exists(cacheTimeFile))
if (File.Exists(cacheTimeFile))
{
var content = File.ReadAllText(cacheTimeFile);
if(!string.IsNullOrEmpty(content))
if (!string.IsNullOrEmpty(content))
{
cacheTime = DateTime.ParseExact("O", content, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal);
}
}
}
catch(Exception ex)
catch (Exception ex)
{
c.Warn($"Error reading NuGet cache time file, leaving the cache alone");
c.Warn($"Error Detail: {ex.ToString()}");
}
if(cacheTime == null || (cacheTime.Value.AddHours(cacheExpiration) < DateTime.UtcNow))
if (cacheTime == null || (cacheTime.Value.AddHours(cacheExpiration) < DateTime.UtcNow))
{
// Cache has expired or the status is unknown, clear it and write the file
c.Info("Clearing NuGet cache");
@ -204,9 +205,9 @@ cmake is required to build the native host 'corehost'";
var lines = File.ReadAllLines(path);
var dict = new Dictionary<string, string>();
c.Verbose("Branch Info:");
foreach(var line in lines)
foreach (var line in lines)
{
if(!line.Trim().StartsWith("#") && !string.IsNullOrWhiteSpace(line))
if (!line.Trim().StartsWith("#") && !string.IsNullOrWhiteSpace(line))
{
var splat = line.Split(new[] { '=' }, 2);
dict[splat[0]] = splat[1];

View file

@ -1,9 +1,9 @@
using Microsoft.DotNet.Cli.Build.Framework;
using Microsoft.Extensions.PlatformAbstractions;
using System;
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;
@ -19,7 +19,7 @@ namespace Microsoft.DotNet.Cli.Build
// 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 = (BuildVersion)c.BuildContext["BuildVersion"];
var buildVersion = c.BuildContext.Get<BuildVersion>("BuildVersion");
var env = new Dictionary<string, string>()
{
{ "RID", PlatformServices.Default.Runtime.GetRuntimeIdentifier() },

View file

@ -1,13 +1,13 @@
using Microsoft.DotNet.Cli.Build.Framework;
using System;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using Microsoft.DotNet.Cli.Build.Framework;
using static Microsoft.DotNet.Cli.Build.FS;
using static Microsoft.DotNet.Cli.Build.Utils;
using static Microsoft.DotNet.Cli.Build.Framework.BuildHelpers;
using static Microsoft.DotNet.Cli.Build.Utils;
namespace Microsoft.DotNet.Cli.Build
{
@ -65,7 +65,7 @@ namespace Microsoft.DotNet.Cli.Build
foreach (var relativePath in TestPackageProjects)
{
var fullPath = Path.Combine(c.BuildContext.BuildDirectory, "TestAssets", "TestPackages", relativePath.Replace('/', Path.DirectorySeparatorChar));
c.Info("Packing: {fullPath}");
c.Info($"Packing: {fullPath}");
dotnet.Pack("--output", Dirs.TestPackages)
.WorkingDirectory(fullPath)
.Execute()
@ -95,7 +95,7 @@ namespace Microsoft.DotNet.Cli.Build
var dotnet = DotNetCli.Stage2;
foreach (var testProject in TestProjects)
{
c.Info("Building tests: {project}");
c.Info($"Building tests: {testProject}");
dotnet.Build()
.WorkingDirectory(Path.Combine(c.BuildContext.BuildDirectory, "test", testProject))
.Execute()
@ -155,17 +155,17 @@ namespace Microsoft.DotNet.Cli.Build
var consumers = Path.Combine(c.BuildContext.BuildDirectory, "test", "PackagedCommands", "Consumers");
// Compile the consumer apps
foreach(var dir in Directory.EnumerateDirectories(consumers))
foreach (var dir in Directory.EnumerateDirectories(consumers))
{
dotnet.Build().WorkingDirectory(dir).Execute().EnsureSuccessful();
}
// Test the apps
foreach(var dir in Directory.EnumerateDirectories(consumers))
foreach (var dir in Directory.EnumerateDirectories(consumers))
{
var result = dotnet.Exec("hello").WorkingDirectory(dir).CaptureStdOut().CaptureStdErr().Execute();
result.EnsureSuccessful();
if(!string.Equals("Hello", result.StdOut.Trim(), StringComparison.Ordinal))
if (!string.Equals("Hello", result.StdOut.Trim(), StringComparison.Ordinal))
{
var testName = Path.GetFileName(dir);
c.Error($"Packaged Commands Test '{testName}' failed");
@ -180,7 +180,7 @@ namespace Microsoft.DotNet.Cli.Build
[Target]
public static BuildTargetResult ValidateDependencies(BuildTargetContext c)
{
var configuration = (string)c.BuildContext["Configuration"];
var configuration = c.BuildContext.Get<string>("Configuration");
var dotnet = DotNetCli.Stage2;
c.Info("Publishing MultiProjectValidator");

View file

@ -20,11 +20,6 @@ namespace Microsoft.DotNet.Cli.Build
BinPath = binPath;
}
public void SetDotNetHome()
{
Environment.SetEnvironmentVariable("DOTNET_HOME", Path.GetDirectoryName(BinPath));
}
public Command Exec(string command, params string[] args)
{
return Command.Create(Path.Combine(BinPath, $"dotnet{Constants.ExeSuffix}"), Enumerable.Concat(new[] { command }, args));

View file

@ -9,13 +9,18 @@
"Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc2-16537"
},
"frameworks": {
"net451": {},
"net451": {
"frameworkAssemblies": {
"System.Runtime": {
"type": "build"
}
}
},
"dnxcore50": {
"imports": "portable-net45+win8",
"dependencies": {
"NETStandard.Library": "1.0.0-rc2-23811"
}
}
},
"scripts": {}
}
}

View file

@ -1,23 +1,20 @@
{
"version": "1.0.0-*",
"compilationOptions": {
"keyFile": "../../tools/Key.snk"
},
"dependencies": {
"NETStandard.Library": "1.0.0-rc2-23811",
"System.CommandLine": "0.1.0-e160119-1",
"Microsoft.CodeAnalysis.CSharp": "1.2.0-beta1-20160202-02",
"Microsoft.CodeAnalysis.CSharp": "1.2.0-beta1-20160202-02",
"Microsoft.DotNet.ProjectModel": "1.0.0-*",
"Microsoft.DotNet.Cli.Utils": "1.0.0-*",
"Microsoft.DotNet.Files": {"version": "1.0.0-*", "target": "project"}
"Microsoft.DotNet.Files": "1.0.0-*"
},
"frameworks": {
"dnxcore50": {
"imports": "portable-net45+win8"
}
},
"scripts": {
}
}
"scripts": {}
}

View file

@ -1,31 +1,20 @@
{
"version": "1.0.0-*",
"compilationOptions": {
"keyFile": "../../tools/Key.snk"
},
"description": "Abstraction to interact with the file system and file paths.",
"dependencies": {
"NETStandard.Library": "1.0.0-rc2-23811",
"System.Linq.Expressions": "4.0.11-rc2-23811",
"Microsoft.Extensions.FileSystemGlobbing": "1.0.0-rc2-15996",
"Microsoft.DotNet.Cli.Utils": {
"type": "build",
"version": "1.0.0-*"
"version": "1.0.0-*",
"compilationOptions": {
"keyFile": "../../tools/Key.snk"
},
"Microsoft.DotNet.ProjectModel": {
"type": "build",
"version": "1.0.0-*"
}
},
"frameworks": {
"dnxcore50": {
"imports": "portable-net45+win8"
}
},
"scripts": {
}
}
"description": "Abstraction to interact with the file system and file paths.",
"dependencies": {
"NETStandard.Library": "1.0.0-rc2-23811",
"System.Linq.Expressions": "4.0.11-rc2-23811",
"Microsoft.Extensions.FileSystemGlobbing": "1.0.0-rc2-15996",
"Microsoft.DotNet.Cli.Utils": "1.0.0-*",
"Microsoft.DotNet.ProjectModel": "1.0.0-*"
},
"frameworks": {
"dnxcore50": {
"imports": "portable-net45+win8"
}
},
"scripts": {}
}

View file

@ -13,4 +13,4 @@
"imports": "portable-net45+win8"
}
}
}
}

View file

@ -14,4 +14,4 @@
"imports": "portable-net45+win8"
}
}
}
}

View file

@ -5,8 +5,7 @@
},
"description": "Types to model a .NET Project",
"dependencies": {
"System.Reflection.Metadata": "1.2.0-rc3-23811",
"System.Reflection.Metadata": "1.2.0-rc3-23811",
"NuGet.Packaging": "3.4.0-beta-583",
"Microsoft.Extensions.FileSystemGlobbing": "1.0.0-rc2-15996",
"Microsoft.Extensions.JsonParser.Sources": {
@ -17,29 +16,32 @@
"type": "build",
"version": "1.0.0-rc2-16054"
},
"Microsoft.Extensions.DependencyModel": {
"type": "build",
"version": "1.0.0-*"
}
"Microsoft.Extensions.DependencyModel": "1.0.0-*"
},
"frameworks": {
"net451": {
"frameworkAssemblies": {
"System.IO": ""
}
},
"net451": {
"frameworkAssemblies": {
"System.Runtime": {
"type": "build"
},
"System.Collections": {
"type": "build"
},
"System.IO": {
"type": "build"
}
}
},
"dnxcore50": {
"imports": "portable-net45+win8",
"dependencies": {
"NETStandard.Library": "1.0.0-rc2-23811",
"System.Dynamic.Runtime": "4.0.11-rc2-23811",
"System.Runtime.Loader": "4.0.0-rc2-23811",
"System.Security.Cryptography.Algorithms": "4.0.0-rc2-23811",
"Microsoft.CSharp": "4.0.1-rc2-23811",
"System.Xml.XDocument": "4.0.11-rc2-23811"
"imports": "portable-net45+win8",
"dependencies": {
"NETStandard.Library": "1.0.0-rc2-23811",
"System.Dynamic.Runtime": "4.0.11-rc2-23811",
"System.Runtime.Loader": "4.0.0-rc2-23811",
"System.Security.Cryptography.Algorithms": "4.0.0-rc2-23811",
"Microsoft.CSharp": "4.0.1-rc2-23811",
"System.Xml.XDocument": "4.0.11-rc2-23811"
}
}
}
},
"scripts": {
}
}
}

View file

@ -3,14 +3,12 @@
"compilationOptions": {
"emitEntryPoint": true
},
"dependencies": {
"NETStandard.Library" : "1.0.0-rc2-23811"
"NETStandard.Library": "1.0.0-rc2-23811"
},
"frameworks": {
"dnxcore50": {
"imports": "portable-net45+win8"
}
}
}
}

View file

@ -1,42 +1,41 @@
{
"description": "Abstractions for reading `.deps` files.",
"version": "1.0.0-*",
"repository": {
"type": "git",
"url": "git://github.com/dotnet/cli"
},
"compilationOptions": {
"warningsAsErrors": true,
"keyFile": "../../tools/Key.snk"
},
"dependencies": {
"Newtonsoft.Json": "7.0.1",
"Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc2-16537"
},
"frameworks": {
"net451": { },
"dotnet5.4": {
"imports": "portable-net451+win8",
"dependencies": {
"System.IO.FileSystem": "4.0.1-rc2-23811",
"System.Linq": "4.0.1-rc2-23811",
"System.Runtime": "4.0.21-rc2-23811",
"System.Reflection": "4.1.0-rc2-23811",
"System.Dynamic.Runtime": "4.0.11-rc2-23811"
}
"description": "Abstractions for reading `.deps` files.",
"version": "1.0.0-*",
"repository": {
"type": "git",
"url": "git://github.com/dotnet/cli"
},
"dnxcore50": {
"imports": "portable-net45+win8",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.0.1-rc2-23811",
"System.IO.FileSystem": "4.0.1-rc2-23811",
"System.Linq": "4.0.1-rc2-23811",
"System.Runtime": "4.0.21-rc2-23811",
"System.Reflection": "4.1.0-rc2-23811",
"System.Dynamic.Runtime": "4.0.11-rc2-23811"
}
}
},
"scripts": {
}
}
"compilationOptions": {
"warningsAsErrors": true,
"keyFile": "../../tools/Key.snk"
},
"dependencies": {
"Newtonsoft.Json": "7.0.1",
"Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc2-16537"
},
"frameworks": {
"net451": {},
"dotnet5.4": {
"imports": "portable-net451+win8",
"dependencies": {
"System.IO.FileSystem": "4.0.1-rc2-23811",
"System.Linq": "4.0.1-rc2-23811",
"System.Runtime": "4.0.21-rc2-23811",
"System.Reflection": "4.1.0-rc2-23811",
"System.Dynamic.Runtime": "4.0.11-rc2-23811"
}
},
"dnxcore50": {
"imports": "portable-net45+win8",
"dependencies": {
"Microsoft.NETCore.Platforms": "1.0.1-rc2-23811",
"System.IO.FileSystem": "4.0.1-rc2-23811",
"System.Linq": "4.0.1-rc2-23811",
"System.Runtime": "4.0.21-rc2-23811",
"System.Reflection": "4.1.0-rc2-23811",
"System.Dynamic.Runtime": "4.0.11-rc2-23811"
}
}
},
"scripts": {}
}

View file

@ -1,29 +1,29 @@
{
"description": "Abstractions for test runners to communicate to a tool, such as Visual Studio.",
"version": "1.0.0-*",
"repository": {
"type": "git",
"url": "git://github.com/dotnet/cli"
},
"compilationOptions": {
"warningsAsErrors": true,
"keyFile": "../../tools/Key.snk"
},
"dependencies": {
"Newtonsoft.Json": "7.0.1",
"Microsoft.DotNet.ProjectModel": "1.0.0-*",
"Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc2-16040"
},
"frameworks": {
"net451": { },
"dnxcore50": {
"imports": "portable-net45+win8",
"dependencies": {
"NETStandard.Library": "1.0.0-rc2-23811",
"System.Resources.ResourceManager": "4.0.1-rc2-23811",
"System.Runtime.Serialization.Primitives": "4.1.0-rc2-23811"
}
}
},
"scripts": { }
"description": "Abstractions for test runners to communicate to a tool, such as Visual Studio.",
"version": "1.0.0-*",
"repository": {
"type": "git",
"url": "git://github.com/dotnet/cli"
},
"compilationOptions": {
"warningsAsErrors": true,
"keyFile": "../../tools/Key.snk"
},
"dependencies": {
"Newtonsoft.Json": "7.0.1",
"Microsoft.DotNet.ProjectModel": "1.0.0-*",
"Microsoft.Extensions.Logging.Abstractions": "1.0.0-rc2-16040"
},
"frameworks": {
"net451": {},
"dnxcore50": {
"imports": "portable-net45+win8",
"dependencies": {
"NETStandard.Library": "1.0.0-rc2-23811",
"System.Resources.ResourceManager": "4.0.1-rc2-23811",
"System.Runtime.Serialization.Primitives": "4.1.0-rc2-23811"
}
}
},
"scripts": {}
}