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
* 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.
* 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
* 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
Please get in touch if you have any issues! See below for contact
# 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
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:
In Baserock 13 that would have been:
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
# 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
## 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
There is a new 'virtualisation' stratum in the x86_64 devel system,
which includes libvirt, virt-manager and QEMU. You can now run Baserock
# How do I get started?
Start with the following page: <http://wiki.baserock.org/quick-start/>
# How do I get in contact?
- IRC: freenode #baserock
- Public mailing list: baserock-dev(a)baserock.org
- See also: <http://wiki.baserock.org/mailinglist/>
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.