diff options
author | RĂ©mi Lacroix <remi.lacroix@idris.fr> | 2020-09-10 18:55:13 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-10 11:55:13 -0500 |
commit | 114317464b578ec9dde5cb4d96b2a114cb0909be (patch) | |
tree | b42de2c000a0d945f0ea6a52ddb0bfa8cab99eb7 | |
parent | 757dad370fa950985c506cad64478db891648aab (diff) | |
download | spack-114317464b578ec9dde5cb4d96b2a114cb0909be.tar.gz spack-114317464b578ec9dde5cb4d96b2a114cb0909be.tar.bz2 spack-114317464b578ec9dde5cb4d96b2a114cb0909be.tar.xz spack-114317464b578ec9dde5cb4d96b2a114cb0909be.zip |
Orca: update the package. (#18593)
* Orca: Add new versions.
* Orca: Support OpenMPI without the legacy wrappers.
By default, Spack builds OpenMPI without the legacy wrappers when using the Slurm scheduler. This breaks Orca since its binaries are hardcoded to call "mpirun". To workaround this issue, add a "mpirun" wrapper which calls "srun" when required.
-rwxr-xr-x | var/spack/repos/builtin/packages/orca/mpirun_srun.sh | 4 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/orca/package.py | 28 |
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) |