all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#74142: [rust-team] rust-bootstrap fails parallel build on x86-64
@ 2024-10-31 19:13 Greg Hogan
  2024-10-31 20:26 ` bug#74142: [PATCH rust-team] gnu: rust-bootstrap: Disable parallel builds Greg Hogan
  2024-11-03  7:49 ` bug#74142: [rust-team] rust-bootstrap fails parallel build on x86-64 Efraim Flashner
  0 siblings, 2 replies; 8+ messages in thread
From: Greg Hogan @ 2024-10-31 19:13 UTC (permalink / raw)
  To: 74142; +Cc: Efraim Flashner

[-- Attachment #1: Type: text/plain, Size: 4821 bytes --]

derivation: 83qbfg0xxsfr5lsc81m5a770c7c7b55k-rust-1.54.0.drv
commit: 6e50b0c56a8cc767bd3acb26638f78c450bde718

Build log attached, tail portion below. Has consistently failed to
build unless cores=1.

The package definition has "#:parallel-build? ,(target-x86-64?)" but
the noted build issue ("race conditions between various dependent
crates") is also seen on x86-64.

It is only the 1.54 build with mrustc that fails in this manner, the
following rust packages in the chain build fine with parallelism
enabled.

Greg

--8<---------------cut here---------------start------------->8---
(36/175) BUILDING autocfg v1.0.1
> /tmp/guix-build-rust-1.54.0.drv-0/mrustc/bin/mrustc rustc-1.54.0-src/vendor/autocfg/src/lib.rs -o output/rustc-build/libautocfg-1_0_1.rlib --crate-name autocfg --crate-type rlib -C emit-depfile=output/rustc-build/libautocfg-1_0_1.rlib.d --crate-tag 1_0_1 --cfg debug_assertions -O -L output -L output/rustc-build
> /tmp/guix-build-rust-1.54.0.drv-0/mrustc/output/rustc-build/build_bitflags-1_2_1_run
> /tmp/guix-build-rust-1.54.0.drv-0/rustc-1.54.0-src/vendor/bitflags/output/rustc-build/build_memchr-2_4_0_H6_run
Unable to run process
'/tmp/guix-build-rust-1.54.0.drv-0/rustc-1.54.0-src/vendor/bitflags/output/rustc-build/build_memchr-2_4_0_H6_run'
- No such file or directory
Calling /tmp/guix-build-rust-1.54.0.drv-0/rustc-1.54.0-src/vendor/bitflags/output/rustc-build/build_memchr-2_4_0_H6_run
failed (see /tmp/guix-build-rust-1.54.0.drv-0/mrustc/output/rustc-build/build_memchr-2_4_0_H6.txt_failed.txt
for stdout)
(37/175) BUILDING bitflags v1.2.1
> /tmp/guix-build-rust-1.54.0.drv-0/mrustc/bin/mrustc rustc-1.54.0-src/vendor/bitflags/src/lib.rs -o output/rustc-build/libbitflags-1_2_1.rlib --crate-name bitflags --crate-type rlib -C emit-depfile=output/rustc-build/libbitflags-1_2_1.rlib.d --crate-tag 1_2_1 --cfg debug_assertions -O -L output -L output/rustc-build --cfg bitflags_const_fn
Unable to run process
'/tmp/guix-build-rust-1.54.0.drv-0/mrustc/bin/mrustc' - No such file
or directory
> /tmp/guix-build-rust-1.54.0.drv-0/rustc-1.54.0-src/vendor/memchr/output/rustc-build/build_ryu-1_0_5_run
Unable to run process
'/tmp/guix-build-rust-1.54.0.drv-0/rustc-1.54.0-src/vendor/memchr/output/rustc-build/build_ryu-1_0_5_run'
- No such file or directory
Calling /tmp/guix-build-rust-1.54.0.drv-0/rustc-1.54.0-src/vendor/memchr/output/rustc-build/build_ryu-1_0_5_run
failed (see /tmp/guix-build-rust-1.54.0.drv-0/mrustc/output/rustc-build/build_ryu-1_0_5.txt_failed.txt
for stdout)
> /tmp/guix-build-rust-1.54.0.drv-0/rustc-1.54.0-src/vendor/memchr/output/rustc-build/build_snap-1_0_5_run
Unable to run process
'/tmp/guix-build-rust-1.54.0.drv-0/rustc-1.54.0-src/vendor/memchr/output/rustc-build/build_snap-1_0_5_run'
- No such file or directory
Calling /tmp/guix-build-rust-1.54.0.drv-0/rustc-1.54.0-src/vendor/memchr/output/rustc-build/build_snap-1_0_5_run
failed (see /tmp/guix-build-rust-1.54.0.drv-0/mrustc/output/rustc-build/build_snap-1_0_5.txt_failed.txt
for stdout)
> /tmp/guix-build-rust-1.54.0.drv-0/rustc-1.54.0-src/vendor/memchr/output/rustc-build/build_maybe-uninit-2_0_0_run
Unable to run process
'/tmp/guix-build-rust-1.54.0.drv-0/rustc-1.54.0-src/vendor/memchr/output/rustc-build/build_maybe-uninit-2_0_0_run'
- No such file or directory
Calling /tmp/guix-build-rust-1.54.0.drv-0/rustc-1.54.0-src/vendor/memchr/output/rustc-build/build_maybe-uninit-2_0_0_run
failed (see /tmp/guix-build-rust-1.54.0.drv-0/mrustc/output/rustc-build/build_maybe-uninit-2_0_0.txt_failed.txt
for stdout)
> /tmp/guix-build-rust-1.54.0.drv-0/rustc-1.54.0-src/vendor/memchr/output/rustc-build/build_typenum-1_12_0_run
Unable to run process
'/tmp/guix-build-rust-1.54.0.drv-0/rustc-1.54.0-src/vendor/memchr/output/rustc-build/build_typenum-1_12_0_run'
- No such file or directory
Calling /tmp/guix-build-rust-1.54.0.drv-0/rustc-1.54.0-src/vendor/memchr/output/rustc-build/build_typenum-1_12_0_run
failed (see /tmp/guix-build-rust-1.54.0.drv-0/mrustc/output/rustc-build/build_typenum-1_12_0.txt_failed.txt
for stdout)
BUILD FAILED
make: *** [minicargo.mk:228: output/rustc] Error 1
error: in phase 'build': uncaught exception:
%exception #<&invoke-error program: "make" arguments: ("-f"
"minicargo.mk" "output/rustc" "RUSTC_TARGET=x86_64-unknown-linux-gnu"
"RUSTC_VERSION=1.54.0" "MRUSTC_TARGET_VER=1.54" "CFLAGS=-std=gnu11"
"OUTDIR_SUF=") exit-status: 2 term-signal: #f stop-signal: #f>
phase `build' failed after 617.7 seconds
command "make" "-f" "minicargo.mk" "output/rustc"
"RUSTC_TARGET=x86_64-unknown-linux-gnu" "RUSTC_VERSION=1.54.0"
"MRUSTC_TARGET_VER=1.54" "CFLAGS=-std=gnu11" "OUTDIR_SUF=" failed with
status 2
build process 18 exited with status 256
--8<---------------cut here---------------end--------------->8---

[-- Attachment #2: qbfg0xxsfr5lsc81m5a770c7c7b55k-rust-1.54.0.drv.gz --]
[-- Type: application/gzip, Size: 390369 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#74142: [PATCH rust-team] gnu: rust-bootstrap: Disable parallel builds.
  2024-10-31 19:13 bug#74142: [rust-team] rust-bootstrap fails parallel build on x86-64 Greg Hogan
@ 2024-10-31 20:26 ` Greg Hogan
  2024-11-03  7:49 ` bug#74142: [rust-team] rust-bootstrap fails parallel build on x86-64 Efraim Flashner
  1 sibling, 0 replies; 8+ messages in thread
From: Greg Hogan @ 2024-10-31 20:26 UTC (permalink / raw)
  To: 74142; +Cc: Greg Hogan, Efraim Flashner

* gnu/packages/rust.scm (rust-bootstrap): Disable parallel builds for
all architectures.

Change-Id: Icafbbacd30200fad457b6a70730acd466524485b
---
 gnu/packages/rust.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index cb58a4b4b3..4f74fc7571 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -208,9 +208,9 @@ (define-public rust-bootstrap
        ;; that doesn't seem to cause issues.
        #:validate-runpath? #f
        ;; Most of the build is single-threaded. This also improves the
-       ;; build time on machines with "only" 8GB of RAM.
-       ;; ppc64le regularly sees race conditions between various dependant crates.
-       #:parallel-build? ,(target-x86-64?)
+       ;; build time on machines with "only" 8GB of RAM and prevents
+       ;; regularly seen race conditions between various dependant crates.
+       #:parallel-build? #f
        #:make-flags
        (list ,(string-append "RUSTC_TARGET="
                              (platform-rust-target

base-commit: 6e50b0c56a8cc767bd3acb26638f78c450bde718
-- 
2.46.0





^ permalink raw reply related	[flat|nested] 8+ messages in thread

* bug#74142: [rust-team] rust-bootstrap fails parallel build on x86-64
  2024-10-31 19:13 bug#74142: [rust-team] rust-bootstrap fails parallel build on x86-64 Greg Hogan
  2024-10-31 20:26 ` bug#74142: [PATCH rust-team] gnu: rust-bootstrap: Disable parallel builds Greg Hogan
@ 2024-11-03  7:49 ` Efraim Flashner
  2024-11-03 23:06   ` Greg Hogan
  1 sibling, 1 reply; 8+ messages in thread
From: Efraim Flashner @ 2024-11-03  7:49 UTC (permalink / raw)
  To: Greg Hogan; +Cc: 74142

[-- Attachment #1: Type: text/plain, Size: 1276 bytes --]

On Thu, Oct 31, 2024 at 03:13:40PM -0400, Greg Hogan wrote:
> derivation: 83qbfg0xxsfr5lsc81m5a770c7c7b55k-rust-1.54.0.drv
> commit: 6e50b0c56a8cc767bd3acb26638f78c450bde718
> 
> Build log attached, tail portion below. Has consistently failed to
> build unless cores=1.
> 
> The package definition has "#:parallel-build? ,(target-x86-64?)" but
> the noted build issue ("race conditions between various dependent
> crates") is also seen on x86-64.
> 
> It is only the 1.54 build with mrustc that fails in this manner, the
> following rust packages in the chain build fine with parallelism
> enabled.
> 
> Greg

I see the note there says something about ppc64le having a race
condition too. My machine has "only" 24 cores, so I didn't run into
anything, but I see you're building with 32 cores. IIRC the ppc64le
machine was building with at least 32 cores also.

Can you try building rust-1.54 with only 24 cores and see if that works
for you? If it does then I think we can switch the (job-count) variable
to (min 24 (parallel-job-count))

-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#74142: [rust-team] rust-bootstrap fails parallel build on x86-64
  2024-11-03  7:49 ` bug#74142: [rust-team] rust-bootstrap fails parallel build on x86-64 Efraim Flashner
@ 2024-11-03 23:06   ` Greg Hogan
  2024-12-07 13:45     ` Maxim Cournoyer
  0 siblings, 1 reply; 8+ messages in thread
From: Greg Hogan @ 2024-11-03 23:06 UTC (permalink / raw)
  To: efraim, code, 74142

[-- Attachment #1: Type: text/plain, Size: 1270 bytes --]

On Sun, Nov 3, 2024 at 2:49 AM Efraim Flashner <efraim@flashner.co.il> wrote:
>
> On Thu, Oct 31, 2024 at 03:13:40PM -0400, Greg Hogan wrote:
> > derivation: 83qbfg0xxsfr5lsc81m5a770c7c7b55k-rust-1.54.0.drv
> > commit: 6e50b0c56a8cc767bd3acb26638f78c450bde718
> >
> > Build log attached, tail portion below. Has consistently failed to
> > build unless cores=1.
> >
> > The package definition has "#:parallel-build? ,(target-x86-64?)" but
> > the noted build issue ("race conditions between various dependent
> > crates") is also seen on x86-64.
> >
> > It is only the 1.54 build with mrustc that fails in this manner, the
> > following rust packages in the chain build fine with parallelism
> > enabled.
> >
> > Greg
>
> I see the note there says something about ppc64le having a race
> condition too. My machine has "only" 24 cores, so I didn't run into
> anything, but I see you're building with 32 cores. IIRC the ppc64le
> machine was building with at least 32 cores also.
>
> Can you try building rust-1.54 with only 24 cores and see if that works
> for you? If it does then I think we can switch the (job-count) variable
> to (min 24 (parallel-job-count))

Log attached from what looks to be a similar failure on an 8 core instance.

[-- Attachment #2: qbfg0xxsfr5lsc81m5a770c7c7b55k-rust-1.54.0.drv.gz --]
[-- Type: application/gzip, Size: 387279 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#74142: [rust-team] rust-bootstrap fails parallel build on x86-64
  2024-11-03 23:06   ` Greg Hogan
@ 2024-12-07 13:45     ` Maxim Cournoyer
  2024-12-13 11:53       ` Efraim Flashner
  0 siblings, 1 reply; 8+ messages in thread
From: Maxim Cournoyer @ 2024-12-07 13:45 UTC (permalink / raw)
  To: Greg Hogan; +Cc: 74142, efraim

Hi,

Greg Hogan <code@greghogan.com> writes:

> On Sun, Nov 3, 2024 at 2:49 AM Efraim Flashner <efraim@flashner.co.il> wrote:
>>
>> On Thu, Oct 31, 2024 at 03:13:40PM -0400, Greg Hogan wrote:
>> > derivation: 83qbfg0xxsfr5lsc81m5a770c7c7b55k-rust-1.54.0.drv
>> > commit: 6e50b0c56a8cc767bd3acb26638f78c450bde718
>> >
>> > Build log attached, tail portion below. Has consistently failed to
>> > build unless cores=1.
>> >
>> > The package definition has "#:parallel-build? ,(target-x86-64?)" but
>> > the noted build issue ("race conditions between various dependent
>> > crates") is also seen on x86-64.
>> >
>> > It is only the 1.54 build with mrustc that fails in this manner, the
>> > following rust packages in the chain build fine with parallelism
>> > enabled.
>> >
>> > Greg
>>
>> I see the note there says something about ppc64le having a race
>> condition too. My machine has "only" 24 cores, so I didn't run into
>> anything, but I see you're building with 32 cores. IIRC the ppc64le
>> machine was building with at least 32 cores also.
>>
>> Can you try building rust-1.54 with only 24 cores and see if that works
>> for you? If it does then I think we can switch the (job-count) variable
>> to (min 24 (parallel-job-count))
>
> Log attached from what looks to be a similar failure on an 8 core instance.

I encountered the same problem on a 32 "cores" (aka threads) machine.
I've reported it here [0].

[0]  https://github.com/thepowersgang/mrustc/issues/343

-- 
Thanks,
Maxim




^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#74142: [rust-team] rust-bootstrap fails parallel build on x86-64
  2024-12-07 13:45     ` Maxim Cournoyer
@ 2024-12-13 11:53       ` Efraim Flashner
  2024-12-14 15:38         ` Maxim Cournoyer
  0 siblings, 1 reply; 8+ messages in thread
From: Efraim Flashner @ 2024-12-13 11:53 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: 74142, Greg Hogan

[-- Attachment #1: Type: text/plain, Size: 3640 bytes --]

On Sat, Dec 07, 2024 at 10:45:32PM +0900, Maxim Cournoyer wrote:
> Hi,
> 
> Greg Hogan <code@greghogan.com> writes:
> 
> > On Sun, Nov 3, 2024 at 2:49 AM Efraim Flashner <efraim@flashner.co.il> wrote:
> >>
> >> On Thu, Oct 31, 2024 at 03:13:40PM -0400, Greg Hogan wrote:
> >> > derivation: 83qbfg0xxsfr5lsc81m5a770c7c7b55k-rust-1.54.0.drv
> >> > commit: 6e50b0c56a8cc767bd3acb26638f78c450bde718
> >> >
> >> > Build log attached, tail portion below. Has consistently failed to
> >> > build unless cores=1.
> >> >
> >> > The package definition has "#:parallel-build? ,(target-x86-64?)" but
> >> > the noted build issue ("race conditions between various dependent
> >> > crates") is also seen on x86-64.
> >> >
> >> > It is only the 1.54 build with mrustc that fails in this manner, the
> >> > following rust packages in the chain build fine with parallelism
> >> > enabled.
> >> >
> >> > Greg
> >>
> >> I see the note there says something about ppc64le having a race
> >> condition too. My machine has "only" 24 cores, so I didn't run into
> >> anything, but I see you're building with 32 cores. IIRC the ppc64le
> >> machine was building with at least 32 cores also.
> >>
> >> Can you try building rust-1.54 with only 24 cores and see if that works
> >> for you? If it does then I think we can switch the (job-count) variable
> >> to (min 24 (parallel-job-count))
> >
> > Log attached from what looks to be a similar failure on an 8 core instance.
> 
> I encountered the same problem on a 32 "cores" (aka threads) machine.
> I've reported it here [0].
> 
> [0]  https://github.com/thepowersgang/mrustc/issues/343

I followed up with Mutabah (the main author) on IRC and a bit on the bug
tracker, and their suggestion is to use a later commit from mrustc.  I
used the latest commit from the master branch but there I ran into
issues on aarch64 not building correctly. From there they basically said
that they were focused on getting 1.74 bootstrapped, and they weren't
going to be circling back to the master branch until 1.74 was merged.

I went and tried out the rust_1.74 branch which is nearing completion
and that one built without any issues on x86_64 but failed for different
reasons on aarch64, powerpc64le and riscv64.

Someone from Gentoo was also asking around, they're interested in using
mrustc to bootstrap rust-1.74 and continuing on from there, so it's
likely we'll get some help going forward with architecture support.

I think in the meantime while it's not ready I'll change the
parallel-builds? flag to false for everyone, and then I'll continue
working on getting the bootstrap to work on the other architectures. The
good news is it only takes about 15 minutes to fail on aarch64 and
powerpc64le, so those should go pretty quickly through each iteration. I
might need to try some by-hand builds on riscv64; that one was closer to
2 hours.

Mutabah also said that their primary target is x86_64 and they don't
have the hardware to test other architectures, so its more hit-or-miss
there, and they rely on patches from others to get those ports working
as well as they do.  I don't love the answer, but I don't blame them.

I'll probably focus on aarch64 first since I can offload that easily and
I don't need to use a remote GUIX_DAEMON_SOCKET to get it to build, but
unfortunately it looks like we're sticking with 1.54 for a while.

-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#74142: [rust-team] rust-bootstrap fails parallel build on x86-64
  2024-12-13 11:53       ` Efraim Flashner
@ 2024-12-14 15:38         ` Maxim Cournoyer
  2024-12-25 14:43           ` Efraim Flashner
  0 siblings, 1 reply; 8+ messages in thread
From: Maxim Cournoyer @ 2024-12-14 15:38 UTC (permalink / raw)
  To: Efraim Flashner; +Cc: 74142, Greg Hogan

Hi Efraim,

Efraim Flashner <efraim@flashner.co.il> writes:

[...]

>> [0]  https://github.com/thepowersgang/mrustc/issues/343
>
> I followed up with Mutabah (the main author) on IRC and a bit on the bug
> tracker, and their suggestion is to use a later commit from mrustc.  I
> used the latest commit from the master branch but there I ran into
> issues on aarch64 not building correctly. From there they basically said
> that they were focused on getting 1.74 bootstrapped, and they weren't
> going to be circling back to the master branch until 1.74 was merged.
>
> I went and tried out the rust_1.74 branch which is nearing completion
> and that one built without any issues on x86_64 but failed for different
> reasons on aarch64, powerpc64le and riscv64.
>
> Someone from Gentoo was also asking around, they're interested in using
> mrustc to bootstrap rust-1.74 and continuing on from there, so it's
> likely we'll get some help going forward with architecture support.
>
> I think in the meantime while it's not ready I'll change the
> parallel-builds? flag to false for everyone, and then I'll continue
> working on getting the bootstrap to work on the other architectures.

Sounds good!  Thanks for putting some efforts into shortening the
bootstrap... it currently takes more 3 hours to achieve on a powerful
machine.

-- 
Thanks,
Maxim




^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#74142: [rust-team] rust-bootstrap fails parallel build on x86-64
  2024-12-14 15:38         ` Maxim Cournoyer
@ 2024-12-25 14:43           ` Efraim Flashner
  0 siblings, 0 replies; 8+ messages in thread
From: Efraim Flashner @ 2024-12-25 14:43 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: 74142-done, Greg Hogan

[-- Attachment #1: Type: text/plain, Size: 358 bytes --]

I don't remember if I closed this but I've updated the mrustc snapshot
and now parallel builds are supported by default, on all architectures.

-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2024-12-25 14:45 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-31 19:13 bug#74142: [rust-team] rust-bootstrap fails parallel build on x86-64 Greg Hogan
2024-10-31 20:26 ` bug#74142: [PATCH rust-team] gnu: rust-bootstrap: Disable parallel builds Greg Hogan
2024-11-03  7:49 ` bug#74142: [rust-team] rust-bootstrap fails parallel build on x86-64 Efraim Flashner
2024-11-03 23:06   ` Greg Hogan
2024-12-07 13:45     ` Maxim Cournoyer
2024-12-13 11:53       ` Efraim Flashner
2024-12-14 15:38         ` Maxim Cournoyer
2024-12-25 14:43           ` Efraim Flashner

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.