From cd22c9ef24b81cd04dc11941667d220d0c456d38 Mon Sep 17 00:00:00 2001 From: Sebastian Schuberth Date: Wed, 11 Sep 2024 13:51:13 +0200 Subject: [PATCH 1/5] docs(gradle-inspector): Fix the link to the init script resource This is a fixup for 7373195. Signed-off-by: Sebastian Schuberth --- plugins/package-managers/gradle-inspector/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/package-managers/gradle-inspector/README.md b/plugins/package-managers/gradle-inspector/README.md index e8c42a0c96bd6..602734f9f53fb 100644 --- a/plugins/package-managers/gradle-inspector/README.md +++ b/plugins/package-managers/gradle-inspector/README.md @@ -42,7 +42,7 @@ Also, the `isModified` check which compares with artifacts of the same name in M [shortcomings]: https://github.com/oss-review-toolkit/ort/issues/5782 [Gradle]: ../gradle/src/main/kotlin/Gradle.kt [initialization script]: https://docs.gradle.org/current/userguide/init_scripts.html -[init.gradle]: ./src/main/resources/init.gradle.template +[init.gradle]: ./src/main/resources/template.init.gradle [Gradle plugin]: ../gradle-plugin/src/main/kotlin/OrtModelPlugin.kt [OrtModelBuilder]: ../gradle-plugin/src/main/kotlin/OrtModelBuilder.kt [data model for Gradle projects]: ../gradle-model/src/main/kotlin/GradleModel.kt From f84a030eae375abc0858bdc89bd302f18ffd8f2f Mon Sep 17 00:00:00 2001 From: Sebastian Schuberth Date: Wed, 11 Sep 2024 13:08:52 +0200 Subject: [PATCH 2/5] fix(pub): Use the correct key name when replacing options In ff0ca15, `OPTION_GRADLE_VERSION` (which equals "gradleVersion") was errorneously replaced with `gradleFactory.type` (which equals "Gradle") in two places. One of these was fixed in 1ba253a. Fix the other one here. Signed-off-by: Sebastian Schuberth --- plugins/package-managers/pub/src/main/kotlin/Pub.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/package-managers/pub/src/main/kotlin/Pub.kt b/plugins/package-managers/pub/src/main/kotlin/Pub.kt index 016c11f47d70d..1c1459e523002 100644 --- a/plugins/package-managers/pub/src/main/kotlin/Pub.kt +++ b/plugins/package-managers/pub/src/main/kotlin/Pub.kt @@ -452,7 +452,7 @@ class Pub( val gradleAnalyzerConfig = analyzerConfig.withPackageManagerOption( "Gradle", - gradleFactory.type, + OPTION_GRADLE_VERSION, pubGradleVersion ) From 5ecb0d4f565384722510a8120cae6d3b5a823cbe Mon Sep 17 00:00:00 2001 From: Sebastian Schuberth Date: Wed, 11 Sep 2024 13:16:04 +0200 Subject: [PATCH 3/5] feat(pub): Always use the (one) enabled Gradle package manager As of 04b0356, the analyzer refuses to have multiple package managers for the same project type enabled. So make Pub always use that one, if any, Gradle package manager to avoid problems if a user enables `GradleInspector` but Pub tries to use legacy `Gradle`. Signed-off-by: Sebastian Schuberth --- plugins/package-managers/pub/src/main/kotlin/Pub.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/package-managers/pub/src/main/kotlin/Pub.kt b/plugins/package-managers/pub/src/main/kotlin/Pub.kt index 1c1459e523002..04dc8f7653342 100644 --- a/plugins/package-managers/pub/src/main/kotlin/Pub.kt +++ b/plugins/package-managers/pub/src/main/kotlin/Pub.kt @@ -30,8 +30,8 @@ import org.ossreviewtoolkit.analyzer.AbstractPackageManagerFactory import org.ossreviewtoolkit.analyzer.PackageManager import org.ossreviewtoolkit.analyzer.PackageManagerDependency import org.ossreviewtoolkit.analyzer.PackageManagerDependencyResult -import org.ossreviewtoolkit.analyzer.PackageManagerFactory import org.ossreviewtoolkit.analyzer.PackageManagerResult +import org.ossreviewtoolkit.analyzer.determineEnabledPackageManagers import org.ossreviewtoolkit.analyzer.parseAuthorString import org.ossreviewtoolkit.analyzer.toPackageReference import org.ossreviewtoolkit.downloader.VcsHost @@ -132,7 +132,7 @@ class Pub( private val flutterAbsolutePath = flutterHome.resolve("bin") - private val gradleFactory = PackageManagerFactory.ALL["Gradle"] + private val gradleFactory = analyzerConfig.determineEnabledPackageManagers().find { it.type.startsWith("Gradle") } private data class ParsePackagesResult( val packages: Map, @@ -451,7 +451,7 @@ class Pub( } val gradleAnalyzerConfig = analyzerConfig.withPackageManagerOption( - "Gradle", + gradleFactory.type, OPTION_GRADLE_VERSION, pubGradleVersion ) From 500e68017cd5f76441b4fe6a3a329a76f0d9a10e Mon Sep 17 00:00:00 2001 From: Sebastian Schuberth Date: Tue, 3 Sep 2024 12:15:59 +0200 Subject: [PATCH 4/5] docs(gradle-inspector): Update the list of known limitations Format limitations as a list, add [1], and improve wording along the way. [1]: https://github.com/oss-review-toolkit/ort/issues/7995 Signed-off-by: Sebastian Schuberth --- plugins/package-managers/gradle-inspector/README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/plugins/package-managers/gradle-inspector/README.md b/plugins/package-managers/gradle-inspector/README.md index 602734f9f53fb..36d2b58b742de 100644 --- a/plugins/package-managers/gradle-inspector/README.md +++ b/plugins/package-managers/gradle-inspector/README.md @@ -31,11 +31,12 @@ Execution of the Gradle plugin will be blocked until the remote debugger is atta ## Limitations -The retrieval of the checksum values for remote artifacts is currently done via plain OkHttp calls, which means it will not work out of the box for private repositories. -To work around this, credentials need to be configured in `.netrc` additionally to in Gradle. -This is similar to how the "legacy" [Gradle] analyzer required to additionally configure credentials in Maven. +Currently, the [GradleInspector] has the following known limitations: -Also, the `isModified` check which compares with artifacts of the same name in Maven Central is not implemented yet. +* The retrieval of the checksum values for remote artifacts is currently done via plain OkHttp calls, which means it will not work out of the box for private repositories. + To work around this, credentials need to be configured in a `.netrc` file in addition to the Gradle build. +* The `isModified` check which compares build artifacts with artifacts of the same name in Maven Central is not implemented yet. +* The implementation [cannot deal with classifiers and / or non-JAR artifacts]. [GradleInspector]: ./src/main/kotlin/GradleInspector.kt [several]: https://github.com/oss-review-toolkit/ort/issues/4694 @@ -46,3 +47,4 @@ Also, the `isModified` check which compares with artifacts of the same name in M [Gradle plugin]: ../gradle-plugin/src/main/kotlin/OrtModelPlugin.kt [OrtModelBuilder]: ../gradle-plugin/src/main/kotlin/OrtModelBuilder.kt [data model for Gradle projects]: ../gradle-model/src/main/kotlin/GradleModel.kt +[cannot deal with classifiers and / or non-JAR artifacts]: https://github.com/oss-review-toolkit/ort/issues/7995 From c9db5a7f6240746f8b5700f02dcd8f247b853bac Mon Sep 17 00:00:00 2001 From: Sebastian Schuberth Date: Tue, 3 Sep 2024 12:17:45 +0200 Subject: [PATCH 5/5] feat(gradle)!: Make GradleInspector the new default Despite its documented limitations, the benefits outweight the drawbacks of making this the default analyzer for Gradle projects. Adjust the Pub package manager as well to use `GradleInspector` for its tests, which highlights the additional metadata collected. Signed-off-by: Sebastian Schuberth --- .../funTest/kotlin/PackageManagerFunTest.kt | 10 +- .../gradle-inspector/README.md | 15 +- .../src/main/kotlin/GradleInspector.kt | 2 +- .../gradle/src/main/kotlin/Gradle.kt | 2 +- plugins/package-managers/pub/build.gradle.kts | 2 +- ...put-with-flutter-android-and-cocoapods.yml | 186 +++++++++--------- 6 files changed, 105 insertions(+), 112 deletions(-) diff --git a/analyzer/src/funTest/kotlin/PackageManagerFunTest.kt b/analyzer/src/funTest/kotlin/PackageManagerFunTest.kt index 65bf665b13011..2ce1d014f77f7 100644 --- a/analyzer/src/funTest/kotlin/PackageManagerFunTest.kt +++ b/analyzer/src/funTest/kotlin/PackageManagerFunTest.kt @@ -103,7 +103,7 @@ class PackageManagerFunTest : WordSpec({ "conan-txt/conanfile.txt" ) managedFilesByName["GoMod"] should containExactly("gomod/go.mod") - managedFilesByName["Gradle"] should containExactlyInAnyOrder( + managedFilesByName["GradleInspector"] should containExactlyInAnyOrder( "gradle-groovy/build.gradle", "gradle-kotlin/build.gradle.kts" ) @@ -139,7 +139,7 @@ class PackageManagerFunTest : WordSpec({ val managedFiles = PackageManager.findManagedFiles( projectDir, setOf( - PackageManagerFactory.ALL.getValue("Gradle"), + PackageManagerFactory.ALL.getValue("GradleInspector"), PackageManagerFactory.ALL.getValue("Pip"), PackageManagerFactory.ALL.getValue("Sbt") ) @@ -149,7 +149,7 @@ class PackageManagerFunTest : WordSpec({ val managedFilesByName = managedFiles.groupByName(projectDir) - managedFilesByName["Gradle"] should containExactlyInAnyOrder( + managedFilesByName["GradleInspector"] should containExactlyInAnyOrder( "gradle-groovy/build.gradle", "gradle-kotlin/build.gradle.kts" ) @@ -178,7 +178,7 @@ class PackageManagerFunTest : WordSpec({ val managedFilesByName = PackageManager.findManagedFiles(rootDir, excludes = excludes).groupByName(rootDir) - managedFilesByName["Gradle"] should containExactlyInAnyOrder( + managedFilesByName["GradleInspector"] should containExactlyInAnyOrder( "gradle-groovy/build.gradle", "gradle-kotlin/build.gradle.kts" ) @@ -193,7 +193,7 @@ class PackageManagerFunTest : WordSpec({ val managedFiles = PackageManager.findManagedFiles(projectDir, excludes = excludes) val managedFilesByName = managedFiles.groupByName(projectDir) - managedFilesByName["Gradle"] should containExactly( + managedFilesByName["GradleInspector"] should containExactly( "gradle-kotlin/build.gradle.kts" ) } diff --git a/plugins/package-managers/gradle-inspector/README.md b/plugins/package-managers/gradle-inspector/README.md index 36d2b58b742de..2d0ffe8f877f0 100644 --- a/plugins/package-managers/gradle-inspector/README.md +++ b/plugins/package-managers/gradle-inspector/README.md @@ -1,17 +1,10 @@ # GradleInspector -The [GradleInspector] is an alternative analyzer for projects that use the Gradle package manager. -It is supposed to address [several] [shortcomings] of the "legacy" [Gradle] analyzer, but to not interfere with it, the [GradleInspector] is disabled by default. +The [GradleInspector] is the default analyzer for projects that use the Gradle package manager. +It is supposed to address [several] [shortcomings] of the "legacy" [Gradle] analyzer, which is disabled by default. -## Usage - -As the [GradleInspector] is disabled by default, it needs to be enabled explicitly (along with any other package managers that should be enabled): - -```shell -ort -P ort.analyzer.enabledPackageManagers=GradleInspector[,...] analyze -``` - -It is recommended to *not* also enable the "legacy" [Gradle] analyzer at the same time, as both analyzers would find the same definition files. +> [!NOTE] +> It is *not* recommended to also enable the "legacy" [Gradle] analyzer at the same time, as both analyzers would find the same definition files. ## Implementation diff --git a/plugins/package-managers/gradle-inspector/src/main/kotlin/GradleInspector.kt b/plugins/package-managers/gradle-inspector/src/main/kotlin/GradleInspector.kt index 681135556a7dc..69522a1a13ff2 100644 --- a/plugins/package-managers/gradle-inspector/src/main/kotlin/GradleInspector.kt +++ b/plugins/package-managers/gradle-inspector/src/main/kotlin/GradleInspector.kt @@ -95,7 +95,7 @@ class GradleInspector( analyzerConfig: AnalyzerConfiguration, repoConfig: RepositoryConfiguration ) : PackageManager(name, analysisRoot, analyzerConfig, repoConfig) { - class Factory : AbstractPackageManagerFactory("GradleInspector", isEnabledByDefault = false) { + class Factory : AbstractPackageManagerFactory("GradleInspector") { // Gradle prefers Groovy ".gradle" files over Kotlin ".gradle.kts" files, but "build" files have to come before // "settings" files as we should consider "settings" files only if the same directory does not also contain a // "build" file. diff --git a/plugins/package-managers/gradle/src/main/kotlin/Gradle.kt b/plugins/package-managers/gradle/src/main/kotlin/Gradle.kt index 5cb8753b2124e..0f425bc0598cb 100644 --- a/plugins/package-managers/gradle/src/main/kotlin/Gradle.kt +++ b/plugins/package-managers/gradle/src/main/kotlin/Gradle.kt @@ -93,7 +93,7 @@ class Gradle( const val OPTION_GRADLE_VERSION = "gradleVersion" } - class Factory : AbstractPackageManagerFactory("Gradle") { + class Factory : AbstractPackageManagerFactory("Gradle", isEnabledByDefault = false) { // Gradle prefers Groovy ".gradle" files over Kotlin ".gradle.kts" files, but "build" files have to come before // "settings" files as we should consider "settings" files only if the same directory does not also contain a // "build" file. diff --git a/plugins/package-managers/pub/build.gradle.kts b/plugins/package-managers/pub/build.gradle.kts index 48af71b37a0f6..89cab4ad17341 100644 --- a/plugins/package-managers/pub/build.gradle.kts +++ b/plugins/package-managers/pub/build.gradle.kts @@ -46,7 +46,7 @@ dependencies { implementation(libs.kotlinx.serialization.core) implementation(libs.kotlinx.serialization.yaml) - funTestImplementation(projects.plugins.packageManagers.gradlePackageManager) + funTestImplementation(projects.plugins.packageManagers.gradleInspector) funTestImplementation(testFixtures(projects.analyzer)) } diff --git a/plugins/package-managers/pub/src/funTest/assets/projects/synthetic/pub-expected-output-with-flutter-android-and-cocoapods.yml b/plugins/package-managers/pub/src/funTest/assets/projects/synthetic/pub-expected-output-with-flutter-android-and-cocoapods.yml index 112d5aad8afee..4f5bfc6f0f36a 100644 --- a/plugins/package-managers/pub/src/funTest/assets/projects/synthetic/pub-expected-output-with-flutter-android-and-cocoapods.yml +++ b/plugins/package-managers/pub/src/funTest/assets/projects/synthetic/pub-expected-output-with-flutter-android-and-cocoapods.yml @@ -321,10 +321,10 @@ packages: \ a composable structure on top." homepage_url: "https://developer.android.com/jetpack/androidx" binary_artifact: - url: "" + url: "https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.0.0/activity-1.0.0.aar" hash: - value: "" - algorithm: "" + value: "ed7a64df6e3fbebf7d3d3dfc30b0f47efcc707f7" + algorithm: "SHA-1" source_artifact: url: "https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.0.0/activity-1.0.0-sources.jar" hash: @@ -355,10 +355,10 @@ packages: \ versions or utility APIs that aren't a part of the framework APIs." homepage_url: "https://developer.android.com/jetpack/androidx/releases/annotation#1.2.0" binary_artifact: - url: "" + url: "https://dl.google.com/dl/android/maven2/androidx/annotation/annotation/1.2.0/annotation-1.2.0.jar" hash: - value: "" - algorithm: "" + value: "57136ff68ee784c6e19db34ed4a175338fadfde1" + algorithm: "SHA-1" source_artifact: url: "https://dl.google.com/dl/android/maven2/androidx/annotation/annotation/1.2.0/annotation-1.2.0-sources.jar" hash: @@ -389,10 +389,10 @@ packages: \ provides functional parity with Kotlin's Experimental annotation." homepage_url: "https://developer.android.com/jetpack/androidx/releases/annotation#1.1.0" binary_artifact: - url: "" + url: "https://dl.google.com/dl/android/maven2/androidx/annotation/annotation-experimental/1.1.0/annotation-experimental-1.1.0.aar" hash: - value: "" - algorithm: "" + value: "5481c9aca18271c977d67b30e26f484f3f8f1c02" + algorithm: "SHA-1" source_artifact: url: "https://dl.google.com/dl/android/maven2/androidx/annotation/annotation-experimental/1.1.0/annotation-experimental-1.1.0-sources.jar" hash: @@ -421,10 +421,10 @@ packages: description: "Android Arch-Common" homepage_url: "https://developer.android.com/topic/libraries/architecture/index.html" binary_artifact: - url: "" + url: "https://dl.google.com/dl/android/maven2/androidx/arch/core/core-common/2.1.0/core-common-2.1.0.jar" hash: - value: "" - algorithm: "" + value: "b3152fc64428c9354344bd89848ecddc09b6f07e" + algorithm: "SHA-1" source_artifact: url: "https://dl.google.com/dl/android/maven2/androidx/arch/core/core-common/2.1.0/core-common-2.1.0-sources.jar" hash: @@ -453,10 +453,10 @@ packages: description: "Android Arch-Runtime" homepage_url: "https://developer.android.com/topic/libraries/architecture/index.html" binary_artifact: - url: "" + url: "https://dl.google.com/dl/android/maven2/androidx/arch/core/core-runtime/2.0.0/core-runtime-2.0.0.aar" hash: - value: "" - algorithm: "" + value: "c5be9edf9ca9135a465d23939f6e7d0e1cf90b41" + algorithm: "SHA-1" source_artifact: url: "https://dl.google.com/dl/android/maven2/androidx/arch/core/core-runtime/2.0.0/core-runtime-2.0.0-sources.jar" hash: @@ -485,10 +485,10 @@ packages: description: "Standalone efficient collections." homepage_url: "http://developer.android.com/tools/extras/support-library.html" binary_artifact: - url: "" + url: "https://dl.google.com/dl/android/maven2/androidx/collection/collection/1.1.0/collection-1.1.0.jar" hash: - value: "" - algorithm: "" + value: "1f27220b47669781457de0d600849a5de0e89909" + algorithm: "SHA-1" source_artifact: url: "https://dl.google.com/dl/android/maven2/androidx/collection/collection/1.1.0/collection-1.1.0-sources.jar" hash: @@ -520,10 +520,10 @@ packages: \ on devices running API 14 or later." homepage_url: "https://developer.android.com/jetpack/androidx/releases/core#1.6.0" binary_artifact: - url: "" + url: "https://dl.google.com/dl/android/maven2/androidx/core/core/1.6.0/core-1.6.0.aar" hash: - value: "" - algorithm: "" + value: "10775f024a338475a5e374033f4532a7b3d8994f" + algorithm: "SHA-1" source_artifact: url: "https://dl.google.com/dl/android/maven2/androidx/core/core/1.6.0/core-1.6.0-sources.jar" hash: @@ -555,10 +555,10 @@ packages: \ on devices running API 14 or later." homepage_url: "http://developer.android.com/tools/extras/support-library.html" binary_artifact: - url: "" + url: "https://dl.google.com/dl/android/maven2/androidx/customview/customview/1.0.0/customview-1.0.0.aar" hash: - value: "" - algorithm: "" + value: "30f5ff6075d112f8076e733b24410e68159735b6" + algorithm: "SHA-1" source_artifact: url: "https://dl.google.com/dl/android/maven2/androidx/customview/customview/1.0.0/customview-1.0.0-sources.jar" hash: @@ -590,10 +590,10 @@ packages: \ on devices running API 14 or later." homepage_url: "https://developer.android.com/jetpack/androidx" binary_artifact: - url: "" + url: "https://dl.google.com/dl/android/maven2/androidx/fragment/fragment/1.1.0/fragment-1.1.0.aar" hash: - value: "" - algorithm: "" + value: "5f9efc7569e651415a0958d6b3e6226ef2825c24" + algorithm: "SHA-1" source_artifact: url: "https://dl.google.com/dl/android/maven2/androidx/fragment/fragment/1.1.0/fragment-1.1.0-sources.jar" hash: @@ -622,10 +622,10 @@ packages: description: "Android Lifecycle-Common" homepage_url: "https://developer.android.com/topic/libraries/architecture/index.html" binary_artifact: - url: "" + url: "https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-common/2.2.0/lifecycle-common-2.2.0.jar" hash: - value: "" - algorithm: "" + value: "4ef09a745007778eef83b92f8f23987a8ea59496" + algorithm: "SHA-1" source_artifact: url: "https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-common/2.2.0/lifecycle-common-2.2.0-sources.jar" hash: @@ -654,10 +654,10 @@ packages: description: "Android Lifecycle-Common for Java 8 Language" homepage_url: "https://developer.android.com/topic/libraries/architecture/index.html" binary_artifact: - url: "" + url: "https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-common-java8/2.2.0/lifecycle-common-java8-2.2.0.jar" hash: - value: "" - algorithm: "" + value: "cd3478503da69b1a7e0319bd2d1389943db9b364" + algorithm: "SHA-1" source_artifact: url: "https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-common-java8/2.2.0/lifecycle-common-java8-2.2.0-sources.jar" hash: @@ -686,10 +686,10 @@ packages: description: "Android Lifecycle LiveData" homepage_url: "https://developer.android.com/topic/libraries/architecture/index.html" binary_artifact: - url: "" + url: "https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-livedata/2.0.0/lifecycle-livedata-2.0.0.aar" hash: - value: "" - algorithm: "" + value: "c17007cd0b21d6401910b0becdd16c438c68a9af" + algorithm: "SHA-1" source_artifact: url: "https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-livedata/2.0.0/lifecycle-livedata-2.0.0-sources.jar" hash: @@ -718,10 +718,10 @@ packages: description: "Android Lifecycle LiveData Core" homepage_url: "https://developer.android.com/topic/libraries/architecture/index.html" binary_artifact: - url: "" + url: "https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-livedata-core/2.0.0/lifecycle-livedata-core-2.0.0.aar" hash: - value: "" - algorithm: "" + value: "1a7cee84b43fa935231b016f0665cd56a72fa9db" + algorithm: "SHA-1" source_artifact: url: "https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-livedata-core/2.0.0/lifecycle-livedata-core-2.0.0-sources.jar" hash: @@ -750,10 +750,10 @@ packages: description: "Android Lifecycle Runtime" homepage_url: "https://developer.android.com/topic/libraries/architecture/index.html" binary_artifact: - url: "" + url: "https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-runtime/2.2.0/lifecycle-runtime-2.2.0.aar" hash: - value: "" - algorithm: "" + value: "62fab579508713b8bbb6d251b0abff6e538e8f46" + algorithm: "SHA-1" source_artifact: url: "https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-runtime/2.2.0/lifecycle-runtime-2.2.0-sources.jar" hash: @@ -782,10 +782,10 @@ packages: description: "Android Lifecycle ViewModel" homepage_url: "https://developer.android.com/topic/libraries/architecture/index.html" binary_artifact: - url: "" + url: "https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-viewmodel/2.1.0/lifecycle-viewmodel-2.1.0.aar" hash: - value: "" - algorithm: "" + value: "682d06cc95e0632efdb9cfcc18828840ac941148" + algorithm: "SHA-1" source_artifact: url: "https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-viewmodel/2.1.0/lifecycle-viewmodel-2.1.0-sources.jar" hash: @@ -817,10 +817,10 @@ packages: \ on devices running API 14 or later." homepage_url: "http://developer.android.com/tools/extras/support-library.html" binary_artifact: - url: "" + url: "https://dl.google.com/dl/android/maven2/androidx/loader/loader/1.0.0/loader-1.0.0.aar" hash: - value: "" - algorithm: "" + value: "8af8b6cec0da85c207d03e15840e0722cbc71e70" + algorithm: "SHA-1" source_artifact: url: "https://dl.google.com/dl/android/maven2/androidx/loader/loader/1.0.0/loader-1.0.0-sources.jar" hash: @@ -850,10 +850,10 @@ packages: \ a composable structure on top." homepage_url: "https://developer.android.com/jetpack/androidx" binary_artifact: - url: "" + url: "https://dl.google.com/dl/android/maven2/androidx/savedstate/savedstate/1.0.0/savedstate-1.0.0.aar" hash: - value: "" - algorithm: "" + value: "6d39721808cd67e3d3d0d60f194907615fcaa69c" + algorithm: "SHA-1" source_artifact: url: "https://dl.google.com/dl/android/maven2/androidx/savedstate/savedstate/1.0.0/savedstate-1.0.0-sources.jar" hash: @@ -882,10 +882,10 @@ packages: description: "Android Tracing" homepage_url: "https://developer.android.com/jetpack/androidx/releases/tracing#1.0.0" binary_artifact: - url: "" + url: "https://dl.google.com/dl/android/maven2/androidx/tracing/tracing/1.0.0/tracing-1.0.0.aar" hash: - value: "" - algorithm: "" + value: "69cef34711dffbc517e7a0a419ec4a98f84f496a" + algorithm: "SHA-1" source_artifact: url: "https://dl.google.com/dl/android/maven2/androidx/tracing/tracing/1.0.0/tracing-1.0.0-sources.jar" hash: @@ -915,10 +915,10 @@ packages: \ that can be passed across processes or persisted safely." homepage_url: "http://developer.android.com/tools/extras/support-library.html" binary_artifact: - url: "" + url: "https://dl.google.com/dl/android/maven2/androidx/versionedparcelable/versionedparcelable/1.1.1/versionedparcelable-1.1.1.aar" hash: - value: "" - algorithm: "" + value: "18e18071e7715679e0593c570217edeb5ca48b9e" + algorithm: "SHA-1" source_artifact: url: "https://dl.google.com/dl/android/maven2/androidx/versionedparcelable/versionedparcelable/1.1.1/versionedparcelable-1.1.1-sources.jar" hash: @@ -950,10 +950,10 @@ packages: \ on devices running API 14 or later." homepage_url: "http://developer.android.com/tools/extras/support-library.html" binary_artifact: - url: "" + url: "https://dl.google.com/dl/android/maven2/androidx/viewpager/viewpager/1.0.0/viewpager-1.0.0.aar" hash: - value: "" - algorithm: "" + value: "1f90e13820f96c2fb868f9674079a551678d68b2" + algorithm: "SHA-1" source_artifact: url: "https://dl.google.com/dl/android/maven2/androidx/viewpager/viewpager/1.0.0/viewpager-1.0.0-sources.jar" hash: @@ -983,10 +983,10 @@ packages: \ functionality on foldable devices." homepage_url: "https://developer.android.com/jetpack/androidx/releases/window#1.0.0-beta04" binary_artifact: - url: "" + url: "https://dl.google.com/dl/android/maven2/androidx/window/window/1.0.0-beta04/window-1.0.0-beta04.aar" hash: - value: "" - algorithm: "" + value: "a48b0773f8c0b0e0e8bbc7c1d1fa8f8beb44de37" + algorithm: "SHA-1" source_artifact: url: "https://dl.google.com/dl/android/maven2/androidx/window/window/1.0.0-beta04/window-1.0.0-beta04-sources.jar" hash: @@ -1015,10 +1015,10 @@ packages: description: "WindowManager Java Support" homepage_url: "https://developer.android.com/jetpack/androidx/releases/window#1.0.0-beta04" binary_artifact: - url: "" + url: "https://dl.google.com/dl/android/maven2/androidx/window/window-java/1.0.0-beta04/window-java-1.0.0-beta04.aar" hash: - value: "" - algorithm: "" + value: "ef1688d892f6dc05c9e1568cbb6355d35f2428d6" + algorithm: "SHA-1" source_artifact: url: "https://dl.google.com/dl/android/maven2/androidx/window/window-java/1.0.0-beta04/window-java-1.0.0-beta04-sources.jar" hash: @@ -1046,7 +1046,7 @@ packages: value: "" algorithm: "" source_artifact: - url: "" + url: "https://storage.googleapis.com/download.flutter.io/io/flutter/arm64_v8a_release/1.0.0-2e4ba9c6fb499ccd4e81420543783cc7267ae406/arm64_v8a_release-1.0.0-2e4ba9c6fb499ccd4e81420543783cc7267ae406-sources.jar" hash: value: "" algorithm: "" @@ -1072,7 +1072,7 @@ packages: value: "" algorithm: "" source_artifact: - url: "" + url: "https://storage.googleapis.com/download.flutter.io/io/flutter/armeabi_v7a_release/1.0.0-2e4ba9c6fb499ccd4e81420543783cc7267ae406/armeabi_v7a_release-1.0.0-2e4ba9c6fb499ccd4e81420543783cc7267ae406-sources.jar" hash: value: "" algorithm: "" @@ -1124,7 +1124,7 @@ packages: value: "" algorithm: "" source_artifact: - url: "" + url: "https://storage.googleapis.com/download.flutter.io/io/flutter/x86_64_release/1.0.0-2e4ba9c6fb499ccd4e81420543783cc7267ae406/x86_64_release-1.0.0-2e4ba9c6fb499ccd4e81420543783cc7267ae406-sources.jar" hash: value: "" algorithm: "" @@ -1151,10 +1151,10 @@ packages: description: "A set of annotations used for code inspection support and code documentation." homepage_url: "http://www.jetbrains.org" binary_artifact: - url: "" + url: "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar" hash: - value: "" - algorithm: "" + value: "919f0dfe192fb4e063e7dacadee7f8bb9a2672a9" + algorithm: "SHA-1" source_artifact: url: "https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0-sources.jar" hash: @@ -1183,10 +1183,10 @@ packages: description: "Kotlin Standard Library for JVM" homepage_url: "https://kotlinlang.org/" binary_artifact: - url: "" + url: "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.5.31/kotlin-stdlib-1.5.31.jar" hash: - value: "" - algorithm: "" + value: "6628d61d0f5603568e72d2d5915d2c034b4f1c55" + algorithm: "SHA-1" source_artifact: url: "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.5.31/kotlin-stdlib-1.5.31-sources.jar" hash: @@ -1215,10 +1215,10 @@ packages: description: "Kotlin Common Standard Library" homepage_url: "https://kotlinlang.org/" binary_artifact: - url: "" + url: "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.5.31/kotlin-stdlib-common-1.5.31.jar" hash: - value: "" - algorithm: "" + value: "043331609c7de811fed085e0dfd150874b157c32" + algorithm: "SHA-1" source_artifact: url: "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.5.31/kotlin-stdlib-common-1.5.31-sources.jar" hash: @@ -1247,10 +1247,10 @@ packages: description: "Kotlin Standard Library JDK 7 extension" homepage_url: "https://kotlinlang.org/" binary_artifact: - url: "" + url: "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.5.30/kotlin-stdlib-jdk7-1.5.30.jar" hash: - value: "" - algorithm: "" + value: "525f5a7fa6d7790a571c07dd24214ed2dda352fe" + algorithm: "SHA-1" source_artifact: url: "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.5.30/kotlin-stdlib-jdk7-1.5.30-sources.jar" hash: @@ -1279,10 +1279,10 @@ packages: description: "Kotlin Standard Library JDK 8 extension" homepage_url: "https://kotlinlang.org/" binary_artifact: - url: "" + url: "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.5.30/kotlin-stdlib-jdk8-1.5.30.jar" hash: - value: "" - algorithm: "" + value: "5fd47535cc85f9e24996f939c2de6583991481b0" + algorithm: "SHA-1" source_artifact: url: "https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.5.30/kotlin-stdlib-jdk8-1.5.30-sources.jar" hash: @@ -1311,10 +1311,10 @@ packages: description: "Coroutines support libraries for Kotlin" homepage_url: "https://github.com/Kotlin/kotlinx.coroutines" binary_artifact: - url: "" + url: "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-android/1.5.2/kotlinx-coroutines-android-1.5.2.jar" hash: - value: "" - algorithm: "" + value: "d246a704a55b7bddb79407cce4348890eaa341d9" + algorithm: "SHA-1" source_artifact: url: "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-android/1.5.2/kotlinx-coroutines-android-1.5.2-sources.jar" hash: @@ -1343,10 +1343,10 @@ packages: description: "Coroutines support libraries for Kotlin" homepage_url: "https://github.com/Kotlin/kotlinx.coroutines" binary_artifact: - url: "" + url: "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.5.2/kotlinx-coroutines-core-1.5.2.pom" hash: - value: "" - algorithm: "" + value: "a7c7e93534ced240c9b3df6530ef5e40339c8a23" + algorithm: "SHA-1" source_artifact: url: "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.5.2/kotlinx-coroutines-core-1.5.2-sources.jar" hash: @@ -1375,10 +1375,10 @@ packages: description: "Coroutines support libraries for Kotlin" homepage_url: "https://github.com/Kotlin/kotlinx.coroutines" binary_artifact: - url: "" + url: "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.2/kotlinx-coroutines-core-jvm-1.5.2.jar" hash: - value: "" - algorithm: "" + value: "f4cc07a50437659e0043e7da762809a46932b6a0" + algorithm: "SHA-1" source_artifact: url: "https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.2/kotlinx-coroutines-core-jvm-1.5.2-sources.jar" hash: