Skip to content

Default profile inheritance #10

Open

Description

#5 Build profiles and reproducible builds

With reference to the default profile handling...

When using the profile-based build, the globally installed platforms and libraries are excluded from the compile and can not be used in any way, in other words, the build is isolated from the system and will rely only on the resources specified in the profile: this will ensure that the build is portable and reproducible independently from the platforms and libraries installed in the system.

Please consider adding an option to allow default / global data or to be able to include a default profile. This would allow the build profile to be used as an override. So essentially the globally installed platforms and libraries are included in the compile (or a default profile) unless they are specified within the build profile, in which case the build profile version is used in preference.

For example it could be invoked in the way that the command is called...

arduino-cli compile [sketch] --profile nanorp --override 

Or this could be defined within the profile itself...

profiles:
  nanorp:
    inherit true
    fqbn: arduino:mbed_nano:nanorp2040connect

or perhaps it is better to simply specify the default profile such that it will use this instead...

profiles:
  nanorp:
    default nanorp_default
    fqbn: arduino:mbed_nano:nanorp2040connect

inheritance priority would be ...

Overriding profile > default profile > global defaults

This would make the management of profile data a lot easier as it would potentially avoid masses of repetition within the build data file. It also makes it much easier to perform unit tests across a range of different setups / platforms as only the differences from the default profile would need to be defined

/DM

Activity

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

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions