summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
Diffstat (limited to 'var')
-rwxr-xr-xvar/spack/repos/builtin/packages/orca/mpirun_srun.sh4
-rw-r--r--var/spack/repos/builtin/packages/orca/package.py28
2 files changed, 29 insertions, 3 deletions
diff --git a/var/spack/repos/builtin/packages/orca/mpirun_srun.sh b/var/spack/repos/builtin/packages/orca/mpirun_srun.sh
new file mode 100755
index 0000000000..1902cbafe8
--- /dev/null
+++ b/var/spack/repos/builtin/packages/orca/mpirun_srun.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+# Replacement wrapper for mpirun when only srun is available
+
+srun $(echo "${@}" | sed 's/-np/-n/')
diff --git a/var/spack/repos/builtin/packages/orca/package.py b/var/spack/repos/builtin/packages/orca/package.py
index c541544d78..475998e876 100644
--- a/var/spack/repos/builtin/packages/orca/package.py
+++ b/var/spack/repos/builtin/packages/orca/package.py
@@ -19,15 +19,29 @@ class Orca(Package):
homepage = "https://cec.mpg.de"
url = "file://{0}/orca_4_0_1_2_linux_x86-64_openmpi202.tar.zst".format(os.getcwd())
+ version('4.2.1', sha256='9bbb3bfdca8220b417ee898b27b2885508d8c82799adfa63dde9e72eab49a6b2',
+ expand=False)
+ version('4.2.0', sha256='55a5ca5aaad03396ac5ada2f14b61ffa735fdc2d98355e272465e07a6749d399',
+ expand=False)
version('4.0.1.2', sha256='cea442aa99ec0d7ffde65014932196b62343f7a6191b4bfc438bfb38c03942f7',
expand=False)
depends_on('zstd', type='build')
- depends_on('openmpi@2.0.0:2.1.5', type='run')
+
+ # Map Orca version with the required OpenMPI version
+ openmpi_versions = {
+ '4.0.1.2': '2.0.2',
+ '4.2.0': '3.1.4',
+ '4.2.1': '3.1.4'
+ }
+ for orca_version, openmpi_version in openmpi_versions.items():
+ depends_on('openmpi@{0}'.format(openmpi_version), type='run',
+ when='@{0}'.format(orca_version))
def url_for_version(self, version):
- out = "file://{0}/orca_{1}_linux_x86-64_openmpi202.tar.zst"
- return out.format(os.getcwd(), version.underscored)
+ out = "file://{0}/orca_{1}_linux_x86-64_openmpi{2}.tar.zst"
+ return out.format(os.getcwd(), version.underscored,
+ self.openmpi_versions[version.string])
def install(self, spec, prefix):
# we have to extract the archive ourself
@@ -44,3 +58,11 @@ class Orca(Package):
# there are READMEs in there but they don't hurt anyone
mkdirp(prefix.bin)
install_tree(vername, prefix.bin)
+
+ # Check "mpirun" usability when building against OpenMPI
+ # with Slurm scheduler and add a "mpirun" wrapper that
+ # calls "srun" if need be
+ if '^openmpi ~legacylaunchers schedulers=slurm' in self.spec:
+ mpirun_srun = join_path(os.path.dirname(__file__),
+ "mpirun_srun.sh")
+ install(mpirun_srun, prefix.bin.mpirun)