ExtensionCrawler/singularity/build.sh

106 lines
3.0 KiB
Bash
Raw Normal View History

2017-09-20 10:37:57 +00:00
#!/bin/sh
# Copyright 2017,2018 The University of Sheffield, UK
2017-09-20 10:37:57 +00:00
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
2018-07-14 11:22:57 +00:00
ARCHIVE="/srv/Shared/BrowserExtensions/archive"
BASE=ExtensionCrawler
BASESIZE=600
print_help()
{
2018-07-14 11:22:57 +00:00
BINDIR=$(dirname "$ARCHIVE")/bin
echo "Usage: $prog [OPTION] "
echo ""
echo "Build a singularity image (fat application) for all ExtensenCrawler utilities."
echo ""
echo " --help, -h display this help message"
echo " --force, -f overwrite existing singularity image"
2017-09-26 08:55:46 +00:00
echo " --cdnjs, -c include cdnjs repository (ca. 125 GB)"
2018-07-14 11:22:57 +00:00
echo " --install, -i install image (default: $BINDIR)"
echo " --archive DIR, -a DIR install image into DIR (default: $ARCHIVE)"
}
FORCE="false"
CDNJS="false"
2018-03-01 07:21:03 +00:00
INSTALL="false"
while [ $# -gt 0 ]
do
case "$1" in
--force|-f)
FORCE="true";;
--cdnjs|-c)
CDNJS="true";;
2018-03-01 07:21:03 +00:00
--install|-i)
INSTALL="true";;
2018-07-14 11:22:57 +00:00
--archive|-a)
ARCHIVE="$2"
shift;;
--help|-h)
print_help
exit 0;;
esac
shift
done
if [ "$CDNJS" = "true" ]; then
IMAGE=${BASE}-cdnjs.img
2017-10-11 09:37:57 +00:00
BASESIZE=$((BASESIZE+134400))
2017-09-20 10:37:57 +00:00
else
IMAGE=${BASE}.img
2017-09-20 10:37:57 +00:00
fi
2018-07-14 11:22:57 +00:00
BINDIR=$(dirname "$ARCHIVE")/bin
LOGPREFIX=$ARCHIVE/log/`date --utc --iso-8601=ns`
LOG="$LOGPREFIX-$IMAGE.log"
if [ -f ${IMAGE} ]; then
if [ "$FORCE" = "true" ]; then
rm -f ${IMAGE}
else
echo "Image ${IMAGE} exists already."
echo "Please remove/rename the image and restart this script"
exit 1
fi
fi
if [ "$CDNJS" = "true" ]; then
echo "Creating writable $IMAGE ($BASESIZE MiB) using ${BASE}.def"
# TODO: --writable for 'build' action is deprecated due to some sparse file
# issues; it is recommended to use --sandbox; however, that creates a
# folder, which is probable not what we want here...
2018-07-14 11:22:57 +00:00
sudo singularity build --writable ${IMAGE} ${BASE}.def > "$LOG" 2>&1
sudo singularity image.expand --size ${BASESIZE} --writable ${IMAGE} ${BASE}.def > "$LOG" 2>&1
else
echo "Creating read-only $IMAGE using ${BASE}.def"
2018-07-14 11:22:57 +00:00
sudo singularity build ${IMAGE} ${BASE}.def > "$LOG" 2>&1
fi
2018-03-01 07:21:03 +00:00
if [ ! -f $IMAGE ]; then
echo "Image (${IMAGE}) creation failed!"
exit 1
2018-07-14 11:59:38 +00:00
else
echo "Image (${IMAGE}) creation successful!"
fi
2018-03-01 07:21:03 +00:00
if [ "$INSTALL" = "true" ]; then
if [ -f $BINDIR/$IMAGE ]; then
mv $BINDIR/$IMAGE $BINDIR/$IMAGE.bak
fi
2018-07-14 11:59:38 +00:00
echo "Installing ${IMAGE} into $BINDIR"
2018-03-01 07:21:03 +00:00
mv $IMAGE $BINDIR
fi