aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal
AgeCommit message (Collapse)Author
2025-11-13treewide: document linkname usesOphestra
These provide justification for each use of linkname. Poorly thought out uses of linkname are removed. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-13treewide: import internal/systemOphestra
For #24. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-13internal/system: relocate from systemOphestra
These packages are highly specific to hakurei and are difficult to use safely from other pieces of code. Their exported symbols are made available until v0.4.0 where they will be removed for #24. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-12treewide: import internal/helperOphestra
For #24. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-12internal/helper: relocate from helperOphestra
This package is ugly and is pending removal only kept alive by xdg-dbus-proxy. Its exported symbols are made available until v0.4.0 where it will be removed for #24. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-10treewide: reject impossible user-supplied fdOphestra
These are all trusted user input, however this check reduces the likelihood of hard to debug errors. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-10cmd/hakurei: expose current instance identifierOphestra
This writes the 16-byte instance identifier to file descriptor specified by --identifier-fd if set, and closes the file. This enables safely obtaining the new instance's identifier. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-09internal/outcome: handle group lookup messageOphestra
This results in slightly less messy error reporting. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-05treewide: fit test untyped int literals in 32-bitOphestra
This enables hakurei test suite to run on 32-bit targets. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-05container/std: relocate rule typesOphestra
This enables its use in hst for #15. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-05std: rename from compOphestra
Seccomp lookup tables are going to be relocated here, and PNR constants. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-04hst/grp_pwd: specify new uid formatOphestra
This leaves slots available for additional uid ranges in Rosa OS. This breaks all existing installations! Users are required to fix ownership manually. Closes #18. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-03message: rename NewMsg to NewOphestra
Should have done this when relocating this from container. Now is a good time to rename it before v0.3.x. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-03internal/store: remove compat adapterOphestra
This is no longer used as everything has been migrated. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-02internal/store: iterator over all entriesOphestra
This is quite convenient for searching the store or printing active instance information. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-02internal/outcome: track state in TMPDIROphestra
The SharePath is a more stable path than RunDirPath, since it is available all the time and should remain consistent. This also fits better into the intended use case of XDG_RUNTIME_DIR. Closes #17. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-02internal/env: cleaner runtime dir fallbackOphestra
This now places rundir inside the fallback runtime dir, so special case in internal/outcome is avoided. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-02internal/outcome/shim: cover reparent and exit request pathsOphestra
These test cases were missed when making the changes. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-02internal/outcome/process: nil-safe unlock when failing to lockOphestra
This also prints a debug message which might be useful. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-02internal/outcome: measure finalise timeOphestra
This also increases precision of state time output. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-02internal/outcome/shim: EOF as exit request fallbackOphestra
In some cases the signal might be delivered before the signal handler is installed, and synchronising against such a case is too expensive. Instead, use the pipe being closed as a fallback to the regular exit request. This change also moves installation of the signal handler early. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-02internal/outcome/process: use new store interfaceOphestra
This change also spawns shim before committing system state, leaving it blocking on the setup pipe. The internal/outcome/process structure is also entirely reworked to be much more readable and less error-prone, while enabling basic performance measurements. A long-standing bug where segment lock is not held during Commit is also resolved. Closes #19. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-11-01internal/outcome/process: relocate start and serveOphestra
This is useful for reordering these operations for further cleanup. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-31internal/outcome: remove guard on mainOphestra
This is no longer exported. Such a check is pointless. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-31container/params: expose pipeOphestra
This increases flexibility of how caller wants to handle the I/O. Also makes it no longer rely on finalizer. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-31internal/store: expose save via handleOphestra
The handle is otherwise inaccessible without the compat interface. This change also moves compatibility methods to separate adapter structs to avoid inadvertently using them. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-31internal/store: export new interfaceOphestra
This exposes store operations safe for direct access, and enables #19 to be implemented in internal/outcome. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-30internal/store: rename compat interfaceOphestra
The new store implementation will be exported as Store. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-30internal/store: rename from stateOphestra
This reduces collision with local variable names, and generally makes sense for the new store package, since it no longer specifies the state struct. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-30internal/outcome/shim: check full behaviourOphestra
This took significant effort to stub out, and achieves full coverage after c5aefe5e9d. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-30internal/outcome/process: output via msgOphestra
This makes it possible to instrument output behaviour through stub. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-30internal/outcome/shim: move signal constantsOphestra
The magic numbers hurt readability. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-29internal/outcome/shim: remove noop resumeOphestra
The shim does not suspend output to begin with. These are leftovers from when container startup code suspends output. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-29internal/outcome/shim: params check earlyOphestra
This is unreachable, but keeping it here as a failsafe until more test cases are added. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-29internal/outcome: rename from appOphestra
This is less ambiguous, and more accurately describes the purpose of the package. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-29internal/env: relocate from appOphestra
This package is much cleaner to stub independently, and makes no sense to lump into app. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-29internal/validate: relocate from appOphestra
These are free of the dispatcher from internal/app. This change relocates them into their own package. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-29internal/app/state: improve store internalsOphestra
This fully exposes the store internals for #19 and are final preparations for removing the legacy store interface. This change also fixes a potential deadlock in the handle initialisation mkdir failure path. This however is never reachable in hakurei as the store is never accessed concurrently. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-28internal/app/state: improve handles internalsOphestra
This replaces the Store interface with something better reflecting the underlying data format for #19. An implementation of Store is provided on top of the new code to ease transition. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-26internal/app/state: use absolute pathnamesOphestra
This is less error-prone and fits better into internal/app which already uses check.Absolute for all pathnames. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-26internal/app/state: acquire big lock for toplevel operationsOphestra
This avoids getting into an inconsistent state for simultaneous calls to List and Do on a previously unknown identity. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-26treewide: update doc commentsOphestra
Some internal/app/state types were relocated to hst as part of the API. This change updates doc comments referring to them. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-26internal/app/state/data: check full entry behaviourOphestra
This eventually gets relocated to internal/app. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-25internal/app/state: include et headerOphestra
This is the initial step of implementing #19. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-25internal/app/state: use internal/lockedfileOphestra
This is a pretty solid implementation backed by robust tests, with a much cleaner interface. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-25internal/app/state: export correct backend valueOphestra
This references the underlying multiBackend due to a typo, making the whole dance with c a noop. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-25internal/app/state: fixed size et-only headerOphestra
This header improves the robustness of the format and significantly reduces cleanup overhead. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-23hst/instance: store priv side pidOphestra
This can receive signals, so is more useful to the caller. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-23hst/instance: define instance stateOphestra
This is now part of the hst API. This change also improves identifier generation and serialisation. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-23internal/app/shim: check behaviourOphestra
This does not yet have full coverage. Test cases covering failsafe paths and error injection will be added eventually. Signed-off-by: Ophestra <cat@gensokyo.uk>