Comments (3)
On the remote side, this should theoretically be possible with a platform property - thanks for the feature request!
from buildbuddy.
Hi, thanks for the prompt and positive feedback. @sluongng @siggisim
Also thanks for reaching out via DM in slack. @sluongng
The question I was asked by @sluongng in slack was this: what use case for it do you have in mind?
TLDR: I don't think my specific use case justifies a feature request of expressing mutual exclusivity
via exec_properties
or the like. But I do think there is general need for this.
The exact use case I had was like:
I am using rules_python's multi-version setup (https://github.com/bazelbuild/rules_python/tree/main/examples/multi_python_versions).
I build a C/C++-linked pip wheel with its py_wheel rule, published to test.pypi here (https://test.pypi.org/project/zhongming-pybind-multiversion-example/#files).
Then, I used different versions of Python vendored by rules_python (like this one https://github.com/bazelbuild/rules_python/blob/c72c7bcf4e0899c275042328e8233e3124ccae86/examples/multi_python_versions/tests/BUILD.bazel#L2), to run python3 -m pip install on my own wheels to see if they properly install and load.
Apparently, python3 -m pip install requires access to the current user's ~/.cache/pypi directory and modifies the site-packages directory inside it.
As such, running these python3 -m pip install tests are common dependent on a shared filesystem. So these tests must be mutually exclusive.
Per my understanding, there is probably ways to make pip use different directories than the default ~/.cache/pypi
. So I did not include this lengthy description at first. But I still think that in general, being able to express the idea of mutually exclusive group
(maybe via exec_properties
, I thought) would be generally helpful.
from buildbuddy.
BuildBuddy currently only implements the server-side of Remote Execution API v2 https://github.com/bazelbuild/remote-apis/blob/main/build/bazel/remote/execution/v2/
The "scheduling" of actions, under the current API design, is still with the client side.
Today, Bazel implements the client side of the API and is in charge of telling BuildBuddy when to start executing an action.
That means the change you are looking for must happen on Bazel side before we could do anything on BuildBuddy side.
You could be interested in bazelbuild/bazel#6477 and the related commit bazelbuild/bazel@d7f0724
from buildbuddy.
Related Issues (20)
- [CLI] Queries break for some common attributes HOT 2
- [CLI] Several "too many files open" errors for some builds HOT 2
- Actions using ctx.actions.declare_directory() are never cached HOT 2
- Non-root user in buildbuddy-app-onprem HOT 3
- Build Invocation Data not Shareable Across Docker containers even when stored in S3 HOT 4
- Incorrect name and organization when logging in for the first time HOT 5
- Reclient/chromium build support? HOT 1
- BuildBuddy GitHub app: Passes --heap_dump_on_oom HOT 1
- BuildBuddy GitHub app: Container has a version of `ar` without `--output=` flag HOT 2
- `buildbuddy.yaml`: Set default --config HOT 4
- BuildBuddy GitHub app: Submodules HOT 5
- [CLI] `bb login` fails in `git-worktree` linked worktrees. HOT 2
- Show analysis phase errors explicitly HOT 2
- [CLI] bb specific commands don't work when using `.bazelversion` HOT 5
- Feature Request: Show execution log in artifacts tab HOT 3
- Unreadable test result HOT 9
- [CLI] `Gathering metadata for bazel version...` breaks with some `tools/bazel` wrappers HOT 5
- [CLI] `bb login` should be a no-op if the user already has a valid API key HOT 4
- [CLI] `bb login` should say it's going to open a webpage before doing so HOT 2
- [CLI]: bb plugin hardlink does not work in devcontainer's volume HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from buildbuddy.