From 8203a6264c6eccf5dc4660381c80e6f2a2d86cb3 Mon Sep 17 00:00:00 2001 From: Raphael Vigee Date: Tue, 17 Dec 2024 21:01:05 +0100 Subject: [PATCH 1/2] Add some smart for hardlink to symlink --- sandbox/sandbox.go | 20 ++++++++++++++++---- utils/xstarlark/fmt/fmt.go | 6 ++++++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/sandbox/sandbox.go b/sandbox/sandbox.go index e5aae200..cffc070d 100644 --- a/sandbox/sandbox.go +++ b/sandbox/sandbox.go @@ -200,14 +200,26 @@ func Make(ctx context.Context, cfg MakeConfig) error { } untarDedup.Add(to) - err := xfs.CreateParentDir(to) + err = xfs.CreateParentDir(to) if err != nil { return err } - err = os.Link(file.From, to) - if err != nil { - return fmt.Errorf("make: link %v to %v: %w", file.From, to, err) + target, err := os.Readlink(file.From) + if err == nil { + if !filepath.IsAbs(target) { + target = filepath.Join(filepath.Dir(file.From), target) + } + + err = os.Symlink(target, to) + if err != nil { + return err + } + } else { + err = os.Link(file.From, to) + if err != nil { + return fmt.Errorf("make: link %v to %v: %w", file.From, to, err) + } } if cfg.ProgressLinks != nil { diff --git a/utils/xstarlark/fmt/fmt.go b/utils/xstarlark/fmt/fmt.go index 71aad2aa..c05c4dba 100644 --- a/utils/xstarlark/fmt/fmt.go +++ b/utils/xstarlark/fmt/fmt.go @@ -300,6 +300,12 @@ func (f *formatter) formatStmt(w Writer, sstmt syntax.Stmt) error { return err } case *syntax.ReturnStmt: + if stmt.Result == nil { + w.WriteString("return") + + return nil + } + w.WriteString("return ") return f.formatExpr(w, stmt.Result) case *IfStmt: From 4f139df099d8bcee95b6df94e509a02ceed3ba64 Mon Sep 17 00:00:00 2001 From: Raphael Vigee Date: Tue, 17 Dec 2024 21:04:17 +0100 Subject: [PATCH 2/2] eh --- sandbox/sandbox.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/sandbox/sandbox.go b/sandbox/sandbox.go index cffc070d..de05293b 100644 --- a/sandbox/sandbox.go +++ b/sandbox/sandbox.go @@ -207,10 +207,6 @@ func Make(ctx context.Context, cfg MakeConfig) error { target, err := os.Readlink(file.From) if err == nil { - if !filepath.IsAbs(target) { - target = filepath.Join(filepath.Dir(file.From), target) - } - err = os.Symlink(target, to) if err != nil { return err