diff --git a/src/main/java/com/google/devtools/build/lib/packages/StarlarkSemanticsOptions.java b/src/main/java/com/google/devtools/build/lib/packages/StarlarkSemanticsOptions.java
index 14216ac627938b..6db9d86bc1ebf4 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/StarlarkSemanticsOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/StarlarkSemanticsOptions.java
@@ -390,7 +390,7 @@ public class StarlarkSemanticsOptions extends OptionsBase implements Serializabl
@Option(
name = "incompatible_new_actions_api",
- defaultValue = "false",
+ defaultValue = "true",
documentationCategory = OptionDocumentationCategory.STARLARK_SEMANTICS,
effectTags = {OptionEffectTag.BUILD_FILE_SEMANTICS},
metadataTags = {
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/StarlarkSemantics.java b/src/main/java/com/google/devtools/build/lib/syntax/StarlarkSemantics.java
index 22ce113f2dac15..0f7d4de6d6450d 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/StarlarkSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/StarlarkSemantics.java
@@ -236,7 +236,7 @@ public static Builder builderWithDefaults() {
.incompatibleDisallowRuleExecutionPlatformConstraintsAllowed(false)
.incompatibleDisallowStructProviderSyntax(false)
.incompatibleExpandDirectories(true)
- .incompatibleNewActionsApi(false)
+ .incompatibleNewActionsApi(true)
.incompatibleNoAttrLicense(true)
.incompatibleNoKwargsInBuildFiles(false)
.incompatibleNoOutputAttrDefault(true)
diff --git a/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java b/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java
index d45368d92e0575..bb8a6eae87be4f 100644
--- a/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java
+++ b/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java
@@ -125,21 +125,21 @@
/**
* Main entry point for the Skydoc binary.
*
- *
Skydoc generates human-readable documentation for relevant details of skylark files by
- * running a skylark interpreter with a fake implementation of the build API.
+ * Skydoc generates human-readable documentation for relevant details of skylark files by running
+ * a skylark interpreter with a fake implementation of the build API.
*
*
Currently, Skydoc generates documentation for skylark rule definitions (discovered by
- * invocations of the build API function {@code rule()}.
+ * invocations of the build API function {@code rule()}.
+ *
+ * Usage:
*
- *
Usage:
*
* skydoc {target_skylark_file_label} {output_file} [symbol_name]...
*
- *
- * Generates documentation for all exported symbols of the target skylark file that are
- * specified in the list of symbol names. If no symbol names are supplied, outputs documentation
- * for all exported symbols in the target skylark file.
- *
+ *
+ * Generates documentation for all exported symbols of the target skylark file that are specified
+ * in the list of symbol names. If no symbol names are supplied, outputs documentation for all
+ * exported symbols in the target skylark file.
*/
public class SkydocMain {
@@ -170,6 +170,7 @@ public static void main(String[] args)
StarlarkSemanticsOptions semanticsOptions = parser.getOptions(StarlarkSemanticsOptions.class);
semanticsOptions.incompatibleDepsetUnion = false;
semanticsOptions.incompatibleDisableDeprecatedAttrParams = false;
+ semanticsOptions.incompatibleNewActionsApi = false;
SkydocOptions skydocOptions = parser.getOptions(SkydocOptions.class);
String targetFileLabelString;
@@ -198,8 +199,7 @@ public static void main(String[] args)
depRoots = ImmutableList.copyOf(skydocOptions.depRoots);
}
- Label targetFileLabel =
- Label.parseAbsolute(targetFileLabelString, ImmutableMap.of());
+ Label targetFileLabel = Label.parseAbsolute(targetFileLabelString, ImmutableMap.of());
ImmutableMap.Builder ruleInfoMap = ImmutableMap.builder();
ImmutableMap.Builder providerInfoMap = ImmutableMap.builder();
@@ -271,9 +271,8 @@ private static void printRuleInfos(
}
private static void printProviderInfos(
- PrintWriter printWriter,
- MarkdownRenderer renderer,
- Map providerInfos) throws IOException {
+ PrintWriter printWriter, MarkdownRenderer renderer, Map providerInfos)
+ throws IOException {
for (Entry entry : providerInfos.entrySet()) {
printProviderInfo(printWriter, renderer, entry.getKey(), entry.getValue());
printWriter.println();
@@ -299,14 +298,17 @@ private static void printUserDefinedFunctions(
}
private static void printRuleInfo(
- PrintWriter printWriter, MarkdownRenderer renderer,
- String exportedName, RuleInfo ruleInfo) throws IOException {
+ PrintWriter printWriter, MarkdownRenderer renderer, String exportedName, RuleInfo ruleInfo)
+ throws IOException {
printWriter.println(renderer.render(exportedName, ruleInfo));
}
private static void printProviderInfo(
- PrintWriter printWriter, MarkdownRenderer renderer,
- String exportedName, ProviderInfo providerInfo) throws IOException {
+ PrintWriter printWriter,
+ MarkdownRenderer renderer,
+ String exportedName,
+ ProviderInfo providerInfo)
+ throws IOException {
printWriter.println(renderer.render(exportedName, providerInfo));
}
@@ -347,14 +349,12 @@ public Environment eval(
List providerInfoList = new ArrayList<>();
Environment env = recursiveEval(semantics, label, ruleInfoList, providerInfoList);
- Map ruleFunctions = ruleInfoList.stream()
- .collect(Collectors.toMap(
- RuleInfo::getIdentifierFunction,
- Functions.identity()));
- Map providerInfos = providerInfoList.stream()
- .collect(Collectors.toMap(
- ProviderInfo::getIdentifier,
- Functions.identity()));
+ Map ruleFunctions =
+ ruleInfoList.stream()
+ .collect(Collectors.toMap(RuleInfo::getIdentifierFunction, Functions.identity()));
+ Map providerInfos =
+ providerInfoList.stream()
+ .collect(Collectors.toMap(ProviderInfo::getIdentifier, Functions.identity()));
// Sort the bindings so their ordering is deterministic.
TreeMap sortedBindings = new TreeMap<>(env.getGlobals().getExportedBindings());
@@ -492,10 +492,11 @@ private Environment evalSkylarkBody(
* @param providerInfoList the list of {@link ProviderInfo} objects, to which provider()
* invocation information will be added
*/
- private static GlobalFrame globalFrame(List ruleInfoList,
- List providerInfoList) {
+ private static GlobalFrame globalFrame(
+ List ruleInfoList, List providerInfoList) {
TopLevelBootstrap topLevelBootstrap =
- new TopLevelBootstrap(new FakeBuildApiGlobals(),
+ new TopLevelBootstrap(
+ new FakeBuildApiGlobals(),
new FakeSkylarkAttrApi(),
new FakeSkylarkCommandLineApi(),
new FakeSkylarkNativeModuleApi(),
@@ -504,16 +505,18 @@ private static GlobalFrame globalFrame(List ruleInfoList,
new FakeOutputGroupInfoProvider(),
new FakeActionsInfoProvider(),
new FakeDefaultInfoProvider());
- AndroidBootstrap androidBootstrap = new AndroidBootstrap(new FakeAndroidSkylarkCommon(),
- new FakeApkInfoProvider(),
- new FakeAndroidInstrumentationInfoProvider(),
- new FakeAndroidDeviceBrokerInfoProvider(),
- new FakeAndroidResourcesInfoProvider(),
- new FakeAndroidNativeLibsInfoProvider());
+ AndroidBootstrap androidBootstrap =
+ new AndroidBootstrap(
+ new FakeAndroidSkylarkCommon(),
+ new FakeApkInfoProvider(),
+ new FakeAndroidInstrumentationInfoProvider(),
+ new FakeAndroidDeviceBrokerInfoProvider(),
+ new FakeAndroidResourcesInfoProvider(),
+ new FakeAndroidNativeLibsInfoProvider());
AppleBootstrap appleBootstrap = new AppleBootstrap(new FakeAppleCommon());
ConfigBootstrap configBootstrap =
- new ConfigBootstrap(new FakeConfigSkylarkCommon(), new FakeConfigApi(),
- new FakeConfigGlobalLibrary());
+ new ConfigBootstrap(
+ new FakeConfigSkylarkCommon(), new FakeConfigApi(), new FakeConfigGlobalLibrary());
CcBootstrap ccBootstrap = new CcBootstrap(new FakeCcModule());
JavaBootstrap javaBootstrap =
new JavaBootstrap(
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java b/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
index 9379951222badf..ae2bab09be0907 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/BuildViewTest.java
@@ -448,7 +448,7 @@ public void testOutputFilterWithDebug() throws Exception {
"java/b/rules.bzl",
"def _impl(ctx):",
" print('debug in b')",
- " ctx.file_action(",
+ " ctx.actions.write(",
" output = ctx.outputs.my_output,",
" content = 'foo',",
" )",
diff --git a/src/test/java/com/google/devtools/build/lib/query2/aquery/ActionGraphProtoOutputFormatterCallbackTest.java b/src/test/java/com/google/devtools/build/lib/query2/aquery/ActionGraphProtoOutputFormatterCallbackTest.java
index 03c944624e4fec..34092731f63be2 100644
--- a/src/test/java/com/google/devtools/build/lib/query2/aquery/ActionGraphProtoOutputFormatterCallbackTest.java
+++ b/src/test/java/com/google/devtools/build/lib/query2/aquery/ActionGraphProtoOutputFormatterCallbackTest.java
@@ -483,7 +483,7 @@ public void testCppActionTemplate_includesActionTemplateMnemonic() throws Except
"test/a.bzl",
"def _impl(ctx):",
" directory = ctx.actions.declare_directory(ctx.attr.name + \"_artifact.cc\")",
- " ctx.action(",
+ " ctx.actions.run_shell(",
" inputs = ctx.files.srcs,",
" outputs = [directory],",
" mnemonic = 'MoveTreeArtifact',",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java
index 302e166b904a0c..159f659333bc89 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/java/proto/SkylarkJavaLiteProtoLibraryTest.java
@@ -89,6 +89,8 @@ public final void setUpMocks() throws Exception {
@Before
public final void setupSkylarkRule() throws Exception {
+ setSkylarkSemanticsOptions("--incompatible_new_actions_api=false");
+
File[] files = Runfiles.location(RULE_DIRECTORY).listFiles();
for (File file : files) {
scratch.file(RULE_DIRECTORY + "/" + file.getName(), Files.readAllBytes(file.toPath()));
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
index baa1c16e36513f..b83c2bb563bf70 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java
@@ -391,15 +391,6 @@ public void testCreateSpawnActionUnknownParam() throws Exception {
"ruleContext.actions.run(outputs=[], bad_param = 'some text', executable = f)");
}
- @Test
- public void testCreateSpawnActionNoExecutable() throws Exception {
- SkylarkRuleContext ruleContext = createRuleContext("//foo:foo");
- checkErrorContains(
- ruleContext,
- "You must specify either 'command' or 'executable' argument",
- "ruleContext.action(outputs=[])");
- }
-
private Object createTestSpawnAction(SkylarkRuleContext ruleContext) throws Exception {
return evalRuleContextCode(
ruleContext,
diff --git a/src/test/shell/bazel/external_path_test.sh b/src/test/shell/bazel/external_path_test.sh
index 3cf8592d1b8b69..735c68c50f3247 100755
--- a/src/test/shell/bazel/external_path_test.sh
+++ b/src/test/shell/bazel/external_path_test.sh
@@ -337,8 +337,8 @@ cat $1 | tr 'a-z' 'A-Z' > $2
EOF
cat > rule/to_upper.bzl <<'EOF'
def _to_upper_impl(ctx):
- output = ctx.new_file(ctx.label.name + ".txt")
- ctx.action(
+ output = ctx.actions.declare_file(ctx.label.name + ".txt")
+ ctx.actions.run_shell(
inputs = ctx.files.src + ctx.files._toupper_sh,
outputs = [output],
command = ["/bin/sh"] + [f.path for f in ctx.files._toupper_sh] \
@@ -489,8 +489,8 @@ genrule(
EOF
cat > rule/to_html.bzl <<'EOF'
def _to_html_impl(ctx):
- output = ctx.new_file(ctx.label.name + ".html")
- ctx.action(
+ output = ctx.actions.declare_file(ctx.label.name + ".html")
+ ctx.actions.run_shell(
inputs = ctx.files.src + ctx.files._to_html + ctx.files._preamb + ctx.files._postamb,
outputs = [output],
command = ["/bin/sh"] + [f.path for f in ctx.files._to_html] \
@@ -642,8 +642,8 @@ genrule(
EOF
cat > rule/add_preamb.bzl <<'EOF'
def _add_preamb_impl(ctx):
- output = ctx.new_file(ctx.label.name + ".txt")
- ctx.action(
+ output = ctx.actions.declare_file(ctx.label.name + ".txt")
+ ctx.actions.run_shell(
inputs = ctx.files.src + ctx.files._add_preamb + ctx.files._preamb,
outputs = [output],
command = ["/bin/sh"] + [f.path for f in ctx.files._add_preamb] \
diff --git a/src/test/shell/integration/aquery_test.sh b/src/test/shell/integration/aquery_test.sh
index 150f7eee43524f..3a6d8ae3395eef 100755
--- a/src/test/shell/integration/aquery_test.sh
+++ b/src/test/shell/integration/aquery_test.sh
@@ -251,7 +251,7 @@ bar_aspect = aspect(implementation = _aspect_impl,
)
def _bar_impl(ctx):
- ctx.file_action(content = "hello world", output = ctx.outputs.out)
+ ctx.actions.write(content = "hello world", output = ctx.outputs.out)
return struct(files = depset(transitive = [dep[DummyProvider].dummies for dep in ctx.attr.deps]))
bar_rule = rule(
@@ -798,7 +798,7 @@ function test_aquery_cpp_action_template_treeartifact_output() {
cat > "$pkg/a.bzl" <<'EOF'
def _impl(ctx):
directory = ctx.actions.declare_directory(ctx.attr.name + "_artifact.cc")
- ctx.action(
+ ctx.actions.run_shell(
inputs = ctx.files.srcs,
outputs = [directory],
mnemonic = 'MoveTreeArtifact',
diff --git a/src/test/shell/integration/implicit_dependency_reporting_test.sh b/src/test/shell/integration/implicit_dependency_reporting_test.sh
index 842b65df54cf83..07a826e3413ff5 100755
--- a/src/test/shell/integration/implicit_dependency_reporting_test.sh
+++ b/src/test/shell/integration/implicit_dependency_reporting_test.sh
@@ -65,8 +65,8 @@ test_custom_message() {
touch WORKSPACE
cat > rule.bzl <<'EOF'
def _rule_impl(ctx):
- out = ctx.new_file(ctx.label.name + ".txt")
- ctx.action(
+ out = ctx.actions.declare_file(ctx.label.name + ".txt")
+ ctx.actions.run_shell(
inputs = ctx.files._data,
outputs = [out],
command = ["cp"] + [f.path for f in ctx.files._data] + [out.path],