php-src/makedist
Peter Kokot 7e445ef3b1 Set AC_CONFIG_AUX_DIR to build directory
The Autoconf macro AC_CONFIG_AUX_DIR can set the location of the
auxiliary build tools such as config.guess, config.sub, and bundled
libtool scripts and moves these bundled files from the root directory
to the build subdirectory.

Additionally some changes in this context or as a part of obsoletion:
- The LT_TARGETS variable in build/build2.mk file was once used as a part
  of the Automake step. It's not used anymore and has been refactored to
  separate makedist script directly.
- ltconfig is not used anymore since libtool 1.4+
  cf8d1563c2
- phpize file locations for the config.guess, config.sub, and ltmain.sh
  has been refactored accordingly.
2018-12-10 08:11:44 +01:00

156 lines
4.0 KiB
Bash
Executable File

#!/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-<version>.
# A .tar.bz2 file is also created.
#
# Written by Stig Bakken <ssb@guardian.no> 1997-05-28.
# Adapted to git by Stanislav Malyshev <stas@php.net>
if test "$#" != "1"; then
echo "Usage: makedist <version>" >&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
PHPROOT=git@git.php.net:php-src.git;
fi
LT_TARGETS='build/ltmain.sh build/config.guess build/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=$PHPROOT 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