moth/install

116 lines
1.7 KiB
Plaintext
Raw Normal View History

2015-04-09 17:40:03 -06:00
#! /bin/sh
2015-04-10 16:37:21 -06:00
DESTDIR=$1
if [ -z "$DESTDIR" ]; then
echo "Usage: $0 DESTDIR"
exit
fi
2015-04-09 17:40:03 -06:00
cd $(dirname $0)
older () {
[ -z "$1" ] && return 1
target=$1; shift
[ -f $target ] || return 0
for i in "$@"; do
[ $i -nt $target ] && return 0
done
return 1
}
copy () {
target=$DESTDIR/$1
if older $target $1; then
echo "COPY $1"
mkdir -p $(dirname $target)
cp $1 $target
fi
}
cc () {
target=$DESTDIR/bin/$(basename $1 .c)
if older $target $@; then
src=$1; shift
echo "CC $src"
gcc -Wall -Werror -o $target $@ $src
fi
}
2015-04-12 09:16:48 -06:00
web () {
target=$DESTDIR/www/${1#*/}
if older $target $1; then
echo "WEB $1"
mkdir -p $(dirname $target)
cp $1 $target
fi
}
2015-04-10 16:37:21 -06:00
cgi () {
target=$DESTDIR/www/$(basename $1 .c)
if older $target src/common.c $@; then
2015-04-10 16:37:21 -06:00
mkdir -p $(dirname $target)
src=$1; shift
2015-04-12 09:16:48 -06:00
echo "CGI $src"
2015-04-10 16:37:21 -06:00
gcc -Wall -Werror -o $target $@ src/common.c $src
fi
}
setup() {
2015-04-12 09:16:48 -06:00
[ -d $DESTDIR/state ] && return
2015-04-10 16:37:21 -06:00
echo "SETUP"
for i in points.new points.tmp teams; do
dir=$DESTDIR/state/$i
mkdir -p $dir
setfacl -m ${www}:rwx $dir
done
mkdir -p $DESTDIR/packages
2015-04-10 16:37:21 -06:00
>> $DESTDIR/state/points.log
if ! [ -f $DESTDIR/assigned.txt ]; then
2015-04-12 09:16:48 -06:00
hd </dev/urandom | awk '{print $3 $4 $5 $6;}' | head -n 100 > $DESTDIR/assigned.txt
2015-04-10 16:37:21 -06:00
fi
}
echo "Figuring out web user..."
for www in www-data http _; do
id $www && break
done
if [ $www = _ ]; then
echo "Unable to determine httpd user on this system. Dying."
exit 1
fi
mkdir -p $DESTDIR || exit 1
2015-04-12 09:16:48 -06:00
setup
2015-04-09 17:40:03 -06:00
git ls-files | while read fn; do
case "$fn" in
install|.*)
;;
doc/*)
;;
html/*)
2015-04-12 09:16:48 -06:00
web $fn
2015-04-09 17:40:03 -06:00
;;
bin/*)
copy $fn
;;
2015-04-10 16:37:21 -06:00
src/common.c)
;;
src/*.h)
;;
2015-04-10 16:37:21 -06:00
src/pointscli.c)
cc $fn src/common.c
;;
src/*.cgi.c)
cgi $fn
2015-04-09 17:40:03 -06:00
;;
src/*.c)
cc $fn
;;
*)
echo "??? $fn"
;;
esac
done