Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make Bazelisk's cache writable when using sandboxing. #497

Merged
merged 1 commit into from
Feb 25, 2019

Conversation

fweikert
Copy link
Member

Running Bazelisk from within an integration test on Linux or MacOS would
fail if sandboxing was enabled since Bazelisk wasn't allowed to write to
its cache directory.

This commit adds a test flag that fixes this problem. No action is
needed on Windows since there is no sandboxing.
As a consequence, it should fix the Tulsi test that is blocking bazelbuild/bazel#6495

Runing Bazelisk from within an integration test on Linux or MacOS would
fail if sandboxing was enabled since Bazelisk wasn't allowed to write to
its cache directory.

This commit adds a test flag that fixes this problem. No action is
needed on Windows since there is no sandboxing.
@fweikert fweikert requested a review from philwo as a code owner February 25, 2019 13:53
@fweikert fweikert requested review from philwo and buchgr February 25, 2019 13:57
@fweikert fweikert merged commit 5b89033 into bazelbuild:master Feb 25, 2019
@fweikert fweikert deleted the sandbox branch February 25, 2019 13:57
fweikert added a commit to fweikert/continuous-integration that referenced this pull request Feb 25, 2019
--sandbox_writable_path actually requires the path to exist, which
means we cannot add this flag unconditionally.
fweikert added a commit to fweikert/continuous-integration that referenced this pull request Feb 25, 2019
--sandbox_writable_path actually requires the path to exist, which
means we cannot add this flag unconditionally.
@fweikert fweikert mentioned this pull request Feb 25, 2019
fweikert added a commit that referenced this pull request Feb 25, 2019
--sandbox_writable_path actually requires the path to exist, which
means we cannot add this flag unconditionally.
fweikert added a commit to fweikert/continuous-integration that referenced this pull request Feb 26, 2019
We have replaced Bazel with Bazelisk on all CI workers. As a consequence, calling "bazel" from PATH will actually invoke Bazelisk, which in turn downloads the requested version of Bazel into a cache directory and then executes it.
This caused a problem when an integration test invoked Bazel from PATH (aka Bazelisk) while running inside a sandbox: The sandbox blocked access to the cache directory, thus failing the test.

bazelbuild#497 tried to address this problem by whitelisting the cache directory via the --sandbox_writable_path flag.
However, this flag requires the given path to exist, which was not the case when tests were running a Bazel binary from their runfiles instead of Bazelisk.

Since we cannot easily detect whether a test invokes Bazelisk or another Bazel binary, we're working around this problem by creating the Bazelisk cache directory before running any tests.

Fixes bazelbuild#498.
fweikert added a commit that referenced this pull request Feb 26, 2019
* Explicitly create Bazelisk's cache directory.

We have replaced Bazel with Bazelisk on all CI workers. As a consequence, calling "bazel" from PATH will actually invoke Bazelisk, which in turn downloads the requested version of Bazel into a cache directory and then executes it.
This caused a problem when an integration test invoked Bazel from PATH (aka Bazelisk) while running inside a sandbox: The sandbox blocked access to the cache directory, thus failing the test.

#497 tried to address this problem by whitelisting the cache directory via the --sandbox_writable_path flag.
However, this flag requires the given path to exist, which was not the case when tests were running a Bazel binary from their runfiles instead of Bazelisk.

Since we cannot easily detect whether a test invokes Bazelisk or another Bazel binary, we're working around this problem by creating the Bazelisk cache directory before running any tests.

Fixes #498.
joeleba pushed a commit to joeleba/continuous-integration that referenced this pull request Jun 17, 2019
Runing Bazelisk from within an integration test on Linux or MacOS would
fail if sandboxing was enabled since Bazelisk wasn't allowed to write to
its cache directory.

This commit adds a test flag that fixes this problem. No action is
needed on Windows since there is no sandboxing.
joeleba pushed a commit to joeleba/continuous-integration that referenced this pull request Jun 17, 2019
--sandbox_writable_path actually requires the path to exist, which
means we cannot add this flag unconditionally.
joeleba pushed a commit to joeleba/continuous-integration that referenced this pull request Jun 17, 2019
* Explicitly create Bazelisk's cache directory.

We have replaced Bazel with Bazelisk on all CI workers. As a consequence, calling "bazel" from PATH will actually invoke Bazelisk, which in turn downloads the requested version of Bazel into a cache directory and then executes it.
This caused a problem when an integration test invoked Bazel from PATH (aka Bazelisk) while running inside a sandbox: The sandbox blocked access to the cache directory, thus failing the test.

bazelbuild#497 tried to address this problem by whitelisting the cache directory via the --sandbox_writable_path flag.
However, this flag requires the given path to exist, which was not the case when tests were running a Bazel binary from their runfiles instead of Bazelisk.

Since we cannot easily detect whether a test invokes Bazelisk or another Bazel binary, we're working around this problem by creating the Bazelisk cache directory before running any tests.

Fixes bazelbuild#498.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants