Currently the copyright year check lets things fall through the cracks
if ./check is run at the wrong time.
Previously, if you had added changes to a file, forgotten to change
the copyright year, and run ./check before committing, it would pass,
since it reads the copyright year from the commit.
The first patch fixes this, by checking `git status` to see if the file is
different to that which is committed, and if it is, use the current year.
You would also miss files that have never been committed, since `git
ls-files` doesn't show them by default; the second commit fixes this.
Richard Maw (2):
check-copyright-year: Use current date for uncommitted changes
style check: Include newly added files in checks
check | 5 +++--
scripts/check-copyright-year | 23 ++++++++++++++++++++---
2 files changed, 23 insertions(+), 5 deletions(-)
This also includes an update to zlib.
The changes to gcc and eglibc will also be sent to the list for review.
No patch series for zlib will be included, since there are no morph
related changes involved in updating its version.
Richard Maw (1):
Define a minimal x86_32 system
base-system-x86_32-generic.morph | 2 +-
build-essential.morph | 22 +++++++++++++++++++---
minimal-system-x86_32-generic.morph | 15 +++++++++++++++
3 files changed, 35 insertions(+), 4 deletions(-)
create mode 100644 minimal-system-x86_32-generic.morph
The current workspace layout does not work well for us in many cases,
and given our rethink of the location of morphologies, some of the
initial design choices don't make sense, so we've had a think about how
they could work in the future.
1 branch per workspace
morph checkout -> morph clone
morph edit creates repos based on their morphology path
We want to create a new workspace. Now that workspaces and system
branches have merged, there is no `morph init` command, so we just use
$ morph clone baserock:baserock/definitions
Created new workspace in "baserock"
$ cd baserock
$ ls -A
We created `.morph-system-branch` to track internal state, such as where
the root repository is, and the repository which contains our morphologies
is called `definitions`.
The name of the system branch is the second-last path component, while
the morphologies repository is the last.
$ cd definitions
Cluster and System morphologies are in the top level of the repository,
PLUS the strata have their own subdirectories.
$ cd foundation
Chunk morphologies are now in the stratum's subdirectory. The stratum
morphology itself is called `morph` in that subdirectory.
*NOTE*: This layout is not mandatory, morphologies are referenced by a
full file path, so you can name them whatever you want now.
If we now look at `systemd.morph` we seed that it now has the `repo`
and `ref` fields.
$ cat systemd.morph
*NOTE*: We haven't finalised the chunk morphology format yet, but we
want to be able to put repo and ref in there.
Supposing we want to make changes, we use `morph edit`. It has changed
from being given a system, stratum and chunk, to just the morphology path.
$ morph edit foundation/systemd.morph
Checked-out "foundation/systemd.morph" at "~/baserock/foundation/systemd"
$ cd ../../foundation/systemd
$ git branch
The branch that this checkout is using, is the name of our system branch,
with the morphology path appended.
This is required, since multiple chunk morphologies can be for the same
repository. They may be at different refs, but we give them a new ref
for this branch, and if we don't give each chunk a unique ref, we can't
push all of them, since there will be a conflict.
*NOTE* This will un-share repositories in the case where they also use
the same ref (e.g. gcc in build-essential). We may want a scheme to
*NOTE* The HEAD of our definitions repository being `master` means that
we can't push this branch since:
1. Trove's Gitano rule-set prevents you pushing branches to repositories
in upstream: that don't start with your trove prefix (e.g. baserock/)
2. Git won't accept master/* as a valid ref, since master exists.
Some suggested fixes are:
1. Have the HEAD ref of definitions repository always start with your
2. Prepend the trove prefix if it doesn't already start with it
3. Fetch in upstream's refs in a different namespace and slacken
Gitano's rule-set to allow pushing to branches that don't start with
your trove prefix
*NOTE* It's also possible that you have multiple morphologies repositories
on your trove. You could get a name conflict if two of them have a
system branch of the same name, and edit the same chunk, which would
be a surprising GOTCHA if you need to make the same change to multiple
repositories (e.g. a security fix affecting a component in both systems).
It would be possible to avoid this by requiring unique branch names, but
for the security update case, this is an odd restriction that unreasonable
to check, since you need to keep track of the locations of every
`morph init` is now deprecated, since you don't create a workspace
independently of the system branch any more.
`morph checkout` became `morph clone`.
`morph branch` no longer exists. We still need to specify a way to create
a new branch.
The simplest thing to do would be to add a new option to `morph clone`
to specify what we want to call the new branch.
Alternatively, we have a different step for renaming your current branch,
or creating a new branch and switching to that.
This *could* be with git's own commands, if we determine the current
branch from the current branch of the root repository.
From: Mark Doffman <mark.doffman(a)codethink.co.uk>
The following patch series adds a virtualization stratum to baserock.
This stratum includes KVM, libvirt and virt-manager to allow baserock
systems to act as a virtualizaiton host.
To test the virtualization features:
Build and run a system containing the virtualization stratum. I have
tested nested virtualization only using baserock running on KVM.
Virtualbox may or may not work. So far x86_64 systems are the only
Once running start libvirtd.
> systemctl start libvirtd
I haven't yet added the symlink to run libvirtd by default. If you are
running the baserock host within a libvirt virtual machine the 'default'
network may have failed to start due to conflicting IP addresses.
> virsh net-list
Should show the 'default' network up and running. If not:
> virsh net-edit default
Change the ip addresses in the 'default' config to something different.
> virsh net-start default
Once libvirtd and the default network are installed you may use
virt-install to create a virtual machine within baserock.
> virt-install --name br-nested \
> --disk path=baserock-current-base-x86_64.img,bus=ide,format=raw \
> --memory 1024 --accelerate --nographics --import
Libvirt is compiled with VNC support so it may be possible to access
the screen of the nested virtual machine from your root OS, I haven't
* VNC compiled but not tested.
* Libvirt ONLY compiled for qemu/kvm no other guest types supported.
Happy baserock hosted virtualization!
Mark Doffman (3):
Add virtualization stratum.
Add XZ dependency to libxml2
Update gobject-introspection version.
core.morph | 17 ++++----
foundation.morph | 6 ++-
genivi-foundation.morph | 4 --
virtualization.morph | 103 ++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 117 insertions(+), 13 deletions(-)
create mode 100644 virtualization.morph
This patch series adds some more memoisation which speeds up cache key
computation quite significantly. Also the tests are updated to ensure that we
actually do exercise the memoisation pathways and the logging is updated to
make it clear when we're returning memoised results.
This will need a definitions change in tools.morph to update the SHA1 for
I can confirm that ./check passes (modulo a rawdisk related yarn which I cannot
run successfully in my chroot right now anyway).
Daniel Silverstone (2):
CacheKeyComputer: Memoise cache keys more effectively.
CacheKeyComputer Tests: Update to explicitly test for memoisation
morphlib/cachekeycomputer.py | 33 +++++++++++++++++++++++----------
morphlib/cachekeycomputer_tests.py | 13 +++++++++++++
2 files changed, 36 insertions(+), 10 deletions(-)
From: Mark Doffman <mark.doffman(a)codethink.co.uk>
Some extra kernel parameters are needed for virtualization
most importantly CONFIG_KVM but also some others needed
for libvirt to set up a bridge and perform its ip routing.
SHA: 53edc8ca45a3ace97 (HEAD)
Mark Doffman (1):
Add kernel config needed for virtualization hosting.
linux.morph | 7 +++++++
1 file changed, 7 insertions(+)
Version 4 of this series fixes the small issues with the last series.
This patch adds to the lighttpd config to allow http://<trove>/releases
to show a directory listing of the rsync space of a releases repository.
Until something is pushed to this rsync space, the url will instead give
a 404 error.
It also includes a script to create a site project, and create the
required releases repository in it, along with a systemd unit that will
run this script on boot if the repository does not already exist.
Finally, the makefile for trove-setup is changed to install the script
in the right place.
Adam Coldrick (3):
Enable directory listing in <trovehost>/releases
Add a script to create the releases repository
Add a systemd unit to run the repo creation script
etc/lighttpd/git-httpd.conf | 4 ++
share/releases-repo-migration.sh | 117 +++++++++++++++++++++++++++++++++
units/releases-repo-migration.service | 14 ++++
3 files changed, 135 insertions(+)
create mode 100755 share/releases-repo-migration.sh
create mode 100644 units/releases-repo-migration.service
This is a bit of a reminder and a bit of a formalisation of process.
Up until now, changes to chunks have only needed a patch series including repo,
ref, sha and landing branch and the patch in question.
This was enough for us to merge the change and get it live.
Since we petrified master of definitions, this has changed.
We now need not only the chunk change, but *ALSO* a patch for definitions.
Eventually we will get morph to handle this for us during merge, but for now we
need explicit merge requests for both chunks and the associated definition
Submitters: Please try not to forget to provide an indication of what needs
changing in definitions (if not a patch)
Reviewers: Reject a patch series if it cannot go live due to a lack of
definitions changes. (Note, not every change is to something *in*
Baserock, e.g. baserock-chroot clearly doesn't need a definitions
Mergers: DO NOT MERGE without a definitions change. When you have merged the
definitions change, *VERIFY* that the ref: fields are SHA1s (and correct)
and that the unpetrify-ref hasn't changed. It's worth remembering that
no matter the definitions provided by the submitter, the merger will likely
generate a different commit SHA1 due to name differences etc. use the SHA1
created during your merge, not any SHA1 provided by the submitter.
We'll review this as we go, but please please be aware of this need for now.
Daniel Silverstone http://www.codethink.co.uk/
Lead Architect GPG 4096/R Key Id: 3CCE BABE 206C 3B69
This patch series adds some system morphologies for small devel systems
to be used in a chroot.
Adam Coldrick (6):
Add system morphology for small x86_64 devel system for a chroot
Add system morphology for small x86_32 devel system for a chroot
Add system morphology for small ppc64 devel system for a chroot
Add system morphology for a small armv7l devel system for a chroot
Add system morphology for a small arm7b devel system for a chroot
Add system morphology for a small arm7lhf devel system for a chroot
devel-system-armv7-chroot.morph | 16 ++++++++++++++++
devel-system-armv7b-highbank-chroot.morph | 16 ++++++++++++++++
devel-system-armv7lhf-highbank-chroot.morph | 16 ++++++++++++++++
devel-system-ppc64-chroot.morph | 17 +++++++++++++++++
devel-system-x86_32-chroot.morph | 17 +++++++++++++++++
devel-system-x86_64-chroot.morph | 17 +++++++++++++++++
6 files changed, 99 insertions(+)
create mode 100644 devel-system-armv7-chroot.morph
create mode 100644 devel-system-armv7b-highbank-chroot.morph
create mode 100644 devel-system-armv7lhf-highbank-chroot.morph
create mode 100644 devel-system-ppc64-chroot.morph
create mode 100644 devel-system-x86_32-chroot.morph
create mode 100644 devel-system-x86_64-chroot.morph