Compare commits
14 Commits
fix/troubl
...
develop-20
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ae9f2d4d40 | ||
|
|
5a3814ff15 | ||
|
|
946c539dbd | ||
|
|
0037462f9e | ||
|
|
e5edac4d0c | ||
|
|
3e1474dbbb | ||
|
|
0f502bb6c3 | ||
|
|
1eecbd3208 | ||
|
|
6e92b9180c | ||
|
|
ac9012da0c | ||
|
|
e3cb4f09f0 | ||
|
|
2e8600bb71 | ||
|
|
d946c37cbb | ||
|
|
47a9f0bdf7 |
2
.github/workflows/audit.yaml
vendored
2
.github/workflows/audit.yaml
vendored
@@ -34,7 +34,7 @@ jobs:
|
||||
run: |
|
||||
. share/spack/setup-env.sh
|
||||
coverage run $(which spack) audit packages
|
||||
coverage run $(which spack) audit externals
|
||||
coverage run $(which spack) -d audit externals
|
||||
coverage combine
|
||||
coverage xml
|
||||
- name: Package audits (without coverage)
|
||||
|
||||
4
.github/workflows/build-containers.yml
vendored
4
.github/workflows/build-containers.yml
vendored
@@ -50,7 +50,9 @@ jobs:
|
||||
[rockylinux8, 'linux/amd64,linux/arm64', 'rockylinux:8'],
|
||||
[rockylinux9, 'linux/amd64,linux/arm64', 'rockylinux:9'],
|
||||
[fedora37, 'linux/amd64,linux/arm64,linux/ppc64le', 'fedora:37'],
|
||||
[fedora38, 'linux/amd64,linux/arm64,linux/ppc64le', 'fedora:38']]
|
||||
[fedora38, 'linux/amd64,linux/arm64,linux/ppc64le', 'fedora:38'],
|
||||
[fedora39, 'linux/amd64,linux/arm64,linux/ppc64le', 'fedora:39'],
|
||||
[fedora40, 'linux/amd64,linux/arm64,linux/ppc64le', 'fedora:40']]
|
||||
name: Build ${{ matrix.dockerfile[0] }}
|
||||
if: github.repository == 'spack/spack'
|
||||
steps:
|
||||
|
||||
@@ -233,6 +233,12 @@ The OS that are currently supported are summarized in the table below:
|
||||
* - Fedora Linux 38
|
||||
- ``fedora:38``
|
||||
- ``spack/fedora38``
|
||||
* - Fedora Linux 39
|
||||
- ``fedora:39``
|
||||
- ``spack/fedora39``
|
||||
* - Fedora Linux 40
|
||||
- ``fedora:40``
|
||||
- ``spack/fedora40``
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -6435,9 +6435,12 @@ the ``paths`` attribute:
|
||||
echo "Target: x86_64-pc-linux-gnu"
|
||||
echo "Thread model: posix"
|
||||
echo "InstalledDir: /usr/bin"
|
||||
platforms: ["linux", "darwin"]
|
||||
results:
|
||||
- spec: 'llvm@3.9.1 +clang~lld~lldb'
|
||||
|
||||
If the ``platforms`` attribute is present, tests are run only if the current host
|
||||
matches one of the listed platforms.
|
||||
Each test is performed by first creating a temporary directory structure as
|
||||
specified in the corresponding ``layout`` and by then running
|
||||
package detection and checking that the outcome matches the expected
|
||||
@@ -6471,6 +6474,10 @@ package detection and checking that the outcome matches the expected
|
||||
- A spec that is expected from detection
|
||||
- Any valid spec
|
||||
- Yes
|
||||
* - ``results:[0]:extra_attributes``
|
||||
- Extra attributes expected on the associated Spec
|
||||
- Nested dictionary with string as keys, and regular expressions as leaf values
|
||||
- No
|
||||
|
||||
"""""""""""""""""""""""""""""""
|
||||
Reuse tests from other packages
|
||||
|
||||
2
lib/spack/env/cc
vendored
2
lib/spack/env/cc
vendored
@@ -755,7 +755,7 @@ esac
|
||||
|
||||
# Linker flags
|
||||
case "$mode" in
|
||||
ld|ccld)
|
||||
ccld)
|
||||
extend spack_flags_list SPACK_LDFLAGS
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -1111,4 +1111,76 @@ def _test_detection_by_executable(pkgs, error_cls):
|
||||
details = [msg.format(s, idx) for s in sorted(not_expected)]
|
||||
errors.append(error_cls(summary=summary, details=details))
|
||||
|
||||
matched_detection = []
|
||||
for candidate in expected_specs:
|
||||
try:
|
||||
idx = specs.index(candidate)
|
||||
except (AttributeError, ValueError):
|
||||
pass
|
||||
|
||||
matched_detection.append((candidate, specs[idx]))
|
||||
|
||||
def _compare_extra_attribute(_expected, _detected, *, _spec):
|
||||
result = []
|
||||
# Check items are of the same type
|
||||
if not isinstance(_detected, type(_expected)):
|
||||
_summary = f'{pkg_name}: error when trying to detect "{_expected}"'
|
||||
_details = [f"{_detected} was detected instead"]
|
||||
return [error_cls(summary=_summary, details=_details)]
|
||||
|
||||
# If they are string expected is a regex
|
||||
if isinstance(_expected, str):
|
||||
try:
|
||||
_regex = re.compile(_expected)
|
||||
except re.error:
|
||||
_summary = f'{pkg_name}: illegal regex in "{_spec}" extra attributes'
|
||||
_details = [f"{_expected} is not a valid regex"]
|
||||
return [error_cls(summary=_summary, details=_details)]
|
||||
|
||||
if not _regex.match(_detected):
|
||||
_summary = (
|
||||
f'{pkg_name}: error when trying to match "{_expected}" '
|
||||
f"in extra attributes"
|
||||
)
|
||||
_details = [f"{_detected} does not match the regex"]
|
||||
return [error_cls(summary=_summary, details=_details)]
|
||||
|
||||
if isinstance(_expected, dict):
|
||||
_not_detected = set(_expected.keys()) - set(_detected.keys())
|
||||
if _not_detected:
|
||||
_summary = f"{pkg_name}: cannot detect some attributes for spec {_spec}"
|
||||
_details = [
|
||||
f'"{_expected}" was expected',
|
||||
f'"{_detected}" was detected',
|
||||
] + [f'attribute "{s}" was not detected' for s in sorted(_not_detected)]
|
||||
result.append(error_cls(summary=_summary, details=_details))
|
||||
|
||||
_common = set(_expected.keys()) & set(_detected.keys())
|
||||
for _key in _common:
|
||||
result.extend(
|
||||
_compare_extra_attribute(_expected[_key], _detected[_key], _spec=_spec)
|
||||
)
|
||||
|
||||
return result
|
||||
|
||||
for expected, detected in matched_detection:
|
||||
# We might not want to test all attributes, so avoid not_expected
|
||||
not_detected = set(expected.extra_attributes) - set(detected.extra_attributes)
|
||||
if not_detected:
|
||||
summary = f"{pkg_name}: cannot detect some attributes for spec {expected}"
|
||||
details = [
|
||||
f'"{s}" was not detected [test_id={idx}]' for s in sorted(not_detected)
|
||||
]
|
||||
errors.append(error_cls(summary=summary, details=details))
|
||||
|
||||
common = set(expected.extra_attributes) & set(detected.extra_attributes)
|
||||
for key in common:
|
||||
errors.extend(
|
||||
_compare_extra_attribute(
|
||||
expected.extra_attributes[key],
|
||||
detected.extra_attributes[key],
|
||||
_spec=expected,
|
||||
)
|
||||
)
|
||||
|
||||
return errors
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
from llnl.util.link_tree import LinkTree
|
||||
|
||||
from spack.build_environment import dso_suffix
|
||||
from spack.directives import conflicts, license, variant
|
||||
from spack.directives import conflicts, license, redistribute, variant
|
||||
from spack.package_base import InstallError
|
||||
from spack.util.environment import EnvironmentModifications
|
||||
from spack.util.executable import Executable
|
||||
@@ -30,7 +30,7 @@ class IntelOneApiPackage(Package):
|
||||
|
||||
# oneAPI license does not allow mirroring outside of the
|
||||
# organization (e.g. University/Company).
|
||||
redistribute_source = False
|
||||
redistribute(source=False, binary=False)
|
||||
|
||||
for c in [
|
||||
"target=ppc64:",
|
||||
|
||||
@@ -12,9 +12,31 @@
|
||||
},
|
||||
"os_package_manager": "yum_amazon"
|
||||
},
|
||||
"fedora:40": {
|
||||
"bootstrap": {
|
||||
"template": "container/fedora.dockerfile",
|
||||
"image": "docker.io/fedora:40"
|
||||
},
|
||||
"os_package_manager": "dnf",
|
||||
"build": "spack/fedora40",
|
||||
"final": {
|
||||
"image": "docker.io/fedora:40"
|
||||
}
|
||||
},
|
||||
"fedora:39": {
|
||||
"bootstrap": {
|
||||
"template": "container/fedora.dockerfile",
|
||||
"image": "docker.io/fedora:39"
|
||||
},
|
||||
"os_package_manager": "dnf",
|
||||
"build": "spack/fedora39",
|
||||
"final": {
|
||||
"image": "docker.io/fedora:39"
|
||||
}
|
||||
},
|
||||
"fedora:38": {
|
||||
"bootstrap": {
|
||||
"template": "container/fedora_38.dockerfile",
|
||||
"template": "container/fedora.dockerfile",
|
||||
"image": "docker.io/fedora:38"
|
||||
},
|
||||
"os_package_manager": "dnf",
|
||||
@@ -25,7 +47,7 @@
|
||||
},
|
||||
"fedora:37": {
|
||||
"bootstrap": {
|
||||
"template": "container/fedora_37.dockerfile",
|
||||
"template": "container/fedora.dockerfile",
|
||||
"image": "docker.io/fedora:37"
|
||||
},
|
||||
"os_package_manager": "dnf",
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
|
||||
from llnl.util import filesystem
|
||||
|
||||
import spack.platforms
|
||||
import spack.repo
|
||||
import spack.spec
|
||||
from spack.util import spack_yaml
|
||||
@@ -32,6 +33,8 @@ class ExpectedTestResult(NamedTuple):
|
||||
|
||||
#: Spec to be detected
|
||||
spec: str
|
||||
#: Attributes expected in the external spec
|
||||
extra_attributes: Dict[str, str]
|
||||
|
||||
|
||||
class DetectionTest(NamedTuple):
|
||||
@@ -100,7 +103,10 @@ def _create_executable_scripts(self, mock_executables: MockExecutables) -> List[
|
||||
|
||||
@property
|
||||
def expected_specs(self) -> List[spack.spec.Spec]:
|
||||
return [spack.spec.Spec(r.spec) for r in self.test.results]
|
||||
return [
|
||||
spack.spec.Spec.from_detection(item.spec, extra_attributes=item.extra_attributes)
|
||||
for item in self.test.results
|
||||
]
|
||||
|
||||
|
||||
def detection_tests(pkg_name: str, repository: spack.repo.RepoPath) -> List[Runner]:
|
||||
@@ -117,9 +123,13 @@ def detection_tests(pkg_name: str, repository: spack.repo.RepoPath) -> List[Runn
|
||||
"""
|
||||
result = []
|
||||
detection_tests_content = read_detection_tests(pkg_name, repository)
|
||||
current_platform = str(spack.platforms.host())
|
||||
|
||||
tests_by_path = detection_tests_content.get("paths", [])
|
||||
for single_test_data in tests_by_path:
|
||||
if current_platform not in single_test_data.get("platforms", [current_platform]):
|
||||
continue
|
||||
|
||||
mock_executables = []
|
||||
for layout in single_test_data["layout"]:
|
||||
mock_executables.append(
|
||||
@@ -127,7 +137,11 @@ def detection_tests(pkg_name: str, repository: spack.repo.RepoPath) -> List[Runn
|
||||
)
|
||||
expected_results = []
|
||||
for assertion in single_test_data["results"]:
|
||||
expected_results.append(ExpectedTestResult(spec=assertion["spec"]))
|
||||
expected_results.append(
|
||||
ExpectedTestResult(
|
||||
spec=assertion["spec"], extra_attributes=assertion.get("extra_attributes", {})
|
||||
)
|
||||
)
|
||||
|
||||
current_test = DetectionTest(
|
||||
pkg_name=pkg_name, layout=mock_executables, results=expected_results
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
%=============================================================================
|
||||
|
||||
% macOS
|
||||
os_compatible("sonoma", "ventura").
|
||||
os_compatible("ventura", "monterey").
|
||||
os_compatible("monterey", "bigsur").
|
||||
os_compatible("bigsur", "catalina").
|
||||
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
spack_cflags = ["-Wall"]
|
||||
spack_cxxflags = ["-Werror"]
|
||||
spack_fflags = ["-w"]
|
||||
spack_ldflags = ["-L", "foo"]
|
||||
spack_ldflags = ["-Wl,--gc-sections", "-L", "foo"]
|
||||
spack_ldlibs = ["-lfoo"]
|
||||
|
||||
lheaderpad = ["-Wl,-headerpad_max_install_names"]
|
||||
@@ -279,7 +279,6 @@ def test_ld_flags(wrapper_environment, wrapper_flags):
|
||||
test_args,
|
||||
["ld"]
|
||||
+ test_include_paths
|
||||
+ [spack_ldflags[i] + spack_ldflags[i + 1] for i in range(0, len(spack_ldflags), 2)]
|
||||
+ test_library_paths
|
||||
+ ["--disable-new-dtags"]
|
||||
+ test_rpaths
|
||||
@@ -307,13 +306,14 @@ def test_cc_flags(wrapper_environment, wrapper_flags):
|
||||
[real_cc]
|
||||
+ target_args
|
||||
+ test_include_paths
|
||||
+ [spack_ldflags[i] + spack_ldflags[i + 1] for i in range(0, len(spack_ldflags), 2)]
|
||||
+ ["-Lfoo"]
|
||||
+ test_library_paths
|
||||
+ ["-Wl,--disable-new-dtags"]
|
||||
+ test_wl_rpaths
|
||||
+ test_args_without_paths
|
||||
+ spack_cppflags
|
||||
+ spack_cflags
|
||||
+ ["-Wl,--gc-sections"]
|
||||
+ spack_ldlibs,
|
||||
)
|
||||
|
||||
@@ -325,12 +325,13 @@ def test_cxx_flags(wrapper_environment, wrapper_flags):
|
||||
[real_cc]
|
||||
+ target_args
|
||||
+ test_include_paths
|
||||
+ [spack_ldflags[i] + spack_ldflags[i + 1] for i in range(0, len(spack_ldflags), 2)]
|
||||
+ ["-Lfoo"]
|
||||
+ test_library_paths
|
||||
+ ["-Wl,--disable-new-dtags"]
|
||||
+ test_wl_rpaths
|
||||
+ test_args_without_paths
|
||||
+ spack_cppflags
|
||||
+ ["-Wl,--gc-sections"]
|
||||
+ spack_ldlibs,
|
||||
)
|
||||
|
||||
@@ -342,13 +343,14 @@ def test_fc_flags(wrapper_environment, wrapper_flags):
|
||||
[real_cc]
|
||||
+ target_args
|
||||
+ test_include_paths
|
||||
+ [spack_ldflags[i] + spack_ldflags[i + 1] for i in range(0, len(spack_ldflags), 2)]
|
||||
+ ["-Lfoo"]
|
||||
+ test_library_paths
|
||||
+ ["-Wl,--disable-new-dtags"]
|
||||
+ test_wl_rpaths
|
||||
+ test_args_without_paths
|
||||
+ spack_fflags
|
||||
+ spack_cppflags
|
||||
+ ["-Wl,--gc-sections"]
|
||||
+ spack_ldlibs,
|
||||
)
|
||||
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
{% extends "container/bootstrap-base.dockerfile" %}
|
||||
{% block install_os_packages %}
|
||||
RUN dnf update -y \
|
||||
&& dnf install -y \
|
||||
bzip2 \
|
||||
curl \
|
||||
file \
|
||||
findutils \
|
||||
gcc-c++ \
|
||||
gcc \
|
||||
gcc-gfortran \
|
||||
git \
|
||||
gnupg2 \
|
||||
hg \
|
||||
hostname \
|
||||
iproute \
|
||||
make \
|
||||
patch \
|
||||
python3 \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
svn \
|
||||
unzip \
|
||||
zstd \
|
||||
xz \
|
||||
&& pip3 install boto3 \
|
||||
&& rm -rf /var/cache/dnf \
|
||||
&& dnf clean all
|
||||
{% endblock %}
|
||||
@@ -9,6 +9,7 @@ paths:
|
||||
echo "Target: x86_64-apple-darwin19.5.0"
|
||||
echo "Thread model: posix"
|
||||
echo "InstalledDir: /Library/Developer/CommandLineTools/usr/bin"
|
||||
platforms: ["darwin"]
|
||||
results:
|
||||
- spec: 'apple-clang@11.0.0'
|
||||
# Apple Clang on Apple M1 (Ventura)
|
||||
@@ -21,6 +22,7 @@ paths:
|
||||
echo "Target: arm64-apple-darwin22.6.0"
|
||||
echo "Thread model: posix"
|
||||
echo "InstalledDir: /Library/Developer/CommandLineTools/usr/bin"
|
||||
platforms: ["darwin"]
|
||||
results:
|
||||
- spec: 'apple-clang@15.0.0'
|
||||
# Test that missing a compiler prevents the package from being detected
|
||||
@@ -32,4 +34,5 @@ paths:
|
||||
echo "Target: x86_64-apple-darwin19.5.0"
|
||||
echo "Thread model: posix"
|
||||
echo "InstalledDir: /Library/Developer/CommandLineTools/usr/bin"
|
||||
platforms: ["darwin"]
|
||||
results: [ ]
|
||||
|
||||
43
var/spack/repos/builtin/packages/armci-mpi/package.py
Normal file
43
var/spack/repos/builtin/packages/armci-mpi/package.py
Normal file
@@ -0,0 +1,43 @@
|
||||
# Copyright 2013-2024 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.package import *
|
||||
|
||||
|
||||
class ArmciMpi(AutotoolsPackage):
|
||||
"""ARMCI-MPI is an implementation of the ARMCI library used by Global Arrays.
|
||||
MPI-3 one-sided communication is used to implement ARMCI.
|
||||
"""
|
||||
|
||||
homepage = "https://github.com/pmodels/armci-mpi"
|
||||
url = "https://github.com/pmodels/armci-mpi/archive/refs/tags/v0.4.tar.gz"
|
||||
|
||||
maintainers("jeffhammond")
|
||||
|
||||
license("BSD-3-Clause", checked_by="jeffhammond")
|
||||
|
||||
version("0.4", sha256="bcc3bb189b23bf653dcc69bc469eb86eae5ebc5ad94ab5f83e52ddbdbbebf1b1")
|
||||
version(
|
||||
"0.3.1-beta", sha256="f3eaa8f365fb55123ecd9ced401086b0732e37e4df592b27916d71a67ab34fe9"
|
||||
)
|
||||
|
||||
variant("shared", default=True, description="Builds a shared version of the library")
|
||||
variant("progress", default=False, description="Enable asynchronous progress")
|
||||
|
||||
depends_on("autoconf", type="build")
|
||||
depends_on("automake", type="build")
|
||||
depends_on("libtool", type="build")
|
||||
depends_on("m4", type="build")
|
||||
|
||||
depends_on("mpi")
|
||||
|
||||
def autoreconf(self, spec, prefix):
|
||||
autoreconf("--install", "--verbose", "--force")
|
||||
|
||||
def configure_args(self):
|
||||
args = ["--enable-g"]
|
||||
args.extend(self.enable_or_disable("shared"))
|
||||
args.extend(self.with_or_without("progress"))
|
||||
return args
|
||||
@@ -20,8 +20,13 @@ paths:
|
||||
echo "mock executable got an unexpected flag: $1"
|
||||
exit 1
|
||||
fi
|
||||
platforms: ["darwin", "linux"]
|
||||
results:
|
||||
- spec: "gcc@9.4.0 languages=c,c++"
|
||||
extra_attributes:
|
||||
compilers:
|
||||
c: ".*/bin/gcc"
|
||||
cxx: ".*/bin/g++"
|
||||
# Mock a version < 7 of GCC that requires -dumpversion and
|
||||
# errors with -dumpfullversion
|
||||
- layout:
|
||||
@@ -37,8 +42,14 @@ paths:
|
||||
echo "compilation terminated."
|
||||
exit 1
|
||||
fi
|
||||
platforms: ["darwin", "linux"]
|
||||
results:
|
||||
- spec: "gcc@5.5.0 languages=c,c++,fortran"
|
||||
extra_attributes:
|
||||
compilers:
|
||||
c: ".*/bin/gcc-5$"
|
||||
cxx: ".*/bin/g[+][+]-5$"
|
||||
fortran: ".*/bin/gfortran-5$"
|
||||
# Multiple compilers present at the same time
|
||||
- layout:
|
||||
- executables:
|
||||
@@ -50,7 +61,14 @@ paths:
|
||||
script: "echo 10.1.0"
|
||||
results:
|
||||
- spec: "gcc@6.5.0 languages=c"
|
||||
extra_attributes:
|
||||
compilers:
|
||||
c: ".*/bin/x86_64-linux-gnu-gcc-6$"
|
||||
- spec: "gcc@10.1.0 languages=c,c++"
|
||||
extra_attributes:
|
||||
compilers:
|
||||
c: ".*/bin/x86_64-linux-gnu-gcc-10$"
|
||||
cxx: ".*/bin/x86_64-linux-gnu-g[+][+]-10$"
|
||||
# Apple clang under disguise as gcc should not be detected
|
||||
- layout:
|
||||
- executables:
|
||||
@@ -70,4 +88,5 @@ paths:
|
||||
echo "mock executable got an unexpected flag: $1"
|
||||
exit 1
|
||||
fi
|
||||
platforms: ["darwin"]
|
||||
results: []
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
import spack.platforms
|
||||
import spack.util.executable
|
||||
from spack.build_environment import dso_suffix
|
||||
from spack.operating_systems.mac_os import macos_sdk_path, macos_version
|
||||
from spack.package import *
|
||||
|
||||
@@ -957,76 +956,42 @@ def install_targets(self):
|
||||
@property
|
||||
def spec_dir(self):
|
||||
# e.g. lib/gcc/x86_64-unknown-linux-gnu/4.9.2
|
||||
spec_dir = glob.glob("{0}/gcc/*/*".format(self.prefix.lib))
|
||||
spec_dir = glob.glob(f"{self.prefix.lib}/gcc/*/*")
|
||||
return spec_dir[0] if spec_dir else None
|
||||
|
||||
@run_after("install")
|
||||
def write_rpath_specs(self):
|
||||
"""Generate a spec file so the linker adds a rpath to the libs
|
||||
the compiler used to build the executable.
|
||||
|
||||
.. caution::
|
||||
|
||||
The custom spec file by default with *always* pass ``-Wl,-rpath
|
||||
...`` to the linker, which will cause the linker to *ignore* the
|
||||
value of ``LD_RUN_PATH``, which otherwise would be saved to the
|
||||
binary as the default rpath. See the mitigation below for how to
|
||||
temporarily disable this behavior.
|
||||
|
||||
Structure the specs file so that users can define a custom spec file
|
||||
to suppress the spack-linked rpaths to facilitate rpath adjustment
|
||||
for relocatable binaries. The custom spec file
|
||||
:file:`{norpath}.spec` will have a single
|
||||
line followed by two blanks lines::
|
||||
|
||||
*link_libgcc_rpath:
|
||||
|
||||
|
||||
|
||||
It can be passed to the GCC linker using the argument
|
||||
``--specs=norpath.spec`` to disable the automatic rpath and restore
|
||||
the behavior of ``LD_RUN_PATH``."""
|
||||
def write_specs_file(self):
|
||||
"""(1) inject an rpath to its runtime library dir, (2) add a default programs search path
|
||||
to <binutils>/bin."""
|
||||
if not self.spec_dir:
|
||||
tty.warn(
|
||||
"Could not install specs for {0}.".format(self.spec.format("{name}{@version}"))
|
||||
)
|
||||
tty.warn(f"Could not install specs for {self.spec.format('{name}{@version}')}.")
|
||||
return
|
||||
|
||||
gcc = self.spec["gcc"].command
|
||||
lines = gcc("-dumpspecs", output=str).splitlines(True)
|
||||
specs_file = join_path(self.spec_dir, "specs")
|
||||
|
||||
# Save a backup
|
||||
with open(specs_file + ".orig", "w") as out:
|
||||
out.writelines(lines)
|
||||
|
||||
# Find which directories have shared libraries
|
||||
rpath_libdirs = []
|
||||
for dir in ["lib", "lib64"]:
|
||||
for dir in ["lib64", "lib"]:
|
||||
libdir = join_path(self.prefix, dir)
|
||||
if glob.glob(join_path(libdir, "*." + dso_suffix)):
|
||||
rpath_libdirs.append(libdir)
|
||||
|
||||
if not rpath_libdirs:
|
||||
# No shared libraries
|
||||
if glob.glob(join_path(libdir, "libgcc_s.*")):
|
||||
rpath_dir = libdir
|
||||
break
|
||||
else:
|
||||
tty.warn("No dynamic libraries found in lib/lib64")
|
||||
return
|
||||
rpath_dir = None
|
||||
|
||||
# Overwrite the specs file
|
||||
with open(specs_file, "w") as out:
|
||||
for line in lines:
|
||||
out.write(line)
|
||||
if line.startswith("*link_libgcc:"):
|
||||
# Insert at start of line following link_libgcc, which gets
|
||||
# inserted into every call to the linker
|
||||
out.write("%(link_libgcc_rpath) ")
|
||||
specs_file = join_path(self.spec_dir, "specs")
|
||||
with open(specs_file, "w") as f:
|
||||
# rpath
|
||||
if rpath_dir:
|
||||
print("*link_libgcc:", file=f)
|
||||
print(f"+ -rpath={rpath_dir}", file=f)
|
||||
print(file=f)
|
||||
|
||||
# Add easily-overridable rpath string at the end
|
||||
out.write("*link_libgcc_rpath:\n")
|
||||
out.write(" ".join("-rpath " + lib for lib in rpath_libdirs))
|
||||
out.write("\n")
|
||||
# programs search path
|
||||
if self.spec.satisfies("+binutils"):
|
||||
print("*self_spec:", file=f)
|
||||
print(f"+ -B{self.spec['binutils'].prefix.bin}", file=f)
|
||||
print(file=f)
|
||||
set_install_permissions(specs_file)
|
||||
tty.info("Wrote new spec file to {0}".format(specs_file))
|
||||
tty.info(f"Wrote new spec file to {specs_file}")
|
||||
|
||||
def setup_run_environment(self, env):
|
||||
# Search prefix directory for possibly modified compiler names
|
||||
|
||||
@@ -10,8 +10,9 @@
|
||||
from spack.pkg.builtin.gcc_runtime import get_elf_libraries
|
||||
|
||||
|
||||
@IntelOneApiPackage.update_description
|
||||
class IntelOneapiRuntime(Package):
|
||||
"""Package for OneAPI compiler runtime libraries"""
|
||||
"""Package for OneAPI compiler runtime libraries redistributables."""
|
||||
|
||||
homepage = "https://software.intel.com/content/www/us/en/develop/tools/oneapi.html"
|
||||
has_code = False
|
||||
|
||||
@@ -15,5 +15,6 @@ paths:
|
||||
script: |
|
||||
echo "ifort (IFORT) 18.0.5 20180823"
|
||||
echo "Copyright (C) 1985-2018 Intel Corporation. All rights reserved."
|
||||
platforms: ["darwin", "linux"]
|
||||
results:
|
||||
- spec: 'intel@18.0.5'
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
diff --git a/base/Makefile b/base/Makefile
|
||||
index ad2bb6a63c..493302af78 100644
|
||||
--- a/base/Makefile
|
||||
+++ b/base/Makefile
|
||||
@@ -269,11 +269,9 @@ $(eval $(call symlink_system_library,LIBSUITESPARSE,libamd))
|
||||
$(eval $(call symlink_system_library,LIBSUITESPARSE,libcamd))
|
||||
$(eval $(call symlink_system_library,LIBSUITESPARSE,libccolamd))
|
||||
$(eval $(call symlink_system_library,LIBSUITESPARSE,libcholmod))
|
||||
-$(eval $(call symlink_system_library,LIBSUITESPARSE,libcholmod_cuda))
|
||||
$(eval $(call symlink_system_library,LIBSUITESPARSE,libcolamd))
|
||||
$(eval $(call symlink_system_library,LIBSUITESPARSE,libumfpack))
|
||||
$(eval $(call symlink_system_library,LIBSUITESPARSE,libspqr))
|
||||
-$(eval $(call symlink_system_library,LIBSUITESPARSE,libspqr_cuda))
|
||||
$(eval $(call symlink_system_library,LIBSUITESPARSE,libsuitesparseconfig))
|
||||
# EXCLUDED LIBRARIES (installed/used, but not vendored for use with dlopen):
|
||||
# libunwind
|
||||
@@ -26,6 +26,7 @@ class Julia(MakefilePackage):
|
||||
maintainers("vchuravy", "haampie", "giordano")
|
||||
|
||||
version("master", branch="master")
|
||||
version("1.10.2", sha256="e3d20c02975da054aeb18d32ed84c5d760d54d2563e45e25017684a5a105d185")
|
||||
version("1.9.3", sha256="8d7dbd8c90e71179e53838cdbe24ff40779a90d7360e29766609ed90d982081d")
|
||||
version("1.9.2", sha256="015438875d591372b80b09d01ba899657a6517b7c72ed41222298fef9d4ad86b")
|
||||
version("1.9.0", sha256="48f4c8a7d5f33d0bc6ce24226df20ab49e385c2d0c3767ec8dfdb449602095b2")
|
||||
@@ -59,9 +60,24 @@ class Julia(MakefilePackage):
|
||||
)
|
||||
depends_on("libuv", when="@:1.7")
|
||||
depends_on("libuv-julia@1.42.0", when="@1.8.0:1.8.1")
|
||||
depends_on("libuv-julia@1.44.2", when="@1.8.2:")
|
||||
depends_on("libuv-julia@1.44.2", when="@1.8.2:1.9")
|
||||
depends_on("libuv-julia@1.44.3", when="@1.10.0:")
|
||||
depends_on("suite-sparse@5.4:5.10", when="@1.6:1.9")
|
||||
|
||||
with when("@1.10.0:1.10"):
|
||||
# libssh2.so.1, libpcre2-8.so.0, libmbedtls.so.14, libmbedcrypto.so.7, libmbedx509.so.1,
|
||||
# libopenlibm.so.4, libblastrampoline.so.5, libgit2.so.1.6, libnghttp2.so.14,
|
||||
# libcurl.so.4
|
||||
depends_on("libblastrampoline@5.8.0:5")
|
||||
depends_on("libgit2@1.6.4:1.6")
|
||||
depends_on("libssh2@1.11.0:1.11")
|
||||
depends_on("llvm@15.0.7 +lld shlib_symbol_version=JL_LLVM_15.0")
|
||||
depends_on("mbedtls@2.28.2:2.28")
|
||||
depends_on("openlibm@0.8.1:0.8", when="+openlibm")
|
||||
depends_on("nghttp2@1.52.0:1.52")
|
||||
depends_on("curl@8.4.0:")
|
||||
depends_on("suite-sparse@7.2.1")
|
||||
|
||||
with when("@1.9.0:1.9"):
|
||||
# libssh2.so.1, libpcre2-8.so.0, mbedtls.so.14, mbedcrypto.so.7, mbedx509.so.1
|
||||
# openlibm.so.4, libblastrampoline.so.5, libgit2.so.1.5, libnghttp2.so.14,
|
||||
@@ -125,7 +141,7 @@ class Julia(MakefilePackage):
|
||||
"llvm",
|
||||
when="^llvm@12.0.1",
|
||||
patches=patch(
|
||||
"https://raw.githubusercontent.com/spack/patches/master/julia/10cb42f80c2eaad3e9c87cb818b6676f1be26737bdf972c77392d71707386aa4.patch",
|
||||
"https://raw.githubusercontent.com/spack/patches/24ff44c4c5439400747941473c0298a74c1fbcb1/julia/10cb42f80c2eaad3e9c87cb818b6676f1be26737bdf972c77392d71707386aa4.patch",
|
||||
sha256="10cb42f80c2eaad3e9c87cb818b6676f1be26737bdf972c77392d71707386aa4",
|
||||
),
|
||||
)
|
||||
@@ -133,7 +149,7 @@ class Julia(MakefilePackage):
|
||||
"llvm",
|
||||
when="^llvm@13.0.1",
|
||||
patches=patch(
|
||||
"https://raw.githubusercontent.com/spack/patches/master/julia/45f72c59ae5cf45461e9cd8b224ca49b739d885c79b3786026433c6c22f83b5f.patch",
|
||||
"https://raw.githubusercontent.com/spack/patches/24ff44c4c5439400747941473c0298a74c1fbcb1/julia/45f72c59ae5cf45461e9cd8b224ca49b739d885c79b3786026433c6c22f83b5f.patch",
|
||||
sha256="45f72c59ae5cf45461e9cd8b224ca49b739d885c79b3786026433c6c22f83b5f",
|
||||
),
|
||||
)
|
||||
@@ -141,10 +157,18 @@ class Julia(MakefilePackage):
|
||||
"llvm",
|
||||
when="^llvm@14.0.6",
|
||||
patches=patch(
|
||||
"https://raw.githubusercontent.com/spack/patches/master/julia/f3def26930832532bbcd861d41b31ae03db993bc2b3510f89ef831a30bd3e099.patch",
|
||||
"https://raw.githubusercontent.com/spack/patches/24ff44c4c5439400747941473c0298a74c1fbcb1/julia/f3def26930832532bbcd861d41b31ae03db993bc2b3510f89ef831a30bd3e099.patch",
|
||||
sha256="f3def26930832532bbcd861d41b31ae03db993bc2b3510f89ef831a30bd3e099",
|
||||
),
|
||||
)
|
||||
depends_on(
|
||||
"llvm",
|
||||
when="^llvm@15.0.7",
|
||||
patches=patch(
|
||||
"https://raw.githubusercontent.com/spack/patches/24ff44c4c5439400747941473c0298a74c1fbcb1/julia/25cdc0271e7722d4a7cc6f72abcb17bfe205fc741bbe3716a21759c3eee7d32c.patch",
|
||||
sha256="25cdc0271e7722d4a7cc6f72abcb17bfe205fc741bbe3716a21759c3eee7d32c",
|
||||
),
|
||||
)
|
||||
|
||||
# Patches for libuv
|
||||
depends_on(
|
||||
@@ -234,6 +258,11 @@ class Julia(MakefilePackage):
|
||||
# Make sure Julia sets -DNDEBUG when including LLVM header files.
|
||||
patch("llvm-NDEBUG.patch", when="@1.7.0:1.7")
|
||||
|
||||
# suite-sparse@7.2.1 sometimes builds cuda stub libraries and Julia build
|
||||
# system deals with them, but we don't compile them, so we remove the code
|
||||
# which is creating symlinks to those libraries.
|
||||
patch("julia-1.10-rm-suite-sparse-cuda-stubs.patch", when="@1.10.0:1.10")
|
||||
|
||||
def patch(self):
|
||||
# The system-libwhich-libblastrampoline.patch causes a rebuild of docs as it
|
||||
# touches the main Makefile, so we reset the a/m-time to doc/_build's.
|
||||
|
||||
@@ -16,13 +16,13 @@ class Libcatalyst(CMakePackage):
|
||||
|
||||
homepage = "https://gitlab.kitware.com/paraview/catalyst"
|
||||
git = "https://gitlab.kitware.com/paraview/catalyst.git"
|
||||
url = "https://gitlab.kitware.com/api/v4/projects/paraview%2Fcatalyst/packages/generic/catalyst/v2.0.0/catalyst-v2.0.0.tar.gz"
|
||||
url = "https://gitlab.kitware.com/api/v4/projects/5912/packages/generic/catalyst/v2.0.0/catalyst-v2.0.0.tar.gz"
|
||||
|
||||
license("BSD-3-Clause")
|
||||
|
||||
maintainers("mathstuf", "ayenpure")
|
||||
version("master", branch="master")
|
||||
version("2.0.0-rc4", sha256="cb491e4ccd344156cc2494f65b9f38885598c16d12e1016c36e2ee0bc3640863")
|
||||
version("2.0.0", sha256="5842b690bd8afa635414da9b9c5e5d79fa37879b0d382428d0d8e26ba5374828")
|
||||
|
||||
variant("mpi", default=False, description="Enable MPI support")
|
||||
variant("conduit", default=False, description="Use external Conduit for Catalyst")
|
||||
|
||||
@@ -14,6 +14,7 @@ paths:
|
||||
echo "Target: x86_64-pc-linux-gnu"
|
||||
echo "Thread model: posix"
|
||||
echo "InstalledDir: /usr/bin"
|
||||
platforms: ["darwin", "linux"]
|
||||
results:
|
||||
- spec: 'llvm@3.9.1 +clang~lld~lldb'
|
||||
# Multiple LLVM packages in the same prefix
|
||||
@@ -40,6 +41,7 @@ paths:
|
||||
echo "Target: x86_64-pc-linux-gnu"
|
||||
echo "Thread model: posix"
|
||||
echo "InstalledDir: /usr/bin"
|
||||
platforms: ["darwin", "linux"]
|
||||
results:
|
||||
- spec: 'llvm@8.0.0+clang+lld+lldb'
|
||||
- spec: 'llvm@3.9.1+clang~lld~lldb'
|
||||
@@ -53,4 +55,5 @@ paths:
|
||||
echo "Target: x86_64-apple-darwin19.5.0"
|
||||
echo "Thread model: posix"
|
||||
echo "InstalledDir: /Library/Developer/CommandLineTools/usr/bin"
|
||||
platforms: ["darwin"]
|
||||
results: []
|
||||
|
||||
@@ -936,7 +936,9 @@ def cmake_args(self):
|
||||
|
||||
cmake_args.append(from_variant("LIBOMP_TSAN_SUPPORT", "libomp_tsan"))
|
||||
|
||||
if self.compiler.name == "gcc":
|
||||
# From clang 16 onwards we use a more precise --gcc-install-dir flag in post-install
|
||||
# generated config files.
|
||||
if self.spec.satisfies("@:15 %gcc"):
|
||||
cmake_args.append(define("GCC_INSTALL_PREFIX", self.compiler.prefix))
|
||||
|
||||
if self.spec.satisfies("~code_signing platform=darwin"):
|
||||
@@ -976,12 +978,24 @@ def cmake_args(self):
|
||||
runtimes_order.index(x) if x in runtimes_order else len(runtimes_order)
|
||||
)
|
||||
)
|
||||
|
||||
# CMake args passed just to runtimes
|
||||
runtime_cmake_args = [define("CMAKE_INSTALL_RPATH_USE_LINK_PATH", True)]
|
||||
|
||||
# When building runtimes, just-built clang has to know where GCC is.
|
||||
gcc_install_dir_flag = get_gcc_install_dir_flag(spec, self.compiler)
|
||||
if gcc_install_dir_flag:
|
||||
runtime_cmake_args.extend(
|
||||
[
|
||||
define("CMAKE_C_FLAGS", gcc_install_dir_flag),
|
||||
define("CMAKE_CXX_FLAGS", gcc_install_dir_flag),
|
||||
]
|
||||
)
|
||||
|
||||
cmake_args.extend(
|
||||
[
|
||||
define("LLVM_ENABLE_RUNTIMES", runtimes),
|
||||
define(
|
||||
"RUNTIMES_CMAKE_ARGS", [define("CMAKE_INSTALL_RPATH_USE_LINK_PATH", True)]
|
||||
),
|
||||
define("RUNTIMES_CMAKE_ARGS", runtime_cmake_args),
|
||||
]
|
||||
)
|
||||
|
||||
@@ -1031,6 +1045,19 @@ def post_install(self):
|
||||
with working_dir(self.build_directory):
|
||||
install_tree("bin", join_path(self.prefix, "libexec", "llvm"))
|
||||
|
||||
cfg_files = []
|
||||
if spec.satisfies("+clang"):
|
||||
cfg_files.extend(("clang.cfg", "clang++.cfg"))
|
||||
if spec.satisfies("@19: +flang"):
|
||||
# The config file is `flang.cfg` even though the executable is `flang-new`.
|
||||
# `--gcc-install-dir` / `--gcc-toolchain` support was only added in LLVM 19.
|
||||
cfg_files.append("flang.cfg")
|
||||
gcc_install_dir_flag = get_gcc_install_dir_flag(spec, self.compiler)
|
||||
if gcc_install_dir_flag:
|
||||
for cfg in cfg_files:
|
||||
with open(os.path.join(self.prefix.bin, cfg), "w") as f:
|
||||
print(gcc_install_dir_flag, file=f)
|
||||
|
||||
def llvm_config(self, *args, **kwargs):
|
||||
lc = Executable(self.prefix.bin.join("llvm-config"))
|
||||
if not kwargs.get("output"):
|
||||
@@ -1042,6 +1069,18 @@ def llvm_config(self, *args, **kwargs):
|
||||
return ret
|
||||
|
||||
|
||||
def get_gcc_install_dir_flag(spec: Spec, compiler) -> Optional[str]:
|
||||
"""Get the --gcc-install-dir=... flag, so that clang does not do a system scan for GCC."""
|
||||
if not spec.satisfies("@16: %gcc"):
|
||||
return None
|
||||
gcc = Executable(compiler.cc)
|
||||
libgcc_path = gcc("-print-file-name=libgcc.a", output=str, fail_on_error=False).strip()
|
||||
if not os.path.isabs(libgcc_path):
|
||||
return None
|
||||
libgcc_dir = os.path.dirname(libgcc_path)
|
||||
return f"--gcc-install-dir={libgcc_dir}" if os.path.exists(libgcc_dir) else None
|
||||
|
||||
|
||||
def get_llvm_targets_to_build(spec):
|
||||
targets = spec.variants["targets"].value
|
||||
|
||||
|
||||
@@ -10,6 +10,60 @@
|
||||
from spack.util.environment import EnvironmentModifications
|
||||
|
||||
_versions = {
|
||||
"24.3.0": {
|
||||
"Linux-x86_64": (
|
||||
"96a44849ff17e960eeb8877ecd9055246381c4d4f2d031263b63fa7e2e930af1",
|
||||
"https://repo.anaconda.com/miniconda/Miniconda3-py312_24.3.0-0-Linux-x86_64.sh",
|
||||
)
|
||||
},
|
||||
"24.1.2": {
|
||||
"Linux-x86_64": (
|
||||
"b978856ec3c826eb495b60e3fffe621f670c101150ebcbdeede4f961f22dc438",
|
||||
"https://repo.anaconda.com/miniconda/Miniconda3-py312_24.1.2-0-Linux-x86_64.sh",
|
||||
)
|
||||
},
|
||||
"23.11.0": {
|
||||
"Linux-x86_64": (
|
||||
"c9ae82568e9665b1105117b4b1e499607d2a920f0aea6f94410e417a0eff1b9c",
|
||||
"https://repo.anaconda.com/miniconda/Miniconda3-py311_23.11.0-2-Linux-x86_64.sh",
|
||||
)
|
||||
},
|
||||
"23.9.0": {
|
||||
"Linux-x86_64": (
|
||||
"43651393236cb8bb4219dcd429b3803a60f318e5507d8d84ca00dafa0c69f1bb",
|
||||
"https://repo.anaconda.com/miniconda/Miniconda3-py311_23.9.0-0-Linux-x86_64.sh",
|
||||
)
|
||||
},
|
||||
"23.5.2": {
|
||||
"Linux-x86_64": (
|
||||
"634d76df5e489c44ade4085552b97bebc786d49245ed1a830022b0b406de5817",
|
||||
"https://repo.anaconda.com/miniconda/Miniconda3-py311_23.5.2-0-Linux-x86_64.sh",
|
||||
)
|
||||
},
|
||||
"23.5.1": {
|
||||
"Linux-x86_64": (
|
||||
"333779c9cae3fe14735949a8dcb9657b9e55ada69e9c60f191c5d582b2deac20",
|
||||
"https://repo.anaconda.com/miniconda/Miniconda3-py311_23.5.1-0-Linux-x86_64.sh",
|
||||
)
|
||||
},
|
||||
"23.5.0": {
|
||||
"Linux-x86_64": (
|
||||
"61a5c087893f6210176045931b89ee6e8760c17abd9c862b2cab4c1b7d00f7c8",
|
||||
"https://repo.anaconda.com/miniconda/Miniconda3-py311_23.5.0-3-Linux-x86_64.sh",
|
||||
)
|
||||
},
|
||||
"23.3.1": {
|
||||
"Linux-x86_64": (
|
||||
"aef279d6baea7f67940f16aad17ebe5f6aac97487c7c03466ff01f4819e5a651",
|
||||
"https://repo.anaconda.com/miniconda/Miniconda3-py310_23.3.1-0-Linux-x86_64.sh",
|
||||
)
|
||||
},
|
||||
"23.1.0": {
|
||||
"Linux-x86_64": (
|
||||
"32d73e1bc33fda089d7cd9ef4c1be542616bd8e437d1f77afeeaf7afdb019787",
|
||||
"https://repo.anaconda.com/miniconda/Miniconda3-py310_23.1.0-1-Linux-x86_64.sh",
|
||||
)
|
||||
},
|
||||
"22.11.1": {
|
||||
"Linux-x86_64": (
|
||||
"00938c3534750a0e4069499baf8f4e6dc1c2e471c86a59caa0dd03f4a9269db6",
|
||||
|
||||
@@ -11,9 +11,8 @@ class OsgCaCerts(Package):
|
||||
in the OpenSSL 1.0.* format."""
|
||||
|
||||
homepage = "http://repo.opensciencegrid.org/cadist"
|
||||
url = "https://github.com/opensciencegrid/osg-certificates/archive/v1.109.igtf.1.117/osg-certificates-1.109.igtf.1.117.tar.gz"
|
||||
git = "https://github.com/opensciencegrid/osg-certificates.git"
|
||||
|
||||
_osg_base_url = "https://github.com/opensciencegrid/osg-certificates/archive/v{osg_version}.igtf.{igtf_version}/osg-certificates-{osg_version}.igtf.{igtf_version}.tar.gz"
|
||||
_igtf_base_url = "https://dist.eugridpma.info/distribution/igtf/{igtf_version}/igtf-policy-installation-bundle-{igtf_version}.tar.gz"
|
||||
_letsencrypt_base_url = "https://github.com/opensciencegrid/letsencrypt-certificates/archive/v{letsencrypt_version}/letsencrypt-certificates.tar.gz"
|
||||
|
||||
@@ -21,29 +20,17 @@ class OsgCaCerts(Package):
|
||||
|
||||
releases = [
|
||||
{
|
||||
"osg_version": "1.110",
|
||||
"igtf_version": "1.119",
|
||||
"osg_sha256": "025969d415bf27c1609699caf63d0d79540a01df500187195f2bd973fe69e00d",
|
||||
"igtf_sha256": "cc4db07a86fc27f0e0dfd15c797d1a0da7b5620f4b611dbb686543712b2f335a",
|
||||
},
|
||||
{
|
||||
"osg_version": "1.109",
|
||||
"igtf_version": "1.117",
|
||||
"osg_sha256": "41e12c05aedb4df729bf326318cc29b9b79eb097564fd68c6af2e1448ec74f75",
|
||||
"igtf_sha256": "130d4d95cd65d01d2db250ee24c539341e3adc899b7eff1beafef1ba4674807d",
|
||||
},
|
||||
"osg_version": "1.119",
|
||||
"igtf_version": "1.128",
|
||||
"osg_commit": "1f7abbe392e339aae28625a4016bc98d58ad7cab",
|
||||
"igtf_sha256": "1385e2206b4088cbad94264e2c252ad431f075f88a427cdee4ed523df95b9ab7",
|
||||
}
|
||||
]
|
||||
|
||||
for release in releases:
|
||||
_version = "{0}.igtf.{1}".format(release["osg_version"], release["igtf_version"])
|
||||
|
||||
version(
|
||||
_version,
|
||||
url=_osg_base_url.format(
|
||||
osg_version=release["osg_version"], igtf_version=release["igtf_version"]
|
||||
),
|
||||
sha256=release["osg_sha256"],
|
||||
)
|
||||
version(_version, commit=release["osg_commit"])
|
||||
|
||||
resource(
|
||||
name="igtf-{igtf_version}".format(igtf_version=release["igtf_version"]),
|
||||
|
||||
@@ -15,7 +15,7 @@ class Sos(AutotoolsPackage):
|
||||
# notify when the package is updated.
|
||||
maintainers("rscohn2")
|
||||
|
||||
license("GPL-2.0-or-later")
|
||||
license("BSD-3-Clause")
|
||||
|
||||
version("1.5.2", sha256="c9df8c6ab43890e5d8970467c188ae2fad736845875ca4c370ff047dbb37d017")
|
||||
version("1.5.1", sha256="0a6303dcbdd713ef2d83c617c1eb821227603c98cb9816c53585fd993da8a984")
|
||||
@@ -24,12 +24,47 @@ class Sos(AutotoolsPackage):
|
||||
|
||||
variant("xpmem", default=False, description="Enable xpmem for transport")
|
||||
variant("ofi", default=True, description="Enable ofi for transport")
|
||||
variant(
|
||||
"manual-progress",
|
||||
default=False,
|
||||
description="Enable intermittent progress calls in transport layer",
|
||||
)
|
||||
variant(
|
||||
"ofi-manual-progress",
|
||||
default=False,
|
||||
when="+ofi",
|
||||
description="Use FI_MANUAL_PROGRESS for data progress control mode",
|
||||
)
|
||||
variant("shr-atomics", default=False, description="Enable shared memory atomic operations")
|
||||
variant(
|
||||
"av-map",
|
||||
default=False,
|
||||
description="Enable av-map instead of av-table in the OFI transport",
|
||||
)
|
||||
variant(
|
||||
"completion-polling",
|
||||
default=False,
|
||||
description="Enable polling in quiet, fence, and local completion operations",
|
||||
)
|
||||
variant(
|
||||
"thread-completion",
|
||||
default=False,
|
||||
description="Support SHMEM_THREAD_MULTIPLE in OFI transport using FI_THREAD_COMPLETION",
|
||||
)
|
||||
variant("error-checking", default=False, description="Enable error checking for SHMEM calls")
|
||||
variant(
|
||||
"lengthy-tests",
|
||||
default=False,
|
||||
description="Execute long running tests as part of 'make check'",
|
||||
)
|
||||
variant("rpath", default=True, description="Use rpath in compiler wrappers ")
|
||||
variant("hard-polling", default=False, description="Enable hard polling of wait calls")
|
||||
|
||||
depends_on("autoconf", type="build")
|
||||
depends_on("automake", type="build")
|
||||
depends_on("libtool", type="build")
|
||||
depends_on("m4", type="build")
|
||||
depends_on("hydra", type=("build", "run"), when="+ofi")
|
||||
|
||||
depends_on("libfabric", type="link", when="+ofi")
|
||||
depends_on("xpmem", type="link", when="+xpmem")
|
||||
@@ -39,8 +74,6 @@ class Sos(AutotoolsPackage):
|
||||
filter_compiler_wrappers("oshcc", "oshc++", "oshcc", "oshfort", relative_root="bin")
|
||||
|
||||
def setup_dependent_build_environment(self, env, dependent_spec):
|
||||
self.setup_compiler_environment(env)
|
||||
|
||||
# Enable the osh wrappers to use spack wrappers when inside spack
|
||||
# with env variables
|
||||
env.set("SHMEM_CC", spack_cc)
|
||||
@@ -57,5 +90,14 @@ def configure_args(self):
|
||||
args.extend(self.with_or_without("ofi"))
|
||||
# This option is not compatiable with remote atomics
|
||||
args.extend(self.enable_or_disable("shr-atomics"))
|
||||
args.extend(self.enable_or_disable("av-map"))
|
||||
args.extend(self.enable_or_disable("completion-polling"))
|
||||
args.extend(self.enable_or_disable("thread-completion"))
|
||||
args.extend(self.enable_or_disable("error-checking"))
|
||||
args.extend(self.enable_or_disable("lengthy-tests"))
|
||||
args.extend(self.enable_or_disable("rpath"))
|
||||
args.extend(self.enable_or_disable("manual-progress"))
|
||||
args.extend(self.enable_or_disable("ofi-manual-progress"))
|
||||
args.extend(self.enable_or_disable("hard-polling"))
|
||||
args.append("--enable-pmi-simple")
|
||||
return args
|
||||
|
||||
32
var/spack/repos/builtin/packages/tests-sos/package.py
Normal file
32
var/spack/repos/builtin/packages/tests-sos/package.py
Normal file
@@ -0,0 +1,32 @@
|
||||
# Copyright 2013-2024 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.package import *
|
||||
|
||||
|
||||
class TestsSos(AutotoolsPackage):
|
||||
"""Sandia OpenSHMEM unit tests and performance testing suite."""
|
||||
|
||||
homepage = "https://github.com/openshmem-org/tests-sos"
|
||||
url = "https://github.com/openshmem-org/tests-sos/archive/refs/tags/v1.5.2.tar.gz"
|
||||
|
||||
maintainers("jack-morrison")
|
||||
|
||||
version("1.5.2", sha256="3a063963ef779419aadc6b21ff2f1e4dcdd3e95fa8ed23545434e56757f3187f")
|
||||
|
||||
depends_on("autoconf", type="build")
|
||||
depends_on("automake", type="build")
|
||||
depends_on("libtool", type="build")
|
||||
depends_on("m4", type="build")
|
||||
depends_on("sos", type=("build", "run"))
|
||||
|
||||
def autoreconf(self, spec, prefix):
|
||||
bash = which("bash")
|
||||
bash("./autogen.sh")
|
||||
|
||||
def setup_build_environment(self, env):
|
||||
env.set("CC", "oshcc")
|
||||
env.set("CXX", "oshc++")
|
||||
env.set("FC", "oshfort")
|
||||
@@ -13,6 +13,7 @@ paths:
|
||||
script: |
|
||||
echo "IBM XL Fortran for Linux, V16.1.1 (5725-C73, 5765-J13)"
|
||||
echo "Version: 16.01.0001.0006"
|
||||
platforms: ["linux"]
|
||||
results:
|
||||
- spec: "xlc+r@16.1"
|
||||
- spec: "xlc~r@16.1"
|
||||
|
||||
@@ -6,6 +6,7 @@ paths:
|
||||
script: |
|
||||
echo "IBM XL Fortran for Linux, V16.1.1 (5725-C73, 5765-J13)"
|
||||
echo "Version: 16.01.0001.0006"
|
||||
platforms: ["linux"]
|
||||
results:
|
||||
- spec: "xlf+r@16.1"
|
||||
- spec: "xlf~r@16.1"
|
||||
|
||||
Reference in New Issue
Block a user