Context
Native NuGet packages that ship shared libraries (.so, .dylib) create implicit runtime dependencies on system libraries. Consumers on minimal Linux environments (containers, embedded, CI) may not have all transitive system deps installed.
SkiaSharp addresses this with a SkiaSharp.NativeAssets.Linux.NoDependencies package variant that links only against core system libraries (libc, libpthread, libdl, libm, ld-linux), avoiding dependencies on fontconfig, freetype, and other optional system libraries.
Goal
Evaluate and potentially implement a NoDependencies variant for Linux native packages that minimizes system library dependencies by:
- Static-linking optional dependencies where possible
- Disabling features that require uncommon system libraries
- Providing a separate
.NoDependencies NuGet package for minimal environments
Industry Reference
- SkiaSharp:
SkiaSharp.NativeAssets.Linux.NoDependencies — links only libc, libpthread, libdl, libm
- This is particularly valuable for Docker/container deployments and CI environments
Research Needed
- Inventory current runtime system dependencies per library per RID (using
ldd / otool output from harvest)
- Identify which dependencies can be statically linked via vcpkg triplet features
- Determine which SDL2 features must be dropped for a minimal build (e.g., Wayland, PulseAudio)
- Evaluate whether a separate triplet (e.g.,
x64-linux-static-dynamic) or feature flags in vcpkg.json is the better approach
- Assess demand — is this something downstream consumers actually need?
Deliverables
- System dependency audit report per library per RID
- Decision note: build approach (separate triplet vs. feature flags) and package naming
- If approved: new vcpkg triplet, Cake harvest path, NuGet package skeleton
Exit Criteria
Context
Native NuGet packages that ship shared libraries (.so, .dylib) create implicit runtime dependencies on system libraries. Consumers on minimal Linux environments (containers, embedded, CI) may not have all transitive system deps installed.
SkiaSharp addresses this with a
SkiaSharp.NativeAssets.Linux.NoDependenciespackage variant that links only against core system libraries (libc, libpthread, libdl, libm, ld-linux), avoiding dependencies on fontconfig, freetype, and other optional system libraries.Goal
Evaluate and potentially implement a
NoDependenciesvariant for Linux native packages that minimizes system library dependencies by:.NoDependenciesNuGet package for minimal environmentsIndustry Reference
SkiaSharp.NativeAssets.Linux.NoDependencies— links only libc, libpthread, libdl, libmResearch Needed
ldd/otooloutput from harvest)x64-linux-static-dynamic) or feature flags in vcpkg.json is the better approachDeliverables
Exit Criteria