Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Permit defining native tools installation / OS #2673

Closed
Tracked by #6560
chcosta opened this issue May 2, 2019 · 17 comments
Closed
Tracked by #6560

Permit defining native tools installation / OS #2673

chcosta opened this issue May 2, 2019 · 17 comments

Comments

@chcosta
Copy link
Member

chcosta commented May 2, 2019

Currently, if you define a native tool in global.json, it attempts to install on every OS (Windows / Linux). Many teams, just want native tools to be installed on Windows, but use Docker to provide native toolset dependencies on Linux. We need some method to specify appropriate OS' or to disable native toolset installation when running.

FYI @tmat, @ViktorHofer , @natemcmaster , @adiaaida

@ViktorHofer
Copy link
Member

Why not just move away from defining native tools in the global.json file as that approach is not flexible at all. The native tools bootstrapping is already part of the restore phase of arcade. Why not define them as an ItemGroup in Tools.props instead? (or a NativeTools.props) There we can easily set msbuild conditions based on the OS.

jkotas added a commit to dotnet/coreclr that referenced this issue May 24, 2019
jkotas added a commit to dotnet/coreclr that referenced this issue May 24, 2019
jkotas pushed a commit to dotnet/coreclr that referenced this issue May 24, 2019
* Update dependencies from https://github.com/dotnet/arcade build 20190522.13

- Microsoft.DotNet.Arcade.Sdk - 1.0.0-beta.19272.13
- Microsoft.DotNet.Build.Tasks.Feed - 2.2.0-beta.19272.13
- Microsoft.DotNet.Build.Tasks.Packaging - 1.0.0-beta.19272.13
- Microsoft.DotNet.Helix.Sdk - 2.0.0-beta.19272.13

* Update Unix permissions

* Set the versions same way as CoreFX repo

* Fix the product branding version

* Delete .NET Framework reference assemblies reference

* Workaround for dotnet/arcade#2673
@hoyosjs
Copy link
Member

hoyosjs commented May 29, 2019

@chcosta We are hitting this again in CoreCLR. This causes hangs when we perform a restore, and the environment variable is not the best workaround right now as we use the restore flag all over the place. We've also hit it in some dev machines - particularly OSX. Do we have any recommendations here? Is it possible to go back to not restore by default? Other people complained that these are getting installed into their user directories during inner loop, even though a perfectly functional version was already in the the path. Disabling with the environment var is a workaround and so is skipping the installation by default. We still need to dig in why this hangs - even if we decide to go the msbuild route. On CI this gets our packaging step from under a min to a timeout after more than 40 mins.

cc: @sbomer @jkotas

@jkotas
Copy link
Member

jkotas commented May 29, 2019

Other people complained that these are getting installed into their user directories during inner loop, even though a perfectly functional version was already in the the path.

+1.

I gave the same feedback on the early design for dealing with native dependencies. From #64 (comment) : But please do not download gigabytes of stuff for me by default when I have them in my Visual Studio installation already. Maybe not the exact version, but that's fine.

@ViktorHofer
Copy link
Member

Sounds like a severe issue with a big impact. I'm fine making it an opt-in then.

I gave the same feedback on the early design for dealing with native dependencies.

+1

@chcosta
Copy link
Member Author

chcosta commented May 29, 2019

#2911

Ack, I understand the pain here. Only thing to be aware of is https://github.com/dotnet/arcade/blob/51079d2f2412aa4923f9f2a4f78067f1045fbe8c/Documentation/Policy/ArcadeCommunications.md#types-of-engineering-services-change-communication. ie, we need to communicate any breaking changes with our partners.

FYI @MattGal @markwilkie @mmitche

@chcosta
Copy link
Member Author

chcosta commented May 29, 2019

Did something change to exacerbate this issue or has this been causing problems for the past month?

@hoyosjs
Copy link
Member

hoyosjs commented May 29, 2019

@chcosta We didn't have an arcade uptake for about a month due to SDK updates and msbuild issues. Once we fixed them, the solution was to comment the snippet @jkotas turned into a PR.

@chcosta
Copy link
Member Author

chcosta commented May 29, 2019

I see. Makes sense, sorry for the pain! Let's continue to push to get this sorted. Likely it's going to take a few days. :(

hoyosjs added a commit to dotnet/coreclr that referenced this issue May 30, 2019
wtgodbe pushed a commit to dotnet/coreclr that referenced this issue May 30, 2019
* Update dependencies from https://github.com/dotnet/arcade build 20190529.5

- Microsoft.DotNet.Arcade.Sdk - 1.0.0-beta.19279.5
- Microsoft.DotNet.Build.Tasks.Feed - 2.2.0-beta.19279.5
- Microsoft.DotNet.Build.Tasks.Packaging - 1.0.0-beta.19279.5
- Microsoft.DotNet.Helix.Sdk - 2.0.0-beta.19279.5

* Work around dotnet/arcade#2673
@shawnro
Copy link
Member

shawnro commented Feb 6, 2020

@chcosta, @riarenas, Do you have a complete list of requirements that are preventing folks from using the native bootstrapping? If not, please reach out to teams and gather it.

@chcosta
Copy link
Member Author

chcosta commented Feb 6, 2020

I think this is largely encompassed by @MattGal's epic

This should be added - #4482

And we need to create an issue to track the "don't install more than you need to" request.

@MattGal , are you driving this? Do you have a list of repos that are using tools bootstrapping today? So we know which repos to talk to that aren't using bootstrapping and have reasons.

@riarenas
Copy link
Member

riarenas commented Feb 6, 2020

That epic is not funded, it only has @MattGal's name because it's an issue he opened that got turned into an epic. There's no one driving that space right now.

The ask is for us to do the things you asked about 😃

@chcosta
Copy link
Member Author

chcosta commented Feb 6, 2020

Cool, I guess I missed the part that this wasn't funded.

@chcosta
Copy link
Member Author

chcosta commented Feb 6, 2020

I'll reach out to folks

@ViktorHofer
Copy link
Member

dotnet/runtime uses native toolset bootstrapping partially but would like to use it through the bank to not depend on machine agent configurations like installed cmake versions. Please loop me into relevant discussions.

@markwilkie
Copy link
Member

markwilkie commented May 19, 2021

Snippet from @dougbu to better explain his thinking.

"native-tools": {
  "cmake": {
    "version": "3.11.1",
    "platform": "win"
  }
}

picenka21 pushed a commit to picenka21/runtime that referenced this issue Feb 18, 2022
* Update dependencies from https://github.com/dotnet/arcade build 20190522.13

- Microsoft.DotNet.Arcade.Sdk - 1.0.0-beta.19272.13
- Microsoft.DotNet.Build.Tasks.Feed - 2.2.0-beta.19272.13
- Microsoft.DotNet.Build.Tasks.Packaging - 1.0.0-beta.19272.13
- Microsoft.DotNet.Helix.Sdk - 2.0.0-beta.19272.13

* Update Unix permissions

* Set the versions same way as CoreFX repo

* Fix the product branding version

* Delete .NET Framework reference assemblies reference

* Workaround for dotnet/arcade#2673


Commit migrated from dotnet/coreclr@d3b5e99
@riarenas
Copy link
Member

Is this issue still relevant with the new world where bootstrapping dependencies in anything other than hosted mac machines is frowned upon? @MattGal @jonfortescue

@jonfortescue
Copy link
Contributor

It is not. Closing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

8 participants