buildrel   [plain text]


# $Id: buildrel,v 12.28 2007/07/13 14:36:54 bostic Exp $
#
# Build the distribution package.
#
# A set of commands intended to be cut and pasted into a csh window.

setenv D		~bostic/berkeleydb/db.rel
setenv DBCONF		"~db/bin/dbconf thread"
setenv TARGETDIR	~bostic/berkeleydb/

# Update the release number.
cd $D/dist && cvs -q update RELEASE && vi RELEASE
setenv MINOR `sh -c '. RELEASE; echo $DB_VERSION_MINOR'`
setenv VERSION `sh -c '. RELEASE; echo $DB_VERSION'`
echo "Version: $VERSION"

# Make sure the source tree is up-to-date
cd $D && cvs -q update

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

# Update the change log patch number.
cd $D/docs_src/ref/changelog && vi toc.so 4.$MINOR.html

# Commit all of the changes.
cd $D && cvs -q commit

# Copy a development tree into a release tree.
setenv R $TARGETDIR/db-$VERSION
rm -rf $R $R.tmp && mkdir $R.tmp
cd $R.tmp && cvs -q co db > /dev/null && mv db $R && cd .. && rm -rf $R.tmp
cd $R && find . -name CVS | xargs rm -rf

# Build the C/C++/Java API documentation and Reference Guide.
#
# XXX
# This command only builds the C/C++ API documentation and Reference Guide
cd $R/docs_src && sh build clean && sh build |& sed '/.html$/d'

########################################
# PATCH RELEASE: starting point.
########################################

# 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

# 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_perf test_purify
cd $R && rm -rf test_rep test_server test_vxworks

# Build a version and smoke test.
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