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
This commit is contained in:
		
							parent
							
								
									3f800efb0d
								
							
						
					
					
						commit
						422ffb690e
					
				
					 3 changed files with 49 additions and 1 deletions
				
			
		|  | @ -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")))))) | ||||
|  |  | |||
							
								
								
									
										39
									
								
								gnu/packages/patches/slurm-23-salloc-fallback-shell.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								gnu/packages/patches/slurm-23-salloc-fallback-shell.patch
									
										
									
									
									
										Normal file
									
								
							|  | @ -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 a new issue