From 863f455cf9ce787d59cacb30583e78213b2aaa72 Mon Sep 17 00:00:00 2001 From: Frank Willmore Date: Wed, 3 Feb 2021 14:04:23 -0600 Subject: [PATCH] intel-oneapi-compilers: add to LD_LIBRARY_PATH so that it finds libimf.so (#20717) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add to LD_LIBRARY_PATH so that it finds libimf.so * amrex: fix handling of CUDA arch (#20786) * amrex: fix handling of CUDA arch * amrex: fix style * amrex: fix bug * Update var/spack/repos/builtin/packages/amrex/package.py * Update var/spack/repos/builtin/packages/amrex/package.py Co-authored-by: Axel Huebl * ecp-data-vis-sdk: Combine the vis and io SDK packages (#20737) This better enables the collective set to be deployed togethor satisfying eachothers dependencies * r-sf: fix dependency error (#20898) * improve documentation for Rocm (hip amd builds) (#20812) * improve documentation * astyle: Fix makefile for install parameter (#20899) * llvm-doe: added new package (#20719) The package contains duplicated code from llvm/package.py, will supersede solve. * r-e1071: added v1.7-4 (#20891) * r-diffusionmap: added v1.2.0 (#20881) * r-covr: added v3.5.1 (#20868) * r-class: added v7.3-17 (#20856) * py-h5py: HDF5_DIR is needed for ~mpi too (#20905) For the `~mpi` variant, the environment variable `HDF5_DIR` is still required. I moved this command out of the `+mpi` conditional. * py-hovorod: fix typo on variant name in conflicts directive (#20906) * fujitsu-fftw: Add new package (#20824) * pocl: added v1.6 (#20932) Made version 1.5 or lower conflicts with a64fx. * PCL: add new package (#20933) * r-rle: new package (#20916) Common 'base' and 'stats' methods for 'rle' objects, aiming to make it possible to treat them transparently as vectors. * r-ellipsis: added v0.3.1 (#20913) * libconfig: add build dependency on texinfo (#20930) * r-flexmix: add v2.3-17 (#20924) * r-fitdistrplus: add v1.1-3 (#20923) * r-fit-models: add v0.64 (#20922) * r-fields: add v11.6 (#20921) * r-fftwtools: add v0.9-9 (#20920) * r-farver: add v2.0.3 (#20919) * r-expm: add v0.999-6 (#20918) * cln: add build dependency on texinfo (#20928) * r-expint: add v0.1-6 (#20917) * r-envstats: add v2.4.0 (#20915) * r-energy: add v1.7-7 (#20914) * r-ellipse: add v0.4.2 (#20912) * py-fiscalyear: add v0.3.0 (#20911) * r-ecp: add v3.1.3 (#20910) * r-plotmo: add v3.6.0 (#20909) * Improve gcc detection in llvm. (#20189) Co-authored-by: Tom Scogland Co-authored-by: Thomas Green * hatchet: updated urls (#20908) * py-anuga: add new package (#20782) * libvips: added v8.10.5 (#20902) * libzmq: add platform conditions to libbsd dependency (#20893) * r-dtw: add v1.22-3 (#20890) * r-dt: add v0.17 (#20889) * r-dosnow: add v1.0.19 (#20888) * add version 1.0.16 to r-doparallel (#20886) * add version 1.3.7 to r-domc (#20885) * add version 0.9-15 to r-diversitree (#20884) * add version 1.3-3 to r-dismo (#20883) * add version 0.6.27 to r-digest (#20882) * add version 1.5 to r-rngtools (#20887) * add version 1.5.8 to r-dicekriging (#20877) * add version 1.4.2 to r-httr (#20876) * add version 1.28 to r-desolve (#20875) * add version 2.2-5 to r-deoptim (#20874) * add version 0.2-3 to r-deldir (#20873) * add version 1.0.0 to r-crul (#20870) * add version 1.1.0.1 to r-crosstalk (#20869) * add version 1.0-1 to r-copula (#20867) * add version 5.0.2 to r-rcppparallel (#20866) * add version 2.0-1 to r-compositions (#20865) * add version 0.4.10 to r-rlang (#20796) * add version 0.3.6 to r-vctrs (#20878) * amrex: add ROCm support (#20809) * add version 2.0-0 to r-colorspace (#20864) * add version 1.3-1 to r-coin (#20863) * add version 0.19-4 to r-coda (#20862) * add version 1.3.7 to r-clustergeneration (#20861) * add version 0.3-58 to r-clue (#20860) * add version 0.7.1 to r-clipr (#20859) * add version 2.2.0 to r-cli (#20858) * add version 0.4-3 to r-classint (#20857) * add version 0.1.2 to r-globaloptions (#20855) * add version 2.3-56 to r-chron (#20854) * add version 0.4.10 to r-checkpoint (#20853) * add version 2.0.0 to r-checkmate (#20852) * add version 1.18.1 to r-catools (#20850) * add version 1.2.2.2 to r-modelmetrics (#20849) * add version 3.0-4 to r-cardata (#20847) * add version 1.0.1 to r-caracas (#20846) * r-lifecycle: new package at v0.2.0 (#20845) * add version 3.0-10 to r-car (#20844) * add version 3.4.5 to r-processx (#20843) * add version 1.5-12.2 to r-cairo (#20842) * add version 0.2.3 to r-cubist (#20841) * add version 2.6 to r-rmarkdown (#20838) * add version 1.2.1 to r-blob (#20819) * add version 4.0.4 to r-bit (#20818) * add version 2.4-1 to r-bio3d (#20816) * add version 0.4.2.3 to r-bibtex (#20815) * add version 3.1-4 to r-bayesm (#20807) * add version 1.2.1 to r-backports (#20806) * add version 2.0.3 to r-argparse (#20805) * add version 5.4-1 to r-ape (#20804) * add version 0.8-18 to r-amap (#20803) * r-pixmap: added new package (#20795) * zoltan: source code location change (#20787) * refactor path logic * added some paths to make compilers and libs discoverable * add to LD_LIBRARY_PATH so that it finds libimf.so and cleanup PEP8 * refactor path logic * adding paths to LIBRARY_PATH so compiler wrappers will find -lmpi * added vals for CC=icx, CXX=icpx, FC=ifx to generated module * back out changes to intel-oneapi-mpi, save for separate PR * Update var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py path is joined in _ld_library_path() Co-authored-by: Robert Cohn * set absolute paths to icx,icpx,ifx * dang close parenthesis Co-authored-by: Robert Cohn Co-authored-by: mic84 Co-authored-by: Axel Huebl Co-authored-by: Chuck Atkins Co-authored-by: darmac Co-authored-by: Danny Taller <66029857+dtaller@users.noreply.github.com> Co-authored-by: Tomoyasu Nojiri <68096132+t-nojiri@users.noreply.github.com> Co-authored-by: Shintaro Iwasaki Co-authored-by: Glenn Johnson Co-authored-by: Kelly (KT) Thompson Co-authored-by: Henrique Mendonça Co-authored-by: h-denpo <57649496+h-denpo@users.noreply.github.com> Co-authored-by: Adam J. Stewart Co-authored-by: Thomas Green Co-authored-by: Tom Scogland Co-authored-by: Thomas Green Co-authored-by: Abhinav Bhatele Co-authored-by: a-saitoh-fj <63334055+a-saitoh-fj@users.noreply.github.com> Co-authored-by: QuellynSnead --- .../intel-oneapi-compilers/package.py | 53 +++++++++++-------- 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py b/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py index 3a120b36df..3ad097976f 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py @@ -5,7 +5,6 @@ import glob import subprocess -from os import path from spack import * @@ -38,35 +37,45 @@ def __init__(self, spec): url_name='HPCKit') super(IntelOneapiCompilers, self).__init__(spec) + def _join_prefix(self, path): + return join_path(self.prefix, 'compiler', 'latest', 'linux', path) + + def _ld_library_path(self): + dirs = ['lib', + 'lib/x64', + 'lib/emu', + 'lib/oclfpga/host/linux64/lib', + 'lib/oclfpga/linux64/lib', + 'compiler/lib/intel64_lin', + 'compiler/lib'] + for dir in dirs: + yield self._join_prefix(dir) + def install(self, spec, prefix): + # For quick turnaround debugging, comment out line below and + # use the copy instead super(IntelOneapiCompilers, self).install(spec, prefix) - # For quick turnaround debugging, copy instead of install - # copytree('/opt/intel/oneapi/compiler', path.join(prefix, 'compiler'), - # symlinks=True) - rpath_dirs = ['lib', - 'lib/x64', - 'lib/emu', - 'lib/oclfpga/host/linux64/lib', - 'lib/oclfpga/linux64/lib', - 'compiler/lib/intel64_lin', - 'compiler/lib'] + # Copy installed compiler instead of running the installer + # from shutil import copytree + # copytree('/opt/intel/oneapi/compiler', join_path(prefix, 'compiler'), + # symlinks=True) + + rpath = ':'.join(self._ld_library_path()) patch_dirs = ['compiler/lib/intel64_lin', 'compiler/lib/intel64', 'bin'] - eprefix = path.join(prefix, 'compiler', 'latest', 'linux') - rpath = ':'.join([path.join(eprefix, c) for c in rpath_dirs]) for pd in patch_dirs: - for file in glob.glob(path.join(eprefix, pd, '*')): + for file in glob.glob(self._join_prefix(join_path(pd, '*'))): # Try to patch all files, patchelf will do nothing if # file should not be patched subprocess.call(['patchelf', '--set-rpath', rpath, file]) def setup_run_environment(self, env): - env.prepend_path('PATH', join_path(self.prefix, - 'compiler', 'latest', 'linux', 'bin')) - env.prepend_path('CPATH', join_path(self.prefix, - 'compiler', 'latest', 'linux', 'include')) - env.prepend_path('LIBRARY_PATH', join_path(self.prefix, - 'compiler', 'latest', 'linux', 'lib')) - env.prepend_path('LD_LIBRARY_PATH', join_path(self.prefix, - 'compiler', 'latest', 'linux', 'lib')) + env.prepend_path('PATH', self._join_prefix('bin')) + env.prepend_path('CPATH', self._join_prefix('include')) + env.prepend_path('LIBRARY_PATH', self._join_prefix('lib')) + for dir in self._ld_library_path(): + env.prepend_path('LD_LIBRARY_PATH', dir) + env.set('CC', self._join_prefix('bin/icx')) + env.set('CXX', self._join_prefix('bin/icpx')) + env.set('FC', self._join_prefix('bin/ifx'))