[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: bug#47615: [PATCH 0/9] Add 32-bit powerpc support
From: |
Chris Marusich |
Subject: |
Re: bug#47615: [PATCH 0/9] Add 32-bit powerpc support |
Date: |
Sat, 17 Apr 2021 12:51:01 -0700 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) |
Efraim Flashner <efraim@flashner.co.il> writes:
> * 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.
Nits: adjust the test suite to do what? The message would be clearer if
it explained the purpose of the adjustment. You could also name the
phases you added/moved, for extra clarity, if you want to.
> 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))))
> + '())))
What's the problem? Presumably the test fails; a comment here could
clarify that.
If it's a test failure, has the issue been reported upstream?
> (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
I think you can put all of this in the substitute-keyword-arguments
form, which would (1) eliminate the need for a comment, (2) eliminate
the need to worry about the order of the keyword arguments, and (3)
eliminate the need to duplicate the new phase in two package
definitions:
(define binutils-boot0
(package
(inherit binutils)
(source (bootstrap-origin (package-source binutils)))
(name "binutils-cross-boot0")
(arguments
`(#:guile ,%bootstrap-guile
#:implicit-inputs? #f
#:modules ((guix build gnu-build-system)
(guix build utils)
(ice-9 ftw)) ; for 'scandir'
,@(substitute-keyword-arguments (package-arguments binutils)
((#:configure-flags cf)
`(cons ,(string-append "--target=" (boot-triplet))
,cf))
;; The presence of '%standard-phases as the default value here is
;; important. It ensures that even when (package-argument
;; binutils) does not already contain the #:phases keyword
;; argument, the substitution will occur. If you omit a default
;; value and (package-arguments binutils) does not contain the
;; #:phases keyword argument (e.g., on an x86_64-linux system),
;; then the substitution will not occur, and no phases at all will
;; be added.
((#:phases phases '%standard-phases)
`(modify-phases ,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
;; triplet prefix, so add symlinks.
(let ((out (assoc-ref outputs "out"))
(triplet-prefix (string-append ,(boot-triplet) "-")))
(define (has-triplet-prefix? name)
(string-prefix? triplet-prefix name))
(define (remove-triplet-prefix name)
(substring name (string-length triplet-prefix)))
(with-directory-excursion (string-append out "/bin")
(for-each
(lambda (name)
(symlink name (remove-triplet-prefix name)))
(scandir "." has-triplet-prefix?)))))))))))
(inputs (%boot0-inputs))))
I played with this in the REPL, and it seems to produce the desired
result (e.g., inspect by running ,pp (package-arguments binutils-boot0)
or similar at the REPL). However, I didn't actually try building
anything with it.
What do you think?
--
Chris
signature.asc
Description: PGP signature
[PATCH 4/9] gnu: mesa: Add support for powerpc-linux., Efraim Flashner, 2021/04/06
[PATCH 5/9] gnu: Add mac-fdisk., Efraim Flashner, 2021/04/06
[PATCH 6/9] gnu: american-fuzzy-lop: Add support for powerpc-linux., Efraim Flashner, 2021/04/06
[PATCH 7/9] build: qemu-command: Add support for powerpc., Efraim Flashner, 2021/04/06