aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal
AgeCommit message (Collapse)Author
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>
2025-10-23internal/app: test case for hst templateOphestra
This helps with other areas of the test suite as they're all based on hst.Template. This also helps contributors understand the behaviour of internal/app as hst.Template covers almost every aspect of it. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-22internal/app: reduce test case indentationOphestra
This improves readability on narrower displays. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-22internal/app/shim: use syscall dispatcherOphestra
This enables instrumented testing of the shim. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-21container/comp: rename from bitsOphestra
This package will also hold syscall lookup tables for seccomp. Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-10-21internal: clean up build stringsOphestra
These names are less ambiguous and should be understandable without reading the source code. Signed-off-by: Ophestra <cat@gensokyo.uk>