Index: includes/update.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/update.inc,v
retrieving revision 1.37
diff -u -p -r1.37 update.inc
--- includes/update.inc	17 Feb 2010 20:45:36 -0000	1.37
+++ includes/update.inc	20 Feb 2010 18:01:18 -0000
@@ -1206,3 +1206,68 @@ function update_invoke_all() {
   return $return;
 }
 
+/**
+ * Dependencies can change when a module is updated.
+ * Checks all modules' dependencies.
+ */
+function update_check_dependencies() {
+  $t = get_t();
+  $files = drupal_installation_attempted() ? _system_rebuild_module_data() : ksort(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('Unresolved dependency'),
+          'description' => $t('@name requires this module.', array('@name' => $name)),
+          'value' => t('@required_name (Missing)', array('@required_name' => $required_name)),
+          'severity' => REQUIREMENT_ERROR,
+        );
+        continue;
+      }
+      // Check the module's status.
+      $required_module_data = $files[$required_module];
+      $required_name = $required_module_data->info['name'];
+      // Check the module's version.
+      $version = str_replace(DRUPAL_CORE_COMPATIBILITY . '-', '', $required_module_data->info['version']);
+      $compatibility = drupal_check_incompatibility($requirement, $version);
+      if (!$required_module_data->status && !$compatibility) {
+        $requirements["$module-$required_module"] = array(
+          'title' => $t('Unresolved dependency'),
+          'description' => $t('@name requires this module.', array('@name' => $name)),
+          'value' => $t('@required_name (Disabled)', array('@required_name' => $required_name)),
+          'severity' => REQUIREMENT_ERROR,
+        );
+      }
+      if ($compatibility) {
+
+        $requirements["$module-$required_module-version"] = array(
+          'title' => $t('Unresolved dependency'),
+          'description' => $t('@name requires this module and version. Currently using @required_name version @version', array('@name' => $name, '@required_name' => $required_name, '@version' => $version)),
+          'value' => t('@required_name (Version @compatibility required)', array('@required_name' => $required_name, '@version' => $version, '@compatibility' => $compatibility)),
+          'severity' => REQUIREMENT_ERROR,
+        );
+      }
+    }
+  }
+  return $requirements;
+}
+
Index: modules/system/system.install
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.install,v
retrieving revision 1.448
diff -u -p -r1.448 system.install
--- modules/system/system.install	18 Feb 2010 04:36:38 -0000	1.448
+++ modules/system/system.install	20 Feb 2010 18:01:20 -0000
@@ -312,6 +313,10 @@ function system_requirements($phase) {
     $requirements['update access']['title'] = $t('Access to update.php');
   }
 
+  // Display an error if a newly introduced dependency in a module is not resolved.
+  include_once DRUPAL_ROOT . '/includes/update.inc';
+  $requirements += update_check_dependencies();
+
   // Test Unicode library
   include_once DRUPAL_ROOT . '/includes/unicode.inc';
   $requirements = array_merge($requirements, unicode_requirements());
