diff options
Diffstat (limited to 'cmd/mbf/main.go')
| -rw-r--r-- | cmd/mbf/main.go | 18 |
1 files changed, 14 insertions, 4 deletions
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())+")", ) } |
