mirror of
https://github.com/storytold/photocraft.git
synced 2026-10-25 10:27:07 -06:00
No textual conflicts, but the merge did not compile. main's 589941a5 added a
second AtomicFs test impl using copy_permissions, while this branch renames that
trait method to copy_metadata. Git merged both cleanly because they sit in
different parts of the file, giving a tree whose trait and impl disagree:
E0407, E0046 and E0599 in photocraft-format's lib test. That one error is what
failed all four CI jobs.
main's new impl is renamed to copy_metadata to match.
Verified with --features heif, which is what CI builds with and what I had
previously failed to pass locally: clippy --workspace --all-targets --locked
--features heif -- -D warnings is clean, and the workspace tests pass.
50 lines
2.0 KiB
TOML
50 lines
2.0 KiB
TOML
[package]
|
|
name = "photocraft-format"
|
|
description = "Native .pcraft document bundle: manifest + content-addressed zstd tiles"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
rust-version.workspace = true
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dependencies]
|
|
photocraft-geom = { workspace = true }
|
|
photocraft-color = { workspace = true }
|
|
photocraft-raster = { workspace = true }
|
|
photocraft-doc = { workspace = true }
|
|
photocraft-codecs = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true, features = ["unbounded_depth", "float_roundtrip"] }
|
|
thiserror = { workspace = true }
|
|
flate2 = { workspace = true }
|
|
# Same IEEE CRC-32 the ZIP container needs; already in Cargo.lock through flate2.
|
|
crc32fast = "1.5"
|
|
blake3 = { version = "1.8", default-features = false, features = ["pure"] }
|
|
ruzstd = "0.9.1"
|
|
|
|
# Unix directory cleanup uses no-follow descriptor-relative operations; the same
|
|
# dependency provides the plain-fsync fallback on Apple file systems.
|
|
[target.'cfg(unix)'.dependencies]
|
|
rustix = { version = "1.1", default-features = false, features = ["std", "fs"] }
|
|
|
|
# rustix does not expose Apple's directory-search open mode. Only the named
|
|
# constant is used; all descriptor operations remain in safe rustix APIs.
|
|
[target.'cfg(target_vendor = "apple")'.dependencies]
|
|
libc = "0.2"
|
|
|
|
# Replacing a file keeps its ACL (#7073). `fcopyfile(COPYFILE_ACL)` is an `unsafe fn` and
|
|
# `fclonefileat(CLONE_ACL)` is APFS-only; exacl is a safe wrapper over acl_get_file/acl_set_file.
|
|
[target.'cfg(target_os = "macos")'.dependencies]
|
|
exacl = "0.13"
|
|
|
|
# `ReplaceFileW` is how Windows replaces a file without dropping its DACL, named streams
|
|
# (Zone.Identifier, the Mark of the Web) and creation time (#7094, #7096). winsafe's `kernel`
|
|
# feature is a dependency-free safe wrapper; the workspace forbids writing the FFI call here.
|
|
[target.'cfg(windows)'.dependencies]
|
|
winsafe = { version = "0.0.29", features = ["kernel"] }
|
|
|
|
[dev-dependencies]
|
|
proptest = { workspace = true }
|