aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java20
-rw-r--r--src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryTest.java39
2 files changed, 51 insertions, 8 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java
index 14b05372df..8b3c32b42d 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryFunction.java
@@ -20,6 +20,7 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSortedSet;
import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Maps.EntryTransformer;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
@@ -62,6 +63,11 @@ public class AndroidSdkRepositoryFunction extends RepositoryFunction {
private static final Revision MIN_BUILD_TOOLS_REVISION = new Revision(24, 0, 3);
private static final String PATH_ENV_VAR = "ANDROID_HOME";
private static final ImmutableList<String> PATH_ENV_VAR_AS_LIST = ImmutableList.of(PATH_ENV_VAR);
+ private static final ImmutableList<String> LOCAL_MAVEN_REPOSITORIES =
+ ImmutableList.of(
+ "extras/android/m2repository",
+ "extras/google/m2repository",
+ "extras/m2repository");
@Override
public boolean isLocal(Rule rule) {
@@ -79,7 +85,7 @@ public class AndroidSdkRepositoryFunction extends RepositoryFunction {
}
@Override
- public RepositoryDirectoryValue.Builder fetch(Rule rule, Path outputDirectory,
+ public RepositoryDirectoryValue.Builder fetch(Rule rule, final Path outputDirectory,
BlazeDirectories directories, Environment env, Map<String, String> markerData)
throws SkyFunctionException, InterruptedException {
Map<String, String> environ =
@@ -221,9 +227,15 @@ public class AndroidSdkRepositoryFunction extends RepositoryFunction {
// All local maven repositories that are shipped in the Android SDK.
// TODO(ajmichael): Create SkyKeys so that if the SDK changes, this function will get rerun.
- Iterable<Path> localMavenRepositories = ImmutableList.of(
- outputDirectory.getRelative("extras/android/m2repository"),
- outputDirectory.getRelative("extras/google/m2repository"));
+ Iterable<Path> localMavenRepositories =
+ Lists.transform(
+ LOCAL_MAVEN_REPOSITORIES,
+ new Function<String, Path>() {
+ @Override
+ public Path apply(String pathFragment) {
+ return outputDirectory.getRelative(pathFragment);
+ }
+ });
try {
SdkMavenRepository sdkExtrasRepository =
SdkMavenRepository.create(Iterables.filter(localMavenRepositories, new Predicate<Path>() {
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryTest.java b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryTest.java
index 47554ecdca..7f90e4297a 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/rules/android/AndroidSdkRepositoryTest.java
@@ -60,10 +60,12 @@ public class AndroidSdkRepositoryTest extends BuildViewTestCase {
}
private void scratchExtrasLibrary(
- String groupId, String artifactId, String version, String packaging) throws Exception {
+ String mavenRepoPath, String groupId, String artifactId, String version, String packaging)
+ throws Exception {
scratch.file(
String.format(
- "/sdk/extras/google/m2repository/%s/%s/%s/%s.pom",
+ "/sdk/%s/%s/%s/%s/%s.pom",
+ mavenRepoPath,
groupId.replace(".", "/"),
artifactId,
version,
@@ -80,7 +82,7 @@ public class AndroidSdkRepositoryTest extends BuildViewTestCase {
public void testGeneratedAarImport() throws Exception {
scratchPlatformsDirectories(25);
scratchBuildToolsDirectories("25.0.0");
- scratchExtrasLibrary("com.google.android", "foo", "1.0.0", "aar");
+ scratchExtrasLibrary("extras/google/m2repository", "com.google.android", "foo", "1.0.0", "aar");
FileSystemUtils.appendIsoLatin1(scratch.resolve("WORKSPACE"),
"local_repository(name = 'bazel_tools', path = '/bazel_tools_workspace')",
"android_sdk_repository(",
@@ -100,7 +102,7 @@ public class AndroidSdkRepositoryTest extends BuildViewTestCase {
public void testExportsExtrasLibraryArtifacts() throws Exception {
scratchPlatformsDirectories(25);
scratchBuildToolsDirectories("25.0.0");
- scratchExtrasLibrary("com.google.android", "foo", "1.0.0", "aar");
+ scratchExtrasLibrary("extras/google/m2repository", "com.google.android", "foo", "1.0.0", "aar");
FileSystemUtils.appendIsoLatin1(scratch.resolve("WORKSPACE"),
"local_repository(name = 'bazel_tools', path = '/bazel_tools_workspace')",
"android_sdk_repository(",
@@ -115,6 +117,35 @@ public class AndroidSdkRepositoryTest extends BuildViewTestCase {
}
@Test
+ public void testKnownSdkMavenRepositories() throws Exception {
+ scratchPlatformsDirectories(25);
+ scratchBuildToolsDirectories("25.0.0");
+ scratchExtrasLibrary("extras/google/m2repository", "com.google.android", "a", "1.0.0", "jar");
+ scratchExtrasLibrary("extras/android/m2repository", "com.android.support", "b", "1.0.0", "aar");
+ scratchExtrasLibrary("extras/m2repository", "com.android.support", "c", "1.0.1", "aar");
+ FileSystemUtils.appendIsoLatin1(scratch.resolve("WORKSPACE"),
+ "local_repository(name = 'bazel_tools', path = '/bazel_tools_workspace')",
+ "android_sdk_repository(",
+ " name = 'androidsdk',",
+ " path = '/sdk',",
+ ")");
+ invalidatePackages();
+
+ assertThat(
+ getConfiguredTarget(
+ "@androidsdk//:extras/google/m2repository/com/google/android/a/1.0.0/a.jar"))
+ .isNotNull();
+ assertThat(
+ getConfiguredTarget(
+ "@androidsdk//:extras/android/m2repository/com/android/support/b/1.0.0/b.aar"))
+ .isNotNull();
+ assertThat(
+ getConfiguredTarget(
+ "@androidsdk//:extras/m2repository/com/android/support/c/1.0.1/c.aar"))
+ .isNotNull();
+ }
+
+ @Test
public void testSystemImageDirectoriesAreFound() throws Exception {
scratchPlatformsDirectories(25);
scratchBuildToolsDirectories("25.0.0");