From b3d91cab02244906f1f97f256a0b5af4ab00833d Mon Sep 17 00:00:00 2001 From: Henrique Moody Date: Sat, 11 Feb 2012 13:04:33 -0200 Subject: [PATCH] Update dependence resolution for PEAR2 packages. --- src/Composer/Repository/PearRepository.php | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/Composer/Repository/PearRepository.php b/src/Composer/Repository/PearRepository.php index f502bd0df..1ad09637e 100644 --- a/src/Composer/Repository/PearRepository.php +++ b/src/Composer/Repository/PearRepository.php @@ -157,8 +157,10 @@ class PearRepository extends ArrayRepository $data[$name] = $this->parseVersion($options); } elseif ('package' == $name) { foreach ($options as $key => $value) { - $dataKey = $value['name']; - $data[$dataKey] = $this->parseVersion($value); + if (is_array($value)) { + $dataKey = $value['name']; + $data[$dataKey] = $this->parseVersion($value); + } } } elseif ('extension' == $name) { foreach ($options as $key => $value) { @@ -223,9 +225,13 @@ class PearRepository extends ArrayRepository } } - $depsData = $information->getElementsByTagName('deps')->item(0); - $depsData = $depsData->getElementsByTagName('d')->item(0); - $depsData = $this->parseDependencies($depsData->nodeValue); + $depsData = array(); + foreach ($information->getElementsByTagName('deps') as $depElement) { + $depsVersion = $depElement->getElementsByTagName('v')->item(0)->nodeValue; + $depsData[$depsVersion] = $this->parseDependencies( + $depElement->getElementsByTagName('d')->item(0)->nodeValue + ); + } $revisions = $information->getElementsByTagName('a')->item(0); $revisions = $revisions->getElementsByTagName('r'); @@ -239,10 +245,13 @@ class PearRepository extends ArrayRepository ), 'version' => $version ); + if (isset($depsData[$version])) { + $revisionData += $depsData[$version]; + } try { $this->addPackage( - $loader->load($packageData + $revisionData + $depsData) + $loader->load($packageData + $revisionData) ); } catch (\UnexpectedValueException $e) { continue;