Version 1.0.0.2

svn merge -c 30051 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
svn merge -c 30109 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
svn merge -c 30110 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
svn merge -c 30142 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
svn merge -c 30144 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
svn merge -c 30146 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
svn merge -c 30147 https://dart.googlecode.com/svn/branches/bleeding_edge trunk

R=kasperl@google.com, sgjesse@google.com

Review URL: https://codereview.chromium.org//68633002

git-svn-id: http://dart.googlecode.com/svn/trunk@30149 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/dart.gyp b/dart.gyp
index 5ea8faa..f5ac7ba 100644
--- a/dart.gyp
+++ b/dart.gyp
@@ -63,6 +63,7 @@
             '<(SHARED_INTERMEDIATE_DIR)/utils_wrapper.dart.snapshot',
             '<(SHARED_INTERMEDIATE_DIR)/pub.dart.snapshot',
             '<(PRODUCT_DIR)/dartanalyzer/dartanalyzer.jar',
+            'tools/VERSION'
           ],
           'outputs': [
             '<(PRODUCT_DIR)/dart-sdk/README',
diff --git a/tools/VERSION b/tools/VERSION
index 50814b1..876f696 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -1,4 +1,4 @@
 MAJOR 1
 MINOR 0
 BUILD 0
-PATCH 1
+PATCH 2
diff --git a/tools/bots/bot_utils.py b/tools/bots/bot_utils.py
index bee7334..88bd448 100644
--- a/tools/bots/bot_utils.py
+++ b/tools/bots/bot_utils.py
@@ -164,6 +164,21 @@
     return '%s-%s-%s-%s.zip' % (
         name, SYSTEM_RENAMES[system], ARCH_RENAMES[arch], mode)
 
+class GCSNamerApiDocs(object):
+  def __init__(self, channel=Channel.BLEEDING_EDGE):
+    assert channel in Channel.ALL_CHANNELS
+
+    self.channel = channel
+    self.bucket = 'gs://dartlang-api-docs'
+
+  def docs_dirpath(self, revision):
+    assert len('%s' % revision) > 0
+    return '%s/channels/%s/%s' % (self.bucket, self.channel, revision)
+
+  def docs_latestpath(self, revision):
+    assert len('%s' % revision) > 0
+    return '%s/channels/%s/latest.txt' % (self.bucket, self.channel)
+
 def run(command, env=None, shell=False):
   print "Running command: ", command
 
diff --git a/tools/signing_script.py b/tools/signing_script.py
index 4d45d7a..9ea7630 100755
--- a/tools/signing_script.py
+++ b/tools/signing_script.py
@@ -16,8 +16,6 @@
 BOT_UTILS = os.path.join(DART_DIR, 'tools', 'bots', 'bot_utils.py')
 BASENAME_PATTERN = 'darteditor-%(system)s-%(bits)s'
 FILENAME_PATTERN = BASENAME_PATTERN + '.zip'
-BUCKET_PATTERN = (
-    'gs://dart-editor-archive-trunk/%(revision)s/' + FILENAME_PATTERN)
 
 DRY_RUN = False
 
@@ -114,22 +112,6 @@
   rm_tree(to_dir)
   copy_tree(extracted_zipfiledir, to_dir)
 
-def download_from_old_location(config, destination):
-  bucket = BUCKET_PATTERN % config
-  run([GSUTIL, 'cp', bucket, destination])
-
-def upload_to_old_location(config, source_zip):
-  if not DRY_RUN:
-    bot_utils.CreateChecksumFile(
-        source_zip, mangled_filename=os.path.basename(source_zip))
-  md5_zip_file = source_zip + '.md5sum'
-  
-  bucket = BUCKET_PATTERN % config
-  run([GSUTIL, 'cp', source_zip, bucket])
-  run([GSUTIL, 'cp', md5_zip_file, bucket + '.md5sum'])
-  run([GSUTIL, 'setacl', 'public-read', bucket])
-  run([GSUTIL, 'setacl', 'public-read', bucket + '.md5sum'])
-
 def download_from_new_location(channel, config, destination):
   namer = bot_utils.GCSNamer(channel,
                              bot_utils.ReleaseType.RAW)
@@ -147,7 +129,7 @@
   if not DRY_RUN:
     bot_utils.CreateChecksumFile(source_zip, mangled_filename=zipfilename)
   md5_zip_file = source_zip + '.md5sum'
-  
+
   run([GSUTIL, 'cp', source_zip, bucket])
   run([GSUTIL, 'cp', md5_zip_file, bucket + '.md5sum'])
   run([GSUTIL, 'setacl', 'public-read', bucket])
@@ -172,8 +154,8 @@
   if len(args) > 0:
     die("Invalid additional arguments: %s." % args)
 
-  if options.channel:
-    assert options.channel in bot_utils.Channel.ALL_CHANNELS
+  if not options.channel:
+    die("You need to specify a channel with --channel.")
 
   global DRY_RUN
   DRY_RUN = options.dry_run
@@ -238,10 +220,7 @@
 
       if options.prepare:
         # Download *.zip files from GCS buckets
-        if options.channel:
-          download_from_new_location(options.channel, config, destination)
-        else:
-          download_from_old_location(config, destination)
+        download_from_new_location(options.channel, config, destination)
 
         run(['unzip', destination, '-d', destination_dir])
 
@@ -276,10 +255,7 @@
           run(['zip', '-r9', deploy_zip_file, 'dart'])
 
         # Upload *.zip/*.zip.md5sum and set 'public-read' ACL
-        if options.channel:
-          upload_to_new_location(options.channel, config, deploy_zip_file)
-        else:
-          upload_to_old_location(config, deploy_zip_file)
+        upload_to_new_location(options.channel, config, deploy_zip_file)
 
 if __name__ == '__main__':
   main()
diff --git a/utils/compiler/compiler.gyp b/utils/compiler/compiler.gyp
index d1c1c8e..294c7e9 100644
--- a/utils/compiler/compiler.gyp
+++ b/utils/compiler/compiler.gyp
@@ -16,39 +16,18 @@
       ],
       'actions': [
         {
-          'action_name': 'generate_dart2js_snapshot',
-          'inputs': [
-            '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)dart<(EXECUTABLE_SUFFIX)',
-            '../../sdk/lib/_internal/libraries.dart',
-            '<!@(["python", "../../tools/list_files.py", "\\.dart$",'
-            ' "../../sdk/lib/_internal/compiler", "../../runtime/lib"])',
-            '../../sdk/lib/_internal/libraries.dart',
-          ],
-          'outputs': [
-            '<(SHARED_INTERMEDIATE_DIR)/dart2js.dart.snapshot',
-          ],
-          'action': [
-            '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)dart<(EXECUTABLE_SUFFIX)',
-            # Note: we don't store the snapshot in the location where
-            # the dart2js script is looking for it.  The motivation
-            # for that is to support an incremental development model
-            # for dart2js compiler engineers.  However, we install the
-            # snapshot in the proper location when building the SDK.
-            '--snapshot=<(SHARED_INTERMEDIATE_DIR)/dart2js.dart.snapshot',
-            '../../sdk/lib/_internal/compiler/implementation/dart2js.dart',
-          ],
-        },
-        {
-          'action_name': 'generate_dartdoc_snapshot',
+          'action_name': 'generate_snapshots',
           'inputs': [
             '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)dart<(EXECUTABLE_SUFFIX)',
             '../../sdk/lib/_internal/libraries.dart',
             '<!@(["python", "../../tools/list_files.py", "\\.dart$", "../../sdk/lib/_internal/compiler", "../../runtime/lib", "../../sdk/lib/_internal/dartdoc"])',
             'create_snapshot.dart',
             '<(SHARED_INTERMEDIATE_DIR)/packages.stamp',
+            '../../tools/VERSION',
           ],
           'outputs': [
             '<(SHARED_INTERMEDIATE_DIR)/utils_wrapper.dart.snapshot',
+            '<(SHARED_INTERMEDIATE_DIR)/dart2js.dart.snapshot',
           ],
           'action': [
             '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)dart<(EXECUTABLE_SUFFIX)',
diff --git a/utils/compiler/create_snapshot.dart b/utils/compiler/create_snapshot.dart
index 1bbcb8c..b7bb18b 100644
--- a/utils/compiler/create_snapshot.dart
+++ b/utils/compiler/create_snapshot.dart
@@ -42,6 +42,22 @@
   });
 }
 
+Future<String> getDart2jsSnapshotGenerationFile(var args, var rootPath) {
+  var dart2js = rootPath.resolve(args["dart2js_main"]);
+  return getVersion(rootPath).then((version) {
+    var snapshotGenerationText =
+"""
+import '${dart2js.toFilePath(windows: false)}' as dart2jsMain;
+
+void main(List<String> arguments) {
+  dart2jsMain.BUILD_ID = "$version";
+  dart2jsMain.main(arguments);
+}
+""";
+    return snapshotGenerationText;
+  });
+}
+
 void writeSnapshotFile(var path, var content) {
     File file = new File(path);
     var writer = file.openSync(mode: FileMode.WRITE);
@@ -91,4 +107,11 @@
     writeSnapshotFile(wrapper, result);
     createSnapshot(wrapper, args["package_root"]);
   });
+
+  getDart2jsSnapshotGenerationFile(args, rootPath).then((result) {
+    var wrapper = "${args['output_dir']}/dart2js.dart";
+    writeSnapshotFile(wrapper, result);
+    createSnapshot(wrapper, args["package_root"]);
+  });
+
 }