2b93631f52
cmd/mbf: use stage2 musl when possible
...
This avoids pulling in the stage3 toolchain when it is not requested.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-02-25 01:05:49 +09:00
e1b8f40add
cmd/mbf: cache dir via environment
...
This is much less cumbersome than dragging the flag around all the time.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-02-19 15:32:25 +09:00
6df0d37c5a
cmd/mbf: Rosa OS container helper
...
This sets up a Rosa OS container with its shell as the initial process.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-02-19 15:12:16 +09:00
d888d09b6d
cmd/mbf: explicit help command
...
Not having this command is counterintuitive.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-02-19 13:55:05 +09:00
0061d11f93
internal/rosa: use self-hosted stage0
...
This removes the bootstrap dependency on Gentoo stage3 tarball.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-02-10 22:31:08 +09:00
fb101a02f2
internal/rosa: self-host stage0 tarball
...
This replaces gentoo stage3 tarballs.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-02-10 21:22:46 +09:00
096a25ad3a
cmd/mbf: dump IR of artifact presets
...
This exposes IR outside test cases, useful for verifying correctness of alternative IR emitters.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-02-07 17:21:43 +09:00
7877b4e627
cmd/mbf: print extra stage3 information
...
This includes ident of all three stages and the matching checksum if check is passing.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-02-02 18:33:16 +09:00
b26bc05bb0
internal/rosa: remove unused receiver
...
This returns the preset itself, it is up to the caller to load the underlying artifact.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-29 17:52:50 +09:00
e76bc6a13a
internal/rosa: resolve preset by name
...
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-28 20:57:51 +09:00
66118ba941
internal/rosa: gawk artifact
...
Replaces broken awk in busybox.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-28 01:22:42 +09:00
f1758a6fa8
internal/rosa: nss artifacts
...
Not used by anything for now, but will be part of Rosa OS.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-27 08:17:58 +09:00
88aaa4497c
internal/rosa/hakurei: dist tarball
...
The patch will be removed in the next release.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-27 07:34:45 +09:00
18918d9a0d
internal/rosa: fuse artifact
...
Required by hakurei for sharefs.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-27 05:34:42 +09:00
380ca4e022
internal/rosa: pytest artifact
...
Required by libfuse. This pulls in many dependencies.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-27 05:20:37 +09:00
50153788ef
internal/rosa: hakurei artifact
...
This does not yet have fuse from staging. Everything else works perfectly, though.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-27 02:24:49 +09:00
c84fe63217
internal/rosa: various X artifacts
...
Required by xcb which is required by hakurei.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-27 02:02:49 +09:00
0bd6a18326
internal/rosa: acl artifact
...
Required by hakurei.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-26 07:38:56 +09:00
504f5d28fe
internal/rosa: libseccomp artifact
...
Required by hakurei.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-26 05:28:36 +09:00
3eadd5c580
internal/rosa: gperf artifact
...
Required by libseccomp.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-26 05:25:39 +09:00
4d29333807
internal/rosa: wayland-protocols artifact
...
Required by hakurei.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-26 05:13:30 +09:00
e1533fa4c6
internal/rosa: wayland artifact
...
Required by hakurei.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-26 05:10:35 +09:00
9a74d5273d
internal/rosa: libgd artifact
...
Required by graphviz which is required by wayland.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-26 04:20:11 +09:00
fecb963e85
internal/rosa: libxml2 artifact
...
Required by wayland. Release tarball is xz only, unfortunately.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-26 03:47:42 +09:00
cd9da57f20
internal/rosa: libexpat artifact
...
Required by wayland.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-26 03:15:25 +09:00
c6a95f5a6a
internal/rosa: meson artifact
...
Required by wayland and pipewire.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-26 03:03:21 +09:00
228489371d
internal/rosa: setuptools artifact
...
Apparently the only way to install python stuff offline.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-26 02:28:47 +09:00
490471d22b
cmd/mbf: verbose by default
...
It usually does not make sense to use this without verbose.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-26 02:12:56 +09:00
763d2572fe
internal/rosa: pkg-config artifact
...
Used by hakurei and many other programs.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-26 01:26:54 +09:00
3224a7da63
cmd/mbf: disable threshold by default
...
This is not very useful.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-26 00:05:59 +09:00
20790af71e
internal/rosa: lazy initialise all artifacts
...
This improves performance, though not as drastically as lazy initialising llvm.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-25 01:43:18 +09:00
b6a66acfe4
internal/rosa: git artifact
...
This is required by the clang unit and regression tests.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-21 07:00:14 +09:00
f06d7fd387
cmd/mbf: expose some artifacts for curing
...
This will remain until dist is successfully bootstrapped.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-21 05:18:08 +09:00
d933234784
internal/pkg: make checksum available to cure
...
This enables deduplication by value as implemented in execArtifact.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-19 21:29:56 +09:00
1c49c75f95
cmd/mbf: toolchain 3-stage non-determinism check
...
This unfortunately fails right now. Requires further investigation.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2026-01-19 04:40:44 +09:00
2a9525c77a
cmd/mbf: command handling
...
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-18 22:19:19 +09:00
c9cd16fd2a
cmd/sharefs: prepare directory early
...
This change also checks against filesystem daemon running as root early.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2025-12-27 23:17:02 +09:00
e42ea32dbe
nix: configure sharefs via fileSystems
...
Turns out this did not work because in the vm test harness, virtualisation.fileSystems completely and silently overrides fileSystems, causing its contents to not even be evaluated anymore. This is not documented as far as I can tell, and is not obvious by any stretch of the imagination. The current hack is cargo culted from nix-community/impermanence and hopefully lasts until this project fully replaces nix.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2025-12-27 23:14:08 +09:00
e7982b4ee9
cmd/sharefs: create directory as root
...
This optional behaviour is required on NixOS as it is otherwise impossible to set this up: systemd.mounts breaks startup order somehow even though my unit looks identical to generated ones, fileSystems does not support any kind of initialisation or ordering other than against other mount points.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2025-12-27 22:14:33 +09:00
ef1ebf12d9
cmd/sharefs: handle mount -t fuse.sharefs
...
This should have been handled in a custom option parsing function, but that much extra complexity is unnecessary for this edge case. Honestly I do not know why libfuse does not handle this itself.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2025-12-27 20:49:27 +09:00
775a9f57c9
cmd/sharefs: check option parsing behaviour
...
This change makes it possible to check parseOpts behaviour as part of Go tests.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2025-12-27 17:33:12 +09:00
2f8ca83376
cmd/sharefs: containerise filesystem daemon
...
This replaces the forking daemonise libfuse function which prevents Go callbacks from calling into the runtime. This also enforces least privilege on the daemon process.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2025-12-27 10:16:35 +09:00
2e5362e536
cmd/sharefs: opaque setup state
...
This allows unrestricted use of the type system and prepares setup code for cross-process initialisation.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2025-12-27 04:14:00 +09:00
6d3bd27220
cmd/sharefs: expand fuse_main
...
This change should not change behaviour other than making output more consistent.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2025-12-27 02:30:28 +09:00
a27305cb4a
cmd/sharefs: improve help message
...
This improves consistency with the fuse_main help message.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2025-12-27 02:20:41 +09:00
0e476c5e5b
cmd/sharefs: allocate sharefs_private early
...
This also removes global state used by sharefs_init.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2025-12-26 08:08:41 +09:00
b77c1ecfdb
cmd/sharefs/test: check option handling
...
This verifies behaviour related to setuid/setgid when starting as root.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2025-12-26 05:28:45 +09:00
d597592e1f
cmd/sharefs: rename fuse-helper to fuse-operations
...
This is not really just library wrapper functions, but instead implements the callbacks, so fuse-operations makes more sense.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2025-12-26 03:19:32 +09:00
056f5b12d4
cmd/sharefs: move translate_pathname body to macro wrapper
...
This is never called directly anywhere and it is simple enough to be included in the macro. This avoids passing the pointer around and dereferencing errno location, resulting in over 5% increase in throughput on the clang build. No change in the gcc build though.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2025-12-26 02:10:59 +09:00
da2bb546ba
cmd/sharefs: remove readlink
...
This filesystem does not support symbolic links, so readlink is not useful, and unreachable in this case because of the check in getattr.
Signed-off-by: Ophestra <cat@gensokyo.uk >
2025-12-25 06:00:58 +09:00