From 162283b5ebea13e064a8c133fb708be41f208797 Mon Sep 17 00:00:00 2001 From: Reece Date: Mon, 7 Mar 2022 23:49:57 +0000 Subject: [PATCH] [+] [soft]dependency filtering in json and auFilterOf calls [*] Fix double auLinkProject call within processor start call tree didn't refresh link guard cache for each call to link --- Core/Target/Target.lua | 12 ++++++++++++ Core/main.lua | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/Core/Target/Target.lua b/Core/Target/Target.lua index 9be28ec..1df4e90 100644 --- a/Core/Target/Target.lua +++ b/Core/Target/Target.lua @@ -194,6 +194,18 @@ local function auFilterOf(configFilter, ...) table.insert(andOptions, "not options:" .. option) end) + auForEach(configFilter.depends, function(dependency) + if (not _auProjects[dependency]) then + table.insert(andOptions, "platforms:none") + end + end) + + auForEach(configFilter.notDepends, function(dependency) + if (_auProjects[dependency]) then + table.insert(andOptions, "platforms:none") + end + end) + local supportedArchs = {} auForEach(validArchs, function(arch) table.insert(supportedArchs, "architecture:" .. auFetchGlobal("Architectures")[arch].architecture) diff --git a/Core/main.lua b/Core/main.lua index d05cefa..cd64f8e 100644 --- a/Core/main.lua +++ b/Core/main.lua @@ -433,6 +433,8 @@ local function linkAuProject(dep, soft) end end + local linkStart = false + if (auGetCurrentProjectMeta()) then if (_auLinkGuard[dep] ) then return @@ -440,6 +442,11 @@ local function linkAuProject(dep, soft) _auLinkGuard[dep] = dep end + if (not _auLinkGuardStart) then + _auLinkGuardStart = true + linkStart = true + end + dependson(dep) --if (not processor:getMeta().isStatic) then @@ -449,6 +456,11 @@ local function linkAuProject(dep, soft) _auFatalMsg["processing project link"] = nil end) --end + + if (linkStart) then + _auLinkGuard = {} + _auLinkGuardStart = false + end return true end