Closed tlakollo closed 1 year ago
I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label.
cc @dotnet/linker-contrib @dotnet/ilc-contrib
cc @marek-safar @radekdoulik
Tagging subscribers to this area: @dotnet/area-meta See info in area-owners.md if you want to be subscribed.
Author: | tlakollo |
---|---|
Assignees: | - |
Labels: | `area-Meta` |
Milestone: | 8.0.0 |
Create a new folder under src\tools
That looks better to me.
we need to maybe ship cecil packages from mono/cecil and consume them in the runtime to later be used by linker
We need to make sure that this is compatible with our servicing policies and source build. If we were to keep cecil in separate repo, I expect that we would need to move it to dotnet/cecil at least.
Moving Cecil to runtime repo is problematic. So far we've used mono/cecil as only a way to ship predictable bits and have a way to quickly fix issues without waiting for upstream merge. But we always send all our changes upstream and most of the time mono/cecil and upstream are identical. If we were to move cecil into runtime repo, it would have to be a mirror, which seems impractical.
We need to make sure that this is compatible with our servicing policies and source build. If we were to keep cecil in separate repo, I expect that we would need to move it to dotnet/cecil at least.
I don't think mono/ org should be a problem for source build (we have or had sources used by source build there before) but I have no objection to creating another fork under dotnet/ org. We just need to be careful about versioning of the internal cecil package/dlls.
Tagging subscribers to this area: @agocke, @sbomer, @vitek-karas See info in area-owners.md if you want to be subscribed.
Author: | tlakollo |
---|---|
Assignees: | tlakollo |
Labels: | `area-Tools-ILLink` |
Milestone: | 8.0.0 |
Closing as complete
Move linker repo to runtime repo
This issue tracks progress and discussion for moving the dotnet/linker repo into dotnet/runtime repo.
Progress
Follow-up work
Motivation
Select the location for the linker project
So far there have been some locations that seem relevant
src\coreclr\tools\
folder, although it would be closer to the AOT tools linker is not strictly a part of the coreclrsrc\tools
for tools that are agnostic to the clr. Likely the best option.Avoiding having a cecil submodule
Part of the linker workflow is to have a
.gitmodules
file that specifies amono/cecil
module, for runtime this won't fit the runtime needs. So we need to maybe ship cecil packages from mono/cecil and consume them in the runtime to later be used by linkerLinker style of code format
Currently, linker repo uses mono style of code. This makes already codesharing with NativeAOT more difficult since we cannot share code as is. Linker already transition from the mono space to the dotnet space, which leaves in the air if it should still use the mono guidelines. Once moving to the runtime repo and giving that we want to share code, the most likely solution is to just use runtime format for that repo. Note: mono directories under runtime still use the mono style of code guidelines.
Legs for execution
Need a definition on when should ci build linker and run linker tests. Most likely will remain as a subset just like currently clr.tools and clr.toolstests, and run only if changes in the linker repo are made. For source build, building and testing the linker repo seems inevitable unless we create a different leg that only runs linker.
Add an additional label
Add an additional label to runtime to identify linker issues
Keep a history of the linker changes
There are some scripts that were used to consolidate different repositories into runtime, although they are tailored to work with certain repositories we could configure it to keep the history from linker (see https://github.com/dotnet/consolidation)
Migration of github issues
Previous runtime consolidation work had the help of GitHub to migrate all issues from the different repos to the new dotnet/runtime repo, and then lock down creation of additional issues, such that the repos will no longer be used for issue management. They also inhibit the creation of PRs to the main branch, effectively making old repos an archive for read-only review of history. Plan is to do the same for linker