From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7008446828784910336 X-Received: by 2002:a2e:505b:: with SMTP id v27mr6887506ljd.227.1633020397490; Thu, 30 Sep 2021 09:46:37 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a2e:5d3:: with SMTP id 202ls1414843ljf.4.gmail; Thu, 30 Sep 2021 09:46:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzsYLkzukK8GntaKM0OJ/ASSOCJVQfZUn6RY1XEygFQcJGAQLNp00VnYif0EuvZKGD3kbc6 X-Received: by 2002:a2e:89c9:: with SMTP id c9mr6554854ljk.288.1633020396404; Thu, 30 Sep 2021 09:46:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633020396; cv=none; d=google.com; s=arc-20160816; b=zW9em0w0TsB+eFO+MUD5qRhw9AuhIIxMytauzFXzZe+1R5kWRLNo6tNyeGkegUIaVD zrGUJS9DspDdaFJxbwrssEcMcqUcp/FiPbuhIxyMmlRcLpHBXnXuDFOZ5xGdq1i3zitM 7eU1i/IAtYCJn/m/a9OHI77t8HXXtPL8xNADYE02KtqIIydI1sbacYzEZHGLNH3whLAd 6IykYwWvQUoRkGSZckXUsjQJZcd7J67vctiR0zv8WujyJBIyiJSJMKIXJAl3X3mmafmA qwdG4kDXdiZNndBv3nH2e7GX4vkXf+DbPMdTmdVVEH6LFc4bk+J2s+fwmPugKHdQCpC7 sYMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from; bh=4j8I9eailo5ZsmUii3YE5xECSMMWYVrZYT4Rw7WBzIQ=; b=FYxUan8h5LZ9JsyzwOjzkZg3kE84ihdVav7thXAQEawAn/5SrEshY+adFdKiPv+Ekt uwBcb3BuOkXTZcJjn1m6PQDGx0ZXa4KorIZ7hA2ETP4ymUukUn6HujIIrdKThKdtojZ/ jiq0zO85FNeWrRjx4nrnSWpqTIBC441ulkROnw5nTXhHoRvHnSKLj3qJuvBpWO74JJoc sLsmMcV9u7oIX4UypvIaJba5Z+TRv4k2vqWc0kgnQ+fCXVPcyl+k4DgzUOqdApVkWfmf w0JE619iK8p1b+CZLGLbCAAg3PAFXELTxl/IwdoACcC/eau55CATbO26x5fTbesa90jr hZYQ== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=softfail (google.com: domain of transitioning anton.mikanovich@promwad.com does not designate 85.214.156.166 as permitted sender) smtp.mailfrom=anton.mikanovich@promwad.com; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=promwad.com Return-Path: Received: from shymkent.ilbers.de (shymkent.ilbers.de. [85.214.156.166]) by gmr-mx.google.com with ESMTPS id z33si166021lfu.5.2021.09.30.09.46.36 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Thu, 30 Sep 2021 09:46:36 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning anton.mikanovich@promwad.com does not designate 85.214.156.166 as permitted sender) client-ip=85.214.156.166; Authentication-Results: gmr-mx.google.com; spf=softfail (google.com: domain of transitioning anton.mikanovich@promwad.com does not designate 85.214.156.166 as permitted sender) smtp.mailfrom=anton.mikanovich@promwad.com; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=promwad.com Received: from ws-323.promwad.corp (leased-line-st-87-252-252-30.telecom.by [87.252.252.30]) (authenticated bits=0) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8) with ESMTPSA id 18UGjhun018892 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA256 bits=128 verify=NOT); Thu, 30 Sep 2021 18:46:33 +0200 From: Anton Mikanovich To: isar-users@googlegroups.com Cc: Anton Mikanovich Subject: [PATCH v14 15/16] ci_build: Migrate to Avocado Date: Thu, 30 Sep 2021 19:45:40 +0300 Message-Id: <1633020341-26062-16-git-send-email-anton.mikanovich@promwad.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1633020341-26062-1-git-send-email-anton.mikanovich@promwad.com> References: <1633020341-26062-1-git-send-email-anton.mikanovich@promwad.com> X-TUID: M2zIEIHxU8O7 From: Anton Mikanovich Call Avocado test cases instead of shell based. Build artifacts are placed in build directory. Signed-off-by: Anton Mikanovich --- 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 < .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