aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/pkg/exec.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/pkg/exec.go')
-rw-r--r--internal/pkg/exec.go46
1 files changed, 23 insertions, 23 deletions
diff --git a/internal/pkg/exec.go b/internal/pkg/exec.go
index 289b7f97..6e050b15 100644
--- a/internal/pkg/exec.go
+++ b/internal/pkg/exec.go
@@ -186,11 +186,15 @@ func (a *execArtifact) cure(c *CureContext, hostNet bool) (err error) {
cures = runtime.NumCPU()
}
+ overlayTempIndex := -1
paths := make([][2]*check.Absolute, len(a.paths))
for i, p := range a.paths {
if p.P == nil || p.A == nil {
return os.ErrInvalid
}
+ if p.P.Is(fhs.AbsTmp) {
+ overlayTempIndex = i
+ }
paths[i][1] = p.P
}
@@ -275,14 +279,26 @@ func (a *execArtifact) cure(c *CureContext, hostNet bool) (err error) {
if len(paths) > 0 && paths[0][1].Is(fhs.AbsRoot) {
z.OverlayEphemeral(fhs.AbsRoot, paths[0][0])
paths = paths[1:]
+ overlayTempIndex--
}
- var overlayTemp *check.Absolute
- for _, b := range paths {
- if b[1].Is(fhs.AbsTmp) {
- if overlayTemp != nil {
- z.Bind(overlayTemp, fhs.AbsTmp, 0)
+
+ for i, b := range paths {
+ if i == overlayTempIndex {
+ temp := c.GetTempDir()
+ tempUpper := temp.Append("upper")
+ if err = os.MkdirAll(tempUpper.String(), 0700); err != nil {
+ return
+ }
+ tempWork := temp.Append("work")
+ if err = os.MkdirAll(tempWork.String(), 0700); err != nil {
+ return
}
- overlayTemp = b[0]
+ z.Overlay(
+ fhs.AbsTmp,
+ tempUpper,
+ tempWork,
+ b[0],
+ )
continue
}
z.Bind(b[0], b[1], 0)
@@ -293,28 +309,12 @@ func (a *execArtifact) cure(c *CureContext, hostNet bool) (err error) {
fhs.AbsRoot.Append("work"),
std.BindWritable|std.BindEnsure,
)
- if overlayTemp == nil {
+ if overlayTempIndex < 0 {
z.Bind(
c.GetTempDir(),
fhs.AbsTmp,
std.BindWritable|std.BindEnsure,
)
- } else {
- temp := c.GetTempDir()
- tempUpper := temp.Append("upper")
- if err = os.MkdirAll(tempUpper.String(), 0700); err != nil {
- return
- }
- tempWork := temp.Append("work")
- if err = os.MkdirAll(tempWork.String(), 0700); err != nil {
- return
- }
- z.Overlay(
- fhs.AbsTmp,
- tempUpper,
- tempWork,
- overlayTemp,
- )
}
z.Proc(fhs.AbsProc).Dev(fhs.AbsDev, true)