From 2078c14379f70b68105450488f82d73971cf9846 Mon Sep 17 00:00:00 2001 From: Seongmin Lee Date: Tue, 21 Jul 2026 16:00:57 +0900 Subject: [PATCH] spindle: exclude microvm engine on non-linux machines Signed-off-by: Seongmin Lee --- spindle/server.go | 16 ++-------------- spindle/server_engines_linux.go | 33 +++++++++++++++++++++++++++++++++ spindle/server_engines_other.go | 28 ++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+), 14 deletions(-) create mode 100644 spindle/server_engines_linux.go create mode 100644 spindle/server_engines_other.go diff --git a/spindle/server.go b/spindle/server.go index 408a7e4c..9a65b924 100644 --- a/spindle/server.go +++ b/spindle/server.go @@ -35,9 +35,6 @@ import ( "tangled.org/core/spindle/config" "tangled.org/core/spindle/db" "tangled.org/core/spindle/engine" - "tangled.org/core/spindle/engines/dummy" - "tangled.org/core/spindle/engines/microvm" - "tangled.org/core/spindle/engines/nixery" "tangled.org/core/spindle/git" "tangled.org/core/spindle/models" "tangled.org/core/spindle/queue" @@ -357,21 +354,12 @@ func Run(ctx context.Context) error { return fmt.Errorf("failed to setup db: %w", err) } - nixeryEng, err := nixery.New(ctx, cfg) + engines, err := buildEngines(ctx, cfg, d) if err != nil { return err } - microvmEng, err := microvm.New(ctx, cfg, d) - if err != nil { - return err - } - - s, err := New(ctx, cfg, d, map[string]models.Engine{ - "nixery": nixeryEng, - "microvm": microvmEng, - "dummy": dummy.New(log.FromContext(ctx)), - }) + s, err := New(ctx, cfg, d, engines) if err != nil { return err } diff --git a/spindle/server_engines_linux.go b/spindle/server_engines_linux.go new file mode 100644 index 00000000..79a808c8 --- /dev/null +++ b/spindle/server_engines_linux.go @@ -0,0 +1,33 @@ +//go:build linux + +package spindle + +import ( + "context" + + "tangled.org/core/log" + "tangled.org/core/spindle/config" + "tangled.org/core/spindle/db" + "tangled.org/core/spindle/engines/dummy" + "tangled.org/core/spindle/engines/microvm" + "tangled.org/core/spindle/engines/nixery" + "tangled.org/core/spindle/models" +) + +func buildEngines(ctx context.Context, cfg *config.Config, d *db.DB) (map[string]models.Engine, error) { + nixeryEng, err := nixery.New(ctx, cfg) + if err != nil { + return nil, err + } + + microvmEng, err := microvm.New(ctx, cfg, d) + if err != nil { + return nil, err + } + + return map[string]models.Engine{ + "nixery": nixeryEng, + "microvm": microvmEng, + "dummy": dummy.New(log.FromContext(ctx)), + }, nil +} diff --git a/spindle/server_engines_other.go b/spindle/server_engines_other.go new file mode 100644 index 00000000..e7a9320d --- /dev/null +++ b/spindle/server_engines_other.go @@ -0,0 +1,28 @@ +//go:build !linux + +package spindle + +import ( + "context" + + "tangled.org/core/log" + "tangled.org/core/spindle/config" + "tangled.org/core/spindle/db" + "tangled.org/core/spindle/engines/dummy" + "tangled.org/core/spindle/engines/nixery" + "tangled.org/core/spindle/models" +) + +// microvm requires cgroup v2, KVM, and network namespaces, which only exist +// on Linux, so it's excluded here in favor of the engines that don't need them. +func buildEngines(ctx context.Context, cfg *config.Config, d *db.DB) (map[string]models.Engine, error) { + nixeryEng, err := nixery.New(ctx, cfg) + if err != nil { + return nil, err + } + + return map[string]models.Engine{ + "nixery": nixeryEng, + "dummy": dummy.New(log.FromContext(ctx)), + }, nil +} -- 2.51.2