The old script was heading towards spaghetti code realm. This breaks up
all the image variations such as hybrid MBR, OEM packages, etc into
configuration options and small functions that actually do the work.
All this is in the new vm_image_util.sh library but the command line
parsing and overall procedure remains in image_to_vm.sh
As part of this we gain support for putting some qemu options in a
config file as well as Xen virtual machines using pygrub and pvgrub.
Lots of generally unused options have been removed to simplify things
and keep output file names consistent.
update these ebuilds to use the COREOS lsb-release variables
coreos-installer/coreos-installer
cros-devutils/cros-devutils
gmerge/gmerge
update_engine/update_engine
vboot_reference/vboot_reference
When building on a fresh board root it is easy for bootengine to die a
silent but horrible death because it was installed before one of the
tools it uses to create or includes in the initird. To avoid this use a
very complete dependency list for both DEPEND and RDEPEND.
The existing code seems to assume that the mounts inherited from the
system are private, the Linux default. However on our systems that
clearly isn't the case, all system mounts are set as shared. Considering
all of us have been have been seeing mounts leak out of the SDK despite
cros_sdk creating a new filesystem namespace via unshare I'm guessing
this is a systemd thing.
Instead force all system mounts to 'slave' mode in the SDK namespace so
global changes are still visible but no SDK mounts can leak out.
The cross toolchain doesn't have lib symlinks but this works because it
also doesn't install things to lib. However when this script manually
extracts the toolchain packages to BOARD_ROOT tar includes those empty
directories, replacing the symlinks that were previously there.
Longer term this really needs to go away, whatever build time is saved
by re-using the cross toolchain packages in BOARD_ROOT is not worth this
insane level of complexity it causes...
We need to install baselayout with the build use flag as the very first
package in the new board sysroot to ensure the system's directory
structure is created correctly. This should resolve surprise failures
with the bootengine ebuild.
We've moved all of the chroot configs from /etc to /etc/portage but
setup_board was still symlinking to /etc. Fix the path so no one gets
mixed up by the two copies of the same file. Remove unused script that
also used to write to old location.
Missed this in 59d86fde1c2fa477b91f76d29ea1da145ca6f618, we don't want
to patch shared source trees and doing so causes a sandbox violation. So
disable CROS_WORKON_OUTOFTREE_BUILD for versions with the no-firmware
patch.