diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-01-08 08:23:16 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-01-08 08:23:16 +0900 |
| commit | 23df2ab9997dde216875c6139c8301aae93ab973 (patch) | |
| tree | a12e98152db56ecdbe30aa0045f05d7dd59a39f1 /internal/pkg/exec.go | |
| parent | 7bd4d7d0e6937c858e5c960931ae81e2fe59195a (diff) | |
internal/pkg: place ephemeral upperdir in tmp
This enables the use of directories made writable this way as scratch space.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/pkg/exec.go')
| -rw-r--r-- | internal/pkg/exec.go | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/internal/pkg/exec.go b/internal/pkg/exec.go index c12c9097..29753952 100644 --- a/internal/pkg/exec.go +++ b/internal/pkg/exec.go @@ -7,6 +7,7 @@ import ( "os" "runtime" "slices" + "strconv" "syscall" "time" @@ -325,7 +326,18 @@ func (a *execArtifact) cure(c *CureContext, hostNet bool) (err error) { } if a.paths[i].W { - z.OverlayEphemeral(b.dst, b.src...) + tempUpper, tempWork := temp.Append( + ".upper", strconv.Itoa(i), + ), temp.Append( + ".work", strconv.Itoa(i), + ) + if err = os.MkdirAll(tempUpper.String(), 0700); err != nil { + return + } + if err = os.MkdirAll(tempWork.String(), 0700); err != nil { + return + } + z.Overlay(b.dst, tempUpper, tempWork, b.src...) } else if len(b.src) == 1 { z.Bind(b.src[0], b.dst, 0) } else { |
