spack/lib/spack/env
Tamara Dahlgren 6fa6af1070
Support parallel environment builds (#18131)
As of #13100, Spack installs the dependencies of a _single_ spec in parallel.
Environments, when installed, can only get parallelism from each individual
spec, as they're installed in order.  This PR makes entire environments build
in parallel by extending Spack's package installer to accept multiple root
specs.  The install command and Environment class have been updated to use
the new parallel install method.

The specs and kwargs for each *uninstalled* package (when not force-replacing
installations) of an environment are collected, passed to the `PackageInstaller`,
and processed using a single build queue.

This introduces a `BuildRequest` class to track install arguments, and it
significantly cleans up the code used to track package ids during installation.
Package ids in the build queue are now just DAG hashes as you would expect,

Other tasks:

- [x] Finish updating the unit tests based on `PackageInstaller`'s use of
      `BuildRequest` and the associated changes
- [x] Change `environment.py`'s `install_all` to use the `PackageInstaller` directly
- [x] Change the `install` command to leverage the new installation process for multiple specs
- [x] Change install output messages for external packages, e.g.:
       `[+] /usr` -> `[+] /usr (external bzip2-1.0.8-<dag-hash>`
- [x] Fix incomplete environment install's view setup/update and not confirming all 
       packages are installed (?)
- [x] Ensure externally installed package dependencies are properly accounted for in 
       remaining build tasks
- [x] Add tests for coverage (if insufficient and can identity the appropriate, uncovered non-comment lines)
- [x] Add documentation
- [x] Resolve multi-compiler environment install issues
- [x] Fix issue with environment installation reporting (restore CDash/JUnit reports)
2020-11-17 02:41:07 -08:00
..
aocc Adding AOCC compiler to SPACK community (#19345) 2020-10-20 10:50:09 -05:00
arm Armcompiler (#9840) 2019-01-08 16:31:25 -08:00
case-insensitive Dependencies now work. Added libelf, libdwarf. 2013-02-18 23:46:04 -08:00
cce cc: clean up cray compilers, fix issues with case-insensitive filesystems (#10323) 2019-01-12 17:37:20 -08:00
clang compilers/clang: add flang (#5503) 2017-10-10 13:52:10 -07:00
fj Add Fujitsu compiler to Spack. (#11287) 2019-05-21 20:31:14 -05:00
gcc Fix #254: libtool & distutils want certain compiler names. 2015-12-19 02:06:47 -08:00
intel Fix #254: libtool & distutils want certain compiler names. 2015-12-19 02:06:47 -08:00
nag Add symlink for NAG Fortran Compiler 2016-01-19 13:07:07 -06:00
nvhpc New compiler: nvhpc (NVIDIA HPC SDK) (#19294) 2020-10-16 14:04:27 -07:00
oneapi Oneapi add compiler (#19330) 2020-10-29 16:52:54 -05:00
pgi Modifications to get PGI working 2016-03-03 16:50:51 -06:00
xl Fix #254: libtool & distutils want certain compiler names. 2015-12-19 02:06:47 -08:00
xl_r Add support for IBM threaded compilers: xl*_r (#2894) 2017-01-25 16:26:17 -07:00
c89 Dependencies now work. Added libelf, libdwarf. 2013-02-18 23:46:04 -08:00
c99 Dependencies now work. Added libelf, libdwarf. 2013-02-18 23:46:04 -08:00
c++ Dependencies now work. Added libelf, libdwarf. 2013-02-18 23:46:04 -08:00
cc Support parallel environment builds (#18131) 2020-11-17 02:41:07 -08:00
cpp Dependencies now work. Added libelf, libdwarf. 2013-02-18 23:46:04 -08:00
f77 Fix for SPACK-35: Fortran not working properly 2014-07-09 01:28:23 -07:00
f90 Fix for SPACK-35: Fortran not working properly 2014-07-09 01:28:23 -07:00
f95 Fix for SPACK-35: Fortran not working properly 2014-07-09 01:28:23 -07:00
fc Fix for SPACK-35: Fortran not working properly 2014-07-09 01:28:23 -07:00
ftn Add ftn to lib/spack/env (#11180) 2019-04-17 13:12:25 -07:00
ld Dependencies now work. Added libelf, libdwarf. 2013-02-18 23:46:04 -08:00