.travis.yml 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. cache:
  2. timeout: 1000
  3. directories:
  4. - $HOME/.opam
  5. - $HOME/neko
  6. - $HOME/apt-cache
  7. - $HOME/hxcache
  8. - $HOME/lua_env
  9. - $HOME/.luarocks
  10. before_cache:
  11. - if [ $TRAVIS_OS_NAME = 'linux' ]; then
  12. sudo apt-get autoclean;
  13. sudo rm -f $HOME/apt-cache/lock || true;
  14. fi
  15. # somehow these files are recreated everytime
  16. - rm -f $HOME/lua_env/lib/liblua51.a
  17. - rm -f $HOME/lua_env/lib/liblua52.a
  18. - rm -f $HOME/lua_env/lib/liblua53.a
  19. - rm -f $HOME/lua_env/lib/libluajit-5.1.a
  20. #- if [ $TRAVIS_OS_NAME = 'osx' ]; then brew cleanup; fi
  21. env:
  22. global:
  23. # make variables
  24. - ADD_REVISION=1
  25. # nightly builds submit
  26. - secure: "UoGjYvQqt66GWmeLC4Pih1iue5AufVgW8XQOd2Bx839NN/2mQQ9bD1HuONJe+taWBJ+PHInkAjYROYYaiCQUA7B1SXs3oQD7Og6arVcR7kY7XOdAQ2t8ZkxJHTnuYGWW/2gNFBESv+3H17bkXG4rzaSn2LV5PJLOxSjw0ziBUMY="
  27. - secure: "ugpxt+zeYiAiMYKLK96f5TLSxbQAtmDWiumdwaLHl88fIUeefxJJPIF1Xm0AHeYEJE7sD8dLE1dMbRSzOpXFfTmJoQZv19Wjv+2N5B+DaabKjGj1nZG7q3blGa3nUYzWVfFNFiIpM9c5fvW8yiUFzacZE5itEY8+lZQeGsNh+WQ="
  28. # SauceLabs
  29. # - secure: SjyKefmjUEXi0IKHGGpcbLAajU0mLHONg8aA8LoY7Q9nAkSN6Aql+fzS38Boq7w1jWn+2FOpr+4jy0l6wVd/bftsF+huFfYpFJmdh8BlKmE0K71zZAral0H1c7YxkuQpPiJCIFGXqtkvev7SWTy0z31u7kuuQeEyW27boXe5cDA=
  30. # - secure: sUvWUjCyPuWht4seNa4f2VG9DkvXkhZyLZfjJO9TUAHB2JndS16E2j/qrvKEjycyH6w8tU/B9vnjDRvvGrYXxEXcBEwsJVfkorFnRl9uwGCGIYrzjMhssEl3fMYZK7P304f+gAp5ULrDBX2gIaKeSa8lUNRtz2PsZOieE4kMdhk=
  31. # Bintray
  32. # - secure: "ETbwZaeRq8wIVZVyUk1IsNctYVuQa/U2biRkF9pQkz3MEXpaneynclVzNjm8rnm8JqfKcjUDUvQJBP1KYrJYq3tAJFhl31YUnS0FsF3sgLIcnHkhbRA24xJdIlCwHP6QUPoiyPbkec43NRwrF0071KOMD51vgUToXRtAe3o/15g="
  33. # - secure: "Fcrrge2f4jFYDOopig2rwkQvgJw6Ra8UK6OwTVk08wecytzVaOJK1TcB22PSvZ+h0ZLJs34T+pXHFjlNuSWm4+CwGSvnltRD1/svjS8zOqK7RzuUdzHz87yruz9PFqV63HTas6qtmgLqp8n/Q6AhtDLF39BTZPyDzEbi9qkwRuI="
  34. # - secure: "VBJDQNJ9uvdt0aszo7oU3txuRvjkuLmuHZGOkrd4wE/5B4sX5jzx/+dnrKcNTXJCmQ/rVLuMu9GyxqVjNHlzce678voxdQNOtNkNgpkr1qN9/A9rRnCp77hH27ErdthpWxbmcnE62hAJ83TIKSvn//5lAkx4sMCKS1NXEWQ5qec="
  35. # PPA configs
  36. - PPA="ppa:haxe/snapshots"
  37. - DEBFULLNAME="Haxe CI Bot"
  38. - DEBEMAIL="[email protected]"
  39. sudo: required
  40. dist: trusty
  41. addons: &addons
  42. ssh_known_hosts:
  43. - haxe.org
  44. - api.haxe.org
  45. install_linux: &install_linux
  46. - if [ ! -d "$HOME/neko" ]; then
  47. export CACHE_AVAILABLE=0;
  48. elif [ ! -d "$HOME/neko/.git" ]; then
  49. export CACHE_AVAILABLE=0;
  50. else
  51. export CACHE_AVAILABLE=1;
  52. fi
  53. # Install dependencies
  54. - export APT_CACHE_DIR=~/apt-cache && mkdir -pv $APT_CACHE_DIR
  55. - sudo apt-get install --reinstall ca-certificates # workaround for "Cannot add PPA: 'ppa:haxe/ocaml'. Please check that the PPA name or format is correct."
  56. - sudo add-apt-repository ppa:haxe/ocaml -y
  57. - sudo apt-get update -y
  58. - sudo apt-get -o dir::cache::archives="$APT_CACHE_DIR" install -y
  59. ocaml
  60. ocaml-native-compilers
  61. ocaml-findlib
  62. camlp4
  63. libpcre3-dev
  64. zlib1g-dev
  65. libgtk2.0-dev
  66. ninja-build
  67. awscli
  68. $JOB_DEPENDENCIES
  69. - wget https://raw.github.com/ocaml/opam/master/shell/opam_installer.sh -O - | sh -s /usr/local/bin system
  70. - export OPAMYES=1
  71. - opam install sedlex xml-light extlib rope ptmap
  72. # check if we need to install neko
  73. - export REF_CHANGED=1;
  74. - if [ ! -d "$HOME/neko" ]; then
  75. mkdir $HOME/neko;
  76. pushd $HOME/neko;
  77. git clone https://github.com/HaxeFoundation/neko.git .;
  78. git submodule update --init --recursive;
  79. else
  80. pushd $HOME/neko;
  81. if [ ! -d "$HOME/neko/.git" ]; then
  82. git clone https://github.com/HaxeFoundation/neko.git .;
  83. git submodule update --init --recursive;
  84. else
  85. git fetch --all;
  86. export REF_CUR=`git rev-list master | head -n 1`;
  87. export REF_REMOTE=`git rev-list origin/master | head -n 1`;
  88. export REF_CHANGED=`(test $REF_CUR != $REF_REMOTE && echo 1) || echo 0`;
  89. if [ $REF_CHANGED = 1 ]; then
  90. git reset --hard origin/master;
  91. git submodule update --init --recursive;
  92. fi;
  93. fi;
  94. fi;
  95. - env
  96. - test $REF_CHANGED = 0 || cmake . -DSTATIC_DEPS=all -G Ninja || (git clean -dfx && export CACHE_AVAILABLE=0 && cmake . -DSTATIC_DEPS=all -G Ninja)
  97. # download static dependencies before actual build, with 3 chances to deal with network issues
  98. - test $REF_CHANGED = 0 || ninja download_static_deps || ninja download_static_deps || ninja download_static_deps
  99. - test $REF_CHANGED = 0 || (ninja -j 4)
  100. - sudo cmake -P cmake_install.cmake
  101. - popd
  102. # Setup JDK
  103. - jdk_switcher use oraclejdk7
  104. - java -version
  105. # Build haxe
  106. - make package_src -s
  107. - opam config exec -- make -s STATICLINK=1 libs
  108. - opam config exec -- make -s -j STATICLINK=1 haxe
  109. - opam config exec -- make -s haxelib
  110. - make package_bin -s
  111. - ls -l out
  112. - ldd -v ./haxe
  113. - ldd -v ./haxelib
  114. - export PATH="$PATH:$TRAVIS_BUILD_DIR"
  115. - export HAXE_STD_PATH="$TRAVIS_BUILD_DIR/std"
  116. install_osx: &install_osx
  117. - if [ ! -d "$HOME/neko" ]; then
  118. export CACHE_AVAILABLE=0;
  119. elif [ ! -d "$HOME/neko/.git" ]; then
  120. export CACHE_AVAILABLE=0;
  121. else
  122. export CACHE_AVAILABLE=1;
  123. fi
  124. # Install dependencies
  125. - travis_retry brew update --merge
  126. - brew uninstall --force brew-cask # https://github.com/caskroom/homebrew-cask/pull/15381
  127. - travis_retry brew tap Homebrew/bundle
  128. - travis_retry brew bundle --file=tests/Brewfile
  129. - export OPAMYES=1
  130. - opam init
  131. - eval `opam config env`
  132. - opam install camlp4 sedlex ocamlfind xml-light extlib rope ptmap
  133. # check if we need to install neko
  134. - export REF_CHANGED=1;
  135. - if [ ! -d "$HOME/neko" ]; then
  136. mkdir $HOME/neko;
  137. pushd $HOME/neko;
  138. git clone https://github.com/HaxeFoundation/neko.git .;
  139. git submodule update --init --recursive;
  140. else
  141. pushd $HOME/neko;
  142. if [ ! -d "$HOME/neko/.git" ]; then
  143. git clone https://github.com/HaxeFoundation/neko.git .;
  144. git submodule update --init --recursive;
  145. else
  146. git fetch --all;
  147. export REF_CUR=`git rev-list master | head -n 1`;
  148. export REF_REMOTE=`git rev-list origin/master | head -n 1`;
  149. export REF_CHANGED=`(test $REF_CUR != $REF_REMOTE && echo 1) || echo 0`;
  150. if [ $REF_CHANGED = 1 ]; then
  151. git reset --hard origin/master;
  152. git submodule update --init --recursive;
  153. fi;
  154. fi;
  155. fi
  156. - env
  157. - test $REF_CHANGED = 0 || cmake . -DSTATIC_DEPS=all -G Ninja || (git clean -dfx && export CACHE_AVAILABLE=0 && cmake . -DSTATIC_DEPS=all -G Ninja)
  158. # download static dependencies before actual build, with 3 chances to deal with network issues
  159. - test $REF_CHANGED = 0 || ninja download_static_deps || ninja download_static_deps || ninja download_static_deps
  160. - test $REF_CHANGED = 0 || (ninja -j 4)
  161. - sudo cmake -P cmake_install.cmake
  162. - popd
  163. # Build haxe
  164. - make -s STATICLINK=1 "LIB_PARAMS=/usr/local/opt/zlib/lib/libz.a /usr/local/lib/libpcre.a" libs
  165. - make -s -j STATICLINK=1 "LIB_PARAMS=/usr/local/opt/zlib/lib/libz.a /usr/local/lib/libpcre.a" haxe
  166. - make -s haxelib
  167. - make package_bin -s
  168. - ls -l out
  169. - otool -L ./haxe
  170. - otool -L ./haxelib
  171. - export PATH="$PATH:$TRAVIS_BUILD_DIR"
  172. - export HAXE_STD_PATH="$TRAVIS_BUILD_DIR/std"
  173. matrix:
  174. include:
  175. #########
  176. # linux #
  177. #########
  178. - os: linux
  179. env:
  180. - TEST=macro,neko,js,php,php7,flash9,as3,java,cs,python,hl,lua
  181. - DEPLOY_API_DOCS=1
  182. - DEPLOY_NIGHTLIES=1
  183. # - SAUCE=1
  184. # haxeci_decrypt (Deploy source package to ppa:haxe/snapshots.)
  185. - secure: "Mw3p6bDZuqVQ6u7GrwLQfje5hhIOA4+mdqqLXYHP79UKdhgqb91Dn6IbG9vQ1VXVe64W4YZbQAMBMMRX5kEPDl6JvTVGSBhg00Mi69oO5qrCMcBI6f9FntG72YaVvLf+PA7co+vKrnJzaP2M9pe4SH9Ztbhy0YNxULp7NQ8FLsM="
  186. # deploy_key_decrypt (Deploy doc to api.haxe.org.)
  187. - secure: "A75uYqU0Xz6plIgSewEs0QQWe472dCMb9kf3j7Hx0DS7dApXgx8++189sw9Sv0wam5KPtbcIM292MucjGCb5zocVj9xCUVgajhEA0QpTuDMBjk/cg3ClWCGjfybaCl2E5LLdUs7Zy4b4oNWtVikOWLWJ4sC1kaarR9p6kv8yYZg="
  188. # addons:
  189. # <<: *addons
  190. # sauce_connect: true
  191. before_install:
  192. - "export DISPLAY=:99.0"
  193. - "sh -e /etc/init.d/xvfb start"
  194. - "export AUDIODEV=null"
  195. install: *install_linux
  196. - os: linux
  197. env:
  198. - TEST=cpp
  199. - HXCPP_COMPILE_THREADS=4
  200. - HXCPP_COMPILE_CACHE=~/hxcache
  201. before_install:
  202. - export JOB_DEPENDENCIES="gcc-multilib g++-multilib"
  203. install: *install_linux
  204. #######
  205. # osx #
  206. #######
  207. - os: osx
  208. osx_image: xcode6.4 # to compile binaries that support older versions of Mac
  209. env:
  210. - TEST=macro,neko,js,php,python,hl,lua
  211. - DEPLOY_NIGHTLIES=1
  212. install: *install_osx
  213. - os: osx
  214. osx_image: xcode8.3 # to compile C++ faster
  215. env:
  216. - TEST=cpp
  217. - HXCPP_COMPILE_CACHE=~/hxcache
  218. - HXCPP_COMPILE_THREADS=4
  219. install: *install_osx
  220. script:
  221. - eval `ssh-agent -s` # for deployment to haxe.org
  222. - export CAN_BUILD=`(test $CACHE_AVAILABLE = 1 || test $TRAVIS_OS_NAME = 'linux') && echo 1`
  223. - if [ ! $CAN_BUILD ]; then
  224. echo "No cache available, but initial cache created, please try restarting this job";
  225. fi
  226. - test $CAN_BUILD && pushd tests
  227. - test $CAN_BUILD && mkdir ~/haxelib && haxelib setup ~/haxelib
  228. - test $CAN_BUILD && haxe -version
  229. - test $CAN_BUILD && haxe RunCi.hxml
  230. - test $CAN_BUILD && neko RunCi.n
  231. - test $CAN_BUILD && popd
  232. branches:
  233. except:
  234. # A hack to prevent building for tags, assuming they all start with a number.
  235. # https://github.com/travis-ci/travis-ci/issues/1532
  236. - /^[0-9]/
  237. notifications:
  238. webhooks:
  239. urls:
  240. - https://webhooks.gitter.im/e/95a5fa471c27beee8e7c
  241. on_success: change # options: [always|never|change] default: always
  242. on_failure: always # options: [always|never|change] default: always
  243. on_start: false # default: false