efb1f435d4
If a cached copy of the file doesn't exist, cache_url() passes a non-existent path to -z/--time-cond and you see this warning: Warning: Illegal date format for -z, --timecond (and not a file name). Warning: Disabling time condition. See curl_getdate(3) for valid date syntax. It works just fine, but the warning is ugly. Change-Id: Ic6f13a2c596b988308d7fca9cd1745e5d48ae5fb
56 lines
1.6 KiB
Bash
Executable File
56 lines
1.6 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
|
|
|
|
mkdir -p $(dirname $dest)
|
|
local tmp=$(mktemp $(dirname $dest)/.download.XXXXXXXX)
|
|
|
|
if [ -f $dest ] ; then
|
|
time_cond="-z $dest"
|
|
success="Server copy has changed. Using server version of $url"
|
|
else
|
|
success="Downloaded and cached $url for the first time"
|
|
fi
|
|
|
|
rcode=$(curl -o $tmp -w '%{http_code}' $url $time_cond)
|
|
if [ "$rcode" == "200" ] ; then
|
|
echo $success
|
|
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
|