diff options
| author | Hisham Muhammad <hisham@gobolinux.org> | 2013-04-29 16:15:56 -0700 |
|---|---|---|
| committer | Hisham Muhammad <hisham@gobolinux.org> | 2013-04-29 16:15:56 -0700 |
| commit | 3440b0daf06ceccd30d72e3e978d453de26f1319 (patch) | |
| tree | 40fa174f837741bf57e1b08c317f4e20a1b7e43f | |
| parent | ba6821ea996d862f66757cb988b4941fb7cc4810 (diff) | |
| parent | 539e23b8f224b64f6d85389c1c613ab60c4f1d70 (diff) | |
| download | luarocks-3440b0daf06ceccd30d72e3e978d453de26f1319.tar.gz luarocks-3440b0daf06ceccd30d72e3e978d453de26f1319.tar.bz2 luarocks-3440b0daf06ceccd30d72e3e978d453de26f1319.zip | |
Merge pull request #126 from ignacio/install_lua
Whoa, it does not feel like 1994 anymore!!
| -rw-r--r-- | install.bat | 1068 |
1 files changed, 572 insertions, 496 deletions
diff --git a/install.bat b/install.bat index 2a0e677b..2150d2c3 100644 --- a/install.bat +++ b/install.bat | |||
| @@ -1,499 +1,575 @@ | |||
| 1 | @ECHO OFF | 1 | rem=rem --[[ |
| 2 | @setlocal& set luafile="%~f0" & if exist "%~f0.bat" set luafile="%~f0.bat" | ||
| 3 | @lua5.1\bin\lua5.1.exe %luafile% %*& exit /b ]] | ||
| 2 | 4 | ||
| 3 | REM Boy, it feels like 1994 all over again. | 5 | local vars = {} |
| 4 | 6 | ||
| 5 | SETLOCAL ENABLEDELAYEDEXPANSION | 7 | vars.PREFIX = [[C:\LuaRocks]] |
| 6 | 8 | vars.VERSION = "2.0" | |
| 7 | SET PREFIX=C:\LuaRocks | 9 | vars.SYSCONFDIR = [[C:\LuaRocks]] |
| 8 | SET VERSION=2.0 | 10 | vars.ROCKS_TREE = [[C:\LuaRocks]] |
| 9 | SET SYSCONFDIR=C:\LuaRocks | 11 | vars.SCRIPTS_DIR = nil |
| 10 | SET ROCKS_TREE=C:\LuaRocks | 12 | vars.LUA_INTERPRETER = nil |
| 11 | SET SCRIPTS_DIR= | 13 | vars.LUA_PREFIX = nil |
| 12 | SET FORCE=OFF | 14 | vars.LUA_BINDIR = nil |
| 13 | SET INSTALL_LUA=OFF | 15 | vars.LUA_INCDIR = nil |
| 14 | SET LUA_INTERPRETER= | 16 | vars.LUA_LIBDIR = nil |
| 15 | SET LUA_PREFIX= | 17 | vars.LUA_LIBNAME = nil |
| 16 | SET LUA_BINDIR= | 18 | vars.LUA_VERSION = "5.1" |
| 17 | SET LUA_INCDIR= | 19 | vars.LUA_SHORTV = nil |
| 18 | SET LUA_LIBDIR= | 20 | vars.LUA_LIB_NAMES = "lua5.1.lib lua51.dll liblua.dll.a" |
| 19 | SET LUA_LIBNAME= | 21 | |
| 20 | SET FORCE_CONFIG= | 22 | local P_SET = false |
| 21 | SET USE_MINGW= | 23 | local FORCE = false |
| 22 | SET MKDIR=.\bin\mkdir -p | 24 | local FORCE_CONFIG = false |
| 23 | SET LUA_VERSION=5.1 | 25 | local INSTALL_LUA = false |
| 24 | SET LUA_SHORTV= | 26 | local USE_MINGW = false |
| 25 | SET LUA_LIB_NAMES=lua5.1.lib lua51.dll liblua.dll.a | 27 | local REGISTRY = false |
| 26 | SET REGISTRY=OFF | 28 | |
| 27 | SET P_SET=FALSE | 29 | --- |
| 28 | 30 | -- Some helpers | |
| 29 | REM *********************************************************** | 31 | -- |
| 30 | REM Option parser | 32 | local function die(message) |
| 31 | REM *********************************************************** | 33 | if message then print(message) end |
| 32 | ECHO LuaRocks %VERSION%.x installer. | 34 | print() |
| 33 | ECHO. | 35 | print("Failed installing LuaRocks. Run with /? for help.") |
| 34 | 36 | os.exit(1) | |
| 35 | :PARSE_LOOP | 37 | end |
| 36 | IF [%1]==[] GOTO DONE_PARSING | 38 | |
| 37 | IF [%1]==[/?] ( | 39 | local function exec(cmd) |
| 38 | ECHO Installs LuaRocks. | 40 | --print(cmd) |
| 39 | ECHO. | 41 | local status = os.execute(cmd) |
| 40 | ECHO /P [dir] ^(REQUIRED^) Where to install. | 42 | return status == 0 |
| 41 | ECHO Note that version; %VERSION%, will be | 43 | end |
| 42 | ECHO appended to this path. | 44 | |
| 43 | ECHO /CONFIG [dir] Location where the config file should be installed. | 45 | local function exists(filename) |
| 44 | ECHO Default is same place of installation | 46 | local cmd = [[.\bin\test -e "]]..filename..[["]] |
| 45 | ECHO /TREE [dir] Root of the local tree of installed rocks. | 47 | return exec(cmd) |
| 46 | ECHO Default is same place of installation | 48 | end |
| 47 | ECHO /SCRIPTS [dir] Where to install scripts installed by rocks. | 49 | |
| 48 | ECHO Default is TREE/bin. | 50 | local function mkdir (dir) |
| 49 | ECHO. | 51 | return exec([[.\bin\mkdir -p "]]..dir..[[" >NUL]]) |
| 50 | ECHO /LV [version] Lua version to use; either 5.1 or 5.2. | 52 | end |
| 51 | ECHO Default is 5.1 | 53 | |
| 52 | ECHO /L Install LuaRocks' own copy of Lua even if detected, | 54 | -- interpolate string with values from 'vars' table |
| 53 | ECHO this will always be a 5.1 installation. | 55 | local function S (tmpl) |
| 54 | ECHO ^(/LUA, /INC, /LIB, /BIN cannot be used with /L^) | 56 | return (tmpl:gsub('%$([%a_][%w_]*)', vars)) |
| 55 | ECHO /LUA [dir] Location where Lua is installed - e.g. c:\lua\5.1\ | 57 | end |
| 56 | ECHO This is the base directory, the installer will look | 58 | |
| 57 | ECHO for subdirectories bin, lib, include. Alternatively | 59 | local function print_help() |
| 58 | ECHO these can be specified explicitly using the /INC, | 60 | print(S[[ |
| 59 | ECHO /LIB, and /BIN options. | 61 | Installs LuaRocks. |
| 60 | ECHO /INC [dir] Location of Lua includes - e.g. c:\lua\5.1\include | 62 | |
| 61 | ECHO If provided overrides sub directory found using /LUA. | 63 | /P [dir] (REQUIRED) Where to install. |
| 62 | ECHO /LIB [dir] Location of Lua libraries -e.g. c:\lua\5.1\lib | 64 | Note that version; $VERSION, will be |
| 63 | ECHO If provided overrides sub directory found using /LUA. | 65 | appended to this path. |
| 64 | ECHO /BIN [dir] Location of Lua executables - e.g. c:\lua\5.1\bin | 66 | /CONFIG [dir] Location where the config file should be installed. |
| 65 | ECHO If provided overrides sub directory found using /LUA. | 67 | Default is same place of installation |
| 66 | ECHO. | 68 | /TREE [dir] Root of the local tree of installed rocks. |
| 67 | ECHO /MW Use mingw as build system instead of MSVC | 69 | Default is same place of installation |
| 68 | ECHO. | 70 | /SCRIPTS [dir] Where to install scripts installed by rocks. |
| 69 | ECHO /FORCECONFIG Use a single config location. Do not use the | 71 | Default is TREE/bin. |
| 70 | ECHO LUAROCKS_CONFIG variable or the user's home directory. | 72 | |
| 71 | ECHO Useful to avoid conflicts when LuaRocks | 73 | /LV [version] Lua version to use; either 5.1 or 5.2. |
| 72 | ECHO is embedded within an application. | 74 | Default is 5.1 |
| 73 | ECHO. | 75 | /L Install LuaRocks' own copy of Lua even if detected, |
| 74 | ECHO /F Remove installation directory if it already exists. | 76 | this will always be a 5.1 installation. |
| 75 | ECHO. | 77 | (/LUA, /INC, /LIB, /BIN cannot be used with /L) |
| 76 | ECHO /R Load registry information to register '.rockspec' | 78 | /LUA [dir] Location where Lua is installed - e.g. c:\lua\5.1\ |
| 77 | ECHO extension with LuaRocks commands ^(right-click^). | 79 | This is the base directory, the installer will look |
| 78 | ECHO. | 80 | for subdirectories bin, lib, include. Alternatively |
| 79 | GOTO QUIT | 81 | these can be specified explicitly using the /INC, |
| 80 | ) | 82 | /LIB, and /BIN options. |
| 81 | IF /I [%1]==[/P] ( | 83 | /INC [dir] Location of Lua includes - e.g. c:\lua\5.1\include |
| 82 | SET PREFIX=%~2 | 84 | If provided overrides sub directory found using /LUA. |
| 83 | SET SYSCONFDIR=%~2 | 85 | /LIB [dir] Location of Lua libraries -e.g. c:\lua\5.1\lib |
| 84 | SET ROCKS_TREE=%~2 | 86 | If provided overrides sub directory found using /LUA. |
| 85 | SET P_SET=TRUE | 87 | /BIN [dir] Location of Lua executables - e.g. c:\lua\5.1\bin |
| 86 | SHIFT /1 | 88 | If provided overrides sub directory found using /LUA. |
| 87 | SHIFT /1 | 89 | |
| 88 | GOTO PARSE_LOOP | 90 | /MW Use mingw as build system instead of MSVC |
| 89 | ) | 91 | |
| 90 | IF /I [%1]==[/CONFIG] ( | 92 | /FORCECONFIG Use a single config location. Do not use the |
| 91 | SET SYSCONFDIR=%~2 | 93 | LUAROCKS_CONFIG variable or the user's home directory. |
| 92 | SHIFT /1 | 94 | Useful to avoid conflicts when LuaRocks |
| 93 | SHIFT /1 | 95 | is embedded within an application. |
| 94 | GOTO PARSE_LOOP | 96 | |
| 95 | ) | 97 | /F Remove installation directory if it already exists. |
| 96 | IF /I [%1]==[/TREE] ( | 98 | |
| 97 | SET ROCKS_TREE=%~2 | 99 | /R Load registry information to register '.rockspec' |
| 98 | SHIFT /1 | 100 | extension with LuaRocks commands (right-click). |
| 99 | SHIFT /1 | 101 | |
| 100 | GOTO PARSE_LOOP | 102 | ]]) |
| 101 | ) | 103 | end |
| 102 | IF /I [%1]==[/SCRIPTS] ( | 104 | |
| 103 | SET SCRIPTS_DIR=%~2 | 105 | -- *********************************************************** |
| 104 | SHIFT /1 | 106 | -- Option parser |
| 105 | SHIFT /1 | 107 | -- *********************************************************** |
| 106 | GOTO PARSE_LOOP | 108 | local function parse_options(args) |
| 107 | ) | 109 | for _, option in ipairs(args) do |
| 108 | IF /I [%1]==[/LV] ( | 110 | local name = option.name:upper() |
| 109 | SET LUA_VERSION=%~2 | 111 | if name == "/?" then |
| 110 | SHIFT /1 | 112 | print_help() |
| 111 | SHIFT /1 | 113 | os.exit(0) |
| 112 | GOTO PARSE_LOOP | 114 | elseif name == "/P" then |
| 113 | ) | 115 | vars.PREFIX = option.value |
| 114 | IF /I [%1]==[/L] ( | 116 | vars.SYSCONFDIR = option.value |
| 115 | SET INSTALL_LUA=ON | 117 | vars.ROCKS_TREE = option.value |
| 116 | SHIFT /1 | 118 | P_SET = true |
| 117 | GOTO PARSE_LOOP | 119 | elseif name == "/CONFIG" then |
| 118 | ) | 120 | vars.SYSCONFDIR = option.value |
| 119 | IF /I [%1]==[/MW] ( | 121 | elseif name == "/TREE" then |
| 120 | SET USE_MINGW=ON | 122 | vars.ROCKS_TREE = option.value |
| 121 | SHIFT /1 | 123 | elseif name == "/SCRIPTS" then |
| 122 | GOTO PARSE_LOOP | 124 | vars.SCRIPTS_DIR = option.value |
| 123 | ) | 125 | elseif name == "/LV" then |
| 124 | IF /I [%1]==[/LUA] ( | 126 | vars.LUA_VERSION = option.value |
| 125 | SET LUA_PREFIX=%~2 | 127 | elseif name == "/L" then |
| 126 | SHIFT /1 | 128 | INSTALL_LUA = true |
| 127 | SHIFT /1 | 129 | elseif name == "/MW" then |
| 128 | GOTO PARSE_LOOP | 130 | USE_MINGW = true |
| 129 | ) | 131 | elseif name == "/LUA" then |
| 130 | IF /I [%1]==[/LIB] ( | 132 | vars.LUA_PREFIX = option.value |
| 131 | SET LUA_LIBDIR=%~2 | 133 | elseif name == "/LIB" then |
| 132 | SHIFT /1 | 134 | vars.LUA_LIBDIR = option.value |
| 133 | SHIFT /1 | 135 | elseif name == "/INC" then |
| 134 | GOTO PARSE_LOOP | 136 | vars.LUA_INCDIR = option.value |
| 135 | ) | 137 | elseif name == "/BIN" then |
| 136 | IF /I [%1]==[/INC] ( | 138 | vars.LUA_BINDIR = option.value |
| 137 | SET LUA_INCDIR=%~2 | 139 | elseif name == "/FORCECONFIG" then |
| 138 | SHIFT /1 | 140 | FORCE_CONFIG = true |
| 139 | SHIFT /1 | 141 | elseif name == "/F" then |
| 140 | GOTO PARSE_LOOP | 142 | FORCE = true |
| 141 | ) | 143 | elseif name == "/R" then |
| 142 | IF /I [%1]==[/BIN] ( | 144 | REGISTRY = true |
| 143 | SET LUA_BINDIR=%~2 | 145 | else |
| 144 | SHIFT /1 | 146 | die("Unrecognized option: " .. name) |
| 145 | SHIFT /1 | 147 | end |
| 146 | GOTO PARSE_LOOP | 148 | end |
| 147 | ) | 149 | end |
| 148 | IF /I [%1]==[/FORCECONFIG] ( | 150 | |
| 149 | SET FORCE_CONFIG=ON | 151 | -- check for combination/required flags |
| 150 | SHIFT /1 | 152 | local function check_flags() |
| 151 | GOTO PARSE_LOOP | 153 | if not P_SET then |
| 152 | ) | 154 | die("Missing required parameter /P") |
| 153 | IF /I [%1]==[/F] ( | 155 | end |
| 154 | SET FORCE=ON | 156 | if INSTALL_LUA then |
| 155 | SHIFT /1 | 157 | if vars.LUA_INCDIR or vars.LUA_BINDIR or vars.LUA_LIBDIR or vars.LUA_PREFIX then |
| 156 | GOTO PARSE_LOOP | 158 | die("Cannot combine option /L with any of /LUA /BIN /LIB /INC") |
| 157 | ) | 159 | end |
| 158 | IF /I [%1]==[/R] ( | 160 | if vars.LUA_VERSION ~= "5.1" then |
| 159 | SET REGISTRY=ON | 161 | die("Bundled Lua version is 5.1, cannot install 5.2") |
| 160 | SHIFT /1 | 162 | end |
| 161 | GOTO PARSE_LOOP | 163 | end |
| 162 | ) | 164 | if vars.LUA_VERSION ~= "5.1" then |
| 163 | ECHO Unrecognized option: %1 | 165 | if vars.LUA_VERSION == "5.2" then |
| 164 | GOTO ERROR | 166 | vars.LUA_LIB_NAMES = vars.LUA_LIB_NAMES:gsub("5([%.]?)1", "5%12") |
| 165 | :DONE_PARSING | 167 | else |
| 166 | 168 | die("Bad argument: /LV must either be 5.1 or 5.2") | |
| 167 | REM check for combination/required flags | 169 | end |
| 168 | IF NOT [%P_SET%]==[TRUE] ( | 170 | end |
| 169 | Echo Missing required parameter /P | 171 | end |
| 170 | GOTO ERROR | 172 | |
| 171 | ) | 173 | -- *********************************************************** |
| 172 | IF [%INSTALL_LUA%]==[ON] ( | 174 | -- Detect Lua |
| 173 | IF NOT [%LUA_INCDIR%%LUA_BINDIR%%LUA_LIBDIR%%LUA_PREFIX%]==[] ( | 175 | -- *********************************************************** |
| 174 | ECHO Cannot combine option /L with any of /LUA /BIN /LIB /INC | 176 | local function look_for_interpreter (directory) |
| 175 | GOTO ERROR | 177 | if vars.LUA_BINDIR then |
| 176 | ) | 178 | if exists( S"$LUA_BINDIR\\lua$LUA_VERSION.exe" ) then |
| 177 | IF NOT [%LUA_VERSION%]==[5.1] ( | 179 | vars.LUA_INTERPRETER = S"lua$LUA_VERSION.exe" |
| 178 | ECHO Bundled Lua version is 5.1, cannot install 5.2 | 180 | print(S" Found $LUA_BINDIR\\$LUA_INTERPRETER") |
| 179 | GOTO ERROR | 181 | return true |
| 180 | ) | 182 | elseif exists(S"$LUA_BINDIR\\lua.exe") then |
| 181 | ) | 183 | vars.LUA_INTERPRETER = "lua.exe" |
| 182 | IF NOT [%LUA_VERSION%]==[5.1] ( | 184 | print(S" Found $LUA_BINDIR\\$LUA_INTERPRETER") |
| 183 | IF [%LUA_VERSION%]==[5.2] ( | 185 | return true |
| 184 | SET LUA_LIB_NAMES=%LUA_LIB_NAMES:5.1=5.2% | 186 | elseif exists(S"$LUA_BINDIR\\luajit.exe") then |
| 185 | SET LUA_LIB_NAMES=%LUA_LIB_NAMES:51=52% | 187 | vars.LUA_INTERPRETER = "luajit.exe" |
| 186 | ) ELSE ( | 188 | print(S" Found $LUA_BINDIR\\$LUA_INTERPRETER") |
| 187 | ECHO Bad argument: /LV must either be 5.1 or 5.2 | 189 | return true |
| 188 | GOTO ERROR | 190 | end |
| 189 | ) | 191 | die(S"Lua executable lua.exe, luajit.exe or lua$LUA_VERSION.exe not found in $LUA_BINDIR") |
| 190 | ) | 192 | end |
| 191 | 193 | ||
| 192 | SET FULL_PREFIX=%PREFIX%\%VERSION% | 194 | for _, e in ipairs{ [[\]], [[\bin\]] } do |
| 193 | SET BINDIR=%FULL_PREFIX% | 195 | if exists(directory..e.."\\lua"..vars.LUA_VERSION..".exe") then |
| 194 | SET LIBDIR=%FULL_PREFIX% | 196 | vars.LUA_INTERPRETER = S"lua$LUA_VERSION.exe" |
| 195 | SET LUADIR=%FULL_PREFIX%\lua | 197 | vars.LUA_BINDIR = directory .. e |
| 196 | SET INCDIR=%FULL_PREFIX%\include | 198 | print(" Found ."..e..vars.LUA_INTERPRETER) |
| 197 | SET LUA_SHORTV=%LUA_VERSION:.=% | 199 | return true |
| 198 | 200 | ||
| 199 | REM *********************************************************** | 201 | elseif exists(directory..e.."\\lua.exe") then |
| 200 | REM Detect Lua | 202 | vars.LUA_INTERPRETER = "lua.exe" |
| 201 | REM *********************************************************** | 203 | vars.LUA_BINDIR = directory..e |
| 202 | 204 | print(" Found ."..e..vars.LUA_INTERPRETER) | |
| 203 | IF [%INSTALL_LUA%]==[ON] GOTO USE_OWN_LUA | 205 | return true |
| 204 | 206 | ||
| 205 | ECHO Looking for Lua interpreter | 207 | elseif exists(directory..e.."\\luajit.exe") then |
| 206 | FOR %%L IN (%LUA_PREFIX% c:\lua\5.1.2 c:\lua c:\kepler\1.1) DO ( | 208 | vars.LUA_INTERPRETER = "luajit.exe" |
| 207 | ECHO checking %%L | 209 | vars.LUA_BINDIR = directory..e |
| 208 | SET CURR=%%L | 210 | print(" Found ."..e..vars.LUA_INTERPRETER) |
| 209 | IF EXIST "%%L" ( | 211 | return true |
| 210 | IF NOT [%LUA_BINDIR%]==[] ( | 212 | end |
| 211 | IF EXIST %LUA_BINDIR%\lua%LUA_VERSION%.exe ( | 213 | end |
| 212 | SET LUA_INTERPRETER=lua%LUA_VERSION%.exe | 214 | print(" No Lua interpreter found") |
| 213 | ECHO Found .\!LUA_INTERPRETER! | 215 | return false |
| 214 | GOTO INTERPRETER_IS_SET | 216 | end |
| 215 | ) | 217 | |
| 216 | IF EXIST %LUA_BINDIR%\lua.exe ( | 218 | local function look_for_link_libraries (directory) |
| 217 | SET LUA_INTERPRETER=lua.exe | 219 | if vars.LUA_LIBDIR then |
| 218 | ECHO Found .\!LUA_INTERPRETER! | 220 | for name in vars.LUA_LIB_NAMES:gmatch("[^%s]+") do |
| 219 | GOTO INTERPRETER_IS_SET | 221 | print(S" checking for $LUA_LIBDIR\\"..name) |
| 220 | ) | 222 | if exists(vars.LUA_LIBDIR.."\\"..name) then |
| 221 | IF EXIST %LUA_BINDIR%\luajit.exe ( | 223 | vars.LUA_LIBNAME = name |
| 222 | SET LUA_INTERPRETER=luajit.exe | 224 | print(" Found "..name) |
| 223 | ECHO Found .\!LUA_INTERPRETER! | 225 | return true |
| 224 | GOTO INTERPRETER_IS_SET | 226 | end |
| 225 | ) | 227 | end |
| 226 | ECHO Lua executable lua.exe, luajit.exe or lua%LUA_VERSION%.exe not found in %LUA_BINDIR% | 228 | die(S"link library (one of; $LUA_LIB_NAMES) not found in $LUA_LIBDIR") |
| 227 | GOTO ERROR | 229 | end |
| 228 | ) | 230 | |
| 229 | SET CURR=%%L | 231 | for _, e in ipairs{ [[\]], [[\lib\]], [[\bin\]]} do |
| 230 | FOR %%E IN (\ \bin\) DO ( | 232 | for name in vars.LUA_LIB_NAMES:gmatch("[^%s]+") do |
| 231 | IF EXIST "%%L%%E\lua%LUA_VERSION%.exe" ( | 233 | print(" checking for "..directory..e.."\\"..name) |
| 232 | SET LUA_INTERPRETER=lua%LUA_VERSION%.exe | 234 | if exists(directory..e.."\\"..name) then |
| 233 | SET LUA_BINDIR=%%L%%E | 235 | vars.LUA_LIBDIR = directory .. e |
| 234 | ECHO Found .\%%E\!LUA_INTERPRETER! | 236 | vars.LUA_LIBNAME = name |
| 235 | GOTO INTERPRETER_IS_SET | 237 | print(" Found "..name) |
| 236 | ) | 238 | return true |
| 237 | IF EXIST "%%L%%E\lua.exe" ( | 239 | end |
| 238 | SET LUA_INTERPRETER=lua.exe | 240 | end |
| 239 | SET LUA_BINDIR=%%L%%E | 241 | end |
| 240 | ECHO Found .\%%E\!LUA_INTERPRETER! | 242 | return false |
| 241 | GOTO INTERPRETER_IS_SET | 243 | end |
| 242 | ) | ||
| 243 | IF EXIST "%%L%%E\luajit.exe" ( | ||
| 244 | SET LUA_INTERPRETER=luajit.exe | ||
| 245 | SET LUA_BINDIR=%%L%%E | ||
| 246 | ECHO Found .\%%E\!LUA_INTERPRETER! | ||
| 247 | GOTO INTERPRETER_IS_SET | ||
| 248 | ) | ||
| 249 | ) | ||
| 250 | ECHO No Lua interpreter found | ||
| 251 | GOTO TRY_NEXT_LUA_DIR | ||
| 252 | :INTERPRETER_IS_SET | ||
| 253 | ECHO Interpreter found, now looking for link libraries... | ||
| 254 | IF NOT [%LUA_LIBDIR%]==[] ( | ||
| 255 | FOR %%T IN (%LUA_LIB_NAMES%) DO ( | ||
| 256 | ECHO checking for %LUA_LIBDIR%\%%T | ||
| 257 | IF EXIST "%LUA_LIBDIR%\%%T" ( | ||
| 258 | SET LUA_LIBNAME=%%T | ||
| 259 | ECHO Found %%T | ||
| 260 | GOTO LIBDIR_IS_SET | ||
| 261 | ) | ||
| 262 | ) | ||
| 263 | ECHO link library ^(one of; %LUA_LIB_NAMES%^) not found in %LUA_LIBDIR% | ||
| 264 | GOTO ERROR | ||
| 265 | ) | ||
| 266 | FOR %%E IN (\ \lib\ \bin\) DO ( | ||
| 267 | FOR %%S IN (%LUA_LIB_NAMES%) DO ( | ||
| 268 | ECHO checking for %CURR%%%E\%%S | ||
| 269 | IF EXIST "%CURR%%%E\%%S" ( | ||
| 270 | SET LUA_LIBDIR=%CURR%%%E | ||
| 271 | SET LUA_LIBNAME=%%S | ||
| 272 | ECHO Found %%S | ||
| 273 | GOTO LIBDIR_IS_SET | ||
| 274 | ) | ||
| 275 | ) | ||
| 276 | ) | ||
| 277 | GOTO TRY_NEXT_LUA_DIR | ||
| 278 | :LIBDIR_IS_SET | ||
| 279 | ECHO Link library found, now looking for headers... | ||
| 280 | IF NOT [%LUA_INCDIR%]==[] ( | ||
| 281 | ECHO checking for %LUA_INCDIR%\lua.h | ||
| 282 | IF EXIST %LUA_INCDIR%\lua.h ( | ||
| 283 | ECHO Found lua.h | ||
| 284 | GOTO INCDIR_IS_SET | ||
| 285 | ) | ||
| 286 | ECHO lua.h not found in %LUA_INCDIR% | ||
| 287 | GOTO ERROR | ||
| 288 | ) | ||
| 289 | FOR %%E IN (\ \include\) DO ( | ||
| 290 | ECHO checking for %CURR%%%E\lua.h | ||
| 291 | IF EXIST "%CURR%%%E\lua.h" ( | ||
| 292 | SET LUA_INCDIR=%CURR%%%E | ||
| 293 | ECHO Found lua.h | ||
| 294 | GOTO INCDIR_IS_SET | ||
| 295 | ) | ||
| 296 | ) | ||
| 297 | GOTO TRY_NEXT_LUA_DIR | ||
| 298 | :INCDIR_IS_SET | ||
| 299 | ECHO Headers found, now testing interpreter... | ||
| 300 | %LUA_BINDIR%\%LUA_INTERPRETER% -v 2>NUL | ||
| 301 | IF NOT ERRORLEVEL 1 ( | ||
| 302 | ECHO Ok | ||
| 303 | GOTO LUA_IS_SET | ||
| 304 | ) | ||
| 305 | ECHO Interpreter returned an error, not ok | ||
| 306 | ) | ||
| 307 | :TRY_NEXT_LUA_DIR | ||
| 308 | REM wtf | ||
| 309 | ) | ||
| 310 | ECHO Could not find Lua. Will install its own copy. | ||
| 311 | ECHO See /? for options for specifying the location of Lua. | ||
| 312 | :USE_OWN_LUA | ||
| 313 | IF NOT [%LUA_VERSION%]==[5.1] ( | ||
| 314 | ECHO Cannot install own copy because no 5.2 version is bundled | ||
| 315 | GOTO ERROR | ||
| 316 | ) | ||
| 317 | SET INSTALL_LUA=ON | ||
| 318 | SET LUA_INTERPRETER=lua5.1 | ||
| 319 | SET LUA_BINDIR=%BINDIR% | ||
| 320 | SET LUA_LIBDIR=%LIBDIR% | ||
| 321 | SET LUA_INCDIR=%INCDIR% | ||
| 322 | SET LUA_LIBNAME=lua5.1.lib | ||
| 323 | :LUA_IS_SET | ||
| 324 | ECHO. | ||
| 325 | ECHO Will configure LuaRocks with the following paths: | ||
| 326 | ECHO LuaRocks : %FULL_PREFIX% | ||
| 327 | ECHO Lua interpreter: %LUA_BINDIR%\%LUA_INTERPRETER% | ||
| 328 | ECHO Lua binaries : %LUA_BINDIR% | ||
| 329 | ECHO Lua libraries : %LUA_LIBDIR% | ||
| 330 | ECHO Lua includes : %LUA_INCDIR% | ||
| 331 | ECHO Binaries will be linked against: %LUA_LIBNAME% | ||
| 332 | ECHO. | ||
| 333 | |||
| 334 | REM *********************************************************** | ||
| 335 | REM Install LuaRocks files | ||
| 336 | REM *********************************************************** | ||
| 337 | |||
| 338 | IF [%FORCE%]==[ON] ( | ||
| 339 | ECHO Removing %FULL_PREFIX%... | ||
| 340 | RD /S /Q "%FULL_PREFIX%" | ||
| 341 | ECHO. | ||
| 342 | ) | ||
| 343 | |||
| 344 | IF NOT EXIST "%FULL_PREFIX%" GOTO NOT_EXIST_PREFIX | ||
| 345 | ECHO %FULL_PREFIX% exists. Use /F to force removal and reinstallation. | ||
| 346 | GOTO ERROR | ||
| 347 | :NOT_EXIST_PREFIX | ||
| 348 | |||
| 349 | ECHO Installing LuaRocks in %FULL_PREFIX%... | ||
| 350 | IF NOT EXIST "%BINDIR%" %MKDIR% "%BINDIR%" | ||
| 351 | IF ERRORLEVEL 1 GOTO ERROR | ||
| 352 | IF [%INSTALL_LUA%]==[ON] ( | ||
| 353 | REM Copy the included Lua interpreter binaries | ||
| 354 | IF NOT EXIST "%LUA_BINDIR%" %MKDIR% "%LUA_BINDIR%" | ||
| 355 | IF NOT EXIST "%LUA_INCDIR%" %MKDIR% "%LUA_INCDIR%" | ||
| 356 | COPY lua5.1\bin\*.* "%LUA_BINDIR%" >NUL | ||
| 357 | COPY lua5.1\include\*.* "%LUA_INCDIR%" >NUL | ||
| 358 | ECHO Installed the LuaRocks bundled Lua interpreter in %LUA_BINDIR% | ||
| 359 | ) | ||
| 360 | REM Copy the LuaRocks binaries | ||
| 361 | COPY bin\*.* "%BINDIR%" >NUL | ||
| 362 | IF ERRORLEVEL 1 GOTO ERROR | ||
| 363 | REM Copy the LuaRocks lua source files | ||
| 364 | IF NOT EXIST "%LUADIR%\luarocks" %MKDIR% "%LUADIR%\luarocks" | ||
| 365 | IF ERRORLEVEL 1 GOTO ERROR | ||
| 366 | XCOPY /S src\luarocks\*.* "%LUADIR%\luarocks" >NUL | ||
| 367 | IF ERRORLEVEL 1 GOTO ERROR | ||
| 368 | REM Create start scripts | ||
| 369 | COPY src\bin\*.* "%BINDIR%" >NUL | ||
| 370 | IF ERRORLEVEL 1 GOTO ERROR | ||
| 371 | FOR %%C IN (luarocks luarocks-admin) DO ( | ||
| 372 | REM rename unix-lua scripts to .lua files | ||
| 373 | RENAME "%BINDIR%\%%C" %%C.lua | ||
| 374 | IF ERRORLEVEL 1 GOTO ERROR | ||
| 375 | REM create a bootstrap batch file for the lua file, to start them | ||
| 376 | DEL /F /Q "%BINDIR%\%%C.bat" 2>NUL | ||
| 377 | ECHO @ECHO OFF>> "%BINDIR%\%%C.bat" | ||
| 378 | ECHO SETLOCAL>> "%BINDIR%\%%C.bat" | ||
| 379 | ECHO SET LUA_PATH=%LUADIR%\?.lua;%LUADIR%\?\init.lua;%%LUA_PATH%%>> "%BINDIR%\%%C.bat" | ||
| 380 | ECHO SET PATH=%BINDIR%\;%%PATH%%>> "%BINDIR%\%%C.bat" | ||
| 381 | ECHO "%LUA_INTERPRETER%" "%BINDIR%\%%C.lua" %%*>> "%BINDIR%\%%C.bat" | ||
| 382 | ECHO ENDLOCAL>> "%BINDIR%\%%C.bat" | ||
| 383 | ECHO Created LuaRocks command: %BINDIR%\%%C.bat | ||
| 384 | ) | ||
| 385 | REM configure 'scripts' directory | ||
| 386 | IF [%SCRIPTS_DIR%]==[] ( | ||
| 387 | %MKDIR% "%ROCKS_TREE%"\bin >NUL | ||
| 388 | IF [%USE_MINGW%]==[] ( | ||
| 389 | REM definitly not for MinGW because of conflicting runtimes | ||
| 390 | REM but is it ok to do it for others??? | ||
| 391 | COPY lua5.1\bin\*.dll "%ROCKS_TREE%"\bin >NUL | ||
| 392 | ) | ||
| 393 | ) ELSE ( | ||
| 394 | %MKDIR% "%SCRIPTS_DIR%" >NUL | ||
| 395 | IF [%USE_MINGW%]==[] ( | ||
| 396 | REM definitly not for MinGW because of conflicting runtimes | ||
| 397 | REM but is it ok to do it for others??? | ||
| 398 | COPY lua5.1\bin\*.dll "%SCRIPTS_DIR%" >NUL | ||
| 399 | ) | ||
| 400 | ) | ||
| 401 | |||
| 402 | |||
| 403 | ECHO. | ||
| 404 | ECHO Configuring LuaRocks... | ||
| 405 | REM Create a site-config file | ||
| 406 | IF EXIST "%LUADIR%\luarocks\site_config.lua" RENAME "%LUADIR%\luarocks\site_config.lua" site_config.lua.bak | ||
| 407 | ECHO module("luarocks.site_config")>> "%LUADIR%\luarocks\site_config.lua" | ||
| 408 | ECHO LUA_INCDIR=[[%LUA_INCDIR%]]>> "%LUADIR%\luarocks\site_config.lua" | ||
| 409 | ECHO LUA_LIBDIR=[[%LUA_LIBDIR%]]>> "%LUADIR%\luarocks\site_config.lua" | ||
| 410 | ECHO LUA_BINDIR=[[%LUA_BINDIR%]]>> "%LUADIR%\luarocks\site_config.lua" | ||
| 411 | ECHO LUA_INTERPRETER=[[%LUA_INTERPRETER%]]>> "%LUADIR%\luarocks\site_config.lua" | ||
| 412 | IF [%USE_MINGW%]==[ON] ( | ||
| 413 | ECHO LUAROCKS_UNAME_S=[[MINGW]]>> "%LUADIR%\luarocks\site_config.lua" | ||
| 414 | ) ELSE ( | ||
| 415 | ECHO LUAROCKS_UNAME_S=[[WindowsNT]]>> "%LUADIR%\luarocks\site_config.lua" | ||
| 416 | ) | ||
| 417 | ECHO LUAROCKS_UNAME_M=[[x86]]>> "%LUADIR%\luarocks\site_config.lua" | ||
| 418 | ECHO LUAROCKS_SYSCONFIG=[[%SYSCONFDIR%/config.lua]]>> "%LUADIR%\luarocks\site_config.lua" | ||
| 419 | ECHO LUAROCKS_ROCKS_TREE=[[%ROCKS_TREE%]]>> "%LUADIR%\luarocks\site_config.lua" | ||
| 420 | ECHO LUAROCKS_PREFIX=[[%PREFIX%]]>> "%LUADIR%\luarocks\site_config.lua" | ||
| 421 | ECHO LUAROCKS_DOWNLOADER=[[wget]]>> "%LUADIR%\luarocks\site_config.lua" | ||
| 422 | ECHO LUAROCKS_MD5CHECKER=[[md5sum]]>> "%LUADIR%\luarocks\site_config.lua" | ||
| 423 | IF NOT [%FORCE_CONFIG%]==[] ECHO local LUAROCKS_FORCE_CONFIG=true>> "%LUADIR%\luarocks\site_config.lua" | ||
| 424 | IF EXIST "%LUADIR%\luarocks\site_config.lua.bak" TYPE "%LUADIR%\luarocks\site_config.lua.bak">> "%LUADIR%\luarocks\site_config.lua" | ||
| 425 | |||
| 426 | IF EXIST "%LUADIR%\luarocks\site_config.lua.bak" DEL /F /Q "%LUADIR%\luarocks\site_config.lua.bak" | ||
| 427 | ECHO Created LuaRocks site-config file: %LUADIR%\luarocks\site_config.lua | ||
| 428 | |||
| 429 | REM create config file | ||
| 430 | SET CONFIG_FILE=%SYSCONFDIR%\config.lua | ||
| 431 | |||
| 432 | IF NOT EXIST "%SYSCONFDIR%" %MKDIR% "%SYSCONFDIR%" | ||
| 433 | IF NOT EXIST "%CONFIG_FILE%" ( | ||
| 434 | ECHO rocks_servers = {>> "%CONFIG_FILE%" | ||
| 435 | ECHO [[http://luarocks.org/repositories/rocks]]>> "%CONFIG_FILE%" | ||
| 436 | ECHO }>> "%CONFIG_FILE%" | ||
| 437 | ECHO rocks_trees = {>> "%CONFIG_FILE%" | ||
| 438 | IF [%FORCE_CONFIG%]==[] ECHO home..[[/luarocks]],>> "%CONFIG_FILE%" | ||
| 439 | ECHO [[%ROCKS_TREE%]]>> "%CONFIG_FILE%" | ||
| 440 | ECHO }>> "%CONFIG_FILE%" | ||
| 441 | IF NOT [%SCRIPTS_DIR%]==[] ECHO scripts_dir=[[%SCRIPTS_DIR%]]>> "%CONFIG_FILE%" | ||
| 442 | ECHO variables = {>> "%CONFIG_FILE%" | ||
| 443 | IF [%USE_MINGW%]==[ON] ( | ||
| 444 | ECHO MSVCRT = 'm',>> "%CONFIG_FILE%" | ||
| 445 | ) ELSE ( | ||
| 446 | ECHO MSVCRT = 'msvcr80',>> "%CONFIG_FILE%" | ||
| 447 | ) | ||
| 448 | ECHO LUALIB = '%LUA_LIBNAME%'>> "%CONFIG_FILE%" | ||
| 449 | ECHO }>> "%CONFIG_FILE%" | ||
| 450 | ECHO Created LuaRocks config file: %CONFIG_FILE% | ||
| 451 | ) ELSE ( | ||
| 452 | ECHO LuaRocks config file already exists: %CONFIG_FILE% | ||
| 453 | ) | ||
| 454 | |||
| 455 | ECHO. | ||
| 456 | ECHO Creating rocktrees... | ||
| 457 | IF NOT EXIST "%ROCKS_TREE%" ( | ||
| 458 | %MKDIR% "%ROCKS_TREE%" | ||
| 459 | ECHO Created rocktree: "%ROCKS_TREE%" | ||
| 460 | ) ELSE ( | ||
| 461 | ECHO Rocktree exists: "%ROCKS_TREE%" | ||
| 462 | ) | ||
| 463 | IF NOT EXIST "%APPDATA%/luarocks" ( | ||
| 464 | %MKDIR% "%APPDATA%/luarocks" | ||
| 465 | ECHO Created rocktree: "%APPDATA%\luarocks" | ||
| 466 | ) ELSE ( | ||
| 467 | ECHO Rocktree exists: "%APPDATA%\luarocks" | ||
| 468 | ) | ||
| 469 | |||
| 470 | REM Load registry information | ||
| 471 | IF [%REGISTRY%]==[ON] ( | ||
| 472 | REM expand template with correct path information | ||
| 473 | ECHO. | ||
| 474 | ECHO Loading registry information for ".rockspec" files | ||
| 475 | lua5.1\bin\lua5.1.exe "%FULL_PREFIX%\create_reg_file.lua" "%FULL_PREFIX%\LuaRocks.reg.template" | ||
| 476 | %FULL_PREFIX%\LuaRocks.reg | ||
| 477 | ) | ||
| 478 | |||
| 479 | REM *********************************************************** | ||
| 480 | REM Exit handlers | ||
| 481 | REM *********************************************************** | ||
| 482 | |||
| 483 | ECHO. | ||
| 484 | ECHO *** LuaRocks is installed! *** | ||
| 485 | ECHO. | ||
| 486 | ECHO You may want to add the following elements to your paths; | ||
| 487 | ECHO PATH : %LUA_BINDIR%;%FULL_PREFIX% | ||
| 488 | ECHO LUA_PATH : %ROCKS_TREE%\share\lua\%LUA_VERSION%\?.lua;%ROCKS_TREE%\share\lua\%LUA_VERSION%\?\init.lua | ||
| 489 | ECHO LUA_CPATH: %LUA_LIBDIR%\lua\%LUA_VERSION%\?.dll | ||
| 490 | ECHO. | ||
| 491 | :QUIT | ||
| 492 | ENDLOCAL | ||
| 493 | EXIT /B 0 | ||
| 494 | 244 | ||
| 495 | :ERROR | 245 | local function look_for_headers (directory) |
| 496 | ECHO. | 246 | if vars.LUA_INCDIR then |
| 497 | ECHO Failed installing LuaRocks. Run with /? for help. | 247 | print(S" checking for $LUA_INCDIR\\lua.h") |
| 248 | if exists(S"$LUA_INCDIR\\lua.h") then | ||
| 249 | print(" Found lua.h") | ||
| 250 | return true | ||
| 251 | end | ||
| 252 | die(S"lua.h not found in $LUA_INCDIR") | ||
| 253 | end | ||
| 254 | |||
| 255 | for _, e in ipairs{ [[\]], [[\include\]]} do | ||
| 256 | print(" checking for "..directory..e.."\\lua.h") | ||
| 257 | if exists(directory..e.."\\lua.h") then | ||
| 258 | vars.LUA_INCDIR = directory..e | ||
| 259 | print(" Found lua.h") | ||
| 260 | return true | ||
| 261 | end | ||
| 262 | end | ||
| 263 | return false | ||
| 264 | end | ||
| 265 | |||
| 266 | local function look_for_lua_install () | ||
| 267 | print("Looking for Lua interpreter") | ||
| 268 | local directories = { [[c:\lua5.1.2]], [[c:\lua]], [[c:\kepler\1.1]] } | ||
| 269 | if vars.LUA_PREFIX then | ||
| 270 | table.insert(directories, 1, vars.LUA_PREFIX) | ||
| 271 | end | ||
| 272 | if vars.LUA_BINDIR and vars.LUA_LIBDIR and vars.LUA_INCDIR then | ||
| 273 | if look_for_interpreter(vars.LUA_BINDIR) and | ||
| 274 | look_for_link_libraries(vars.LUA_LIBDIR) and | ||
| 275 | look_for_headers(vars.LUA_INCDIR) | ||
| 276 | then | ||
| 277 | if exec(S"$LUA_BINDIR\\$LUA_INTERPRETER -v 2>NUL") then | ||
| 278 | print(" Ok") | ||
| 279 | return true | ||
| 280 | end | ||
| 281 | end | ||
| 282 | return false | ||
| 283 | end | ||
| 284 | |||
| 285 | for _, directory in ipairs(directories) do | ||
| 286 | print(" checking " .. directory) | ||
| 287 | if exists(directory) then | ||
| 288 | if look_for_interpreter(directory) then | ||
| 289 | print("Interpreter found, now looking for link libraries...") | ||
| 290 | if look_for_link_libraries(directory) then | ||
| 291 | print("Link library found, now looking for headers...") | ||
| 292 | if look_for_headers(directory) then | ||
| 293 | print("Headers found, now testing interpreter...") | ||
| 294 | if exec(S[[$LUA_BINDIR\$LUA_INTERPRETER -v 2>NUL]]) then | ||
| 295 | print(" Ok") | ||
| 296 | return true | ||
| 297 | end | ||
| 298 | print(" Interpreter returned an error, not ok") | ||
| 299 | end | ||
| 300 | end | ||
| 301 | end | ||
| 302 | end | ||
| 303 | end | ||
| 304 | return false | ||
| 305 | end | ||
| 306 | |||
| 307 | --- | ||
| 308 | -- Poor man's command-line parsing | ||
| 309 | local config = {} | ||
| 310 | local with_arg = { -- options followed by an argument, others are flags | ||
| 311 | ["/P"] = true, | ||
| 312 | ["/CONFIG"] = true, | ||
| 313 | ["/TREE"] = true, | ||
| 314 | ["/SCRIPTS"] = true, | ||
| 315 | ["/LV"] = true, | ||
| 316 | ["/LUA"] = true, | ||
| 317 | ["/INC"] = true, | ||
| 318 | ["/BIN"] = true, | ||
| 319 | ["/LIB"] = true, | ||
| 320 | } | ||
| 321 | local i = 1 | ||
| 322 | while i <= #arg do | ||
| 323 | local opt = arg[i] | ||
| 324 | if with_arg[opt] then | ||
| 325 | local value = arg[i + 1] | ||
| 326 | if not value then | ||
| 327 | die("Missing value for option "..opt) | ||
| 328 | end | ||
| 329 | config[#config + 1] = { name = opt, value = value } | ||
| 330 | i = i + 1 | ||
| 331 | else | ||
| 332 | config[#config + 1] = { name = opt } | ||
| 333 | end | ||
| 334 | i = i + 1 | ||
| 335 | end | ||
| 336 | |||
| 337 | print(S"LuaRocks $VERSION.x installer.\n") | ||
| 338 | |||
| 339 | parse_options(config) | ||
| 340 | check_flags() | ||
| 341 | |||
| 342 | vars.FULL_PREFIX = S"$PREFIX\\$VERSION" | ||
| 343 | vars.BINDIR = vars.FULL_PREFIX | ||
| 344 | vars.LIBDIR = vars.FULL_PREFIX | ||
| 345 | vars.LUADIR = S"$FULL_PREFIX\\lua" | ||
| 346 | vars.INCDIR = S"$FULL_PREFIX\\include" | ||
| 347 | vars.LUA_SHORTV = vars.LUA_VERSION:gsub("%.", "") | ||
| 348 | |||
| 349 | if not look_for_lua_install() then | ||
| 350 | print("Could not find Lua. Will install its own copy.") | ||
| 351 | print("See /? for options for specifying the location of Lua.") | ||
| 352 | if vars.LUA_VERSION ~= "5.1" then | ||
| 353 | die("Cannot install own copy because no 5.2 version is bundled") | ||
| 354 | end | ||
| 355 | INSTALL_LUA = true | ||
| 356 | vars.LUA_INTERPRETER = "lua5.1" | ||
| 357 | vars.LUA_BINDIR = vars.BINDIR | ||
| 358 | vars.LUA_LIBDIR = vars.LIBDIR | ||
| 359 | vars.LUA_INCDIR = vars.INCDIR | ||
| 360 | vars.LUA_LIBNAME = "lua5.1.lib" | ||
| 361 | else | ||
| 362 | print(S[[ | ||
| 363 | |||
| 364 | Will configure LuaRocks with the following paths: | ||
| 365 | LuaRocks : $FULL_PREFIX | ||
| 366 | Lua interpreter: $LUA_BINDIR\$LUA_INTERPRETER | ||
| 367 | Lua binaries : $LUA_BINDIR | ||
| 368 | Lua libraries : $LUA_LIBDIR | ||
| 369 | Lua includes : $LUA_INCDIR | ||
| 370 | Binaries will be linked against: $LUA_LIBNAME | ||
| 371 | |||
| 372 | ]]) | ||
| 373 | end | ||
| 374 | |||
| 375 | -- *********************************************************** | ||
| 376 | -- Install LuaRocks files | ||
| 377 | -- *********************************************************** | ||
| 378 | if FORCE then | ||
| 379 | print(S"Removing $FULL_PREFIX...") | ||
| 380 | exec(S[[RD /S /Q "$FULL_PREFIX"]]) | ||
| 381 | print() | ||
| 382 | end | ||
| 383 | |||
| 384 | if exists(vars.FULL_PREFIX) then | ||
| 385 | die(S"$FULL_PREFIX exists. Use /F to force removal and reinstallation.") | ||
| 386 | end | ||
| 387 | |||
| 388 | print(S"Installing LuaRocks in $FULL_PREFIX...") | ||
| 389 | if not exists(vars.BINDIR) then | ||
| 390 | if not mkdir(vars.BINDIR) then | ||
| 391 | die() | ||
| 392 | end | ||
| 393 | end | ||
| 394 | |||
| 395 | if INSTALL_LUA then | ||
| 396 | -- Copy the included Lua interpreter binaries | ||
| 397 | if not exists(vars.LUA_BINDIR) then | ||
| 398 | mkdir(vars.LUA_BINDIR) | ||
| 399 | end | ||
| 400 | if not exists(vars.LUA_INCDIR) then | ||
| 401 | mkdir(vars.LUA_INCDIR) | ||
| 402 | end | ||
| 403 | exec(S[[COPY lua5.1\bin\*.* "$LUA_BINDIR" >NUL]]) | ||
| 404 | exec(S[[COPY lua5.1\include\*.* "$LUA_INCDIR" >NUL]]) | ||
| 405 | print(S"Installed the LuaRocks bundled Lua interpreter in $LUA_BINDIR") | ||
| 406 | end | ||
| 407 | |||
| 408 | -- Copy the LuaRocks binaries | ||
| 409 | if not exec(S[[COPY bin\*.* "$BINDIR" >NUL]]) then | ||
| 410 | die() | ||
| 411 | end | ||
| 412 | -- Copy the LuaRocks lua source files | ||
| 413 | if not exists(S[[$LUADIR\luarocks]]) then | ||
| 414 | if not mkdir(S[[$LUADIR\luarocks]]) then | ||
| 415 | die() | ||
| 416 | end | ||
| 417 | end | ||
| 418 | if not exec(S[[XCOPY /S src\luarocks\*.* "$LUADIR\luarocks" >NUL]]) then | ||
| 419 | die() | ||
| 420 | end | ||
| 421 | -- Create start scripts | ||
| 422 | if not exec(S[[COPY src\bin\*.* "$BINDIR" >NUL]]) then | ||
| 423 | die() | ||
| 424 | end | ||
| 425 | for _, c in ipairs{"luarocks", "luarocks-admin"} do | ||
| 426 | -- rename unix-lua scripts to .lua files | ||
| 427 | if not exec( (S[[RENAME "$BINDIR\%s" %s.lua]]):format(c, c) ) then | ||
| 428 | die() | ||
| 429 | end | ||
| 430 | -- create a bootstrap batch file for the lua file, to start them | ||
| 431 | exec(S[[DEL /F /Q "$BINDIR\]]..c..[[.bat" 2>NUL]]) | ||
| 432 | local f = io.open(vars.BINDIR.."\\"..c..".bat", "w") | ||
| 433 | f:write(S[[ | ||
| 434 | @ECHO OFF | ||
| 435 | SETLOCAL | ||
| 436 | SET LUA_PATH=$LUADIR\?.lua;$LUADIR\?\init.lua;%LUA_PATH% | ||
| 437 | SET PATH=$BINDIR\;%PATH% | ||
| 438 | "$LUA_INTERPRETER" "$BINDIR\]]..c..[[.lua" %* | ||
| 498 | ENDLOCAL | 439 | ENDLOCAL |
| 499 | EXIT /B 1 | 440 | ]]) |
| 441 | f:close() | ||
| 442 | print(S"Created LuaRocks command: $BINDIR\\"..c..".bat") | ||
| 443 | end | ||
| 444 | -- configure 'scripts' directory | ||
| 445 | if vars.SCRIPTS_DIR then | ||
| 446 | mkdir(vars.SCRIPTS_DIR) | ||
| 447 | if not USE_MINGW then | ||
| 448 | -- definitly not for MinGW because of conflicting runtimes | ||
| 449 | -- but is it ok to do it for others??? | ||
| 450 | exec(S[[COPY lua5.1\bin\*.dll "$SCRIPTS_DIR" >NUL]]) | ||
| 451 | end | ||
| 452 | else | ||
| 453 | if not USE_MINGW then | ||
| 454 | mkdir(S[[$ROCKS_TREE\bin]]) | ||
| 455 | -- definitly not for MinGW because of conflicting runtimes | ||
| 456 | -- but is it ok to do it for others??? | ||
| 457 | exec(S[[COPY lua5.1\bin\*.dll "$ROCKS_TREE"\bin >NUL]]) | ||
| 458 | end | ||
| 459 | end | ||
| 460 | |||
| 461 | |||
| 462 | print() | ||
| 463 | print("Configuring LuaRocks...") | ||
| 464 | -- Create a site-config file | ||
| 465 | if exists(S[[$LUADIR\luarocks\site_config.lua]]) then | ||
| 466 | exec(S[[RENAME "$LUADIR\luarocks\site_config.lua" site_config.lua.bak]]) | ||
| 467 | end | ||
| 468 | local f = io.open(vars.LUADIR.."\\luarocks\\site_config.lua", "w") | ||
| 469 | f:write(S[=[ | ||
| 470 | module("luarocks.site_config") | ||
| 471 | LUA_INCDIR=[[$LUA_INCDIR]] | ||
| 472 | LUA_LIBDIR=[[$LUA_LIBDIR]] | ||
| 473 | LUA_BINDIR=[[$LUA_BINDIR]] | ||
| 474 | LUA_INTERPRETER=[[$LUA_INTERPRETER]] | ||
| 475 | ]=]) | ||
| 476 | if USE_MINGW then | ||
| 477 | f:write("LUAROCKS_UNAME_S=[[MINGW]]\n") | ||
| 478 | else | ||
| 479 | f:write("LUAROCKS_UNAME_S=[[WindowsNT]]\n") | ||
| 480 | end | ||
| 481 | f:write(S[=[ | ||
| 482 | LUAROCKS_UNAME_M=[[x86]] | ||
| 483 | LUAROCKS_SYSCONFIG=[[$SYSCONFDIR\config.lua]] | ||
| 484 | LUAROCKS_ROCKS_TREE=[[$ROCKS_TREE]] | ||
| 485 | LUAROCKS_PREFIX=[[$PREFIX]] | ||
| 486 | LUAROCKS_DOWNLOADER=[[wget]] | ||
| 487 | LUAROCKS_MD5CHECKER=[[md5sum]] | ||
| 488 | ]=]) | ||
| 489 | if FORCE_CONFIG then | ||
| 490 | f:write("local LUAROCKS_FORCE_CONFIG=true\n") | ||
| 491 | end | ||
| 492 | if exists(vars.LUADIR.."\\luarocks\\site_config.lua.bak") then | ||
| 493 | for line in io.lines(vars.LUADIR.."\\luarocks\\site_config.lua.bak", "r") do | ||
| 494 | f:write(line) | ||
| 495 | f:write("\n") | ||
| 496 | end | ||
| 497 | exec(S[[DEL /F /Q "$LUADIR\luarocks\site_config.lua.bak"]]) | ||
| 498 | end | ||
| 499 | f:close() | ||
| 500 | print(S[[Created LuaRocks site-config file: $LUADIR\luarocks\site_config.lua]]) | ||
| 501 | |||
| 502 | -- create config file | ||
| 503 | vars.CONFIG_FILE = vars.SYSCONFDIR.."\\config.lua" | ||
| 504 | if not exists(vars.SYSCONFDIR) then | ||
| 505 | mkdir(vars.SYSCONFDIR) | ||
| 506 | end | ||
| 507 | if not exists(vars.CONFIG_FILE) then | ||
| 508 | local f = io.open(vars.CONFIG_FILE, "w") | ||
| 509 | f:write([=[ | ||
| 510 | rocks_servers = { | ||
| 511 | [[http://luarocks.org/repositories/rocks]] | ||
| 512 | } | ||
| 513 | rocks_trees = { | ||
| 514 | ]=]) | ||
| 515 | if FORCE_CONFIG then | ||
| 516 | f:write(" home..[[/luarocks]],\n") | ||
| 517 | end | ||
| 518 | f:write(S" [[$ROCKS_TREE]]\n") | ||
| 519 | f:write("}\n") | ||
| 520 | if vars.SCRIPTS_DIR then | ||
| 521 | f:write(S"scripts_dir=[[$SCRIPTS_DIR]]\n") | ||
| 522 | end | ||
| 523 | f:write("variables = {\n") | ||
| 524 | if USE_MINGW then | ||
| 525 | f:write(" MSVCRT = 'm',\n") | ||
| 526 | else | ||
| 527 | f:write(" MSVCRT = 'msvcr80',\n") | ||
| 528 | end | ||
| 529 | f:write(S" LUALIB = '$LUA_LIBNAME'\n") | ||
| 530 | f:write("}\n") | ||
| 531 | f:close() | ||
| 532 | print(S"Created LuaRocks config file: $CONFIG_FILE") | ||
| 533 | else | ||
| 534 | print(S"LuaRocks config file already exists: $CONFIG_FILE") | ||
| 535 | end | ||
| 536 | |||
| 537 | print() | ||
| 538 | print("Creating rocktrees...") | ||
| 539 | if not exists(vars.ROCKS_TREE) then | ||
| 540 | mkdir(vars.ROCKS_TREE) | ||
| 541 | print(S[[Created rocktree: "$ROCKS_TREE"]]) | ||
| 542 | else | ||
| 543 | print(S[[Rocktree exists: "$ROCKS_TREE"]]) | ||
| 544 | end | ||
| 545 | local APPDATA = os.getenv("APPDATA") | ||
| 546 | if not exists(APPDATA.."\\luarocks") then | ||
| 547 | mkdir(APPDATA.."\\luarocks") | ||
| 548 | print([[Created rocktree: "]]..APPDATA..[[\luarocks"]]) | ||
| 549 | else | ||
| 550 | print([[Rocktree exists: "]]..APPDATA..[[\luarocks"]]) | ||
| 551 | end | ||
| 552 | |||
| 553 | -- Load registry information | ||
| 554 | if REGISTRY then | ||
| 555 | -- expand template with correct path information | ||
| 556 | print() | ||
| 557 | print([[Loading registry information for ".rockspec" files]]) | ||
| 558 | exec( S[[lua5.1\bin\lua5.1.exe "$FULL_PREFIX\create_reg_file.lua" "$FULL_PREFIX\LuaRocks.reg.template"]] ) | ||
| 559 | exec( S"$FULL_PREFIX\\LuaRocks.reg" ) | ||
| 560 | end | ||
| 561 | |||
| 562 | -- *********************************************************** | ||
| 563 | -- Exit handlers | ||
| 564 | -- *********************************************************** | ||
| 565 | |||
| 566 | print(S[[ | ||
| 567 | *** LuaRocks is installed! *** | ||
| 568 | |||
| 569 | You may want to add the following elements to your paths; | ||
| 570 | PATH : $LUA_BINDIR;$FULL_PREFIX | ||
| 571 | LUA_PATH : $ROCKS_TREE\share\lua\$LUA_VERSION\?.lua;$ROCKS_TREE\share\lua\$LUA_VERSION\?\init.lua | ||
| 572 | LUA_CPATH: $LUA_LIBDIR\lua\$LUA_VERSION\?.dll | ||
| 573 | |||
| 574 | ]]) | ||
| 575 | os.exit(0) | ||
