From 3f21100e1d2ec47b64670a8b08d0c9d067bf9ef3 Mon Sep 17 00:00:00 2001 From: Mauro Sardara Date: Fri, 6 Dec 2019 18:25:28 +0100 Subject: [HICN-430] Rework on CMake Change way targets are defined: each project defines targets. Fix project BUILD flags Add build-extras bash script Rework build tree of extras folder, using ExternalProject_Add Change-Id: I82fa29896e54c8a033490eba013c3f0431bec9d0 Signed-off-by: Mauro Sardara --- scripts/build-extras.sh | 166 ++++++++++++++++++++++++++++++++++++++++++++++ scripts/build-packages.sh | 40 +++++++++-- scripts/build-sysrepo.sh | 164 --------------------------------------------- 3 files changed, 201 insertions(+), 169 deletions(-) create mode 100644 scripts/build-extras.sh delete mode 100644 scripts/build-sysrepo.sh (limited to 'scripts') diff --git a/scripts/build-extras.sh b/scripts/build-extras.sh new file mode 100644 index 000000000..17e443890 --- /dev/null +++ b/scripts/build-extras.sh @@ -0,0 +1,166 @@ +# Copyright (c) 2017-2019 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: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#!/bin/bash +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/1908" + +VPP_VERSION_DEB="19.08.1-release" +VPP_VERSION_RPM="19.08.1-release.x86_64" + +BUILD_TOOLS_UBUNTU="build-essential doxygen" +LIBSSL_LIBEVENT_UBUNTU="libevent-dev libssl-dev" +DEPS_UBUNTU="libvppinfra=${VPP_VERSION_DEB} \ + libvppinfra-dev=${VPP_VERSION_DEB} \ + vpp=${VPP_VERSION_DEB} \ + vpp-dev=${VPP_VERSION_DEB} \ + vpp-plugin-core=${VPP_VERSION_DEB}" + +# BUILD_TOOLS_GROUP_CENTOS="'Development Tools'" +DEPS_CENTOS="vpp-devel-${VPP_VERSION_RPM} \ + vpp-lib-${VPP_VERSION_RPM} \ + centos-release-scl \ + devtoolset-7" + +LATEST_EPEL_REPO="http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm" + +install_cmake() { + 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 + 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) + + install_cmake + 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} | xargs sudo ${apt_get} install -y --allow-unauthenticated --no-install-recommends + sudo ${apt_get} clean && sudo ${apt_get} update + sudo ${apt_get} install -y --allow-unauthenticated --no-install-recommends libpcre3-dev + 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 pcre-devel + + 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 +} + +# Parameters: +# $1 = Package name +# +build_package() { + setup + + echo "*******************************************************************" + echo "********************* STARTING PACKAGE BUILD **********************" + echo "*******************************************************************" + + mkdir -p build && pushd build + + rm -rf * + cmake -DCMAKE_INSTALL_PREFIX=/usr \ + -DBUILD_LIBHICN=OFF \ + -DBUILD_UTILS=OFF \ + -DBUILD_HICNPLUGIN=OFF \ + -DBUILD_HICNLIGHT=OFF \ + -DBUILD_LIBTRANSPORT=OFF \ + -DBUILD_APPS=OFF \ + -DBUILD_CTRL=OFF \ + -DBUILD_SYSREPOPLUGIN=OFF \ + -DBUILD_EXTRAS=ON \ + ${SCRIPT_PATH}/.. + make package + + find . -type d -iname '_CPack_Packages' -print0 | xargs -0 rm -rf -- || true + rm *Unspecified* || true + + popd + + echo "*******************************************************************" + echo "***************** BUILD COMPLETED SUCCESSFULLY *******************" + echo "*******************************************************************" +} + +build_package + +exit 0 diff --git a/scripts/build-packages.sh b/scripts/build-packages.sh index 76aa7b389..2205d6277 100644 --- a/scripts/build-packages.sh +++ b/scripts/build-packages.sh @@ -29,12 +29,43 @@ VPP_VERSION_RPM="19.08.1-release.x86_64" BUILD_TOOLS_UBUNTU="build-essential doxygen" LIBSSL_LIBEVENT_UBUNTU="libevent-dev libssl-dev" -DEPS_UBUNTU="libparc-dev 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="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_CMAKE_UBUNTU="curl" # BUILD_TOOLS_GROUP_CENTOS="'Development Tools'" -DEPS_CENTOS="vpp-devel-${VPP_VERSION_RPM} vpp-lib-${VPP_VERSION_RPM} libparc-devel libcurl-devel asio-devel libconfig-devel centos-release-scl devtoolset-7" -DEPS_CENTOS_NOVERSION="vpp-devel vpp-lib libparc-devel libcurl-devel asio-devel centos-release-scl devtoolset-7" +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() { @@ -143,11 +174,10 @@ build_package() { cmake -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_APPS=ON ${SCRIPT_PATH}/.. make -j8 package - rm -rf libtransport + rm -rf libtransport ctrl/libctrl cmake -DCMAKE_INSTALL_PREFIX=/usr \ -DBUILD_HICNPLUGIN=ON \ - -DBUILD_HICNEXTRAPLUGIN=ON \ -DBUILD_LIBTRANSPORT=ON \ -DBUILD_APPS=ON \ ${SCRIPT_PATH}/.. diff --git a/scripts/build-sysrepo.sh b/scripts/build-sysrepo.sh deleted file mode 100644 index e51b25f4a..000000000 --- a/scripts/build-sysrepo.sh +++ /dev/null @@ -1,164 +0,0 @@ -# Copyright (c) 2017-2019 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: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -#!/bin/bash -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/1908" - -VPP_VERSION_DEB="19.08.1-release" -VPP_VERSION_RPM="19.08.1-release.x86_64" - -BUILD_TOOLS_UBUNTU="build-essential doxygen" -LIBSSL_LIBEVENT_UBUNTU="libevent-dev libssl-dev" -DEPS_UBUNTU="hicn-light libhicn-dev libhicnctrl libhicnctrl-dev hicn-plugin hicn-plugin-dev libvppinfra=${VPP_VERSION_DEB} libvppinfra-dev=${VPP_VERSION_DEB} vpp=${VPP_VERSION_DEB} vpp-dev=${VPP_VERSION_DEB} vpp-plugin-core=${VPP_VERSION_DEB}" - -# BUILD_TOOLS_GROUP_CENTOS="'Development Tools'" -DEPS_CENTOS="vpp-devel-${VPP_VERSION_RPM} vpp-lib-${VPP_VERSION_RPM} libparc-devel asio-devel centos-release-scl devtoolset-7" -LATEST_EPEL_REPO="http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm" - -install_cmake() { - 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 - 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) - - install_cmake - 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} | xargs sudo ${apt_get} install -y --allow-unauthenticated --no-install-recommends - sudo ${apt_get} clean && sudo ${apt_get} update - sudo ${apt_get} install -y --allow-unauthenticated --no-install-recommends libpcre3-dev - 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 pcre-devel - - 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 -} - -# Parameters: -# $1 = Package name -# -build_package() { - setup - - echo "*******************************************************************" - echo "********************* STARTING PACKAGE BUILD **********************" - echo "*******************************************************************" - - mkdir -p build && pushd build - - rm -rf * - cmake -DCMAKE_INSTALL_PREFIX=/usr ${SCRIPT_PATH}/../extras/libyang - make install - make package - - find . -not -name '*.deb' -not -name '*.rpm' -print0 | xargs -0 rm -rf -- || true - rm *Unspecified* || true - - cmake -DCMAKE_INSTALL_PREFIX=/usr ${SCRIPT_PATH}/../extras/sysrepo - make install - make package - - find . -not -name '*.deb' -not -name '*.rpm' -print0 | xargs -0 rm -rf -- || true - rm *Unspecified* || true - - cmake -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_HICNPLUGIN=ON -DBUILD_HICNLIGHT=OFF \ - -DBUILD_LIBTRANSPORT=OFF -DBUILD_UTILS=OFF -DBUILD_CTRL=OFF \ - -DBUILD_SYSREPOPLUGIN=ON ${SCRIPT_PATH}/.. - make install - make package - - popd - - echo "*******************************************************************" - echo "***************** BUILD COMPLETED SUCCESSFULLY *******************" - echo "*******************************************************************" -} - -build_package - -exit 0 -- cgit 1.2.3-korg