Index: includes/install.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/install.inc,v retrieving revision 1.50 diff -u -r1.50 install.inc --- includes/install.inc 30 Nov 2007 12:19:10 -0000 1.50 +++ includes/install.inc 6 Dec 2007 17:45:38 -0000 @@ -275,10 +275,23 @@ $function = $profile .'_profile_modules'; $module_list = array_merge(drupal_required_modules(), $function(), ($locale != 'en' ? array('locale') : array())); + // Read available memory. + $memory = array( + 'limit' => floatval(ini_get('memory_limit'));, + 'required' => 0, + } + // Get a list of modules that exist in Drupal's assorted subdirectories. $present_modules = array(); - foreach (drupal_system_listing('\.module$', 'modules', 'name', 0) as $present_module) { - $present_modules[] = $present_module->name; + foreach (drupal_system_listing('\.module$', 'modules', 'name', 0) as $file) { + $present_modules[] = $file->name; + // If this is one of the modules to be installed, load its memory requirement. + if (in_array($file->name, $module_list)) { + $info = drupal_parse_info_file(dirname($file->filename) .'/'. $file->name .'.info'); + if (isset($info['memory'])) { + $memory['required'] += $info['memory']; + } + } } // Verify that all of the profile's required modules are present. @@ -288,9 +301,11 @@ drupal_set_message(st('The %module module is required but was not found. Please move it into the modules subdirectory.', array('%module' => $module)), 'error'); } } - else { - return $module_list; + // Verify that the required memory usage is present. + if (($memory['required']) < $memory['limit']) { + drupal_set_message(st('This Drupal install would require @required MB of memory but you have only @limit MB available. Before installing, you would need to increase the memory limit available to PHP.', array('@required' => $memory['required'], '@limit' => $memory['limit'])); } + return $module_list; } /**