Subject: bug#57303: closed (Re: bug#57303: powerpc64le: rust build failure is bottleneck for many packages)

From: [email-masked] (GNU bug Tracking System)
Date: Fri, 19 Aug 2022 20:13:02 +0000

Your bug report

#57303: powerpc64le: rust build failure is bottleneck for many packages

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
57303: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=57303
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#57303: powerpc64le: rust build failure is bottleneck for many packages
From: Maxim Cournoyer <[email-masked]>
To: Marcel van der Boom <[email-masked]>
Cc: [email-masked]
Date: Fri, 19 Aug 2022 16:11:59 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

tags 57303 +notabug
thanks

Hi!

Marcel van der Boom <[email-masked]> writes:

> I use a Talos II machine as my daily driver and slowly migrating 
> as many packages to GUIX along the way. The kernel I am running 
> comes fromm https://archlinuxpower.org/

Cool!

> For many packages, rust is getting to be the bottleneck as a 
> dependency that does not build.
>
>>>From what I can see there's a whole chain of rust dependencies 
> going back to [email-masked] which then ultimately fails with:
>
> (16/112) BUILDING bitflags v1.1.0
>> /tmp/guix-build-rust-1.39.0.drv-0/mrustc/bin/mrustc 
>> rustc-1.39.0-src/vendor/bitflags/src/lib.rs -o 
>> output/rustc-build/libbitflags-1_1_0.rlib --crate-name bitflags 
>> --crate-type rlib -C 
>> emit-depfile=output/rustc-build/libbitflags-1_1_0.rlib.d 
>> --crate-tag 1_1_0 -g --cfg debug_assertions -O -L output -L 
>> output/rustc-build --cfg bitflags_const_fn
> (17/112) BUILDING cc v1.0.35
>> /tmp/guix-build-rust-1.39.0.drv-0/mrustc/bin/mrustc 
>> rustc-1.39.0-src/vendor/cc/src/lib.rs -o 
>> output/rustc-build/libcc-1_0_35.rlib --crate-name cc 
>> --crate-type rlib -C 
>> emit-depfile=output/rustc-build/libcc-1_0_35.rlib.d --crate-tag 
>> 1_0_35 -g --cfg debug_assertions -O -L output -L 
>> output/rustc-build
>> /tmp/guix-build-rust-1.39.0.drv-0/mrustc/bin/mrustc 
>> rustc-1.39.0-src/src/librustc_llvm/build.rs --crate-name build 
>> --crate-type bin -o output/rustc-build/build_rustc_llvm_run -L 
>> output/rustc-build -g -L output --extern 
>> build_helper=output/rustc-build/libbuild_helper-0_1_0.rlib 
>> --extern cc=output/rustc-build/libcc-1_0_35.rlib --edition 2018
>> /tmp/guix-build-rust-1.39.0.drv-0/mrustc/output/rustc-build/build_rustc_llvm_run
> thread 'main' panicked at 'assertion failed: `(left == right)`
>   left: `1`,
>  right: `0`', 
>  rustc-1.39.0-src/vendor/hashbrown/src/raw/mod.rs:1086:59
> Process was terminated with signal 6
>
>
> The line in =mod.rs= points to an assertion in some sort of table 
> iterator. Way over my head.

Working only on x86_64 is a limitation of mrustc, which is used to
bootstrap rust cleanly from sources on Guix.

> I know rust runs on powerpc64le because I have a binary version 
> 1.62 installed through https://archlinuxpower.org/

Yes, Rust itself is not the problem, but its bootstrap.

I'd suggest lending a hand to mrustc to iron out issues like this or
request to Rust upstream support for bootstrapping for sources.
Investigating future alternatives such as GCC Rust or other similar
efforts could be useful for the time they are ripe to use, too.

Closing, as there's not much we can do on Guix's side.

Thanks,

Maxim

Subject: powerpc64le: rust build failure is bottleneck for many packages
From: Marcel van der Boom <[email-masked]>
To: [email-masked]
Date: Fri, 19 Aug 2022 20:56:10 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

I use a Talos II machine as my daily driver and slowly migrating 
as many packages to GUIX along the way. The kernel I am running 
comes fromm https://archlinuxpower.org/

For many packages, rust is getting to be the bottleneck as a 
dependency that does not build.

>From what I can see there's a whole chain of rust dependencies 
going back to [email-masked] which then ultimately fails with:

--8<---------------cut here---------------start------------->8---
(16/112) BUILDING bitflags v1.1.0
> /tmp/guix-build-rust-1.39.0.drv-0/mrustc/bin/mrustc 
> rustc-1.39.0-src/vendor/bitflags/src/lib.rs -o 
> output/rustc-build/libbitflags-1_1_0.rlib --crate-name bitflags 
> --crate-type rlib -C 
> emit-depfile=output/rustc-build/libbitflags-1_1_0.rlib.d 
> --crate-tag 1_1_0 -g --cfg debug_assertions -O -L output -L 
> output/rustc-build --cfg bitflags_const_fn
(17/112) BUILDING cc v1.0.35
> /tmp/guix-build-rust-1.39.0.drv-0/mrustc/bin/mrustc 
> rustc-1.39.0-src/vendor/cc/src/lib.rs -o 
> output/rustc-build/libcc-1_0_35.rlib --crate-name cc 
> --crate-type rlib -C 
> emit-depfile=output/rustc-build/libcc-1_0_35.rlib.d --crate-tag 
> 1_0_35 -g --cfg debug_assertions -O -L output -L 
> output/rustc-build
> /tmp/guix-build-rust-1.39.0.drv-0/mrustc/bin/mrustc 
> rustc-1.39.0-src/src/librustc_llvm/build.rs --crate-name build 
> --crate-type bin -o output/rustc-build/build_rustc_llvm_run -L 
> output/rustc-build -g -L output --extern 
> build_helper=output/rustc-build/libbuild_helper-0_1_0.rlib 
> --extern cc=output/rustc-build/libcc-1_0_35.rlib --edition 2018
> /tmp/guix-build-rust-1.39.0.drv-0/mrustc/output/rustc-build/build_rustc_llvm_run
thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `1`,
 right: `0`', 
 rustc-1.39.0-src/vendor/hashbrown/src/raw/mod.rs:1086:59
Process was terminated with signal 6
--8<---------------cut here---------------end--------------->8---

The line in =mod.rs= points to an assertion in some sort of table 
iterator. Way over my head.

I know rust runs on powerpc64le because I have a binary version 
1.62 installed through https://archlinuxpower.org/

Is anyone familiar with this working on rust on powerpc64 for the 
powerpc64le-linux system?