Morten Krogh-Jespersen | 5a37de8 | 2023-03-02 01:42:28 +0100 | [diff] [blame] | 1 | // Copyright (c) 2023, the R8 project authors. Please see the AUTHORS file |
| 2 | // for details. All rights reserved. Use of this source code is governed by a |
| 3 | // BSD-style license that can be found in the LICENSE file. |
| 4 | |
Morten Krogh-Jespersen | d1a1185 | 2023-06-14 14:48:44 +0200 | [diff] [blame] | 5 | // TODO(b/270105162): Move this file out the repository root when old gradle is removed. |
Morten Krogh-Jespersen | 5a37de8 | 2023-03-02 01:42:28 +0100 | [diff] [blame] | 6 | |
Rico Wind | 782d768 | 2023-09-22 12:24:25 +0200 | [diff] [blame] | 7 | import java.nio.file.Files |
| 8 | import java.nio.file.attribute.FileTime |
Rico Wind | 327a5d2 | 2023-09-20 09:46:18 +0200 | [diff] [blame] | 9 | import org.gradle.internal.os.OperatingSystem |
| 10 | |
Morten Krogh-Jespersen | 5a37de8 | 2023-03-02 01:42:28 +0100 | [diff] [blame] | 11 | rootProject.name = "d8-r8" |
| 12 | |
Søren Gjesse | 44faa87 | 2023-05-23 12:21:22 +0200 | [diff] [blame] | 13 | // Bootstrap building by downloading dependencies. |
Rico Wind | 5e1580a | 2024-07-01 08:32:39 +0000 | [diff] [blame] | 14 | val dependencies_bucket = "r8-deps" |
Morten Krogh-Jespersen | 35c65e7 | 2023-06-16 12:52:38 +0200 | [diff] [blame] | 15 | val root = rootProject.projectDir |
| 16 | |
| 17 | fun getRepoRoot() : File { |
| 18 | var current = root |
| 19 | while (!current.getName().equals("d8_r8")) { |
| 20 | current = current.getParentFile() |
| 21 | } |
| 22 | return current.getParentFile() |
Søren Gjesse | 44faa87 | 2023-05-23 12:21:22 +0200 | [diff] [blame] | 23 | } |
| 24 | |
Rico Wind | f61b39d | 2023-08-31 13:00:41 +0200 | [diff] [blame] | 25 | fun downloadFromGoogleStorage(outputDir : File) { |
| 26 | val targz = File(outputDir.toString() + ".tar.gz") |
| 27 | val sha1File = File(targz.toString() + ".sha1") |
| 28 | if (outputDir.exists() |
| 29 | && outputDir.isDirectory |
| 30 | && targz.exists() |
| 31 | && sha1File.lastModified() <= targz.lastModified()) { |
| 32 | // We already downloaded, no need to recheck the hash |
| 33 | return |
| 34 | } |
| 35 | |
Rico Wind | 327a5d2 | 2023-09-20 09:46:18 +0200 | [diff] [blame] | 36 | var downloadScript = "download_from_google_storage.py" |
| 37 | if (OperatingSystem.current().isWindows()) { |
| 38 | downloadScript = "download_from_google_storage.bat" |
| 39 | } |
Morten Krogh-Jespersen | 35c65e7 | 2023-06-16 12:52:38 +0200 | [diff] [blame] | 40 | val cmd = listOf( |
Rico Wind | 327a5d2 | 2023-09-20 09:46:18 +0200 | [diff] [blame] | 41 | downloadScript, |
Morten Krogh-Jespersen | 35c65e7 | 2023-06-16 12:52:38 +0200 | [diff] [blame] | 42 | "--extract", |
| 43 | "--bucket", |
Morten Krogh-Jespersen | 95671e1 | 2023-06-26 22:04:33 +0200 | [diff] [blame] | 44 | dependencies_bucket, |
Morten Krogh-Jespersen | 35c65e7 | 2023-06-16 12:52:38 +0200 | [diff] [blame] | 45 | "--sha1_file", |
| 46 | "${sha1File}" |
| 47 | ) |
Rico Wind | f61b39d | 2023-08-31 13:00:41 +0200 | [diff] [blame] | 48 | |
Morten Krogh-Jespersen | 35c65e7 | 2023-06-16 12:52:38 +0200 | [diff] [blame] | 49 | println("Executing command: ${cmd.joinToString(" ")}") |
Morten Krogh-Jespersen | 95671e1 | 2023-06-26 22:04:33 +0200 | [diff] [blame] | 50 | val process = ProcessBuilder().command(cmd).start() |
Morten Krogh-Jespersen | 91584d7 | 2023-06-21 13:45:07 +0200 | [diff] [blame] | 51 | process.waitFor() |
Morten Krogh-Jespersen | 35c65e7 | 2023-06-16 12:52:38 +0200 | [diff] [blame] | 52 | if (process.exitValue() != 0) { |
| 53 | throw GradleException( |
Søren Gjesse | 4569e47 | 2023-10-25 15:15:17 +0200 | [diff] [blame] | 54 | "Bootstrapping ${outputDir} download failed:\n" |
Morten Krogh-Jespersen | 35c65e7 | 2023-06-16 12:52:38 +0200 | [diff] [blame] | 55 | + "${String(process.getErrorStream().readAllBytes(), |
| 56 | java.nio.charset.StandardCharsets.UTF_8)}\n" |
Morten Krogh-Jespersen | 95671e1 | 2023-06-26 22:04:33 +0200 | [diff] [blame] | 57 | + String(process.getInputStream().readAllBytes(), |
| 58 | java.nio.charset.StandardCharsets.UTF_8)) |
Rico Wind | 782d768 | 2023-09-22 12:24:25 +0200 | [diff] [blame] | 59 | } else { |
| 60 | // Ensure that the gz file is more recent than the .sha1 file |
| 61 | // People that upload a new version will generally have an older .sha1 file |
| 62 | println("Updating timestamp on " + targz) |
| 63 | val now = FileTime.fromMillis(System.currentTimeMillis()) |
| 64 | Files.setLastModifiedTime(targz.toPath(), now) |
Morten Krogh-Jespersen | 35c65e7 | 2023-06-16 12:52:38 +0200 | [diff] [blame] | 65 | } |
| 66 | } |
| 67 | |
| 68 | val thirdParty = getRepoRoot().resolve("third_party") |
Rico Wind | f61b39d | 2023-08-31 13:00:41 +0200 | [diff] [blame] | 69 | downloadFromGoogleStorage(thirdParty.resolve("dependencies")) |
Søren Gjesse | 4569e47 | 2023-10-25 15:15:17 +0200 | [diff] [blame] | 70 | downloadFromGoogleStorage(thirdParty.resolve("dependencies_plugin")) |
Morten Krogh-Jespersen | d1a1185 | 2023-06-14 14:48:44 +0200 | [diff] [blame] | 71 | |
Morten Krogh-Jespersen | 95671e1 | 2023-06-26 22:04:33 +0200 | [diff] [blame] | 72 | pluginManagement { |
Morten Krogh-Jespersen | 51026a4 | 2023-08-28 13:34:56 +0200 | [diff] [blame] | 73 | repositories { |
| 74 | maven { |
Søren Gjesse | 80ae2c7 | 2023-10-26 12:04:01 +0200 | [diff] [blame] | 75 | url = uri("file:../third_party/dependencies_plugin") |
Morten Krogh-Jespersen | 51026a4 | 2023-08-28 13:34:56 +0200 | [diff] [blame] | 76 | } |
| 77 | maven { |
Søren Gjesse | 80ae2c7 | 2023-10-26 12:04:01 +0200 | [diff] [blame] | 78 | url = uri("file:../third_party/dependencies") |
Morten Krogh-Jespersen | 51026a4 | 2023-08-28 13:34:56 +0200 | [diff] [blame] | 79 | } |
| 80 | } |
Morten Krogh-Jespersen | 95671e1 | 2023-06-26 22:04:33 +0200 | [diff] [blame] | 81 | includeBuild(rootProject.projectDir.resolve("commonBuildSrc")) |
| 82 | } |
Morten Krogh-Jespersen | 51026a4 | 2023-08-28 13:34:56 +0200 | [diff] [blame] | 83 | |
| 84 | dependencyResolutionManagement { |
| 85 | repositories { |
| 86 | maven { |
| 87 | url = uri("file:../third_party/dependencies") |
| 88 | } |
Morten Krogh-Jespersen | 51026a4 | 2023-08-28 13:34:56 +0200 | [diff] [blame] | 89 | } |
| 90 | } |
| 91 | |
Morten Krogh-Jespersen | ad74d68 | 2023-09-14 15:55:18 +0200 | [diff] [blame] | 92 | includeBuild(root.resolve("shared")) |
Morten Krogh-Jespersen | d1a1185 | 2023-06-14 14:48:44 +0200 | [diff] [blame] | 93 | includeBuild(root.resolve("keepanno")) |
Rico Wind | a6e4efc | 2023-08-03 07:51:44 +0200 | [diff] [blame] | 94 | includeBuild(root.resolve("resourceshrinker")) |
Morten Krogh-Jespersen | 5a37de8 | 2023-03-02 01:42:28 +0100 | [diff] [blame] | 95 | |
| 96 | // We need to include src/main as a composite-build otherwise our test-modules |
| 97 | // will compete with the test to compile the source files. |
Morten Krogh-Jespersen | d1a1185 | 2023-06-14 14:48:44 +0200 | [diff] [blame] | 98 | includeBuild(root.resolve("main")) |
Morten Krogh-Jespersen | 920fe7a | 2023-06-29 15:08:19 +0200 | [diff] [blame] | 99 | includeBuild(root.resolve("library_desugar")) |
Morten Krogh-Jespersen | d1a1185 | 2023-06-14 14:48:44 +0200 | [diff] [blame] | 100 | includeBuild(root.resolve("test")) |