60a1405eef
This also switches to using curl which some people may not have installed. However, curl is far superior for this type of download. Change-Id: I7ac5a84b30eb8daad320c082f976931c41a24669
45 lines
1.4 KiB
Bash
Executable file
45 lines
1.4 KiB
Bash
Executable file
#!/bin/bash
|
|
# These are useful, or at worst not harmful, for all images we build.
|
|
|
|
set -e
|
|
|
|
[ -n "$ARCH" ]
|
|
[ -n "$TARGET_ROOT" ]
|
|
|
|
shopt -s extglob
|
|
|
|
IMG_PATH=~/.cache/image-create
|
|
DIB_CLOUD_IMAGES=${DIB_CLOUD_IMAGES:-http://cloud-images.ubuntu.com/}
|
|
DIB_RELEASE=${DIB_RELEASE:-quantal}
|
|
BASE_IMAGE_FILE=${BASE_IMAGE_FILE:-$DIB_RELEASE-server-cloudimg-$ARCH-root.tar.gz}
|
|
SHA256SUMS=${SHA256SUMS:-https://${DIB_CLOUD_IMAGES##http?(s)://}/$DIB_RELEASE/current/SHA256SUMS}
|
|
|
|
cache_url()
|
|
{
|
|
local url=$1
|
|
local dest=$2
|
|
local tmp=$(mktemp $(dirname $dest)/.download.XXXXXXXX)
|
|
rcode=$(curl -o $tmp -z $dest -w '%{http_code}' $url)
|
|
if [ "$rcode" == "200" ] ; then
|
|
echo "Server copy has changed. Using server version of $url"
|
|
mv $tmp $dest
|
|
elif [ "$rcode" == "304" ] ; then
|
|
echo "Server copy has not changed. Using locally cached $url"
|
|
rm -f $tmp
|
|
else
|
|
echo "Server returned an unexpected response code. [$rcode]"
|
|
rm -f $tmp
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
mkdir -p $IMG_PATH
|
|
echo "Fetching Base Image"
|
|
cache_url $SHA256SUMS $IMG_PATH/SHA256SUMS.ubuntu.$DIB_RELEASE.$ARCH
|
|
cache_url $DIB_CLOUD_IMAGES/$DIB_RELEASE/current/$BASE_IMAGE_FILE $IMG_PATH/$BASE_IMAGE_FILE
|
|
pushd $IMG_PATH
|
|
grep "$BASE_IMAGE_FILE" SHA256SUMS.ubuntu.$DIB_RELEASE.$ARCH | sha256sum --check -
|
|
popd
|
|
# Extract the base image
|
|
sudo tar -C $TARGET_ROOT -xzf $IMG_PATH/$BASE_IMAGE_FILE
|
|
sudo rmdir $TARGET_ROOT/lost+found
|