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?
- IRC: freenode #baserock
- Public mailing list: baserock-dev@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.