1#!/usr/bin/env bash 2 3# A script for setting up environment for travis-ci testing. 4# Sets up Lua and Luarocks. 5# LUA must be "lua5.1", "lua5.2" or "luajit". 6# luajit2.0 - master v2.0 7# luajit2.1 - master v2.1 8 9set -eufxo pipefail 10 11LUAJIT_VERSION="2.0.4" 12LUAJIT_BASE="LuaJIT-$LUAJIT_VERSION" 13 14source .ci/platform.sh 15 16LUA_HOME_DIR=$TRAVIS_BUILD_DIR/install/lua 17 18LR_HOME_DIR=$TRAVIS_BUILD_DIR/install/luarocks 19 20mkdir "$HOME/.lua" 21 22LUAJIT="no" 23 24if [ "$PLATFORM" == "macosx" ]; then 25 if [ "$LUA" == "luajit" ]; then 26 LUAJIT="yes"; 27 fi 28 if [ "$LUA" == "luajit2.0" ]; then 29 LUAJIT="yes"; 30 fi 31 if [ "$LUA" == "luajit2.1" ]; then 32 LUAJIT="yes"; 33 fi; 34elif [ "$(expr substr $LUA 1 6)" == "luajit" ]; then 35 LUAJIT="yes"; 36fi 37 38mkdir -p "$LUA_HOME_DIR" 39 40if [ "$LUAJIT" == "yes" ]; then 41 42 if [ "$LUA" == "luajit" ]; then 43 curl --silent --location https://github.com/LuaJIT/LuaJIT/archive/v$LUAJIT_VERSION.tar.gz | tar xz; 44 else 45 git clone -q https://github.com/LuaJIT/LuaJIT.git $LUAJIT_BASE; 46 fi 47 48 cd $LUAJIT_BASE 49 50 if [ "$LUA" == "luajit2.1" ]; then 51 git checkout v2.1; 52 # force the INSTALL_TNAME to be luajit 53 perl -i -pe 's/INSTALL_TNAME=.+/INSTALL_TNAME= luajit/' Makefile 54 fi 55 56 make && make install PREFIX="$LUA_HOME_DIR" 57 58 ln -s "$LUA_HOME_DIR/bin/luajit" "$HOME/.lua/luajit" 59 ln -s "$LUA_HOME_DIR/bin/luajit" "$HOME/.lua/lua" 60 61else 62 63 if [ "$LUA" == "lua5.1" ]; then 64 curl --silent https://www.lua.org/ftp/lua-5.1.5.tar.gz | tar xz 65 cd lua-5.1.5; 66 elif [ "$LUA" == "lua5.2" ]; then 67 curl --silent https://www.lua.org/ftp/lua-5.2.4.tar.gz | tar xz 68 cd lua-5.2.4; 69 elif [ "$LUA" == "lua5.3" ]; then 70 curl --silent https://www.lua.org/ftp/lua-5.3.2.tar.gz | tar xz 71 cd lua-5.3.2; 72 elif [ "$LUA" == "lua5.4" ]; then 73 curl --silent https://www.lua.org/ftp/lua-5.4.1.tar.gz | tar xz 74 cd lua-5.4.1; 75 fi 76 77 # Build Lua without backwards compatibility for testing 78 perl -i -pe 's/-DLUA_COMPAT_(ALL|5_2|5_3)//' src/Makefile 79 make "$PLATFORM" 80 make INSTALL_TOP="$LUA_HOME_DIR" install; 81 82 ln -s "$LUA_HOME_DIR/bin/lua" "$HOME/.lua/lua" 83 ln -s "$LUA_HOME_DIR/bin/luac" "$HOME/.lua/luac" 84 85fi 86 87cd "$TRAVIS_BUILD_DIR" 88 89lua -v 90 91LUAROCKS_BASE=luarocks-$LUAROCKS 92 93# retry 5 times, connection to luarocks.org seems to timeout occassionally 94curl --silent --location --retry 5 "https://luarocks.org/releases/$LUAROCKS_BASE.tar.gz" | tar xz 95 96cd "$LUAROCKS_BASE" 97 98configure_args=("--prefix=$LR_HOME_DIR" "--with-lua=$LUA_HOME_DIR") 99 100if [ "${LUA#luajit}" != "$LUA" ]; then 101 # LuaJIT 102 if [ "${LUAROCKS#2.}" != "${LUAROCKS}" ]; then 103 configure_args+=('--lua-suffix=jit') 104 if [ "$LUA" = luajit ]; then 105 luajit_ver=2.0 106 else 107 luajit_ver=${LUA#luajit} 108 fi 109 configure_args+=("--with-lua-include=$LUA_HOME_DIR/include/luajit-${luajit_ver}") 110 else 111 configure_args+=('--with-lua-interpreter=luajit') 112 fi 113fi 114 115./configure "${configure_args[@]}" 116 117make build && make install 118 119ln -s "$LR_HOME_DIR/bin/luarocks" "$HOME/.lua/luarocks" 120 121cd "$TRAVIS_BUILD_DIR" 122 123luarocks --version 124 125rm -rf "$LUAROCKS_BASE" 126 127if [ "$LUAJIT" == "yes" ]; then 128 rm -rf $LUAJIT_BASE; 129elif [ "$LUA" == "lua5.1" ]; then 130 rm -rf lua-5.1.5; 131elif [ "$LUA" == "lua5.2" ]; then 132 rm -rf lua-5.2.4; 133elif [ "$LUA" == "lua5.3" ]; then 134 rm -rf lua-5.3.2; 135elif [ "$LUA" == "lua5.4" ]; then 136 rm -rf lua-5.4.1; 137fi 138