
* Style: black 23, skip magic trailing commas * isort should use same line length as black * Fix unused import * Update version of black used in CI * Update new packages * Update new packages
68 lines
2.4 KiB
Python
68 lines
2.4 KiB
Python
# Copyright 2013-2023 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)
|
|
|
|
import subprocess
|
|
|
|
from spack.package import *
|
|
|
|
|
|
class Pvm(MakefilePackage):
|
|
"""PVM (Parallel Virtual Machine) is a software package that permits a
|
|
heterogeneous collection of Unix and/or Windows computers hooked together
|
|
by a network to be used as a single large parallel computer."""
|
|
|
|
homepage = "https://www.csm.ornl.gov/pvm/pvm_home.html"
|
|
url = "https://www.netlib.org/pvm3/pvm3.4.6.tgz"
|
|
|
|
version("3.4.6", sha256="482665e9bc975d826bcdacf1df1d42e43deda9585a2c430fd3b7b7ed08eada44")
|
|
|
|
depends_on("m4", type="build")
|
|
depends_on("libtirpc", type="link")
|
|
|
|
variant(
|
|
"fpic", default=False, description="Enables -fPIC compilation flag on static libraries."
|
|
)
|
|
|
|
parallel = False
|
|
|
|
@staticmethod
|
|
def pvm_arch(root):
|
|
"""Returns the appropriate PVM_ARCH."""
|
|
process = subprocess.Popen([join_path(root, "lib", "pvmgetarch")], stdout=subprocess.PIPE)
|
|
return process.communicate()[0].strip().decode()
|
|
|
|
def edit(self, spec, prefix):
|
|
# Before building PVM, you must set the environment
|
|
# variable "PVM_ROOT" to the path where PVM resides
|
|
env["PVM_ROOT"] = self.stage.source_path
|
|
|
|
def patch(self):
|
|
pvm_arch = self.pvm_arch(self.stage.source_path)
|
|
|
|
if "+fpic" in self.spec:
|
|
filter_file(
|
|
"^SHAREDCFLAGS =", "SHAREDCFLAGS = -fPIC", join_path("conf", pvm_arch + ".def")
|
|
)
|
|
|
|
def setup_build_environment(self, env):
|
|
tirpc = self.spec["libtirpc"].prefix
|
|
env.prepend_path("SPACK_INCLUDE_DIRS", tirpc.include.tirpc)
|
|
env.set("SPACK_LDLIBS", "-ltirpc")
|
|
|
|
def install(self, spec, prefix):
|
|
install_tree("bin", prefix.bin)
|
|
install_tree("include", prefix.include)
|
|
install_tree("lib", prefix.lib)
|
|
install_tree("man", prefix.man)
|
|
|
|
def setup_run_environment(self, env):
|
|
# Before running PVM, you must set the environment
|
|
# variable "PVM_ROOT" to the path where PVM resides
|
|
pvm_arch = self.pvm_arch(self.prefix)
|
|
env.set("PVM_ROOT", self.prefix)
|
|
env.set("PVM_ARCH", pvm_arch)
|
|
env.prepend_path("PATH", join_path(self.prefix, "lib"))
|
|
env.prepend_path("PATH", join_path(self.prefix, "lib", pvm_arch))
|