Skip to content

Commit

Permalink
Implement .Net Core build and x64 Linux support (#123)
Browse files Browse the repository at this point in the history
This change adds .Net Core build support (next NuGet release will include .Net Standard 2.0 library). This change also adds support for Linux core dump debugging. Attaching to live processes on Linux not implemented in this build.

I'm pushing this down to the main branch to stabilize, merge other PRs, and get it ready to ship. Please do not consider this build final and the surface area stable until this is shipped as a NuGet package.  There are likely some issues right now, but I'm working to resolve them asap.

Some high level details:

Moved the build to Arcade to support building on linux.
Disabled tests, as they do not function under Arcade. .Net Core does not support CodeDOM, which the current test system uses as well. I'll have to rethink/reimplement the test infrastructure in a future change. The tests do pass when I forced them to run in an outside environment.
Removed COM wrappings of dac interfaces and reimplement them by hand. (.Net Core on linux doesn't have COM enabled, and CLR still uses it on Linux...)
Added an Elf core dump reader. This is not intended to ever be public.
Shuffled around some of the guts of ClrMD, but no functionality should be changed or affected.
  • Loading branch information
leculver committed Oct 17, 2018
1 parent c81a592 commit e37fb3a
Show file tree
Hide file tree
Showing 184 changed files with 6,053 additions and 2,073 deletions.
3 changes: 3 additions & 0 deletions .gitignore
@@ -1,5 +1,8 @@
syntax: glob

.dotnet
.packages

### VisualStudio ###

# User-specific files
Expand Down
8 changes: 8 additions & 0 deletions Build.cmd
@@ -0,0 +1,8 @@

set scriptRoot=%~dp0
set binDir=%scriptRoot%bin

if not exist %binDir% mkdir %binDir%
call %scriptRoot%init-tools.cmd
call %scriptRoot%Tools\dotnetcli\dotnet restore %scriptRoot%src\Microsoft.Diagnostics.Runtime.sln --packages %scriptRoot%packages
call %scriptRoot%Tools\dotnetcli\dotnet msbuild %scriptRoot%src\Microsoft.Diagnostics.Runtime.sln /p:OutDir="%scriptRoot%\bin" /m /v:m /flp:verbosity=normal;LogFile=%binDir%\msbuild.log %*
15 changes: 15 additions & 0 deletions License.txt
@@ -0,0 +1,15 @@
Copyright (c) .NET Foundation and Contributors

All rights reserved.

Licensed under the Apache License, Version 2.0 (the “License”); you may not
use this file except in compliance with the License. You may obtain a copy of
the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations under
the License.
67 changes: 67 additions & 0 deletions Microsoft.Diagnostics.Runtime.sln
@@ -0,0 +1,67 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26228.9
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Diagnostics.Runtime", "src\Microsoft.Diagnostics.Runtime\Microsoft.Diagnostics.Runtime.csproj", "{A82126CA-23AA-41F1-8586-A5938D44D0A7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LinuxTest", "src\Samples\LinuxTest\LinuxTest.csproj", "{480E59E9-95EC-4251-B03D-C8D2159FD510}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|Mixed Platforms = Debug|Mixed Platforms
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|Mixed Platforms = Release|Mixed Platforms
Release|Win32 = Release|Win32
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{A82126CA-23AA-41F1-8586-A5938D44D0A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A82126CA-23AA-41F1-8586-A5938D44D0A7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A82126CA-23AA-41F1-8586-A5938D44D0A7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{A82126CA-23AA-41F1-8586-A5938D44D0A7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{A82126CA-23AA-41F1-8586-A5938D44D0A7}.Debug|Win32.ActiveCfg = Debug|Any CPU
{A82126CA-23AA-41F1-8586-A5938D44D0A7}.Debug|x64.ActiveCfg = Debug|Any CPU
{A82126CA-23AA-41F1-8586-A5938D44D0A7}.Debug|x64.Build.0 = Debug|Any CPU
{A82126CA-23AA-41F1-8586-A5938D44D0A7}.Debug|x86.ActiveCfg = Debug|Any CPU
{A82126CA-23AA-41F1-8586-A5938D44D0A7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A82126CA-23AA-41F1-8586-A5938D44D0A7}.Release|Any CPU.Build.0 = Release|Any CPU
{A82126CA-23AA-41F1-8586-A5938D44D0A7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{A82126CA-23AA-41F1-8586-A5938D44D0A7}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{A82126CA-23AA-41F1-8586-A5938D44D0A7}.Release|Win32.ActiveCfg = Release|Any CPU
{A82126CA-23AA-41F1-8586-A5938D44D0A7}.Release|x64.ActiveCfg = Release|Any CPU
{A82126CA-23AA-41F1-8586-A5938D44D0A7}.Release|x64.Build.0 = Release|Any CPU
{A82126CA-23AA-41F1-8586-A5938D44D0A7}.Release|x86.ActiveCfg = Release|Any CPU
{480E59E9-95EC-4251-B03D-C8D2159FD510}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{480E59E9-95EC-4251-B03D-C8D2159FD510}.Debug|Any CPU.Build.0 = Debug|Any CPU
{480E59E9-95EC-4251-B03D-C8D2159FD510}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{480E59E9-95EC-4251-B03D-C8D2159FD510}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{480E59E9-95EC-4251-B03D-C8D2159FD510}.Debug|Win32.ActiveCfg = Debug|Any CPU
{480E59E9-95EC-4251-B03D-C8D2159FD510}.Debug|Win32.Build.0 = Debug|Any CPU
{480E59E9-95EC-4251-B03D-C8D2159FD510}.Debug|x64.ActiveCfg = Debug|Any CPU
{480E59E9-95EC-4251-B03D-C8D2159FD510}.Debug|x64.Build.0 = Debug|Any CPU
{480E59E9-95EC-4251-B03D-C8D2159FD510}.Debug|x86.ActiveCfg = Debug|Any CPU
{480E59E9-95EC-4251-B03D-C8D2159FD510}.Debug|x86.Build.0 = Debug|Any CPU
{480E59E9-95EC-4251-B03D-C8D2159FD510}.Release|Any CPU.ActiveCfg = Release|Any CPU
{480E59E9-95EC-4251-B03D-C8D2159FD510}.Release|Any CPU.Build.0 = Release|Any CPU
{480E59E9-95EC-4251-B03D-C8D2159FD510}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{480E59E9-95EC-4251-B03D-C8D2159FD510}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{480E59E9-95EC-4251-B03D-C8D2159FD510}.Release|Win32.ActiveCfg = Release|Any CPU
{480E59E9-95EC-4251-B03D-C8D2159FD510}.Release|Win32.Build.0 = Release|Any CPU
{480E59E9-95EC-4251-B03D-C8D2159FD510}.Release|x64.ActiveCfg = Release|Any CPU
{480E59E9-95EC-4251-B03D-C8D2159FD510}.Release|x64.Build.0 = Release|Any CPU
{480E59E9-95EC-4251-B03D-C8D2159FD510}.Release|x86.ActiveCfg = Release|Any CPU
{480E59E9-95EC-4251-B03D-C8D2159FD510}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {7DB8722F-5AAF-4913-A5AF-4A77D75BC39C}
EndGlobalSection
EndGlobal
3 changes: 3 additions & 0 deletions Restore.cmd
@@ -0,0 +1,3 @@
@echo off
powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0eng\common\Build.ps1""" -restore %*"
exit /b %ErrorLevel%
3 changes: 3 additions & 0 deletions Test.cmd
@@ -0,0 +1,3 @@
@echo off
powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0eng\common\Build.ps1""" -test %*"
exit /b %ErrorLevel%
1 change: 1 addition & 0 deletions artifacts/toolset/1.0.0-beta.18478.1.txt
@@ -0,0 +1 @@
/home/leculver/git/clrmd/.packages/microsoft.dotnet.arcade.sdk/1.0.0-beta.18478.1/tools/Build.proj
5 changes: 5 additions & 0 deletions artifacts/toolset/Common/Tools.proj.nuget.cache
@@ -0,0 +1,5 @@
{
"version": 1,
"dgSpecHash": "4Ppsy+4q+Q1CF1ROLlhcL4K7YT/hKmXa01oHqoYYWn+Kc9lLtltob1IhSkAscFiVuqFQn4tkNevH2Z5gU3IVzw==",
"success": true
}
20 changes: 20 additions & 0 deletions artifacts/toolset/Common/Tools.proj.nuget.g.props
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">/home/leculver/git/clrmd/artifacts/toolset/Common/project.assets.json</ProjectAssetsFile>
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/home/leculver/git/clrmd/.packages</NuGetPackageRoot>
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/home/leculver/git/clrmd/.packages;/home/leculver/git/clrmd/.dotnet/sdk/NuGetFallbackFolder</NuGetPackageFolders>
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">4.8.0</NuGetToolVersion>
</PropertyGroup>
<PropertyGroup>
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
</PropertyGroup>
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)/vswhere/2.5.2/build/vswhere.props" Condition="Exists('$(NuGetPackageRoot)/vswhere/2.5.2/build/vswhere.props')" />
<Import Project="$(NuGetPackageRoot)/microsoft.dotnet.signtool/1.0.0-beta.18471.7/build/Microsoft.DotNet.SignTool.props" Condition="Exists('$(NuGetPackageRoot)/microsoft.dotnet.signtool/1.0.0-beta.18471.7/build/Microsoft.DotNet.SignTool.props')" />
<Import Project="$(NuGetPackageRoot)/microbuild.core/0.2.0/build/MicroBuild.Core.props" Condition="Exists('$(NuGetPackageRoot)/microbuild.core/0.2.0/build/MicroBuild.Core.props')" />
</ImportGroup>
</Project>
9 changes: 9 additions & 0 deletions artifacts/toolset/Common/Tools.proj.nuget.g.targets
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
</PropertyGroup>
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)/microbuild.core/0.2.0/build/MicroBuild.Core.targets" Condition="Exists('$(NuGetPackageRoot)/microbuild.core/0.2.0/build/MicroBuild.Core.targets')" />
</ImportGroup>
</Project>

0 comments on commit e37fb3a

Please sign in to comment.