Reland "Update to gradle 8.3 for new gradle"

This reverts commit d6a3a4c2f5bdbb132218fadad24373e0f19fe2f6.

Change-Id: I252ac03aa7fce49d5030576ed6cde42e78605a0d
diff --git a/.gitignore b/.gitignore
index 439dc2c..4496e10 100644
--- a/.gitignore
+++ b/.gitignore
@@ -114,6 +114,8 @@
 third_party/gradle/gradle.tar.gz
 third_party/gradle/gradle-8.0
 third_party/gradle/gradle-8.0.tar.gz
+third_party/gradle/gradle-8.3
+third_party/gradle/gradle-8.3.tar.gz
 third_party/gson/gson-2.10.1
 third_party/gson/gson-2.10.1.tar.gz
 third_party/guava/guava-32.1.2-android
diff --git a/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt b/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
index 2a369cd..f447a8f 100644
--- a/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
+++ b/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
@@ -84,11 +84,12 @@
 
 fun Project.ensureThirdPartyDependencies(name : String, deps : List<ThirdPartyDependency>) : Task {
   val outputFiles : MutableList<File> = mutableListOf()
+  val root = getRoot()
   val depsTasks = deps.map { tpd ->
     val projectAndTaskName = "${project.name}-$name"
     val downloadTaskName = "download-third-party-$projectAndTaskName-${tpd.packageName}"
     val downloadTask = tasks.register<DownloadDependencyTask>(downloadTaskName) {
-      setDependency(getRoot().resolve(tpd.sha1File), getRoot().resolve(tpd.path), tpd.type)
+      setDependency(root.resolve(tpd.sha1File), root.resolve(tpd.path), tpd.type, root)
     }.get()
     outputFiles.add(tpd.path)
     downloadTask
diff --git a/d8_r8/commonBuildSrc/src/main/kotlin/DownloadDependencyTask.kt b/d8_r8/commonBuildSrc/src/main/kotlin/DownloadDependencyTask.kt
index 1f49973..370bcad 100644
--- a/d8_r8/commonBuildSrc/src/main/kotlin/DownloadDependencyTask.kt
+++ b/d8_r8/commonBuildSrc/src/main/kotlin/DownloadDependencyTask.kt
@@ -34,6 +34,7 @@
   private var _outputDir: File? = null
   private var _tarGzFile: File? = null
   private var _sha1File: File? = null
+  private var _root: File? = null
 
   @InputFile
   fun getInputFile(): File? {
@@ -51,10 +52,11 @@
   @Option(
     option = "dependency",
     description = "Sets the dependency information for a cloud stored file")
-  fun setDependency(sha1File: File, outputDir: File, dependencyType: DependencyType) {
+  fun setDependency(sha1File: File, outputDir: File, dependencyType: DependencyType, root: File) {
     _outputDir = outputDir
     _sha1File = sha1File
     _tarGzFile = sha1File.resolveSibling(sha1File.name.replace(".sha1", ""))
+    _root = root
     this.dependencyType = dependencyType
   }
 
@@ -82,7 +84,7 @@
         this.outputDir.set(outputDir)
         this.tarGzFile.set(tarGzFile)
         this.lockFile.set(lockFile)
-        this.root.set(computeRoot(project.projectDir))
+        this.root.set(_root!!)
       }
   }
 
diff --git a/d8_r8/commonBuildSrc/src/main/kotlin/TestConfigurationHelper.kt b/d8_r8/commonBuildSrc/src/main/kotlin/TestConfigurationHelper.kt
index c3acc59..c8e5169 100644
--- a/d8_r8/commonBuildSrc/src/main/kotlin/TestConfigurationHelper.kt
+++ b/d8_r8/commonBuildSrc/src/main/kotlin/TestConfigurationHelper.kt
@@ -74,24 +74,28 @@
         test.maxHeapSize = "4G"
       }
 
-      test.addTestListener(object: TestListener {
-        override fun beforeSuite(desc: TestDescriptor?) { }
-        override fun afterSuite(desc: TestDescriptor?, result: TestResult?) { }
-        override fun beforeTest(desc: TestDescriptor?) {
-          if (project.hasProperty("one_line_per_test")) {
-            println("Start executing ${desc}")
+      if (project.hasProperty("one_line_per_test")
+        || project.hasProperty("update_test_timestamp")) {
+        test.addTestListener(object : TestListener {
+          override fun beforeSuite(desc: TestDescriptor?) {}
+          override fun afterSuite(desc: TestDescriptor?, result: TestResult?) {}
+          override fun beforeTest(desc: TestDescriptor?) {
+            if (project.hasProperty("one_line_per_test")) {
+              println("Start executing ${desc}")
+            }
           }
-        }
-        override fun afterTest(desc: TestDescriptor?, result: TestResult?) {
-          if (project.hasProperty("one_line_per_test")) {
-            println("Done executing ${desc} with result: ${result?.resultType}")
-          }
-          if (project.hasProperty("update_test_timestamp")) {
-            File(project.property("update_test_timestamp")!!.toString())
+
+          override fun afterTest(desc: TestDescriptor?, result: TestResult?) {
+            if (project.hasProperty("one_line_per_test")) {
+              println("Done executing ${desc} with result: ${result?.resultType}")
+            }
+            if (project.hasProperty("update_test_timestamp")) {
+              File(project.property("update_test_timestamp")!!.toString())
                 .writeText(Date().getTime().toString())
+            }
           }
-        }
-      })
+        })
+      }
 
       val userDefinedCoresPerFork = System.getenv("R8_GRADLE_CORES_PER_FORK")
       val processors = Runtime.getRuntime().availableProcessors()
diff --git a/d8_r8/main/build.gradle.kts b/d8_r8/main/build.gradle.kts
index e75c8e6..167a66a 100644
--- a/d8_r8/main/build.gradle.kts
+++ b/d8_r8/main/build.gradle.kts
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import java.nio.file.Paths
+import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
 import net.ltgt.gradle.errorprone.errorprone
 
 plugins {
@@ -162,6 +162,10 @@
   }
 }
 
+tasks.withType<KotlinCompile> {
+  enabled = false
+}
+
 tasks.withType<JavaCompile> {
   dependsOn(thirdPartyCompileDependenciesTask)
   println("NOTE: Running with JDK: " + org.gradle.internal.jvm.Jvm.current().javaHome)
diff --git a/d8_r8/test_modules/tests_java_8/build.gradle.kts b/d8_r8/test_modules/tests_java_8/build.gradle.kts
index 0d9db78..59d5320 100644
--- a/d8_r8/test_modules/tests_java_8/build.gradle.kts
+++ b/d8_r8/test_modules/tests_java_8/build.gradle.kts
@@ -36,7 +36,8 @@
 dependencies {
   implementation(keepAnnoJarTask.outputs.files)
   implementation(projectTask("main", "jar").outputs.files)
-  implementation(projectTask("resourceshrinker", "jar").outputs.files)
+  implementation(projectTask("resourceshrinker", "compileJava").outputs.files)
+  implementation(projectTask("resourceshrinker", "compileKotlin").outputs.files)
   implementation(projectTask("resourceshrinker", "depsJar").outputs.files)
   implementation(Deps.asm)
   implementation(Deps.asmCommons)
diff --git a/third_party/dependencies.tar.gz.sha1 b/third_party/dependencies.tar.gz.sha1
index 1c1ad7b..139251d 100644
--- a/third_party/dependencies.tar.gz.sha1
+++ b/third_party/dependencies.tar.gz.sha1
@@ -1 +1 @@
-cfbdceb60320ae102577b1cc274ce0af4432722a
\ No newline at end of file
+d004917502f1b50bedada4bc5cca457ceb237c87
\ No newline at end of file
diff --git a/third_party/dependencies_new.tar.gz.sha1 b/third_party/dependencies_new.tar.gz.sha1
index 89aecc2..2d9e556 100644
--- a/third_party/dependencies_new.tar.gz.sha1
+++ b/third_party/dependencies_new.tar.gz.sha1
@@ -1 +1 @@
-80d787df74a6a07f673def5ebc38dff24515fe1c
\ No newline at end of file
+e2dff12bf95f94797da37f77b274fe222aeda83a
\ No newline at end of file
diff --git a/third_party/gradle/gradle-8.3.tar.gz.sha1 b/third_party/gradle/gradle-8.3.tar.gz.sha1
new file mode 100644
index 0000000..4afa179
--- /dev/null
+++ b/third_party/gradle/gradle-8.3.tar.gz.sha1
@@ -0,0 +1 @@
+214033edc4cfc5f29f0d3ea437f8557f424a6577
\ No newline at end of file
diff --git a/tools/create_local_maven_with_dependencies.py b/tools/create_local_maven_with_dependencies.py
index 1c345b7..3c945f3 100755
--- a/tools/create_local_maven_with_dependencies.py
+++ b/tools/create_local_maven_with_dependencies.py
@@ -70,6 +70,13 @@
   'org.jetbrains.kotlin:kotlin-tooling-core:1.8.10',
   'net.ltgt.errorprone:net.ltgt.errorprone.gradle.plugin:3.0.1',
   'com.google.errorprone:javac:9+181-r4173-1',
+  # Gradle 8.3
+  'org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin:4.1.0',
+  'org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:1.9.0',
+  'org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.0',
+  'org.jetbrains.kotlin:kotlin-reflect:1.9.0',
+  'org.jetbrains.kotlin:kotlin-script-runtime:1.9.0',
+  'org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:1.9.0',
   # Resource shrinker
   'com.android.tools.build:aapt2-proto:{version}'.format(version = AAPT2_PROTO_VERSION),
   'com.android.tools.layoutlib:layoutlib-api:{version}'.format(version = STUDIO_SDK_VERSION),
diff --git a/tools/gradle.py b/tools/gradle.py
index 00aca65..3e3c464 100755
--- a/tools/gradle.py
+++ b/tools/gradle.py
@@ -17,12 +17,12 @@
 
 GRADLE_DIR = os.path.join(utils.REPO_ROOT, 'third_party', 'gradle')
 GRADLE_SHA1 = os.path.join(GRADLE_DIR, 'gradle.tar.gz.sha1')
-GRADLE8_SHA1 = os.path.join(GRADLE_DIR, 'gradle-8.0.tar.gz.sha1')
+GRADLE8_SHA1 = os.path.join(GRADLE_DIR, 'gradle-8.3.tar.gz.sha1')
 GRADLE_TGZ = os.path.join(GRADLE_DIR, 'gradle.tar.gz')
-GRADLE8_TGZ = os.path.join(GRADLE_DIR, 'gradle-8.0.tar.gz')
+GRADLE8_TGZ = os.path.join(GRADLE_DIR, 'gradle-8.3.tar.gz')
 
 def get_gradle(new_gradle):
-  gradle_dir = 'gradle-8.0' if new_gradle else 'gradle'
+  gradle_dir = 'gradle-8.3' if new_gradle else 'gradle'
   if utils.IsWindows():
     return os.path.join(GRADLE_DIR, gradle_dir, 'bin', 'gradle.bat')
   else: