pbs: new virtual package (#24568)

* pbs: new virtual package

Some of our clusters have an older installation of
libtorque and tm.h that are *not* from OpenPBS. Using the current
openpbs dependency for openmpi causes concretization errors due to
restrictions on older python and hwloc requirements that don't apply,
even with an external non-buildable installation.
The new 'torque' bundle package allows users to point to that external
installation without problems.

Detailed description of torque by Sergey Kosukhin <skosukhin@gmail.com>
This commit is contained in:
Seth R. Johnson 2021-07-27 12:37:00 -04:00 committed by GitHub
parent ca260a3d63
commit 0a41d4ebb8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 40 additions and 2 deletions

View File

@ -43,6 +43,7 @@ packages:
opencl: [pocl]
onedal: [intel-oneapi-dal]
osmesa: [mesa+osmesa, mesa18+osmesa]
pbs: [openpbs, torque]
pil: [py-pillow]
pkgconfig: [pkgconf, pkg-config]
rpc: [libtirpc]

View File

@ -307,7 +307,7 @@ class Openmpi(AutotoolsPackage):
depends_on('knem', when='fabrics=knem')
depends_on('lsf', when='schedulers=lsf')
depends_on('openpbs', when='schedulers=tm')
depends_on('pbs', when='schedulers=tm')
depends_on('slurm', when='schedulers=slurm')
depends_on('openssh', type='run')
@ -588,7 +588,7 @@ def with_or_without_lsf(self, activated):
def with_or_without_tm(self, activated):
if not activated:
return '--without-tm'
return '--with-tm={0}'.format(self.spec['openpbs'].prefix)
return '--with-tm={0}'.format(self.spec['pbs'].prefix)
@run_before('autoreconf')
def die_without_fortran(self):

View File

@ -0,0 +1,37 @@
# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class Torque(Package):
"""TORQUE (Terascale Open-source Resource and QUEue Manager) is an open
source project based on the original PBS resource manager developed by NASA,
LLNL, and MRJ."""
homepage = "https://github.com/abarbu/torque"
has_code = False
maintainers = ['sethrj']
version('3.0.4')
version('3.0.2')
provides('pbs')
# TORQUE needs to be added as an external package to SPACK. For this, the
# config file packages.yaml needs to be adjusted:
#
# packages:
# torque:
# buildable: False
# externals:
# - spec: torque@3.0.2
# prefix: /opt/torque (path to your TORQUE installation)
def install(self, spec, prefix):
raise InstallError(
self.spec.format('{name} is not installable, you need to specify '
'it as an external package in packages.yaml'))