summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--var/spack/repos/builtin/packages/acfl/package.py81
-rw-r--r--var/spack/repos/builtin/packages/armpl-gcc/package.py126
2 files changed, 160 insertions, 47 deletions
diff --git a/var/spack/repos/builtin/packages/acfl/package.py b/var/spack/repos/builtin/packages/acfl/package.py
index 66d2ddc0b5..5b9e905321 100644
--- a/var/spack/repos/builtin/packages/acfl/package.py
+++ b/var/spack/repos/builtin/packages/acfl/package.py
@@ -36,6 +36,40 @@ _os_map = {
}
_versions = {
+ "24.04": {
+ "RHEL-7": (
+ "064c3ecfd71cba3d8bf639448e899388f58eb7faef4b38f3c1aace625ace8b1e",
+ "https://developer.arm.com/-/media/Files/downloads/hpc/arm-compiler-for-linux/24-04/arm-compiler-for-linux_24.04_RHEL-7_aarch64.tar",
+ ),
+ "RHEL-8": (
+ "38f46a3549667d0fbccd947653d3a1a56b630d3bbb1251888c674c463f00dac3",
+ "https://developer.arm.com/-/media/Files/downloads/hpc/arm-compiler-for-linux/24-04/arm-compiler-for-linux_24.04_RHEL-8_aarch64.tar",
+ ),
+ "RHEL-9": (
+ "d335db82c8310e1d79c96dc09a19e4d509c5ab17eb6027214bb79cfc75d8229e",
+ "https://developer.arm.com/-/media/Files/downloads/hpc/arm-compiler-for-linux/24-04/arm-compiler-for-linux_24.04_RHEL-9_aarch64.tar",
+ ),
+ "SLES-15": (
+ "6f2e090efcd8da2cbeaf63272fac5917f637713f1e86d73cde2ad7268e3a05a2",
+ "https://developer.arm.com/-/media/Files/downloads/hpc/arm-compiler-for-linux/24-04/arm-compiler-for-linux_24.04_SLES-15_aarch64.tar",
+ ),
+ "Ubuntu-20.04": (
+ "0d782e6a69a11f90bf3b392313c885a2376c5761f227bf2f68e34e9848ec8e97",
+ "https://developer.arm.com/-/media/Files/downloads/hpc/arm-compiler-for-linux/24-04/arm-compiler-for-linux_24.04_Ubuntu-20.04_aarch64.tar",
+ ),
+ "Ubuntu-22.04": (
+ "0bab2e89f0a2359746f89a01251dca763305c5b0dee95cf47b0968dd1cb5f6f6",
+ "https://developer.arm.com/-/media/Files/downloads/hpc/arm-compiler-for-linux/24-04/arm-compiler-for-linux_24.04_Ubuntu-22.04_aarch64.tar",
+ ),
+ "AmazonLinux-2": (
+ "cf0bebe2d7123749c919a5f4e36100ad21f08ffbad3b53e477205c08ae973a2d",
+ "https://developer.arm.com/-/media/Files/downloads/hpc/arm-compiler-for-linux/24-04/arm-compiler-for-linux_24.04_AmazonLinux-2_aarch64.tar",
+ ),
+ "AmazonLinux-2023": (
+ "035dae8c41a1ac86c8885837978cb712306aa75dc5d26d17aca843b84eaee9f4",
+ "https://developer.arm.com/-/media/Files/downloads/hpc/arm-compiler-for-linux/24-04/arm-compiler-for-linux_24.04_AmazonLinux-2023_aarch64.tar",
+ ),
+ },
"23.10": {
"RHEL-7": (
"c3bd4df3e5f6c97369237b0067e0a421dceb9c167d73f22f3da87f5025258314",
@@ -192,34 +226,22 @@ def get_armpl_version_to_3(spec):
def get_armpl_prefix(spec):
+ ver = get_armpl_version_to_3(spec)
+ os = get_os(spec.version.string)
if spec.version.string.startswith("22."):
- return join_path(
- spec.prefix,
- "armpl-{}_AArch64_{}_arm-linux-compiler_aarch64-linux".format(
- get_armpl_version_to_3(spec), get_os(spec.version.string)
- ),
- )
+ return join_path(spec.prefix, f"armpl-{ver}_AArch64_{os}_arm-linux-compiler_aarch64-linux")
else:
- return join_path(
- spec.prefix,
- "armpl-{}_{}_arm-linux-compiler".format(
- get_armpl_version_to_3(spec), get_os(spec.version.string)
- ),
- )
+ return join_path(spec.prefix, f"armpl-{ver}_{os}_arm-linux-compiler")
def get_acfl_prefix(spec):
+ os = get_os(spec.version.string)
if spec.version.string.startswith("22."):
return join_path(
- spec.prefix,
- "arm-linux-compiler-{0}_Generic-AArch64_{1}_aarch64-linux".format(
- spec.version, get_os(spec.version.string)
- ),
+ spec.prefix, f"arm-linux-compiler-{spec.version}_Generic-AArch64_{os}_aarch64-linux"
)
else:
- return join_path(
- spec.prefix, f"arm-linux-compiler-{spec.version}_{get_os(spec.version.string)}"
- )
+ return join_path(spec.prefix, f"arm-linux-compiler-{spec.version}_{os}")
def get_gcc_prefix(spec):
@@ -227,6 +249,16 @@ def get_gcc_prefix(spec):
return join_path(spec.prefix, next(dir for dir in dirlist if dir.startswith("gcc")))
+def get_armpl_suffix(spec):
+ suffix = ""
+ if spec.satisfies("@24:"):
+ suffix += "_ilp64" if spec.satisfies("+ilp64") else "_lp64"
+ else:
+ suffix += "_ilp64" if spec.satisfies("+ilp64") else ""
+ suffix += "_mp" if spec.satisfies("threads=openmp") else ""
+ return suffix
+
+
class Acfl(Package, CompilerPackage):
"""Arm Compiler combines the optimized tools and libraries from Arm
with a modern LLVM-based compiler framework.
@@ -235,7 +267,7 @@ class Acfl(Package, CompilerPackage):
homepage = "https://developer.arm.com/Tools%20and%20Software/Arm%20Compiler%20for%20Linux"
url = "https://developer.arm.com/-/media/Files/downloads/hpc/arm-compiler-for-linux/23-10/arm-compiler-for-linux_23.10_Ubuntu-22.04_aarch64.tar"
- maintainers("annop-w")
+ maintainers("paolotricerri")
# Build Versions
for ver, packages in _versions.items():
@@ -310,10 +342,7 @@ class Acfl(Package, CompilerPackage):
@property
def lib_suffix(self):
- suffix = ""
- suffix += "_ilp64" if self.spec.satisfies("+ilp64") else ""
- suffix += "_mp" if self.spec.satisfies("threads=openmp") else ""
- return suffix
+ return get_armpl_suffix(self.spec)
@property
def blas_libs(self):
@@ -389,8 +418,9 @@ class Acfl(Package, CompilerPackage):
def check_install(self):
arm_dir = get_acfl_prefix(self.spec)
armpl_dir = get_armpl_prefix(self.spec)
+ suffix = get_armpl_suffix(self.spec)
gcc_dir = get_gcc_prefix(self.spec)
- armpl_example_dir = join_path(armpl_dir, "examples")
+ armpl_example_dir = join_path(armpl_dir, f"examples{suffix}")
# run example makefile
make(
"-C",
@@ -399,6 +429,7 @@ class Acfl(Package, CompilerPackage):
"F90=" + self.fortran,
"CPATH=" + join_path(arm_dir, "include"),
"COMPILER_PATH=" + gcc_dir,
+ "ARMPL_DIR=" + armpl_dir,
)
# clean up
make("-C", armpl_example_dir, "clean")
diff --git a/var/spack/repos/builtin/packages/armpl-gcc/package.py b/var/spack/repos/builtin/packages/armpl-gcc/package.py
index 5dbd631ccb..d9629d786f 100644
--- a/var/spack/repos/builtin/packages/armpl-gcc/package.py
+++ b/var/spack/repos/builtin/packages/armpl-gcc/package.py
@@ -21,7 +21,7 @@ _os_map_before_23 = {
"amzn2023": "RHEL-7",
}
-_os_map = {
+_os_map_before_24 = {
"ubuntu20.04": "Ubuntu-20.04",
"ubuntu22.04": "Ubuntu-22.04",
"sles15": "SLES-15",
@@ -36,7 +36,27 @@ _os_map = {
"amzn2023": "AmazonLinux-2023",
}
+_os_pkg_map = {
+ "ubuntu20.04": "deb",
+ "ubuntu22.04": "deb",
+ "sles15": "rpm",
+ "centos7": "rpm",
+ "centos8": "rpm",
+ "rhel7": "rpm",
+ "rhel8": "rpm",
+ "rhel9": "rpm",
+ "rocky8": "rpm",
+ "rocky9": "rpm",
+ "amzn2": "rpm",
+ "amzn2023": "rpm",
+}
+
_versions = {
+ "24.04": {
+ "deb": ("a323074cd08af82f4d79988cc66088b18e47dea4b93323b1b8a0f994f769f2f0"),
+ "macOS": ("228bf3a2c25dbd45c2f89c78f455ee3c7dfb25e121c20d2765138b5174e688dc"),
+ "rpm": ("d3917523034cf5a35e4f31f9a8bf4e53e7cc97892e89739d5757cb65ce40dc2e"),
+ },
"23.10_gcc-12.2": {
"RHEL-7": ("e5e2c69ad281a676f2a06c835fbf31d4f9fdf46aa3f3f7c8aafff46985f64902"),
"RHEL-8": ("cc0f3572ead93d1e31797b7a39a40cff3414878df9bd24a452bf4877dc35ca4c"),
@@ -227,28 +247,32 @@ _versions = {
}
-def get_os(ver):
+def get_os_or_pkg_manager(ver):
platform = spack.platforms.host()
if platform.name == "darwin":
return "macOS"
if ver.startswith("22."):
return _os_map_before_23.get(platform.default_os, "")
+ elif ver.startswith("23."):
+ return _os_map_before_24.get(platform.default_os, "RHEL-7")
else:
- return _os_map.get(platform.default_os, "RHEL-7")
+ return _os_pkg_map.get(platform.default_os, "rpm")
-def get_package_url(version):
- base_url = "https://developer.arm.com/-/media/Files/downloads/hpc/arm-performance-libraries/"
+def get_package_url_before_24(base_url, version):
armpl_version = version.split("_")[0]
armpl_version_dashed = armpl_version.replace(".", "-")
compiler_version = version.split("_", 1)[1]
- os = get_os(armpl_version)
+ os = get_os_or_pkg_manager(armpl_version)
if os == "macOS":
if armpl_version.startswith("23.06"):
- return f"{base_url}{armpl_version_dashed}/armpl_{armpl_version}_{compiler_version}.dmg"
+ return (
+ f"{base_url}/{armpl_version_dashed}/"
+ + f"armpl_{armpl_version}_{compiler_version}.dmg"
+ )
else:
filename = f"arm-performance-libraries_{armpl_version}_macOS.dmg"
- return f"{base_url}{armpl_version_dashed}/macos/{filename}"
+ return f"{base_url}/{armpl_version_dashed}/macos/{filename}"
filename = f"arm-performance-libraries_{armpl_version}_{os}_{compiler_version}.tar"
os_short = ""
if armpl_version.startswith("22.0."):
@@ -257,11 +281,51 @@ def get_package_url(version):
os_short = os.split(".")[0].lower()
if "amazonlinux" in os_short:
os_short = os_short.replace("amazonlinux", "al")
- return f"{base_url}{armpl_version_dashed}/{os_short}/{filename}"
+ return f"{base_url}/{armpl_version_dashed}/{os_short}/{filename}"
+
+
+def get_package_url_from_24(base, version):
+ pkg_system = get_os_or_pkg_manager(version)
+ os = "macOS" if pkg_system == "macOS" else "linux"
+
+ extension = "tgz" if pkg_system == "macOS" else "tar"
+
+ full_name_library = f"arm-performance-libraries_{version}_{pkg_system}"
+
+ if pkg_system != "macOS":
+ full_name_library = f"{full_name_library}_gcc"
+ file_name = f"{full_name_library}.{extension}"
+
+ vn = version.replace(".", "-")
+ url_parts = f"{base}/{vn}/{os}/{file_name}"
+ return url_parts
+
+
+def get_package_url(version):
+ base_url = "https://developer.arm.com/-/media/Files/downloads/hpc/arm-performance-libraries"
+ if version[:2] >= "24":
+ return get_package_url_from_24(base_url, version)
+ else:
+ return get_package_url_before_24(base_url, version)
def get_armpl_prefix(spec):
- return os.path.join(spec.prefix, "armpl_" + spec.version.string)
+ armpl_dir = [
+ d
+ for d in os.listdir(spec.prefix)
+ if os.path.isdir(os.path.join(spec.prefix, d)) and d.startswith("armpl_")
+ ][0]
+ return os.path.join(spec.prefix, armpl_dir)
+
+
+def get_armpl_suffix(spec):
+ suffix = ""
+ if spec.satisfies("@24:"):
+ suffix += "_ilp64" if spec.satisfies("+ilp64") else "_lp64"
+ else:
+ suffix += "_ilp64" if spec.satisfies("+ilp64") else ""
+ suffix += "_mp" if spec.satisfies("threads=openmp") else ""
+ return suffix
class ArmplGcc(Package):
@@ -269,12 +333,12 @@ class ArmplGcc(Package):
high-performance computing applications on Arm processors."""
homepage = "https://developer.arm.com/tools-and-software/server-and-hpc/downloads/arm-performance-libraries"
- url = "https://developer.arm.com/-/media/Files/downloads/hpc/arm-performance-libraries/23-04-1/ubuntu-22/arm-performance-libraries_23.04.1_Ubuntu-22.04_gcc-12.2.tar"
+ url = "https://developer.arm.com/-/media/Files/downloads/hpc/arm-performance-libraries/24-04/linux/arm-performance-libraries_24.04_deb_gcc.tar"
- maintainers("annop-w")
+ maintainers("paolotricerri")
for ver, packages in _versions.items():
- key = get_os(ver)
+ key = get_os_or_pkg_manager(ver)
sha256sum = packages.get(key)
url = get_package_url(ver)
if sha256sum:
@@ -341,10 +405,17 @@ class ArmplGcc(Package):
hdiutil = which("hdiutil")
# Mount image
mountpoint = os.path.join(self.stage.path, "mount")
- hdiutil("attach", "-mountpoint", mountpoint, self.stage.archive_file)
+ if spec.satisfies("@:23"):
+ dmg_file = self.stage.archive_file
+ else:
+ # The archive file only extracts to one .dmg file
+ dmg_file = os.path.join(
+ self.stage.source_path, os.listdir(self.stage.source_path)[0]
+ )
+ hdiutil("attach", "-mountpoint", mountpoint, dmg_file)
try:
# Run installer
- exe_name = f"armpl_{spec.version.string}_install.sh"
+ exe_name = [f for f in os.listdir(mountpoint) if f.endswith(".sh")][0]
installer = Executable(os.path.join(mountpoint, exe_name))
installer("-y", f"--install_dir={prefix}")
finally:
@@ -359,15 +430,21 @@ class ArmplGcc(Package):
with when("@23:"):
armpl_version = spec.version.string.split("_")[0]
- exe = Executable(f"./arm-performance-libraries_{armpl_version}_{get_os(armpl_version)}.sh")
+ if spec.satisfies("@:23"):
+ exe = Executable(
+ f"./arm-performance-libraries_{armpl_version}_"
+ + f"{get_os_or_pkg_manager(armpl_version)}.sh"
+ )
+ else:
+ package_type = (
+ "deb" if spack.platforms.host().default_os.startswith("ubuntu") else "rpm"
+ )
+ exe = Executable(f"./arm-performance-libraries_{armpl_version}_{package_type}.sh")
exe("--accept", "--force", "--install-to", prefix)
@property
def lib_suffix(self):
- suffix = ""
- suffix += "_ilp64" if self.spec.satisfies("+ilp64") else ""
- suffix += "_mp" if self.spec.satisfies("threads=openmp") else ""
- return suffix
+ return get_armpl_suffix(self.spec)
@property
def blas_libs(self):
@@ -403,7 +480,10 @@ class ArmplGcc(Package):
def headers(self):
armpl_dir = get_armpl_prefix(self.spec)
- suffix = "include" + self.lib_suffix
+ if self.spec.satisfies("@24:"):
+ suffix = "include"
+ else:
+ suffix = "include" + self.lib_suffix
incdir = join_path(armpl_dir, suffix)
@@ -421,7 +501,9 @@ class ArmplGcc(Package):
@run_after("install")
def check_install(self):
armpl_dir = get_armpl_prefix(self.spec)
- armpl_example_dir = join_path(armpl_dir, "examples")
+ suffix = get_armpl_suffix(self.spec)
+ armpl_example_dir = join_path(armpl_dir, f"examples{suffix}")
+
# run example makefile
if self.spec.platform == "darwin":
# Fortran examples on MacOS requires flang-new which is