summaryrefslogtreecommitdiff
path: root/clusters/sdk-example-cluster.morph
blob: 961afdcbfe1f39fbddcf532aac2a19881891bd21 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
name: sdk-example-cluster
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