diskimage-builder/elements/architecture-emulation-bina...
Ian Wienand 36b59c001c Standarise tracing for scripts
There is a wide variety of tracing options through the various shell
scripts.  Some use "set -eux", others explicity set xtrace and others
do nothing.  There is a "-x" option to bin/disk-image-create but it
doesn't flow down to the many scripts it calls.

This adds a global integer variable set by disk-image-create
DIB_DEBUG_TRACE.  All scripts have a stanza added to detect this and
turn on tracing.  Any other tracing methods are rolled into this.  So
the standard header is

---
if [ "${DIB_DEBUG_TRACE:-0}" -gt 0 ]; then
    set -x
fi
set -eu
set -o pipefail
---

Multiple -x options can be specified to dib-create-image, which
increases the value of DIB_DEBUG_TRACE.  If script authors feel their
script should only trace at higher levels, they should modify the
"-gt" value.  If they feel it should trace by default, they can modify
the default value also.

Changes to pachset 16 : scripts which currently trace themselves by
default have retained this behaviour with DIB_DEBUG_TRACE defaulting
to "1".  This was done by running [1] on patch set 15.  See the thread
beginning at [2]

dib-lint is also updated to look for the variable being matched.

[1] https://gist.github.com/ianw/71bbda9e6acc74ccd0fd
[2] http://lists.openstack.org/pipermail/openstack-dev/2014-November/051575.html

Change-Id: I6c5a962260741dcf6f89da9a33b96372a719b7b0
2015-02-12 10:41:32 +11:00
..
cleanup.d Standarise tracing for scripts 2015-02-12 10:41:32 +11:00
extra-data.d Standarise tracing for scripts 2015-02-12 10:41:32 +11:00
README.rst Create docs site containing element READMEs 2015-02-10 11:45:35 -08:00

README.rst

architecture-emulation-binaries

This element enables execution for different architectures

When building an image for an architecture that the host machine can not execute, we need to chroot into the image to execute code, and if the host architecture does not match, we need to emulate the instructions.

This element does the following:

  • copies the binary file into chroot /usr/bin environment. Binary file is chosen based on host architecture and image architecture the user is trying to build.

    If an image we are building for an architecture is not the host architecture, install tools provided by qemu-user-static (which needs to be installed) to allow us to run commands inside the building image.

    This is tested on amd64/i386 architecture to build armhf and arm64 ubuntu cloud images.