diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 34484383ad..44a0ca714a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -2791,7 +2791,16 @@ jobs: # the precompile fixtures that link the archives directly could not # pass — masked for weeks by continue-on-error. Name the wrapper # crates explicitly (same set the parity harness builds). - run: cargo build --release -p perry -p perry-runtime -p perry-stdlib -p perry-runtime-static -p perry-stdlib-static + # The ext wrappers must build in the SAME cargo invocation as the + # stdlib archive. Separate invocations let cargo unify tokio + # differently for each, and the link is then refused: "the wrapper + # archive(s) below bundle a DIFFERENT tokio compilation than the + # stdlib archive" (#507, #7629). The refusal is correct -- two tokio + # compilations mean two `runtime::context::CONTEXT` thread-locals and + # a "no reactor running" panic. `test_issue_414_mysql_query_params` + # was the single compile-smoke failure this caused. Same set the + # doc-tests job already builds together. + run: cargo build --release -p perry -p perry-runtime -p perry-stdlib -p perry-runtime-static -p perry-stdlib-static -p perry-ext-ioredis -p perry-ext-mongodb -p perry-ext-mysql2 -p perry-ext-pg -p perry-ext-nodemailer - name: Issue #945 scalar method IR guard run: | diff --git a/changelog.d/9290-compile-smoke-ext.md b/changelog.d/9290-compile-smoke-ext.md new file mode 100644 index 0000000000..cbd37e5658 --- /dev/null +++ b/changelog.d/9290-compile-smoke-ext.md @@ -0,0 +1,5 @@ +The `compile-smoke` CI job builds the database and mailer extension wrappers in +the same cargo invocation as the stdlib archive. Building them separately let +cargo unify tokio differently for each, and the linker guard correctly refused +the resulting pair — two tokio compilations in one binary mean two independent +runtime contexts and a "no reactor running" panic.