diff options
author | Ignacio Burgueño <ignaciob@inconcertcc.com> | 2013-04-21 18:30:23 -0300 |
---|---|---|
committer | Ignacio Burgueño <ignaciob@inconcertcc.com> | 2013-04-21 18:30:23 -0300 |
commit | d0890120f9b1cf1d986cf6299e0b59c533480591 (patch) | |
tree | 2d9691bfd2870db46d9b3d30a2ba716a02b30e63 | |
parent | 6cc2c255777d77a73197ed6b960f898391dabfe6 (diff) | |
download | luarocks-d0890120f9b1cf1d986cf6299e0b59c533480591.tar.gz luarocks-d0890120f9b1cf1d986cf6299e0b59c533480591.tar.bz2 luarocks-d0890120f9b1cf1d986cf6299e0b59c533480591.zip |
Rewrote install batch file in Lua.
This is mostly a direct translation, so there are lots of things to
improve, but it is a working install script written in Lua.
Diffstat (limited to '')
-rw-r--r-- | install.bat | 1067 |
1 files changed, 571 insertions, 496 deletions
diff --git a/install.bat b/install.bat index 2a0e677b..d0d641b7 100644 --- a/install.bat +++ b/install.bat | |||
@@ -1,499 +1,574 @@ | |||
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 | |
113 | ) | 115 | elseif name == "/P" then |
114 | IF /I [%1]==[/L] ( | 116 | vars.PREFIX = option.value |
115 | SET INSTALL_LUA=ON | 117 | vars.SYSCONFDIR = option.value |
116 | SHIFT /1 | 118 | vars.ROCKS_TREE = option.value |
117 | GOTO PARSE_LOOP | 119 | P_SET = true |
118 | ) | 120 | elseif name == "/CONFIG" then |
119 | IF /I [%1]==[/MW] ( | 121 | vars.SYSCONFDIR = option.value |
120 | SET USE_MINGW=ON | 122 | elseif name == "/TREE" then |
121 | SHIFT /1 | 123 | vars.ROCKS_TREE = option.value |
122 | GOTO PARSE_LOOP | 124 | elseif name == "/SCRIPTS" then |
123 | ) | 125 | vars.SCRIPTS_DIR = option.value |
124 | IF /I [%1]==[/LUA] ( | 126 | elseif name == "/LV" then |
125 | SET LUA_PREFIX=%~2 | 127 | vars.LUA_VERSION = option.value |
126 | SHIFT /1 | 128 | elseif name == "/L" then |
127 | SHIFT /1 | 129 | INSTALL_LUA = true |
128 | GOTO PARSE_LOOP | 130 | elseif name == "/MW" then |
129 | ) | 131 | USE_MINGW = true |
130 | IF /I [%1]==[/LIB] ( | 132 | elseif name == "/LUA" then |
131 | SET LUA_LIBDIR=%~2 | 133 | vars.LUA_PREFIX = option.value |
132 | SHIFT /1 | 134 | elseif name == "/LIB" then |
133 | SHIFT /1 | 135 | vars.LUA_LIBDIR = option.value |
134 | GOTO PARSE_LOOP | 136 | elseif name == "/INC" then |
135 | ) | 137 | vars.LUA_INCDIR = option.value |
136 | IF /I [%1]==[/INC] ( | 138 | elseif name == "/BIN" then |
137 | SET LUA_INCDIR=%~2 | 139 | vars.LUA_BINDIR = option.value |
138 | SHIFT /1 | 140 | elseif name == "/FORCECONFIG" then |
139 | SHIFT /1 | 141 | FORCE_CONFIG = true |
140 | GOTO PARSE_LOOP | 142 | elseif name == "/F" then |
141 | ) | 143 | FORCE = true |
142 | IF /I [%1]==[/BIN] ( | 144 | elseif name == "/R" then |
143 | SET LUA_BINDIR=%~2 | 145 | REGISTRY = true |
144 | SHIFT /1 | 146 | else |
145 | SHIFT /1 | 147 | die("Unrecognized option: " .. name) |
146 | GOTO PARSE_LOOP | 148 | end |
147 | ) | 149 | end |
148 | IF /I [%1]==[/FORCECONFIG] ( | 150 | end |
149 | SET FORCE_CONFIG=ON | 151 | |
150 | SHIFT /1 | 152 | -- check for combination/required flags |
151 | GOTO PARSE_LOOP | 153 | local function check_flags() |
152 | ) | 154 | if not P_SET then |
153 | IF /I [%1]==[/F] ( | 155 | die("Missing required parameter /P") |
154 | SET FORCE=ON | 156 | end |
155 | SHIFT /1 | 157 | if INSTALL_LUA then |
156 | GOTO PARSE_LOOP | 158 | if vars.LUA_INCDIR or vars.LUA_BINDIR or vars.LUA_LIBDIR or vars.LUA_PREFIX then |
157 | ) | 159 | die("Cannot combine option /L with any of /LUA /BIN /LIB /INC") |
158 | IF /I [%1]==[/R] ( | 160 | end |
159 | SET REGISTRY=ON | 161 | if vars.LUA_VERSION ~= "5.1" then |
160 | SHIFT /1 | 162 | die("Bundled Lua version is 5.1, cannot install 5.2") |
161 | GOTO PARSE_LOOP | 163 | end |
162 | ) | 164 | end |
163 | ECHO Unrecognized option: %1 | 165 | if vars.LUA_VERSION ~= "5.1" then |
164 | GOTO ERROR | 166 | if vars.LUA_VERSION == "5.2" then |
165 | :DONE_PARSING | 167 | vars.LUA_LIB_NAMES = vars.LUA_LIB_NAMES:gsub("5([%.]?)1", "5%12") |
166 | 168 | else | |
167 | REM check for combination/required flags | 169 | die("Bad argument: /LV must either be 5.1 or 5.2") |
168 | IF NOT [%P_SET%]==[TRUE] ( | 170 | end |
169 | Echo Missing required parameter /P | 171 | end |
170 | GOTO ERROR | 172 | end |
171 | ) | 173 | |
172 | IF [%INSTALL_LUA%]==[ON] ( | 174 | -- *********************************************************** |
173 | IF NOT [%LUA_INCDIR%%LUA_BINDIR%%LUA_LIBDIR%%LUA_PREFIX%]==[] ( | 175 | -- Detect Lua |
174 | ECHO Cannot combine option /L with any of /LUA /BIN /LIB /INC | 176 | -- *********************************************************** |
175 | GOTO ERROR | 177 | local function look_for_interpreter (directory) |
176 | ) | 178 | if vars.LUA_BINDIR then |
177 | IF NOT [%LUA_VERSION%]==[5.1] ( | 179 | if exists( S"$LUA_BINDIR\\lua$LUA_VERSION.exe" ) then |
178 | ECHO Bundled Lua version is 5.1, cannot install 5.2 | 180 | vars.LUA_INTERPRETER = S"lua$LUA_VERSION.exe" |
179 | GOTO ERROR | 181 | print(S" Found $LUA_BINDIR\\$LUA_INTERPRETER") |
180 | ) | 182 | return true |
181 | ) | 183 | elseif exists(S"$LUA_BINDIR\\lua.exe") then |
182 | IF NOT [%LUA_VERSION%]==[5.1] ( | 184 | vars.LUA_INTERPRETER = "lua.exe" |
183 | IF [%LUA_VERSION%]==[5.2] ( | 185 | print(S" Found $LUA_BINDIR\\$LUA_INTERPRETER") |
184 | SET LUA_LIB_NAMES=%LUA_LIB_NAMES:5.1=5.2% | 186 | return true |
185 | SET LUA_LIB_NAMES=%LUA_LIB_NAMES:51=52% | 187 | elseif exists(S"$LUA_BINDIR\\luajit.exe") then |
186 | ) ELSE ( | 188 | vars.LUA_INTERPRETER = "luajit.exe" |
187 | ECHO Bad argument: /LV must either be 5.1 or 5.2 | 189 | print(S" Found $LUA_BINDIR\\$LUA_INTERPRETER") |
188 | GOTO ERROR | 190 | return true |
189 | ) | 191 | end |
190 | ) | 192 | die(S"Lua executable lua.exe, luajit.exe or lua$LUA_VERSION.exe not found in $LUA_BINDIR") |
191 | 193 | end | |
192 | SET FULL_PREFIX=%PREFIX%\%VERSION% | 194 | |
193 | SET BINDIR=%FULL_PREFIX% | 195 | for _, e in ipairs{ [[\]], [[\bin\]] } do |
194 | SET LIBDIR=%FULL_PREFIX% | 196 | if exists(directory..e.."\\lua"..vars.LUA_VERSION..".exe") then |
195 | SET LUADIR=%FULL_PREFIX%\lua | 197 | vars.LUA_INTERPRETER = S"lua$LUA_VERSION.exe" |
196 | SET INCDIR=%FULL_PREFIX%\include | 198 | vars.LUA_BINDIR = directory .. e |
197 | SET LUA_SHORTV=%LUA_VERSION:.=% | 199 | print(" Found ."..e..vars.LUA_INTERPRETER) |
198 | 200 | return true | |
199 | REM *********************************************************** | 201 | |
200 | REM Detect Lua | 202 | elseif exists(directory..e.."\\lua.exe") then |
201 | REM *********************************************************** | 203 | vars.LUA_INTERPRETER = "lua.exe" |
202 | 204 | vars.LUA_BINDIR = directory..e | |
203 | IF [%INSTALL_LUA%]==[ON] GOTO USE_OWN_LUA | 205 | print(" Found ."..e..vars.LUA_INTERPRETER) |
204 | 206 | return true | |
205 | ECHO Looking for Lua interpreter | 207 | |
206 | FOR %%L IN (%LUA_PREFIX% c:\lua\5.1.2 c:\lua c:\kepler\1.1) DO ( | 208 | elseif exists(directory..e.."\\luajit.exe") then |
207 | ECHO checking %%L | 209 | vars.LUA_INTERPRETER = "luajit.exe" |
208 | SET CURR=%%L | 210 | vars.LUA_BINDIR = directory..e |
209 | IF EXIST "%%L" ( | 211 | print(" Found ."..e..vars.LUA_INTERPRETER) |
210 | IF NOT [%LUA_BINDIR%]==[] ( | 212 | return true |
211 | IF EXIST %LUA_BINDIR%\lua%LUA_VERSION%.exe ( | 213 | end |
212 | SET LUA_INTERPRETER=lua%LUA_VERSION%.exe | 214 | end |
213 | ECHO Found .\!LUA_INTERPRETER! | 215 | print(" No Lua interpreter found") |
214 | GOTO INTERPRETER_IS_SET | 216 | return false |
215 | ) | 217 | end |
216 | IF EXIST %LUA_BINDIR%\lua.exe ( | 218 | |
217 | SET LUA_INTERPRETER=lua.exe | 219 | local function look_for_link_libraries (directory) |
218 | ECHO Found .\!LUA_INTERPRETER! | 220 | if vars.LUA_LIBDIR then |
219 | GOTO INTERPRETER_IS_SET | 221 | for name in vars.LUA_LIB_NAMES:gmatch("[^%s]+") do |
220 | ) | 222 | print(S" checking for $LUA_LIBDIR\\"..name) |
221 | IF EXIST %LUA_BINDIR%\luajit.exe ( | 223 | if exists(vars.LUA_LIBDIR.."\\"..name) then |
222 | SET LUA_INTERPRETER=luajit.exe | 224 | vars.LUA_LIBNAME = name |
223 | ECHO Found .\!LUA_INTERPRETER! | 225 | print(" Found "..name) |
224 | GOTO INTERPRETER_IS_SET | 226 | return true |
225 | ) | 227 | end |
226 | ECHO Lua executable lua.exe, luajit.exe or lua%LUA_VERSION%.exe not found in %LUA_BINDIR% | 228 | end |
227 | GOTO ERROR | 229 | die(S"link library ^(one of; $LUA_LIB_NAMES^) not found in $LUA_LIBDIR") |
228 | ) | 230 | end |
229 | SET CURR=%%L | 231 | |
230 | FOR %%E IN (\ \bin\) DO ( | 232 | for _, e in ipairs{ [[\]], [[\lib\]], [[\bin\]]} do |
231 | IF EXIST "%%L%%E\lua%LUA_VERSION%.exe" ( | 233 | for name in vars.LUA_LIB_NAMES:gmatch("[^%s]+") do |
232 | SET LUA_INTERPRETER=lua%LUA_VERSION%.exe | 234 | print(" checking for "..directory..e.."\\"..name) |
233 | SET LUA_BINDIR=%%L%%E | 235 | if exists(directory..e.."\\"..name) then |
234 | ECHO Found .\%%E\!LUA_INTERPRETER! | 236 | vars.LUA_LIBDIR = directory .. e |
235 | GOTO INTERPRETER_IS_SET | 237 | vars.LUA_LIBNAME = name |
236 | ) | 238 | print(" Found "..name) |
237 | IF EXIST "%%L%%E\lua.exe" ( | 239 | return true |
238 | SET LUA_INTERPRETER=lua.exe | 240 | end |
239 | SET LUA_BINDIR=%%L%%E | 241 | end |
240 | ECHO Found .\%%E\!LUA_INTERPRETER! | 242 | end |
241 | GOTO INTERPRETER_IS_SET | 243 | return true |
242 | ) | 244 | end |
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 | 245 | ||
495 | :ERROR | 246 | local function look_for_headers (directory) |
496 | ECHO. | 247 | if vars.LUA_INCDIR then |
497 | ECHO Failed installing LuaRocks. Run with /? for help. | 248 | print(S" checking for $LUA_INCDIR\\lua.h") |
249 | if exists(S"$LUA_INCDIR\\lua.h") then | ||
250 | print(" Found lua.h") | ||
251 | return true | ||
252 | end | ||
253 | die(S"lua.h not found in $LUA_INCDIR") | ||
254 | end | ||
255 | |||
256 | for _, e in ipairs{ [[\]], [[\include\]]} do | ||
257 | print(" checking for "..directory..e.."\\lua.h") | ||
258 | if exists(directory..e.."\\lua.h") then | ||
259 | vars.LUA_INCDIR = directory..e | ||
260 | print(" Found lua.h") | ||
261 | return true | ||
262 | end | ||
263 | end | ||
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(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 = { | ||
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 | Will configure LuaRocks with the following paths: | ||
364 | LuaRocks : $FULL_PREFIX | ||
365 | Lua interpreter: $LUA_BINDIR\$LUA_INTERPRETER | ||
366 | Lua binaries : $LUA_BINDIR | ||
367 | Lua libraries : $LUA_LIBDIR | ||
368 | Lua includes : $LUA_INCDIR | ||
369 | Binaries will be linked against: $LUA_LIBNAME | ||
370 | |||
371 | ]]) | ||
372 | end | ||
373 | |||
374 | -- *********************************************************** | ||
375 | -- Install LuaRocks files | ||
376 | -- *********************************************************** | ||
377 | if FORCE then | ||
378 | print(S"Removing $FULL_PREFIX...") | ||
379 | exec(S[[RD /S /Q "$FULL_PREFIX"]]) | ||
380 | print() | ||
381 | end | ||
382 | |||
383 | if exists(vars.FULL_PREFIX) then | ||
384 | die(S"$FULL_PREFIX exists. Use /F to force removal and reinstallation.") | ||
385 | end | ||
386 | |||
387 | print(S"Installing LuaRocks in $FULL_PREFIX...") | ||
388 | if not exists(vars.BINDIR) then | ||
389 | if not mkdir(vars.BINDIR) then | ||
390 | die() | ||
391 | end | ||
392 | end | ||
393 | |||
394 | if INSTALL_LUA then | ||
395 | -- Copy the included Lua interpreter binaries | ||
396 | if not exists(vars.LUA_BINDIR) then | ||
397 | mkdir(vars.LUA_BINDIR) | ||
398 | end | ||
399 | if not exists(vars.LUA_INCDIR) then | ||
400 | mkdir(vars.LUA_INCDIR) | ||
401 | end | ||
402 | exec(S[[COPY lua5.1\bin\*.* "$LUA_BINDIR" >NUL]]) | ||
403 | exec(S[[COPY lua5.1\include\*.* "$LUA_INCDIR" >NUL]]) | ||
404 | print(S"Installed the LuaRocks bundled Lua interpreter in $LUA_BINDIR") | ||
405 | end | ||
406 | |||
407 | -- Copy the LuaRocks binaries | ||
408 | if not exec(S[[COPY bin\*.* "$BINDIR" >NUL]]) then | ||
409 | die() | ||
410 | end | ||
411 | -- Copy the LuaRocks lua source files | ||
412 | if not exists(S[[$LUADIR\luarocks]]) then | ||
413 | if not mkdir(S[[$LUADIR\luarocks]]) then | ||
414 | die() | ||
415 | end | ||
416 | end | ||
417 | if not exec(S[[XCOPY /S src\luarocks\*.* "$LUADIR\luarocks" >NUL]]) then | ||
418 | die() | ||
419 | end | ||
420 | -- Create start scripts | ||
421 | if not exec(S[[COPY src\bin\*.* "$BINDIR" >NUL]]) then | ||
422 | die() | ||
423 | end | ||
424 | for _, c in ipairs{"luarocks", "luarocks-admin"} do | ||
425 | -- rename unix-lua scripts to .lua files | ||
426 | if not exec( (S[[RENAME "$BINDIR\%s" %s.lua]]):format(c, c) ) then | ||
427 | die() | ||
428 | end | ||
429 | -- create a bootstrap batch file for the lua file, to start them | ||
430 | exec(S[[DEL /F /Q "$BINDIR\]]..c..[[.bat" 2>NUL]]) | ||
431 | local f = io.open(vars.BINDIR.."\\"..c..".bat", "w") | ||
432 | f:write(S[[ | ||
433 | @ECHO OFF | ||
434 | SETLOCAL | ||
435 | SET LUA_PATH=$LUADIR\?.lua;$LUADIR\?\init.lua;%LUA_PATH% | ||
436 | SET PATH=$BINDIR\;%PATH% | ||
437 | "$LUA_INTERPRETER" "$BINDIR\]]..c..[[.lua" %* | ||
498 | ENDLOCAL | 438 | ENDLOCAL |
499 | EXIT /B 1 | 439 | ]]) |
440 | f:close() | ||
441 | print(S"Created LuaRocks command: $BINDIR\\"..c..".bat") | ||
442 | end | ||
443 | -- configure 'scripts' directory | ||
444 | if vars.SCRIPTS_DIR then | ||
445 | mkdir(vars.SCRIPTS_DIR) | ||
446 | if USE_MINGW then | ||
447 | -- definitly not for MinGW because of conflicting runtimes | ||
448 | -- but is it ok to do it for others??? | ||
449 | exec(S[[COPY lua5.1\bin\*.dll "$SCRIPTS_DIR" >NUL]]) | ||
450 | end | ||
451 | else | ||
452 | mkdir(S[[$ROCKS_TREE\bin]]) | ||
453 | if USE_MINGW then | ||
454 | -- definitly not for MinGW because of conflicting runtimes | ||
455 | -- but is it ok to do it for others??? | ||
456 | exec(S[[COPY lua5.1\bin\*.dll "$ROCKS_TREE"\bin >NUL]]) | ||
457 | end | ||
458 | end | ||
459 | |||
460 | |||
461 | print() | ||
462 | print("Configuring LuaRocks...") | ||
463 | -- Create a site-config file | ||
464 | if exists(S[[$LUADIR\luarocks\site_config.lua]]) then | ||
465 | exec(S[[RENAME "$LUADIR\luarocks\site_config.lua" site_config.lua.bak]]) | ||
466 | end | ||
467 | local f = io.open(vars.LUADIR.."\\luarocks\\site_config.lua", "w") | ||
468 | f:write(S[=[ | ||
469 | module("luarocks.site_config") | ||
470 | LUA_INCDIR=[[$LUA_INCDIR]] | ||
471 | LUA_LIBDIR=[[$LUA_LIBDIR]] | ||
472 | LUA_BINDIR=[[$LUA_BINDIR]] | ||
473 | LUA_INTERPRETER=[[$LUA_INTERPRETER]] | ||
474 | ]=]) | ||
475 | if USE_MINGW then | ||
476 | f:write("LUAROCKS_UNAME_S=[[MINGW]]\n") | ||
477 | else | ||
478 | f:write("LUAROCKS_UNAME_S=[[WindowsNT]]\n") | ||
479 | end | ||
480 | f:write(S[=[ | ||
481 | LUAROCKS_UNAME_M=[[x86]] | ||
482 | LUAROCKS_SYSCONFIG=[[$SYSCONFDIR\config.lua]] | ||
483 | LUAROCKS_ROCKS_TREE=[[$ROCKS_TREE]] | ||
484 | LUAROCKS_PREFIX=[[$PREFIX]] | ||
485 | LUAROCKS_DOWNLOADER=[[wget]] | ||
486 | LUAROCKS_MD5CHECKER=[[md5sum]] | ||
487 | ]=]) | ||
488 | if FORCE_CONFIG then | ||
489 | f:write("local LUAROCKS_FORCE_CONFIG=true\n") | ||
490 | end | ||
491 | if exists(vars.LUADIR.."\\luarocks\\site_config.lua.bak") then | ||
492 | for line in io.lines(vars.LUADIR.."\\luarocks\\site_config.lua.bak", "r") do | ||
493 | f:write(line) | ||
494 | f:write("\n") | ||
495 | end | ||
496 | exec(S[[DEL /F /Q "$LUADIR\luarocks\site_config.lua.bak"]]) | ||
497 | end | ||
498 | f:close() | ||
499 | print(S[[Created LuaRocks site-config file: $LUADIR\luarocks\site_config.lua]]) | ||
500 | |||
501 | -- create config file | ||
502 | vars.CONFIG_FILE = vars.SYSCONFDIR.."\\config.lua" | ||
503 | if not exists(vars.SYSCONFDIR) then | ||
504 | mkdir(vars.SYSCONFDIR) | ||
505 | end | ||
506 | if not exists(vars.CONFIG_FILE) then | ||
507 | local f = io.open(vars.CONFIG_FILE, "w") | ||
508 | f:write([=[ | ||
509 | rocks_servers = { | ||
510 | [[http://luarocks.org/repositories/rocks]] | ||
511 | } | ||
512 | rocks_trees = { | ||
513 | ]=]) | ||
514 | if FORCE_CONFIG then | ||
515 | f:write(" home..[[/luarocks]],\n") | ||
516 | end | ||
517 | f:write(S" [[$ROCKS_TREE]]\n") | ||
518 | f:write("}\n") | ||
519 | if vars.SCRIPTS_DIR then | ||
520 | f:write(S"scripts_dir=[[$SCRIPTS_DIR]]\n") | ||
521 | end | ||
522 | f:write("variables = {\n") | ||
523 | if USE_MINGW then | ||
524 | f:write(" MSVCRT = 'm',\n") | ||
525 | else | ||
526 | f:write(" MSVCRT = 'msvcr80',\n") | ||
527 | end | ||
528 | f:write(S" LUALIB = '$LUA_LIBNAME'\n") | ||
529 | f:write("}\n") | ||
530 | f:close() | ||
531 | print(S"Created LuaRocks config file: $CONFIG_FILE") | ||
532 | else | ||
533 | print(S"LuaRocks config file already exists: $CONFIG_FILE") | ||
534 | end | ||
535 | |||
536 | print() | ||
537 | print("Creating rocktrees...") | ||
538 | if not exists(vars.ROCKS_TREE) then | ||
539 | mkdir(vars.ROCKS_TREE) | ||
540 | print(S[[Created rocktree: "$ROCKS_TREE"]]) | ||
541 | else | ||
542 | print(S[[Rocktree exists: "$ROCKS_TREE"]]) | ||
543 | end | ||
544 | local APPDATA = os.getenv("APPDATA") | ||
545 | if not exists(APPDATA.."\\luarocks") then | ||
546 | mkdir(APPDATA.."\\luarocks") | ||
547 | print([[Created rocktree: "]]..APPDATA..[[\luarocks"]]) | ||
548 | else | ||
549 | print([[Rocktree exists: "]]..APPDATA..[[\luarocks"]]) | ||
550 | end | ||
551 | |||
552 | -- Load registry information | ||
553 | if REGISTRY then | ||
554 | -- expand template with correct path information | ||
555 | print() | ||
556 | print([[Loading registry information for ".rockspec" files]]) | ||
557 | exec( S[[lua5.1\bin\lua5.1.exe "$FULL_PREFIX\create_reg_file.lua" "$FULL_PREFIX\LuaRocks.reg.template"]] ) | ||
558 | exec( S"$FULL_PREFIX\\LuaRocks.reg" ) | ||
559 | end | ||
560 | |||
561 | -- *********************************************************** | ||
562 | -- Exit handlers | ||
563 | -- *********************************************************** | ||
564 | |||
565 | print(S[[ | ||
566 | *** LuaRocks is installed! *** | ||
567 | |||
568 | You may want to add the following elements to your paths; | ||
569 | PATH : $LUA_BINDIR;$FULL_PREFIX | ||
570 | LUA_PATH : $ROCKS_TREE\share\lua\$LUA_VERSION\?.lua;$ROCKS_TREE\share\lua\$LUA_VERSION\?\init.lua | ||
571 | LUA_CPATH: $LUA_LIBDIR\lua\$LUA_VERSION\?.dll | ||
572 | |||
573 | ]]) | ||
574 | os.exit(0) | ||