summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2021-05-27 22:42:29 +0800
committerruki <[email protected]>2021-05-27 22:42:29 +0800
commit57538bd32331d415730e0a82715d25f887bbc84a (patch)
tree10eea582f96c0c827c05d0ace1273c7ac5749e81
parent9fad7ea8b4e495b011a5157e5666b76898b91882 (diff)
replace package deps and parents
-rw-r--r--xmake/modules/private/action/require/impl/install_packages.lua37
1 files changed, 37 insertions, 0 deletions
diff --git a/xmake/modules/private/action/require/impl/install_packages.lua b/xmake/modules/private/action/require/impl/install_packages.lua
index 773e5fd6e..97d0d18ba 100644
--- a/xmake/modules/private/action/require/impl/install_packages.lua
+++ b/xmake/modules/private/action/require/impl/install_packages.lua
@@ -52,6 +52,43 @@ function _replace_package(packages, instance, extinstance)
if rawinstance == instance then
packages[idx] = extinstance
end
+ local deps = rawinstance._DEPS
+ for name, dep in pairs(deps) do
+ if dep == instance then
+ deps[name] = nil
+ deps[extinstance:name()] = extinstance
+ break
+ end
+ end
+ local parents = rawinstance._PARENTS
+ for name, parent in pairs(parents) do
+ if parent == instance then
+ parents[name] = nil
+ parents[extinstance:name()] = extinstance
+ break
+ end
+ end
+ local orderdeps = rawinstance._ORDERDEPS
+ for depidx, dep in ipairs(orderdeps) do
+ if dep == instance then
+ orderdeps[depidx] = extinstance
+ break
+ end
+ end
+ local linkdeps = rawinstance._LINKDEPS
+ for depidx, dep in ipairs(linkdeps) do
+ if dep == instance then
+ linkdeps[depidx] = extinstance
+ break
+ end
+ end
+ local plaindeps = rawinstance._PLAINDEPS
+ for depidx, dep in ipairs(rawinstance._PLAINDEPS) do
+ if dep == instance then
+ plaindeps[depidx] = extinstance
+ break
+ end
+ end
end
end