Comments (1)
So buck2 mostly does this right. When defining actions, rules can specify some environment variables to set, and buck2 will use this information to decide when to rerun or not rerun an action. Rules can in turn expose this interface to users via an attribute, for example the env
attribute in rust_library
. This isn't available on all rules, but normally not too hard to add
That being said, in addition to the "tracked" environment that is actually expressed in the build graph, actions also inherit what you might consider a default environment. This part of the environment is not tracked by buck2 and will not result in rebuilds if changed.
When using remote execution, the default environment is fully determined by the backing RE implementation, so you'll have to consult their documentation for what that default environment looks like. #532 was an example of breakage caused by different RE implementations making different decisions here. The local environment on a users machine should never have any effect on the build in this case.
Local execution, on the other hand, is currently un-isolated in buck2. Specifically, the environment that local actions inherit will be the same one that was used to start the daemon. Just like how buck2 does not enforce that you declare all your inputs, it also does not enforce that you don't depend on untracked parts of the environment. The Rust rules try and protect against this by explicitly sanitizing the environment before invoking rustc - that behavior is what #466 is about.
Sanitizing the local environment would be an important part of an implementation of isolated local actions.
from buck2.
Related Issues (20)
- Errant octal escape strings in prelude docs HOT 1
- RE: Error, message length too large for `BatchReadBlobs` HOT 1
- buck2 fails to build on m3 mac
- Treat
- Test
- Does not prebuilt_cxx_library.static_lib support $(location //:target)? HOT 3
- Conflicting inputs on erlang build of Opentelemetry HOT 1
- error: Variable `typing` not found HOT 2
- Excluding rules from certain platforms HOT 6
- Unable to `buck2 clean` a repo which uses `git_fetch()` on Windows
- `configured_alias` and configuration modifiers HOT 2
- review Go analysis.Pass.Module proposal
- Creating symbolic links to toolchains HOT 10
- Early-building some parts of graph HOT 7
- How to use "buck2 clean" or other commands to delete only the generated files (cache) without killing the daemon? HOT 2
- Question: how to pass dependencies that change state forward across a non-output-changing rule HOT 4
- buck2 : Is java supported as a part of buck2 HOT 2
- Share work across configurations by setting working directory for actions then canonicalizing that working directory in RE HOT 5
- How to use multiple execution platforms HOT 1
- Distributed project.ignore
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 buck2.