Skip to content

Commit

Permalink
Add a check to make sure runtime graphs are complete
Browse files Browse the repository at this point in the history
We need to make sure Microsoft.NETCore.App.deps.json has a complete
runtime fallback graph. Otherwise, it is possible that .NET will fail to
find assets placed in paths based on the RID-fallback graph.

For more details, see dotnet/runtime#78563
  • Loading branch information
omajid committed Dec 1, 2022
1 parent a061db2 commit 02e0d15
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 0 deletions.
11 changes: 11 additions & 0 deletions runtime-fallback-graph/test.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"name": "runtime-fallback-graph",
"enabled": true,
"requiresSdk": false,
"version": "3.1",
"versionSpecific": false,
"type": "bash",
"cleanup": true,
"ignoredRIDs":[
]
}
33 changes: 33 additions & 0 deletions runtime-fallback-graph/test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/usr/bin/env bash

# Check runtime fallback graphs are present in the shared framework

set -euo pipefail
set -x

dotnet_dir="$(../dotnet-directory --home "$1")"
portable_rid="$(../runtime-id --portable)"
non_portable_rid="$(../runtime-id)"

# print for debugging
find "${dotnet_dir}" -iname Microsoft.NETCore.App.deps.json

while IFS= read -r -d '' file; do
jq '.runtimes' "$file"
length=$(jq '.runtimes | length' "$file")
if [[ $length == 0 ]]; then
echo "Missing .runtimes section in $file"
exit 1
fi
# quoting here is a bit strange, but it's basically ".runtimes[\"" "$non_portable_rid" "\"] ..." without spaces
length=$(jq ".runtimes[\"""$non_portable_rid""\"] | length" "$file")
if [[ $length == 0 ]]; then
echo "Missing runtimes[$non_portable_rid] section in $file"
exit 1
fi
fallback_graph=$(jq ".runtimes[\"""$non_portable_rid""\"]" "$file")
echo "$fallback_graph" | grep "$portable_rid"
echo "$fallback_graph" | grep "linux"
echo "$fallback_graph" | grep "unix"
echo "$fallback_graph" | grep "base"
done < <(find "${dotnet_dir}" -iname Microsoft.NETCore.App.deps.json -print0)

0 comments on commit 02e0d15

Please sign in to comment.