GNU bug report logs - #70983
[PATCH] gnu: slurm: Add patch for a useful fallback shell for ‘salloc’.

Previous Next

Package: guix-patches;

Reported by: Ludovic Courtès <ludo <at> gnu.org>

Date: Thu, 16 May 2024 14:04:01 UTC

Severity: normal

Tags: patch

Done: Ludovic Courtès <ludo <at> gnu.org>

To reply to this bug, email your comments to 70983 AT debbugs.gnu.org.
There is no need to reopen the bug first.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#70983; Package guix-patches. (Thu, 16 May 2024 14:04:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Ludovic Courtès <ludo <at> gnu.org>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Thu, 16 May 2024 14:04:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: guix-patches <at> gnu.org
Cc: Ludovic Courtès <ludovic.courtes <at> inria.fr>
Subject: [PATCH] gnu: slurm: Add patch for a useful fallback shell for ‘salloc’.
Date: Thu, 16 May 2024 16:02:50 +0200
From: Ludovic Courtès <ludovic.courtes <at> inria.fr>

* gnu/packages/patches/slurm-23-salloc-fallback-shell.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/parallel.scm (slurm): Use it.
(slurm-22.05, slurm-21.08, slurm-20.11, slurm-20.02)
(slurm-19.05, slurm-18.08): Drop it.

Change-Id: I1498e8d21d631c988edf75a8bcc8d2ae5f244b7a
---
 gnu/local.mk                                  |  1 +
 gnu/packages/parallel.scm                     | 10 ++++-
 .../slurm-23-salloc-fallback-shell.patch      | 39 +++++++++++++++++++
 3 files changed, 49 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/slurm-23-salloc-fallback-shell.patch

Hello!

This change is useful for those of us using SLURM on foreign distros,
which is probably 99% of HPC supercomputers.

On those machines, sometimes nscd is running but has ‘passwd’ database
caching disabled; sometimes it’s just not running.  In both cases,
getpwduid(3) would return NULL, and without this patch, ‘salloc’ would
fall back to (typically) /sbin/nologin as the shell.  This patch provides
a more useful fallback.

Note that the patch targets slurm <at> 23 only because (1) that’s what I need,
and (2) it doesn’t apply to other versions, and I thought we could port
it there if/when there is a need.

Thoughts?

Ludo’.

diff --git a/gnu/local.mk b/gnu/local.mk
index 439fe587b02..5264134c390 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2067,6 +2067,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/slim-config.patch			\
   %D%/packages/patches/slim-login.patch				\
   %D%/packages/patches/slim-display.patch			\
+  %D%/packages/patches/slurm-23-salloc-fallback-shell.patch	\
   %D%/packages/patches/stex-copy-from-immutable-store.patch	\
   %D%/packages/patches/syslinux-gcc10.patch			\
   %D%/packages/patches/syslinux-strip-gnu-property.patch	\
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index 11199594f1e..b4ecfefddcf 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -9,7 +9,7 @@
 ;;; Copyright © 2017, 2018 Rutger Helling <rhelling <at> mykolab.com>
 ;;; Copyright © 2018–2022 Tobias Geerinckx-Rice <me <at> tobias.gr>
 ;;; Copyright © 2018 Clément Lassieur <clement <at> lassieur.org>
-;;; Copyright © 2019-2023 Ludovic Courtès <ludo <at> gnu.org>
+;;; Copyright © 2019-2024 Ludovic Courtès <ludo <at> gnu.org>
 ;;; Copyright © 2020 Roel Janssen <roel <at> gnu.org>
 ;;; Copyright © 2021 Stefan Reichör <stefan <at> xsteve.at>
 ;;; Copyright © 2024 Zheng Junjie <873216071 <at> qq.com>
@@ -195,6 +195,8 @@ (define-public slurm
               (sha256
                (base32
                 "08rz3r1rlnb3pmfdnbh542gm44ja0fdy8rkj4vm4lclc48cvqp2a"))
+              (patches
+               (search-patches "slurm-23-salloc-fallback-shell.patch"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -292,6 +294,7 @@ (define-public slurm-22.05
               (uri (string-append
                     "https://download.schedmd.com/slurm/slurm-"
                     version ".tar.bz2"))
+              (patches '())                       ;drop 'salloc' patch
               (sha256
                (base32
                 "0f3hhlki8g7slllsnyj1qikbsvr62i0hig85lcdcfnmsagzlhbyi"))))))
@@ -306,6 +309,7 @@ (define-public slurm-21.08
               (uri (string-append
                     "https://download.schedmd.com/slurm/slurm-"
                     version ".tar.bz2"))
+              (patches '())                       ;drop 'salloc' patch
               (sha256
                (base32
                 "1sjln54idc9rhg8f2nvm38sgs6fncncyzslas8ixy65pqz2hphbf"))))))
@@ -320,6 +324,7 @@ (define-public slurm-20.11
               (uri (string-append
                     "https://download.schedmd.com/slurm/slurm-"
                     version ".tar.bz2"))
+              (patches '())                       ;drop 'salloc' patch
               (sha256
                (base32
                 "0xq2d6dm285y541dyg1h66z7svsisrq8c81ag0f601xz1cn3mq9m"))))))
@@ -334,6 +339,7 @@ (define-public slurm-20.02
               (uri (string-append
                     "https://download.schedmd.com/slurm/slurm-"
                     version ".tar.bz2"))
+              (patches '())                       ;drop 'salloc' patch
               (sha256
                (base32
                 "0qj4blfymrd2ry2qmb58l3jbr4jwygc3adcfw7my27rippcijlyc"))))
@@ -353,6 +359,7 @@ (define-public slurm-19.05
               (uri (string-append
                     "https://download.schedmd.com/slurm/slurm-"
                     version ".tar.bz2"))
+              (patches '())                       ;drop 'salloc' patch
               (sha256
                (base32
                 "10c9j4a9a6d4ibpf75006mn03p8xgpaprc247x2idakysjf2fw43"))))))
@@ -368,6 +375,7 @@ (define-public slurm-18.08
         (uri (string-append
                "https://download.schedmd.com/slurm/slurm-"
                version ".tar.bz2"))
+        (patches '())                             ;drop 'salloc' patch
         (sha256
          (base32
           "1bgrpz75m7l4xhirsd0fvnkzlkrl8v2qpmjcz60barc5qm2kn457"))))))
diff --git a/gnu/packages/patches/slurm-23-salloc-fallback-shell.patch b/gnu/packages/patches/slurm-23-salloc-fallback-shell.patch
new file mode 100644
index 00000000000..53605bf3aed
--- /dev/null
+++ b/gnu/packages/patches/slurm-23-salloc-fallback-shell.patch
@@ -0,0 +1,39 @@
+Have 'salloc' use $SHELL or /bin/sh as the fallback shell.
+
+This is useful in situations where glibc’s Name Service Switch (NSS) is
+dysfunctional (with ‘getpwuid’ returning NULL), which can happen when
+/etc/nsswitch.conf specifies plugins that fail to be loaded in user code, for
+instance because user code is linked against an incompatible libc.
+
+Similar patch submitted upstream: https://bugs.schedmd.com/show_bug.cgi?id=19896
+
+diff --git a/src/salloc/opt.c b/src/salloc/opt.c
+index ffff7c8..74563ad 100644
+--- a/src/salloc/opt.c
++++ b/src/salloc/opt.c
+@@ -329,6 +329,7 @@ static void _opt_args(int argc, char **argv, int het_job_offset)
+  * NOTE: This function is NOT reentrant (see getpwuid_r if needed) */
+ static char *_get_shell(void)
+ {
++	char *shell;
+ 	struct passwd *pw_ent_ptr;
+ 
+ 	if (opt.uid == SLURM_AUTH_NOBODY)
+@@ -336,11 +337,13 @@ static char *_get_shell(void)
+ 	else
+ 		pw_ent_ptr = getpwuid(opt.uid);
+ 
+-	if (!pw_ent_ptr) {
+-		pw_ent_ptr = getpwnam("nobody");
+-		warning("no user information for user %u", opt.uid);
++	if (pw_ent_ptr) {
++		shell = pw_ent_ptr->pw_shell;
++	} else {
++		shell = getenv("SHELL") ?: "/bin/sh";
++		warning("no user information for user %u, using '%s' as the shell", opt.uid, shell);
+ 	}
+-	return pw_ent_ptr->pw_shell;
++	return shell;
+ }
+ 
+ static void _salloc_default_command(int *argcp, char **argvp[])

base-commit: 58be9a79e2862d5fa9842d73f498ce2e5442b9ce
-- 
2.41.0





Reply sent to Ludovic Courtès <ludo <at> gnu.org>:
You have taken responsibility. (Fri, 31 May 2024 12:00:02 GMT) Full text and rfc822 format available.

Notification sent to Ludovic Courtès <ludo <at> gnu.org>:
bug acknowledged by developer. (Fri, 31 May 2024 12:00:03 GMT) Full text and rfc822 format available.

Message #10 received at 70983-done <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: 70983-done <at> debbugs.gnu.org
Subject: Re: [bug#70983] [PATCH] gnu: slurm: Add patch for a useful fallback
 shell for ‘salloc’.
Date: Fri, 31 May 2024 13:59:01 +0200
Hi,

Ludovic Courtès <ludo <at> gnu.org> skribis:

> From: Ludovic Courtès <ludovic.courtes <at> inria.fr>
>
> * gnu/packages/patches/slurm-23-salloc-fallback-shell.patch: New file.
> * gnu/local.mk (dist_patch_DATA): Add it.
> * gnu/packages/parallel.scm (slurm): Use it.
> (slurm-22.05, slurm-21.08, slurm-20.11, slurm-20.02)
> (slurm-19.05, slurm-18.08): Drop it.
>
> Change-Id: I1498e8d21d631c988edf75a8bcc8d2ae5f244b7a

Pushed as 422ffb690ee0169b83ad3564d628f8cc054b5ff1.

Ludo’.




This bug report was last modified 1 day ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.