summaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)AuthorFilesLines
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.
2015-11-26New, cleaner package repository structure.Todd Gamblin3-61/+134
Package repositories now look like this: top-level-dir/ repo.yaml packages/ libelf/ package.py mpich/ package.py ... This leaves room at the top level for additional metadata, source, per-repo configs, indexes, etc., and it makes it easy to see that something is a spack repo (just look for repo.yaml and packages).
2015-11-26resource directive : sketch of implementation + clang / llvm use caseMassimiliano Culpo4-14/+112
2015-11-25Updated documentation/naming in tally_plugin to reflect that the count of thePeter Scheibel2-3/+3
total number of tests run excludes skipped tests
2015-11-25XML output for unit tests is now enabled with an option (disabled by default)Peter Scheibel3-12/+22
2015-11-25Executable.__call__ original semantics were to avoid redirecting process outputPeter Scheibel1-1/+2
to the output stream if return_output was set. This branch undid that and this commit restores those semantics.
2015-11-25Rename spack.db -> spack.repoTodd Gamblin43-103/+103
Making distinction between install database and package repositories clearer.
2015-11-25Rename packages.py to repository.py, PackageFinder to RepoPath.Todd Gamblin9-128/+25
2015-11-24Use the xunit nose plugin to generate JUnit XML test results from Spack's unitPeter Scheibel2-4/+21
tests.
2015-11-24Update log_output to handle cases where sys.stdout/stderr streams do not havePeter Scheibel1-9/+25
an associated file descriptor (e.g. holds for nose tests where sys.stdout is assigned to a StringIO object)
2015-11-24It appears the same test object was returned multiple times for differentPeter Scheibel1-18/+6
unit tests, so tracking tests with sets wouldn't work unless I extracted the details relevant to the particular test. For now a simple count will work so using a set was unnecessary anyways.
2015-11-24Activation of Tally plugin to count tests. It doesn't appear to be actuallyPeter Scheibel2-5/+3
counting the individual unit tests correctly so I need to chase that down.
2015-11-23Use nose to run unit tests.Peter Scheibel4-20/+93
1. Adding a plugin to keep track of the total number of tests run as well as the number of tests with failures/errors. 2. Some nose plugins (including xunit which will be added in a future commit) assign stdout to a stream object that does not have a .fileno attribute. spack.util.executable.Executable now avoids passing stdout to subprocess (and always uses subprocess.PIPE) TODO: 1. Still need to figure out how to activate the plugin (as of now it is being ignored by nose). Newer versions of nose appear to make this simpler (e.g. the "addplugins" argument to nose.run) 2. Need to include new version of nose in order to use xunit
2015-11-23Merge branch 'scheibelp-features/externaldeps' into developTodd Gamblin42-44/+44
2015-11-23Merge pull request #160 from SteVwonder/stevwonder/developTodd Gamblin1-2/+2
Fixed -l flag for 'spack extensions'
2015-11-22Working PackageFinder / RepoTodd Gamblin9-160/+329
2015-11-20modified warning to reference spack cleanTom Scogland1-1/+1
clean --dist has been removed, command fixed to something that works.
2015-11-12Fix and move NamespaceTrie to spack.util.namingTodd Gamblin4-42/+154
- fix up routines in namespace trie. - trie can now hold intermediate elements. - trie now has a test case.
2015-11-12Small fix to prevent this test from interfering with others.Todd Gamblin1-17/+22
2015-11-12Merge branch 'develop' into mplegendre-multi_pkgsrc_rootsTodd Gamblin37-172/+2076
Conflicts: lib/spack/spack/__init__.py lib/spack/spack/directives.py lib/spack/spack/packages.py
2015-11-12Fixed -l flag for 'spack extensions'Stephen Herbein1-2/+2
2015-11-11Insert lib/spack/external into sys.path. This avoids cases where the systemPeter Scheibel42-44/+44
python install and lib/spack/external have the same library installed. This requires modifying the names of some modules in lib/spack/external in cases where both the system python and backported features of future python versions (i.e. after 2.6) are used (previously distinguished by "from external import X" and "import X").
2015-11-04Fix SPACK-93, SPACK-94, GitHub #150Todd Gamblin4-21/+18
- `remove_prefix` was modified to remove from the DB, but the package may not have been added to the DB yet when `remove_prefix` is called from `cleanup`. - Made `remove_prefix` a pure utility function (it just removes the prefix) - Added `installed_db.remove()` call only after the `remove_prefix` in `uninstall`.
2015-11-04Make architecture reflect OS *and* machine. Use Python's platform module.Todd Gamblin1-11/+8
2015-10-30Fixed typo : write_lock() -> write_transaction()Massimiliano Culpo3-3/+3
2015-10-29Merge Greg Becker's build database support into develop.Todd Gamblin22-139/+1641