Date: 2013-08-22

Baserock 10 is released

The Baserock team, and Codethink Limited are proud to announce the release of version 10 of the Baserock system.

What is new in this version?

The focus for the Baserock 10 release was workflow. In addition, non-user-facing improvements were made to the infrastructural parts of the codebase.

Branch and merge

The branch and merge commands had a large refactoring effort spent on them during the Baserock 10 cycle. This was focussed on improving the core morphlib classes such that cleaner implementations of the branch and merge functionality could be implemented and better tested.

This work is not yet complete, so there is a mix of old commands and new commands being available. As such, if the new version has unexpected issues, the old version is available as a fallback.

The init, branch, checkout, workspace and show-branch-root subcommands were rewritten, and the new implementation has become the default. The old commands are still available as old-init etc.

The work to refactor morph edit is incomplete, but present. The old edit code remains the default, but new-edit is available for you to try if you wish.

Deployment

morph deploy now has a new syntax. We made it a clean cut because very few people are actively using the old syntax and it was brittle, complex, and did not lend itself to tracking in git in a structured and pleasant manner

Deployment now involves a new morphology kind: cluster.

A more detailed description of how it works and an example are available in morph help deploy, though it is a known issue with Morph's help output that the example formatting is not cleanly preserved.

The example from the help is:

name: cluster-foo
kind: cluster
systems:
- morph: devel-system-x86_64-generic
  deploy:
      cluster-foo-x86_64-1:
          type: kvm
          location: kvm+ssh://user@host/x86_64-1/x86_64-1.img
          HOSTNAME: cluster-foo-x86_64-1
          DISK_SIZE: 4G
          RAM_SIZE: 4G
          VCPUS: 2
- morph: devel-system-armv7-highbank
  deploy-defaults:
      type: nfsboot
      location: cluster-foo-nfsboot-server
  deploy:
      cluster-foo-armv7-1:
          HOSTNAME: cluster-foo-armv7-1
      cluster-foo-armv7-2:
          HOSTNAME: cluster-foo-armv7-2

This is deployed with morph deploy cluster-foo.

It is possible to override values from the command line with commands such as morph deploy cluster-foo cluster-foo-x86_64-1.VCPUS=1

While there seems to be more typing involved in deploying a single, one-off, system; the new cluster morphology makes it much easier to keep track of changes to deployments and also improves the experience of deploying multiple systems at once.

Cluster morphologies will feature more heavily in the Baserock workflow in coming releases.

Cross bootstrap

One of the aims of the Baserock project is to be Baserock all the way down to the metal. To this end, we need to be able to bootstrap new architectures from Baserock systems.

This work was done during the port to armv7b but, since it required unusual changes to morph, the work was not merged immediately.

It has now been merged. The result of a cross bootstrap is a tarball, which contains a cross-built environment and scripts to build the rest of the system, so it can be run on the target device to provide a system that is able to build other Baserock systems.

There are known issues with the generated cross-bootstrap scripts and they shall be refined during the Baserock 11 cycle.

Devel systems

There is no longer a separate GENIVI devel system. All development systems carry everything we have put into the GENIVI related strata. This means that development systems are closer to being self-hosted graphical environments with all the necessary sound, tools etc to be useful to an engineer.

Other changes

  • Fixed trovectl to work with the sshkey command
  • deploy extensions now abort on the first failure.
  • Updated a few things
  • Updated cmdtest for the yarn scenario test tool to use in Morph.
  • Wrote yarns for morph
  • Added a sanity check for building a stratum with no build dependencies.
  • Added a sanity check in morph checkout to check there are any systems
    • It's easy to accidentally checkout the baserock:baserock/morph.
  • The openssh chunk now provides the ssh-copy-id command
  • lzo now builds shared libraries

How do I get started?

You can find a quick start guide on the Baserock wiki and also a short guide on developing with Baserock which follows on from the quick start guide and shows you how to get to the point of proving you can build Baserock within Baserock.

From that point on, your imagination is the limit. You can follow our development in the Git repositories we publish.

How do I get in contact?

The Baserock project has an IRC channel and mailing list for developers to gather and discuss anything associated with Baserock. It is strongly recommended that you use the IRC and lists to contact the team for anything associated with the public development of Baserock. We also have a mailing list for announcements which will be notified of any new releases or big developments in Baserock.

If you manage to find a bug in Baserock, we'd like to hear from you. You can find our bug reporting guidelines on the Baserock wiki and we will do our best to help.

We hope you enjoy experimenting with Baserock and look forward to hearing about any cool things you do with our work.