X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Flibraries%2Fbash%2Ffunction%2Fartifacts.sh;h=c11356109a4ab4eef0268c34c0a6c3e63e1533ca;hp=5ead2980b7f39ac4fdbd34c36990959a672742da;hb=a1e7653789cf39773b717bb8dda0400d4683c96e;hpb=8e7582edf682a7ba7edcb5ec0a45d00e361ec868 diff --git a/resources/libraries/bash/function/artifacts.sh b/resources/libraries/bash/function/artifacts.sh index 5ead2980b7..c11356109a 100644 --- a/resources/libraries/bash/function/artifacts.sh +++ b/resources/libraries/bash/function/artifacts.sh @@ -1,6 +1,7 @@ #!/usr/bin/env bash -# Copyright (c) 2018 Cisco and/or its affiliates. +# Copyright (c) 2019 Cisco and/or its affiliates. +# Copyright (c) 2019 PANTHEON.tech 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: @@ -55,7 +56,6 @@ function download_ubuntu_artifacts () { # Variables read: # - REPO_URL - FD.io Packagecloud repository. # - VPP_VERSION - VPP version. - # - DKMS_VERSION - DKMS version. # - INSTALL - If install packages or download only. Default: download set -exuo pipefail @@ -65,19 +65,51 @@ function download_ubuntu_artifacts () { } # If version is set we will add suffix. artifacts=() - vpp=(vpp vpp-dbg vpp-dev vpp-lib vpp-plugins) - if [ -z "${VPP_VERSION-}" ]; then - artifacts+=(${vpp[@]}) - else - artifacts+=(${vpp[@]/%/=${VPP_VERSION-}}) + BOTH_QUOTES='"'"'" + MATCH="[^${BOTH_QUOTES}]*" + QMATCH="[${BOTH_QUOTES}]\?" + SED_COMMAND="s#.*apt_source_path=${QMATCH}\(${MATCH}\)${QMATCH}#\1#p" + APT_FDIO_REPO_FILE=$(curl -s "${REPO_URL}"/script.deb.sh | \ + sed -n ${SED_COMMAND}) || { + die "Local fdio repo file path fetch failed." + } + + if [ ! -f ${APT_FDIO_REPO_FILE} ]; then + die "${APT_FDIO_REPO_FILE} not found, \ + repository installation was not successful." fi - dkms=(vpp-ext-deps) - if [ -z "${DKMS_VERSION-}" ]; then - artifacts+=(${dkms[@]}) - else - artifacts+=(${dkms[@]/%/=${DKMS_VERSION-}}) + + packages=$(apt-cache -o Dir::Etc::SourceList=${APT_FDIO_REPO_FILE} \ + -o Dir::Etc::SourceParts=${APT_FDIO_REPO_FILE} dumpavail \ + | grep Package: | cut -d " " -f 2) || { + die "Retrieval of available VPP packages failed." + } + if [ -z "${VPP_VERSION-}" ]; then + # If version is not specified, find out the most recent version + VPP_VERSION=$(apt-cache --no-all-versions show vpp | grep Version: | \ + cut -d " " -f 2) || { + die "Retrieval of most recent VPP version failed." + } fi + set +x + for package in ${packages}; do + # Filter packages with given version + pkg_info=$(apt-cache show ${package}) || { + die "apt-cache show on ${package} failed." + } + ver=$(echo ${pkg_info} | grep -o "Version: ${VPP_VERSION-}[^ ]*" | \ + head -1) || true + if [ -n "${ver-}" ]; then + echo "Found '${VPP_VERSION-}' among '${package}' versions." + ver=$(echo "$ver" | cut -d " " -f 2) + artifacts+=(${package[@]/%/=${ver-}}) + else + echo "Didn't find '${VPP_VERSION-}' among '${package}' versions." + fi + done + set -x + if [ "${INSTALL:-false}" = true ]; then sudo apt-get -y install "${artifacts[@]}" || { die "Install VPP artifacts failed." @@ -104,11 +136,11 @@ function download_centos_artifacts () { } # If version is set we will add suffix. artifacts=() - vpp=(vpp vpp-selinux-policy vpp-devel vpp-lib vpp-plugins) + packages=(vpp vpp-selinux-policy vpp-devel vpp-lib vpp-plugins vpp-api-python) if [ -z "${VPP_VERSION-}" ]; then - artifacts+=(${vpp[@]}) + artifacts+=(${packages[@]}) else - artifacts+=(${vpp[@]/%/-${VPP_VERSION-}}) + artifacts+=(${packages[@]/%/-${VPP_VERSION-}}) fi if [ "${INSTALL:-false}" = true ]; then @@ -137,11 +169,11 @@ function download_opensuse_artifacts () { } # If version is set we will add suffix. artifacts=() - vpp=(vpp vpp-devel vpp-lib vpp-plugins libvpp0) + packages=(vpp vpp-devel vpp-lib vpp-plugins libvpp0) if [ -z "${VPP_VERSION-}" ]; then - artifacts+=(${vpp[@]}) + artifacts+=(${packages[@]}) else - artifacts+=(${vpp[@]/%/-${VPP_VERSION-}}) + artifacts+=(${packages[@]/%/-${VPP_VERSION-}}) fi if [ "${INSTALL:-false}" = true ]; then @@ -154,4 +186,3 @@ function download_opensuse_artifacts () { } fi } -