Skip to content

Commit

Permalink
Per variant classpath support (#89)
Browse files Browse the repository at this point in the history
Fixes #89
  • Loading branch information
arunkumar9t2 committed Aug 4, 2023
1 parent d0b7d5e commit 2b28677
Show file tree
Hide file tree
Showing 48 changed files with 1,927 additions and 1,183 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
.idea/google-java-format.xml
.idea/shelf
.idea/modules/app/
/.idea/git_toolbox_prj.xml
/.idea/uiDesigner.xml
/.idea/terminal.xml
/.idea/libraries-with-intellij-classes.xml
Expand Down
333 changes: 308 additions & 25 deletions WORKSPACE

Large diffs are not rendered by default.

18 changes: 10 additions & 8 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ allprojects {
configurations.configureEach {
resolutionStrategy {
// Force a dependency to test if Grazel picks it up correctly.
force "com.google.dagger:dagger:2.29"
force "com.google.dagger:dagger-compiler:2.29"
force "com.google.dagger:dagger:2.47"
force "com.google.dagger:dagger-compiler:2.47"
}
}

Expand Down Expand Up @@ -92,7 +92,8 @@ grazel {
}
dependencies {
overrideArtifactVersions.addAll(
"androidx.constraintlayout:constraintlayout:2.1.4"
"androidx.constraintlayout:constraintlayout:2.1.4",
"androidx.annotation:annotation:1.7.0-alpha03"
)
}
rules {
Expand All @@ -102,7 +103,7 @@ grazel {
}
bazelCommon {
gitRepository {
commit = "120019c5290cceda3c795d9ddb2a3253b9b32b3e"
commit = "7415aab81c8cfec7ea05bb9bcb2b16d595bbc88e"
remote = "https://github.com/grab/grab-bazel-common.git"
}
toolchains {
Expand Down Expand Up @@ -135,10 +136,11 @@ grazel {
jetifyIncludeList.add("com.android.support:cardview-v7")
jetifyExcludeList.add("androidx.appcompat:appcompat")
artifactPinning {
enabled.set(true)
enabled.set(false)
}
overrideTargetLabels.putAll(
["androidx.appcompat:appcompat": "@//third_party:androidx_appcompat_appcompat"]
// Workaround for https://issuetracker.google.com/issues/285353844
["androidx.annotation:annotation": "@maven//:androidx_annotation_annotation_jvm"]
)
versionConflictPolicy = "pinned"
}
Expand All @@ -163,8 +165,8 @@ grazel {
}
}
dagger {
tag = "2.46.1"
sha = "bbd75275faa3186ebaa08e6779dc5410741a940146d43ef532306eb2682c13f7"
tag = "2.47"
sha = "154cdfa4f6f552a9873e2b4448f7a80415cb3427c4c771a50c6a8a8b434ffd0a"
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion flavor-libs/sample-library-flavor1/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@ grab_kt_jvm_test(
"//visibility:public",
],
deps = [
"@maven//:junit_junit",
"@test_maven//:junit_junit",
],
)
2 changes: 1 addition & 1 deletion flavor-libs/sample-library-flavor2/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@ grab_kt_jvm_test(
"//visibility:public",
],
deps = [
"@maven//:junit_junit",
"@test_maven//:junit_junit",
],
)
17 changes: 15 additions & 2 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@ androidx-lifecycle-runtime = "2.5.1"
androidx-monitor = "1.6.1"
androidx-compose = "1.4.3"
activity-compose = "1.7.2"
annotation-jvm = "1.6.0"
crashlytics = "2.9.5"
dagger = "2.46.1"
dagger = "2.47"
dokka = "1.4.32"
emoji2 = "1.3.0"
google-services = "4.3.15"
Expand All @@ -23,21 +24,28 @@ javapoet = "1.13.0"
junit = "4.13.2"
kotlin = "1.8.10"
kotlin-dsl = "2.3.3"
kotlin-serialization = "1.5.1"
kotlinx-coroutines-android = "1.3.9"
kotlinx-coroutines-core-jvm = "1.7.2"
leakcanary-android = "2.12"
lifecycle-viewmodel = "2.6.1"
mockito-kotlin = "1.6.0"
nexus = "1.1.0"
paging-runtime = "3.1.1"
picnic = "0.4.0"
truth = "1.1.3"

[libraries]
android-gradle-plugin = { module = "com.android.tools.build:gradle", version.ref = "android-gradle-plugin" }
androidx-activity = { module = "androidx.activity:activity", version.ref = "activity" }
androidx-annotation-jvm = { module = "androidx.annotation:annotation-jvm", version.ref = "annotation-jvm" }
androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" }
androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "androidx-constraintlayout" }
androidx-constraintlayout-core = { module = "androidx.constraintlayout:constraintlayout-core", version.ref = "androidx-constraintlayout-core" }
androidx-core = { module = "androidx.core:core", version.ref = "androidx-core" }
androidx-emoji2 = { module = "androidx.emoji2:emoji2", version.ref = "emoji2" }
androidx-lifecycle-viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel", version.ref = "lifecycle-viewmodel" }
androidx-paging-runtime = { module = "androidx.paging:paging-runtime", version.ref = "paging-runtime" }
androidx-test-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "androidx-espresso" }
androidx-test-junit = { module = "androidx.test.ext:junit", version.ref = "androidx-junit" }
androidx-lifecycle-runtime = { module = "androidx.lifecycle:lifecycle-runtime", version.ref = "androidx-lifecycle-runtime" }
Expand Down Expand Up @@ -70,10 +78,15 @@ javapoet = { module = "com.squareup:javapoet", version.ref = "javapoet" }
junit = { module = "junit:junit", version.ref = "junit" }
kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" }
kotlin-serialization = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlin-serialization" }
kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "kotlinx-coroutines-android" }
kotlinx-coroutines-core-jvm = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm", version.ref = "kotlinx-coroutines-core-jvm" }
leakcanary-android = { module = "com.squareup.leakcanary:leakcanary-android", version.ref = "leakcanary-android" }
mockito-kotlin = { module = "com.nhaarman:mockito-kotlin", version.ref = "mockito-kotlin" }
nexus-gradle-publish-plugin = { module = "io.github.gradle-nexus:publish-plugin", version.ref = "nexus" }
picnic = { module = "com.jakewharton.picnic:picnic", version.ref = "picnic" }

[plugins]
kotlin-dsl = { id = "org.gradle.kotlin.kotlin-dsl", version.ref = "kotlin-dsl" }
gradle-publish = { id = "com.gradle.plugin-publish", version.ref = "gradle-plugin-publish" }
gradle-publish = { id = "com.gradle.plugin-publish", version.ref = "gradle-plugin-publish" }
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
4 changes: 4 additions & 0 deletions grazel-gradle-plugin/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ plugins {
id "java-gradle-plugin"
alias(libs.plugins.kotlin.dsl)
alias(libs.plugins.gradle.publish)
alias(libs.plugins.kotlin.serialization)
id "maven-publish"
id "idea"
}
Expand Down Expand Up @@ -88,6 +89,9 @@ dependencies {
implementation libs.google.dagger
kapt libs.google.dagger.compiler

implementation libs.kotlin.serialization
implementation libs.kotlinx.coroutines.core.jvm

testImplementation "org.jetbrains.kotlin:kotlin-test"
testImplementation "org.jetbrains.kotlin:kotlin-test-junit"
testImplementation libs.google.truth
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@

package com.grab.grazel.bazel.starlark

import kotlinx.serialization.Serializable
import org.gradle.api.Project
import org.gradle.api.artifacts.Dependency

sealed class BazelDependency : Comparable<BazelDependency> {

Expand Down Expand Up @@ -52,16 +52,21 @@ sealed class BazelDependency : Comparable<BazelDependency> {
override fun toString() = dep
}

data class MavenDependency(val dependency: Dependency) : BazelDependency() {
@Serializable
data class MavenDependency(
val repo: String = "maven",
val group: String,
val name: String
) : BazelDependency() {

private fun String.toBazelPath(): String {
return replace(".", "_").replace("-", "_")
}

override fun toString(): String {
val group = dependency.group?.toBazelPath() ?: ""
val name = dependency.name.toBazelPath()
return "@maven//:${group}_$name"
val group = group.toBazelPath()
val name = name.toBazelPath()
return "@$repo//:${group}_$name"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@ import com.grab.grazel.gradle.GradleProjectInfo
import com.grab.grazel.gradle.MigrationChecker
import com.grab.grazel.gradle.MigrationCriteriaModule
import com.grab.grazel.gradle.RepositoryDataSource
import com.grab.grazel.gradle.dependencies.DefaultDependencyResolutionService
import com.grab.grazel.gradle.dependencies.DependenciesDataSource
import com.grab.grazel.gradle.dependencies.DependenciesGraphsBuilder
import com.grab.grazel.gradle.dependencies.DependenciesModule
import com.grab.grazel.gradle.dependencies.DependencyGraphs
import com.grab.grazel.gradle.dependencies.MavenInstallArtifactsCalculator
import com.grab.grazel.gradle.variant.AndroidVariantDataSource
import com.grab.grazel.gradle.variant.VariantBuilder
import com.grab.grazel.gradle.variant.VariantMatcher
Expand All @@ -43,10 +43,12 @@ import com.grab.grazel.migrate.android.AndroidLibraryDataExtractor
import com.grab.grazel.migrate.android.ManifestValuesBuilder
import com.grab.grazel.migrate.dependencies.ArtifactsPinner
import com.grab.grazel.migrate.dependencies.DefaultArtifactsPinner
import com.grab.grazel.migrate.dependencies.MavenInstallArtifactsCalculator
import com.grab.grazel.migrate.internal.ProjectBazelFileBuilder
import com.grab.grazel.migrate.internal.RootBazelFileBuilder
import com.grab.grazel.migrate.internal.WorkspaceBuilder
import com.grab.grazel.migrate.target.TargetModule
import com.grab.grazel.util.GradleProvider
import dagger.Binds
import dagger.BindsInstance
import dagger.Component
Expand Down Expand Up @@ -93,6 +95,8 @@ internal interface GrazelComponent {
fun variantMatcher(): Lazy<VariantMatcher>

fun manifestValuesBuilder(): ManifestValuesBuilder

fun dependencyResolutionService(): GradleProvider<DefaultDependencyResolutionService>
}

@Module(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ import org.gradle.kotlin.dsl.listProperty
*/
data class DependenciesExtension(
private val objects: ObjectFactory,
var ignoreArtifacts: ListProperty<String> = objects.listProperty(),
var overrideArtifactVersions: ListProperty<String> = objects.listProperty()
val ignoreArtifacts: ListProperty<String> = objects.listProperty(),
val overrideArtifactVersions: ListProperty<String> = objects.listProperty()
)

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,8 @@ internal class DefaultConfigurationDataSource @Inject constructor(
.filter { !it.name.startsWith("_") }
.filter { !it.name.contains("archives") }
.filter { !it.name.contains("KaptWorker") }
.filter { !it.name.contains("androidJacocoAnt") }
.filter { !it.name.contains("Jacoco", true) }
.filter { !it.name.contains("androidSdkImage") }
.filter { !it.isDynamicConfiguration() } // Remove when Grazel support dynamic-feature plugin
.filter { configuration ->
when {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,8 @@ internal object MigrationCriteriaModule {
@Provides
fun migrationCriteria(
pluginsMigrationCriteria: PluginsMigrationCriteria,
dependenciesMigrationCriteria: DependenciesMigrationCriteria
): Set<MigrationCriteria> = setOf(
pluginsMigrationCriteria,
dependenciesMigrationCriteria
)
}

Expand Down Expand Up @@ -96,7 +94,7 @@ internal class DependenciesMigrationCriteria @Inject constructor(
override fun canMigrate(project: Project): Boolean {
val hasPrivateDependencies =
dependenciesDataSource.hasDepsFromUnsupportedRepositories(project)
val hasIgnoredArtifacts = dependenciesDataSource.hasIgnoredArtifacts(project)
val hasIgnoredArtifacts = false // TODO(arun) Refactor
return !hasPrivateDependencies && !hasIgnoredArtifacts
}
}
Loading

0 comments on commit 2b28677

Please sign in to comment.