php-src / makedist

#!/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
#
#  <package>_<version>
#
# where <package> is the package name and the CVS module
# and <version> s the version number with underscores instead of dots.
#
# For example: cvs tag php_3_0a1
#
# The distribution ends up in a .tar.gz file that contains the distribution
# in a directory called <package>-<version>.  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 <package> <version>
#
# Written by Stig Bakken <ssb@guardian.no> 1997-05-28.
#
# $Id$
#

if test "$#" != "2"; then
    echo "Usage: makedist <package> <version>" >&2
    exit 1
fi

PKG=$1 ; shift
VER=$1 ; shift

old_IFS="$IFS"
IFS=.
eval set `bison -V|sed "s/GNU Bison version //"`
if test "$1" = "1" && test "28" -gt "$2"; then
  echo "Please use Bison 1.28 or higher"
  exit 10
fi
IFS="$old_IFS"

PHPROOT=:pserver:cvsread@cvs.php.net:/repository
ZENDROOT=:pserver:cvsread@cvs.zend.com:/repository
PHPMOD=php4
ZENDMOD=Zend
TSRMMOD=TSRM
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
CVSTAG=${PKG}_$CVSVER

if test ! -d $DIRPATH; then
    mkdir -p $DIRPATH || exit 2
fi

#cd $DIRPATH || exit 3

# Export PHP
$ECHO_N "makedist: exporting tag '$CVSTAG' from '$PHPMOD'...$ECHO_C"
cvs -z 9 -d $PHPROOT -Q export -d $DIR -r $CVSTAG $PHPMOD || exit 4
echo ""

# Export the other modules inside the PHP directory
cd $DIR || exit 5

# Export Zend
$ECHO_N "makedist: exporting tag '$CVSTAG' from '$ZENDMOD'...$ECHO_C"
cvs -z 9 -d $ZENDROOT -Q export -r $CVSTAG $ZENDMOD || exit 4
echo ""

# Export TSRM
$ECHO_N "makedist: exporting tag '$CVSTAG' from '$TSRMMOD'...$ECHO_C"
cvs -z 9 -d $ZENDROOT -Q export -r $CVSTAG $TSRMMOD || exit 4
echo ""

# remove CVS stuff...
find . \( \( -name CVS -type d \) -o -name .cvsignore \) -exec rm -rf {} \;

# The full ChangeLog is available separately from lxr.php.net
rm 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

# 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

cd $MY_OLDPWD
$ECHO_N "makedist: making gzipped tar archive...$ECHO_C"
tar cf $ARCHIVE $PKG-$VER || exit 8
gzip -9 $ARCHIVE || exit 9
echo ""

$ECHO_N "makedist: cleaning up...$ECHO_C"
rm -rf $DIRPATH || exit 10
echo ""

exit 0
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.