summaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)AuthorFilesLines
2021-06-24Environment modifications: de-prioritize external packages (#23824)Peter Scheibel4-170/+270
Prior to any Spack build, Spack modifies PATH etc. to help the build find the dependencies it needs. It also allows any package to define custom environment modifications (and furthermore a package can specify environment modifications to apply when it is used as a dependency). If an external package defines custom environment modifications that alter PATH, and the external package is in a merged or system prefix, then that prefix could "override" the Spack-built packages. This commit reorders environment modifications so that PrependPath actions which expose Spack-built packages override PrependPath actions for custom environment modifications of external packages. In more detail, the original order of environment modifications is: * Modules * Compiler flag variables * PATH, CMAKE_PREFIX_PATH, and PKG_CONFIG_PATH for dependencies * Custom package.py modifications in the following order: * dependencies * root This commit changes the order: * Modules * Compiler flag variables * For each external dependency * PATH, CMAKE_PREFIX_PATH, and PKG_CONFIG_PATH modifications * Custom modifications * For each Spack-built dependency * PATH, CMAKE_PREFIX_PATH, and PKG_CONFIG_PATH modifications * Custom modifications
2021-06-24Pipelines: Set a pipeline type variable (#24505)Scott Wittenburg3-13/+17
Spack pipelines need to take specific actions internally that depend on whether the pipeline is being run on a PR to spack or a merge to the develop branch. Pipelines can also run in other repositories, which represents other possible use cases than just the two mentioned above. This PR creates a "SPACK_PIPELINE_TYPE" gitlab variable which is propagated to rebuild jobs, and is also used internally to determine which pipeline-specific tasks to run. One goal of the PR is fix an issue where rebuild jobs which failed on develop pipelines did not properly report the broken full hash to the "broken-specs-url".
2021-06-24Add Externally Findable section to info command (#24503)Asher Mancinelli2-0/+37
* Add Externally Findable section to info command * Use comma delimited detection attributes in addition to boolean value * Unit test externally detectable part of spack info
2021-06-23Update command to setup tutorial (#24488)Massimiliano Culpo1-2/+2
2021-06-23spack ci: use return codes to signal exit status (#24090)Scott Wittenburg1-3/+3
2021-06-23Fix broken CI for package only PRs, make dateutil not strictly required (#24484)Massimiliano Culpo1-6/+5
* Force the Python interpreter with an env variable This commit forces the Python interpreter with an environment variable, to ensure that the Python set by the "setup-python" action is the one being used. Due to the policy adopted by Spack to prefer python3 over python we may end up picking a Python 3.X interpreter where Python 2.7 was meant to be used. * Revert "Update conftest.py (#24473)" This reverts commit 477c8ce8205ec149fa897c9d83e530815c978d8b. * Make python-dateutil a soft dependency for unit tests Before #23212 people could clone spack and run ``` spack unit-tests ``` while now this is not possible, since python-dateutil is a required but not vendored dependency. This change makes it not a hard requirement, i.e. it will be used if found in the current interpreter. * Workaround mypy complaint
2021-06-22filter_compiler_wrappers: include realpath of compiler wrappers (#24456)eugeneswalker1-1/+5
2021-06-22Add config option to use urllib to fetch if curl missing (#21398)loulawrence5-117/+227
* Use Python module urllib to fetch in the case that curl is missing
2021-06-22Update conftest.py (#24473)Peter Scheibel1-2/+2
2021-06-22ASP-based solver: fix provider logic (#24351)Massimiliano Culpo2-10/+31
This commit fixes a subtle bug that may occur when a package is a "possible_provider" of a virtual but no "provides_virtual" can be deduced. In that case the cardinality constraint on "provides_virtual" may arbitrarily assign a package the role of provider even if the constraints for it to be one are not fulfilled. The fix reworks the logic around three concepts: - "possible_provider": a package may provide a virtual if some constraints are met - "provides_virtual": a package meet the constraints to provide a virtual - "provider": a package selected to provide a virtual
2021-06-22ASP-based solver: fix facts for default providers (#24380)Massimiliano Culpo1-1/+2
Facts used to compute weights for providers only need the package name, since the other attributes are computed as part of the solve.
2021-06-22Implement CVS fetcher (#23212)Erik Schnetter4-2/+423
Spack packages can now fetch versions from CVS repositories. Note this fetch mechanism is unsafe unless using :extssh:. Most public CVS repositories use an insecure protocol implemented as part of CVS.
2021-06-22adding save of build times on install (#24350)Vanessasaurus6-44/+123
Here we are adding an install_times.json into the spack install metadata folder. We record a total, global time, along with the times for each phase. The type of phase or install start / end is included (e.g., build or fail) Signed-off-by: vsoch <vsoch@users.noreply.github.com> Co-authored-by: vsoch <vsoch@users.noreply.github.com>
2021-06-21Fetching: git on Mac OS (#24247)Peter Scheibel3-5/+15
Extend the changes in #24163 to unit tests.
2021-06-18Add an audit system to Spack (#23053)Massimiliano Culpo5-0/+625
Add a new "spack audit" command. This command can check for issues with configuration or with packages and is intended to help a user debug a failed Spack build. In some cases the reported issues are always errors but are too costly to check for (e.g. packages that specify missing variants on dependencies). In other cases the issues may be legitimate but uncommon usage of Spack and we want to be sure the user intended the behavior (e.g. duplicate compiler definitions). Audits are grouped by theme, and for now the two themes are packages and configuration. For example you can run all available audits on packages with "spack audit packages". It is intended that in the future users will be able to define their own audits. The package audits are good candidates for running in package_sanity (i.e. they could catch bugs in user-submitted packages before they are merged) but that is left for a later PR.
2021-06-17oneAPI compiler: update openmp flag (#23771)Frank Willmore2-2/+2
2021-06-17Adding support for spack monitor with containerize (#23777)Vanessasaurus6-1/+417
This should get us most of the way there to support using monitor during a spack container build, for both Singularity and Docker. Some quick notes: ### Docker Docker works by way of BUILDKIT and being able to specify --secret. What this means is that you can prefix a line with a mount of type secret as follows: ```bash # Install the software, remove unnecessary deps RUN --mount=type=secret,id=su --mount=type=secret,id=st cd /opt/spack-environment && spack env activate . && export SPACKMON_USER=$(cat /run/secrets/su) && export SPACKMON_TOKEN=$(cat /run/secrets/st) && spack install --monitor --fail-fast && spack gc -y ``` Where the id for one or more secrets corresponds to the file mounted at `/run/secrets/<name>`. So, for example, to build this container with su (spackmon user) and sv (spackmon token) defined I would export them on my host and do: ```bash $ DOCKER_BUILDKIT=1 docker build --network="host" --secret id=st,env=SPACKMON_TOKEN --secret id=su,env=SPACKMON_USER -t spack/container . ``` And when we add `env` to the secret definition that tells the build to look for the secret with id "st" in the environment variable `SPACKMON_TOKEN` for example. If the user is building locally with a local spack monitor, we also need to set the `--network` to be the host, otherwise you can't connect to it (a la isolation of course.) ## Singularity Singularity doesn't have as nice an ability to clearly specify secrets, so (hoping this eventually gets implemented) what I'm doing now is providing the user instructions to write the credentials to a file, add it to the container to source, and remove when done. ## Tags Note that the tags PR https://github.com/spack/spack/pull/23712 will need to be merged before `--monitor-tags` will actually work because I'm checking for the attribute (that doesn't exist yet): ```bash "tags": getattr(args, "monitor_tags", None) ``` So when that PR is merged to update the argument group, it will work here, and I can either update the PR here to not check if the attribute is there (it will be) or open another one in the case this PR is already merged. Finally, I added a bunch of documetation for how to use monitor with containerize. I say "mostly working" because I can't do a full test run with this new version until the container base is built with the updated spack (the request to the monitor server for an env install was missing so I had to add it here). Signed-off-by: vsoch <vsoch@users.noreply.github.com> Co-authored-by: vsoch <vsoch@users.noreply.github.com>
2021-06-17ci: add all locally computed hashes as job variables (#24359)Scott Wittenburg1-4/+9
2021-06-17Unset LD_PRELOAD and DYLD_INSERT_LIBRARIES (#24177)Harmen Stoppels1-0/+4
When running executables from build dependencies, we want to avoid that `LD_PRELOAD` and `DYLD_INSERT_LIBRARIES` any of their shared libs build by spack with system libraries.
2021-06-15adding spack upload command (#24321)Vanessasaurus3-8/+121
this will first support uploads for spack monitor, and eventually could be used for other kinds of spack uploads Signed-off-by: vsoch <vsoch@users.noreply.github.com> Co-authored-by: vsoch <vsoch@users.noreply.github.com>
2021-06-14extending example for buildcaches (#22504)Vanessasaurus1-6/+78
* extending example for buildcaches I was attempting to create a local build cache from a directory, and I found the docs for both buildcaches and mirrors, but did not connect the docs that the url variable could be the local filesystem variable. I am extending the docs for buildcaches with an example of creating and interacting with one on the filesystem because I suspect other users will run into this need and possibly not find what they are looking for. Signed-off-by: vsoch <vsoch@users.noreply.github.com> * adding as follows to spack mirror list Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com> Co-authored-by: vsoch <vsoch@users.noreply.github.com> Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>
2021-06-14adding more description to binary caches (#23934)Vanessasaurus1-0/+23
It is currently kind of confusing to the reader to distinguish spack buildcache install and spack install, and it is not clear how to use a build cache once a mirror is added. Hopefully this little big of description can help (and I hope I got it right!) Signed-off-by: vsoch <vsoch@users.noreply.github.com> Co-authored-by: vsoch <vsoch@users.noreply.github.com>
2021-06-14oneAPI packages: fix install for python2 (#24296)Robert Cohn1-2/+2
Fix platform detection logic to work for Python 2 and 3
2021-06-12IntelPackage: use 'version_yearlike' in check for libfabrics RPATH. (#16700)Dominik Gresch1-1/+1
Use the 'version_yearlike' attribute instead of 'version' to check if the SPACK_COMPILER_EXTRA_RPATHS should be set to include the built-in 'libfabrics'. When using the bare 'version', the comparison is wrong when building with 'intel-parallel-studio', which has the version format '<edition>.YYYY.Nupdate', due to the leading '<edition>'.
2021-06-12Ensure all roots of an installed environment are marked explicit in db (#24277)Greg Becker2-0/+28
2021-06-11setup-env: allow users to skip module function setup (#24236)Adam J. Stewart1-3/+9
* setup-env: allow users to skip module function setup * Add documentation on SPACK_SKIP_MODULES
2021-06-11Display proper message when patch checksum doesn't match (#24229)iarspider1-1/+1
2021-06-08Pipelines: Fix default generated rebuild job script (#24185)Scott Wittenburg1-2/+1
2021-06-08ASP-based solver: permit to use virtual specs in environments (#24199)Massimiliano Culpo4-17/+50
Extracting specs for the result of a solve has been factored as a method into the asp.Result class. The method account for virtual specs being passed as initial requests.
2021-06-08ASP-based solver: reordered low priority optimization criteria (#24184)Massimiliano Culpo2-16/+25
Minimizing compiler mismatches in the DAG and preferring newer versions of packages are now higher priority than trying to use as many default values as possible in multi-valued variants.
2021-06-08macOS: add monterey as macOS version 12. (#24192)Todd Gamblin1-1/+2
2021-06-07Fix brittle unit-tests on providers (#24186)Massimiliano Culpo1-2/+0
These tests were broken by #24176
2021-06-07build_systems: Make autotools builds verbose (#24161)Michael Kuhn1-1/+4
This is also what our other build systems are doing.
2021-06-07Docs: fix missing backtick in Environments docs (#24109)Adam J. Stewart1-1/+1
2021-06-05Fix git_version on macOS (#24163)Adam J. Stewart1-2/+3
2021-06-04main, modules: fix module roots not being found (#24135)Michael Kuhn2-10/+5
Since the module roots were removed from the config file, `--print-shell-vars` cannot find the module roots anymore. Fix it by using the new `root_path` function. Moreover, the roots for lmod and modules seems to have been flipped by accident.
2021-06-04enable std c++14 (#24127)Joe Heaton1-0/+6
2021-06-04cmd/stage: print stage path (#24019)Michael Kuhn1-0/+3
This is a small quality of life improvement so that users can easily copy and paste the stage path after executing `spack stage spec`.
2021-06-04bugfix: modules relative to view use top-level view root, not implementation ↵Greg Becker3-4/+4
root (#24124)
2021-06-04Don't warn about missing source id for external packages (#24125)Adam J. Stewart1-2/+3
2021-06-04Speed-up version parsing and comparison (#22973)Tom Scogland2-52/+84
The VALID_VERSION regex didn't check that the version string was completely valid, only that a prefix of it was. This version ensures the entire string represents a valid version. This makes a few related changes. 1. Make the SEGMENT_REGEX identify *which* arm it matches by what groups are populated, including whether it's a string or int component or a separator all at once. 2. Use the updated regex to parse the input once with a findall rather than twice, once with findall and once with split, since the version components and separators can be distinguished by their group status. 3. Rather than "convert to int, on exception stay string," if the int group is set then convert to int, if not then construct an instance of the VersionStrComponent class 4. VersionStrComponent now implements all of the special string comparison logic as part of its __lt__ and __eq__ methods to deal with infinity versions and also overloads comparison with integers. 5. Version now uses direct tuple comparison since it has no per-element special logic outside the VersionStrComponent class. Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2021-06-03Pipelines: Fix generation when dep and pkg arch differ (#24089)Scott Wittenburg1-1/+1
2021-06-03Extend cuda conflicts to cray platform (#24057)Harmen Stoppels1-61/+52
The CUDA compiler conflicts are valid on Cray too, and likely on Darwin x86_64 with %gcc and %clang too, so drop platform=linux
2021-06-02Pipelines: pass relative artifact paths to child jobs (#24085)Scott Wittenburg4-34/+104
Passing absolute paths from pipeline generate job to downstream rebuild jobs causes problems when the CI_PROJECT_DIR is not the same for the generate and rebuild jobs. This has happened, for example, when gitlab checks out the project into a runner-specific directory and different runners are chosen for the generate and rebuild jobs.
2021-06-02ensure the staging dir exists for `spack stage -p <PATH>` (#23963)Danny McClanahan4-20/+43
* ensure that the stage root exists for `spack stage -p <PATH>` * add test to verify `spack stage -p <PATH>` works! * move out shared tmp staging path setup to a fixture to fix the test
2021-06-01Fix bug where cmake prefix path on the command line does not include ↵Harmen Stoppels2-18/+20
transitive deps (#23965)
2021-06-01Simplified the spack.util.gpg implementation (#23889)Massimiliano Culpo10-368/+304
* Simplified the spack.util.gpg implementation All the classes defined in this Python module, which were previously used to construct singleton instances, have been removed in favor of four global variables. These variables are initialized lazily, like before. The API of the module has been unchanged for the most part. A few tests have been modified to use the new global names.
2021-06-01Fix leading / during spack buildcache -f ... (#24028)Harmen Stoppels1-1/+1
For me the buildcache force overwrite option does not work. It tries to delete a file, but errors with a key error, apparently because the leading / has to be removed.
2021-05-31Log performance improvement (#23925)Tom Scogland1-22/+37
* 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-28adding support for export of private gpg key (#22557)Vanessasaurus5-12/+115
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>