name: sdk kind: cluster description: | An example of creating a cross-compile SDK for an embedded Baserock system. This cluster demonstrates how you can use the 'sdk' write extension to produce a cross-compile SDK tarball for an Baserock applicance. In this example the system is assumed to run on ARMv7, and the SDK is built to run on any x86_32 GNU/Linux system. The SDK is a Baserock system itself, containing just 'build-essential' and a 'cross-toolchain' stratum. The SDK system also includes the target appliance's system, as a 'subsystem', so that the libraries and headers are available when building. This cluster deploys the SDK system using the 'sdk' write extension, which produces a tarball with a small shell header. When the shell header is executed, and passed a directory name on the commandline, it extracts the SDK to that path and patches the binaries so that they execute correctly from that directory. Deploying the applicate system artifact to the target device should be done with a separate cluster morphology, because you will often want to do this without rebuilding the SDK. You must build each system with `morph build` before deploying. We recommend doing this all from your Baserock development machine, using a Baserock ARM distributed build network to produce the system artifact. Once both system artifacts are cached locally, the `morph deploy` command will produce a self-extracting shell script/tarball following the 'location' field. See the documentation of the sdk.write extension for more information. systems: - morph: systems/armv7lhf-cross-toolchain-system-x86_64.morph deploy: sdk: type: extensions/sdk location: armv7lhf-cross-toolchain-system-x86_64.sh PREFIX: /usr TARGET: armv7lhf-baserock-linux-gnueabi subsystems: - morph: systems/devel-system-armv7lhf-highbank.morph deploy: sysroot: type: extensions/sysroot location: usr/armv7lhf-baserock-linux-gnueabi/sys-root