diff options
author | 2017-02-13 14:19:07 +0000 | |
---|---|---|
committer | 2017-02-13 14:21:36 +0000 | |
commit | e49886c55a7e2cfd6dd1fc52b037dc2d5a6ca019 (patch) | |
tree | b2f2b345a4667e8a0952ac75839ba8576f545242 | |
parent | 76b6685b9cf8b734839694094938cc6d00dd22a7 (diff) |
Rollback of commit 3bed84ff177c7cbfd0c8d315829cc9dcb35fcf70.
*** Reason for rollback ***
This breaks Bazel CI: http://ci.bazel.io/job/bazel-tests/BAZEL_VERSION=HEAD,PLATFORM_NAME=linux-x86_64/556/console
*** Original change description ***
Make android_sdk_repository fail if api_level requested is not installed.
This could have prevented https://github.com/bazelbuild/bazel/issues/2500.
--
PiperOrigin-RevId: 147338519
MOS_MIGRATED_REVID=147338519
2 files changed, 4 insertions, 37 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 e06a8933d5..4fa4f8f859 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 @@ -114,31 +114,17 @@ public class AndroidSdkRepositoryFunction extends RepositoryFunction { Transience.PERSISTENT); } - Integer defaultApiLevel; + String defaultApiLevel; if (attributes.isAttributeValueExplicitlySpecified("api_level")) { try { - defaultApiLevel = attributes.get("api_level", Type.INTEGER); + defaultApiLevel = attributes.get("api_level", Type.INTEGER).toString(); } catch (EvalException e) { throw new RepositoryFunctionException(e, Transience.PERSISTENT); } - if (!apiLevels.contains(defaultApiLevel)) { - throw new RepositoryFunctionException( - new EvalException( - rule.getLocation(), - String.format( - "Android SDK api level %s was requested but it is not installed in the Android " - + "SDK at %s. The api levels found were %s. Please choose an available api " - + "level or install api level %s from the Android SDK Manager.", - defaultApiLevel, - androidSdkPath, - apiLevels.toString(), - defaultApiLevel)), - Transience.PERSISTENT); - } } else { // If the api_level attribute is not explicitly set, we select the highest api level that is // available in the SDK. - defaultApiLevel = apiLevels.first(); + defaultApiLevel = String.valueOf(apiLevels.first()); } String buildToolsDirectory; @@ -203,7 +189,7 @@ public class AndroidSdkRepositoryFunction extends RepositoryFunction { .replace("%build_tools_version%", buildToolsVersion) .replace("%build_tools_directory%", buildToolsDirectory) .replace("%api_levels%", Iterables.toString(apiLevels)) - .replace("%default_api_level%", String.valueOf(defaultApiLevel)) + .replace("%default_api_level%", defaultApiLevel) .replace("%system_image_dirs%", systemImageDirsList); // All local maven repositories that are shipped in the Android SDK. 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 6024b1f256..0f33d2dd2f 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 @@ -15,7 +15,6 @@ package com.google.devtools.build.lib.bazel.rules.android; import static com.google.common.truth.Truth.assertThat; -import static org.junit.Assert.fail; import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.actions.Artifact; @@ -23,7 +22,6 @@ import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider; import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.FilesToRunProvider; import com.google.devtools.build.lib.analysis.util.BuildViewTestCase; -import com.google.devtools.build.lib.packages.BuildFileNotFoundException; import com.google.devtools.build.lib.testutil.TestRuleClassProvider; import com.google.devtools.build.lib.vfs.FileSystemUtils; import org.junit.Before; @@ -44,7 +42,6 @@ public class AndroidSdkRepositoryTest extends BuildViewTestCase { @Before public void setup() throws Exception { scratch.setWorkingDir("/sdk"); - scratch.dir("platforms/android-24"); scratch.dir("platforms/android-25"); scratch.file("extras/google/m2repository/com/google/android/foo/1.0.0/foo.pom", "<project>", @@ -130,20 +127,4 @@ public class AndroidSdkRepositoryTest extends BuildViewTestCase { .getFilesToRun()) .isEmpty(); } - - @Test - public void testMissingApiLevel() throws Exception { - scratch.deleteFile("/sdk/platforms/android-25"); - try { - invalidatePackages(); - getTarget("@androidsdk//:files"); - fail("android_sdk_repository should have failed due to missing SDK api level."); - } catch (BuildFileNotFoundException e) { - assertThat(e.getMessage()) - .contains( - "Android SDK api level 25 was requested but it is not installed in the Android SDK " - + "at /sdk. The api levels found were [24]. Please choose an available api level " - + "or install api level 25 from the Android SDK Manager."); - } - } } |