Subject: Re: bug#52117: [core-updates-frozen] [PATCH 0/6] Fix Julia packages.

From: zimoun <[email-masked]>
Date: Sat, 27 Nov 2021 13:38:57 +0100

Hi Maxim,

Thanks for the review and the improved patch.

I am sorry if the commit message and/or changelog I provided was badly
worded, but somehow it was an attempt to explain the odd behaviour – at
least counter-intuitive since I initially felt into when sending the
very first patch allowing parallel tests and you felt too, I guess. :-)

On Fri, 26 Nov 2021 at 22:17, Maxim Cournoyer <[email-masked]> wrote:

>> ---
>>  guix/build/julia-build-system.scm | 8 +++++---
>>  1 file changed, 5 insertions(+), 3 deletions(-)
>>
>> diff --git a/guix/build/julia-build-system.scm b/guix/build/julia-build-system.scm
>> index f0dc419c17..af478fd4a3 100644
>> --- a/guix/build/julia-build-system.scm
>> +++ b/guix/build/julia-build-system.scm
>> @@ -112,7 +112,10 @@ (define* (check #:key tests? source inputs outputs julia-package-name
>>             (builddir (string-append out "/share/julia/"))
>>             (jobs (if parallel-tests?
>>                       (number->string (parallel-job-count))
>> -                     "1")))
>> +                     "1"))
>> +           (nprocs (if parallel-tests?
>> +                       (string-append "--procs=" jobs)
>> +                       "")))
>>        ;; With a patch, SOURCE_DATE_EPOCH is honored
>>        (setenv "SOURCE_DATE_EPOCH" "1")
>>        (setenv "JULIA_DEPOT_PATH" builddir)
>> @@ -122,8 +125,7 @@ (define* (check #:key tests? source inputs outputs julia-package-name
>>                                   "")))
>>        (setenv "JULIA_CPU_THREADS" jobs)
>>        (setenv "HOME" "/tmp")
>> -      (invoke "julia" "--depwarn=yes"
>> -              (string-append "--procs=" jobs)
>> +      (invoke "julia" "--depwarn=yes" nprocs
>
> Here nprocs can be ""; is it really OK to pass an empty string argument
> to julia?

Yes it is OK.  When #:parallel-tests? sets to #f, my patch leads to the
call “julia --depwarn=yes” which is valid.  Your modified patch adds
another test but leads to the same call “julia --depwarn=yes”.

--8<---------------cut here---------------start------------->8---
+           (job-count (if parallel-tests?
+                          (parallel-job-count)
+                          1))
+           ;; The --proc argument of Julia *adds* extra processors rather than
+           ;; specify the exact count to use, so zero must be specified to
+           ;; disable parallel processing...

[..]

+      (apply invoke "julia"
+             `("--depwarn=yes"
+               ,@(if parallel-tests?
+                     ;; XXX: ... but '--procs' doesn't accept 0 as a valid
+                     ;; value, so just omit the argument entirely.
+                     (list (string-append  "--procs="
+                                           (number->string additional-procs)))
+                     '())
--8<---------------cut here---------------end--------------->8---

So because of 2 tests. I think your modified patch is more
“complicated”. :-)

About this,

--8<---------------cut here---------------start------------->8---
+           (additional-procs (max 0 (1- job-count))))
--8<---------------cut here---------------end--------------->8---

I considered that it was not a big deal; initially, I did something
similar in ’let’ but remove it because it changes nothing from my
experiments.  In fact, because ’--procs’ overrides JULIA_CPU_THREADS and
run Julia with n or n+1 is more or less the same for the Julia land,
IMHO.  Well, it is not clear what is the load for the main worker. And
JULIA_CPU_THREADS=1 is required for running using only one worker.
Anyway, this changes nothing, practically speaking. :-) Indeed, it is
better and more consistent.

Last, I am confused by Cuirass.  Because it says evaluation complete but
julia-* packages are scheduled.

    https://ci.guix.gnu.org/eval/48802?status=pending

And for instance,

    https://ci.guix.gnu.org/build/1853818/log/raw

BTW, Berlin has some issues I guess

#48720 - d508c5b was pushed CommitDate: Fri Nov 26 23:21:45 2021 +0100
       - 941f776 was pushed CommitDate: Sat Nov 27 01:22:32 2021 -0500
       - 9c4752b was pushed CommitDate: Sat Nov 27 10:24:12 2021 +0100 
#48802 - 1b8a18b was pushed CommitDate: Sat Nov 27 11:48:17 2021 +0100

I do not understand why 941f776 or 9c4752b had not been evaluated.

Could you give a look?  For example, by restarting the evaluation?

Cheers,
simon