Arcade: Bootstrap for native tools for builds

Created on 16 Mar 2018  路  12Comments  路  Source: dotnet/arcade

CLI is not enough for several repos in the stack. To truly be able to 'clone then build' Arcade, we'll need to support the bootstrapping and scripting for native builds before CLI.

Done is:

  • [x] Sufficient functionality for teams to onboard
  • [x] Documentation and guidance
  • [x] Pre-CLI toolsets are bootstrappable
  • [x] Build scripts support native builds
  • [x] Native builds are able to use this bootstrapping mechanism to kickstart their build
  • [x] At least one product repo is using native toolset bootstrapping
Epic

Most helpful comment

In addition to what @eerhardt listed as common scripts, another set of scripts to share are the rootfs building scripts that we have in coreclr, corefx, corert, core-setup and source-build in the cross folder.

All 12 comments

As we talked, this should be pay for play.

See also - https://github.com/dotnet/arcade/issues/55

IMO - a good first round of this would be a mechanism that just kept scripts in sync across multiple repos.

/cc @weshaggard

Examples of scripts that are common across repos:

  • RID detection
  • Visual Studio detection
  • c++ compiler detection
  • CMake functions, settings, etc
  • Invoking CMake to generate make files/.vcxproj

In addition to what @eerhardt listed as common scripts, another set of scripts to share are the rootfs building scripts that we have in coreclr, corefx, corert, core-setup and source-build in the cross folder.

@janvorli About the cross folder.

I'm new to arcade, but I supose that what you need is a Task (https://docs.microsoft.com/en-us/dotnet/api/microsoft.build.utilities.task?view=netframework-4.7.2) that implements all the things from the cross folder, I'm right?

@deinok I don't know anything about arcade yet, but I don't think it is related to a Task. What I was talking about was that we need to share Linux shell and cmake scripts across distros.

@janvorli Then, the only idea I have is move the cross to its own repo and use gitsubmodule.
Anybody has a better idea or suggestion?

@janvorli and @deinok - arcade does provide a mechanism to "share" tools/scripts across repos if you guys are interested. Reach out to @riarenas for more details and whether or not it'll actually work for your specific scenario/s.

@riarenas If you can guide me to some examples on how to share a folder like tools/scripts between repos and how to add that in other repos I could take the issue of move cross.

There's an overview of the process here: https://github.com/dotnet/arcade/blob/master/Documentation/Projects/NativeDependencies/Design.md. I'm not familiar with the cross folder, but if what is needed is to bring down scripts from a publicly accessible location, you could create an installer that brings them down with init-native-tools.sh.

There's an example installer for cmake here: https://github.com/dotnet/arcade/blob/master/eng/common/native/install-cmake.sh. The one to just bring a set of scripts should be simpler.

The tooling in place has been sufficient for teams to onboard, and there haven't been more asks regarding this area. If there comes a time where we need to bootstrap different kinds of tools, or if we need to improve the experience, we can revisit.

Was this page helpful?
0 / 5 - 0 ratings