Feature #30418
Package bootstrapping following dependencies
| Status: | New | Start date: | 2011-09-29 | |
|---|---|---|---|---|
| Priority: | Should have | Due date: | ||
| Assigned To: | - | % Done: | 0% |
|
| Category: | Core | |||
| Target version: | - | |||
| PHP Version: | Complexity: | |||
| Has patch: |
Description
It would be nice if packages are bootstrapped in correct order, following the dependency constraints that are described in the Package.xml of a package
Related issues
History
#1 Updated by Benjamin Heek almost 4 years ago
this is the code I use
/**
* order all packages on dependency constraints
*
* @return void
*/
protected function orderPackages()
{
$ordering = array();
$orderedPackages = array();
/**
* first we order all the dependencies per package
*/
foreach ($this->packages AS $packageKey=>$package){
$this->orderPackageDependencies($packageKey,$ordering);
}
/**
* now add the packages that were not ordered, because they don't have dependencies
*/
foreach ($this->packages AS $packageKey=>$package){
if(!in_array($packageKey,$ordering)){
$ordering[] = $packageKey;
}
}
foreach ($ordering AS $orderedPackageKey){
$orderedPackages[$orderedPackageKey] = $this->packages[$orderedPackageKey];
}
$this->activePackages = $orderedPackages;
}
/**
* add dependencies of a package to the ordering
*
* @param string $packageKey
* @param array $ordering
*/
protected function orderPackageDependencies($packageKey,&$ordering)
{
if(in_array($packageKey,$ordering)){
return;
}
$package = $this->getPackage($packageKey);
$this->activatePackage($packageKey);
$metadata = $package->getPackageMetaData();
if ($depends = $metadata->getConstraintsByType('depends')){
foreach ($depends AS $dependeny){
if($dependeny instanceof \TYPO3\FLOW3\Package\MetaData\PackageConstraint){
$packageDependencyKey = $dependeny->getValue();
$this->orderPackageDependencies($packageDependencyKey,$ordering);
$ordering[] = $packageDependencyKey;
}
}
}
}
#2 Updated by Karsten Dambekalns almost 4 years ago
- Project changed from TYPO3 Flow Base Distribution to TYPO3.Flow
#3 Updated by Karsten Dambekalns almost 4 years ago
- Category set to Core