aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2021-04-13 16:01:22 -0300
committerHisham Muhammad <hisham@gobolinux.org>2021-04-13 18:51:26 -0300
commit2940d60e6e2802daad658c5b5c0f28c949a20fb3 (patch)
treed388b68555e50da9633ffe90e08102f392ef1704
parent694c437b00e300c138382ab8679723d7f10e68e8 (diff)
downloadluarocks-2940d60e6e2802daad658c5b5c0f28c949a20fb3.tar.gz
luarocks-2940d60e6e2802daad658c5b5c0f28c949a20fb3.tar.bz2
luarocks-2940d60e6e2802daad658c5b5c0f28c949a20fb3.zip
use skip_set terminology + code cleanups
-rw-r--r--src/luarocks/build.lua2
-rw-r--r--src/luarocks/cmd.lua1
-rw-r--r--src/luarocks/cmd/remove.lua5
-rw-r--r--src/luarocks/deps.lua35
-rw-r--r--src/luarocks/remove.lua11
5 files changed, 29 insertions, 25 deletions
diff --git a/src/luarocks/build.lua b/src/luarocks/build.lua
index 0aecca3e..0b82174b 100644
--- a/src/luarocks/build.lua
+++ b/src/luarocks/build.lua
@@ -135,7 +135,7 @@ local function process_dependencies(rockspec, opts)
135 end 135 end
136 end 136 end
137 end 137 end
138 local ok, err, errcode = deps.fulfill_dependencies(rockspec, "dependencies", opts.deps_mode, opts.verify) 138 ok, err, errcode = deps.fulfill_dependencies(rockspec, "dependencies", opts.deps_mode, opts.verify)
139 if err then 139 if err then
140 return nil, err, errcode 140 return nil, err, errcode
141 end 141 end
diff --git a/src/luarocks/cmd.lua b/src/luarocks/cmd.lua
index bc965af4..72edc66d 100644
--- a/src/luarocks/cmd.lua
+++ b/src/luarocks/cmd.lua
@@ -165,6 +165,7 @@ end
165-- @param exitcode number: the exitcode to use 165-- @param exitcode number: the exitcode to use
166local function die(message, exitcode) 166local function die(message, exitcode)
167 assert(type(message) == "string", "bad error, expected string, got: " .. type(message)) 167 assert(type(message) == "string", "bad error, expected string, got: " .. type(message))
168 assert(exitcode == nil or type(exitcode) == "number", "bad error, expected number, got: " .. type(exitcode) .. " - " .. tostring(exitcode))
168 util.printerr("\nError: "..message) 169 util.printerr("\nError: "..message)
169 170
170 local ok, err = xpcall(util.run_scheduled_functions, error_handler) 171 local ok, err = xpcall(util.run_scheduled_functions, error_handler)
diff --git a/src/luarocks/cmd/remove.lua b/src/luarocks/cmd/remove.lua
index 17723ec9..6bb69ad6 100644
--- a/src/luarocks/cmd/remove.lua
+++ b/src/luarocks/cmd/remove.lua
@@ -54,15 +54,16 @@ function cmd_remove.command(args)
54 if not name then return nil, "Invalid "..rock_type.." filename: "..filename end 54 if not name then return nil, "Invalid "..rock_type.." filename: "..filename end
55 end 55 end
56 56
57 local results = {}
58 name = name:lower() 57 name = name:lower()
58
59 local results = {}
59 search.local_manifest_search(results, cfg.rocks_dir, queries.new(name, args.namespace, version)) 60 search.local_manifest_search(results, cfg.rocks_dir, queries.new(name, args.namespace, version))
60 if not results[name] then 61 if not results[name] then
61 local rock = util.format_rock_name(name, args.namespace, version) 62 local rock = util.format_rock_name(name, args.namespace, version)
62 return nil, "Could not find rock '"..rock.."' in "..path.rocks_tree_to_string(cfg.root_dir) 63 return nil, "Could not find rock '"..rock.."' in "..path.rocks_tree_to_string(cfg.root_dir)
63 end 64 end
64 65
65 local ok, err = remove.remove_search_results(results, name, deps_mode, args.force, args.force_fast) 66 ok, err = remove.remove_search_results(results, name, deps_mode, args.force, args.force_fast)
66 if not ok then 67 if not ok then
67 return nil, err 68 return nil, err
68 end 69 end
diff --git a/src/luarocks/deps.lua b/src/luarocks/deps.lua
index 7e7b69e6..1457224e 100644
--- a/src/luarocks/deps.lua
+++ b/src/luarocks/deps.lua
@@ -14,7 +14,8 @@ local builtin = require("luarocks.build.builtin")
14local deplocks = require("luarocks.deplocks") 14local deplocks = require("luarocks.deplocks")
15 15
16--- Generate a function that matches dep queries against the manifest, 16--- Generate a function that matches dep queries against the manifest,
17-- taking into account rocks_provided, the blacklist and the lockfile. 17-- taking into account rocks_provided, the list of versions to skip,
18-- and the lockfile.
18-- @param deps_mode "one", "none", "all" or "order" 19-- @param deps_mode "one", "none", "all" or "order"
19-- @param rocks_provided a one-level table mapping names to versions, 20-- @param rocks_provided a one-level table mapping names to versions,
20-- listing rocks to consider provided by the VM 21-- listing rocks to consider provided by the VM
@@ -22,18 +23,18 @@ local deplocks = require("luarocks.deplocks")
22-- by this Lua implementation for the given dependency. 23-- by this Lua implementation for the given dependency.
23-- @param depskey key to use when matching the lockfile ("dependencies", 24-- @param depskey key to use when matching the lockfile ("dependencies",
24-- "build_dependencies", etc.) 25-- "build_dependencies", etc.)
25-- @param blacklist a two-level table mapping names to versions to boolean, 26-- @param skip_set a two-level table mapping names to versions to
26-- listing rocks to not match 27-- boolean, listing rocks that should not be matched
27-- @return function(dep): {string}, {string:string}, string, boolean 28-- @return function(dep): {string}, {string:string}, string, boolean
28-- * array of matching versions 29-- * array of matching versions
29-- * map of versions to locations 30-- * map of versions to locations
30-- * version matched via lockfile if any 31-- * version matched via lockfile if any
31-- * true if rock matched via rocks_provided 32-- * true if rock matched via rocks_provided
32local function prepare_get_versions(deps_mode, rocks_provided, depskey, blacklist) 33local function prepare_get_versions(deps_mode, rocks_provided, depskey, skip_set)
33 assert(type(deps_mode) == "string") 34 assert(type(deps_mode) == "string")
34 assert(type(rocks_provided) == "table") 35 assert(type(rocks_provided) == "table")
35 assert(type(depskey) == "string") 36 assert(type(depskey) == "string")
36 assert(type(blacklist) == "table" or blacklist == nil) 37 assert(type(skip_set) == "table" or skip_set == nil)
37 38
38 return function(dep) 39 return function(dep)
39 local versions, locations 40 local versions, locations
@@ -48,12 +49,11 @@ local function prepare_get_versions(deps_mode, rocks_provided, depskey, blacklis
48 versions, locations = manif.get_versions(dep, deps_mode) 49 versions, locations = manif.get_versions(dep, deps_mode)
49 end 50 end
50 51
51 if blacklist and blacklist[dep.name] then 52 if skip_set and skip_set[dep.name] then
52 local orig_versions = versions 53 for i = #versions, 1, -1 do
53 versions = {} 54 local v = versions[i]
54 for _, v in ipairs(orig_versions) do 55 if skip_set[dep.name][v] then
55 if not blacklist[dep.name][v] then 56 table.remove(versions, i)
56 table.insert(versions, v)
57 end 57 end
58 end 58 end
59 end 59 end
@@ -65,8 +65,6 @@ local function prepare_get_versions(deps_mode, rocks_provided, depskey, blacklis
65end 65end
66 66
67--- Attempt to match a dependency to an installed rock. 67--- Attempt to match a dependency to an installed rock.
68-- @param blacklist table: Versions that can't be accepted. Table where keys
69-- are program versions and values are 'true'.
70-- @param get_versions a getter function obtained via prepare_get_versions 68-- @param get_versions a getter function obtained via prepare_get_versions
71-- @return (string, string, table) or (nil, nil, table): 69-- @return (string, string, table) or (nil, nil, table):
72-- 1. latest installed version of the rock matching the dependency 70-- 1. latest installed version of the rock matching the dependency
@@ -135,7 +133,7 @@ end
135--- Attempt to match dependencies of a rockspec to installed rocks. 133--- Attempt to match dependencies of a rockspec to installed rocks.
136-- @param dependencies table: The table of dependencies. 134-- @param dependencies table: The table of dependencies.
137-- @param rocks_provided table: The table of auto-provided dependencies. 135-- @param rocks_provided table: The table of auto-provided dependencies.
138-- @param blacklist table or nil: Program versions to not use as valid matches. 136-- @param skip_set table or nil: Program versions to not use as valid matches.
139-- Table where keys are program names and values are tables where keys 137-- Table where keys are program names and values are tables where keys
140-- are program versions and values are 'true'. 138-- are program versions and values are 'true'.
141-- @param deps_mode string: Which trees to check dependencies for 139-- @param deps_mode string: Which trees to check dependencies for
@@ -145,13 +143,13 @@ end
145-- parsed as tables; and a table of "no-upgrade" missing dependencies 143-- parsed as tables; and a table of "no-upgrade" missing dependencies
146-- (to be used in plugin modules so that a plugin does not force upgrade of 144-- (to be used in plugin modules so that a plugin does not force upgrade of
147-- its parent application). 145-- its parent application).
148function deps.match_deps(dependencies, rocks_provided, blacklist, deps_mode) 146function deps.match_deps(dependencies, rocks_provided, skip_set, deps_mode)
149 assert(type(dependencies) == "table") 147 assert(type(dependencies) == "table")
150 assert(type(rocks_provided) == "table") 148 assert(type(rocks_provided) == "table")
151 assert(type(blacklist) == "table" or blacklist == nil) 149 assert(type(skip_set) == "table" or skip_set == nil)
152 assert(type(deps_mode) == "string") 150 assert(type(deps_mode) == "string")
153 151
154 local get_versions = prepare_get_versions(deps_mode, rocks_provided, "dependencies", blacklist) 152 local get_versions = prepare_get_versions(deps_mode, rocks_provided, "dependencies", skip_set)
155 return match_all_deps(dependencies, get_versions) 153 return match_all_deps(dependencies, get_versions)
156end 154end
157 155
@@ -278,7 +276,8 @@ end
278-- Packages are installed using the LuaRocks "install" command. 276-- Packages are installed using the LuaRocks "install" command.
279-- Aborts the program if a dependency could not be fulfilled. 277-- Aborts the program if a dependency could not be fulfilled.
280-- @param rockspec table: A rockspec in table format. 278-- @param rockspec table: A rockspec in table format.
281-- @param depskey string: Rockspec key to fetch to get dependency table. 279-- @param depskey string: Rockspec key to fetch to get dependency table
280-- ("dependencies", "build_dependencies", etc.).
282-- @param deps_mode string 281-- @param deps_mode string
283-- @param verify boolean 282-- @param verify boolean
284-- @param deplock_dir string: dirname of the deplock file 283-- @param deplock_dir string: dirname of the deplock file
diff --git a/src/luarocks/remove.lua b/src/luarocks/remove.lua
index 385930eb..a24b54ba 100644
--- a/src/luarocks/remove.lua
+++ b/src/luarocks/remove.lua
@@ -18,11 +18,13 @@ local queries = require("luarocks.queries")
18-- of the given list, or an array of strings in "name/version" format. 18-- of the given list, or an array of strings in "name/version" format.
19local function check_dependents(name, versions, deps_mode) 19local function check_dependents(name, versions, deps_mode)
20 local dependents = {} 20 local dependents = {}
21 local blacklist = {} 21
22 blacklist[name] = {} 22 local skip_set = {}
23 skip_set[name] = {}
23 for version, _ in pairs(versions) do 24 for version, _ in pairs(versions) do
24 blacklist[name][version] = true 25 skip_set[name][version] = true
25 end 26 end
27
26 local local_rocks = {} 28 local local_rocks = {}
27 local query_all = queries.all() 29 local query_all = queries.all()
28 search.local_manifest_search(local_rocks, cfg.rocks_dir, query_all) 30 search.local_manifest_search(local_rocks, cfg.rocks_dir, query_all)
@@ -31,13 +33,14 @@ local function check_dependents(name, versions, deps_mode)
31 for rock_version, _ in pairs(rock_versions) do 33 for rock_version, _ in pairs(rock_versions) do
32 local rockspec, err = fetch.load_rockspec(path.rockspec_file(rock_name, rock_version)) 34 local rockspec, err = fetch.load_rockspec(path.rockspec_file(rock_name, rock_version))
33 if rockspec then 35 if rockspec then
34 local _, missing = deps.match_deps(rockspec.dependencies, rockspec.rocks_provided, blacklist, deps_mode) 36 local _, missing = deps.match_deps(rockspec.dependencies, rockspec.rocks_provided, skip_set, deps_mode)
35 if missing[name] then 37 if missing[name] then
36 table.insert(dependents, { name = rock_name, version = rock_version }) 38 table.insert(dependents, { name = rock_name, version = rock_version })
37 end 39 end
38 end 40 end
39 end 41 end
40 end 42 end
43
41 return dependents 44 return dependents
42end 45end
43 46