aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2018-07-01 14:48:02 -0300
committerHisham Muhammad <hisham@gobolinux.org>2018-07-01 21:32:39 -0300
commit3a4459cb5c4e8b1a79524346ce75718e02aaf038 (patch)
tree0f597d7e195265e40f877e2ae5467657163fc50f /src
parent3b8d91a9bf9ddc8da1f104d3c3aa20241670e17b (diff)
downloadluarocks-3a4459cb5c4e8b1a79524346ce75718e02aaf038.tar.gz
luarocks-3a4459cb5c4e8b1a79524346ce75718e02aaf038.tar.bz2
luarocks-3a4459cb5c4e8b1a79524346ce75718e02aaf038.zip
wrapper scripts: honor deps_mode when wrapping scripts
Diffstat (limited to 'src')
-rw-r--r--src/luarocks/cmd/init.lua4
-rw-r--r--src/luarocks/core/cfg.lua1
-rw-r--r--src/luarocks/fs/unix.lua15
-rw-r--r--src/luarocks/fs/win32.lua12
-rw-r--r--src/luarocks/path.lua12
-rw-r--r--src/luarocks/repos.lua8
6 files changed, 36 insertions, 16 deletions
diff --git a/src/luarocks/cmd/init.lua b/src/luarocks/cmd/init.lua
index 9722dfdd..6f38b31e 100644
--- a/src/luarocks/cmd/init.lua
+++ b/src/luarocks/cmd/init.lua
@@ -92,14 +92,14 @@ function init.command(flags, name, version)
92 local luarocks_wrapper = "./luarocks" .. ext 92 local luarocks_wrapper = "./luarocks" .. ext
93 if not fs.exists(luarocks_wrapper) then 93 if not fs.exists(luarocks_wrapper) then
94 util.printout("Preparing " .. luarocks_wrapper .. " ...") 94 util.printout("Preparing " .. luarocks_wrapper .. " ...")
95 fs.wrap_script(arg[0], "luarocks", nil, nil, "--project-tree", tree) 95 fs.wrap_script(arg[0], "luarocks", "none", nil, nil, "--project-tree", tree)
96 end 96 end
97 97
98 local lua_wrapper = "./lua" .. ext 98 local lua_wrapper = "./lua" .. ext
99 if not fs.exists(lua_wrapper) then 99 if not fs.exists(lua_wrapper) then
100 util.printout("Preparing " .. lua_wrapper .. " ...") 100 util.printout("Preparing " .. lua_wrapper .. " ...")
101 path.use_tree(tree) 101 path.use_tree(tree)
102 fs.wrap_script(nil, "lua") 102 fs.wrap_script(nil, "lua", "all")
103 end 103 end
104 104
105 return true 105 return true
diff --git a/src/luarocks/core/cfg.lua b/src/luarocks/core/cfg.lua
index ee9af258..e160d69b 100644
--- a/src/luarocks/core/cfg.lua
+++ b/src/luarocks/core/cfg.lua
@@ -591,6 +591,7 @@ function cfg.init(lua_data, project_dir, warning)
591 end 591 end
592 sys_config_file = sdir .. "/" .. name 592 sys_config_file = sdir .. "/" .. name
593 home_config_file = hdir .. "/" .. name 593 home_config_file = hdir .. "/" .. name
594 cfg.sysconfdir = sdir
594 595
595 sys_config_file = sys_config_file:gsub("\\", "/") 596 sys_config_file = sys_config_file:gsub("\\", "/")
596 home_config_file = home_config_file:gsub("\\", "/") 597 home_config_file = home_config_file:gsub("\\", "/")
diff --git a/src/luarocks/fs/unix.lua b/src/luarocks/fs/unix.lua
index 4ca68ce5..d6f3f0ae 100644
--- a/src/luarocks/fs/unix.lua
+++ b/src/luarocks/fs/unix.lua
@@ -6,6 +6,7 @@ local fs = require("luarocks.fs")
6 6
7local cfg = require("luarocks.core.cfg") 7local cfg = require("luarocks.core.cfg")
8local dir = require("luarocks.dir") 8local dir = require("luarocks.dir")
9local path = require("luarocks.path")
9local util = require("luarocks.util") 10local util = require("luarocks.util")
10 11
11--- Annotate command string for quiet execution. 12--- Annotate command string for quiet execution.
@@ -64,27 +65,27 @@ end
64-- @param version string: rock version to be used in loader context. 65-- @param version string: rock version to be used in loader context.
65-- @return boolean or (nil, string): True if succeeded, or nil and 66-- @return boolean or (nil, string): True if succeeded, or nil and
66-- an error message. 67-- an error message.
67function unix.wrap_script(file, dest, name, version, ...) 68function unix.wrap_script(file, dest, deps_mode, name, version, ...)
68 assert(type(file) == "string" or not file) 69 assert(type(file) == "string" or not file)
69 assert(type(dest) == "string") 70 assert(type(dest) == "string")
71 assert(type(deps_mode) == "string")
70 assert(type(name) == "string" or not name) 72 assert(type(name) == "string" or not name)
71 assert(type(version) == "string" or not version) 73 assert(type(version) == "string" or not version)
72 74
73 local wrapname = fs.is_dir(dest) and dest.."/"..dir.base_name(file) or dest 75 local wrapname = fs.is_dir(dest) and dest.."/"..dir.base_name(file) or dest
76
74 local wrapper = io.open(wrapname, "w") 77 local wrapper = io.open(wrapname, "w")
75 if not wrapper then 78 if not wrapper then
76 return nil, "Could not open "..wrapname.." for writing." 79 return nil, "Could not open "..wrapname.." for writing."
77 end 80 end
78 81
79 local lpath, lcpath = cfg.package_paths(cfg.root_dir) 82 local lpath, lcpath = path.package_paths(deps_mode)
80 lpath = util.cleanup_path(lpath, ";", cfg.lua_version)
81 lcpath = util.cleanup_path(lcpath, ";", cfg.lua_version)
82 83
83 local luainit = { 84 local luainit = {
84 "package.path="..util.LQ(lpath..";").."..package.path", 85 "package.path="..util.LQ(lpath..";").."..package.path",
85 "package.cpath="..util.LQ(lcpath..";").."..package.cpath", 86 "package.cpath="..util.LQ(lcpath..";").."..package.cpath",
86 } 87 }
87 if dest == "luarocks" then 88 if dest == "luarocks" or dest == "luarocks-admin" then
88 luainit = { 89 luainit = {
89 "package.path="..util.LQ(package.path), 90 "package.path="..util.LQ(package.path),
90 "package.cpath="..util.LQ(package.cpath), 91 "package.cpath="..util.LQ(package.cpath),
@@ -103,7 +104,9 @@ function unix.wrap_script(file, dest, name, version, ...)
103 } 104 }
104 105
105 wrapper:write("#!/bin/sh\n\n") 106 wrapper:write("#!/bin/sh\n\n")
106 wrapper:write("LUA_INIT="..fs.Q(table.concat(luainit, ";")).." exec "..table.concat(argv, " ")..' "$@"\n') 107 wrapper:write("LUAROCKS_SYSCONFDIR="..fs.Q(cfg.sysconfdir) .. " ")
108 wrapper:write("LUA_INIT="..fs.Q(table.concat(luainit, ";")).." ")
109 wrapper:write("exec "..table.concat(argv, " ")..' "$@"\n')
107 wrapper:close() 110 wrapper:close()
108 111
109 if fs.set_permissions(wrapname, "exec", "user") then 112 if fs.set_permissions(wrapname, "exec", "user") then
diff --git a/src/luarocks/fs/win32.lua b/src/luarocks/fs/win32.lua
index 46a11fa0..7b3755d6 100644
--- a/src/luarocks/fs/win32.lua
+++ b/src/luarocks/fs/win32.lua
@@ -7,6 +7,7 @@ local fs = require("luarocks.fs")
7 7
8local cfg = require("luarocks.core.cfg") 8local cfg = require("luarocks.core.cfg")
9local dir = require("luarocks.dir") 9local dir = require("luarocks.dir")
10local path = require("luarocks.path")
10local util = require("luarocks.util") 11local util = require("luarocks.util")
11 12
12-- Monkey patch io.popen and os.execute to make sure quoting 13-- Monkey patch io.popen and os.execute to make sure quoting
@@ -131,23 +132,21 @@ end
131-- @param version string: rock version to be used in loader context. 132-- @param version string: rock version to be used in loader context.
132-- @return boolean or (nil, string): True if succeeded, or nil and 133-- @return boolean or (nil, string): True if succeeded, or nil and
133-- an error message. 134-- an error message.
134function win32.wrap_script(file, dest, name, version, ...) 135function win32.wrap_script(file, dest, deps_mode, name, version, ...)
135 assert(type(file) == "string" or not file) 136 assert(type(file) == "string" or not file)
136 assert(type(dest) == "string") 137 assert(type(dest) == "string")
138 assert(type(deps_mode) == "string")
137 assert(type(name) == "string" or not name) 139 assert(type(name) == "string" or not name)
138 assert(type(version) == "string" or not version) 140 assert(type(version) == "string" or not version)
139 141
140 local wrapname = fs.is_dir(dest) and dest.."/"..dir.base_name(file) or dest 142 local wrapname = fs.is_dir(dest) and dest.."/"..dir.base_name(file) or dest
141 wrapname = wrapname..".bat" 143 wrapname = wrapname .. ".bat"
142 local wrapper = io.open(wrapname, "w") 144 local wrapper = io.open(wrapname, "w")
143 if not wrapper then 145 if not wrapper then
144 return nil, "Could not open "..wrapname.." for writing." 146 return nil, "Could not open "..wrapname.." for writing."
145 end 147 end
146 148
147 local lpath, lcpath = cfg.package_paths(cfg.root_dir) 149 local lpath, lcpath = path.package_paths(deps_mode)
148 lpath = util.cleanup_path(lpath, ";", cfg.lua_version)
149 lcpath = util.cleanup_path(lcpath, ";", cfg.lua_version)
150
151 local lpath_var, lcpath_var = util.lua_path_variables() 150 local lpath_var, lcpath_var = util.lua_path_variables()
152 151
153 local addctx 152 local addctx
@@ -163,6 +162,7 @@ function win32.wrap_script(file, dest, name, version, ...)
163 } 162 }
164 163
165 wrapper:write("@echo off\r\n") 164 wrapper:write("@echo off\r\n")
165 wrapper:write("set "..fs.Qb("LUAROCKS_SYSCONFIG="..cfg.sysconfdir) .. "\r\n")
166 if dest == "luarocks" then 166 if dest == "luarocks" then
167 wrapper:write("set "..fs.Qb(lpath_var.."="..package.path) .. "\r\n") 167 wrapper:write("set "..fs.Qb(lpath_var.."="..package.path) .. "\r\n")
168 wrapper:write("set "..fs.Qb(lcpath_var.."="..package.cpath) .. "\r\n") 168 wrapper:write("set "..fs.Qb(lcpath_var.."="..package.cpath) .. "\r\n")
diff --git a/src/luarocks/path.lua b/src/luarocks/path.lua
index 8fe6da8d..8e82beeb 100644
--- a/src/luarocks/path.lua
+++ b/src/luarocks/path.lua
@@ -275,4 +275,16 @@ function path.read_namespace(name, version, tree)
275 return namespace 275 return namespace
276end 276end
277 277
278function path.package_paths(deps_mode)
279 local lpaths = {}
280 local lcpaths = {}
281 path.map_trees(deps_mode, function(tree)
282 local root = path.root_dir(tree)
283 table.insert(lpaths, dir.path(root, cfg.lua_modules_path, "?.lua"))
284 table.insert(lpaths, dir.path(root, cfg.lua_modules_path, "?/init.lua"))
285 table.insert(lcpaths, dir.path(root, cfg.lib_modules_path, "?." .. cfg.lib_extension))
286 end)
287 return table.concat(lpaths, ";"), table.concat(lcpaths, ";")
288end
289
278return path 290return path
diff --git a/src/luarocks/repos.lua b/src/luarocks/repos.lua
index 454ec79f..dd2a5142 100644
--- a/src/luarocks/repos.lua
+++ b/src/luarocks/repos.lua
@@ -315,9 +315,13 @@ function repos.deploy_files(name, version, wrap_bin_scripts, deps_mode)
315 315
316 local function install_binary(source, target) 316 local function install_binary(source, target)
317 if wrap_bin_scripts and fs.is_lua(source) then 317 if wrap_bin_scripts and fs.is_lua(source) then
318 return target .. (cfg.wrapper_suffix or ""), function() return fs.wrap_script(source, target, name, version) end 318 return target .. (cfg.wrapper_suffix or ""), function()
319 return fs.wrap_script(source, target, deps_mode, name, version)
320 end
319 else 321 else
320 return target, function() return fs.copy_binary(source, target) end 322 return target, function()
323 return fs.copy_binary(source, target)
324 end
321 end 325 end
322 end 326 end
323 327