diff options
| -rw-r--r-- | install.bat | 69 |
1 files changed, 60 insertions, 9 deletions
diff --git a/install.bat b/install.bat index f6601aa8..c085de40 100644 --- a/install.bat +++ b/install.bat | |||
| @@ -41,6 +41,32 @@ local function die(message) | |||
| 41 | os.exit(1) | 41 | os.exit(1) |
| 42 | end | 42 | end |
| 43 | 43 | ||
| 44 | function split_string(str, delim, maxNb) | ||
| 45 | -- Eliminate bad cases... | ||
| 46 | if string.find(str, delim) == nil then | ||
| 47 | return { str } | ||
| 48 | end | ||
| 49 | if maxNb == nil or maxNb < 1 then | ||
| 50 | maxNb = 0 -- No limit | ||
| 51 | end | ||
| 52 | local result = {} | ||
| 53 | local pat = "(.-)" .. delim .. "()" | ||
| 54 | local nb = 0 | ||
| 55 | local lastPos | ||
| 56 | for part, pos in string.gmatch(str, pat) do | ||
| 57 | nb = nb + 1 | ||
| 58 | result[nb] = part | ||
| 59 | lastPos = pos | ||
| 60 | if nb == maxNb then break end | ||
| 61 | end | ||
| 62 | -- Handle the last field | ||
| 63 | if nb ~= maxNb then | ||
| 64 | result[nb + 1] = string.sub(str, lastPos) | ||
| 65 | end | ||
| 66 | return result | ||
| 67 | end | ||
| 68 | |||
| 69 | |||
| 44 | local function exec(cmd) | 70 | local function exec(cmd) |
| 45 | --print(cmd) | 71 | --print(cmd) |
| 46 | local status = os.execute(cmd) | 72 | local status = os.execute(cmd) |
| @@ -180,6 +206,7 @@ end | |||
| 180 | -- *********************************************************** | 206 | -- *********************************************************** |
| 181 | local function look_for_interpreter (directory) | 207 | local function look_for_interpreter (directory) |
| 182 | if vars.LUA_BINDIR then | 208 | if vars.LUA_BINDIR then |
| 209 | -- if LUA_BINDIR is specified, it must be there, otherwise we fail | ||
| 183 | if exists( S"$LUA_BINDIR\\lua$LUA_VERSION.exe" ) then | 210 | if exists( S"$LUA_BINDIR\\lua$LUA_VERSION.exe" ) then |
| 184 | vars.LUA_INTERPRETER = S"lua$LUA_VERSION.exe" | 211 | vars.LUA_INTERPRETER = S"lua$LUA_VERSION.exe" |
| 185 | print(S" Found $LUA_BINDIR\\$LUA_INTERPRETER") | 212 | print(S" Found $LUA_BINDIR\\$LUA_INTERPRETER") |
| @@ -309,9 +336,31 @@ end | |||
| 309 | 336 | ||
| 310 | local function look_for_lua_install () | 337 | local function look_for_lua_install () |
| 311 | print("Looking for Lua interpreter") | 338 | print("Looking for Lua interpreter") |
| 312 | local directories = { [[c:\lua5.1.2]], [[c:\lua]], [[c:\kepler\1.1]] } | 339 | local directories |
| 313 | if vars.LUA_PREFIX then | 340 | if vars.LUA_PREFIX then |
| 314 | table.insert(directories, 1, vars.LUA_PREFIX) | 341 | directories = { vars.LUA_PREFIX } |
| 342 | else | ||
| 343 | -- no prefix given, so use path | ||
| 344 | directories = (os.getenv("PATH",";") or "") | ||
| 345 | local i = 1 | ||
| 346 | while i ~= 0 do directories, i = directories:gsub(";;",";") end --remove all doubles | ||
| 347 | directories = split_string(directories,";") | ||
| 348 | -- if a path element ends with "\bin\" then remove it, as the searcher will check there anyway | ||
| 349 | for i, val in ipairs(directories) do | ||
| 350 | -- remove trailing backslash | ||
| 351 | while val:sub(-1,-1) == "\\" and val:sub(-2,-1) ~= ":\\" do | ||
| 352 | val = val:sub(1,-2) | ||
| 353 | end | ||
| 354 | -- remove trailing 'bin' | ||
| 355 | if val:upper():sub(-4,-1) == "\\BIN" or val:upper():sub(-4,-1) == ":BIN" then | ||
| 356 | val = val:sub(1,-5) | ||
| 357 | end | ||
| 358 | directories[i] = val | ||
| 359 | end | ||
| 360 | -- finaly add some other default paths | ||
| 361 | table.insert(directories, [[c:\lua5.1.2]]) | ||
| 362 | table.insert(directories, [[c:\lua]]) | ||
| 363 | table.insert(directories, [[c:\kepler\1.1]]) | ||
| 315 | end | 364 | end |
| 316 | if vars.LUA_BINDIR and vars.LUA_LIBDIR and vars.LUA_INCDIR then | 365 | if vars.LUA_BINDIR and vars.LUA_LIBDIR and vars.LUA_INCDIR then |
| 317 | if look_for_interpreter(vars.LUA_BINDIR) and | 366 | if look_for_interpreter(vars.LUA_BINDIR) and |
| @@ -397,13 +446,10 @@ vars.LUADIR = S"$FULL_PREFIX\\lua" | |||
| 397 | vars.INCDIR = S"$FULL_PREFIX\\include" | 446 | vars.INCDIR = S"$FULL_PREFIX\\include" |
| 398 | vars.LUA_SHORTV = vars.LUA_VERSION:gsub("%.", "") | 447 | vars.LUA_SHORTV = vars.LUA_VERSION:gsub("%.", "") |
| 399 | 448 | ||
| 400 | if not look_for_lua_install() then | 449 | if INSTALL_LUA then |
| 401 | print("Could not find Lua. Will install its own copy.") | ||
| 402 | print("See /? for options for specifying the location of Lua.") | ||
| 403 | if vars.LUA_VERSION ~= "5.1" then | 450 | if vars.LUA_VERSION ~= "5.1" then |
| 404 | die("Cannot install own copy because no 5.2 version is bundled") | 451 | die("Cannot install own copy because no 5.2 version is bundled") |
| 405 | end | 452 | end |
| 406 | INSTALL_LUA = true | ||
| 407 | vars.LUA_INTERPRETER = "lua5.1" | 453 | vars.LUA_INTERPRETER = "lua5.1" |
| 408 | vars.LUA_BINDIR = vars.BINDIR | 454 | vars.LUA_BINDIR = vars.BINDIR |
| 409 | vars.LUA_LIBDIR = vars.LIBDIR | 455 | vars.LUA_LIBDIR = vars.LIBDIR |
| @@ -412,8 +458,13 @@ if not look_for_lua_install() then | |||
| 412 | vars.LUA_RUNTIME = "MSVCR80" | 458 | vars.LUA_RUNTIME = "MSVCR80" |
| 413 | vars.UNAME_M = "x86" | 459 | vars.UNAME_M = "x86" |
| 414 | else | 460 | else |
| 415 | vars.UNAME_M = get_architecture() | 461 | if not look_for_lua_install() then |
| 416 | print(S[[ | 462 | die("Could not find Lua. See /? for options for specifying the location of Lua, or installing a bundled copy of Lua 5.1.") |
| 463 | end | ||
| 464 | vars.UNAME_M = get_architecture() -- can only do when installation was found | ||
| 465 | end | ||
| 466 | |||
| 467 | print(S[[ | ||
| 417 | 468 | ||
| 418 | Will configure LuaRocks with the following paths: | 469 | Will configure LuaRocks with the following paths: |
| 419 | LuaRocks : $FULL_PREFIX | 470 | LuaRocks : $FULL_PREFIX |
| @@ -425,7 +476,7 @@ Binaries will be linked against: $LUA_LIBNAME with runtime $LUA_RUNTIME | |||
| 425 | System architecture detected as: $UNAME_M | 476 | System architecture detected as: $UNAME_M |
| 426 | 477 | ||
| 427 | ]]) | 478 | ]]) |
| 428 | end | 479 | |
| 429 | 480 | ||
| 430 | -- *********************************************************** | 481 | -- *********************************************************** |
| 431 | -- Install LuaRocks files | 482 | -- Install LuaRocks files |
