X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=resources%2Flibraries%2Fbash%2Ffunction%2Fartifacts.sh;h=fe755af9d9e59f1c1f23b9563708947d26896ba4;hb=c79c748013ec53ff59e9260034822a5b26afa441;hp=a403cfe005a77b4e9fb056b98874af5db92709b6;hpb=89e6be275715aefa8473835eb78eed309f37f2ee;p=csit.git diff --git a/resources/libraries/bash/function/artifacts.sh b/resources/libraries/bash/function/artifacts.sh index a403cfe005..fe755af9d9 100644 --- a/resources/libraries/bash/function/artifacts.sh +++ b/resources/libraries/bash/function/artifacts.sh @@ -17,12 +17,17 @@ set -exuo pipefail function download_artifacts () { - # Get and/or install VPP artifacts from packagecloud.io. + + # Download or install VPP artifacts from packagecloud.io. # # Variables read: # - CSIT_DIR - Path to existing root of local CSIT git repository. # Variables set: # - REPO_URL - FD.io Packagecloud repository. + # Functions conditionally called (see their documentation for side effects): + # - download_ubuntu_artifacts + # - download_centos_artifacts + # - download_opensuse_artifacts set -exuo pipefail @@ -51,12 +56,14 @@ function download_artifacts () { } function download_ubuntu_artifacts () { - # Get and/or install Ubuntu VPP artifacts from packagecloud.io. + + # Download or install Ubuntu VPP artifacts from packagecloud.io. # # Variables read: # - REPO_URL - FD.io Packagecloud repository. # - VPP_VERSION - VPP version. - # - INSTALL - If install packages or download only. Default: download + # - INSTALL - Whether install packages (if set to "true") or download only. + # Default: "false". set -exuo pipefail @@ -65,28 +72,30 @@ function download_ubuntu_artifacts () { } # If version is set we will add suffix. artifacts=() - 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}) || { + 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, \ + if [ ! -f ${apt_fdio_repo_file} ]; then + die "${apt_fdio_repo_file} not found, \ repository installation was not successful." fi - packages=$(apt-cache -o Dir::Etc::SourceList=${APT_FDIO_REPO_FILE} \ - -o Dir::Etc::SourceParts=${APT_FDIO_REPO_FILE} dumpavail \ + 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: | \ + VPP_VERSION=$(apt-cache -o Dir::Etc::SourceList=${apt_fdio_repo_file} \ + -o Dir::Etc::SourceParts=${apt_fdio_repo_file} \ + --no-all-versions show vpp | grep Version: | \ cut -d " " -f 2) || { die "Retrieval of most recent VPP version failed." } @@ -98,7 +107,8 @@ function download_ubuntu_artifacts () { pkg_info=$(apt-cache show ${package}) || { die "apt-cache show on ${package} failed." } - ver=$(echo ${pkg_info} | grep -o "Version: ${VPP_VERSION-}[^ ]*") || true + 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) @@ -109,7 +119,7 @@ function download_ubuntu_artifacts () { done set -x - if [ "${INSTALL:-false}" = true ]; then + if [[ "${INSTALL:-false}" == "true" ]]; then sudo apt-get -y install "${artifacts[@]}" || { die "Install VPP artifacts failed." } @@ -121,12 +131,14 @@ function download_ubuntu_artifacts () { } function download_centos_artifacts () { - # Get and/or install CentOS VPP artifacts from packagecloud.io. + + # Download or install CentOS VPP artifacts from packagecloud.io. # # Variables read: # - REPO_URL - FD.io Packagecloud repository. # - VPP_VERSION - VPP version. - # - INSTALL - If install packages or download only. Default: download + # - INSTALL - Whether install packages (if set to "true") or download only. + # Default: "false". set -exuo pipefail @@ -142,7 +154,7 @@ function download_centos_artifacts () { artifacts+=(${packages[@]/%/-${VPP_VERSION-}}) fi - if [ "${INSTALL:-false}" = true ]; then + if [[ "${INSTALL:-false}" == "true" ]]; then sudo yum -y install "${artifacts[@]}" || { die "Install VPP artifact failed." } @@ -154,12 +166,14 @@ function download_centos_artifacts () { } function download_opensuse_artifacts () { - # Get and/or install OpenSuSE VPP artifacts from packagecloud.io. + + # Download or install OpenSuSE VPP artifacts from packagecloud.io. # # Variables read: # - REPO_URL - FD.io Packagecloud repository. # - VPP_VERSION - VPP version. - # - INSTALL - If install packages or download only. Default: download + # - INSTALL - Whether install packages (if set to "true") or download only. + # Default: "false". set -exuo pipefail @@ -175,7 +189,7 @@ function download_opensuse_artifacts () { artifacts+=(${packages[@]/%/-${VPP_VERSION-}}) fi - if [ "${INSTALL:-false}" = true ]; then + if [[ "${INSTALL:-false}" == "true" ]]; then sudo yum -y install "${artifacts[@]}" || { die "Install VPP artifact failed." }