| author | wenzelm | 
| Thu, 13 Nov 2008 21:59:47 +0100 | |
| changeset 28775 | d25fe9601dbd | 
| parent 27647 | ee452b218407 | 
| child 28942 | 043a42ba2a4d | 
| 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: 
26133diff
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: 
9880diff
changeset | 17 | |
| 27633 | 18 | umask 022 | 
| 26370 
2a4f0d0621f1
remote CVSROOT: default to atbroy100 instead of sunbroy2;
 wenzelm parents: 
26133diff
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: 
20990diff
changeset | 69 | DATE=$(env LC_ALL=C date "+%d-%b-%Y") | 
| 
8b2fd895a7fc
date: forcing LC_ALL=C prevents funny file names;
 wenzelm parents: 
20990diff
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: 
13100diff
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: 
9880diff
changeset | 121 | # prepare dist dir for release | 
| 8059 | 122 | |
| 9920 
9734f2717203
improved WWW page generation (still somewhat experimental);
 wenzelm parents: 
9880diff
changeset | 123 | echo "###" | 
| 
9734f2717203
improved WWW page generation (still somewhat experimental);
 wenzelm parents: 
9880diff
changeset | 124 | echo "### Preparing distribution ..." | 
| 
9734f2717203
improved WWW page generation (still somewhat experimental);
 wenzelm parents: 
9880diff
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: 
17910diff
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: 
9880diff
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: 
25859diff
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 | |
| 27647 | 162 | echo "This is an unofficial snapshot of Isabelle, created by $LOGNAME $DATE." | 
| 2667 | 163 | echo | 
| 9925 | 164 | } >ANNOUNCE | 
| 27640 
9df10b28aa60
structure Distribution: swapped default for is_official;
 wenzelm parents: 
27638diff
changeset | 165 | else | 
| 
9df10b28aa60
structure Distribution: swapped default for is_official;
 wenzelm parents: 
27638diff
changeset | 166 | perl -pi -e "s/val is_official = false/val is_official = true/" src/Pure/ROOT.ML | 
| 2667 | 167 | fi | 
| 168 | ||
| 25433 | 169 | perl -pi -e "s/ISABELLE_IDENTIFIER=\"\"/ISABELLE_IDENTIFIER=\"$DISTNAME\"/g;" lib/scripts/getsettings | 
| 25237 | 170 | perl -pi -e "s/{ISABELLE}/$DISTNAME/g;" lib/html/library_index_header.template
 | 
| 17554 | 171 | perl -pi -e "s/Isabelle repository version/$DISTVERSION/" src/Pure/ROOT.ML lib/Tools/version | 
| 25214 | 172 | perl -pi -e "s/the internal repository version of Isabelle/$DISTVERSION/" README | 
| 3257 | 173 | |
| 10077 | 174 | |
| 9052 | 175 | rm -rf Admin | 
| 176 | ||
| 2667 | 177 | |
| 178 | # create archive | |
| 179 | ||
| 9797 | 180 | echo "###" | 
| 181 | echo "### Creating archives ..." | |
| 182 | echo "###" | |
| 2667 | 183 | |
| 9797 | 184 | cd "$DISTBASE" | 
| 185 | ||
| 10087 | 186 | echo "$DISTBASE/$DISTNAME.tar.gz" > ../ISABELLE_DIST | 
| 187 | ||
| 10068 | 188 | rm -f Isabelle | 
| 189 | ln -s "$DISTNAME" Isabelle | |
| 190 | ||
| 9797 | 191 | chown -R "$LOGNAME" "$DISTNAME" | 
| 192 | chmod -R u+w "$DISTNAME" | |
| 193 | chmod -R g=o "$DISTNAME" | |
| 10077 | 194 | chgrp -R isabelle "$DISTNAME" Isabelle | 
| 2667 | 195 | |
| 9797 | 196 | mkdir -p "pdf/$DISTNAME/doc" | 
| 17655 | 197 | mv "$DISTNAME/doc/"*.pdf "pdf/$DISTNAME/doc" | 
| 198 | ||
| 10096 | 199 | echo "$DISTNAME.tar.gz" | 
| 27633 | 200 | tar cf "$DISTNAME.tar" Isabelle "$DISTNAME" | 
| 10096 | 201 | gzip "$DISTNAME.tar" | 
| 202 | ||
| 203 | echo "${DISTNAME}_pdf.tar.gz"
 | |
| 27633 | 204 | ( cd pdf; tar cf "../${DISTNAME}_pdf.tar" "$DISTNAME"; )
 | 
| 10096 | 205 | gzip "${DISTNAME}_pdf.tar"
 | 
| 6748 | 206 | |
| 17655 | 207 | mv "pdf/$DISTNAME/doc/"*.pdf "$DISTNAME/doc" | 
| 9797 | 208 | rmdir "pdf/$DISTNAME/doc" "pdf/$DISTNAME" pdf | 
| 6750 | 209 | |
| 6304 | 210 | |
| 9782 | 211 | # cleanup dist | 
| 212 | ||
| 9797 | 213 | mv "$DISTNAME" "${DISTNAME}-old"
 | 
| 214 | mkdir "$DISTNAME" | |
| 9782 | 215 | |
| 25214 | 216 | mv "${DISTNAME}-old/README" "${DISTNAME}-old/INSTALL" "${DISTNAME}-old/NEWS" \
 | 
| 17554 | 217 |   "${DISTNAME}-old/ANNOUNCE" "${DISTNAME}-old/COPYRIGHT" "${DISTNAME}-old/CONTRIBUTORS" \
 | 
| 218 | "$DISTNAME" | |
| 9797 | 219 | mkdir "$DISTNAME/doc" | 
| 17655 | 220 | mv "${DISTNAME}-old/doc/"*.pdf "${DISTNAME}-old/doc/Contents" "$DISTNAME/doc"
 | 
| 9782 | 221 | |
| 9867 | 222 | chgrp -R isabelle "$DISTNAME" | 
| 223 | ||
| 9797 | 224 | rm -rf "${DISTNAME}-old"
 | 
| 9782 | 225 | |
| 226 | ||
| 9797 | 227 | echo "###" | 
| 10112 | 228 | echo "### Finished makedist." | 
| 9797 | 229 | echo "###" |