enhance/fix recursive deps computation

This commit is contained in:
odain
2025-09-19 16:57:58 +02:00
parent 045a9c5658
commit 18c52f1a71
2 changed files with 13 additions and 6 deletions

View File

@@ -383,7 +383,7 @@ TXT;
$aModuleDepsCount = [];
/** @var XmlModule $oXmlModule */
foreach ($this->aModules as $oXmlModule) {
$aModuleDepsCount[$oXmlModule->sModuleName] = count($oXmlModule->GetExpandedModuleNames());
$aModuleDepsCount[$oXmlModule->sModuleName] = count($oXmlModule->GetExpandedModuleNames($this->aModules));
}
$aOrderModules=[];
@@ -410,7 +410,7 @@ TXT;
foreach ($aModuleDepsCount as $sStillToProcessModuleName => $c){
/** @var XmlModule $oXmlStillToProcessModule */
$oXmlStillToProcessModule = $this->aModules[$sStillToProcessModuleName];
if (in_array($sModuleName, $oXmlStillToProcessModule->GetExpandedModuleNames())){
if (in_array($sModuleName, $oXmlStillToProcessModule->GetExpandedModuleNames($this->aModules))){
$aModuleDepsCount[$sStillToProcessModuleName] = $c - 1 ;
}
}

View File

@@ -85,15 +85,22 @@ class XmlModule {
}
}
public function GetExpandedModuleNames() : array {
if (count($this->aExpandedDependencyModulesNames) ==0){
private bool $bExpandedModuleNamesComputed=false;
public function GetExpandedModuleNames(array $aModules) : array {
if ($this->bExpandedModuleNamesComputed){
return $this->aExpandedDependencyModulesNames;
}
$this->bExpandedModuleNamesComputed = true;
$aRes= [];
foreach ($this->aDependencyModulesNames as $sDependency){
foreach ($this->aDependencyModulesNames as $sDependency => $oXmlModules){
$oiTopCoreModuleDependency = new ModuleDependency($sDependency);
$aRes = array_merge($aRes, $oiTopCoreModuleDependency->GetPotentialPrerequisiteModuleNames());
foreach ($oiTopCoreModuleDependency->GetPotentialPrerequisiteModuleNames() as $sName){
$oDependencyModule = $aModules[$sName] ?? null;
$aRes[]=$sName;
$aRes = array_merge($aRes, $oDependencyModule->GetExpandedModuleNames($aModules));
}
}
$this->aExpandedDependencyModulesNames = array_unique($aRes);