setup_lua.sh 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. #! /bin/bash
  2. # A script for setting up environment for travis-ci testing.
  3. # Sets up Lua and Luarocks.
  4. # LUA must be "lua5.1", "lua5.2" or "luajit".
  5. # luajit2.0 - master v2.0
  6. # luajit2.1 - master v2.1
  7. set -eufo pipefail
  8. LUAJIT_VERSION="2.0.4"
  9. LUAJIT_BASE="LuaJIT-$LUAJIT_VERSION"
  10. source .travis/platform.sh
  11. LUA_HOME_DIR=$TRAVIS_BUILD_DIR/install/lua
  12. LR_HOME_DIR=$TRAVIS_BUILD_DIR/install/luarocks
  13. mkdir $HOME/.lua
  14. LUAJIT="no"
  15. if [ "$PLATFORM" == "macosx" ]; then
  16. if [ "$LUA" == "luajit" ]; then
  17. LUAJIT="yes";
  18. fi
  19. if [ "$LUA" == "luajit2.0" ]; then
  20. LUAJIT="yes";
  21. fi
  22. if [ "$LUA" == "luajit2.1" ]; then
  23. LUAJIT="yes";
  24. fi;
  25. elif [ "$(expr substr $LUA 1 6)" == "luajit" ]; then
  26. LUAJIT="yes";
  27. fi
  28. mkdir -p "$LUA_HOME_DIR"
  29. if [ "$LUAJIT" == "yes" ]; then
  30. if [ "$LUA" == "luajit" ]; then
  31. curl --location https://github.com/LuaJIT/LuaJIT/archive/v$LUAJIT_VERSION.tar.gz | tar xz;
  32. else
  33. git clone https://github.com/LuaJIT/LuaJIT.git $LUAJIT_BASE;
  34. fi
  35. cd $LUAJIT_BASE
  36. if [ "$LUA" == "luajit2.1" ]; then
  37. git checkout v2.1;
  38. # force the INSTALL_TNAME to be luajit
  39. perl -i -pe 's/INSTALL_TNAME=.+/INSTALL_TNAME= luajit/' Makefile
  40. fi
  41. make && make install PREFIX="$LUA_HOME_DIR"
  42. ln -s $LUA_HOME_DIR/bin/luajit $HOME/.lua/luajit
  43. ln -s $LUA_HOME_DIR/bin/luajit $HOME/.lua/lua;
  44. else
  45. if [ "$LUA" == "lua5.1" ]; then
  46. curl http://www.lua.org/ftp/lua-5.1.5.tar.gz | tar xz
  47. cd lua-5.1.5;
  48. elif [ "$LUA" == "lua5.2" ]; then
  49. curl http://www.lua.org/ftp/lua-5.2.4.tar.gz | tar xz
  50. cd lua-5.2.4;
  51. elif [ "$LUA" == "lua5.3" ]; then
  52. curl http://www.lua.org/ftp/lua-5.3.2.tar.gz | tar xz
  53. cd lua-5.3.2;
  54. fi
  55. # Build Lua without backwards compatibility for testing
  56. perl -i -pe 's/-DLUA_COMPAT_(ALL|5_2)//' src/Makefile
  57. make $PLATFORM
  58. make INSTALL_TOP="$LUA_HOME_DIR" install;
  59. ln -s $LUA_HOME_DIR/bin/lua $HOME/.lua/lua
  60. ln -s $LUA_HOME_DIR/bin/luac $HOME/.lua/luac;
  61. fi
  62. cd $TRAVIS_BUILD_DIR
  63. lua -v
  64. LUAROCKS_BASE=luarocks-$LUAROCKS
  65. curl --location http://luarocks.org/releases/$LUAROCKS_BASE.tar.gz | tar xz
  66. cd $LUAROCKS_BASE
  67. if [ "$LUA" == "luajit" ]; then
  68. ./configure --lua-suffix=jit --with-lua-include="$LUA_HOME_DIR/include/luajit-2.0" --prefix="$LR_HOME_DIR";
  69. elif [ "$LUA" == "luajit2.0" ]; then
  70. ./configure --lua-suffix=jit --with-lua-include="$LUA_HOME_DIR/include/luajit-2.0" --prefix="$LR_HOME_DIR";
  71. elif [ "$LUA" == "luajit2.1" ]; then
  72. ./configure --lua-suffix=jit --with-lua-include="$LUA_HOME_DIR/include/luajit-2.1" --prefix="$LR_HOME_DIR";
  73. else
  74. ./configure --with-lua="$LUA_HOME_DIR" --prefix="$LR_HOME_DIR"
  75. fi
  76. make build && make install
  77. ln -s $LR_HOME_DIR/bin/luarocks $HOME/.lua/luarocks
  78. cd $TRAVIS_BUILD_DIR
  79. luarocks --version
  80. rm -rf $LUAROCKS_BASE
  81. if [ "$LUAJIT" == "yes" ]; then
  82. rm -rf $LUAJIT_BASE;
  83. elif [ "$LUA" == "lua5.1" ]; then
  84. rm -rf lua-5.1.5;
  85. elif [ "$LUA" == "lua5.2" ]; then
  86. rm -rf lua-5.2.4;
  87. elif [ "$LUA" == "lua5.3" ]; then
  88. rm -rf lua-5.3.2;
  89. fi