a65d74f171
Some users on corp networks are finding that cloud images appear in their proxies before SHA256SUMS files. We now try to force any to upstream proxies to update their copy and retry the checksum, rather than immediately failing. We also now add proper argument parsing to cache-url, and associated help functionality, since we have now grown our first argument. Change-Id: I44d44b62db8d1df990606fdf087ec1b837f491f6 Closes-Bug: #1336067
40 lines
1.5 KiB
Bash
Executable File
40 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
# These are useful, or at worst not harmful, for all images we build.
|
|
|
|
set -eux
|
|
set -o pipefail
|
|
|
|
[ -n "$ARCH" ]
|
|
[ -n "$TARGET_ROOT" ]
|
|
|
|
shopt -s extglob
|
|
|
|
DIB_CLOUD_IMAGES=${DIB_CLOUD_IMAGES:-http://cloud-images.ubuntu.com}
|
|
DIB_RELEASE=${DIB_RELEASE:-trusty}
|
|
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}
|
|
CACHED_FILE=$DIB_IMAGE_CACHE/$BASE_IMAGE_FILE
|
|
CACHED_SUMS=$DIB_IMAGE_CACHE/SHA256SUMS.ubuntu.$DIB_RELEASE.$ARCH
|
|
|
|
if [ -n "$DIB_OFFLINE" -a -f "$CACHED_FILE" ] ; then
|
|
echo "Not checking freshness of cached $CACHED_FILE."
|
|
else
|
|
echo "Fetching Base Image"
|
|
$TMP_HOOKS_PATH/bin/cache-url $SHA256SUMS $CACHED_SUMS
|
|
$TMP_HOOKS_PATH/bin/cache-url $DIB_CLOUD_IMAGES/$DIB_RELEASE/current/$BASE_IMAGE_FILE $CACHED_FILE
|
|
pushd $DIB_IMAGE_CACHE
|
|
if ! grep "$BASE_IMAGE_FILE" $CACHED_SUMS | sha256sum --check - ; then
|
|
# It is likely that an upstream http(s) proxy has given us a new image, but stale sha256sums
|
|
# Try again. Harder.
|
|
$TMP_HOOKS_PATH/bin/cache-url -f $SHA256SUMS $CACHED_SUMS
|
|
grep "$BASE_IMAGE_FILE" $CACHED_SUMS | sha256sum --check -
|
|
fi
|
|
popd
|
|
fi
|
|
# Extract the base image (use --numeric-owner to avoid UID/GID mismatch between
|
|
# image tarball and host OS e.g. when building Ubuntu image on an openSUSE host)
|
|
sudo tar -C $TARGET_ROOT --numeric-owner -xzf $DIB_IMAGE_CACHE/$BASE_IMAGE_FILE
|
|
if [ -e "$TARGET_ROOT/lost+found" ]; then
|
|
sudo rmdir $TARGET_ROOT/lost+found
|
|
fi
|