diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryFunction.java index 452d1efe634231..74f52360613611 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryFunction.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryFunction.java @@ -32,6 +32,7 @@ import com.google.devtools.build.lib.packages.BazelStarlarkContext; import com.google.devtools.build.lib.packages.Rule; import com.google.devtools.build.lib.packages.SymbolGenerator; +import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions; import com.google.devtools.build.lib.pkgcache.PathPackageLocator; import com.google.devtools.build.lib.profiler.Profiler; import com.google.devtools.build.lib.profiler.ProfilerTask; @@ -355,6 +356,10 @@ private RepositoryDirectoryValue.Builder fetchInternal( if (!WorkspaceFileHelper.isValidRepoRoot(outputDirectory)) { try { FileSystemUtils.createEmptyFile(outputDirectory.getRelative(LabelConstants.REPO_FILE_NAME)); + if (starlarkSemantics.getBool(BuildLanguageOptions.ENABLE_WORKSPACE)) { + FileSystemUtils.createEmptyFile( + outputDirectory.getRelative(LabelConstants.WORKSPACE_FILE_NAME)); + } } catch (IOException e) { throw new RepositoryFunctionException(e, Transience.TRANSIENT); } diff --git a/src/test/shell/bazel/starlark_repository_test.sh b/src/test/shell/bazel/starlark_repository_test.sh index 4a4fe82597c3bb..dc45b9e2be0f54 100755 --- a/src/test/shell/bazel/starlark_repository_test.sh +++ b/src/test/shell/bazel/starlark_repository_test.sh @@ -2408,4 +2408,26 @@ EOF || fail "Expected build to succeed" } +function test_repo_boundary_files() { + create_new_workspace + cat > MODULE.bazel < r.bzl < output || fail "expected bazel to succeed" + assert_contains 'REPO.bazel' output + assert_not_contains 'WORKSPACE' output + + bazel query --enable_workspace --output=build @r > output || fail "expected bazel to succeed" + assert_contains 'REPO.bazel' output + assert_contains 'WORKSPACE' output +} + run_suite "local repository tests"