Skip to content

Commit

Permalink
Update dependencies from https://github.com/dotnet/arcade build 20190…
Browse files Browse the repository at this point in the history
…415.12 (#311)

- Microsoft.DotNet.Arcade.Sdk - 1.0.0-beta.19215.12
  • Loading branch information
dotnet-maestro[bot] authored Apr 16, 2019
1 parent 8d14755 commit 78fe2de
Show file tree
Hide file tree
Showing 3 changed files with 137 additions and 3 deletions.
4 changes: 2 additions & 2 deletions eng/Version.Details.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
<ProductDependencies>
</ProductDependencies>
<ToolsetDependencies>
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="1.0.0-beta.19214.2">
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="1.0.0-beta.19215.12">
<Uri>https://github.com/dotnet/arcade</Uri>
<Sha>bcf1186cb0db792906fd319ae49bdbc41f44f8ec</Sha>
<Sha>517bf671ea342965d007aa48f5bfd4926e58d582</Sha>
</Dependency>
</ToolsetDependencies>
</Dependencies>
134 changes: 134 additions & 0 deletions eng/common/CheckSymbols.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
param(
[Parameter(Mandatory=$true)][string] $InputPath, # Full path to directory where NuGet packages to be checked are stored
[Parameter(Mandatory=$true)][string] $ExtractPath, # Full path to directory where the packages will be extracted during validation
[Parameter(Mandatory=$true)][string] $SymbolToolPath # Full path to directory where dotnet symbol-tool was installed
)

Add-Type -AssemblyName System.IO.Compression.FileSystem

function FirstMatchingSymbolDescriptionOrDefault {
param(
[string] $FullPath, # Full path to the module that has to be checked
[string] $TargetServerParam # Parameter to pass to `Symbol Tool` indicating the server to lookup for symbols
)

$FileName = [System.IO.Path]::GetFileName($FullPath)
$Extension = [System.IO.Path]::GetExtension($FullPath)

# Those below are potential symbol files that the `dotnet symbol` might
# return. Which one will be returned depend on the type of file we are
# checking and which type of file was uploaded.

# The file itself is returned
$SymbolPath = $SymbolsPath + "\" + $FileName

# PDB file for the module
$PdbPath = $SymbolPath.Replace($Extension, ".pdb")

# PDB file for R2R module (created by crossgen)
$NGenPdb = $SymbolPath.Replace($Extension, ".ni.pdb")

# DBG file for a .so library
$SODbg = $SymbolPath.Replace($Extension, ".so.dbg")

# DWARF file for a .dylib
$DylibDwarf = $SymbolPath.Replace($Extension, ".dylib.dwarf")

.\dotnet-symbol.exe --symbols --modules $TargetServerParam $FullPath -o $SymbolsPath -d | Out-Null

if (Test-Path $PdbPath) {
return "PDB"
}
elseif (Test-Path $NGenPdb) {
return "NGen PDB"
}
elseif (Test-Path $SODbg) {
return "DBG for SO"
}
elseif (Test-Path $DylibDwarf) {
return "Dwarf for Dylib"
}
elseif (Test-Path $SymbolPath) {
return "Module"
}
else {
return $null
}
}

function CountMissingSymbols {
param(
[string] $PackagePath # Path to a NuGet package
)

# Ensure input file exist
if (!(Test-Path $PackagePath)) {
throw "Input file does not exist: $PackagePath"
}

# Extensions for which we'll look for symbols
$RelevantExtensions = @(".dll", ".exe", ".so", ".dylib")

# How many files are missing symbol information
$MissingSymbols = 0

$PackageId = [System.IO.Path]::GetFileNameWithoutExtension($PackagePath)
$ExtractPath = $ExtractPath + $PackageId;
$SymbolsPath = $ExtractPath + $PackageId + ".Symbols";

[System.IO.Compression.ZipFile]::ExtractToDirectory($PackagePath, $ExtractPath)

# Makes easier to reference `symbol tool`
Push-Location $SymbolToolPath

Get-ChildItem -Recurse $ExtractPath |
Where-Object {$RelevantExtensions -contains $_.Extension} |
ForEach-Object {
Write-Host -NoNewLine "`t Checking file" $_.FullName "... "

$SymbolsOnMSDL = FirstMatchingSymbolDescriptionOrDefault $_.FullName "--microsoft-symbol-server"
$SymbolsOnSymWeb = FirstMatchingSymbolDescriptionOrDefault $_.FullName "--internal-server"

if ($SymbolsOnMSDL -ne $null -and $SymbolsOnSymWeb -ne $null) {
Write-Host "Symbols found on MSDL (" $SymbolsOnMSDL ") and SymWeb (" $SymbolsOnSymWeb ")"
}
else {
$MissingSymbols++

if ($SymbolsOnMSDL -eq $null -and $SymbolsOnSymWeb -eq $null) {
Write-Host "No symbols found on MSDL or SymWeb!"
}
else {
if ($SymbolsOnMSDL -eq $null) {
Write-Host "No symbols found on MSDL!"
}
else {
Write-Host "No symbols found on SymWeb!"
}
}
}
}

Pop-Location

return $MissingSymbols
}

function CheckSymbolsAvailable {
if (Test-Path $ExtractPath) {
Remove-Item -recurse $ExtractPath
}

Get-ChildItem "$InputPath\*.nupkg" |
ForEach-Object {
$FileName = $_.Name
Write-Host "Validating $FileName "
$Status = CountMissingSymbols "$InputPath\$FileName"

if ($Status -ne 0) {
Write-Error "Missing symbols for $Status modules in the package $FileName"
}
}
}

CheckSymbolsAvailable
2 changes: 1 addition & 1 deletion global.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
"xcopy-msbuild": "15.9.0-alpha"
},
"msbuild-sdks": {
"Microsoft.DotNet.Arcade.Sdk": "1.0.0-beta.19214.2"
"Microsoft.DotNet.Arcade.Sdk": "1.0.0-beta.19215.12"
}
}

0 comments on commit 78fe2de

Please sign in to comment.