Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Statelessness: Settle on a uapi / freedesktop "hermetic /usr" compatible statelessness story #420

Open
ermo opened this issue Feb 8, 2025 · 0 comments

Comments

@ermo
Copy link
Contributor

ermo commented Feb 8, 2025

Historical context

For context, Ikey has been in the stateless game at least since the days when he worked on Clear Linux at intel's OSTC.

This definition of stateless, via Ikey, made its way into Solus, where the de facto standard was to have per-package stateless configuration saved to /usr/share/defaults/<packagename>.

Current state of statelessness

Per the uapi-group configuration files specification and the freedesktop file-hierarchy specification, we may want to consider building a "hermetic /usr" story which is as compatible as we can make it with Ikey's preferred Clear Linux-derived statelessness approach.

Goals and non-goals

The longer term goal is to avoid getting into a situation where our definition of statelessness clashes with the upstream "hermetic /usr" approach, to the point where upstreams refuse to accept patches related to our definition of statelessness, thus forcing us to maintain an unbounded number of downstream patches that have no upstream relevance.

Instead, we may want to make it so that we have a well understood and agreed upon way to integrate upstream "hermetic /usr" compatible packages in our recipes, to the point where we can reliably get statelessness patches accepted upstream, whilst seamlessly benefiting from them in our package recipe maintenance story as a downstream distribution.

Concrete implementation suggestion

One option we have is to keep our current %(vendordir) macro (resolves to /usr/share/defaults) and then also add a %(factorydir) macro, that resolves to e.g. /usr/share/factory/etc (TBD!), for the case where it makes more sense to use a shared, (...)/etc/foo.d/ configuration drop-in layout?

Another option is to consolidate completely and use %(vendordir) = /usr/share/defaults/etc/, which would essentially displace the need for a separate %factorydir macro. Up until a certain point, I think this was actually our previous boulder default.

@ikeycode thoughts?

Context: AerynOS/recipes#597 and #419

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant