1
0
mirror of https://git.savannah.gnu.org/git/guix.git synced 2026-04-06 21:20:33 +02:00

gnu: Add rust-codex@0.0.0.785c0c43.

* gnu/packages/patches/rust-codex-0.98.0-core-file-lock.patch: New file.
* gnu/packages/patches/rust-codex-0.98.0-core-remove-self-dep.patch: New file.
* gnu/packages/patches/rust-codex-0.98.0-execpolicy-file-lock.patch: New file.
* gnu/packages/patches/rust-codex-0.98.0-arg0-file-lock.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register them.
* gnu/packages/rust-crates.scm (rust-codex-api-0.0.0.785c0c43,
rust-codex-app-server-protocol-0.0.0.785c0c43,
rust-codex-apply-patch-0.0.0.785c0c43,
rust-codex-arg0-0.0.0.785c0c43,
rust-codex-async-utils-0.0.0.785c0c43,
rust-codex-client-0.0.0.785c0c43,
rust-codex-common-0.0.0.785c0c43,
rust-codex-core-0.0.0.785c0c43,
rust-codex-execpolicy-0.0.0.785c0c43,
rust-codex-experimental-api-macros-0.0.0.785c0c43,
rust-codex-file-search-0.0.0.785c0c43,
rust-codex-git-0.0.0.785c0c43,
rust-codex-keyring-store-0.0.0.785c0c43,
rust-codex-linux-sandbox-0.0.0.785c0c43,
rust-codex-lmstudio-0.0.0.785c0c43,
rust-codex-login-0.0.0.785c0c43,
rust-codex-mcp-server-0.0.0.785c0c43,
rust-codex-ollama-0.0.0.785c0c43,
rust-codex-otel-0.0.0.785c0c43,
rust-codex-protocol-0.0.0.785c0c43,
rust-codex-rmcp-client-0.0.0.785c0c43,
rust-codex-state-0.0.0.785c0c43,
rust-codex-utils-absolute-path-0.0.0.785c0c43,
rust-codex-utils-cache-0.0.0.785c0c43,
rust-codex-utils-home-dir-0.0.0.785c0c43,
rust-codex-utils-image-0.0.0.785c0c43,
rust-codex-utils-json-to-toml-0.0.0.785c0c43,
rust-codex-utils-pty-0.0.0.785c0c43,
rust-codex-utils-readiness-0.0.0.785c0c43,
rust-codex-utils-string-0.0.0.785c0c43,
rust-codex-windows-sandbox-0.0.0.785c0c43): New variables.
* gnu/packages/rust-crates.scm (lookup-cargo-inputs)
[rust-codex-0.0.0.785c0c43, codex-app-server-protocol, codex-common,
codex-core, codex-protocol, codex-utils-absolute-path]: New entries.
* gnu/packages/rust-sources.scm (rust-codex-0.0.0.785c0c43): New variable.

Change-Id: I3e4fceeb6f7821525a19b556fe852db6c707bae4
This commit is contained in:
Danny Milosavljevic
2026-02-08 21:14:05 +00:00
parent 6a386b23c2
commit 5ab5c41868
7 changed files with 1178 additions and 5 deletions

View File

@@ -2319,6 +2319,10 @@ dist_patch_DATA = \
%D%/packages/patches/rust-1.70-fix-rustix-build.patch \
%D%/packages/patches/rust-1.78-unwinding-fix.patch \
%D%/packages/patches/rust-1.81-fix-riscv64-bootstrap.patch \
%D%/packages/patches/rust-codex-0.98.0-arg0-file-lock.patch \
%D%/packages/patches/rust-codex-0.98.0-core-file-lock.patch \
%D%/packages/patches/rust-codex-0.98.0-core-remove-self-dep.patch \
%D%/packages/patches/rust-codex-0.98.0-execpolicy-file-lock.patch \
%D%/packages/patches/rust-ring-0.17-ring-core.patch \
%D%/packages/patches/rw-igraph-0.10.patch \
%D%/packages/patches/rxvt-unicode-fix-cursor-position.patch \

View File

@@ -0,0 +1,89 @@
Author: Danny Milosavljevic <dannym@friendly-machines.com>
Date: 2026-02-07
License: ASL2.0
Subject: Use libc::flock instead of unstable std File::try_lock().
The file_lock feature is tracked at <https://github.com/rust-lang/rust/issues/130994>
and is not yet stable in old Rust versions like Rust 1.88.
diff -ruN a/codex-rs/arg0/Cargo.toml b/codex-rs/arg0/Cargo.toml
--- a/codex-rs/arg0/Cargo.toml
+++ b/codex-rs/arg0/Cargo.toml
@@ -17,5 +17,6 @@
codex-core = { workspace = true }
codex-linux-sandbox = { workspace = true }
dotenvy = { workspace = true }
+libc = { workspace = true }
tempfile = { workspace = true }
tokio = { workspace = true, features = ["rt-multi-thread"] }
diff -ruN a/codex-rs/arg0/src/lib.rs b/codex-rs/arg0/src/lib.rs
--- a/codex-rs/arg0/src/lib.rs
+++ b/codex-rs/arg0/src/lib.rs
@@ -5,6 +5,8 @@
use codex_core::CODEX_APPLY_PATCH_ARG1;
#[cfg(unix)]
+use std::os::unix::io::AsRawFd;
+#[cfg(unix)]
use std::os::unix::fs::symlink;
use tempfile::TempDir;
@@ -13,6 +15,18 @@
const MISSPELLED_APPLY_PATCH_ARG0: &str = "applypatch";
const LOCK_FILENAME: &str = ".lock";
+// FIXME: Remove this helper when Rust provides stable file locking API.
+// The file_lock feature is tracked at <https://github.com/rust-lang/rust/issues/130994>.
+#[cfg(unix)]
+fn try_lock_exclusive(file: &File) -> std::io::Result<()> {
+ let ret = unsafe { libc::flock(file.as_raw_fd(), libc::LOCK_EX | libc::LOCK_NB) };
+ if ret == 0 {
+ Ok(())
+ } else {
+ Err(std::io::Error::last_os_error())
+ }
+}
+
/// Keeps the per-session PATH entry alive and locked for the process lifetime.
pub struct Arg0PathEntryGuard {
_temp_dir: TempDir,
@@ -216,7 +230,7 @@
.create(true)
.truncate(false)
.open(&lock_path)?;
- lock_file.try_lock()?;
+ try_lock_exclusive(&lock_file)?;
for filename in &[
APPLY_PATCH_ARG0,
@@ -307,10 +321,10 @@
Err(err) => return Err(err),
};
- match lock_file.try_lock() {
+ match try_lock_exclusive(&lock_file) {
Ok(()) => Ok(Some(lock_file)),
- Err(std::fs::TryLockError::WouldBlock) => Ok(None),
- Err(err) => Err(err.into()),
+ Err(ref e) if e.raw_os_error() == Some(libc::EWOULDBLOCK) => Ok(None),
+ Err(err) => Err(err),
}
}
@@ -318,6 +332,7 @@
mod tests {
use super::LOCK_FILENAME;
use super::janitor_cleanup;
+ use super::try_lock_exclusive;
use std::fs;
use std::fs::File;
use std::path::Path;
@@ -350,7 +365,7 @@
let dir = root.path().join("locked");
fs::create_dir(&dir)?;
let lock_file = create_lock(&dir)?;
- lock_file.try_lock()?;
+ try_lock_exclusive(&lock_file)?;
janitor_cleanup(root.path())?;

View File

@@ -0,0 +1,91 @@
Author: Danny Milosavljevic <dannym@friendly-machines.com>
Date: 2026-01-25
License: ASL2.0
Subject: Use libc::flock instead of unstable std File::try_lock()/try_lock_shared().
The file_lock feature is tracked at <https://github.com/rust-lang/rust/issues/130994>.
and is not yet stable in old Rust versions like Rust 1.85.
The file_lock feature was stabilized after Rust 1.88, but we only have 1.88.
diff -u a/codex-rs/core/src/message_history.rs b/codex-rs/core/src/message_history.rs
--- a/codex-rs/core/src/message_history.rs
+++ b/codex-rs/core/src/message_history.rs
@@ -41,6 +41,8 @@
use std::os::unix::fs::OpenOptionsExt;
#[cfg(unix)]
use std::os::unix::fs::PermissionsExt;
+#[cfg(unix)]
+use std::os::unix::io::AsRawFd;
/// Filename that stores the message history inside `~/.codex`.
const HISTORY_FILENAME: &str = "history.jsonl";
@@ -51,6 +53,28 @@
const MAX_RETRIES: usize = 10;
const RETRY_SLEEP: Duration = Duration::from_millis(100);
+// FIXME: Remove these helpers when Rust provides stable file locking API
+// The file_lock feature is tracked at <https://github.com/rust-lang/rust/issues/130994>.
+#[cfg(unix)]
+fn try_lock_exclusive(file: &File) -> std::io::Result<()> {
+ let ret = unsafe { libc::flock(file.as_raw_fd(), libc::LOCK_EX | libc::LOCK_NB) };
+ if ret == 0 {
+ Ok(())
+ } else {
+ Err(std::io::Error::last_os_error())
+ }
+}
+
+#[cfg(unix)]
+fn try_lock_shared(file: &File) -> std::io::Result<()> {
+ let ret = unsafe { libc::flock(file.as_raw_fd(), libc::LOCK_SH | libc::LOCK_NB) };
+ if ret == 0 {
+ Ok(())
+ } else {
+ Err(std::io::Error::last_os_error())
+ }
+}
+
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct HistoryEntry {
pub session_id: String,
@@ -126,7 +150,7 @@
tokio::task::spawn_blocking(move || -> Result<()> {
// Retry a few times to avoid indefinite blocking when contended.
for _ in 0..MAX_RETRIES {
- match history_file.try_lock() {
+ match try_lock_exclusive(&history_file) {
Ok(()) => {
// While holding the exclusive lock, write the full line.
// We do not open the file with `append(true)` on Windows, so ensure the
@@ -137,10 +161,10 @@
enforce_history_limit(&mut history_file, history_max_bytes)?;
return Ok(());
}
- Err(std::fs::TryLockError::WouldBlock) => {
+ Err(ref e) if e.kind() == std::io::ErrorKind::WouldBlock => {
std::thread::sleep(RETRY_SLEEP);
}
- Err(e) => return Err(e.into()),
+ Err(e) => return Err(e),
}
}
@@ -341,7 +365,7 @@
// Open & lock file for reading using a shared lock.
// Retry a few times to avoid indefinite blocking.
for _ in 0..MAX_RETRIES {
- let lock_result = file.try_lock_shared();
+ let lock_result = try_lock_shared(&file);
match lock_result {
Ok(()) => {
@@ -368,7 +392,7 @@
// Not found at requested offset.
return None;
}
- Err(std::fs::TryLockError::WouldBlock) => {
+ Err(ref e) if e.kind() == std::io::ErrorKind::WouldBlock => {
std::thread::sleep(RETRY_SLEEP);
}
Err(e) => {

View File

@@ -0,0 +1,24 @@
Author: Danny Milosavljevic <dannym@friendly-machines.com>
Date: 2026-02-08
License: ASL2.0
Subject: Remove codex-core circular dev-dependencies.
codex-core has a dev-dependency on itself with different features enabled,
and a dev-dependency on codex-arg0 which in turn depends on codex-core.
Both cause cargo package to fail when resolving from the vendor directory
because neither is available at the time codex-core is packaged.
diff -u a/codex-rs/core/Cargo.toml b/codex-rs/core/Cargo.toml
--- a/codex-rs/core/Cargo.toml
+++ b/codex-rs/core/Cargo.toml
@@ -140,10 +140,7 @@
assert_cmd = { workspace = true }
assert_matches = { workspace = true }
-codex-arg0 = { workspace = true }
-codex-core = { path = ".", default-features = false, features = [
- "deterministic_process_ids",
-] }
+# codex-arg0 and codex-core self-ref removed for packaging
codex-otel = { workspace = true, features = [
"disable-default-metrics-exporter",
] }

View File

@@ -0,0 +1,49 @@
Author: Danny Milosavljevic <dannym@friendly-machines.com>
Date: 2026-01-25
License: ASL2.0
Subject: Use libc::flock instead of unstable std File::lock().
The file_lock feature is tracked at <https://github.com/rust-lang/rust/issues/130994>.
and is not yet stable in old Rust versions like Rust 1.85.
The file_lock feature was stabilized after Rust 1.88, but we only have 1.88.
diff -u a/codex-rs/execpolicy/Cargo.toml b/codex-rs/execpolicy/Cargo.toml
--- a/codex-rs/execpolicy/Cargo.toml
+++ b/codex-rs/execpolicy/Cargo.toml
@@ -19,6 +19,7 @@
[dependencies]
anyhow = { workspace = true }
clap = { workspace = true, features = ["derive"] }
+libc = { workspace = true }
multimap = { workspace = true }
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true }
diff -u a/codex-rs/execpolicy/src/amend.rs b/codex-rs/execpolicy/src/amend.rs
--- a/codex-rs/execpolicy/src/amend.rs
+++ b/codex-rs/execpolicy/src/amend.rs
@@ -1,4 +1,5 @@
use std::fs::OpenOptions;
+use std::os::unix::io::AsRawFd;
use std::io::Read;
use std::io::Seek;
use std::io::SeekFrom;
@@ -100,10 +101,14 @@
path: policy_path.to_path_buf(),
source,
})?;
- file.lock().map_err(|source| AmendError::LockPolicyFile {
- path: policy_path.to_path_buf(),
- source,
- })?;
+ // FIXME: Use file.lock() when Rust 1.91 is available
+ let ret = unsafe { libc::flock(file.as_raw_fd(), libc::LOCK_EX) };
+ if ret != 0 {
+ return Err(AmendError::LockPolicyFile {
+ path: policy_path.to_path_buf(),
+ source: std::io::Error::last_os_error(),
+ });
+ }
let len = file
.metadata()

View File

@@ -3447,6 +3447,99 @@
(crate-source "codex" "0.2.0"
"0g22dvnqq4nkdx1bn91x0nr072qmak34b5l98yivxb2wzkpy32cm"))
(define rust-codex-api-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-app-server-protocol-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-apply-patch-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-arg0-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-async-utils-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-client-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-common-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-core-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-execpolicy-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-experimental-api-macros-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-file-search-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-git-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-keyring-store-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-linux-sandbox-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-lmstudio-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-login-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-mcp-server-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-ollama-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-otel-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-protocol-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-rmcp-client-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-state-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-utils-absolute-path-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-utils-cache-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-utils-home-dir-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-utils-image-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-utils-json-to-toml-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-utils-pty-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-utils-readiness-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-utils-string-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codex-windows-sandbox-0.0.0.785c0c43
package:rust-codex-0.0.0.785c0c43)
(define rust-codspeed-2.10.0
(crate-source "codspeed" "2.10.0"
"1x9anwlfzlfby794d5fcvp214bj8bp29br8pkksxwb7834djja6j"))
@@ -18384,11 +18477,6 @@
(crate-source "seq_io" "0.3.4"
"1pkasxcf25p1cf2w99a4flhjjaicg4rs14w5g8fkrs0fafg5a0qk"))
(define rust-sequoia-autocrypt-0.25.1
(crate-source "sequoia-autocrypt" "0.25.1"
"0ns121ggmx690m8czhc7zbb7rwz0jjv3l5gw4igs6mn1hznc0kz2"
#:snippet '(delete-file-recursively "tests")))
(define rust-sequoia-autocrypt-0.26.0
(crate-source "sequoia-autocrypt" "0.26.0"
"12wjwv5bsbwjqf25zdkfilnlmgw3jj8y3j1nbm83x6jqr3qmzmhi"
@@ -31313,6 +31401,729 @@
rust-zerovec-0.11.5
rust-zerovec-derive-0.11.2
rust-zmij-1.0.12))
(rust-codex-0.0.0.785c0c43 =>
(list rust-inflector-0.11.4
rust-adler2-2.0.1
rust-aes-0.8.4
rust-ahash-0.8.12
rust-aho-corasick-1.1.4
rust-allocative-0.3.4
rust-allocative-derive-0.3.3
rust-allocator-api2-0.2.21
rust-android-system-properties-0.1.5
rust-annotate-snippets-0.9.2
rust-anstream-0.6.21
rust-anstyle-1.0.13
rust-anstyle-parse-0.2.7
rust-anstyle-query-1.1.5
rust-anstyle-wincon-3.0.11
rust-anyhow-1.0.100
rust-arbitrary-1.4.2
rust-arc-swap-1.8.0
rust-ascii-1.1.0
rust-ascii-canvas-3.0.0
rust-assert-json-diff-2.0.2
rust-assert-cmd-2.1.2
rust-assert-matches-1.5.0
rust-async-broadcast-0.7.2
rust-async-channel-2.5.0
rust-async-executor-1.13.3
rust-async-fs-2.2.0
rust-async-io-2.6.0
rust-async-lock-3.4.2
rust-async-process-2.5.0
rust-async-recursion-1.1.1
rust-async-signal-0.2.13
rust-async-stream-0.3.6
rust-async-stream-impl-0.3.6
rust-async-task-4.7.1
rust-async-trait-0.1.89
rust-atoi-2.0.0
rust-atomic-waker-1.1.2
rust-autocfg-1.5.0
rust-axum-0.8.8
rust-axum-core-0.5.6
rust-base64-0.22.1
rust-base64ct-1.8.3
rust-beef-0.5.2
rust-bit-set-0.5.3
rust-bit-vec-0.6.3
rust-bitflags-1.3.2
rust-bitflags-2.10.0
rust-block-buffer-0.10.4
rust-block-padding-0.3.3
rust-block2-0.6.2
rust-blocking-1.6.2
rust-bstr-1.12.1
rust-bumpalo-3.19.1
rust-bytemuck-1.25.0
rust-byteorder-1.5.0
rust-byteorder-lite-0.1.0
rust-bytes-1.11.1
rust-bzip2-0.5.2
rust-bzip2-sys-0.1.13+1.0.8
rust-cbc-0.1.2
rust-cc-1.2.55
rust-cesu8-1.1.0
rust-cfg-if-1.0.4
rust-cfg-aliases-0.1.1
rust-cfg-aliases-0.2.1
rust-chardetng-0.1.17
rust-chrono-0.4.43
rust-chunked-transfer-1.5.0
rust-cipher-0.4.4
rust-clap-4.5.56
rust-clap-builder-4.5.56
rust-clap-derive-4.5.55
rust-clap-lex-0.7.7
rust-clipboard-win-5.4.1
rust-cmp-any-0.8.1
rust-colorchoice-1.0.4
rust-combine-4.6.7
rust-concurrent-queue-2.5.0
rust-const-hex-1.17.0
rust-const-oid-0.9.6
rust-constant-time-eq-0.3.1
rust-convert-case-0.6.0
rust-core-foundation-0.10.1
rust-core-foundation-0.9.4
rust-core-foundation-sys-0.8.7
rust-cpufeatures-0.2.17
rust-crc-3.4.0
rust-crc-catalog-2.4.0
rust-crc32fast-1.5.0
rust-critical-section-1.2.0
rust-crossbeam-channel-0.5.15
rust-crossbeam-deque-0.8.6
rust-crossbeam-epoch-0.9.18
rust-crossbeam-queue-0.3.12
rust-crossbeam-utils-0.8.21
rust-crunchy-0.2.4
rust-crypto-common-0.1.7
rust-ctor-0.1.26
rust-ctor-0.6.3
rust-ctor-proc-macro-0.0.7
rust-dtor-0.1.1
rust-dtor-proc-macro-0.0.6
rust-darling-0.21.3
rust-darling-0.23.0
rust-darling-core-0.21.3
rust-darling-core-0.23.0
rust-darling-macro-0.21.3
rust-darling-macro-0.23.0
rust-data-encoding-2.10.0
rust-dbus-0.9.10
rust-dbus-secret-service-4.1.0
rust-deadpool-0.12.3
rust-deadpool-runtime-0.1.4
rust-deflate64-0.1.10
rust-debugserver-types-0.5.0
rust-der-0.7.10
rust-deranged-0.5.5
rust-derivative-2.2.0
rust-derive-arbitrary-1.4.2
rust-derive-more-1.0.0
rust-derive-more-impl-1.0.0
rust-diff-0.1.13
rust-difflib-0.4.0
rust-digest-0.10.7
rust-dirs-6.0.0
rust-dirs-next-2.0.0
rust-dirs-sys-0.5.0
rust-dirs-sys-next-0.1.2
rust-dispatch2-0.3.0
rust-display-container-0.9.0
rust-displaydoc-0.2.5
rust-dotenvy-0.15.7
rust-downcast-rs-1.2.1
rust-dunce-1.0.5
rust-dupe-0.9.1
rust-dupe-derive-0.9.1
rust-dyn-clone-1.0.20
rust-either-1.15.0
rust-ena-0.14.3
rust-encoding-rs-0.8.35
rust-endi-1.1.1
rust-endian-type-0.1.2
rust-enumflags2-0.7.12
rust-enumflags2-derive-0.7.12
rust-env-flags-0.1.1
rust-env-filter-0.1.4
rust-env-home-0.1.0
rust-env-logger-0.11.8
rust-etcetera-0.8.0
rust-equivalent-1.0.2
rust-erased-serde-0.3.31
rust-errno-0.3.14
rust-error-code-3.3.2
rust-event-listener-5.4.1
rust-event-listener-strategy-0.5.4
rust-eventsource-stream-0.2.3
rust-fastrand-2.3.0
rust-fax-0.2.6
rust-fax-derive-0.2.0
rust-fd-lock-4.0.4
rust-fdeflate-0.3.7
rust-filedescriptor-0.8.3
rust-find-msvc-tools-0.1.9
rust-fixed-decimal-0.7.1
rust-fixedbitset-0.4.2
rust-flate2-1.1.8
rust-float-cmp-0.10.0
rust-flume-0.11.1
rust-fnv-1.0.7
rust-foldhash-0.1.5
rust-foldhash-0.2.0
rust-foreign-types-0.3.2
rust-foreign-types-shared-0.1.1
rust-form-urlencoded-1.2.2
rust-fsevent-sys-4.1.0
rust-futures-0.3.31
rust-futures-channel-0.3.31
rust-futures-core-0.3.31
rust-futures-executor-0.3.31
rust-futures-io-0.3.31
rust-futures-intrusive-0.5.0
rust-futures-lite-2.6.1
rust-futures-macro-0.3.31
rust-futures-sink-0.3.31
rust-futures-task-0.3.31
rust-futures-util-0.3.31
rust-fxhash-0.2.1
rust-generic-array-0.14.7
rust-getrandom-0.2.17
rust-getrandom-0.3.4
rust-globset-0.4.18
rust-h2-0.4.13
rust-half-2.7.1
rust-hashbrown-0.12.3
rust-hashbrown-0.14.5
rust-hashbrown-0.15.5
rust-hashbrown-0.16.1
rust-hashlink-0.10.0
rust-heck-0.5.0
rust-hermit-abi-0.5.2
rust-hex-0.4.3
rust-hkdf-0.12.4
rust-hmac-0.12.1
rust-home-0.5.12
rust-http-1.4.0
rust-http-body-1.0.1
rust-http-body-util-0.1.3
rust-httparse-1.10.1
rust-httpdate-1.0.3
rust-hyper-1.8.1
rust-hyper-rustls-0.27.7
rust-hyper-timeout-0.5.2
rust-hyper-tls-0.6.0
rust-hyper-util-0.1.19
rust-iana-time-zone-0.1.65
rust-iana-time-zone-haiku-0.1.2
rust-icu-collections-2.1.1
rust-icu-decimal-2.1.1
rust-icu-decimal-data-2.1.1
rust-icu-locale-2.1.1
rust-icu-locale-core-2.1.1
rust-icu-locale-data-2.1.2
rust-icu-normalizer-2.1.1
rust-icu-normalizer-data-2.1.1
rust-icu-properties-2.1.2
rust-icu-properties-data-2.1.2
rust-icu-provider-2.1.1
rust-ident-case-1.0.1
rust-idna-1.1.0
rust-idna-adapter-1.2.1
rust-ignore-0.4.25
rust-image-0.25.9
rust-include-dir-0.7.4
rust-include-dir-macros-0.7.4
rust-indenter-0.3.4
rust-indexmap-1.9.3
rust-indexmap-2.13.0
rust-indoc-2.0.7
rust-inotify-0.11.0
rust-inotify-sys-0.1.5
rust-inout-0.1.4
rust-inventory-0.3.21
rust-ipnet-2.11.0
rust-iri-string-0.7.10
rust-is-terminal-0.4.17
rust-is-ci-1.2.0
rust-is-terminal-polyfill-1.70.2
rust-itertools-0.10.5
rust-itertools-0.13.0
rust-itertools-0.14.0
rust-itoa-1.0.17
rust-jiff-0.2.18
rust-jiff-static-0.2.18
rust-jni-0.21.1
rust-jni-sys-0.3.0
rust-jobserver-0.1.34
rust-js-sys-0.3.85
rust-keyring-3.6.3
rust-kqueue-1.1.1
rust-kqueue-sys-1.0.4
rust-lalrpop-0.19.12
rust-lalrpop-util-0.19.12
rust-landlock-0.4.4
rust-lazy-static-1.5.0
rust-libc-0.2.180
rust-libdbus-sys-0.2.7
rust-libredox-0.1.12
rust-libm-0.2.16
rust-libsqlite3-sys-0.30.1
rust-linux-keyutils-0.2.4
rust-linux-raw-sys-0.11.0
rust-litemap-0.8.1
rust-lock-api-0.4.14
rust-log-0.4.29
rust-logos-0.12.1
rust-logos-derive-0.12.1
rust-lru-0.16.3
rust-lru-slab-0.1.2
rust-lsp-types-0.94.1
rust-lzma-rs-0.3.0
rust-lzma-sys-0.1.20
rust-maplit-1.0.2
rust-matchers-0.2.0
rust-matchit-0.8.4
rust-md-5-0.10.6
rust-memchr-2.7.6
rust-memoffset-0.6.5
rust-memoffset-0.9.1
rust-mime-0.3.17
rust-mime-guess-2.0.5
rust-minimal-lexical-0.2.1
rust-miniz-oxide-0.8.9
rust-mio-1.1.1
rust-moxcms-0.7.11
rust-multimap-0.10.1
rust-native-tls-0.2.14
rust-ndk-context-0.1.1
rust-new-debug-unreachable-1.0.6
rust-nibble-vec-0.1.0
rust-nix-0.28.0
rust-nix-0.29.0
rust-nix-0.30.1
rust-nom-7.1.3
rust-normalize-line-endings-0.3.0
rust-notify-8.2.0
rust-notify-types-2.1.0
rust-nu-ansi-term-0.50.3
rust-nucleo-0.5.0.4253de9f
rust-nucleo-matcher-0.3.1
rust-num-0.4.3
rust-num-bigint-0.4.6
rust-num-bigint-dig-0.8.6
rust-num-complex-0.4.6
rust-num-conv-0.2.0
rust-num-integer-0.1.46
rust-num-iter-0.1.45
rust-num-rational-0.4.2
rust-num-traits-0.2.19
rust-num-cpus-1.17.0
rust-num-threads-0.1.7
rust-oauth2-5.0.0
rust-objc2-0.6.3
rust-objc2-cloud-kit-0.3.2
rust-objc2-core-data-0.3.2
rust-objc2-core-foundation-0.3.2
rust-objc2-core-graphics-0.3.2
rust-objc2-core-image-0.3.2
rust-objc2-core-location-0.3.2
rust-objc2-core-text-0.3.2
rust-objc2-encode-4.1.0
rust-objc2-foundation-0.3.2
rust-objc2-io-surface-0.3.2
rust-objc2-quartz-core-0.3.2
rust-objc2-ui-kit-0.3.2
rust-objc2-user-notifications-0.3.2
rust-once-cell-1.21.3
rust-once-cell-polyfill-1.70.2
rust-openssl-0.10.75
rust-openssl-macros-0.1.1
rust-openssl-probe-0.1.6
rust-openssl-probe-0.2.1
rust-openssl-src-300.5.5+3.5.5
rust-openssl-sys-0.9.111
rust-opentelemetry-0.31.0
rust-opentelemetry-appender-tracing-0.31.1
rust-opentelemetry-http-0.31.0
rust-opentelemetry-otlp-0.31.0
rust-opentelemetry-proto-0.31.0
rust-opentelemetry-semantic-conventions-0.31.0
rust-opentelemetry-sdk-0.31.0
rust-option-ext-0.2.0
rust-ordered-stream-0.2.0
rust-os-info-3.14.0
rust-owo-colors-4.2.3
rust-parking-2.2.1
rust-parking-lot-0.12.5
rust-parking-lot-core-0.9.12
rust-paste-1.0.15
rust-pastey-0.2.1
rust-path-absolutize-3.1.1
rust-path-dedot-3.1.1
rust-pbkdf2-0.12.2
rust-pem-rfc7468-0.7.0
rust-percent-encoding-2.3.2
rust-petgraph-0.6.5
rust-phf-shared-0.11.3
rust-pin-project-1.1.10
rust-pin-project-internal-1.1.10
rust-pin-project-lite-0.2.16
rust-pin-utils-0.1.0
rust-piper-0.2.4
rust-pkg-config-0.3.32
rust-pkcs1-0.7.5
rust-pkcs8-0.10.2
rust-png-0.18.0
rust-polling-3.11.0
rust-portable-atomic-1.13.1
rust-portable-atomic-util-0.2.5
rust-portable-pty-0.9.0
rust-potential-utf-0.1.4
rust-powerfmt-0.2.0
rust-ppv-lite86-0.2.21
rust-precomputed-hash-0.1.1
rust-predicates-3.1.3
rust-predicates-core-1.0.9
rust-predicates-tree-1.0.12
rust-pretty-assertions-1.4.1
rust-proc-macro-crate-3.4.0
rust-proc-macro2-1.0.106
rust-process-wrap-9.0.1
rust-proptest-1.9.0
rust-prost-0.14.3
rust-prost-derive-0.14.3
rust-pxfm-0.1.27
rust-quick-error-2.0.1
rust-quinn-0.11.9
rust-quinn-proto-0.11.13
rust-quinn-udp-0.5.14
rust-quote-1.0.44
rust-r-efi-5.3.0
rust-radix-trie-0.2.1
rust-rand-0.8.5
rust-rand-0.9.2
rust-rand-chacha-0.3.1
rust-rand-chacha-0.9.0
rust-rand-core-0.6.4
rust-rand-core-0.9.5
rust-rand-xorshift-0.4.0
rust-rayon-1.11.0
rust-rayon-core-1.13.0
rust-redox-syscall-0.5.18
rust-redox-syscall-0.7.0
rust-redox-users-0.4.6
rust-redox-users-0.5.2
rust-ref-cast-1.0.25
rust-ref-cast-impl-1.0.25
rust-regex-1.12.2
rust-regex-automata-0.4.13
rust-regex-lite-0.1.8
rust-regex-syntax-0.6.29
rust-regex-syntax-0.8.8
rust-reqwest-0.12.28
rust-ring-0.17.14
rust-rmcp-0.12.0
rust-rmcp-macros-0.12.0
rust-rsa-0.9.10
rust-runfiles-0.1.0.b56cbaa8
rust-rustc-hash-2.1.1
rust-rustix-1.1.3
rust-rustls-0.23.36
rust-rustls-native-certs-0.8.3
rust-rustls-pki-types-1.14.0
rust-rustls-webpki-0.103.9
rust-rustversion-1.0.22
rust-rustyline-14.0.0
rust-ryu-1.0.22
rust-same-file-1.0.6
rust-scc-2.4.0
rust-schannel-0.1.28
rust-schemafy-0.5.2
rust-schemafy-core-0.5.2
rust-schemafy-lib-0.5.2
rust-schemars-0.8.22
rust-schemars-0.9.0
rust-schemars-1.2.1
rust-schemars-derive-0.8.22
rust-schemars-derive-1.2.1
rust-scopeguard-1.2.0
rust-sdd-3.0.10
rust-seccompiler-0.5.0
rust-secret-service-4.0.0
rust-security-framework-2.11.1
rust-security-framework-3.5.1
rust-security-framework-sys-2.15.0
rust-semver-1.0.27
rust-serde-1.0.228
rust-serde-core-1.0.228
rust-serde-derive-1.0.228
rust-serde-derive-internals-0.29.1
rust-serde-json-1.0.149
rust-serde-path-to-error-0.1.20
rust-serde-repr-0.1.20
rust-serde-spanned-1.0.4
rust-serde-urlencoded-0.7.1
rust-serde-with-3.16.1
rust-serde-with-macros-3.16.1
rust-serde-yaml-0.9.34+deprecated
rust-serial-test-3.3.1
rust-serial-test-derive-3.3.1
rust-serial2-0.2.33
rust-sha1-0.10.6
rust-sha1-smol-1.0.1
rust-sha2-0.10.9
rust-sharded-slab-0.1.7
rust-shared-library-0.1.9
rust-shell-words-1.1.1
rust-shlex-1.3.0
rust-signal-hook-registry-1.4.8
rust-signature-2.2.0
rust-simd-adler32-0.3.8
rust-similar-2.7.0
rust-siphasher-1.0.2
rust-slab-0.4.12
rust-smallvec-1.15.1
rust-socket2-0.6.2
rust-spin-0.9.8
rust-spki-0.7.3
rust-sqlx-0.8.6
rust-sqlx-core-0.8.6
rust-sqlx-macros-0.8.6
rust-sqlx-macros-core-0.8.6
rust-sqlx-mysql-0.8.6
rust-sqlx-postgres-0.8.6
rust-sqlx-sqlite-0.8.6
rust-sse-stream-0.2.1
rust-stable-deref-trait-1.2.1
rust-starlark-0.13.0
rust-starlark-derive-0.13.0
rust-starlark-map-0.13.0
rust-starlark-syntax-0.13.0
rust-static-assertions-1.1.0
rust-streaming-iterator-0.1.9
rust-string-cache-0.8.9
rust-stringprep-0.1.5
rust-strsim-0.10.0
rust-strsim-0.11.1
rust-strum-0.27.2
rust-strum-macros-0.27.2
rust-subtle-2.6.1
rust-supports-color-2.1.0
rust-supports-color-3.0.2
rust-syn-1.0.109
rust-syn-2.0.114
rust-sync-wrapper-1.0.2
rust-synstructure-0.13.2
rust-sys-locale-0.3.2
rust-system-configuration-0.6.1
rust-system-configuration-sys-0.6.0
rust-tempfile-3.24.0
rust-term-0.7.0
rust-termcolor-1.4.1
rust-terminal-size-0.4.3
rust-termtree-0.5.1
rust-test-case-3.3.1
rust-test-case-core-3.3.1
rust-test-case-macros-3.3.1
rust-test-log-0.2.19
rust-test-log-macros-0.2.19
rust-textwrap-0.11.0
rust-thiserror-1.0.69
rust-thiserror-2.0.18
rust-thiserror-impl-1.0.69
rust-thiserror-impl-2.0.18
rust-thread-local-1.1.9
rust-tiff-0.10.3
rust-time-0.3.46
rust-time-core-0.1.8
rust-time-macros-0.2.26
rust-tiny-keccak-2.0.2
rust-tiny-http-0.12.0
rust-tinystr-0.8.2
rust-tinyvec-1.10.0
rust-tinyvec-macros-0.1.1
rust-tokio-1.49.0
rust-tokio-macros-2.6.0
rust-tokio-native-tls-0.3.1
rust-tokio-rustls-0.26.4
rust-tokio-stream-0.1.18
rust-tokio-test-0.4.5
rust-tokio-tungstenite-0.28.0.2ae536b0
rust-tokio-util-0.7.18
rust-toml-0.9.11+spec-1.1.0
rust-toml-0.5.11
rust-toml-datetime-0.7.5+spec-1.1.0
rust-toml-edit-0.23.10+spec-1.0.0
rust-toml-edit-0.24.0+spec-1.1.0
rust-toml-parser-1.0.6+spec-1.1.0
rust-toml-writer-1.0.6+spec-1.1.0
rust-tonic-0.14.3
rust-tonic-prost-0.14.3
rust-tower-0.5.3
rust-tower-http-0.6.8
rust-tower-layer-0.3.3
rust-tower-service-0.3.3
rust-tracing-0.1.44
rust-tracing-core-0.1.36
rust-tracing-attributes-0.1.31
rust-tracing-log-0.2.0
rust-tracing-opentelemetry-0.32.1
rust-tracing-subscriber-0.3.22
rust-tracing-test-0.2.5
rust-tracing-test-macro-0.2.5
rust-tree-sitter-0.25.10
rust-tree-sitter-bash-0.25.1
rust-tree-sitter-language-0.1.7
rust-try-lock-0.2.5
rust-ts-rs-11.1.0
rust-ts-rs-macros-11.1.0
rust-tungstenite-0.28.0.f514de86
rust-typenum-1.19.0
rust-uds-windows-1.1.0
rust-unarray-0.1.4
rust-unicase-2.9.0
rust-unicode-bidi-0.3.18
rust-unicode-ident-1.0.22
rust-unicode-normalization-0.1.25
rust-unicode-properties-0.1.4
rust-unicode-segmentation-1.12.0
rust-unicode-width-0.1.14
rust-unicode-xid-0.2.6
rust-unsafe-libyaml-0.2.11
rust-untrusted-0.9.0
rust-url-2.5.8
rust-urlencoding-2.1.3
rust-utf-8-0.7.6
rust-utf8-iter-1.0.4
rust-utf8parse-0.2.2
rust-uuid-1.20.0
rust-valuable-0.1.1
rust-vcpkg-0.2.15
rust-version-check-0.9.5
rust-wait-timeout-0.2.1
rust-walkdir-2.5.0
rust-want-0.3.1
rust-wasi-0.11.1+wasi-snapshot-preview1
rust-wasip2-1.0.2+wasi-0.2.9
rust-wasite-0.1.0
rust-wasm-bindgen-0.2.108
rust-wasm-bindgen-futures-0.4.58
rust-wasm-bindgen-macro-0.2.108
rust-wasm-bindgen-macro-support-0.2.108
rust-wasm-bindgen-shared-0.2.108
rust-wasm-streams-0.4.2
rust-web-sys-0.3.85
rust-web-time-1.1.0
rust-webbrowser-1.0.6
rust-webpki-roots-0.26.11
rust-webpki-roots-1.0.5
rust-weezl-0.1.12
rust-which-8.0.0
rust-whoami-1.6.1
rust-wildmatch-2.6.1
rust-winapi-0.3.9
rust-winapi-i686-pc-windows-gnu-0.4.0
rust-winapi-util-0.1.11
rust-winapi-x86-64-pc-windows-gnu-0.4.0
rust-windows-0.58.0
rust-windows-0.62.2
rust-windows-collections-0.3.2
rust-windows-core-0.58.0
rust-windows-core-0.62.2
rust-windows-future-0.3.2
rust-windows-implement-0.58.0
rust-windows-implement-0.60.2
rust-windows-interface-0.58.0
rust-windows-interface-0.59.3
rust-windows-link-0.2.1
rust-windows-numerics-0.3.1
rust-windows-registry-0.6.1
rust-windows-result-0.2.0
rust-windows-result-0.4.1
rust-windows-strings-0.1.0
rust-windows-strings-0.5.1
rust-windows-sys-0.45.0
rust-windows-sys-0.48.0
rust-windows-sys-0.52.0
rust-windows-sys-0.59.0
rust-windows-sys-0.60.2
rust-windows-sys-0.61.2
rust-windows-targets-0.42.2
rust-windows-targets-0.48.5
rust-windows-targets-0.52.6
rust-windows-targets-0.53.5
rust-windows-threading-0.2.1
rust-windows-aarch64-gnullvm-0.42.2
rust-windows-aarch64-gnullvm-0.48.5
rust-windows-aarch64-gnullvm-0.52.6
rust-windows-aarch64-gnullvm-0.53.1
rust-windows-aarch64-msvc-0.42.2
rust-windows-aarch64-msvc-0.48.5
rust-windows-aarch64-msvc-0.52.6
rust-windows-aarch64-msvc-0.53.1
rust-windows-i686-gnu-0.42.2
rust-windows-i686-gnu-0.48.5
rust-windows-i686-gnu-0.52.6
rust-windows-i686-gnu-0.53.1
rust-windows-i686-gnullvm-0.52.6
rust-windows-i686-gnullvm-0.53.1
rust-windows-i686-msvc-0.42.2
rust-windows-i686-msvc-0.48.5
rust-windows-i686-msvc-0.52.6
rust-windows-i686-msvc-0.53.1
rust-windows-x86-64-gnu-0.42.2
rust-windows-x86-64-gnu-0.48.5
rust-windows-x86-64-gnu-0.52.6
rust-windows-x86-64-gnu-0.53.1
rust-windows-x86-64-gnullvm-0.42.2
rust-windows-x86-64-gnullvm-0.48.5
rust-windows-x86-64-gnullvm-0.52.6
rust-windows-x86-64-gnullvm-0.53.1
rust-windows-x86-64-msvc-0.42.2
rust-windows-x86-64-msvc-0.48.5
rust-windows-x86-64-msvc-0.52.6
rust-windows-x86-64-msvc-0.53.1
rust-winnow-0.7.14
rust-winreg-0.10.1
rust-winres-0.1.12
rust-winsafe-0.0.19
rust-wiremock-0.6.5
rust-wit-bindgen-0.51.0
rust-writeable-0.6.2
rust-xdg-home-1.3.0
rust-xz2-0.1.7
rust-yansi-1.0.1
rust-yoke-0.8.1
rust-yoke-derive-0.8.1
rust-zbus-4.4.0
rust-zbus-macros-4.4.0
rust-zbus-names-3.0.0
rust-zerocopy-0.8.37
rust-zerocopy-derive-0.8.37
rust-zerofrom-0.1.6
rust-zerofrom-derive-0.1.6
rust-zeroize-1.8.2
rust-zeroize-derive-1.4.3
rust-zerotrie-0.2.3
rust-zerovec-0.11.5
rust-zerovec-derive-0.11.2
rust-zip-2.4.2
rust-zopfli-0.8.3
rust-zstd-0.13.3
rust-zstd-safe-7.2.4
rust-zstd-sys-2.0.16+zstd.1.5.7
rust-zmij-1.0.19
rust-zune-core-0.4.12
rust-zune-core-0.5.1
rust-zune-jpeg-0.4.21
rust-zune-jpeg-0.5.12
rust-zvariant-4.2.0
rust-zvariant-derive-4.2.0
rust-zvariant-utils-2.1.0))
(complgen =>
(list rust-ahash-0.7.8
rust-ahash-0.8.11

View File

@@ -678,3 +678,108 @@ intelligence.")
webview, a tiny cross-platform library to render web-based GUIs as desktop
applications.")
(license license:expat)))))
(define-public rust-codex-0.0.0.785c0c43
(let ((commit "785c0c43df941e6997ff3a9e8a9dd48da2661f20")
(revision "0"))
(hidden-package
(package
(name "rust-codex")
(version (git-version "0.0.0" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/zed-industries/codex")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "0rwj1ykknng39mhzna3fw3rcl3vngynsjdcj1namgkvw91zd9dl7"))
;; TODO: Remove patches when Rust provides stable file locking API.
;; The file_lock feature is tracked at
;; <https://github.com/rust-lang/rust/issues/130994>.
(patches (search-patches "rust-codex-0.98.0-execpolicy-file-lock.patch"
"rust-codex-0.98.0-core-file-lock.patch"
"rust-codex-0.98.0-arg0-file-lock.patch"
"rust-codex-0.98.0-core-remove-self-dep.patch"))))
(build-system cargo-build-system)
(arguments
(list
#:skip-build? #t
#:cargo-package-crates
;; Order matters: dependencies must come before packages that need them
''("codex-async-utils" ; No internal deps
"codex-client" ; No internal deps
"codex-execpolicy" ; No internal deps
"codex-file-search" ; No internal deps
"codex-git" ; No internal deps
"codex-keyring-store" ; No internal deps
"codex-utils-absolute-path" ; No internal deps
"codex-utils-cache" ; No internal deps
"codex-utils-cargo-bin" ; No internal deps
"codex-utils-home-dir" ; No internal deps
"codex-utils-json-to-toml" ; No internal deps
"codex-utils-pty" ; No internal deps
"codex-utils-readiness" ; No internal deps
"codex-utils-string" ; No internal deps
"codex-utils-image" ; Depends on codex-utils-cache
"codex-apply-patch" ; Depends on codex-utils-cargo-bin
"codex-protocol" ; Depends on codex-git, codex-utils-*
"codex-windows-sandbox" ; Depends on codex-utils-absolute-path, codex-protocol
"codex-api" ; Depends on codex-client, codex-protocol
"codex-experimental-api-macros" ; Macro crate (must come before app-server-protocol)
"codex-app-server-protocol" ; Depends on codex-protocol, codex-experimental-api-macros
"codex-rmcp-client" ; Depends on codex-keyring-store, codex-protocol
"codex-otel" ; Depends on codex-app-server-protocol, codex-api
"codex-state" ; Depends on codex-protocol, codex-otel
"codex-core" ; Depends on many packages above
"codex-linux-sandbox" ; Depends on codex-core, codex-utils-absolute-path
"codex-arg0" ; Depends on codex-apply-patch, codex-core, codex-linux-sandbox
"codex-lmstudio" ; Depends on codex-core
"codex-login" ; Depends on codex-core
"codex-ollama" ; Depends on codex-core
"codex-common" ; Depends on codex-core, codex-lmstudio, codex-ollama
"codex-mcp-server") ; Depends on codex-core, codex-common
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'chdir-to-workspace
(lambda _
(chdir "codex-rs")))
(add-after 'chdir-to-workspace 'patch-git-deps-to-vendor
(lambda _
;; Avoid git fetches in offline builds by pointing patches
;; at the vendored sources provided via cargo-inputs.
(substitute* "Cargo.toml"
(("crossterm = \\{ git = [^}]+\\}")
"crossterm = { version = \"0.28.1\" }")
(("ratatui = \\{ git = [^}]+\\}")
"ratatui = { version = \"0.29.0\" }")
(("tokio-tungstenite = \\{ git = [^}]+\\}")
"tokio-tungstenite = { version = \"0.28.0\" }")
;; Point nucleo git dependency to vendored checkout.
(("nucleo = \\{ git = [^}]+\\}")
"nucleo = { version = \"0.5.0\" }")
;; Point runfiles git dependency to vendored checkout.
(("runfiles = \\{ git = [^}]+\\}")
"runfiles = { version = \"0.1.0\" }"))))
(add-after 'chdir-to-workspace 'add-version-to-workspace-deps
(lambda _
;; cargo package requires all dependencies to have versions.
;; Add version = "0.0.0" to internal path dependencies.
(let ((cargo-files (find-files "." "^Cargo\\.toml$")))
(substitute* cargo-files
;; Handle inline deps: name = { path = "..." }
(("(codex-[a-z0-9-]+) = \\{ path = " all name)
(string-append name " = { version = \"0.0.0\", path = "))
;; Handle inline deps with package: name = { package = "...", path = "..." }
(("(codex-[a-z0-9-]+) = \\{ package = " all name)
(string-append name " = { version = \"0.0.0\", package = "))
;; Handle section deps: [dependencies.X] with path = "..."
(("^(path = \"\\.\\./[^\"]*\")" all path-line)
(string-append path-line "\nversion = \"0.0.0\"")))))))))
(inputs (cargo-inputs 'rust-codex-0.0.0.785c0c43))
(home-page "https://github.com/zed-industries/codex")
(synopsis "Zed Codex workspace crates")
(description
"This package provides the workspace crates for the Zed Codex CLI
and runtime for AI-assisted coding.")
(license license:asl2.0)))))