Remove leftovers related to Xenial
[csit.git] / resources / libraries / bash / function / artifacts.sh
index a403cfe..35fade9 100644 (file)
 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,42 +56,46 @@ 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
 
-    curl -s "${REPO_URL}"/script.deb.sh | sudo bash || {
+    curl -s "${REPO_URL}"/script.deb.sh | sudo -E bash || {
         die "Packagecloud FD.io repo fetch failed."
     }
     # 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,16 +131,18 @@ 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
 
-    curl -s "${REPO_URL}"/script.rpm.sh | sudo bash || {
+    curl -s "${REPO_URL}"/script.rpm.sh | sudo -E bash || {
         die "Packagecloud FD.io repo fetch failed."
     }
     # If version is set we will add suffix.
@@ -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,16 +166,18 @@ 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
 
-    curl -s "${REPO_URL}"/script.rpm.sh | sudo bash || {
+    curl -s "${REPO_URL}"/script.rpm.sh | sudo -E bash || {
         die "Packagecloud FD.io repo fetch failed."
     }
     # If version is set we will add suffix.
@@ -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."
         }