diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-10-19 03:53:20 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-10-19 04:11:38 +0900 |
| commit | 699c19e972a3cbcc714403aedffcb5ff74386cfc (patch) | |
| tree | 4f279d0e917d21dc8e40409691b93bbbf44c7667 /internal/app/spruntime.go | |
| parent | b5b30aea2eca15b8a0c9e01d6e3d0e844c99890c (diff) | |
hst/container: optional runtime and tmpdir sharing
Sharing and persisting these directories do not always make sense. Make it optional here.
Closes #16.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/app/spruntime.go')
| -rw-r--r-- | internal/app/spruntime.go | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/internal/app/spruntime.go b/internal/app/spruntime.go index 35ebff05..d8c5af94 100644 --- a/internal/app/spruntime.go +++ b/internal/app/spruntime.go @@ -72,11 +72,13 @@ type spRuntimeOp struct { } func (s *spRuntimeOp) toSystem(state *outcomeStateSys) error { - runtimeDir, runtimeDirInst := s.commonPaths(state.outcomeState) - state.sys.Ensure(runtimeDir, 0700) - state.sys.UpdatePermType(system.User, runtimeDir, acl.Execute) - state.sys.Ensure(runtimeDirInst, 0700) - state.sys.UpdatePermType(system.User, runtimeDirInst, acl.Read, acl.Write, acl.Execute) + if state.Container.Flags&hst.FShareRuntime != 0 { + runtimeDir, runtimeDirInst := s.commonPaths(state.outcomeState) + state.sys.Ensure(runtimeDir, 0700) + state.sys.UpdatePermType(system.User, runtimeDir, acl.Execute) + state.sys.Ensure(runtimeDirInst, 0700) + state.sys.UpdatePermType(system.User, runtimeDirInst, acl.Read, acl.Write, acl.Execute) + } if state.et&hst.EWayland != 0 { s.SessionType = sessionTypeWayland @@ -106,10 +108,13 @@ func (s *spRuntimeOp) toContainer(state *outcomeStateParams) error { } - _, runtimeDirInst := s.commonPaths(state.outcomeState) - state.params. - Tmpfs(fhs.AbsRunUser, 1<<12, 0755). - Bind(runtimeDirInst, state.runtimeDir, bits.BindWritable) + state.params.Tmpfs(fhs.AbsRunUser, 1<<12, 0755) + if state.Container.Flags&hst.FShareRuntime != 0 { + _, runtimeDirInst := s.commonPaths(state.outcomeState) + state.params.Bind(runtimeDirInst, state.runtimeDir, bits.BindWritable) + } else { + state.params.Mkdir(state.runtimeDir, 0700) + } return nil } |
