make setup deterministic: complete dependency order with alphabetical one when 2 module elements are at same position

This commit is contained in:
odain
2025-03-31 08:17:00 +02:00
parent 21c4ffa9e3
commit 9f2da19da0
3 changed files with 65 additions and 16 deletions

View File

@@ -478,7 +478,7 @@ class ModuleDiscovery
}
//include all modules
$iInDegreeCounterIncludingOutsideModules = count($oModule->GetUnresolvedDependencyModuleNames());
$aCountDepsByModuleId[$sModuleId] = [$iInDegreeCounter, $iInDegreeCounterIncludingOutsideModules];
$aCountDepsByModuleId[$sModuleId] = [$iInDegreeCounter, $iInDegreeCounterIncludingOutsideModules, $sModuleId];
}
$aRes=[];
@@ -493,7 +493,13 @@ class ModuleDiscovery
}
//compare $iInDegreeCounterIncludingOutsideModules
return $aDeps1[1] - $aDeps2[1];
$res = $aDeps1[1] - $aDeps2[1];
if ($res != 0){
return $res;
}
//alphabetical order at least
return strcmp($aDeps1[2], $aDeps2[2]);
});
$bOneLoopAtLeast=false;
@@ -518,7 +524,7 @@ class ModuleDiscovery
$aDepCount = $aCountDepsByModuleId[$sModuleId2];
$iInDegreeCounter = $aDepCount[0] - 1;
$iInDegreeCounterIncludingOutsideModules = $aDepCount[1];
$aCountDepsByModuleId[$sModuleId2] = [$iInDegreeCounter, $iInDegreeCounterIncludingOutsideModules];
$aCountDepsByModuleId[$sModuleId2] = [$iInDegreeCounter, $iInDegreeCounterIncludingOutsideModules, $sModuleId2];
}
unset($aDependsOnModuleName[$oModule->GetModuleName()]);