| author | wenzelm | 
| Thu, 17 Jul 2008 17:11:34 +0200 | |
| changeset 27638 | ef8a96456b3c | 
| parent 27637 | 47ceef8aa1e4 | 
| child 27640 | 9df10b28aa60 | 
| permissions | -rwxr-xr-x | 
| 12721 | 1  | 
#!/usr/bin/env bash  | 
| 2667 | 2  | 
#  | 
3  | 
# $Id$  | 
|
4  | 
#  | 
|
| 10077 | 5  | 
# makedist -- make Isabelle source distribution.  | 
| 2667 | 6  | 
|
7  | 
||
8  | 
## global settings  | 
|
9  | 
||
| 17554 | 10  | 
DISTPREFIX=${DISTPREFIX:-~/tmp/isadist}
 | 
| 23149 | 11  | 
SRCS="CCL CTT Cube FOL FOLP HOL HOLCF LCF Provers Pure Sequents Tools ZF"  | 
| 2667 | 12  | 
|
| 26372 | 13  | 
export CVSROOT=/home/isabelle-repository/archive  | 
| 
26370
 
2a4f0d0621f1
remote CVSROOT: default to atbroy100 instead of sunbroy2;
 
wenzelm 
parents: 
26133 
diff
changeset
 | 
14  | 
[ ! -d "$CVSROOT" ] && CVSROOT="${ISABELLE_USER:-$USER}@atbroy100.informatik.tu-muenchen.de:$CVSROOT"
 | 
| 2667 | 15  | 
|
| 27633 | 16  | 
[ -z "$CVS2CL" ] && type -path cvs2cl >/dev/null && CVS2CL=cvs2cl  | 
| 
9920
 
9734f2717203
improved WWW page generation (still somewhat experimental);
 
wenzelm 
parents: 
9880 
diff
changeset
 | 
17  | 
|
| 27633 | 18  | 
umask 022  | 
| 
26370
 
2a4f0d0621f1
remote CVSROOT: default to atbroy100 instead of sunbroy2;
 
wenzelm 
parents: 
26133 
diff
changeset
 | 
19  | 
|
| 2667 | 20  | 
|
21  | 
## diagnostics  | 
|
22  | 
||
| 9797 | 23  | 
PRG=$(basename "$0")  | 
24  | 
THIS=$(cd $(dirname "$0"); echo "$PWD")  | 
|
| 2667 | 25  | 
|
26  | 
function usage()  | 
|
27  | 
{
 | 
|
28  | 
cat <<EOF  | 
|
| 11062 | 29  | 
|
| 17554 | 30  | 
Usage: $PRG VERSION [NAME]  | 
| 11062 | 31  | 
|
| 2667 | 32  | 
Make Isabelle distribution from the master sources at TUM.  | 
33  | 
||
| 17693 | 34  | 
VERSION may be either a tag like "IsabelleXXXX" that specifies the  | 
| 2667 | 35  | 
release to be exported from the repository, or "-" to checkout the  | 
| 17554 | 36  | 
current sources as an unofficial release.  | 
37  | 
||
38  | 
NAME specifies an explicit distribution name, by default it is  | 
|
39  | 
derived from VERSION.  | 
|
| 27638 | 40  | 
|
| 2667 | 41  | 
EOF  | 
42  | 
exit 1  | 
|
43  | 
}  | 
|
44  | 
||
45  | 
function fail()  | 
|
46  | 
{
 | 
|
47  | 
echo "$1" >&2  | 
|
48  | 
exit 2  | 
|
49  | 
}  | 
|
50  | 
||
51  | 
||
52  | 
## process command line  | 
|
53  | 
||
| 17554 | 54  | 
[ "$#" -ne 1 -a "$#" -ne 2 ] && usage  | 
55  | 
||
56  | 
VERSION="$1"; shift  | 
|
| 2667 | 57  | 
|
| 17554 | 58  | 
if [ "$#" -eq 0 ]; then  | 
59  | 
DISTNAME=""  | 
|
60  | 
else  | 
|
61  | 
DISTNAME="$1"; shift  | 
|
62  | 
fi  | 
|
| 2667 | 63  | 
|
64  | 
||
65  | 
## main  | 
|
66  | 
||
67  | 
# dist version  | 
|
68  | 
||
| 
21712
 
8b2fd895a7fc
date: forcing LC_ALL=C prevents funny file names;
 
wenzelm 
parents: 
20990 
diff
changeset
 | 
69  | 
DATE=$(env LC_ALL=C date "+%d-%b-%Y")  | 
| 
 
8b2fd895a7fc
date: forcing LC_ALL=C prevents funny file names;
 
wenzelm 
parents: 
20990 
diff
changeset
 | 
70  | 
DISTDATE=$(env LC_ALL=C date "+%B %Y")  | 
| 2667 | 71  | 
|
| 17554 | 72  | 
if [ "$VERSION" = "-" ]; then  | 
73  | 
DISTIDENT="Isabelle_$DATE"  | 
|
74  | 
[ -z "$DISTNAME" ] && DISTNAME="$DISTIDENT"  | 
|
| 9797 | 75  | 
DISTVERSION="$DISTNAME"  | 
76  | 
EXPORT="cvs -f -q checkout -P -d $DISTNAME isabelle"  | 
|
| 17558 | 77  | 
UNOFFICIAL=true  | 
| 2667 | 78  | 
else  | 
| 17554 | 79  | 
DISTIDENT="$VERSION"  | 
80  | 
[ -z "$DISTNAME" ] && DISTNAME="$DISTIDENT"  | 
|
| 4982 | 81  | 
DISTVERSION="$DISTNAME: $DISTDATE"  | 
| 17561 | 82  | 
EXPORT="cvs -f -q export -r $VERSION -d $DISTNAME isabelle"  | 
| 2667 | 83  | 
UNOFFICIAL=""  | 
84  | 
fi  | 
|
85  | 
||
| 9797 | 86  | 
DISTBASE="$DISTPREFIX/dist-$DISTNAME"  | 
87  | 
mkdir -p "$DISTBASE" || fail "Unable to create distribution base dir $DISTBASE!"  | 
|
88  | 
[ -e "$DISTBASE/$DISTNAME" ] && fail "$DISTBASE/$DISTNAME already exists!"  | 
|
89  | 
[ -e "$DISTBASE/pdf/$DISTNAME" ] && fail "$DISTBASE/pdf/$DISTNAME already exists!"  | 
|
| 2667 | 90  | 
|
91  | 
||
| 9797 | 92  | 
# export repository  | 
| 2667 | 93  | 
|
| 9797 | 94  | 
echo "###"  | 
| 17554 | 95  | 
echo "### Exporting $DISTIDENT ..."  | 
| 9797 | 96  | 
echo "###"  | 
| 2667 | 97  | 
|
| 9797 | 98  | 
cd "$DISTBASE"  | 
| 2667 | 99  | 
|
| 
13230
 
c5fad3c40d45
fail more gracefully, return proper exit codes, allow preset DISTPREFIX
 
kleing 
parents: 
13100 
diff
changeset
 | 
100  | 
$EXPORT || fail "Export failed!"  | 
| 15438 | 101  | 
|
| 27029 | 102  | 
if [ -n "$CVS2CL" -a -n "$UNOFFICIAL" ]; then  | 
| 15438 | 103  | 
cd $DISTNAME  | 
104  | 
$CVS2CL  | 
|
105  | 
gzip ChangeLog  | 
|
| 26108 | 106  | 
cp ChangeLog.gz ..  | 
| 15438 | 107  | 
cd ..  | 
108  | 
fi  | 
|
109  | 
||
| 27633 | 110  | 
find . -name CVS -print | xargs rm -rf  | 
111  | 
find . -name .cvsignore -print | xargs rm -rf  | 
|
112  | 
find . "(" -name \*.thy -o -name \*.ML ")" -perm +111 -print | xargs chmod -x
 | 
|
113  | 
find . -print | xargs chmod u+rw  | 
|
| 2667 | 114  | 
|
115  | 
||
| 27633 | 116  | 
# build components  | 
| 9797 | 117  | 
|
| 27633 | 118  | 
"$DISTBASE/$DISTNAME/Admin/build" all || fail "Failed to build distribution"  | 
| 2667 | 119  | 
|
| 9052 | 120  | 
|
| 
9920
 
9734f2717203
improved WWW page generation (still somewhat experimental);
 
wenzelm 
parents: 
9880 
diff
changeset
 | 
121  | 
# prepare dist dir for release  | 
| 8059 | 122  | 
|
| 
9920
 
9734f2717203
improved WWW page generation (still somewhat experimental);
 
wenzelm 
parents: 
9880 
diff
changeset
 | 
123  | 
echo "###"  | 
| 
 
9734f2717203
improved WWW page generation (still somewhat experimental);
 
wenzelm 
parents: 
9880 
diff
changeset
 | 
124  | 
echo "### Preparing distribution ..."  | 
| 
 
9734f2717203
improved WWW page generation (still somewhat experimental);
 
wenzelm 
parents: 
9880 
diff
changeset
 | 
125  | 
echo "###"  | 
| 2667 | 126  | 
|
| 17554 | 127  | 
cd "$DISTBASE/$DISTNAME" || fail "No dist directory: $DISTBASE/$DISTNAME"  | 
| 2667 | 128  | 
|
| 25237 | 129  | 
mkdir -p ../website  | 
130  | 
cat > ../website/distinfo.mak <<EOF  | 
|
| 
17942
 
68988fd2fd27
towards an improved website/makedist integration
 
haftmann 
parents: 
17910 
diff
changeset
 | 
131  | 
# this is a generated file - do not edit unless you know what you are doing!  | 
| 16301 | 132  | 
|
133  | 
DISTNAME=$DISTNAME  | 
|
| 17554 | 134  | 
DISTIDENT=$DISTIDENT  | 
| 17910 | 135  | 
DISTBASE=$DISTBASE  | 
| 16301 | 136  | 
EOF  | 
| 
9920
 
9734f2717203
improved WWW page generation (still somewhat experimental);
 
wenzelm 
parents: 
9880 
diff
changeset
 | 
137  | 
|
| 25237 | 138  | 
cp Distribution/lib/html/library_index_content.template ../website/  | 
139  | 
||
| 27633 | 140  | 
MOVE=$(find Doc \( -type f -a -not -type l -a -not -name isabelle_isar.pdf -a -not -name pghead.pdf -a \( -name \*.dvi -o -name \*.eps -o -name \*.ps -o -name \*.pdf \) -a -print \) | grep -v 'gfx/.*pdf')  | 
| 6630 | 141  | 
mv -f $MOVE Distribution/doc  | 
| 3305 | 142  | 
rm Distribution/doc/Isa-logics.eps  | 
| 27090 | 143  | 
rm Distribution/doc/codegen_process.pdf  | 
| 23201 | 144  | 
rm -rf Doc  | 
| 2667 | 145  | 
|
| 7115 | 146  | 
mkdir src contrib  | 
| 23149 | 147  | 
mv $SRCS src  | 
| 2667 | 148  | 
|
149  | 
mv Distribution/* .  | 
|
150  | 
rmdir Distribution  | 
|
151  | 
||
| 
25949
 
850b4c2d0f17
reactivated mk of java/scala sources, with paranoia PATH setting for sunbroy;
 
wenzelm 
parents: 
25859 
diff
changeset
 | 
152  | 
|
| 5385 | 153  | 
cp doc/isabelle*.eps lib/logo  | 
154  | 
||
| 3638 | 155  | 
|
| 2667 | 156  | 
if [ -n "$UNOFFICIAL" ]; then  | 
157  | 
  {
 | 
|
158  | 
echo  | 
|
159  | 
echo "IMPORTANT NOTE"  | 
|
160  | 
echo "=============="  | 
|
161  | 
echo  | 
|
| 17554 | 162  | 
echo "This is an unofficial release of Isabelle, created by $LOGNAME $DATE."  | 
| 2667 | 163  | 
echo  | 
| 9925 | 164  | 
} >ANNOUNCE  | 
| 26133 | 165  | 
perl -pi -e "s/val is_official = true/val is_official = false/" src/Pure/ROOT.ML  | 
| 2667 | 166  | 
fi  | 
167  | 
||
| 25433 | 168  | 
perl -pi -e "s/ISABELLE_IDENTIFIER=\"\"/ISABELLE_IDENTIFIER=\"$DISTNAME\"/g;" lib/scripts/getsettings  | 
| 25237 | 169  | 
perl -pi -e "s/{ISABELLE}/$DISTNAME/g;" lib/html/library_index_header.template
 | 
| 17554 | 170  | 
perl -pi -e "s/Isabelle repository version/$DISTVERSION/" src/Pure/ROOT.ML lib/Tools/version  | 
| 25214 | 171  | 
perl -pi -e "s/the internal repository version of Isabelle/$DISTVERSION/" README  | 
| 3257 | 172  | 
|
| 10077 | 173  | 
|
| 9052 | 174  | 
rm -rf Admin  | 
175  | 
||
| 2667 | 176  | 
|
177  | 
# create archive  | 
|
178  | 
||
| 9797 | 179  | 
echo "###"  | 
180  | 
echo "### Creating archives ..."  | 
|
181  | 
echo "###"  | 
|
| 2667 | 182  | 
|
| 9797 | 183  | 
cd "$DISTBASE"  | 
184  | 
||
| 10087 | 185  | 
echo "$DISTBASE/$DISTNAME.tar.gz" > ../ISABELLE_DIST  | 
186  | 
||
| 10068 | 187  | 
rm -f Isabelle  | 
188  | 
ln -s "$DISTNAME" Isabelle  | 
|
189  | 
||
| 9797 | 190  | 
chown -R "$LOGNAME" "$DISTNAME"  | 
191  | 
chmod -R u+w "$DISTNAME"  | 
|
192  | 
chmod -R g=o "$DISTNAME"  | 
|
| 10077 | 193  | 
chgrp -R isabelle "$DISTNAME" Isabelle  | 
| 2667 | 194  | 
|
| 9797 | 195  | 
mkdir -p "pdf/$DISTNAME/doc"  | 
| 17655 | 196  | 
mv "$DISTNAME/doc/"*.pdf "pdf/$DISTNAME/doc"  | 
197  | 
||
198  | 
sync; sleep 3  | 
|
| 6748 | 199  | 
|
| 10096 | 200  | 
echo "$DISTNAME.tar.gz"  | 
| 27633 | 201  | 
tar cf "$DISTNAME.tar" Isabelle "$DISTNAME"  | 
| 10096 | 202  | 
gzip "$DISTNAME.tar"  | 
203  | 
||
204  | 
echo "${DISTNAME}_pdf.tar.gz"
 | 
|
| 27633 | 205  | 
( cd pdf; tar cf "../${DISTNAME}_pdf.tar" "$DISTNAME"; )
 | 
| 10096 | 206  | 
gzip "${DISTNAME}_pdf.tar"
 | 
| 6748 | 207  | 
|
| 17655 | 208  | 
mv "pdf/$DISTNAME/doc/"*.pdf "$DISTNAME/doc"  | 
| 9797 | 209  | 
rmdir "pdf/$DISTNAME/doc" "pdf/$DISTNAME" pdf  | 
| 6750 | 210  | 
|
| 6304 | 211  | 
|
| 9782 | 212  | 
# cleanup dist  | 
213  | 
||
| 9797 | 214  | 
mv "$DISTNAME" "${DISTNAME}-old"
 | 
215  | 
mkdir "$DISTNAME"  | 
|
| 9782 | 216  | 
|
| 25214 | 217  | 
mv "${DISTNAME}-old/README" "${DISTNAME}-old/INSTALL" "${DISTNAME}-old/NEWS" \
 | 
| 17554 | 218  | 
  "${DISTNAME}-old/ANNOUNCE" "${DISTNAME}-old/COPYRIGHT" "${DISTNAME}-old/CONTRIBUTORS" \
 | 
219  | 
"$DISTNAME"  | 
|
| 9797 | 220  | 
mkdir "$DISTNAME/doc"  | 
| 17655 | 221  | 
mv "${DISTNAME}-old/doc/"*.pdf "${DISTNAME}-old/doc/Contents" "$DISTNAME/doc"
 | 
| 9782 | 222  | 
|
| 9867 | 223  | 
chgrp -R isabelle "$DISTNAME"  | 
224  | 
||
| 9797 | 225  | 
rm -rf "${DISTNAME}-old"
 | 
| 9782 | 226  | 
|
227  | 
||
| 2667 | 228  | 
# final note  | 
229  | 
||
| 9797 | 230  | 
echo "###"  | 
| 10112 | 231  | 
echo "### Finished makedist."  | 
| 9797 | 232  | 
echo "###"  |