8311: Ensure git tree tmpdir is readable by container.
authorTom Clegg <tclegg@veritasgenetics.com>
Thu, 14 Dec 2017 20:56:18 +0000 (15:56 -0500)
committerTom Clegg <tclegg@veritasgenetics.com>
Thu, 14 Dec 2017 20:56:18 +0000 (15:56 -0500)
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tclegg@veritasgenetics.com>

services/crunch-run/git_mount.go
services/crunch-run/git_mount_test.go

index eacfdec91855776d0b777d59afa0305df6abd42d..80086b9c3c2270176acc35c7691a379d60a1c5da 100644 (file)
@@ -3,6 +3,7 @@ package main
 import (
        "fmt"
        "net/url"
+       "os"
        "regexp"
 
        "git.curoverse.com/arvados.git/sdk/go/arvados"
@@ -88,5 +89,9 @@ func (gm gitMount) extractTree(ac IArvadosClient, dir string, token string) erro
        if err != nil {
                return fmt.Errorf("checkout failed: %s", err)
        }
+       err = os.Chmod(dir, 0755)
+       if err != nil {
+               return fmt.Errorf("chmod %o %q: %s", 0755, dir, err)
+       }
        return nil
 }
index 0161abbc55588adf852210b4881c51edfccdf228..39254df300ee4180309272162ca0f11dae1a9efd 100644 (file)
@@ -67,6 +67,12 @@ func (s *GitMountSuite) TestextractTree(c *check.C) {
 
        // Ensure there's no extra stuff like a ".git" dir
        s.checkTmpdirContents(c, []string{"dir1"})
+
+       // Ensure tmpdir is world-readable and world-executable so the
+       // UID inside the container can use it.
+       fi, err = os.Stat(s.tmpdir)
+       c.Check(err, check.IsNil)
+       c.Check(fi.Mode()&os.ModePerm, check.Equals, os.FileMode(0755))
 }
 
 // Commit 5ebfab0 is not the tip of any branch or tag, but is