This CL adds the android_binary rule to Bazel.
Note that despite the rule being present, Android support is still not functional: two tools (//tools/android:{aar_generator,resources_processor} are still missing (and are a-coming!)
--
MOS_MIGRATED_REVID=96099045
diff --git a/src/main/java/com/google/devtools/build/lib/Constants.java b/src/main/java/com/google/devtools/build/lib/Constants.java
index 60d2186..0b97f5e 100644
--- a/src/main/java/com/google/devtools/build/lib/Constants.java
+++ b/src/main/java/com/google/devtools/build/lib/Constants.java
@@ -87,7 +87,7 @@
*/
public static final ImmutableSet<String> IOS_DEVICE_RULE_CLASSES = ImmutableSet.of("ios_device");
- public static final String ANDROID_DEFAULT_SDK = "//external:android_sdk".toString();
+ public static final String ANDROID_DEFAULT_SDK = "//external:android/sdk".toString();
public static final boolean ANDROID_ALLOW_SDK_FILEGROUP = Boolean.valueOf(false);
public static final String ANDROID_DEP_PREFIX = "//external:android/".toString();
}
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
index e15ed20..e8a6d65 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
@@ -32,6 +32,8 @@
import com.google.devtools.build.lib.analysis.constraints.EnvironmentRule;
import com.google.devtools.build.lib.bazel.rules.android.AndroidNdkRepositoryRule;
import com.google.devtools.build.lib.bazel.rules.android.AndroidSdkRepositoryRule;
+import com.google.devtools.build.lib.bazel.rules.android.BazelAndroidBinaryRule;
+import com.google.devtools.build.lib.bazel.rules.android.BazelAndroidSemantics;
import com.google.devtools.build.lib.bazel.rules.common.BazelActionListenerRule;
import com.google.devtools.build.lib.bazel.rules.common.BazelExtraActionRule;
import com.google.devtools.build.lib.bazel.rules.common.BazelFilegroupRule;
@@ -66,7 +68,11 @@
import com.google.devtools.build.lib.packages.PackageGroup;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.packages.Target;
+import com.google.devtools.build.lib.rules.android.AndroidBinaryOnlyRule;
+import com.google.devtools.build.lib.rules.android.AndroidConfiguration;
+import com.google.devtools.build.lib.rules.android.AndroidRuleClasses;
import com.google.devtools.build.lib.rules.cpp.CcToolchainRule;
+import com.google.devtools.build.lib.rules.cpp.CcToolchainSuiteRule;
import com.google.devtools.build.lib.rules.cpp.CppBuildInfo;
import com.google.devtools.build.lib.rules.cpp.CppConfiguration;
import com.google.devtools.build.lib.rules.cpp.CppConfigurationLoader;
@@ -191,7 +197,8 @@
PythonOptions.class,
BazelPythonConfiguration.Options.class,
ObjcCommandLineOptions.class,
- J2ObjcCommandLineOptions.class
+ J2ObjcCommandLineOptions.class,
+ AndroidConfiguration.Options.class
);
/**
@@ -240,6 +247,7 @@
builder.addRuleDefinition(new BazelShTestRule());
builder.addRuleDefinition(new CcToolchainRule());
+ builder.addRuleDefinition(new CcToolchainSuiteRule());
builder.addRuleDefinition(new BazelCppRuleClasses.CcLinkingRule());
builder.addRuleDefinition(new BazelCppRuleClasses.CcDeclRule());
builder.addRuleDefinition(new BazelCppRuleClasses.CcBaseRule());
@@ -259,6 +267,8 @@
try {
builder.addWorkspaceFile(
ResourceFileLoader.loadResource(BazelJavaRuleClasses.class, "jdk.WORKSPACE"));
+ builder.addWorkspaceFile(
+ ResourceFileLoader.loadResource(BazelAndroidSemantics.class, "android.WORKSPACE"));
} catch (IOException e) {
throw new IllegalStateException(e);
}
@@ -275,6 +285,16 @@
builder.addRuleDefinition(new BazelJavaPluginRule());
builder.addRuleDefinition(new JavaToolchainRule());
+ builder.addRuleDefinition(new AndroidRuleClasses.AndroidSdkRule());
+ builder.addRuleDefinition(new AndroidRuleClasses.AndroidToolsDefaultsJarRule());
+ builder.addRuleDefinition(new AndroidRuleClasses.AndroidBaseRule());
+ builder.addRuleDefinition(new AndroidRuleClasses.AndroidAaptBaseRule());
+ builder.addRuleDefinition(new AndroidRuleClasses.AndroidResourceSupportRule());
+ builder.addRuleDefinition(new AndroidRuleClasses.AndroidBinaryBaseRule());
+ builder.addRuleDefinition(new AndroidRuleClasses.JackRule());
+ builder.addRuleDefinition(new AndroidBinaryOnlyRule());
+ builder.addRuleDefinition(new BazelAndroidBinaryRule());
+
builder.addRuleDefinition(new BazelIosTestRule());
builder.addRuleDefinition(new ExperimentalIosTestRule());
builder.addRuleDefinition(new IosDeviceRule());
@@ -328,5 +348,6 @@
builder.addConfigurationFragment(new JavaConfigurationLoader(JAVA_CPU_SUPPLIER));
builder.addConfigurationFragment(new ObjcConfigurationLoader());
builder.addConfigurationFragment(new J2ObjcConfiguration.Loader());
+ builder.addConfigurationFragment(new AndroidConfiguration.Loader());
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android.WORKSPACE b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android.WORKSPACE
index 94b80ed..a3f4130 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android.WORKSPACE
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android.WORKSPACE
@@ -13,7 +13,3 @@
bind(name = "android/merge_dexzips", actual = "//tools/android:merge_dexzips")
bind(name = "android/debug_keystore", actual = "//tools/android:debug_keystore")
bind(name = "android/sdk", actual = "//tools/android:sdk")
-
-
-
-
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
index 66a30e1..a096882 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
@@ -75,6 +75,12 @@
" objcopy_files = ':empty', static_runtime_libs = [':empty'], strip_files = ':empty',",
")");
config.create("tools/cpp/CROSSTOOL", readFromResources("MOCK_CROSSTOOL"));
+ config.create("tools/android/BUILD",
+ "filegroup(name = 'sdk')",
+ "filegroup(name = 'aar_generator')",
+ "filegroup(name = 'resources_processor')",
+ "filegroup(name = 'incremental_stub_application')",
+ "filegroup(name = 'incremental_split_stub_application')");
config.create("tools/genrule/BUILD",
"exports_files(['genrule-setup.sh'])");
}
diff --git a/src/test/shell/bazel/local_repository_test.sh b/src/test/shell/bazel/local_repository_test.sh
index 7b6f993..668c0d0 100755
--- a/src/test/shell/bazel/local_repository_test.sh
+++ b/src/test/shell/bazel/local_repository_test.sh
@@ -419,8 +419,8 @@
path = "$external_dir",
)
EOF
- bazel fetch //external:* || fail "Fetch failed"
- bazel query 'deps(//external:*)' >& $TEST_log || fail "query failed"
+ bazel fetch //external:my-repo || fail "Fetch failed"
+ bazel query 'deps(//external:my-repo)' >& $TEST_log || fail "query failed"
expect_log "//external:my-repo"
}
diff --git a/tools/BUILD b/tools/BUILD
index 39af650..6bd88fd 100644
--- a/tools/BUILD
+++ b/tools/BUILD
@@ -7,6 +7,7 @@
filegroup(
name = "srcs",
srcs = glob(["**"]) + [
+ "//tools/android:srcs",
"//tools/jdk:srcs",
"//tools/genrule:srcs",
"//tools/cpp:srcs",
diff --git a/tools/android/BUILD b/tools/android/BUILD
index de5114b..8c1e135 100644
--- a/tools/android/BUILD
+++ b/tools/android/BUILD
@@ -131,3 +131,8 @@
":stubify_manifest",
],
)
+
+filegroup(
+ name = "srcs",
+ srcs = glob(["**"]),
+)