From a0b4e47acc228e48165966d8e139277b8f6f450e Mon Sep 17 00:00:00 2001 From: Ophestra Date: Wed, 29 Oct 2025 04:32:43 +0900 Subject: internal/outcome: rename from app This is less ambiguous, and more accurately describes the purpose of the package. Signed-off-by: Ophestra --- internal/app/finalise.go | 85 ------------------------------------------------ 1 file changed, 85 deletions(-) delete mode 100644 internal/app/finalise.go (limited to 'internal/app/finalise.go') diff --git a/internal/app/finalise.go b/internal/app/finalise.go deleted file mode 100644 index 6cb4f586..00000000 --- a/internal/app/finalise.go +++ /dev/null @@ -1,85 +0,0 @@ -package app - -import ( - "context" - "errors" - "fmt" - "os" - "os/user" - "sync/atomic" - - "hakurei.app/hst" - "hakurei.app/message" - "hakurei.app/system" -) - -func newWithMessage(msg string) error { return newWithMessageError(msg, os.ErrInvalid) } -func newWithMessageError(msg string, err error) error { - return &hst.AppError{Step: "finalise", Err: err, Msg: msg} -} - -// An outcome is the runnable state of a hakurei container via [hst.Config]. -type outcome struct { - // Supplementary group ids. Populated during finalise. - supp []string - // Resolved priv side operating system interactions. Populated during finalise. - sys *system.I - // Transmitted to shim. Populated during finalise. - state *outcomeState - // Kept for saving to [state]. - config *hst.Config - - // Whether the current process is in outcome.main. - active atomic.Bool - - ctx context.Context - syscallDispatcher -} - -func (k *outcome) finalise(ctx context.Context, msg message.Msg, id *hst.ID, config *hst.Config) error { - if ctx == nil || id == nil { - // unreachable - panic("invalid call to finalise") - } - if k.ctx != nil || k.sys != nil || k.state != nil { - // unreachable - panic("attempting to finalise twice") - } - k.ctx = ctx - - if err := config.Validate(); err != nil { - return err - } - - // hsu expects numerical group ids - supp := make([]string, len(config.Groups)) - for i, name := range config.Groups { - if gid, err := k.lookupGroupId(name); err != nil { - var unknownGroupError user.UnknownGroupError - if errors.As(err, &unknownGroupError) { - return newWithMessageError(fmt.Sprintf("unknown group %q", name), unknownGroupError) - } else { - return &hst.AppError{Step: "look up group by name", Err: err} - } - } else { - supp[i] = gid - } - } - - // early validation complete at this point - s := newOutcomeState(k.syscallDispatcher, msg, id, config, &Hsu{k: k}) - if err := s.populateLocal(k.syscallDispatcher, msg); err != nil { - return err - } - - sys := system.New(k.ctx, msg, s.uid.unwrap()) - if err := s.newSys(config, sys).toSystem(); err != nil { - return err - } - - k.sys = sys - k.supp = supp - k.state = s - k.config = config - return nil -} -- cgit v1.3.1