-
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
Merged
Merged
Changes from all commits
Commits
Show all changes
55 commits
Select commit
Hold shift + click to select a range
e4003ff
Install PHP5.2/5.3 on trusty
notnownikki c8d6e2d
Cannot request PHP5.2, request PHP7.1 and switch instead
notnownikki d8260ad
Work out why it's building both php versions...
notnownikki b1b226f
and again
notnownikki 1b13149
tail build log to prevent travis aborting the job
notnownikki 0c7a85a
Actually run the tail in the background this time...
notnownikki 66dee1d
debugging again
notnownikki 1897cab
better pre-built check, prevent phpbrew crash
notnownikki c8e13f7
Have a php-utils-bin dir, restore working directory after php build
notnownikki 8aefb15
Confirm versions in the test output
notnownikki 342d101
Make sure phpbrew is on the path
notnownikki 46cfe03
Adding caching, so it's easier to work out why we're using the wrong …
notnownikki f3941b5
confirm versions in main script
notnownikki 3860847
debugging
notnownikki c2305df
more debugging
notnownikki 23ebced
even more debugging
notnownikki 065d4f0
PHPUnit shim
notnownikki cc7bcb7
Path fix
notnownikki b437869
deeeeeeeeebug
notnownikki 6027806
fix shim generation
notnownikki bf5b34c
Restore original working dir
notnownikki 26af1ec
Echo versions used in test
notnownikki bf8a10e
shim fix
notnownikki 37ac2fc
Dont use shared libs for openssl or mysql, patch openssl code to compile
notnownikki efcbd66
Fix patches
notnownikki bb4cab3
Move patches, finally get mysql compiling locally. Cry a lot.
notnownikki 0497eeb
Re-enable the rest of the test matrix, re-enable caching
notnownikki 773b772
Move php build/install into its own script, add patches
notnownikki 484ca3a
phpunit shim exit with exit code of phpunit, fix revision of phpbrew
notnownikki dd54882
source, not spawn
notnownikki d87839d
Source, not spawn!
notnownikki bccc478
Fix relative paths
notnownikki 658f352
Always make our utils dir
notnownikki 2cfb5a5
do not use our phpunit shim unless running an old php version
notnownikki 6d64fa5
Trying with old php version as well
notnownikki 5ebf52f
Enable all tests again
notnownikki 455e4b0
Merge branch 'master' into try/php-5-2-on-trusty
notnownikki a516690
Testing PHP5.3
notnownikki 7b1346c
Enable all jobs again, enable cache for .phpbrew
notnownikki 32c7533
Debug, cache is causing problems
notnownikki 75d7f9f
apt-gets are failing
notnownikki a4f8ce9
Always install phpbrew if using old PHP
notnownikki e7667c3
Always install phpunit when using old PHP
notnownikki 0abeba6
Fix path to phpunit3.6
notnownikki 7ebc7d0
Better error checking, hopefully better caching too
notnownikki c2712d0
Bundle the phpbrew bashrc, better caching
notnownikki 1c9948c
Always build both old PHPs, or we get cache races
notnownikki d41b45b
Reset php env after installing Symfony libs with pear under php5.2
notnownikki 4447192
Fix order of phpbrew manual reset
notnownikki 10ff765
Only make utils bin if using old PHP versions
notnownikki 9309a3a
Simpler phpunit installation
notnownikki b973a38
Fix PHP version check
notnownikki d021c5d
Check phpunit catches failures
notnownikki 5913b80
Revert phpunit fail test, add patches README
notnownikki 6541cdb
Corrected comments in installer script
notnownikki File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
#!/bin/bash | ||
|
||
# Uses phpbrew to install older php versions on modern(ish) distros. | ||
# Installs the correct version of phpunit for the requested php | ||
# version. ~/.phpbrew is expected to be cached so we only have | ||
# to build php the first time. | ||
|
||
# we have to save and restore the original working directory, because | ||
# phpbrew can mess up if we don't run it from the home directory | ||
ORIG_DIR=`pwd`; | ||
THIS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" | ||
PHP52_PATH=$HOME/.phpbrew/php/php-5.2.17 | ||
|
||
# install phpunit | ||
|
||
mkdir -p $HOME/phpunit-bin | ||
|
||
if [[ ${SWITCH_TO_PHP:0:3} == "5.2" ]]; then | ||
# use the phpunit in the PHP5.2 installation | ||
ln -s ${PHP52_PATH}/lib/php/phpunit/phpunit.php $HOME/phpunit-bin/phpunit | ||
elif [[ ${TRAVIS_PHP_VERSION:0:2} == "5." ]] || [[ ${SWITCH_TO_PHP:0:2} == "5." ]]; then | ||
wget -O $HOME/phpunit-bin/phpunit https://phar.phpunit.de/phpunit-4.8.phar | ||
chmod +x $HOME/phpunit-bin/phpunit | ||
else | ||
composer global require "phpunit/phpunit=6.*" | ||
fi | ||
|
||
export PATH=$HOME/phpunit-bin/:$PATH | ||
|
||
if [[ ${SWITCH_TO_PHP:0:3} == "5.2" ]] || [[ ${SWITCH_TO_PHP:0:3} == "5.3" ]]; then | ||
PHPBREW_BUILT_CHECK=$HOME/.phpbrew/bashrc | ||
|
||
# directory to store phpbrew and old phpunit in | ||
mkdir -p $HOME/php-utils-bin | ||
|
||
# install phpbrew | ||
curl -L -o $HOME/php-utils-bin/phpbrew https://github.com/phpbrew/phpbrew/raw/f6a422e1ba49293ee73bc4c317795c021bc57020/phpbrew | ||
chmod +x $HOME/php-utils-bin/phpbrew | ||
|
||
# needs to be on the path for switching php versions to work | ||
export PATH=$HOME/php-utils-bin:$PATH | ||
|
||
# php and phpunit3.6 installs should be cached, only build if they're not there. | ||
if [ ! -f $PHPBREW_BUILT_CHECK ]; then | ||
|
||
# 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 PHP5.2 | ||
tail -F $HOME/.phpbrew/build/php-5.2.17/build.log & | ||
TAIL_PID=$! | ||
$HOME/php-utils-bin/phpbrew install --patch ${THIS_DIR}/patches/node.patch --patch ${THIS_DIR}/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 | ||
|
||
# build PHP5.3 | ||
tail -F $HOME/.phpbrew/build/php-5.3.29/build.log & | ||
TAIL_PID=$! | ||
$HOME/php-utils-bin/phpbrew install --patch ${THIS_DIR}/patches/node.patch --patch ${THIS_DIR}/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 | ||
|
||
# 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 | ||
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 ${PHP52_PATH}/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 | ||
|
||
# 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 | ||
|
||
# manually go back to the system php, we can't use `phpbrew switch-off` | ||
# because we're running a version of php that phpbrew doesn't work with at this point | ||
unset PHPBREW_PHP | ||
unset PHPBREW_PATH | ||
__phpbrew_set_path | ||
__phpbrew_reinit | ||
eval `$BIN env` | ||
|
||
# clean up build directory | ||
rm -rf $HOME/.phpbrew/build/* | ||
fi | ||
|
||
# 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 PHPBREW_RC_ENABLE=1 | ||
source $HOME/.phpbrew/bashrc | ||
|
||
if [[ ${SWITCH_TO_PHP:0:3} == "5.2" ]]; then | ||
phpbrew use 5.2.17 | ||
else | ||
phpbrew use 5.3.29 | ||
fi | ||
fi | ||
|
||
cd $ORIG_DIR |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
This directory contains patches required to build | ||
older versions of PHP on trusty. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
Via https://github.com/WordPress/gutenberg/pull/2049/files#diff-7143235e98877ad64ec9f5c2fe1ad4feR16
Should
$HOME/php-utils-bin
also be added to the cache?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.
I don't feel too strongly about this, but because there are already phpunit shims injected by Travis, I'd rather only have this around when we actually need it, so that anyone who needs to debug this in the future has a slightly easier time figuring out what phpunit is actually getting run.
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.
Actually, I'm simplifying this so it works as before, with a phpunit-bin directory and a single
phpunit
executable file in there. Makes things much easier to follow, and we don't need our shim.