Index: update.php
===================================================================
RCS file: update.php,v
retrieving revision 1.314
diff -u -p -r1.314 update.php
--- update.php	9 Jan 2010 17:13:49 -0000	1.314
+++ update.php	12 Jan 2010 03:39:53 -0000
@@ -265,11 +265,73 @@ function update_extra_requirements($requ
 }
 
 /**
+ * Dependencies can change when a module is updated.
+ * Checks all modules' dependencies.
+ */
+function update_check_dependencies() {
+  $files = system_rebuild_module_data();
+  $requirements = array();
+  foreach ($files as $module => $file) {
+    if (!$file->status) {
+      continue;
+    }
+    $name = $file->info['name'];
+    // Check the module's PHP version.
+    $php = $file->info['php'];
+    if (version_compare($php, PHP_VERSION, '>')) {
+      $requirements["$module-php"] = array(
+        'title' => t('PHP'),
+        'description' => t('@name requires at least PHP @version.', array('@name' => $name, '@version' => $php)),
+        'value' => PHP_VERSION,
+        'severity' => REQUIREMENT_ERROR,
+      );
+    }
+    // Check the module's required modules.
+    foreach ($file->requires as $requirement) {
+      $required_module = $requirement['name'];
+      // Check if the module exists.
+      if (!isset($files[$required_module])) {
+        $requirements["$module-$required_module"] = array(
+          'title' => t('@required_module', array('@required_module' => $required_module)),
+          'description' => t('@name requires this module.', array('@name' => $name)),
+          'value' => t('Missing'),
+          'severity' => REQUIREMENT_ERROR,
+        );
+        continue;
+      }
+      // Check the module's status.
+      $required_module_data = $files[$required_module];
+      $required_name = $required_module_data->info['name'];
+      if (!$required_module_data->status) {
+        $requirements["$module-$required_module"] = array(
+          'title' => t('@required_name', array('@required_name' => $required_name)),
+          'description' => t('@name requires this module.', array('@name' => $name)),
+          'value' => t('Disabled'),
+          'severity' => REQUIREMENT_ERROR,
+        );
+      }
+      // Check the module's version.
+      $version = str_replace(DRUPAL_CORE_COMPATIBILITY . '-', '', $required_module_data->info['version']);
+      if ($compatibility = drupal_check_incompatibility($requirement, $version)) {
+        $requirements["$module-$required_module-version"] = array(
+          'title' => t('@required_name @required_version', array('@required_name' => $required_name, '@required_version' => $compatibility)),
+          'description' => t('@name requires this module and version.', array('@name' => $name)),
+          'value' => $version,
+          'severity' => REQUIREMENT_ERROR,
+        );
+      }
+    }
+  }
+  return $requirements;
+}
+
+/**
  * Check update requirements and report any errors.
  */
 function update_check_requirements() {
   // Check the system module and update.php requirements only.
   $requirements = module_invoke('system', 'requirements', 'update');
+  $requirements += update_check_dependencies();
   $requirements += update_extra_requirements();
   $severity = drupal_requirements_severity($requirements);
 
