diff -r cc13e03124f0 -r ddfba93b861f Admin/makedist_mercurial --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Admin/makedist_mercurial Thu Jul 17 20:40:05 2008 +0200 @@ -0,0 +1,232 @@ +#!/usr/bin/env bash +# +# $Id$ +# +# makedist_mercurial -- make Isabelle source distribution (via Mercurial) + +## global settings + +REPOS="http://isabelle.in.tum.de/isabelle-bin/mercurial.cgi" + +DISTPREFIX=${DISTPREFIX:-~/tmp/isadist} +TMP="tmp-$USER$$" + +umask 022 + + +## diagnostics + +PRG=$(basename "$0") +THIS=$(cd $(dirname "$0"); echo "$PWD") + +function usage() +{ + cat <&2 + exit 2 +} + + +## process command line + +# options + +RELEASE="" + +while getopts "r:" OPT +do + case "$OPT" in + r) + RELEASE="$OPTARG" + ;; + \?) + usage + ;; + esac +done + +shift $(($OPTIND - 1)) + + +# args + +VERSION="tip" +[ "$#" -gt 0 ] && { VERSION="$1"; shift; } + +[ "$#" -gt 0 ] && usage + + +## main + +# retrieve archive and resolve version identifier + +mkdir "$DISTPREFIX/$TMP" || fail "Failed to create fresh directory" +cd "$DISTPREFIX/$TMP" + +echo "###" +echo "### Retrieving $REPOS/archive/${VERSION}.tar.gz" +echo "###" + +{ wget -q "$REPOS/archive/${VERSION}.tar.gz" && tar -x -z -f "${VERSION}.tar.gz"; } || \ + fail "Failed to retrieve $VERSION" + +rm "${VERSION}.tar.gz" +IDENT=$(echo * | sed 's/Isabelle-repository-//') + +rm "Isabelle-repository-$IDENT/.hg_archival.txt" +rm "Isabelle-repository-$IDENT/.hgtags" + + +# dist name + +DATE=$(env LC_ALL=C date "+%d-%b-%Y") +DISTDATE=$(env LC_ALL=C date "+%B %Y") + +if [ -z "$RELEASE" ]; then + DISTNAME="Isabelle_$DATE" + DISTVERSION="Isabelle repository snapshot $IDENT ($DATE)" +else + DISTNAME="$RELEASE" + DISTVERSION="$DISTNAME: $DISTDATE" +fi + +DISTBASE="$DISTPREFIX/dist-$DISTNAME" +mkdir -p "$DISTBASE" || fail "Unable to create distribution base dir $DISTBASE!" +[ -e "$DISTBASE/$DISTNAME" ] && fail "$DISTBASE/$DISTNAME already exists!" +[ -e "$DISTBASE/pdf/$DISTNAME" ] && fail "$DISTBASE/pdf/$DISTNAME already exists!" + +cd "$DISTBASE" +mv "$DISTPREFIX/$TMP/Isabelle-repository-$IDENT" "$DISTNAME" +rm -rf "$DISTPREFIX/$TMP" + +cd "$DISTNAME" || fail "No dist directory: $DISTBASE/$DISTNAME" + + +# website + +mkdir -p ../website +cat > ../website/distinfo.mak <ANNOUNCE +else + perl -pi -e "s/val is_official = false/val is_official = true/" src/Pure/ROOT.ML +fi + +perl -pi -e "s/val changelog = \"\"/val changelog = \"$REPOS/log/$IDENT\"/" src/Pure/ROOT.ML +perl -pi -e "s/ISABELLE_IDENTIFIER=\"\"/ISABELLE_IDENTIFIER=\"$DISTNAME\"/g;" lib/scripts/getsettings +perl -pi -e "s/{ISABELLE}/$DISTNAME/g;" lib/html/library_index_header.template +perl -pi -e "s/Isabelle repository version/$DISTVERSION/" src/Pure/ROOT.ML lib/Tools/version +perl -pi -e "s/the internal repository version of Isabelle/$DISTVERSION/" README + + +# create archives + +echo "###" +echo "### Creating archives ..." +echo "###" + +cd "$DISTBASE" + +echo "$DISTBASE/$DISTNAME.tar.gz" > ../ISABELLE_DIST +echo "$IDENT" >../ISABELLE_IDENT + +rm -f Isabelle +ln -s "$DISTNAME" Isabelle + +chown -R "$LOGNAME" "$DISTNAME" +chmod -R u+w "$DISTNAME" +chmod -R g=o "$DISTNAME" +chgrp -R isabelle "$DISTNAME" Isabelle + +mkdir -p "pdf/$DISTNAME/doc" +mv "$DISTNAME/doc/"*.pdf "pdf/$DISTNAME/doc" + +echo "$DISTNAME.tar.gz" +tar -c -z -f "$DISTNAME.tar.gz" Isabelle "$DISTNAME" + +echo "${DISTNAME}_pdf.tar.gz" +tar -C pdf -c -z -f "${DISTNAME}_pdf.tar.gz" "$DISTNAME" + +mv "pdf/$DISTNAME/doc/"*.pdf "$DISTNAME/doc" +rmdir "pdf/$DISTNAME/doc" "pdf/$DISTNAME" pdf + + +# cleanup dist + +mv "$DISTNAME" "${DISTNAME}-old" +mkdir "$DISTNAME" + +mv "${DISTNAME}-old/README" "${DISTNAME}-old/INSTALL" "${DISTNAME}-old/NEWS" \ + "${DISTNAME}-old/ANNOUNCE" "${DISTNAME}-old/COPYRIGHT" "${DISTNAME}-old/CONTRIBUTORS" \ + "$DISTNAME" +mkdir "$DISTNAME/doc" +mv "${DISTNAME}-old/doc/"*.pdf "${DISTNAME}-old/doc/Contents" "$DISTNAME/doc" + +chgrp -R isabelle "$DISTNAME" + +rm -rf "${DISTNAME}-old" + +echo "###" +echo "### Finished makedist." +echo "###"