From bcda7c5bbd829b76319a99394186ae9a90df4b51 Mon Sep 17 00:00:00 2001 From: Matt Ellis Date: Wed, 25 May 2016 10:25:49 -0700 Subject: [PATCH] Be more explict when picking up libs from CoreFx There's no contract in the CoreFx build layout that enforces an assembly is only in one location in the resulting binaries folder. Different projects may have different versions of dependent assemblies SxS with them in their output folder. To work around this, update the copy logic to use the folder name to determine what assembly to copy from it. --- tests/runtest.sh | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/tests/runtest.sh b/tests/runtest.sh index 6c3d6a6dcd3a..2a70c1b4b020 100755 --- a/tests/runtest.sh +++ b/tests/runtest.sh @@ -355,16 +355,19 @@ function create_core_overlay { if [ ! -d "$currDir" ]; then exit_with_error "$errorSource" "Directory specified in --coreFxBinDir does not exist: $currDir" fi - - (cd $currDir && find . -iwholename '*/netstandard/*.dll' \! -iwholename '*test*' \! -iwholename '*/ToolRuntime/*' \! -iwholename '*/RemoteExecutorConsoleApp/*' \! -iwholename '*aot*' -exec cp -n '{}' "$coreOverlayDir/" \;) + pushd $currDir > /dev/null + for dirName in $(find . -iname '*.dll' \! -iwholename '*test*' \! -iwholename '*/ToolRuntime/*' \! -iwholename '*/RemoteExecutorConsoleApp/*' \! -iwholename '*/net*' \! -iwholename '*aot*' -exec dirname {} \; | uniq | sed 's/\.\/\(.*\)/\1/g'); do + cp -n -v "$currDir/$dirName/$dirName.dll" "$coreOverlayDir/" + done + popd $currDur > /dev/null done done <<< $coreFxBinDir - cp -f "$coreFxNativeBinDir/Native/"*."$libExtension" "$coreOverlayDir/" 2>/dev/null + cp -f -v "$coreFxNativeBinDir/Native/"*."$libExtension" "$coreOverlayDir/" 2>/dev/null - cp -f "$coreClrBinDir/"* "$coreOverlayDir/" 2>/dev/null - cp -f "$mscorlibDir/mscorlib.dll" "$coreOverlayDir/" - cp -n "$testDependenciesDir"/* "$coreOverlayDir/" 2>/dev/null + cp -f -v "$coreClrBinDir/"* "$coreOverlayDir/" 2>/dev/null + cp -f -v "$mscorlibDir/mscorlib.dll" "$coreOverlayDir/" + cp -n -v "$testDependenciesDir"/* "$coreOverlayDir/" 2>/dev/null if [ -f "$coreOverlayDir/mscorlib.ni.dll" ]; then # Test dependencies come from a Windows build, and mscorlib.ni.dll would be the one from Windows rm -f "$coreOverlayDir/mscorlib.ni.dll"