aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/rosa/rosa.go
AgeCommit message (Collapse)Author
2026-05-19internal/rosa: evaluate packages lateOphestra
This also enables concurrent evaluation. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-05-19internal/rosa: create metadata alongside artifactOphestra
This enables deferring evaluation of azalea-based packages and fixes the longstanding quirk of version being disjoint from other metadata. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-05-18internal/rosa: track evaluation timeOphestra
Useful to track performance regressions over migrations. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-05-18internal/rosa: migrate GNU softwareOphestra
These are quite trivial, so migrate them in one pass. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-05-18internal/rosa: evaluate packages from fsOphestra
This migrates GNU sed to azalea, and resulting IR matches. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-05-18internal/rosa: initial azalea bindingsOphestra
Supported fields are still rather minimal, but evaluation works, and resulting artifacts cure correctly. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-05-17internal/rosa: pass stage alongside stateOphestra
This cleans up many function signatures. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-05-17internal/rosa: key metadata by stringOphestra
For upcoming azalea integration. The API is quite ugly right now to ease migration. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-05-12internal/pkg: optionally measure exec artifactOphestra
Useful for verifying deterministic output without enabling network access. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-05-07internal/rosa: configurable architectureOphestra
This enables curing via binfmt. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-05-07internal/pkg: optionally register binfmtOphestra
This transparently supports curing foreign exec artifacts. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-05-01internal/rosa/llvm: use llvm build systemOphestra
This removes the multistep bootstrap hack. Stage0 exceptions are also eliminated for a later change to bring the stage0 distribution down to just a bare toolchain, toybox and shell. This change also enables dynamic linking and ThinLTO. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-04-30internal/rosa: raise stage0 extra layersOphestra
This enables extras to override stage0 tarball. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-04-23internal/pkg: record cache variant on-diskOphestra
This makes custom artifacts much less error-prone to use. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-04-19internal/rosa: use builtin for checksum warningOphestra
This avoids having to configure the logger early. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-04-15internal/rosa: respect preferred job countOphestra
This discontinues use of nproc, and also overrides detection behaviour in ninja. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-04-14internal/rosa/cmake: remove variantOphestra
This has no effect outside formatting of name and is a remnant of the old llvm helpers. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-04-14internal/rosa/llvm: migrate runtimes and clangOphestra
This eliminates most newLLVM family of functions. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-04-14internal/rosa/llvm: migrate muslOphestra
This removes the pointless special treatment given to musl. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-04-14internal/rosa/llvm: migrate compiler-rtOphestra
The newLLVM family of functions predate the package system. This change migrates compiler-rt without changing any resulting artifacts. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-04-13internal/rosa: helpers for common url formatsOphestra
This cleans up call site of NewPackage. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-04-13internal/rosa: assume file source is xz-compressedOphestra
XZ happens to be the only widely-used format that is awful to deal with, everything else is natively supported. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-04-13internal/rosa: wrap per-arch valuesOphestra
This is cleaner syntax in some specific cases. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-04-06internal/rosa/stage0: add riscv64 tarballOphestra
This had not yet passed all test suites because emulator is prohibitively slow. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-03-31internal/rosa: use type P in helper interfaceOphestra
This is easier to type and serialises correctly. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-03-26internal/rosa: key-value typeOphestra
This type is used very frequently. The new type is much easier to type and can receive helper methods eventually if needed. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-03-26internal/rosa: set PYTHONUNBUFFERED=1Ophestra
Some python tools try to be clever and buffers output. This makes the build process appear to hang and is quite frustrating. Instead of trying to address this on a case-by-case basis, this is turned off globally for the interpreter. 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-17internal/rosa: export source kindOphestra
This is set for an exported field, so export the constants as well. 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-13internal/rosa: collection meta-artifactOphestra
This is a stub FloodArtifact for concurrently curing multiple artifacts. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-03-13internal/rosa: represent runtime dependenciesOphestra
This also resolves indirect dependencies, reducing noise. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-03-05internal/rosa/llvm: separate major versionOphestra
For pathname formatting at compile time. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-03-01internal/rosa: general helper abstractionOphestra
This greatly increases code sharing and makes implementations far simpler. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-02-28internal/rosa: stricter cure-script optionsOphestra
This change also moves .cure-script out of /system/bin. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-02-23internal/rosa: make toolchain optionalOphestra
The final Rosa OS image does not need the toolchain. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-02-15internal/rosa: fixed-size toolchain enumOphestra
This fits in an inlined uint32 IR value. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-02-11internal/rosa: toolchain type methodsOphestra
This improves readability for toolchain-specific checks. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-02-10internal/rosa: use self-hosted stage0Ophestra
This removes the bootstrap dependency on Gentoo stage3 tarball. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-02-10internal/rosa: consistent stage0 pathsOphestra
This makes using the gentoo stage3 as our stage0 compatible with Rosa OS stage0 tarballs. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-02-09internal/rosa: rename stage0 toolchainOphestra
This is stage0 relative to Rosa OS, and stage3 relative to the toolchain it is compiled on (Gentoo in this case). Referring to the toolchain itself as stage3 is counterintuitive and misleading. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-02-02internal/rosa: use stage3 mirrorOphestra
These get taken down periodically and causes way too many rebuilds when they are taken down. Use mirror until a more elegant solution is available. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-30internal/rosa: early toybox variantOphestra
This is a variant of toybox with unfinished tools enabled, for artifacts that will end up in a dependency loop without them. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-29internal/rosa: flags for toolchain-dependent artifactOphestra
This is much cleaner to add extra flags to. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-29internal/rosa: replace busybox with toyboxOphestra
The busybox artifact does not run on aarch64, and the workarounds required for it to compile successfully on x86_64 is unacceptably shaky. This change fully replaces it with toybox. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-29internal/rosa: replace busybox dash with mkshOphestra
Toybox does not provide a shell, mksh fills that gap. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-27internal/rosa: add arm64 stringsOphestra
This enables building on arm64. Signed-off-by: Ophestra <cat@gensokyo.uk>
2026-01-27internal/rosa: cross-platform stage3Ophestra
The stage3 binary seed is arch-specific. 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/rosa: patch ignore whitespaceOphestra
This makes it work better with patches emitted by git. Signed-off-by: Ophestra <cat@gensokyo.uk>