Subject: bug#42371: Grafts max out build slots without being queued

From: zimoun <[email-masked]>
Date: Tue, 21 Jul 2020 12:40:59 +0200

Dear,

On my laptop and my desktop, both “cat /proc/cpuinfo |grep processor|wc
-l” returning 4, and with 10 guixbuild users, I get these results.

On Thu, 16 Jul 2020 at 23:06, Maxim Cournoyer <[email-masked]> wrote:

> --8<---------------cut here---------------start------------->8---
> guix build --quiet --check $(guix package -A | head -n 11 | cut -f1)
[…]
guix build: error: derivation `/gnu/store/…-4ti2-1.6.9.drv' may not be determin\
istic: output `/gnu/store/…-4ti2-1.6.9' differs 
> --8<---------------cut here---------------end--------------->8---

Then, I run this tiny script fixing --max-jobs and --cores on my desktop
machine only:

--8<---------------cut here---------------start------------->8---
for npkg in 4 5 6 7 8 9 10 11 12                                                
do                                                                              
    for JOBS in 1 2 3 4                                                         
    do                                                                          
        for CORES in 1 2 4 8 16 32                                              
        do                                                                      
            echo "# num.of pkg=$npkg"                                           
            echo "# --max-jobs=$JOBS"                                           
            echo "#    --cores=$CORES"                                          
            guix build --quiet --check -k \                                     
                 --max-jobs=$JOBS          \                                    
                 --cores=$CORES           \                                     
                 $(guix package -A | head -n $npkg | cut -f1)                   
            echo " "                                                            
            sleep 2                                                             
        done                                                                    
    done                                                                        
done
--8<---------------cut here---------------end--------------->8---

And it hits the non-deterministic error for all the cases until the case
num.of pkg=11 --max-jobs=2 --cores=1 where it errors "all build users
are currently in use; consider creating additional users and adding them
to the `guixbuild' group".

Then npkg=11 --max-jobs=2 --cores=2 fails with non-deterministic.

(I reproduce on my laptop the result for npkg=11 max-jobs=2 cores=1,2.)

The next case, npkg=11 --max-jobs=2 --cores=4 does not seem reproducible
on my machine; similarly for cores=8,16,32.

Then I have not checked the reproducibility of the cases below.

Interestingly, npkg=11 --max-jobs=3 --cores=1,2,4,8,16 fails with not
enough builders.  But not for --cores=32 which fails with
non-deterministic.

All the values for cores fails with not enough builder for npkg=11 and
--max-jobs=4.

Another surprise, npkg=12 --max-jobs=1 --cores=1,2,4,8,16,32 fails with
non-deterministic.  And npkg=12 --max-jobs=2 --cores=2,4,8,16,32 too.

All the best,
simon