aboutsummaryrefslogtreecommitdiff
path: root/install.bat
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2014-01-03 14:26:43 -0200
committerHisham Muhammad <hisham@gobolinux.org>2014-01-03 14:26:43 -0200
commitf4b271c51c1c05db92a9a12ca39c2ec5208937e0 (patch)
tree52093e6fbbcbf39f1348661f0ac016b8b9072784 /install.bat
parent8927752c7b90f3ed5a6265aebaf3f63ee19bb8ad (diff)
parent5abe779e56af672a935d0fb9d4d83e85d853f3f8 (diff)
downloadluarocks-f4b271c51c1c05db92a9a12ca39c2ec5208937e0.tar.gz
luarocks-f4b271c51c1c05db92a9a12ca39c2ec5208937e0.tar.bz2
luarocks-f4b271c51c1c05db92a9a12ca39c2ec5208937e0.zip
Merge branch 'master' of github.com:keplerproject/luarocks
Diffstat (limited to 'install.bat')
-rw-r--r--install.bat131
1 files changed, 108 insertions, 23 deletions
diff --git a/install.bat b/install.bat
index f6d6f842..8f877c57 100644
--- a/install.bat
+++ b/install.bat
@@ -5,10 +5,10 @@ rem=rem --[[
5local vars = {} 5local vars = {}
6 6
7 7
8vars.PREFIX = os.getenv("PROGRAMFILES")..[[\LuaRocks]] 8vars.PREFIX = nil
9vars.VERSION = "2.1" 9vars.VERSION = "2.1"
10vars.SYSCONFDIR = (os.getenv("PROGRAMDATA") or (os.getenv("ALLUSERSPROFILE")..[[\Application Data]])) .. [[\LuaRocks]] -- ALLUSERS for WinXP compat 10vars.SYSCONFDIR = nil
11vars.ROCKS_TREE = vars.SYSCONFDIR 11vars.ROCKS_TREE = nil
12vars.SCRIPTS_DIR = nil 12vars.SCRIPTS_DIR = nil
13vars.LUA_INTERPRETER = nil 13vars.LUA_INTERPRETER = nil
14vars.LUA_PREFIX = nil 14vars.LUA_PREFIX = nil
@@ -26,9 +26,10 @@ local FORCE = false
26local FORCE_CONFIG = false 26local FORCE_CONFIG = false
27local INSTALL_LUA = false 27local INSTALL_LUA = false
28local USE_MINGW = false 28local USE_MINGW = false
29local REGISTRY = false 29local REGISTRY = true
30local NOADMIN = false 30local NOADMIN = false
31local PROMPT = true 31local PROMPT = true
32local SELFCONTAINED = false
32 33
33--- 34---
34-- Some helpers 35-- Some helpers
@@ -120,10 +121,19 @@ Installs LuaRocks.
120 121
121Configuring the destinations: 122Configuring the destinations:
122/TREE [dir] Root of the local tree of installed rocks. 123/TREE [dir] Root of the local tree of installed rocks.
123 Default is %PROGRAMDATA%\LuaRocks 124 Default is %PROGRAMFILES%\LuaRocks\systree
124/SCRIPTS [dir] Where to install commandline scripts installed by 125/SCRIPTS [dir] Where to install commandline scripts installed by
125 rocks. Default is {TREE}/bin. 126 rocks. Default is {TREE}/bin.
126 127/CONFIG [dir] Location where the config file should be installed.
128 Default is %PROGRAMFILES%\LuaRocks
129/SELFCONTAINED Creates a self contained installation in a single
130 directory given by /P.
131 Sets the /TREE and /CONFIG options to the same
132 location as /P. And does not load registry info
133 with option /NOREG. The only option NOT self
134 contained is the user rock tree, so don't use that
135 if you create a self contained installation.
136
127Configuring the Lua interpreter: 137Configuring the Lua interpreter:
128/LV [version] Lua version to use; either 5.1 or 5.2. 138/LV [version] Lua version to use; either 5.1 or 5.2.
129 Default is 5.1 139 Default is 5.1
@@ -149,14 +159,12 @@ Compiler configuration:
149/MW Use mingw as build system instead of MSVC 159/MW Use mingw as build system instead of MSVC
150 160
151Other options: 161Other options:
152/CONFIG [dir] Location where the config file should be installed.
153 Default is %PROGRAMDATA%\LuaRocks
154/FORCECONFIG Use a single config location. Do not use the 162/FORCECONFIG Use a single config location. Do not use the
155 LUAROCKS_CONFIG variable or the user's home directory. 163 LUAROCKS_CONFIG variable or the user's home directory.
156 Useful to avoid conflicts when LuaRocks 164 Useful to avoid conflicts when LuaRocks
157 is embedded within an application. 165 is embedded within an application.
158/F Remove installation directory if it already exists. 166/F Remove installation directory if it already exists.
159/R Load registry information to register '.rockspec' 167/NOREG Do not load registry info to register '.rockspec'
160 extension with LuaRocks commands (right-click). 168 extension with LuaRocks commands (right-click).
161/NOADMIN The installer requires admin priviledges. If not 169/NOADMIN The installer requires admin priviledges. If not
162 available it will elevate a new process. Use this 170 available it will elevate a new process. Use this
@@ -165,10 +173,6 @@ Other options:
165 user. 173 user.
166/Q Do not prompt for confirmation of settings 174/Q Do not prompt for confirmation of settings
167 175
168Example:
169To create a self contained install use (assuming Lua is in your PATH):
170INSTALL /P c:\LuaRocks /TREE c:\LuaRocks /CONFIG c:\LuaRocks
171
172]]) 176]])
173end 177end
174 178
@@ -207,8 +211,10 @@ local function parse_options(args)
207 FORCE_CONFIG = true 211 FORCE_CONFIG = true
208 elseif name == "/F" then 212 elseif name == "/F" then
209 FORCE = true 213 FORCE = true
210 elseif name == "/R" then 214 elseif name == "/SELFCONTAINED" then
211 REGISTRY = true 215 SELFCONTAINED = true
216 elseif name == "/NOREG" then
217 REGISTRY = false
212 elseif name == "/NOADMIN" then 218 elseif name == "/NOADMIN" then
213 NOADMIN = true 219 NOADMIN = true
214 elseif name == "/Q" then 220 elseif name == "/Q" then
@@ -221,6 +227,14 @@ end
221 227
222-- check for combination/required flags 228-- check for combination/required flags
223local function check_flags() 229local function check_flags()
230 if SELFCONTAINED then
231 if not vars.PREFIX then
232 die("Option /P is required when using /SELFCONTAINED")
233 end
234 if vars.SYSCONFDIR or vars.ROCKS_TREE or vars.SCRIPTS_DIR then
235 die("Cannot combine /TREE, /SCRIPTS or /CONFIG with /SELFCONTAINED")
236 end
237 end
224 if INSTALL_LUA then 238 if INSTALL_LUA then
225 if vars.LUA_INCDIR or vars.LUA_BINDIR or vars.LUA_LIBDIR or vars.LUA_PREFIX then 239 if vars.LUA_INCDIR or vars.LUA_BINDIR or vars.LUA_LIBDIR or vars.LUA_PREFIX then
226 die("Cannot combine option /L with any of /LUA /BIN /LIB /INC") 240 die("Cannot combine option /L with any of /LUA /BIN /LIB /INC")
@@ -505,6 +519,14 @@ end
505 519
506print(S"LuaRocks $VERSION.x installer.\n") 520print(S"LuaRocks $VERSION.x installer.\n")
507 521
522print([[
523
524========================
525== Checking system... ==
526========================
527
528]])
529
508parse_options(config) 530parse_options(config)
509check_flags() 531check_flags()
510 532
@@ -536,6 +558,7 @@ else
536 print("Admin priviledges available for installing") 558 print("Admin priviledges available for installing")
537end 559end
538 560
561vars.PREFIX = vars.PREFIX or os.getenv("PROGRAMFILES")..[[\LuaRocks]]
539vars.FULL_PREFIX = S"$PREFIX\\$VERSION" 562vars.FULL_PREFIX = S"$PREFIX\\$VERSION"
540vars.BINDIR = vars.FULL_PREFIX 563vars.BINDIR = vars.FULL_PREFIX
541vars.LIBDIR = vars.FULL_PREFIX 564vars.LIBDIR = vars.FULL_PREFIX
@@ -561,16 +584,38 @@ else
561 vars.UNAME_M = get_architecture() -- can only do when installation was found 584 vars.UNAME_M = get_architecture() -- can only do when installation was found
562end 585end
563 586
587local datapath
588if vars.UNAME_M == "x86" then
589 datapath = os.getenv("PROGRAMFILES") .. [[\LuaRocks]]
590else
591 -- our target interpreter is 64bit, so the tree (with binaries) should go into 64bit program files
592 datapath = os.getenv("ProgramW6432") .. [[\LuaRocks]]
593end
594vars.SYSCONFDIR = vars.SYSCONDFIR or datapath
595vars.ROCKS_TREE = vars.ROCKS_TREE or datapath..[[\systree]]
596if SELFCONTAINED then
597 vars.SYSCONFDIR = vars.PREFIX
598 vars.ROCKS_TREE = vars.PREFIX..[[\systree]]
599 REGISTRY = false
600end
601
564print(S[[ 602print(S[[
565 603
604==========================
605== System check results ==
606==========================
607
566Will configure LuaRocks with the following paths: 608Will configure LuaRocks with the following paths:
567LuaRocks : $FULL_PREFIX 609LuaRocks : $FULL_PREFIX
568Lua interpreter: $LUA_BINDIR\$LUA_INTERPRETER 610Config file : $SYSCONFDIR\config.lua
569 binaries : $LUA_BINDIR 611Rocktree : $ROCKS_TREE
570 libraries : $LUA_LIBDIR 612
571 includes : $LUA_INCDIR 613Lua interpreter : $LUA_BINDIR\$LUA_INTERPRETER
572Binaries will be linked against: $LUA_LIBNAME with runtime $LUA_RUNTIME 614 binaries : $LUA_BINDIR
573System architecture detected as: $UNAME_M 615 libraries : $LUA_LIBDIR
616 includes : $LUA_INCDIR
617 architecture: $UNAME_M
618 binary link : $LUA_LIBNAME with runtime $LUA_RUNTIME.dll
574 619
575]]) 620]])
576 621
@@ -579,6 +624,14 @@ if PROMPT then
579 io.read() 624 io.read()
580end 625end
581 626
627print([[
628
629============================
630== Installing LuaRocks... ==
631============================
632
633]])
634
582-- *********************************************************** 635-- ***********************************************************
583-- Install LuaRocks files 636-- Install LuaRocks files
584-- *********************************************************** 637-- ***********************************************************
@@ -646,6 +699,35 @@ IF NOT "%LUA_PATH_5_2%"=="" (
646) 699)
647SET "PATH=$BINDIR;%PATH%" 700SET "PATH=$BINDIR;%PATH%"
648"$LUA_INTERPRETER" "$BINDIR\]]..c..[[.lua" %* 701"$LUA_INTERPRETER" "$BINDIR\]]..c..[[.lua" %*
702IF NOT "%ERRORLEVEL%"=="2" GOTO EXITLR
703
704REM Permission denied error, try and auto elevate...
705REM already an admin? (checking to prevent loops)
706NET SESSION >NUL 2>&1
707IF "%ERRORLEVEL%"=="0" GOTO EXITLR
708
709REM Do we have PowerShell available?
710PowerShell /? >NUL 2>&1
711IF NOT "%ERRORLEVEL%"=="0" GOTO EXITLR
712
713:GETTEMPNAME
714SET TMPFILE=%TEMP%\LuaRocks-Elevator-%RANDOM%.bat
715IF EXIST "%TMPFILE%" GOTO :GETTEMPNAME
716
717ECHO @ECHO OFF > "%TMPFILE%"
718ECHO CHDIR /D %CD% >> "%TMPFILE%"
719ECHO ECHO %0 %* >> "%TMPFILE%"
720ECHO ECHO. >> "%TMPFILE%"
721ECHO CALL %0 %* >> "%TMPFILE%"
722ECHO ECHO. >> "%TMPFILE%"
723ECHO ECHO Press any key to close this window... >> "%TMPFILE%"
724ECHO PAUSE ^> NUL >> "%TMPFILE%"
725ECHO DEL "%TMPFILE%" >> "%TMPFILE%"
726
727ECHO Now retrying as a priviledged user...
728PowerShell -Command (New-Object -com 'Shell.Application').ShellExecute('%TMPFILE%', '', '', 'runas')
729
730:EXITLR
649ENDLOCAL 731ENDLOCAL
650]]) 732]])
651 f:close() 733 f:close()
@@ -799,7 +881,10 @@ exec( S[[del "$FULL_PREFIX\pe-parser.lua" >NUL]] )
799 881
800print(S[[ 882print(S[[
801 883
802*** LuaRocks is installed! *** 884============================
885== LuaRocks is installed! ==
886============================
887
803 888
804You may want to add the following elements to your paths; 889You may want to add the following elements to your paths;
805Lua interpreter; 890Lua interpreter;