Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Modify toolkit's build_go_vendor_cache.sh script to be used for most go packages #12217

Merged
merged 4 commits into from
Feb 6, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
117 changes: 102 additions & 15 deletions toolkit/scripts/build_go_vendor_cache.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,92 @@
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.

# Quit on failure
set -e

PKG_VERSION=""
SRC_TARBALL=""
OUT_FOLDER="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

# parameters:
#
# --srcTarball : src tarball file
# this file contains the 'initial' source code of the component
# and should be replaced with the new/modified src code
# --outFolder : folder where to copy the new tarball(s)
# --pkgVersion : package version
# --vendorVersion : vendor version
#
PARAMS=""
while (( "$#" )); do
case "$1" in
--srcTarball)
if [ -n "$2" ] && [ ${2:0:1} != "-" ]; then
SRC_TARBALL=$2
shift 2
else
echo "Error: Argument for $1 is missing" >&2
exit 1
fi
;;
--outFolder)
if [ -n "$2" ] && [ ${2:0:1} != "-" ]; then
OUT_FOLDER=$2
shift 2
else
echo "Error: Argument for $1 is missing" >&2
exit 1
fi
;;
--pkgVersion)
if [ -n "$2" ] && [ ${2:0:1} != "-" ]; then
PKG_VERSION=$2
shift 2
else
echo "Error: Argument for $1 is missing" >&2
exit 1
fi
;;
--vendorVersion)
if [ -n "$2" ] && [ ${2:0:1} != "-" ]; then
VENDOR_VERSION=$2
shift 2
else
echo "Error: Argument for $1 is missing" >&2
exit 1
fi
;;
-*|--*=) # unsupported flags
echo "Error: Unsupported flag $1" >&2
exit 1
;;
*) # preserve positional arguments
PARAMS="$PARAMS $1"
shift
;;
esac
done

if [ -z "$SRC_TARBALL" ]; then
echo "--srcTarball parameter cannot be empty"
exit 1
fi

if [ -z "$PKG_VERSION" ]; then
echo "--pkgVersion parameter cannot be empty"
exit 1
fi

if [ -z "$VENDOR_VERSION" ]; then
echo "--vendorVersion parameter cannot be empty"
exit 1
fi

echo "--srcTarball -> $SRC_TARBALL"
echo "--outFolder -> $OUT_FOLDER"
echo "--pkgVersion -> $PKG_VERSION"
echo "--vendorVersion -> $VENDOR_VERSION"

temp_dir=$(mktemp -d)
echo "Working in temporary directory '$temp_dir'."
function clean-up {
Expand All @@ -12,26 +96,19 @@ function clean-up {
}
trap clean-up EXIT

tarball_name=$1
tarball_name=$(basename "$SRC_TARBALL")

cache_name=${tarball_name%.*}
if [[ "$cache_name" =~ \.tar$ ]]
then
cache_name=${cache_name%.*}
fi

cache_tarball_name="$cache_name-vendor.tar.gz"

if [[ $# -ge 2 ]]
then
directory_name=$2
else
directory_name=$cache_name
fi
cache_tarball_name="$cache_name-$PKG_VERSION-govendor-v$VENDOR_VERSION.tar.gz"

if [[ -f "$tarball_name" ]]
then
cp "$tarball_name" "$temp_dir"
cp "$SRC_TARBALL" "$temp_dir"
else
echo "Tarball '$tarball_name' doesn't exist. Will attempt to download from blobstorage."
if ! wget -q "https://azurelinuxsrcstorage.blob.core.windows.net/sources/core/$tarball_name" -O "$temp_dir/$tarball_name"
Expand All @@ -44,18 +121,28 @@ fi

pushd "$temp_dir" &> /dev/null
echo "Extracting $tarball_name."

tar -xf "$tarball_name"


directory_name=($(ls -d */))

# assume there is only one directory in the tarball
directory_name=${directory_name[0]%//}

pushd "$directory_name" &> /dev/null
echo "Fetching dependencies to a temporary cache."
echo "Fetching dependencies to a temporary cache in $directory_name."
go mod vendor

echo "Compressing the cache."
tar --sort=name --mtime="2021-04-26 00:00Z" --owner=0 --group=0 --numeric-owner --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime -cf "$cache_tarball_name" vendor
tar --sort=name \
--mtime="2021-04-26 00:00Z" \
--owner=0 --group=0 --numeric-owner \
--pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime \
-czf "$cache_tarball_name" vendor
popd &> /dev/null
popd &> /dev/null

mv "$temp_dir/$directory_name/$cache_tarball_name" .
mv "$temp_dir/$directory_name/$cache_tarball_name" "$OUT_FOLDER"

echo "Done:"
sha256sum "$cache_tarball_name"
sha256sum "$OUT_FOLDER"/"$cache_tarball_name"
Loading