)]}'
{
  "commit": "c5bf2c0560a541cc7697caed6b707b463be4d98b",
  "tree": "3e57a255980bdb6488cae8c8f66a50f8ea39c1c0",
  "parents": [
    "bc4cbbe7dc15e8aa7af43f2e9213e1044bcdf556"
  ],
  "author": {
    "name": "Søren Gjesse",
    "email": "sgjesse@google.com",
    "time": "Fri Nov 03 13:55:27 2023 +0100"
  },
  "committer": {
    "name": "Søren Gjesse",
    "email": "sgjesse@google.com",
    "time": "Fri Nov 03 13:05:55 2023 +0000"
  },
  "message": "Update the spdx-gradle-plugin to latest HEAD with patch\n\nThe spdx-gradle-plugin is built from https://github.com/spdx/spdx-gradle-plugin\nat e935c0c26e09de34977be794435f63b6382c3d33 with the following patch:\n\ndiff --git a/gradle.properties b/gradle.properties\nindex b31ef9a..f24f400 100644\n\n--- a/gradle.properties\n+++ b/gradle.properties\n@@ -1 +1 @@\n-version\u003d0.4.0\n+version\u003d0.4.0-r8-patch01\ndiff --git a/src/main/java/org/spdx/sbom/gradle/utils/SpdxDocumentBuilder.java b/src/main/java/org/spdx/sbom/gradle/utils/SpdxDocumentBuilder.java\nindex de3214a..af25bf2 100644\n--- a/src/main/java/org/spdx/sbom/gradle/utils/SpdxDocumentBuilder.java\n+++ b/src/main/java/org/spdx/sbom/gradle/utils/SpdxDocumentBuilder.java\n@@ -168,9 +168,56 @@ public class SpdxDocumentBuilder {\n                     (file1, file2) -\u003e {\n                       if (Objects.equals(file1, file2)) {\n                         return file1;\n-                      } else\n+                      } else {\n+                        // In the current R8 build setup we get the following file pairs\n+                        // (as of 8c88aa02f7804f5a37ca6aea38cfc7f76c806360);\n+                        //\n+                        // d8_r8/keepanno/build/classes/java/main\n+                        // d8_r8/keepanno/build/classes/kotlin/main\n+                        //\n+                        // d8_r8/resourceshrinker/build/classes/kotlin/main\n+                        // d8_r8/resourceshrinker/build/classes/java/main\n+                        //\n+                        // d8_r8/keepanno/build/classes/java/main\n+                        // d8_r8/keepanno/build/classes/kotlin/main\n+                        //\n+                        // d8_r8/keepanno/build/classes/java/main\n+                        // d8_r8/keepanno/build/libs/keepanno.jar\n+                        //\n+                        // d8_r8/resourceshrinker/build/classes/java/main\n+                        // d8_r8/resourceshrinker/build/libs/resourceshrinker.jar\n+                        //\n+                        // For now workaround the duplicated by preferring file to directory and\n+                        // java directory to kotlin directory when both are directories.\n+                        if (!file1.exists()) {\n+                          return file2;\n+                        }\n+                        if (!file2.exists()) {\n+                          return file1;\n+                        }\n+                        if (file1.isFile() \u0026\u0026 file2.isDirectory()) {\n+                          return file1;\n+                        }\n+                        if (file1.isDirectory() \u0026\u0026 file2.isFile()) {\n+                          return file2;\n+                        }\n+                        if (file1.isDirectory() \u0026\u0026 file2.isDirectory()) {\n+                          if (file1.getName().equals(file2.getName())) {\n+                            String parent1 \u003d file1.getParent();\n+                            String parent2 \u003d file2.getParent();\n+                            if (parent1.endsWith(\"classes/java\") \u0026\u0026 parent2.endsWith(\n+                                \"classes/kotlin\")) {\n+                              return file1;\n+                            }\n+                            if (parent2.endsWith(\"classes/java\") \u0026\u0026 parent1.endsWith(\n+                                \"classes/kotlin\")) {\n+                              return file2;\n+                            }\n+                          }\n+                        }\n                         throw new IllegalStateException(\n                             \"cannot merge duplicate \" + file1 + \" and \" + file2);\n+                      }\n                     }));\n     this.mavenArtifactRepositories \u003d mavenArtifactRepositories;\n     this.poms \u003d poms;\n\nBuilt with\n\n  ./gradlew -Pskip.signing -Dmaven.repo.local\u003d/tmp/spdx-gradle-plugin publishToMavenLocal\n\nAdded to dependencies with:\n\n  tools/create_local_maven_with_dependencies.py \\\n    --no-upload \\\n    --studio \u003cstudio-path\u003e \\\n    --plugin-deps \\\n    --include-maven-local /tmp/spdx-gradle-plugin\n\nFixes: b/309083377\nChange-Id: I66e33c1e49e113fb4ae9121876f33d6e10eefdb9\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ab4f2527d1b8f4f161f5c6195cb43791b6fcfa3d",
      "old_mode": 33188,
      "old_path": "d8_r8/main/build.gradle.kts",
      "new_id": "c4412849c7d4dc1a2c2ffed96b5f43e34fe14882",
      "new_mode": 33188,
      "new_path": "d8_r8/main/build.gradle.kts"
    },
    {
      "type": "modify",
      "old_id": "73510da87f2fc8a96f9a4f251fb250b03990c8e3",
      "old_mode": 33188,
      "old_path": "third_party/dependencies_plugin.tar.gz.sha1",
      "new_id": "fa66accc19098876c069289d403427670e75b738",
      "new_mode": 33188,
      "new_path": "third_party/dependencies_plugin.tar.gz.sha1"
    },
    {
      "type": "modify",
      "old_id": "fd06fa41d1b437410075c33239ce5b458865b76a",
      "old_mode": 33261,
      "old_path": "tools/create_local_maven_with_dependencies.py",
      "new_id": "4f63ef9ada84b01d964a01e801623d9999631aa1",
      "new_mode": 33261,
      "new_path": "tools/create_local_maven_with_dependencies.py"
    }
  ]
}
