-
Notifications
You must be signed in to change notification settings - Fork 4.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Install PHP5.2/5.3 on trusty #2049
Changes from 29 commits
e4003ff
c8d6e2d
d8260ad
b1b226f
1b13149
0c7a85a
66dee1d
1897cab
c8e13f7
8aefb15
342d101
46cfe03
f3941b5
3860847
c2305df
23ebced
065d4f0
cc7bcb7
b437869
6027806
bf5b34c
26af1ec
bf8a10e
37ac2fc
efcbd66
bb4cab3
0497eeb
773b772
484ca3a
dd54882
d87839d
bccc478
658f352
2cfb5a5
6d64fa5
5ebf52f
455e4b0
a516690
7b1346c
32c7533
75d7f9f
a4f8ce9
e7667c3
0abeba6
7ebc7d0
c2712d0
1c9948c
d41b45b
4447192
10ff765
9309a3a
b973a38
d021c5d
5913b80
6541cdb
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,130 @@ | ||
#!/bin/bash | ||
|
||
if [[ ${SWITCH_TO_PHP:0:3} == "5.2" ]] || [[ ${SWITCH_TO_PHP:0:3} == "5.3" ]]; then | ||
# install php runtime dependencies | ||
sudo apt-get install -y curl libxml2 libfreetype6 libpng12-0 libjpeg8 libgd3 libxpm4 \ | ||
libltdl7 openssl gettext libgettextpo0 libmhash2 libmcrypt4 mysql-client | ||
|
||
if [[ ${SWITCH_TO_PHP:0:3} == "5.2" ]]; then | ||
PHPBREW_BUILT_CHECK=$HOME/.phpbrew/php/php-5.2.17/bin/php | ||
else | ||
PHPBREW_BUILT_CHECK=$HOME/.phpbrew/php/php-5.3.29/bin/php | ||
fi | ||
|
||
# php and phpunit installs should be cached, only build if they're not there. | ||
if [ ! -f $PHPBREW_BUILT_CHECK ]; then | ||
|
||
# install build dependencies for building php (yes, for phpbrew, php is a dependency) | ||
sudo apt-get install -y php5-dev autoconf automake curl libcurl3-openssl-dev build-essential \ | ||
libxslt1-dev re2c libxml2-dev php5-cli bison libbz2-dev libreadline-dev libfreetype6-dev \ | ||
libpng12-dev libjpeg-dev libjpeg8-dev libgd-dev libltdl-dev libssl-dev libgettextpo-dev \ | ||
libicu-dev libmhash-dev libmcrypt-dev libmysqlclient-dev libmysqld-dev git | ||
|
||
# install phpbrew for this user | ||
mkdir $HOME/php-utils-bin | ||
cd $HOME/php-utils-bin | ||
curl -L -O https://github.com/phpbrew/phpbrew/raw/f6a422e1ba49293ee73bc4c317795c021bc57020/phpbrew | ||
chmod +x phpbrew | ||
|
||
# init with known --old to get 5.2 and 5.3 | ||
$HOME/php-utils-bin/phpbrew init | ||
$HOME/php-utils-bin/phpbrew known --old | ||
|
||
# build PHP and install PHPUnit | ||
if [[ ${SWITCH_TO_PHP:0:3} == "5.2" ]]; then | ||
|
||
# build PHP5.2 | ||
tail -F $HOME/.phpbrew/build/php-5.2.17/build.log & | ||
TAIL_PID=$! | ||
$HOME/php-utils-bin/phpbrew install --patch patches/node.patch --patch patches/openssl.patch 5.2 +default +mysql +pdo \ | ||
+gettext +phar +openssl -- --with-openssl-dir=/usr/include/openssl --enable-spl --with-mysql --with-mysqli=/usr/bin/mysql_config --with-pdo-mysql=/usr | ||
kill -TERM $TAIL_PID | ||
|
||
# install PHPUnit 3.6. The only install method available is from source, using git branches old | ||
# enough that they don't rely on any PHP5.3+ features. This clones each needed dependency | ||
# and then we add the paths to the include_path by setting up an extra .ini file | ||
PHP52_PATH=$HOME/.phpbrew/php/php-5.2.17 | ||
cd ${PHP52_PATH}/lib/php | ||
|
||
# dependencies | ||
git clone --depth=1 --branch=1.1 git://github.com/sebastianbergmann/dbunit.git | ||
git clone --depth=1 --branch=1.1 git://github.com/sebastianbergmann/php-code-coverage.git | ||
git clone --depth=1 --branch=1.3.2 git://github.com/sebastianbergmann/php-file-iterator.git | ||
git clone --depth=1 --branch=1.1.1 git://github.com/sebastianbergmann/php-invoker.git | ||
git clone --depth=1 --branch=1.1.2 git://github.com/sebastianbergmann/php-text-template.git | ||
git clone --depth=1 --branch=1.0.3 git://github.com/sebastianbergmann/php-timer.git | ||
git clone --depth=1 --branch=1.1.4 git://github.com/sebastianbergmann/php-token-stream.git | ||
git clone --depth=1 --branch=1.1 git://github.com/sebastianbergmann/phpunit-mock-objects.git | ||
git clone --depth=1 --branch=1.1 git://github.com/sebastianbergmann/phpunit-selenium.git | ||
git clone --depth=1 --branch=1.0.0 git://github.com/sebastianbergmann/phpunit-story.git | ||
|
||
# and the version of phpunit that we expect to run with php 5.2 | ||
git clone --depth=1 --branch=3.6 git://github.com/sebastianbergmann/phpunit.git | ||
|
||
# fix up the version number of phpunit | ||
sed -i 's/@package_version@/3.6-git/g' phpunit/PHPUnit/Runner/Version.php | ||
|
||
# now set up an ini file that adds all of the above to include_path for the PHP5.2 install | ||
mkdir -p $HOME/.phpbrew/php/php-5.2.17/var/db | ||
echo "include_path=.:${PHP52_PATH}/lib/php:${PHP52_PATH}/lib/php/dbunit:${PHP52_PATH}/lib/php/php-code-coverage:${PHP52_PATH}/lib/php/php-file-iterator:${PHP52_PATH}/lib/php/php-invoker:${PHP52_PATH}/lib/php/php-text-template:${PHP52_PATH}/lib/php/php-timer:${PHP52_PATH}/lib/php/php-token-stream:${PHP52_PATH}/lib/php/phpunit-mock-objects:${PHP52_PATH}/lib/php/phpunit-selenium:${PHP52_PATH}/lib/php/phpunit-story:${PHP52_PATH}/lib/php/phpunit" > ${PHP52_PATH}/var/db/path.ini | ||
|
||
# symlink from $HOME/php-utils-bin to phpunit.php with the right version number. 'phpunit' will be aliased to this. | ||
ln -s ${PHP52_PATH}/lib/php/phpunit/phpunit.php $HOME/php-utils-bin/phpunit-3.6 | ||
|
||
# one more PHPUnit dependency that we need to install using pear under PHP5.2 | ||
cd $HOME | ||
export PHPBREW_RC_ENABLE=1 | ||
source $HOME/.phpbrew/bashrc | ||
phpbrew use 5.2.17 | ||
pear channel-discover pear.symfony-project.com | ||
pear install pear.symfony-project.com/YAML-1.0.2 | ||
|
||
else | ||
# build PHP5.3 | ||
tail -F $HOME/.phpbrew/build/php-5.3.29/build.log & | ||
TAIL_PID=$! | ||
$HOME/php-utils-bin/phpbrew install --patch patches/node.patch --patch patches/openssl.patch 5.3 +default +mysql +pdo \ | ||
+gettext +phar +openssl -- --with-openssl-dir=/usr/include/openssl --enable-spl --with-mysql --with-mysqli=/usr/bin/mysql_config --with-pdo-mysql=/usr | ||
kill -TERM $TAIL_PID | ||
curl -L -o $HOME/php-utils-bin/phpunit-4.8 https://phar.phpunit.de/phpunit-4.8.9.phar | ||
chmod +x $HOME/php-utils-bin/phpunit-4.8 | ||
fi | ||
fi | ||
|
||
# clean up build directory | ||
rm -rf $HOME/.phpbrew/build/* | ||
|
||
# all needed php versions and phpunit versions are installed, either from the above | ||
# install script, or from travis cache, so switch to using them | ||
cd $HOME | ||
export PATH=$HOME/php-utils-bin:$PATH | ||
export PHPBREW_RC_ENABLE=1 | ||
source $HOME/.phpbrew/bashrc | ||
if [[ ${SWITCH_TO_PHP:0:3} == "5.2" ]]; then | ||
# only switch if we're not already switched, or else phpbrew crashes | ||
if [[ -z "$PHPBREW_PHP" ]]; then | ||
phpbrew use 5.2.17 | ||
fi | ||
alias phpunit=$HOME/php-utils-bin/phpunit-3.6 | ||
else | ||
if [[ -z "$PHPBREW_PHP" ]]; then | ||
phpbrew use 5.3.29 | ||
fi | ||
alias phpunit=$HOME/php-utils-bin/phpunit-4.8 | ||
fi | ||
elif [[ ${TRAVIS_PHP_VERSION:0:2} == "5." ]]; then | ||
# all other PHP 5.x versions | ||
mkdir -p $HOME/phpunit-bin | ||
wget -O $HOME/phpunit-bin/phpunit https://phar.phpunit.de/phpunit-4.8.phar | ||
chmod +x $HOME/phpunit-bin/phpunit | ||
export PATH=$HOME/phpunit-bin/:$PATH | ||
else | ||
composer global require "phpunit/phpunit=5.7.*" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This should be |
||
fi | ||
|
||
# install a script that calls the right phpunit version, depending on the php version running | ||
cp phpunit-shim.sh $HOME/php-utils-bin/phpunit | ||
chmod +x $HOME/php-utils-bin/phpunit | ||
|
||
# got to check our php-utils-bin first, as we're overriding travis' phpunit shim | ||
export PATH=$HOME/php-utils-bin:$PATH |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
--- ext/dom/node.c 2012-08-06 17:49:48.826716692 +0800 | ||
+++ ext/dom/node.c 2012-08-06 17:52:47.633484660 +0800 | ||
@@ -1895,9 +1895,17 @@ static void dom_canonicalization(INTERNA | ||
RETVAL_FALSE; | ||
} else { | ||
if (mode == 0) { | ||
+#ifdef LIBXML2_NEW_BUFFER | ||
+ ret = xmlOutputBufferGetSize(buf); | ||
+#else | ||
ret = buf->buffer->use; | ||
+#endif | ||
if (ret > 0) { | ||
+#ifdef LIBXML2_NEW_BUFFER | ||
+ RETVAL_STRINGL((char *) xmlOutputBufferGetContent(buf), ret, 1); | ||
+#else | ||
RETVAL_STRINGL((char *) buf->buffer->content, ret, 1); | ||
+#endif | ||
} else { | ||
RETVAL_EMPTY_STRING(); | ||
} | ||
--- ext/dom/documenttype.c 2012-08-06 18:02:16.019640870 +0800 | ||
+++ ext/dom/documenttype.c 2012-08-06 18:06:16.612228905 +0800 | ||
@@ -205,7 +205,13 @@ int dom_documenttype_internal_subset_rea | ||
if (buff != NULL) { | ||
xmlNodeDumpOutput (buff, NULL, (xmlNodePtr) intsubset, 0, 0, NULL); | ||
xmlOutputBufferFlush(buff); | ||
+ | ||
+#ifdef LIBXML2_NEW_BUFFER | ||
+ ZVAL_STRINGL(*retval, xmlOutputBufferGetContent(buff), | ||
+ xmlOutputBufferGetSize(buff), 1); | ||
+#else | ||
ZVAL_STRINGL(*retval, buff->buffer->content, buff->buffer->use, 1); | ||
+#endif | ||
(void)xmlOutputBufferClose(buff); | ||
return SUCCESS; | ||
} | ||
--- ext/simplexml/simplexml.c 2012-08-06 18:10:44.621017026 +0800 | ||
+++ ext/simplexml/simplexml.c 2012-08-06 18:12:48.016270419 +0800 | ||
@@ -1417,7 +1417,12 @@ SXE_METHOD(asXML) | ||
|
||
xmlNodeDumpOutput(outbuf, (xmlDocPtr) sxe->document->ptr, node, 0, 0, ((xmlDocPtr) sxe->document->ptr)->encoding); | ||
xmlOutputBufferFlush(outbuf); | ||
+#ifdef LIBXML2_NEW_BUFFER | ||
+ RETVAL_STRINGL((char *)xmlOutputBufferGetContent(outbuf), | ||
+ xmlOutputBufferGetSize(outbuf), 1); | ||
+#else | ||
RETVAL_STRINGL((char *)outbuf->buffer->content, outbuf->buffer->use, 1); | ||
+#endif | ||
xmlOutputBufferClose(outbuf); | ||
} | ||
} else { |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
--- ext/openssl/xp_ssl.c | ||
+++ ext/openssl/xp_ssl.c | ||
@@ -328,10 +328,12 @@ static inline int php_openssl_setup_cryp | ||
sslsock->is_client = 1; | ||
method = SSLv23_client_method(); | ||
break; | ||
+#ifndef OPENSSL_NO_SSL2 | ||
case STREAM_CRYPTO_METHOD_SSLv2_CLIENT: | ||
sslsock->is_client = 1; | ||
method = SSLv2_client_method(); | ||
break; | ||
+#endif | ||
case STREAM_CRYPTO_METHOD_SSLv3_CLIENT: | ||
sslsock->is_client = 1; | ||
method = SSLv3_client_method(); | ||
@@ -348,10 +350,12 @@ static inline int php_openssl_setup_cryp | ||
sslsock->is_client = 0; | ||
method = SSLv3_server_method(); | ||
break; | ||
+#ifndef OPENSSL_NO_SSL2 | ||
case STREAM_CRYPTO_METHOD_SSLv2_SERVER: | ||
sslsock->is_client = 0; | ||
method = SSLv2_server_method(); | ||
break; | ||
+#endif | ||
case STREAM_CRYPTO_METHOD_TLS_SERVER: | ||
sslsock->is_client = 0; | ||
method = TLSv1_server_method(); | ||
@@ -629,9 +633,11 @@ static inline int php_openssl_tcp_sockop | ||
case STREAM_CRYPTO_METHOD_SSLv23_CLIENT: | ||
sock->method = STREAM_CRYPTO_METHOD_SSLv23_SERVER; | ||
break; | ||
+#ifndef OPENSSL_NO_SSL2 | ||
case STREAM_CRYPTO_METHOD_SSLv2_CLIENT: | ||
sock->method = STREAM_CRYPTO_METHOD_SSLv2_SERVER; | ||
break; | ||
+#endif | ||
case STREAM_CRYPTO_METHOD_SSLv3_CLIENT: | ||
sock->method = STREAM_CRYPTO_METHOD_SSLv3_SERVER; | ||
break; | ||
@@ -911,9 +917,11 @@ php_stream *php_openssl_ssl_socket_facto | ||
if (strncmp(proto, "ssl", protolen) == 0) { | ||
sslsock->enable_on_connect = 1; | ||
sslsock->method = STREAM_CRYPTO_METHOD_SSLv23_CLIENT; | ||
+#ifndef OPENSSL_NO_SSL2 | ||
} else if (strncmp(proto, "sslv2", protolen) == 0) { | ||
sslsock->enable_on_connect = 1; | ||
sslsock->method = STREAM_CRYPTO_METHOD_SSLv2_CLIENT; | ||
+#endif | ||
} else if (strncmp(proto, "sslv3", protolen) == 0) { | ||
sslsock->enable_on_connect = 1; | ||
sslsock->method = STREAM_CRYPTO_METHOD_SSLv3_CLIENT; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
#!/bin/bash | ||
|
||
PHP_VERSION=`php -v` | ||
|
||
if [[ ${PHP_VERSION:0:7} == "PHP 5.2" ]]; then | ||
phpunit-3.6 "$@" | ||
elif [[ ${PHP_VERSION:0:7} == "PHP 5.3" ]]; then | ||
phpunit-4.8 "$@" | ||
else | ||
`which phpunit` "$@" | ||
fi | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. doesn't this need There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes it does. Will add :) |
||
|
||
exit $? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like this needs to be sourced rather than executed. Also, error handling? If this fails (and really the pre-existing script above as well), then it should fail the build.