Admin/makedist
author wenzelm
Thu, 17 Jul 2008 21:23:08 +0200
changeset 27647 ee452b218407
parent 27640 9df10b28aa60
child 28940 043a42ba2a4d
permissions -rwxr-xr-x
tuned message;
     1 #!/usr/bin/env bash
     2 #
     3 # $Id$
     4 #
     5 # makedist -- make Isabelle source distribution.
     6 
     7 
     8 ## global settings
     9 
    10 DISTPREFIX=${DISTPREFIX:-~/tmp/isadist}
    11 SRCS="CCL CTT Cube FOL FOLP HOL HOLCF LCF Provers Pure Sequents Tools ZF"
    12 
    13 export CVSROOT=/home/isabelle-repository/archive
    14 [ ! -d "$CVSROOT" ] && CVSROOT="${ISABELLE_USER:-$USER}@atbroy100.informatik.tu-muenchen.de:$CVSROOT"
    15 
    16 [ -z "$CVS2CL" ] && type -path cvs2cl >/dev/null && CVS2CL=cvs2cl
    17 
    18 umask 022
    19 
    20 
    21 ## diagnostics
    22 
    23 PRG=$(basename "$0")
    24 THIS=$(cd $(dirname "$0"); echo "$PWD")
    25 
    26 function usage()
    27 {
    28   cat <<EOF
    29 
    30 Usage: $PRG VERSION [NAME]
    31 
    32   Make Isabelle distribution from the master sources at TUM.
    33 
    34   VERSION may be either a tag like "IsabelleXXXX" that specifies the
    35   release to be exported from the repository, or "-" to checkout the
    36   current sources as an unofficial release.
    37 
    38   NAME specifies an explicit distribution name, by default it is
    39   derived from VERSION.
    40 
    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 
    54 [ "$#" -ne 1 -a "$#" -ne 2 ] && usage
    55 
    56 VERSION="$1"; shift
    57 
    58 if [ "$#" -eq 0 ]; then
    59   DISTNAME=""
    60 else
    61   DISTNAME="$1"; shift
    62 fi
    63 
    64 
    65 ## main
    66 
    67 # dist version
    68 
    69 DATE=$(env LC_ALL=C date "+%d-%b-%Y")
    70 DISTDATE=$(env LC_ALL=C date "+%B %Y")
    71 
    72 if [ "$VERSION" = "-" ]; then
    73   DISTIDENT="Isabelle_$DATE"
    74   [ -z "$DISTNAME" ] && DISTNAME="$DISTIDENT"
    75   DISTVERSION="$DISTNAME"
    76   EXPORT="cvs -f -q checkout -P -d $DISTNAME isabelle"
    77   UNOFFICIAL=true
    78 else
    79   DISTIDENT="$VERSION"
    80   [ -z "$DISTNAME" ] && DISTNAME="$DISTIDENT"
    81   DISTVERSION="$DISTNAME: $DISTDATE"
    82   EXPORT="cvs -f -q export -r $VERSION -d $DISTNAME isabelle"
    83   UNOFFICIAL=""
    84 fi
    85 
    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!"
    90 
    91 
    92 # export repository
    93 
    94 echo "###"
    95 echo "### Exporting $DISTIDENT ..."
    96 echo "###"
    97 
    98 cd "$DISTBASE"
    99 
   100 $EXPORT || fail "Export failed!"
   101 
   102 if [ -n "$CVS2CL" -a -n "$UNOFFICIAL" ]; then
   103   cd $DISTNAME
   104   $CVS2CL
   105   gzip ChangeLog
   106   cp ChangeLog.gz ..
   107   cd ..
   108 fi
   109 
   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
   114 
   115 
   116 # build components
   117 
   118 "$DISTBASE/$DISTNAME/Admin/build" all || fail "Failed to build distribution"
   119 
   120 
   121 # prepare dist dir for release
   122 
   123 echo "###"
   124 echo "### Preparing distribution ..."
   125 echo "###"
   126 
   127 cd "$DISTBASE/$DISTNAME" || fail "No dist directory: $DISTBASE/$DISTNAME"
   128 
   129 mkdir -p ../website
   130 cat > ../website/distinfo.mak <<EOF
   131 # this is a generated file - do not edit unless you know what you are doing!
   132 
   133 DISTNAME=$DISTNAME
   134 DISTIDENT=$DISTIDENT
   135 DISTBASE=$DISTBASE
   136 EOF
   137 
   138 cp Distribution/lib/html/library_index_content.template ../website/
   139 
   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')
   141 mv -f $MOVE Distribution/doc
   142 rm Distribution/doc/Isa-logics.eps
   143 rm Distribution/doc/codegen_process.pdf
   144 rm -rf Doc
   145 
   146 mkdir src contrib
   147 mv $SRCS src
   148 
   149 mv Distribution/* .
   150 rmdir Distribution
   151 
   152 
   153 cp doc/isabelle*.eps lib/logo
   154 
   155 
   156 if [ -n "$UNOFFICIAL" ]; then
   157   {
   158     echo
   159     echo "IMPORTANT NOTE"
   160     echo "=============="
   161     echo
   162     echo "This is an unofficial snapshot of Isabelle, created by $LOGNAME $DATE."
   163     echo
   164   } >ANNOUNCE
   165 else
   166   perl -pi -e "s/val is_official = false/val is_official = true/" src/Pure/ROOT.ML
   167 fi
   168 
   169 perl -pi -e "s/ISABELLE_IDENTIFIER=\"\"/ISABELLE_IDENTIFIER=\"$DISTNAME\"/g;" lib/scripts/getsettings
   170 perl -pi -e "s/{ISABELLE}/$DISTNAME/g;" lib/html/library_index_header.template
   171 perl -pi -e "s/Isabelle repository version/$DISTVERSION/" src/Pure/ROOT.ML lib/Tools/version
   172 perl -pi -e "s/the internal repository version of Isabelle/$DISTVERSION/" README
   173 
   174 
   175 rm -rf Admin
   176 
   177 
   178 # create archive
   179 
   180 echo "###"
   181 echo "### Creating archives ..."
   182 echo "###"
   183 
   184 cd "$DISTBASE"
   185 
   186 echo "$DISTBASE/$DISTNAME.tar.gz" > ../ISABELLE_DIST
   187 
   188 rm -f Isabelle
   189 ln -s "$DISTNAME" Isabelle
   190 
   191 chown -R "$LOGNAME" "$DISTNAME"
   192 chmod -R u+w "$DISTNAME"
   193 chmod -R g=o "$DISTNAME"
   194 chgrp -R isabelle "$DISTNAME" Isabelle
   195 
   196 mkdir -p "pdf/$DISTNAME/doc"
   197 mv "$DISTNAME/doc/"*.pdf "pdf/$DISTNAME/doc"
   198 
   199 echo "$DISTNAME.tar.gz"
   200 tar cf "$DISTNAME.tar" Isabelle "$DISTNAME"
   201 gzip "$DISTNAME.tar"
   202 
   203 echo "${DISTNAME}_pdf.tar.gz"
   204 ( cd pdf; tar cf "../${DISTNAME}_pdf.tar" "$DISTNAME"; )
   205 gzip "${DISTNAME}_pdf.tar"
   206 
   207 mv "pdf/$DISTNAME/doc/"*.pdf "$DISTNAME/doc"
   208 rmdir "pdf/$DISTNAME/doc" "pdf/$DISTNAME" pdf
   209 
   210 
   211 # cleanup dist
   212 
   213 mv "$DISTNAME" "${DISTNAME}-old"
   214 mkdir "$DISTNAME"
   215 
   216 mv "${DISTNAME}-old/README" "${DISTNAME}-old/INSTALL" "${DISTNAME}-old/NEWS" \
   217   "${DISTNAME}-old/ANNOUNCE" "${DISTNAME}-old/COPYRIGHT" "${DISTNAME}-old/CONTRIBUTORS" \
   218   "$DISTNAME"
   219 mkdir "$DISTNAME/doc"
   220 mv "${DISTNAME}-old/doc/"*.pdf "${DISTNAME}-old/doc/Contents" "$DISTNAME/doc"
   221 
   222 chgrp -R isabelle "$DISTNAME"
   223 
   224 rm -rf "${DISTNAME}-old"
   225 
   226 
   227 echo "###"
   228 echo "### Finished makedist."
   229 echo "###"