summaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)AuthorFilesLines
2015-12-25Rework Spack config: keep user & site config in memory.Todd Gamblin10-268/+284
- User and site config are now kept separately in memory. - Merging is done on demand when client code requests the configuration. - Allows user/site config to be updated independently of each other by commands. - simplifies config logic (no more tracking merged files)
2015-12-24Fix #154 -- better log messages for do_patch()Todd Gamblin1-11/+29
2015-12-23Fix #85 and #228: errors fetching VCS packages from a mirror.Todd Gamblin2-16/+41
- Stage and fetcher were not being set up properly when fetching using a different fetch strategy than the default one for the package. - This is fixed but fetch/stage/mirror logic is still too complicated and long-term needs a rethink. - Spack will now print a warning when fetching a checksum-less tarball from a mirror -- users should be careful to use https or local filesystem mirrors for this.
2015-12-23Fix #235: Smarter web spidering -- use parsed links instead of reconstructing.Todd Gamblin4-82/+183
- Move `find_versions_of_archive` from spack.package to `spack.util.web`. - `spider` funciton now just uses the link parsing it already does to return links. We evaluate actual links found in the scraped pages instead of trying to reconstruct them naively. - Add `spack url-parse` command, which you can use to show how Spack interprets the name and version in a URL.
2015-12-22Fix bug in URL regex.Todd Gamblin1-1/+1
2015-12-22revert accidental print statements.Todd Gamblin1-5/+0
2015-12-22More consistent URL parsing when finding versions.Todd Gamblin2-4/+10
Versions found by wildcard URLs are different from versions found by parse_version, etc. The wildcards are constructed more haphazardly than the very specific URL patterns in url.py, so they can get things wrong. e.g., for this URL: https://software.lanl.gov/MeshTools/trac/attachment/wiki/WikiStart/mstk-2.25rc1.tgz We miss the 'rc' and only return 2.25r as the version if we ONLY use URL wildcards. Future: Maybe use the regexes from url.py to scrape web pages, and then compare them for similarity with the original URL, instead of trying to make a structured wildcard URL pattern? This might yield better results.
2015-12-22Merge pull request #261 from LLNL/features/prefer-versions-in-packagesTodd Gamblin1-2/+9
Add ability to prefer particular versions in packages.
2015-12-22Merge pull request #264 from nolta/typosTodd Gamblin1-1/+1
fix a few comment typos
2015-12-22Slightly more robust tmp directory search.Todd Gamblin1-4/+12
- remove getcwd() check (seems arbitrary -- if users set their TMPDIR to this why stop them?) - try a number of common locations and try per-user directories in them first.
2015-12-21fix a few comment typosMike Nolta1-1/+1
2015-12-21fix #249 (tmp spack-stage directories conflict)Mike Nolta1-2/+3
2015-12-21Add ability to prefer particular versions in packages.Todd Gamblin1-2/+9
- Adding `preferred=True` to a version directive will change its sort order in concretization. - This provides us a rudimentary ability to keep the Spack stack stable as new versions are added. - Having multiple stacks will come next, but this at least allows us to specify default versions of things instead of always taking the newest.
2015-12-21Merge pull request #208 from epfl-scitas/features/resource_directiveTodd Gamblin6-36/+220
resource directive : implementation + clang / llvm use case
2015-12-20Merge pull request #255 from LLNL/bugfix/254-libtool-compiler-name-issuesTodd Gamblin23-15/+77
Fix #254: libtool & distutils want certain compiler names.
2015-12-19Merge pull request #227 from trws/fetch-depsTodd Gamblin3-3/+24
fetch: add options to fetch missing or all deps
2015-12-19Merge pull request #230 from nolta/fix-env-mod-sys-typeTodd Gamblin1-2/+8
fix environment module path when $SYS_TYPE isn't defined
2015-12-19Fix stale code in python version test so that it actually works.Todd Gamblin2-5/+2
2015-12-19spack python: add -c optionMike Nolta1-2/+8
Allows passing program in as a string. Example: $ spack python -c 'print 2+3' 5 Also imports spack module by default into the environment.
2015-12-19Merge pull request #253 from LLNL/bugfix/244-uninstall-errorsGregory Lee5-13/+37
Bugfix/244 uninstall errors
2015-12-19Fix #254: libtool & distutils want certain compiler names.Todd Gamblin23-15/+77
This changes the compiler wrappers so that they are called by the same name as the wrapped compiler. Many builds make assumptions about compiler names, and we need the spack compilers to be recognizable so that build systems will get their flags right. This adds per-compiler subdirectories to lib/spack/spack/env directory that contain symlinks to cc for the C, C++, F77, and F90 compilers. The build now sets CC, CXX, F77, and F90 to point to these links instead of to the generically named cc, c++, f77, and f90 wrappers.
2015-12-18Fix #244: errors on uninstallTodd Gamblin2-9/+23
- Extension logic didn't take conditional deps into account. - Extension methods now check for whether the extnesion is in the extendee map AND whether the dependency is actually present in the spec yet.
2015-12-18minor formatting.Todd Gamblin1-0/+8
2015-12-18Fix import error.Todd Gamblin1-0/+1
2015-12-18Format to 80 char width.Todd Gamblin1-4/+5
2015-12-16Merge pull request #239 from LLNL/bugfix/238-db-specs-not-concreteGregory Lee3-4/+17
Fix #238: Database specs need to be concrete when read in as well.
2015-12-16minor comment tweak in modules.pyMike Nolta1-2/+2
2015-12-15Fix #238: Database specs need to be concrete when read in as well.Todd Gamblin3-4/+17
2015-12-14Fix #206: need to make deps AND root concrete when read in.Todd Gamblin1-2/+4
2015-12-11Make internal hash dep sort order match external one.Todd Gamblin1-1/+2
2015-12-11Fix #217: update spec_dag test for new `_cmp_key`.Todd Gamblin1-3/+5
2015-12-11Fix #217: Use MUCH faster hashing, reduce number of DAG copies.Todd Gamblin2-12/+18
This changes the hash algorithm so that it does much less object allocation and copying, and so that it is correct. The old version of `_cmp_key()` would call `sorted_deps`, which would call `flat_dependencies` to get a list of dependencies so that it could sort them in alphabetical order. This isn't necessary in the `_cmp_key()`, and in fact we want more DAG structure than that to be included in the `_cmp_key()`. The new version constructs a tuple without copying the Spec DAG, and the tuple contains hashes of sub-DAGs that are computed recursively in-place. This is way faster than the previous algorithm and reduces the numebr of copies significantly. It is also a correct DAG hash. Example timing and copy counts for the different hashing algorithms we've tried: Original (wrong) Spec hash: ``` 106,170 copies real 0m5.024s user 0m4.949s sys 0m0.104s ``` Spec hash using YAML `dag_hash()`: ``` 3,794 copies real 0m5.024s user 0m4.949s sys 0m0.104s New no-copy, no-YAML hash: ``` 3,594 copies real 0m2.543s user 0m2.435s sys 0m0.104s ``` So now we have a hash that is correct AND faster. The remaining ~3k copies happen mostly during concretization, and as all packages are initially loaded. I believe this is because Spack currently has to load all packages to figure out virtual dependency information; it could also be becasue there ar a lot of lookups of partial specs in concretize. I can investigate this further.
2015-12-11Fix #217: Make package cache use DAG hash instead of sorted deps.Todd Gamblin1-7/+8
- Gets rid of last vestige of old-style specs. - Uses new hashing for lookup
2015-12-10fix path resolution for mirror packages, especially with dependency fetchingTom Scogland2-1/+2
2015-12-10add dependency fetching to mirror creationTom Scogland2-2/+11
2015-12-10fetch: add options to fetch missing or all depsTom Scogland1-1/+12
Small additions to fetch to make it easier to fetch all files necessary for a build on a system without network connectivity.
2015-12-09clang : solve the issue with missing default include paths for OpenMP and libc++alalazo3-16/+23
resource : support for finer grained linking of resources
2015-12-09bugfix: doc build needed additional sys.path due to externals change.Todd Gamblin1-0/+1
2015-12-09Change github.com/scalability-llnl to github.com/llnl everywhere.Todd Gamblin139-144/+144
2015-12-04Added nose 1.3.7 source along with with the lgpl license (renamed from lgpl.txtPeter Scheibel49-0/+13764
to LICENSE)
2015-12-03mirror : deals correctly with variants that optionally enable resources (if ↵Massimiliano Culpo2-28/+72
they are archive URLs)
2015-12-02reource directive accepts 'basename' keywordMassimiliano Culpo3-3/+9
llvm : libc++ variant
2015-12-02resources : added missing check after fetchMassimiliano Culpo1-0/+1
2015-12-01resources : added error handling for destination keyword on resource directiveMassimiliano Culpo1-3/+17
2015-12-01resources : changed name of stage folderMassimiliano Culpo1-3/+2
2015-12-01resource : fetch strategy constructed from kwargs instead or hardcoded ↵Massimiliano Culpo2-3/+18
URLFetchStrategy
2015-11-28Add a cleaned up repo command.Todd Gamblin1-64/+75
2015-11-28Integrate namespace attribute into spec, spec DAG, spec YAML.Todd Gamblin6-35/+125
2015-11-27Fixed bug #42: problem with satisfies() for virtual dependencies.Todd Gamblin3-5/+24
- _cross_provider_maps() had suffered some bit rot (map returned was ill-formed but still worked for cases with one vdep) - ProviderIndex.satisfies() was only checking whether the result map was non-empty. It should check whether all common vdeps are *in* the result map, as that indicates there is *some* way to satisfy *all* of them. We were checking whether there was some way to satisfy *any one* of them, which is wrong. - Above would cause a problem when there is more than one vdep provider. - Added test that covers this case. - Added `constrained()` method to Spec. Analogous to `normalized()`: `constrain():constrained() :: normalize():normalized()`
2015-11-26Add tests for importing packages directly.Todd Gamblin1-2/+40
Added test for, e.g.: import spack.pkg.builtin.mock.mpich import spack.pkg.builtin.mock.mpich as mpich from spack.pkg.builtin.mock.mpich import Mpich Among others. These ensure that direct package imports work so that packages can be extended.