From: Anton Mikanovich <anton.mikanovich@promwad.com>
To: isar-users@googlegroups.com
Cc: Anton Mikanovich <amikan@ilbers.de>
Subject: [PATCH v14 15/16] ci_build: Migrate to Avocado
Date: Thu, 30 Sep 2021 19:45:40 +0300 [thread overview]
Message-ID: <1633020341-26062-16-git-send-email-anton.mikanovich@promwad.com> (raw)
In-Reply-To: <1633020341-26062-1-git-send-email-anton.mikanovich@promwad.com>
From: Anton Mikanovich <amikan@ilbers.de>
Call Avocado test cases instead of shell based.
Build artifacts are placed in build directory.
Signed-off-by: Anton Mikanovich <amikan@ilbers.de>
---
scripts/ci_build.sh | 208 +++++++---------------------------------------------
1 file changed, 27 insertions(+), 181 deletions(-)
diff --git a/scripts/ci_build.sh b/scripts/ci_build.sh
index 48a51f2..4534957 100755
--- a/scripts/ci_build.sh
+++ b/scripts/ci_build.sh
@@ -14,6 +14,9 @@ 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
@@ -21,70 +24,10 @@ BUILD_DIR=./build
DEPENDENCIES="umoci skopeo"
for prog in ${DEPENDENCIES} ; do
if [ ! -x "$(which $prog)" ] ; then
- echo "missing $prog in PATH, exiting" >&2
- exit 1
+ echo "missing $prog in PATH" >&2
fi
done
-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-cpiogz: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 \
- mc:virtualbox-ova-buster: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 \
-"
-
-TARGETS_CONTAINERS="\
- mc:container-amd64-stretch:isar-image-base \
- mc:container-amd64-buster:isar-image-base \
- mc:container-amd64-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
@@ -106,6 +49,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
@@ -124,16 +71,16 @@ do
CROSS_BUILD="1"
;;
-d|--debug)
- BB_ARGS="$BB_ARGS -D"
+ VERBOSE="--show=app,test"
;;
-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"
;;
-r|--repro)
REPRO_BUILD="1"
@@ -152,125 +99,24 @@ do
shift
done
+if [ -z "$REPRO_BUILD" ]; then
+ TAGS="$TAGS,-repro"
+fi
+
# 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"
-IMAGE_INSTALL += "kselftest"
+# Provide working path
+mkdir -p .config/avocado
+cat <<EOF > .config/avocado/avocado.conf
+[datadir.paths]
+base_dir = $BUILD_DIR/
+test_dir = $BUILD_DIR/tests
+data_dir = $BUILD_DIR/data
+logs_dir = $BUILD_DIR/job-results
EOF
+export VIRTUAL_ENV="./"
-if [ -n "$DISTRO_APT_PREMIRRORS" ]; then
- echo "DISTRO_APT_PREMIRRORS = \"$DISTRO_APT_PREMIRRORS\"" >> conf/local.conf
-fi
-
-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
- bitbake $BB_ARGS $REPRO_TARGETS_SET
- while [ -e bitbake.sock ]; do sleep 1; done
- # Enable 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
- bitbake $BB_ARGS $REPRO_TARGETS_SET
- while [ -e bitbake.sock ]; do sleep 1; done
- # Disable use of unsigned cached base repository
- 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
- # Try to build with changed configuration with no cleanup
- bitbake $BB_ARGS $REPRO_TARGETS_SET
- while [ -e bitbake.sock ]; do sleep 1; done
- # Cleanup
- sudo rm -rf tmp
-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
-
-# Finalize with containerized images, since they remove some not-needed packages from the local.conf
-sed -i -e 's/\(IMAGE_INSTALL = .*\) example-module-${KERNEL_NAME}\(.*\)/\1\2/g' conf/local.conf
-sed -i -e 's/\(IMAGE_INSTALL = .*\) enable-fsck\(.*\)/\1\2/g' conf/local.conf
-bitbake $BB_ARGS $TARGETS_CONTAINERS
-while [ -e bitbake.sock ]; do sleep 1; done
-# and SDK container image creation
-echo 'SDK_FORMATS = "docker-archive"' >> conf/local.conf
-bitbake $BB_ARGS -c do_populate_sdk mc:container-amd64-stretch:isar-image-base
-while [ -e bitbake.sock ]; do sleep 1; done
-
+avocado $VERBOSE run "$BUILD_TEST_DIR/build_test.py" \
+ -t $TAGS --test-runner=runner --disable-sysinfo \
+ -p build_dir="$BUILD_DIR" -p quiet=$QUIET -p cross=$CROSS_BUILD
--
2.7.4
next prev parent reply other threads:[~2021-09-30 16:46 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-30 16:45 [PATCH v14 00/16] Update Avocado testsuite Anton Mikanovich
2021-09-30 16:45 ` [PATCH v14 01/16] start_vm.py: Fix target name handling Anton Mikanovich
2021-09-30 16:45 ` [PATCH v14 02/16] start_vm.py: Add output and PID file vm_start.py options Anton Mikanovich
2021-09-30 16:45 ` [PATCH v14 03/16] start_vm.py: Add MIPS support Anton Mikanovich
2021-09-30 16:45 ` [PATCH v14 04/16] start_vm.py: Fix ubuntu image name Anton Mikanovich
2021-09-30 16:45 ` [PATCH v14 05/16] vm_boot_test: Fix log file path in vm_boot_test Anton Mikanovich
2021-09-30 16:45 ` [PATCH v14 06/16] vm_boot_test: Remove external varianter Anton Mikanovich
2021-09-30 16:45 ` [PATCH v14 07/16] vm_boot_test: Improve QEMU images checking Anton Mikanovich
2021-09-30 16:45 ` [PATCH v14 08/16] build_test: Refactoring build tests cases Anton Mikanovich
2021-09-30 16:45 ` [PATCH v14 09/16] testsuite: Add Python generations for testsuite in gitignore Anton Mikanovich
2021-09-30 16:45 ` [PATCH v14 10/16] testsuite: Fix test suite prepare guide Anton Mikanovich
2021-09-30 16:45 ` [PATCH v14 11/16] gitlab-ci: Add Avocado build artifacts Anton Mikanovich
2021-09-30 16:45 ` [PATCH v14 12/16] gitlab-ci: Add debug flag Anton Mikanovich
2021-09-30 16:45 ` [PATCH v14 13/16] vm_boot_test: Add automatic bitbake init Anton Mikanovich
2021-09-30 16:45 ` [PATCH v14 14/16] build_test: Protect ubuntu target with KFAIL Anton Mikanovich
2021-09-30 16:45 ` Anton Mikanovich [this message]
2021-09-30 16:45 ` [PATCH v14 16/16] vm_smoke_test: Migrate to Avocado Anton Mikanovich
2021-10-14 8:54 ` [PATCH v14 00/16] Update Avocado testsuite Jan Kiszka
2021-10-14 10:25 ` Baurzhan Ismagulov
2021-10-14 15:51 ` Jan Kiszka
2021-10-19 8:34 ` Schmidt, Adriaan
2021-10-22 6:54 ` Anton Mikanovich
2021-10-19 9:54 ` Henning Schild
2021-10-21 9:48 ` Baurzhan Ismagulov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1633020341-26062-16-git-send-email-anton.mikanovich@promwad.com \
--to=anton.mikanovich@promwad.com \
--cc=amikan@ilbers.de \
--cc=isar-users@googlegroups.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox