diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2018-08-13 19:15:09 +0300 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2018-12-06 15:56:50 +0200 |
commit | f8874412c4315109202fbcf5632bec45525b2f4e (patch) | |
tree | 5739808ab3207e2170ae3c3da8ad9ac4ad445370 | |
parent | b36f5f5a9397c9f17b1ef2846a796c7de732cbfb (diff) | |
download | awall-f8874412c4315109202fbcf5632bec45525b2f4e.tar.bz2 awall-f8874412c4315109202fbcf5632bec45525b2f4e.tar.xz |
deterministic dependency resolver
-rw-r--r-- | awall/dependency.lua | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/awall/dependency.lua b/awall/dependency.lua index aead42e..13e54f7 100644 --- a/awall/dependency.lua +++ b/awall/dependency.lua @@ -1,11 +1,12 @@ --[[ Dependency order resolver for Alpine Wall -Copyright (C) 2012-2014 Kaarle Ritvanen +Copyright (C) 2012-2018 Kaarle Ritvanen See LICENSE file for license details ]]-- local util = require('awall.util') local contains = util.contains +local sortedkeys = util.sortedkeys return function(items) local visited = {} @@ -17,8 +18,8 @@ return function(items) visited[key] = true local after = util.list(items[key].after) - for k, v in pairs(items) do - if contains(v.before, key) then table.insert(after, k) end + for _, k in sortedkeys(items) do + if contains(items[k].before, key) then table.insert(after, k) end end for i, k in ipairs(after) do if items[k] then @@ -30,7 +31,7 @@ return function(items) table.insert(res, key) end - for i, k in util.sortedkeys(items) do + for _, k in sortedkeys(items) do local ek = visit(k) if ek ~= nil then return ek end end |