Explorar o código

Update dependence resolution for PEAR2 packages.

Henrique Moody %!s(int64=13) %!d(string=hai) anos
pai
achega
b3d91cab02
Modificáronse 1 ficheiros con 15 adicións e 6 borrados
  1. 15 6
      src/Composer/Repository/PearRepository.php

+ 15 - 6
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;