indygreg / indygreg/PyOxidizer
Feature request: incremental builds
- Dominant language
- Rust
- Stars
- 6.2k
- Forks
- 256
- PR merge metrics
- No merged PRs in 30d
Description
For a project I'm working on, `pyoxidizer build` takes about 8 minutes on Windows, 1:16 of which is in `cargo build`, and most of the rest of which is in Pip. My workflow typically involves tweaking the `pyoxidizer.bzl` file or one of my Python modules and rebuilding. In theory, a subsequent run of `pyoxidizer build` could do as little as re-compiling the tweaked Python module, re-packing the resulting byte code, and re-linking. I imagine it'd be harder to keep track of what exactly changed in a `pyoxidizer.bzl` file than noticing that a certain set of Python modules have been updated. However, if the installation target stays put, Pip can generally avoid duplicating work, so PyOxidizer could offload some of the change-tracking of `pyoxidizer.bzl` to Pip. Also, Cargo can forgo re-compiling if it's compiling in the same place each time. This suggests to me that PyOxidizer move from building in a temporary directory to building in the directory set by [`set_build_path()`](https://pyoxidizer.readthedocs.io/en/v0.10.3/config_global_state.html#config-set-build-path).
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the `pyoxidizer build` entry point and the `set_build_path()` configuration referenced in the issue. Trace how builds currently use a temporary directory and how Cargo and Pip are invoked. Done means repeated builds reuse the configured build path and avoid unnecessary recompilation, repacking, and installation work.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python, rust
- Domain
- build-system, tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100