2017-09-20 10:37:57 +00:00
|
|
|
#!/bin/sh
|
2018-02-12 08:46:35 +00:00
|
|
|
# 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"
|
2017-09-26 07:20:49 +00:00
|
|
|
BASE=ExtensionCrawler
|
|
|
|
BASESIZE=600
|
2017-09-25 21:44:20 +00:00
|
|
|
|
2017-09-26 07:20:49 +00:00
|
|
|
print_help()
|
|
|
|
{
|
2018-07-14 11:22:57 +00:00
|
|
|
BINDIR=$(dirname "$ARCHIVE")/bin
|
2017-09-26 07:20:49 +00:00
|
|
|
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)"
|
2017-09-26 07:20:49 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
FORCE="false"
|
|
|
|
CDNJS="false"
|
2018-03-01 07:21:03 +00:00
|
|
|
INSTALL="false"
|
2017-09-26 07:20:49 +00:00
|
|
|
|
|
|
|
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;;
|
2017-09-26 07:20:49 +00:00
|
|
|
--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
|
2017-09-26 07:20:49 +00:00
|
|
|
IMAGE=${BASE}.img
|
2017-09-20 10:37:57 +00:00
|
|
|
fi
|
2017-09-26 07:20:49 +00:00
|
|
|
|
2018-07-14 11:22:57 +00:00
|
|
|
BINDIR=$(dirname "$ARCHIVE")/bin
|
|
|
|
LOGPREFIX=$ARCHIVE/log/`date --utc --iso-8601=ns`
|
|
|
|
LOG="$LOGPREFIX-$IMAGE.log"
|
2017-09-26 07:20:49 +00:00
|
|
|
|
|
|
|
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
|
|
|
|
|
2018-02-12 08:46:35 +00:00
|
|
|
if [ "$CDNJS" = "true" ]; then
|
|
|
|
echo "Creating writable $IMAGE ($BASESIZE MiB) using ${BASE}.def"
|
2018-04-06 23:28:21 +00:00
|
|
|
# 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
|
2018-02-12 08:46:35 +00:00
|
|
|
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
|
2018-02-12 08:46:35 +00:00
|
|
|
fi
|
2018-03-01 07:21:03 +00:00
|
|
|
|
2018-07-14 05:02:11 +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!"
|
2018-07-14 05:02:11 +00:00
|
|
|
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
|