buildrel   [plain text]


# $Id: buildrel,v 12.39 2008/01/17 18:18:05 bostic Exp $
#
# Build the distribution package.
#
# A set of commands intended to be cut-and-pasted into a csh window.

# Set the major, minor & patch values
# !!! You'll need to edit these commands.
setenv MAJOR	4
setenv MINOR	XXX
setenv PATCH	XXX

# Set root directory where we do the work, can be anywhere.
setenv D	~/berkeleydb
setenv R	$D/db-${MAJOR}.${MINOR}.${PATCH}

# Remove any previous release tree.
rm -rf $R

# Check out a BDB tree from CVS and rename as the release tree.
rm -rf $R.tmp && mkdir $R.tmp && cd $R.tmp &&\
    cvs -q co db > /dev/null && mv -i db $R && cd $R && rm -rf $R.tmp

# Update the change log patch number -- there's 1 location to update in
# the change log "table of contents", and 2 in the Change Log itself.
cd $R/docs_src/ref/changelog && vi toc.so ${MAJOR}.${MINOR}.html

# Update the release number.
cd $R/dist &&\
    (echo "/^DB_VERSION_MAJOR/s/=.*/=$MAJOR/" &&\
     echo "/^DB_VERSION_MINOR/s/=.*/=$MINOR/" &&\
     echo "/^DB_VERSION_PATCH/s/=.*/=$PATCH/" &&\
     echo w &&\
     echo q) | ed RELEASE > /dev/null
setenv VERSION `sh -c '. RELEASE; echo $DB_VERSION'`
echo "Berkeley DB release $VERSION."

# Build auto-generated files.
cd $R/dist && sh s_all

# Commit all of the changes in to CVS.
cd $R && cvs -q commit -m "$VERSION release snapshot"

# Remove the CVS files.
cd $R && find . -name CVS | xargs rm -rf

# Build the documentation.
cd $R/docs_src && sh build clean && sh build |& sed '/.html$/d'

# Remove source directories we don't distribute.
cd $R && rm -rf build_brew_x build_s60_x
cd $R && rm -rf java/src/com/sleepycat/xa
cd $R && rm -rf rpc_server/java
cd $R && rm -rf test/TODO test/upgrade test_erlang test_perf test_purify
cd $R && rm -rf test_rep test_server test_vxworks
cd $R && find . -name '.cvsignore' | xargs rm -f

# Create symbolic links and cscope output, fix permissions.
cd $R/dist && sh s_perm
cd $R/dist && sh s_cscope
cd $R/dist && sh s_symlink

# Build a version and smoke test.
setenv DBCONF	"~db/bin/dbconf thread"
cd $R && rm -rf build_run && mkdir build_run
cd $R/build_run && $DBCONF && make >& mklog
cd $R/build_run && make ex_access && ./ex_access

# Check the install
cd $R/build_run && make prefix=`pwd`/BDB install

# Build a small-footprint version and smoke test.
cd $R && rm -rf build_run && mkdir build_run
cd $R/build_run && ../dist/configure --enable-smallbuild && make >& mklog
cd $R/build_run && make ex_access && ./ex_access

# Remove the build directory
cd $R && rm -rf build_run

# ACQUIRE ROOT PRIVILEGES
cd $R && find . -type d | xargs chmod 775
cd $R && find . -type f | xargs chmod 444
cd $R && chmod 664 build_windows/*.dsp
cd $R/dist && sh s_perm
chown -R 100 $R
chgrp -R 100 $R
# DISCARD ROOT PRIVILEGES

# Check for file names differing only in case.
cd $R && find . | sort -f | uniq -ic | sed '/1 /d'

# Create the crypto tar archive release.
setenv T "$R/../db-$VERSION.tar.gz"
cd $R/.. && tar cf - db-$VERSION | gzip --best > $T
chmod 444 $T

# Check the path length.
gzcat $T | tar tf - |\
awk '{ if (length() > 99) print "Path length: " length() " bytes: " $0;}'

# Create the non-crypto tree.
setenv RNC "$R/../db-$VERSION.NC"
rm -rf $RNC $R/../__TMP && mkdir $R/../__TMP
cd $R/../__TMP && gzcat $T | pax -r && mv -i db-$VERSION $RNC
cd $R && rm -rf $R/../__TMP
cd $RNC/dist && sh s_crypto

# ACQUIRE ROOT PRIVILEGES
cd $RNC && find . -type d | xargs chmod 775
cd $RNC && find . -type f | xargs chmod 444
cd $RNC && chmod 664 build_windows/*.dsp
cd $RNC/dist && sh s_perm
chown -R 100 $RNC
chgrp -R 100 $RNC
# DISCARD ROOT PRIVILEGES

# Create the non-crypto tar archive release.
setenv T "$R/../db-$VERSION.NC.tar.gz"
cd $RNC/.. && tar cf - db-$VERSION.NC | gzip --best > $T
chmod 444 $T

# Check the path length.
gzcat $T | tar tf - |\
awk '{ if (length() > 99) print "Path length: " length() " bytes: " $0;}'

# Remove tags files.  They're large and we don't want to store symbolic links
# in the zip archive for portability reasons.
#
# Modify the text files to have Windows end-of-line characters.
# ACQUIRE ROOT PRIVILEGES
cd $R && rm -f `find . -name 'tags'`
cd $RNC && rm -f `find . -name 'tags'`

set t=__tmp
cd $R && awk '{print $0 "\r"}' < LICENSE > $t && cp $t LICENSE && rm -f $t
cd $R && awk '{print $0 "\r"}' < README > $t && cp $t README && rm -f $t
cd $RNC && awk '{print $0 "\r"}' < LICENSE > $t && cp $t LICENSE && rm -f $t
cd $RNC && awk '{print $0 "\r"}' < README > $t && cp $t README && rm -f $t
# DISCARD ROOT PRIVILEGES

# Create the crypto zip archive release.
setenv T "$R/../db-$VERSION.zip"
cd $R/.. && zip -q -r - db-$VERSION > $T
chmod 444 $T

# Create the non-crypto zip archive release.
setenv T "$R/../db-$VERSION.NC.zip"
cd $RNC/.. && zip -q -r - db-$VERSION.NC > $T
chmod 444 $T