set "__PackagesDir=%__ProjectDir%\packages"
set "__RootBinDir=%__ProjectDir%\bin"
set "__LogsDir=%__RootBinDir%\Logs"
+set "__MsbuildDebugLogsDir=%__LogsDir%\MsbuildDebugLogs"
:: Default __Exclude to issues.targets
set __Exclude=%__TestDir%\issues.targets
if not exist "%__NativeTestIntermediatesDir%" md "%__NativeTestIntermediatesDir%"
if not exist "%__ManagedTestIntermediatesDir%" md "%__ManagedTestIntermediatesDir%"
if not exist "%__LogsDir%" md "%__LogsDir%"
+if not exist "%__MsbuildDebugLogsDir%" md "%__MsbuildDebugLogsDir%"
+
+REM Set up the directory for MSBuild debug logs.
+set MSBUILDDEBUGPATH=%__MsbuildDebugLogsDir%
echo %__MsgPrefix%Checking prerequisites
echo "Creating LogsDir: ${__LogsDir}"
mkdir -p $__LogsDir
fi
+ if [ ! -f "$__MsbuildDebugLogsDir" ]; then
+ echo "Creating MsbuildDebugLogsDir: ${__MsbuildDebugLogsDir}"
+ mkdir -p $__MsbuildDebugLogsDir
+ fi
+
+ # Set up the directory for MSBuild debug logs.
+ export MSBUILDDEBUGPATH="${__MsbuildDebugLogsDir}"
__BuildProperties="-p:OSGroup=${__BuildOS} -p:BuildOS=${__BuildOS} -p:BuildArch=${__BuildArch} -p:BuildType=${__BuildType}"
echo "Creating LogsDir: ${__LogsDir}"
mkdir -p $__LogsDir
fi
+ if [ ! -f "$__MsbuildDebugLogsDir" ]; then
+ echo "Creating MsbuildDebugLogsDir: ${__MsbuildDebugLogsDir}"
+ mkdir -p $__MsbuildDebugLogsDir
+ fi
+
+ # Set up the directory for MSBuild debug logs.
+ export MSBUILDDEBUGPATH="${__MsbuildDebugLogsDir}"
__BuildProperties="-p:OSGroup=${__BuildOS} -p:BuildOS=${__BuildOS} -p:BuildArch=${__BuildArch} -p:BuildType=${__BuildType}"
# Set dependent variables
__LogsDir="$__RootBinDir/Logs"
+__MsbuildDebugLogsDir="$__LogsDir/MsbuildDebugLogs"
# init the host distro name
initHostDistroRid
if [%__PackagesDir%]==[] set "__PackagesDir=%__ProjectDir%\packages"
set "__RootBinDir=%__ProjectDir%\bin"
set "__LogsDir=%__RootBinDir%\Logs"
+set "__MsbuildDebugLogsDir=%__LogsDir%\MsbuildDebugLogs"
set __BuildAll=
set "__CMakeBinDir=%__BinDir%"
set "__CMakeBinDir=%__CMakeBinDir:\=/%"
-if not exist "%__BinDir%" md "%__BinDir%"
-if not exist "%__IntermediatesDir%" md "%__IntermediatesDir%"
-if not exist "%__LogsDir%" md "%__LogsDir%"
+if not exist "%__BinDir%" md "%__BinDir%"
+if not exist "%__IntermediatesDir%" md "%__IntermediatesDir%"
+if not exist "%__LogsDir%" md "%__LogsDir%"
+if not exist "%__MsbuildDebugLogsDir%" md "%__MsbuildDebugLogsDir%"
+
+REM Set up the directory for MSBuild debug logs.
+set MSBUILDDEBUGPATH=%__MsbuildDebugLogsDir%
REM It is convenient to have your Nuget search path include the location where the build
REM will place packages. However nuget used during the build will fail if that directory
mkdir -p "$__RootBinDir"
mkdir -p "$__BinDir"
mkdir -p "$__LogsDir"
+ mkdir -p "$__MsbuildDebugLogsDir"
mkdir -p "$__IntermediatesDir"
if [ $__CrossBuild == 1 ]; then
# Set dependent variables
__LogsDir="$__RootBinDir/Logs"
+__MsbuildDebugLogsDir="$__LogsDir/MsbuildDebugLogs"
# init the host distro name
initHostDistroRid
# Make the directories necessary for build if they don't exist
setup_dirs
+# Set up the directory for MSBuild debug logs.
+export MSBUILDDEBUGPATH="${__MsbuildDebugLogsDir}"
+
# Check prereqs.
check_prereqs
containerName: ubuntu_1404_arm_cross_build_image
helixQueues:
${{ if eq(variables['System.TeamProject'], 'public') }}:
- asString: 'Ubuntu.1404.Arm32.Open'
- asArray:
- - Ubuntu.1404.Arm32.Open
+ # TODO: add Ubuntu.1404.Arm32.Open once Jenkins has been shutdown
+ asString: ''
+ asArray: []
${{ if eq(variables['System.TeamProject'], 'internal') }}:
# We don't have any Linux/arm32 internal Helix queues
asString: ''
if ((architecture == 'arm64') && isCoreFxScenario(scenario) && !isFlowJob) {
break
}
+ // Windows arm64 corefx testing all fails due to time out, partially due to no parallelism
+ // in the test run harness. So don't create cron jobs for these. We could alternatively
+ // just increase the timeout, but we don't have enough Windows arm64 machines to
+ // take so much time running these. We also have Linux/arm64 corefx test coverage.
+ // It would be best to improve the runtime of the tests.
+ // See issue https://github.com/dotnet/coreclr/issues/21236.
+ if ((architecture == 'arm64') && isCoreFxScenario(scenario) && (os == 'Windows_NT')) {
+ break
+ }
if (jobRequiresLimitedHardware(architecture, os)) {
if ((architecture == 'arm64') && (os == 'Ubuntu16.04')) {
// These jobs are very fast on Linux/arm64 hardware, so run them daily.
needsTrigger = false
break
}
-
- if (scenario == 'crossgen_comparison') {
- if (os == 'Ubuntu' && architecture == 'arm' && (configuration == 'Checked' || configuration == 'Release')) {
- isDefaultTrigger = true
+ if (os == 'Ubuntu' && architecture == 'arm') {
+ switch (scenario) {
+ case 'innerloop':
+ case 'no_tiered_compilation_innerloop':
+ if (configuration == 'Checked') {
+ isDefaultTrigger = true
+ }
+ break
+ case 'crossgen_comparison':
+ if (configuration == 'Checked' || configuration == 'Release') {
+ isDefaultTrigger = true
+ }
+ break
}
}
break
}
// Archive the logs, even if the build failed (which is when they are most interesting).
- Utilities.addArchival(newJob, "bin/Logs/*.log,bin/Logs/*.wrn,bin/Logs/*.err", "", /* doNotFailIfNothingArchived */ true, /* archiveOnlyIfSuccessful */ false)
+ Utilities.addArchival(newJob, "bin/Logs/*.log,bin/Logs/*.wrn,bin/Logs/*.err,bin/Logs/MsbuildDebugLogs/*", "", /* doNotFailIfNothingArchived */ true, /* archiveOnlyIfSuccessful */ false)
break
case 'arm':
case 'arm64':
}
// Archive the logs, even if the build failed (which is when they are most interesting).
- Utilities.addArchival(newJob, "bin/Logs/*.log,bin/Logs/*.wrn,bin/Logs/*.err", "", /* doNotFailIfNothingArchived */ true, /* archiveOnlyIfSuccessful */ false)
+ Utilities.addArchival(newJob, "bin/Logs/*.log,bin/Logs/*.wrn,bin/Logs/*.err,bin/Logs/MsbuildDebugLogs/*", "", /* doNotFailIfNothingArchived */ true, /* archiveOnlyIfSuccessful */ false)
break
default:
println("Unknown architecture: ${architecture}");
}
// Archive the logs, even if the build failed (which is when they are most interesting).
- Utilities.addArchival(newJob, "bin/Logs/*.log,bin/Logs/*.wrn,bin/Logs/*.err", "", /* doNotFailIfNothingArchived */ true, /* archiveOnlyIfSuccessful */ false)
+ Utilities.addArchival(newJob, "bin/Logs/*.log,bin/Logs/*.wrn,bin/Logs/*.err,bin/Logs/MsbuildDebugLogs/*", "", /* doNotFailIfNothingArchived */ true, /* archiveOnlyIfSuccessful */ false)
break
case 'armem':
// Emulator cross builds for ARM runs on Tizen currently
}
// Archive the logs, even if the build failed (which is when they are most interesting).
- Utilities.addArchival(newJob, "bin/Logs/*.log,bin/Logs/*.wrn,bin/Logs/*.err", "", /* doNotFailIfNothingArchived */ true, /* archiveOnlyIfSuccessful */ false)
+ Utilities.addArchival(newJob, "bin/Logs/*.log,bin/Logs/*.wrn,bin/Logs/*.err,bin/Logs/MsbuildDebugLogs/*", "", /* doNotFailIfNothingArchived */ true, /* archiveOnlyIfSuccessful */ false)
// We need to clean up the build machines; the docker build leaves newly built files with root permission, which
// the cleanup task in Jenkins can't remove.
#if FEATURE_APPX
Type WinRTResourceManagerType = Type.GetType("System.Resources.WindowsRuntimeResourceManager, System.Runtime.WindowsRuntime", throwOnError: true);
#else // ENABLE_WINRT
- Assembly hiddenScopeAssembly = Assembly.Load(RuntimeAugments.HiddenScopeAssemblyName);
+ Assembly hiddenScopeAssembly = Assembly.Load(Internal.Runtime.Augments.RuntimeAugments.HiddenScopeAssemblyName);
Type WinRTResourceManagerType = hiddenScopeAssembly.GetType("System.Resources.WindowsRuntimeResourceManager", true);
#endif
return (WindowsRuntimeResourceManagerBase)Activator.CreateInstance(WinRTResourceManagerType, true);
if (!ApplicationModel.IsUap)
return;
#else // ENABLE_WINRT
+ Internal.Runtime.Augments.WinRTInteropCallbacks callbacks = Internal.Runtime.Augments.WinRTInterop.UnsafeCallbacks;
if (!(callbacks != null && callbacks.IsAppxModel()))
return;
#endif
struct SortHandle
{
UCollator* regular;
- TCollatorMap* collatorsPerOption;
pthread_mutex_t collatorsLockObject;
- void* pRoot;
+ void* collatorsPerOptionRoot;
};
typedef struct { UChar* items; size_t capacity; size_t size; } UCharList;
return;
}
- (*ppSortHandle)->pRoot = NULL;
+ (*ppSortHandle)->collatorsPerOptionRoot = NULL;
int result = pthread_mutex_init(&(*ppSortHandle)->collatorsLockObject, NULL);
if (result != 0)
ucol_close(pSortHandle->regular);
pSortHandle->regular = NULL;
- while (pSortHandle->pRoot != NULL)
+ while (pSortHandle->collatorsPerOptionRoot != NULL)
{
- TCollatorMap* data = *(TCollatorMap **)pSortHandle->pRoot;
- tdelete(data, &pSortHandle->pRoot, TreeComparer);
+ TCollatorMap* data = *(TCollatorMap **)pSortHandle->collatorsPerOptionRoot;
+ tdelete(data, &pSortHandle->collatorsPerOptionRoot, TreeComparer);
ucol_close(data->UCollator);
free(data);
}
TCollatorMap* map = (TCollatorMap*)malloc(sizeof(TCollatorMap));
map->key = options;
- void* entry = tfind(map, &pSortHandle->pRoot, TreeComparer);
- if (entry == NULL)
+ void* entry = tsearch(map, &pSortHandle->collatorsPerOptionRoot, TreeComparer);
+ if ((*(TCollatorMap**)entry) == map)
{
pCollator = CloneCollatorWithOptions(pSortHandle->regular, options, pErr);
map->UCollator = pCollator;
- tsearch(map, &pSortHandle->pRoot, TreeComparer);
}
else
{
return true;
}
-#ifdef _TARGET_AMD64_
- // On x64, we disable pinvoke inlining inside of try regions.
- // Here is the comment from JIT64 explaining why:
+#ifdef _TARGET_64BIT_
+ // On 64-bit platforms, we disable pinvoke inlining inside of try regions.
+ // Note that this could be needed on other architectures too, but we
+ // haven't done enough investigation to know for sure at this point.
//
+ // Here is the comment from JIT64 explaining why:
// [VSWhidbey: 611015] - because the jitted code links in the
// Frame (instead of the stub) we rely on the Frame not being
// 'active' until inside the stub. This normally happens by the
{
return false;
}
-#endif // _TARGET_AMD64_
+#endif // _TARGET_64BIT_
return true;
}
<ExcludeList Include="$(XunitTestBinBase)/Loader/classloader/DefaultInterfaceMethods/methodimpl/methodimpl/*">
<Issue>9565</Issue>
</ExcludeList>
- <ExcludeList Include="$(XunitTestBinBase)/Interop/NativeLibraryResolveEvent/ResolveEventTests/*">
- <Issue>21964</Issue>
- </ExcludeList>
- <ExcludeList Include="$(XunitTestBinBase)/Interop/NativeLibraryResolveCallback/CallbackTests/*">
- <Issue>21964</Issue>
- </ExcludeList>
<ExcludeList Include="$(XunitTestBinBase)/Regressions/coreclr/16064/methodimpl/*">
<Issue>9565</Issue>
</ExcludeList>
set "__ProjectFilesDir=%__ProjectDir%"
set "__RootBinDir=%__ProjectDir%\..\bin"
set "__LogsDir=%__RootBinDir%\Logs"
+set "__MsbuildDebugLogsDir=%__LogsDir%\MsbuildDebugLogs"
set __Sequential=
set __msbuildExtraArgs=
set __msbuildCommonArgs=%__msbuildCommonArgs% /p:RunTestsViaIllink=true
)
-if not exist %__LogsDir% md %__LogsDir%
+if not exist "%__LogsDir%" md "%__LogsDir%"
+if not exist "%__MsbuildDebugLogsDir%" md "%__MsbuildDebugLogsDir%"
+
+REM Set up the directory for MSBuild debug logs.
+set MSBUILDDEBUGPATH=%__MsbuildDebugLogsDir%
REM These log files are created automatically by the test run process. Q: what do they depend on being set?
set __TestRunHtmlLog=%__LogsDir%\TestRun_%__BuildOS%__%__BuildArch%__%__BuildType%.html
logs_dir = os.path.join(coreclr_repo_location, "bin", "Logs")
if not os.path.isdir(logs_dir):
os.makedirs(logs_dir)
-
+
+ msbuild_debug_logs_dir = os.path.join(logs_dir, "MsbuildDebugLogs")
+ if not os.path.isdir(msbuild_debug_logs_dir):
+ os.makedirs(msbuild_debug_logs_dir)
+
+ # Set up the directory for MSBuild debug logs.
+ os.environ["MSBUILDDEBUGPATH"] = msbuild_debug_logs_dir
+
command = [dotnetcli_location,
"msbuild",
os.path.join(coreclr_repo_location, "tests", "runtest.proj"),