? .install.php.swp
? drushrc.php
? includes/.install.inc.swp
? includes/.module.inc.swp
? modules/simpletest/tests/.module.test.swp
? modules/system/.system.api.php.swp
? sites/head.dev
? sites/default/files
Index: install.php
===================================================================
RCS file: /cvs/drupal/drupal/install.php,v
retrieving revision 1.184
diff -u -r1.184 install.php
--- install.php	15 Jul 2009 02:08:40 -0000	1.184
+++ install.php	15 Jul 2009 12:02:14 -0000
@@ -972,8 +972,10 @@
   // Add tasks defined by the profile.
   if ($profile) {
     $info = install_profile_info($profile);
-    if (array_key_exists('tasks', $info)) {
-      $tasks += $info['tasks'];
+    if (isset($info['tasks'])) {
+      foreach ($info['tasks'] as $task => $title) {
+        $tasks[$task] = st($title);
+      }
     }
   }
 
Index: includes/install.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/install.inc,v
retrieving revision 1.96
diff -u -r1.96 install.inc
--- includes/install.inc	15 Jul 2009 02:08:41 -0000	1.96
+++ includes/install.inc	15 Jul 2009 12:02:16 -0000
@@ -977,23 +977,50 @@
 
 /**
  * Retrieve info about an install profile from its .info file.
+ *
+ * Information stored in the profile.info file:
+ * - name: The real name of the install profile for display purposes.
+ * - description: A brief description of the profile.
+ * - dependencies: An array of shortnames of other modules this install profile requires.
+ * - tasks: An associative array of tasks and the page title of each task that need to be 
+ *   completed for installation.
+ *
+ * Example of .info file:
+ * @verbatim
+ *    name = Drupal (minimal)
+ *    description = Create a Drupal site with only required modules enabled.
+ *    version = VERSION
+ *    dependencies[] = block
+ *    dependencies[] = dblog
+ * @endverbatim
+ *
+ * @param profile
+ *   Name of profile.
+ * @param locale
+ *   Name of locale used (if any).
+ * @return
+ *   The info array.
  */
 function install_profile_info($profile, $locale = 'en') {
-  $cache =& drupal_static('install_profile_info', array(), TRUE);
-  // Set defaults for module info.
-  $defaults = array(
-    'dependencies' => array(),
-    'tasks' => array(),
-    'description' => '',
-    'version' => NULL,
-    'php' => DRUPAL_MINIMUM_PHP,
-  );
-  $info = drupal_parse_info_file(sprintf('profiles/%s/%s.info', $profile, $profile)) + $defaults;
-  $info['dependencies'] = array_unique(array_merge(
-    drupal_required_modules(), 
-    $info['dependencies'], 
-    ($locale != 'en' && !empty($locale) ? array('locale') : array()))
-  );
-  return $info;
+  $cache =& drupal_static('install_profile_info', array());
+
+  if (!isset($cache[$profile])) {
+    // Set defaults for module info.
+    $defaults = array(
+      'dependencies' => array(),
+      'tasks' => array(),
+      'description' => '',
+      'version' => NULL,
+      'php' => DRUPAL_MINIMUM_PHP,
+    );
+    $info = drupal_parse_info_file('profiles/'.$profile.'/'.$profile.'.info') + $defaults;
+    $info['dependencies'] = array_unique(array_merge(
+      drupal_required_modules(), 
+      $info['dependencies'], 
+      ($locale != 'en' && !empty($locale) ? array('locale') : array()))
+    );
+    $cache[$profile] = $info;
+  }
+  return $cache[$profile];
 }
 
Index: modules/simpletest/tests/module.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/module.test,v
retrieving revision 1.8
diff -u -r1.8 module.test
--- modules/simpletest/tests/module.test	13 Jul 2009 21:51:41 -0000	1.8
+++ modules/simpletest/tests/module.test	15 Jul 2009 12:02:18 -0000
@@ -23,7 +23,8 @@
    */
   function testModuleList() {
     // Build a list of modules, sorted alphabetically.
-    $module_list = drupal_get_profile_modules('default', 'en');
+    $profile_info = install_profile_info('default', 'en');
+    $module_list = $profile_info['dependencies'];
     sort($module_list);
     // Compare this list to the one returned by module_list(). We expect them
     // to match, since all default profile modules have a weight equal to 0
