#!/bin/sh # # Distribution generator for git # # Usage: makedist version # Example: makedist 5.4.1 # Example: makedist 5.3.5RC1 # # To work, this script needs a consistent tagging of all releases. # Each release of a package should have a tag of the form # # php-X.Y.Z[sub] # # The distribution ends up in a .tar.gz file that contains the distribution # in a directory called php-. # A .tar.bz2 file is also created. # # Written by Stig Bakken 1997-05-28. # Adapted to git by Stanislav Malyshev if test "$#" != "1"; then echo "Usage: makedist " >&2 exit 1 fi VER=$1 ; shift old_IFS="$IFS" IFS=. eval set `bison --version| grep 'GNU Bison' | cut -d ' ' -f 4 | sed -e 's/\./ /g'` if test "${1}" -lt "3" -o "${1}" = "3" -a "${2}" -eq "0" -a "${3}" -lt "2"; then echo "You will need bison >= 3.0.2 if you want to regenerate the Zend parser (found ${1}.${2}.${3})." exit 2 fi eval set `re2c --version| grep 're2c' | cut -d ' ' -f 2 | sed -e 's/\./ /g'` if test "${2}" -lt "13" -o "${2}" -eq "13" -a "${3}" -lt "5"; then echo "You will need re2c >= 0.13.5 if you want to regenerate the Zend scanner (found ${1}.${2}.${3})." exit 2 fi IFS="$old_IFS" if test "x$PHPROOT" != "x"; then remote_option=--remote=$PHPROOT else remote_option= fi 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/php-$VER.tar # temporary directory used to check out files from SVN DIR=php-$VER DIRPATH=$MY_OLDPWD/$DIR if test -d "$DIRPATH"; then echo "The directory $DIR" >&2 echo "already exists, rename or remove it and run makedist again." >&2 exit 1 fi # Export PHP $ECHO_N "makedist: exporting tag 'php-$VER' from '$PHPROOT'...$ECHO_C" git archive --format=tar $remote_option refs/tags/php-$VER --prefix=php-$VER/ | (cd $MY_OLDPWD; tar xvf -) || exit 4 echo "" cd $DIR || exit 5 # 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, re2c 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 # removing junk files find . -name \*.orig -print0 | xargs -0 rm rm -fr autom4te.cache/ # touching everything to be packaged find $MY_OLDPWD/php-$VER -exec touch -c {} \; # tweak zendparse to be exported through ZEND_API # NOTE this has to be revisited once bison supports foreign skeletons # and that bison version is used. Read /usr/share/bison/README for more sed -i 's,^int zendparse\(.*\),ZEND_API int zendparse\1,g' $MY_OLDPWD/php-$VER/Zend/zend_language_parser.c sed -i 's,^int zendparse\(.*\),ZEND_API int zendparse\1,g' $MY_OLDPWD/php-$VER/Zend/zend_language_parser.h sed -i 's,^#ifndef YYTOKENTYPE,#include "zend.h"\n#ifndef YYTOKENTYPE,g' $MY_OLDPWD/php-$VER/Zend/zend_language_parser.h # download pear $ECHO_N "makedist: Attempting to download PEAR's phar archive" if test ! -x wget; then wget https://pear.php.net/install-pear-nozlib.phar -nd -P pear/ if [ "x$?" != "x0" ] then $ECHO_N "Pear download failed"; exit 7 fi else $ECHO_N "Missing wget binary needed for pear download"; exit 7 fi cd $MY_OLDPWD $ECHO_N "makedist: making gzipped tar archive...$ECHO_C" rm -f $ARCHIVE.gz tar cf $ARCHIVE php-$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 php-$VER || exit 10 bzip2 -9 $ARCHIVE || exit 11 echo "" $ECHO_N "makedist: making xz2zipped tar archive...$ECHO_C" rm -f $ARCHIVE.xz tar cf $ARCHIVE php-$VER || exit 10 xz -9 $ARCHIVE || exit 12 echo "" $ECHO_N "makedist: cleaning up...$ECHO_C" rm -rf $DIRPATH || exit 13 echo "" exit 0