aboutsummaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)Author
2026-01-19internal/rosa: standard toolchain via 2-stage bootstrapOphestra
This implements the 2-stage bootstrap build without clumping the stages together in the cmake target. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-19internal/rosa: llvm bootstrap artifactsOphestra
This bootstraps the LLVM toolchain across multiple artifacts. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-19internal/rosa: llvm artifact abstractionOphestra
The llvm bootstrap is multi-stage by nature, and cannot be completed in a single artifact. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-19internal/rosa: cmake abstractionOphestra
This is a helper for generating cure script for a cmake-based project. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-19internal/rosa: ninja artifactOphestra
Generated by cmake, recommended format for llvm toolchain. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-19internal/rosa: cpython artifactOphestra
Dependency of llvm build scripts, also an optional cure dependency of ninja. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-19internal/rosa: zlib artifactOphestra
Dependency of llvm build scripts. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-19internal/rosa: cmake artifactOphestra
This is required for compiling the toolchain and many other programs. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-19internal/rosa: musl libc artifactOphestra
This will likely be included in Rosa OS. The installation is modified to be entirely contained in prefix. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-19internal/rosa: busybox from sourceOphestra
This will be part of the standard toolchain. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-19internal/rosa: kernel headersOphestra
This is required by the toolchain and many other programs. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-19internal/rosa: minimal rsync artifactOphestra
For installing kernel headers. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-19internal/rosa: bootstrap on gentoo stage3Ophestra
This contains a fully working musl+llvm toolchain and many build systems in a pretty small package. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-19internal/rosa: GNU make artifactOphestra
This compiles GNU make from source. This is unfortunately required by many programs, but is a cure dependency only. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-19internal/rosa: toolchain abstractionOphestra
This provides a clean and easy to use API over toolchains. A toolchain is an opaque set of artifacts and environment fixups. Exported toolchains should be functionally indistinguishable from each other. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-19internal/rosa: busybox binary artifactOphestra
This installs a statically linked busybox binary distribution for decompressing the gentoo stage3 tarball, since there is no native xz implementation. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-18internal/rosa: static etc artifactOphestra
This places configuration files with hardcoded content in /etc to silence test suites expecting them to be present. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-18cmd/mbf: command handlingOphestra
This tool is a frontend for bootstrapping hakurei via internal/pkg. Named mbf for now for "maiden's best friend" as a tribute to the DOOM source port. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-17internal/pkg: deduplicate dependency errorsOphestra
This significantly simplifies error reporting for caller. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-16internal/pkg: lock on-filesystem cacheOphestra
Any fine-grained file-based locking here significantly hurts performance and is not part of the use case of the package. This change guarantees exclusive access to prevent inconsistent state on the filesystem. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-16internal/pkg: parallelise scrubOphestra
This significantly improves scrubbing performance. Since the cache directory structure is friendly to simultaneous access, this is possible without synchronisation. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-15internal/pkg: cache computed identifiersOphestra
This eliminates duplicate identifier computations. The new implementation also significantly reduces allocations while computing identifier for a large dependency tree. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-14internal/pkg: optional dependency graph size limitOphestra
This provides a quick check against cyclic dependencies without hurting cure performance. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-13internal/pkg: zero atime and mtimeOphestra
This is significantly more practical than keeping track of them in directory flattening format and setting this in every non-artifact implementation. Only tarArtifact can have meaningful deterministic checksums that are not zero and zeroing them still keeps autotools happy. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-13internal/pkg: remove typeflag promotion loopOphestra
Expanding this enables sharing of code common between types. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-12internal/pkg: exec prefix verbose outputOphestra
This proxies program output through msg with a name and fd prefix. This also avoids introducing additional information to the container via process stdout/stderr. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-12internal/pkg: cure completion verbose messagesOphestra
This reports cure completions to the user. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-12internal/pkg: optionally named static fileOphestra
These are generally for generating configuration files or build scripts, naming them is quite useful. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-12internal/pkg: caller-supplied reporting name for execOphestra
This does not have a reasonable way of inferring the underlying name. For zero value it falls back to base of executable pathname. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-12internal/pkg: append user-facing name in messagesOphestra
This makes verbose messages much more useful. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-11internal/pkg: exec with specific timeoutOphestra
This change also updates the documentation of NewExec. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-11internal/pkg: do not discard the result of compactOphestra
This result was mistakenly unused resulting in incorrect identifiers for artifacts with duplicate dependencies. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-11container/check: return error backed by string typeOphestra
The struct turned out not necessary during initial implementation but was not unwrapped into its single string field. This change replaces it with the underlying string and removes the indirection. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-11container/check: intern absolute pathnamesOphestra
This improves performance in heavy users like internal/pkg. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-11nix: use package from module in defaultOphestra
This makes overriding hakurei easier. Also avoids building hakurei twice since nix does that for some reason. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-11container/init: configure interface loOphestra
This enables loopback networking when owning the net namespace. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-11internal/pkg: compare interfaces for host netOphestra
An upcoming improvement in the container init makes the current host net check return the same result for both cases. This change Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-09internal/pkg: pass context to file cureOphestra
This removes the left over embedded contexts. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-09internal/pkg: move dependency flooding to cacheOphestra
This imposes a hard upper limit to concurrency during dependency satisfaction and moves all dependency-related code out of individual implementations of Artifact. This change also includes ctx and msg as part of Cache. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-08internal/pkg: use short wait delayOphestra
The cure is condemned at the point of cancellation and all of its state is destroyed by the deferred cleanup, so it makes little sense to wait for it much. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-08internal/pkg: use correct artifact countOphestra
This updates buffer sizes and counters to use correct total artifact count. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-08internal/pkg: place ephemeral upperdir in tmpOphestra
This enables the use of directories made writable this way as scratch space. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-08internal/pkg: support explicit overlay mountOphestra
This removes all but the /work/ auto overlay behaviour and enables much greater flexibility. This also renames ExecContainerPath to ExecPath so it is easier to type. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-08internal/pkg: set container WaitDelayOphestra
This prevents a container from blocking forever after context is canceled. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-08internal/pkg: make tar temporary directory writableOphestra
This allows it to be renamed to work directory. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-08internal/pkg: reserve kind rangeOphestra
This is useful for custom implementations of Artifact. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-07internal/pkg: do not connect stdinOphestra
This introduces external state when verbose. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-07internal/pkg: tar optional fileOphestra
This allows tar to take a single-file directory Artifact as input. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-07internal/pkg: return reader for filesOphestra
This improves efficiency for cache hits. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-07internal/pkg: support tarball compressed via bzip2Ophestra
Signed-off-by: Ophestra <cat@gensokyo.uk>