diff --git a/Cargo.lock b/Cargo.lock index 41cc68a0..6f178b54 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -71,7 +71,7 @@ version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -82,7 +82,7 @@ checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -842,7 +842,7 @@ dependencies = [ "libc", "option-ext", "redox_users", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -881,7 +881,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -1502,6 +1502,15 @@ dependencies = [ "zstd", ] +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + [[package]] name = "filetime" version = "0.2.27" @@ -1679,6 +1688,16 @@ dependencies = [ "version_check", ] +[[package]] +name = "gethostname" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" +dependencies = [ + "rustix", + "windows-link", +] + [[package]] name = "getrandom" version = "0.2.17" @@ -2148,7 +2167,7 @@ checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" dependencies = [ "hermit-abi", "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -2582,7 +2601,7 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -2714,6 +2733,19 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" +[[package]] +name = "png" +version = "0.17.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + [[package]] name = "portable-atomic" version = "1.13.1" @@ -3073,7 +3105,7 @@ dependencies = [ "once_cell", "socket2", "tracing", - "windows-sys 0.60.2", + "windows-sys 0.59.0", ] [[package]] @@ -3379,8 +3411,8 @@ dependencies = [ [[package]] name = "running-process" -version = "4.6.4" -source = "git+https://github.com/zackees/running-process.git?rev=59556ebbb779a66a95811c75bb1533cf3db1c525#59556ebbb779a66a95811c75bb1533cf3db1c525" +version = "4.8.1" +source = "git+https://github.com/zackees/running-process.git?rev=359b4e3d92660e54eb9b16b6e83de8ce26932ff8#359b4e3d92660e54eb9b16b6e83de8ce26932ff8" dependencies = [ "anyhow", "blake3", @@ -3389,6 +3421,7 @@ dependencies = [ "getrandom 0.4.2", "interprocess", "libc", + "png", "prost", "prost-build", "prost-types", @@ -3402,6 +3435,7 @@ dependencies = [ "toml 0.8.23", "winapi", "windows-sys 0.59.0", + "x11rb", ] [[package]] @@ -3443,7 +3477,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -3725,7 +3759,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -3879,7 +3913,7 @@ dependencies = [ "getrandom 0.4.2", "once_cell", "rustix", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -4628,7 +4662,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -4644,7 +4678,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" dependencies = [ "windows-core 0.52.0", - "windows-targets 0.52.6", + "windows-targets", ] [[package]] @@ -4674,7 +4708,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.6", + "windows-targets", ] [[package]] @@ -4763,7 +4797,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.6", + "windows-targets", ] [[package]] @@ -4772,16 +4806,7 @@ version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" -dependencies = [ - "windows-targets 0.53.5", + "windows-targets", ] [[package]] @@ -4799,31 +4824,14 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.53.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" -dependencies = [ - "windows-link", - "windows_aarch64_gnullvm 0.53.1", - "windows_aarch64_msvc 0.53.1", - "windows_i686_gnu 0.53.1", - "windows_i686_gnullvm 0.53.1", - "windows_i686_msvc 0.53.1", - "windows_x86_64_gnu 0.53.1", - "windows_x86_64_gnullvm 0.53.1", - "windows_x86_64_msvc 0.53.1", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", ] [[package]] @@ -4841,96 +4849,48 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" - [[package]] name = "windows_i686_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" -[[package]] -name = "windows_i686_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" - [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" -[[package]] -name = "windows_i686_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" - [[package]] name = "windows_i686_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" -[[package]] -name = "windows_i686_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" -[[package]] -name = "windows_x86_64_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" - [[package]] name = "winnow" version = "0.7.15" @@ -5052,6 +5012,23 @@ dependencies = [ "tap", ] +[[package]] +name = "x11rb" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" +dependencies = [ + "gethostname", + "rustix", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" + [[package]] name = "xattr" version = "1.6.1" @@ -5096,8 +5073,8 @@ dependencies = [ [[package]] name = "zccache" -version = "1.12.17" -source = "git+https://github.com/zackees/zccache?rev=5ee292ff61e0f5909e1893916efe3bd963db8032#5ee292ff61e0f5909e1893916efe3bd963db8032" +version = "1.13.1" +source = "git+https://github.com/zackees/zccache?rev=8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e#8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e" dependencies = [ "arc-swap", "bincode", @@ -5150,12 +5127,13 @@ dependencies = [ [[package]] name = "zccache-artifact" -version = "1.12.17" -source = "git+https://github.com/zackees/zccache?rev=5ee292ff61e0f5909e1893916efe3bd963db8032#5ee292ff61e0f5909e1893916efe3bd963db8032" +version = "1.13.1" +source = "git+https://github.com/zackees/zccache?rev=8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e#8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e" dependencies = [ "bincode", "blake3", "dashmap", + "fs2", "prost", "rayon", "redb", @@ -5172,8 +5150,8 @@ dependencies = [ [[package]] name = "zccache-audit" -version = "1.12.17" -source = "git+https://github.com/zackees/zccache?rev=5ee292ff61e0f5909e1893916efe3bd963db8032#5ee292ff61e0f5909e1893916efe3bd963db8032" +version = "1.13.1" +source = "git+https://github.com/zackees/zccache?rev=8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e#8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e" dependencies = [ "serde", "serde_json", @@ -5182,16 +5160,16 @@ dependencies = [ [[package]] name = "zccache-compile-trace" -version = "1.12.17" -source = "git+https://github.com/zackees/zccache?rev=5ee292ff61e0f5909e1893916efe3bd963db8032#5ee292ff61e0f5909e1893916efe3bd963db8032" +version = "1.13.1" +source = "git+https://github.com/zackees/zccache?rev=8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e#8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e" dependencies = [ "zccache-audit", ] [[package]] name = "zccache-compiler" -version = "1.12.17" -source = "git+https://github.com/zackees/zccache?rev=5ee292ff61e0f5909e1893916efe3bd963db8032#5ee292ff61e0f5909e1893916efe3bd963db8032" +version = "1.13.1" +source = "git+https://github.com/zackees/zccache?rev=8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e#8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e" dependencies = [ "clang", "serde_json", @@ -5202,8 +5180,8 @@ dependencies = [ [[package]] name = "zccache-core" -version = "1.12.17" -source = "git+https://github.com/zackees/zccache?rev=5ee292ff61e0f5909e1893916efe3bd963db8032#5ee292ff61e0f5909e1893916efe3bd963db8032" +version = "1.13.1" +source = "git+https://github.com/zackees/zccache?rev=8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e#8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e" dependencies = [ "crash-handler", "libc", @@ -5216,8 +5194,8 @@ dependencies = [ [[package]] name = "zccache-daemon-core" -version = "1.12.17" -source = "git+https://github.com/zackees/zccache?rev=5ee292ff61e0f5909e1893916efe3bd963db8032#5ee292ff61e0f5909e1893916efe3bd963db8032" +version = "1.13.1" +source = "git+https://github.com/zackees/zccache?rev=8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e#8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e" dependencies = [ "arc-swap", "bincode", @@ -5266,8 +5244,8 @@ dependencies = [ [[package]] name = "zccache-depgraph" -version = "1.12.17" -source = "git+https://github.com/zackees/zccache?rev=5ee292ff61e0f5909e1893916efe3bd963db8032#5ee292ff61e0f5909e1893916efe3bd963db8032" +version = "1.13.1" +source = "git+https://github.com/zackees/zccache?rev=8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e#8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e" dependencies = [ "bincode", "blake3", @@ -5286,8 +5264,8 @@ dependencies = [ [[package]] name = "zccache-fingerprint" -version = "1.12.17" -source = "git+https://github.com/zackees/zccache?rev=5ee292ff61e0f5909e1893916efe3bd963db8032#5ee292ff61e0f5909e1893916efe3bd963db8032" +version = "1.13.1" +source = "git+https://github.com/zackees/zccache?rev=8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e#8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e" dependencies = [ "fs2", "globset", @@ -5304,8 +5282,8 @@ dependencies = [ [[package]] name = "zccache-fscache" -version = "1.12.17" -source = "git+https://github.com/zackees/zccache?rev=5ee292ff61e0f5909e1893916efe3bd963db8032#5ee292ff61e0f5909e1893916efe3bd963db8032" +version = "1.13.1" +source = "git+https://github.com/zackees/zccache?rev=8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e#8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e" dependencies = [ "bincode", "dashmap", @@ -5319,8 +5297,8 @@ dependencies = [ [[package]] name = "zccache-hash" -version = "1.12.17" -source = "git+https://github.com/zackees/zccache?rev=5ee292ff61e0f5909e1893916efe3bd963db8032#5ee292ff61e0f5909e1893916efe3bd963db8032" +version = "1.13.1" +source = "git+https://github.com/zackees/zccache?rev=8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e#8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e" dependencies = [ "blake3", "memmap2", @@ -5329,8 +5307,8 @@ dependencies = [ [[package]] name = "zccache-ipc" -version = "1.12.17" -source = "git+https://github.com/zackees/zccache?rev=5ee292ff61e0f5909e1893916efe3bd963db8032#5ee292ff61e0f5909e1893916efe3bd963db8032" +version = "1.13.1" +source = "git+https://github.com/zackees/zccache?rev=8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e#8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e" dependencies = [ "bytes", "dashmap", @@ -5349,8 +5327,8 @@ dependencies = [ [[package]] name = "zccache-protocol" -version = "1.12.17" -source = "git+https://github.com/zackees/zccache?rev=5ee292ff61e0f5909e1893916efe3bd963db8032#5ee292ff61e0f5909e1893916efe3bd963db8032" +version = "1.13.1" +source = "git+https://github.com/zackees/zccache?rev=8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e#8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e" dependencies = [ "bincode", "bytes", @@ -5366,8 +5344,8 @@ dependencies = [ [[package]] name = "zccache-watcher" -version = "1.12.17" -source = "git+https://github.com/zackees/zccache?rev=5ee292ff61e0f5909e1893916efe3bd963db8032#5ee292ff61e0f5909e1893916efe3bd963db8032" +version = "1.13.1" +source = "git+https://github.com/zackees/zccache?rev=8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e#8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e" dependencies = [ "globset", "jwalk", diff --git a/Cargo.toml b/Cargo.toml index 6102fd93..c0fdbf3d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -161,7 +161,7 @@ owo-colors = "4" # duplicate symbol: rp_native_process_start_public`, …). Keep this rev in # lockstep with the `rev` in zccache's workspace Cargo.toml when repinning # zccache. -running-process = { version = "4.6.0", git = "https://github.com/zackees/running-process.git", rev = "59556ebbb779a66a95811c75bb1533cf3db1c525", default-features = false, features = ["client-async"] } +running-process = { version = "4.8.1", git = "https://github.com/zackees/running-process.git", rev = "359b4e3d92660e54eb9b16b6e83de8ce26932ff8", default-features = false, features = ["client-async"] } [profile.dev] debug = "line-tables-only" diff --git a/crates/fbuild-build-arm/Cargo.toml b/crates/fbuild-build-arm/Cargo.toml index e8818f9f..2ec73cf5 100644 --- a/crates/fbuild-build-arm/Cargo.toml +++ b/crates/fbuild-build-arm/Cargo.toml @@ -34,7 +34,7 @@ tar = { workspace = true } zip = { workspace = true } tree-sitter = { workspace = true } tree-sitter-cpp = { workspace = true } -zccache = { git = "https://github.com/zackees/zccache", rev = "5ee292ff61e0f5909e1893916efe3bd963db8032" } +zccache = { git = "https://github.com/zackees/zccache", rev = "8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e" } [dev-dependencies] filetime = { workspace = true } diff --git a/crates/fbuild-build-engine/Cargo.toml b/crates/fbuild-build-engine/Cargo.toml index c3d79a60..d38354df 100644 --- a/crates/fbuild-build-engine/Cargo.toml +++ b/crates/fbuild-build-engine/Cargo.toml @@ -34,7 +34,7 @@ tar = { workspace = true } zip = { workspace = true } tree-sitter = { workspace = true } tree-sitter-cpp = { workspace = true } -zccache = { git = "https://github.com/zackees/zccache", rev = "5ee292ff61e0f5909e1893916efe3bd963db8032" } +zccache = { git = "https://github.com/zackees/zccache", rev = "8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e" } [dev-dependencies] filetime = { workspace = true } diff --git a/crates/fbuild-build-esp/Cargo.toml b/crates/fbuild-build-esp/Cargo.toml index c4353e7c..07a76cdd 100644 --- a/crates/fbuild-build-esp/Cargo.toml +++ b/crates/fbuild-build-esp/Cargo.toml @@ -34,7 +34,7 @@ tar = { workspace = true } zip = { workspace = true } tree-sitter = { workspace = true } tree-sitter-cpp = { workspace = true } -zccache = { git = "https://github.com/zackees/zccache", rev = "5ee292ff61e0f5909e1893916efe3bd963db8032" } +zccache = { git = "https://github.com/zackees/zccache", rev = "8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e" } [dev-dependencies] filetime = { workspace = true } diff --git a/crates/fbuild-build-mcu/Cargo.toml b/crates/fbuild-build-mcu/Cargo.toml index a5309ffa..181fa8e9 100644 --- a/crates/fbuild-build-mcu/Cargo.toml +++ b/crates/fbuild-build-mcu/Cargo.toml @@ -34,7 +34,7 @@ tar = { workspace = true } zip = { workspace = true } tree-sitter = { workspace = true } tree-sitter-cpp = { workspace = true } -zccache = { git = "https://github.com/zackees/zccache", rev = "5ee292ff61e0f5909e1893916efe3bd963db8032" } +zccache = { git = "https://github.com/zackees/zccache", rev = "8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e" } [dev-dependencies] filetime = { workspace = true } diff --git a/crates/fbuild-build/Cargo.toml b/crates/fbuild-build/Cargo.toml index 876b7164..9aee3bb4 100644 --- a/crates/fbuild-build/Cargo.toml +++ b/crates/fbuild-build/Cargo.toml @@ -56,7 +56,7 @@ tree-sitter-cpp = { workspace = true } # # `running-process` in the workspace root must be pinned to the SAME git rev # zccache uses, or its unmangled `rp_*_public` C symbols get linked twice. -zccache = { git = "https://github.com/zackees/zccache", rev = "5ee292ff61e0f5909e1893916efe3bd963db8032" } +zccache = { git = "https://github.com/zackees/zccache", rev = "8cf6dd0ef5d6f2ff2980039290b9e498fb5a6b0e" } [dev-dependencies] filetime = { workspace = true } diff --git a/crates/fbuild-core/tests/README.md b/crates/fbuild-core/tests/README.md new file mode 100644 index 00000000..d8cf7f78 --- /dev/null +++ b/crates/fbuild-core/tests/README.md @@ -0,0 +1,10 @@ +# fbuild-core integration tests + +- **`dep_identity.rs`** -- regression guard for FastLED/fbuild#1239. fbuild + embeds zccache and also depends directly on `running-process`, whose + unmangled `rp_*_public` native symbols mean that resolving two package + identities would link two copies of those symbols. The test parses the + workspace `Cargo.lock` and fails if more than one `running-process` + package identity/source/revision is resolved, and mechanically checks + that the workspace `Cargo.toml` pin matches the locked revision (i.e. + fbuild's direct pin equals the revision zccache resolved transitively). diff --git a/crates/fbuild-core/tests/dep_identity.rs b/crates/fbuild-core/tests/dep_identity.rs new file mode 100644 index 00000000..bdfa12a3 --- /dev/null +++ b/crates/fbuild-core/tests/dep_identity.rs @@ -0,0 +1,91 @@ +//! Regression guard for FastLED/fbuild#1239: the workspace must resolve +//! exactly ONE `running-process` package identity. +//! +//! fbuild depends on `running-process` directly AND transitively through +//! the embedded zccache. `running-process` exports unmangled +//! `rp_*_public` native symbols, so two resolved identities (two +//! versions, two sources, or two revisions) would link two copies of +//! those symbols into fbuild. The dependency cascade discipline is: +//! fbuild's direct git pin must be byte-identical to the pin inside the +//! zccache release fbuild embeds — this test fails the build when the +//! pins drift apart. + +use std::path::Path; + +fn workspace_root() -> &'static Path { + // crates/fbuild-core -> workspace root. + Path::new(env!("CARGO_MANIFEST_DIR")) + .parent() + .and_then(Path::parent) + .expect("workspace root above crates/fbuild-core") +} + +/// Extract every `[[package]]` block for `name` from Cargo.lock, returning +/// each block's `(version, source)` pair. +fn locked_packages(lock: &str, name: &str) -> Vec<(String, String)> { + let mut found = Vec::new(); + for block in lock.split("[[package]]") { + let mut pkg_name = None; + let mut version = None; + let mut source = None; + for line in block.lines().map(str::trim) { + if let Some(v) = line.strip_prefix("name = ") { + pkg_name = Some(v.trim_matches('"').to_string()); + } else if let Some(v) = line.strip_prefix("version = ") { + version = Some(v.trim_matches('"').to_string()); + } else if let Some(v) = line.strip_prefix("source = ") { + source = Some(v.trim_matches('"').to_string()); + } + } + if pkg_name.as_deref() == Some(name) { + found.push((version.unwrap_or_default(), source.unwrap_or_default())); + } + } + found +} + +/// The `rev = "..."` recorded for `dep` in the workspace Cargo.toml. +fn workspace_pin_rev(cargo_toml: &str, dep: &str) -> String { + let line = cargo_toml + .lines() + .find(|l| l.trim_start().starts_with(&format!("{dep} = {{"))) + .unwrap_or_else(|| panic!("no `{dep}` dependency line in workspace Cargo.toml")); + let rev_key = "rev = \""; + let start = line + .find(rev_key) + .unwrap_or_else(|| panic!("`{dep}` line has no rev pin: {line}")) + + rev_key.len(); + line[start..] + .split('"') + .next() + .expect("terminated rev string") + .to_string() +} + +#[test] +fn exactly_one_running_process_identity_matching_the_workspace_pin() { + let root = workspace_root(); + let lock = std::fs::read_to_string(root.join("Cargo.lock")).expect("read Cargo.lock"); + let cargo_toml = + std::fs::read_to_string(root.join("Cargo.toml")).expect("read workspace Cargo.toml"); + + let packages = locked_packages(&lock, "running-process"); + assert_eq!( + packages.len(), + 1, + "Cargo.lock must resolve exactly one `running-process` identity — \ + multiple identities link duplicate rp_*_public symbols \ + (FastLED/fbuild#1239). Resolved: {packages:?}" + ); + + let (version, source) = &packages[0]; + let pinned_rev = workspace_pin_rev(&cargo_toml, "running-process"); + assert!( + source.contains(&pinned_rev), + "the locked running-process source must be the workspace-pinned rev.\n \ + locked: {version} @ {source}\n \ + pinned: {pinned_rev}\n \ + The direct pin and the zccache release's transitive pin have drifted — \ + re-run the FastLED/fbuild#1239 cascade (running-process -> zccache -> fbuild)." + ); +}