From 48babcc745639f417c87c08cbaf989b9f0e7fc01 Mon Sep 17 00:00:00 2001 From: Hisham Muhammad Date: Wed, 16 Feb 2022 18:10:39 -0300 Subject: fix deployment on non-wrapped binaries (#1375) * fix deployment on non-wrapped binaries Fixes #1374. * Do not add .bat extension inside win32.wrap_script --- src/luarocks/cmd/init.lua | 4 ++-- src/luarocks/fs/win32.lua | 5 ++--- src/luarocks/repos.lua | 24 ++++++++++++++++-------- 3 files changed, 20 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/luarocks/cmd/init.lua b/src/luarocks/cmd/init.lua index af88760f..8bccb23f 100644 --- a/src/luarocks/cmd/init.lua +++ b/src/luarocks/cmd/init.lua @@ -145,7 +145,7 @@ function init.command(args) luarocks_wrapper = dir.path(".", luarocks_wrapper) if not fs.exists(luarocks_wrapper) then util.printout("Preparing " .. luarocks_wrapper .. " ...") - fs.wrap_script(arg[0], "luarocks", "none", nil, nil, "--project-tree", tree) + fs.wrap_script(arg[0], luarocks_wrapper, "none", nil, nil, "--project-tree", tree) else util.printout(luarocks_wrapper .. " already exists. Not overwriting it!") end @@ -164,7 +164,7 @@ function init.command(args) if util.check_lua_version(interp, cfg.lua_version) then util.printout("Preparing " .. lua_wrapper .. " for version " .. cfg.lua_version .. "...") path.use_tree(tree) - fs.wrap_script(nil, "lua", "all") + fs.wrap_script(nil, lua_wrapper, "all") else util.warning("No Lua interpreter detected for version " .. cfg.lua_version .. ". Not creating " .. lua_wrapper) end diff --git a/src/luarocks/fs/win32.lua b/src/luarocks/fs/win32.lua index 6d869d99..1902a691 100644 --- a/src/luarocks/fs/win32.lua +++ b/src/luarocks/fs/win32.lua @@ -154,10 +154,9 @@ function win32.wrap_script(script, target, deps_mode, name, version, ...) assert(type(name) == "string" or not name) assert(type(version) == "string" or not version) - local batname = target .. ".bat" - local wrapper = io.open(batname, "wb") + local wrapper = io.open(target, "wb") if not wrapper then - return nil, "Could not open "..batname.." for writing." + return nil, "Could not open "..target.." for writing." end local lpath, lcpath = path.package_paths(deps_mode) diff --git a/src/luarocks/repos.lua b/src/luarocks/repos.lua index cf2ce14b..764fe3ad 100644 --- a/src/luarocks/repos.lua +++ b/src/luarocks/repos.lua @@ -309,7 +309,7 @@ local function prepare_op_install() return nil, err end - local backup, err = backup_existing(op.backup, op.realdst or op.dst) + local backup, err = backup_existing(op.backup, op.dst) if err then return nil, err end @@ -403,14 +403,22 @@ end --- Double check that all files referenced in `rock_manifest` are installed in `repo`. function repos.check_everything_is_installed(name, version, rock_manifest, repo, accept_versioned) local missing = {} + local suffix = cfg.wrapper_suffix or "" for _, category in ipairs({"bin", "lua", "lib"}) do - local suffix = (category == "bin") and cfg.wrapper_suffix or "" if rock_manifest[category] then repos.recurse_rock_manifest_entry(rock_manifest[category], function(file_path) local paths = get_deploy_paths(name, version, category, file_path, repo) - if not (fs.exists(paths.nv .. suffix) or (accept_versioned and fs.exists(paths.v .. suffix))) then - table.insert(missing, paths.nv .. suffix) + if category == "bin" then + if (fs.exists(paths.nv) or fs.exists(paths.nv .. suffix)) + or (accept_versioned and (fs.exists(paths.v) or fs.exists(paths.v .. suffix))) then + return + end + else + if fs.exists(paths.nv) or (accept_versioned and fs.exists(paths.v)) then + return + end end + table.insert(missing, paths.nv) end) end end @@ -470,10 +478,10 @@ function repos.deploy_files(name, version, wrap_bin_scripts, deps_mode) end local target = mode == "nv" and paths.nv or paths.v local backup = name ~= cur_name or version ~= cur_version - local realdst = (wrap_bin_scripts and fs.is_lua(source)) - and (target .. (cfg.wrapper_suffix or "")) - or target - table.insert(installs, { fn = install_binary, src = source, dst = target, backup = backup, realdst = realdst }) + if wrap_bin_scripts and fs.is_lua(source) then + target = target .. (cfg.wrapper_suffix or "") + end + table.insert(installs, { fn = install_binary, src = source, dst = target, backup = backup }) end) end -- cgit v1.2.3-55-g6feb