Subject: Re: [bug#42888] [PATCH] gnu: rust: Fix install phase for non-x86_64 platforms.

From: Jakub Kądziołka <[email-masked]>
Date: Wed, 19 Aug 2020 23:55:52 +0200

On Sun, Aug 16, 2020 at 03:42:38PM +0100, Pierre Langlois wrote:
> 
> Pierre Langlois writes:
> 
> > Hello Guix!
> >
> > In an optimistic attempt to eventually have Icecat on a Pinebook Pro, I
> > thought I'd try and get rust building on aarch64. Here's a fix for the
> > post-install phase that had an x86 triplet hardcoded. With this we're
> > able to start off the bootstrap chain!
> >
> > That being said, each step takes ~5 hours on this machine so this is
> > going to take a while :-), it's currently working on 1.23.
> >
> > So, I suppose this should go into either core-updates or staging? WDYT?
> 
> Whoops, I forgot the copyright line on that file.
> 

Pierre,

thanks for your patch! I was working on a similar change before, but
when I tried it, it failed even earlier in the bootstrap chain. It
might've been QEMU weirdness, though, a la #42448.

> @@ -612,9 +613,10 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
>                         (cargo-out (assoc-ref outputs "cargo")))
>                     (for-each
>                       (lambda (file) (delete-manifest-file out file))
> -                     '("install.log"
> +                     `("install.log"
>                         "manifest-rust-docs"
> -                       "manifest-rust-std-x86_64-unknown-linux-gnu"
> +                       ,,(string-append "manifest-rust-std-"
> +                                        (nix-system->gnu-triplet-for-rust))
>                         "manifest-rustc"))
>                     (for-each
>                       (lambda (file) (delete-manifest-file cargo-out file))

If I understand the code correctly, this quasiquote is unnecessary, as
the host-side code will evaluate to a string that can be inserted as-is,
without another unquote on the build side.

Fixing this would mean that the patch can go on master, since it would
now only trigger rebuilds on architectures that are already broken.

I wish you best of luck on your quest for Rust on ARM boards. This has
been a long-standing issue, and it'd be nice to have it fixed. Let me
know if you need any help - I packaged the last few versions, so I got
quite familiar with the various failure modes of the build process. I'm
NieDzejkob on IRC, if you prefer.

Regards,
Jakub Kądziołka