diff --git a/.github/workflows/acceptance-205.yml b/.github/workflows/acceptance-205.yml index 76a1db49..5c38a883 100644 --- a/.github/workflows/acceptance-205.yml +++ b/.github/workflows/acceptance-205.yml @@ -57,6 +57,7 @@ jobs: cache: true build-cache: true target-cache: true + prebuild-deps: none - name: Run ${{ matrix.gate }} acceptance gate run: | diff --git a/.github/workflows/bench-205.yml b/.github/workflows/bench-205.yml index e4b863e3..c8bfbdb3 100644 --- a/.github/workflows/bench-205.yml +++ b/.github/workflows/bench-205.yml @@ -41,6 +41,7 @@ jobs: cache: true build-cache: true target-cache: true + prebuild-deps: none - name: "Run ${{ matrix.bench }} (target: ${{ matrix.target }})" run: | @@ -70,6 +71,7 @@ jobs: cache: true build-cache: true target-cache: true + prebuild-deps: none - name: Checkout FastLED uses: actions/checkout@v6 diff --git a/.github/workflows/check-macos.yml b/.github/workflows/check-macos.yml index 9a7387f1..2af02e8e 100644 --- a/.github/workflows/check-macos.yml +++ b/.github/workflows/check-macos.yml @@ -24,6 +24,7 @@ jobs: cache: true build-cache: true target-cache: true + prebuild-deps: none - name: Check shell: bash diff --git a/.github/workflows/check-ubuntu.yml b/.github/workflows/check-ubuntu.yml index 240c261f..d41d54cc 100644 --- a/.github/workflows/check-ubuntu.yml +++ b/.github/workflows/check-ubuntu.yml @@ -25,6 +25,7 @@ jobs: cache: true build-cache: true target-cache: true + prebuild-deps: none - name: Check run: soldr cargo check --workspace --all-targets diff --git a/.github/workflows/check-windows.yml b/.github/workflows/check-windows.yml index 70b25229..1f2bf29d 100644 --- a/.github/workflows/check-windows.yml +++ b/.github/workflows/check-windows.yml @@ -24,6 +24,7 @@ jobs: cache: true build-cache: true target-cache: true + prebuild-deps: none - name: Check shell: bash diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 5101541c..380d9c33 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -24,6 +24,7 @@ jobs: cache: true build-cache: true target-cache: true + prebuild-deps: none - name: Build docs run: soldr cargo doc --workspace --no-deps diff --git a/.github/workflows/fmt.yml b/.github/workflows/fmt.yml index 2943e0ca..e8efcc97 100644 --- a/.github/workflows/fmt.yml +++ b/.github/workflows/fmt.yml @@ -22,5 +22,6 @@ jobs: cache: true build-cache: true target-cache: false + prebuild-deps: none - name: Check formatting run: soldr cargo fmt --all -- --check diff --git a/.github/workflows/msrv.yml b/.github/workflows/msrv.yml index 9935a368..4b296398 100644 --- a/.github/workflows/msrv.yml +++ b/.github/workflows/msrv.yml @@ -22,6 +22,7 @@ jobs: cache: true build-cache: true target-cache: true + prebuild-deps: none toolchain: 1.94.1 - name: Check MSRV diff --git a/.github/workflows/template_build.yml b/.github/workflows/template_build.yml index 035f1652..45e5f7fc 100644 --- a/.github/workflows/template_build.yml +++ b/.github/workflows/template_build.yml @@ -40,6 +40,7 @@ jobs: cache: true build-cache: true target-cache: true + prebuild-deps: none cache-key-suffix: board-${{ inputs.env-name }} - name: Reset zccache daemon after cache warm diff --git a/.github/workflows/template_native_build.yml b/.github/workflows/template_native_build.yml index 30997c9a..bab8a55d 100644 --- a/.github/workflows/template_native_build.yml +++ b/.github/workflows/template_native_build.yml @@ -59,6 +59,7 @@ jobs: cache: true build-cache: true target-cache: true + prebuild-deps: none cache-key-suffix: native-${{ inputs.target }} - uses: actions/setup-python@v6 diff --git a/Cargo.lock b/Cargo.lock index 29192ff2..e907032d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -488,6 +488,30 @@ dependencies = [ "libc", ] +[[package]] +name = "crash-context" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "031ed29858d90cfdf27fe49fae28028a1f20466db97962fa2f4ea34809aeebf3" +dependencies = [ + "cfg-if", + "libc", + "mach2", +] + +[[package]] +name = "crash-handler" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2066907075af649bcb8bcb1b9b986329b243677e6918b2d920aa64b0aac5ace3" +dependencies = [ + "cfg-if", + "crash-context", + "libc", + "mach2", + "parking_lot", +] + [[package]] name = "crc32fast" version = "1.5.0" @@ -2095,6 +2119,16 @@ version = "11.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + [[package]] name = "parking_lot_core" version = "0.9.12" @@ -4080,12 +4114,14 @@ dependencies = [ [[package]] name = "zccache-artifact" -version = "1.4.0" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4144e1348f83ab3ec55c039e199b0f16dc7afa3d6c0af475debc00023adce425" +checksum = "a85b1a2851359f7f87bdaa44cb35d1d59c7b0dec346da8de466130fb9fbe03dd" dependencies = [ "bincode", "blake3", + "dashmap", + "rayon", "redb", "serde", "serde_json", @@ -4098,11 +4134,14 @@ dependencies = [ [[package]] name = "zccache-core" -version = "1.4.0" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "694f8a8a46b8552415458eca9a39a0bb36ed28fb0d152374a1f83761abef8222" +checksum = "8a7bc2339b9244683e2e3cf72f338f5a963731370e9f4cd4705023bb1804b5f7" dependencies = [ + "crash-handler", + "libc", "serde", + "serde_json", "thiserror 2.0.18", "tracing", "windows-sys 0.59.0", @@ -4110,9 +4149,9 @@ dependencies = [ [[package]] name = "zccache-hash" -version = "1.4.0" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eb7ff97b2722055babfb6037757f4d6de41f8e4b838491e31d1eb3f367c318b" +checksum = "1023a805e42f729dac4f19865e6fe365cc6430f30230aaaacb0aa662e2b4b254" dependencies = [ "blake3", "memmap2", diff --git a/Cargo.toml b/Cargo.toml index 90cd6a43..cd8fd34b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -65,14 +65,17 @@ object = { version = "0.36", default-features = false, features = ["read", "std" rusqlite = { version = "0.31", features = ["bundled"] } shell-words = "1" bincode = "1" -zccache-artifact = "1.4.0" +zccache-artifact = "1.8" rayon = "1" tracing-test = "0.2" # Process containment: all subprocess spawns the daemon performs (compilers, # esptool, qemu, simavr, node, npm, …) and any grandchildren they fork must -# die with the daemon. Published to crates.io is pending; pin a git rev. -# See FastLED/fbuild#32. +# die with the daemon. Pinned to a pre-release rev that exposes the +# `Containment` enum / `spawn_with_containment` API. The published +# `running-process-core` 3.4.x dropped those in favor of +# `ContainedProcessGroup` — fbuild will need a containment-layer +# refactor before it can move to crates.io. See FastLED/fbuild#32. running-process-core = { git = "https://github.com/zackees/running-process", rev = "ff9d7972504f7a0dcee0f410274daf3b02e4fcc2", package = "running-process-core" } [profile.dev] diff --git a/crates/fbuild-build/tests/flag_escaping_lint.rs b/crates/fbuild-build/tests/flag_escaping_lint.rs index bc29e646..6616f6f0 100644 --- a/crates/fbuild-build/tests/flag_escaping_lint.rs +++ b/crates/fbuild-build/tests/flag_escaping_lint.rs @@ -130,11 +130,19 @@ fn escaped_quote_usage_is_restricted() { // These files are allowed to contain \\\" because they are the canonical // sources/handlers of escaped-quote define values. + // + // Note: LOC-gate splits (refactor commits 5c90d0e/91f54e4/0cca5f3) moved + // canonical define code from board.rs / orchestrator.rs into submodule + // files (methods.rs, build.rs, mod.rs). Those are listed here too — they + // are still canonical define sources, just renamed. let allowed_files: &[&str] = &[ "board.rs", // canonical define source with \\\" + "methods.rs", // canonical: split out of fbuild-config/src/board.rs (LOC gate) "compiler.rs", // escaping module (prepare_flags_for_exec, write_response_file) "esp32_framework.rs", // SDK defines parser (reads \\\" from disk) "orchestrator.rs", // fallback define construction (same pattern as board.rs) + "build.rs", // canonical: split out of esp32/orchestrator.rs (LOC gate) + "mod.rs", // canonical: split out of stm32/orchestrator.rs (LOC gate) "library_compiler.rs", // response file writer (checks for \\\" to skip double-quoting) ]; diff --git a/pyproject.toml b/pyproject.toml index 3d83d806..95980ce3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ version = "2.2.3" description = "PlatformIO-compatible embedded build tool (Rust implementation)" readme = "README.md" requires-python = ">=3.10" -dependencies = ["zccache>=1.2.13"] +dependencies = ["zccache>=1.8.2"] [dependency-groups] dev = ["fbuild-dev-tools"] diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 32c68eec..857955b9 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,4 @@ [toolchain] channel = "1.94.1" +profile = "minimal" components = ["rustfmt", "clippy"] diff --git a/uv.lock b/uv.lock index 6dfcb756..3988025e 100644 --- a/uv.lock +++ b/uv.lock @@ -16,7 +16,7 @@ dev = [ ] [package.metadata] -requires-dist = [{ name = "zccache", specifier = ">=1.2.13" }] +requires-dist = [{ name = "zccache", specifier = ">=1.8.2" }] [package.metadata.requires-dev] dev = [{ name = "fbuild-dev-tools", editable = "ci/dev-tools" }] @@ -47,13 +47,13 @@ wheels = [ [[package]] name = "zccache" -version = "1.2.13" +version = "1.8.2" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/87/73/4080b898921a865faff716717e1a198846c0ff256f38cbea54b28ea81fbb/zccache-1.2.13-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:25c01b6259118c226d7d9adb8fe854eca74e47d622023685553eb5d16afe69a9", size = 11488674, upload-time = "2026-04-19T09:12:46.718Z" }, - { url = "https://files.pythonhosted.org/packages/0c/3c/4d5f45dabb676bcfdc1f38945675ea8ce06ca47b057cdd755112cf393f5a/zccache-1.2.13-py3-none-macosx_11_0_arm64.whl", hash = "sha256:ca4b87d9110e23848a074a02887a3427868936915c387e9b9ffc7b39aaa38b30", size = 10981829, upload-time = "2026-04-19T09:13:03.894Z" }, - { url = "https://files.pythonhosted.org/packages/ea/1e/f4a222a3addc2227abc067459ad0128a5aaf0179c8d460c8872476bfe1f0/zccache-1.2.13-py3-none-manylinux_2_17_aarch64.whl", hash = "sha256:1cfc01e890ced64349a10ca7fa1973750fdadc6aad027c2a9eab1d5803b08f45", size = 10942113, upload-time = "2026-04-19T09:13:21.216Z" }, - { url = "https://files.pythonhosted.org/packages/f1/74/485a8c67a7a86fa4e7b1032266d761427d4d97de6a70da2e9cb6d4025e3e/zccache-1.2.13-py3-none-manylinux_2_17_x86_64.whl", hash = "sha256:9bdf895a0c24933adb28c57ef99948083d05adbf7220a5f643e4be7c504171c8", size = 11887723, upload-time = "2026-04-19T09:13:39.91Z" }, - { url = "https://files.pythonhosted.org/packages/ac/dc/7f8c8ced3eba832990bef18489bc5b419a4b3e5f1fe14727a5c123d6b9cb/zccache-1.2.13-py3-none-win_amd64.whl", hash = "sha256:7ed67d6bdf92b1e6f142aaf987c72f751824c8fcf9c18fd0401479f46d7ebca1", size = 10713286, upload-time = "2026-04-19T09:14:01.432Z" }, - { url = "https://files.pythonhosted.org/packages/6c/a3/95ebc437fbf581cee66484ccf455f2c0bf5729e264b800646ed1a06ec87c/zccache-1.2.13-py3-none-win_arm64.whl", hash = "sha256:117cd479adaa1c1aeca197fee7d86d9e59845807a82c03e3141bfd23815257cb", size = 9956694, upload-time = "2026-04-19T09:14:17.552Z" }, + { url = "https://files.pythonhosted.org/packages/0b/fb/40cfe8df8c2ac6c250b08845873f98eeca6352325d7af8f10bb28a6faa16/zccache-1.8.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b960c703d05e6bedace35be51db1cf477cd94aeba35afb93c919f1860233d4dd", size = 12400172, upload-time = "2026-05-22T14:27:25.927Z" }, + { url = "https://files.pythonhosted.org/packages/ac/38/78525b2f66d921e1042592300b24107b7f512082a62d00fa769c416cf0d7/zccache-1.8.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:b9b7ce451e7a7c6696c7b8008dcde92dd8cb35fd20a978cc4afe0c05c2c85aa9", size = 11877951, upload-time = "2026-05-22T14:27:29.317Z" }, + { url = "https://files.pythonhosted.org/packages/f8/84/e3f73a89d89d7cd6d443e0de0f0b8d7fdaf50aa2f9ca8196b111b32ded37/zccache-1.8.2-py3-none-manylinux_2_17_aarch64.whl", hash = "sha256:c0d2e62faa7e994ca6889b2864092da6c6ce71de8aa2c2d0637c084434791883", size = 13982209, upload-time = "2026-05-22T14:27:32.007Z" }, + { url = "https://files.pythonhosted.org/packages/03/9a/4a13ae46798ee1b7530ba3a0e9359a36829be7c0ea7b6cd52241bb55e5a4/zccache-1.8.2-py3-none-manylinux_2_17_x86_64.whl", hash = "sha256:cb75a827ea79d275d130775ea7c41a7d035faca4040fb0d8dbdba69f3222d588", size = 14414946, upload-time = "2026-05-22T14:27:35.551Z" }, + { url = "https://files.pythonhosted.org/packages/80/c9/1ab6c223d905320d8130a35bca39128c3950375607ba75beb571a1a8f333/zccache-1.8.2-py3-none-win_amd64.whl", hash = "sha256:6f21c6fb2ecad6b958723be4216127d1c5700bc9d9651d3ce2db57401ba8e88e", size = 11682901, upload-time = "2026-05-22T14:27:38.72Z" }, + { url = "https://files.pythonhosted.org/packages/f4/51/6b84d6f7145b844a01740d36db4cfbdc43aadb911df1a3439fb5f454910c/zccache-1.8.2-py3-none-win_arm64.whl", hash = "sha256:b607217557af61b876ff193b636c5d6165447d67628deefb2f67c0e0c6d8ffd5", size = 10879203, upload-time = "2026-05-22T14:27:41.741Z" }, ]