diff options
Diffstat (limited to 'scripts/build-packages.sh')
-rw-r--r-- | scripts/build-packages.sh | 255 |
1 files changed, 31 insertions, 224 deletions
diff --git a/scripts/build-packages.sh b/scripts/build-packages.sh index 3e19138ed..dddc98deb 100644 --- a/scripts/build-packages.sh +++ b/scripts/build-packages.sh @@ -1,4 +1,4 @@ -# Copyright (c) 2017-2019 Cisco and/or its affiliates. +# Copyright (c) 2017-2022 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: @@ -15,222 +15,44 @@ set -euxo pipefail SCRIPT_PATH=$( cd "$(dirname "${BASH_SOURCE}")" ; pwd -P ) -APT_PATH=`which apt-get` || true -apt_get=${APT_PATH:-"/usr/local/bin/apt-get"} - -PACKAGECLOUD_RELEASE_REPO_DEB="https://packagecloud.io/install/repositories/fdio/release/script.deb.sh" -PACKAGECLOUD_RELEASE_REPO_RPM="https://packagecloud.io/install/repositories/fdio/release/script.rpm.sh" - -VPP_GIT_REPO="https://git.fd.io/vpp" -VPP_BRANCH="stable/2005" - -VPP_VERSION_DEB="20.05-release" -VPP_VERSION_RPM="20.05-release.x86_64" - -BUILD_TOOLS_UBUNTU="build-essential doxygen" -LIBSSL_LIBEVENT_UBUNTU="libevent-dev libssl-dev" -DEPS_UBUNTU="libparc-dev \ - libmemif-dev \ - libmemif \ - libasio-dev \ - libconfig-dev \ - libcurl4-openssl-dev \ - vpp=${VPP_VERSION_DEB} \ - vpp-dev=${VPP_VERSION_DEB} \ - libvppinfra=${VPP_VERSION_DEB} \ - libvppinfra-dev=${VPP_VERSION_DEB} \ - vpp-plugin-core=${VPP_VERSION_DEB} \ - python3-ply" - - -DEPS_UBUNTU_NOVERSION="libparc-dev \ - libmemif-dev \ - libmemif \ - libasio-dev \ - libconfig-dev \ - libcurl4-openssl-dev \ - vpp \ - vpp-dev \ - libvppinfra \ - libvppinfra-dev \ - vpp-plugin-core \ - python3-ply \ - python3-setuptools \ - python3-pip" - -DEPS_CMAKE_UBUNTU="curl" - -# BUILD_TOOLS_GROUP_CENTOS="'Development Tools'" -DEPS_CENTOS="vpp-devel-${VPP_VERSION_RPM} \ - vpp-lib-${VPP_VERSION_RPM} \ - libparc-devel \ - libmemif-devel \ - libmemif \ - libcurl-devel \ - asio-devel \ - libconfig-devel \ - centos-release-scl \ - devtoolset-7" - -DEPS_CENTOS_NOVERSION="vpp-devel \ - vpp-lib \ - libparc-devel \ - libcurl-devel \ - asio-devel \ - libmemif-devel \ - libmemif \ - centos-release-scl \ - devtoolset-7" - -LATEST_EPEL_REPO="http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm" - -install_cmake() { - if [ "${DISTRIB_ID}" == "ubuntu" ]; then - sudo apt update - echo ${DEPS_CMAKE_UBUNTU} | xargs sudo ${apt_get} install -y --allow-unauthenticated --no-install-recommends - fi - - if ! grep -q "8.8.8.8" /etc/resolv.conf; then - echo "nameserver 8.8.8.8" | sudo tee -a /etc/resolv.conf - fi - - cat /etc/resolv.conf - - CMAKE_INSTALL_SCRIPT_URL="https://cmake.org/files/v3.8/cmake-3.8.0-Linux-x86_64.sh" - CMAKE_INSTALL_SCRIPT="/tmp/install_cmake.sh" - curl ${CMAKE_INSTALL_SCRIPT_URL} > ${CMAKE_INSTALL_SCRIPT} - - sudo mkdir -p /opt/cmake - sudo bash ${CMAKE_INSTALL_SCRIPT} --skip-license --prefix=/opt/cmake - export PATH=/opt/cmake/bin:${PATH} -} - -# Parameters: -# $1 = Distribution id -# $2 = Distribution codename -# -setup_fdio_repo() { - DISTRIB_ID=${1} - - if [ "${DISTRIB_ID}" == "ubuntu" ]; then - rm -r /etc/apt/sources.list.d/* - curl -s ${PACKAGECLOUD_RELEASE_REPO_DEB} | sudo bash - elif [ "${DISTRIB_ID}" == "centos" ]; then - curl -s ${PACKAGECLOUD_RELEASE_REPO_RPM} | sudo bash - curl ${LATEST_EPEL_REPO} > epel-release-latest-7.noarch.rpm - rpm -ivh epel-release-latest-7.noarch.rpm || true - rm epel-release-latest-7.noarch.rpm - else - echo "Distribution ${DISTRIB_ID} is not supported" - exit -1 - fi -} - -setup() { - # Figure out what system we are running on - if [ -f /etc/os-release ]; then - . /etc/os-release - else - echo "ERROR: System configuration not recognized. Build failed" - exit -1 - fi - - DISTRIB_ID=${ID} - - echo DISTRIBUTION: ${PRETTY_NAME} - echo ARCHITECTURE: $(uname -m) - - ARCH=`uname -m` - if [ "$ARCH" == "x86_64" ] || [ "$ARCH" == "x86" ]; then - install_cmake - fi - setup_fdio_repo ${DISTRIB_ID} - - if [ "${DISTRIB_ID}" == "ubuntu" ]; then - sudo ${apt_get} update || true - fi - - # Install dependencies - if [ ${DISTRIB_ID} == "ubuntu" ]; then - echo ${BUILD_TOOLS_UBUNTU} ${DEPS_UBUNTU_NOVERSION} | xargs sudo ${apt_get} install -y --allow-unauthenticated --no-install-recommends - elif [ ${DISTRIB_ID} == "centos" ]; then - # echo ${BUILD_TOOLS_GROUP_CENTOS} | xargs sudo yum groupinstall -y --nogpgcheck - echo ${DEPS_CENTOS} | xargs sudo yum install -y --nogpgcheck - sudo yum install devtoolset-7 - - c++ --version - - CXX_COMPILER="/opt/rh/devtoolset-7/root/usr/bin/c++" - CC_COMPILER="/opt/rh/devtoolset-7/root/usr/bin/cc" - - ${CXX_COMPILER} --version - ${CC_COMPILER} --version - - export CC=${CC_COMPILER} CXX=${CXX_COMPILER} - fi - - # do nothing but check compiler version - c++ --version -} - - -install_collectd_headers() { - if [ -f /etc/os-release ]; then - . /etc/os-release - else - echo "ERROR: System configuration not recognized. Build failed" - exit -1 - fi - - if [ "${DISTRIB_ID}" == "ubuntu" ]; then - sudo apt-get install collectd-dev -y --allow-unauthenticated - - if [ "${VERSION_CODENAME}" == "xenial" ]; then - awk '/config.h/ { print; print "#include \"collectd/liboconfig/oconfig.h\""; next }1' /usr/include/collectd/core/daemon/configfile.h | sudo tee /usr/include/collectd/core/daemon/configfile.h - fi - elif [ "${DISTRIB_ID}" == "centos" ]; then - wget https://storage.googleapis.com/collectd-tarballs/collectd-5.9.2.tar.bz2 - tar -xf collectd-5.9.2.tar.bz2 - cd collectd-5.9.2 && ./configure && make && cd - - export COLLECTD_HOME=${PWD}/collectd-5.9.2/src - fi +source ${SCRIPT_PATH}/functions.sh + +BUILD_PATH="${SCRIPT_PATH}/../packages" +TEST_REPORT_DIR="${BUILD_PATH}/reports" +BUILD_ROOT_DIR="${BUILD_PATH}/build-root/bin" +MAKE_FOLDER="${SCRIPT_PATH}/.." + +function execute_tests() { + mkdir -p "${TEST_REPORT_DIR}" + pushd "${BUILD_ROOT_DIR}" + for component in "${TEST_COMPONENTS[@]}"; do + GTEST_OUTPUT="xml:${TEST_REPORT_DIR}/${component}-report.xml" "./${component}_tests" + done + popd } # Parameters: # $1 = Package name # -build_package() { +function build_package() { setup echo "*******************************************************************" echo "********************* STARTING PACKAGE BUILD **********************" echo "*******************************************************************" - # Make the package - mkdir -p ${SCRIPT_PATH}/../build && pushd ${SCRIPT_PATH}/../build - - rm -rf * - cmake -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_APPS=ON .. - make VERBOSE=1 -j8 package - - rm -rf libtransport ctrl/libhicnctrl - - install_collectd_headers - - cmake -DCMAKE_INSTALL_PREFIX=/usr \ - -DBUILD_HICNPLUGIN=ON \ - -DBUILD_LIBTRANSPORT=ON \ - -DBUILD_APPS=ON \ - -DBUILD_HICNLIGHT=OFF \ - -DBUILD_SYSREPOPLUGIN=OFF \ - -DBUILD_TELEMETRY=ON \ - ${SCRIPT_PATH}/.. + # Run unit tests and make the package + make -C "${MAKE_FOLDER}" BUILD_PATH="${BUILD_PATH}" INSTALL_PREFIX=/usr package-release - make VERBOSE=1 -j8 package - - find . -not -name '*.deb' -not -name '*.rpm' -print0 | xargs -0 rm -rf -- || true - rm *Unspecified* || true + execute_tests + pushd "${BUILD_PATH}" + find . -not -name '*.deb' \ + -not -name '*.rpm' \ + -not -name 'reports' \ + -not -name '*report.xml' \ + -print0 | xargs -0 rm -rf -- || true + rm ./*Unspecified* ./*Development* ./*development* || true popd echo "*******************************************************************" @@ -245,30 +67,15 @@ build_sphinx() { echo "********************* STARTING DOC BUILD **************************" echo "*******************************************************************" - # Make the package - pip3 install -r ${SCRIPT_PATH}/../docs/etc/requirements.txt - pushd ${SCRIPT_PATH}/../docs - make html - - popd + make doc echo "*******************************************************************" echo "***************** BUILD COMPLETED SUCCESSFULLY *******************" echo "*******************************************************************" } -build_doxygen() { - setup - - mkdir -p ${SCRIPT_PATH}/../build-doxygen - pushd ${SCRIPT_PATH}/../build-doxygen - cmake -DBUILD_HICNPLUGIN=On -DBUILD_HICNLIGHT=OFF -DBUILD_LIBTRANSPORT=OFF -DBUILD_UTILS=OFF -DBUILD_APPS=OFF -DBUILD_CTRL=OFF .. - make doc - popd -} - function usage() { - echo "Usage: ${0} [doc|sphinx|doxygen]" + echo "Usage: ${0} [sphinx|packages]" exit 1 } @@ -280,14 +87,14 @@ case "${1}" in sphinx) build_sphinx ;; - doxygen) - build_doxygen - ;; packages) build_package ;; + vpp_master) + ;; *) usage + exit 1 esac exit 0 |