Execution Environment Requirements
Background
Discussion on the mailing list. Marking this as a blocker for 1.4.
This will allow us to use remote execution (with services that supports it) to build projects on different OS's and architectures. This will involve adding user configuration options that are used for SandboxConfig
, and then passed into Platform
message within the Command
message uploaded. It should default to the host OS and architecture if nothing is specified and can be specified in both project and element options.
This will change the architecture option in SandboxConfig
, machine_arch
, to one proposed in the mailing list, which is slightly different to uname -m
and incorporates the endianness of the system. Particularly important for architectures such as ARM that can be set either way.
If specified we also want to be able to build 32-bit builds on a 64-bit machine.
Task description
-
Add option for users to set sandbox configuration OS and architecture. -
Update machine_arch
to use proposed list, checking endianness of system. -
Use this to set the Platform
part of theCommand
message. -
Change local sandboxes to use personality/linux32 if building a 32bit library on a 64bit computer. -
Add os project option type, very similar to the already existing arch project option type. -
Report an error when attempting to build locally with an incompatible os or arch configuration. We already have Platform.check_sandbox_config(), which I expect to be usable for this.
Acceptance Criteria
Users can now specify OS and architectures, and this is sent correctly to remote execution services within the Platform
message.