bug-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Porting to mips64el


From: Ludovic Courtès
Subject: Re: Porting to mips64el
Date: Thu, 14 Feb 2013 12:33:47 +0100
User-agent: Gnus/5.130005 (Ma Gnus v0.5) Emacs/24.2 (gnu/linux)

Nikita Karetnikov <address@hidden> skribis:

> I'm attaching three patches.
> '0001-gnu-Disable-Libtool-s-testsuite.patch' and
> '0001-gnu-Set-ARCH-to-mips.patch' are for 'mips64el'.  The other one is
> for 'core-updates', but it's also needed for 'mips64el'.  (Should I push
> to both?)
>
> Could you test them?  (Don't forget to adjust 'build-aux/download.scm'.)

I can’t test on MIPS, but here are some comments.

> I'll push them if they are fine.

To the ‘mips64el’ branch.

> From 41aeaf76e8c61d184f06e8c886e595e8a97ebd16 Mon Sep 17 00:00:00 2001
> From: Nikita Karetnikov <address@hidden>
> Date: Thu, 14 Feb 2013 06:25:38 +0000
> Subject: [PATCH] gnu: Remove a newline.

Change to “gnu: gcc: Remove extraneous newline in LIB_SPEC”.  Otherwise
it sounds like it removes a non-significant newline in the code.

> * gnu/packages/base.scm (gcc-4.7): Remove the newline.

“Remove trailing newline when patching ‘LIB_SPEC’.”

You can already commit this one with these changes.

> From ad1536e4730b9d37a0519fdd29bdd8195554358d Mon Sep 17 00:00:00 2001
> From: Nikita Karetnikov <address@hidden>
> Date: Thu, 14 Feb 2013 06:36:23 +0000
> Subject: [PATCH] gnu: Disable Libtool's testsuite.
>
> * gnu/packages/autotools.scm (libtool): Add '#:tests? #f'.
> ---
>  gnu/packages/autotools.scm | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/gnu/packages/autotools.scm b/gnu/packages/autotools.scm
> index bc4dddc..e004dd9 100644
> --- a/gnu/packages/autotools.scm
> +++ b/gnu/packages/autotools.scm
> @@ -195,7 +195,8 @@ Standards.  Automake requires the use of Autoconf.")
>                 "out"))                       ; libltdl.so, ltdl.h, etc.
>  
>      (arguments
> -     `(#:patches (list (assoc-ref %build-inputs "patch/skip-tests"))
> +     `(#:tests? #f

Instead of disabling tests for everyone, do something like:

  `(;; XXX: Work around test failure on MIPS as reported at
    ;; <http://.../bug-libtool/...>.
    #:tests? ,(not (string=? (%current-system) "mips64el-linux"))
    ;; ...
    )

Once done, you can commit it as well.

> From 31a7f172941c592f04f8f741b89e04a2a6677a76 Mon Sep 17 00:00:00 2001
> From: Nikita Karetnikov <address@hidden>
> Date: Thu, 14 Feb 2013 06:14:48 +0000
> Subject: [PATCH] gnu: Set 'ARCH' to 'mips'.
>
> * gnu/packages/linux.scm (linux-libre-headers): Set 'ARCH' to 'mips'.
> ---
>  gnu/packages/linux.scm | 19 +++++++++++++++----
>  1 file changed, 15 insertions(+), 4 deletions(-)
>
> diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
> index 58cddc0..fe8148c 100644
> --- a/gnu/packages/linux.scm
> +++ b/gnu/packages/linux.scm
> @@ -29,20 +29,31 @@
>    #:use-module (gnu packages pkg-config)
>    #:use-module (guix packages)
>    #:use-module (guix download)
> -  #:use-module (guix build-system gnu))
> +  #:use-module (guix build-system gnu)
> +  #:use-module ((guix utils) #:select (%current-system)))
>  
>  (define-public linux-libre-headers
>    (let* ((version* "3.3.8")
>           (build-phase
> -          '(lambda* (#:key system #:allow-other-keys)
> +          (lambda ()
> +            `(lambda* (#:key system #:allow-other-keys)
>               (let ((arch (car (string-split system #\-))))
>                 (setenv "ARCH"
>                         (cond ((string=? arch "i686") "i386")
> +
> +                             ;; FIXME: The unquote below is just to
> +                             ;; avoid triggering a rebuild.  Remove me
> +                             ;; on the next core-updates.
> +                             ,@(if (string-prefix? "mips"
> +                                                   (%current-system))
> +                                   `(((string-prefix? "mips" arch)
> +                                      "mips"))
> +                                   '())

Now that we’re triggering a rebuild anyway, let’s write it the normal
way, that is:

                 (setenv "ARCH"
                         (cond ((string=? arch "i686") "i386")
                               ((string-prefix? "mips" arch") "mips")
                               (else arch)))

Actually, even better would be do that in host code, as done with
‘glibc-dynamic-linker’:

  (define (system->linux-architecture arch)
    (let ((arch (car (string-split arch #\-))))
      (cond ((string=? arch "i686") "i386")
            ((string-prefix? "mips" arch") "mips")
            (else arch))))

And then, change ‘build-phase’ to something like:

  (let ((build-phase
         (lambda (arch)
           `(lambda _
              (setenv "ARCH" ,(system->linux-architecture arch))
              ...))))
    (arguments `(#:phase ... ,(build-phase (%current-system)) ...)))

Could you try that?

Thanks!

Ludo’.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]