Skip to content

Commit aec6d3c

Browse files
Add support for setting environment variables in the built-in job script templates [#99]
1 parent cf1cb4a commit aec6d3c

16 files changed

+181
-3
lines changed

DESCRIPTION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Package: future.batchtools
2-
Version: 0.20.0-9020
2+
Version: 0.20.0-9021
33
Depends:
44
R (>= 3.2.0),
55
parallelly,

NEWS.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
script templates. This can be done via fields 'rscript' and
1111
'rscript_args' of the 'resources' argument.
1212

13+
* Add support for setting environment variables in the built-in job
14+
script templates. This can be done via field 'envs'.
15+
1316
* The built-in job script templates assert that the `Rscript`
1417
launcher is found, and if not, they give an informative error
1518
message suggesting to declare environment modules, via the

R/BatchtoolsFutureBackend-class.R

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,27 @@
3030
#' job-script template as variable `resources`. This is based on how
3131
#' [batchtools::submitJobs()] works, with the exception for specially
3232
#' reserved names defined by the \pkg{future.batchtools} package;
33+
#'
3334
#' * `resources[["modules"]]` is character vector of Linux environment
3435
#' modules to be loaded.
36+
#'
3537
#' * `resources[["startup"]]` and `resources[["shutdown"]]` are character
3638
#' vectors of shell code to be injected to the job script as-is.
39+
#'
3740
#' * `resources[["details"]]`, if TRUE, results in the job script outputting
3841
#' job details and job summaries at the beginning and at the end.
42+
#'
3943
#' * `resources[["rscript"]]` is an optional character vector specifying
4044
#' how the 'Rscript' is launched. The `resources[["rscript_args"]]` field
4145
#' is an optional character vector specifying the 'Rscript' command-line
4246
#' arguments.
47+
#'
48+
#' * `resources[["envs"]]`, is an optional names character vector specifying
49+
#' environment variables to be set.
50+
#'
4351
#' * `resources[["asis"]]` is a character vector that are passed as-is to
4452
#' the job script and are injected as job resource declarations.
53+
#'
4554
#' * All remaining `resources` named elements are injected as named resource
4655
#' specification for the scheduler.
4756
#'

inst/templates/lsf.tmpl

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,13 @@
4242
resources[["rscript_args"]] <- NULL
4343
rscript_call <- paste(c(rscript, rscript_args), collapse = " ")
4444

45+
## Environment variables to be set
46+
envs <- resources[["envs"]]
47+
if (length(envs) > 0) {
48+
stopifnot(is.character(envs), !is.null(names(envs)))
49+
}
50+
resources[["envs"]] <- NULL
51+
4552
## As-is resource specifications
4653
job_declarations <- resources[["asis"]]
4754
resources[["asis"]] <- NULL
@@ -79,6 +86,14 @@ fi
7986
writeLines(startup)
8087
} %>
8188

89+
<% if (length(envs) > 0) {
90+
writeLines(c(
91+
sprintf("echo 'Setting environment variables: [n=%d]'", length(envs)),
92+
sprintf("echo ' - %s=%s'", names(envs), shQuote(envs)),
93+
sprintf("export %s=%s", names(envs), shQuote(envs))
94+
))
95+
} %>
96+
8297
<% if (length(modules) > 0) {
8398
writeLines(c(
8499
"echo 'Load environment modules:'",

inst/templates/openlava.tmpl

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,13 @@
4242
resources[["rscript_args"]] <- NULL
4343
rscript_call <- paste(c(rscript, rscript_args), collapse = " ")
4444

45+
## Environment variables to be set
46+
envs <- resources[["envs"]]
47+
if (length(envs) > 0) {
48+
stopifnot(is.character(envs), !is.null(names(envs)))
49+
}
50+
resources[["envs"]] <- NULL
51+
4552
## As-is resource specifications
4653
job_declarations <- resources[["asis"]]
4754
resources[["asis"]] <- NULL
@@ -79,6 +86,14 @@ fi
7986
writeLines(startup)
8087
} %>
8188

89+
<% if (length(envs) > 0) {
90+
writeLines(c(
91+
sprintf("echo 'Setting environment variables: [n=%d]'", length(envs)),
92+
sprintf("echo ' - %s=%s'", names(envs), shQuote(envs)),
93+
sprintf("export %s=%s", names(envs), shQuote(envs))
94+
))
95+
} %>
96+
8297
<% if (length(modules) > 0) {
8398
writeLines(c(
8499
"echo 'Load environment modules:'",

inst/templates/sge.tmpl

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,13 @@
5151
resources[["rscript_args"]] <- NULL
5252
rscript_call <- paste(c(rscript, rscript_args), collapse = " ")
5353

54+
## Environment variables to be set
55+
envs <- resources[["envs"]]
56+
if (length(envs) > 0) {
57+
stopifnot(is.character(envs), !is.null(names(envs)))
58+
}
59+
resources[["envs"]] <- NULL
60+
5461
## As-is resource specifications
5562
job_declarations <- resources[["asis"]]
5663
resources[["asis"]] <- NULL
@@ -88,6 +95,14 @@ fi
8895
writeLines(startup)
8996
} %>
9097

98+
<% if (length(envs) > 0) {
99+
writeLines(c(
100+
sprintf("echo 'Setting environment variables: [n=%d]'", length(envs)),
101+
sprintf("echo ' - %s=%s'", names(envs), shQuote(envs)),
102+
sprintf("export %s=%s", names(envs), shQuote(envs))
103+
))
104+
} %>
105+
91106
<% if (length(modules) > 0) {
92107
writeLines(c(
93108
"echo 'Load environment modules:'",

inst/templates/slurm.tmpl

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,14 @@
4040
rscript_args <- resources[["rscript_args"]]
4141
resources[["rscript_args"]] <- NULL
4242
rscript_call <- paste(c(rscript, rscript_args), collapse = " ")
43-
43+
44+
## Environment variables to be set
45+
envs <- resources[["envs"]]
46+
if (length(envs) > 0) {
47+
stopifnot(is.character(envs), !is.null(names(envs)))
48+
}
49+
resources[["envs"]] <- NULL
50+
4451
## As-is resource specifications
4552
job_declarations <- resources[["asis"]]
4653
resources[["asis"]] <- NULL
@@ -78,6 +85,14 @@ fi
7885
writeLines(startup)
7986
} %>
8087

88+
<% if (length(envs) > 0) {
89+
writeLines(c(
90+
sprintf("echo 'Setting environment variables: [n=%d]'", length(envs)),
91+
sprintf("echo ' - %s=%s'", names(envs), shQuote(envs)),
92+
sprintf("export %s=%s", names(envs), shQuote(envs))
93+
))
94+
} %>
95+
8196
<% if (length(modules) > 0) {
8297
writeLines(c(
8398
"echo 'Load environment modules:'",

inst/templates/torque.tmpl

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,13 @@
4545
resources[["rscript_args"]] <- NULL
4646
rscript_call <- paste(c(rscript, rscript_args), collapse = " ")
4747

48+
## Environment variables to be set
49+
envs <- resources[["envs"]]
50+
if (length(envs) > 0) {
51+
stopifnot(is.character(envs), !is.null(names(envs)))
52+
}
53+
resources[["envs"]] <- NULL
54+
4855
## As-is resource specifications
4956
job_declarations <- resources[["asis"]]
5057
resources[["asis"]] <- NULL
@@ -82,6 +89,14 @@ fi
8289
writeLines(startup)
8390
} %>
8491

92+
<% if (length(envs) > 0) {
93+
writeLines(c(
94+
sprintf("echo 'Setting environment variables: [n=%d]'", length(envs)),
95+
sprintf("echo ' - %s=%s'", names(envs), shQuote(envs)),
96+
sprintf("export %s=%s", names(envs), shQuote(envs))
97+
))
98+
} %>
99+
85100
<% if (length(modules) > 0) {
86101
writeLines(c(
87102
"echo 'Load environment modules:'",

man/BatchtoolsFutureBackend.Rd

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/BatchtoolsTemplateFutureBackend.Rd

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)