I'm trying to make it slightly easier to install the needed requirements, and add some validation if a user hasn't installed the requirements.
Also, I validated that these instructions still work for Ubuntu 24.04 and have noted that other installs are only community-supported.
The `--help` was not recognized in that script because double dashes
were converted to single ones before processing the options. That
causes e.g. the src/test/build.sh to not to recognize the `--help`
option, so it instead starts building the tests.
This change fixes it
* Update dependencies from https://github.com/dotnet/runtime build 20230814.1
Microsoft.DotNet.ILCompiler , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Sdk.IL , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.ILAsm , runtime.native.System.IO.Ports , System.Text.Json
From Version 8.0.0-rc.1.23406.6 -> To Version 8.0.0-rc.1.23414.1
* Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20230808.2
Microsoft.SourceBuild.Intermediate.source-build-reference-packages
From Version 8.0.0-alpha.1.23381.3 -> To Version 8.0.0-alpha.1.23408.2
* Update dependencies from https://github.com/dotnet/sdk build 20230814.3
Microsoft.DotNet.ApiCompat.Task
From Version 8.0.100-preview.7.23329.3 -> To Version 8.0.100-rc.1.23414.3
* Don't use latest ILLink package
* Work around ProcessFrameworkReferences bug
* Update dependencies from https://github.com/dotnet/emsdk build 20230814.1
Microsoft.NET.Workload.Emscripten.Current.Manifest-8.0.100.Transport
From Version 8.0.0-rc.1.23411.2 -> To Version 8.0.0-rc.1.23414.1
* Update dependencies from https://github.com/dotnet/arcade build 20230814.5
Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.TargetFramework , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.GenAPI , Microsoft.DotNet.GenFacades , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.SharedFramework.Sdk , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.XUnitExtensions
From Version 8.0.0-beta.23411.1 -> To Version 8.0.0-beta.23414.5
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23408.1 -> To Version 1.0.0-beta.23412.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/icu build 20230814.4
Microsoft.NETCore.Runtime.ICU.Transport
From Version 8.0.0-rc.1.23407.2 -> To Version 9.0.0-alpha.1.23414.4
* Update dependencies from https://github.com/dotnet/cecil build 20230814.1
Microsoft.DotNet.Cecil
From Version 0.11.4-alpha.23407.2 -> To Version 0.11.4-alpha.23414.1
* Update dependencies from https://github.com/dotnet/sdk build 20230815.5
Microsoft.DotNet.ApiCompat.Task
From Version 8.0.100-preview.7.23329.3 -> To Version 8.0.100-rc.1.23415.5
* Update dependencies from https://github.com/dotnet/arcade build 20230815.4
Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.TargetFramework , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.GenAPI , Microsoft.DotNet.GenFacades , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.SharedFramework.Sdk , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.XUnitExtensions
From Version 8.0.0-beta.23411.1 -> To Version 8.0.0-beta.23415.4
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23408.1 -> To Version 1.0.0-beta.23415.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/sdk build 20230816.8
Microsoft.DotNet.ApiCompat.Task
From Version 8.0.100-preview.7.23329.3 -> To Version 9.0.100-alpha.1.23416.8
* Attempt to fix test problems
* Update dependencies from https://github.com/dotnet/xharness build 20230816.1
Microsoft.DotNet.XHarness.CLI , Microsoft.DotNet.XHarness.TestRunners.Common , Microsoft.DotNet.XHarness.TestRunners.Xunit
From Version 8.0.0-prerelease.23407.2 -> To Version 8.0.0-prerelease.23416.1
* Update dependencies from https://github.com/dotnet/sdk build 20230817.3
Microsoft.DotNet.ApiCompat.Task
From Version 8.0.100-preview.7.23329.3 -> To Version 9.0.100-alpha.1.23417.3
* Update dependencies from https://github.com/dotnet/sdk build 20230817.11
Microsoft.DotNet.ApiCompat.Task
From Version 8.0.100-preview.7.23329.3 -> To Version 9.0.100-alpha.1.23417.11
* Update dependencies from https://github.com/dotnet/arcade build 20230817.3
Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.TargetFramework , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.GenAPI , Microsoft.DotNet.GenFacades , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.SharedFramework.Sdk , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.XUnitExtensions
From Version 8.0.0-beta.23411.1 -> To Version 8.0.0-beta.23417.3
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23408.1 -> To Version 1.0.0-beta.23416.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/sdk build 20230817.25
Microsoft.DotNet.ApiCompat.Task
From Version 8.0.100-preview.7.23329.3 -> To Version 9.0.100-alpha.1.23417.25
* Add dotnet9* feeds
* Update dependencies from https://github.com/dotnet/runtime build 20230818.2
Microsoft.DotNet.ILCompiler , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Sdk.IL , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.ILAsm , runtime.native.System.IO.Ports , System.Text.Json
From Version 8.0.0-rc.1.23406.6 -> To Version 8.0.0-rc.1.23418.2
* Update dependencies from https://github.com/dotnet/sdk build 20230818.40
Microsoft.DotNet.ApiCompat.Task
From Version 8.0.100-preview.7.23329.3 -> To Version 9.0.100-alpha.1.23418.40
* Update dependencies from https://github.com/dotnet/arcade build 20230819.1
Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.TargetFramework , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.GenAPI , Microsoft.DotNet.GenFacades , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.SharedFramework.Sdk , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.XUnitExtensions
From Version 8.0.0-beta.23411.1 -> To Version 8.0.0-beta.23419.1
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23408.1 -> To Version 1.0.0-beta.23418.1 (parent: Microsoft.DotNet.Arcade.Sdk
* Update dependencies from https://github.com/dotnet/sdk build 20230819.8
Microsoft.DotNet.ApiCompat.Task
From Version 8.0.100-preview.7.23329.3 -> To Version 9.0.100-alpha.1.23419.8
* Update dependencies from https://github.com/dotnet/runtime-assets build 20230821.1
Microsoft.DotNet.CilStrip.Sources , System.ComponentModel.TypeConverter.TestData , System.Data.Common.TestData , System.Drawing.Common.TestData , System.Formats.Tar.TestData , System.IO.Compression.TestData , System.IO.Packaging.TestData , System.Net.TestData , System.Private.Runtime.UnicodeData , System.Runtime.Numerics.TestData , System.Runtime.TimeZoneData , System.Security.Cryptography.X509Certificates.TestData , System.Text.RegularExpressions.TestData , System.Windows.Extensions.TestData
From Version 8.0.0-beta.23408.1 -> To Version 8.0.0-beta.23421.1
* Update dependencies from https://github.com/dotnet/sdk build 20230820.17
Microsoft.DotNet.ApiCompat.Task
From Version 8.0.100-preview.7.23329.3 -> To Version 9.0.100-alpha.1.23420.17
* Update dependencies from https://github.com/dotnet/runtime build 20230821.1
Microsoft.DotNet.ILCompiler , Microsoft.NET.ILLink.Tasks , Microsoft.NET.Sdk.IL , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.ILAsm , runtime.native.System.IO.Ports , System.Text.Json
From Version 8.0.0-rc.1.23406.6 -> To Version 8.0.0-rc.1.23421.1
* Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20230814.1
Microsoft.SourceBuild.Intermediate.source-build-reference-packages
From Version 8.0.0-alpha.1.23381.3 -> To Version 8.0.0-alpha.1.23414.1
* Update dependencies from https://github.com/dotnet/icu build 20230821.1
Microsoft.NETCore.Runtime.ICU.Transport
From Version 8.0.0-rc.1.23407.2 -> To Version 9.0.0-alpha.1.23421.1
* Update dependencies from https://github.com/dotnet/xharness build 20230821.1
Microsoft.DotNet.XHarness.CLI , Microsoft.DotNet.XHarness.TestRunners.Common , Microsoft.DotNet.XHarness.TestRunners.Xunit
From Version 8.0.0-prerelease.23407.2 -> To Version 8.0.0-prerelease.23421.1
* Update dependencies from https://github.com/dotnet/hotreload-utils build 20230821.1
Microsoft.DotNet.HotReload.Utils.Generator.BuildTool
From Version 8.0.0-alpha.0.23407.2 -> To Version 8.0.0-alpha.0.23421.1
* Update dependencies from https://github.com/dotnet/cecil build 20230821.1
Microsoft.DotNet.Cecil
From Version 0.11.4-alpha.23407.2 -> To Version 0.11.4-alpha.23421.1
* Update dependencies from https://github.com/dotnet/sdk build 20230822.1
Microsoft.DotNet.ApiCompat.Task
From Version 8.0.100-preview.7.23329.3 -> To Version 9.0.100-alpha.1.23422.1
* Remove unused parameter (https://github.com/dotnet/arcade/pull/13961)
* Try to fix NativeAOT helix correlation payload issue
* Revert a change
* Update dependencies from https://github.com/dotnet/arcade build 20230822.1
Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.TargetFramework , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.GenAPI , Microsoft.DotNet.GenFacades , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.SharedFramework.Sdk , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.XUnitExtensions
From Version 8.0.0-beta.23411.1 -> To Version 8.0.0-beta.23422.1
Dependency coherency updates
Microsoft.DotNet.XliffTasks
From Version 1.0.0-beta.23408.1 -> To Version 1.0.0-beta.23418.1 (parent: Microsoft.DotNet.Helix.Sdk
* Update dependencies from https://github.com/dotnet/runtime-assets build 20230823.1
Microsoft.DotNet.CilStrip.Sources , System.ComponentModel.TypeConverter.TestData , System.Data.Common.TestData , System.Drawing.Common.TestData , System.Formats.Tar.TestData , System.IO.Compression.TestData , System.IO.Packaging.TestData , System.Net.TestData , System.Private.Runtime.UnicodeData , System.Runtime.Numerics.TestData , System.Runtime.TimeZoneData , System.Security.Cryptography.X509Certificates.TestData , System.Text.RegularExpressions.TestData , System.Windows.Extensions.TestData
From Version 8.0.0-beta.23408.1 -> To Version 8.0.0-beta.23423.1
* Update dependencies from https://github.com/dotnet/emsdk build 20230822.1
Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport
From Version 9.0.0-alpha.1.23415.2 -> To Version 9.0.0-alpha.1.23422.1
* Update dependencies from https://github.com/dotnet/sdk build 20230823.2
Microsoft.DotNet.ApiCompat.Task
From Version 8.0.100-preview.7.23329.3 -> To Version 9.0.100-alpha.1.23423.2
* Dependency coherency updates
runtime.linux-arm64.Microsoft.NETCore.Runtime.ObjWriter,runtime.linux-x64.Microsoft.NETCore.Runtime.ObjWriter,runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.ObjWriter,runtime.linux-musl-x64.Microsoft.NETCore.Runtime.ObjWriter,runtime.win-arm64.Microsoft.NETCore.Runtime.ObjWriter,runtime.win-x64.Microsoft.NETCore.Runtime.ObjWriter,runtime.osx-arm64.Microsoft.NETCore.Runtime.ObjWriter,runtime.osx-x64.Microsoft.NETCore.Runtime.ObjWriter,runtime.linux-arm64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.linux-x64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.linux-musl-x64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.win-arm64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.win-x64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.osx-arm64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.osx-x64.Microsoft.NETCore.Runtime.JIT.Tools,runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.linux-musl-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.linux-musl-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.linux-musl-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.osx-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.osx-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools,runtime.osx-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk,runtime.osx-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools
From Version 16.0.5-alpha.1.23408.1 -> To Version 16.0.5-alpha.1.23414.1 (parent: Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport
* Update dependencies from https://github.com/dotnet/sdk build 20230824.6
Microsoft.DotNet.ApiCompat.Task
From Version 8.0.100-preview.7.23329.3 -> To Version 9.0.100-alpha.1.23424.6
* Exclusion for Microsoft.NET.ILLink.Tasks
---------
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Sven Boemer <sbomer@gmail.com>
Co-authored-by: Larry Ewing <lewing@microsoft.com>
Co-authored-by: Alexander Köplinger <alex.koeplinger@outlook.com>
Co-authored-by: Nikola Milosavljevic <nikolam@microsoft.com>
* Enable AddressSanitizer in CoreCLR, Libs, and Host and update runtime-sanitized to run tests with ASAN on Linux and Mac
* Unify on HAS_ADDRESS_SANITIZER define name
Centralize setting up sanitizer flags.
Remove last usage of CLR_CMAKE_ENABLE_ASAN outside of eng/native
Remove unnecessary diffs
Use the cpuid intrinsic and enable ASAN on InitJitHelpers1.
Add comments for the places where we have ASAN disabled
Undo changes to src/coreclr/jit/CMakeLists.txt
Add docs and fix the docs in the build script.
Add docs for the SkipVCEnvInit hook
* Remove CRT runtime changes. We won't need this when we finally onboard to Windows with some changes they have coming down the pipeline, so remove them for now to reduce the diff of this PR.
* Remove suppression now that we've fixed the underlying issue.
* Remove some Windows-only sanitizer CMake that we won't need when ASAN is ready for us to consume on Windows.
* Set schedule for runtime-sanitized pipeline
* Remove workaround in JIT memory set/copy helpers now that the JIT bug has been fixed.
* Add missing helix queues setup template.
* Fix missing command to build nativeaot runtime tests as nativeaot.
* Add a scenario name to trigger the extended timeout in the libraries test helix configuration.
* Remove extraneous whitespace.
* Fix using the cross-targetting ILC when sanitizers are enabled. Also pass through our TargetOS and TargetArchitecture variables to the publish command for our native sanitizers targets to correctly do their extra logic.
* Disable LSAN on the CustomMain test.
* Disable some tests on sanitized runtimes.
* Copy the sanitizer runtime for OSX NativeAOT runtime tests.
* A little cleanup to try to get the build right now that we are always doing cross-builds on Linux.
* Fix crossgen-corelib.proj syntax.
* Fix cross-os dac builds to not include the host architecture in the output path.
* Split the debugger components into a separate component and make the "unsanitized cross components" build into an "unsanitized debugger components" build as it can't be part of the regular cross-components build
* Always write out the host-arch path on Windows and update the cross-dac build script to expect that.
* Change to use the dynamic runtime on Windows, as ASAN in VS is moving to a dynamic-only model.
* Update docker images to include the sanitizer runtimes in the crossrootfs images.
* Fix explicit image tags
* The unsanitized build should be of the target architecture, not the host architecture. As a result, we still need a cross-arch build for the cross-arch use cases when sanitized, as well as an unsanitized target arch build for the debugger tools.
* Turn off using the sigaltstack for NativeAOT tests that don't use the asansupport.cpp default options
* Make sure the shared ASAN runtime is present for the nativeaot/SmokeTests/SharedLibrary test.
* Disable crossgen2 tests with sanitizers as they don't get us interesting coverage.
* Fix custom default options and disable some more crossgen2-based tests.
* Simplify lookup of asan runtime on mac and fix copying the shared runtime for the SharedLibrary NativeAOT test.
* Disable test that's failing for weird reasons.
* Fix one more alloc-dealloc mismatch that only started to show up after test merging increased allocations in the runtime
* Disable the System.Text.Json test suite on sanitized builds as it causes SO failures on Mac
* Fix test exclusion
* PR feedback.
* Fix mac build
* Do review changes
* Add libbootstrapper object files to the platform manifest now that NativeAOT has
* Disable tests that check size on sanitized builds
* Use the built-in `include_guard` option
* Disable use-after-return checking in ASAN. CoreCLR doesn't do well with parallel stacks.
* Only pass the no UAR flag on C and CXX with Clang (not AppleClang).
Build and runtime pack for linux-bionic (Android without the Java part).
I tried not to regress the existing CoreCLR Android build that is based on a crossrootfs (#56622) - the if's basically deal with that. Note that it's likely broken anyway (#66562).
* Try to untangle the rid calculation.
* Ignore __portableOS.
* Add back musl detection.
* Try fix AnyOS tests.
* Try fix coreclr linux_musl_arm64 job.
* src/tests/build.proj: use PackageRID for restore.
* Use RuntimeOS as an override for _packageOS.
* Remove (probably) out-dated override for non-portable ToolsRID.
* CI cross-builds for linux-musl use linux.
* Add missing arch to rid.
* Try simplified ToolsRID.
* Update comments.
* Rename OutputRid to OutputRID.
* Tweak comment.
* Move TargetsLinux{Bionic,Musl} with the other Targets properties.
* Don't use RuntimeOS for PackageRID for CrossBuilds.
* Move RuntimeOS condition to ToolsRID assignment.
* Clean up a few things.
* Fix broken Condition.
* Try fix the linux-bionic build.
* Try fix the linux-bionic build, part II.
* Try fix the linux-bionic build, part III.
* Fix PackageRID.
* Use RuntimeOS as _packageOS override.
* Remove RuntimeOS.
* Fix '-os linux-musl' mapping.
* Clean up .
* Rename __PortableOS to __PortableTargetOS.
* Extend comments.
* Extend OutputRID comment too.
* build.sh: include linux-bionic, linux-musl in usage.
* SourceBuild.props: no need to pass RuntimeOS. Only set ToolsOS, PackageOS when RuntimeOS is not empty.
* Fix comment.
* linux-bionic doesn't get built on linux-bionic.
* Unconditionally assign TargetsLinuxBionic/TargetsLinuxMusl.
* Remove SkipInferTargetOSName.
This changes the linux builds to use the new CBL-mariner build
images. All of these builds are now cross-builds with a
rootfs (including x64, and x64 musl).
- The new images intentionally don't have binutils, so our build
jobs have been updated to use llvm-based tools. This includes
lld when we run nativeaot over our tests. This leads to a
slight size regression, I believe due to ILCompiler not
supporting `--gc-sections` with lld.
- This change turns off PGO optimization because it was hitting a
compiler crash when consuming and old version of profile data
produced by clang9 instrumented
builds (https://bugzilla.redhat.com/show_bug.cgi?id=1827282). The
intention is to quickly flow the change into our optimization
repo, then collect and ingest the new data so we can turn
optimization back on.
- The Mono LLVMAot test build is kept on the old build images,
because they run the aot compiler which depends on binutils. We
can probably move it to the same plan as the other legs, but
I'm not familiar with the context here. cc @akoeplinger. We
would at least need to fix `AS_NAME` here:
1d2cd206f4/src/mono/mono/mini/aot-compiler.c (L13030)
- Mono arm64 product build is kept on the old images due to
https://github.com/dotnet/runtime/issues/84503.
- Includes a temporary revert of
d80a584ae1
which requires LLVM 13.
- Sets arch for mono build, because our source-built LLVM doesn't
target armv7a by default. Possibly related to
b7363248b1
- Allow text relocations. The lld defaults differ from ld, which will add
text relocations on demand by default.
See https://maskray.me/blog/2020-12-19-lld-and-gnu-linker-incompatibilities
---------
Co-authored-by: Jan Vorlicek <janvorli@microsoft.com>
Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com>
Co-authored-by: Jeremy Koritzinsky <jkoritzinsky@gmail.com>
Co-authored-by: Alexander Köplinger <alex.koeplinger@outlook.com>
In .NET 8 the minimum Apple OS versions we're supporting are iOS/tvOS 11.0 and macOS 10.15.
This bumps the version settings in various files and cleans up code that can now assume it's running on a later OS version. For example, it allows us to get rid of a couple `dlsym()` calls in System.Security.Cryptography.Native.Apple.
We can also stop building the iOS arm and iOSSimulator x86 runtime packs since 32bit platforms aren't supported by iOS 11
Follow-up on #32451
Follow-up on #80074
In #43651, the "Windows" OS name was lowercased to achieve target frameworks with RIDs in them. At that time, the original plan was to lowercase all TargetOS values but that had to be cut because of resources. This PR finishes that and updates build systems, YML, markdowns and managed components.
To not break existing developer workflows, the passed-in -os value is automatically lower-cased in the script entry points and validated in the msbuild entry point.
* Use nproc without --all on Linux
* Fix a few typos missed in previous PR
* Allow llvm-objcopy to be 'NOT FOUND'
* Add CMAKE ASM workaround for newer clang
* Fix comment
Brings in new cmake 2.23.1 and Android NDK23c which fixes an issue with the binary size and perf of libmonosgen-2.0.so
In NDK23b they decided to no longer pass -O2 compiler optimization flag (for arm64, armv7 used -Oz) as part of the Android toolchain but delegate to upstream CMake behavior: https://github.com/android/ndk/wiki/Changelog-r23 and https://github.com/android/ndk/issues/1536
CMake defaults to -O3 for Release builds but unfortunately this causes quite a noticable binary size increase and perf regression.
The Xamarin Android team measured startup time on an average of 10 runs of `dotnet new maui` on a Pixel 5:
```
-O3: 893.7ms
-O2: 600.2ms
-Oz: 649.1ms
```
We now explicitly pass in -O2 for Android builds.
Fixes https://github.com/dotnet/runtime/issues/68330
* add ppc64le build support in eng directory files
* add platform option linux-ppc64le
* add ppc64le support in subfolder libraries
* add RID linux-ppc64le and linux-musl-ppc64le as UnofficialBuildRID
* ppc64le changes in subfolder native
* add support for ppc64le to few coreclr makefiles required to build mono and libraries
Co-authored-by: Alexander Köplinger <alex.koeplinger@outlook.com>
Implement support for "Linux Bionic", a RID which builds a Linux runtime against an Android libc but without Android OS functions like JNI, Dalvik, Instrumentation, etc. This configuration has been requested by a team working on an IoT scenario.
* The new RID is linux-bionic-arm64/linux-bionic-x64.
* The build reuses the existing Android build dockerfiles and Helix queues
* Since we don't have JNI, we don't have Android Crypto - instead, use an Android build of OpenSSL. As an errata, it is incumbent upon the end user to supply this in their OS environment (we download one ad-hoc for testing purposes, which was compiled by Google)
* Some tests cannot be completed due to SELinux policies affecting the shell user executing tests via adb shell in the world-writable /data/local/tmp directory. We expect those tests would pass if they pass on Android, in a real-world IoT scenario with a custom OS (rather than recycling Google's OS images intended for phones)
Closes: #66027
* Initial ARMv6 arch addition. Builds mono runtime, not CoreCLR (Mono already supports the CPU arch subset used by Raspberry Pi, whilst porting CoreCLR to e.g. VFPv2 would be major work)
* Build small clr subset on ARMv6, it's needed for SDK and we want to check it works
When user passes versioned native compiler argument such as
`-clang10.1` or `-gcc9.2` to the top-level `:/build.sh`,
`:/eng/build.sh` transforms that to msbuild property called
`<Compiler>` with raw/unprocessed value.
In coreclr, libs, corehost and tests partitions, we end up calling
`:/eng/native/build-commons.sh`, which slices the compiler name, major
and minor versions, then calls `:/eng/native/gen-buildsys.sh` with
individual components. That is just a pass-thru script for the final
`:/eng/common/native/init-compiler.sh`, where those arguments are
actually used.
In `mono.proj` and `NativeExports.csproj`, we do not use
`build-commons` script, but instead, invoke `init-compiler.sh` directly
with the raw `<Compiler>` property. That causes an error when versioned
native compiler is specified on the command line.
This PR fixes this issue by pushing version parsing code into
`init-compiler.sh` so all its consumers get the same behavior.
* Move optdata and version file generation from the native build scripts up into the managed scripts. The native build scripts will now by default copy a fallback version file in place if the version files do not exist and will disable PGO if no pgo file path is passed in to the build-runtime scripts.
This removes all cases of build-runtime calling into MSBuild.
* Update CI to use the new prereqs model.
* Remove some old MSBuild arg pass-through that's no longer needed as build-runtime no longer calls into any MSBuild processes.
* Apply suggestions from code review
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
* Move some targets around based on feedback.
* Output version files in the artifacts/obj dir so they can be easily shared.
* Move native pgo into a targets file instead of being a separate project to be more static-graph friendly.
* Fix subsets.
* Share version file path by default
* Fix VER_FILEDESCRIPTION_STR
* Fix version fallback copies.
* Fix include path for the version headers.
* Update src/coreclr/dlls/mscordac/CMakeLists.txt
Co-authored-by: Juan Hoyos <19413848+hoyosjs@users.noreply.github.com>
* Enable easily sharing the fallback version files between all components of the repo.
* Remove some now-unused command-line options from our build scripts.
* Bump importance output to pass the pgo path between steps.
* Add eval statement to run copy_version_files script
* Rename some files and and standardize on a _version.c file name for Linux.
* Remove temp proj ref.
* Fix permissions
* Reference targets to produce version file in libraries native build.
* Fix CoreCLR build breaks
* Generate the version files for Mono
* include configurepaths.cmake on the Windows CoreFX build.
* Restore mono.proj when building it through monoaotcross.proj.
* Update copy script to work on macos.
* Make sure mono pulls in the shared version files.
* Add artifcats/obj dir as include dir for CoreCLR diagonstic components included in Mono
* Add artifacts/obj include for the whole mono build.
* Update CMakeLists.txt
* Fix NativeVersion.rc path on Windows.
* Fix linux version parsing to point at the right file.
* Fix mono version parsing (apparently the quotes make a difference here)
* Update src/coreclr/build-runtime.sh
Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com>
* Update eng/native/version/copy_version_files.sh
Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com>
* Update copy_version_files.sh to insert the current commit hash into _version.c.
* Apply suggestions from code review
Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com>
* Update the _version.c writing script to only update the placeholder version file if it actually is a placeholder (not a real generated file).
* Generate the version files for wasm/browser as well.
* Fix Mono WASM cross build.
* Update eng/nativepgo.targets
Co-authored-by: Juan Hoyos <19413848+hoyosjs@users.noreply.github.com>
* Fix comparison for NativeOptimizationDataSupported.
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
Co-authored-by: Juan Hoyos <19413848+hoyosjs@users.noreply.github.com>
Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com>
* Make isMSBuildOnNETCoreSupported return true on s390x
(fixes generating version headers)
* Add s390x platform-specific library name in find_unwind_libs
(enables linking against system-provided libunwind)
Previously, we have had four iOS RIDs:
iOS-arm
iOS-arm64
iOS-x86
iOS-x64
Apple has never shipped an iOS device with an x86 or x64 processor. Instead, the x86/x64 RIDs have meant "iOS simulator with these arches" as opposed to "iOS with these arches". Amongst other things, that means building against a DIFFERENT SDK, iPhoneSimulator.platform vs iPhoneOS.platform
In the Apple Silicon future, the iOS simulator is now an ARM64 binary - so we need:
iOS-arm
iOS-arm64
iOS-arm64, but built against the simulator SDK not the device SDK
iOS-x86
iOS-x64
Clearly, there's a problem.
The solution is to move the simulators to a different RID, to avoid the overloading issue:
iOS-arm
iOS-arm64
iOSSimulator-arm64
iOSSimulator-x86
iOSSimulator-x64
This PR introduces the new entries in the RID graph, moves our existing iOS-x{86,64} to iOS-sim-x{86,64}, adds a new iOS-arm64.
The above also applies for tvOS, with a smaller set of OSes:
tvOS-arm64
tvOSSimulator-arm64
tvOSSimulator-x64
Ref: #48216
As per the documentation, Homebrew uses a different install directory for Brew on Intel vs. Apple Silicon. We have hardcoded the Intel location in a couple of places, so instead switch to pulling the prefix from brew --prefix
Initial support for Mac Catalyst for mono subset. This enables building runtime packs and working jobs, but right now the `tests` subset needs some work to allow library test runs in CI
* from prototype
* fix OSX
* fix for Android
* treat "libSystem.Globalization.Native" as QCall in mono too (for now).
* fix for wasm
* fix pedantic errors on GCC
* delete gPalGlobalizationNative
* pass overrider from the host
* default override
* default PInvoke override runs after optional host-provided overrider.
* Some PR feedback (mostly related to code, not the CMake stuff).
* more coding PR feedback
* Deleted "libraries-native" folder.
* unifying tryrun.cmake into 1 common file
* factor out adding lib-specific dependencies into one place (per native library)
* cleanup: entirely remove tryrun.cmake propagation in eng, gen-buildsys, build-commons, and build scripts
* remove "clrcompression.dll" and "libSystem.IO.Compression.Native.dylib" from single-file host packaging
* mono: refactor Globalization lookup into `default_resolve_dllimport`.
* set FEATURE_DISTRO_AGNOSTIC_SSL according to __PortableBuild
* CORECLR_CALLING_CONVENTION for the host callback types
* refactor common parts of entrypoints.c into entrypoints.h
* rename OverrideEntry --> DllImportEntry
* extra libs as CMake functions
* use macros instead of functions in extra_libs.cmake
* mono formatting style in src/mono/mono/metadata/native-library.c
Co-authored-by: Ryan Lucia <ryan@luciaonline.net>
* mono: Remaining stylistic nits.
Co-authored-by: Ryan Lucia <ryan@luciaonline.net>
* do not set DFEATURE_DISTRO_AGNOSTIC_SSL on iOS, Android, tvOS
Co-authored-by: Ryan Lucia <ryan@luciaonline.net>
* Share unix getexepath() definition via src/native
* Address CR feedback
* Remove duplicate property
* Inline variable with single usage
* Fix include path in tests
* Remove unixcoreruncommon static lib dependency
* Merge coreruncommon.{cpp,h} into corerun.cpp
* Include local headers before the first use
* Remove Unix case from (Win32 only) corerun
* Use realpath in getauxval case
* Delete obsolete comment
We're installing openssl@1.1 from Homebrew so we should check that version.
It looks like CI Macs don't set the /usr/local/opt/openssl symlink anymore.