diff options
6 files changed, 27 insertions, 19 deletions
diff --git a/scripts/bootstrap/bootstrap.sh b/scripts/bootstrap/bootstrap.sh index e0b42d6d5a..05af3583cd 100755 --- a/scripts/bootstrap/bootstrap.sh +++ b/scripts/bootstrap/bootstrap.sh @@ -35,6 +35,7 @@ fi --genclass_top=//src/java_tools/buildjar:bootstrap_genclass_deploy.jar \ --ijar_top=//third_party/ijar \ --strategy=Javac=worker --worker_quit_after_build \ + --genrule_strategy=standalone --spawn_strategy=standalone \ ${EXTRA_BAZEL_ARGS-}"} function bazel_bootstrap() { @@ -42,12 +43,12 @@ function bazel_bootstrap() { if [[ ! ${BAZEL_SKIP_TOOL_COMPILATION-} =~ "$2" ]]; then log "Building $2" if [ -n "${4-}" ]; then - ${BAZEL} --nomaster_bazelrc --bazelrc=${BAZELRC} \ + ${BAZEL} --nomaster_bazelrc --bazelrc=${BAZELRC} --batch \ build ${BAZEL_ARGS} \ --javacopt="-source ${JAVA_VERSION} -target ${JAVA_VERSION}" \ "${EMBED_LABEL_ARG[@]}" $1 else - run_silent ${BAZEL} --nomaster_bazelrc --bazelrc=${BAZELRC} \ + run_silent ${BAZEL} --nomaster_bazelrc --bazelrc=${BAZELRC} --batch \ build ${BAZEL_ARGS} \ --javacopt="-source ${JAVA_VERSION} -target ${JAVA_VERSION}" \ "${EMBED_LABEL_ARG[@]}" $1 diff --git a/scripts/bootstrap/compile.sh b/scripts/bootstrap/compile.sh index ec9739777f..37e01995f6 100755 --- a/scripts/bootstrap/compile.sh +++ b/scripts/bootstrap/compile.sh @@ -342,19 +342,12 @@ else cp src/main/tools/xcode_locator_stub.sh ${OUTPUT_DIR}/xcode-locator fi -log "Compiling namespace-sandbox..." -if [[ $PLATFORM == "linux" ]]; then - run_silent "${CC}" -o ${OUTPUT_DIR}/namespace-sandbox -std=c99 src/main/tools/namespace-sandbox.c src/main/tools/network-tools.c src/main/tools/process-tools.c -lm ${LDFLAGS} -else - run_silent "${CC}" -o ${OUTPUT_DIR}/namespace-sandbox -std=c99 src/main/tools/namespace-sandbox-dummy.c -lm ${LDFLAGS} -fi - cp src/main/tools/build_interface_so ${OUTPUT_DIR}/build_interface_so cp src/main/tools/jdk.* ${OUTPUT_DIR} log "Creating Bazel self-extracting archive..." ARCHIVE_DIR=${OUTPUT_DIR}/archive -for i in libblaze.jar ${JNILIB} build-runfiles${EXE_EXT} process-wrapper${EXE_EXT} xcode-locator${EXE_EXT} namespace-sandbox${EXE_EXT} build_interface_so ${MSYS_DLLS} jdk.BUILD; do +for i in libblaze.jar ${JNILIB} build-runfiles${EXE_EXT} process-wrapper${EXE_EXT} xcode-locator${EXE_EXT} build_interface_so ${MSYS_DLLS} jdk.BUILD; do mkdir -p $(dirname $ARCHIVE_DIR/$i); cp $OUTPUT_DIR/$i $ARCHIVE_DIR/$i; done diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BinTools.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BinTools.java index 13ce596ec7..936c4b9fa4 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/BinTools.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BinTools.java @@ -15,13 +15,13 @@ package com.google.devtools.build.lib.analysis.config; import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactFactory; import com.google.devtools.build.lib.actions.EnvironmentalExecException; import com.google.devtools.build.lib.actions.ExecException; import com.google.devtools.build.lib.analysis.BlazeDirectories; -import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.vfs.Dirent; import com.google.devtools.build.lib.vfs.FileSystemUtils; import com.google.devtools.build.lib.vfs.Path; @@ -128,13 +128,16 @@ public final class BinTools { } public PathFragment getExecPath(String embedPath) { - Preconditions.checkState(embeddedTools.contains(embedPath), "%s not in %s", embedPath, - embeddedTools); + if (!embeddedTools.contains(embedPath)) { + return null; + } return new PathFragment("_bin").getRelative(new PathFragment(embedPath).getBaseName()); } public Artifact getEmbeddedArtifact(String embedPath, ArtifactFactory artifactFactory) { - return artifactFactory.getDerivedArtifact(getExecPath(embedPath)); + PathFragment path = getExecPath(embedPath); + Preconditions.checkNotNull(path, embedPath + " not found in embedded tools"); + return artifactFactory.getDerivedArtifact(path); } public ImmutableList<Artifact> getAllEmbeddedArtifacts(ArtifactFactory artifactFactory) { diff --git a/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeHelper.java b/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeHelper.java index b74dd1a226..b557a6a08a 100644 --- a/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeHelper.java +++ b/src/main/java/com/google/devtools/build/lib/exec/SymlinkTreeHelper.java @@ -13,6 +13,7 @@ // limitations under the License. package com.google.devtools.build.lib.exec; +import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; import com.google.devtools.build.lib.actions.AbstractAction; @@ -120,9 +121,9 @@ public final class SymlinkTreeHelper { * Returns the complete argument list build-runfiles has to be called with. */ private List<String> getSpawnArgumentList(Path execRoot, BinTools binTools) { - List<String> args = Lists.newArrayList( - execRoot.getRelative(binTools.getExecPath(BUILD_RUNFILES)) - .getPathString()); + PathFragment path = binTools.getExecPath(BUILD_RUNFILES); + Preconditions.checkNotNull(path, BUILD_RUNFILES + " not found in embedded tools"); + List<String> args = Lists.newArrayList(execRoot.getRelative(path).getPathString()); if (filesetTree) { args.add("--allow_relative"); diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java index 54353d5f89..34f6819afd 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java @@ -246,8 +246,11 @@ public class RunCommand implements BlazeCommand { options.getOptions(BuildRequestOptions.class).getSymlinkPrefix()); List<String> cmdLine = new ArrayList<>(); if (runOptions.scriptPath == null) { + PathFragment processWrapperPath = runtime.getBinTools().getExecPath(PROCESS_WRAPPER); + Preconditions.checkNotNull( + processWrapperPath, PROCESS_WRAPPER + " not found in embedded tools"); cmdLine.add(runtime.getDirectories().getExecRoot() - .getRelative(runtime.getBinTools().getExecPath(PROCESS_WRAPPER)).getPathString()); + .getRelative(processWrapperPath).getPathString()); cmdLine.add("-1"); cmdLine.add("15"); cmdLine.add("-"); diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/NamespaceSandboxRunner.java b/src/main/java/com/google/devtools/build/lib/sandbox/NamespaceSandboxRunner.java index 1fb5021e7d..7fae775e33 100644 --- a/src/main/java/com/google/devtools/build/lib/sandbox/NamespaceSandboxRunner.java +++ b/src/main/java/com/google/devtools/build/lib/sandbox/NamespaceSandboxRunner.java @@ -79,8 +79,15 @@ public class NamespaceSandboxRunner { Path execRoot = runtime.getExecRoot(); BinTools binTools = runtime.getBinTools(); + PathFragment embeddedTool = binTools.getExecPath(NAMESPACE_SANDBOX); + if (embeddedTool == null) { + // The embedded tool does not exist, meaning that we don't support sandboxing (e.g., while + // bootstrapping). + return false; + } + List<String> args = new ArrayList<>(); - args.add(execRoot.getRelative(binTools.getExecPath(NAMESPACE_SANDBOX)).getPathString()); + args.add(execRoot.getRelative(embeddedTool).getPathString()); args.add("-C"); ImmutableMap<String, String> env = ImmutableMap.of(); |