aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/pkg
AgeCommit message (Collapse)Author
2026-04-10internal/landlock: relocate from package containerOphestra
This is not possible to use directly, so remove it from the public API. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-04-07all: optionally forbid degrading in testsOphestra
This enables transparently degradable tests to be forced on in environments known to support them. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-04-07internal/pkg: transparently degrade landlock in testsOphestra
This does not test package container, so should transparently cope with Landlock LSM being unavailable. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-04-07internal/pkg: optional landlock LSMOphestra
The alpine linux riscv64 kernel does not enable Landlock LSM, and kernel compilation is not yet feasible. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-04-03internal/pkg: optionally suppress via assumed checksumOphestra
This is quite error-prone and causes cache inconsistency similar to the store inconsistency seen on nix when a similar condition happens. Keep this behind a flag in case it is ever beneficial. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-04-03internal/pkg: per-cache SCHED_IDLEOphestra
This is cleaner than setting it globally, and is impossible to race. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-04-03internal/pkg: cache flagsOphestra
This is cleaner for extending the API. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-04-02internal/pkg: pick up $TERM if attaching stdinOphestra
This improves behaviour of some programs. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-03-30internal/uevent: synthetic events for coldbootOphestra
This causes the kernel to regenerate events that happened before earlyinit started. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-03-30all: use filepathOphestra
This makes package check portable, and removes nonportable behaviour from package pkg, pipewire, and system. All other packages remain nonportable due to their nature. No latency increase was observed due to this change on amd64 and arm64 linux. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-03-26internal/pkg: enter exec containerOphestra
This enables much easier troubleshooting of failing cures. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-03-26internal/pkg: collection helper-artifactOphestra
This was moved from internal/rosa because it is considered generally useful. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-03-26internal/pkg: isolate container paramsOphestra
This enables exporting container params for interactive troubleshooting within the cure container. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-03-17internal/stub: move from containerOphestra
This package solves a very specific stubbing use case, in a less than elegant manner. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-03-17fhs: move from containerOphestra
This package is not container-specific. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-03-17check: move from containerOphestra
This package is not container specific, and widely used across the project. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-03-17vfs: move from containerOphestra
This package is not container-specific. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-03-17ext: isolate from container/stdOphestra
These are too general to belong in the container package. This targets the v0.4 release to reduce the wrapper maintenance burden. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-03-12container: expose priority and SCHED_OTHER policyOphestra
The more explicit API removes the arbitrary limit preventing use of SCHED_OTHER (referred to as SCHED_NORMAL in the kernel). This change also exposes priority value to set. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-03-11container: move scheduler policy constants to stdOphestra
This avoids depending on cgo. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-03-09container: sched policy string representationOphestra
This also uses priority obtained via sched_get_priority_min, and improves bounds checking. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-03-06internal/pkg: move output buffer to readerOphestra
This side is the read end of a pipe and buffering reads from it ended up performing better than buffering one half of the TeeReader (which already goes through the kernel page cache anyway). Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-03-05internal/pkg: expose status fileOphestra
This is useful for external tooling. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-03-05internal/pkg: scrub for dangling statusOphestra
These cause build to fail to start. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-03-05internal/pkg: return writer after syncOphestra
This fixes a use-after-free. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-03-04internal/pkg: check filtered errorOphestra
This avoids filtering some unrelated os.ErrExist. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-03-04internal/pkg: write per-artifact logsOphestra
This is currently only used by execArtifact. A later patch will add additional logging facilities. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-03-03internal/pkg: cancel on scanner errorOphestra
This avoids discarding output thus appearing unresponsive. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-02-26internal/pkg: set container scheduling policyOphestra
This is not as necessary as it was for nix, since internal/pkg only unblocks exclusive artifacts one at a time. Still, this is useful when running alongside an unprivileged music player which cannot set itself to a higher priority. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-02-23internal/pkg/ir: raise string limit to 16 MiBOphestra
A string holds "current" hakurei source code. For now the compressed tarball is 4.9 MiB long. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-02-19internal/pkg: export layer promotionOphestra
This is a useful helper for external tooling. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-02-19internal/pkg: export seccomp presetsOphestra
This is useful for external tooling providing an execArtifact-like environment. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-02-17internal/pkg/ir: document reason for avoiding ident cacheOphestra
This got brought up earlier today as a potential optimisation. This change documents why it is not viable, and hopefully clears up some performance implications of using IRDecoder, namely that its decoding costs do not amortise. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-02-16internal/pkg: allow devel syscallsOphestra
This is required by the GLib test suite, and possibly others. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-02-15internal/pkg: expose extra methods to fileOphestra
This is useful for FileArtifact processing another stream. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-02-15internal/pkg: split off context commonOphestra
For making these methods available to RContext. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-02-11internal/pkg: skip resolved cure errorsOphestra
This significantly improves error resolution performance. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-02-11internal/pkg: buffer tar readerOphestra
This significantly improves performance and is a good assumption since the primary use case of FileArtifact is over the network. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-02-11internal/pkg: read buffer free listOphestra
Reader has a non-insignificant buffer that is worth saving as well. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-02-11internal/pkg: validate tar pathnamesOphestra
TContext no longer validates FileArtifact ahead of time, validation outcome is instead determined after consuming the reader to EOF. All data must therefore be treated as untrusted input until the reader is closed. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-02-07internal/pkg: skip duplicate earlyOphestra
This significantly increases IR generation performance. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-02-05internal/pkg: standardise artifact IROphestra
This should hopefully provide good separation between the artifact curing backend implementation and the (still work in progress) language. Making the IR parseable also guarantees uniqueness of the representation. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-02-03internal/pkg: improve error resolutionOphestra
This was taking way too long for early failures. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-29internal/pkg: set User-Agent headerOphestra
Avoid living under the default user agent and be at the mercy of some IDS. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-27internal/pkg: allow multiarchOphestra
The armv8l busybox binary release needs this to run correctly. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-27internal/pkg: encode checksum in identOphestra
This also rearranges the ident ir to be more predictable, and avoids an obvious and somewhat easy to get into inconsistent state. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-27internal/pkg: exclusive artifactsOphestra
This alleviates scheduler overhead when curing many artifacts. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-26internal/pkg: close gzip reader on successOphestra
The Close method panics otherwise. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-26internal/pkg: absolute hard linkOphestra
This cannot be relative since the curing process is not in the temp directory. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-25internal/pkg: expose response bodyOphestra
This uses the new measured reader provided by Cache. This should make httpArtifact zero-copy. Signed-off-by: Ophestra <cat@gensokyo.uk>