summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2022-11-04Fix non-parallel make under depfile jobserver (#32862)Jordan Galby5-42/+80
When a package asks for non-parallel make, we need to force `make -j1` because just doing `make` will run in parallel under jobserver (e.g. `spack env depfile`). We now always add `-j1` when asked for a non-parallel execution (even if there is no jobserver). And each `MakeExecutable` can now ask for jobserver support or not. For example: the default `ninja` does not support jobserver so spack applies the default `-j`, but `ninja@kitware` or `ninja-fortran` does, so spack doesn't add `-j`. Tips: you can run `SPACK_INSTALL_FLAGS=-j1 make -f spack-env-depfile.make -j8` to avoid massive job-spawning because of build tools that don't support jobserver (ninja).
2022-11-03petsc: fix configure option to use double-hyphen (#33685)Satish Balay1-1/+1
2022-11-03Adding gegelati library package (#33686)Lucas1-0/+25
* testing ssh key * test * LR : Creating the packge to install the gegelati app * LR : Gegelati, a TPG C++ library added and fully tested * LR : adjusting for fork * LR: taking out the boilerplates * LR: taking out the rest
2022-11-03Add version 2.32 to tau package (#33702)wspear1-0/+1
2022-11-03propagation: don't count propagated variant values as non-default (#33687)Todd Gamblin1-0/+2
We try to avoid non-default variant values in the concretizer, but this doesn't make sense for variants forced to take some non-default value by variant propagation. Counting this as a penalty effectively biases the concretizer for small specs dependency graphs -- something we try very hard to avoid elsewhere because it can lead to very strange decisions. Example: with the penalty, `spack spec hdf5` will choose the default `openmpi` as its `mpi` provider, but `spack spec hdf5 ~~shared` will choose `mpich` because it has to set fewer non-default variant values because `mpich`'s DAG is smaller. That's not a good reason to prefer a non-default virtual provider. To fix this, if the user explicitly requests a non-default value to be propagated, there shouldn't be a penalty. Variant values set on the CLI already don't count as default; we just need to extend that to propagated values.
2022-11-03Update glvis for new builder interface (#33699)Greg Becker1-2/+2
2022-11-03Experimental binding of shared ELF libraries (#31948)Harmen Stoppels15-15/+383
Adds another post install hook that loops over the install prefix, looking for shared libraries type of ELF files, and sets the soname to their own absolute paths. The idea being, whenever somebody links against those libraries, the linker copies the soname (which is the absolute path to the library) as a "needed" library, so that at runtime the dynamic loader realizes the needed library is a path which should be loaded directly without searching. As a result: 1. rpaths are not used for the fixed/static list of needed libraries in the dynamic section (only for _actually_ dynamically loaded libraries through `dlopen`), which largely solves the issue that Spack's rpaths are a heuristic (`<prefix>/lib` and `<prefix>/lib64` might not be where libraries really are...) 2. improved startup times (no library search required)
2022-11-03Add new versions to py-clustershell (#33694)Adrien Cotte1-2/+6
2022-11-03tassel: adding version 5.2.86 (#33697)snehring1-0/+2
2022-11-03spades: adding version 3.15.5 (#33698)snehring1-0/+1
2022-11-03flux-core: allow ncurses >= 6.2 (#33599)eugeneswalker1-1/+1
2022-11-03Limit the number of parallel jobs launched by Tensile (#33692)Zack Galbreath1-0/+5
2022-11-03gitlab: Prune untouched specs less aggressively (#33669)Scott Wittenburg3-26/+31
Untouched spec pruning was added to reduce the number of specs developers see getting rebuilt in their PR pipelines that they don't understand. Because the state of the develop mirror lags quite far behind the tip of the develop branch, PRs often find they need to rebuild things untouched by their PR. Untouched spec pruning was previously implemented by finding all specs in the environment with names of packages touched by the PR, traversing in both directions the DAGS of those specs, and adding all dependencies as well as dependents to a list of concrete specs that should not be considered for pruning. We found that this heuristic results in too many pruned specs, and that dependents of touched specs must have all their dependencies added to the list of specs that should not be considered for pruning.
2022-11-03new cmake requirement (#33679)Miroslav Stoyanov1-2/+9
2022-11-03Bump HighFive to v2.5.0 (#33691)Nicolas Cornu1-0/+4
* Bump HighFive to v2.5.0 * Adding myself as maintainers * fix format with black
2022-11-03fides: remove unneeded variants (#32521)Cyrus Harrison1-5/+2
2022-11-03SEACAS: further refactor (#33673)Greg Sjaardema1-122/+92
* SEACAS: Update package.py to handle new SEACAS project name The base project name for the SEACAS project has changed from "SEACASProj" to "SEACAS" as of @2022-10-14, so the package needed to be updated to use the new project name when needed. The refactor also changes several: "-DSome_CMAKE_Option:BOOL=ON" to define("Some_CMAKE_Option", True) * SEACAS: Additional refactorings * Replaced all cmake "-Dsomething=other" lines with either `define` or `define_from_variant` functions. Consolidated the application (fortran, legacy, all) enabling lines into loops over the code names. Easier to see categorization of applications and also to add/move/remove an application Reordered some lines; general cleanup and restructuring. * Address flake8 issues * Remove trailing whitespace * Reformat using black
2022-11-03isescan: add version 1.7.2.3 (#33675)snehring1-1/+2
2022-11-03Add pika 0.10.0 (#33659)Mikael Simberg1-0/+1
Co-authored-by: Harmen Stoppels <harmenstoppels@gmail.com>
2022-11-03Use spack.traverse.traverse_nodes where useful (#33677)Harmen Stoppels1-45/+33
2022-11-03New patch release SLEPc 3.18.1 (#33661)Jose E. Roman2-0/+2
2022-11-03Update metadata for bootstrapping (#33665)Massimiliano Culpo17-999/+1128
2022-11-03glib: add 2.74.1 (#33650)Michael Kuhn1-1/+3
2022-11-02add new package: py-pylatex (#33573)Sinan1-0/+35
* add new package: py-pylatex * fix bugs * add extras indicated in setup.py * Update var/spack/repos/builtin/packages/py-pylatex/package.py Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com> * Update var/spack/repos/builtin/packages/py-pylatex/package.py Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com> * improvements * remove git merge related lines * tidy * Update var/spack/repos/builtin/packages/py-pylatex/package.py Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com> * remove variant * [@spackbot] updating style on behalf of Sinan81 Co-authored-by: sbulut <sbulut@3vgeomatics.com> Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com> Co-authored-by: Sinan81 <Sinan81@users.noreply.github.com>
2022-11-02Bugfix for spec objects modified by flag handlers (#33682)Greg Becker2-1/+13
This issue was introduced in #29761: ``` ==> Installing ncurses-6.3-22hz6q6cvo3ep2uhrs3erpp2kogxncbn ==> No binary for ncurses-6.3-22hz6q6cvo3ep2uhrs3erpp2kogxncbn found: installing from source ==> Using cached archive: /spack/var/spack/cache/_source-cache/archive/97/97fc51ac2b085d4cde31ef4d2c3122c21abc217e9090a43a30fc5ec21684e059.tar.gz ==> No patches needed for ncurses ==> ncurses: Executing phase: 'autoreconf' ==> ncurses: Executing phase: 'configure' ==> ncurses: Executing phase: 'build' ==> ncurses: Executing phase: 'install' ==> Error: AttributeError: 'str' object has no attribute 'propagate' The 'ncurses' package cannot find an attribute while trying to build from sources. This might be due to a change in Spack's package format to support multiple build-systems for a single package. You can fix this by updating the build recipe, and you can also report the issue as a bug. More information at https://spack.readthedocs.io/en/latest/packaging_guide.html#installation-procedure /spack/lib/spack/spack/build_environment.py:1075, in _setup_pkg_and_run: 1072 tb_string = traceback.format_exc() 1073 1074 # build up some context from the offending package so we can >> 1075 # show that, too. 1076 package_context = get_package_context(tb) 1077 1078 logfile = None ``` It turns out this was caused by a bug that had been around much longer, in which the flags were passed by reference to the flag_handler, and the flag_handler was modifying the spec object, not just the flags given to the build system. The scope of this bug was limited by the forking model in Spack, which is how it went under the radar for so long. PR includes regression test.
2022-11-02remove `deptype_query` remnants and fix incorrect `deptypes` kwarg (#33670)Harmen Stoppels4-7/+7
* remove deptype_query remnants * deptypes -> deptype These arguments haven't existed since 2017, but `traverse` now fails on unknown **kwargs, so they have finally popped up.
2022-11-02Initial Version of Hypar Spackage (#33647)Robert Pavel1-0/+63
Initial spackage for Hypar proxy app
2022-11-02update: damask3.0.0-alpha7 (#33634)Martin Diehl7-1/+77
* damask3.0.0-alpha7 * [@spackbot] updating style on behalf of MarDiehl Co-authored-by: MarDiehl <MarDiehl@users.noreply.github.com>
2022-11-02amrex: add v22.11 (#33671)Weiqun Zhang1-1/+2
2022-11-02Package: add new package py-fitter (#33652)Carson Woods1-0/+29
* Add new python package * Fix isort style issues * Add additional dependencies * Add additional dependencies * Remove comments * Add additional explicit dependencies
2022-11-02package_qgis_fix_pythonpath (#33655)Sinan1-0/+5
* package_qgis_fix_pythonpath * check if bindings enabled also Co-authored-by: sbulut <sbulut@3vgeomatics.com>
2022-11-02SEACAS: Update package.py to handle new SEACAS project name (#33646)Greg Sjaardema1-73/+107
The base project name for the SEACAS project has changed from "SEACASProj" to "SEACAS" as of @2022-10-14, so the package needed to be updated to use the new project name when needed. The refactor also changes several: "-DSome_CMAKE_Option:BOOL=ON" to define("Some_CMAKE_Option", True)
2022-11-02llvm: add 15.0.3, 15.0.4 (#33651)Paul R. C. Kent1-0/+2
* v1503 * v1504
2022-11-02propagation: improve performanceGregory Becker3-61/+68
This updates the propagation logic used in `concretize.lp` to avoid rules with `path()` in the body and instead base propagation around `depends_on()`.
2022-11-02flags/variants: Add ++/~~/== syntax for propagation to dependenciesKayla Butler16-118/+435
Currently, compiler flags and variants are inconsistent: compiler flags set for a package are inherited by its dependencies, while variants are not. We should have these be consistent by allowing for inheritance to be enabled or disabled for both variants and compiler flags. - [x] Make new (spec language) operators - [x] Apply operators to variants and compiler flags - [x] Conflicts currently result in an unsatisfiable spec (i.e., you can't propagate two conflicting values) What I propose is using two of the currently used sigils to symbolized that the variant or compiler flag will be inherited: Example syntax: - `package ++variant` enabled variant that will be propagated to dependencies - `package +variant` enabled variant that will NOT be propagated to dependencies - `package ~~variant` disabled variant that will be propagated to dependencies - `package ~variant` disabled variant that will NOT be propagated to dependencies - `package cflags==True` `cflags` will be propagated to dependencies - `package cflags=True` `cflags` will NOT be propagated to dependencies Syntax for string-valued variants is similar to compiler flags.
2022-11-02armpl-gcc: Pull RHEL8 package when OS is Rocky8 (#33641)Filippo Spiga1-0/+1
2022-11-02tests: fix group membership check in sbang tests. (#33658)Todd Gamblin2-4/+13
Fixes an issue on the RHEL8 UBI container where this test would fail because `gr_mem` was empty for every entry in the `grp` DB. You have to check *both* the `pwd` database (which has primary groups) and `grp` (which has other gorups) to do this correctly. - [x] update `llnl.util.filesystem.group_ids()` to do this - [x] use it in the `sbang` test
2022-11-01Consolidate DAG traversal in traverse.py, support DFS/BFS (#33406)Harmen Stoppels9-204/+800
This PR introduces breadth-first traversal, and moves depth-first traversal logic out of Spec's member functions, into `traverse.py`. It introduces a high-level API with three main methods: ```python spack.traverse.traverse_edges(specs, kwargs...) spack.traverse.traverse_nodes(specs, kwags...) spack.traverse.traverse_tree(specs, kwargs...) ``` with the usual `root`, `order`, `cover`, `direction`, `deptype`, `depth`, `key`, `visited` kwargs for the first two. What's new is that `order="breadth"` is added for breadth-first traversal. The lower level API is not exported, but is certainly useful for advanced use cases. The lower level API includes visitor classes for direction reversal and edge pruning, which can be used to create more advanced traversal methods, especially useful when the `deptype` is not constant but depends on the node or depth. --- There's a couple nice use-cases for breadth-first traversal: - Sometimes roots have to be handled differently (e.g. follow build edges of roots but not of deps). BFS ensures that root nodes are always discovered at depth 0, instead of at any depth > 1 as a dep of another root. - When printing a tree, it would be nice to reduce indent levels so it fits in the terminal, and ensure that e.g. `zlib` is not printed at indent level 10 as a dependency of a build dep of a build dep -- rather if it's a direct dep of my package, I wanna see it at depth 1. This basically requires one breadth-first traversal to construct a tree, which can then be printed with depth-first traversal. - In environments in general, it's sometimes inconvenient to have a double loop: first over the roots then over each root's deps, and maintain your own `visited` set outside. With BFS, you can simply init the queue with the environment root specs and it Just Works. [Example here](https://github.com/spack/spack/blob/3ec73046995d9504d6e135f564f1370cfe31ba34/lib/spack/spack/environment/environment.py#L1815-L1816)
2022-11-01rempi %oneapi: -Wno-error=implicit-function-declaration (#33654)eugeneswalker1-0/+7
2022-11-01ParaView: add v5.11.0-RC2 (#33486)Vicente Bolea1-1/+1
Co-authored-by: eugeneswalker <38933153+eugeneswalker@users.noreply.github.com>
2022-11-01Unit tests: make unit tests work for aarch64 machines (#33625)Greg Becker27-91/+347
Currently, many tests hardcode to older versions of gcc for comparisons of concretization among compiler versions. Those versions are too old to concretize for `aarch64`-family targets, which leads to failing tests on `aarch64`. This PR fixes those tests by updating the compiler versions used for testing. Currently, many tests hardcode the expected architecture result in concretization to the `x86_64` family of architectures. This PR generalizes the tests that can be generalized, to cover multiple architecture families. For those that test specific relationships among `x86_64`-family targets, it ensures that concretization uses the `x86_64`-family targets in those cases. Currently, many tests rely on the fact that `AutotoolsPackage` imposes no dependencies on the inheriting package. That is not true on `aarch64`-family architectures. This PR ensures that the fact `AutotoolsPackage` on `aarch64` pulls in a dependency on `gnuconfig` is ignored when testing for the appropriate relationships among dependencies Additionally, 5 tests currently prompt the user for input when `gpg` is available in the user's path. This PR fixes that issue. And 7 tests fail currently when the user has a yubikey available. This PR fixes the incorrect gpg argument causing those issues.
2022-11-01Update command option for example (#33321)Greg Sjaardema1-1/+1
The `spack info <package>` command does not show the `Virtual Packages:` output unless the `--virtuals` command option is passed. Before this changes, the information that the command is supposed to be illustrating is not shown in the example and is confusing.
2022-11-01Allow target requirements in packages.yaml (#32528)Massimiliano Culpo6-14/+32
This PR solves the issue reported in #32471 specifically for targets and operating systems, by avoiding to add a default platform to anonymous specs.
2022-11-01Add elf parsing utility function (#33628)Harmen Stoppels4-46/+635
Introduces `spack.util.elf.parse_elf(file_handle)`
2022-11-01perl: add 5.36.0 (#33336)Michael Kuhn1-9/+7
2022-11-01xz: add 5.2.7 (#33338)Michael Kuhn2-1/+4
2022-11-01sundials: add v6.4.1, new ginkgo and kokkos variants, plus some fixes (#33644)Cody Balos1-11/+77
* sundials: add v6.4.1, new ginkgo and kokkos variants, plus some fixes * add missing kokkos/kokkos-kernels variant * add v6.4.0
2022-11-01Let pytest-cov create the xml directly (#33619)Massimiliano Culpo2-8/+2
`coverage` sometimes failed to combine, even if there were multiple reports.
2022-11-01superlu-dist: fix rocm variant for the master branch (#33624)liuyangzhuan1-2/+5
* superlu-dist: fix rocm variant for the master branch * simplify superlu-dist * add mpi include to HIP_HIPCC_FLAGS Co-authored-by: liuyangzhuan <liuyangzhuan@users.noreply.github.com>
2022-11-01Add tracy 0.9 (#33638)Mikael Simberg3-0/+3
* Add tracy 0.9 * Add conflict for pika and tracy@0.9: