#! /bin/bash
-# Copyright (c) 2020 Cisco and/or its affiliates.
+# Copyright (c) 2021 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
set -euxo pipefail
export CIMAN_DOCKER_SCRIPTS=${CIMAN_DOCKER_SCRIPTS:-"$(dirname $BASH_SOURCE)"}
-. $CIMAN_DOCKER_SCRIPTS/lib_vpp.sh
-. $CIMAN_DOCKER_SCRIPTS/lib_apt.sh
-. $CIMAN_DOCKER_SCRIPTS/lib_yum.sh
-. $CIMAN_DOCKER_SCRIPTS/lib_dnf.sh
+. "$CIMAN_DOCKER_SCRIPTS/lib_vpp.sh"
+. "$CIMAN_DOCKER_SCRIPTS/lib_apt.sh"
-must_be_run_as_root
must_be_run_in_docker_build
echo_log
-echo_log "Starting $(basename $0)"
+if ! vpp_supported_executor_class "$FDIOTOOLS_EXECUTOR_CLASS" ; then
+ echo_log "VPP is not supported on executor class '$FDIOTOOLS_EXECUTOR_CLASS'. Skipping $(basename $0)..."
+ exit 0
+else
+ echo_log "Starting $(basename $0)"
+fi
do_git_config vpp
for branch in ${VPP_BRANCHES[$OS_NAME]} ; do
- do_git_branch $branch
+ do_git_branch "$branch"
# Install OS packages
- make_vpp "install-dep" $branch
- make_vpp "centos-pyyaml" $branch # VPP Makefile tests for centos versions
- if [ "$OS_ID" = "ubuntu" ] ; then
- # TODO: fix VPP stable/2005 bug in sphinx-make.sh
- # which fails on 'yum install python3-venv'
- # that does not exist.
- # 'Make docs jobs are only run on ubuntu executors
- # so only run for ubuntu build executors until fixed.
- make_vpp "docs-venv" $branch
- elif [ "$OS_NAME" = "debian-9" ] ; then
- apt_override_cmake_install_with_pip3_version
- fi
+ make_vpp "install-dep" "$branch"
# Download, build, and cache external deps packages
- make_vpp "install-ext-deps" $branch
- set +e
+ make_vpp "install-ext-deps" "$branch"
vpp_ext_dir="$DOCKER_VPP_DIR/build/external"
- [ -d "$vpp_ext_dir/downloads" ] \
- && rsync -ac $vpp_ext_dir/downloads/. $DOCKER_DOWNLOADS_DIR
- [ -n "$(ls $vpp_ext_dir/*.deb)" ] \
- && rsync -ac $vpp_ext_dir/*.deb $DOCKER_DOWNLOADS_DIR
- [ -n "$(ls $vpp_ext_dir/*.rpm)" ] \
- && rsync -ac $vpp_ext_dir/*.rpm $DOCKER_DOWNLOADS_DIR
- set -e
+ rsync -ac $vpp_ext_dir/downloads/. $DOCKER_DOWNLOADS_DIR || true
+ if which apt >/dev/null ; then
+ vpp_ext_deps_pkg=$vpp_ext_dir/$(dpkg -l vpp-ext-deps 2>/dev/null | mawk '/vpp-ext-deps/{print $2"_"$3"_"$4".deb"}')
+ else
+ echo "ERROR: Package Manager not installed!"
+ exit 1
+ fi
+ if [ -f "$vpp_ext_deps_pkg" ] ; then
+ cp -f $vpp_ext_deps_pkg $DOCKER_DOWNLOADS_DIR
+ else
+ echo "ERROR: Missing VPP external deps package: '$vpp_ext_deps_pkg'"
+ exit 1
+ fi
+ # TODO: remove this after all supported VPP branches have removed
+ # python3-virtualenv & virtualenv from install-deps which are no longer
+ # used in vpp repo. These packages can mess up csit virtualenv
+ # installation which uses pip3
+ sudo apt remove -y --purge --autoremove python3-virtualenv virtualenv || true
# Install/cache python packages
+ make_vpp_test "test-dep" "$branch"
if [ "$OS_ID" = "ubuntu" ] ; then
- make_vpp_test "test-dep" $branch
- make_vpp_test "doc" $branch
- make_vpp test-wipe $branch
- make_vpp "bootstrap-doxygen" $branch
+ make_vpp test-wipe "$branch"
fi
+ # Clean up virtual environment
+ git checkout -q -- .
+ git clean -qfdx
# Dump packages installed
case "$DOCKERFILE_FROM" in
*ubuntu*)
- dump_apt_package_list $branch ;;
+ dump_apt_package_list "$branch" ;;
*debian*)
- dump_apt_package_list $branch ;;
- *centos:7)
- dump_yum_package_list $branch ;;
- *centos:8)
- dump_dnf_package_list $branch ;;
+ dump_apt_package_list "$branch" ;;
esac
done