Baserock 14.20 is released

This is the first Baserock release since January 2014.

Major changes since Baserock 13:

  • New version numbering system and release policy.
  • The format of Baserock system definitions has changed significantly.
  • Compliance as a GENIVI Horizon H-1.0 baseline (includes Wayland and Weston).
  • Artifact splitting has been implemented.
  • GNU Compiler Collection version 4.7.
  • Lorry Controller (Trove's repo mirroring daemon) has been rewritten.
  • Example Node.js stratum and system added.
  • OpenStack novaclient added.
  • Support for nested deployment.
  • system-integration-commands field added to chunk morphologies, which allows running commands while constructing the final rootfs.
  • Various bug fixes and component updates.

New features:

  • ARMv7 hard float support.
  • Distributed building support has been integrated into Morph.
  • Documentation in Morph for some deployment extensions.
  • Large binary files can be added to chunk repos.
  • Support for building cross-compilation SDKs for targetting systems built with Baserock.
  • Support for running Baserock in a chroot.
  • Upgrade support added to morph deploy (using Btrfs as a root filesystem).
  • Virtualisation stratum.

We do not recommend building Baserock 14.20 with Baserock 13. While not impossible, we advise all users of Baserock 13 to upgrade by redeploying their systems from the provided images. Users who have forked the baserock:baserock/morphs.git repository should transfer their changes to baserock:baserock/definitions.git.

Please get in touch if you have any issues! See below for contact information.

New release policy

Beginning with Baserock 14.20, we have changed to date-based version numbers. The format is YY.WW, that is, the last two digits of the year followed by week number. So for example if we make a Baserock release on January 1st, 2015, that will be Baserock 15.01.

We intend to aim for weekly releases of Baserock eventually.

Changes to system definitions

System and stratum morphologies are now stored in baserock:baserock/definitions.

All stratum morphologies are in the definitions.git repo. The 'repo' and 'ref' fields are gone from system morphologies. All chunks are referenced by their commit SHA1, where previously Baserock often used named refs. These changes make definitions.git the sole master repository of all systems built from it: the output of building a given commit of definitions.git will always be the same (modulo certain timestamps and metadata files).

Previous releases were from baserock:baserock/morphs. This repository is deprecated and may be removed or archived in the future.

Baserock-based projects are recommended to maintain forks of definitions.git, merging in changes from upstream Baserock as they wish.

Changes to system branch workspaces

The morph checkout and morph branch commands now convert ':' to '/' when creating directories. We found that ':' in path names can trigger bugs in some build systems.

The following command:

$ morph checkout baserock:baserock/definitions master

Checks out the definitions repo into the following directory:

./master/baserock/baserock/definitions/

In Baserock 13 that would have been:

./master/baserock:baserock/definitions/

This means that system branch workspaces that were created with old versions of Morph will need to be pushed, and then checked out again into a fresh workspace so that you can work on them with Morph from Baserock 14.20.

New features in detail

ARMv7 hard float

The ARM GENIVI baseline image is now built with hardware floating point enabled (armv7lhf architecture). Soft float systems can still be built (armv7l and armv7b architectures).

Distributed building

Distbuild is a distributed build system that can be used to build a number of systems in parallel using a set of workers. Chunks in a system may also be built in parallel, reducing the build time for a single system. Distbuild can be used to avoid unnecessary rebuilds, this is achieved firstly through a shared cache, and secondly through the distbuild controller's build scheduler. A distbuild uses a Trove instance on the local network to hold source code and built artifacts.

See the example deployment morphology example-distbuild-cluster.morph if you want to set up a distbuild network.

Documentation for deployment extensions

In order to make usage of Morph's extensible morph deploy command more easy, you Morph can now list the available deployment extensions with morph help-extensions, and read the documentation for a given extension with, for example, morph help tar.write.

Not all extensions have documentation yet. The Baserock project welcomes new participants, and this would be a great starting point for getting involved!

Large binary files

Morph and Trove together wrap the tool git-fat with two new commands: morph add-binary and morph push.

SDK generation

See the sdk-example-cluster.morph in definitions.git. This produces a cross-compiler which runs on x86_32 and targets armv7lhf. It can be adapted to other platforms.

Baserock in a chroot

This can be used with the Baserock chroot management tools, which wrap schroot and provide helpful tools for working with Baserock chroots. See the baserock-chroot README.

Upgrade support

Baserock's Trove system is now upgradable in-place. Upgrades can be deployed with morph deploy --upgrade. Baserock devel systems can also be upgraded in place, see upgrade-devel.morph in definitions.git. Btrfs subvolumes are used to share content between the various system versions. In Baserock 14.20 the following subvolumes are shared: /home, /opt, /root, /srv and /var. Changes to /etc are also propagated between versions by doing a 3-way merge.

There are two new tools introduced as part of this functionality: system-version-manager, which allows you to manage the available system versions, and baserock-system-config-sync which is used by system-version-manager deploy to transfer changes between different system versions.

Virtualisation

There is a new 'virtualisation' stratum in the x86_64 devel system, which includes libvirt, virt-manager and QEMU. You can now run Baserock inside Baserock!

How do I get started?

Start with the following page: http://wiki.baserock.org/quick-start/

How do I get in contact?

If you find a bug in Baserock, we'd like to hear from you using one of the above methods.

The Baserock project welcomes new participants! We hope you enjoy experimenting with Baserock and look forward to hearing about any cool things you do with our work.