mirror of
https://git.yoctoproject.org/meta-arm
synced 2026-05-07 04:58:57 +00:00
arm-autonomy: Create xenguest-base-image recipe
Add xenguest-base-image recipe to create an initial xenguest image directory in deploy. This is using the xenguest-image class. The recipe is also introducing several parameters named XENGUEST_IMAGE_SRC_URI_* to allow the user to specify files or elements to be added to the xenguest image. Those parameters are documented inside the recipe. Change-Id: I806a2fa07fb9593c366d88e2f4ee8b649cbcf8ea Issue-Id: SCM-767 Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com> Reviewed-by: Diego Sueiro <diego.sueiro@arm.com> Signed-off-by: Jon Mason <jon.mason@arm.com>
This commit is contained in:
committed by
Jon Mason
parent
4c76616c9c
commit
5cd294263b
@@ -0,0 +1,119 @@
|
|||||||
|
# Create a xenguest base image
|
||||||
|
#
|
||||||
|
# This recipe creates a base image that is then extended by other recipes
|
||||||
|
# through xenguest-image class.
|
||||||
|
# xenguest image type is using this as base to add a kernel and a disk image
|
||||||
|
# to create a guest
|
||||||
|
#
|
||||||
|
# The recipe is also adding files in those directories to the xenguest image:
|
||||||
|
# - ${WORKDIR}/extend/disk-files: all files in this directory will be added to
|
||||||
|
# the guest disk files (using --disk-add-file)
|
||||||
|
# - ${WORKDIR}/extend/files: all files in this directory will be added to the
|
||||||
|
# guest xen files (using --xen-add-file)
|
||||||
|
# - ${WORKDIR}/extend/guest.d: all files in this directory will be added to
|
||||||
|
# the xen append configuration files (using --xen-append)
|
||||||
|
# - ${WORKDIR}/extend/init.[pre|post|d]: all files in those directories will
|
||||||
|
# be added to the corresponding init scripts (using --init-[pre|post|script])
|
||||||
|
# You can bbappend this recipe and put files in ${WORKDIR}/extend to add
|
||||||
|
# elements to the image.
|
||||||
|
#
|
||||||
|
|
||||||
|
DESCRIPTION = "Xenguest Base Image"
|
||||||
|
LICENSE = "MIT"
|
||||||
|
|
||||||
|
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
|
||||||
|
|
||||||
|
#
|
||||||
|
# The following variables can contain SRC_URI compatible entries to add
|
||||||
|
# files to the xenguest image.
|
||||||
|
# You can set those variable in local.conf to add one or several files
|
||||||
|
# For example to add a boot.tar.gz file that has to be downloaded to the file
|
||||||
|
# useable for disk partition initialisation:
|
||||||
|
# XENGUEST_IMAGE_SRC_URI_DISK_FILES += "https://www.test.com/files/boot.tar.gz"
|
||||||
|
|
||||||
|
# Add disk files
|
||||||
|
XENGUEST_IMAGE_SRC_URI_DISK_FILES ??= ""
|
||||||
|
|
||||||
|
# Add xen files
|
||||||
|
XENGUEST_IMAGE_SRC_URI_XEN_FILES ??= ""
|
||||||
|
|
||||||
|
# Add xen configuration elements
|
||||||
|
XENGUEST_IMAGE_SRC_URI_XEN_CONFIG ??= ""
|
||||||
|
|
||||||
|
# Add pre init script
|
||||||
|
XENGUEST_IMAGE_SRC_URI_INIT_PRE ??= ""
|
||||||
|
|
||||||
|
# Add init script
|
||||||
|
XENGUEST_IMAGE_SRC_URI_INIT ??= ""
|
||||||
|
|
||||||
|
# Add post init script
|
||||||
|
XENGUEST_IMAGE_SRC_URI_INIT_POST ??= ""
|
||||||
|
|
||||||
|
S = "${WORKDIR}"
|
||||||
|
|
||||||
|
inherit deploy xenguest-image
|
||||||
|
|
||||||
|
# parse XENGUEST_IMAGE_SRC_URI_ variables and add them to SRC_URI
|
||||||
|
python __anonymous() {
|
||||||
|
def parse_extend_variable(d, varname, destdir):
|
||||||
|
list = d.getVar(varname)
|
||||||
|
if list:
|
||||||
|
for entry in list.split():
|
||||||
|
#Check the URL
|
||||||
|
try:
|
||||||
|
decode = bb.fetch.decodeurl(entry)
|
||||||
|
d.appendVar('SRC_URI', ' ' + entry + ';unpack=0;subdir=extend/' + destdir)
|
||||||
|
except:
|
||||||
|
bb.fatal("%s: %s contains an invalid URL: %s" \
|
||||||
|
% (d.getVar('PF'), varname, entry))
|
||||||
|
|
||||||
|
parse_extend_variable(d, 'XENGUEST_IMAGE_SRC_URI_DISK_FILES', 'disk-files')
|
||||||
|
parse_extend_variable(d, 'XENGUEST_IMAGE_SRC_URI_XEN_FILES', 'files')
|
||||||
|
parse_extend_variable(d, 'XENGUEST_IMAGE_SRC_URI_XEN_CONFIG', 'guest.d')
|
||||||
|
parse_extend_variable(d, 'XENGUEST_IMAGE_SRC_URI_INIT_PRE', 'init.pre')
|
||||||
|
parse_extend_variable(d, 'XENGUEST_IMAGE_SRC_URI_INIT', 'init.d')
|
||||||
|
parse_extend_variable(d, 'XENGUEST_IMAGE_SRC_URI_INIT_POST', 'init.post')
|
||||||
|
}
|
||||||
|
|
||||||
|
# Make sure we are removing old files before redoing a fetch
|
||||||
|
do_fetch[cleandirs] += "${WORKDIR}/extend"
|
||||||
|
|
||||||
|
do_configure[noexec] = "1"
|
||||||
|
do_compile[noexec] = "1"
|
||||||
|
do_install[noexec] = "1"
|
||||||
|
|
||||||
|
add_extend_files() {
|
||||||
|
local subdir="$1"
|
||||||
|
local cmd="$2"
|
||||||
|
local stripdest="${3:-n}"
|
||||||
|
|
||||||
|
if [ -d ${WORKDIR}/extend/$subdir ]; then
|
||||||
|
filelist=$(find ${WORKDIR}/extend/$subdir -type f)
|
||||||
|
|
||||||
|
if [ -n "$filelist" ]; then
|
||||||
|
for f in $filelist; do
|
||||||
|
if [ "$stripdest" = "y" ]; then
|
||||||
|
call_xenguest_mkimage update --$cmd=$f:$(basename $f)
|
||||||
|
else
|
||||||
|
call_xenguest_mkimage update --$cmd=$f
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
do_deploy() {
|
||||||
|
# Create a new image
|
||||||
|
xenguest_image_create
|
||||||
|
|
||||||
|
# Add our extra files if any
|
||||||
|
add_extend_files "disk-files" "disk-add-file" "y"
|
||||||
|
add_extend_files "files" "xen-add-file" "y"
|
||||||
|
add_extend_files "guest.d" "xen-append"
|
||||||
|
add_extend_files "init.pre" "init-pre"
|
||||||
|
add_extend_files "init.d" "init-script"
|
||||||
|
add_extend_files "init.post" "init-post"
|
||||||
|
}
|
||||||
|
|
||||||
|
addtask deploy after do_install before do_build
|
||||||
|
|
||||||
Reference in New Issue
Block a user