From 0e484be9bd196b02bf12e4db94760cb260622e72 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 12 Jan 2021 10:06:27 -0800 Subject: [PATCH 1/2] examples/simple: require an input directory Signed-off-by: Solomon Hykes --- examples/simple/simple.cue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/simple/simple.cue b/examples/simple/simple.cue index 8d8b203d..229e6ce2 100644 --- a/examples/simple/simple.cue +++ b/examples/simple/simple.cue @@ -17,7 +17,8 @@ let base=alpine & { www: { source: { - #dagger: compute: [] + // Make this undefined on purpose to require an input directory. + #dagger: compute: _ } host: string From 8b105003bbb13ef456bce82b992c829c0ddb81c9 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 12 Jan 2021 10:31:50 -0800 Subject: [PATCH 2/2] Component.Compute: force "real" solve. Fixes #14. Signed-off-by: Solomon Hykes --- dagger/component.go | 16 ++++++++++++---- examples/repro-14/main.cue | 13 +++++++++++++ 2 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 examples/repro-14/main.cue diff --git a/dagger/component.go b/dagger/component.go index ae0d0146..d831d4aa 100644 --- a/dagger/component.go +++ b/dagger/component.go @@ -41,11 +41,19 @@ func (c *Component) ComputeScript() (*Script, error) { } // Compute the configuration for this component. -// Note that we simply execute the underlying compute script from an -// empty filesystem state. -// (It is never correct to pass an input filesystem state to compute a component) +// +// Difference with Execute: +// +// 1. Always start with an empty fs state (Execute may receive any state as input) +// 2. Always solve at the end (Execute is lazy) +// func (c *Component) Compute(ctx context.Context, s Solver, out Fillable) (FS, error) { - return c.Execute(ctx, s.Scratch(), out) + fs, err := c.Execute(ctx, s.Scratch(), out) + if err != nil { + return fs, err + } + _, err = fs.ReadDir(ctx, "/") + return fs, err } // A component implements the Executable interface by returning its diff --git a/examples/repro-14/main.cue b/examples/repro-14/main.cue new file mode 100644 index 00000000..b2ebe7df --- /dev/null +++ b/examples/repro-14/main.cue @@ -0,0 +1,13 @@ +package main + +www: { + + source: { + #dagger: compute: [ + { + do: "fetch-container" + ref: "lalalalala", + }, + ] + } +}