xref: /PHP-5.4/makedist (revision 84b1c568)
1#!/bin/sh
2#
3# Distribution generator for git
4#
5# Usage: makedist version
6# Example: makedist 5.4.1
7# Example: makedist 5.3.5RC1
8#
9# To work, this script needs a consistent tagging of all releases.
10# Each release of a package should have a tag of the form
11#
12#  php-X.Y.Z[sub]
13#
14# The distribution ends up in a .tar.gz file that contains the distribution
15# in a directory called php-<version>.
16# A .tar.bz2 file is also created.
17#
18# Written by Stig Bakken <ssb@guardian.no> 1997-05-28.
19# Adapted to git by Stanislav Malyshev <stas@php.net>
20
21
22if test "$#" != "1"; then
23    echo "Usage: makedist <version>" >&2
24    exit 1
25fi
26
27VER=$1 ; shift
28
29old_IFS="$IFS"
30IFS=.
31eval set `bison --version| grep 'GNU Bison' | cut -d ' ' -f 4 | sed -e 's/\./ /'`
32if test "${1}" = "1" -a "${2}" -lt "28"; then
33  echo "You will need bison 1.28 if you want to regenerate the Zend parser (found ${1}.${2}).)"
34  exit 2
35fi
36IFS="$old_IFS"
37
38PHPROOT=git@git.php.net:php-src.git
39LT_TARGETS='ltconfig ltmain.sh config.guess config.sub'
40
41if echo '\c' | grep -s c >/dev/null 2>&1
42then
43    ECHO_N="echo -n"
44    ECHO_C=""
45else
46    ECHO_N="echo"
47    ECHO_C='\c'
48fi
49
50MY_OLDPWD=`pwd`
51
52# the destination .tar.gz file
53ARCHIVE=$MY_OLDPWD/php-$VER.tar
54
55# temporary directory used to check out files from SVN
56DIR=php-$VER
57DIRPATH=$MY_OLDPWD/$DIR
58
59if test -d "$DIRPATH"; then
60    echo "The directory $DIR"
61    echo "already exists, rename or remove it and run makedist again."
62    exit 1
63fi
64
65# Export PHP
66$ECHO_N "makedist: exporting tag 'php-$VER' from '$PHPROOT'...$ECHO_C"
67git archive --format=tar --remote=$PHPROOT refs/tags/php-$VER --prefix=php-$VER/ | (cd $MY_OLDPWD; tar xvf -) || exit 4
68echo ""
69
70cd $DIR || exit 5
71
72# hide away our own versions of libtool-generated files
73for i in $LT_TARGETS; do
74  if test -f "$i"; then
75    mv $i $i.bak
76    cp $i.bak $i
77  fi
78done
79
80# generate some files so people don't need bison, flex and autoconf
81# to install
82set -x
83./buildconf --copy --force
84
85# remove buildmk.stamp. Otherwise, buildcheck.sh might not be run,
86# when a user runs buildconf in the distribution.
87rm -f buildmk.stamp
88
89./genfiles
90
91# now restore our versions of libtool-generated files
92for i in $LT_TARGETS; do
93  test -f "$i" && mv $i.bak $i
94done
95
96# removing junk files
97find . -name \*.orig -print0 | xargs -0 rm
98rm -fr autom4te.cache/
99
100# download pear
101$ECHO_N "makedist: Attempting to download PEAR's phar archive"
102if test ! -x wget; then
103	wget http://pear.php.net/install-pear-nozlib.phar -nd -P pear/
104else
105	$ECHO_N "Missing wget binary needed for pear download";
106	exit 7
107fi
108
109cd $MY_OLDPWD
110$ECHO_N "makedist: making gzipped tar archive...$ECHO_C"
111rm -f $ARCHIVE.gz
112tar cf $ARCHIVE php-$VER || exit 8
113gzip -9 $ARCHIVE || exit 9
114echo ""
115
116$ECHO_N "makedist: making bz2zipped tar archive...$ECHO_C"
117rm -f $ARCHIVE.bz2
118tar cf $ARCHIVE php-$VER || exit 10
119bzip2 -9 $ARCHIVE || exit 11
120echo ""
121
122$ECHO_N "makedist: cleaning up...$ECHO_C"
123rm -rf $DIRPATH || exit 12
124echo ""
125
126exit 0
127