diff options
author | Ludovic Courtès <ludovic.courtes@inria.fr> | 2024-05-16 15:53:02 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2024-05-31 13:55:42 +0200 |
commit | 422ffb690ee0169b83ad3564d628f8cc054b5ff1 (patch) | |
tree | 752da82c6633ce3467f9d3e7ae7e5043cc45bee8 /gnu/packages | |
parent | 3f800efb0d3ba2c25e6e44a46f4e60c16c1a4611 (diff) |
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: I1498e8d21d631c988edf75a8bcc8d2ae5f244b7a
Diffstat (limited to 'gnu/packages')
-rw-r--r-- | gnu/packages/parallel.scm | 10 | ||||
-rw-r--r-- | gnu/packages/patches/slurm-23-salloc-fallback-shell.patch | 39 |
2 files changed, 48 insertions, 1 deletions
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm index 739767508a..60e195391e 100644 --- a/gnu/packages/parallel.scm +++ b/gnu/packages/parallel.scm @@ -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")))))) 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 0000000000..53605bf3ae --- /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[]) |