summaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)AuthorFilesLines
2022-07-14Deprecate `blacklist`/`whitelist` in favor of `include`/`exclude` (#31569)Todd Gamblin23-135/+375
For a long time the module configuration has had a few settings that use `blacklist`/`whitelist` terminology. We've been asked by some of our users to replace this with more inclusive language. In addition to being non-inclusive, `blacklist` and `whitelist` are inconsistent with the rest of Spack, which uses `include` and `exclude` for the same concepts. - [x] Deprecate `blacklist`, `whitelist`, `blacklist_implicits` and `environment_blacklist` in favor of `exclude`, `include`, `exclude_implicits` and `exclude_env_vars` in module configuration, to be removed in Spack v0.20. - [x] Print deprecation warnings if any of the deprecated names are in module config. - [x] Update tests to test old and new names. - [x] Update docs. - [x] Update `spack config update` to fix this automatically, and include a note in the error that you can use this command.
2022-07-13Decompression: use tar exe vs. built-in Python tarfile support (#31563)Peter Scheibel1-19/+4
Python's built-in tarfile support doesn't address some general cases of malformed tarfiles that are already handled by the system 'tar' utility; until these can be addressed, use that exclusively.
2022-07-12`spack.repo.get()` can only be called on concrete specs (#31411)Massimiliano Culpo76-1397/+1065
The goal of this PR is to make clearer where we need a package object in Spack as opposed to a package class. We currently instantiate a lot of package objects when we could make do with a class. We should use the class when we only need metadata, and we should only instantiate and us an instance of `PackageBase` at build time. Modifications: - [x] Remove the `spack.repo.get` convenience function (which was used in many places, and not really needed) - [x] Use `spack.repo.path.get_pkg_class` wherever possible - [x] Try to route most of the need for `spack.repo.path.get` through `Spec.package` - [x] Introduce a non-data descriptor, that can be used as a decorator, to have "class level properties" - [x] Refactor unit tests that had to be modified to reduce code duplication - [x] `Spec.package` and `Repo.get` now require a concrete spec as input - [x] Remove `RepoPath.all_packages` and `Repo.all_packages`
2022-07-12file_cache.py: idempotent remove without races (#31477)Harmen Stoppels2-4/+19
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-12compression.py: buffered copy (#31533)Harmen Stoppels1-3/+4
2022-07-12environment.py: only acquire write lock when necessary (#31493)Harmen Stoppels1-3/+4
2022-07-12env depfile: add missing touch (#31494)Harmen Stoppels1-0/+1
Oversight in #31433, the non-phony `env` target was missing a file being created for it, which can cause make to infinitely loop when including multiple generated makefiles.
2022-07-12Remove os.getcwd from function signature (#31480)Massimiliano Culpo1-3/+2
fixes #29730 This is also wrong since it binds the directory at the time of module import, rather than the one at the time of function call.
2022-07-12Sanitize ownership when extracting tarfiles (#31524)Jonathon Anderson1-3/+9
2022-07-11py-hatchling: add new packages, document new build backend (#31512)Adam J. Stewart1-2/+31
* py-hatchling: add new package, document new build backend * Minor doc changes Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com> Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>
2022-07-07Fix spack edit message when no editor installed (#31412)Cory Bloor2-1/+15
When no default editor is installed and no environment variable is set, which_string would return None and this would be passed to os.execv resulting in a TypeError. The message presented to the user would be: Error: execv: path should be string, bytes or os.PathLike, not NoneType This change checks that which_string has returned successfully before attempting to execute the result, resulting in a new error message: Error: No text editor found! Please set the VISUAL and/or EDITOR environment variable(s) to your preferred text editor. It's not strictly necessary, but I've also changed try_exec to catch all errors rather than just OSErrors. This would have provided slightly more context for the original error message.
2022-07-07Documentation: Add SourceforgePackage to the build systems docs (#31473)Tamara Dahlgren2-2/+58
2022-07-07removing feature bloat: monitor and analyzers (#31130)Vanessasaurus18-2159/+0
Signed-off-by: vsoch <vsoch@users.noreply.github.com> Co-authored-by: vsoch <vsoch@users.noreply.github.com>
2022-07-06Testing Bugfix: refactor clean --python-cache to support all (#31449)Tamara Dahlgren2-13/+63
There were two choices: 1) remove '-p' from '-a' or 2) allow monkeypatching the cleaning of the python cache since clean's test_function_calls isn't supposed to be actually cleaning anything. This commit supports the latter and adds a test case for `-p`.
2022-07-05Remove fetch from depfile (#31433)Harmen Stoppels3-51/+19
2022-07-05ROCmPackage: unify amdgpu_targets (#30582)Alberto Invernizzi1-3/+4
* unify amdgpu_targets for rocsolver and rocblas * add more archs * adapt all roc packages to unified amdgpu_targets
2022-07-01gitlab: Fix pipeline generation for non-develop protected pipelines (#31378)Scott Wittenburg1-6/+9
Release branches and tags run protected pipelines, and we noticed that those pipelines were generating all jobs in the stack, even when the mirror contained all the built specs and an up to date index. The problem was caused because the override mirror was not present in spacks mirror configuration at the time when the binary_distribution.update() method was called. This fixes that by always adding the mirror override, if present, to the list of configured mirrors.
2022-06-29Cray manifest: compiler duplicates (#31173)Peter Scheibel3-7/+33
* 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-06-29PythonPackage: add default libs/headers attributes (#28527)Adam J. Stewart1-0/+34
* PythonPackage: add default libs/headers attributes * Style fix * libs and headers should be properties * Check both platlib and include * Fix variable reference
2022-06-29Update containerize templates to account for view indirection (#31321)Massimiliano Culpo1-1/+2
fixes #30965
2022-06-28oneAPI supports cxx17_flag and cxx20_flag (#31274)Wouter Deconinck1-0/+8
2022-06-28Feature: use git branches/tags as versions (#31200)Greg Becker8-120/+304
Building on #24639, this allows versions to be prefixed by `git.`. If a version begins `git.`, it is treated as a git ref, and handled as git commits are starting in the referenced PR. An exception is made for versions that are `git.develop`, `git.main`, `git.master`, `git.head`, or `git.trunk`. Those are assumed to be greater than all other versions, as those prefixed strings are in other contexts.
2022-06-27oneapi-* packages: improve use with modules (#30981)Sergey Kosukhin1-14/+12
This commit adds some changes which improve use of Spack-installed oneAPI packages with Spack-generated modules, but not within Spack (e.g. if you install some of these packages with Spack, then load their associated modules to build other packages outside of Spack). The majority of the PR diff is refactoring. The functional changes are: * intel-oneapi-mkl: * setup_run_environment: update Intel compiler flags to RPATH the mkl libs * intel-oneapi-compilers: update the compiler configuration to RPATH libraries installed by this package (note that Spack already handled this when installing dependent packages with Spack, but this is specifically to use the intel-oneapi-compilers package outside of Spack). Specifically: * inject_rpaths: this modifies the binaries installed as part of the intel-oneapi-compilers package to RPATH libraries provided by this package * extend_config_flags: this instructs the compiler executables provided by this package to RPATH those same libraries Refactoring includes: * intel-oneapi-compilers: in addition to the functional changes, a large portion of this diff is reorganizing the creation of resources/archives downloaded for the install * The base oneAPI package renamed component_path, so several packages changed as a result: * intel-oneapi-dpl * intel-oneapi-dnn * extrae * intel-oneapi-mpi: * Perform file filtering in one pass rather than two
2022-06-27`spack external find`: handle manifest with bad permissions (#31201)Peter Scheibel4-0/+98
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-06-27Rename os_facts.lp to os_compatibility.lp (#31206)Massimiliano Culpo2-1/+1
Follow-up from #31170
2022-06-24Fix typo in documentation note about concretizer:unify (#31246)Cody Balos1-3/+3
2022-06-23ASP-based solver: rescale target weights so that 0 is always the best score ↵Massimiliano Culpo2-49/+15
(#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-06-22relocation: x-pie-executable needs relocation (#31248)eugeneswalker1-1/+2
2022-06-22spack create: fix for no URL (#31239)Adam J. Stewart2-1/+7
2022-06-22Remove update functions used to ease the transition in v0.16 (#31216)Massimiliano Culpo4-301/+12
2022-06-21Canonicalize positional argument to spack bootstrap mirror (#31180)Massimiliano Culpo1-1/+3
fixes #31139
2022-06-20Stricter compatibility rules for OS and compiler when reusing specs (#31170)Massimiliano Culpo4-3/+57
* Stricter compatibility rules for OS and compiler when reusing specs * Add unit test
2022-06-20OpenSUSE Tumbleweed: use GLIBC version as distro version (#19895)Christian Goll1-0/+12
Tumbleweed is a rolling release that would have used a date as a version instead.
2022-06-20Fix request for bzip2, since bzip was pulled due to patent issues (#31198)Sam Broderick1-2/+2
2022-06-17Bugfix external find --all for libraries (#31186)Brian Van Essen2-2/+2
* 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-06-17docs: quote string to show valid YAML (#31178)Massimiliano Culpo1-1/+1
fixes #31167
2022-06-17Spec: Add a new virtual-customizable `home` attribute (#30917)Chuck Atkins4-9/+331
* Spec: Add a new virtual-customizable home attribute * java: Use the new builtin home attribute * python: Use the new builtin home attribute
2022-06-17Update Intel package descriptions (#31150)Robert Cohn2-4/+7
2022-06-16ASP-based solver: fix rules on version weights selection (#31153)Massimiliano Culpo3-4/+61
* ASP: sort and deduplicate version weights from installed specs * Pick version weights according to provenance * Add unit test
2022-06-16Manifest parsing: avoid irrelevant files (#31144)Peter Scheibel2-1/+6
* Manifest directory may not contain manifest files: exclude non-manifest files * Manifest files use different name for rocmcc: add translation for it
2022-06-16concretize.lp: impose a lower bound on the number of version facts if a ↵Massimiliano Culpo2-0/+26
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-06-15Allow bootstrapping to work when partial or incompatible modules exist in ↵Tom Scogland1-23/+32
the module path (#31035)
2022-06-14Make the IntelPackage fail successfully (#30773)G-Ragghianti1-0/+8
Co-authored-by: Robert Cohn <rscohn2@gmail.com>
2022-06-13Fix spack style arbitrary git rev as base (#31019)Jordan Galby2-5/+25
Allow `spack style -b @` or `spack style -b origin/develop` to work as expected. Regression since spack 0.17 #25085
2022-06-11fix doubly shell quoting args to `spack spec` (#29282)Danny McClanahan5-19/+145
* 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-06-10bugfix: preserve dict order for `Spec.dag_hash()` in Python 2 (#31092)Todd Gamblin2-3/+80
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-06-10clingo: fix string formatting in error messages (#31084)Sergey Kosukhin1-2/+2
2022-06-09Allow more fine-grained control over what submodules are updated (#27293)Tim Fuller5-6/+78
The "submodules" argument of the "version" directive can now accept a callable that returns a list of submodules, in addition to the usual Boolean values
2022-06-08bootstrap: account for disabled sources (#31042)Massimiliano Culpo2-4/+22
* 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-06-07Staging: determine extensions from nonstandard URLs (#31027)Peter Scheibel2-5/+2
Fixes #31021 With #25185, we no longer default to using tar when we can't determine the extension type, opting to fail instead. This broke fetching for the pcre package, where we couldn't determine the extension. To determine the extension, we were attempting to extract it from the destination filename; however, this file name may omit details of the origin URL that are required to determine the extension, so instead we examine the URL directly. This also updates the decompressor_for method not to set ext=None by default: it must now always be set by the caller.