summaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)AuthorFilesLines
2022-03-20major.minor.micro.dev0 Spack version (#25267)Harmen Stoppels4-102/+91
When you install Spack from a tarball, it will always show an exact version for Spack itself, even when you don't download a tagged commit: ``` $ wget -q https://github.com/spack/spack/archive/refs/heads/develop.tar.gz $ tar -xf develop.tar.gz $ ./spack-develop/bin/spack --version 0.16.2 ``` This PR sets the Spack version to `0.18.0.dev0` on develop, following [PEP440](https://github.com/spack/spack/pull/25267#issuecomment-896340234) as suggested by Adam Stewart. ``` spack (fix/set-dev-version)$ spack --version 0.18.0.dev0 (git 0.17.1-1526-e270464ae0) spack (fix/set-dev-version)$ mv .git .git_ spack $ spack --version 0.18.0.dev0 ``` - [x] Update the release guide - [x] Add __version__ to spack's __init__.py - [x] Use PEP 440 canonical version strings - [x] Make spack --version output [actual version] (git version) Co-authored-by: Todd Gamblin <tgamblin@llnl.gov>
2022-03-20Enable GCS urls as valid (#29592)Doug Jacobsen3-1/+13
* Add tests to ensure google cloud storage urls work as mirrors This commit adds two tests to track that GCS buckets can work as mirrors, and can be parsed as valid URLs. Currently, gs:// format URLs are not correctly parsed. * Fix URL parsing for GCS buckets This commit adds GCS bucket URLs as valid URLs.
2022-03-19We were doing a check in a metaclass to ensure that Package classes weren't ↵Peter Scheibel1-1/+1
defining a function themselves; this check failed (erroneously) if that Package class subclassed another package class (because the check examined all superclasses and thought the definition we automatically add was an offender) (#29569)
2022-03-19Revert "Add command for reading a json-based DB description (#24894)" (#29603)Nils Vu10-665/+39
This reverts commit 531b1c5c3dcc9bc7bec27e223608aed477e94dbd.
2022-03-18allow ci reproduce to work when spack is cloned to a directory not named ↵Tom Scogland1-1/+1
spack (#29518)
2022-03-18R versions (#29258)Tom Scogland5-43/+129
* lower priority of package-provided urls This change favors urls found in a scraped page over those provided by the package from `url_for_version`. In most cases this doesn't matter, but R specifically returns known bad URLs in some cases, and the fallback path for a failed fetch uses `fetch_remote_versions` to find a substitute. This fixes that problem. fixes #29204 * consider what links actually exist in all cases Checksum was only actually scraping when called with no versions. It now always scrapes and then selects URLs from the set of URLs known to exist whenever possible. fixes #25831 * bow to the wrath of flake8 * test-fetch urls from package, prefer if successful * Update lib/spack/spack/package.py Co-authored-by: Seth R. Johnson <johnsonsr@ornl.gov> * reword as suggested * re-enable mypy specific ignore and ignore pyflakes * remove flake8 ignore from .flake8 * address review comments * address comments * add sneaky missing substitute I missed this one because we call substitute on a URL that doesn't contain a version component. I'm not sure how that's supposed to work, but apparently it's required by at least one mock package, so back in it goes. Co-authored-by: Seth R. Johnson <johnsonsr@ornl.gov>
2022-03-18Add command for reading a json-based DB description (#24894)Peter Scheibel10-39/+665
Adds `spack external read-cray-manifest`, which reads a json file that describes a set of package DAGs. The parsed results are stored directly in the database. A user can see these installed specs with `spack find` (like any installed spec). The easiest way to use them right now as dependencies is to run `spack spec ... ^/hash-of-external-package`. Changes include: * `spack external read-cray-manifest --file <path/to/file>` will add all specs described in the file to Spack's installation DB and will also install described compilers to the compilers configuration (the expected format of the file is described in this PR as well including examples of the file) * Database records now may include an "origin" (the command added in this PR registers the origin as "external-db"). In the future, it is assumed users may want to be able to treat installs registered with this command differently (e.g. they may want to uninstall all specs added with this command) * Hash properties are now always preserved when copying specs if the source spec is concrete * I don't think the hashes of installed-and-concrete specs should change and this was the easiest way to handle that * also specs that are concrete preserve their `.normal` property when copied (external specs may mention compilers that are not registered, and without this change they would fail in `normalize` when calling `validate_or_raise`) * it might be this should only be the case if the spec was installed - [x] Improve testing - [x] Specifically mark DB records added with this command (so that users can do something like "uninstall all packages added with `spack read-external-db`) * This is now possible with `spack uninstall --all --origin=external-db` (this will remove all specs added from manifest files) - [x] Strip variants that are listed in json entries but don't actually exist for the package Co-authored-by: Harmen Stoppels <harmenstoppels@gmail.com>
2022-03-18environment: Don't print 'updating view at' when no specs (#29536)Harmen Stoppels1-1/+2
2022-03-18Split the workflow section and remove outdated advices (#29344)Massimiliano Culpo7-1248/+287
This PR removes a few outdated sections from the "Basics" part of the documentation. It also makes a few topic under the environment section more prominent by removing an unneeded spack.yaml subsection and promoting everything under it.
2022-03-17Add deprecation warnings for activate/deactivate/view (#29430)Harmen Stoppels2-0/+8
2022-03-17Remove references to `features/windows-support` branch (#29565)Zack Galbreath1-1/+1
2022-03-17Windows Support: Testing Suite integrationJohn Parent91-995/+725
Broaden support for execution of the test suite on Windows. General bug and review fixups
2022-03-17Failed _write now track that the DB is inconsistentPeter Josef Scheibel1-0/+15
Consistency is restored on next transaction
2022-03-17"spack commands --update-completion"John Parent96-923/+558
2022-03-17Path handling (#28402)John W. Parent36-232/+493
Consolidate Spack's internal filepath logic to a select few places and refactor to consistent internal useage of os.path utilities. Creates a prefix, and a series of utilities in the path utility module that facilitate handling paths in a platform agnostic manner. Convert Windows paths to posix paths internally Prefer posixpath.join instead of os.path.join Updated util/ directory to account for Windows integration Co-authored-by: Stephen Crowell <stephen.crowell@khq.kitware.com> Co-authored-by: John Parent <john.parent@kitware.com> Module template format for windows (#23041)
2022-03-17Expand external find for Windows (#27588)John Parent50-423/+504
* Incorporate new search location * Add external user option * proper doc string * Explicit commands in getting started * raise during chgrp on Win recover installer changes Notate admin privleges Windows phase install hooks Find external python and install ninja (#23496) Allow external find python to find windows python and spack install ninja Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com> Co-authored-by: Betsy McPhail <betsy.mcphail@kitware.com>
2022-03-17Update tests support for WindowsBetsy McPhail124-193/+1918
Fixup common tests * Remove requirement for Python 2.6 * Skip new failing test Windows: Update url util to handle Windows paths (#27959) * update url util to handle windows paths * Update tests to handle fixed url handling * canonicalize path only when the path type matches the host platform * Skip some url tests on Windows Co-authored-by: Omar Padron <omar.padron@kitware.com> Use threading.TIMEOUT_MAX when available (#24246) This value was introduced in Python 3.2. Specifying a timeout greater than this value will raise an OverflowError. Co-authored-by: Lou Lawrence <lou.lawrence@kitware.com> Co-authored-by: John Parent <john.parent@kitware.com> Co-authored-by: Betsy McPhail <betsy.mcphail@kitware.com>
2022-03-17Add Windows to platform and target changesJohn Parent12-23/+47
Add compiler hint to the root spec for Windows Reporters on Windows (#26038) Reporters use Jinja2 as the templating engine, and Jinja2 indexes templates by Unix separators, even on Windows, so search using Unix paths on all systems. Support patching on win via git (#25871) Handle GRP on windows
2022-03-17Spack on Windows package portsJohn Parent15-58/+93
CMake - Windows Bootstrap (#25825) Remove hardcoded cmake compiler (#26410) Revert breaking cmake changes Ensure no autotools on Windows Perl on Windows (#26612) Python source build windows (#26313) Reconfigure sysconf for Windows Python2.6 compatibility Fxixup new sbang tests for windows Ruby support (#28287) Add NASM support (#28319) Add mock Ninja package for testing
2022-03-17Relocate spack_cmd and scripts from installer to root bin (#24651)John W. Parent6-374/+52
Relocate spack_cmd and scripts from installer to root bin Refactor documentation, installer, and launcher to facilitate that change
2022-03-17Use Python's zipfile, if available (#24556)Betsy McPhail1-3/+21
* Style fixes * Use Python's zipfile, if available The compression libs are optional in Python. Rely on python as a first attempt then fall back to `unzip`
2022-03-17Windows: VS and CMake supportBetsy McPhail3-23/+29
Fix: Building packages with CMake is broken (#24241) vsInstallPaths needs to be renamed vs_install_paths (#24297)
2022-03-17Packaging of netlib-lapack for windows (#24993)Jared Popelar7-103/+190
MSVC's internal CMake and Ninja now detected by spack external find and added to packages.yaml Saving progress on packaging zlib for Windows Fixing the shared CMake flag * Loading Intel's ifx Fortran compiler into MSVC; if there are multiple versions of MSVC installed and detected, ifx will only be placed into the first block written in compilers.yaml. The version number of ifx can be detected using MSVC's version flag (instead of /QV) by using ignore_version_errors. This commit also provides support for detection of Intel compilers in their own compiler block by adding ifx.exe to the fc/f77_name blocks inside intel.py * Giving CMake a Fortran compiler argument * Adding patch file for removing duplicated mangling header for versions 3.9.1 and older; static and shared now successfully building on Windows * Have netlib-lapack depend on ninja@1.10 Co-authored-by: John R. Cary <cary@txcorp.com> Co-authored-by: Jared Popelar <jpopelar@txcorp.com> Making a default config.yaml for Windows Small path length for build_stage Provide more prerequisite details, mention default config.yaml Killing an unnecessary setvars call Replacing some lost changes, proofreading, updating windows-supported package list Co-authored-by: John Parent <john.parent@kitware.com>
2022-03-17Windows: Create installer and environmentlou.lawrence@kitware.com18-11/+987
* Add 'make-installer' command for Windows * Add '--bat' arg to env activate, env deactivate and unload commands * An equivalent script to setup-env on linux: spack_cmd.bat. This script has a wrapper to evaluate cd, load/unload, env activate/deactivate.(#21734) * Add spacktivate and config editor (#22049) * spack_cmd: will find python and spack on its own. It preferentially tries to use python on your PATH (#22414) * Ignore Windows python installer if found (#23134) * Bundle git in windows installer (#23597) * Add Windows section to Getting Started document (#23131), (#23295), (#24240) Co-authored-by: Stephen Crowell <stephen.crowell@kitware.com> Co-authored-by: lou.lawrence@kitware.com <lou.lawrence@kitware.com> Co-authored-by: Betsy McPhail <betsy.mcphail@kitware.com> Co-authored-by: Jared Popelar <jpopelar@txcorp.com> Co-authored-by: Ben Cowan <benc@txcorp.com> Update Installer CI Co-authored-by: John Parent <john.parent@kitware.com>
2022-03-17MSVC Compiler Find and vcvars env integration (#22856)Betsy McPhail3-2/+86
Made the vcvars batch script location a member variable of the msvc compiler subclass, initialized from the compiler executable path. Added a setup_custom_environment() method to the msvc subclass that sources the vcvars script, dumps the environment, and copies the relevant environment variables to the Spack environment. Added class variables to the Windows OS and MSVC compiler subclasses to enable finding the compiler executables and determining their versions.
2022-03-17use pytest stdout/err capture (#22584)loulawrence3-44/+59
* On windows, write to StringIO without redirection in test cases to avoid conflicting with logger
2022-03-17Features/windows install (#22204)Ben Cowan4-25/+50
* Fixed path and uid issues. * Added needed import statement; kluged .exe extension. * Got package to build. Some manual intervention necessary, including sourcing the MSVC setup script and having certain configuration parameters. * Removed CMake executable suffix hack.
2022-03-17Allow 'spack external find' to find executables on the system path (#22091)Betsy McPhail5-51/+247
Co-authored-by: Lou Lawrence <lou.lawrence@kitware.com>
2022-03-17Windows: Symlink supportBetsy McPhail20-44/+224
To provide Windows-compatible functionality, spack code should use llnl.util.symlink instead of os.symlink. On non-Windows platforms and on Windows where supported, os.symlink will still be used. Use junctions when symlinks aren't supported on Windows (#22583) Support islink for junctions (#24182) Windows: Update llnl/util/filesystem * Use '/' as path separator on Windows. * Recognizing that Windows paths start with '<Letter>:/' instead of '/' Co-authored-by: lou.lawrence@kitware.com <lou.lawrence@kitware.com> Co-authored-by: John Parent <john.parent@kitware.com>
2022-03-17Create rename utility functionBetsy McPhail11-23/+45
os.rename() fails on Windows if file already exists. Create getuid utility function (#21736) On Windows, replace os.getuid with ctypes.windll.shell32.IsUserAnAdmin(). Tests: Use getuid util function Co-authored-by: lou.lawrence@kitware.com <lou.lawrence@kitware.com> Co-authored-by: Betsy McPhail <betsy.mcphail@kitware.com>
2022-03-17Workarounds for install errors on Windows (#21890)Betsy McPhail3-22/+32
1. Forwarding sys.stdin, e.g. use input_multiprocess_fd, gives an error on Windows. Skipping for now 3. subprocess_context needs to serialize for Windows, like it does for Mac. Co-authored-by: lou.lawrence@kitware.com <lou.lawrence@kitware.com> Co-authored-by: John Parent <john.parent@kitware.com>
2022-03-17Adding basic Windows features (#21259)Ben Cowan6-3/+138
* Snapshot of some MSVC infrastructure added during experiments a while ago. Rebasing from spack/develop. * Added platform and OS definitions for Windows. * Updated Windows platform file to conform to new archspec use. * Added Windows as a platform; introduced some debugging code. * Added type annotations. * Fixed copyright. * Removed print statements. * Ensure `spack arch` returns correctly on Windows (#21428) * Correctly identify windows as 'windows-Windows10-AMD64'
2022-03-17PackageViewMixin: fix symlinks conflict issue (#29515)Harmen Stoppels1-2/+2
`stat`'ing a file in the dst dir is the wrong thing to do, you should `lstat` to capture broken symlinks.
2022-03-15optimize instantiation and comparison of versions (#29429)Tom Scogland1-4/+14
Re-work the checks and comparisons around commit versions, when no commit version is involved the overhead is now in the noise, where one is the overhead is now constant rather than linear.
2022-03-14mpich: fix the detection of the package (#29284)Sergey Kosukhin1-2/+2
2022-03-14compiler.py: early return in compiler_environment when no modules (#29441)Harmen Stoppels1-0/+5
2022-03-13Remove "setup_environment" and "setup_dependent_environment" (#29463)Massimiliano Culpo1-31/+4
fixes #29446 The new setup_*_environment functions have been falling back to calling the old functions and warn the user since #11115. This commit removes the fallback behavior and any use of: - setup_environment - setup_dependent_environment in the codebase
2022-03-11module_cmd.py: use posix awk; fix stderr redirection (#29440)Harmen Stoppels2-62/+34
Emulates `env -0` in a posix compliant way, avoiding a slow python process, speeds up setting up the build env when modules should load.
2022-03-10intel-mkl: load compiler modules when querying compiler (#29439)Harmen Stoppels2-14/+16
2022-03-10Allow for multiple dependencies/dependents from the same package (#28673)Massimiliano Culpo13-320/+774
Change the internal representation of `Spec` to allow for multiple dependencies or dependents stemming from the same package. This change permits to represent cases which are frequent in cross compiled environments or to bootstrap compilers. Modifications: - [x] Substitute `DependencyMap` with `_EdgeMap`. The main differences are that the latter does not support direct item assignment and can be modified only through its API. It also provides a `select_by` method to query items. - [x] Reworked a few public APIs of `Spec` to get list of dependencies or related edges. - [x] Added unit tests to prevent regression on #11983 and prove the synthetic construction of specs with multiple deps from the same package. Since #22845 went in first, this PR reuses that format and thus it should not change hashes. The same package may be present multiple times in the list of dependencies with different associated specs (each with its own hash).
2022-03-09environment.py: allow link:run (#29336)Harmen Stoppels6-98/+159
* environment.py: allow link:run Some users want minimal views, excluding run-type dependencies, since those type of dependencies are covered by rpaths and the symlinked libraries in the view aren't used anyways. With this change, an environment like this: ``` spack: specs: ['py-flake8'] view: default: root: view link: run ``` includes python packages and python, but no link type deps of python.
2022-03-09Hide package repository count when redirecting stdout (#29402)百地 希留耶1-3/+5
2022-03-09Fix tab completion erroring with `spack unit-test` (#29405)百地 希留耶1-1/+1
2022-03-09ci.py: fix utf-8 issue with git log output (#29419)Harmen Stoppels1-2/+4
2022-03-08version.py: set is_commit in constructor (#29369)Harmen Stoppels1-10/+3
Speeds up comparison on `Version` by ~2.5x, e.g. ```python In [1]: v = spack.version.Version('1.0.0'); w = spack.version.Version('1.0.2') In [2]: %timeit v < w 1.47 µs ± 5.59 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) 535 ns ± 1.75 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) ```
2022-03-05find: deprecate `spack find -bootstrap` for `spack -bootstrap find` (#29152)Todd Gamblin2-0/+11
Since adding the `spack --bootstrap` argument we don't need `spack find --bootstrap` anymore. Deprecate it.
2022-03-04Add a testHarmen Stoppels1-0/+8
2022-03-04VersionRange.satisfies should test non-empty intersectionHarmen Stoppels1-25/+13
2022-03-04Fix importing Spack packages as Python modules (#29221)Massimiliano Culpo9-53/+82
fixes #29203 This PR fixes a subtle bug we have when importing Spack packages as Python modules that can lead to multiple module objects being created for the same package. It also fixes all the places in unit-tests where "relying" on the old bug was crucial to have a new "clean" state of the package class.
2022-03-03Revert GCS fetch strategy, to remove s3 interface (#28736)Doug Jacobsen1-7/+1
This commit reverts the GCS fetch strategy to before commit: d7596125231e800ca41c60e379be2b8abb47d20d The previous commit added some s3 syntax to handle connections, but added them into the GCS fetch strategy in a way that prevents GCS from working anymore.