From 6487b41d922f56d46167802780fcde62d1f27095 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Thu, 30 Jul 2026 00:16:57 +0900 Subject: internal/rosa: remove legacy exec helper This change also adds a fourth stage to the bootstrap machinery, offering more correct toolchain validation that works around LLVM dynamic linking flaws. Signed-off-by: Ophestra --- cmd/mbf/main.go | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'cmd') diff --git a/cmd/mbf/main.go b/cmd/mbf/main.go index 6df5d741..d464fd54 100644 --- a/cmd/mbf/main.go +++ b/cmd/mbf/main.go @@ -616,7 +616,7 @@ func main() { { c.NewCommand( - "stage3", + "stage4", "Check for toolchain 3-stage non-determinism", func(args []string) (err error) { var ( @@ -636,21 +636,31 @@ func main() { if err = cm.Do(func(cache *pkg.Cache) (err error) { _, llvm := rosa.Native().New(rosa.Std - 1).Load(_llvm) - pathname, checksum[0], err = cache.Cure(llvm) + pathname, _, err = cache.Cure(llvm) return }); err != nil { return } log.Println("stage2:", pathname) + if err = cm.Do(func(cache *pkg.Cache) (err error) { _, llvm := rosa.Native().New(rosa.Std).Load(_llvm) - pathname, checksum[1], err = cache.Cure(llvm) + pathname, checksum[0], err = cache.Cure(llvm) return }); err != nil { return } log.Println("stage3:", pathname) + if err = cm.Do(func(cache *pkg.Cache) (err error) { + _, llvm := rosa.Native().New(rosa.Stage3).Load(_llvm) + pathname, checksum[1], err = cache.Cure(llvm) + return + }); err != nil { + return + } + log.Println("stage4:", pathname) + if checksum[0] != checksum[1] { err = &pkg.ChecksumMismatchError{ Got: checksum[0].Value(), @@ -658,7 +668,7 @@ func main() { } } else { log.Println( - "stage2 is identical to stage3", + "stage3 is identical to stage4", "("+pkg.Encode(checksum[0].Value())+")", ) } -- cgit v1.3.1