Skip to content

CI: ext-link red on every PR — perry-ext-fetch fails to link (undefined js_file_new / js_headers_init_from_value) #8155

Description

@proggeramlug

ext-link is failing on every PR based on current main, and the failure is main-side rather than any one PR's.

Symptomcargo test --release --no-run for perry-ext-fetch fails to link:

perry_runtime...global_this_file_thunk+0x80:     undefined reference to `js_file_new'
perry_runtime...global_this_headers_thunk+0x78:  undefined reference to `js_headers_init_from_value'
perry_runtime...global_this_request_thunk+0x255: undefined reference to `js_headers_init_from_value'
perry_runtime...global_this_response_thunk+0x13c: undefined reference to `js_headers_init_from_value'
collect2: error: ld returned 1 exit status
error: could not compile `perry-ext-fetch` (lib test) due to 1 previous error

Some runs also show js_blob_new and js_fetch_notify_signal_aborted.

Evidence that it is not a single PR's fault: the identical failure appears on unrelated branches — e.g. perf/issue-8079-guarded-param-specialization (#8079's branch) and fix/moving-gc-rooting-sweep (#8131), whose diffs share no files. Of the open PRs sampled, four fail ext-link and one older one (based on an earlier main) passes.

Why it matters: ext-link exists precisely because cargo-test's scope keeps perry-ext-* out of the fan-out (#7656, after #7650). A gate that is red for every PR is one that no PR can be blocked by in practice — the same shape as #8092.

perry-runtime's global_this fetch thunks reference symbols that live outside it, so the fix is presumably to make perry-ext-fetch's link surface provide them (or to gate the thunks on the same feature that provides the definitions).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions