The disable-tbb patch skipped the bundled Intel TBB build by forcing the TinyThread backend, which also stripped RcppParallel's TBB linkage. That broke every dependent that links TBB through RcppParallelLibs() (rstan and the whole Stan cluster) with 'symbol not found: tbb::detail::r1::observe'. Replace it with system-tbb.patch: leave USE_TBB unset (so the bundled build is skipped on musl and g++ 15) but keep the TBB backend and link the system oneTBB that the build-env images now ship. RcppParallelLibs() then hands the system-TBB link flags to dependents, provided TBB_INC/TBB_LIB are exported in the images (added separately in build-env-images). Verified in the build-env-alpine:3.24 image: RcppParallel builds against oneTBB 2022 with no ABI errors, and rstan links (-ltbb -ltbbmalloc) and loads without the missing-symbol error.
41 lines
1.9 KiB
JSON
41 lines
1.9 KiB
JSON
[
|
|
{
|
|
"package": "RcppParallel",
|
|
"versions": "*",
|
|
"platforms": [
|
|
"alpine",
|
|
"ubuntu-2604"
|
|
],
|
|
"env": {},
|
|
"configure_args": [],
|
|
"makevars": {},
|
|
"patch": "RcppParallel/system-tbb.patch",
|
|
"reason": "bundled Intel TBB build hangs/fails on musl (Alpine) and newer toolchains (g++ 15 on ubuntu-2604); link the system oneTBB (now in the build-env images) instead, keeping the TBB backend so dependents (rstan, ...) link TBB"
|
|
},
|
|
{
|
|
"package": "fs",
|
|
"versions": "*",
|
|
"platforms": [
|
|
"*"
|
|
],
|
|
"env": {},
|
|
"configure_args": [],
|
|
"makevars": {},
|
|
"patch": "fs/force-vendored-libuv.patch",
|
|
"reason": "fs 2.x configure links system libuv whenever pkg-config finds libuv-devel (installed as a build-time sysreq), producing an fs.so with NEEDED libuv.so.1. That binary fails to dyn.load on consumer machines lacking runtime libuv, because install.packages/renv do not install SystemRequirements (only pak does, and only in the build container). The patch short-circuits configure to copy src/Makevars.vendor and build the bundled static libuv (needs cmake) so the binary is self-contained on every platform. An env/pkg-config override was tried first but the rebuilt binary still linked libuv.so.1, so a source patch is used instead."
|
|
},
|
|
{
|
|
"package": "rstan",
|
|
"versions": "*",
|
|
"platforms": [
|
|
"*"
|
|
],
|
|
"env": {},
|
|
"configure_args": [],
|
|
"makevars": {
|
|
"CPPFLAGS": "-DTBB_INTERFACE_NEW -I/usr/local/include"
|
|
},
|
|
"patch": null,
|
|
"reason": "StanHeaders' init_threadpool_tbb.hpp unconditionally includes the legacy <tbb/tbb_stddef.h> (removed in oneTBB 2021+) for version detection, breaking compilation of Module.cpp against the bundled oneTBB. Pre-defining TBB_INTERFACE_NEW skips that include and selects the modern tbb/global_control.h + tbb/task_arena.h path that the bundled TBB provides (-I/usr/local/include preserves the default CPPFLAGS the override replaces)"
|
|
}
|
|
]
|