I've hit this a few times recently, and wanted to provide some thoughts:
1) you can use 'grep -C5 foo *morph' to see context and check that
all refs for foo point to the same SHA1 or branch.
2) note that if you are working in branch bar and have edited
the foo stratum, then all refs for foo will need to point to your
working bar branch.
It would be helpful if the ERROR message could be more explicit,
stating which conflicting versions it has found.
I believe branch+merge code is up for a re-write so it's probably
worth considering if this can be be fixed. for example maybe morph
should force all refs for foo to bar.
I've put the boot sd card image I'm using on fs1 at
I've included a README to explain it, but briefly.
The sd card image contains a u-boot in the first few "unused" meg.
This u-boot does nothing but boot run the u-boot script on the sd card's
This script, does nothing but setup some variables about the network and
tftp/nfs and boot the kernel specific script over tftp.
The idea of the two scripts is to separate out environment and kernel
boot requirements. This means if/when it's moved to device try, the sd
cards don't need touching. The sd cards environment config being a
script just makes it easier for anyone to edit it without having to boot
The way we have been starting ntpd has not worked very well. We didn't
run it as a daemon, and instead just run it on bootup. This patch
changes it that we run ntpd once at boot (to set the clock) and then
as a daemon (to keep the clock synchronised).
Lars Wirzenius (1):
Make NTP run continuously
busybox.morph | 17 +++++++++++++----
scripts/ntpd-set.sh | 31 -------------------------------
scripts/run-ntpd-with-config | 23 +++++++++++++++++++++++
systemd-units/ntpd-boot.service.in | 10 ++++++++++
systemd-units/ntpd.service.in | 10 ++++++----
5 files changed, 52 insertions(+), 39 deletions(-)
delete mode 100755 scripts/ntpd-set.sh
create mode 100755 scripts/run-ntpd-with-config
create mode 100644 systemd-units/ntpd-boot.service.in
We currently have a situation where "./check --full" fails, at least for me,
in morph master. After some digging, and a discussion with Richard, it seems
that this is happening:
* tests.build/build-system-cmake.script is building a chunk in the "test"
build mode, which effectively mounts / as read-only (except it's somewhat
more complicated than that)
* when the test runs a build, it uses the host's toolchain, including the
* through various steps, this means ccache gets a $CCACHE_DIR set to
* that directory is mounted read-only
* ccache tries to write to /tmp/ccache, and fails
* this fails the test
If the host's /tmp/ccache already has the ccache output, then the test
passes, since ccache need not write anything.
I've asked Richard to have a look at fixing this in some simple manner.
In the long run, I think we need to avoid having morph's test suite
run build commands, since they are always going to be different from
what happens on real builds: we can't afford to do real staging area
setup and bootstrapping of system branches in ./check. Instead, that
testing should be moved to a higher level of testing in the CI. That's
not a small change, though, so we need to get ./check passing first,
and Richard had an idea for how to do that fairly cleanly and quickly.
The tests were broken by the increased validation done during checkout.
The test strata were minimal, but now they were minimal to the point of
This patch fixes the strata to have at least 1 chunk and either have
stratum build-depends or chunks with `build-mode: test`
This means that the expected output had to be amended.
Richard Maw (1):
tests: Make dummy strata pass validation
.../edit-updates-stratum-build-depends.stdout | 5 +-
tests.branching/edit-updates-stratum.stdout | 5 +-
tests.branching/petrify-no-double-petrify.stdout | 1 +
tests.branching/petrify.stdout | 4 +
tests.branching/setup | 1 +
tests.branching/setup-second-chunk | 2 +
tests.branching/tag-creates-commit-and-tag.stdout | 12 +-
tests.branching/tag-tag-works-as-expected.stdout | 12 +-
.../tag-works-with-multiple-morphs-repos.script | 59 ++++++----
.../tag-works-with-multiple-morphs-repos.stdout | 116 +++++++++++++-------
10 files changed, 139 insertions(+), 78 deletions(-)
This is required because otherwise when running a bootstrap you put your
host system at risk.
bootstrap builds are carefully crafted to work entirely in the
staging area, but it needs to read things from /, due to the nature
Currently this means they also have full write access to your system.
This patch changes it so that it always uses linux-user-chroot, so it
chroots to / and uses the same options as staging builds to prevent
them altering the staging area.
This required a more complicated algorithm to work out which paths
needed to be made read-only to allow a set of paths to be writable,
previously it only considered a single directory.
This will break everything until the corresponding build-essential
branches are merged.
Richard Maw (3):
fsutils: add invert_paths function
stagingarea: use invert_paths to bind-mount ro
stagingarea: use linux-user-chroot in bootstraps
morphlib/fsutils.py | 82 ++++++++++++++++++++++++++++++++++++++++-----
morphlib/fsutils_tests.py | 74 ++++++++++++++++++++++++++++++++++++++++
morphlib/stagingarea.py | 58 ++++++++++++++++----------------
without-test-modules | 1 -
4 files changed, 178 insertions(+), 37 deletions(-)
create mode 100644 morphlib/fsutils_tests.py