#!/bin/sh # # Distribution generator for CVS based packages. # To work, this script needs a consistent tagging of all releases. # Each release of a package should have a tag of the form # # _ # # where is the package name and the CVS module # and s the version number with underscores instead of dots. # # For example: cvs tag php_5_0_1 # # The distribution ends up in a .tar.gz file that contains the distribution # in a directory called -. The distribution contains all # directories from the CVS module except the one called "nodist", but only # the files INSTALL, README and config* are included. # # Since you can no longer set the CVS password via an env variable, you # need to have previously done a cvs login for the server and user id # this script uses so it will have an entry in your ~/.cvspasswd file. # # Usage: makedist # # Written by Stig Bakken 1997-05-28. # # $Id: makedist,v 1.31.6.1 2006/05/12 14:54:10 iliaa Exp $ # if test "$#" != "2"; then echo "Usage: makedist " >&2 exit 1 fi PKG=$1 ; shift VER=$1 ; shift old_IFS="$IFS" IFS=. eval set `bison --version| grep 'GNU Bison' | cut -d ' ' -f 4 | sed -e 's/\./ /'` if test "${1}" = "1" -a "${2}" -lt "28"; then echo "You will need bison 1.28 if you want to regenerate the Zend parser (found ${1}.${2}).)" exit 10 fi IFS="$old_IFS" PHPROOT=:pserver:cvsread@cvs.php.net:/repository PHPMOD=php-src LT_TARGETS='ltconfig ltmain.sh config.guess config.sub' if echo '\c' | grep -s c >/dev/null 2>&1 then ECHO_N="echo -n" ECHO_C="" else ECHO_N="echo" ECHO_C='\c' fi MY_OLDPWD=`pwd` # the destination .tar.gz file ARCHIVE=$MY_OLDPWD/$PKG-$VER.tar # temporary directory used to check out files from CVS DIR=$PKG-$VER DIRPATH=$MY_OLDPWD/$DIR if test -d "$DIRPATH"; then echo "The directory $DIR" echo "already exists, rename or remove it and run makedist again." exit 1 fi # version part of the CVS release tag CVSVER=`echo $VER | sed -e 's/[\.\-]/_/g'` # CVS release tag if test "$VER" != "HEAD"; then CVSTAG=${PKG}_$CVSVER else CVSTAG=HEAD fi if test ! -d $DIRPATH; then mkdir -p $DIRPATH || exit 2 fi # Export PHP $ECHO_N "makedist: exporting tag '$CVSTAG' from '$PHPMOD'...$ECHO_C" cvs -z 9 -d $PHPROOT export -d $DIR -r $CVSTAG $PHPMOD || exit 4 echo "" # remove CVS stuff... cd $DIR || exit 5 find . \( \( -name CVS -type d \) -o -name .cvsignore \) -exec rm -rf {} \; # The full ChangeLog is available separately from lxr.php.net rm -f ChangeLog* # hide away our own versions of libtool-generated files for i in $LT_TARGETS; do if test -f "$i"; then mv $i $i.bak cp $i.bak $i fi done # generate some files so people don't need bison, flex and autoconf # to install set -x ./buildconf --copy --force # remove buildmk.stamp. Otherwise, buildcheck.sh might not be run, # when a user runs buildconf in the distribution. rm -f buildmk.stamp ./genfiles # now restore our versions of libtool-generated files for i in $LT_TARGETS; do test -f "$i" && mv $i.bak $i done # download pear $ECHO_N "makedist: Attempting to download PEAR's phar archive" if test ! -x wget; then wget http://pear.php.net/install-pear-nozlib.phar -nd -P pear/ else $ECHO_N "Missing wget binary needed for pear download"; exit 0; fi cd $MY_OLDPWD $ECHO_N "makedist: making gzipped tar archive...$ECHO_C" rm -f $ARCHIVE.gz tar cf $ARCHIVE $PKG-$VER || exit 8 gzip -9 $ARCHIVE || exit 9 echo "" $ECHO_N "makedist: making bz2zipped tar archive...$ECHO_C" rm -f $ARCHIVE.bz2 tar cf $ARCHIVE $PKG-$VER || exit 10 bzip2 -9 $ARCHIVE || exit 11 echo "" $ECHO_N "makedist: cleaning up...$ECHO_C" rm -rf $DIRPATH || exit 12 echo "" exit 0