Commit graph

23964 commits

Author SHA1 Message Date
Mark W. Krentel
5fb68b4441
elfutils: add v0.183 through v0.185 (#24052) 2021-06-01 09:01:32 +02:00
Hadrien G
175e6e8c1e
acts: add v8.3.0 (#24053) 2021-06-01 08:59:33 +02:00
Tom Scogland
4a7b0afde2
Log performance improvement (#23925)
* util.tty.log: read up to 100 lines if ready

Rework to read up to 100 lines from the captured stdin as long as data
is ready to be read immediately.  Adds a helper function to poll with
`select` for ready data.  This showed a roughly 5-10x perf improvement
for high-rate writes through the logger with relatively short lines.

* util.tty.log: Defer flushes to end of ready reads

Rather than flush per line, flush per set of reads.  Since this is a
non-blocking loop, the total perceived wait is short.

* util.tty.log: only scan each line once, usually

Rather than always find all control characters then substitute them all,
use `subn` to count the number of control characters replaced.  Only if
control characters exist find out what they are.  This could be made
truly single pass with sub with a function, but it's a more intrusive
change and this got 99%ish of the performance improvement (roughly
another 2x in some cases).

* util.tty.log: remove check for `readable`

Python < 3 does not support a readable check on streams, should not be
necessary here since we control the only use and it's explicitly a
stream to be read.
2021-05-31 20:33:14 -07:00
Manuela Kuhn
ea4a2c9120
py-lxml: add 4.6.3 (#24037)
* py-lxml: add 4.6.3

Also add missing libxml2 and libxslt versions dependencies [1]

[1] https://github.com/lxml/lxml/blob/lxml-4.6.3/INSTALL.txt

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* py-lxml: remove cython dependency again

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2021-05-31 17:34:28 -06:00
Manuela Kuhn
e5513f914e
py-prov: add new package (#24040) 2021-05-31 17:10:29 -06:00
Manuela Kuhn
1fae271be8
py-click: add 8.0.1 (#24041) 2021-05-31 17:46:20 -05:00
Manuela Kuhn
c6da94473d
py-traits: add 6.2.0 (#24044) 2021-05-31 16:48:19 -05:00
Manuela Kuhn
adf2e8230a
py-simplejson: add 3.17.2 (#24042)
Also fix python version dependency.
2021-05-31 16:47:28 -05:00
Manuela Kuhn
f3d506b582
py-networkx: add 2.5.1 (#24038) 2021-05-31 16:42:12 -05:00
Manuela Kuhn
647bee732c
py-nibabel: add new package (#24036) 2021-05-31 16:36:23 -05:00
Manuela Kuhn
9d0b8208e4
py-packaging: add 20.9 (#24034) 2021-05-31 16:35:04 -05:00
Manuela Kuhn
9a902b67a1
py-etelemetry: add new package (#24033) 2021-05-31 15:34:22 -06:00
Manuela Kuhn
444ba3d4cf
py-ci-info: add new package (#24031) 2021-05-31 16:14:13 -05:00
Manuela Kuhn
bc78cf3a2c
py-pydot: add v1.4.2 (#24039) 2021-05-31 19:26:55 +00:00
Manuela Kuhn
c8df8f2702
py-requests: add 2.25.1 (#24032) 2021-05-31 12:59:25 -05:00
Harmen Stoppels
7bae865c7e
Propagate openmp to blas for sirius and spla (#24027)
And also update lowerbounds of dependencies
2021-05-31 14:16:00 +00:00
h-murai
8cdf42e1db
Bugfix: not providing fftw-api@3 (#24024) 2021-05-31 04:01:42 -06:00
Valentin Volkl
ae2fc50861
xqilla: add patches for newer xerces-c, gcc (#24021) 2021-05-31 03:49:23 -06:00
Michael Kuhn
c4e4d3587b
libfabric: add debug variant (#24018) 2021-05-31 09:50:32 +02:00
eugeneswalker
bd6145589d
CI: E4S: enable full E4S (#24011)
* e4s ci: enable full e4s
* add llvm-amdgpu to list of specs needing an xlarge tagged runner
* comment out qt and qwt because of intermittent build failures
* remove +rocm specs because rocblas job consistently fails due to infrastructure
2021-05-30 13:09:07 -07:00
Valentin Volkl
7bdd906580
vbfnlo: add missing build dependencies (#24022) 2021-05-30 19:26:39 +02:00
Paul R. C. Kent
d4585f4328
New versions: py-sphinxcontrib-bibtex, py-sphinx-rtd-theme, py-pybtex-docutils, py-pybtex (#24009)
* New versions

* update deps

* py-sphinxcontrib-bibtex deps
2021-05-29 20:52:36 -05:00
Paul R. C. Kent
120c718da5
New versions: py-gpaw, py-ase (#24008)
* New gpaw and ase versions

* Update ase deps

* flask dep removed after 3.18.0
2021-05-29 23:05:16 +00:00
Seth R. Johnson
9936182f60
qt: skip multimedia when ~opengl (#23989)
* qt: skip multimedia when ~opengl

On 5.9 on macOS the multimedia option causes build errors; on other
platforms and versions it should probably be assumed inoperative anyway.

* qt: Omit flags when disabling multimedia

```
ERROR: Unknown command line option '-no-pulseaudio'.
```

* Work around another qt@5.9 error

* qt: Fix build error on darwin
2021-05-29 20:53:25 +02:00
Vanessasaurus
6f534acbef
adding support for export of private gpg key (#22557)
This PR allows users to `--export`, `--export-secret`, or both to  export GPG keys
from Spack. The docs are updated that include a warning that this usually does not
need to be done.

This addresses an issue brought up in slack, and also represented in #14721.

Signed-off-by: vsoch <vsoch@users.noreply.github.com>

Co-authored-by: vsoch <vsoch@users.noreply.github.com>
2021-05-28 23:32:57 -07:00
Harmen Stoppels
f6febd2ef5
Cache compiler lookup per package (#23988)
Before:

```
$ hyperfine '~/spack/bin/spack -e . build-env rocfft'
Benchmark #1: ~/spack/bin/spack -e . build-env rocfft
  Time (mean ± σ):      1.593 s ±  0.016 s    [User: 1.468 s, System: 0.126 s]
  Range (min … max):    1.575 s …  1.628 s    10 runs
```

After:

```
$ hyperfine '~/spack/bin/spack -e . build-env rocfft'
Benchmark #1: ~/spack/bin/spack -e . build-env rocfft
  Time (mean ± σ):      1.407 s ±  0.020 s    [User: 1.280 s, System: 0.127 s]
  Range (min … max):    1.393 s …  1.455 s    10 runs
```
2021-05-28 21:36:34 +00:00
Greg Becker
7490d63c38
Separable module configuration -- without the bugs this time (#23703)
Currently, module configurations are inconsistent because modulefiles are generated with the configs for the active environment, but are shared among all environments (and spack outside any environment).

This PR fixes that by allowing Spack environments (or other spack config scopes) to define additional sets of modules to generate. Each set of modules can enable either lmod or tcl modules, and contains all of the previously available module configuration. The user defines the name of each module set -- the set configured in Spack by default is named "default", and is the one returned by module manipulation commands in the absence of user intervention.

As part of this change, the module roots configuration moved from the config section to inside each module configuration.

Additionally, it adds a feature that the modulefiles for an environment can be configured to be relative to an environment view rather than the underlying prefix. This will not be enabled by default, as it should only be enabled within an environment and for non-default views constructed with separate projections per-spec.
2021-05-28 14:12:05 -07:00
Desmond Orton
9b99f85abf
New Package:py-ucsf-pyem (#23961)
* New Package:py-ucsf-pyem

* Dep additions, eun env deletion

* extraction step change

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2021-05-28 13:28:14 -06:00
Ken Raffenetti
3c9c3c678d
mpich: add v3.4.2 (#24002) 2021-05-28 12:34:29 -06:00
Desmond Orton
f8223303bb
New Package: py-retry-decorator (#23967)
* New Package: py-retry-decorator

* pypi link correction

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2021-05-28 18:06:36 +00:00
Scott Wittenburg
91f66ea0a4
Pipelines: reproducible builds (#22887)
### Overview

The goal of this PR is to make gitlab pipeline builds (especially build failures) more reproducible outside of the pipeline environment.  The two key changes here which aim to improve reproducibility are: 

1. Produce a `spack.lock` during pipeline generation which is passed to child jobs via artifacts.  This concretized environment is used both by generated child jobs as well as uploaded as an artifact to be used when reproducing the build locally.
2. In the `spack ci rebuild` command, if a spec needs to be rebuilt from source, do this by generating and running an `install.sh` shell script which is then also uploaded as a job artifact to be run during local reproduction.  

To make it easier to take advantage of improved build reproducibility, this PR also adds a new subcommand, `spack ci reproduce-build`, which, given a url to job artifacts:

- fetches and unzips the job artifacts to a local directory
- looks for the generated pipeline yaml and parses it to find details about the job to reproduce
- attempts to provide a copy of the same version of spack used in the ci build
- if the ci build used a docker image, the command prints a `docker run` command you can run to get an interactive shell for reproducing the build

#### Some highlights

One consequence of this change will be much smaller pipeline yaml files.  By encoding the concrete environment in a `spack.lock` and passing to child jobs via artifacts, we will no longer need to encode the concrete root of each spec and write it into the job variables, greatly reducing the size of the generated pipeline yaml.

Additionally `spack ci rebuild` output (stdout/stderr) is no longer internally redirected to a log file, so job output will appear directly in the gitlab job trace.  With debug logging turned on, this often results in log files getting truncated because they exceed the maximum amount of log output gitlab allows.  If this is a problem, you still have the option to `tee` command output to a file in the within the artifacts directory, as now each generated job exposes a `user_data` directory as an artifact, which you can fill with whatever you want in your custom job scripts.

There are some changes to be aware of in how pipelines should be set up after this PR:

#### Pipeline generation

Because the pipeline generation job now writes a `spack.lock` artifact to be consumed by generated downstream jobs, `spack ci generate` takes a new option `--artifacts-root`, inside which it creates a `concrete_env` directory to place the lockfile.  This artifacts root directory is also where the `user_data` directory will live, in case you want to generate any custom artifacts.  If you do not provide `--artifacts-root`, the default is for it to create a `jobs_scratch_dir` within your `CI_PROJECT_DIR` (a gitlab predefined environment variable) or whatever is your current working directory if that variable isn't set. Here's the diff of the PR testing `.gitlab-ci.yml` taking advantage of the new option:

```
$ git diff develop..pipelines-reproducible-builds share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml
diff --git a/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml b/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml
index 579d7b56f3..0247803a30 100644
--- a/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml
+++ b/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml
@@ -28,10 +28,11 @@ default:
     - cd share/spack/gitlab/cloud_pipelines/stacks/${SPACK_CI_STACK_NAME}
     - spack env activate --without-view .
     - spack ci generate --check-index-only
+      --artifacts-root "${CI_PROJECT_DIR}/jobs_scratch_dir"
       --output-file "${CI_PROJECT_DIR}/jobs_scratch_dir/cloud-ci-pipeline.yml"
   artifacts:
     paths:
-      - "${CI_PROJECT_DIR}/jobs_scratch_dir/cloud-ci-pipeline.yml"
+      - "${CI_PROJECT_DIR}/jobs_scratch_dir"
   tags: ["spack", "public", "medium", "x86_64"]
   interruptible: true
```

Notice how we replaced the specific pointer to the generated pipeline file with its containing folder, the same folder we passed as `--artifacts-root`.  This way anything in that directory (the generated pipeline yaml, as well as the concrete environment directory containing the `spack.lock`) will be uploaded as an artifact and available to the downstream jobs.

#### Rebuild jobs

Rebuild jobs now must activate the concrete environment created by `spack ci generate` and provided via artifacts.  When the pipeline is generated, a directory called `concrete_environment` is created within the artifacts root directory, and this is where the `spack.lock` file is written to be passed to the generated rebuild jobs.  The artifacts root directory can be specified using the `--artifacts-root` option to `spack ci generate`, otherwise, it is assumed to be `$CI_PROJECT_DIR`.  The directory containing the concrete environment files (`spack.yaml` and `spack.lock`) is then passed to generated child jobs via the `SPACK_CONCRETE_ENV_DIR` variable in the generated pipeline yaml file.

When you don't provide custom `script` sections in your `mappings` within the `gitlab-ci` section of your `spack.yaml`, the default behavior of rebuild jobs is now to change into `SPACK_CONCRETE_ENV_DIR` and activate that environment.   If you do provide custom rebuild scripts in your `spack.yaml`, be aware those scripts should do the same thing: assume `SPACK_CONCRETE_ENV_DIR` contains the concretized environment to activate.  No other changes to existing custom rebuild scripts should be required as a result of this PR. 

As mentioned above, one key change made in this PR is the generation of the `install.sh` script by the rebuild jobs, as that same script is both run by the CI rebuild job as well as exported as an artifact to aid in subsequent attempts to reproduce the build outside of CI.  The generated `install.sh` script contains only a single `spack install` command with arguments computed by `spack ci rebuild`.  If the install fails, the job trace in gitlab will contain instructions on how to reproduce the build locally:

```
To reproduce this build locally, run:
  spack ci reproduce-build https://gitlab.next.spack.io/api/v4/projects/7/jobs/240607/artifacts [--working-dir <dir>]
If this project does not have public pipelines, you will need to first:
  export GITLAB_PRIVATE_TOKEN=<generated_token>
... then follow the printed instructions.
```

When run locally, the `spack ci reproduce-build` command shown above will download and process the job artifacts from gitlab, then print out instructions you  can copy-paste to run a local reproducer of the CI job.

This PR includes a few other changes to the way pipelines work, see the documentation on pipelines for more details.

This  PR erelies on 
~- [ ] #23194 to be able to refer to uninstalled specs by DAG hash~
EDIT: that is going to take longer to come to fruition, so for now, we will continue to install specs represented by a concrete `spec.yaml` file on disk.
- [x] #22657 to support install a single spec already present in the active, concrete environment
2021-05-28 09:38:07 -07:00
psakievich
4262de6a32
Add cxxstd to trilinos deps in nalu-wind (#23976)
Co-authored-by: Philip Sakievich <psakiev@sanida.gov>
2021-05-28 09:17:52 -07:00
Glenn Johnson
4171ee6650
armadillo: update and allow build with MKL (#23875) 2021-05-28 17:27:15 +02:00
Olivier Cessenat
0054e9bb08
argon2: ensure libraries are installed under lib (#21805)
Make a standard installation for libs in lib not lib/x86_64-linux-gnu for cmake
2021-05-28 17:26:15 +02:00
Greg Becker
405314195e
aocc version detection (#23907) 2021-05-28 10:13:40 -05:00
Desmond Orton
e0fa0145e3
freebayes: add v1.3.5, move to MesonPackage (#23772) 2021-05-28 17:07:52 +02:00
Manuela Kuhn
a9197d6e6d
r-boot: add v1.3-28 (#23992) 2021-05-28 14:54:50 +00:00
Adam J. Stewart
2507929308
opencv: add v4.5.2 (#23913) 2021-05-28 16:50:25 +02:00
Seth R. Johnson
a975cad6c6
root: disable afterimage when ~x (#23962) 2021-05-28 10:48:06 -04:00
Manuela Kuhn
27c8aac3b6
r-matrix: add v1.3-3 (#23995) 2021-05-28 14:47:56 +00:00
archxlith
4365ed9205
openfst: add v1.8.1, add "python" variant (#23850) 2021-05-28 16:46:00 +02:00
Manuela Kuhn
fe302893ae
r-lattice: add v0.20-44 (#23994) 2021-05-28 14:39:29 +00:00
Seth R. Johnson
d593aa5048
vecgeom: add v1.1.15 (#23973) 2021-05-28 16:36:32 +02:00
Desmond Orton
ebf6f71355
modeltest-ng: add new package (#23765) 2021-05-28 16:35:18 +02:00
Manuela Kuhn
16d4b1ed32
r-mass: add v7.3-54 (#23996) 2021-05-28 14:34:21 +00:00
Manuela Kuhn
f0eb4ca2d8
r-nlme: add v3.1-152 (#23997) 2021-05-28 14:30:37 +00:00
Manuela Kuhn
e06a3b7d45
r-lme4: add v1.1-27 (#23998) 2021-05-28 14:26:21 +00:00
Manuela Kuhn
c2e1e48fdc
r-pbkrtest: add v0.5.1 (#23999) 2021-05-28 14:21:21 +00:00
Robert Mijakovic
50ea1f8577
singularity: add v3.7.4 (#23954)
Co-authored-by: Robert Mijakovic <robert.mijakovic@lxp.lu>
2021-05-28 15:56:40 +02:00
Martin Aumüller
0c290ef1c3
embree: add v3.13.0, fix build (#23986)
* embree: allow for compiling with gcc 7.3

strip out unsupported -mprefer-vector-width=256

* embree: fix build on AMD CPUs

The ISAs that embree is compiled for have to match the CPU
features enabled by the compiler, as embree derives theISA
that it compiles for from the latter.

Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2021-05-28 13:50:03 +02:00