mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-07-25 12:15:32 +03:00
147 lines
4.5 KiB
Diff
147 lines
4.5 KiB
Diff
From: Jakub Jirutka <jakub@jirutka.cz>
|
|
Date: Mon, 01 Jan 2017 17:59:00 +0200
|
|
Subject: [PATCH] Fix support for tree.rocks_dir
|
|
|
|
LuaRocks allows to specify "tree" using just "root" which is a prefix
|
|
prepended to default locations such as /lib/luarocks/rocks (rocks_dir),
|
|
/share/lua/5.x (lua_dir) etc. Later they added option to specify
|
|
rocks_dir, lua_dir, bin_dir... directly. The problem is that it's kinda
|
|
broken, some methods does not respect these options and always
|
|
construct these paths from "root".
|
|
|
|
This patch hopefuly fixes this problem.
|
|
|
|
We need it for /usr/lib/luarocks/rocks-common where we install
|
|
rock_manifests for Lua modules compatible with Lua 5.1-5.3.
|
|
See also config.lua.
|
|
|
|
--- a/src/luarocks/command_line.lua
|
|
+++ b/src/luarocks/command_line.lua
|
|
@@ -35,9 +35,14 @@
|
|
end
|
|
|
|
local function replace_tree(flags, tree)
|
|
- tree = dir.normalize(tree)
|
|
+ if type(tree) == "table" then
|
|
+ path.use_tree(tree)
|
|
+ tree = dir.normalize(tree.root)
|
|
+ else
|
|
+ tree = dir.normalize(tree)
|
|
+ path.use_tree(tree)
|
|
+ end
|
|
flags["tree"] = tree
|
|
- path.use_tree(tree)
|
|
end
|
|
|
|
local function is_ownership_ok(directory)
|
|
@@ -137,7 +142,7 @@
|
|
if not tree.root then
|
|
die("Configuration error: tree '"..tree.name.."' has no 'root' field.")
|
|
end
|
|
- replace_tree(flags, tree.root)
|
|
+ replace_tree(flags, tree)
|
|
named = true
|
|
break
|
|
end
|
|
--- a/src/luarocks/path.lua
|
|
+++ b/src/luarocks/path.lua
|
|
@@ -18,7 +18,9 @@
|
|
end
|
|
|
|
function path.rocks_dir(tree)
|
|
- if type(tree) == "string" then
|
|
+ if not tree then
|
|
+ return cfg.rocks_dir
|
|
+ elseif type(tree) == "string" then
|
|
return dir.path(tree, cfg.rocks_subdir)
|
|
else
|
|
assert(type(tree) == "table")
|
|
@@ -83,7 +85,6 @@
|
|
-- the package (and by extension, the path) exists.
|
|
function path.versions_dir(name, tree)
|
|
assert(type(name) == "string")
|
|
- tree = tree or cfg.root_dir
|
|
return dir.path(path.rocks_dir(tree), name)
|
|
end
|
|
|
|
@@ -96,7 +97,6 @@
|
|
function path.install_dir(name, version, tree)
|
|
assert(type(name) == "string")
|
|
assert(type(version) == "string")
|
|
- tree = tree or cfg.root_dir
|
|
return dir.path(path.rocks_dir(tree), name, version)
|
|
end
|
|
|
|
@@ -109,7 +109,6 @@
|
|
function path.rockspec_file(name, version, tree)
|
|
assert(type(name) == "string")
|
|
assert(type(version) == "string")
|
|
- tree = tree or cfg.root_dir
|
|
return dir.path(path.rocks_dir(tree), name, version, name.."-"..version..".rockspec")
|
|
end
|
|
|
|
@@ -122,7 +121,6 @@
|
|
function path.rock_manifest_file(name, version, tree)
|
|
assert(type(name) == "string")
|
|
assert(type(version) == "string")
|
|
- tree = tree or cfg.root_dir
|
|
return dir.path(path.rocks_dir(tree), name, version, "rock_manifest")
|
|
end
|
|
|
|
@@ -135,7 +133,6 @@
|
|
function path.lib_dir(name, version, tree)
|
|
assert(type(name) == "string")
|
|
assert(type(version) == "string")
|
|
- tree = tree or cfg.root_dir
|
|
return dir.path(path.rocks_dir(tree), name, version, "lib")
|
|
end
|
|
|
|
@@ -148,7 +145,6 @@
|
|
function path.lua_dir(name, version, tree)
|
|
assert(type(name) == "string")
|
|
assert(type(version) == "string")
|
|
- tree = tree or cfg.root_dir
|
|
return dir.path(path.rocks_dir(tree), name, version, "lua")
|
|
end
|
|
|
|
@@ -161,7 +157,6 @@
|
|
function path.doc_dir(name, version, tree)
|
|
assert(type(name) == "string")
|
|
assert(type(version) == "string")
|
|
- tree = tree or cfg.root_dir
|
|
return dir.path(path.rocks_dir(tree), name, version, "doc")
|
|
end
|
|
|
|
@@ -174,7 +169,6 @@
|
|
function path.conf_dir(name, version, tree)
|
|
assert(type(name) == "string")
|
|
assert(type(version) == "string")
|
|
- tree = tree or cfg.root_dir
|
|
return dir.path(path.rocks_dir(tree), name, version, "conf")
|
|
end
|
|
|
|
@@ -188,7 +182,6 @@
|
|
function path.bin_dir(name, version, tree)
|
|
assert(type(name) == "string")
|
|
assert(type(version) == "string")
|
|
- tree = tree or cfg.root_dir
|
|
return dir.path(path.rocks_dir(tree), name, version, "bin")
|
|
end
|
|
|
|
@@ -303,11 +296,15 @@
|
|
end
|
|
|
|
function path.use_tree(tree)
|
|
- cfg.root_dir = tree
|
|
+ cfg.root_dir = path.rocks_tree_to_string(tree)
|
|
cfg.rocks_dir = path.rocks_dir(tree)
|
|
cfg.deploy_bin_dir = path.deploy_bin_dir(tree)
|
|
cfg.deploy_lua_dir = path.deploy_lua_dir(tree)
|
|
cfg.deploy_lib_dir = path.deploy_lib_dir(tree)
|
|
+ -- Workaround for outdated methods that ignore cfg.rocks_dir.
|
|
+ if tree.rocks_dir then
|
|
+ cfg.rocks_subdir = tree.rocks_dir:match("^" .. util.matchquote(cfg.root_dir) .. "(.*)$")
|
|
+ end
|
|
end
|
|
|
|
--- Apply a given function to the active rocks trees based on chosen dependency mode.
|