blob: 2698d91ac67d70285a5520d009a335cec4ba5d24 [file] [log] [blame]
#!/bin/sh
#
# USAGE: ./dist.sh VERSION REVISION [REPOS-PATH]
#
# Create a distribution tarball, labelling it with the given VERSION.
# The REVISION will be used in the version string. The tarball will be
# constructed from the root located at REPOS-PATH. If REPOS-PATH is
# not specified then the default is "branches/release-VERSION". For
# example, the command line:
#
# ./dist.sh 0.24.2 6284
#
# from the top-level of a branches/release-0.24.2 working copy will
# create the 0.24.2 release tarball. Make sure you have apr, apr-util,
# and neon subdirectories and that the working copy is configured
# before running this script in the top-level directory.
#
if [ -z "$1" ] || [ -z "$2" ]; then
echo "USAGE: ./dist.sh VERSION REVISION [REPOS-PATH]"
exit 1
fi
if [ ! -d apr ]; then
echo "ERROR: an 'apr' subdirectory must be present."
exit 1
fi
if [ ! -d apr-util ]; then
echo "ERROR: an 'apr-util' subdirectory must be present."
exit 1
fi
if [ ! -d neon ]; then
echo "ERROR: a 'neon' subdirectory must be present."
exit 1
fi
VERSION="$1"
REVISION="$2"
WC_REVISION="`svnversion doc`"
REPOS_PATH="$3"
if [ -z "$REPOS_PATH" ]; then
REPOS_PATH="branches/release-$VERSION"
else
REPOS_PATH="`echo $REPOS_PATH | sed 's/^\/*//'`"
fi
DISTNAME="subversion-$VERSION"
DIST_SANDBOX=.dist_sandbox
DISTPATH="$DIST_SANDBOX/$DISTNAME"
echo "Distribution will be named: $DISTNAME"
echo " constructed from path: /$REPOS_PATH"
if [ "$WC_REVISION" != "$REVISION" ]; then
echo "* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *"
echo "* *"
echo "* WARNING: The docs/ directory in your working copy does not *"
echo "* appear to have the same revision number as the *"
echo "* distribution revision you requested. Since these *"
echo "* documents will be the ones included in your final *"
echo "* tarball, please be sure they reflect the proper *"
echo "* state. *"
echo "* *"
echo "* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *"
fi
echo "Cleaning old docs in docs/ ..."
rm -f doc/translations/french/svn-handbook-french.info
rm -f doc/translations/french/svn-handbook-french.info-*
rm -f doc/translations/french/svn-handbook-french.html
rm -f doc/translations/french/svn-handbook-french.txt
echo "Building new docs in docs/ ..."
FOP_OPTS="-Xms100m -Xmx200m"
export FOP_OPTS
make doc-design
rm -rf "$DIST_SANDBOX"
mkdir "$DIST_SANDBOX"
echo "Removed and recreated $DIST_SANDBOX"
echo "Exporting revision $REVISION of Subversion into sandbox..."
(cd "$DIST_SANDBOX" && \
svn export -q -r "$REVISION" "http://svn.collab.net/repos/svn/$REPOS_PATH" \
"$DISTNAME" --username none --password none)
for pkg in apr-util apr ; do
echo "Copying $pkg into sandbox, making extraclean..."
cp -r "$pkg" "$DISTPATH"
(cd "$DISTPATH/$pkg" && make extraclean)
echo "Removing all CVS/ and .cvsignore files from $pkg..."
find "$DISTPATH/$pkg" -name CVS -type d -print | xargs rm -fr
find "$DISTPATH/$pkg" -name .cvsignore -print | xargs rm -f
done
echo "Coping neon into sandbox, making clean..."
cp -r neon "$DISTPATH"
(cd "$DISTPATH/neon" && make distclean)
echo "Cleaning *.o in neon..."
find "$DISTPATH/neon/src" -name '*.o' -print | xargs rm -f
find "$DISTPATH" -name config.nice -print | xargs rm -f
echo "Running ./autogen.sh in sandbox, to create ./configure ..."
(cd "$DISTPATH" && ./autogen.sh --release) || exit 1
echo "Copying new docs into sandbox..."
for name in doc/programmer/design/svn-design.info \
doc/programmer/design/svn-design.info-* \
doc/programmer/design/svn-design.html \
doc/programmer/design/svn-design.txt \
doc/book/book/*.html \
doc/book/book/*.pdf
do
cp "$name" "$DISTPATH/$name"
done
echo "Copying images into sandbox..."
cp -r "doc/book/book/images/" "$DISTPATH/doc/book/book/images/"
rm -rf "$DISTPATH/doc/book/book/images/.svn"
cat > "$DISTPATH/ChangeLog.CVS" <<EOF
The old CVS ChangeLog is kept at
http://subversion.tigris.org/
If you want to see changes since Subversion went self-hosting,
you probably want to use the "svn log" command -- and if it
does not do what you need, please send in a patch!
EOF
vsn_file="$DISTPATH/subversion/include/svn_version.h"
sed -e \
"/#define *SVN_VER_TAG/s/dev build/r$REVISION/" \
< "$vsn_file" > "$vsn_file.tmp"
sed -e \
"/#define *SVN_VER_NUMTAG/s/\+//" \
< "$vsn_file.tmp" > "$vsn_file.unq"
sed -e \
"/#define *SVN_VER_REVISION/s/0/$REVISION/" \
< "$vsn_file.unq" > "$vsn_file"
rm -f "$vsn_file.tmp"
rm -f "$vsn_file.unq"
echo "Rolling $DISTNAME.tar.gz ..."
(cd "$DIST_SANDBOX" && tar zcpf "$DISTNAME.tar.gz" "$DISTNAME")
echo "Copying tarball out, removing sandbox..."
cp "$DISTPATH.tar.gz" .
rm -rf "$DIST_SANDBOX"
echo ""
echo "Done:"
ls -l "$DISTNAME.tar.gz"
echo ""