From 26404ac83ca224c08f9db335f7cd1828b5d53538 Mon Sep 17 00:00:00 2001 From: ruki Date: Thu, 29 Dec 2022 23:55:06 +0800 Subject: check cycle deps in packages #3163 --- xmake/modules/private/action/require/impl/package.lua | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/xmake/modules/private/action/require/impl/package.lua b/xmake/modules/private/action/require/impl/package.lua index 372b72ae9..2708e2d91 100644 --- a/xmake/modules/private/action/require/impl/package.lua +++ b/xmake/modules/private/action/require/impl/package.lua @@ -706,6 +706,15 @@ end -- load required packages function _load_package(packagename, requireinfo, opt) + -- check circular dependency + opt = opt or {} + if opt.requirepath then + local splitinfo = opt.requirepath:split(".", {plain = true}) + if #splitinfo > 1 and splitinfo[1] == splitinfo[#splitinfo] then + raise("circular dependency(%s) detected in package(%s)!", opt.requirepath, packagename) + end + end + -- strip trailng ~tag, e.g. zlib~debug local displayname if packagename:find('~', 1, true) then -- cgit v1.3.1