Message ID | 20210317145225.88050-11-amikan@ilbers.de |
---|---|
State | Superseded, archived |
Headers | show |
Series | Update Avocado testsuite | expand |
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
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.
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
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
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