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 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
#!/bin/bash
#
# Make the SWI-Prolog source archives by running this script. Before
# you start:
#
# * Update VERSION
# * Run ./newversion, which creates a GIT tag VN.N.N
# * Run ./make-src-tape
#
# This script requires GNU-tar!
if [ -x /opt/local/bin/gnutar ]; then
tar=/opt/local/bin/gnutar
else
tar=tar
fi
COREMODULES="bench packages/chr packages/clpqr packages/inclpr packages/jpl"
COREMODULES+=" packages/xpce packages/odbc packages/protobufs packages/windows"
COREMODULES+=" packages/sgml packages/clib packages/http packages/plunit"
COREMODULES+=" packages/pldoc packages/RDF packages/semweb packages/ssl"
COREMODULES+=" packages/zlib packages/tipc packages/table packages/ltx2htm"
COREMODULES+=" packages/nlp packages/cpp packages/PDT packages/utf8proc"
COREMODULES+=" packages/archive packages/swipl-win packages/pengines"
COREMODULES+=" packages/cql packages/bdb packages/readline packages/libedit"
COREMODULES+=" packages/pcre packages/yaml packages/paxos packages/redis"
COREMODULES+=" packages/stomp packages/mqi packages/sweep"
if [ -r modules ]; then
SUBMODULES="`cat modules`"
else
SUBMODULES="$COREMODULES"
fi
name=swipl
namesep=-
version=`cat VERSION`
compress=gzip
me=`basename $PWD`
quiet=false
TAG="V$version"
usage()
{ cat << _EOM_
Usage: $(basename $0) [option ...]
Options:
--tag=Tag
Create archive for the given version
--version=Version
Create archive for the given version
--name=Name [default $name]
Create archive for the given version
--sep=Sep [default $namesep]
Separator between name and version
--submodule=Module
Add an additional module (can be repeated)
--quiet
Work silently
--help
Print this message
_EOM_
}
while [ x"$1" != x"" ]; do
case "$1" in
--tag=*)
TAG=`echo $1 | sed 's/--[^=]*=//'`
shift
;;
--submodule=*)
SUBMODULES+=" $(echo $1 | sed 's/--[^=]*=//')"
shift
;;
--name=*)
name=`echo $1 | sed 's/--[^=]*=//'`
shift
;;
--sep=*)
namesep=`echo $1 | sed 's/--[^=]*=//'`
shift
;;
--version=*)
version=`echo $1 | sed 's/--[^=]*=//'`
shift
;;
--quiet)
quiet=true
shift
;;
--help)
usage
exit 0
;;
--*)
usage
exit 1
;;
*)
esac
done
if ! git diff --quiet; then
echo "Fatal: directory is dirty"
exit 1
fi
prefix=$name$namesep$version
out=$prefix.tar
# core SWI-Prolog snapshot from GIT
git archive --format=tar --prefix=$prefix/ "$TAG" > ../$out
#add the submodules
for sm in `git submodule status $SUBMODULES | awk '{printf "%s:%s\n", $1, $2}'`; do
sha1=`echo $sm | awk -F: '{print $1}'`
path=`echo $sm | awk -F: '{print $2}'`
[ $quiet = true ] || echo -n "adding module $path at $sha1 ... "
git --git-dir $path/.git archive --format=tar --prefix=$prefix/$path/ $sha1 > tmp.tar
$tar -Af ../$out tmp.tar
rm tmp.tar
[ $quiet = true ] || echo ok
done
cd ..
ln -s $me $prefix
# cleanup
rm $prefix
# compress the result
rm -f $out.gz
$compress $out
|