Commit Graph

26262 Commits

Author SHA1 Message Date
Massimiliano Culpo
13e6f87ef6 Make CI work for Windows on a push to the release branch v0.18.1 2022-07-20 08:34:13 +02:00
Massimiliano Culpo
45183d2b49 Add changelog and bumped version 2022-07-20 08:10:41 +02:00
Massimiliano Culpo
22a7f98141 Fix typo in function 2022-07-20 08:10:41 +02:00
Jonathon Anderson
1bbf2fa93e Only hack botocore when needed (#31610)
Newer versions of botocore (>=1.23.47) support the full IOBase
interface, so the hacks added to supplement the missing attributes are
no longer needed. Conditionally disable the hacks if they appear to be
unnecessary based on the class hierarchy found at runtime.
2022-07-20 08:10:41 +02:00
Harmen Stoppels
67f2d64a3f Use lexists instead of exists during fetch (#31509) 2022-07-20 08:10:41 +02:00
Harmen Stoppels
7405d18e98 environment.py: only acquire write lock when necessary (#31493) 2022-07-20 08:10:41 +02:00
Harmen Stoppels
bff1de69a5 file_cache.py: idempotent remove without races (#31477)
There's a race condition in `remove()` as the lockfile is removed after
releasing the lock, which is a problem when another process acquires a
write lock during deletion.

Also simplify life a bit in multiprocessing when a file is possibly
removed multiple times, which currently is an error on the second
deletion, so the proposed fix is to make remove(...) idempotent and not
error when deleting non-existing cache entries.

Don't tests for existence of lockfile, cause windows/linux behavior is different
2022-07-20 08:10:41 +02:00
Peter Scheibel
44f360556d Cray manifest: compiler duplicates (#31173)
* remove unhelpful comment
* Filter compiler duplicates while reading manifest
* more-specific version matching edited to use module-specific version (to avoid an issue where a user might add a compiler with the same version to the initial test configuration
2022-07-20 08:10:41 +02:00
Peter Scheibel
96b68a210f spack external find: handle manifest with bad permissions (#31201)
Allow `spack external find` (with no extra args) to proceed if the manifest file exists but
without sufficient permissions; in that case, print a warning. Also add a test for that behavior.

TODOs:

- [x] continue past any exception raised during manifest parsing as part of `spack external find`, 
      except for CTRL-C (and other errors that indicate immediate program termination)
- [x] Semi-unrelated but came up when discussing this with the user who reported this issue to
      me: the manifest parser now accepts older schemas 

See: https://github.com/spack/spack/issues/31191
2022-07-20 08:10:41 +02:00
Cody Balos
d3ee0b9c07 Fix typo in documentation note about concretizer:unify (#31246) 2022-07-20 08:10:41 +02:00
Massimiliano Culpo
ab1e04f1d0 Try fixing the CI issue in Windows 2022-07-20 08:10:41 +02:00
Marco De La Pierre
fbc2e59221 Modify dockerfile template, so that any command can be executed (#29741) 2022-07-20 08:10:41 +02:00
Massimiliano Culpo
4f40c9aab9 Update containerize templates to account for view indirection (#31321)
fixes #30965
2022-07-20 08:10:41 +02:00
Massimiliano Culpo
618161075d ASP-based solver: rescale target weights so that 0 is always the best score (#31226)
fixes #30997

Instead of giving a penalty of 30 to all nodes when preferences
are not package specific, give a penalty of 100 to all targets
of a node where we have package specific preferences, if the target
is not explicitly preferred.
2022-07-20 08:10:41 +02:00
Massimiliano Culpo
21fa564df8 Canonicalize positional argument to spack bootstrap mirror (#31180)
fixes #31139
2022-07-20 08:10:41 +02:00
Brian Van Essen
b3e9abc72a Bugfix external find --all for libraries (#31186)
* Fixed a bug in the 'external find --all' command where the call failed
to find packages by both executable and library. The bug was that the
call `path.all_packages()` incorrectly turned the variable
`packages_to_check` into a generator rather than keeping it a list.
Thus the second call to `detection.by_library` had no work to do.

* Fixed the help message for the find external and compiler commands as
well as others that used the `scopes_metavar` field to define where
the results should be stored in configuration space.  Specifically,
the fact that configuration could be added to the environment was not
mentioned in the help message.
2022-07-20 08:10:41 +02:00
Christian Goll
488a513109 OpenSUSE Tumbleweed: use GLIBC version as distro version (#19895)
Tumbleweed is a rolling release that would have used a date 
as a version instead.
2022-07-20 08:10:41 +02:00
Massimiliano Culpo
53cb6312a8 Stricter compatibility rules for OS and compiler when reusing specs (#31170)
* Stricter compatibility rules for OS and compiler when reusing specs
* Add unit test
2022-07-20 08:10:41 +02:00
Massimiliano Culpo
7371fef3ca docs: quote string to show valid YAML (#31178)
fixes #31167
2022-07-20 08:10:41 +02:00
Peter Scheibel
60d9e12594 Manifest parsing: avoid irrelevant files (#31144)
* Manifest directory may not contain manifest files: exclude non-manifest files
* Manifest files use different name for rocmcc: add translation for it
2022-07-20 08:10:41 +02:00
Massimiliano Culpo
c4e492202d ASP-based solver: fix rules on version weights selection (#31153)
* ASP: sort and deduplicate version weights from installed specs

* Pick version weights according to provenance

* Add unit test
2022-07-20 08:10:41 +02:00
Massimiliano Culpo
2742e3d332 concretize.lp: impose a lower bound on the number of version facts if a solution exists (#31142)
* concretize.lp: impose a lower bound on the number of version facts if a valid version exists

fixes #30864

* Add a unit test
2022-07-20 08:10:41 +02:00
Massimiliano Culpo
54f1ba9c3b Pin setuptools version in Github Action Workflows (#31118)
fixes #31109
2022-07-20 08:10:41 +02:00
Danny McClanahan
a78944c9eb fix doubly shell quoting args to spack spec (#29282)
* add test to verify fix works
* fix spec cflags/variants parsing test (breaking change)
* fix `spack spec` arg quoting issue
* add error report for deprecated cflags coalescing
* use .group(n) vs subscript regex group extraction for 3.5 compat
* add random test for untested functionality to pass codecov
* fix new test failure since rebase
2022-07-20 08:10:41 +02:00
Todd Gamblin
6a4d1af5be bugfix: preserve dict order for Spec.dag_hash() in Python 2 (#31092)
Fix a bug introduced in #21720. `spack_json.dump()` calls `_strify()` on dictionaries to
convert `unicode` to `str`, but it constructs `dict` objects instead of
`collections.OrderedDict` objects, so in Python 2 (or earlier versions of 3) it can
scramble dictionary order.

This can cause hashes to differ between Python 2 and Python 3, or between Python 3.7
and earlier Python 3's.

- [x] use `OrderedDict` in `_strify`
- [x] add a regression test
2022-07-20 08:10:41 +02:00
Sergey Kosukhin
6baf171700 clingo: fix string formatting in error messages (#31084) 2022-07-20 08:10:41 +02:00
Axel Huebl
891bb7131b openPMD-api: 0.14.5 (#31023)
Add the latest release.
2022-07-20 08:10:41 +02:00
Axel Huebl
3876367a75 WarpX: 22.06 (#31012)
* WarpX: 22.06

Update `warpx` & `py-warpx` to the latest release, `22.06`.

* Patch: Fix 1D CUDA Builds
2022-07-20 08:10:41 +02:00
Axel Huebl
19e4649979 Prepare: openPMD-api 0.15.0-dev (#29484)
Anticipate openPMD-api changes in the next major release that are
already in `dev` (aka Spack `develop`):
- C++17 requirement
- drop: `mpark-variant` public dependency
- add: `toml11` private dependency

Also add @franzpoeschel as co-maintainer for the Spack package.
2022-07-20 08:10:41 +02:00
Axel Huebl
3dd7619f73 WarpX: Patch no-MPI & Lib Install (#30866)
Fixes WarpX issues:
- https://github.com/ECP-WarpX/WarpX/pull/3134
- https://github.com/ECP-WarpX/WarpX/pull/3141

and uses GitHub patch URLs directly instead of storing
patch copies.
2022-07-20 08:10:41 +02:00
Massimiliano Culpo
2a7a040327 bootstrap: account for disabled sources (#31042)
* bootstrap: account for disabled sources

Fix a bug introduced in #30192, which effectively skips
any prescription on disabled bootstrapping sources.

* Add unit test to avoid regression
2022-07-20 08:10:41 +02:00
Massimiliano Culpo
83bf44f2fe archspec: bump to v0.1.4 (#30856)
Fixes compiler flags for oneapi and dpcpp
2022-07-20 08:10:41 +02:00
Adam J. Stewart
c527b43d18 Use stable URLs for patch-diff GitHub patches (#30953) 2022-07-20 08:10:41 +02:00
Adam J. Stewart
4866c587e6 Python: fix clingo bootstrapping on Apple M1 (#30834)
This PR fixes several issues I noticed while trying to get Spack working on Apple M1.

- [x] `build_environment.py` attempts to add `spec['foo'].libs` and `spec['foo'].headers` to our compiler wrappers for all dependencies using a try-except that ignores `NoLibrariesError` and `NoHeadersError` respectively. However, The `libs` and `headers` attributes of the Python package were erroneously using `RuntimeError` instead.
- [x] `spack external find python` (used during bootstrapping) currently has no way to determine whether or not an installation is `+shared`, so previously we would only search for static Python libs. However, most distributions including XCode/Conda/Intel ship shared Python libs. I updated `libs` to search for both shared and static (order based on variant) as a fallback.
- [x] The `headers` attribute was recursively searching in `prefix.include` for `pyconfig.h`, but this could lead to non-deterministic behavior if multiple versions of Python are installed and `pyconfig.h` files exist in multiple `<prefix>/include/pythonX.Y` locations. It's safer to search in `sysconfig.get_path('include')` instead.
- [x] The Python installation that comes with XCode is broken, and `sysconfig.get_paths` is hard-coded to return specific directories. This meant that our logic for `platlib`/`purelib`/`include` where we replace `platbase`/`base`/`installed_base` with `prefix` wasn't working and the `mkdirp` in `setup_dependent_package` was trying to create a directory in root, giving permissions issues. Even if you commented out those `mkdirp` calls, Spack would add the wrong directories to `PYTHONPATH`. Added a fallback hard-coded to `lib/pythonX.Y/site-packages` if sysconfig is broken (this is what distutils always did).
2022-07-20 08:10:41 +02:00
Evan Bollig
c09bf37ff6 Added AWS-AHUG alinux2 pipeline (#24601)
Add spack stacks targeted at Spack + AWS + ARM HPC User Group hackathon.  Includes
a list of miniapps and full-apps that are ready to run on both x86_64 and aarch64.

Co-authored-by: Scott Wittenburg <scott.wittenburg@kitware.com>
2022-05-31 06:29:22 +02:00
Evan Bollig
deeebc4593 Alinux isc buildcache (#30462)
Add two new stacks targeted at x86_64 and arm, representing an initial list of packages 
used by current and planned AWS Workshops, and built in conjunction with the ISC22
announcement of the spack public binary cache.

Co-authored-by: Scott Wittenburg <scott.wittenburg@kitware.com>
2022-05-31 06:29:22 +02:00
Greg Becker
eef202ea85 fix dev paths for deps 2022-05-28 20:18:13 +02:00
Todd Gamblin
4c6564f10a update changelog for v0.18.0 (#30905) v0.18.0 2022-05-28 17:33:52 +02:00
Massimiliano Culpo
82919cb6a5 Remove the warning that Spack prints at each spec (#30872)
Add instead a warning box in the documentation
2022-05-28 16:37:51 +02:00
Greg Becker
844c799299 target optimization: re-norm optimization scale so that 0 is best. (#29926)
referred targets are currently the only minimization criteria for Spack for which we allow
negative values. That means Spack may be incentivized to add nodes to the DAG if they
match the preferred target.

This PR re-norms the minimization criteria so that preferred targets are weighted from 0,
and default target weights are offset by the number of preferred targets per-package to
calculate node_target_weight.

Also fixes a bug in the test for preferred targets that was making the test easier to pass
than it should be.
2022-05-27 22:51:03 -07:00
Greg Becker
9198ab63ae update tutorial command for v0.18.0 and new gpg key 2022-05-27 18:45:19 -07:00
Todd Gamblin
8f9bc5bba4 Revert "strip -Werror: all specific or none (#30284)"
This reverts commit 330832c22c.

`-Werror` chagnes were unfortunately causing the `rdma-core` build to fail.
Reverting on `v0.18`; we can fix this in `develop`
2022-05-26 12:13:40 -07:00
Scott Wittenburg
ca0c968639 ci: Support secure binary signing on protected pipelines (#30753)
This PR supports the creation of securely signed binaries built from spack
develop as well as release branches and tags. Specifically:

- remove internal pr mirror url generation logic in favor of buildcache destination
on command line
    - with a single mirror url specified in the spack.yaml, this makes it clearer where 
    binaries from various pipelines are pushed
- designate some tags as reserved: ['public', 'protected', 'notary']
    - these tags are stripped from all jobs by default and provisioned internally
    based on pipeline type
- update gitlab ci yaml to include pipelines on more protected branches than just
develop (so include releases and tags)
    - binaries from all protected pipelines are pushed into mirrors including the
    branch name so releases, tags, and develop binaries are kept separate
- update rebuild jobs running on protected pipelines to run on special runners
provisioned with an intermediate signing key
    - protected rebuild jobs no longer use "SPACK_SIGNING_KEY" env var to
    obtain signing key (in fact, final signing key is nowhere available to rebuild jobs)
    - these intermediate signatures are verified at the end of each pipeline by a new
    signing job to ensure binaries were produced by a protected pipeline
- optionallly schedule a signing/notary job at the end of the pipeline to sign all
packges in the mirror
    - add signing-job-attributes to gitlab-ci section of spack environment to allow
    configuration
    - signing job runs on special runner (separate from protected rebuild runners)
    provisioned with public intermediate key and secret signing key
2022-05-26 09:10:18 -07:00
Gregory Becker
d99a1b1047 release number for v0.18.0 2022-05-25 20:29:03 -07:00
Todd Gamblin
d51f949768 bugfix: do not compute package_hash for old concrete specs (#30861)
Old concrete specs were slipping through in `_assign_hash`, and `package_hash` was
attempting to recompute a package hash when we could not know the package a time
of concretization.

Part of this was that the logic for `_assign_hash` was hard to understand -- it was
called twice from `_finalize_concretization` and had special cases for both args it
was called with. It's much easier to understand the logic here if we just inline it.

- [x] Get rid of `_assign_hash` and just integrate it with `_finalize_concretization`
- [x] Don't call `_package_hash` at all for already-concrete specs.
- [x] Add regression test.
2022-05-26 03:12:24 +00:00
Adam J. Stewart
1b955e66c1 py-numpy: add v1.22.4 (#30827) 2022-05-25 18:30:02 -06:00
Adam J. Stewart
5f8a3527e7 py-pythran: add v0.11.0 (#30829) 2022-05-25 18:29:42 -06:00
Seth R. Johnson
ec02369dba openmpi: fixes for slurm and #29449 (#30299) 2022-05-25 18:09:38 -06:00
Diego Alvarez
8ceac2ba9b Add nextflow 22.04.3 (#30855) 2022-05-25 15:46:00 -06:00
snehring
85eeed650e eagle: updating to version 1.1.3 (#30852) 2022-05-25 20:20:54 +00:00