From 13dfc920b17e79cf20ce7bf2ffcf23635ddd8935 Mon Sep 17 00:00:00 2001 From: Tobias Ulmer Date: Wed, 5 Oct 2016 20:13:44 +0200 Subject: [PATCH] result: switch to depends_list() and remove dlist() Signed-off-by: Tobias Ulmer --- local/e2-dlist.lua | 2 +- local/e2-ls-project.lua | 2 +- local/e2build.lua | 8 ++------ local/e2tool.lua | 31 ++++++++++--------------------- local/result.lua | 15 +++------------ plugins/collect_project.lua | 11 ++++------- 6 files changed, 21 insertions(+), 48 deletions(-) diff --git a/local/e2-dlist.lua b/local/e2-dlist.lua index 20789ac..0e59543 100644 --- a/local/e2-dlist.lua +++ b/local/e2-dlist.lua @@ -71,7 +71,7 @@ local function e2_dlist(arg) if opts.recursive then dep, re = e2tool.dlist_recursive(resultname) else - dep, re = e2tool.dlist(resultname) + dep, re = result.results[resultname]:depends_list():totable_sorted() end if not dep then error(re) diff --git a/local/e2-ls-project.lua b/local/e2-ls-project.lua index 5fc1b65..3deb290 100644 --- a/local/e2-ls-project.lua +++ b/local/e2-ls-project.lua @@ -179,7 +179,7 @@ local function e2_ls_project(arg) console.infof("digraph \"%s\" {\n", project.name()) for _, r in pairs(results) do local res = result.results[r] - local deps, re = e2tool.dlist(r) + local deps, re = res:depends_list():totable_sorted() if not deps then error(re) end diff --git a/local/e2build.lua b/local/e2build.lua index c86921d..f9d62a3 100644 --- a/local/e2build.lua +++ b/local/e2build.lua @@ -684,15 +684,11 @@ function e2build.build_process_class:_install_build_time_dependencies(res, retur local e, rc, re local dependslist, info, dep, destdir - dependslist, re = res:dlist() - if not dependslist then - e = err.new("installing build time dependencies") - return false, e:cat(re) - end + dependslist = res:depends_list() info = e2tool.info() - for _,dependsname in ipairs(dependslist) do + for dependsname in dependslist:iter_sorted() do dep = result.results[dependsname] destdir = e2lib.join(res:buildconfig().T, "dep", dep:get_name()) diff --git a/local/e2tool.lua b/local/e2tool.lua index 8348e76..5cd519d 100644 --- a/local/e2tool.lua +++ b/local/e2tool.lua @@ -50,6 +50,7 @@ local project = require("project") local projenv = require("projenv") local result = require("result") local scm = require("scm") +local sl = require("sl") local source = require("source") local strict = require("strict") local tools = require("tools") @@ -648,16 +649,6 @@ function e2tool.collect_project_info(info, skip_load_config) return strict.lock(info) end ---- Returns a sorted vector with all dependencies for the given result --- in the project. The result itself is excluded. --- @param resultname Result name. --- @return Sorted vector of result dependencies, or false on error. --- @return Error object on failure. -function e2tool.dlist(resultname) - assertIsStringN(resultname) - return result.results[resultname]:dlist() -end - --- Returns a sorted vector with all depdencies of result, and all -- the indirect dependencies. If result is a vector, calculates dependencies -- for all results and includes those from result. If result is a result name, @@ -666,7 +657,6 @@ end -- @return Vector of dependencies of the result, may or may not include result. -- False on failure. -- @return Error object on failure --- @see e2tool.dlist function e2tool.dlist_recursive(resultv) assert(type(resultv) == "string" or type(resultv) == "table") @@ -675,12 +665,14 @@ function e2tool.dlist_recursive(resultv) local path = {} local col = {} local t = {} + local depends if type(resultv) == "string" then - resultv, re = result.results[resultv]:dlist() - if not resultv then - return false, re - end + assertIsTable(result.results[resultv]) + depends = result.results[resultv]:depends_list() + else + depends = sl.sl:new(true) + depends:insert_table(resultv) end local function visit(resultname) @@ -706,12 +698,9 @@ function e2tool.dlist_recursive(resultv) seen[resultname] = #path col[resultname] = true - deps, re = result.results[resultname]:dlist() - if not deps then - return false, re - end + deps = result.results[resultname]:depends_list() - for _, d in ipairs(deps) do + for d in deps:iter_sorted() do rc, re = visit(d) if not rc then return false, re @@ -724,7 +713,7 @@ function e2tool.dlist_recursive(resultv) return true end - for _,resultname in ipairs(resultv) do + for resultname in depends:iter_sorted() do rc, re = visit(resultname) if not rc then return false, re diff --git a/local/result.lua b/local/result.lua index e91d069..27df5cf 100644 --- a/local/result.lua +++ b/local/result.lua @@ -109,13 +109,8 @@ function result.basic_result:buildid() self._type, self._name)) end ---- Return list (table) of depdencencies -function result.basic_result:dlist() - error(err.new("called dlist() of result base class, type %s name %s", - self._type, self._name)) -end - ---- Return a string list of dependent results. +--- Return a string list of depdenant results. +-- @return String list of dependency names. function result.basic_result:depends_list() error(err.new("called depends_list() of result base class, type %s name %s", self._type, self._name)) @@ -418,12 +413,8 @@ function result.result_class:post_initialize() return true end -function result.result_class:dlist() - return self:depends_list():totable_sorted() -end - function result.result_class:depends_list() - return self._depends_list + return self._depends_list:copy() end function result.result_class:my_sources_list() diff --git a/plugins/collect_project.lua b/plugins/collect_project.lua index ae0ddca..827fd9d 100644 --- a/plugins/collect_project.lua +++ b/plugins/collect_project.lua @@ -109,14 +109,11 @@ function collect_project_class:default_result() return self._default_result end -function collect_project_class:dlist() - local l +function collect_project_class:depends_list() + local deps = self._stdresult:depends_list() + deps:insert(self:default_result()) - l = sl.sl:new(true) -- merge - l:insert_table(self._stdresult:dlist()) - l:insert(self:default_result()) - - return l:totable_sorted() + return deps end function collect_project_class:buildid() -- 2.39.5