summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2017-09-30Documentation for dependency patching.Todd Gamblin3-23/+189
2017-09-30Patches are hashed with specs, and can be associated with dependencies.Todd Gamblin26-197/+754
- A package can depend on a special patched version of its dependencies. - The `Spec` YAML (and therefore the hash) now includes the sha256 of the patch in the `Spec` YAML, which changes its hash. - The special patched version will be built separately from a "vanilla" version of the same package. - This allows packages to maintain patches on their dependencies without affecting either the dependency package or its dependents. This could previously be accomplished with special variants, but having to add variants means the hash of the dependency changes frequently when it really doesn't need to. This commit allows the hash to change *just* for dependencies that need patches. - Patching dependencies shouldn't be the common case, but some packages (qmcpack, hpctoolkit, openspeedshop) do this kind of thing and it makes the code structure mirror maintenance responsibilities. - Note that this commit means that adding or changing a patch on a package will change its hash. This is probably what *should* happen, but we haven't done it so far. - Only applies to `patch()` directives; `package.py` files (and their `patch()` functions) are not hashed, but we'd like to do that in the future. - The interface looks like this: `depends_on()` can optionally take a patch directive or a list of them: depends_on(<spec>, patches=patch(..., when=<cond>), when=<cond>) # or depends_on(<spec>, patches=[patch(..., when=<cond>), patch(..., when=<cond>)], when=<cond>) - Previously, the `patch()` directive only took an `md5` parameter. Now it only takes a `sha256` parameter. We restrict this because we want to be consistent about which hash is used in the `Spec`. - A side effect of hashing patches is that *compressed* patches fetched from URLs now need *two* checksums: one for the downloaded archive and one for the content of the patch itself. Patches fetched uncompressed only need a checksum for the patch. Rationale: - we include the content of the *patch* in the spec hash, as that is the checksum we can do consistently for patches included in Spack's source and patches fetched remotely, both compressed and uncompressed. - we *still* need the patch of the downloaded archive, because we want to verify the download *before* handing it off to tar, unzip, or another decompressor. Not doing so is a security risk and leaves users exposed to any arbitrary code execution vulnerabilities in compression tools.
2017-09-30add spack flake8 exception for long checksumsTodd Gamblin1-2/+2
2017-09-30Clean up exceptions and function names in directives.Todd Gamblin1-41/+23
- Functions returned by directives were all called `_execute`, which made reading stack traces hard because you couldn't tell what directive a frame came from. - renamed them all to `_execute_<directive>` - Exceptions in directives were only really used in one or two places -- get rid of the boilerplate init functions and let the callsite specify the message.
2017-09-30Consolidate some web-spidering commands in spack.util.webTodd Gamblin6-116/+118
- move `spack.cmd.checksum.get_checksums` to `spack.util.web.spider_checksums` - move `spack.error.NoNetworkError` to `spack.util.web.NoNetworkError` since it is only used there.
2017-09-30Disable duplicate cross-reference warnings in Sphinx.Todd Gamblin1-0/+14
2017-09-30Refactor Package dependency metadataTodd Gamblin14-123/+217
- Previously, dependencies and dependency_types were stored as separate dicts on Package. - This means a package can only depend on another in one specific way, which is usually but not always true. - Prior code unioned dependency types statically across dependencies on the same package. - New code stores dependency relationships as their own object, with a spec constraint and a set of dependency types per relationship. - Dependency types are now more precise - There is now room to add more information to dependency relationships. - New Dependency class lives in dependency.py, along with deptype definitions that used to live in spack.spec. Move deptype definitions to spack.dependency
2017-09-30Patch.apply() shouldn't affect working directory of caller.Todd Gamblin1-11/+12
2017-09-30Only print "no patches needed" if there were no patches.Todd Gamblin1-1/+5
2017-09-29Add test deptype (#5132)scheibelp10-13/+182
* Add '--test=all' and '--test=root' options to test either the root or the root and all dependencies. * add a test dependency type that is only used when --test is enabled. * test dependencies are not added to the spec, but they are provided in the test environment.
2017-09-29r-limma: added version 3.32.7 (#5558)Yifan Zhu1-0/+2
2017-09-29Masa requires python if +python. (#5547)Jon Rood1-0/+1
2017-09-29r-a4classif: new package. (#5557)lingnanyuan1-0/+43
2017-09-29r-yaml: Correct url (#5550)lingnanyuan1-1/+1
* pr-quantities: add version & py-numpy conflict (#5307) * r-yaml: Correct url.
2017-09-29r-downloader: created new package (#5556)Yifan Zhu1-0/+42
2017-09-29r-mlinterfaces: new package. (#5555)lingnanyuan1-0/+51
* pr-quantities: add version & py-numpy conflict (#5307) * r-mlinterfaces: Create new package.
2017-09-29r-biomart: created new package (#5554)Yifan Zhu1-0/+49
2017-09-29r-threejs: Correct url. (#5553)lingnanyuan1-1/+1
* pr-quantities: add version & py-numpy conflict (#5307) * r-threejs: Correct url.
2017-09-29Adding new Trilinos version and updating Nalu to utilize it. (#5552)Jon Rood2-3/+6
2017-09-29r-hwriter: new package. (#5549)lingnanyuan1-0/+35
* pr-quantities: add version & py-numpy conflict (#5307) * r-hwriter: Create new package.
2017-09-29r-gbm: new package. (#5548)lingnanyuan1-0/+37
* pr-quantities: add version & py-numpy conflict (#5307) * r-gbm: Create new package.
2017-09-29r-htmlwidgets: Update version to 0.8. (#5551)lingnanyuan1-0/+2
2017-09-29r-a4preproc: Create new package. (#5499)lingnanyuan1-0/+36
2017-09-29modules: specialized configure_options for external packages (#5543)Massimiliano Culpo2-2/+20
closes #5473 Prior to this PR we were not exiting early for external packages, which caused the `configure_options` property of the contexts to fail with e.g. a key error because the DAG gets truncated for them. More importantly Spack configure options don't make any sense for externals. Now we exit early, and leave a message in the module file clarifying that this package has been installed outside of Spack.
2017-09-28r-dbi: updated to version 0.7 (#5537)Yifan Zhu1-3/+4
* pr-quantities: add version & py-numpy conflict (#5307) * r-dbi: Create new package. * r-dbi: modified according to flake8 * Update package.py * Update package.py
2017-09-28r-gdata: Update version to 2.18.0 (#5495)lingnanyuan1-1/+3
2017-09-28fixing tag name for development branch (#5496)Mark C. Miller1-1/+1
2017-09-28r-biostrings: created new package (#5498)Yifan Zhu1-0/+41
2017-09-28r-gcrma: created new package (#5500)Yifan Zhu1-0/+42
2017-09-28r-yaqcaffy: created new package (#5538)Yifan Zhu1-0/+38
2017-09-28Add metaphysicl package (#5539)Jon Rood1-0/+38
* Adding package Metaphysicl. * Removing list_url from metaphysical package.
2017-09-28Adding masa package. (#5541)Jon Rood1-0/+65
2017-09-28r-rlang: created new package (#5535)Yifan Zhu1-0/+36
2017-09-28tycho2: initial commit (#5196)Christoph Junghans1-0/+56
2017-09-28Restrict openfoam to using openmpi+thread_multiple (partially resolves ↵Mark Olesen1-0/+4
#5428) (#5479) - latest version requires openmpi+thread_multiple for collated output.
2017-09-28snappy: Build shared library by default (#5534)Michael Kuhn1-0/+14
2017-09-28r-ggvis: Update version to 0.4.3 (#5532)lingnanyuan1-1/+3
* pr-quantities: add version & py-numpy conflict (#5307) * r-ggvis: Update version to 0.4.3 * Update package.py * Update package.py
2017-09-28r-dplyr: Update version to 0.7.3 (#5531)lingnanyuan1-1/+3
* pr-quantities: add version & py-numpy conflict (#5307) * r-dplyr: Update version to 0.7.3 * Update package.py * Update package.py
2017-09-28ncl: Add tcsh dependency (#5195)Michael Kuhn1-0/+19
All ncl scripts hardcode /bin/csh, so fix them up.
2017-09-28tcsh: New package (#5194)Michael Kuhn1-0/+65
The patches are taken from the Fedora package.
2017-09-28r-annaffy: new package. (#5414)lingnanyuan3-0/+116
* r-annaffy: Create New Package. * r-annaffy: Create new package. * r-go-db: Create new package. * r-kegg-db: Create new package. * r-annaffy: Correct indentation. * r-go-db: Correct indentation. * r-kegg-db: Correct format. * r-kegg-db: Correct format. * r-go-db: Correct format. * r-annaffy: Correct format.
2017-09-28fastq-screen: new package (#5431)Audrey Thoma6-0/+228
* fastq-screen: new package * fixing descriptions and previously made packages' old copyright date * added wrong perl package after change
2017-09-28Added hacckernels package (#5533)Brian Homerding1-0/+46
2017-09-28r-r6: Update version to 2.2.2 (#5529)lingnanyuan1-1/+3
* pr-quantities: add version & py-numpy conflict (#5307) * r-r6: Update version to 2.2.2
2017-09-28r-shiny: update version to 1.0.5 (#5530)lingnanyuan1-1/+3
* pr-quantities: add version & py-numpy conflict (#5307) * r-shiny: Update version to 1.0.5
2017-09-28r-htmltools: Update version to 0.3.6 (#5528)lingnanyuan1-1/+3
* pr-quantities: add version & py-numpy conflict (#5307) * r-htmltools: Update version to 0.3.6
2017-09-28r-httpuv: Update version to 1.3.5 (#5527)lingnanyuan1-1/+3
* pr-quantities: add version & py-numpy conflict (#5307) * r-httpuv: Update version to 1.3.5
2017-09-28r-rcpp: Update version to 0.12.13 (#5526)lingnanyuan1-1/+3
* pr-quantities: add version & py-numpy conflict (#5307) * r-rcpp: Update version to 0.12.13 * r-rcpp: Correct url.
2017-09-28Provide a new Perl package 'cloc'. (#5525)Kelly (KT) Thompson1-0/+50
+ Count, or compute differences of, physical lines of source code in the given files (may be archives such as compressed tarballs or zip files) and/or recursively below the given directories.
2017-09-28r-jsonlite: Update version to 1.5 (#5524)lingnanyuan1-1/+3
* pr-quantities: add version & py-numpy conflict (#5307) * r-jsonlite: Update version to 1.5