[v3,10/11] ci_build: Migrate to Avocado

Message ID 20210317145225.88050-11-amikan@ilbers.de
State Superseded, archived
Headers show
Series Update Avocado testsuite | expand

Commit Message

Anton Mikanovich March 17, 2021, 4:52 a.m. UTC
Call Avocado test cases instead of shell based.

Signed-off-by: Anton Mikanovich <amikan@ilbers.de>
---
 scripts/ci_build.sh        | 170 ++++----------------------
 scripts/ci_build_legacy.sh | 239 +++++++++++++++++++++++++++++++++++++
 2 files changed, 261 insertions(+), 148 deletions(-)
 create mode 100755 scripts/ci_build_legacy.sh

Comments

Jan Kiszka March 17, 2021, 4:56 a.m. UTC | #1
On 17.03.21 15:52, Anton Mikanovich wrote:
> Call Avocado test cases instead of shell based.
> 
> Signed-off-by: Anton Mikanovich <amikan@ilbers.de>
> ---
>  scripts/ci_build.sh        | 170 ++++----------------------
>  scripts/ci_build_legacy.sh | 239 +++++++++++++++++++++++++++++++++++++
>  2 files changed, 261 insertions(+), 148 deletions(-)
>  create mode 100755 scripts/ci_build_legacy.sh
> 
> diff --git a/scripts/ci_build.sh b/scripts/ci_build.sh
> index 3868fb6..9abebb8 100755
> --- a/scripts/ci_build.sh
> +++ b/scripts/ci_build.sh
> @@ -14,59 +14,12 @@ export PATH=$PATH:/sbin
>  # Go to Isar root
>  cd "$(dirname "$0")/.."
>  
> +# Get Avocado build tests path
> +BUILD_TEST_DIR="$(pwd)/testsuite/build_test"
> +
>  # Start build in Isar tree by default
>  BUILD_DIR=./build
>  
> -BB_ARGS="-v"
> -
> -TARGETS_SET="\
> -            mc:qemuarm-stretch:isar-image-base \
> -            mc:qemuarm-buster:isar-image-base \
> -            mc:qemuarm64-stretch:isar-image-base \
> -            mc:qemui386-stretch:isar-image-base \
> -            mc:qemui386-buster:isar-image-base \
> -            mc:qemuamd64-stretch:isar-image-base \
> -            mc:qemuamd64-buster:isar-image-base \
> -            mc:qemuamd64-buster-tgz:isar-image-base \
> -            mc:qemuamd64-buster:isar-initramfs \
> -            mc:qemumipsel-stretch:isar-image-base \
> -            mc:qemumipsel-buster:isar-image-base \
> -            mc:nand-ubi-demo-buster:isar-image-ubi \
> -            mc:rpi-stretch:isar-image-base \
> -            mc:qemuamd64-focal:isar-image-base"
> -          # qemu-user-static of <= buster too old to build that
> -          # mc:qemuarm64-buster:isar-image-base
> -          # mc:qemuarm64-bullseye:isar-image-base
> -
> -TARGETS_SET_BULLSEYE="\
> -    mc:qemuamd64-bullseye:isar-image-base \
> -    mc:qemuarm-bullseye:isar-image-base \
> -    mc:qemui386-bullseye:isar-image-base \
> -    mc:qemumipsel-bullseye:isar-image-base \
> -"
> -
> -CROSS_TARGETS_SET="\
> -                  mc:qemuarm-stretch:isar-image-base \
> -                  mc:qemuarm-buster:isar-image-base \
> -                  mc:qemuarm64-stretch:isar-image-base \
> -                  mc:qemuamd64-stretch:isar-image-base \
> -                  mc:de0-nano-soc-buster:isar-image-base \
> -                  mc:stm32mp15x-buster:isar-image-base \
> -                  mc:rpi-stretch:isar-image-base \
> -                  mc:qemuarm64-focal:isar-image-base"
> -
> -CROSS_TARGETS_SET_BULLSEYE="\
> -    mc:qemuarm-bullseye:isar-image-base \
> -"
> -
> -REPRO_TARGETS_SET_SIGNED="\
> -            mc:de0-nano-soc-buster:isar-image-base \
> -            mc:qemuarm64-stretch:isar-image-base"
> -
> -REPRO_TARGETS_SET="\
> -            mc:qemuamd64-stretch:isar-image-base \
> -            mc:qemuarm-buster:isar-image-base"
> -
>  show_help() {
>      echo "This script builds the default Isar images."
>      echo
> @@ -88,6 +41,10 @@ show_help() {
>      echo " 3  if invalid parameters are passed."
>  }
>  
> +TAGS="full"
> +CROSS_BUILD="0"
> +QUIET="0"
> +
>  # Parse command line to get user configuration
>  while [ $# -gt 0 ]
>  do
> @@ -106,16 +63,18 @@ do
>          CROSS_BUILD="1"
>          ;;
>      -d|--debug)
> -        BB_ARGS="$BB_ARGS -D"
> +        QUIET="0"
> +        VERBOSE="--show-job-log"
>          ;;
>      -f|--fast)
>          # Start build for the reduced set of configurations
>          # Enforce cross-compilation to speed up the build
> -        FAST_BUILD="1"
> +        TAGS="fast"
>          CROSS_BUILD="1"
>          ;;
>      -q|--quiet)
> -        BB_ARGS=""
> +        QUIET="1"
> +        VERBOSE=""
>          ;;
>      -r|--repro)
>          REPRO_BUILD="1"
> @@ -134,106 +93,21 @@ do
>      shift
>  done
>  
> +if [ -z "$REPRO_BUILD" ]; then
> +    TAGS = "$TAGS,-repro"
> +fi
> +
> +# Provide working path
> +export VIRTUAL_ENV="./"
> +
>  # the real stuff starts here, trace commands from now on
>  set -x
>  
>  # Setup build folder for the current build
>  if [ ! -d "$BUILD_DIR" ]; then
> -        mkdir -p "$BUILD_DIR"
> +    mkdir -p "$BUILD_DIR"
>  fi
>  source isar-init-build-env "$BUILD_DIR"
>  
> -cat >>conf/local.conf <<EOF
> -ISAR_ENABLE_COMPAT_ARCH_amd64 = "1"
> -ISAR_ENABLE_COMPAT_ARCH_arm64 = "1"
> -ISAR_ENABLE_COMPAT_ARCH_debian-stretch_amd64 = "0"
> -EOF
> -
> -if [ -n "$CROSS_BUILD" ]; then
> -    sed -i -e 's/ISAR_CROSS_COMPILE ?= "0"/ISAR_CROSS_COMPILE ?= "1"/g' conf/local.conf
> -fi
> -
> -if [ -n "$REPRO_BUILD" ]; then
> -    ISAR_TESTSUITE_GPG_PUB_KEY_FILE="$TESTSUITEDIR/base-apt/test_pub.key"
> -    ISAR_TESTSUITE_GPG_PRIV_KEY_FILE="$TESTSUITEDIR/base-apt/test_priv.key"
> -    export GNUPGHOME=$(mktemp -d)
> -    gpg --import $ISAR_TESTSUITE_GPG_PUB_KEY_FILE $ISAR_TESTSUITE_GPG_PRIV_KEY_FILE
> -
> -    # Enable use of signed cached base repository
> -    echo BASE_REPO_KEY=\"file://$ISAR_TESTSUITE_GPG_PUB_KEY_FILE\" >> conf/local.conf
> -    bitbake $BB_ARGS $REPRO_TARGETS_SET_SIGNED
> -    while [ -e bitbake.sock ]; do sleep 1; done
> -    sudo rm -rf tmp
> -    sed -i -e 's/#ISAR_USE_CACHED_BASE_REPO ?= "1"/ISAR_USE_CACHED_BASE_REPO ?= "1"/g' conf/local.conf
> -    sed -i -e 's/^#BB_NO_NETWORK/BB_NO_NETWORK/g' conf/local.conf
> -    bitbake $BB_ARGS $REPRO_TARGETS_SET_SIGNED
> -    while [ -e bitbake.sock ]; do sleep 1; done
> -    # Cleanup and disable use of signed cached base repository
> -    sudo rm -rf tmp
> -    sed -i -e 's/ISAR_USE_CACHED_BASE_REPO ?= "1"/#ISAR_USE_CACHED_BASE_REPO ?= "1"/g' conf/local.conf
> -    sed -i -e 's/^BB_NO_NETWORK/#BB_NO_NETWORK/g' conf/local.conf
> -    sed -i -e 's/^BASE_REPO_KEY/#BASE_REPO_KEY/g' conf/local.conf
> -
> -    # Enable use of unsigned cached base repository
> -    bitbake $BB_ARGS $REPRO_TARGETS_SET
> -    while [ -e bitbake.sock ]; do sleep 1; done
> -    sudo rm -rf tmp
> -    sed -i -e 's/#ISAR_USE_CACHED_BASE_REPO ?= "1"/ISAR_USE_CACHED_BASE_REPO ?= "1"/g' conf/local.conf
> -    sed -i -e 's/^#BB_NO_NETWORK/BB_NO_NETWORK/g' conf/local.conf
> -    bitbake $BB_ARGS $REPRO_TARGETS_SET
> -    while [ -e bitbake.sock ]; do sleep 1; done
> -    # Cleanup and disable use of unsigned cached base repository
> -    sudo rm -rf tmp
> -    sed -i -e 's/ISAR_USE_CACHED_BASE_REPO ?= "1"/#ISAR_USE_CACHED_BASE_REPO ?= "1"/g' conf/local.conf
> -    sed -i -e 's/^BB_NO_NETWORK/#BB_NO_NETWORK/g' conf/local.conf
> -fi
> -
> -sed -i -e 's/^#BASE_REPO_FEATURES ?= "cache-deb-src"/BASE_REPO_FEATURES ?= "cache-deb-src"/g' conf/local.conf
> -# Start cross build for the defined set of configurations
> -sed -i -e 's/ISAR_CROSS_COMPILE ?= "0"/ISAR_CROSS_COMPILE ?= "1"/g' conf/local.conf
> -bitbake $BB_ARGS $CROSS_TARGETS_SET
> -while [ -e bitbake.sock ]; do sleep 1; done
> -if bitbake $BB_ARGS $CROSS_TARGETS_SET_BULLSEYE; then
> -    echo "bullseye cross: PASSED"
> -else
> -    echo "bullseye cross: KFAIL"
> -fi
> -# In addition test SDK creation
> -bitbake $BB_ARGS -c do_populate_sdk mc:qemuarm-stretch:isar-image-base
> -while [ -e bitbake.sock ]; do sleep 1; done
> -
> -if [ -z "$FAST_BUILD" ]; then
> -    # Cleanup and disable cross build
> -    sudo rm -rf tmp
> -    sed -i -e 's/ISAR_CROSS_COMPILE ?= "1"/ISAR_CROSS_COMPILE ?= "0"/g' conf/local.conf
> -    bitbake $BB_ARGS $TARGETS_SET
> -    while [ -e bitbake.sock ]; do sleep 1; done
> -
> -    if bitbake $BB_ARGS $TARGETS_SET_BULLSEYE; then
> -        echo "bullseye: PASSED"
> -    else
> -	echo "bullseye: KFAIL"
> -    fi
> -    while [ -e bitbake.sock ]; do sleep 1; done
> -fi
> -
> -eval $(bitbake -e | grep "^LAYERDIR_core=")
> -eval $(bitbake -e | grep "^LAYERDIR_isar=")
> -cp -a "${LAYERDIR_core}/classes/dpkg-base.bbclass" "${LAYERDIR_core}/classes/dpkg-base.bbclass.ci-backup"
> -echo -e "do_fetch_append() {\n\n}" >> "${LAYERDIR_core}/classes/dpkg-base.bbclass"
> -
> -bitbake $BB_ARGS mc:qemuamd64-stretch:isar-image-base
> -
> -mv "${LAYERDIR_core}/classes/dpkg-base.bbclass.ci-backup" "${LAYERDIR_core}/classes/dpkg-base.bbclass"
> -
> -# Test wic --exclude-path
> -cp -a "${LAYERDIR_isar}/scripts/lib/wic/canned-wks/sdimage-efi.wks" "${LAYERDIR_isar}/scripts/lib/wic/canned-wks/sdimage-efi.wks.ci-backup"
> -mv ${BUILDDIR}/tmp/deploy/images/qemuamd64/isar-image-base-debian-stretch-qemuamd64.wic.img \
> -    ${BUILDDIR}/tmp/deploy/images/qemuamd64/isar-image-base-debian-stretch-qemuamd64.wic.img.ci-backup
> -sed -i -e 's/part \/ /part \/ --exclude-path usr /g' "${LAYERDIR_isar}/scripts/lib/wic/canned-wks/sdimage-efi.wks"
> -
> -bitbake $BB_ARGS mc:qemuamd64-stretch:isar-image-base
> -
> -mv "${LAYERDIR_isar}/scripts/lib/wic/canned-wks/sdimage-efi.wks.ci-backup" "${LAYERDIR_isar}/scripts/lib/wic/canned-wks/sdimage-efi.wks"
> -mv ${BUILDDIR}/tmp/deploy/images/qemuamd64/isar-image-base-debian-stretch-qemuamd64.wic.img.ci-backup \
> -    ${BUILDDIR}/tmp/deploy/images/qemuamd64/isar-image-base-debian-stretch-qemuamd64.wic.img
> +avocado run "$BUILD_TEST_DIR/build_test.py" -t $TAGS -p build_dir="$BUILD_DIR" \
> +    -p quiet=$QUIET -p cross=$CROSS_BUILD $VERBOSE
> diff --git a/scripts/ci_build_legacy.sh b/scripts/ci_build_legacy.sh
> new file mode 100755
> index 0000000..3868fb6
> --- /dev/null
> +++ b/scripts/ci_build_legacy.sh
> @@ -0,0 +1,239 @@
> +#!/usr/bin/env bash
> +# Script for CI system build
> +#
> +# Alexander Smirnov <asmirnov@ilbers.de>
> +# Copyright (c) 2016-2018 ilbers GmbH
> +
> +set -e
> +
> +ES_BUG=3
> +
> +# Export $PATH to use 'parted' tool
> +export PATH=$PATH:/sbin
> +
> +# Go to Isar root
> +cd "$(dirname "$0")/.."
> +
> +# Start build in Isar tree by default
> +BUILD_DIR=./build
> +
> +BB_ARGS="-v"
> +
> +TARGETS_SET="\
> +            mc:qemuarm-stretch:isar-image-base \
> +            mc:qemuarm-buster:isar-image-base \
> +            mc:qemuarm64-stretch:isar-image-base \
> +            mc:qemui386-stretch:isar-image-base \
> +            mc:qemui386-buster:isar-image-base \
> +            mc:qemuamd64-stretch:isar-image-base \
> +            mc:qemuamd64-buster:isar-image-base \
> +            mc:qemuamd64-buster-tgz:isar-image-base \
> +            mc:qemuamd64-buster:isar-initramfs \
> +            mc:qemumipsel-stretch:isar-image-base \
> +            mc:qemumipsel-buster:isar-image-base \
> +            mc:nand-ubi-demo-buster:isar-image-ubi \
> +            mc:rpi-stretch:isar-image-base \
> +            mc:qemuamd64-focal:isar-image-base"
> +          # qemu-user-static of <= buster too old to build that
> +          # mc:qemuarm64-buster:isar-image-base
> +          # mc:qemuarm64-bullseye:isar-image-base
> +
> +TARGETS_SET_BULLSEYE="\
> +    mc:qemuamd64-bullseye:isar-image-base \
> +    mc:qemuarm-bullseye:isar-image-base \
> +    mc:qemui386-bullseye:isar-image-base \
> +    mc:qemumipsel-bullseye:isar-image-base \
> +"
> +
> +CROSS_TARGETS_SET="\
> +                  mc:qemuarm-stretch:isar-image-base \
> +                  mc:qemuarm-buster:isar-image-base \
> +                  mc:qemuarm64-stretch:isar-image-base \
> +                  mc:qemuamd64-stretch:isar-image-base \
> +                  mc:de0-nano-soc-buster:isar-image-base \
> +                  mc:stm32mp15x-buster:isar-image-base \
> +                  mc:rpi-stretch:isar-image-base \
> +                  mc:qemuarm64-focal:isar-image-base"
> +
> +CROSS_TARGETS_SET_BULLSEYE="\
> +    mc:qemuarm-bullseye:isar-image-base \
> +"
> +
> +REPRO_TARGETS_SET_SIGNED="\
> +            mc:de0-nano-soc-buster:isar-image-base \
> +            mc:qemuarm64-stretch:isar-image-base"
> +
> +REPRO_TARGETS_SET="\
> +            mc:qemuamd64-stretch:isar-image-base \
> +            mc:qemuarm-buster:isar-image-base"
> +
> +show_help() {
> +    echo "This script builds the default Isar images."
> +    echo
> +    echo "Usage:"
> +    echo "    $0 [params]"
> +    echo
> +    echo "Parameters:"
> +    echo "    -b, --build BUILD_DIR    set path to build directory. If not set,"
> +    echo "                             the build will be started in current path."
> +    echo "    -c, --cross              enable cross-compilation."
> +    echo "    -d, --debug              enable debug bitbake output."
> +    echo "    -f, --fast               cross build reduced set of configurations."
> +    echo "    -q, --quiet              suppress verbose bitbake output."
> +    echo "    -r, --repro              enable use of cached base repository."
> +    echo "    --help                   display this message and exit."
> +    echo
> +    echo "Exit status:"
> +    echo " 0  if OK,"
> +    echo " 3  if invalid parameters are passed."
> +}
> +
> +# Parse command line to get user configuration
> +while [ $# -gt 0 ]
> +do
> +    key="$1"
> +
> +    case $key in
> +    -h|--help)
> +        show_help
> +        exit 0
> +        ;;
> +    -b|--build)
> +        BUILD_DIR="$2"
> +        shift
> +        ;;
> +    -c|--cross)
> +        CROSS_BUILD="1"
> +        ;;
> +    -d|--debug)
> +        BB_ARGS="$BB_ARGS -D"
> +        ;;
> +    -f|--fast)
> +        # Start build for the reduced set of configurations
> +        # Enforce cross-compilation to speed up the build
> +        FAST_BUILD="1"
> +        CROSS_BUILD="1"
> +        ;;
> +    -q|--quiet)
> +        BB_ARGS=""
> +        ;;
> +    -r|--repro)
> +        REPRO_BUILD="1"
> +        # This switch is deprecated, just here to not cause failing CI on
> +        # legacy configs
> +        case "$2" in
> +        -s|--sign) shift ;;
> +        esac
> +        ;;
> +    *)
> +        echo "error: invalid parameter '$key', please try '--help' to get list of supported parameters"
> +        exit $ES_BUG
> +        ;;
> +    esac
> +
> +    shift
> +done
> +
> +# the real stuff starts here, trace commands from now on
> +set -x
> +
> +# Setup build folder for the current build
> +if [ ! -d "$BUILD_DIR" ]; then
> +        mkdir -p "$BUILD_DIR"
> +fi
> +source isar-init-build-env "$BUILD_DIR"
> +
> +cat >>conf/local.conf <<EOF
> +ISAR_ENABLE_COMPAT_ARCH_amd64 = "1"
> +ISAR_ENABLE_COMPAT_ARCH_arm64 = "1"
> +ISAR_ENABLE_COMPAT_ARCH_debian-stretch_amd64 = "0"
> +EOF
> +
> +if [ -n "$CROSS_BUILD" ]; then
> +    sed -i -e 's/ISAR_CROSS_COMPILE ?= "0"/ISAR_CROSS_COMPILE ?= "1"/g' conf/local.conf
> +fi
> +
> +if [ -n "$REPRO_BUILD" ]; then
> +    ISAR_TESTSUITE_GPG_PUB_KEY_FILE="$TESTSUITEDIR/base-apt/test_pub.key"
> +    ISAR_TESTSUITE_GPG_PRIV_KEY_FILE="$TESTSUITEDIR/base-apt/test_priv.key"
> +    export GNUPGHOME=$(mktemp -d)
> +    gpg --import $ISAR_TESTSUITE_GPG_PUB_KEY_FILE $ISAR_TESTSUITE_GPG_PRIV_KEY_FILE
> +
> +    # Enable use of signed cached base repository
> +    echo BASE_REPO_KEY=\"file://$ISAR_TESTSUITE_GPG_PUB_KEY_FILE\" >> conf/local.conf
> +    bitbake $BB_ARGS $REPRO_TARGETS_SET_SIGNED
> +    while [ -e bitbake.sock ]; do sleep 1; done
> +    sudo rm -rf tmp
> +    sed -i -e 's/#ISAR_USE_CACHED_BASE_REPO ?= "1"/ISAR_USE_CACHED_BASE_REPO ?= "1"/g' conf/local.conf
> +    sed -i -e 's/^#BB_NO_NETWORK/BB_NO_NETWORK/g' conf/local.conf
> +    bitbake $BB_ARGS $REPRO_TARGETS_SET_SIGNED
> +    while [ -e bitbake.sock ]; do sleep 1; done
> +    # Cleanup and disable use of signed cached base repository
> +    sudo rm -rf tmp
> +    sed -i -e 's/ISAR_USE_CACHED_BASE_REPO ?= "1"/#ISAR_USE_CACHED_BASE_REPO ?= "1"/g' conf/local.conf
> +    sed -i -e 's/^BB_NO_NETWORK/#BB_NO_NETWORK/g' conf/local.conf
> +    sed -i -e 's/^BASE_REPO_KEY/#BASE_REPO_KEY/g' conf/local.conf
> +
> +    # Enable use of unsigned cached base repository
> +    bitbake $BB_ARGS $REPRO_TARGETS_SET
> +    while [ -e bitbake.sock ]; do sleep 1; done
> +    sudo rm -rf tmp
> +    sed -i -e 's/#ISAR_USE_CACHED_BASE_REPO ?= "1"/ISAR_USE_CACHED_BASE_REPO ?= "1"/g' conf/local.conf
> +    sed -i -e 's/^#BB_NO_NETWORK/BB_NO_NETWORK/g' conf/local.conf
> +    bitbake $BB_ARGS $REPRO_TARGETS_SET
> +    while [ -e bitbake.sock ]; do sleep 1; done
> +    # Cleanup and disable use of unsigned cached base repository
> +    sudo rm -rf tmp
> +    sed -i -e 's/ISAR_USE_CACHED_BASE_REPO ?= "1"/#ISAR_USE_CACHED_BASE_REPO ?= "1"/g' conf/local.conf
> +    sed -i -e 's/^BB_NO_NETWORK/#BB_NO_NETWORK/g' conf/local.conf
> +fi
> +
> +sed -i -e 's/^#BASE_REPO_FEATURES ?= "cache-deb-src"/BASE_REPO_FEATURES ?= "cache-deb-src"/g' conf/local.conf
> +# Start cross build for the defined set of configurations
> +sed -i -e 's/ISAR_CROSS_COMPILE ?= "0"/ISAR_CROSS_COMPILE ?= "1"/g' conf/local.conf
> +bitbake $BB_ARGS $CROSS_TARGETS_SET
> +while [ -e bitbake.sock ]; do sleep 1; done
> +if bitbake $BB_ARGS $CROSS_TARGETS_SET_BULLSEYE; then
> +    echo "bullseye cross: PASSED"
> +else
> +    echo "bullseye cross: KFAIL"
> +fi
> +# In addition test SDK creation
> +bitbake $BB_ARGS -c do_populate_sdk mc:qemuarm-stretch:isar-image-base
> +while [ -e bitbake.sock ]; do sleep 1; done
> +
> +if [ -z "$FAST_BUILD" ]; then
> +    # Cleanup and disable cross build
> +    sudo rm -rf tmp
> +    sed -i -e 's/ISAR_CROSS_COMPILE ?= "1"/ISAR_CROSS_COMPILE ?= "0"/g' conf/local.conf
> +    bitbake $BB_ARGS $TARGETS_SET
> +    while [ -e bitbake.sock ]; do sleep 1; done
> +
> +    if bitbake $BB_ARGS $TARGETS_SET_BULLSEYE; then
> +        echo "bullseye: PASSED"
> +    else
> +	echo "bullseye: KFAIL"
> +    fi
> +    while [ -e bitbake.sock ]; do sleep 1; done
> +fi
> +
> +eval $(bitbake -e | grep "^LAYERDIR_core=")
> +eval $(bitbake -e | grep "^LAYERDIR_isar=")
> +cp -a "${LAYERDIR_core}/classes/dpkg-base.bbclass" "${LAYERDIR_core}/classes/dpkg-base.bbclass.ci-backup"
> +echo -e "do_fetch_append() {\n\n}" >> "${LAYERDIR_core}/classes/dpkg-base.bbclass"
> +
> +bitbake $BB_ARGS mc:qemuamd64-stretch:isar-image-base
> +
> +mv "${LAYERDIR_core}/classes/dpkg-base.bbclass.ci-backup" "${LAYERDIR_core}/classes/dpkg-base.bbclass"
> +
> +# Test wic --exclude-path
> +cp -a "${LAYERDIR_isar}/scripts/lib/wic/canned-wks/sdimage-efi.wks" "${LAYERDIR_isar}/scripts/lib/wic/canned-wks/sdimage-efi.wks.ci-backup"
> +mv ${BUILDDIR}/tmp/deploy/images/qemuamd64/isar-image-base-debian-stretch-qemuamd64.wic.img \
> +    ${BUILDDIR}/tmp/deploy/images/qemuamd64/isar-image-base-debian-stretch-qemuamd64.wic.img.ci-backup
> +sed -i -e 's/part \/ /part \/ --exclude-path usr /g' "${LAYERDIR_isar}/scripts/lib/wic/canned-wks/sdimage-efi.wks"
> +
> +bitbake $BB_ARGS mc:qemuamd64-stretch:isar-image-base
> +
> +mv "${LAYERDIR_isar}/scripts/lib/wic/canned-wks/sdimage-efi.wks.ci-backup" "${LAYERDIR_isar}/scripts/lib/wic/canned-wks/sdimage-efi.wks"
> +mv ${BUILDDIR}/tmp/deploy/images/qemuamd64/isar-image-base-debian-stretch-qemuamd64.wic.img.ci-backup \
> +    ${BUILDDIR}/tmp/deploy/images/qemuamd64/isar-image-base-debian-stretch-qemuamd64.wic.img
> 

Will that break .gitlab-ci.yml? Or is everything missing installed
on-demand by the script?

Jan
Anton Mikanovich March 17, 2021, 7:26 a.m. UTC | #2
17.03.2021 17:56, Jan Kiszka wrote:
>
> Will that break .gitlab-ci.yml? Or is everything missing installed
> on-demand by the script?
>
> Jan
>
Currently yes, because there is no Avocado package in kas-isar container.
We will test this on Gitlab internally to proof the only update step is 
installing Avocado itself and make you know.
Jan Kiszka March 17, 2021, 7:36 a.m. UTC | #3
On 17.03.21 18:26, Anton Mikanovich wrote:
> 17.03.2021 17:56, Jan Kiszka wrote:
>>
>> Will that break .gitlab-ci.yml? Or is everything missing installed
>> on-demand by the script?
>>
>> Jan
>>
> Currently yes, because there is no Avocado package in kas-isar container.
> We will test this on Gitlab internally to proof the only update step is
> installing Avocado itself and make you know.

You can install any missing dependencies as part of the CI setup
("before_script"). There is reason to install Avocado into kas-isar as
it is not needed for building images, only for testing them in Isar.

Jan

Patch

diff --git a/scripts/ci_build.sh b/scripts/ci_build.sh
index 3868fb6..9abebb8 100755
--- a/scripts/ci_build.sh
+++ b/scripts/ci_build.sh
@@ -14,59 +14,12 @@  export PATH=$PATH:/sbin
 # Go to Isar root
 cd "$(dirname "$0")/.."
 
+# Get Avocado build tests path
+BUILD_TEST_DIR="$(pwd)/testsuite/build_test"
+
 # Start build in Isar tree by default
 BUILD_DIR=./build
 
-BB_ARGS="-v"
-
-TARGETS_SET="\
-            mc:qemuarm-stretch:isar-image-base \
-            mc:qemuarm-buster:isar-image-base \
-            mc:qemuarm64-stretch:isar-image-base \
-            mc:qemui386-stretch:isar-image-base \
-            mc:qemui386-buster:isar-image-base \
-            mc:qemuamd64-stretch:isar-image-base \
-            mc:qemuamd64-buster:isar-image-base \
-            mc:qemuamd64-buster-tgz:isar-image-base \
-            mc:qemuamd64-buster:isar-initramfs \
-            mc:qemumipsel-stretch:isar-image-base \
-            mc:qemumipsel-buster:isar-image-base \
-            mc:nand-ubi-demo-buster:isar-image-ubi \
-            mc:rpi-stretch:isar-image-base \
-            mc:qemuamd64-focal:isar-image-base"
-          # qemu-user-static of <= buster too old to build that
-          # mc:qemuarm64-buster:isar-image-base
-          # mc:qemuarm64-bullseye:isar-image-base
-
-TARGETS_SET_BULLSEYE="\
-    mc:qemuamd64-bullseye:isar-image-base \
-    mc:qemuarm-bullseye:isar-image-base \
-    mc:qemui386-bullseye:isar-image-base \
-    mc:qemumipsel-bullseye:isar-image-base \
-"
-
-CROSS_TARGETS_SET="\
-                  mc:qemuarm-stretch:isar-image-base \
-                  mc:qemuarm-buster:isar-image-base \
-                  mc:qemuarm64-stretch:isar-image-base \
-                  mc:qemuamd64-stretch:isar-image-base \
-                  mc:de0-nano-soc-buster:isar-image-base \
-                  mc:stm32mp15x-buster:isar-image-base \
-                  mc:rpi-stretch:isar-image-base \
-                  mc:qemuarm64-focal:isar-image-base"
-
-CROSS_TARGETS_SET_BULLSEYE="\
-    mc:qemuarm-bullseye:isar-image-base \
-"
-
-REPRO_TARGETS_SET_SIGNED="\
-            mc:de0-nano-soc-buster:isar-image-base \
-            mc:qemuarm64-stretch:isar-image-base"
-
-REPRO_TARGETS_SET="\
-            mc:qemuamd64-stretch:isar-image-base \
-            mc:qemuarm-buster:isar-image-base"
-
 show_help() {
     echo "This script builds the default Isar images."
     echo
@@ -88,6 +41,10 @@  show_help() {
     echo " 3  if invalid parameters are passed."
 }
 
+TAGS="full"
+CROSS_BUILD="0"
+QUIET="0"
+
 # Parse command line to get user configuration
 while [ $# -gt 0 ]
 do
@@ -106,16 +63,18 @@  do
         CROSS_BUILD="1"
         ;;
     -d|--debug)
-        BB_ARGS="$BB_ARGS -D"
+        QUIET="0"
+        VERBOSE="--show-job-log"
         ;;
     -f|--fast)
         # Start build for the reduced set of configurations
         # Enforce cross-compilation to speed up the build
-        FAST_BUILD="1"
+        TAGS="fast"
         CROSS_BUILD="1"
         ;;
     -q|--quiet)
-        BB_ARGS=""
+        QUIET="1"
+        VERBOSE=""
         ;;
     -r|--repro)
         REPRO_BUILD="1"
@@ -134,106 +93,21 @@  do
     shift
 done
 
+if [ -z "$REPRO_BUILD" ]; then
+    TAGS = "$TAGS,-repro"
+fi
+
+# Provide working path
+export VIRTUAL_ENV="./"
+
 # the real stuff starts here, trace commands from now on
 set -x
 
 # Setup build folder for the current build
 if [ ! -d "$BUILD_DIR" ]; then
-        mkdir -p "$BUILD_DIR"
+    mkdir -p "$BUILD_DIR"
 fi
 source isar-init-build-env "$BUILD_DIR"
 
-cat >>conf/local.conf <<EOF
-ISAR_ENABLE_COMPAT_ARCH_amd64 = "1"
-ISAR_ENABLE_COMPAT_ARCH_arm64 = "1"
-ISAR_ENABLE_COMPAT_ARCH_debian-stretch_amd64 = "0"
-EOF
-
-if [ -n "$CROSS_BUILD" ]; then
-    sed -i -e 's/ISAR_CROSS_COMPILE ?= "0"/ISAR_CROSS_COMPILE ?= "1"/g' conf/local.conf
-fi
-
-if [ -n "$REPRO_BUILD" ]; then
-    ISAR_TESTSUITE_GPG_PUB_KEY_FILE="$TESTSUITEDIR/base-apt/test_pub.key"
-    ISAR_TESTSUITE_GPG_PRIV_KEY_FILE="$TESTSUITEDIR/base-apt/test_priv.key"
-    export GNUPGHOME=$(mktemp -d)
-    gpg --import $ISAR_TESTSUITE_GPG_PUB_KEY_FILE $ISAR_TESTSUITE_GPG_PRIV_KEY_FILE
-
-    # Enable use of signed cached base repository
-    echo BASE_REPO_KEY=\"file://$ISAR_TESTSUITE_GPG_PUB_KEY_FILE\" >> conf/local.conf
-    bitbake $BB_ARGS $REPRO_TARGETS_SET_SIGNED
-    while [ -e bitbake.sock ]; do sleep 1; done
-    sudo rm -rf tmp
-    sed -i -e 's/#ISAR_USE_CACHED_BASE_REPO ?= "1"/ISAR_USE_CACHED_BASE_REPO ?= "1"/g' conf/local.conf
-    sed -i -e 's/^#BB_NO_NETWORK/BB_NO_NETWORK/g' conf/local.conf
-    bitbake $BB_ARGS $REPRO_TARGETS_SET_SIGNED
-    while [ -e bitbake.sock ]; do sleep 1; done
-    # Cleanup and disable use of signed cached base repository
-    sudo rm -rf tmp
-    sed -i -e 's/ISAR_USE_CACHED_BASE_REPO ?= "1"/#ISAR_USE_CACHED_BASE_REPO ?= "1"/g' conf/local.conf
-    sed -i -e 's/^BB_NO_NETWORK/#BB_NO_NETWORK/g' conf/local.conf
-    sed -i -e 's/^BASE_REPO_KEY/#BASE_REPO_KEY/g' conf/local.conf
-
-    # Enable use of unsigned cached base repository
-    bitbake $BB_ARGS $REPRO_TARGETS_SET
-    while [ -e bitbake.sock ]; do sleep 1; done
-    sudo rm -rf tmp
-    sed -i -e 's/#ISAR_USE_CACHED_BASE_REPO ?= "1"/ISAR_USE_CACHED_BASE_REPO ?= "1"/g' conf/local.conf
-    sed -i -e 's/^#BB_NO_NETWORK/BB_NO_NETWORK/g' conf/local.conf
-    bitbake $BB_ARGS $REPRO_TARGETS_SET
-    while [ -e bitbake.sock ]; do sleep 1; done
-    # Cleanup and disable use of unsigned cached base repository
-    sudo rm -rf tmp
-    sed -i -e 's/ISAR_USE_CACHED_BASE_REPO ?= "1"/#ISAR_USE_CACHED_BASE_REPO ?= "1"/g' conf/local.conf
-    sed -i -e 's/^BB_NO_NETWORK/#BB_NO_NETWORK/g' conf/local.conf
-fi
-
-sed -i -e 's/^#BASE_REPO_FEATURES ?= "cache-deb-src"/BASE_REPO_FEATURES ?= "cache-deb-src"/g' conf/local.conf
-# Start cross build for the defined set of configurations
-sed -i -e 's/ISAR_CROSS_COMPILE ?= "0"/ISAR_CROSS_COMPILE ?= "1"/g' conf/local.conf
-bitbake $BB_ARGS $CROSS_TARGETS_SET
-while [ -e bitbake.sock ]; do sleep 1; done
-if bitbake $BB_ARGS $CROSS_TARGETS_SET_BULLSEYE; then
-    echo "bullseye cross: PASSED"
-else
-    echo "bullseye cross: KFAIL"
-fi
-# In addition test SDK creation
-bitbake $BB_ARGS -c do_populate_sdk mc:qemuarm-stretch:isar-image-base
-while [ -e bitbake.sock ]; do sleep 1; done
-
-if [ -z "$FAST_BUILD" ]; then
-    # Cleanup and disable cross build
-    sudo rm -rf tmp
-    sed -i -e 's/ISAR_CROSS_COMPILE ?= "1"/ISAR_CROSS_COMPILE ?= "0"/g' conf/local.conf
-    bitbake $BB_ARGS $TARGETS_SET
-    while [ -e bitbake.sock ]; do sleep 1; done
-
-    if bitbake $BB_ARGS $TARGETS_SET_BULLSEYE; then
-        echo "bullseye: PASSED"
-    else
-	echo "bullseye: KFAIL"
-    fi
-    while [ -e bitbake.sock ]; do sleep 1; done
-fi
-
-eval $(bitbake -e | grep "^LAYERDIR_core=")
-eval $(bitbake -e | grep "^LAYERDIR_isar=")
-cp -a "${LAYERDIR_core}/classes/dpkg-base.bbclass" "${LAYERDIR_core}/classes/dpkg-base.bbclass.ci-backup"
-echo -e "do_fetch_append() {\n\n}" >> "${LAYERDIR_core}/classes/dpkg-base.bbclass"
-
-bitbake $BB_ARGS mc:qemuamd64-stretch:isar-image-base
-
-mv "${LAYERDIR_core}/classes/dpkg-base.bbclass.ci-backup" "${LAYERDIR_core}/classes/dpkg-base.bbclass"
-
-# Test wic --exclude-path
-cp -a "${LAYERDIR_isar}/scripts/lib/wic/canned-wks/sdimage-efi.wks" "${LAYERDIR_isar}/scripts/lib/wic/canned-wks/sdimage-efi.wks.ci-backup"
-mv ${BUILDDIR}/tmp/deploy/images/qemuamd64/isar-image-base-debian-stretch-qemuamd64.wic.img \
-    ${BUILDDIR}/tmp/deploy/images/qemuamd64/isar-image-base-debian-stretch-qemuamd64.wic.img.ci-backup
-sed -i -e 's/part \/ /part \/ --exclude-path usr /g' "${LAYERDIR_isar}/scripts/lib/wic/canned-wks/sdimage-efi.wks"
-
-bitbake $BB_ARGS mc:qemuamd64-stretch:isar-image-base
-
-mv "${LAYERDIR_isar}/scripts/lib/wic/canned-wks/sdimage-efi.wks.ci-backup" "${LAYERDIR_isar}/scripts/lib/wic/canned-wks/sdimage-efi.wks"
-mv ${BUILDDIR}/tmp/deploy/images/qemuamd64/isar-image-base-debian-stretch-qemuamd64.wic.img.ci-backup \
-    ${BUILDDIR}/tmp/deploy/images/qemuamd64/isar-image-base-debian-stretch-qemuamd64.wic.img
+avocado run "$BUILD_TEST_DIR/build_test.py" -t $TAGS -p build_dir="$BUILD_DIR" \
+    -p quiet=$QUIET -p cross=$CROSS_BUILD $VERBOSE
diff --git a/scripts/ci_build_legacy.sh b/scripts/ci_build_legacy.sh
new file mode 100755
index 0000000..3868fb6
--- /dev/null
+++ b/scripts/ci_build_legacy.sh
@@ -0,0 +1,239 @@ 
+#!/usr/bin/env bash
+# Script for CI system build
+#
+# Alexander Smirnov <asmirnov@ilbers.de>
+# Copyright (c) 2016-2018 ilbers GmbH
+
+set -e
+
+ES_BUG=3
+
+# Export $PATH to use 'parted' tool
+export PATH=$PATH:/sbin
+
+# Go to Isar root
+cd "$(dirname "$0")/.."
+
+# Start build in Isar tree by default
+BUILD_DIR=./build
+
+BB_ARGS="-v"
+
+TARGETS_SET="\
+            mc:qemuarm-stretch:isar-image-base \
+            mc:qemuarm-buster:isar-image-base \
+            mc:qemuarm64-stretch:isar-image-base \
+            mc:qemui386-stretch:isar-image-base \
+            mc:qemui386-buster:isar-image-base \
+            mc:qemuamd64-stretch:isar-image-base \
+            mc:qemuamd64-buster:isar-image-base \
+            mc:qemuamd64-buster-tgz:isar-image-base \
+            mc:qemuamd64-buster:isar-initramfs \
+            mc:qemumipsel-stretch:isar-image-base \
+            mc:qemumipsel-buster:isar-image-base \
+            mc:nand-ubi-demo-buster:isar-image-ubi \
+            mc:rpi-stretch:isar-image-base \
+            mc:qemuamd64-focal:isar-image-base"
+          # qemu-user-static of <= buster too old to build that
+          # mc:qemuarm64-buster:isar-image-base
+          # mc:qemuarm64-bullseye:isar-image-base
+
+TARGETS_SET_BULLSEYE="\
+    mc:qemuamd64-bullseye:isar-image-base \
+    mc:qemuarm-bullseye:isar-image-base \
+    mc:qemui386-bullseye:isar-image-base \
+    mc:qemumipsel-bullseye:isar-image-base \
+"
+
+CROSS_TARGETS_SET="\
+                  mc:qemuarm-stretch:isar-image-base \
+                  mc:qemuarm-buster:isar-image-base \
+                  mc:qemuarm64-stretch:isar-image-base \
+                  mc:qemuamd64-stretch:isar-image-base \
+                  mc:de0-nano-soc-buster:isar-image-base \
+                  mc:stm32mp15x-buster:isar-image-base \
+                  mc:rpi-stretch:isar-image-base \
+                  mc:qemuarm64-focal:isar-image-base"
+
+CROSS_TARGETS_SET_BULLSEYE="\
+    mc:qemuarm-bullseye:isar-image-base \
+"
+
+REPRO_TARGETS_SET_SIGNED="\
+            mc:de0-nano-soc-buster:isar-image-base \
+            mc:qemuarm64-stretch:isar-image-base"
+
+REPRO_TARGETS_SET="\
+            mc:qemuamd64-stretch:isar-image-base \
+            mc:qemuarm-buster:isar-image-base"
+
+show_help() {
+    echo "This script builds the default Isar images."
+    echo
+    echo "Usage:"
+    echo "    $0 [params]"
+    echo
+    echo "Parameters:"
+    echo "    -b, --build BUILD_DIR    set path to build directory. If not set,"
+    echo "                             the build will be started in current path."
+    echo "    -c, --cross              enable cross-compilation."
+    echo "    -d, --debug              enable debug bitbake output."
+    echo "    -f, --fast               cross build reduced set of configurations."
+    echo "    -q, --quiet              suppress verbose bitbake output."
+    echo "    -r, --repro              enable use of cached base repository."
+    echo "    --help                   display this message and exit."
+    echo
+    echo "Exit status:"
+    echo " 0  if OK,"
+    echo " 3  if invalid parameters are passed."
+}
+
+# Parse command line to get user configuration
+while [ $# -gt 0 ]
+do
+    key="$1"
+
+    case $key in
+    -h|--help)
+        show_help
+        exit 0
+        ;;
+    -b|--build)
+        BUILD_DIR="$2"
+        shift
+        ;;
+    -c|--cross)
+        CROSS_BUILD="1"
+        ;;
+    -d|--debug)
+        BB_ARGS="$BB_ARGS -D"
+        ;;
+    -f|--fast)
+        # Start build for the reduced set of configurations
+        # Enforce cross-compilation to speed up the build
+        FAST_BUILD="1"
+        CROSS_BUILD="1"
+        ;;
+    -q|--quiet)
+        BB_ARGS=""
+        ;;
+    -r|--repro)
+        REPRO_BUILD="1"
+        # This switch is deprecated, just here to not cause failing CI on
+        # legacy configs
+        case "$2" in
+        -s|--sign) shift ;;
+        esac
+        ;;
+    *)
+        echo "error: invalid parameter '$key', please try '--help' to get list of supported parameters"
+        exit $ES_BUG
+        ;;
+    esac
+
+    shift
+done
+
+# the real stuff starts here, trace commands from now on
+set -x
+
+# Setup build folder for the current build
+if [ ! -d "$BUILD_DIR" ]; then
+        mkdir -p "$BUILD_DIR"
+fi
+source isar-init-build-env "$BUILD_DIR"
+
+cat >>conf/local.conf <<EOF
+ISAR_ENABLE_COMPAT_ARCH_amd64 = "1"
+ISAR_ENABLE_COMPAT_ARCH_arm64 = "1"
+ISAR_ENABLE_COMPAT_ARCH_debian-stretch_amd64 = "0"
+EOF
+
+if [ -n "$CROSS_BUILD" ]; then
+    sed -i -e 's/ISAR_CROSS_COMPILE ?= "0"/ISAR_CROSS_COMPILE ?= "1"/g' conf/local.conf
+fi
+
+if [ -n "$REPRO_BUILD" ]; then
+    ISAR_TESTSUITE_GPG_PUB_KEY_FILE="$TESTSUITEDIR/base-apt/test_pub.key"
+    ISAR_TESTSUITE_GPG_PRIV_KEY_FILE="$TESTSUITEDIR/base-apt/test_priv.key"
+    export GNUPGHOME=$(mktemp -d)
+    gpg --import $ISAR_TESTSUITE_GPG_PUB_KEY_FILE $ISAR_TESTSUITE_GPG_PRIV_KEY_FILE
+
+    # Enable use of signed cached base repository
+    echo BASE_REPO_KEY=\"file://$ISAR_TESTSUITE_GPG_PUB_KEY_FILE\" >> conf/local.conf
+    bitbake $BB_ARGS $REPRO_TARGETS_SET_SIGNED
+    while [ -e bitbake.sock ]; do sleep 1; done
+    sudo rm -rf tmp
+    sed -i -e 's/#ISAR_USE_CACHED_BASE_REPO ?= "1"/ISAR_USE_CACHED_BASE_REPO ?= "1"/g' conf/local.conf
+    sed -i -e 's/^#BB_NO_NETWORK/BB_NO_NETWORK/g' conf/local.conf
+    bitbake $BB_ARGS $REPRO_TARGETS_SET_SIGNED
+    while [ -e bitbake.sock ]; do sleep 1; done
+    # Cleanup and disable use of signed cached base repository
+    sudo rm -rf tmp
+    sed -i -e 's/ISAR_USE_CACHED_BASE_REPO ?= "1"/#ISAR_USE_CACHED_BASE_REPO ?= "1"/g' conf/local.conf
+    sed -i -e 's/^BB_NO_NETWORK/#BB_NO_NETWORK/g' conf/local.conf
+    sed -i -e 's/^BASE_REPO_KEY/#BASE_REPO_KEY/g' conf/local.conf
+
+    # Enable use of unsigned cached base repository
+    bitbake $BB_ARGS $REPRO_TARGETS_SET
+    while [ -e bitbake.sock ]; do sleep 1; done
+    sudo rm -rf tmp
+    sed -i -e 's/#ISAR_USE_CACHED_BASE_REPO ?= "1"/ISAR_USE_CACHED_BASE_REPO ?= "1"/g' conf/local.conf
+    sed -i -e 's/^#BB_NO_NETWORK/BB_NO_NETWORK/g' conf/local.conf
+    bitbake $BB_ARGS $REPRO_TARGETS_SET
+    while [ -e bitbake.sock ]; do sleep 1; done
+    # Cleanup and disable use of unsigned cached base repository
+    sudo rm -rf tmp
+    sed -i -e 's/ISAR_USE_CACHED_BASE_REPO ?= "1"/#ISAR_USE_CACHED_BASE_REPO ?= "1"/g' conf/local.conf
+    sed -i -e 's/^BB_NO_NETWORK/#BB_NO_NETWORK/g' conf/local.conf
+fi
+
+sed -i -e 's/^#BASE_REPO_FEATURES ?= "cache-deb-src"/BASE_REPO_FEATURES ?= "cache-deb-src"/g' conf/local.conf
+# Start cross build for the defined set of configurations
+sed -i -e 's/ISAR_CROSS_COMPILE ?= "0"/ISAR_CROSS_COMPILE ?= "1"/g' conf/local.conf
+bitbake $BB_ARGS $CROSS_TARGETS_SET
+while [ -e bitbake.sock ]; do sleep 1; done
+if bitbake $BB_ARGS $CROSS_TARGETS_SET_BULLSEYE; then
+    echo "bullseye cross: PASSED"
+else
+    echo "bullseye cross: KFAIL"
+fi
+# In addition test SDK creation
+bitbake $BB_ARGS -c do_populate_sdk mc:qemuarm-stretch:isar-image-base
+while [ -e bitbake.sock ]; do sleep 1; done
+
+if [ -z "$FAST_BUILD" ]; then
+    # Cleanup and disable cross build
+    sudo rm -rf tmp
+    sed -i -e 's/ISAR_CROSS_COMPILE ?= "1"/ISAR_CROSS_COMPILE ?= "0"/g' conf/local.conf
+    bitbake $BB_ARGS $TARGETS_SET
+    while [ -e bitbake.sock ]; do sleep 1; done
+
+    if bitbake $BB_ARGS $TARGETS_SET_BULLSEYE; then
+        echo "bullseye: PASSED"
+    else
+	echo "bullseye: KFAIL"
+    fi
+    while [ -e bitbake.sock ]; do sleep 1; done
+fi
+
+eval $(bitbake -e | grep "^LAYERDIR_core=")
+eval $(bitbake -e | grep "^LAYERDIR_isar=")
+cp -a "${LAYERDIR_core}/classes/dpkg-base.bbclass" "${LAYERDIR_core}/classes/dpkg-base.bbclass.ci-backup"
+echo -e "do_fetch_append() {\n\n}" >> "${LAYERDIR_core}/classes/dpkg-base.bbclass"
+
+bitbake $BB_ARGS mc:qemuamd64-stretch:isar-image-base
+
+mv "${LAYERDIR_core}/classes/dpkg-base.bbclass.ci-backup" "${LAYERDIR_core}/classes/dpkg-base.bbclass"
+
+# Test wic --exclude-path
+cp -a "${LAYERDIR_isar}/scripts/lib/wic/canned-wks/sdimage-efi.wks" "${LAYERDIR_isar}/scripts/lib/wic/canned-wks/sdimage-efi.wks.ci-backup"
+mv ${BUILDDIR}/tmp/deploy/images/qemuamd64/isar-image-base-debian-stretch-qemuamd64.wic.img \
+    ${BUILDDIR}/tmp/deploy/images/qemuamd64/isar-image-base-debian-stretch-qemuamd64.wic.img.ci-backup
+sed -i -e 's/part \/ /part \/ --exclude-path usr /g' "${LAYERDIR_isar}/scripts/lib/wic/canned-wks/sdimage-efi.wks"
+
+bitbake $BB_ARGS mc:qemuamd64-stretch:isar-image-base
+
+mv "${LAYERDIR_isar}/scripts/lib/wic/canned-wks/sdimage-efi.wks.ci-backup" "${LAYERDIR_isar}/scripts/lib/wic/canned-wks/sdimage-efi.wks"
+mv ${BUILDDIR}/tmp/deploy/images/qemuamd64/isar-image-base-debian-stretch-qemuamd64.wic.img.ci-backup \
+    ${BUILDDIR}/tmp/deploy/images/qemuamd64/isar-image-base-debian-stretch-qemuamd64.wic.img