summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2021-01-04concretizer: simplify handling of virtual version constraintsTodd Gamblin2-18/+29
Previously, the concretizer handled version constraints by comparing all pairs of constraints and ensuring they satisfied each other. This led to INCONSISTENT ressults from clingo, due to ambiguous semantics like: version_constraint_satisfies("mpi", ":1", ":3") version_constraint_satisfies("mpi", ":3", ":1") To get around this, we introduce possible (fake) versions for virtuals, based on their constraints. Essentially, we add any Versions, VersionRange endpoints, and all such Versions and endpoints from VersionLists to the constraint. Virtuals will have one of these synthetic versions "picked" by the solver. This also allows us to remove a special case from handling of `version_satisfies/3` -- virtuals now work just like regular packages.
2021-01-04concretizer: remove rule generation code from concretizerTodd Gamblin1-70/+1
Our program only generates facts now, so remove all unused code related to generating cardinality constraints and rules.
2021-01-04concretizer: convert virtuals to facts; move all rules to `concretize.lp`Todd Gamblin2-116/+164
This converts the virtual handling in the new concretizer from already-ground rules to facts. This is the last thing that needs to be refactored, and it converts the entire concretizer to just use facts. The previous way of handling virtuals hinged on rules involving `single_provider_for` facts that were tied to the virtual and a version range. The new method uses the condition pattern we've been using for dependencies, externals, and conflicts. To handle virtuals as conditions, we impose constraints on "fake" virtual specs in the logic program. i.e., `version_satisfies("mpi", "2.0:", "2.0")` is legal whereas before we wouldn't have seen something like this. Currently, constriants are only handled on versions -- we don't handle variants or anything else yet, but they key change here is that we *could*. For a long time, virtual handling in Spack has only dealt with versions, and we'd like to be able to handle variants as well. We could easily add an integrity constraint to handle variants like the one we use for versions. One issue with the implementation here is that virtual packages don't actually declare possible versions like regular packages do. To get around that, we implement an integrity constraint like this: :- virtual_node(Virtual), version_satisfies(Virtual, V1), version_satisfies(Virtual, V2), not version_constraint_satisfies(Virtual, V1, V2). This requires us to compare every version constraint to every other, both in program generation and within the concretizer -- so there's a potentially quadratic evaluation time on virtual constraints because we don't have a real version to "anchor" things to. We just say that all the constraints need to agree for the virtual constraint to hold. We can investigate adding synthetic versions for virtuals in the future, to speed this up.
2021-01-04concretizer: consolidate handling of virtuals into spec_clausesTodd Gamblin1-26/+20
2021-01-04concretizer: make _condtion_id_counter an iteratorTodd Gamblin1-18/+18
2021-01-04concretizer: more detailed section headers in concretize.lpTodd Gamblin1-51/+69
2021-01-04r-codetools: Update package (#20626)Rémi Lacroix1-1/+2
2021-01-04libunwind: add version 1.5.0 (#20632)Mark W. Krentel1-8/+6
Add version 1.5.0, remove 1.4-rc1 (use 1.4.0) and 1.5-rc1 (use 1.5.0).
2021-01-04Update libnetworkit, py-networkit to 8.0 (#20478)Fabian Brandt2-0/+6
2021-01-04fftw: bump to 3.3.9 (#20634)yellowhat1-0/+1
2021-01-04ci: fix issue with latest sphinx (#20661)Massimiliano Culpo2-1/+17
2021-01-04Add procenv (#20121)Dave Love2-0/+63
* Add procenv * procenv: Only buildrequire check * procenv: Patch for gcc 10 * procenv: Add omitted patch * Indent doc string
2021-01-04libthai: new package at v0.1.28 (#19916)darmac1-0/+23
2021-01-04Bumpup version for rocm 4.0.0 release (#20640)Sreenivasa Murthy Kolam10-19/+39
2021-01-04bumpup version for rocm stage1 recipes for rocm-4.0.0 release (#20635)Sreenivasa Murthy Kolam11-20/+41
2021-01-04Libnsl: added v1.3.0 and v1.1.0. (#20645)Rémi Lacroix1-1/+4
2021-01-04Plumed: added v2.7.0. (#20646)Rémi Lacroix1-0/+1
2021-01-04openPMD-api: 0.13.0 (#20648)Axel Huebl1-16/+12
Add the latest release of openPMD-api. Remove a selection of unsupported, pre-beta releases.
2021-01-04exciting: fix build on aarch64 (#20505)Tomoyasu Nojiri2-0/+15
2021-01-04bugfix: infinite loop when building a set from incomplete specs (#20649)Todd Gamblin1-1/+6
This code in `SpecBuilder.build_specs()` introduced in #20203, can loop seemingly interminably for very large specs: ```python set([spec.root for spec in self._specs.values()]) ``` It's deceptive, because it seems like there must be an issue with `spec.root`, but that works fine. It's building the set afterwards that takes forever, at least on `r-rminer`. Currently if you try running `spack solve r-rminer`, it loops infinitely and spins up your fan. The issue (I think) is that the spec is not yet complete when this is run, and something is going wrong when constructing and comparing so many values produced by `_cmp_key()`. We can investigate the efficiency of `_cmp_key()` separately, but for now, the fix is: ```python roots = [spec.root for spec in self._specs.values()] roots = dict((id(r), r) for r in roots) ``` We know the specs in `self._specs` are distinct (they just came out of the solver), so we can just use their `id()` to unique them here. This gets rid of the infinite loop.
2021-01-04fdupes: Add pcre2 depend (#20466)Tomoyasu Nojiri1-0/+1
* fdupes: Add pcre2 depend * fdupes: Fix depend for pcre2
2021-01-03Add new package: xfsdump (#19914)darmac1-0/+45
* Add new package: xfsdump * fix Description and Homepage
2021-01-03Add new package: py-holland (#19924)darmac1-0/+23
* Add new package: py-holland * rename py-holland to py-holland-backup * fix dependencies
2021-01-02bump py-h5py (#20482)Sajid Ali1-6/+22
* rebase and fix merge conflict * address reviewer comments * rework dependency handling as per reviewer comments * incorporate reviewer feedback * incorporate reviewer feedback * fix phases * address reviewer comments * minor
2021-01-02copyrights: update all files with license headers for 2021Todd Gamblin5834-5835/+5853
- [x] add `concretize.lp`, `spack.yaml`, etc. to licensed files - [x] update all licensed files to say 2013-2021 using `spack license update-copyright-year` - [x] appease mypy with some additions to package.py that needed for oneapi.py
2021-01-02commands: add `spack license update-copyright-year`Todd Gamblin3-20/+65
This adds a new subcommand to `spack license` that automatically updates the copyright year in files that should have a license header. - [x] add `spack license update-copyright-year` command - [x] add test
2020-12-31linguist: update .gitattributes for better linguist parsing (#20639)Todd Gamblin1-0/+2
This adds two lines to `.gitattributes`: - [x] exclude vendored code from GitHub's language calculation - [x] recognize `.lp` files as Prolog (closest language to ASP that linguist supports) It looks like there have been two attempts (https://github.com/github/linguist/issues/3867, https://github.com/github/linguist/issues/4860) to add ASP as a language to Linguist, but it's not widespread enough to be standard yet (or at least the people who submitted the PRs haven't been able to show enough stats to prove it). We'll settle for calling ASP "Prolog" for now as that'll get us some syntax highlighting for `concretize.lp`.
2020-12-30hdf-eos5: new package (HDF for Earth Observing Sytem using hdf v5) (#20274)Tom Payerle2-0/+130
* hdf-eos5: new package (HDF for Earth Observing Sytem using hdf v5) * hdf-eos5: flake8 fixes * hdf-eos5: trying to fix flake8 errors * hdf-eos5: flake8 fix * hdf-eos5: Fix to support Fortran codes The -Df2cFortran compilation flag needed to support Fortran
2020-12-30hdf-eos2: new package (HDF for Earth Observing System using hdf5) (#20275)Tom Payerle2-0/+126
* hdf-eos2: new package (HDF for Earth Observing System using hdf5) * hdf-eos2: flake8 fixes * hdf-eos2: fix to support Fortran Need the compilation flag -Df2cFortran to allow support for Fortran codes
2020-12-30extends: add type kwarg (#20045)Adam J. Stewart10-21/+8
* extends: add type kwarg * Flake8 fix
2020-12-30nalu-wind: add variant to build wind-utils (#20587)eugeneswalker1-1/+9
2020-12-30Use system libuuid on macOS (#20608)Adam J. Stewart3-8/+55
2020-12-29concretizer: generate facts for externalsMassimiliano Culpo3-41/+42
Generate only facts for external specs. Substitute the use of already grounded rules with non-grounded rules in concretize.lp
2020-12-29PythonPackage: url -> pypi (#20610)Adam J. Stewart993-1130/+995
* Convert all `url` attributes in `PythonPackage`s to `pypi` attributes * add `pypi =` to flake8 exceptions
2020-12-29Introduce virtual provider uuid (#18322)Michael Kuhn36-34/+94
libuuid is currently contained in util-linux, libuuid and uuid. This change introduces a new virtual provider `uuid` and renames the existing `uuid` package to `ossp-uuid`. util-linux's libuuid is provided in the form of a separate package util-linux-uuid to make sure that packages depending on uuid and util-linux can use a separate uuid implementation, which the concretizer does not allow if libuuid is contained in util-linux.
2020-12-29GDB: Better Python debugging support (#20486)Adam J. Stewart2-16/+39
* GDB: Better Python debugging support * Auto-load safe path * Use gdbinit instead
2020-12-29py-geoplot: add new package at v0.4.1 (#20603)Adam J. Stewart1-0/+31
2020-12-29OpenVSLAM: add new package (#20389)Adam J. Stewart1-0/+33
2020-12-29py-contextily: add new package at v1.0.1 (#20602)Adam J. Stewart1-0/+27
2020-12-29automake: fix shebang substitution for v1.16.3 and later (#20579)Yang Zongze1-1/+6
2020-12-29py-geopy: add new package at v2.1.0 (#20601)Adam J. Stewart1-0/+21
2020-12-29PythonPackage: add pypi attribute to infer homepage/url/list_url (#17587)Adam J. Stewart9-66/+122
2020-12-29squashfs: fix build with GCC 10 (#20592)John Wohlbier2-0/+18
2020-12-29Fix deptypes for some geospatial Python packages (#20593)Adam J. Stewart3-10/+10
2020-12-29py-pygeos: add new package at v0.8 (#20594)Adam J. Stewart1-0/+26
2020-12-29fsl: updated package, added v6.0.4 (#20201)Glenn Johnson8-32/+411
- added several patches - added some missing dependencies - remove unneeded dependencies - add CUDA support - disable queue support, which was limited, and broken anyway - move package text that was specific to the package to a comment, so it does not show up the environment module - set conflicts for cuda and compilers Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2020-12-29py-cartopy: specify where deps are found (#20597)Adam J. Stewart1-0/+4
2020-12-29py-geographiclib: add new package at v1.50 (#20600)Adam J. Stewart1-0/+19
2020-12-29py-mercantile: add new package at v1.1.6 (#20598)Adam J. Stewart1-0/+20
2020-12-29py-mapclassify: add new package at v2.4.2 (#20599)Adam J. Stewart1-0/+24