Index: includes/module.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/module.inc,v
retrieving revision 1.139
diff -u -p -r1.139 module.inc
--- includes/module.inc	22 Feb 2009 17:55:29 -0000	1.139
+++ includes/module.inc	29 Mar 2009 13:01:26 -0000
@@ -97,6 +97,7 @@ function module_rebuild_cache() {
     'description' => '',
     'package' => 'Other',
     'version' => NULL,
+    'weight' => 0,
     'php' => DRUPAL_MINIMUM_PHP,
     'files' => array(),
   );
@@ -123,7 +124,8 @@ function module_rebuild_cache() {
         ->fields(array(
             'info' => serialize($files[$filepath]->info),
             'name' => $file->name,
-            'filename' => $file->filepath))
+            'filename' => $file->filepath,
+            'weight' => $file->info['weight']))
         ->condition('filename', $file->old_filepath)
         ->execute();
     }
@@ -136,6 +138,7 @@ function module_rebuild_cache() {
             'info' => serialize($files[$filepath]->info),
             'type' => 'module',
             'filename' => $file->filepath,
+            'weight' => $file->info['weight'],
             'status' => 0))
         ->execute();
     }
Index: modules/simpletest/tests/module.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/module.test,v
retrieving revision 1.1
diff -u -p -r1.1 module.test
--- modules/simpletest/tests/module.test	3 Jan 2009 08:45:28 -0000	1.1
+++ modules/simpletest/tests/module.test	29 Mar 2009 13:01:27 -0000
@@ -70,4 +70,14 @@ class ModuleUnitTest extends DrupalWebTe
     ksort($expected_values);
     $this->assertIdentical($expected_values, module_list(FALSE, TRUE), t('@condition: module_list() returns correctly sorted results', array('@condition' => $condition)));
   }
+
+  /**
+   * Tests weigth setting in info files.
+   */
+  function testModuleWeight() {
+    $expected_weight = 3;
+    $value = db_result(db_query("SELECT weight FROM {system} WHERE name = :name AND type = :type",
+      array(':name' => 'module_test', ':type' => 'module')));
+    $this->assertEqual($expected_weight, $value, t('Weight setting in the info file is set to the {system} table'));
+  }
 }
Index: modules/simpletest/tests/module_test.info
===================================================================
RCS file: modules/simpletest/tests/module_test.info
diff -N modules/simpletest/tests/module_test.info
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/simpletest/tests/module_test.info	29 Mar 2009 13:01:27 -0000
@@ -0,0 +1,9 @@
+;$Id$
+name="module system test module"
+description=""
+package = Testing
+version = VERSION
+weight = 3
+core = 7.x
+hidden = TRUE
+files[] = module_test.module
Index: modules/simpletest/tests/module_test.module
===================================================================
RCS file: modules/simpletest/tests/module_test.module
diff -N modules/simpletest/tests/module_test.module
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/simpletest/tests/module_test.module	29 Mar 2009 13:01:27 -0000
@@ -0,0 +1,3 @@
+<?php
+// $Id$
+
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.676
diff -u -p -r1.676 system.module
--- modules/system/system.module	25 Mar 2009 18:40:50 -0000	1.676
+++ modules/system/system.module	29 Mar 2009 13:01:31 -0000
@@ -1133,6 +1133,7 @@ function system_theme_default() {
     'scripts' => array('script.js'),
     'screenshot' => 'screenshot.png',
     'php' => DRUPAL_MINIMUM_PHP,
+    'weight' => 0,
   );
 }
 
@@ -1156,7 +1157,7 @@ function system_theme_data() {
       $theme->owner = '';
     }
 
-    db_query("INSERT INTO {system} (name, owner, info, type, filename, status) VALUES ('%s', '%s', '%s', '%s', '%s', %d)", $theme->name, $theme->owner, serialize($theme->info), 'theme', $theme->filename, isset($theme->status) ? $theme->status : 0);
+    db_query("INSERT INTO {system} (name, owner, info, type, filename, status, weight) VALUES ('%s', '%s', '%s', '%s', '%s', %d, %d)", $theme->name, $theme->owner, serialize($theme->info), 'theme', $theme->filename, isset($theme->status) ? $theme->status : 0, $theme->info['weight']);
   }
 
   return $themes;
