From ad6504e6b504277bbc7b60d093cdccd4f3baaa4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Thu, 19 Dec 2019 12:17:44 +0100 Subject: Fix abs path handling in module mounts Fixes #6622 --- modules/collect.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'modules/collect.go') diff --git a/modules/collect.go b/modules/collect.go index de71b50a6..0ac766fb9 100644 --- a/modules/collect.go +++ b/modules/collect.go @@ -548,7 +548,7 @@ func (c *collector) loadModules() error { return nil } -func (c *collector) normalizeMounts(owner Module, mounts []Mount) ([]Mount, error) { +func (c *collector) normalizeMounts(owner *moduleAdapter, mounts []Mount) ([]Mount, error) { var out []Mount dir := owner.Dir() @@ -562,8 +562,16 @@ func (c *collector) normalizeMounts(owner Module, mounts []Mount) ([]Mount, erro mnt.Source = filepath.Clean(mnt.Source) mnt.Target = filepath.Clean(mnt.Target) + var sourceDir string + + if owner.projectMod && filepath.IsAbs(mnt.Source) { + // Abs paths in the main project is allowed. + sourceDir = mnt.Source + } else { + sourceDir = filepath.Join(dir, mnt.Source) + } + // Verify that Source exists - sourceDir := filepath.Join(dir, mnt.Source) _, err := c.fs.Stat(sourceDir) if err != nil { continue -- cgit v1.2.3