diff options
author | Hisham Muhammad <hisham@gobolinux.org> | 2021-04-13 16:01:22 -0300 |
---|---|---|
committer | Hisham Muhammad <hisham@gobolinux.org> | 2021-04-13 18:51:26 -0300 |
commit | 2940d60e6e2802daad658c5b5c0f28c949a20fb3 (patch) | |
tree | d388b68555e50da9633ffe90e08102f392ef1704 | |
parent | 694c437b00e300c138382ab8679723d7f10e68e8 (diff) | |
download | luarocks-2940d60e6e2802daad658c5b5c0f28c949a20fb3.tar.gz luarocks-2940d60e6e2802daad658c5b5c0f28c949a20fb3.tar.bz2 luarocks-2940d60e6e2802daad658c5b5c0f28c949a20fb3.zip |
use skip_set terminology + code cleanups
-rw-r--r-- | src/luarocks/build.lua | 2 | ||||
-rw-r--r-- | src/luarocks/cmd.lua | 1 | ||||
-rw-r--r-- | src/luarocks/cmd/remove.lua | 5 | ||||
-rw-r--r-- | src/luarocks/deps.lua | 35 | ||||
-rw-r--r-- | src/luarocks/remove.lua | 11 |
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 |
166 | local function die(message, exitcode) | 166 | local 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") | |||
14 | local deplocks = require("luarocks.deplocks") | 14 | local 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 |
32 | local function prepare_get_versions(deps_mode, rocks_provided, depskey, blacklist) | 33 | local 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 | |||
65 | end | 65 | end |
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). |
148 | function deps.match_deps(dependencies, rocks_provided, blacklist, deps_mode) | 146 | function 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) |
156 | end | 154 | end |
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. |
19 | local function check_dependents(name, versions, deps_mode) | 19 | local 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 |
42 | end | 45 | end |
43 | 46 | ||