aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/pkg/exec.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-01-08 08:23:16 +0900
committerOphestra <cat@gensokyo.uk>2026-01-08 08:23:16 +0900
commit23df2ab9997dde216875c6139c8301aae93ab973 (patch)
treea12e98152db56ecdbe30aa0045f05d7dd59a39f1 /internal/pkg/exec.go
parent7bd4d7d0e6937c858e5c960931ae81e2fe59195a (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.go14
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 {