Subject: [bug#47615] [PATCH 3/9] gnu: binutils: Adjust test suite on powerpc-linux.

From: Efraim Flashner <[email-masked]>
Date: Tue, 6 Apr 2021 15:32:47 +0300

* gnu/packages/base.scm (binutils)[arguments]: Add phase on
powerpc-linux to adjust the test suite.
* gnu/packages/commencement.scm (binutils-boot0)[arguments]: Move custom
phases after inherited arguments. Add phase on powerpc-linux to adjust
the test suite.
---
 gnu/packages/base.scm         | 11 ++++++++++-
 gnu/packages/commencement.scm | 21 ++++++++++++++++-----
 2 files changed, 26 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index dbb7c619fe..b9fc0a6e29 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -531,7 +531,16 @@ change.  GNU make offers many powerful extensions over the standard utility.")
 
                           ;; Make sure 'ar' and 'ranlib' produce archives in a
                           ;; deterministic fashion.
-                          "--enable-deterministic-archives")))
+                          "--enable-deterministic-archives")
+      ,@(if (string=? (%current-system) "powerpc-linux")
+          `(#:phases
+            (modify-phases %standard-phases
+              (add-after 'unpack 'disable-rust-libiberty-test
+                (lambda _
+                  (substitute* "libiberty/testsuite/Makefile.in"
+                    ((" check-rust-demangle ") ""))
+                  #t))))
+          '())))
 
    (synopsis "Binary utilities: bfd gas gprof ld")
    (description
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 7c39a84008..f707a01d30 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -2653,7 +2653,22 @@ exec " gcc "/bin/" program
        #:modules ((guix build gnu-build-system)
                   (guix build utils)
                   (ice-9 ftw))                    ; for 'scandir'
+
+       ;; #:phases gets modified for powerpc-linux in binutils,
+       ;; so #:phases here needs to be after the inherited one.
+       ,@(substitute-keyword-arguments (package-arguments binutils)
+           ((#:configure-flags cf)
+            `(cons ,(string-append "--target=" (boot-triplet))
+                   ,cf)))
+
        #:phases (modify-phases %standard-phases
+                  ,@(if (string=? (%current-system) "powerpc-linux")
+                      '((add-after 'unpack 'disable-rust-libiberty-test
+                          (lambda _
+                            (substitute* "libiberty/testsuite/Makefile.in"
+                              ((" check-rust-demangle ") ""))
+                            #t)))
+                      '())
                   (add-after 'install 'add-symlinks
                     (lambda* (#:key outputs #:allow-other-keys)
                       ;; The cross-gcc invokes 'as', 'ld', etc, without the
@@ -2667,12 +2682,8 @@ exec " gcc "/bin/" program
                         (with-directory-excursion (string-append out "/bin")
                           (for-each (lambda (name)
                                       (symlink name (remove-triplet-prefix name)))
-                                    (scandir "." has-triplet-prefix?)))))))
+                                    (scandir "." has-triplet-prefix?)))))))))
 
-       ,@(substitute-keyword-arguments (package-arguments binutils)
-           ((#:configure-flags cf)
-            `(cons ,(string-append "--target=" (boot-triplet))
-                   ,cf)))))
     (inputs (%boot0-inputs))))
 
 (define libstdc++-boot0
-- 
2.31.1