diff mbox series

[bug#72766,v3,2/2] gnu: slurm: Move client executables into separate output.

Message ID bf6002904f7d3c0a7f13a552a9a9e72dc5c4ac10.1729262403.git.arunisaac@systemreboot.net
State New
Headers show
Series slurm: Enable REST API | expand

Commit Message

Arun Isaac Oct. 18, 2024, 2:58 p.m. UTC
* gnu/packages/parallel.scm (slurm)[outputs]: Add client.
[arguments]: Add move-client-executables phase.

Change-Id: Id7441b0b34a5b8433e4c38bd5c56e4ca1fec587c
---
 gnu/packages/parallel.scm | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

Comments

Ludovic Courtès Oct. 24, 2024, 10:01 a.m. UTC | #1
Hi Arun,

Arun Isaac <arunisaac@systemreboot.net> skribis:

> * gnu/packages/parallel.scm (slurm)[outputs]: Add client.
> [arguments]: Add move-client-executables phase.
>
> Change-Id: Id7441b0b34a5b8433e4c38bd5c56e4ca1fec587c

[...]

> +    (outputs '("out" "client"))
>      (arguments
>       (list #:configure-flags
>             #~(list "--enable-pam"
> @@ -291,7 +292,17 @@ (define-public slurm
>                     (invoke "make" "install" "-C" "contribs/pmi")
>  
>                     ;; Others expect pmi2.
> -                   (invoke "make" "install" "-C" "contribs/pmi2"))))))
> +                   (invoke "make" "install" "-C" "contribs/pmi2")))
> +               (add-after 'install 'move-client-executables
> +                 (lambda _
> +                   (let ((client-bin (string-append #$output:client "/bin")))
> +                     (mkdir-p client-bin)
> +                     (for-each (lambda (executable)
> +                                 (rename-file executable
> +                                              (string-append client-bin
> +                                                             "/"
> +                                                             (basename executable))))
> +                               (find-files (string-append #$output "/bin")))))))))

I think “bin” would be a more conventional name for the output; this is
used in a couple of packages and recognized by ‘package->recutils’.

However, what does ‘guix size slurm:client’ report?  I suspect it
depends on slurm:out, in which case moving to a separate output makes no
difference from that perspective.

Thanks,
Ludo’.
Arun Isaac Oct. 24, 2024, 2:50 p.m. UTC | #2
Hi Ludo,

> I think “bin” would be a more conventional name for the output; this is
> used in a couple of packages and recognized by ‘package->recutils’.

Sure, fixed now.

> However, what does ‘guix size slurm:client’ report?  I suspect it
> depends on slurm:out, in which case moving to a separate output makes no
> difference from that perspective.

Yep, that's right.

$ ./pre-inst-env guix size slurm:out | tail -n1
total: 192.6 MiB
$ ./pre-inst-env guix size slurm:bin | tail -n1
total: 201.3 MiB
$ ./pre-inst-env guix size slurm:bin | grep slurm
/gnu/store/2qhgkq79ahw64n4kmr3znl8v66z0n87j-slurm-23.11.10         192.6    17.5   8.7%
/gnu/store/6f3d93i0zdr48v6bp471dfsk7r89xdqh-slurm-23.11.10-bin     201.3     1.3   0.6%

Should I then go back to the idea of creating a slurm-minimal variant?

Regards,
Arun
Ludovic Courtès Oct. 25, 2024, 9:32 a.m. UTC | #3
Hello,

Arun Isaac <arunisaac@systemreboot.net> skribis:

>> I think “bin” would be a more conventional name for the output; this is
>> used in a couple of packages and recognized by ‘package->recutils’.
>
> Sure, fixed now.
>
>> However, what does ‘guix size slurm:client’ report?  I suspect it
>> depends on slurm:out, in which case moving to a separate output makes no
>> difference from that perspective.
>
> Yep, that's right.
>
> $ ./pre-inst-env guix size slurm:out | tail -n1
> total: 192.6 MiB
> $ ./pre-inst-env guix size slurm:bin | tail -n1
> total: 201.3 MiB
> $ ./pre-inst-env guix size slurm:bin | grep slurm
> /gnu/store/2qhgkq79ahw64n4kmr3znl8v66z0n87j-slurm-23.11.10         192.6    17.5   8.7%
> /gnu/store/6f3d93i0zdr48v6bp471dfsk7r89xdqh-slurm-23.11.10-bin     201.3     1.3   0.6%

OK.

Hmm I just realized that the introduction of this extra output would at
least deserve a news entry too, because I can already see myself as the
Guix support guy at my workplace having to reply to confused colleagues
who realize that ‘guix shell slurm‘ or similar no longer gives them
‘salloc’ & co.  :-)

> Should I then go back to the idea of creating a slurm-minimal variant?

Yes, probably.

Apologies for all the back and forth and hesitations; it’s tricky!

Ludo’.
Arun Isaac Oct. 25, 2024, 3:23 p.m. UTC | #4
> Hmm I just realized that the introduction of this extra output would at
> least deserve a news entry too, because I can already see myself as the
> Guix support guy at my workplace having to reply to confused colleagues
> who realize that ‘guix shell slurm‘ or similar no longer gives them
> ‘salloc’ & co.  :-)
>
>> Should I then go back to the idea of creating a slurm-minimal variant?
>
> Yes, probably.
>
> Apologies for all the back and forth and hesitations; it’s tricky!

No worries! A v4 patch follows. Do I need to add a news entry for this
v4 patch? I guess not, but just checking.
diff mbox series

Patch

diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index 522d326ef2..f27f07ca1e 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -246,6 +246,7 @@  (define-public slurm
     (native-inputs
      (list autoconf expect perl pkg-config python-wrapper))
     (build-system gnu-build-system)
+    (outputs '("out" "client"))
     (arguments
      (list #:configure-flags
            #~(list "--enable-pam"
@@ -291,7 +292,17 @@  (define-public slurm
                    (invoke "make" "install" "-C" "contribs/pmi")
 
                    ;; Others expect pmi2.
-                   (invoke "make" "install" "-C" "contribs/pmi2"))))))
+                   (invoke "make" "install" "-C" "contribs/pmi2")))
+               (add-after 'install 'move-client-executables
+                 (lambda _
+                   (let ((client-bin (string-append #$output:client "/bin")))
+                     (mkdir-p client-bin)
+                     (for-each (lambda (executable)
+                                 (rename-file executable
+                                              (string-append client-bin
+                                                             "/"
+                                                             (basename executable))))
+                               (find-files (string-append #$output "/bin")))))))))
     (home-page "https://slurm.schedmd.com/")
     (synopsis "Workload manager for cluster computing")
     (description