blob: 1295ae4ce52fc6cecfcdc195955cdc1b33369b48 [file] [log] [blame]
#!/bin/sh
set -e
# required envs
RIVE_RUNTIME_DIR="${RIVE_RUNTIME_DIR:=../..}"
SKIA_DIR_NAME="${SKIA_DIR_NAME:=skia}"
SKIA_REPO=${SKIA_REPO:-https://github.com/rive-app/skia}
SKIA_BRANCH=${SKIA_BRANCH:-rive}
COMPILE_TARGET="${COMPILE_TARGET:-$(uname -s)_$(uname -m)}"
CACHE_NAME="${CACHE_NAME:=skia}"
OUTPUT_CACHE="${OUTPUT_CACHE:=out}"
MAKE_SKIA_FILE="${MAKE_SKIA_FILE:=make_skia_android.sh}"
# lets just make sure this exists, or fail
if [[ ! -d $RIVE_RUNTIME_DIR ]]
then
echo "Cannot find $RIVE_RUNTIME_DIR, bad setup"
exit 1
fi
# determeined envs
SKIA_DEPENDENCIES_DIR="$RIVE_RUNTIME_DIR/skia/dependencies"
SKIA_DIR="$SKIA_DEPENDENCIES_DIR/$SKIA_DIR_NAME"
SKIA_COMMIT_HASH="$(git ls-remote $SKIA_REPO $SKIA_BRANCH | awk '{print $1}')"
ARCHIVE_CONTENTS_NAME=archive_contents
ARCHIVE_CONTENTS_PATH="$SKIA_DIR/$ARCHIVE_CONTENTS_NAME"
echo $ARCHIVE_CONTENTS_PATH
ARCHIVE_CONTENTS="missing"
if test -f "$ARCHIVE_CONTENTS_PATH"; then
ARCHIVE_CONTENTS="$(cat $ARCHIVE_CONTENTS_PATH)"
fi
# TODO: could add OS_RELEASE in if portability is a problem
# TODO: hmm how do we know the make skia script.. i guess its an arg? a back arg?
if [[ $OSTYPE == 'darwin'* ]]; then
# md5 -r == md5sum
CONFIGURE_VERSION=$(md5 -r cache_helper.sh|awk '{print $1}')
MAKE_SKIA_HASH=$(md5 -r $SKIA_DEPENDENCIES_DIR/$MAKE_SKIA_FILE|awk '{print $1}')
BUILD_HASH=$(md5 -r -s "$SKIA_COMMIT_HASH $MAKE_SKIA_HASH $CONFIGURE_VERSION" | awk '{print $1}')
else
CONFIGURE_VERSION=$(md5sum cache_helper.sh|awk '{print $1}')
MAKE_SKIA_HASH=$(md5sum $SKIA_DEPENDENCIES_DIR/$MAKE_SKIA_FILE|awk '{print $1}')
BUILD_HASH=$(echo "$SKIA_COMMIT_HASH $MAKE_SKIA_HASH $CONFIGURE_VERSION" | md5sum | awk '{print $1}')
fi
echo "Created hash: $BUILD_HASH from skia_commit=$SKIA_COMMIT_HASH make_skia_script=$MAKE_SKIA_HASH configure_script=$CONFIGURE_VERSION"
EXPECTED_ARCHIVE_CONTENTS="$BUILD_HASH"_"$COMPILE_TARGET"
ARCHIVE_FILE_NAME="$CACHE_NAME"_"$EXPECTED_ARCHIVE_CONTENTS.tar.gz"
ARCHIVE_URL="https://cdn.2dimensions.com/archives/$ARCHIVE_FILE_NAME"
ARCHIVE_PATH="$SKIA_DIR/$ARCHIVE_FILE_NAME"
pull_cache() {
echo "Grabbing cached build from $ARCHIVE_URL"
mkdir -p $SKIA_DIR
curl --output $SKIA_DIR/$ARCHIVE_FILE_NAME $ARCHIVE_URL
pushd $SKIA_DIR
tar -xf $ARCHIVE_FILE_NAME out include archive_contents third_party
}
is_build_cached_remotely() {
echo "Checking for cache build $ARCHIVE_URL"
if curl --output /dev/null --head --silent --fail $ARCHIVE_URL
then
return 0
else
return 1
fi
}
upload_cache() {
pushd $SKIA_DEPENDENCIES_DIR
echo $EXPECTED_ARCHIVE_CONTENTS > $SKIA_DIR_NAME/$ARCHIVE_CONTENTS_NAME
# not really sure about this third party biz
# also we are caching on a per architecture path here, but out could contain more :thinking:
tar -C $SKIA_DIR_NAME -cf $SKIA_DIR_NAME/$ARCHIVE_FILE_NAME $OUTPUT_CACHE $ARCHIVE_CONTENTS_NAME include third_party/libpng third_party/externals/libpng
popd
# # if we're configured to upload the archive back into our cache, lets do it!
echo "Uploading to s3://2d-public/archives/$ARCHIVE_FILE_NAME"
ls $ARCHIVE_PATH
aws s3 cp $ARCHIVE_PATH s3://2d-public/archives/$ARCHIVE_FILE_NAME
}
is_build_cached_locally() {
if [ "$EXPECTED_ARCHIVE_CONTENTS" == "$ARCHIVE_CONTENTS" ]; then
return 0
else
return 1
fi
}