Version 1.0.27

Merge: Archive repackaged r8 for maven compatibility
CL: https://r8-review.googlesource.com/21242
Change-Id: I5d112123bab8b9cb1af1dd4d417df3cf97e6c9ab
diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java
index 71bba11..76ce369 100644
--- a/src/main/java/com/android/tools/r8/Version.java
+++ b/src/main/java/com/android/tools/r8/Version.java
@@ -11,7 +11,7 @@
 
   // This field is accessed from release scripts using simple pattern matching.
   // Therefore, changing this field could break our release scripts.
-  public static final String LABEL = "v1.0.26";
+  public static final String LABEL = "v1.0.27";
 
   private Version() {
   }
diff --git a/tools/archive.py b/tools/archive.py
index 0844eea..4af0484 100755
--- a/tools/archive.py
+++ b/tools/archive.py
@@ -49,18 +49,30 @@
                       'in a commit that have -dev in version')
   return True
 
-def GetStorageDestination(storage_prefix, version, file_name, is_master):
+def GetStorageDestination(storage_prefix,
+                          version_or_path,
+                          file_name,
+                          is_master):
   # We archive master commits under raw/master instead of directly under raw
+  version_dir = GetVersionDestination(storage_prefix,
+                                      version_or_path,
+                                      is_master)
+  return '%s/%s' % (version_dir, file_name)
+
+def GetVersionDestination(storage_prefix, version_or_path, is_master):
   archive_dir = 'raw/master' if is_master else 'raw'
-  return '%s%s/%s/%s/%s' % (storage_prefix, ARCHIVE_BUCKET, archive_dir,
-                            version, file_name)
+  return '%s%s/%s/%s' % (storage_prefix, ARCHIVE_BUCKET,
+                         archive_dir, version_or_path)
 
-def GetUploadDestination(version, file_name, is_master):
-  return GetStorageDestination('gs://', version, file_name, is_master)
+def GetUploadDestination(version_or_path, file_name, is_master):
+  return GetStorageDestination('gs://', version_or_path, file_name, is_master)
 
-def GetUrl(version, file_name, is_master):
+def GetUrl(version_or_path, file_name, is_master):
   return GetStorageDestination('http://storage.googleapis.com/',
-                               version, file_name, is_master)
+                               version_or_path, file_name, is_master)
+
+def GetMavenUrl(is_master):
+  return GetVersionDestination('http://storage.googleapis.com/', '', is_master)
 
 def Main():
   if not 'BUILDBOT_BUILDERNAME' in os.environ:
@@ -107,6 +119,12 @@
       print('Uploading %s to %s' % (tagged_jar, destination))
       utils.upload_file_to_cloud_storage(tagged_jar, destination)
       print('File available at: %s' % GetUrl(version, file_name, is_master))
+      if file == utils.R8_JAR:
+        # Upload R8 to a maven compatible location.
+        maven_dst = GetUploadDestination(utils.get_maven_path(version),
+                                         'r8-%s.jar' % version, is_master)
+        utils.upload_file_to_cloud_storage(tagged_jar, maven_dst)
+        print('Maven repo root available at: %s' % GetMavenUrl(is_master))
 
 if __name__ == '__main__':
   sys.exit(Main())
diff --git a/tools/create_maven_release.py b/tools/create_maven_release.py
index cc045a2..1767219 100755
--- a/tools/create_maven_release.py
+++ b/tools/create_maven_release.py
@@ -210,8 +210,7 @@
   # Create directory structure for this version.
   version = determine_version()
   with utils.TempDir() as tmp_dir:
-    version_dir = join(
-        tmp_dir, 'com', 'google', 'android', 'tools', 'r8', version, 'r8')
+    version_dir = join(tmp_dir, utils.get_maven_path(version))
     makedirs(version_dir)
     # Write the pom file.
     pom_file = join(version_dir, 'r8-' + version + '.pom')
diff --git a/tools/utils.py b/tools/utils.py
index 4b9600b..76e754e 100644
--- a/tools/utils.py
+++ b/tools/utils.py
@@ -190,6 +190,9 @@
 
   return result
 
+def get_maven_path(version):
+  return os.path.join('com', 'android', 'tools', 'r8', version)
+
 def print_dexsegments(prefix, dex_files):
   for segment_name, size in getDexSegmentSizes(dex_files).items():
     print('{}-{}(CodeSize): {}'