Age | Commit message (Collapse) | Author |
|
port. (#75003)
Co-authored-by: Jo Shields <directhex@apebox.org>
|
|
(#73800)
|
|
targets (#72394)
NetTraceToMibcConverter
- Used in profiled AOT scenarios where a .nettrace file is given as input and is converted to a .mibc file that can be fed into the AOT compiler. This previously was in the AotCompiler task, but for clarity purposes is now separated out.
Streamline Android testing targets
- The testing targets function the same, but are now structured similarly to iOS and Wasm.
- Introduced new testing properties to support profiled AOT:
NetTraceFilePath - The path to a .nettrace file that will be converted into a .mibc file and fed into the aot compiler
RuntimeComponents - The list of native components to include in the test app build (diagnostics_tracing)
DiagnosticsPorts - The ip address:port where the runtime will listen when running diagnostic tooling
DiagnosticStartupMode - The mode the runtime will use at startup for diagnostic scenarios. Suspend will halt the app very early and wait, while nosuspend will wait for a connection, but not halt the runtime
Co-authored-by: Mitchell Hwang <16830051+mdh1418@users.noreply.github.com>
|
|
This reverts commit 63692cd725a2bf36e896c78f9709c5474af0b6c1.
Re-try the change to remove the usage of pre-built hosts and instead always
use the live host. This PR doesn't contain the change to move the host into
liveBuild placement as that would place the host in the shared framework packages
instead of just in the runtime pack. This change also leaves the DotNetHost packages
building, but not being consumed, because the packages may be used for symbol
acquisition. The packages can probably be removed if the symbol problems are
resolved.
|
|
This reverts commit c4277b99ef2b623dca6ed2c1427890855e3deced.
|
|
Eliminates package dependency on the host during build and test. This change adds steps to various build
pipelines to build the host where they wouldn't before. It also stops us from building the Microsoft.NETCore.{DotnetHost,DotNetHostPolicy,DotNetHostResolver}, since those weren't necessary beyond this internal usage.
|
|
* Fix typos
* Cleanup trailing whitespaces in committed files
* Revert a macro for win32 compat
* Disambiguate test data method
* Revert XMLPath test which rely on external assets
* Revert whitespace change in Xml tests
* Revert ClrEtwAl and ILLink.Shared
* Revert crossgen2 props/targets and *.wxl
|
|
You can now use `build.[cmd|sh] clr.aot` to build the components for the AOT workloads.
|
|
|
|
* 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>
|
|
Add basic testing infrastructure in NativeAOT (port from dotnet/linker)
- Port the Mono.Linker.Tests* projects from dotnet/linker
- Add the new projects to .editorconfig so they remain under the dotnet/linker format instead of dotnet/runtime
- clr.toolstests subset now runs the Mono.Linker.Tests infrastructure
- Make DisplayNameHelpers a public class so it can be used by the test infrastructure
- Add a couple of simple test cases (Dataflow and Requires) along with a Repro test, just like the repro project the repro test serves prototyping purposes
- Adds ProducedBy.NativeAOT to be able to represent differences between dotnet/linker and NativeAOT (either because of a bug or because NativeAOT correctly produces additional warnings)
- Use MSBuild properties instead of trying to figure out with linker paths
|
|
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
|
|
Brings back the earlier change to publish crossgen as AOT with a fix for restore flakiness (#65948)
Closes #60016
(cherry picked from commit 0d1e04ba2a9ebc9d21a7f65db00407dd0056b547)
Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com>
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
|
|
Followup to https://github.com/dotnet/runtime/pull/56899
|
|
(#65948)" (#67590)
This reverts commit 0d1e04ba2a9ebc9d21a7f65db00407dd0056b547.
|
|
Publishes crossgen as an AOT binary on Windows+Linux x64+ARM64, otherwise publishes as an R2R single file.
Closes #60016
|
|
script (#67108)
|
|
* Infra for regeneration of third-party-notices file
* Update eng/regenerate-third-party-notices.proj
Co-authored-by: Davis Goodin <dagood@users.noreply.github.com>
* Addressing PR comments
* Updated copyright in all .cs files
* Update dotnet/liner repo name
* Add dotnet/emsdk to the list
Co-authored-by: Davis Goodin <dagood@users.noreply.github.com>
|
|
Split the build of shared framework and out-of-band projects so that
it's possible to just build the shard framework projects, which was
requested by the CLR teams. In the next infrastructure rollout, the
current "libs.ref+libs.src" subsets should be removed. Generate the
targeting pack with an incomplete (without shims) frameworklist as part
of the "libs.sfx" subset.
Build the shim projects after the shared framework and oob projects and
re-generate the targeting pack's frameworklist to include the shims.
Refactor the shims so that they aren't grouped anymore by generated &
manual. Instead group them by "ref" and "src" same as other libraries
in the tree which allows to reference the source project shims and read
from the ReferenceAssembly metadata.
Use ProjectReferences in traversal projects and shim projects instead
of named references that point to binplace directories (see graph below)
This allows to build parts of the product dynamically, i.e. the shim
projects, apicompat.proj, sfx.proj and oob.proj.
|
|
Cleanup: Remove BuildInParallel=false attributes which are the default setting.
|
|
Enable ARM64 libraries testing for NativeAOT.
* Copy the crosstargeting build approach from crossgen2. We'll now build two ILC compilers when targeting ARM64 from x64: an arm64-hosted one that is useless on the build machine, and a x64-hosted one, that will work on the build machine. The `ILCompiler.csproj/props/_crossarch.csproj` projects mirror crossgen's approach.
* Limit the number of libraries tests to one. Hopefully it avoids the build races that we'd see until we can update the repo build to .NET 7 Preview 1.
* Create an ARM64 NativeAOT CI leg that sends the libraries tests to Helix to run.
|
|
Don't even build them as part of the clr subset, only on demand.
|
|
Remove `clr.spmi` from default list; it's already there due to `clr.native`.
|
|
Official builds are currently not building NativeAOT CoreLib.
For unknown reasons the official build splits native build and managed build of the CoreCLR partition.
We had a convenient clr.nativeaotlibs subset that built both the native part and managed part. Managed part can't be built without the native part, so it makes sense.
To satisfy official build's weirdness, we need to split this into two subsets so that we can tell the official build to build the managed part. (Official builds already build everything in the native part, so we're good there.)
|
|
This is using the same strategy we used to build the package in the runtimelab repo.
|
|
* 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
|
|
Allows building the runtime without SPMI.
`build.cmd clr` will still build SPMI.
`build.cmd clr.native` will still build SPMI.
`build.cmd clr.runtime` will no longer build SPMI.
This is mostly motivated by NativeAOT subset builds where SPMI contributes to 10% of the native build time (nativeaot CorecLR subset builds pretty quickly compared to full CoreCLR).
|
|
Replaced with a single ILCompiler.TypeSystem shared between crossgen2 and ilc.
|
|
...from CoreRT repo since we skipped them in runtimelab.
|
|
|
|
This was disabled in https://github.com/dotnet/runtime/pull/38128/commits/d98d9a2f52f16a87fdc8a28a252e94eca796abb2. I don't think those problems exist anymore - targets are written differently, and we would likely see musl-arm64 failures if this was still a problem.
|
|
To make sure ApiCompat tooling for NativeAOT's CoreLib runs at least in some legs, compile libs against NativeAOT CoreLib if we're building CLR, but not building the JIT flavor of the runtime.
The baselining is necessary because the reflection stack of NativeAOT doesn't live in CoreLib.
The CannotRemoveBaseTypeOrInteface baselining will go away once https://github.com/dotnet/runtime/issues/62944 gets fixed. It's one of the "overall goodness" things we can take out of NativeAOT and put it into all runtimes.
|
|
|
|
|
|
tests (#62500)
* [build] Define a component and subset for corerun and copy mono runtime files to coreroot.
|
|
* Reorganize libs.native
* Fix darwin build
* Fix wasm-win32 build
* Fix pipelines path evaluation
|
|
(#58674)
* 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>
|
|
* Remove RefOnly dependency versions
This allows for source-build to replace these versions with source-built versions.
* Eliminate usages of pre-built packages during source-build
* Don't build MSBuild tasks for netfx during source-build
* Don't build Microsoft.Windows.Compatibility during source-build
* Don't build test projects during source-build
* Don't restore Microsoft.DiaSymReader.Native
* Don't build source generators that target older Roslyn versions
* Don't build ILStripTask since it uses a Mono.Cecil "sources" NuGet package that isn't part of source-build
|
|
* Add back the nethost archive.
This archive makes it a bit easier for developers to pull down nethost in a non-.NET environment (without NuGet). We had this in 3.1, but it was lost at some point between then and now with all of the large infrastructure changes.
* Fix symbols copying.
* Create the symbols archive for nethost
* Update src/installer/pkg/archives/dotnet-nethost.proj
Co-authored-by: Juan Hoyos <19413848+hoyosjs@users.noreply.github.com>
* Update src/installer/pkg/archives/dotnet-nethost.proj
Co-authored-by: Elinor Fung <elfung@microsoft.com>
* Update src/installer/pkg/archives/dotnet-nethost.proj
* Symbols are in the PDB folder.
* Fix symbol paths for xplat.
* Update src/installer/pkg/archives/dotnet-nethost.proj
* Update src/installer/pkg/archives/dotnet-nethost.proj
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
* Update src/installer/pkg/archives/dotnet-nethost.proj
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
Co-authored-by: Juan Hoyos <19413848+hoyosjs@users.noreply.github.com>
Co-authored-by: Elinor Fung <elfung@microsoft.com>
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
|
|
This allows consuming the dotnet host that was just built instead of relying on a downloaded one.
We need to move the `host` subset build before the `libs` subset so that the artifacts are available before externals.csproj runs.
|
|
* Do not disable Mono in source-build if it is the primary runtime
This fixes a build failure when building runtime via the source-build method on s390x: with source-build, the Mono runtime is currently not supported -- but this doesn't make sense on s390x where Mono is the *primary* (only) supported runtime.
|
|
Add a test wrapper that executes a test's `Main` method so that more methods are
able to reach Tier1. In particular this is useful in trying to increase test coverage
for dynamic PGO.
Uses various tricks to tolerate tests that are not amenable to being run in this manner:
* failures on the first or second iteration are ignored
* long running tests are run for fewer iterations
* some tests that become flaky after 2 iterations are excluded
Also add support for running tests in this mode to various CI scripts.
|
|
* Move corehost.proj to corehost directory
* Simplify host version overriding
|
|
* Clean-up pkgproj leftovers in libs and apply fixes
Remove any pkgproj infrastructure that was only used by src/libraries
(which is the majority). Delete the packageindex *YAY*.
Update the documentation that covered the packageindex and the pkgprojs.
Avoid any incremental builds during packaging by removing
libraries-packages.proj and use src.proj for packaging instead. Make use
of the `GeneratePackageOnBuild` property to build package during the
allconfigurations without requiring a different entry target.
Fix the addition of the DocumentationFile during packaging when
`GeneratePackageOnBuid` is used by hooking onto the
`DocumentationProjectOutputGroup` that NuGet uses and replacing the
generated documentation file with the one that comes via the
intellisense package.
Also introduce a property to choose the generated documentation file
over the one from the intellisense package:
<UseIntellisenseDocumentationFile>false</UseIntellisenseDocumentationFile>
Removing a few leftover PackageDescription properties from the projects'
Directory.Build.props file.
Cleaning up properties in Directory.Build.props & Directory.Build.targets
files.
* Actually run packaging during the allconfigurations build
* Update docs
* make runtime specific pkgs non packable
* io.ports native pkg fixes
|
|
* Introduce "PrimaryRuntimeFlavor" concept, set to Mono for s390x
* Enable installers, packages, and archives when building the
PrimaryRuntimeFlavor, even when this is Mono instead of CoreCLR
* Update default subsets in eng/Subsets.props to take
PrimaryRuntimeFlavor into account
* Skip packaging singlefilehost when not available (due to building
with the Mono runtime flavor)
* Only build the IL tools packages in coreclr-packages.proj
when building with the Mono runtime flavor
|
|
In order to support generating installers, this change adds the mono.workloads subset and the associated yml.
|
|
Co-authored-by: Larry Ewing <lewing@microsoft.com>
|
|
* Initial arcade-powered source-build infra
* Add patches, fixup from 5.0
* Rename patches to match 6.0-p1 work
* Add source-build specific build script
* Incorporate build-source-build.sh, into eng/
* Run inner build script, through coreclr
* Initial source-build args based on live build (not props file)
* Cleanup: add RID comments, rm empty/absolute args
* Fix subsets
* Disable sourcelink in env, not args
* Fix CI NZEC
* Revert "Use same code to DetectCiphersuiteConfiguration for portable and non-portable builds"
This reverts commit 464010d9d0241bbdcbfbda25b32e78991ddf6093.
* Fix portability
* Fix AllJits build
* Fix missing crossgen2 for non-portable RID
* Create supplemental intermediate nupkgs
* Tweak category names
* Use centralized supplemental nupkg infra
* Add additional 6.0 patches
* Patch updates after merging in main
* SourceBuild.props cleanup
* Fix issue with incorrect patch merge
* Patch updates
* Edit clr.tools patch
* patch updates
* Revert patch integration
* Patch updates
* Edits per code review feedback
* ILAsm workaround
* patch updates
* Move logic to set ILAsmToolPath for source-build
* Update eng/SourceBuild.props
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
* Remove libraries specific patches
* Patch updates necessary with latest main merge
* Add back libraries-packages.proj harvesting patch
* Refactor intermediate package split to be chunkier
* Integrate patch 0017
* Subsets update per code review
* Remove obsolete patch
* Removed patches that were integrated into main
* Remove two additional patches
* Remove remaining patches
Co-authored-by: Davis Goodin <dagood@microsoft.com>
Co-authored-by: dseefeld <dseefeld@microsoft.com>
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
|
|
* Stop reading TargetFramework prop in props files
The TargetFramework property isn't expected to be set in props files
before a project's body is evaluated.
Don't let BuildTargetFramework property fallback to TargetFramework as
BTF's sole intent is to convey the TargetFramework to filter to and not
the current selected TargetFramework. Reduce usage of BTF so that it is
only used in places where code is actually conditioned on filtering.
In addition to that, specify BuildTargetFramework as a global property for
all traversal builds so when invoking one of the traversal projects directly
(src.proj, ref.proj, etc.), BuildTargetFramework doesn't need to specified
manually to get the default behavior (filter on compatible to net6.0).
Remove the inferred BuildingNetCoreAppVertical because of that and
inline its meaning.
Make sendtohelix a normal NoTargets proj so that it has access to the
properties which were moved into the Directory.Build.targets file as
otherwise it wouldn't import that file.
|
|
* Add support for building Mac Catalyst offsets, and use to create AOT compiler nupkgs
|