Release scripts: Copy the support release scripts from the v3-3-tree
authorGerald W. Carter <jerry@samba.org>
Tue, 27 May 2008 21:30:54 +0000 (16:30 -0500)
committerGerald W. Carter <jerry@samba.org>
Wed, 28 May 2008 15:26:27 +0000 (10:26 -0500)
(cherry picked from commit 8555ceeca7ac50f18589c07d2deb45c1d6fe8010)

release-scripts/build-docs [new file with mode: 0755]
release-scripts/create-tarball [new file with mode: 0755]

diff --git a/release-scripts/build-docs b/release-scripts/build-docs
new file mode 100755 (executable)
index 0000000..529a1c0
--- /dev/null
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+DOCSRCDIR=`dirname $0`/../docs-xml
+
+cd $DOCSRCDIR || exit 1
+
+git-clean -d -x -f
+autoconf && ./configure --with-papersize=letter && make release
+
+if [ $? != 0 ]; then
+        echo "Docs build failed!"
+        exit 1
+fi
+
+mkdir ../docs
+rsync -Ca --delete --exclude=.git output/ ../docs/
+rsync -Ca --exclude=.svn registry ../docs/
+rsync -Ca --exclude=.svn archives/ ../docs/
+
+cd ../docs || exit 1
+/bin/rm -rf test.pdf Samba4*pdf htmldocs/Samba4* htmldocs/test
+mv manpages-3 manpages
+mv htmldocs/manpages-3 htmldocs/manpages
+
+exit
\ No newline at end of file
diff --git a/release-scripts/create-tarball b/release-scripts/create-tarball
new file mode 100755 (executable)
index 0000000..3463f01
--- /dev/null
@@ -0,0 +1,222 @@
+#!/bin/bash
+
+## option defaults
+OPT_BRANCH=""
+OPT_DOCSDIR=""
+OPT_TAG=""
+OPT_KEYID=""
+
+TOPDIR="`dirname $0`/.."
+VER_H="${TOPDIR}/source/include/version.h"
+
+function exitOnError
+{
+    local _error="$1"
+    local _msg="$2"
+
+    if [ ${_error} -eq 0 ]; then
+       return 0
+    fi
+
+    echo "FAILURE: ${_msg}"
+    exit ${_error}
+}
+
+##
+## Print help usage
+##
+
+function printUsage
+{
+    echo "Usage $0 [options]"
+    echo "    --help             Print command usage"
+    echo "    --branch <name>    Specify the branch to to create the archive file from"
+    echo "    --copy-docs <dir>  Copy documentation from <dir> rather than building"
+    echo "    --tag <name>       Tag name for release"
+    echo "    --keyid <email>    The GnuPG key ID used to sign the release tag"
+    echo ""
+}
+
+##
+## Parse the command line options 
+##
+
+function parseOptions
+{
+    while [ -n "$1" ]; do
+       case "$1" in
+           --help)
+               printUsage
+               exit 0
+               ;;
+           --branch)
+               shift
+               if [ -z "$1" ]; then
+                   printUsage
+                   return 1
+               fi
+               OPT_BRANCH="$1"
+               shift
+               ;;
+           --copy-docs)
+               shift
+               if [ -z "$1" ]; then
+                   printUsage
+                   return 1
+               fi
+               OPT_DOCSDIR="$1"
+               shift
+               ;;
+           --tag)
+               shift
+               if [ -z "$1" ]; then
+                   printUsage
+                   return 1
+               fi
+               OPT_TAG="$1"
+               shift
+               ;;
+           --keyid)
+               shift
+               if [ -z "$1" ]; then
+                   printUsage
+                   return 1
+               fi
+               OPT_KEYID="$1"
+               shift
+               ;;
+           *)
+               printUsage
+               return 1
+               ;;
+       esac
+    done
+
+    if [ -z "${OPT_BRANCH}" ]; then
+       echo "You must specify a branch name!"
+       printUsage
+       return 1
+    fi
+}
+
+##
+## Build the dopcumentation (may be a no-op)
+##
+
+function buildDocs
+{
+    if [ -n "${OPT_DOCSDIR}" ]; then
+       if [ ! -d "${OPT_DOCSDIR}" ]; then
+           exitOnError 1 "${OPT_DOCSDIR} does not exist.  Please specify the absolute path."
+       fi
+
+       mkdir docs
+       exitOnError $? "Failed to create docs directory"
+
+       rsync -av "${OPT_DOCSDIR}"/ docs/
+       exitOnError $? "Failed top copy docs from ${OPT_DOCSDIR}"
+       
+       return 0
+    fi
+
+    echo "Building documentation.  This may take a while.  Log file in /tmp/docs-build.log.$$"
+
+    ${TOPDIR}/release-scripts/build-docs 2> /tmp/docs-build.log.$$
+    return $?
+
+}
+
+
+##
+## Create a release tag
+##
+function createReleaseTag
+{
+    if [ -z "${OPT_TAG}" ]; then
+       echo "Tagging disabled"
+       return 0
+    fi
+
+    if [ "x`git-tag -l ${OPT_TAG}`" != "x" ]; then
+       echo -n "Tag exists.  Do you wish to overwrite? (y/N): "
+       read answer
+
+       if [ "x$answer" != "xy" ]; then
+           echo "Tag creation aborted."
+           exit 1
+       fi
+    fi
+
+    if [ -z "${OPT_KEYID}" ]; then
+       echo -n "Enter the keyid:"
+       read OPT_KEYID
+       if [ -z "${OPT_KEYID}" ]; then
+           exitOnError 1 "No keyid specified"
+       fi
+    fi
+
+    git-tag -u ${OPT_KEYID} ${OPT_TAG}
+    exitOnError $? "Failed to create tag"
+
+    return 0
+}
+##
+## Main driver
+##
+function main 
+{
+    parseOptions "$@"
+    exitOnError $? "Failed to parse options"
+    
+    cd $TOPDIR
+
+    git-checkout ${OPT_BRANCH}
+    exitOnError $? "Invalid branch name \"${OPT_BRANCH}\""
+
+    (cd source && ./script/mkversion.sh)
+    if [ ! -f $VER_H ]; then
+       exitOnError 1 "Failed to find ${VER_H}!"
+    fi
+
+    version=`grep SAMBA_VERSION_OFFICIAL_STRING $VER_H | awk '{print $3}'`
+    vendor_version=`grep SAMBA_VERSION_VENDOR_SUFFIX $VER_H | awk '{print $3}'`
+    if [ -n "$vendor_version" ]; then
+       version="$version-$vendor_version"
+    fi
+    version=`echo $version | sed 's/\"//g'`
+
+    echo "Creating release tarball for Samba $version"
+
+    /bin/rm -rf ../samba-${version}
+    git-archive --format=tar --prefix=samba-${version}/ HEAD | (cd .. && tar xf -)
+    exitOnError $? "Failed to create release directory tree"
+
+    pushd ../samba-${version}
+
+    packaging/bin/update-pkginfo ${version} 1 ""
+
+    buildDocs
+    exitOnError $? "Failed to build documentation"
+
+    ( cd source && ./autogen.sh )
+
+    cd ..
+    tar cf samba-${version}.tar --exclude=.git* --exclude=CVS --exclude=.svn samba-${version}
+    exitOnError $? "Failed to create tarball from git tree"
+
+    gpg --detach-sign --armor samba-${version}.tar
+    ## exitOnError $? "Failed to sign tarball"
+
+    gzip -9 samba-${version}.tar
+    exitOnError $? "Failed to compress archive"
+
+    popd
+
+    createReleaseTag
+    exitOnError $? "Failed to create release tag"
+
+    return 0
+}
+
+main "$@"
+exit $?