GNU bug report logs -
#70983
[PATCH] gnu: slurm: Add patch for a useful fallback shell for ‘salloc’.
Previous Next
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.
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 <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):
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.