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>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Ludovic Courtès <ludo <at> gnu.org>
Subject: bug#70983: closed (Re: [bug#70983] [PATCH] gnu: slurm: Add patch
 for a useful fallback shell for ‘salloc’.)
Date: Fri, 31 May 2024 12:00:03 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#70983: [PATCH] gnu: slurm: Add patch for a useful fallback shell for ‘salloc’.

which was filed against the guix-patches package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 70983 <at> debbugs.gnu.org.

-- 
70983: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=70983
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
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’.

[Message part 3 (message/rfc822, inline)]
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




This bug report was last modified 1 year and 74 days ago.

Previous Next


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