diff options
author | Hisham Muhammad <hisham@gobolinux.org> | 2014-01-03 14:26:43 -0200 |
---|---|---|
committer | Hisham Muhammad <hisham@gobolinux.org> | 2014-01-03 14:26:43 -0200 |
commit | f4b271c51c1c05db92a9a12ca39c2ec5208937e0 (patch) | |
tree | 52093e6fbbcbf39f1348661f0ac016b8b9072784 /install.bat | |
parent | 8927752c7b90f3ed5a6265aebaf3f63ee19bb8ad (diff) | |
parent | 5abe779e56af672a935d0fb9d4d83e85d853f3f8 (diff) | |
download | luarocks-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.bat | 131 |
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 --[[ | |||
5 | local vars = {} | 5 | local vars = {} |
6 | 6 | ||
7 | 7 | ||
8 | vars.PREFIX = os.getenv("PROGRAMFILES")..[[\LuaRocks]] | 8 | vars.PREFIX = nil |
9 | vars.VERSION = "2.1" | 9 | vars.VERSION = "2.1" |
10 | vars.SYSCONFDIR = (os.getenv("PROGRAMDATA") or (os.getenv("ALLUSERSPROFILE")..[[\Application Data]])) .. [[\LuaRocks]] -- ALLUSERS for WinXP compat | 10 | vars.SYSCONFDIR = nil |
11 | vars.ROCKS_TREE = vars.SYSCONFDIR | 11 | vars.ROCKS_TREE = nil |
12 | vars.SCRIPTS_DIR = nil | 12 | vars.SCRIPTS_DIR = nil |
13 | vars.LUA_INTERPRETER = nil | 13 | vars.LUA_INTERPRETER = nil |
14 | vars.LUA_PREFIX = nil | 14 | vars.LUA_PREFIX = nil |
@@ -26,9 +26,10 @@ local FORCE = false | |||
26 | local FORCE_CONFIG = false | 26 | local FORCE_CONFIG = false |
27 | local INSTALL_LUA = false | 27 | local INSTALL_LUA = false |
28 | local USE_MINGW = false | 28 | local USE_MINGW = false |
29 | local REGISTRY = false | 29 | local REGISTRY = true |
30 | local NOADMIN = false | 30 | local NOADMIN = false |
31 | local PROMPT = true | 31 | local PROMPT = true |
32 | local SELFCONTAINED = false | ||
32 | 33 | ||
33 | --- | 34 | --- |
34 | -- Some helpers | 35 | -- Some helpers |
@@ -120,10 +121,19 @@ Installs LuaRocks. | |||
120 | 121 | ||
121 | Configuring the destinations: | 122 | Configuring 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 | |||
127 | Configuring the Lua interpreter: | 137 | Configuring 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 | ||
151 | Other options: | 161 | Other 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 | ||
168 | Example: | ||
169 | To create a self contained install use (assuming Lua is in your PATH): | ||
170 | INSTALL /P c:\LuaRocks /TREE c:\LuaRocks /CONFIG c:\LuaRocks | ||
171 | |||
172 | ]]) | 176 | ]]) |
173 | end | 177 | end |
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 |
223 | local function check_flags() | 229 | local 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 | ||
506 | print(S"LuaRocks $VERSION.x installer.\n") | 520 | print(S"LuaRocks $VERSION.x installer.\n") |
507 | 521 | ||
522 | print([[ | ||
523 | |||
524 | ======================== | ||
525 | == Checking system... == | ||
526 | ======================== | ||
527 | |||
528 | ]]) | ||
529 | |||
508 | parse_options(config) | 530 | parse_options(config) |
509 | check_flags() | 531 | check_flags() |
510 | 532 | ||
@@ -536,6 +558,7 @@ else | |||
536 | print("Admin priviledges available for installing") | 558 | print("Admin priviledges available for installing") |
537 | end | 559 | end |
538 | 560 | ||
561 | vars.PREFIX = vars.PREFIX or os.getenv("PROGRAMFILES")..[[\LuaRocks]] | ||
539 | vars.FULL_PREFIX = S"$PREFIX\\$VERSION" | 562 | vars.FULL_PREFIX = S"$PREFIX\\$VERSION" |
540 | vars.BINDIR = vars.FULL_PREFIX | 563 | vars.BINDIR = vars.FULL_PREFIX |
541 | vars.LIBDIR = vars.FULL_PREFIX | 564 | vars.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 |
562 | end | 585 | end |
563 | 586 | ||
587 | local datapath | ||
588 | if vars.UNAME_M == "x86" then | ||
589 | datapath = os.getenv("PROGRAMFILES") .. [[\LuaRocks]] | ||
590 | else | ||
591 | -- our target interpreter is 64bit, so the tree (with binaries) should go into 64bit program files | ||
592 | datapath = os.getenv("ProgramW6432") .. [[\LuaRocks]] | ||
593 | end | ||
594 | vars.SYSCONFDIR = vars.SYSCONDFIR or datapath | ||
595 | vars.ROCKS_TREE = vars.ROCKS_TREE or datapath..[[\systree]] | ||
596 | if SELFCONTAINED then | ||
597 | vars.SYSCONFDIR = vars.PREFIX | ||
598 | vars.ROCKS_TREE = vars.PREFIX..[[\systree]] | ||
599 | REGISTRY = false | ||
600 | end | ||
601 | |||
564 | print(S[[ | 602 | print(S[[ |
565 | 603 | ||
604 | ========================== | ||
605 | == System check results == | ||
606 | ========================== | ||
607 | |||
566 | Will configure LuaRocks with the following paths: | 608 | Will configure LuaRocks with the following paths: |
567 | LuaRocks : $FULL_PREFIX | 609 | LuaRocks : $FULL_PREFIX |
568 | Lua interpreter: $LUA_BINDIR\$LUA_INTERPRETER | 610 | Config file : $SYSCONFDIR\config.lua |
569 | binaries : $LUA_BINDIR | 611 | Rocktree : $ROCKS_TREE |
570 | libraries : $LUA_LIBDIR | 612 | |
571 | includes : $LUA_INCDIR | 613 | Lua interpreter : $LUA_BINDIR\$LUA_INTERPRETER |
572 | Binaries will be linked against: $LUA_LIBNAME with runtime $LUA_RUNTIME | 614 | binaries : $LUA_BINDIR |
573 | System 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() |
580 | end | 625 | end |
581 | 626 | ||
627 | print([[ | ||
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 | ) |
647 | SET "PATH=$BINDIR;%PATH%" | 700 | SET "PATH=$BINDIR;%PATH%" |
648 | "$LUA_INTERPRETER" "$BINDIR\]]..c..[[.lua" %* | 701 | "$LUA_INTERPRETER" "$BINDIR\]]..c..[[.lua" %* |
702 | IF NOT "%ERRORLEVEL%"=="2" GOTO EXITLR | ||
703 | |||
704 | REM Permission denied error, try and auto elevate... | ||
705 | REM already an admin? (checking to prevent loops) | ||
706 | NET SESSION >NUL 2>&1 | ||
707 | IF "%ERRORLEVEL%"=="0" GOTO EXITLR | ||
708 | |||
709 | REM Do we have PowerShell available? | ||
710 | PowerShell /? >NUL 2>&1 | ||
711 | IF NOT "%ERRORLEVEL%"=="0" GOTO EXITLR | ||
712 | |||
713 | :GETTEMPNAME | ||
714 | SET TMPFILE=%TEMP%\LuaRocks-Elevator-%RANDOM%.bat | ||
715 | IF EXIST "%TMPFILE%" GOTO :GETTEMPNAME | ||
716 | |||
717 | ECHO @ECHO OFF > "%TMPFILE%" | ||
718 | ECHO CHDIR /D %CD% >> "%TMPFILE%" | ||
719 | ECHO ECHO %0 %* >> "%TMPFILE%" | ||
720 | ECHO ECHO. >> "%TMPFILE%" | ||
721 | ECHO CALL %0 %* >> "%TMPFILE%" | ||
722 | ECHO ECHO. >> "%TMPFILE%" | ||
723 | ECHO ECHO Press any key to close this window... >> "%TMPFILE%" | ||
724 | ECHO PAUSE ^> NUL >> "%TMPFILE%" | ||
725 | ECHO DEL "%TMPFILE%" >> "%TMPFILE%" | ||
726 | |||
727 | ECHO Now retrying as a priviledged user... | ||
728 | PowerShell -Command (New-Object -com 'Shell.Application').ShellExecute('%TMPFILE%', '', '', 'runas') | ||
729 | |||
730 | :EXITLR | ||
649 | ENDLOCAL | 731 | ENDLOCAL |
650 | ]]) | 732 | ]]) |
651 | f:close() | 733 | f:close() |
@@ -799,7 +881,10 @@ exec( S[[del "$FULL_PREFIX\pe-parser.lua" >NUL]] ) | |||
799 | 881 | ||
800 | print(S[[ | 882 | print(S[[ |
801 | 883 | ||
802 | *** LuaRocks is installed! *** | 884 | ============================ |
885 | == LuaRocks is installed! == | ||
886 | ============================ | ||
887 | |||
803 | 888 | ||
804 | You may want to add the following elements to your paths; | 889 | You may want to add the following elements to your paths; |
805 | Lua interpreter; | 890 | Lua interpreter; |