aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/app/start.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-01-19 18:38:13 +0900
committerOphestra <cat@gensokyo.uk>2025-01-19 18:38:13 +0900
commit2f705068658bf9c47a5fa829105111e46a7732a0 (patch)
tree4f75a66cb84cf5452c865afbdb9784adfded79b3 /internal/app/start.go
parentcae567c1090ef12e9837f7dec4f43d030ec8f6b2 (diff)
helper/bwrap: move sync to helper state
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/app/start.go')
-rw-r--r--internal/app/start.go26
1 files changed, 10 insertions, 16 deletions
diff --git a/internal/app/start.go b/internal/app/start.go
index a0729c32..1755b333 100644
--- a/internal/app/start.go
+++ b/internal/app/start.go
@@ -45,32 +45,19 @@ func (a *app) Run(ctx context.Context, rs *RunState) error {
}
}
- a.shim = new(shim.Shim)
- // keep a reference to shim payload for sync fd
- payload := &shim.Payload{
- Argv: a.seal.command,
- Exec: shimExec,
- Bwrap: a.seal.sys.bwrap,
- Home: a.seal.sys.user.data,
-
- Verbose: fmsg.Verbose(),
- }
-
// startup will go ahead, commit system setup
if err := a.seal.sys.Commit(); err != nil {
return err
}
a.seal.sys.needRevert = true
- // export sync pipe from sys
- a.seal.sys.bwrap.SetSync(a.seal.sys.Sync())
-
// start shim via manager
+ a.shim = new(shim.Shim)
waitErr := make(chan error, 1)
if startTime, err := a.shim.Start(
a.seal.sys.user.as,
a.seal.sys.user.supp,
- payload,
+ a.seal.sys.Sync(),
); err != nil {
return err
} else {
@@ -88,7 +75,14 @@ func (a *app) Run(ctx context.Context, rs *RunState) error {
}()
// send payload
- if err = a.shim.Serve(shimSetupCtx, payload); err != nil {
+ if err = a.shim.Serve(shimSetupCtx, &shim.Payload{
+ Argv: a.seal.command,
+ Exec: shimExec,
+ Bwrap: a.seal.sys.bwrap,
+ Home: a.seal.sys.user.data,
+
+ Verbose: fmsg.Verbose(),
+ }); err != nil {
return err
}