Create include/lib in prefix for oneapi packages (#37552)
This commit is contained in:
@@ -4,13 +4,16 @@
|
||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||
"""Common utilities for managing intel oneapi packages."""
|
||||
import getpass
|
||||
import os
|
||||
import platform
|
||||
import shutil
|
||||
from os.path import basename, dirname, isdir
|
||||
|
||||
from llnl.util.filesystem import find_headers, find_libraries, join_path
|
||||
from llnl.util.link_tree import LinkTree
|
||||
|
||||
from spack.directives import conflicts, variant
|
||||
from spack.package import mkdirp
|
||||
from spack.util.environment import EnvironmentModifications
|
||||
from spack.util.executable import Executable
|
||||
|
||||
@@ -125,6 +128,31 @@ def setup_run_environment(self, env):
|
||||
)
|
||||
)
|
||||
|
||||
def symlink_dir(self, src, dest):
|
||||
# Taken from: https://github.com/spack/spack/pull/31285/files
|
||||
# oneapi bin/lib directories are 2 or 3 levels below the
|
||||
# prefix, but it is more typical to have them directly in the
|
||||
# prefix. The location has changed over time. Rather than make
|
||||
# every package that needs to know where include/lib are
|
||||
# located be aware of this, put in symlinks to conform. This
|
||||
# is good enough for some, but not all packages.
|
||||
|
||||
# If we symlink top-level directories directly, files won't
|
||||
# show up in views Create real dirs and symlink files instead
|
||||
|
||||
# Create a real directory at dest
|
||||
mkdirp(dest)
|
||||
|
||||
# Symlink all files in src to dest keeping directories as dirs
|
||||
for entry in os.listdir(src):
|
||||
src_path = join_path(src, entry)
|
||||
dest_path = join_path(dest, entry)
|
||||
if isdir(src_path) and os.access(src_path, os.X_OK):
|
||||
link_tree = LinkTree(src_path)
|
||||
link_tree.merge(dest_path)
|
||||
else:
|
||||
os.symlink(src_path, dest_path)
|
||||
|
||||
|
||||
class IntelOneApiLibraryPackage(IntelOneApiPackage):
|
||||
"""Base class for Intel oneAPI library packages.
|
||||
|
Reference in New Issue
Block a user