diff --git a/.github/workflows/release-production.yml b/.github/workflows/release-production.yml index 4866ba3f402..8e26450336c 100644 --- a/.github/workflows/release-production.yml +++ b/.github/workflows/release-production.yml @@ -397,11 +397,26 @@ jobs: with: ref: ${{ needs.prepare-build.outputs.build_ref }} fetch-depth: 1 - # Targeted init (not `submodules: true`) so we skip the large tauri-cef - # fork the core image doesn't need. The Dockerfile COPYs vendor/ because - # [patch.crates-io] resolves Rust SDK crates from vendor/. + # Every submodule, not an enumerated subset. The Dockerfile COPYs vendor/ + # because [patch.crates-io] resolves Rust SDK crates from vendor/, and an + # uninitialised submodule is copied in as an EMPTY directory — cargo then + # fails on the missing manifest before it compiles anything. + # + # This used to name eight paths, to skip "the large tauri-cef fork the + # core image doesn't need". That fork stopped being a submodule in + # `1843706c3 refactor(tauri): replace CEF runtime with upstream Wry`, so + # there is nothing left for the list to exclude: all ten entries in + # `.gitmodules` are `path` dependencies of the root crate, and cargo reads + # every one of their manifests to resolve, `optional` or not. A subset is + # therefore always a bug, which is what the list kept producing — it went + # stale three times (tinymemory in `54f8710f`, then tinywallet and + # tinyhosts together, issue #5594), and each time the breakage surfaced at + # RELEASE time rather than in PR CI. + # + # Enumerating buys nothing once nothing can legitimately be excluded, so + # the enumeration is gone rather than corrected a third time. - name: Init vendored Rust submodules - run: git submodule update --init --recursive vendor/tinyagents vendor/tinyflows vendor/tinycortex vendor/tinychannels vendor/tinyplace vendor/tinyhumans-sdk vendor/tinybus vendor/tinymemory + run: git submodule update --init --recursive - name: Set up Docker Buildx uses: docker/setup-buildx-action@v4 - name: Log in to GHCR diff --git a/.github/workflows/release-staging.yml b/.github/workflows/release-staging.yml index 842a901e952..29057b0578c 100644 --- a/.github/workflows/release-staging.yml +++ b/.github/workflows/release-staging.yml @@ -293,11 +293,26 @@ jobs: with: ref: ${{ needs.prepare-build.outputs.build_ref }} fetch-depth: 1 - # Targeted init (not `submodules: true`) so we skip the large tauri-cef - # fork the core image doesn't need. The Dockerfile COPYs vendor/ because - # [patch.crates-io] resolves Rust SDK crates from vendor/. + # Every submodule, not an enumerated subset. The Dockerfile COPYs vendor/ + # because [patch.crates-io] resolves Rust SDK crates from vendor/, and an + # uninitialised submodule is copied in as an EMPTY directory — cargo then + # fails on the missing manifest before it compiles anything. + # + # This used to name eight paths, to skip "the large tauri-cef fork the + # core image doesn't need". That fork stopped being a submodule in + # `1843706c3 refactor(tauri): replace CEF runtime with upstream Wry`, so + # there is nothing left for the list to exclude: all ten entries in + # `.gitmodules` are `path` dependencies of the root crate, and cargo reads + # every one of their manifests to resolve, `optional` or not. A subset is + # therefore always a bug, which is what the list kept producing — it went + # stale three times (tinymemory in `54f8710f`, then tinywallet and + # tinyhosts together, issue #5594), and each time the breakage surfaced at + # RELEASE time rather than in PR CI. + # + # Enumerating buys nothing once nothing can legitimately be excluded, so + # the enumeration is gone rather than corrected a third time. - name: Init vendored Rust submodules - run: git submodule update --init --recursive vendor/tinyagents vendor/tinyflows vendor/tinycortex vendor/tinychannels vendor/tinyplace vendor/tinyhumans-sdk vendor/tinybus vendor/tinymemory + run: git submodule update --init --recursive - name: Set up Docker Buildx uses: docker/setup-buildx-action@v4 - name: Build image (no push)