Arcade: Permit defining native tools installation / OS

Created on 2 May 2019  路  14Comments  路  Source: dotnet/arcade

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

native-toolset-bootstrapping

Most helpful comment

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.

All 14 comments

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.

@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

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 https://github.com/dotnet/arcade/issues/64#issuecomment-384712062 : 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.

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

https://github.com/dotnet/arcade/pull/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

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

@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.

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. :(

@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.

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

This should be added - https://github.com/dotnet/arcade/issues/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.

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 馃槂

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

I'll reach out to folks

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.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

riarenas picture riarenas  路  49Comments

JohnTortugo picture JohnTortugo  路  35Comments

rainersigwald picture rainersigwald  路  38Comments

bricelam picture bricelam  路  30Comments

JohnTortugo picture JohnTortugo  路  26Comments