Index: includes/install.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/install.inc,v
retrieving revision 1.68
diff -u -p -r1.68 install.inc
--- includes/install.inc	14 Sep 2008 01:58:17 -0000	1.68
+++ includes/install.inc	16 Sep 2008 06:24:07 -0000
@@ -873,15 +873,24 @@ function drupal_check_profile($profile) 
   // Get a list of all .install files.
   $installs = drupal_get_install_files($module_list);
 
-  // Collect requirement testing results
+  // Collect requirement testing results.
   $requirements = array();
   foreach ($installs as $install) {
     require_once $install->filename;
-    $function = $install->name. '_requirements';
+    $function = $install->name . '_requirements';
     if (function_exists($function)) {
       $requirements = array_merge($requirements, $function('install'));
     }
   }
+  // Allow modules to modify each others' requirements. We can't use
+  // drupal_alter() here because the full list of modules isn't loaded
+  // yet.
+  foreach ($installs as $install) {
+    $function = $install->name . '_requirements_alter';
+    if (function_exists($function)) {
+      $function($requirements, 'install');
+    }
+  }
   return $requirements;
 }
 
@@ -918,9 +927,14 @@ function drupal_check_module($module) {
   if (isset($install[$module])) {
     require_once $install[$module]->filename;
 
-    // Check requirements
+    // Check this module's installation requirements, and allow existing
+    // modules to modify them.
     $requirements = module_invoke($module, 'requirements', 'install');
-    if (is_array($requirements) && drupal_requirements_severity($requirements) == REQUIREMENT_ERROR) {
+    if (!isset($requirements)) {
+      $requirements = array();
+    }
+    drupal_alter('requirements', $requirements, 'install', $module);
+    if (drupal_requirements_severity($requirements) == REQUIREMENT_ERROR) {
       // Print any error messages
       foreach ($requirements as $requirement) {
         if (isset($requirement['severity']) && $requirement['severity'] == REQUIREMENT_ERROR) {
Index: modules/system/system.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v
retrieving revision 1.88
diff -u -p -r1.88 system.admin.inc
--- modules/system/system.admin.inc	15 Sep 2008 09:28:50 -0000	1.88
+++ modules/system/system.admin.inc	16 Sep 2008 06:24:07 -0000
@@ -1774,6 +1774,7 @@ function system_status($check = FALSE) {
 
   // Check run-time requirements and status information.
   $requirements = module_invoke_all('requirements', 'runtime');
+  drupal_alter('requirements', $requirements, 'runtime');
   usort($requirements, '_system_sort_requirements');
 
   if ($check) {
