From ffc7c04f2da47d21b222d5b88ec7d45ef42f2152 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Va=C5=A1ek?= Date: Wed, 28 May 2025 14:40:03 +0200 Subject: [PATCH] Fix non-containerized build/run /w external deps MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It's necessary to call "go mod tidy" on scaffolded code. Signed-off-by: Matej VaĊĦek --- pkg/functions/runner.go | 17 +++++++++++++++-- pkg/oci/go_builder.go | 12 +++++++++++- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/pkg/functions/runner.go b/pkg/functions/runner.go index 603aa22902..37342ff1c6 100644 --- a/pkg/functions/runner.go +++ b/pkg/functions/runner.go @@ -110,8 +110,7 @@ func runGo(ctx context.Context, job *Job) (err error) { fmt.Printf("cd %v && go build -o f.bin\n", job.Dir()) } - // Build - args := []string{"build", "-o", "f.bin"} + args := []string{"mod", "tidy"} if job.verbose { args = append(args, "-v") } @@ -124,6 +123,20 @@ func runGo(ctx context.Context, job *Job) (err error) { return } + // Build + args = []string{"build", "-o", "f.bin"} + if job.verbose { + args = append(args, "-v") + } + cmd = exec.CommandContext(ctx, "go", args...) + cmd.Dir = job.Dir() + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + err = cmd.Run() + if err != nil { + return + } + // Run // --- bin := filepath.Join(job.Dir(), "f.bin") diff --git a/pkg/oci/go_builder.go b/pkg/oci/go_builder.go index 95038f32b8..d00b2ab97a 100644 --- a/pkg/oci/go_builder.go +++ b/pkg/oci/go_builder.go @@ -86,8 +86,18 @@ func goBuild(cfg buildJob, p v1.Platform) (binPath string, err error) { fmt.Printf(" %v\n", filepath.Base(outpath)) } + cmd := exec.CommandContext(cfg.ctx, gobin, "mod", "tidy") + cmd.Env = envs + cmd.Dir = cfg.buildDir() + cmd.Stderr = os.Stderr + cmd.Stdout = os.Stdout + err = cmd.Run() + if err != nil { + return "", fmt.Errorf("cannot sync deps: %w", err) + } + // Build the function - cmd := exec.CommandContext(cfg.ctx, gobin, args...) + cmd = exec.CommandContext(cfg.ctx, gobin, args...) cmd.Env = envs cmd.Dir = cfg.buildDir() cmd.Stderr = os.Stderr