diff options
| -rw-r--r-- | xmake/modules/async/jobgraph.lua | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/xmake/modules/async/jobgraph.lua b/xmake/modules/async/jobgraph.lua index bfeee3863..31a041911 100644 --- a/xmake/modules/async/jobgraph.lua +++ b/xmake/modules/async/jobgraph.lua @@ -32,8 +32,20 @@ function jobqueue:_build() local graph = self._jobgraph local dag = graph._dag local queue = self._queue + + -- check circular dependencies + local cycle = dag:find_cycle() + if cycle then + local names = {} + for _, job in ipairs(cycle) do + table.insert(names, job.name) + end + table.insert(names, names[1]) + raise("%s: circular job dependency detected!\n%s", graph, table.concat(names, "\n -> ")) + end + + -- build job queue queue:clear() - -- TODO find cycle for _, job in ipairs(dag:topological_sort()) do print("build job", job.name) queue:insert(job) |
