On 2016-04-19 15:45, Edward Cragg wrote:
I have been working on trying to ensure that YBD builds the same
time it makes a Baserock system.
Thanks for this!
There are some notable occasions when this has been shown to go
when systemd init finds itself overwritten with busybox init, and the
doesn't boot as expected.
I may be wrong, but i think that this could be considered a fault in
current definitions. iiuc there are overlapping files (eg busybox awk vs
gawk) AFAIK we never specified order of installation, and we've not got
a way of expressly dealing with overlaps so far.
I wrote a test  which repeatedly builds a system, and analyses
of it using checksums. This has shown that, as long as instances > 1
deliberate randomisation is enabled), YBD will build a system
different files on each successive build, for 100% of builds. It
packages are being overwritten by others, randomly.
Because of overlapping files in definitions, afaik.
It seems that this is happening in the 'install contents'
part of the
and the following patch fixes the test:
diff --git a/ybd/assembly.py b/ybd/assembly.py
index 02efda1..d8afd8e 100644
@@ -165,7 +165,6 @@ def install_contents(defs, component):
'''Install recursed contents of component into component's
def install(defs, component, contents):
for it in contents:
content = defs.get(it)
This disables the shuffling for all builds, not just systems, since i
been able to find a sensible way to avoid it for only a system build.
if component.get('kind') != 'system':
However, i feel it is likely to be a sensible thing to disable this
behaviour even for stratum and chunk builds, since the same random
may also affect the sandboxes for these builds in a similar way as in
As far as *building* is concerned, i expect that this would have shown
up as occasional build fails if it were a problem. I've done a few
thousand builds with shuffle enabled so I'm pretty confident it's not an
The payoff, however, is that in disabling shuffling, there are
that the build takes four times as long as with it.
I'd be grateful for any thoughts on this, whether it is worth
into disabling the disabling randomisation, and optimising the build
if there might be any alternative approaches.
Please could you try my proposed solution above?