X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Ftools%2Fscripts%2Fdownload_hc_build_pkgs.sh;h=c534b65aa08c6ec310c0dc0cb9cff2d2a33046a1;hp=15c3d5c9da43849ab3ab6435bc018764e9a8d252;hb=6c295bd3d177d42343bfed4596655ce6604e0e55;hpb=81d535320fa4ac385b3385881785cbebef73e2eb diff --git a/resources/tools/scripts/download_hc_build_pkgs.sh b/resources/tools/scripts/download_hc_build_pkgs.sh index 15c3d5c9da..c534b65aa0 100755 --- a/resources/tools/scripts/download_hc_build_pkgs.sh +++ b/resources/tools/scripts/download_hc_build_pkgs.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright (c) 2017 Cisco and/or its affiliates. +# Copyright (c) 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: @@ -17,61 +17,137 @@ set -ex STREAM=$1 OS=$2 +jvpp_commit_id=$3 -# Download the latest VPP and VPP plugin .deb packages -URL="https://nexus.fd.io/service/local/artifact/maven/content" -VER="RELEASE" -VPP_GROUP="io.fd.vpp" -# TODO(CSIT-994): reenable NSH -# NSH_GROUP="io.fd.nsh_sfc" -# NSH_ARTIFACTS="vpp-nsh-plugin" -VPP_ARTIFACTS="vpp vpp-lib vpp-plugins vpp-api-java" - -if [ "${OS}" == "ubuntu1604" ]; then - OS="ubuntu.xenial.main" - PACKAGE="deb deb.md5" - CLASS="deb" -elif [ "${OS}" == "centos7" ]; then - OS="centos7" - PACKAGE="rpm rpm.md5" - CLASS="" +# Figure out what system we are running on +if [[ -f /etc/os-release ]];then + source /etc/os-release +else + echo "Cannot determine OS version" + exit 1 fi +echo "----- OS INFO -----" +echo DISTRIB_ID: ${ID} +echo DISTRIB_RELEASE: ${VERSION_ID} +echo DISTRIB_CODENAME: ${VERSION_CODENAME} +echo DISTRIB_DESCRIPTION: ${PRETTY_NAME} -REPO="fd.io.${STREAM}.${OS}" +VERSION=`../vpp-version` +JVPP_VERSION=`../jvpp-version` +if [[ -n "${jvpp_commit_id}" ]]; then + # Skipping download of JVPP because it was built from source + VPP_DEB_NEW_ARTIFACTS="vpp libvppinfra vpp-plugin-core vpp-plugin-dpdk vpp-dev libvppinfra-dev" + VPP_DEB_ARTIFACTS="vpp vpp-lib vpp-plugins vpp-dev" + VPP_RPM_ARTIFACTS="vpp vpp-lib vpp-plugins vpp-devel" +else + VPP_DEB_NEW_ARTIFACTS="vpp libvppinfra vpp-plugin-core vpp-plugin-dpdk vpp-api-java" + VPP_DEB_ARTIFACTS="vpp vpp-lib vpp-plugins vpp-api-java" + VPP_RPM_ARTIFACTS="vpp vpp-lib vpp-plugins vpp-api-java" +fi + +IGNORE_DEPS="" +# Check OS and stream to set correct packages +if [[ "$ID" == "centos" ]]; then + VPP_ARTIFACTS=${VPP_RPM_ARTIFACTS} +elif [[ "$ID" == "ubuntu" ]]; then + if [[ "1807 1810 1901" =~ .*$STREAM.* ]]; then + VPP_ARTIFACTS=${VPP_DEB_ARTIFACTS} + IGNORE_DEPS="vpp,vpp-lib,vpp-plugins" + else + VPP_ARTIFACTS=${VPP_DEB_NEW_ARTIFACTS} + IGNORE_DEPS="vpp,libvppinfra,vpp-plugin-core" + fi +fi +VPP_DEB_PACKAGES="" +VPP_RPM_PACKAGES="" for ART in ${VPP_ARTIFACTS}; do - for PAC in ${PACKAGE}; do - curl "${URL}?r=${REPO}&g=${VPP_GROUP}&a=${ART}&p=${PAC}&v=${VER}&c=${CLASS}" -O -J || exit - done + if [[ "${VERSION}" != 'RELEASE' ]]; then + if [[ "$ART" == "vpp-api-java" ]]; then + VPP_DEB_PACKAGES="$VPP_DEB_PACKAGES $ART=$JVPP_VERSION" + VPP_RPM_PACKAGES="$VPP_RPM_PACKAGES $ART-$JVPP_VERSION" + else + VPP_DEB_PACKAGES="$VPP_DEB_PACKAGES $ART=$VERSION" + VPP_RPM_PACKAGES="$VPP_RPM_PACKAGES $ART-$VERSION" + fi + else + VPP_DEB_PACKAGES="$VPP_DEB_PACKAGES $ART" + VPP_RPM_PACKAGES="$VPP_RPM_PACKAGES $ART" + fi done +echo "----- DOWNLOADING PACKAGES -----" +REPO_URL="https://packagecloud.io/fdio/${STREAM}" +echo "REPO_URL: ${REPO_URL}" +if [[ "$ID" == "ubuntu" ]]; then + if [[ -f /etc/apt/sources.list.d/99fd.io.list ]];then + echo "Deleting: /etc/apt/sources.list.d/99fd.io.list" + sudo rm /etc/apt/sources.list.d/99fd.io.list + fi + curl -s https://packagecloud.io/install/repositories/fdio/${STREAM}/script.deb.sh | sudo bash + apt-get download ${VPP_DEB_PACKAGES} || true +elif [[ "$ID" == "centos" ]]; then + if [[ -f /etc/yum.repos.d/fdio-master.repo ]]; then + echo "Deleting: /etc/yum.repos.d/fdio-master.repo" + sudo rm /etc/yum.repos.d/fdio-master.repo + fi + curl -s https://packagecloud.io/install/repositories/fdio/${STREAM}/script.rpm.sh | sudo bash + sudo yum -y install --downloadonly --downloaddir=./ ${VPP_RPM_PACKAGES} || true +fi # TODO(CSIT-994): reenable NSH -# for ART in ${NSH_ARTIFACTS}; do -# for PAC in ${PACKAGE}; do -# curl "${URL}?r=${REPO}&g=${NSH_GROUP}&a=${ART}&p=${PAC}&v=${VER}&c=${CLASS}" -O -J || exit -# done -# done +# NSH_GROUP="io.fd.nsh_sfc" +# NSH_ARTIFACTS="vpp-nsh-plugin" -# verify downloaded packages -if [ "${OS}" == "centos7" ]; then - FILES=*.rpm -else - FILES=*.deb +# If JVPP variable is set, clone and build JVPP from the specified commit +# Otherwise skip this step, hc2vpp will use JVPP snapshots from Nexus +if [[ -n "${jvpp_commit_id}" ]]; then + # first we need to install vpp and deps to be able to build jvpp + if [[ "$ID" == "centos" ]]; then + sudo rpm -i vpp-*.rpm + else + if [[ "$VERSION_CODENAME" == "xenial" ]]; then + sudo dpkg --ignore-depends=libmbedcrypto0,libmbedtls10,libmbedx509-0 -i vpp_*.deb vpp-dev_*.deb vpp-plugin-core_*.deb libvppinfra_*.deb libvppinfra-dev_*.deb + elif [[ "$VERSION_CODENAME" == "bionic" ]]; then + sudo dpkg --ignore-depends=libmbedcrypto1,libmbedtls10,libmbedx509-0 -i vpp_*.deb vpp-dev_*.deb vpp-plugin-core_*.deb libvppinfra_*.deb libvppinfra-dev_*.deb + else + echo "Error: Unsupported UBUNTU version." + exit 1 + fi + fi + # create new dir for custom jvpp build (jvpp directory already exists in hc2vpp, therefore using jvpp_src) + mkdir jvpp_src + cd jvpp_src + git clone https://gerrit.fd.io/r/jvpp + cd jvpp + ref=`git ls-remote -q | grep ${jvpp_commit_id} | awk '{print $2}'` + git fetch origin ${ref} && git checkout FETCH_HEAD + ./clean.sh + if [[ "$ID" == "centos" ]]; then + cmake3 . + else + cmake . + fi + make package + if [[ $? != 0 ]]; then + echo "JVPP build failed." + exit 1 + fi + cp build-root/packages/vpp-api-java* ${WORKSPACE}/csit + cd ${WORKSPACE}/csit + # Clean up when done. + if [[ "$ID" == "centos" ]]; then + sudo yum remove "*vpp*" + else + sudo apt remove "*vpp*" + fi + rm -rf jvpp_src fi -for FILE in ${FILES}; do - echo " "${FILE} >> ${FILE}.md5 -done -for MD5FILE in *.md5; do - md5sum -c ${MD5FILE} || exit - rm ${MD5FILE} -done - # install vpp-api-java, this extracts jvpp .jar files into usr/share/java -if [ "${OS}" == "centos7" ]; then +if [[ "${OS}" == "centos7" ]]; then sudo rpm --nodeps --install vpp-api-java* else - sudo dpkg --ignore-depends=vpp --install vpp-api-java* + sudo dpkg --ignore-depends=${IGNORE_DEPS} --install vpp-api-java* fi # install jvpp jars into maven repo, so that maven picks them up when building hc2vpp @@ -81,12 +157,19 @@ current_dir=`pwd` cd /usr/share/java for item in jvpp*.jar; do - # Example filename: jvpp-registry-17.01-20161206.125556-1.jar + # Example filename: jvpp-registry-19.04.jar # ArtifactId = jvpp-registry - # Version = 17.01 + # Version = 19.04 or 19.04-SNAPSHOT basefile=$(basename -s .jar "$item") artifactId=$(echo "$basefile" | cut -d '-' -f 1-2) - mvn install:install-file -Dfile=${item} -DgroupId=io.fd.vpp -DartifactId=${artifactId} -Dversion=${version} -Dpackaging=jar -Dmaven.repo.local=/tmp/r -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r + mvn install:install-file -Dfile=${item} -DgroupId=io.fd.jvpp -DartifactId=${artifactId} -Dversion=${version} -Dpackaging=jar -Dmaven.repo.local=/tmp/r -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r done -cd ${current_dir} \ No newline at end of file +# vpp-api-package is no longer necessary, breaks the installation of other packages that follow in next steps +if [[ "${OS}" == "centos7" ]]; then + sudo yum remove "*vpp-api-java*" +else + sudo apt remove "*vpp-api-java*" +fi + +cd ${current_dir}