From c9d57bd30f07dca8ac104fdadc6486a127e8509c Mon Sep 17 00:00:00 2001 From: Thijs Schreijer Date: Tue, 14 Jul 2015 18:56:20 +0200 Subject: minor textual fixes --- install.bat | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install.bat b/install.bat index 57e3611c..b9bfcb9b 100644 --- a/install.bat +++ b/install.bat @@ -97,7 +97,7 @@ local function permission() return exec("net session >NUL 2>&1") -- fails if not admin end --- rename file (full path) to backup (name only), appending number if required +-- rename filename (full path) to backupname (name only), appending number if required -- returns the new name (name only) local function backup(filename, backupname) local path = filename:match("(.+)%\\.-$").."\\" @@ -255,7 +255,7 @@ local function check_flags() die("Cannot combine option /L with any of /LUA /BIN /LIB /INC") end if vars.LUA_VERSION ~= "5.1" then - die("Bundled Lua version is 5.1, cannot install 5.2") + die("Bundled Lua version is 5.1, cannot install "..vars.LUA_VERSION) end end if vars.LUA_VERSION ~= "5.1" then -- cgit v1.2.3-55-g6feb From 8c182d5dec64de03a8226f562b4caec49982f025 Mon Sep 17 00:00:00 2001 From: Thijs Schreijer Date: Sat, 18 Jul 2015 23:56:16 +0200 Subject: Windows installer: backup configuration files before removing installation directory --- install.bat | 73 ++++++++++++++++++++++++++++++++----------------------------- 1 file changed, 38 insertions(+), 35 deletions(-) diff --git a/install.bat b/install.bat index b9bfcb9b..398a64eb 100644 --- a/install.bat +++ b/install.bat @@ -8,6 +8,7 @@ local vars = {} vars.PREFIX = nil vars.VERSION = "2.2" vars.SYSCONFDIR = nil +vars.CONFBACKUPDIR = nil vars.SYSCONFFILENAME = nil vars.CONFIG_FILE = nil vars.TREE_ROOT = nil @@ -79,7 +80,7 @@ end local function exec(cmd) --print(cmd) - local status = os.execute(cmd) + local status = os.execute("type NUL && "..cmd) return (status == 0 or status == true) -- compat 5.1/5.2 end @@ -479,6 +480,29 @@ local function look_for_lua_install () return false end +-- backup config[x.x].lua[.bak] and site_config[_x_x].lua +local function backup_config_files() + local temppath + while not temppath do + temppath = os.getenv("temp").."\\LR-config-backup-"..tostring(math.random(10000)) + if exists(temppath) then temppath = nil end + end + print("'"..temppath.."'") + vars.CONFBACKUPDIR = temppath + mkdir(vars.CONFBACKUPDIR) + exec(S[[COPY "$PREFIX\config*.*" "$CONFBACKUPDIR" >NUL]]) + exec(S[[COPY "$FULL_PREFIX\lua\luarocks\site_config*.*" "$CONFBACKUPDIR" >NUL]]) +end + +-- restore previously backed up config files +local function restore_config_files() + if not vars.CONFBACKUPDIR then return end -- there is no backup to restore + exec(S[[COPY "$CONFBACKUPDIR\config*.*" "$PREFIX" >NUL]]) + exec(S[[COPY "$CONFBACKUPDIR\site_config*.*" "$FULL_PREFIX\lua\luarocks" >NUL]]) + -- cleanup + exec(S[[RD /S /Q "$CONFBACKUPDIR"]]) + vars.CONFBACKUPDIR = nil +end -- *********************************************************** -- Installer script start @@ -664,14 +688,16 @@ print([[ -- *********************************************************** -- Install LuaRocks files -- *********************************************************** -if FORCE then - print(S"Removing $FULL_PREFIX...") - exec(S[[RD /S /Q "$FULL_PREFIX"]]) - print() -end if exists(vars.FULL_PREFIX) then - die(S"$FULL_PREFIX exists. Use /F to force removal and reinstallation.") + if not FORCE then + die(S"$FULL_PREFIX exists. Use /F to force removal and reinstallation.") + else + backup_config_files() + print(S"Removing $FULL_PREFIX...") + exec(S[[RD /S /Q "$FULL_PREFIX"]]) + print() + end end print(S"Installing LuaRocks in $FULL_PREFIX...") @@ -776,37 +802,21 @@ exit /b %EXITCODE% print(S"Created LuaRocks command: $BINDIR\\"..c..".bat") end --- part below was commented out as its purpose was unclear --- see https://github.com/keplerproject/luarocks/pull/197#issuecomment-30176548 - --- configure 'scripts' directory --- if vars.TREE_BIN then --- mkdir(vars.TREE_BIN) --- if not USE_MINGW then --- -- definitly not for MinGW because of conflicting runtimes --- -- but is it ok to do it for others??? --- exec(S[[COPY lua5.1\bin\*.dll "$TREE_BIN" >NUL]]) --- end --- else --- if not USE_MINGW then --- mkdir(S[[$TREE_ROOT\bin]]) --- -- definitly not for MinGW because of conflicting runtimes --- -- but is it ok to do it for others??? --- exec(S[[COPY lua5.1\bin\*.dll "$TREE_ROOT"\bin >NUL]]) --- end --- end - -- *********************************************************** -- Configure LuaRocks -- *********************************************************** +restore_config_files() print() print("Configuring LuaRocks...") -- Create a site-config file local site_config = S("site_config_$LUA_VERSION"):gsub("%.","_") if exists(S([[$LUADIR\luarocks\]]..site_config..[[.lua]])) then - exec(S([[RENAME "$LUADIR\luarocks\]]..site_config..[[.lua" site_config.lua.bak]])) + local nname = backup(S([[$LUADIR\luarocks\]]..site_config..[[.lua]]), site_config..".lua.bak") + print("***************") + print("*** WARNING *** LuaRocks site_config file already exists: '"..site_config..".lua'. The old file has been renamed to '"..nname.."'") + print("***************") end local f = io.open(vars.LUADIR.."\\luarocks\\"..site_config..".lua", "w") f:write(S[=[ @@ -832,13 +842,6 @@ site_config.LUAROCKS_MD5CHECKER=[[md5sum]] if FORCE_CONFIG then f:write("site_config.LUAROCKS_FORCE_CONFIG=true\n") end -if exists(vars.LUADIR.."\\luarocks\\"..site_config..".lua.bak") then - for line in io.lines(vars.LUADIR.."\\luarocks\\"..site_config..".lua.bak", "r") do - f:write(line) - f:write("\n") - end - exec(S([[DEL /F /Q "$LUADIR\luarocks\]]..site_config..[[.lua.bak"]])) -end f:write("return site_config\n") f:close() print(S([[Created LuaRocks site-config file: $LUADIR\luarocks\]]..site_config..[[.lua]])) -- cgit v1.2.3-55-g6feb From 5159a50f5fa28cd935c13d8d3bdea565117d6a29 Mon Sep 17 00:00:00 2001 From: Thijs Schreijer Date: Sun, 19 Jul 2015 00:11:20 +0200 Subject: Windows installer: no longer use the LR version in the target installation path. Fixes #151 --- install.bat | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/install.bat b/install.bat index 398a64eb..33453c65 100644 --- a/install.bat +++ b/install.bat @@ -487,18 +487,17 @@ local function backup_config_files() temppath = os.getenv("temp").."\\LR-config-backup-"..tostring(math.random(10000)) if exists(temppath) then temppath = nil end end - print("'"..temppath.."'") vars.CONFBACKUPDIR = temppath mkdir(vars.CONFBACKUPDIR) exec(S[[COPY "$PREFIX\config*.*" "$CONFBACKUPDIR" >NUL]]) - exec(S[[COPY "$FULL_PREFIX\lua\luarocks\site_config*.*" "$CONFBACKUPDIR" >NUL]]) + exec(S[[COPY "$PREFIX\lua\luarocks\site_config*.*" "$CONFBACKUPDIR" >NUL]]) end -- restore previously backed up config files local function restore_config_files() if not vars.CONFBACKUPDIR then return end -- there is no backup to restore exec(S[[COPY "$CONFBACKUPDIR\config*.*" "$PREFIX" >NUL]]) - exec(S[[COPY "$CONFBACKUPDIR\site_config*.*" "$FULL_PREFIX\lua\luarocks" >NUL]]) + exec(S[[COPY "$CONFBACKUPDIR\site_config*.*" "$PREFIX\lua\luarocks" >NUL]]) -- cleanup exec(S[[RD /S /Q "$CONFBACKUPDIR"]]) vars.CONFBACKUPDIR = nil @@ -610,11 +609,10 @@ else end vars.PREFIX = vars.PREFIX or os.getenv("PROGRAMFILES")..[[\LuaRocks]] -vars.FULL_PREFIX = S"$PREFIX\\$VERSION" -vars.BINDIR = vars.FULL_PREFIX -vars.LIBDIR = vars.FULL_PREFIX -vars.LUADIR = S"$FULL_PREFIX\\lua" -vars.INCDIR = S"$FULL_PREFIX\\include" +vars.BINDIR = vars.PREFIX +vars.LIBDIR = vars.PREFIX +vars.LUADIR = S"$PREFIX\\lua" +vars.INCDIR = S"$PREFIX\\include" vars.LUA_SHORTV = vars.LUA_VERSION:gsub("%.", "") if INSTALL_LUA then @@ -659,7 +657,7 @@ print(S[[ ========================== Will configure LuaRocks with the following paths: -LuaRocks : $FULL_PREFIX +LuaRocks : $PREFIX Config file : $CONFIG_FILE Rocktree : $TREE_ROOT @@ -689,18 +687,18 @@ print([[ -- Install LuaRocks files -- *********************************************************** -if exists(vars.FULL_PREFIX) then +if exists(vars.PREFIX) then if not FORCE then - die(S"$FULL_PREFIX exists. Use /F to force removal and reinstallation.") + die(S"$PREFIX exists. Use /F to force removal and reinstallation.") else backup_config_files() - print(S"Removing $FULL_PREFIX...") - exec(S[[RD /S /Q "$FULL_PREFIX"]]) + print(S"Removing $PREFIX...") + exec(S[[RD /S /Q "$PREFIX"]]) print() end end -print(S"Installing LuaRocks in $FULL_PREFIX...") +print(S"Installing LuaRocks in $PREFIX...") if not exists(vars.BINDIR) then if not mkdir(vars.BINDIR) then die() @@ -916,17 +914,17 @@ if REGISTRY then -- expand template with correct path information print() print([[Loading registry information for ".rockspec" files]]) - exec( S[[win32\lua5.1\bin\lua5.1.exe "$FULL_PREFIX\LuaRocks.reg.lua" "$FULL_PREFIX\LuaRocks.reg.template"]] ) - exec( S[[regedit /S "$FULL_PREFIX\\LuaRocks.reg"]] ) + exec( S[[win32\lua5.1\bin\lua5.1.exe "$PREFIX\LuaRocks.reg.lua" "$PREFIX\LuaRocks.reg.template"]] ) + exec( S[[regedit /S "$PREFIX\\LuaRocks.reg"]] ) end -- *********************************************************** -- Cleanup -- *********************************************************** -- remove regsitry related files, no longer needed -exec( S[[del "$FULL_PREFIX\LuaRocks.reg.*" >NUL]] ) +exec( S[[del "$PREFIX\LuaRocks.reg.*" >NUL]] ) -- remove pe-parser module -exec( S[[del "$FULL_PREFIX\pe-parser.lua" >NUL]] ) +exec( S[[del "$PREFIX\pe-parser.lua" >NUL]] ) -- *********************************************************** -- Exit handlers @@ -946,8 +944,8 @@ Lua interpreter; PATH : $LUA_BINDIR PATHEXT : .LUA LuaRocks; - PATH : $FULL_PREFIX - LUA_PATH : $FULL_PREFIX\lua\?.lua;$FULL_PREFIX\lua\?\init.lua + PATH : $PREFIX + LUA_PATH : $PREFIX\lua\?.lua;$PREFIX\lua\?\init.lua Local user rocktree (Note: %APPDATA% is user dependent); PATH : %APPDATA%\LuaRocks\bin LUA_PATH : %APPDATA%\LuaRocks\share\lua\$LUA_VERSION\?.lua;%APPDATA%\LuaRocks\share\lua\$LUA_VERSION\?\init.lua -- cgit v1.2.3-55-g6feb From b24f9b7453cf7a3ffd2e1b1f463f710508b491b2 Mon Sep 17 00:00:00 2001 From: Thijs Schreijer Date: Sun, 19 Jul 2015 00:22:33 +0200 Subject: update windows installer help text --- install.bat | 3 --- 1 file changed, 3 deletions(-) diff --git a/install.bat b/install.bat index 33453c65..17327992 100644 --- a/install.bat +++ b/install.bat @@ -122,9 +122,6 @@ local function print_help() Installs LuaRocks. /P [dir] Where to install LuaRocks. - Note that version; $VERSION, will be appended to this - path, so "/P c:\luarocks\" will install in - "c:\luarocks\$VERSION\" Default is %PROGRAMFILES%\LuaRocks Configuring the destinations: -- cgit v1.2.3-55-g6feb From cc621bf31aadd314d72ea6d49cffdca51b280add Mon Sep 17 00:00:00 2001 From: Thijs Schreijer Date: Sun, 19 Jul 2015 09:05:13 +0200 Subject: Fixes appveyor build script for changed paths --- .appveyor/build.bat | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.appveyor/build.bat b/.appveyor/build.bat index 48e72514..a4ff6378 100644 --- a/.appveyor/build.bat +++ b/.appveyor/build.bat @@ -18,9 +18,8 @@ if not defined LUAROCKS_VER set LUAROCKS_VER=2.2.1 set LUAROCKS_SHORTV=%LUAROCKS_VER:~0,3% if not defined LR_EXTERNAL set LR_EXTERNAL=c:\external -if not defined LUAROCKS_INSTALL set LUAROCKS_INSTALL=%LUA_DIR%\LuaRocks -if not defined LR_ROOT set LR_ROOT=%LUAROCKS_INSTALL%\%LUAROCKS_SHORTV% -if not defined LR_SYSTREE set LR_SYSTREE=%LUAROCKS_INSTALL%\systree +if not defined LR_ROOT set LR_ROOT=%LUA_DIR%\LuaRocks +if not defined LR_SYSTREE set LR_SYSTREE=%LR_ROOT%\systree :: :: ========================================================= @@ -35,7 +34,7 @@ if not exist %LUA_DIR%\bin\%LUA%.exe call :die "Missing Lua interpreter at %LUA_ :: ========================================================= cd %APPVEYOR_BUILD_FOLDER% -call install.bat /LUA %LUA_DIR% /Q /LV %LUA_SHORTV% /P "%LUAROCKS_INSTALL%" /TREE "%LR_SYSTREE%" +call install.bat /LUA %LUA_DIR% /Q /LV %LUA_SHORTV% /P "%LR_ROOT%" /TREE "%LR_SYSTREE%" if not exist "%LR_ROOT%" call :die "LuaRocks not found at %LR_ROOT%" -- cgit v1.2.3-55-g6feb From 838f1f9057e0066695b4f0fc762253b696025f92 Mon Sep 17 00:00:00 2001 From: Thijs Schreijer Date: Sun, 19 Jul 2015 09:40:45 +0200 Subject: added debug line --- .appveyor/build.bat | 1 + 1 file changed, 1 insertion(+) diff --git a/.appveyor/build.bat b/.appveyor/build.bat index a4ff6378..9bec8c54 100644 --- a/.appveyor/build.bat +++ b/.appveyor/build.bat @@ -47,6 +47,7 @@ set LUA_PATH=%LUA_PATH%;%LR_SYSTREE%\share\lua\%LUA_SHORTV%\?\init.lua set LUA_CPATH=%LR_SYSTREE%\lib\lua\%LUA_SHORTV%\?.dll call luarocks --version || call :die "Error with LuaRocks installation" +cd && dir call luarocks list -- cgit v1.2.3-55-g6feb From a625fe26e46fa0c61c1fbab82013589813ebf4c4 Mon Sep 17 00:00:00 2001 From: Thijs Schreijer Date: Mon, 20 Jul 2015 15:41:34 +0200 Subject: fixed bad reference to main LuaRocks install path, should fix AppVeyor failures --- .appveyor/build.bat | 1 - src/luarocks/cfg.lua | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.appveyor/build.bat b/.appveyor/build.bat index 9bec8c54..a4ff6378 100644 --- a/.appveyor/build.bat +++ b/.appveyor/build.bat @@ -47,7 +47,6 @@ set LUA_PATH=%LUA_PATH%;%LR_SYSTREE%\share\lua\%LUA_SHORTV%\?\init.lua set LUA_CPATH=%LR_SYSTREE%\lib\lua\%LUA_SHORTV%\?.dll call luarocks --version || call :die "Error with LuaRocks installation" -cd && dir call luarocks list diff --git a/src/luarocks/cfg.lua b/src/luarocks/cfg.lua index 31b3211a..70c1bd04 100644 --- a/src/luarocks/cfg.lua +++ b/src/luarocks/cfg.lua @@ -374,7 +374,7 @@ local defaults = { } if cfg.platforms.windows then - local full_prefix = (site_config.LUAROCKS_PREFIX or (os.getenv("PROGRAMFILES")..[[\LuaRocks]])).."\\"..cfg.major_version + local full_prefix = (site_config.LUAROCKS_PREFIX or (os.getenv("PROGRAMFILES")..[[\LuaRocks]])) extra_luarocks_module_dir = full_prefix.."\\lua\\?.lua" home_config_file = home_config_file and home_config_file:gsub("\\","/") -- cgit v1.2.3-55-g6feb From 6a0de88abc9bae4a50df72f702936c91e6109781 Mon Sep 17 00:00:00 2001 From: Thijs Schreijer Date: Sun, 26 Jul 2015 18:47:15 +0200 Subject: moved systree on top of Lua installation --- install.bat | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/install.bat b/install.bat index 17327992..b34e97b3 100644 --- a/install.bat +++ b/install.bat @@ -630,17 +630,23 @@ else vars.UNAME_M = get_architecture() -- can only do when installation was found end -local datapath -if vars.UNAME_M == "x86" then - datapath = os.getenv("PROGRAMFILES") .. [[\LuaRocks]] -else - -- our target interpreter is 64bit, so the tree (with binaries) should go into 64bit program files - datapath = os.getenv("ProgramW6432") .. [[\LuaRocks]] +-- check location of system tree +if not vars.TREE_ROOT then + -- no system tree location given, so we need to construct a default value + if vars.LUA_BINDIR:lower():match([[([\/]+bin[\/]*)$]]) then + -- lua binary is located in a 'bin' subdirectory, so assume + -- default Lua layout and match rocktree on top + vars.TREE_ROOT = vars.LUA_BINDIR:lower():gsub([[[\/]+bin[\/]*$]], [[\]]) + else + -- no 'bin', so use a named tree next to the Lua executable + vars.TREE_ROOT = vars.LUA_BINDIR .. [[\systree]] + end end + +local datapath vars.SYSCONFDIR = vars.SYSCONFDIR or vars.PREFIX vars.SYSCONFFILENAME = S"config-$LUA_VERSION.lua" vars.CONFIG_FILE = vars.SYSCONFDIR.."\\"..vars.SYSCONFFILENAME -vars.TREE_ROOT = vars.TREE_ROOT or datapath..[[\systree]] if SELFCONTAINED then vars.SYSCONFDIR = vars.PREFIX vars.TREE_ROOT = vars.PREFIX..[[\systree]] -- cgit v1.2.3-55-g6feb From 908756d54f22d16b743dad5d5d8314b4fb03817b Mon Sep 17 00:00:00 2001 From: Thijs Schreijer Date: Sun, 26 Jul 2015 22:35:42 +0200 Subject: update commandline help Windows installer --- install.bat | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/install.bat b/install.bat index b34e97b3..42b01c43 100644 --- a/install.bat +++ b/install.bat @@ -125,8 +125,9 @@ Installs LuaRocks. Default is %PROGRAMFILES%\LuaRocks Configuring the destinations: -/TREE [dir] Root of the local tree of installed rocks. - Default is %PROGRAMFILES%\LuaRocks\systree +/TREE [dir] Root of the local system tree of installed rocks. + Default is {BIN}\..\ if {BIN} ends with '\bin' + otherwise it is {BIN}\systree. /SCRIPTS [dir] Where to install commandline scripts installed by rocks. Default is {TREE}\bin. /LUAMOD [dir] Where to install Lua modules installed by rocks. -- cgit v1.2.3-55-g6feb From cb3e2aff5c1665db48bdd274bd696a0d465cbd3a Mon Sep 17 00:00:00 2001 From: Thijs Schreijer Date: Tue, 27 Oct 2015 09:26:52 +0100 Subject: explicit warn when enviornment variable given filename doesn't exist --- src/luarocks/cfg.lua | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/src/luarocks/cfg.lua b/src/luarocks/cfg.lua index 70c1bd04..66d3d25a 100644 --- a/src/luarocks/cfg.lua +++ b/src/luarocks/cfg.lua @@ -228,17 +228,33 @@ end if not site_config.LUAROCKS_FORCE_CONFIG then home_config_file_default = home_config_dir.."/config-"..cfg.lua_version..".lua" - local list = { - os.getenv("LUAROCKS_CONFIG_" .. version_suffix) or os.getenv("LUAROCKS_CONFIG"), - home_config_file_default, - home_config_dir.."/config.lua", - } - -- first entry might be a silent nil, check and remove if so - if not list[1] then table.remove(list, 1) end - home_config_file = load_config_file(list) - home_config_ok = (home_config_file ~= nil) + local config_env_var = "LUAROCKS_CONFIG_" .. version_suffix + local config_env_value = os.getenv(config_env_var) + if not config_env_value then + config_env_var = "LUAROCKS_CONFIG" + config_env_value = os.getenv(config_env_var) + end + + -- first try environment provided file, so we can explicitly warn when it is missing + if config_env_value then + local list = { config_env_value } + home_config_file = load_config_file(list) + home_config_ok = (home_config_file ~= nil) + if not home_config_ok then + io.stderr:write("Warning: could not load configuration file `"..config_env_value.."` given in environment variable "..config_env_var.."\n") + end + end + -- try the alternative defaults if there was no environment specified file or it didn't work + if not home_config_ok then + local list = { + home_config_file_default, + home_config_dir.."/config.lua", + } + home_config_file = load_config_file(list) + home_config_ok = (home_config_file ~= nil) + end end -- cgit v1.2.3-55-g6feb