php-embed
Version:
Bidirectional interoperability between PHP and Node.js in a single process
175 lines (164 loc) • 5.66 kB
YAML
# Much of this is borrowed from node-sqlite3 and node-icu-bidi
sudo: false
language: cpp
git:
depth: 10
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.5
packages:
- clang-3.5
- gcc-5-multilib
- g++-5-multilib
- linux-libc-dev:i386
- libxml2-dev:i386
- zlib1g-dev:i386
## don't re-build for tags so that [publish binary] is not re-run
## https://github.com/travis-ci/travis-ci/issues/1532
#branches:
# except:
# - /^[0-9]+[.][0-9]+[.][0-9]+/
matrix:
include:
# Linux
- os: linux
compiler: clang
env: NODE_VERSION="5.0.0" PUBLISHABLE=false
- os: linux
env: NODE_VERSION="5.0.0" BUILD_X86=true # node abi 47
# Test in release mode, not just debug mode.
- os: linux
compiler: clang
env: NODE_VERSION="5.0.0" PUBLISHABLE=false RELEASE=true
# - os: linux
# compiler: clang
# env: NODE_VERSION="4.2.1" PUBLISHABLE=false
- os: linux
env: NODE_VERSION="4.2.1" BUILD_X86=true # node abi 46
# - os: linux
# compiler: clang
# env: NODE_VERSION="iojs-v3.3.1" PUBLISHABLE=false
- os: linux
env: NODE_VERSION="iojs-v3.3.1" BUILD_X86=true # node abi 45
# - os: linux
# compiler: clang
# env: NODE_VERSION="iojs-v2.4.0" PUBLISHABLE=false
- os: linux
env: NODE_VERSION="iojs-v2.4.0" BUILD_X86=true # node abi 44
# disabled because libphp5-embed package is not on whitelist yet
# https://github.com/travis-ci/apt-package-whitelist#package-approval-process
# # test building against external libphp5
# - os: linux
# env: NODE_VERSION="4.2.1" EXTERNAL_LIBPHP=true PUBLISHABLE=false
# addons:
# apt:
# sources: [ 'libphp5-embed:i386', 'php5-dev:i386' ]
# packages: [ 'libphp5-embed', 'php5-dev']
# OS X
- os: osx
compiler: clang
env: NODE_VERSION="5.0.0" # node abi 47
# Test in release mode, not just debug mode.
- os: osx
compiler: clang
env: NODE_VERSION="5.0.0" PUBLISHABLE=false RELEASE=true
- os: osx
compiler: clang
env: NODE_VERSION="4.2.1" # node abi 46
- os: osx
compiler: clang
env: NODE_VERSION="iojs-v3.3.1" # node abi 45
- os: osx
compiler: clang
env: NODE_VERSION="iojs-v2.4.0" # node abi 44
before_install:
- export PUBLISHABLE=${PUBLISHABLE:-true}
- export RELEASE=${RELEASE:-false}
# ensure that published builds are not built in debug mode
- if test "$PUBLISHABLE" = "true" ; then if scripts/validate_tag.sh --check ; then RELEASE=true ; fi ; fi
- if test "$TRAVIS_OS_NAME $CC" = "linux gcc" ; then
export CXX="g++-5" ;
export CC="gcc-5" ;
fi
- if test "$TRAVIS_OS_NAME $CC" = "linux clang" ; then
export CXX="clang++-3.5" ;
export CC="clang-3.5" ;
fi
- if test "$TRAVIS_OS_NAME $CC" = "osx clang" ; then
export MACOSX_DEPLOYMENT_TARGET=10.7 ;
fi
# we need to install libicu on os x
- |
if test "$TRAVIS_OS_NAME" = "osx"; then
brew update | head ;
brew install icu4c ;
fi
# check if tag exists and matches package.json
- scripts/validate_tag.sh
- echo $NODE_VERSION
- rm -rf ~/.nvm/ && git clone --depth 1 https://github.com/creationix/nvm.git ~/.nvm
- source ~/.nvm/nvm.sh
- nvm install $NODE_VERSION
- nvm use $NODE_VERSION
- if test "$NODE_VERSION" = "0.8.28" ; then npm install -g npm@1.4.28 ; fi
# Work around ECONNRESET issues on travis:
# https://github.com/npm/npm/issues/7558#issuecomment-97528256
# https://github.com/npm/npm/issues/7699#issuecomment-93091111
- npm install -g npm@latest
- npm config set spin=false
- npm config set loglevel=http
- node --version
- npm --version
install:
# put node-pre-gyp on path
- export PATH=./node_modules/.bin/:$PATH
before_script:
# get commit message
- export COMMIT_MESSAGE=$(git show -s --format=%B $TRAVIS_COMMIT | tr -d '\n')
script:
- node --version
- npm --version
- DEBUG=''
- if test "$RELEASE" = "false"; then DEBUG='--debug --libicu=external' ; fi
- if false ; then export V=1 ; fi # Useful when debugging build/link failures.
- if test -z "$EXTERNAL_LIBPHP" ; then npm install --build-from-source $DEBUG; else npm install --build-from-source --libphp5=external $DEBUG; fi
- node-pre-gyp package testpackage
# OSX malloc debugging
- |
if test "$TRAVIS_OS_NAME" = "osx"; then
echo DISABLED export MallocStackLogging=1
echo DISABLED export MallocStackLoggingNoCompact=1
export MallocScribble=1
export MallocPreScribble=1
export MallocGuardEdges=1
export MallocCheckHeapStart=1
export MallocCheckHeapEach=1
export DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib
fi
- |
if npm test ; then
echo "Test successful. Publishable=$PUBLISHABLE"
else
echo "Test failed, refusing to publish."
PUBLISHABLE=false
false
fi
- |
if test "$TRAVIS_OS_NAME" = "osx"; then
unset MallocStackLogging
unset MallocStackLoggingNoCompact
unset MallocScribble
unset MallocPreScribble
unset MallocGuardEdges
unset MallocCheckHeapStart
unset MallocCheckHeapEach
unset DYLD_INSERT_LIBRARIES
fi
- export PUBLISH=false
# Normal case: tagged builds trigger 32-bit and 64-bit x86 builds
- if scripts/validate_tag.sh --check ; then PUBLISH=true; fi
# Workaround to trigger a manual x86 build
- if test "$TRAVIS_BRANCH" == "x86" -a "${COMMIT_MESSAGE#*'[publish binary]'}" != "$COMMIT_MESSAGE"; then PUBLISH=true; fi
- if test "$PUBLISH,$PUBLISHABLE" = "true,true"; then npm install core-js@1.1.4 && npm install request@2.64.0 && npm run gh-publish && if test -n "$BUILD_X86"; then scripts/publish_x86.sh ; fi ; fi