Add platform constraints for extensions
- Dominant language
- C++
- Stars
- 28.9k
- Forks
- 5.6k
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 430
Description
currently we have no way of gating an extension for or from particular platforms
instead we have historically used an anti-pattern of gating with selects rendering empty files/libs on non-compatible platforms
this is an anti-pattern for several reasons
firstly gating only with selects and not proper platform constraints means whatever deps are referenced are pulled in regardless of compatibility
secondly this leaves useless stub bloat in the final bins with extensions that can never run
and finally anything that _is_ properly platform constrained can break unrelated builds if it is not itself properly gated out
realistically the seam here is at the **extension** level - some extensions - eg socketmap will only ever run on linux - they sshould be gated as such and not included in binaries for other platforms
gating at the extension level would also mean we can document the extensions properly - exposing their actual platform constraints
Contributor guide
Research direction
No files or tests are named. Start by tracing how extensions are selected and built, including the existing select-based platform gating; define how constraints at the extension level should exclude incompatible extensions and their dependencies. Done means incompatible extensions are omitted from binaries and their platform constraints are exposed in documentation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- build-system
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100