[corgi](https://github.com/ConradIrwin/corgi) is a cargo-compatible build tool that runs `build.rs` scripts and proc-macros in a sandbox (no network, no ambient env, reads limited to a package's own `.rs` sources unless declared). This makes Zed buildable under it. Cargo builds (dev and release) are unaffected. ### Changes - **`scratch` patch**: patch `scratch` to a small local copy (`corgi-patches/scratch`) that reads `OUT_DIR` at runtime instead of baking it in at compile time. `cxx-build` writes its shared cxxbridge headers into `scratch::path(...)`; upstream returns a single global dir (outside any action's `OUT_DIR`) that the sandbox can't grant, while this patch gives each build script a private, writable dir in its own entry. webrtc-sys is self-contained, so per-crate scratch dirs are sufficient. Kept local rather than a cxx git fork because a git checkout of cxx needs symlink support that Windows cargo CI lacks. - **Dev asset loading**: add `util::dev_fs_embed!` and switch dev-mode `rust_embed` asset sources (`assets`, `settings`, `grammars`, `agent`, `edit_prediction_cli`) to read from the checkout at runtime, locating the repo root by walking from the executable up to the enclosing `.git`. This avoids baking `CARGO_MANIFEST_DIR` into the binary (corgi rejects artifacts that embed the build-time checkout path, and it's wrong in any other worktree). Release builds still embed via `#[derive(RustEmbed)]`. - **Stop baking checkout paths into artifacts**: drop `gpui::GPUI_MANIFEST_DIR`; resolve `../gpui` from `gpui_apple`'s build script; stage the metal shader into `OUT_DIR` before compiling so the `.metallib` records the output dir, not the checkout; resolve the repo root at runtime in `remote` and `inspector_ui` (removing `inspector_ui`'s `build.rs` / `ZED_REPO_DIR`). - **corgi.toml**: declare the pinned tools (`cmake`, prebuilt libwebrtc via `LK_CUSTOM_WEBRTC`), a release-only `ZED_COMMIT_SHA` probe, and the non-`.rs` / cross-package reads each package performs. ### Validation - `corgi check` + `corgi build`, dev and release, for `zed` (plus `cli`, `remote_server`, `ep`) with a warm C++ cache — clean; built binaries embed no checkout path. - `corgi fmt --check`, `corgi clippy`, and `corgi test` on the changed crates (922 tests pass). - `cargo check -p util` locally; relying on CI for the full cargo build/test matrix. ### Notes for the reviewer - Per the repo rule, the first two lines of `README.md` are the review-confirmation marker; remove them before merging (this is what Danger is failing on). - `remote_server` cross-compilation (linux-musl via zigbuild) is not yet covered by `corgi.toml` — host (macOS arm64) only for now. ### Suggested .rules additions Only if the team wants corgi guidance in `.rules` (it recurred several times here): dev builds must not bake the checkout path into artifacts — no `env!("CARGO_MANIFEST_DIR")` or `file!()`-derived absolute paths in library/binary output. Resolve the repo root at runtime via `util::dev_repo_root()` (walks to `.git`), and use `util::dev_fs_embed!` for dev-mode `rust_embed` sources. Release Notes: - N/A --------- Co-authored-by: Ben Kunkle <ben@zed.dev>
93 lines
2.3 KiB
TOML
93 lines
2.3 KiB
TOML
[package]
|
|
name = "edit_prediction_cli"
|
|
version = "0.1.0"
|
|
edition.workspace = true
|
|
publish.workspace = true
|
|
license = "GPL-3.0-or-later"
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[lib]
|
|
path = "src/lib.rs"
|
|
|
|
[[bin]]
|
|
name = "ep"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
anyhow.workspace = true
|
|
anthropic.workspace = true
|
|
http_client.workspace = true
|
|
chrono.workspace = true
|
|
clap = "4"
|
|
client.workspace = true
|
|
cloud_llm_client = { workspace = true, features = ["predict-edits"] }
|
|
collections.workspace = true
|
|
db.workspace = true
|
|
debug_adapter_extension.workspace = true
|
|
dirs.workspace = true
|
|
extension.workspace = true
|
|
fs.workspace = true
|
|
futures.workspace = true
|
|
gpui.workspace = true
|
|
gpui_platform.workspace = true
|
|
gpui_tokio.workspace = true
|
|
indoc.workspace = true
|
|
language.workspace = true
|
|
language_extension.workspace = true
|
|
language_model.workspace = true
|
|
language_models.workspace = true
|
|
languages = { workspace = true, features = ["load-grammars"] }
|
|
libc.workspace = true
|
|
log.workspace = true
|
|
node_runtime.workspace = true
|
|
open_ai.workspace = true
|
|
|
|
paths.workspace = true
|
|
project.workspace = true
|
|
prompt_store.workspace = true
|
|
release_channel.workspace = true
|
|
reqwest_client.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
settings.workspace = true
|
|
shellexpand.workspace = true
|
|
smol.workspace = true
|
|
sqlez.workspace = true
|
|
strum.workspace = true
|
|
sqlez_macros.workspace = true
|
|
terminal_view.workspace = true
|
|
util.workspace = true
|
|
watch.workspace = true
|
|
edit_prediction = { workspace = true, features = ["cli-support"] }
|
|
edit_prediction_context.workspace = true
|
|
edit_prediction_metrics = { workspace = true, features = ["tree-sitter"] }
|
|
telemetry_events.workspace = true
|
|
wasmtime.workspace = true
|
|
zeta_prompt.workspace = true
|
|
rand.workspace = true
|
|
similar = "2.7.0"
|
|
flate2 = "1.1.8"
|
|
toml.workspace = true
|
|
gaoya = "0.2.0"
|
|
|
|
# Wasmtime is included as a dependency in order to enable the same
|
|
# features that are enabled in Zed.
|
|
#
|
|
# If we don't enable these features we get crashes when creating
|
|
# a Tree-sitter WasmStore.
|
|
[features]
|
|
dynamic_prompts = []
|
|
|
|
[package.metadata.cargo-shear]
|
|
ignored = ["wasmtime", "workspace"]
|
|
|
|
[dev-dependencies]
|
|
gpui = { workspace = true, features = ["test-support"] }
|
|
indoc.workspace = true
|
|
pretty_assertions.workspace = true
|
|
project = { workspace = true, features = ["test-support"] }
|
|
tempfile.workspace = true
|
|
workspace = { workspace = true, features = ["test-support"] }
|