diff --git a/client/solve.go b/client/solve.go index 1791b8ac01dcd..568218b28b045 100644 --- a/client/solve.go +++ b/client/solve.go @@ -35,7 +35,8 @@ import ( type SolveOpt struct { Exports []ExportEntry - LocalDirs map[string]string + LocalDirs map[string]string // Deprecated: use LocalFiles + LocalFiles map[string]fsutil.FS OCIStores map[string]content.Store SharedKey string Frontend string @@ -90,7 +91,19 @@ func (c *Client) solve(ctx context.Context, def *llb.Definition, runGateway runG return nil, errors.New("invalid with def and cb") } - syncedDirs, err := prepareSyncedFiles(def, opt.LocalDirs) + sourceFS := make(map[string]fsutil.FS) + for k, fs := range opt.LocalFiles { + sourceFS[k] = fs + } + for k, dir := range opt.LocalDirs { + fs, err := fsutil.NewFS(dir) + if err != nil { + return nil, err + } + sourceFS[k] = fs + } + + syncedDirs, err := prepareSyncedFiles(def, sourceFS) if err != nil { return nil, err } @@ -361,16 +374,7 @@ func (c *Client) solve(ctx context.Context, def *llb.Definition, runGateway runG return res, nil } -func prepareSyncedFiles(def *llb.Definition, localDirs map[string]string) (filesync.StaticDirSource, error) { - localFiles := make(map[string]fsutil.FS) - for name, d := range localDirs { - fs, err := fsutil.NewFS(d) - if err != nil { - return nil, err - } - localFiles[name] = fs - } - +func prepareSyncedFiles(def *llb.Definition, localFiles map[string]fsutil.FS) (filesync.StaticDirSource, error) { resetUIDAndGID := func(p string, st *fstypes.Stat) fsutil.MapResult { st.Uid = 0 st.Gid = 0