]> git.e2factory.org Git - e2factory.git/commitdiff
result: switch to depends_list() and remove dlist()
authorTobias Ulmer <tu@emlix.com>
Wed, 5 Oct 2016 18:13:44 +0000 (20:13 +0200)
committerTobias Ulmer <tu@emlix.com>
Wed, 16 Nov 2016 14:41:18 +0000 (15:41 +0100)
Signed-off-by: Tobias Ulmer <tu@emlix.com>
local/e2-dlist.lua
local/e2-ls-project.lua
local/e2build.lua
local/e2tool.lua
local/result.lua
plugins/collect_project.lua

index 20789ac53938d5254fcb4c93c879fd910557aa14..0e595436e55481346cc8294dfb48b4a3dfd1582c 100644 (file)
@@ -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)
index 5fc1b65931de82c8874ffd524ac02483146385cd..3deb290ac385247eef295478628153bebb42c943 100644 (file)
@@ -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
index c86921d91790182e01ad20840c19e39966c05a40..f9d62a3df215371b8f9721a0beb2592ac16e2bef 100644 (file)
@@ -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())
 
index 8348e766e4e7004e2e87443647e70eda3573a514..5cd519da7f1f6c2e2a6107877ddf4db6599add5d 100644 (file)
@@ -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
index e91d069d93b926bcb85f9b6349522e2cf6c50e74..27df5cfffaf6fb2496da328c052d760002407be3 100644 (file)
@@ -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()
index ae0ddca0b1207ea82b5daa3fdbb5fe796a64d3e7..827fd9d38cc3ef49997f077969fe708febde37f6 100644 (file)
@@ -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()