You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
v1.16.11: selinux is an unconditional dependency, breaking source builds on distros that don't package libselinux #2431
Note: Used a bit of AI to help with the issue. Glad to respond if you need more info.
Building bootc from source with make bin install-all regressed in v1.16.11 on distributions that do not ship libselinux development headers. v1.16.10 builds fine.
Cause
v1.16.11 added selinux to the workspace and consumes it unconditionally:
Cargo.toml:76 ([workspace.dependencies]) — selinux = "=0.5.0". Not present in v1.16.10.
crates/lib/Cargo.toml:54 — selinux = { workspace = true }, with no optional = true and no feature gate.
So every build of crates/lib now requires libselinux at link time, whether or not the target system has SELinux.
Failure
error: failed to run custom build command for `selinux-sys v0.6.15`
selinux-sys: Failed to find 'selinux/selinux.h'. Please make sure the C header
files of libselinux are installed and accessible: Kind(NotFound)
make: *** [Makefile:44: manpages] Error 1
It surfaces in the manpages target because that is the first thing to build the lib, but make bin fails the same way.
Why this is hard to work around downstream
Arch Linux packages neither libselinux nor libsepol in its official repositories, so there is no package to install:
That leaves adding a third-party repository, or building both libraries from source, purely to satisfy a link-time dependency on a system where SELinux is never enabled.
Worth noting this arrived in a patch release, so it reached anyone auto-updating within the 1.16 range.
Suggested fix
Gate it behind a cargo feature. crates/lib already uses this pattern for install-to-disk, rhsm and docgen:
That keeps current behaviour for everyone by default and lets non-SELinux distros opt out. If the SELinux call sites are not easily made conditional, even a documented statement that libselinux is now a hard build requirement would help downstreams decide what to do.
Environment
bootc v1.16.11, built from source in an archlinux:latest container, rust from the Arch repositories. Context is an Arch-based bootc image; happy to test a patch.
Activity
docs: link the upstream bootc selinux issue from the blocked-update note
docs: record why a red Renovate PR is the hold, and what bootc is blo…
cgwalters commentedon Sep 3, 2026
Yes sorry, we can make selinux a build-time option.
Danathar commentedon Sep 4, 2026
No prob. I'm probably one of a grand total of 10 people using bootc on arch LOL (just as an experiment really, but it works!)
Thank you!
smiggiddy commentedon Sep 4, 2026
ironically, yesterday I decided to try arch and bootc
I had DeepSeek write a patch for now
docs: record the upstream tracker for the bootc hold (#172)
cgwalters commentedon Sep 4, 2026
This intersects with pending PR #2290 - if we make the feature off by default, it will need changes for the OSes that do use selinux.
For this reason for now I would like to conservatively default it to on, i.e. disabling it would require
--no-default-features.Danathar commentedon Sep 4, 2026
Sounds reasonable. Wouldn't want to break my other fedora atomic systems I run.
Containerfile: pin bootc to v1.16.10 (selinux regression)
docs: refresh the bootc hold for v1.16.12, and fix its check command (#…
2 remaining items
lib: Make SELinux support an optional default feature
lib: Make SELinux support an optional default feature
lib: Make SELinux support an optional default feature
lib: Make SELinux support an optional default feature
lib: Make SELinux support an optional default feature
fix(image): pin libselinux by tag and commit, tracked by Renovate
lib: Make SELinux support an optional default feature
lib: Make SELinux support an optional default feature
lib: Make SELinux support an optional default feature
lib: Make SELinux support an optional default feature
lib: Make SELinux support an optional default feature
lib: Make SELinux support an optional default feature