From 8954ac2acaf229a1007b37f4caadfb10a9d78fa4 Mon Sep 17 00:00:00 2001 From: ruki Date: Thu, 20 Mar 2025 22:39:52 +0800 Subject: check cirular dependencies --- xmake/modules/async/jobgraph.lua | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) 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) -- cgit v1.3.1