forked from erlyaws/yaws
/
rebar-pre-script
executable file
·76 lines (65 loc) · 2.1 KB
/
rebar-pre-script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/bin/sh
YAWS_DIR=`pwd`
DEFAULT_YAWS_VSN=`sed -ne '1,/^YAWS_VSN=/s/^YAWS_VSN=//p' $YAWS_DIR/vsn.mk 2>/dev/null`
YAWS_VSN=${VSN-$DEFAULT_YAWS_VSN}
YAWS_VARDIR=${VARDIR-$YAWS_DIR/var}
YAWS_ETCDIR=${ETCDIR-$YAWS_DIR/etc}
ERL_BIN=`which erl`
ERL_BIN_DIR=${ERL_BIN%/erl}
YAWS_ERLBINDIR=${ERLBINDIR-$ERL_BIN_DIR}
ERL_BIN=$YAWS_ERLBINDIR/erl
WERL_BIN=$YAWS_ERLBINDIR/werl
script=`basename $0`
# Use a function for error exit instead of set -e so we can conditionally
# remove files before exiting. If this were bash we could trap ERR but
# Bourne shell doesn't support that portably.
fail() {
[ -n "$@" ] && rm -f "$@"
exit 1
}
keep_or_replace() {
if [ -f "$1" ] && cmp -s "$1" "$2"; then
rm -f "$2"
return 0
else
mv "$2" "$1" || fail "$2"
return 1
fi
}
cd src || fail
if [ "$1" = clean ]; then
rm -f mime_types.erl yaws_configure.hrl yaws_generated.erl
exit 0
fi
if [ ! -f yaws_configure.hrl ]; then
echo '%% rebar sets HAVE_YAWS_SENDFILE in erlc command line' \
> yaws_configure.hrl
[ $? -eq 0 ] || fail
fi
tmpgen=`mktemp /tmp/${script}.XXXXXX` || fail
YAWS_VSN=$YAWS_VSN VARDIR="$YAWS_VARDIR" ETCDIR="$YAWS_ETCDIR" \
../scripts/gen-yaws-generated true >$tmpgen || fail
keep_or_replace yaws_generated.erl $tmpgen
[ -d "$YAWS_VARDIR" ] || mkdir "$YAWS_VARDIR" || fail
[ -d "$YAWS_ETCDIR" ] || mkdir "$YAWS_ETCDIR" || fail
need_mime=yes
if [ -f mime_types.erl ]; then
need_mime=`find mime_type_c.erl -newer mime_types.erl -print`
fi
if [ -n "$need_mime" ]; then
erlc -o ../ebin yaws_generated.erl || fail
erlc -o ../ebin mime_type_c.erl || fail
erl -pa ../ebin -noshell -s mime_type_c generate || fail mime_types.erl
fi
cd ../scripts
tmpgen=`mktemp /tmp/${script}.XXXXXX` || fail
VARDIR="${YAWS_VARDIR}" ERLBINDIR="${YAWS_ERLBINDIR}" \
ERL="${ERL_BIN}" WERL="${WERL_BIN}" ./gen-yaws > $tmpgen || fail
keep_or_replace ../bin/yaws $tmpgen
if [ $? -eq 0 ]; then
VARDIR="${YAWS_VARDIR}" ./local-install false "${YAWS_DIR}" || fail
else
chmod +x ../bin/yaws || fail
VARDIR="${YAWS_VARDIR}" ./local-install true "${YAWS_DIR}" || fail
fi
exit 0