A platform to generically cover all Cray systems is introduced to avoid having
specific platforms for each of XK (XE, XT), XC, and future systems using CrayPE
and CNL.
The platform searches for 'front_end' and 'back_end' targets, in order, from:
* Environment variables 'SPACK_FRONT_END' and 'SPACK_BACK_END'
* A spack configuration file 'targets.yaml'
* Parsing `/etc/bash.bashrc.local` for first loaded CrayPE CPU target.
If a back_end target is not found through one of these methods, an exception is
raised. Otherwise, the back_end is set as the default target. The shell init
script search is based on recommendations in Crayports case #144359.
No automagic way of determining front_end targets has been found (to date) so if
a front_end is not specified through configuration, it is ignored which should
leave a spack instance in a consistant state.
In addition to `list_url` make sure the package has the `url` attribute
set before attempting to add urls from a list. This is to cover the case
where there may be a `list_url` specified in tandem with a
`url_for_version`.
This commit will make urls from list_url only checked if `list_url` is
set in the package file. This makes more sense as there is no need to
check for those if the attribute is not present. If `url` is present and
`list_url` is not then it would result in the same url. If
`url_for_version` is used then that will not work anyway.
This PR allows archive file retrieval from urls derived from the
`list_url` setting in a package file. This allows for continued
retrieval of checksummed archive files even when they are moved to a new
remote location when a package is updated upstream.
Set up the environment for the Intel compilers and tools. This commit
does the following:
- Unset variables that were incorrect from the auto guess prefix
inspections.
- Add a RemovePath environment_modifications_formats for dotkit.
- Set the module environment variables appropriate for the different
variants.
- Change the component logic so that the '+all' variant works. It was
getting split by letter and leaving COMPONENTS empty.
- Added a variant checking function.
- Added NONRPM_DB_DIR to the silent.cfg so that the product database
goes to the installation directory.
- With the product database in prefix the code to remove the product
database file from the home directory is no longer needed and was
removed.
- Reformat the 'tools' variant description.
There are probably more variables needed for the '+tools' for the
'professional' product version but I do not have access to that.
- Default scope is versioned with spack and can be overridden by site
or user config.
- Default scope provides sensible default concretization preferences
for all of Spack.
- per-platform concretization scope can be added later (to force a
particular MPI on, e.g., Cray systems)
- Consolidated code to read spec.yaml and database index.yaml into
one method (`read_yaml_dep_specs()`) in spec.py.
- Code understands old hash format, tuple format, and dicts for dep
specs, for backward compatibility.
- Spec YAML now uses a dict with keys to represent dep specs (this is
more future-proof).
- Dep specs no longer contain !!py-tuple entries in YAML (only lists
properly YAML-ize)
- bump database version.
deptypes: allow for different queries
For things like Python modules, they are required for the build and
runtime, but rather than adding a new parameter for what to query across
the dependency DAG, just expose the recursive query parameter.
When var/spack/stage is a symlink, the tests fail since realpath is used
on the resulting path, but not the original path, so the string compare
fails. Smarter path testing might be a better option.
This list was not formatted correctly on [the ReadTheDocs site](http://software.llnl.gov/spack/basic_usage.html#specs-dependencies).
I'm not a .rst expert, but I think that it was improperly indented.
The example includes an `arch=...` string but *arch* is not listed in the valid compiler flag specifiers or architecture specifiers. Should it be, or is it considered an "optional variant specifier?
- add macports to things that are cleaned out of the environment.
- linker incompatibilities cause issues with packages like OpenSSL.
- also clean up NOQA stuff in OpenSSL
- Common cli arguments now are in their own module
- Moved utilities that can be reused by different commands into spack.cmd.__init__.py
- Modifications to `spack module loads`
Removed examples of Cray config files and added them under Spack on
Cray. Any users of Cray can just look at the Spack on Cray section to
get an idea of what's used. If they want more information they can click
links to the sections.
# Conflicts:
# lib/spack/docs/packaging_guide.rst
# lib/spack/spack/package.py
Mostly minor/formatting issues in lib/spack/spack/package.py (the heavyweight merge was already done recently). Only one serious issue: it looks like the feature branch had accidentally deleted the line `spack.hooks.post_install(self)`. This got added back in from develop.
config :
- added `hash_length` under the modules section
EnvModules :
- take into consideration hash_length when constructing `file_name`
- added logic to warn and skip module file writing in case of file name clash
If you want to bootstrap from a fork, the `--remote` option may be used
to select it.
Also limit the branches to 'develop' and 'master' if the remote is
'origin' since those are the actual integration branches used (other
branches on 'origin' are just PR branches).
spack module :
- refresh accepts a constraint
- find and refresh share common cli options
- ask for confirmation before refreshing
- deleting the module file tree is now optional
Updating how to use compilers.yaml on Cray as well as setting up
external packages. Also includes what needs to be set up for usage on
Cray and explains what needs to be done to get Spack properly working.
Also explain the architecture spec and what it does.