Commit graph

26227 commits

Author SHA1 Message Date
Bernhard Kaindl
f4431851ab
perl-extutils-installpaths: depend on perl-extutils-config (#26969) 2021-10-27 16:02:14 +02:00
Pieter Ghysels
1f728ab4ce
strumpack: add v6.1.0, remove unused variants (#26971) 2021-10-27 15:58:54 +02:00
Valentin Volkl
9fa20b8a39
recola: fix compilation (#26634)
* recola: fix compilation

* Update var/spack/repos/builtin/packages/recola-sm/package.py

Co-authored-by: Seth R. Johnson <johnsonsr@ornl.gov>

* flake8

* fixes

* fix typo

* fix typo

Co-authored-by: Seth R. Johnson <johnsonsr@ornl.gov>
2021-10-27 07:19:35 -06:00
Todd Gamblin
4f124bc9e7
tests: speed up spack list tests (#26958)
`spack list` tests are not using mock packages for some reason, and many
are marked as potentially slow. This isn't really necessary; we don't need
6,000 packages to test the command.

- [x] update tests to use `mock_packages` fixture
- [x] remove `maybeslow` annotations
2021-10-27 05:10:39 -06:00
Harmen Stoppels
e04b172eb0
Allow non-UTF-8 encoding in sbang hook (#26793)
Currently Spack reads full files containing shebangs to memory as
strings, meaning Spack would have to guess their encoding. Currently
Spack has a fixed guess of UTF-8.

This is unnecessary, since e.g. the Linux kernel does not assume an
encoding on paths at all, it's just bytes and some delimiters on the
byte level.

This commit does the following:

1. Shebangs are treated as bytes, so that e.g. latin1 encoded files do
not throw UnicodeEncoding errors, and adds a test for this.
2. No more bytes than necessary are read to memory, we only have to read
until the first newline, and from there on we an copy the file byte by
bytes instead of decoding and re-encoding text.
3. We cap the number of bytes read to 4096, if no newline is found
before that, we don't attempt to patch it.
4. Add support for luajit too.

This should make Spack both more efficient and usable for non-UTF8
files.
2021-10-27 02:59:10 -07:00
Harmen Stoppels
2fd87046cd
Fix assumption v.concrete => isinstance(v, Version) (#26537)
* Add test
* Only extend with Git version when using Version
* xfail v.concrete test
2021-10-27 02:58:04 -07:00
Harmen Stoppels
ae6e83b1d5 config: overrides for caches and system and user scopes (#26735)
Spack's `system` and `user` scopes provide ways for administrators and
users to set global defaults for all Spack instances, but for use cases
where one wants a clean Spack installation, these scopes can be undesirable.
For example, users may want to opt out of global system configuration, or
they may want to ignore their own home directory settings when running in
a continuous integration environment.

Spack also, by default, keeps various caches and user data in `~/.spack`,
but users may want to override these locations.

Spack provides three environment variables that allow you to override or
opt out of configuration locations:

 * `SPACK_USER_CONFIG_PATH`: Override the path to use for the
   `user` (`~/.spack`) scope.

 * `SPACK_SYSTEM_CONFIG_PATH`: Override the path to use for the
   `system` (`/etc/spack`) scope.

 * `SPACK_DISABLE_LOCAL_CONFIG`: set this environment variable to completely
   disable *both* the system and user configuration directories. Spack will
   only consider its own defaults and `site` configuration locations.

And one that allows you to move the default cache location:

 * `SPACK_USER_CACHE_PATH`: Override the default path to use for user data
   (misc_cache, tests, reports, etc.)

With these settings, if you want to isolate Spack in a CI environment, you can do this:

   export SPACK_DISABLE_LOCAL_CONFIG=true
   export SPACK_USER_CACHE_PATH=/tmp/spack

This is a stop-gap approach until we have figured out how to deal with
the system and user config scopes more generally, as there are plans to
potentially / eventually get rid of them.

**User config**

Spack is a bit of a pain when you have:

- a shared $HOME folder across different systems.
- multiple Spack versions on the same system.

**System config**

- On shared systems with a versioned programming environment / toolkit,
  system administrators want to provide config for each version (e.g.
  21.09, 21.10) of the programming environment, and the user Spack
  instance should be able to pick this up without a steep learning
  curve.
- On shared systems the user should be able to opt out of the
  hard-coded config scope in /etc/spack, since it may be incompatible
  with their particular instance. Currently Spack can only opt out of all
  config scopes through overrides with `"config:":`, `"packages:":`, but that
  also drops the defaults config, which would have to be repeated, which
  is undesirable, especially the lengthy packages.yaml.

An example use case is: having config in this folder:

```
/path/to/programming/environment/{version}/{compilers,packages}.yaml
```

and have `module load spack-system-config` set the variable

```
SPACK_SYSTEM_CONFIG_PATH=/path/to/programming/environment/{version}
```

where the user no longer has to worry about what `{version}` they are
on.

**Continuous integration**

Finally, there is the use case of continuous integration, which may
clone an arbitrary Spack version, which optimally should not pick up
system or user config from the previous run (like may happen in
classical bare metal non-containerized filesystem side effect ridden
jenkins pipelines). In fact this is very similar to how spack itself
tries to avoid picking up system dependencies during builds...

**But environments solve this?**

- You could do `include`s in environment files to get similar behavior
  to the spack_system_config_path example, but environments require you
  to:
  1) require paths to individual config files, not directories.
  2) fail if the listed config file does not exist
- They allow you to override config scopes, but this is generally too
  rigurous, as it requires you to repeat the default config, in
  particular packages.yaml, and just defies the point of layered config.

Co-authored-by: Tom Scogland <tscogland@llnl.gov>
Co-authored-by: Tim Fuller <tjfulle@sandia.gov>
Co-authored-by: Steve Leak <sleak@lbl.gov>
Co-authored-by: Todd Gamblin <tgamblin@llnl.gov>
2021-10-26 18:08:25 -07:00
Ye Luo
7dc94b6683
Build OpenMP in LLVM via LLVM_ENABLE_RUNTIMES. (#26870) 2021-10-26 17:43:28 -06:00
Hao Lyu
02bea6d2d2
fix bug when there is version id in the path of compiler (#26916) 2021-10-26 14:12:58 -07:00
Greg Becker
9a637bbd09
modules: allow user to remove arch dir (#24156)
* allow no arch-dir modules

* add tests for modules with no arch

* document arch-specific module roots
2021-10-26 13:26:09 -07:00
Mark W. Krentel
444e156685
hpctoolkit: add version 2021.10.15 (#26881) 2021-10-26 13:15:09 -07:00
Richarda Butler
bc616a60b7
Py-Libensemble: Add E4S testsuite stand alone test (#26270) 2021-10-26 13:11:53 -07:00
Miroslav Stoyanov
ad03981468
fix the spack test dir (#26816) 2021-10-26 13:07:04 -07:00
Sreenivasa Murthy Kolam
5ee2ab314c
ROCm packages: add RelWithDebInfo build_type (#26888)
Also set default build_type to Release for many ROCm packages.
2021-10-26 12:18:38 -07:00
Greg Becker
a8a08f66ad
modules: configurable module defaults (#24367)
Any spec satisfying a default will be symlinked to `default`

If multiple specs have modulefiles in the same directory and satisfy
configured module defaults, then whichever was written last will be
default.
2021-10-26 19:34:06 +02:00
Kyle Gerheiser
dee75a4945
upp: Add version 10.0.10 (#26946) 2021-10-26 19:26:34 +02:00
Seth R. Johnson
aacdd5614e
htop: add new URL and versions (#26928) 2021-10-26 19:14:06 +02:00
Ben Morgan
a2e5a28892
virtest: prevent out-of-order build/test (#26944)
Use of `-R` flag to CTest command causes "empty-14" test to run,
by matching "empty", before the empty-14 target is built.

Patch CTest command in buildscript to match name exactly.
2021-10-26 18:55:54 +02:00
Asher Mancinelli
94a9733822
hiop: update constraints and add new version (#26905)
* Update hiop package dependencies

* Use single quotes to shrink diff

* add hiop 0.5.1

* apply flake8

* Apply formatting suggestions
2021-10-26 11:43:03 -04:00
iarspider
fb1f3b1a1c
Add checksum for py-argon2-cffi 21.1.0 and update python dependency (#26894)
* Add checksum for py-argon2-cffi 21.1.0 and update python dependency

* Update package.py
2021-10-26 09:32:11 -06:00
iarspider
d673e634d0
New versions: py-bleach 4.0.0 and 4.1.0 (#26947) 2021-10-26 09:23:10 -06:00
iarspider
1f1f121e8f
New version: py-beniget 0.4.1 (#26945) 2021-10-26 09:02:03 -06:00
Wouter Deconinck
ba2a03e1da
geant4: depends_on vecgeom@1.1.8:1.1 range (#26917)
* [geant4] depends_on vecgeom@1.1.8:1.1 range

While previous versions were unclear, the [geant4.10.7 release notes](https://geant4-data.web.cern.ch/ReleaseNotes/ReleaseNotes4.10.7.html) indicate that vecgeom@1.1.8 is a minimum required version, not an exact required version ("Set VecGeom-1.1.8 as minimum required version for optional build with VecGeom."). This will allow some more freedom on the concretizer solutions while allowing geant4 to take advantage of bugfixes and improvements in vecgeom.

* [vecgeom] new version 1.1.17
2021-10-26 10:31:37 -04:00
Seth R. Johnson
dad68e41e0
freetype: explicitly specify dependencies (#26942)
Freetype picked up 'brotli' from homebrew, causing issues downstream.
2021-10-26 04:07:48 -06:00
eugeneswalker
1ae38037ef
tau: add version 2.30.2 (#26941) 2021-10-26 05:36:29 -04:00
Chuck Atkins
80d8c93452
unifyfs: Remove the hdf5 variant (examples only) (#26932)
UnifyFS doesn't actually use HDF5 for anything.  Enabling it only enables
a few examples to be built so it's not actually a dependency of the package.
2021-10-26 09:42:52 +02:00
Seth R. Johnson
bdcbc4cefe
qt package: versions @:5.13 don't build with gcc@11: (#26922) 2021-10-25 18:20:54 -07:00
Ronak Buch
1d53810d77
charmpp: add version 7.0.0 (#26940) 2021-10-25 18:16:37 -07:00
Adam J. Stewart
4a8c53472d
py-kornia: add version 0.6.1 (#26939) 2021-10-25 18:15:57 -07:00
Adam J. Stewart
b05df2cdc7
py-shapely: add version 1.8.0 (#26937) 2021-10-25 18:15:22 -07:00
Adam J. Stewart
92cef8d7ad
py-scikit-learn: add version 1.0.1 (#26934) 2021-10-25 18:14:17 -07:00
Adam J. Stewart
912c6ff6e8
PyTorch/torchvision: add version 1.10.0/0.11.1 (#26889)
* For py-torch: Also update dependencies: many version constraints
  with an upper bound of @1.9 are now open (e.g. `@1.8.0:1.9` is
  converted to `@1.8.0:`).
* For py-torchvision: Also add 0.11.0 and update ^pil constraint
  to avoid building with 8.3.0
2021-10-25 15:26:12 -07:00
iarspider
cdcdd71b41
Add new versions of py-autopep8 and py-pycodestyle (#26924)
* Add new versions of py-autopep8 (1.5.7, 1.6.0) and py-pycodestyle (2.7.0, 2.8.0)

* Update package.py

* Restore old versions
2021-10-25 22:08:52 +00:00
Daniel Arndt
e221617386
deal.II package: Update CMake variable for >=9.3.0 (#26909) 2021-10-25 15:00:40 -07:00
Massimiliano Culpo
6063600a7b
containerize: pin the Spack version used in a container (#21910)
This PR permits to specify the `url` and `ref` of the Spack instance used in a container recipe simply by expanding the YAML schema as outlined in #20442:
```yaml
container:
  images:
    os: amazonlinux:2
    spack:
      ref: develop
      resolve_sha: true
```
The `resolve_sha` option, if true, verifies the `ref` by cloning the Spack repository in a temporary directory and transforming any tag or branch name to a commit sha. When this new ability is leveraged an additional "bootstrap" stage is added, which builds an image with Spack setup and ready to install software. The Spack repository to be used can be customized with the `url` keyword under `spack`.

Modifications:
- [x] Permit to pin the version of Spack, either by branch or tag or sha
- [x] Added a few new OSes (centos:8, amazonlinux:2, ubuntu:20.04, alpine:3, cuda:11.2.1)
- [x] Permit to print the bootstrap image as a standalone
- [x] Add documentation on the new part of the schema
- [x] Add unit tests for different use cases
2021-10-25 13:09:27 -07:00
iarspider
ff65e6352f
py-avro: new version 1.10.2 (#26927)
* Add checksum for py-avro@1.10.2

* Update package.py
2021-10-25 11:45:33 -05:00
Olli Lupton
06c983d38f
cuda: add 11.4.1, 11.4.2, 11.5.0. (#26892)
* cuda: add 11.4.1, 11.4.2, 11.5.0.

Note that the curses dependency from cuda-gdb was dropped in 11.4.0.

* Update clang/gcc constraints.

* Address review, assume clang 12 is OK from 11.4.1 onwards.

* superlu-dist@7.1.0 conflicts with cuda@11.5.0.

* Update var/spack/repos/builtin/packages/superlu-dist/package.py

Co-authored-by: Harmen Stoppels <harmenstoppels@gmail.com>

Co-authored-by: Harmen Stoppels <harmenstoppels@gmail.com>
2021-10-25 09:05:21 -07:00
iarspider
b0752bf1b3
Add checksum for py-atomicwrites@1.4.0 (#26923) 2021-10-25 10:54:04 -05:00
Kendra Long!
c9847766e4
draco: new version 7_12_0 (#26907)
* Add draco-7_12_0 to package file

* Update hash to zip version
2021-10-25 11:35:38 -04:00
Kelly (KT) Thompson
86a9c703db
eospac: new default version 6.5.0 (#26723)
* [pkg][new version] Provide eospac@6.5.0 and mark it as default.

* Merge in changes found in #21629

* Mark all alpha/beta versions as deprecated.

- Addresses @sethrj's recommendation
- Also add a note indicated why these versions are marked this way.
2021-10-25 11:10:46 -04:00
Harmen Stoppels
276e637522 Reduce verbosity of module files warning
1. Currently it prints not just the spec name, but the dependencies +
their variants + their compilers + their architectures + ...
2. It's clear from the context what spec the message applies to, so,
let's not print the spec at all.
2021-10-25 17:07:56 +02:00
Olivier Cessenat
b51e0b363e
silo: new release 4.11 (#26876) 2021-10-25 08:13:54 -06:00
Manuela Kuhn
e9740a9978
py-nipype: add 1.7.0 (#26883) 2021-10-25 06:55:50 -06:00
Harmen Stoppels
cc8d8cc9cb
Return early in do_fetch when there is no code or a package is external (#26926)
Co-authored-by: Ryan Krattiger <ryan.krattiger@kitware.com>
2021-10-25 13:51:23 +02:00
Todd Gamblin
de8e795563 virtuals: simplify virtual handling
These three rules in `concretize.lp` are overly complex:

```prolog
:- not provider(Package, Virtual),
   provides_virtual(Package, Virtual),
   virtual_node(Virtual).
```

```prolog
  :- provides_virtual(Package, V1), provides_virtual(Package, V2), V1 != V2,
     provider(Package, V1), not provider(Package, V2),
     virtual_node(V1), virtual_node(V2).
```

```prolog
provider(Package, Virtual) :- root(Package), provides_virtual(Package, Virtual).
```

and they can be simplified to just:

```prolog
provider(Package, Virtual) :- node(Package), provides_virtual(Package, Virtual).
```

- [x] simplify virtual rules to just one implication
- [x] rename `provides_virtual` to `virtual_condition_holds`
2021-10-25 09:11:04 +02:00
Massimiliano Culpo
6d69d23aa5 Add a unit test to prevent regression 2021-10-25 09:11:04 +02:00
Massimiliano Culpo
dd4d7bae1d ASP-based solver: a package eligible to provide a virtual must provide it
fixes #26866

This semantics fits with the way Spack currently treats providers of
virtual dependencies. It needs to be revisited when #15569 is reworked
with a new syntax.
2021-10-25 09:11:04 +02:00
Miguel Dias Costa
1e90160d68
berkeleygw: force openmp propagation on some providers of blas / ffw-api (#26918) 2021-10-25 07:42:05 +02:00
Michael Kuhn
dfcd5d4c81
hyperfine: new package (#26901) 2021-10-24 20:47:56 -04:00
Satish Balay
e3b7eb418f
Add new math solver versions (#26903)
* tasmanian: add @7.7
* butterflypack: add @2.0.0
* pflotran: add @3.0.2
* alquimia: add @1.0.9
* superlu-dist: add @7.1.1
2021-10-24 20:45:44 -04:00