gnu: slurm: Add patch for a useful fallback shell for ‘salloc’.
* 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: I1498e8d21d631c988edf75a8bcc8d2ae5f244b7amaster
parent
3f800efb0d
commit
422ffb690e
|
@ -2084,6 +2084,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/sysdig-shared-falcosecurity-libs.patch \
|
||||
%D%/packages/patches/syslinux-gcc10.patch \
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
|
||||
;;; Copyright © 2018–2022 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
|
||||
;;; Copyright © 2019-2023 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2019-2024 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2020 Roel Janssen <roel@gnu.org>
|
||||
;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
|
||||
;;; Copyright © 2024 Zheng Junjie <873216071@qq.com>
|
||||
|
@ -195,6 +195,8 @@ when jobs finish.")
|
|||
(sha256
|
||||
(base32
|
||||
"08rz3r1rlnb3pmfdnbh542gm44ja0fdy8rkj4vm4lclc48cvqp2a"))
|
||||
(patches
|
||||
(search-patches "slurm-23-salloc-fallback-shell.patch"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
|
@ -292,6 +294,7 @@ by managing a queue of pending work.")
|
|||
(uri (string-append
|
||||
"https://download.schedmd.com/slurm/slurm-"
|
||||
version ".tar.bz2"))
|
||||
(patches '()) ;drop 'salloc' patch
|
||||
(sha256
|
||||
(base32
|
||||
"0f3hhlki8g7slllsnyj1qikbsvr62i0hig85lcdcfnmsagzlhbyi"))))))
|
||||
|
@ -306,6 +309,7 @@ by managing a queue of pending work.")
|
|||
(uri (string-append
|
||||
"https://download.schedmd.com/slurm/slurm-"
|
||||
version ".tar.bz2"))
|
||||
(patches '()) ;drop 'salloc' patch
|
||||
(sha256
|
||||
(base32
|
||||
"1sjln54idc9rhg8f2nvm38sgs6fncncyzslas8ixy65pqz2hphbf"))))))
|
||||
|
@ -320,6 +324,7 @@ by managing a queue of pending work.")
|
|||
(uri (string-append
|
||||
"https://download.schedmd.com/slurm/slurm-"
|
||||
version ".tar.bz2"))
|
||||
(patches '()) ;drop 'salloc' patch
|
||||
(sha256
|
||||
(base32
|
||||
"0xq2d6dm285y541dyg1h66z7svsisrq8c81ag0f601xz1cn3mq9m"))))))
|
||||
|
@ -334,6 +339,7 @@ by managing a queue of pending work.")
|
|||
(uri (string-append
|
||||
"https://download.schedmd.com/slurm/slurm-"
|
||||
version ".tar.bz2"))
|
||||
(patches '()) ;drop 'salloc' patch
|
||||
(sha256
|
||||
(base32
|
||||
"0qj4blfymrd2ry2qmb58l3jbr4jwygc3adcfw7my27rippcijlyc"))))
|
||||
|
@ -353,6 +359,7 @@ by managing a queue of pending work.")
|
|||
(uri (string-append
|
||||
"https://download.schedmd.com/slurm/slurm-"
|
||||
version ".tar.bz2"))
|
||||
(patches '()) ;drop 'salloc' patch
|
||||
(sha256
|
||||
(base32
|
||||
"10c9j4a9a6d4ibpf75006mn03p8xgpaprc247x2idakysjf2fw43"))))))
|
||||
|
@ -368,6 +375,7 @@ by managing a queue of pending work.")
|
|||
(uri (string-append
|
||||
"https://download.schedmd.com/slurm/slurm-"
|
||||
version ".tar.bz2"))
|
||||
(patches '()) ;drop 'salloc' patch
|
||||
(sha256
|
||||
(base32
|
||||
"1bgrpz75m7l4xhirsd0fvnkzlkrl8v2qpmjcz60barc5qm2kn457"))))))
|
||||
|
|
|
@ -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[])
|
Reference in New Issue