`spack test` has a spurious '[+] ' in the output:
```
lib/spack/spack/test/install.py .........[+] ......
```
Output is properly suppressed:
```
lib/spack/spack/test/install.py ...............
```
Makes the following changes:
* (Fixes#15620) tty configuration was failing when stdout was
redirected. The implementation now creates a pseudo terminal for
stdin and checks stdout properly, so redirections of stdin/out/err
should be handled now.
* Handles terminal configuration when the Spack process moves between
the foreground and background (possibly multiple times) during a
build.
* Spack adjusts terminal settings to allow users to to enable/disable
build process output to the terminal using a "v" toggle, abnormal
exit cases (like CTRL-C) could leave the terminal in an unusable
state. This is addressed here with a special-case handler which
restores terminal settings.
Significantly extend testing of process output logger:
* New PseudoShell object for setting up a master and child process
and configuring file descriptor inheritance between the two
* Tests for "v" verbosity toggle making use of the added PseudoShell
object
* Added `uniq` function which takes a list of elements and replaces
any consecutive sequence of duplicate elements with a single
instance (e.g. "112211" -> "121")
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
The performance improvements done in #14693 where leaving the DB in an inconsistent state when specs were removed from it. This PR updates the DB internal state whenever the DB is written to a file.
Note that we still cannot properly enumerate installed dependents, so there is a TODO in this code. Fixing that will require the dependents dictionaries in specs to be re-keyed (either by hash, or not keyed at all -- a list would do). See #11983 for details.
Reading the database repeatedly can be quite slow. We need a way to speed
up Spack when it reads the DB multiple times, but the DB has not been
modified between reads (which is nearly all the time).
- [x] Add a file containing a unique uuid that is regenerated at database
write time. Use this uuid to suppress re-parsing the database
contents if we know a previous uuid and the uuid has not changed.
- [x] Fix mutable_database fixture so that it resets the last seen
verifier when it resets.
- [x] Enable not rereading the database immediately after a write. Make
the tests reset the last seen verifier in between tests that use the
database fixture.
- [x] make presence of uuid module optional
Removed the code that was converting the old index.yaml format into
index.json. Since the change happened in #2189 it should be
considered safe to drop this (untested) code.
If a user invoked "spack env activate example-henv", Spack would
mistakenly interpret the "-h" from "example-henv" as the "-h" option.
This commit allows users to create and activate environments with
"-h" in the name.
This issue existed for bash shell support as well as csh support, and
this commit addresses both, along with some other unrelated csh
support issues.
* only override spec prefix for non-external packages
* add test that environment shell modifications respect explicitly-specified prefixes for external packages
* add clarifying comment
spack.util.environment_after_sourcing_files compares the local
environment against a shell environment after having sourced a
file; but this ends up including the default shell profile and
rc, which might differ from the local environment.
To change this, compare against the default shell environment,
expressed here as 'source /dev/null'.
Spack currently cannot run as a background process uninterrupted because some of the logging functions used in the install method (especially to create the dynamic verbosity toggle with the v key) cause the OS to issue a SIGTTOU to Spack when it's backgrounded.
This PR puts the necessary gatekeeping in place so that Spack doesn't do anything that will cause a signal to stop the process when operating as a background process.
Bug: Spack hangs on some Cray machines
Reason: The TERM environment variable is necessary to run bash -lc "echo $CRAY_CPU_TARGET", but we run that command within env -i, which wipes the environment.
Fix: Manually forward the TERM environment variable to env -i /bin/bash -lc "echo $CRAY_CPU_TARGET"
When trying to use an upstream Spack repository, as of f2aca86 Spack
was attempting to write to the upstream DB based on a new metadata
directory added in that commit. Upstream DBs are read-only, so this
should not occur.
This adds a check to prevent Spack from writing to the upstream DB
fixes#15449
Before this PR a call to pkg.url_for_version was modifying
class attributes determining different results for subsequents
calls and an error when the urls was empty.
This recovers the old behavior of replace_prefix_bin that was
modified to work with elf binaries by prefixing os.sep to new prefix
until length is the same as old prefix.
Testing the install StopIteration exception resulted in an attribute error:
AttributeError: 'StopIteration' object has no attribute 'message'
This PR adds a unit test and resolves that error.
The new build process, introduced in #13100 , relies on a spec's dependents in addition to their dependencies. Loading a spec from a yaml file was not initializing the dependents.
- [x] populate dependents when loading from yaml
The distributed build PR (#13100) -- did not check the install status of dependencies when using the `--only package` option so would refuse to install a package with the claim that it had uninstalled dependencies whether that was the case or not.
- [x] add install status checks for the `--only package` case.
- [x] add initial set of tests
This change stores packages' configure arguments during build and makes
use of them while refreshing module files. This fixes problems such as in
#10716.
* Emit a sensible error message if compiler's target is overly specific
fixes#14798fixes#13733
Compiler specifications require a generic architecture family as
their target. This commit improves the error message that is
displayed to users if they edit compilers.yaml and use an overly
specific name.
* Add extra version of py-jsonschema
* Update dependencies
* Update dependencies + flake8
* Add py-pyrsistent package
* Update package.py
* Update var/spack/repos/builtin/packages/py-jsonschema/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update package.py
* Update package.py
* Apply suggestions from code review
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Apply suggestions from code review
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
* Add a variant to QE that suppresses upstream patching. Need in order to do ddependency patching.
* QE variant fails to build often. Set default variant to False as a user friendly change.
* QMCPACK converter patch collides with internal QE patches. Deactivate internal patches when performing dependency patching.
* Clearer description of QE patch variant that is also flake8 compliant.
* Add extra version of py-sqlalchemy
* Update package.py
* Update package.py
* Update package.py
* Update package.py
* Update package.py
* Apply suggestions from code review
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update package.py
* Update package.py
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
The hashing logic looks for function calls that are Spack directives.
It expects that when a Spack directive is used that it is referenced
directly by name, and that the directive function is not itself
retrieved by calling another function. When the hashing logic
encountered a function call where the function was determined
dynamically, it would fail (attempting to access a name attribute
that does not happen to exist in this case).
This updates the hashing logic to filter out function calls where the
function is determined dynamically when looking for uses of Spack
directives.
* Add extra version of py-terminado
* Update package.py
* Update var/spack/repos/builtin/packages/py-terminado/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
* Add extra version of py-widgetsnbextension
* Update dependency version
* Update package.py
* Update package.py
* Update var/spack/repos/builtin/packages/py-widgetsnbextension/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
* Add extra version of py-urllib3
* Update package.py
* Update package.py
* Update package.py
* Update var/spack/repos/builtin/packages/py-urllib3/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
* Add extra version of vc
* Update package.py
* Update package.py
* Update var/spack/repos/builtin/packages/vc/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update package.py
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
Spack now requires an exact match of the compiler version
requested by the user. A loose constraint can be given to
Spack by using a version range instead of a concrete version
(e.g. 4.5: instead of 4.5).
* Mark conflicts with binutils on darwin
* Explicitly require binutils bootstrapping and mark conflict with nvptx
* Disable gold variant by default on darwin
* igv: adding package igv
* removing some remaining initial boilerplate
* changing path construction to be more correct
* adding in type for java dep, also forgot about prefix.bin etc
* Added IRPF90 package
* PEP8
* SHA256
* Update var/spack/repos/builtin/packages/py-irpf90/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
Sometimes one needs to preserve the (relative order) of
mtimes on installed files. So it's better to just copy
over all the metadata from the source tree to the install
tree. If permissions need fixing, that will be done anyway
afterwards.
One major use case are resource()s:
They're unpacked in one place and then copied to their
final place using install_tree(). If the resource is a
source tree using autoconf/automake, resetting mtimes
uncorrectly might force unwanted autoconf/etc calls.
libfabric used to install fabtests only when installed
using --test. fabtests has tools that are useful on a
running system, so they should be installed always.
* Rewrote the build/install part to always install
fabtests alongside libfabric.
* Updated a few fabtests resources.
* Updated the test related stuff. Works for most versions
now.
* Include tcp and udp fabrics so that the test suite works.
Change hpctoolkit's dependency on libunwind from 2018.10.12 to 1.4:.
In libunwind, 2018.10.12 is going away in favor of 1.4-rc1 (they're
nearly identical commits).
Remove the 'gpu' version. This was a temporary branch that is now
folded into master.
* py-notebook: make py-setuptools a run dependency
The py-setuptools dependency in py-notebook needs to be a run
dependency. The following message is received if it is not in the run
environment.
Traceback (most recent call last): File "/opt/ssoft/apps/2020.1/linu
x-centos7-sandybridge/gcc-9.2.0/py-notebook-6.0.1-6usbn4c/bin/jupyter-notebook",
line 6, in <module>
from pkg_resources import load_entry_point
Module NotFoundError: No module named 'pkg_resources'
* Remove extraneous whitespace
If the mimetype returned from `file -h -b --mime-type` contains slashes
in its subtype, the tuple returned from `spack.relocate.mime_type` will
have a size larger than two, which leads to errors.
Change-Id: I31de477e69f114ffdc9ae122d00c573f5f749dbb
* Add extra version of py-jedi
* Update package.py
* Update package.py
Correct dependency types
* Update var/spack/repos/builtin/packages/py-jedi/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-jedi/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-jedi/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Add py-parso package
* Remove boilerplate from py-parso
* Flake-8
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
* Add extra version of py-isort
* Update package.py
* Update package.py
* Update var/spack/repos/builtin/packages/py-isort/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-isort/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-isort/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-isort/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
* Add extra version of py-dask
* Update package.py
* Add extra dependencies for py-dask+distributed
* Update package.py
* Update var/spack/repos/builtin/packages/py-heapdict/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-heapdict/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-distributed/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-distributed/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update package.py
* Update package.py
* Update package.py
* Update package.py
* Update var/spack/repos/builtin/packages/py-distributed/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-distributed/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update package.py
* Update var/spack/repos/builtin/packages/py-distributed/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update package.py
* Flake-8
* Add patch step for py-distributed
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
Fixes#9394Closes#13217.
## Background
Spack provides the ability to enable/disable parallel builds through two options: package `parallel` and configuration `build_jobs`. This PR changes the algorithm to allow multiple, simultaneous processes to coordinate the installation of the same spec (and specs with overlapping dependencies.).
The `parallel` (boolean) property sets the default for its package though the value can be overridden in the `install` method.
Spack's current parallel builds are limited to build tools supporting `jobs` arguments (e.g., `Makefiles`). The number of jobs actually used is calculated as`min(config:build_jobs, # cores, 16)`, which can be overridden in the package or on the command line (i.e., `spack install -j <# jobs>`).
This PR adds support for distributed (single- and multi-node) parallel builds. The goals of this work include improving the efficiency of installing packages with many dependencies and reducing the repetition associated with concurrent installations of (dependency) packages.
## Approach
### File System Locks
Coordination between concurrent installs of overlapping packages to a Spack instance is accomplished through bottom-up dependency DAG processing and file system locks. The runs can be a combination of interactive and batch processes affecting the same file system. Exclusive prefix locks are required to install a package while shared prefix locks are required to check if the package is installed.
Failures are communicated through a separate exclusive prefix failure lock, for concurrent processes, combined with a persistent store, for separate, related build processes. The resulting file contains the failing spec to facilitate manual debugging.
### Priority Queue
Management of dependency builds changed from reliance on recursion to use of a priority queue where the priority of a spec is based on the number of its remaining uninstalled dependencies.
Using a queue required a change to dependency build exception handling with the most visible issue being that the `install` method *must* install something in the prefix. Consequently, packages can no longer get away with an install method consisting of `pass`, for example.
## Caveats
- This still only parallelizes a single-rooted build. Multi-rooted installs (e.g., for environments) are TBD in a future PR.
Tasks:
- [x] Adjust package lock timeout to correspond to value used in the demo
- [x] Adjust database lock timeout to reduce contention on startup of concurrent
`spack install <spec>` calls
- [x] Replace (test) package's `install: pass` methods with file creation since post-install
`sanity_check_prefix` will otherwise error out with `Install failed .. Nothing was installed!`
- [x] Resolve remaining existing test failures
- [x] Respond to alalazo's initial feedback
- [x] Remove `bin/demo-locks.py`
- [x] Add new tests to address new coverage issues
- [x] Replace built-in package's `def install(..): pass` to "install" something
(i.e., only `apple-libunwind`)
- [x] Increase code coverage
* ENH: add catch2 CMake install
* add a variant allowing catch2 to be installed
via CMake, which is useful for generating a .cmake
config file for consumption by other projects
* Catch2: Simplify Package
- CMake install is also single-header for new releases
- testing triggered by Spack's test mechanism
- default to CMake build (better than simple copy, which is
just for old releases to be installed)
* Catch: Remove Variant
We can control all installs with CMake to be quick and complete.
Old versions prior to 1.7.0 will be manually installed, as the
`make install` target is missing in those.
Releases 1.7.0-1.9.3 do not expose control over test builds.
* openPMD-api: Catch Lost single_header
... variant is gone :)
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
* Finish the HepMC3 spackage update
- Update CMake requirement per latest master
- Account for Python variant, add python dependency if used
- Account for ROOT I/O variant, add ROOT dependency if used
* Please flake8
* Update and simplify julia package
The current Spack Julia package potentially installs a few julia
packages, with the installation being controlled by variants. There are
a couple of problems with this.
First, Julia handles packages very differently from systems such as R
and Python. Julia requires write access to the repository directories in
order for user installs of packages to work. If spack installs julia
packages then there will be a repository, DEPOT_PATH, in the
installation directory. If spack is used on an individual basis this
would work but would mean that package data is written to the spack
installation directory after installation. If spack is used to provide
packages for end users then user installs of julia packages will fail
due to lack of write access to the repository in the installation
directory. It seems best for spack to just install julia without any
julia packages, and drop the configuration for those packages.
Second, having spack install package as variants seems to be counter to
how spack works for other extendable systems, like R and Python. Julia
should be an extendable package in spack but it is not clear how to make
that work. As pointed out above, installing user packages requires write
access to the julia repositories, including the one in the install
directory. Essentially, a user package installation will try to update
metadata for *all* julia repositories. Furthermore, each of those
repositories, assuming one per package with spack, would need to have
the Project.toml files merged to present the package stack to julia.
Again, it seems best for spack to just install julia itself and not try
to install julia packages, at least at this time. A good discussion on
this can be found at
https://discourse.julialang.org/t/how-does-one-set-up-a-centralized-julia-installation/13922.
This PR does the following:
- adds versions 1.2.0 and 1.3.1
- removes variants that correspond to julia packages
- changes python to build dependency as it seems to only be needed for
LLVM
- the new versions can use Python-3
- removes dependencies for packages
- adds a conflict statement for Intel compiler, with comment
- add a setup_build_environment method to find GCC libraries
- make formatting consistent
- adds JULIA_CPU_TARGET option to correspond with target to help with
running julia image on hardware older than build host
- added intel build options, for when they can be used
- removed code for installing packages
- removed code for julia config that was needed for packages
Note that versions below 0.5.1 fail to build, with or without these
changes. It is not clear why that is.
* Update var/spack/repos/builtin/packages/julia/package.py
Yes, need to use correct grammar even in the midst of numbers and symbols. Good catch!
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* More cleanup of Julia package
This commit does more cleanup and sets more constraints.
- Removed release-0.4 and release-0.5. I am not sure if those are
actually useful but they are quite old and there are released versions
from the same timeframe.
- Remove the binutils variant.
- Made cmake a build dependency for versions >= 1.
- Added git as a dependency for @master.
- Limit curl dependency to released versions.
- Do not use external curl for master. When I checked, using the
external version failed but the internal curl worked.
- Versions <= 0.5.0 need an older version of openssl.
- Set conflicts directive for cxx variant.
- Added conflicts directive for needing +mkl with Intel compiler.
- Removed configuration settings as these prevented julia from working
properly in all cases that I looked at.
* Fix flake8 error
Remove 'import sys' that is no longer used.
* More dependency tweaks
This commit sets further version constraints on dependencies. It really
looks like julia requires its internal dependencies more over time.
- curl only up to 0.5.0
- openssl only up to 0.5.0
- override with system curl up to version 0.5.0
* Fix spec for curl certs
Only depending on curl through 0.5.0.
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
* Add extra version of py-cryptography
* Update package.py
* Update package.py
* Update var/spack/repos/builtin/packages/py-cryptography/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-cryptography/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-cryptography/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update package.py
* Flake-8
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
* py-hpcbench: new package
* obey the flake8
* address comments, fix versions.
* Update var/spack/repos/builtin/packages/py-hpcbench/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
* Add extra version of py-graphviz
* Update package.py
* Update package.py
* Update var/spack/repos/builtin/packages/py-graphviz/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
* Add extra version of py-ipywidgets
* Update var/spack/repos/builtin/packages/py-ipywidgets/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update package.py
* Update var/spack/repos/builtin/packages/py-ipywidgets/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-ipywidgets/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-ipywidgets/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-ipywidgets/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-ipywidgets/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-ipywidgets/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
* Add extra version of py-defusedxml
* Update package.py
* Update var/spack/repos/builtin/packages/py-defusedxml/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
* Add extra version of py-logilab-common
* Update package.py
* Update var/spack/repos/builtin/packages/py-logilab-common/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
From ROOT cmake output:
```
-- Checking for module 'davix>=0.6.4'
-- Found davix, version 0.6.8
CMake Warning at cmake/modules/SearchInstalledSoftware.cmake:960 (message):
Davix versions 0.6.8 to 0.7.0 have a bug and do not work with ROOT, please
upgrade to 0.7.1 or later.
```
* an argument 'buf_size' of 'h5fget_file_image_c' should be intent(out).
* correct format errors
* some modifications based on the comments from the reviewer
* Add new version of cairo
* Update var/spack/repos/builtin/packages/cairo/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
* Add new version of ccache; update URL
* Update var/spack/repos/builtin/packages/ccache/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
* Fix patch applicability
* Combine patches for missing qt3 headers and remove krell variant
The variant should have always been applied.
* Restrict QT patches to actual applicable versions/situations
- I researched the associated patches so now their `when=` should more
closely match when they're actually needed.
- I sorted the patch order so they're grouped by version requirement
- I renamed the patches so they're listed by version requirements
* Added new default tau version: 2.29. Added explicit zlib build requirement. Set up environment to use use elf and libz
* Changed zlib to link dependency. Removed elf library path load (wasn't able to reproduce the need for this)
* Add extra version of py-matplotlib
* Update dependency
* Update package.py
* Update var/spack/repos/builtin/packages/py-matplotlib/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-matplotlib/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
* Add extra version of py-lxml
* Extra variants for py-lxml
* Update var/spack/repos/builtin/packages/py-lxml/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-lxml/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-lxml/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-lxml/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
* Use separate build directory for gzip
At least on mac systems (perhaps because of a case sensitivity issue?)
gzip fails to build inside the source tree:
```
config.status: linking /var/folders/fy/x2xtwh1n7fn0_0q2kk29xkv9vvmbqb/T/spack-stage/s3j/spack-stage-gzip-1.10-iatwtuk2l5xgwmuh4pwu5bf27yezpydj/spack-src/GNUmakefile to GNUmakefile
config.status: executing depfiles commands
==> Executing phase: 'build'
==> [2020-02-14-09:32:45.502913] 'make' '-j12'
make: GNUmakefile: Too many levels of symbolic links
make: stat: GNUmakefile: Too many levels of symbolic links
make: *** No rule to make target `GNUmakefile'. Stop.
```
* Simplify build directory and add gmake dependency
Libmng only needs gzip to compress man files for distribution, so it
builds fine without it. The spack
gzip currently fails to compile.
```
config.status: linking /var/folders/fy/x2xtwh1n7fn0_0q2kk29xkv9vvmbqb/T/spack-stage/s3j/spack-stage-gzip-1.10-iatwtuk2l5xgwmuh4pwu5bf27yezpydj/spack-src/GNUmakefile to GNUmakefile
config.status: executing depfiles commands
==> Executing phase: 'build'
==> [2020-02-14-09:32:45.502913] 'make' '-j12'
make: GNUmakefile: Too many levels of symbolic links
make: stat: GNUmakefile: Too many levels of symbolic links
make: *** No rule to make target `GNUmakefile'. Stop.
```
* Modify Flang NVidia GPU variant to make use of built-in CudaPackage
* Add OpenMP Offload patch if March 2019 compiler is selected.
* Flang parallel build has a race condition.
* llvm-flang now uses built-in CudaPackage.
* Add variant for different build releases.
* Fix OpenMP target offload for NVidia GPUs.
* Additional commong flags that are needed with comments.
* NVidia BC required for libomp target requires special treatment. Use clang built in previous step to re-compile libomptarget.
* Add a new package: Metall
* Fix errors in metall/package.py
* Update var/spack/repos/builtin/packages/metall/package.py
Change to https style URL
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update in metall/package.py. Change Metall to depend on Boost always
* Update in metall/package.py. Change to install Boost with the default variants
* Update metall/package.py. Removed a comment
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
* Buildcache creation change the way prefix is copied to workdir.
* install_tree copies hardlinked files
* tarfile creates hardlinked files on extraction.
* create a temporary tarfile from prefix and extract it to workdir
* Use temp tarfile to move workdir to prefix to preserve hardlinks instead of copying
Add the OpenBLAS variant `+consistentFPCSR`, by default `False`, which adds the compile definition `CONSISTENT_FPCSR=1` as documented in OpenBLAS `Makefile.rule`.
This PR adds an updated version to the r-rhtslib package as well as fix
the build.
- add patches to use compiler flags from R
- add variables for bzip2 and xz dependencies
- use the spack Makeconf file when building the in-tree htslib
- make patchelf available to allow R to remove reference to temporary
installation directory in htslib shared object
- Add new version of r-rsamtools as the r-rsamtools and r-rhtlib
packages are closely paired.
* Fix run environment
Trying to install Avizo, i get "Error: NameError: name 'run_env' is not defined". Correcting it to be just "env"
* fix identation
Starting with 2020, the tar files are named v2020.0.tar.gz,
v2020.1.tar.gz, etc, not 2020_U1.tar.gz.
https://github.com/intel/tbb/releases
The previous commit (7a10478708) fixed the checksum mismatch, but
didn't update url_for_version (my bad).
UnifyFS no longer has an option to depend on numa. This removes the
numa variant, dependency, and associated conflict.
This commit also
- renames the `pmpi` variant to the more appropriate `auto-mount`
- changes the preferred version to the most recent release
It's often useful to run a module with `python -m`, e.g.:
python -m pyinstrument script.py
Running a python script this way was hard, though, as `spack python` did
not have a similar `-m` option. This PR adds a `-m` option to `spack
python` so that we can do things like this:
spack python -m pyinstrument ./test.py
This makes it easy to write a script that uses a small part of Spack and
then profile it. Previously thee easiest way to do this was to write a
custom Spack command, which is often overkill.
WarpX removed the `dev` branch in favor of a simpler,
`master`-centric development model.
`master` is the new development branch and there is no
stable branch anymore (we use tags and release branches
instead).
* Hydrogen now depends on `aluminum +nccl` vs. `aluminum +mpi_cuda`
* Hydrogen: Simplify Mac OS OpenMP-detection logic
* Aluminum: Add Mac OS OpenMP-detection logic
* LBANN: depend on conduit@0.4.0: instead of conduit@master
Fixes#10019
If multiple instances of a package were installed in a single
instance of Spack, and they differed in terms of dependencies, then
"spack find" would not distinguish specs based on their dependencies.
For example if two instances of X were installed, one with Y and one
with Z, then "spack find X ^Y" would display both instances of X.
This PR creates the r-watermelon package, along with dependencies.
- new package: r-fdb-infiniummethylation-hg19
- new package: r-illuminahumanmethylation450kanno-ilmn12-hg19
- new package: r-lumi
- new package: r-methylumi
- new package: r-roc
- new package: r-txdb-hsapiens-ucsc-hg19-knowngene
- updated package: r-matrixstats, new version needed as a dependency
This PR adds the r-pscbs package along with new dependencies and updates.
- new package: r-aroma-light
- new package: r-r-cache
- updated package: r-r-oo
This PR adds the r-copula package and dependencies.
- new package: r-adgoftest
- new package: r-gsl
- new package: r-pspline
- new package: r-stabledist
* New package - r-rmariadb
This PR creates the r-rmariadb package. It also includes an update to
the r-dbi package as a newer version of that is needed.
* Update var/spack/repos/builtin/packages/r-rmariadb/package.py
Argh, copy/paste. I wish the mirror would list itself as the archive site as well, but it just mirrors that data field from CRAN site. Thanks for catching that, I will make sure to look for that in the future.
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Use mariadb-client
Use mariadb-client so people can set a preferred provider.
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
Fixes#14850. Commit 6b1958219 added versions 2020 and 2020.1 for
intel-tbb as part of updating several intel packages but added the
wrong sha256 sums for the github/01org repository.
Also, version 2020 is 2020, not 2020.0.
Add patch makefile-debug to restore the debug targets.
Python depends on gettext. Packages that depend on gettext and Python
together will encounter a concretizer bug which incorrectly detects
a constraint conflict. This sets the default value of +libxml2 in
Python to be the same as gettext so that packages which depend on
both (like mesa) can successfully concretize without adding manual
constraints.
Using `sys.executable` to run Python in a sub-shell doesn't always work in a virtual environment as the `sys.executable` Python is not necessarily compatible with any loaded spack/other virtual environment.
- revert use of sys.executable to print out subshell environment (#14496)
- try instead to use an available python, then if there *is not* one, use `sys.executable`
- this addresses RHEL8 (where there is no `python` and `PYTHONHOME` issue in a simpler way
When removing packages from a view, extensions were being deactivated
in an arbitrary order. Extensions must be deactivated in preorder
traversal (dependents before dependencies), so when this order was
violated the view update would fail.
This commit ensures that views deactivate extensions based on a
preorder traversal and adds a test for it.
Despite trying very hard to keep dicts out of our hash algorithm, we seem
to still accidentally add them in ways that the tests can't catch. This
can cause errors when hashes are not computed deterministically.
This fixes an error we saw with Python 3.5, where dictionary iteration
order is random. In this instance, we saw a bug when reading Spack
environment lockfiles -- The load would fail like this:
```
...
File "/sw/spack/lib/spack/spack/environment.py", line 1249, in concretized_specs
yield (s, self.specs_by_hash[h])
KeyError: 'qcttqplkwgxzjlycbs4rfxxladnt423p'
```
This was because the hashes differed depending on whether we wrote `path`
or `module` first when recomputing the build hash as part of reading a
Spack lockfile. We can fix it by ensuring a determistic iteration order.
- [x] Fix two places (one that caused an issue, and one that did
not... yet) where our to_node_dict-like methods were using regular python
dicts.
- [x] Also add a check that statically analyzes our to_node_dict
functions and flags any that use Python dicts.
The test found the two errors fixed here, specifically:
```
E AssertionError: assert [] == ['Use syaml_dict instead of ...pack/spack/spec.py:1495:28']
E Right contains more items, first extra item: 'Use syaml_dict instead of dict at /Users/gamblin2/src/spack/lib/spack/spack/spec.py:1495:28'
E Full diff:
E - []
E + ['Use syaml_dict instead of dict at '
E + '/Users/gamblin2/src/spack/lib/spack/spack/spec.py:1495:28']
```
and
```
E AssertionError: assert [] == ['Use syaml_dict instead of ...ack/architecture.py:359:15']
E Right contains more items, first extra item: 'Use syaml_dict instead of dict at /Users/gamblin2/src/spack/lib/spack/spack/architecture.py:359:15'
E Full diff:
E - []
E + ['Use syaml_dict instead of dict at '
E + '/Users/gamblin2/src/spack/lib/spack/spack/architecture.py:359:15']
```
This commit introduces a `--no-check-signature` option for
`spack install` so that unsigned packages can be installed. It is
off by default (signatures required).
VSX alitvec extensions are supported by PowerISA from v2.06 (Power7+), but might
not be listed in features.
FMA has been supported by PowerISA since Power1, but might not be listed in
features.
This commit adds these features to all the power ISA family sets.
* update version: intel packages daal, ipp, mkl-dnn, mkl, mpi, parallel-studio, pin, tbb and makes url parameter consistent and always use single quote.
* Fixes a typo with one of the sha256 checksum..
This PR adds a new version of llvm and fixes the dependency specs.
- This package depends on libtinfo in all cases so change the ncurses
dependency to reflect that
- if +lldb is in the spec but +python is not then do not build the lldb
python support
- build lldb python support only if +python is in the spec with +lldb
- install the llvm python bindings if +python is in the spec
- install the clang python bindings if +clang and +python are in the spec
- Fixes for conflicts with ~clang
- Fix typo in conflict of compiler-rt and flang
- More robustly handle compiler version switching between QT4 and 5, and
mac/linux, and gcc/intel/clang
- Remove assumption about intel linker being in path
* Convert libmng to use CMake rather than autoconf
The autoconf script failed to recognize the intel compiler; it was
harwired to use gcc.
* Simplify cmake logic and remove unused variant
Add an optional 'submodules_delete' field to Git versions in Spack
packages that allows them to remove specific submodules.
For example: the nervanagpu submodule has become unavailable for the
PyTorch project (see issue 19457 at
https://github.com/pytorch/pytorch/issues/). Removing this submodule
allows 0.4.1 to build.
* Octave: moved the short description in its own paragraph
* Octave: patch mkoctfile.in.cc to avoid using compiler wrappers
* Added a check to ensure mkoctfile works correctly
* update libarchive and fix version of libarchive cmake dependency
* (at least) libarchive 3.3.3 dependency from cmake 3.15.0
* cmake depends on libarchive 3.1.0 if not specified differently
currently it is applied to cmake <3.15.0
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
* Initialize _cached_specs at the file level and check for spec in it before searching mirrors in try_download_spec.
* Make _cached_specs a set to avoid duplicates
* Fix packaging test
* Ignore build_cache in stage when spec.yaml files are downloaded.
* draco: update versions
+ Added versions 7.3.0 and 7.4.0.
+ Change several variants to be default TRUE since most consumers need these
variants enabled (eospac, lapack, parmetis, superlu-dist). Change variant name
for `+superlu_dist` to use hyphen instead of underscore. This makes the
variant name consistent with the spackage name for `superlu-dist`.
+ Clean up `depends_on` instructions and avoid specifying `type` when possible.
+ Provide patch files that are necessary for some machines (mostly Cray
machines).
* Remove trailing whitespace.
* Revert variant name to use underscore.
* add maintainer information.
`spack -V` previously always returned the version of spack from
`spack.spack_version`. This gives us a general idea of what version
users are on, but if they're on `develop` or on some branch, we have to
ask more questions.
This PR makes `spack -V` check whether this instance of Spack is a git
repository, and if it is, it appends useful information from `git
describe --tags` to the version. Specifically, it adds:
- number of commits since the last release tag
- abbreviated (but unique) commit hash
So, if you're on `develop` you might get something like this:
$ spack -V
0.13.3-912-3519a1762
This means you're on commit 3519a1762, which is 912 commits ahead of
the 0.13.3 release.
If you are on a release branch, or if you are using a tarball of Spack,
you'll get the usual `spack.spack_version`:
$ spack -V
0.13.3
This should help when asking users what version they are on, since a lot
of people use the `develop` branch.
This PR adds a new command to Spack:
```console
$ spack containerize -h
usage: spack containerize [-h] [--config CONFIG]
creates recipes to build images for different container runtimes
optional arguments:
-h, --help show this help message and exit
--config CONFIG configuration for the container recipe that will be generated
```
which takes an environment with an additional `container` section:
```yaml
spack:
specs:
- gromacs build_type=Release
- mpich
- fftw precision=float
packages:
all:
target: [broadwell]
container:
# Select the format of the recipe e.g. docker,
# singularity or anything else that is currently supported
format: docker
# Select from a valid list of images
base:
image: "ubuntu:18.04"
spack: prerelease
# Additional system packages that are needed at runtime
os_packages:
- libgomp1
```
and turns it into a `Dockerfile` or a Singularity definition file, for instance:
```Dockerfile
# Build stage with Spack pre-installed and ready to be used
FROM spack/ubuntu-bionic:prerelease as builder
# What we want to install and how we want to install it
# is specified in a manifest file (spack.yaml)
RUN mkdir /opt/spack-environment \
&& (echo "spack:" \
&& echo " specs:" \
&& echo " - gromacs build_type=Release" \
&& echo " - mpich" \
&& echo " - fftw precision=float" \
&& echo " packages:" \
&& echo " all:" \
&& echo " target:" \
&& echo " - broadwell" \
&& echo " config:" \
&& echo " install_tree: /opt/software" \
&& echo " concretization: together" \
&& echo " view: /opt/view") > /opt/spack-environment/spack.yaml
# Install the software, remove unecessary deps and strip executables
RUN cd /opt/spack-environment && spack install && spack autoremove -y
RUN find -L /opt/view/* -type f -exec readlink -f '{}' \; | \
xargs file -i | \
grep 'charset=binary' | \
grep 'x-executable\|x-archive\|x-sharedlib' | \
awk -F: '{print $1}' | xargs strip -s
# Modifications to the environment that are necessary to run
RUN cd /opt/spack-environment && \
spack env activate --sh -d . >> /etc/profile.d/z10_spack_environment.sh
# Bare OS image to run the installed executables
FROM ubuntu:18.04
COPY --from=builder /opt/spack-environment /opt/spack-environment
COPY --from=builder /opt/software /opt/software
COPY --from=builder /opt/view /opt/view
COPY --from=builder /etc/profile.d/z10_spack_environment.sh /etc/profile.d/z10_spack_environment.sh
RUN apt-get -yqq update && apt-get -yqq upgrade \
&& apt-get -yqq install libgomp1 \
&& rm -rf /var/lib/apt/lists/*
ENTRYPOINT ["/bin/bash", "--rcfile", "/etc/profile", "-l"]
```
* Add binary_distribution::get_spec which takes concretized spec
Add binary_distribution::try_download_specs for downloading of spec.yaml files to cache
get_spec is used by package::try_install_from_binary_cache to download only the spec.yaml
for the concretized spec if it exists.
Previously, the install stage would compile in things that were
disabled during the build_ext phase. This would also result in the
build pulling in locally installed versions of libraries that were
disabled. The install process doesn't honor the same command-line
flags that build_ext does, but does call build_ext again. Avoid the
whole issue by just writing the options to setup.cfg
Also, add the Imagemagick dependency for tests.
The Spec parser currently calls `spec.traverse()` after every parse, in
order to set the platform if it's not set. We don't need to do a full
traverse -- we can just check the platforrm as new specs are parsed.
This takes about a second off the time required to import all packages in
Spack (from 8s to 7s).
- [x] simplify platform-setting logic in `SpecParser`.
`filename_for_package_name()` and `dirname_for_package_name()`
automatically construct a Spec from their arguments, which adds a fair
amount of overhead to importing lots of packages. Removing this removes
about 11% of the runtime of importing all packages in Spack (9s -> 8s).
- [x] `filename_for_package_name()` and `dirname_for_package_name()` now
take a string `pkg_name` arguments instead of specs.
* `Environment.__init__` is now synchronized with all writing operations
* `spack uninstall` now synchronizes its updates to any associated environment
* A side effect of this is that the environment is no longer updated piecemeal as specs are uninstalled - all specs are removed from the environment before they are uninstalled
* pumi: sim version check, meshes via submodule, ctest
* Apply suggestions from code review
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* pumi: update comment on master version string
* pumi: description of simmodsuite_version_check variant
* pumi: add white space to variant description
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
This commit makes two fundamental corrections to tests:
1) Changes 'matches' to the correct 'match' argument for 'pytest.raises' (for all affected tests except those checking for 'SystemExit');
2) Replaces the 'match' argument for tests expecting 'SystemExit' (since the exit code is retained instead) with 'capsys' error message capture.
Both changes are needed to ensure the associated exception message is actually checked.
* git: add version 2.25.0 and fixup pcre dependency
pcre2 became optional in 2.14 and the default in 2.18. I noticed this
as git was compiling against the system pcre2 (spack was
specifying pcre as the dependency).
* missed a chunk from my internal repo
Updates to environments were not multi-process safe, which prevented them from taking advantage of parallel builds as implemented in #13100. This is a minimal set of changes to enable `spack install` in an environment to be parallelized:
- [x] add an internal lock, stored in the `.spack-env` directory,
to synchronize updates to `spack.yaml` and `spack.lock`
- [x] add `Environment.write_transaction` interface for this lock
- [x] makes use of `Environment.write_transaction` in `install`,
`add`, and `remove` commands
- `uninstall` is not synchronized yet; that is left for a future PR.
* Set netcdf-fortran to build serially with Intel compiler
This PR turns off parallel builds when the Intel compiler is used.
Builds with the Intel compiler will fail otherwise.
* Change how parallel build is handled
Use patch from netcdf-fortran project to turn off parallel buildi for
version 4.5.2.
* diffutils: Changed the handling of undeclared functions from warning to error.
* diffutils: Change the handling of warnings or error
* Delete '-Werror=implicit-function-declaration'
* Add '-Qunused-arguments'
Replace the deprecated ADIOS1 backend default with ADIOS2 default.
Disable sz since we do not need it and it conflicts with supported
version ranges between ADIOS2 and ADIOS1 if someone enables both.
* intel-tbb: Fix install names on Darwin
Intel-TBB's libraries on Darwin are installed with "@rpath" prefixed
to their install names. This was found to cause issues building the root
package on Darwin due to libtbb not being found when running some of the
generated tools linking to it.
Follow example from other packages with the same issue and fixup up install
names for intel-tbb post install.
* intel-tbb: fix flake8 errors
* Dirty hack to fix#14148
* A better way of checking if a package is taken from system
* Update var/spack/repos/builtin/packages/qt/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update qt/package.py
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
Spack commands referring to upstream-installed specs by hash have
been broken since 6b619da (merged September 2019), which added a new
Database function specifically for parsing hashes from command-line
specs; this function was inappropriately attempting to acquire locks
on upstream databases.
This PR updates the offending function to avoid locking upstream
databases and also updates associated tests to catch regression
errors: the upstream database created for these tests was not
explicitly set as an upstream (i.e. initialized with upstream=True)
so it was not guarding against inappropriate accesses.
* Add the py-merlinwf package
* Fix importlib-resources package name for spack naming convention.
* Add build to dependencies and add updated versions.
* Remove pytest-runner dependency.
* Fix typo.
* Add the py-tabulate dependency.
* Add sha256 for version 1.0.0
* Change to maestro version 1.1.5.
* Increase to version 1.0.4.
* Bump maestrowf version and prepare for new pypi version.
* Add sha256sum for version 1.1.5
* Add version 1.1.1.
Update maestrowf version to 1.1.7
* Add versions 1.0.5, 1.1.0, 1.1.1 and potential 1.2.0.
* Add version 1.2.0 and when on maestrowf@1.1.6.
* Add version 1.2.2 , remove 1.2.1 and 1.1.0.
* Update var/spack/repos/builtin/packages/py-merlinwf/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-merlinwf/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Remove mysql variant until new mysql interface module is enabled.
The mysql code may be removed.
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
* Unified environment modifications in config files
fixes#13357
This commit factors all the code that is involved in
the validation (schema) and parsing of environment modifications
from configuration files in a single place. The factored out
code is then used for module files and compiler configuration.
Attributes were separated by dashes in `compilers.yaml` files and
by underscores in `modules.yaml` files. This PR unifies the syntax
on attributes separated by underscores.
Unit testing of environment modifications in compilers
has been refactored and simplified.
* Get py-torch to build caffe2
This PR gets the py-torch package to build with caffe2, and closes
issue #14576. If building on a machine with CUDA but no GPU the build
will try to build with all compute capabilities. Older compute
capabilities are not supported so the build will fail. The list of
capabilities can be passed to the build using values set in the
cuda_arch variant. Likewise, conflicts are also set to catch if the
unsupported capabilities are listed in cuda_arch.
This PR also sets version constraints on using an external mkldnn for
newer versions. Currenly, only versions up to 0.4 use an external mkldnn
library. Also, the cuda variant is set to True, which restores
previous behavior.
* Update var/spack/repos/builtin/packages/py-torch/package.py
Fix typo.
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Adjust conflicts
This commit adjusts the conflicts. There is an issue with the
cuda_arch=20 conflicts directive as there is a conflicting dependency
with any version >=1.1 and a cuda_arch=20 dependency specified in
CudaPackage that gets trapped first.
* Use a common message for conflicts
This commit adds a variable to contain the bulk of the message stringi
for the cuda_arch conflicts. This is used along with a version string
in the conflicts directives messages.
* Fix the strings
- Use a multiline string for the cuda_arch_conflict variable.
- No need for format() in the msg value.
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
The perl binary can also be called `perlX.Y.Z` if using a development
build or simply using the versioned binary.
We were also dropping all sbang arguments, since `exec $interpreter_v`
was only using the first element of the `interpreter_v` array.
Using `sys.executable` to run Python in a sub-shell doesn't always work in a virtual environment as the `sys.executable` Python is not necessarily compatible with any loaded spack/other virtual environment.
- revert use of sys.executable to print out subshell environment (#14496)
- try instead to use an available python, then if there *is not* one, use `sys.executable`
- this addresses RHEL8 (where there is no `python` and `PYTHONHOME` issue in a simpler way
Openblas target is now determined automatically upon inspection of
`TargetList.txt`. If the spack target is a generic architecture family
(like x86_64 or aarch64) the DYNAMIC_ARCH setting is used
instead of targeting a specific microarchitecture.
Instead of another script, this adds a simple argument to `spack
commands` that updates the completion script. Developers can now just
run:
spack commands --update-completion
This should make it simpler for developers to remember to run this
*before* the tests fail. Also, this version tab-completes.
* Try to switch to a newer fork of ftgl
* Allow ROOT to be more flexible about ftgl versions
* Turn ftgl into a CMakePackage
* Update ROOT ftgl dep since 2.1.3 isn't a thing anymore
* Please flake8
* Try to bring back the doc variant
* Comment it out instead of removing it
* Fix root+x breakage from #11129
* Separate out +opengl breakage
* Not strictly X11-related, but more breakage from #11129
* Another X11 breakage found while building 6.08.x
* Don't put system headers in SPACK_INCLUDE_DIRS + deduplicate
* xextproto is only a dependency in +x builds
Previously the `spack load` command was a wrapper around `module load`. This required some bootstrapping of modules to make `spack load` work properly.
With this PR, the `spack` shell function handles the environment modifications necessary to add packages to your user environment. This removes the dependence on environment modules or lmod and removes the requirement to bootstrap spack (beyond using the setup-env scripts).
Included in this PR is support for MacOS when using Apple's System Integrity Protection (SIP), which is enabled by default in modern MacOS versions. SIP clears the `LD_LIBRARY_PATH` and `DYLD_LIBRARY_PATH` variables on process startup for executables that live in `/usr` (but not '/usr/local', `/System`, `/bin`, and `/sbin` among other system locations. Spack cannot know the `LD_LIBRARY_PATH` of the calling process when executed using `/bin/sh` and `/usr/bin/python`. The `spack` shell function now manually forwards these two variables, if they are present, as `SPACK_<VAR>` and recovers those values on startup.
- [x] spack load/unload no longer delegate to modules
- [x] refactor user_environment modification calculations
- [x] update documentation for spack load/unload
Co-authored-by: Todd Gamblin <tgamblin@llnl.gov>
This PR adds a `--format=bash` option to `spack commands` to
auto-generate the Bash programmable tab completion script. It can be
extended to work for other shells.
Progress:
- [x] Fix bug in superclass initialization in `ArgparseWriter`
- [x] Refactor `ArgparseWriter` (see below)
- [x] Ensure that output of old `--format` options remains the same
- [x] Add `ArgparseCompletionWriter` and `BashCompletionWriter`
- [x] Add `--aliases` option to add command aliases
- [x] Standardize positional argument names
- [x] Tests for `spack commands --format=bash` coverage
- [x] Tests to make sure `spack-completion.bash` stays up-to-date
- [x] Tests for `spack-completion.bash` coverage
- [x] Speed up `spack-completion.bash` by caching subroutine calls
This PR also necessitates a significant refactoring of
`ArgparseWriter`. Previously, `ArgparseWriter` was mostly a single
`_write` method which handled everything from extracting the information
we care about from the parser to formatting the output. Now, `_write`
only handles recursion, while the information extraction is split into a
separate `parse` method, and the formatting is handled by `format`. This
allows subclasses to completely redefine how the format will appear
without overriding all of `_write`.
Co-Authored-by: Todd Gamblin <tgamblin@llnl.gov>
The gpg2 command isn't always around; it's sometimes called gpg. This is
the case with the brew-installed version, and it's breaking our tests.
- [x] Look for both 'gpg2' and 'gpg' when finding the command
- [x] If we find 'gpg', ensure the version is 2 or higher
- [x] Add tests for version detection.
- [x] Factored to a common place the fixture `testing_gpg_directory`, renamed it as
`mock_gnupghome`
- [x] Removed altogether the function `has_gnupg2`
For `has_gnupg2`, since we were not trying to parse the version from the output of:
```console
$ gpg2 --version
```
this is effectively equivalent to check if `spack.util.gpg.GPG.gpg()` was found. If we need to ensure version is `^2.X` it's probably better to do it in `spack.util.gpg.GPG.gpg()` than in a separate function.
Despite trying very hard to keep dicts out of our hash algorithm, we seem
to still accidentally add them in ways that the tests can't catch. This
can cause errors when hashes are not computed deterministically.
This fixes an error we saw with Python 3.5, where dictionary iteration
order is random. In this instance, we saw a bug when reading Spack
environment lockfiles -- The load would fail like this:
```
...
File "/sw/spack/lib/spack/spack/environment.py", line 1249, in concretized_specs
yield (s, self.specs_by_hash[h])
KeyError: 'qcttqplkwgxzjlycbs4rfxxladnt423p'
```
This was because the hashes differed depending on whether we wrote `path`
or `module` first when recomputing the build hash as part of reading a
Spack lockfile. We can fix it by ensuring a determistic iteration order.
- [x] Fix two places (one that caused an issue, and one that did
not... yet) where our to_node_dict-like methods were using regular python
dicts.
- [x] Also add a check that statically analyzes our to_node_dict
functions and flags any that use Python dicts.
The test found the two errors fixed here, specifically:
```
E AssertionError: assert [] == ['Use syaml_dict instead of ...pack/spack/spec.py:1495:28']
E Right contains more items, first extra item: 'Use syaml_dict instead of dict at /Users/gamblin2/src/spack/lib/spack/spack/spec.py:1495:28'
E Full diff:
E - []
E + ['Use syaml_dict instead of dict at '
E + '/Users/gamblin2/src/spack/lib/spack/spack/spec.py:1495:28']
```
and
```
E AssertionError: assert [] == ['Use syaml_dict instead of ...ack/architecture.py:359:15']
E Right contains more items, first extra item: 'Use syaml_dict instead of dict at /Users/gamblin2/src/spack/lib/spack/spack/architecture.py:359:15'
E Full diff:
E - []
E + ['Use syaml_dict instead of dict at '
E + '/Users/gamblin2/src/spack/lib/spack/spack/architecture.py:359:15']
```
Rework Spack's continuous integration workflow to be environment-based.
- Add the `spack ci` command, which replaces the many scripts in `bin/`
- `spack ci` decouples the CI workflow from the spack instance:
- CI is defined in a spack environment
- environment is in its own (single) git repository, separate from Spack
- spack instance used to run the pipeline is up to the user
- A new `gitlab-ci` section in environments allows users to configure how
specs in the environment should be mapped to runners
- Compilers can be bootstrapped in the new pipeline workflow
- Add extensive documentation on pipelines (see `pipelines.rst` for further details)
- Add extensive tests for pipeline code
* Update and fix samtools
This PR adds samtools-1.10 and sets the htlib directory so that the
spack built htslib can be used. This PR also arranges the dependencies
so that the htslib sequence is grouped on its own. Finally, the bzip2
dependency is removed and python and perl run dependencies are added.
* Fix samtools when built with ncurses+termlib
* The CI flake8 tests require lowercase variable
Interestingly, this did not show up when I ran `spack flake8` locally.
* Reorder GNU mirrors (#14395)
As @adamjstewart commented in #14395, GNU suggests to use
their mirror. So reorder the mirror to the top.
GNU Doc: https://www.gnu.org/prep/ftp.en.html
* Use spack.util.url.join for URLs in GNU mirrors (#14395)
One should not use os.path.join for URLs. This does only
work on POSIX systems.
Instead use spack.util.url.join.
So every part in spack uses the same url joining method.
Unfortunately UCX 1.7.0 is appearing in RPMS before it's officially released.
There's a problem with Open MPI 4.0.x where x < 3 and this version of UCX,
namely that the UCT BTL fails to compile.
See https://github.com/open-mpi/ompi/issues/7128
This patch works around the problem by disabling the build of the UCT BTL
for releases 4.0.0 to 4.0.2.
add hppritcha (me) as maintainer
Signed-off-by: Howard Pritchard <howardp@lanl.gov>
* Add +cfitsio variant to wcslib dependency
* Replace ncurses dependency with readline dependency
casacore explicitly may depend on readline, not ncurses
* Add workaround for casacore's readline dependency
casacore optionally depends upon readline, but it's CMakeLists.txt provides no
user control over whether or not readline becomes a dependency. As readline is
often present by default on systems, it's better for this package to explicitly
depend on readline in order to prevent linking to whatever system version of the
library happens to be found during the build process. This should be considered
a workaround until casacore's CMakeLists.txt is fixed.
* Apply workaround for casacore's dependency on SOFA
Similar to the issues with casacore's readline dependency, casacore's optional
dependency on SOFA does not provide the user with a means of controlling the
dependency during build time. Unlike the readline library, the SOFA library is
unlikely to exist on most systems by default. As the SOFA dependency is only
optionally used for testing casacore, requiring it by default is not a good
workaround. Until casacore's CMakeLists.txt is fixed, this variant has been
removed to avoid unexpected library dependencies in the installed package.
* Add newer casacore versions
* Add mpokorny to maintainer field
- The suite-sparse author publishes new versions starting with 5.5.0 on GitHub, see https://github.com/DrTimothyAldenDavis/SuiteSparse/releases and http://faculty.cse.tamu.edu/davis/SuiteSparse/
- change spack to download from there
- updated sha256 checksums from GitHub for all available releases
- For versions 5.4.0, 5.5.0, 5.6.0 there is a slightly different compilation necessary: first `make default` then `make install`.
Summary of the version changes (+ added, -removed [because not available on GitHub]):
```
+ 5.6.0
+ 5.5.0
+ 5.4.0
5.3.0
5.2.0
+ 5.1.2
5.1.0
+ 5.0.0
+ 4.5.6
4.5.5
- 4.5.4
4.5.3
- 4.5.1
```
to disabled use of libunwind. Without this mesa fails to build
using recent Cray compilers - cce 9 and higher - on aarch64 systems.
Signed-off-by: Howard Pritchard <hppritcha@gmail.com>
It seems that stable versions of perl also install a `perlX.Y.Z` binary.
However, it seems that this binary can hang if used in conjunction with
Spack's sbang workaround, as observed during automake's build.
* Update py-csvkit
This PR updates the py-csvkit package. This version requires a python
stack based on agate and this PR includes the new dependency packages.
- py-agate-dbf
- py-agate-excel
- py-agate-sql
- py-agate
- py-dbfread
- py-isodate
- py-leather
- py-parsedatetime
- py-python-slugify
- py-pytimeparse
- py-text-unidecode
* Replace the copy/pasted apostrophes
Python 2 can not process the copy/pasted apostrophes so replace them
with standard single quote character.
* Add version constraints on dependencies
* Add version contraint to graphviz patches
This PR restricts the graphviz version that the patches for building
with the Intel compiler apply to. The two patches that were needed for
building graphviz-2.40.1 with the Intel compiler are not needed for
graphviz-2.42.2.
* Adjust the qt dependencies
The qt5 patch is only needed for graphviz-2.40.1. However, that version
will only compile with GCC-6 or greater.
* add variant for enabling testing
* add variant for enabling testing
* enable tests and clean up other options
* enable tests and clean up other options
* add numbered versions
* add numbered versions
* updates to avoid enable_tests variant; correct versioning
* updates to avoid enable_tests variant; correct versioning
* fixes for style
* appropriate partitioners are enabled if 'all' is specified - so no need to check in spec
* revert accidental change to copyright
* remove erroneously re-introduced line about tests
* new spack recipe for build Jali - unstructured mesh infrastructure for multiphysics applications
* remove the +parallel condition for mstk, update 1.1.1 sha256sum and whitespace cleanup
* reformat description
* cut down description
* Fixes:
1. MPI_THREAD_MULTIPLE problem with OpenMPI and UCX.
Changes:
1. OpenMPI provides two new depends_on options which result in UCX being compiled with multiple threads support. One implicit when OpenMPI 3.x is used, MPI_THREAD_MULTIPLE is enabled by default, and one explicit for OpenMPI <= 2.x, MPI_THREAD_MULTIPLE is disabled by default.
2. Extends UCX package to allow "Enable thread support in UCP and UCT" option.
3. Adds sha256 sums of UCX releases 1.6.1 and 1.2.0.
More details:
Fixes the issue with OpenMPI where programs which use MPI_THREAD_MULTIPLE will fail to execute because UCP worker didn't support it.
During the OpenMPI package installation it's the +thread_multiple spec was not propagated to UCX nor UCX handled it at all.
Now, the OpenMPI package is capable of handling +thread_multiple spec when UCX is request and the UCX package correctly handles +thread_multiple and compiles with the --enable-mt option.
Error message during runtime:
pml_ucx.c:226 Error: UCP worker does not support MPI_THREAD_MULTIPLE
* Adapts check of specs to read better and is the suggested form in the docs.
* Explicitly disables multithreading of UCX if +thread_multiple option is not used.
* Rework texlive package to install from source
This PR reworks the texlive package so that it installs from versioned
source distibution files. This is preferred over installing the binary
package for several reasons. For the binary installation:
1. Each component is downloaded, so can not use a spack mirror.
2. Changes in components over time are not reflected in spack hash.
3. Some of the binaries do not run due to glibc issues, depending on OS.
This PR keeps the binary installation as an option but it should be
considered deprecated, and probably rewmoved at some point.
This PR depends on zziplib from PR #14318.
* Fix flake8 issues
One of the perl scripts was encoded with ISO-8859-1, which caused the
sbang replacement process to fail when spack uses python3. This PR
converts the ps_scan script to UTF-8 encoding.
This PR converts ISO-8859 encoding to UTF-8 encoding for three scripts in
repeatmasker.
- the main RepeatMasker script
- SimpleBatcher.pm
- wublastToCrossmatch.pl
The ISO-8859 encoding prevented the sbang replacement of long paths when
spack uses python3.
* Update the icu4c package
This PR makes several changes to the icu4c package
1. add updated version to 65.1
2. modify the default url as project has moved to github
3. set UTF-8 locale to support building from source files in UTF-8
format
Note that the older versions are not available on github so explicit urls
were used. This PR will close#14399.
* Consolidate the urls
Consolidate the URLs in the `version` directives by using an if test in
`url_for_version`.
* Put version and sha256 on same line
* Put top level url back
* Update and fix bcftools package
This PR updates bcftools to 1.10.2 and is dependent on PR #14504.
This PR also fixes builds of other versions. Versions 1.2-1.4 did not
use autotools so when the packaeg was converted to use autotools with
version 1.6 those older versions could no longer build. Also, those
versions needed to be patched to use an external htsllib. The method of
finding the external htslib is also different for those older versions.
In addition, this PR adds two variants to bcftools:
- libgsl
- perl-filters
Finally, dependencies for perl and python are added, and an unused
dependency for libzip was removed.
* Do not use '@' in variant description
The '@' character in a variant description will cause a problem with
`spack info`.
```
==> Error: Incomplete color format: '@' in
expressions, for @1.8:
```
* Fix error with python2 processing this package
* Update htslib and add libcurl variant
This PR updates htslib to version 1.10.2 and adds a libcurl variant. The
libcurl variant defaults to True because, while it is optional, it is
highly recommended by the project developers.
Other things done:
- be consistent with quotes
* Change version in variant description
Apparently, `spack info` does not like the `@` character in a variant
description.
```
==> Error: Incomplete color format: '@' in
@1.3:.
```
The pathadd function was using setopt to configure zsh for word
splitting, which leaks out of the function and breaks default
functionality in a number of external zsh plugins and packages. This
switches to emulate -L, just as the spack function uses, to keep the
setting local to the function.
* libcircle: add develop version from git master branch
* Update var/spack/repos/builtin/packages/libcircle/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* libcircle: flake8 fix i think
* libcircle: naming things
* libcircle: 🐑 my sacrifice to the flake8 gods
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
* Add 20181226 release of pgmath
* 20190329 release of pgmath requires match for CMPLX macro.
* Add llvm-flang package for Flang fork of LLVM
* Add new and old flang releases.
* Add cmake and python dependencies.
* Update dependencies on llvm-flang and pgmath.
* Fix cmake args and change spec to reflect llvm-flang package.
* change copyright date through 2020.
* Reference Flang package more explicitly.
* More robust support for python executable.
* import os no longer needed, picked up by flake8.
* Use built-in target spec. Variant and targets follow style in main LLVM package.
* Get rid of targets list and only support one target for now.
* Sparc does not appear to be supported in Flang.
* Raise InstallError if architecture not supported.
* fixes#967
* Version bump to 0.9.1
- Bugfixes for spack find
- 0.9.1 can read specs from current develop.
* Don't assume spack is in the path when building docs.
* Quick fix for relocation issues.
* elf relocation fix: cherry-picked from develop branch (#6889)
* Revert "Quick fix for relocation issues."
This reverts commit 57608a6dc4.
* Buildcache: relocate fixes (#6512)
* Updated function which checks if a binary file needs relocation.
Previously this was incorrectly identifying ELF binaries as symbolic
links (so they were being excluded from relocation). Added test to
check that ELF binaries are not considered symlinks.
* relocate_text was not replacing paths in text files. Added test to
check that text files are relocated properly (i.e. paths in the file
are converted to the new prefix).
* Exclude backup files created by filter_file when installing from
binary cache.
* Update write_buildinfo_file method signature to distinguish between
the spec prefix and the working directory for the binary cache
package.
* Final changes for v0.11.0 (#6318)
* Fix logo link in README.md to point to the develop branch. (#6969)
* Compiler flag handlers (#6415)
This adds the ability for packages to apply compiler flags in one of
three ways: by injecting them into the compiler wrapper calls (the
default in this PR and previously the only automated choice);
exporting environment variable definitions for variables with
corresponding names (e.g. CPPFLAGS=...); providing them as arguments
to the build system (e.g. configure).
When applying compiler flags using build system arguments, a package
must implement the 'flags_to_build_system_args" function. This is
provided for CMake and autotools packages, so for packages which
subclass those build systems, they need only update their flag
handler method specify which compiler flags should be specified as
arguments to the build system.
Convenience methods are provided to specify that all flags be applied
in one of the 3 available ways, so a custom implementation is only
required if more than one method of applying compiler flags is
needed.
This also removes redundant build system definitions from tutorial
examples
* Fix type issues with setting flag handlers (#6960)
The flag_handlers method was being set as a bound method, but when
reset in the package.py file it was being set as an unbound method
(all python2 issues). This gets the underlying function information,
which is the same in either case.
The bug was uncovered for parmetis in #6858. This is a partial fix.
Included are changes to the parmetis package.py file to make use of
flag_handlers.
* Bump version to 0.11.1
* Added flags to unit tests + OSX build done once per day (#6988)
* Adding flags to codecov reports
* OSX builds are triggered once a day
* Pull R list_urls from upstream.
* travis: removed /usr/local/include/c++ before installing gcc on OSX (#6515) (#7027)
"brew install gcc" fails for travis build because of an existing
/usr/local/include/c++. This commit removes the offending file
as suggested by brew.
* Fix gfortran 7 detection (#7017)
* Add NameError to exceptions caught from configure_args in module generation (#7173)
* Revert "Binary caching: remove symlinks, copy files instead (#9747)"
This reverts commit 058cf81312.
* Make Spack relocate text files in build caches with relative binaries
* add the tfel package
* fix the tfel package
* fix the tfel package
* fix the tfel package
* Taking Adam J. Steward' remarks into account
* fixes trailing white spaces
* Update description
* Update dependencies following @adamjstewart adices
* Style fixes
* Style fixes
* Add java optional support
* add the maintainers attribute (following @alalazo advice), disable interface not selected (following @adamjstewart advice)
* flake8 fixes
* Fix Cast3M and python-bindings support. Python detection is made compatible with cmake'FindPythonLibs module (at least how it is used in TFEL)
* Style fixes
* Style fixes
* Fix test on python version
* Follow @adamjstewart advices: code is much cleaner and readable
* Small fix
* Small fix
* Add comment
* Small fix in cmake option
* try again (trying to overcome Travis CI unstable build process)
* Add support for the MFrontGenericInterfaceSupport project (MGIS)
* Style fixes
* Package documentation update
* Package documentation update
* Fix a typo thanks to Andreas Baumbach review
* Follow Adam J. Stewart advices
* Fix type
* bugfix: add back r's for invalid regexes
* tutorial basics section: fix gcc install version
* version bump: v0.12.1
* bugfix: bring in .travis.yml from develop
* Add new TFEL' versions (3.0.4, 3.1.4 and 3.2.1). Add new MGIS version (1.0.1). Fix MGIS dependency
* merge with spack:develop
* add missing dependency
* new versions of and
* Fix MGIS url. Fix duplicate variant in TFEL
* Fix tfel packaging according to Adam J. Stewart' advices
* Fix flake8 warning
Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
Co-authored-by: Todd Gamblin <tgamblin@llnl.gov>
Co-authored-by: Peter Scheibel <scheibel1@llnl.gov>
Co-authored-by: Greg Becker <becker33@llnl.gov>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
* Add ADF
* Fix typo and lint
* fix lint again
* one more lint fix
* fix identation
* still stying to fix identation
* one final fix
* import needed libraries
* changes as per reviewer's request
fix setup environment function, enhance recipe
* add import os once again
* chnages as per reviewer's request
When removing packages from a view, extensions were being deactivated
in an arbitrary order. Extensions must be deactivated in preorder
traversal (dependents before dependencies), so when this order was
violated the view update would fail.
This commit ensures that views deactivate extensions based on a
preorder traversal and adds a test for it.
* Set conflicts for qt5 and the Intel compiler
This PR sets a `conflicts` statement for QT5 and the Intel compiler.
* New patches for intel compiles
This commit adds two patches to get QT5 to compile with the intel
compilers. The two patches are very similar but the file being patched
was changed substantially between qt-5.11 and qt-5.12. The patch checks
versions of both GCC and Intel compilers to know when to use overflow
builtis. Essentially, GCC must be >= 5 and Intel must be >= 18.
The sqlite dependency needs the `+column_metadata` variant when the
Intel compiler is used. That is made conditional on the compiler but it
might make sense to make that the default for the sqlite dependency.
Some other changes were made based on testing builds of various QT5
versions with several Intel compilers.
- The libxext dependency is still needed for QT5
- A dependency on libxrender is needed
- The gtk option format needs to be constrained at the qt@5.7 level, not
qt@5.8.
- An extra configure option is needed for the sql plugins RPATH
* Adding a new package, scikit-build, which is very useful for building python extensions
* Update package.py
* Update package.py
Trying to address flake8 corrections
* Update var/spack/repos/builtin/packages/py-scikit-build/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-scikit-build/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update package.py
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
* py-rapidjson: new package at 0.9.1
* py-rapidjson: rename to py-python-rapidjson, use PyPI mirror
* py-python-rapidjson: add missing deps
* python-rapidjson: use short PyPI url
* py-python-rapidjson: remove extra dependencies
* Spack can uninstall unused specs
fixes#4382
Added an option to spack uninstall that removes all unused specs i.e.
build dependencies or transitive dependencies that are left
in the store after the specs that pulled them in have been removed.
* Moved the functionality to its own command
The command has been named 'spack autoremove' to follow the naming used
for the same functionality by other widely known package managers i.e.
yum and apt.
* Speed-up autoremoving specs by not locking and re-reading the scratch DB
* Make autoremove work directly on Spack's store
* Added unit tests for the new command
* Display a terser output to the user
* Renamed the "autoremove" command "gc"
Following discussion there's more consensus around
the latter name.
* Preserve root specs in env contexts
* Instead of preserving specs, restrict gc to the active environment
* Added docs
* Added a unit test for gc within an environment
* Updated copyright to 2020
* Updated documentation according to review
Rephrased a couple of sentences, added references to
`spack find` and dependency types.
* Updated function naming and docstrings
* Simplified computation of unused specs
Since the new approach uses private attributes of the DB
it has been coded as a method of that class rather than a
freestanding function.
* Add platform flag to QT for linux+clang
* Extend QT platform support to more compilers and systems
* Unify QT5 configure options
* fixup! Unify QT5 configure options
* fixup! Unify QT5 configure options
* fixup! Unify QT5 configure options
* Fix newer flake8 and mac qt5 configure
* Add Thirdorder recipe
* Remove white spaces
* Converting recipe to a PythonPackage base class
* remove trailing spaces
* remove line at end of file
* enhance recipe as per reviewer
* fix post_install as requested by reviewer
* rename dir to py-thirderorder
* change checksum to sha256
* py-intervaltree: new package at 3.0.2
* py-intervaltree: fix checksum
* py-intervaltree: add py-setuptools dep
* py-intervaltree: use inclusive ranges
* py-intervaltree: change py-test dep type
Beginning with numpy > 1.16 when using older versions of gcc the
`std=c99` flag must be used. The Intel compiler depends on gcc for its
language extensions so the version of gcc is important. If the version
of gcc used by the Intel compiler is one that requires the `-std=c99`
flag then that flag will have to be used for a build with the Intel
compiler as well.
This PR tests the version of gcc used by the Intel compiler and will
abort the build if the gcc version is < 4.8 and inject the `-std=c99`
flag if >= 4.8 and < 5.1. This will cover the system gcc compiler and
any gcc environment module loaded at build time.
Due to formatting differences, the older version of perl-bioperl was
getting picked up as the preferred version. This PR explicitly sets the
newer version to be preferred.
Because of a bug in the current concretizer,
spack install gromacs
fails because gromacs depends on hwloc (default is v2), and Open MPI
(the default MPI library) depends on hwloc v1.
As discussed in https://github.com/spack/spack/issues/14339, this
workaround should be removed once the concretizer is fixed
Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
* create package py-zarr
* specify setuptools versions
* add more dependencies, improve style
* Update var/spack/repos/builtin/packages/py-zarr/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-zarr/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-zarr/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* add dependencies, remove python version constraint
* remove windows specific dependency
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
The imports in `spec.py` are getting to be pretty unwieldy.
- [x] Remove all of the `import from` style imports and replace them with
`import` or `import as`
- [x] Remove a number names that were exported by `spack.spec` that
weren't even in `spack.spec`
Previously, `spack test` automatically passed all of its arguments to
`pytest -k` if no options were provided, and to `pytest` if they were.
`spack test -l` also provided a list of test filenames, but they didn't
really let you completely narrow down which tests you wanted to run.
Instead of trying to do our own weird thing, this passes `spack test`
args directly to `pytest`, and omits the implicit `-k`. This means we
can now run, e.g.:
```console
$ spack test spec_syntax.py::TestSpecSyntax::test_ambiguous
```
This wasn't possible before, because we'd pass the fully qualified name
to `pytest -k` and get an error.
Because `pytest` doesn't have the greatest ability to list tests, I've
tweaked the `-l`/`--list`, `-L`/`--list-long`, and `-N`/`--list-names`
options to `spack test` so that they help you understand the names
better. you can combine these options with `-k` or other arguments to do
pretty powerful searches.
This one makes it easy to get a list of names so you can run tests in
different orders (something I find useful for debugging `pytest` issues):
```console
$ spack test --list-names -k "spec and concretize"
cmd/env.py::test_concretize_user_specs_together
concretize.py::TestConcretize::test_conflicts_in_spec
concretize.py::TestConcretize::test_find_spec_children
concretize.py::TestConcretize::test_find_spec_none
concretize.py::TestConcretize::test_find_spec_parents
concretize.py::TestConcretize::test_find_spec_self
concretize.py::TestConcretize::test_find_spec_sibling
concretize.py::TestConcretize::test_no_matching_compiler_specs
concretize.py::TestConcretize::test_simultaneous_concretization_of_specs
spec_dag.py::TestSpecDag::test_concretize_deptypes
spec_dag.py::TestSpecDag::test_copy_concretized
```
You can combine any list option with keywords:
```console
$ spack test --list -k microarchitecture
llnl/util/cpu.py modules/lmod.py
```
```console
$ spack test --list-long -k microarchitecture
llnl/util/cpu.py::
test_generic_microarchitecture
modules/lmod.py::TestLmod::
test_only_generic_microarchitectures_in_root
```
Or just list specific files:
```console
$ spack test --list-long cmd/test.py
cmd/test.py::
test_list test_list_names_with_pytest_arg
test_list_long test_list_with_keywords
test_list_long_with_pytest_arg test_list_with_pytest_arg
test_list_names
```
Hopefully this stuff will help with debugging test issues.
- [x] make `spack test` send args directly to `pytest` instead of trying
to do fancy things.
- [x] rework `--list`, `--list-long`, and add `--list-names` to make
searching for tests easier.
- [x] make it possible to mix Spack's list args with `pytest` args
(they're just fancy parsing around `pytest --collect-only`)
- [x] add docs
- [x] add tests
- [x] update spack completion
I usually want to look at the Travis CI output, but I currently have to
scroll down to see it. This renames checks to be a bit shorter and more
consistent with Travis's naming, and also so that actions appear lower
than travis and codecov in the list of checks.
Test configuration files (except modules.yaml) were in the root level of
test/data, but should really just be in their own directory. The absence
of modules.yaml was also breaking module tests if we got module
preferences after tests started, as the mock modules.yaml was not in the
test directory.
The module hook would previously fail if there were no enabled module types.
- Instead of looking for a `KeyError`, default to empty list when the
config variable is not present.
- Convert lambdas to real functions for clarity.
- Remove legacy yaml_version_check() hook
- Remove the pre_run hook from `hook/__init__.py` and `main.py`
We want to discourage the use of pre-run hooks because they have to run
at startup. To keep Spack fast, we should do things like this lazily
instead of in hooks that require spidering directories full of modules.
* Updated versions and more variants
- Added 'develop' and '3.0.0' versions
- Added 'tau', 'upcxx', 'gotcha', and 'likwid'
* Added conflict handling for +cupti~cuda
* Removed extra cmake args line
Continuing to shave small bits of time off startup --
`spack.cmd.common.arguments` constructs many `Args` objects at module
scope, which has to be done for all commands that import it. Instead of
doing this at load time, do it lazily.
- [x] construct Args objects lazily
- [x] remove the module-scoped argparse fixture
- [x] make the mock config scope set dirty to False by default (like the
regular scope)
This *seems* to reduce load time slightly
Previously, fixtures like `config`, `database`, and `store` were
module-scoped, but frequently used as test function arguments. These
fixtures swap out global on setup and restore them on teardown. As
function arguments, they would do the right set-up, but they'd leave the
global changes in place for the whole module the function lived in. This
meant that if you use `config` once, other functions in the same module
would inadvertently inherit the mock Spack configuration, as it would
only be torn down once all tests in the module were complete.
In general, we should module- or session-scope the *STATE* required for
these global objects (as it's expensive to create0, but we shouldn't
module-or session scope the activation/use of them, or things can get
really confusing.
- [x] Make generic context managers for global-modifying fixtures.
- [x] Make session- and module-scoped fixtures that ONLY build filesystem
state and create objects, but do not swap out any variables.
- [x] Make seeparate function-scoped fixtures that *use* the session
scoped fixtures and actually swap out (and back in) the global
variables like `config`, `database`, and `store`.
These changes make it so that global changes are *only* ever alive for a
singlee test function, and we don't get weird dependencies because a
global fixture hasn't been destroyed.
`PackagePrefs` has had a class-level cache of data from `packages.yaml` for
a long time, but it complicates testing and leads to subtle errors,
especially now that we frequently manipulate custom config scopes and
environments.
Moving the cache to instance-level doesn't slow down concretization or
the test suite, and it just caches for the life of a `PackagePrefs`
instance (i.e., for a single cocncretization) so we don't need to worry
about global state anymore.
- [x] Remove class-level caches from `PackagePrefs`
- [x] Add a cached _spec_order object on each `PackagePrefs` instance
- [x] Remove all calls to `PackagePrefs.clear_caches()`
Commands like `spack blame` were printig poorly when redirected to files,
as colify reverts to a single column when redirected. This works for
list data but not tables.
- [x] Force a table by always passing `tty=True` from `colify_table()`
In "spack info" the Variants header currently has two blank
lines under it. That's too much. It looks like the actual
content belongs to something else.
Instead underline the headers to make things more obvious.
* Add Avizo Recipe
* make changes as per review
* fix home url and linting
* Fix url
* fix identation
* change checksum to sha256 instead of md5
* fix installation
* fix lint
* fix identation
* make it compatible with python 2.6
* enhancing recipe and fixing avizo licensing
changes as per suggestions from reviewer; fix licensing
* fix identation
* use new setup_run_environment function
This PR moves build smoke tests from TravisCI and migrates them to Github Actions. The result is that build tests are performed in parallel with unit tests and they don't hog additional resources on Travis. The workflow will not run if a PR only changes packages in the built-in repository, but will always run on pushes to develop or master.
* Removed build tests from Travis and passed them to Github Actions
* Store ~/.ccache in Github Actions cache
* Add filters on paths and make sure this workflow don't run
* Use paths-ignore and exclude only files in the built-in repo
* Added a badge to README.md
This commit removes the `python_version.py` unit test module
and the vendored dependencies `pyqver2.py` and `pyqver3.py`.
It substitutes them with an equivalent check done using
`vermin` that is run as a separate workflow via Github Actions.
This allows us to delete 2 vendored dependencies that are unmaintained
and substitutes them with a maintained tool.
Also, updates the list of vendored dependencies.
Before this commit we used to run the entire unit test suite
in the presence of a failure. Since we currently rely a lot
on the state of the filesystem etc. the end report was most
of the time showing spurious failures that were a consequence
of the first failing test.
This PR makes unit tests exit at the first failing test
Also, pin codecov at v4.5.4 (last one supporting Python 2.6)
`ViewDescriptor.regenerate()` calls `get_all_specs()`, which reads
`spec.yaml` files, which is slow. It's fine to do this once, but
`view.remove_specs()` *also* calls it immediately afterwards.
- [x] Pass the result of `get_all_specs()` as an optional parameter to
`view.remove_specs()` to avoid reading `spec.yaml` files twice.
`ViewDescriptor.regenerate()` was copying specs and stripping build
dependencies, which clears `_hash` and other cached fields on concrete
specs, which causes a bunch of YAML hashes to be recomputed.
- [x] Preserve the `_hash` and `_normal` fields on stripped specs, as
these will be unchanged.
`spack install` previously concretized, writes the entire environment
out, regenerated views, then wrote and regenerated views
again. Regenerating views is slow, so ensure that we only do that once.
- [x] add an option to env.write() to skip view regeneration
- [x] add a note on whether regenerate_views() shouldn't just be a
separate operation -- not clear if we want to keep it as part of write
to ensure consistency, or take it out to avoid performance issues.
Environments need to read the DB a lot when installing all specs.
- [x] Put a read transaction around `install_all()` and `install()`
to avoid repeated locking
Our `LockTransaction` class was reading overly aggressively. In cases
like this:
```
1 with spack.store.db.read_transaction():
2 with spack.store.db.write_transaction():
3 ...
```
The `ReadTransaction` on line 1 would read in the DB, but the
WriteTransaction on line 2 would read in the DB *again*, even though we
had a read lock the whole time. `WriteTransaction`s were only
considering nested writes to decide when to read, but they didn't know
when we already had a read lock.
- [x] `Lock.acquire_write()` return `False` in cases where we already had
a read lock.
If a write transaction was nested inside a read transaction, it would not
write properly on release, e.g., in a sequence like this, inside our
`LockTransaction` class:
```
1 with spack.store.db.read_transaction():
2 with spack.store.db.write_transaction():
3 ...
4 with spack.store.db.read_transaction():
...
```
The WriteTransaction on line 2 had no way of knowing that its
`__exit__()` call was the last *write* in the nesting, and it would skip
calling its write function.
The `__exit__()` call of the `ReadTransaction` on line 1 wouldn't know
how to write, and the file would never be written.
The DB would be correct in memory, but the `ReadTransaction` on line 4
would re-read the whole DB assuming that other processes may have
modified it. Since the DB was never written, we got stale data.
- [x] Make `Lock.release_write()` return `True` whenever we release the
*last write* in a nest.
Lock transactions were actually writing *after* the lock was
released. The code was looking at the result of `release_write()` before
writing, then writing based on whether the lock was released. This is
pretty obviously wrong.
- [x] Refactor `Lock` so that a release function can be passed to the
`Lock` and called *only* when a lock is really released.
- [x] Refactor `LockTransaction` classes to use the release function
instead of checking the return value of `release_read()` / `release_write()`
`ViewDescriptor.regenerate()` checks repeatedly whether packages are
installed and also does a lot of DB queries. Put a read transaction
around the whole thing to avoid repeatedly locking and unlocking the DB.
`Environment.added_specs()` has a loop around calls to
`Package.installed()`, which can result in repeated DB queries. Optimize
this with a read transaction in `Environment`.
Checks for deprecated specs were repeatedly taking out read locks on the
database, which can be very slow.
- [x] put a read transaction around the deprecation check
BundlePackages use a noop fetch strategy. The mirror logic was assuming
that the fetcher had a resource to cach after performing a fetch. This adds
a special check to skip caching if the stage is associated with a
BundleFetchStrategy. Note that this should allow caching resources
associated with BundlePackages.
When updating a mirror, Spack was re-retrieving all patches (since the
fetch logic for patches is separate). This updates the patch logic to
allow the mirror logic to avoid this.
Since cache_mirror does the fetch itself, it also needs to do the
checksum itself if it wants to verify that the source stored in the
mirror is valid. Note that this isn't strictly required because fetching
(including from mirrors) always separately verifies the checksum.
The targets for the cosmetic paths in mirrrors were being calculated
incorrectly as of fb3a3ba: the symlinks used relative paths as targets,
and the relative path was computed relative to the wrong directory.
When creating a cosmetic symlink for a resource in a mirror, remove
it if it already exists. The symlink is removed in case the logic to
create the symlink has changed.
* Some packages (e.g. mpfr at the time of this patch) can have patches
with the same name but different contents (which apply to different
versions of the package). This appends part of the patch hash to the
cache file name to avoid conflicts.
* Some exceptions which occur during fetching are not a subclass of
SpackError and therefore do not have a 'message' attribute. This
updates the logic for mirroring a single spec (add_single_spec)
to produce an appropriate error message in that case (where before
it failed with an AttributeError)
* In various circumstances, a mirror can contain the universal storage
path but not a cosmetic symlink; in this case it would not generate
a symlink. Now "spack mirror create" will create a symlink for any
package that doesn't have one.
`ViewDescriptor.regenerate()` calls `get_all_specs()`, which reads
`spec.yaml` files, which is slow. It's fine to do this once, but
`view.remove_specs()` *also* calls it immediately afterwards.
- [x] Pass the result of `get_all_specs()` as an optional parameter to
`view.remove_specs()` to avoid reading `spec.yaml` files twice.
`ViewDescriptor.regenerate()` was copying specs and stripping build
dependencies, which clears `_hash` and other cached fields on concrete
specs, which causes a bunch of YAML hashes to be recomputed.
- [x] Preserve the `_hash` and `_normal` fields on stripped specs, as
these will be unchanged.
`spack install` previously concretized, writes the entire environment
out, regenerated views, then wrote and regenerated views
again. Regenerating views is slow, so ensure that we only do that once.
- [x] add an option to env.write() to skip view regeneration
- [x] add a note on whether regenerate_views() shouldn't just be a
separate operation -- not clear if we want to keep it as part of write
to ensure consistency, or take it out to avoid performance issues.
Environments need to read the DB a lot when installing all specs.
- [x] Put a read transaction around `install_all()` and `install()`
to avoid repeated locking
Our `LockTransaction` class was reading overly aggressively. In cases
like this:
```
1 with spack.store.db.read_transaction():
2 with spack.store.db.write_transaction():
3 ...
```
The `ReadTransaction` on line 1 would read in the DB, but the
WriteTransaction on line 2 would read in the DB *again*, even though we
had a read lock the whole time. `WriteTransaction`s were only
considering nested writes to decide when to read, but they didn't know
when we already had a read lock.
- [x] `Lock.acquire_write()` return `False` in cases where we already had
a read lock.
If a write transaction was nested inside a read transaction, it would not
write properly on release, e.g., in a sequence like this, inside our
`LockTransaction` class:
```
1 with spack.store.db.read_transaction():
2 with spack.store.db.write_transaction():
3 ...
4 with spack.store.db.read_transaction():
...
```
The WriteTransaction on line 2 had no way of knowing that its
`__exit__()` call was the last *write* in the nesting, and it would skip
calling its write function.
The `__exit__()` call of the `ReadTransaction` on line 1 wouldn't know
how to write, and the file would never be written.
The DB would be correct in memory, but the `ReadTransaction` on line 4
would re-read the whole DB assuming that other processes may have
modified it. Since the DB was never written, we got stale data.
- [x] Make `Lock.release_write()` return `True` whenever we release the
*last write* in a nest.
Lock transactions were actually writing *after* the lock was
released. The code was looking at the result of `release_write()` before
writing, then writing based on whether the lock was released. This is
pretty obviously wrong.
- [x] Refactor `Lock` so that a release function can be passed to the
`Lock` and called *only* when a lock is really released.
- [x] Refactor `LockTransaction` classes to use the release function
instead of checking the return value of `release_read()` / `release_write()`
`ViewDescriptor.regenerate()` checks repeatedly whether packages are
installed and also does a lot of DB queries. Put a read transaction
around the whole thing to avoid repeatedly locking and unlocking the DB.
Users can now list mirrors of the main url in packages.
- [x] Instead of just a single `url` attribute, users can provide a list (`urls`) in the package, and these will be tried by in order by the fetch strategy.
- [x] To handle one of the most common mirror cases, define a `GNUMirrorPackage` mixin to handle all the standard GNU mirrors. GNU packages can set `gnu_mirror_path` to define the path within a mirror, and the mixin handles setting up all the requisite GNU mirror URLs.
- [x] update all GNU packages in `builtin` to use the `GNUMirrorPackage` mixin.
* Add symbols patch
* Apply symbols patch to pgmath
* Add github issue number for symbols patch.
* Add naromero77 as a maintainer.
* Patch only applied to March 2019 release and master.
* Record that old versions of ROOT don't support modern GCC
* Well, actually I don't know about 6.07
* Fix typo and follow odd version recommendation from @chissg
* Add QE 6.5
* Support for serial HDF5 case with serial (no mpi) QE is now supported but requires a patch for 6.4.1 and 6.5.
* Add naromero77 as a maintainer.
* Start cinema package
* Remove boilerplate and add description
* Formatting for pep8
* Correct milestone tag
* 'master' instead of 'develop'
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Two variants, both with numpy and other small changes
* When +image for scikit
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
- Add an optional argument so that `possible_dependencies()` will report
missing dependencies.
- Add a test to ensure it works.
- Ignore missing dependencies in `possible_dependencies()` by default.
- this version allows getting possible dependencies of multiple packages
or specs at once.
- New method handles calling `PackageBase.possible_dependencies` multiple
times and passing `visited` dict around.
`Environment.added_specs()` has a loop around calls to
`Package.installed()`, which can result in repeated DB queries. Optimize
this with a read transaction in `Environment`.
Checks for deprecated specs were repeatedly taking out read locks on the
database, which can be very slow.
- [x] put a read transaction around the deprecation check
* Add dependencies for hpcrypt
* address review comments
* flake
* license-fix
* fix checksums
* Update py-hvace homepage
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* update py-hvac url
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
doesn't understand a custom, user-defined compiler version. However, if
the compiler's version check fails, you can't build anything with the
custom compiler.
- [x] Be more lenient: fall back to the custom compiler version and use
it verbatim if the version check fails.
`pgcc -V` was failing on power machines because it returns 2 (despite
correctly printing version information). On x86_64 machines the same
command returns 0 and doesn't cause an error.
- [x] Ignore return value of 2 for pgcc when doign a version check
* add new package : filebench
* remove alpha version and duplicated autoheader cmd
* refine automake cmd in sh()
* refine filebench url as a stable tarball link
* root: Rationalize and improve version, variant and ROOT option handling.
* Completely re-vamp CMake option handling for readability and maintainability:
* Three categories of option: control, builtin and feature, alphabetically sorted.
* Each option is described as a list: an option name followed by an optional value which is either Boolean or a string representing the name of a variant. If the value is omitted, it defaults to the option name.
* New functions `_process_opts()` and `_process_opt()` (nested) to turn all supplied option/value specifications into CMake arguments.
* Remove overly-terse per-option comments in favor of (much) more comprehensive notes in README.md.
* Variants and conflicts:
* Remove `test` variant in favor of pegging ROOT `testing` option to the value of `self.run_tests` since the install is unaffected, per ROOT developer.
* Remove commented-out and never-functional variants: `asimage`, `avahi`, `kerberos`, `ldap`, `libcxx`, `odbc`, `oracle`, `pythia8`, `xinetd`.
* New variant `vmc` (default `OFF`) to control the Virtual Monte Carlo interface.
* Conflict: `+opengl` is incompatible with `~x`.
* Conflict: `http` is now an unconditional conflict due to dependency issues (see README.md).
* Remove commented-out and non-existent dependencies `avahi`, `kerberos`, `ldap`, `libcxx`, `odbc`, `oracle`, `pythia`, `veccore` (per #13949).
* New and changed options:
* Option `pch` was inadvertently set to `OFF` due to its dependence on a nonexistent variant `pch`. As it happens its value is ignored in the ROOT configuration handling, so there was no deleterious effect. It has been fixed to `ON` to better reflect actual behavior pending enablement of tuntime C++ modules.
* Add new versions 6.18.0{0,2,4}:
* Require CMake 3.9 for 6.18.00+.
* Add conflicts for variants `qt4` and `table` representing ROOT build options for which support was discontinued. Remove redundant conflict on \@master.
* C++ standard is now specified with `-DCMAKE_CXX_STANDARD=X` rather than `-Dcxx=X`.
* Remove old version 5.34.38 (wrong build system).
See README.md for more details of option-related changes.
* Flake8
* `rpath` option is a control option rather than a feature.
* Add new DD4hep release and some forgotten build requirements
* PR review suggestions
Use master naming convention for development branch, and put versions in decreasing order.
* rose: Update boost dependency for rose
* rose: Updated rose to version 0.9.12.45
* rose: Updated jdk dependency
* rose: Updated rose to version 0.9.13.0
* rose: Fixed formatting
* rose: Added maintainer and switch dependency to java@8
* Added package for Half C++ header-only library.
Fixed an checksum for Hydrogen 1.3.2. Cleaned up the Clara package to
not create an empty bin directory.
* Fixed flake8
* Added maintainer
* add new package : cosbench
* add cosbench depends and remove unstable version
* Update var/spack/repos/builtin/packages/cosbench/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/cosbench/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
Vendors for ARM come out of `/proc/cpuinfo` as hex numbers instead of readable strings.
- Add support for associating vendor names with the hex numbers.
- Also move these mappings from Python code to `microarchitectures.json`
- Move darwin feature name mappings to `microarchitectures.json` as well
Before this commit we used to run the entire unit test suite
in the presence of a failure. Since we currently rely a lot
on the state of the filesystem etc. the end report was most
of the time showing spurious failures that were a consequence
of the first failing test.
This PR makes unit tests exit at the first failing test
Also, pin codecov at v4.5.4 (last one supporting Python 2.6)
* when constructing package hash, default to including a method in the content hash if we can't determine whether it would be included by examining the AST
* add a test for updated content-hash calculations
* refactor content hash tests to eliminate repeated lines
* docker: add missing module to ubuntu images
* docker: fix issue with missing locale
* docker: one package per line + rm python2 support
* docker: ubuntu image also needs 'file' for buildcache creation
BundlePackages use a noop fetch strategy. The mirror logic was assuming
that the fetcher had a resource to cach after performing a fetch. This adds
a special check to skip caching if the stage is associated with a
BundleFetchStrategy. Note that this should allow caching resources
associated with BundlePackages.
When updating a mirror, Spack was re-retrieving all patches (since the
fetch logic for patches is separate). This updates the patch logic to
allow the mirror logic to avoid this.
Since cache_mirror does the fetch itself, it also needs to do the
checksum itself if it wants to verify that the source stored in the
mirror is valid. Note that this isn't strictly required because fetching
(including from mirrors) always separately verifies the checksum.
The targets for the cosmetic paths in mirrrors were being calculated
incorrectly as of fb3a3ba: the symlinks used relative paths as targets,
and the relative path was computed relative to the wrong directory.
When creating a cosmetic symlink for a resource in a mirror, remove
it if it already exists. The symlink is removed in case the logic to
create the symlink has changed.
PR #13975 added makefile filtering to replace gcc/g++ with the spack
compiler. This conflicts with other filtering that is done in the package to
add paths for dependencies. The text of the dependency paths might
have 'gcc' in the path name, depending on the install_path_scheme, and
that was being replaced by the new compiler filters. That would mangle
the path to the dependecy resulting in a failed build.
This PR moves the compiler filters to be before the other filters to
make sure that the compiler is set before the dependency paths.
* Add missing dependency on setuptools to py-subprocess32
* Update package.py
* Update var/spack/repos/builtin/packages/py-subprocess32/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update package.py
PR #10589 introduced a libiconv dependency to doxygen. This causes
problems on Linux systems, since the iconv symbols are included in libc,
which causes CMake to use the external header but not the external
library. Work around this by always using the external libiconv.
The xed CLI is handy, and can be gotten by building the examples in the
intel-xed package. This PR builds the examples and installs the xed CLI.
It would also be possible to install more of the example binaries if
someone thinks they are useful.
* openmolcas: new package at 19.11
* openmolcas: fill description
* openmolcas: rewrite using CMakePackage
* openmolcas: add py-six dep
* openmolcas: use setup_build_environment, setup_run_environment
* openmolcas: remove redundant cmake dep
* openmolcas: explicitly cast Executable to str
* pytest: add __init__ files for all test subdirs
* add licenses to empty files
* Fix Sphinx warning message about comment within docstring
* Further fixes to Sphinx docstring
Recent commit e9ee9eaf (#13989) fixed testing version ranges inside
patch when clauses. Previously, it was necessary to write all revs
individually for packages with multiple length version numbers (2019
and 2019.1).
This fixes the build for the old 2017.* versions.
* fix docstring in generate_package_index() refering to "public" keys as "signing" keys
* use explicit kwargs in push_to_url()
* simplify url_util.parse() per tgamblin's suggestion
* replace standardize_header_names() with the much simpler get_header()
* add some basic tests
* update s3_fetch tests
* update S3 list code to strip leading slashes from prefix
* correct minor warning regression introduced in #11117
* add more tests
* flake8 fixes
* add capsys fixture to mirror_crud test
* add get_header() tests
* use get_header() in more places
* incorporate review comments
This PR allows virtual packages to be added to the specs list using
the add command.
Virtual packages are already allowed in named lists in spack
environments/stacks, and they are already allowed in the specs list
when added using the yaml directly.
I have, more than once, tried to install the list of things that need
to build the docs, only to discover that the list doesn't use Spack's
package names. I'm tired of facepalming....
While I was there I touched up the prose about activating the new
Python packages; activating a python package doesn't add anything to
your PYTHONPATH, it links things into a directory that's *already* on
your PYTHONPATH. Note that this all presupposes that you're using
that same python....
* elpa: port to microarch
* flake8
* Update package.py
* Update var/spack/repos/builtin/packages/elpa/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Adding libid3tag package for supporting feh
* Adding libexif package for supporting feh
* Adding imlib2 package for supporting feh
* Adding the feh package
* Rewording the cleanup function for libid3tag
* Fixing some flake8 issues for imlib2 and libid3tag
* Adding sources for the patches and swapping rm for os.remove
* Flake8 fixes
* swapping md5sums for sha256sums
* CUDA HeaderList: Unit Test
* Spec Header Dirs: Only first include/
Avoid matching recurringly nested include paths that usually
refer to internally shipped libraries in packages.
Example in CUDA Toolkit, shipping a libc++ fork internally
with libcu++ since 10.2.89:
`<prefix>/include/cuda/some/more/details/include/` or
`<prefix>/include/cuda/std/detail/libcxx/include`
regex: non-greedy first match of include
Co-Authored-By: Massimiliano Culpo <massimiliano.culpo@gmail.com>
* CUDA: Re-Enable 10.2.89 as Default
* ibm-java: add version 8.0.6.0
Add version 8.0.6.0 and remove 8.0.5.30. IBM is fairly aggressive
about removing old versions, and 8.0.5.30 is no longer available from
their download site.
* Restore version 8.0.5.30, although it is no longer available for
download from IBM.
* Addition of repository branches to maestrowf.
* Addition of 1.1.5dev pre-release.
* Correction of a merge conflict.
* Addition of Maestro release 1.1.5
* Addition of Maestro release 1.1.6 (removal of 1.1.5)
* Sets 1.1.6 to the preferred version.
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Tweak to the url to point to latest.
* Fix Apex and OTF2 support
- Comment out apex as a dependncy: it is bundled with HPX.
- Apply a patch to v1.3.0 to correctly build with APEX.
- Add otf2 as a dependency when APEX is enabled.
* Remove depends_on('apex')
* augustus: Set compile commands for each compiler and Fix for using 'boost' on Spack
* fix for flake8
* delete 'string' args
* Fix args of filter_file func
* Fix args of other filter_file func
* Add patch to fix issue building current llvm develop master on power9
* Conform to proper block commenting
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* add tensorflow
Change-Id: Id778c68d148cc42f0b478a9d10a8f937cb54cdc6
* make bazel and tensorflow build
Change-Id: Iae9005e8f4dcc8f1ed36ea9337d2430aeebb291f
* fix flake8
Change-Id: Ib05529dd796eab4a8855a5d7775cc4efea8e479d
* 2nd flake8 attempt
Change-Id: I46224be3a374b2a65793048b0c5178ea64adbd78
* replace md5 sums with sha256
* add version 1.13.2
* bazel() -> bazel('build',...
* specify versions of bazel dependency
* build with CUDA
* add TODOs
* add more todo"s
* improve enum34 dependency
* py-future is a dependency as of v1.14
* Update var/spack/repos/builtin/packages/tensorflow/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/tensorflow/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/tensorflow/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/tensorflow/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* enable nccl, cuda by default
* explain patches
* add todo
* remove unnecessary copt_flag
* use join
* join argument must be an iterable
* split long line; use same opts for non-cuda build
* without opt flags, configure hangs
* introduce build phases; re-arrange
* undo mistake
* restore unset tmp_path
* as of v1.14, nccl_install_path is parsed correctly, hence change ...prefix.lib to ...prefix
* now, version 1.14 compiles successfully with cuda
* add version 2.1.0
* specify bazel dependency for version 2.1.0-rc0
* account for deprecated bazel opts for v2.1.0-rc0
* disable mkldnn contraction kernel
* Flake8 fixes
* md5 -> sha256
* Fix TF and TF-estimator version deps
* Don't just comment out patch
* Add myself as a maintainer
* Patch py-astor to support newer py-setuptools
* Add more versions and bazel version constraints
* Add a build phase
* Add note about configure interactivity
* dev-build -> build-env
* Disable iOS build
* Use correct optimization flags
* Add variants for all possible features
* nccl isn't always a dependency
* Specify correct dependency versions for each release
* Libs may not be in lib or lib64
* Add py-opt-einsum package
* Add newer version of py-protobuf
* Add newer version of py-wrapt
* Fix Python 2.6 syntax error
* Code review
* Set more env vars for older versions
* Add more env vars, fix bazel versions, add conflicts
* Fix config options
* Specify version that support --config args
* Add py-future dependency for Python 2
* Fix cuda config flag and compute capabilities
* Fix installation on macOS, add unit tests
* Override cuda variant default to True on non-macOS
* Rename tensorflow to py-tensorflow
* Has to extend something
* Fix os.symlink call
* convert cuda_arc values to capabilities
* restore nccl prefix path for v1.13.1
* Revert to v2
* Remove extraneous period
* Add new version of jdk/openjdk
* More stable cuda_arch formatting
* Fix bazel unit tests
* Fix symlinking
* Fix unit tests
* +gcp by default until build error figured out
* apply strict constraint checks for patches, otherwise Spack may incorrectly treat a version range constraint as satisfied when mixing x.y and x.y.z versions
* add mixed version checks to version comparison tests
v0.13.2
This release contains major performance improvements for Spack environments, as well as some bugfixes and minor changes.
* allow missing modules if they are blacklisted (#13540)
* speed up environment activation (#13557)
* mirror path works for unknown versions (#13626)
* environments: don't try to modify run-env if a spec is not installed (#13589)
* use semicolons instead of newlines in module/python command (#13904)
* verify.py: os.path.exists exception handling (#13656)
* Document use of the maintainers field (#13479)
* bugfix with config caching (#13755)
* hwloc: added 'master' version pointing at the HEAD of the master branch (#13734)
* config option to allow gpg warning suppression (#13744)
* fix for relative symlinks when relocating binary packages (#13727)
* allow binary relocation of strings in relative binaries (#13724)
`spack module loads` and `spack module find` previously failed if any upstream modules were missing. This prevented it from being used with upstreams (or, really, any spack instance) that blacklisted modules.
This PR makes module finding is now more lenient (especially for blacklisted modules).
- `spack module find` now does not report an error if the spec is blacklisted
- instead, it prints a single warning if any modules will be omitted from the loads file
- It comments the missing modules out of the loads file so the user can see what's missing
- Debug messages are also printed so users can check this with `spack -d...`
- also added tests for new functionality
`spack module loads` and `spack module find` previously failed if any upstream modules were missing. This prevented it from being used with upstreams (or, really, any spack instance) that blacklisted modules.
This PR makes module finding is now more lenient (especially for blacklisted modules).
- `spack module find` now does not report an error if the spec is blacklisted
- instead, it prints a single warning if any modules will be omitted from the loads file
- It comments the missing modules out of the loads file so the user can see what's missing
- Debug messages are also printed so users can check this with `spack -d...`
- also added tests for new functionality
* Fixed x86-64 optimization flags for clang
* Fixed expected results in unit tests
Before the flags used where the one for llc, the underlying compiler from LLVM IR to machine assembly. It turns out that the semantic of `-march`, `-mtune` and `-mcpu` changes from clang front-end to llc.
I found no definitive reference for the flags submitted in this PR, but I checked the assembly on a vectorizable function using Godbolt's web-site.
* package for Simmetrix SimModSuite
* simmodsuite: passes flake8
* simmetrix: add version, set cmake prefix path
A given install will either use the libs built on rhel7 or rhel6.
For now, I'm sticking with the non-spack install convention of
placing the libraries into sub-directories named according to their
build process (os + compiler).
* simmetrix: add older version
* simmetrix: set build env paths
easier to build pumi using CMAKE_PREFIX_PATH
* simmetrix: address review comments
* simmetrix: add new version and remove old one
* simmetrix: flake8 fixes
* simmodsuite: oslib var is in self
* simmodsuite: update version and checksum
* simodsuite: set LD_LIBRARY_PATH for cad kernels
* update license
* update setup_environment calls
* increase indentation for flake8
* python3.8 flake8 fixes
* use spack consistent naming
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* sha256 required, update versions and hashes
* Added build dependency on gawk
* Use virtual depdendency
* Added patch to prepare libgpg-error for use with gawk@5
* Added reasoning with link for need for patch
* Add a transaction around repeated calls to `spec.prefix` in the activation process
* cache the computation of home in the python package to speed up setting deps
* ensure that module-scope variables are only set *once* per module
* Add a transaction around repeated calls to `spec.prefix` in the activation process
* cache the computation of home in the python package to speed up setting deps
* ensure that module-scope variables are only set *once* per module
* amber: Improved package.py and added version 18
- Added amber 18 with ambertools 19
- Added all available patches
- Added +update variant to use the self update
- Added +openmp variant to get openmp optomizations
- Added +x11 variant when possible
- Splitted amber 16 and 18 dependencies
- We now detect the copiler type and compile accordingly
- Added cray variant which is a bit special (untested)
- Improved detection of possible cuda versions
- All compilation optimizations +mpi +openmp +cuda are compatible
- Updated to use setup_build_environment(), setup_run_environment()
* dealii: Added 'threads' variant that controls the TBB dependency (#13931)
* dealii: Added 'threads' variant that controls the DEAL_II_WITH_THREADS cmake option and the dependency on Intel TBB
* Update var/spack/repos/builtin/packages/dealii/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* amber: Improved package.py and added version 18
- Added amber 18 with ambertools 19
- Added all available patches
- Added +update variant to use the self update
- Added +openmp variant to get openmp optomizations
- Added +x11 variant when possible
- Splitted amber 16 and 18 dependencies
- We now detect the copiler type and compile accordingly
- Added cray variant which is a bit special (untested)
- Improved detection of possible cuda versions
- All compilation optimizations +mpi +openmp +cuda are compatible
- Updated to use setup_build_environment(), setup_run_environment()
* amber: Adding missing flex and bison dependencies
* Removed cray variant; flex and bison now build only
* amber: Improved package.py and added version 18
- Added amber 18 with ambertools 19
- Added all available patches
- Added +update variant to use the self update
- Added +openmp variant to get openmp optomizations
- Added +x11 variant when possible
- Splitted amber 16 and 18 dependencies
- We now detect the copiler type and compile accordingly
- Added cray variant which is a bit special (untested)
- Improved detection of possible cuda versions
- All compilation optimizations +mpi +openmp +cuda are compatible
- Updated to use setup_build_environment(), setup_run_environment()
* amber: Adding missing flex and bison dependencies
* Removed cray variant; flex and bison now build only
* dealii: Fixed flake8 issues
* amber: corrected typo
* amber: Removed unused variant python
Add a line to .gitattributes so that `git grep -p` shows function names
properly for `*.py` files. Without this, the class name is shown instead
of the function for python files.
This also causes diff output to use proper functions as hunk headers in
`diff` output.
Here's an example with `git grep -p`.
Before:
$ git grep -p spack_cc var/spack/repos/builtin/packages/athena
var/spack/repos/builtin/packages/athena/package.py=class Athena(AutotoolsPackage):
var/spack/repos/builtin/packages/athena/package.py: env.set('CC', spack_cc)
var/spack/repos/builtin/packages/athena/package.py: env.set('LDR', spack_cc)
After:
$ git grep -p spack_cc var/spack/repos/builtin/packages/athena
var/spack/repos/builtin/packages/athena/package.py= def setup_build_environment(self, env):
var/spack/repos/builtin/packages/athena/package.py: env.set('CC', spack_cc)
var/spack/repos/builtin/packages/athena/package.py: env.set('LDR', spack_cc)
Here's an example with `diff`.
Before:
$ git show c5da94eb58
[...]
@@ -28,6 +29,7 @@ print(u'\\xc3')
# make it executable
fs.set_executable(script_name)
+ filter_shebangs_in_directory('.', [script_name])
# read the unicode back in and see whether things work
script = ex.Executable('./%s' % script_name)
After:
$ git show c5da94eb58
[...]
@@ -28,6 +29,7 @@ def test_read_unicode(tmpdir):
# make it executable
fs.set_executable(script_name)
+ filter_shebangs_in_directory('.', [script_name])
# read the unicode back in and see whether things work
script = ex.Executable('./%s' % script_name)
`mirror_archive_path` was failing to account for the case where the fetched version isn't known to Spack.
- [x] don't require the fetched version to be in `Package.versions`
- [x] add regression test for mirror paths when package does not have a version
* dealii: Added 'threads' variant that controls the DEAL_II_WITH_THREADS cmake option and the dependency on Intel TBB
* Update var/spack/repos/builtin/packages/dealii/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Created an initial recipe for Sensei
* Cleanup syntax
* Small fixes for the Sensei recipe
* Cosmetic fixes to comply with PEP8
* More cosmetic fixes before PR
* Added more documentation before PR
* Fixed flake8 errors
* Fixes following PR review
* Fixes to pass Flake8 passes
* Some changes following PR review and support for SENSEI 3
* Update var/spack/repos/builtin/packages/sensei/package.py
Co-Authored-By: Axel Huebl <axel.huebl@plasma.ninja>
* Fixed Flake8 errors
Commit 78724357 added versions 2019.5 to 2019.8 but failed to update
the patches for these versions.
1. gcc_generic-pedantic patch -- include this up through 2019.5. This
was fixed in the TBB source tree in 2019.6.
2. tbb_cmakeConfig patch -- this needs to be modified (different file)
for 2019.5 and later.
3. tbb_gcc_rtm_key patch -- replace this with filter_file. This is
simpler and eliminates the need to update the patch whenever the
surrounding context changes.
* dont add perl bin directory to PATH when setting up env (this is already handled by spack core in a way that omits system dirs); also consolidate repeated logic between build/run env setup.
* the bin/ dir of each dependency is already added to PATH in Spack core, so there is no need to do this in the Perl package
* BLD: enforce C++11 std for boost + xl_r
* the spack `cxxstd` variant is not sufficient to enforce
`-std=c++11` usage in boost compile lines when `xl_r` compiler
spec is in use; while it would be nice if this were fixed
in a boost config file somewhere, for now this patch
allows boost to build on POWER9 with
an %xl_r compiler spec if the user specifies i.e.,:
`spack install boost@1.70.0+mpi cxxstd=11 %xl_r@16.1.1.5`
* Update var/spack/repos/builtin/packages/boost/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
The documentation states that Spack builds R without the recommmened
packages, with Spack handling the build of those packages to satisfy
dependencies. From the docs:
> Spack explicitly adds the --without-recommended-packages flag to
> prevent the installation of these packages. Due to the way Spack
> handles package activation (symlinking packages to the R installation
> directory), pre-existing recommended packages will cause conflicts for
> already-existing files. We could either not include these recommended
> packages in Spack and require them to be installed through
> --with-recommended-packages, or we could not install them with R and
> let users choose the version of the package they want to install. We
> chose the latter.
However, this is not what Spack is actually doing. The
`--without-recommended` configure option is not passed to R and
therefore those packages are built. This prevents R extension activation
from working as files in the recommended packages installed with R will
block linking of file from the respective `r-` packages.
This PR adds the `--without-recommended` flag to the configure options
of the R package. This will then have the Spack R build match what is
documented.
* Replace git-based Bioconductor R packages
The current collection of bioconductor packages tend to have scattered
dependencies and missing versions. This commit replaces git-based
packages with tool-generated Spack package recipes with correct
dependencies and descriptions in place.
* Fix some broken package names, add periods to title docstrings
* r-clue: new package at 0.3-57
* r-genomeinfodbdata: add 1.2.1
* r-gofuncr: new package at 1.4.0
* r-pfam-db: add 3.8.2
* Add missed package r-genelendatabase
* update r-goseq package
* update r-glimma package
* update r-rots package
* r-org-hs-eg-db: add 3.8.2
* r-vgam: fix incorrect R version
* r-rnaseqmap: new package at 2.42.0
* r-rhdf5lib: new package at 1.6.0
* r-scrime: new package at 1.3.5
* r-delayedmatrixstats: new package at 1.6.0
* r-hdf5array: new package at 1.12.1
* r-biocfilecache: new package at 1.8.0
* r-ctc: add new versions, dependencies
* r-genemeta: new package at 1.56.0
* r-scrime: fix flake8
* r-ensembldb: add missing dependencies
* Added missing dependencies to packages with certain DESCRIPTIONS
* r-mapplots: new package at 1.5.1
* r-beachmat: new package at 2.0.0
* r-beeswarm: new package at 0.2.3
* r-biocneighbors: new package at 1.2.0
* r-biocsingular: new package at 1.0.0
* r-ecp: new package at 3.1.1
* r-enrichplot: new package at 1.4.0
* r-europepmc: new package at 0.3
* r-ggbeeswarm: new package at 0.6.0
* r-ggplotify: new package at 0.0.3
* r-ggraph: new package at 1.0.2
* r-gridgraphics: new package at 0.4-1
* r-rcppannoy: new package at 0.0.12
* r-rcpphnsw: new package at 0.1.0
* r-rsvd: new package at 1.0.1
* r-scater: new package at 1.12.2
* r-singlecellexperiment: new package at 1.6.0
* r-tximport: new package at 1.12.3
* r-upsetr: new package at 1.4.0
* r-vioplot: new package at 0.3.2
* r-readr: add 1.3.1
* r-matrixstats: add 0.54.0
* r-ecp: flake8 fix
* r-biocmanager: new package at 1.30.4
* update bioconductor packages requiring BiocManager, new versions
* r-lambda-r: add 1.2.3
* r-vegan: add 2.5-5
* r-cner, r-rcppannoy, r-reportingtools, r-rsvd: add missing newlines at EOF
* r-chemometrics: flake8 fixes
* r-vgam: flake8 fixes
* CRAN packages: use cloud.r-project.org
* Use DESCRIPTION for R version constraints over bioconductor releases
* Update missed packages ABAData, acde, affydata
* Update remaining missed packages
* bio: Drop 'when' clause from first checksummed versions
* bio: improve package description generation logic
* r-genomeinfodbdata: use explicit sha256 sums
* r-pfam-db: update dependencies, add 3.10.0
* update r-org-hs-eg-db
* r-dirichletmultinomial: re-add gsl
* r-polyclip: new package at 1.10-0
* r-farver: new package at 1.1.0
* r-tweenr: new package at 1.0.1
* r-ggforce: new package at 0.3.1
* r-ggforce: remove redundant dep
* r-ggraph: add missing deps
* r-rcpphnsw: remove redundant depends_on
* r-reportingtools: re-add r-r-utils dep
* r-rhdf5: add gmake dep
* r-rhtslib: add system dependencies
* r-rsamtools: add gmake dep
* r-farver: remove redundant dep
* r-tweenr: remove redundant dep
* r-variantannotation: add gmake dep
* r-rgraphviz: add graphviz dep
* r-vsn: correct r-hexbin constraint
* r-scater: fix obsolete deps
* r-variantannotation: fix gmake dep type
* r-scater: tighten R version constraints
* r-rsamtools: fix gmake dep type
* r-rhtslib: fix gmake dep type
* r-rhtslib: use xz over lzma
* r-rhdf5: fix gmake dep type
* r-farver: replace with newer recipe for 2.0.1
* r-mzr: remove old dependency
* r-reportingtools: remove builtin dependency
* r-mzr: add gmake dep
* r-rhtslib: make system libraries link deps
* r-genomeinfodbdata: fix R version constraints
* r-geoquery: remove old deps from new versions
* r-genomicfeatures: tighten r-rmysql dep
* r-ensembldb: tighten r-annotationhub dep
* r-complexheatmap: fix r-dendextend dep
* r-cner: fix utils dep name
* r-clusterprofiler: fix r-gosemsim version req
* r-biostrings: fix r-iranges version reqs
* r-rhdf5lib: add gmake dep
* r-oligoclasses: fix r-biocinstaller dep range
* r-organismdbi: fix r-biocinstaller dep range
* r-hdf5array: add gmake dep
* r-gtrellis: tighten r-circlize version req
* r-gostats: fix r-graph version req
* r-glimma: fix old dependency ranges
* r-biostrings: syntax fix
* r-organismdbi: syntax fix
* r-dose: fix r-igraph dep
* r-dose: fix r-scales, r-rvcheck deps
* r-affy: fix r-biocinstaller dep
* r-ampliqueso: fix homepage
* r-aneufinder: fix r-biocgenerics dep
* r-beachmat: fix changed deps
* r-biocneighbors: fix old R constraint
* r-biocmanager: rewrite recipe for 1.30.10
* Update var/spack/repos/builtin/packages/r-biocinstaller/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/r-oligoclasses/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update cartopy version and fix recipe
Cartopy 0.17.0 works fine with proj 6
* Update cartopy version and fix recipe
Cartopy 0.17.0 works fine with proj 6
* Set ACCEPT_USE_OF_DEPRECATED_PROJ_API_H flag when building extension
* Add variants to py-cartopy recipe as suggested
* Fix proj dependency
* Split dependency
* Fix PEP-8; remove extra dependency
* Bump up QE version number to 6.4.1.
* Fix QMCPACK conflicts.
* HDF5 dependencies where over specified which could cause unnecessary installs of HDF5.
* Update QMCPACK testing option.
* Remove support for serial QE 6.4.1 converter. Add support for parallel QE 6.4.1. converter with serial HDF5.
* Switch to setup_run_environment.
* Fix setup_run_environment call arguements.
* Fix typo.
* switch run_env to env
* package py-cheroot
* package py-cheroot
* autopep8, docutils cleanup
* Update var/spack/repos/builtin/packages/py-cheroot/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* missing deps
* flake8
* license bits
* Update var/spack/repos/builtin/packages/py-cheroot/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-cheroot/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-cheroot/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-cheroot/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* python dep
* flake8
Note to spack people: these are expected to be end of line releases for both the 3.1.5 an 3.0.5 releases
Signed-off-by: Howard Pritchard <howardp@lanl.gov>
* metabat: add versions 2.14 and 2.13
* update build environment
* Update var/spack/repos/builtin/packages/metabat/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/metabat/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* update py-nbconvert
* add setuptools dependency, like all the other jupyter packages
it seems to be using setuptools for some commands all the time
but requires it for the newest version
* added dependencies, not necessarily only needed for the latest one
* depends on new packages (defusedxml, pandocfilters, testpath)
* should also be moved to pypi sources?
* '@5:@5:' is a valid spec -> intended?
* make dependencies optional
* Update dependencies and add description
* relax py-mistune dependency restriction
* Update var/spack/repos/builtin/packages/py-nbconvert/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* new package: py-arrow
* actually use dependencies from 0.14.7 not from current HEAD
* drop dependencies that dont appear in the source
* readd sphinx as doc dependency
* update dependencies
* drop doc-only dependencies
* add new package : busybox@1.31.1
* 1. add some other version for busybox
2. change Busybox class to MakefilePackage
3. move make('defconfig') and make() to build() function
4. change install_tree('', prefix) to install_tree('.', prefix)
Extensions have been available for a while and the overall design
seems solid enough to be feasible for extensions without losing
backward compatibility.
* add variant for enabling testing
* enable tests and clean up other options
* add numbered versions
* updates to avoid enable_tests variant; correct versioning
* fixes for style
* appropriate partitioners are enabled if 'all' is specified - so no need to check in spec
* define url so spack knows how to fetch the tar.gz files for different versions
* Add SOLLVE package with Shintaro's help on rebasing.
Co-authored-by: Vivek Kale <vivek.lkale@gmail.com>
* sollve: reflect suggestions by @adamjstewart
* sollve: update target detection
Copied from llvm/package.py.
* sollve: fix a few things
- url -> git
- remove git in version()
- explicit cmake options in else clauses
- add newlines for better readability
* Added new package libmmtf-cpp required by py-pymol
* Added SPDX-License-Identifier to MIT
* Updated py-pymol to version 2.3.0
* py-pymol: Added mising py-pmw dependency
* py-pymol: flake8 minor change
* py-pymol: Added patch for apbstools_tcltk8.6
This patch is borrowed from archlinux
https://bugs.archlinux.org/task/39526
* libmmtf-cpp: flake8 compliance
* libmmtf-cpp: flake8 compliance
* libmmtf-cpp: change license to (Apache-2.0 OR MIT) when refering to the MIT license
* libmmtf-cpp: Added header text about license as in examples
* py-pymol: removed unnecesary dependency mesa-glu
* py-pymol: removed unnecesary patch
* py-pymol: Removed empty line at the end of the file to comply with flake8.
* Add the py-coloredlogs package
* Remove extraneous line.
* Remove dashed line.
* Add version for humanfriendly dep and build to type.
* Change source url to use pypi.
* Improved library access for lm-sensors and implemented use in papi.
* Fixed comment formatting
* Removed explicit "None" from return of libs().
* Added two new software release versions.
* fix runtime error involving py-pycairo and PDF
* Update var/spack/repos/builtin/packages/py-python-mapnik/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* fix env setup
* Add the py-importlib_re package
* Rename package to conform with spack naming convention.
* Rename package to py-importlib-resources
Add python depend modules for previous python versions and depends_on python.
* Add whitespaces.
* use bazel commit in #13112, and add version 0.24.1, and corresponding cc_env patch
* undo preferred java version by dodo47
* patch for v0.26
* Update install steps
* Add patches for more versions
* Add unit tests
* Update patches for new Spack env vars
* env is already defined, use spackEnv
This makes several installs from the same download cache impossible once
the hash of the used perl-install changes.
Fixes: #13824
Change-Id: I5f10d9d54ae999d0ca7e4171f989dfca2e6a7169
* Add py-wub, with supporting fixes
- add py-wub
- add py-pycmd because py-wub needs it
- update py-statsmodels, which needs at least v0.9.0 to work with
python3.7 because cython.
* Update based on Adam's comments
* Fix dependency types for py-six in py-wub
* statsmodels tests fail, update comment w/ Issue #
The statsmodels tests weren't run in the previous version of the
package. If I enable them, the fail.
Update the package comment with the statsmodels issue I opened to
track the problem:
https://github.com/statsmodels/statsmodels/issues/6263
* Update dependency types in py-wub/package.py
* flake8 cleanups
* Make statsmodels tests work
- need to use patsy@0.5.1:
- need to run the tests from within the build/lib* dir
* Add mg, a gnu-emacs like fork of microemacs
* Use Package, since not really an Autotools package
Switch from AutotoolsPackage to Package. Even though mg has a
configure script, it's not really an Autotools package.
* Need to also provide --prefix to configure
* Some packages (e.g. mpfr at the time of this patch) can have patches
with the same name but different contents (which apply to different
versions of the package). This appends part of the patch hash to the
cache file name to avoid conflicts.
* Some exceptions which occur during fetching are not a subclass of
SpackError and therefore do not have a 'message' attribute. This
updates the logic for mirroring a single spec (add_single_spec)
to produce an appropriate error message in that case (where before
it failed with an AttributeError)
* In various circumstances, a mirror can contain the universal storage
path but not a cosmetic symlink; in this case it would not generate
a symlink. Now "spack mirror create" will create a symlink for any
package that doesn't have one.
* Add process to determine aarch64 microarchitecture
* add microarchitectures for thunderx2 and a64fx
* Add optimize flags for gcc on aarch64 family processors thunderx2 and a64fx.
* Add optimize flags for clang on aarch64 family processors thunderx2 and a64fx
* Add testing for thunderx2 and a64fx microarchitectures
* Make relative binaries relocate text files properly
* rb strings aren't valid in python 2
* move perl to new interface for setup_environment family methods
* fix metis src dl url
* update ascent, vtk-h and vtk-m recipes
* update conduit package
* fix vtk-m shas
* mfem conduit fix
* use vtk-h develop
* fix issue with stripped include paths in mfem
* more metis fixes
* simpler fix for mfem conduit include issue
* finish mfem changes
* pin to cmake 3.14, since we hit cuda issues with 3.15
* add rtd theme as dep for ascent
* add vtk-h 0.5.0 release, update ascent to use it
* add ascent 0.5.0 release
* fix cmake pin to allow all vers of 3.14
* fix format string error in mfem pkg
* review fixes for mfem pkg
* review fixes for vtk-h and vtk-m packages
* address review comments for ascent pkg
* changing default off of develop broke downstream use
* revert prefed
* guile package: Handling the threads option.
Currently guile by default tries to compile its thread variant.
However, the threaded version can only be compiled if bdw-gc is
compiled with some threads support. Currently, the default
compilation of the bdw garbage collector is compiled without any
thread support resulting in a compilation error.
I have changed the the default guile compilation to the non-threaded
version. I have also added the appropiated options for the bdw-gc
compilation in case the user prefers the threaded variant.
* guile package(flake8): fixed identation issues
* remove reference to `spack.store` in method definition
Referencing `spack.store` in method definition will cache the `spack.config.config` singleton variable too early, before we have a chance to add command line and environment scopes.
* remove reference to `spack.store` in method definition
Referencing `spack.store` in method definition will cache the `spack.config.config` singleton variable too early, before we have a chance to add command line and environment scopes.
Add a configuration option to suppress gpg warnings during binary
package verification. This only suppresses warnings: a gpg failure
will still fail the install. This allows users who have already
explicitly trusted the gpg key they are using to avoid seeing
repeated warnings that it is self-signed.
Add a configuration option to suppress gpg warnings during binary
package verification. This only suppresses warnings: a gpg failure
will still fail the install. This allows users who have already
explicitly trusted the gpg key they are using to avoid seeing
repeated warnings that it is self-signed.
* z3:
* Fixed python dependency to always be required.
* bugfix about fallthrough annotation.
* z3: Add patch for before ver.4.4.1.
* Update var/spack/repos/builtin/packages/z3/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Mark compiler/version conflict for CMake
Intel 14 lacks some C++11 features needed to compile new versions of
cmake.
```
/tmp/s3j/spack-stage/spack-stage-cmake-3.15.5-46lgp4ybhopy2p4rr66rxnew5iaddvmg/spack-src/Source/
cm_static_string_view.hxx(28): error: expected an operator
friend static_string_view operator"" _s(const char* data, size_t
^
```
* Mark compiler/version conflict for icu4c
With Intel 14.0.4 on Linux for icu4c 60.1 and higher:
```
locid.cpp(1156): error #1140: a using-declaration may not name a constructor or destructor
using KeywordEnumeration::KeywordEnumeration;
```
* Mark compiler/version conflict for nasm
Error installing `nasm@2.14.02%intel@14.0.4`:
```
In file included from nasmlib/crc64.c(35):
./include/nasmlib.h(116): error: expected a ";"
fatal_func nasm_assert_failed(const char *, int, const char *);
```
* Mark compiler/version conflict for bison
Installing `bison@3.4.2%intel@14.0.4`:
```
In file included from /tmp/s3j/spack-stage/spack-stage-bison-3.4.2-
uzjszv4owvqsymjpxtxvvegfavc6k5my/spack-src/lib/quotearg.c(33):
/tmp/s3j/spack-stage/spack-stage-bison-3.4.2-uzjszv4owvqsymjpxtxvvegfavc6k5my/spack-src/lib/
xalloc.h(51): warning #303: explicit type is missing ("int" assumed)
extern _Noreturn void xalloc_die (void);
```
* Mark compiler/version conflict for icu4c
With `icu4c@60.1%intel@16.0.4` and `icu4c@64.1%intel@16.0.4`:
```
In file included from ucurr.cpp(26):
static_unicode_sets.h(130): error #913: invalid multibyte character sequence
{POUND_SIGN, u'£'},
^
```
* Change conflict comments into messages
* py-matplotlib only needs backports when ^python@:2
This implements @scheibelp's suggestion in #13711.
py-matplotlib should only depends_on py-backports-functools-lru-cache
when it's using a python that actually *needs* it.
See #13711 for details.
* Don't depend_ons py-enum34 unless python@:3.3
* Tighten up enum34 dependency
@adamjstewart cracked open the setup.py files and suggested a tighter
dependency for py-enum34. 1.4 and 1.5 only require it for pythons
before 3.4, 1.3 requires it unconditionally. So...., we'll do the
same.
* Remove conflict on python 3.4 from enum34
at @adamjstewart's request see PR notes
* qscintilla_with_python_bindings_disabled
* pyqt5 with variant +qsci to compile qscintilla python bindings
* fix a dyn linking issue for Qsci python module
* fix a bug
* fix bug: use sip provided by py-pyqt5
* fix typo
* tidy up, make designer
* tidy up
* fix designer build issue, set env for designer plugin
* tidy up
* tidy up
* minor improvements
* improve style
* build Qscintilla python bindings here
* make qsci config option variant dependent
* get rid of commented out code
* improvements: add resource for qscintilla, improve config_args
* flake8: spaces, blank lines etc
* flake8: fix long lines
* Update var/spack/repos/builtin/packages/py-pyqt4/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-pyqt4/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-pyqt4/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/qscintilla/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* dont install source tree under prefix
* remove duplicate line
* use os.path.join instead of +
* separate build and run environment setups
* flake8
* Update var/spack/repos/builtin/packages/py-pyqt5/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-pyqt5/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-pyqt5/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* fix rsrc path
* use python_include_dir
* use "with working_dir"
* Update var/spack/repos/builtin/packages/py-pyqt4/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-pyqt5/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-pyqt5/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-pyqt5/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/qscintilla/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-pyqt4/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-pyqt4/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* flake8
* package/geopm: Added versions 1.0.0 and 1.1.0
Added changes for 1.1.0 and 1.0.0 in this patch.
Patch for 1.0.0 was previously not merged.
variant for hwloc removed since that is not a dependency since 0.5.1 and
variant('hwloc', when=:0.5.1 is not supported afaik.
made depends_on versions more explicit.
* package/geopm: removed 1.0.0 release candidates 1 and 2.
* Adding final bug-releases for the gromacs-2016 and -2018
* Added newer versions of plumed and libmatheval not a dependency >v2.5
* plumed package: chamge name git branch to master
Libbsd assumes GCC-defined compiler macros:
```
In file included from nlist.c(44):
local-elf.h(238): catastrophic error: #error directive: Unknown ELF machine type
#error Unknown ELF machine type
^
```
The `__amd64__` and `__x86_64__` macros should be equivalent, but the
latter is defined by intel.
when making a package relative, relocate links relative to link directory
rather than the full link path (which includes the file name) because `os.path.relpath` expects a directory.
Binaries with relative RPATHS currently do not relocate strings
hard-coded in binaries
This PR extends the best-effort relocation of strings hard-coded
in binaries to those whose RPATHs have been relativized.
Binaries with relative RPATHS currently do not relocate strings
hard-coded in binaries
This PR extends the best-effort relocation of strings hard-coded
in binaries to those whose RPATHs have been relativized.
* Docs update for deprecated `spack sha256`
* Added macOS shasum
* Update lib/spack/docs/packaging_guide.rst
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update MVAPICH2 package for 2.3.2 release
Update default build from psm to mrail
* Update different provides for older versions based on feedback from Todd Gamblin
* Simplify rule so one rule covers 2.1 and 2.2
* Add support for disabling rpath based on feedback from Dr. Shende
* Add colon based on comment
* Address review comment by Adam Stewart
* Add declaration of the wrapperpath variant.
- Thanks to Massimiliano Culpo for the comment
* superlu_dist: fix build with xl compilers
* fix link error ../SRC/libsuperlu_dist.so.6.1.1: undefined reference to `ztrtri_'
* Fixed the ordering of the spec on the xl-611 patch.
* fix flake8 error
- [x] Use higher contrast terminal output font
- [x] Use higher contrast code block background color than default
- [x] Use a noticeable prompt character
See also https://github.com/spack/spack-tutorial/pull/10.
* Update nlopt package to add Python bindings to PYTHONPATH
* Use extends for nlopt/python fix
* nlopt - change develop to master and add python dep qualifiers
* athena: updated api call to setup build environment
* mvapich2: updated api call to setup build and run environment
* spectrum-mpi: updated api call to setup build and run environment
- depends on spfft starting from 6.4.0
- add magma variant
- avoid setting cuda_arch to none
- add python dependencies
- use release as default build type
* Adding in HMPT package for HPE MPI libraries
* Updating copyright dates
* Renaming HPE MPI package
* Fixing error in package file
* Tidying up defintions and linting
* liniting
* Adding in library setup so packages that want to manually add mpi libraries can do so (i.e. npb)
* Linting
* Linting
* Investigating old API errors
* Investigating api errors
* Investigating api errors
* Investigating api errors
* Investigating api errors
* Investigating api errors: adding back in functions to see when the build fails
* Investigating api errors: adding back in functions to see when the build fails
* Investigating api errors: adding back in functions to see when the build fails
* Investigating api errors: adding back in functions to see when the build fails
* Investigating api errors: adding back in functions to see when the build fails
* Linting
* Linting
* Fixing
* Fixing
* Add new strumpack version (3.2.0), with new
dependency on ButterflyPACK.
* add ButterflyPACK version 1.1.0
* Add strumpack version 3.3.0, add dependency on ButterflyPACK 1.1.0
* Sort ButterflyPACk versions from newest to oldest
* Add a shared variant for STRUMPACK
* Also allow possible newer versions of ButterflyPACK
* New Package: py-pyside2
https://wiki.qt.io/Qt_for_Python
The Qt for Python project aims to provide a complete port of the PySide module
to Qt 5. The development started on GitHub in May 2015. The project managed to
port Pyside to Qt 5.3, 5.4 & 5.5. During April 2016 The Qt Company decided to
properly support the por
* Address review comments:
+ Add a variant for `+doc` and only depned on some packages if this variant is
active.
+ Enable building the tests if requested.
+ Correct registered required verions for python and qt.
* Remove dead code, fix depends_on command args.
* fix one more flake8 issue.
* One more fix to arguments and change version name to .
* Add a variant for tests and parallelize builds
- Fix a bug with boost defaulting to cxxstd=98 when cxxstd=11 is the
minimum for hpx
- Disable tests by default and use a variant to enable them if requested
- Enable parallel builds: each process takes up to 1Gb when tests are
not enabled.
* Remove tests variant
- The variant doesn't change what gets installed. Testing can be
activated using `spack install --test=root hpx`
* Propagate MPI option in VTK to NetCDF
This fixes a conflict message reads as though NetCDF always requires
hdf5+mpi. It allows `visit~mpi` to resolve correctly without an
additional `^netcdf~mpi`.
* Tell VisIt not to look for 'hdf5_mpi' library
- patched versions are located in the same directory as the
original release. For example, 1906_191103 is located in
the 'v1906/' directory, not in 'v1906_191103/'.
- add master branch as a known version
* package py-zc-buildout
* package py-zc-buildout
* Update var/spack/repos/builtin/packages/py-zc-buildout/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-zc-buildout/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* license bits
* Update var/spack/repos/builtin/packages/py-zc-buildout/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* package py-cherrypy
* package py-cherrypy
* autopep8, docutils cleanup
* Update var/spack/repos/builtin/packages/py-cherrypy/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-cherrypy/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-cherrypy/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* portend depends on tempora, not cherrypy directly
* setuptools_scm bits
* dependency one level up
* license bits
* Update var/spack/repos/builtin/packages/py-cherrypy/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* package py-tempora
* package py-tempora
* Update var/spack/repos/builtin/packages/py-tempora/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* missing deps
* Update var/spack/repos/builtin/packages/py-tempora/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-tempora/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-tempora/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* license bits
`mirror_archive_path` was failing to account for the case where the fetched version isn't known to Spack.
- [x] don't require the fetched version to be in `Package.versions`
- [x] add regression test for mirror paths when package does not have a version
* (py)arrow: new versions
* move py-arrow source to github as not all versions are on pypi
same checksum as pypi, adding build_directory
* move back to pypi sources
* drop 0.15.0 and 0.14.1 as only .whl are available on pypi
* add new dependencies
* Update var/spack/repos/builtin/packages/py-pyarrow/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* py-jupyter-core add new version and setuptools dependency
* update checksums to use pypi
* fixup url and python dep type
* Update var/spack/repos/builtin/packages/py-jupyter-core/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* new package: py-dateparser
* take setup.py dependencies into account
* fixup help->description
* reorder dependencies
* drop version constraints not enforced in setup.py
netcdf-fortran@4.5: will error if netcdf-c has been built with MPI
support:
```
configure: error:
-----------------------------------------------------------------------
The NetCDF C library is built with parallel I/O feature enabled, but
the Fortran compiler '.../lib/spack/env/gcc/gfortran' supplied in this configure command
does not support MPI-IO. Please use one that does. If parallel I/O
feature is not desired, please use a NetCDF C library with parallel
I/O feature disabled. Abort.
-----------------------------------------------------------------------
```
Copy logic from netcdf-c to add an `mpi` variant.
* pybind11: test get_include path
Helper for non-CMake downstream projects to find the pybind11
header location.
* pybind11: return proper get_include()
use our prefix instead of letting pybind11 trying to self-determine
it from given conda/virtualenv/global rules.
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* new package: py-ics
* drop 0.5 and move to tar-ball
* Update var/spack/repos/builtin/packages/py-ics/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-ics/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* mpi4py 3.0.3
Adds support for Python 3.8 with new Cython files.
I tried to build 3.0.0 with Python 3.8 and this builds as well,
therefor I added no conflict.
* mpi4py: update dependency version ranges
* update py-jupyter-notebook
* add setuptools dependency for newer version
the whole jupyter collection seems to use setuptools in case of
certain setup.py-arguments from the very beginning. However the latest
ones actually require it, otherwise the build will fail
* add newly introduced dependencies
* dependency constraints
* drop terminal variant and update python dep
* added relion 3.0.8 [latest stable version in 3.0 branch] as well as 3.1_beta
* relion 3.1 beta compiles without Benchmarking build type see https://github.com/3dem/relion/issues/533
* relion 3.0.X - 3.1 now supports latest cmake@3
This fixes a regression introduced in #10792. `spack uninstall` in an
environment would not match concrete query specs properly after the index
hash of enviroments changed.
- [x] Search by DAG hash for specs to remove instead of by build hash
If you do this in a spack environment:
spack add hdf5+hl
hdf5+hl will be the root added to the `spack.yaml` file, and you should
really expect `hdf5+hl` to display as a root in the environment.
- [x] Add decoration to roots so that you can see the details about what
is required to build.
- [x] Add a test.
If you do this in a spack environment:
spack add hdf5+hl
hdf5+hl will be the root added to the `spack.yaml` file, and you should
really expect `hdf5+hl` to display as a root in the environment.
- [x] Add decoration to roots so that you can see the details about what
is required to build.
- [x] Add a test.
This fixes a regression introduced in #10792. `spack uninstall` in an
environment would not match concrete query specs properly after the index
hash of enviroments changed.
- [x] Search by DAG hash for specs to remove instead of by build hash
* Make relative binaries relocate text files properly
* rb strings aren't valid in python 2
* move perl to new interface for setup_environment family methods
* flux: add `url_for_version` to support their C4 repo model
Flux uses a fork of ZeroMQ's Collective Code Construction Contract
(https://github.com/flux-framework/rfc/blob/master/spec_1.adoc).
This model requires a repository fork for every stable release that has
patch releases. For example, 0.8.0 and 0.9.0 are both tags within the
main repository, but 0.8.1 and 0.9.5 would be releases on the v0.8 and
v0.9 forks, respectively.
* flux: add latest versions
* flux: remove master from `when=@0.X:,master` statements
Now that #1983 has been merged, master > 0.X.0.
* flux-core: remove extraneous `99` patch version in `when` range
Replace `when=@:0.11.99` with `when=@:0.11` since the intention is to
include all patch versions of `0.11`.
* flux-core: fix `setup_build_environment` after changes in #13411
In #13411, `setup_environment` was split into `setup_build_environment`
and `setup_run_environment`, with the `spack_env` and `run_env`
arguments being changed to `env`. Somehow the flux package was the only
one to not have its `spack_env` references in the function changed to
`env`.
* flux: add runtime environment variables that Flux checks
with older versions of Flux (i.e, 0.0:0.13), FLUX_CONNECTOR_PATH must be
set by spack to prevent failures in certain
scenarios (https://github.com/flux-framework/flux-core/issues/2456).
the flux binary also sets some other environment variables, which can be
listed by running `flux -v start`. I added a few of those just to be
sure that the Spack-installed paths are used, rather than
system-installed ones.
* flux: add optional testing dependencies to maximize test coverage
Install optional dependencies to ensure that only spack-installed
software is detected and that all tests are run when `spack install
--test` is used.
Flux's test suite will test for the existance of valgrind, jq, and any
MPI installation. If it detects them (even if they are system-installed
and outside the spack environment), it will run optional tests against
them. I noticed on my machine that the valgrind tests were running
against the system-install valgrind.
* flux-sched: switch to new `setup_run_environment` API
- [x] insert at beginning of list so fetch grabs local mirrors before remote resources
- [x] update the S3FetchStrategy so that it throws a SpackError if the fetch fails.
Before, it was throwing URLError, which was not being caught in stage.py.
- [x] move error handling out of S3FetchStrategy and into web_util.read_from_url()
- [x] pass string instead of URLError to SpackWebError
- [x] insert at beginning of list so fetch grabs local mirrors before remote resources
- [x] update the S3FetchStrategy so that it throws a SpackError if the fetch fails.
Before, it was throwing URLError, which was not being caught in stage.py.
- [x] move error handling out of S3FetchStrategy and into web_util.read_from_url()
- [x] pass string instead of URLError to SpackWebError
* r-gstat: new package at 2.0-3
* Update var/spack/repos/builtin/packages/r-gstat/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/r-gstat/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
This changes Spack environments so that the YAML file associated with the environment is *only* written when necessary (i.e., if it is changed *by spack*). The lockfile is still written out as before.
There is a larger question here of which part of Spack should be responsible for setting defaults in config files, and how we can get rid of empty lists and data structures currently cluttering files like `compilers.yaml`. But that probably requires a rework of the default-setting validator in `spack.config`, as well as the code that uses `spack.config`. This will at least help for `spack.yaml`.
This changes Spack environments so that the YAML file associated with the environment is *only* written when necessary (i.e., if it is changed *by spack*). The lockfile is still written out as before.
There is a larger question here of which part of Spack should be responsible for setting defaults in config files, and how we can get rid of empty lists and data structures currently cluttering files like `compilers.yaml`. But that probably requires a rework of the default-setting validator in `spack.config`, as well as the code that uses `spack.config`. This will at least help for `spack.yaml`.
* Improvements of saga-gis package
* Added explicit version ranges for old saga-gis version
* Update var/spack/repos/builtin/packages/saga-gis/package.py
Creative usage of redefinition of getter method
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/saga-gis/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/saga-gis/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
Commands like "spack mirror list" were displaying mirrors in a
different order than what was listed in the corresponding mirrors.yaml
file.
This restores commands to iterate over mirrors in the order that
they appear in the config file.
* Travis CI: Test Python 3.8
* Fix use of deprecated cgi.escape method
* Fix version comparison
* Fix flake8 F811 change in Python 3.8
* Make flake8 happy
* Use Python 3.8 for all test categories
Currently, query arguments in the Spack core are documented on the
Database._query method, where the functionality is defined.
For users of the spack python command, this makes the python builtin
method help less than ideally useful, as help(spack.store.db.query)
and help(spack.store.db.query_local) do not show relevant information.
This PR updates the doc attributes for the Database.query and
Database.query_local arguments to mirror everything after the first
line of the Database._query docstring.
* cuda: fix conflict statements for x86-64 targets
fixes#13462
This build system mixin was not updated after the support for specific
targets has been merged.
* Updated the version range of cuda that conflicts with gcc@8:
* Updated the version range of cuda that conflicts with gcc@8: for ppc64le
* Relaxed conflicts for version > 10.1
* Updated versions in conflicts
Co-Authored-By: Axel Huebl <axel.huebl@plasma.ninja>
4af4487 added a mirror_id function to most FetchStrategy
implementations that is used to calculate resource locations in
mirrors. It left out BundleFetchStrategy which broke all packages
making use of BundlePackage (e.g. xsdk). This adds a noop
implementation of mirror_id to BundleFetchStrategy so that the
download/installation of BundlePackages can proceed as normal.
* Travis CI: Test Python 3.8
* Fix use of deprecated cgi.escape method
* Fix version comparison
* Fix flake8 F811 change in Python 3.8
* Make flake8 happy
* Use Python 3.8 for all test categories
* Adding flecsph package
* Correcting header
* Boost version update
* Correcting Flake8 errors
* Correcting headers
* Develop preferred in FleCSI
* Removing FleCSPH branch of FleCSI
* MeshToolKit package
* formatting
* Formatting
* Correcting MSTK package
* Format
* Update var/spack/repos/builtin/packages/mstk/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/mstk/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/mstk/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/mstk/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/mstk/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/mstk/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/mstk/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/mstk/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/mstk/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/mstk/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update package.py
* Format
* Format
* Correcting package behavior
* Correcting format
* Corrections
* Update var/spack/repos/builtin/packages/mstk/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Multiline
Currently, query arguments in the Spack core are documented on the
Database._query method, where the functionality is defined.
For users of the spack python command, this makes the python builtin
method help less than ideally useful, as help(spack.store.db.query)
and help(spack.store.db.query_local) do not show relevant information.
This PR updates the doc attributes for the Database.query and
Database.query_local arguments to mirror everything after the first
line of the Database._query docstring.
* cuda: fix conflict statements for x86-64 targets
fixes#13462
This build system mixin was not updated after the support for specific
targets has been merged.
* Updated the version range of cuda that conflicts with gcc@8:
* Updated the version range of cuda that conflicts with gcc@8: for ppc64le
* Relaxed conflicts for version > 10.1
* Updated versions in conflicts
Co-Authored-By: Axel Huebl <axel.huebl@plasma.ninja>
* r-dada2: new package at 1.14
* r-dada2: add gmake dependency
* Update var/spack/repos/builtin/packages/r-dada2/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* new package: py-scs
* rename
* flake8
* Update var/spack/repos/builtin/packages/py-scs/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
The `test_changed_files` in `test/cmd/flake8.py` was failing because it calls
`ArgumentParser.parse_args()` without arguments. Normally that would just
parse `sys.argv` but it seems to fail because of something in either `spack test`
or `pytest`. Call it with an empty array so that it doesn't try to touch`sys.argv`
at all.
- [x] allow `-d` spack option for `test_changed_files`
* Update the module files for cbtf-krell and openspeedshop adding man paths and needed papi and libmonitor paths.
* Update module files for new API.
* Use the same python for both develop and release branches.
* add support for static (via ~shared) and use vtk-m 1.2
* updating vtkh package to output cmake configure file and pinning it to vtkm 1.2
* trying a different cmake for vtkh
* removing problematic b
* making conduit respect ~python
* fixing ascent python logic
* update ascent package
* consistant cmake usage
* conditionally add tbb in ascent if vtkh
* applying becker fix
* adding vtkh tag
* fixing vtkh tagged version
* updating ascent and conduit for static builds
* enabling openmp
* reverting files that should not have been changed
* ascent updates
* more robust handling of variants
* fixing ascent package typo
* ascent: add optional support for mfem
* enable mfem conduit support for ascent
* add optional adios dep to conduit
* remove ver req from conduit
* ascent: remove confusing comment
* tweaks to conduit and ascent pkg recipes
* fix typo in conduit package
* pref conduit master
* fixing mfem typo for ascent
* reverting files
* adding mirror for bzip
* changing mfem to depend on conduit@master to get updated relay
* restore use of conduit 0.3.1 or greater for mfem
* set master as prefered conduit version
* allow mfem to use conduit master
* adding rover package and editing ascent
* updating vtkm cmake dep
* updates from axom
* guard ascent python support on +shared
* removing rover to simply ascent package
* add fortran variant to conduit, to allow us to turn off conduit support even when a fortran compiler is specified
* fix fortran compiler check so it can work on cray systems
* working towards cuda fix for vtkm lagrange filter
* update ascent package with more variants, and patch to avoid nvcc issue
* hdf5 flags fix for BGQ
* flake8
* extra guards for cuda patch
* conduit and ascent fortran fix
* fix patch for non cuda case
* add test variant to conduit, tweak ascent pkg
* change min ver of cmake used for ascent
* h5z-zfp package: unset FC when ~fortran
* conform to expected upstream solution
* pinning vtkm
* going back to vtkm master
* add back vtk-m variant for shared libs
* update ascent and vtkh packages
* wire up option to run tests during install
* add post install test
* add testing to ascent
* tweak for blueos xl
* add ctest output on error for run_tests
* enable ctest output on error for run_tests
* add testing of the using-with-make example
* update using-with-make examples
* typo in ascent using-with-cmake test
* fix ascent using test exe names
* more fixes, less sleep
* more fixes, less sleep ...
* remove unwired up version
* improvments suggested on review
* adding new cmake
* Update package.py
* Update package.py
* changes post cori os update
* fix cray hack
* Update package.py
Fixing 'fix'. Inconsistent variable names in conduit package
* type in spack recipes
* add zfp support to conduit
* fix indent error in conduit pkg
* move to use build phases, add sphinx rtd as dep, fix ex names in tests
* add conduit 0.5.0 release
* flake8
* remove old cray hack
* incorp feedback from review
* fix to use proper build env sig
* Fix gcc recipe for RHEL7.
+ It appears that macOS related changes to the gcc recipe broke gcc on RHEL7.
This bug manifests as `libstdc++.so: undefined reference to libiconv` when gcc
is used.
+ Fixes#13452 by moving
`--with-libiconv-prefix={0}'.format(spec['libiconv'].prefix)` into the darwin
OS section of the configuration.
+ Change qualification of `depends_on(libiconv)` to limit dependency to macOS.
* Replace deprecated 'setup_environment' with 'setup_run_environment'.
* Fix cut and paste error.
* Rename 'run_env' to just 'env'.
* Add versinos 1.13.3, 1.13.2, 1.12.12, and 1.12.11
* Replace setup_environment/setup_dependent_environment with
setup_build_environment and setup_dependent_{build, run}_environment
according to 9ddc98e
* Add dependency and patch perl-dbfile
There are two problems for the building of `perl-dbfile`:
1) this package depends on the package `berkeley-db`
2) fix the building using a patch, which locates the position of `berkeley-db` and modify the configuration file for the building
* Update and reformat the script package.py
* Simplify the patch
* Update package.py
* Update package.py
* This filter_file was difficult to maintain and is no longer needed.
* Clarify lack of support for HDF5 in serial QE.
* Update QE and HDF5 conflicts based on user feedback.
* Add Lizard (LZ5)
Add a new package for Lizard, formerly LZ5, a very fast compressor
and decompressor library.
* c-blosc2: use external lizard
Use an external Lizard (LZ5) dependency and add missing
"when="s for other compressor dependents.
* Fixes for libbeagle
This PR fixes a couple of issues with the libbeagle package.
- Use args.append('--with-cuda=%s' % self.spec['cuda'].prefix)
- Disable the default of compiling with -march=native as Spack now
inserts architecture specific flags
- Set BEAST_LIB in the beast1 package not in libbeagle.
* Use new setup_run_environment method
* docs: add a spack environment for building the docs
* docs: remove tutorial and link to spack-tutorial.readthedocs.io
The tutorial now has its own standalone website, versioned by instances
of the tutorial. Link to that instead of versioning it directly with Spack.
Support mirroring all packages with `spack mirror create --all`.
In this mode there is no concretization:
* Spack pulls every version of every package into the created mirror.
* It also makes multiple attempts for each package/version combination
(if there is a temporary connection failure).
* Continues if all attempts fail. i.e., this makes its best effort to
fetch evrerything, even if all attempts to fetch one package fail.
This also changes mirroring logic to prefer storing sources by their hash
or by a unique name derived from the source. For example:
* Archives with checksums are named by the sha256 sum, i.e.,
`archive/f6/f6cf3bd233f9ea6147b21c7c02cac24e5363570ce4fd6be11dab9f499ed6a7d8.tar.gz`
vs the previous `<package-name>-package-version>.tar.gz`
* VCS repositories are stored by a path derived from their URL,
e.g. `git/google/leveldb.git/master.tar.gz`.
The new mirror layout allows different packages to refer to the same
resource or source without duplicating that download in the
mirror/cache. This change is not essential to mirroring everything but is
expected to save space when mirroring packages that all use the same
resource.
The new structure of the mirror is:
```
<base directory>/
_source-cache/ <-- the _source-cache directory is new
archive/ <-- archives/resources/patches stored by hash
00/ <-- 2-letter sha256 prefix
002748bdd0319d5ab82606cf92dc210fc1c05d0607a2e1d5538f60512b029056.tar.gz
01/
0154c25c45b5506b6d618ca8e18d0ef093dac47946ac0df464fb21e77b504118.tar.gz
0173a74a515211997a3117a47e7b9ea43594a04b865b69da5a71c0886fa829ea.tar.gz
...
git/
OpenFAST/
openfast.git/
master.tar.gz <-- repo by branch name
PHASTA/
phasta.git/
11f431f2d1a53a529dab4b0f079ab8aab7ca1109.tar.gz <-- repo by commit
...
svn/ <-- each fetch strategy has its own subdirectory
...
openmpi/ <-- the remaining package directories have the old format
openmpi-1.10.1.tar.gz <-- human-readable name is symlink to _source-cache
```
In addition to the archive names as described above, `mirror create` now
also creates symlinks with the old format to help users understand which
package each mirrored archive is associated with, and to allow mirrors to
work with old spack versions. The symlinks are relative so the mirror
directory can still itself be archived.
Other improvements:
* `spack mirror create` will not re-download resources that have already
been placed in it.
* When creating a mirror, the resources downloaded to the mirror will not
be cached (things are not stored twice).
reindexing takes a significant amount of time, and there's no reason to
do it from DB version 0.9.3 to version 5. The only difference is that v5
can contain "deprecated_for" fields.
- [x] Add a `_skip_reindex` list at the start of `database.py`
- [x] Skip the reindex for upgrades in this list. The new version will
just be written to the file the first time we actually have to write
the DB out (e.g., after an install), and reads will still work fine.
Previously, spack would error out if we tried to fetch something with no
code, but that would prevent fetching dependencies. In particular, this
would fail:
spack fetch --dependencies xsdk
- [x] Instead of raising an error, just print a message that there is nothing
to be fetched for packages like xsdk that do not have code.
- [x] Make BundleFetchStrategy a bit more quiet about doing nothing.
We've had `spack spec --yaml` for a while, and we've had methods for JSON
for a while as well. We just haven't has a `--json` argument for `spack spec`.
- [x] Add a `--json` argument to `spack spec`, just like `--yaml`
New entry for K10 microarchitecture.
Reorder Zen* microarchitectures to avoid triggering as k10.
Remove some desktop-specific flags that were preventing Opteron Bulldozer/Piledriver/Steamroller/Excavator CPUs from being recognized as such.
Remove one or two flags which weren't produced in /proc/cpuinfo on older OS (RHEL6 and friends).
* Add master branch as version to HPX package
* Remove C++98 option from HPX package
* Add option to turn off examples in HPX package
* Add MPI variant to HPX package
Rename the `spack diy` command to `spack dev-build` to make the use case clearer.
The `spack diy` command has some useful functionality for developers using Spack to build their dependencies and configure/build/install the code they are developing. Developers do not notice it, partly because of the obscure name.
The `spack dev-build` command has a `-u/--until PHASE` option to stop after a given phase of the build. This can be used to configure your project, run cmake on your project, or similarly stop after any stage of the build the user wants. These options are analogous to the existing `spack configure` and `spack build` commands, but for developer builds.
To unify the syntax, we have deprecated the `spack configure` and `spack build` commands, and added a `-u/--until PHASE` option to the `spack install` command as well.
The functionality in `spack dev-build` (specifically `spack dev-build -u cmake`) may be able to supersede the `spack setup` command, but this PR does not deprecate that command as that will require slightly more thought.
fd58c98 formats the `Stage`'s `archive_path` in `Stage.archive` (as part of `web.push_to_url`). This is not needed and if the formatted differs from the original path (for example if the archive file name contains a URL query suffix), then the copy fails.
This removes the formatting that occurs in `web.push_to_url`.
We should figure out a way to handle bad cases like this *and* to have nicer filenames for downloaded files. One option that would work in this particular case would be to also pass `-J` / `--remote-header-name` to `curl`. We'll need to do follow-up work to determine if we can use `-J` everywhere.
See also: https://github.com/spack/spack/pull/11117#discussion_r338301058
Add a new entry in `config.yaml`:
config:
shared_linking: 'rpath'
If this variable is set to `rpath` (the default) Spack will set RPATH in ELF binaries. If set to `runpath` it will set RUNPATH.
Details:
* Spack cc wrapper explicitly adds `--disable-new-dtags` when linking
* cc wrapper also strips `--enable-new-dtags` from the compile line
when disabling (and vice versa)
* We specifically do *not* add any dtags flags on macOS, which uses
Mach-O binaries, not ELF, so there's no RUNPATH)
`spack deprecate` allows for the removal of insecure packages with minimal impact to their dependents. It allows one package to be symlinked into the prefix of another to provide seamless transition for rpath'd and hard-coded applications using the old version.
Example usage:
spack deprecate /hash-of-old-openssl /hash-of-new-openssl
The spack deprecate command is designed for use only in extroardinary circumstances. The spack deprecate command makes no promises about binary compatibility. It is up to the user to ensure the replacement is suitable for the deprecated package.
* mysql: Use correct python command
python~pythoncmd does not provide a python symlink for python3, so make
sure we pick the right command.
* mysql: Adapt to build env changes
* hypre: Add new variants to expost existing features.
* hypre: Add new variants to expose existing features.
* hypre: Shorten description line.
* hypre: Add an explicit else clause to disable some features.
Previously this command only showed total counts for each regular
expression. This doesn't give you a sense of which regexes are working
well and which ones are not. We now display the number of right, wrong,
and total URL parses per regex.
It's easier to see where we might improve the URL parsing with this
change.
It seems that 3.4.2 includes a change that is supposed to fix parallel
builds (https://lists.gnu.org/archive/html/bug-bison/2019-08/msg00000.html).
Instead, it actually breaks it for me (with -j48) with errors such as:
```
mv: cannot stat 'examples/c/reccalc/scan.stamp.tmp': No such file or directory
Makefile:9323: recipe for target 'examples/c/reccalc/scan.stamp' failed
```
* Ace package. Initial commit
* Correcting header now with licence.
* Using sha256
* Making requested changes:removing import line, urls and checksums in one line, and making it an MakefilePackage.
* Removing extra line
This updates the configuration loading/dumping logic (now called
load_config/dump_config) in spack_yaml to preserve comments (by using
ruamel.yaml's RoundTripLoader). This has two effects:
* environment spack.yaml files expect to retain comments, which
load_config now supports. By using load_config, users can now use the
':' override syntax that was previously unavailable for environment
configs (but was available for other config files).
* config files now retain user comments by default (although in cases
where Spack updates/overwrites config, the comments can still be
removed).
Details:
* Subclasses `RoundTripLoader`/`RoundTripDumper` to parse yaml into
ruamel's `CommentedMap` and analogous data structures
* Applies filename info directly to ruamel objects in cases where the
updated loader returns those
* Copies management of sections in `SingleFileScope` from #10651 to allow
overrides to occur
* Updates the loader/dumper to handle the processing of overrides by
specifically checking for the `:` character
* Possibly the most controversial aspect, but without that, the parsed
objects have to be reconstructed (i.e. as was done in
`mark_overrides`). It is possible that `mark_overrides` could remain
and a deep copy will not cause problems, but IMO that's generally
worth avoiding.
* This is also possibly controversial because Spack YAML strings can
include `:`. My reckoning is that this only occurs for version
specifications, so it is safe to check for `endswith(':') and not
('@' in string)`
* As a consequence, this PR ends up reserving spack yaml functions
load_config/dump_config exclusively for the purpose of storing spack
config
`test_envoronment_status()` was printing extra output during tests.
- [x] disable output only for `env('status')` calls instead of disabling
it for the whole test.
This PR ensures that environment activation sets all environment variables set by the equivalent `module load` operations, except that the spec prefixes are "rebased" to the view associated with the environment.
Currently, Spack blindly adds paths relative to the environment view root to the user environment on activation. Issue #12731 points out ways in which this behavior is insufficient.
This PR changes that behavior to use the `setup_run_environment` logic for each package to augment the prefix inspections (as in Spack's modulefile generation logic) to ensure that all necessary variables are set to make use of the packages in the environment.
See #12731 for details on the previous problems in behavior.
This PR also updates the `ViewDescriptor` object in `spack.environment` to have a `__contains__` method. This allows for checks like `if spec in self.default_view`. The `__contains__` operator for `ViewDescriptor` objects checks whether the spec satisfies the filters of the View descriptor, not whether the spec is already linked into the underlying `FilesystemView` object.
This PR ensures that on Darwin we always append /sbin and /usr/sbin to PATH, if they are not already present, when looking for sysctl.
* Make sure we look into /sbin and /usr/sbin for sysctl
* Refactor sysctl for better readability
* Remove marker to make test pass
These changes update our gcc microarchitecture descriptions based on manuals found here https://gcc.gnu.org/onlinedocs/ and assuming that new architectures are not added during patch releases.
Boost iostream autodetects the compression libraries libzstd and
liblzma outside of the Spack environment.
This commit disables mentioned libraries. In the future if the
Spack zstd/lzma packages were added as dependencies of the Spack
Boost package, additional work could be done to build Boost with
the Spack-built versions of these libraries.
This extends Spack functionality so that it can fetch sources and binaries from-, push sources and binaries to-, and index the contents of- mirrors hosted on an S3 bucket.
High level to-do list:
- [x] Extend mirrors configuration to add support for `file://`, and `s3://` URLs.
- [x] Ensure all fetching, pushing, and indexing operations work for `file://` URLs.
- [x] Implement S3 source fetching
- [x] Implement S3 binary mirror indexing
- [x] Implement S3 binary package fetching
- [x] Implement S3 source pushing
- [x] Implement S3 binary package pushing
Important details:
* refactor URL handling to handle S3 URLs and mirror URLs more gracefully.
- updated parse() to accept already-parsed URL objects. an equivalent object
is returned with any extra s3-related attributes intact. Objects created with
urllib can also be passed, and the additional s3 handling logic will still be applied.
* update mirror schema/parsing (mirror can have separate fetch/push URLs)
* implement s3_fetch_strategy/several utility changes
* provide more feature-complete S3 fetching
* update buildcache create command to support S3
* Move the core logic for reading data from S3 out of the s3 fetch strategy and into
the s3 URL handler. The s3 fetch strategy now calls into `read_from_url()` Since
read_from_url can now handle S3 URLs, the S3 fetch strategy is redundant. It's
not clear whether the ideal design is to have S3 fetching functionality in a fetch
strategy, directly implemented in read_from_url, or both.
* expanded what can be passed to `spack buildcache` via the -d flag: In addition
to a directory on the local filesystem, the name of a configured mirror can be
passed, or a push URL can be passed directly.
For some reason, newer versions of qt fail to build because they cannot
find certain system libraries such as libatomic and libdl.
Leaving the qmake compiler set to gcc seems to fix the problem.
Fixes#13221
fixes#13073
Since #3206 was merged bootstrapping environment-modules was using the architecture of the current host or the best match supported by the default compiler. The former case is an issue since shell integration was looking for a spec targeted at the host microarchitecture.
1. Bootstrap an env modules targeted at generic architectures
2. Look for generic targets in shell integration scripts
3. Add a new entry in Travis to test shell integration
Custom string versions for compilers were raising a ValueError on
conversion to int. This commit fixes the behavior by trying to detect
the underlying compiler version when in presence of a custom string
version.
* Refactor code that deals with custom versions for better readability
* Partition version components with a regex
* Fix semantic of custom compiler versions with a suffix
* clang@x.y-apple has been special-cased
* Add unit tests
We've been doing this for quite a while now, and it does not seem to
cause issues.
- [x] Switch the noisy warning to a debug to make Spack a bit quieter
while building.
* Added architecture specific optimization flags for Clang / LLVM
* Disallow compiler optimizations for mixed toolchains
* We emit a warning when building for a mixed toolchain
* Fixed issues with suffixed versions of compilers; Apple's Clang will,
for the time being, fall back on x86-64 for every compilation.
* DataSpaces: 1.8.0
Add a newer release of DataSpaces for ADIOS2.
Also add missing `-fPIC` flags since this is a static library.
* ADIOS2: Dataspaces, libffi, libfabric
Add missing dependencies to ADIOS2. Without explicit control,
those dependencies might get picked up from the system environment
and will cause unstable builds.
* Hide transitive SST dependencies
* ADIOS2: Simplify SST CMake Flags
As proposed by Chuck
* Methods setting the environment now do it separately for build and run
Before this commit the `*_environment` methods were setting
modifications to both the build-time and run-time environment
simultaneously. This might cause issues as the two environments
inherently rely on different preconditions:
1. The build-time environment is set before building a package, thus
the package prefix doesn't exist and can't be inspected
2. The run-time environment instead is set assuming the target package
has been already installed
Here we split each of these functions into two: one setting the
build-time environment, one the run-time.
We also adopt a fallback strategy that inspects for old methods and
executes them as before, but prints a deprecation warning to tty. This
permits to port packages to use the new methods in a distributed way,
rather than having to modify all the packages at once.
* Added a test that fails if any package uses the old API
Marked the test xfail for now as we have a lot of packages in that
state.
* Added a test to check that a package modified by a PR is up to date
This test can be used any time we deprecate a method call to ensure
that during the first modification of the package we update also
the deprecated calls.
* Updated documentation
Python 3 metaclasses have a `__prepare__` method that lets us save the
class's dictionary before it is constructed. In Python 2 we had to walk
up the stack using our `caller_locals()` method to get at this. Using
`__prepare__` is much faster as it doesn't require us to use `inspect`.
This makes multimethods use the faster `__prepare__` method in Python3,
while still using `caller_locals()` in Python 2. We try to reduce the
use of caller locals using caching to speed up Python 2 a little bit.
Our importer was always parsing from source (which is considerably
slower) because the source size recorded in the .pyc file differed from
the size of the input file.
Override path_stats in the prepending importer to fool it into thinking
that the source size is the size *with* the prepended code.
Since the backup file is only created on the first invocation, it will
contain the original file without any modifications. Further invocations
will then read the backup file, effectively reverting prior invocations.
This can be reproduced easily by trying to install likwid, which will
try to install into /usr/local. Work around this by creating a temporary
file to read from.
* This updates stage names to use "spack-stage-" as a prefix.
This avoids removing non-Spack directories in "spack clean" as
c141e99 did (in this case so long as they don't contain the
prefix "spack-stage-"), and also addresses a follow-up issue
where Spack stage directories were not removed.
* Spack now does more-stringent checking of expected permissions for
staging directories. For a given stage root that includes a user
component, all directories before the user component that are
created by Spack are expected to match the permissions of their
parent; the user component and all deeper directories are expected
to be accessible to the user (read/write/execute).
This feature generates a verification manifest for each installed
package and provides a command, "spack verify", which can be used to
compare the current file checksums/permissions with those calculated
at installed time.
Verification includes
* Checksums of files
* File permissions
* Modification time
* File size
Packages installed before this PR will be skipped during verification.
To verify such a package you must reinstall it.
The spack verify command has three modes.
* With the -a,--all option it will check every installed package.
* With the -f,--files option, it will check some specific files,
determine which package they belong to, and confirm that they have
not been changed.
* With the -s,--specs option or by default, it will check some
specific packages that no files havae changed.
fixes#13005
This commit fixes an issue with the name of the root directory for
module file hierarchies. Since #3206 the root folder was named after
the microarchitecture used for the spec, which is too specific and
not backward compatible for lmod hierarchies. Here we compute the
root folder name using the target family instead of the target name
itself and we add target information in the 'whatis' portion of the
module file.
From Python docs:
--
'surrogateescape' will represent any incorrect bytes as code points in
the Unicode Private Use Area ranging from U+DC80 to U+DCFF. These
private code points will then be turned back into the same bytes when
the surrogateescape error handler is used when writing data. This is
useful for processing files in an unknown encoding.
--
This will allow us to process files with unknown encodings.
To accommodate the case of self-extracting bash scripts, filter_file
can now stop filtering text input if a certain marker is found. The
marker must be passed at call time via the "stop_at" function argument.
At that point the file will be reopened in binary mode and copied
verbatim.
* use "surrogateescape" error handling to ignore unknown chars
* permit to stop filtering if a marker is found
* add unit tests for non-ASCII and mixed text/binary files
Provide up to date specs for build options
Remove non-production versions
Format using autopep8 and flake8
Separate cmake options in adios2 2.4.0 version
Keep default as True as much as possible
Support for Python 2 and 3 for adios2 versions <= 2.4.0
Starting v2.5.0 only Python 3 is supported
Addressing review suggestions
* Add new ACTS releases
* Update ACTS dependency requirements
* We can actually be more specific here
* The material plugin is gone as of ACTS v0.10.0
* Add 0.10.4 release
* Remove material mapping plugin
It was merged into core as of 0.10.x, and given ACTS' youth it is unlikely to have actual users at this point in time.
* Minor clean-up of package information.
* Add variants, fix dependencies, and add conflicts for compilers that do not support C++17.
* Correct dependency type for CMake.
- Add a test that verifies checksums on all packages
- Also add an attribute to packages that indicates whether they need a
manual download or not, and add an exception in the tests for these
packages until we can verify them.
Some packages had incorrect checksums because they needed to be
downloaded from a new place or the package needed tweaking somehow.
These packages to sha256 and the new checksums have been verified by
fetching over https.
These packages have either been retired or are no longer retrievable from
any site we can find. They also aren't needed by other packages, so we're
removing them from Spack.
- allinea-reports: is now arm performance reports
- globus-toolkit: retired, globus is now a paid service.
- uberftp: used globus-toolkit, github site is retired.
- mpiblast: site is dead; no longer fetchable.
- py-mxnet: site and github are gone
- soap2, soapindel, soapsnp: site is gone, unfetchable
- arlecore: could not verify md5 securely
We'd like to use a consistent checksum scheme everywhere so that we can:
a) incorporate archive checksums into our specs and have a
consistent hashing algorithm across all specs.
b) index mirrors with a consistent type of checksum, and not one that
is dependent on how spack packages are written.
- [x] convert existing md5, sha224, sha512, sha1 checksums to sha256
Both floating-point and NEON are required in all standard ARMv8
implementations. Theoretically though specialized markets can support
no NEON or floating-point at all. Source:
https://developer.arm.com/docs/den0024/latest/aarch64-floating-point-and-neon
On the other hand the base procedure call standard for Aarch64
"assumes the availability of the vector registers for passing
floating-point and SIMD arguments". Further "the Arm 64-bit
architecture defines two mandatory register banks: a general-purpose
register bank which can be used for scalar integer processing and
pointer arithmetic; and a SIMD and Floating-Point register bank".
Source:
https://developer.arm.com/docs/ihi0055/latest/procedure-call-standard-for-the-arm-64-bit-architecture
This makes customization of Aarch64 with no NEON instruction set
available so unlikely that we can consider them a feature of the
generic family.
* py-line-profiler: add 2.1.2, re-run cython if needed
See rkern/line_profiler#166.
* Update var/spack/repos/builtin/packages/py-line-profiler/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Addition of 1.1.3 and 1.1.4
* Addition of conditional enum-34 installation.
* Update var/spack/repos/builtin/packages/py-maestrowf/package.py
Addition of versioning for pyyaml.
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Addition of enum34 back to older versions 1.1.3 and below.
* adjust building of OpenFOAM 1806 and earlier
- spack now unpacks into spack-src, but earlier OpenFOAM versions
still expect particular directory names (eg, OpenFOAM-v1806).
Resolve by creating a symlink during patching.
* replace openfoam 1806 patch with URL version
This PR adds a 'concretize' entry to an environment's spec.yaml file
which controls how user specs are concretized. By default it is
set to 'separately' which means that each spec added by the user is
concretized separately (the behavior of environments before this PR).
If set to 'together', the environment will concretize all of the
added user specs together; this means that all specs and their
dependencies will be consistent with each other (for example, a
user could develop code linked against the set of libraries in the
environment without conflicts).
If the environment was previously concretized, this will re-concretize
all specs, in which case previously-installed specs may no longer be
used by the environment (in this sense, adding a new spec to an
environment with 'concretize: together' can be significantly more
expensive).
The 'concretize: together' setting is not compatible with Spec
matrices; this PR adds a check to look for multiple instances of the
same package added to the environment and fails early when
'concretize: together' is set (to avoid confusing messages about
conflicts later on).
While the build environment already takes share/pkgconfig into account,
the generated module files etc. only consider lib/pkgconfig and
lib64/pkgconfig.
* fujitsu-mpi: commit new package
* Add homepage.
* * Modified the MPI commands to a simple form.
* Unnecessary processing has been deleted.
* Add conflict for all compilers except the Fujitsu compiler.
* Fix typo.
* Delete versions.
* Delete conditions for specifying the Fujitsu compiler.
When removing support for dotkit in #11986 the code trying to set the
paths of the various module files was not updated to skip it. This
results in a failure because of a key error after the deprecation
warning is displayed to user.
This commit fixes the issue and adds a unit test for regression.
Note that code for Spack chains has been updated accordingly but
no unit test has been added for that case.
* fftw: grouped precisions in a single variant
* fftw: simd options are now based on target features and not on variants
* fftw: simplified computing the selected precisions
* fix ipykernel dependency, newer versions are python3-only
* Update var/spack/repos/builtin/packages/py-ipykernel/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-ipykernel/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
Dotkit is being used only at a few sites and has been deprecated on new
machines. This commit removes all the code that provide support for the
generation of dotkit module files.
A new validator named "deprecatedProperties" has been added to the
jsonschema validators. It permits to prompt a warning message or exit
with an error if a property that has been marked as deprecated is
encountered.
* Removed references to dotkit in the docs
* Removed references to dotkit in setup-env-test.sh
* Added a unit test for the 'deprecatedProperties' schema validator
* libint: switch to 2-stage build for 2.6.0+
* libint: add tune and fortran variants
* cp2k: add support for libint >= 2.0
* cp2k: use pkg-config for linking libxc
* github releases are not released versions, but from-source
releases
* they lack the mimification of the JS/CSS components and as
such require node-js and npm, this conflicts with python@3:
* this commit
* drops the from-source dependencies on node-js and npm and
* updates the checksums to the correct sha256 hashes of the
pypi releases. The pypi-tarballs are different
* ZFP: CMake Package
ZFP is primarily build via CMake, which will have all install logic
and configuration files generated.
The 0.5.0 release did not support this yet, so we toss it.
* Patch ADIOS1: ZFP 0.5.1+ support
* ZFP: Expose all CMake variants
fixes#12915closes#12916
Since Spack has support for specific targets it might happen that
software is built for targets that are not exactly the host because
it was either an explicit user request or the compiler being used is
too old to support the host.
Modules for different targets are written into different directories
and by default Spack was adding to MODULEPATH only the directory
corresponding to the current host. This PR modifies this behavior to
add all the directories that are **compatible** with the current host.
* new package: py-python-ldap
* fix dependency types
* improvements
* Update var/spack/repos/builtin/packages/py-python-ldap/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-python-ldap/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* add openldap dependency
* go-md2man: disable module-mode
* Update var/spack/repos/builtin/packages/go-md2man/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* add singularity 3.4.1
Signed-off-by: ArangoGutierrez <eduardo@sylabs.io>
* revert some changes
Signed-off-by: ArangoGutierrez <eduardo@sylabs.io>
* add maintainers list to pkg singularity
Add @alalazo and me to the Singularity maintainers list
* Update var/spack/repos/builtin/packages/singularity/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/singularity/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/singularity/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
7bcb306 updated setup_environment in the GCC package to examine the
bin/ directory to find alternatively-named instances of CC, but this
failed to account for when GCC was being installed and failed when
it attempted to list the not-yet-existing installation prefix. This
commit updates the logic to skip this search if the bin/ directory
doesn't exist.
* libaio: fixed a condition that checks whether we are running on OS X
* libaio: simplified package by adding an explicit conflict for darwin
* libaio: added information to the docstring
* fio: added version 3.16, added conflict when using libaio, docstring
* lvm2: conflict due to libaio dep, improved docstring, simpler install
* mariadb: conflict due to libaio dep, improved docstring, version 10.4.7
* mariadb: the dependency on libaio is now conditional, removed conflict
* mariadb: fixed a typo in previous commit
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* libaio: turned into a MakefilePackage
Sometimes when remove_file is called on a link, that link is missing
(perhaps ctrl-C happened halfway through a previous action). As
removing a non-existent file is no problem, this patch changes the
behavior so Spack continues rather than stopping with an error.
Currently you would see
ValueError: /path/to/dir is not a link tree!
and now it continues with a warning.
Unlike the compiler binary name search logic, the `setup_environment` in
GCC's package assumes the compiler names are *exactly* `gcc`, `g++`,
etc. In many external installations (Homebrew, Macports) the
installation includes only *suffixed* versions such as `gcc-9`.
This patch uses the GCC compiler search suffixes to actually locate the
correct filenames for the installed compilers, allowing the
Spack-generated module file to have useful definitions of CC, CXX, etc.
It also allows for the possibility that the user's external installation
of GCC is compiled without Fortran support, in which case the `FC`
environment variables are not defined.
bin/spack now needs to have a "-*- python -*-" line after the shebang, so
that emacs will interpret it as a python file instead of as a shell
script. Add one line to the license check limit to accommodate this.
The Python landscape is going to be changing in 2020, and Python 2 will
be end of life. Spack should *prefer* Python 3 to Python 2 by default,
but we still need to run on systems that only have Python2 available.
This is trickier than it sounds, as on some systems, the `python` command
is `python2`; on others it's `python3`, and RHEL8 doesn't even have the
`python` command. Instead, it makes you choose `python3` or
`python2`. You can thus no longer make a simple shebang to handle all the
cases.
This commit makes the `spack` script bilingual. It is still valid
Python, but its shebang is `#!/bin/sh`, and it has a tiny bit of shell
code at the beginning to pick the right python and execute itself with
what it finds.
This has a lot of advantages. I think this will help ensure that Spack
works well in Python3 -- there are cases where we've missed things
because Python2 is still the default `python` on most systems. Also,
with this change, you do not lose the ability to execute the `spack`
script directly with a python interpreter. This is useful for forcing
your own version of python, running coverage tools, and running profiling
tools. i.e., these will not break with this change:
```console
$ python2 $(which spack) <args>
$ coverage run $(which spack) <args>
$ pyinstrument $(which spack) <args>
```
These would not work if we split `spack` into a python file and a shell
script (see #11783). So, this gives us the best of both worlds. We get
to control our interpreter *and* remain a mostly pure python executable.
* The perl-uri-escape package duplicates perl-uri
The Perl URI::Escape module is in the Perl URI package so the Spack
perl-uri-escape package is a duplicate of the perl-uri package. This PR
does the following:
- replace `depends_on('perl-uri-escape')` with `depends_on('perl-uri')`
in packages that dependend on perl-uri-escape
- add the version from perl-uri-escape to perl-uri
- remove the unneeded dependency from perl-uri
- remove the perl-uri-escape package
* Reinstated perl-test-needs dependency
Put the perl-test-needs dependency for perl-uri back in but set it to
type='test'.
* For tests to succeed the type must be ('build', 'test')
Now that Spack injects microarchitecture specific optimizations for
the selected target, packages should avoid adding flags that could
step over those.
This PR adds interproscan-4.8, which has a completely different build
system than version 5. Note that this builds for running on a host as
opposed to a queue system. I am fairly certain that a queue system can
be configured later.
This PR also adds a patch for intrproscan-5 to build when the user
building the packages has a large GID by setting posix mode for tar.
* llvm: fixed issues with syntax and formatting
* use spec.architecture.target.family
* use spec.target instead of spec.architecture.target
* mesa: use == instead of __contains__
A function added to this package ran as part of importing it and
printed a warning for most Spack invocations, this removes the
warning message.
Also:
* Use compilers directly instead of Spack compiler wrappers (since
references to the compiler are embedded in text and binary files
of the installation)
* Add 'cross' variant for setting CROSS environment variable for
build
* Set UPCXX_INSTALL for generated module files
* Set UPCXX_GASNET_CONDUIT/UPCXX_NETWORK in generated module files
on Cray systems
* Also set UPCXX_NETWORK in build environment for Cray systems
The output of subprocess.check_output is a byte string in Python 3. This causes dictionary lookup to fail later on.
A try-except around this function prevented this error from being noticed. Removed this so that more errors can propagate out.
The following dependencies were added:
+ depends_on('perl-exporter-tiny', type=('build', 'run'))
+ depends_on('perl-list-moreutils-xs', type=('build', 'run'))
Preferred targets were failing because we were looking them up by
Microarchitecture object, not by string.
- [x] Add a call to `str()` to fix target lookup.
- [x] Add a test to exercise this part of concretization.
- [x] Add documentation for setting `target` in `packages.yaml`
* microarchitectures: zen starts from x86_64, not from excavator
* Unit tests: fixed a test that is wrong with the new modeling
* microarchitectures: fixed features and inheritance for 15h family
bulldozer doesn't inherit from barcelona (10h) + added xop, lwp and tbm
instruction sets to the 15h family (it distinguish the family from 17h)
Addresses #12804
This PR adds the creation of the remaining (16) templates to ensure we can create them with expected content. The goal is to facilitate catching during testing.
Spack doesn't need `requests`, and neither does `jsonschema`, but
`jsonschema` tries to import it, and it'll succeed if `requests` is on
your machine (which is likely, given how popular it is). This commit
removes the import to improve Spack's startup time a bit.
On a mac with SSD, the import of requests is ~28% of Spack's startup time
when run as `spack --print-shell-vars sh,modules` (.069 / .25 seconds),
which is what `setup-env.sh` runs.
On a Linux cluster where Python is mounted from NFS, this reduces
`setup-env.sh` source time from ~1s to .75s.
Note: This issue will be eliminated if we upgrade to a newer `jsonschema`
(we'd need to drop Python 2.6 for that). See
https://github.com/Julian/jsonschema/pull/388.
- This is needed to support Cray machines -- we need an architecture
mic_knl > x86_64
- We used Cray's naming scheme for this target to make it work seamlessly
with the module-based detection sccheme on Cray. mic_knl is pretty
much dead, so this will be the last succh target. We will need to work
wtih Cray and other vendors in the future.
Seamless translation from 'target=<generic>' to either
- target.family == <generic> (in methods)
- 'target=<generic>:' (in directives)
Also updated docs to show ranges in directives.
Spack can now:
- label ppc64, ppc64le, x86_64, etc. builds with specific
microarchitecture-specific names, like 'haswell', 'skylake' or
'icelake'.
- detect the host architecture of a machine from /proc/cpuinfo or similar
tools.
- Understand which microarchitectures are compatible with which (for
binary reuse)
- Understand which compiler flags are needed (for GCC, so far) to build
binaries for particular microarchitectures.
All of this is managed through a JSON file (microarchitectures.json) that
contains detailed auto-detection, compiler flag, and compatibility
information for specific microarchitecture targets. The `llnl.util.cpu`
module implements a library that allows detection and comparison of
microarchitectures based on the data in this file.
The `target` part of Spack specs is now essentially a Microarchitecture
object, and Specs' targets can be compared for compatibility as well.
This allows us to label optimized binary packages at a granularity that
enables them to be reused on compatible machines. Previously, we only
knew that a package was built for x86_64, NOT which x86_64 machines it
was usable on.
Currently this feature supports Intel, Power, and AMD chips. Support for
ARM is forthcoming.
Specifics:
- Add microarchitectures.json with descriptions of architectures
- Relaxed semantic of compiler's "target" attribute. Before this change
the semantic to check if a compiler could be viable for a given target
was exact match. This made sense as the finest granularity of targets
was architecture families. As now we can target micro-architectures,
this commit changes the semantic by interpreting as the architecture
family what is stored in the compiler's "target" attribute. A compiler
is then a viable choice if the target being concretized belongs to the
same family. Similarly when a new compiler is detected the architecture
family is stored in the "target" attribute.
- Make Spack's `cc` compiler wrapper inject target-specific flags on the
command line
- Architecture concretization updated to use the same algorithm as
compiler concretization
- Micro-architecture features, vendor, generation etc. are included in
the package hash. Generic architectures, such as x86_64 or ppc64, are
still dumped using the name only.
- If the compiler for a target is not supported exit with an intelligible
error message. If the compiler support is unknown don't try to use
optimization flags.
- Support and define feature aliases (e.g., sse3 -> ssse3) in
microarchitectures.json and on Microarchitecture objects. Feature
aliases are defined in targets.json and map a name (the "alias") to a
list of rules that must be met for the test to be successful. The rules
that are available can be extended later using a decorator.
- Implement subset semantics for comparing microarchitectures (treat
microarchitectures as a partial order, i.e. (a < b), (a == b) and (b <
a) can all be false.
- Implement logic to automatically demote the default target if the
compiler being used is too old to optimize for it. Updated docs to make
this behavior explicit. This avoids surprising the user if the default
compiler is older than the host architecture.
This commit adds unit tests to verify the semantics of target ranges and
target lists in constraints. The implementation to allow target ranges
and lists is minimal and doesn't add any new type. A more careful
refactor that takes into account the type system might be due later.
Co-authored-by: Gregory Becker <becker33.llnl.gov>
Add llnl.util.cpu_name, with initial support for detecting different
microarchitectures on Linux. This also adds preliminary changes for
compiler support and variants to control the optimizatoin levels by
target.
This does not yet include translations of targets to particular
compilers; that is left to another PR.
Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
Move verbose messages to debug level
get_patchelf should return None for test platform as well because create_buildinfo invokes patchelf to get rpaths.
Update command-line (CLI) parsing to understand references to yaml
files that store Spack specs. Where a file reference is encountered,
the full Spec in the file will be read in. A file reference may
appear anywhere that a spec could appear before. For example, if you
write "spack spec -y openmpi > openmpi.yaml" you may then install the
spec using the yaml file by running "spack install ./openmpi.yaml";
you can also refer to dependencies in this way (e.g.
"spack install foo^./openmpi.yaml").
There are two requirements for file references:
* A file path entered on the CLI must include a "/" even if the file
exists in your current working directory. For example, if you
create an openmpi.yaml file as above and run
"spack install openmpi.yaml" from the same directory, it will
report an error.
* A file path entered on the CLI must end with ".yaml"
This commit adds error messages to clearly inform the user of both
violations.
* implicit_rpaths are now removed from compilers.yaml config and are always instantiated dynamically, this occurs one time in the build_environment module
* per-compiler list required libraries (e.g. libstdc++, libgfortran) and whitelist directories from rpaths including those libraries. Remove non-whitelisted implicit rpaths. Some libraries default for all compilers.
* reintroduce 'implicit_rpaths' as a config variable that can be used to disable Spack insertion of compiler RPATHs generated at build time.
Fixes#12829
This adds a variant to the util-linux package that controls whether it
builds its own libuuid. Variant defaults to True. It enables other
packages to choose to get libuuid from the libuuid package instead.
This also changes the cryptsetup package to build util-linux with
~libuuid (so it uses an explicitly-Spack-built instance of libuuid
instead).
Fixes#12732Fixes#12767c22a145 added automatic detection and RPATHing of compiler libraries
to Spack builds. However, in cases where the parsing/detection logic
fails this was terminating the build. This makes the compiler library
detection "best-effort" and reports an issue when the detection fails
rather than terminating the build.
- add missing perl dependency
- only filter Makefile if referred to dependency is in the spec
- rewrite the shebang line of scripts to use spack perl
- remove tabix dependency as tabix and bgzip are part of htslib
* cuda: New version 10.1.243
Adds CUDA 10.1.243. The installer command-line arguments have slightly
changed, hence in the install method the version needs to be inspected
in order to give the correct arguments for the new installer.
* cuda: Combine common command-line arguments
The CUDA 10.1+ installer has slightly different command-line arguments
than previous versions. Keep the common parts together and only split
where they are different.
* Make flake8 happy
* Fix CD: Packages Service First
Build the packages.spack.io service images first, so they are
guaranteed to be pushed even if further images fail to build.
Fix the query to the `spack` script executed in later builds.
* CD: Remove Spack Images
Now done on Dockerhub.
* update py-bokeh: new version & dependencies
* Revert "update py-bokeh: new version & dependencies"
This reverts commit 5e191a0b20.
* update py-bokeh: new version & dependencies
* trigger travis-ci
* adjust python dependency-type to br
* update py-bokeh: new version & dependencies
* Revert "update py-bokeh: new version & dependencies"
This reverts commit 5e191a0b20.
* new package: py-fsspec: add package.py
* trigger travis-ci
* adjust python dependency-type to br
This is similar to #10191. The Ubuntu package for clang 8.0.0 displays
a very unusual version string, and we need this new regex to detect it
as just 8.0.0
Unit test have been complemented by the output that was failing
detection.
* CGNS: Add setting of RPATH on Darwin
This should go in the CGNS CMakeLists.txt, but it isn't there yet and won't be in previous versions, so best to handle it here.
If building on darwin/MacOSX, need to set the RPATH so applications can find shared library correctly.
* Restrict MACOSX_RPATH setting
This has now been added to the CGNS distribution, so the setting of `CMAKE_MACOSX_RPATH` should be restricted to current and previous releases and not upcoming releases.
* new package: py-configojb
* add version 4.7.2
* improve dependencies
* fix url for versions > 5.0.0
* Update var/spack/repos/builtin/packages/py-configobj/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-configobj/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* use format to create url strings
* fix typo
* improve style
* Update var/spack/repos/builtin/packages/py-configobj/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* py-gpaw: Fixing missing numpy include path, adding newer version of py-gpaw and fixing a bug with libxc.c in older py-gpaw
* py-gpaw: Fix Python and ASE version dependencies
- GPAW 19.8.1 requires Python 3.x, add dependency on python@3.5:
- GPAW releases are associated with a corresponding ASE release, add
matching ASE version dependencies.
* py-gpaw: Enable the scalapack variant by default
GPAW installation instructions say scalapack is optional but "highly
recommended". Thus enable it by default.
* add new cutadapt release 2.5, and adjust dependencies conditional on version
* use https, not ssh, for git url
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* update py-xopen (add 0.8.2 checksum)
* refine version specific dependencies
add py-bz2file, which needs to be created
* create py-bz2file
* Revert "refine version specific dependencies"
This reverts commit 70649da988.
* Revert "update py-xopen (add 0.8.2 checksum)"
This reverts commit 7400f44caa.
* update py-xopen (add 0.8.2 checksum)
* refine version specific dependencies
add py-bz2file, which needs to be created
* py-bz2file needed when built with python 2.7
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* space after comma
- Fix trailing whitespace missed by the bug described in #12755.
- Fix other style issues that have crept in over time (this can happen
when flake8 adds new checks with new versions)
E501 (line too long) exemptions are probably our most common ones -- we
add them for directives, URLs, hashes, etc. in packages. But we
currently add them even when a line *doesn't* need them, which can mask
trailing whitespace errors.
This changes `spack flake8` so that it will only add E501 exemptions if
the line is *actually* too long.
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
There are problems with libunwind for arm and trying to use it with mesa.
See for example:
https://github.com/grate-driver/mesa/issues/6
disabling use of libunwind for arm, allows the package to be built
Signed-off-by: Howard Pritchard <hppritcha@gmail.com>
- Use of symbol testing macro requires explicit include()
- CMake policies are not version-portable and the support has to queried
based on CMake version
* libpeas@1.22.0: new package
* libpeas: note more build dependencies
Build and link dependencies were obtained through a combination of
examining the `config.log` file from `configure` and looking at the
pkg-config files of `libpeas`.
* libpeas: add search path for GIR/typelib files
* Use spec.architecture.target insted of platform.
* remove default in simd variant value.
simd variant change to archtecture independent values.
* Add check simd values.
* rewrite check simd values.
* * flake8
* change aarch64 to arm (neon support only 32 bit arm.)
* py-ase: New version 3.18
Add ASE version 3.18. ASE 3.18 has dropped support for python 2.x,
hence add a dependency on python@3.5: for it.
* Add more ASE dependencies
Address review comments, add dependencies on py-scipy, py-matplotlib,
py-flask, and also add type=('build', 'run') dependency specifiers.
mock_archive can now take multiple extension / tar option pairs (default matches old behavior).
url_fetch.test_fetch tests more archive types.
compression.EXTS split into EXTS and NOTAR_EXTS to avoid unwanted, non-meaningful combinatoric extensions such as .tar.tbz2.
While debugging this package on our Cray machine, tmux was throwing an
error involving the ncurses headers. Tmux would look for headers in
system locations rather than where spack installed ncurses. Tested only
on a Cray.
- previously spec parsing didn't allow you to look up missing (but still
known) specs by hash
- This allows you to reference and potentially reinstall
force-uninstalled dependencies
- add testing for force uninstall and for reference by spec
- cmd/install tests now use mutable_database
* When cleaning the stage root, only remove directories that appear
to be used for staging Spack packages. Previously Spack was clearing
all directories in the stage root, which could remove content not
related to Spack if the user chose a staging root which contains
files/directories not managed by Spack.
* The documentation is updated with warnings about choosing a stage
directory that is only managed by Spack (although generally the
check added in this PR for "spack clean" should avoid removing
content that was not created by Spack)
* The default stage directory (in config.yaml) is now
$tempdir/$user/spack-stage and the logic is updated to omit the
$user portion of this path if $tempdir already contains a $user
directory.
* When creating stage root assign user read/write permissions to all
directories in the path under $user. Previously Spack was assigning
the permissions of the first existing parent directory
`spec.prefix` reads from Spack's database, and if you do this with
multiple consecutive read transactions, it can take a long time. Or, at
least, you can see the paths get written out one by one.
This uses an outer read transaction to ensure that actual disk locks are
acquired only once for the whole `spack find` operation, and that each
transaction inside `spec.prefix` is an in-memory operation. This speeds
up `spack find -p` a lot.
Refactor `spack.cmd.display_specs()` and `spack find` so that any options
can be used together with -d. This cleans up the display logic
considerably, as there are no longer multiple "modes".
This is another machine-readable version of `spack find`. Supplying the
`--json` argument causes specs to be written out as json records,
easily filered with tools like jq.
e.g.:
$ spack find --json python | jq -C ".[] | { name, version } "
[
{
"name": "python",
"version": "2.7.16"
},
{
"name": "bzip2",
"version": "1.0.8"
}
]
- spack find --format allows you to supply a format string and have specs
output in a more machine-readable way, without dedcoration
e.g.:
spack find --format "{name}-{version}-{hash}"
autoconf-2.69-icynozk7ti6h4ezzgonqe6jgw5f3ulx4
automake-1.16.1-o5v3tc77kesgonxjbmeqlwfmb5qzj7zy
bzip2-1.0.6-syohzw57v2jfag5du2x4bowziw3m5p67
...
or:
spack find --format "{hash}"
icynozk7ti6h4ezzgonqe6jgw5f3ulx4
o5v3tc77kesgonxjbmeqlwfmb5qzj7zy
syohzw57v2jfag5du2x4bowziw3m5p67
...
This is intended to make it much easier to script with `spack find`
* Install the newest version of ncbi-rmblastn
Version ncbi-rmblastn 2.2.28 coonfiguration fails for gcc compiler on ubuntu 16.04 due to some compatibility issues that requires manual intervention to keep the installation going. However you still stumble upon other issues while compiling it.
Using Intel compiler passes the configuration step but fails for the compilation process as well.
Here I'm using the latest version and patch, and the recommended configuration option as mention in http://www.repeatmasker.org/RMBlast.html
* uploading ncbi-blast patch
The mariadb-5.5 series can not be compiled with gcc-9.1.0 and above. Add
a conflicts statement to reflect that.
The error is due to -Werror=address-of-packed-member, a warning that is
new in gcc-9.
* Update R CRAN packages
This PR update R CRAN packages. It also ensures that spack built
packages that correspond to R recommended packages are specified in the
dependency list. This is needed for #12015.
* Add more updates to packages
* Updated dependencies of CRAN R packages
Also, use cloud.r-project.org rather than cran.r-project.org to use
automatic redirection to mirrors. This minimizes the load on the cran
server.
* Update to latest versions of CRAN R packages
* Fix flake8 issues
Some blank lines at the end of a coupple of package files crept in.
* Adjust r-animation dependencies
The r-magick package depends on image-magick, so r-animation should as
well. Also, add in texlive for LaTeX support.
* New package: r-magick
* Adjust line spaces in r-magick
* Add swftools dependenct to r-animation
* New package: swftools
This is needed bt r-animation
* Add 'when' clause to some package dependencies
- r-animation
- r-coin
- r-dt
- r-openssl
* New package: r-ellipsis
* New package: r-vctrs
* New package: r-zeallot
* New package: r-generics
* New package: r-cardata
* Add r-progress dependency to r-readxl
* New package: r-askpass
* New package: r-openxlsx
* New package: r-rio
* New package: r-sys
* New package: r-zip
* Add more updated packages
These are updates that have happened while working on this PR as well as
catching the ones from the cran.rstudio.com URL that were missed before.
* New package: r-gower
* New package: r-recipes
* New package: r-squarem
* New package: r-libcoin
* New package: r-rcmdcheck
* New package: r-remotes
* New package: r-sessioninfo
* New package: r-xopen
* New package: r-rgexf
* New package: r-rook
* New package: r-later
* New package: r-promises
* New package: r-xfun
* New package: r-urca
* New package: r-ggsignif
* New package: r-polynom
* New package: r-ucminf
* New package: r-ordinal
* New package: r-inum
* New package: r-debugme
* New package: r-fs
* New package: r-shinyfiles
* New package: r-gsa
* New package: r-nmof
* New package: r-dosnow
* New package: r-rann
* New package: r-reticulate
* New package: r-future
* New package: r-globals
* New package: r-listenv
* New package: r-future-apply
* New package: r-rsvd
* New package: r-sctransform
* New package: r-mitools
* Remove a stray FIXME line
* Fix typo in dependency for r-rcmdcheck
* Remove the dependency on r-splines
The r-splines package never existed in spack, but it does not exist on
CRAN either. There is an archive version from 1999 but it does not have
the proper extension format for modern R packages. The latest version
does not depend on r-splines, and apparently previous versions at least
built without it. Also, bump the required R version.
* Fix typo in r-rcpp dependency
* Fix typos in dependencies
- r-diagrammer
- r-janitor
- r-seurat
Also, bump minimum R version for r-rngtools.
* New package: r-clisymbols
* New package: r-fitdistrplus
* New package: r-gbrd
* New package: r-gh
* New package: r-ini
* New package: r-metap
* New package: r-npsurv
* New package: r-rdpack
* New package: r-snakecase
* New package: r-tinytex
* New package: r-usethis
* Make recommended changes
Made the changes that were recommended in the initial review.
- change cran.rstudio.com to cloud.r-project.org
- change R-project to r-project
- for packages with no listed homepage use the canonical link to the
package page
- for packages with a dependency constraint on R itself, specify the
dependency type
- add `list_url` where missing from package
* New package: r-hdf5r
This is needed for some older versions of r-seurat.
* Set R versions in packages
If the R version is specified in the DESCRIPTION file then set it in the
respective spack package.py file.
* Update var/spack/repos/builtin/packages/r-aer/package.py
Change dependency version of r-car.
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Set constraint of mlbench dependency of r-adabag
* Set constraint on r-rcpp dependency of r-ape
* Removed "suggested" r-testthat from r-bibtex
* Update var/spack/repos/builtin/packages/r-bindrcpp/package.py
Fix dependency spec of r-bindr in r-bindrcpp.
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/r-blob/package.py
Add r-vctrs version constraint.
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Remove r-base64enc dependency from r-callr
* Update var/spack/repos/builtin/packages/r-car/package.py
Set constraint on r-cardata dependency.
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Remove unneeded dependencies from r-clipr
* Add gmake dependency to r-construct
* Set the proper homepage for r-crayon
* Add r-jsonlite as a dependency for r-crul
The jsonlite package moved from "suggests" to "imports" with 0.8.4.
* Remove accidental colon after package name
* Add version constraint to r-fpc dependency in r-dendextend
* Additional constraints for R version with r-digest
* Add r-jsonlite dependency for latest verion of r-dt
* Add r-htmltools dependency in r-dygraphs package
* Removed unneeded dependencies from r-fnn
* Remove unneeded dependencies from r-formatr
* Add version constraint for r-mvtnorm dependency in r-fpc
* Added gmake dependency to r-fs
* Add r-globals dependency in r-future-apply
* Add perl dependency to r-gdata
* Add openssl dependency for r-ggally
* Removed unneeded dependencies from r-globaloptions
* Update r-haven
- Add version constraint on r-forcats
- Add gmake build dependency
* Fixed gmake dependency
Gmake is a build only dependency.
* Apply suggestions from code review
Apply a batch of suggestions from Adam Stewart.
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Remove unneeded dependencies from r-hoardr
* Fix r-htmlwidgets homepage
* Add gmake build dependency to r-httpuv
* Remove unneeded dependency from r-log4r
* Remove unneeded dependency from r-maldiquant
* Add gmake build dependency to r-minqa
* Remove unneeded dependency from r-mlbench
* Set constraint on R6 dependenvy of r-pbdzmq
* Set constraints on r-callr dependency of r-pkgbuild
* Remove unneeded dependency from r-nloptr
* Remove unneeded dependencies from r-pkgmaker
* Set R version constraint for r-raster
* Set version constraint on rcpp for r-rcppprorgess
* Added gmake build dependency
* Remove unneeded dependencies from r-rematch
* Remove unneeded dependency from r-plogr
* Add gmake build dependency for r-rcurl
* Apply suggestions from code review
Bring in more suggestions from Adam Stewart.
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Remove cnpy dependency from r-rcppcnpy
The r-rcppcnpy package has its own modified copy of the cnpy source and
will build from that internal source. The cnpy dependency is therefore
unnecessary.
* Add comment to reconcile dependencies
The CRAN site lists Perl, Getopt::Long as a dependency. The Spack Perl
will have the Getopt::Long package installed so just depend on Perl.
* Add dependency on udunits2 with newer versions of r-units
* Set additional proj constraint for r-sf
Support for PROJ6 was added in r-sf-0.7-4.
* New package: pandoc
This package installs the pandoc and pandoc-citeproc binaries in order
to satisfy dependencies on pandoc until the Haskell framework is in
Spack.
* Add pandoc dependency to r-bookdown
* Add comment about MPI in r-ergm
* Add pandoc dependency for r-reprex
* Add proj constraints to r-rgdal dependencies
Support for PROJ6 was added in version 1.4-2.
* Modifications to r-rgl
- Rearranged the dependencies to be more consistent with other packages
- put the type last on the depends_on lines to be consistent with other
packages
- Added version constraints for some dependencies
- Added pandoc build dependency
* Be more accurate with rjsonio constraint for r-rgooglemaps
* Remove unneeded dependencies from r-rhmmer
* Tweak constraints for r-rjava
- Set java version constraint
- add gmake build dependency
* Add pandoc dependency to r-markdown
* Remove unneeded dependencies from r-rrcov
* Tweak r-rstan package
- remove duplicate specifications
- remove unneeded when conditions
- add version constraints
- arrange to follow order on CRAN page more closely
- add gmake build dependency
- add pandoc build dependency
* Add pandoc build dependency for r-rstantools
* Remove unneeded dependency from r-runit
* Remove unneeded dependencies from r-selectr
* Remove example R code from description
The example would module loading to break, at least in the case of Lmod
using TCL module files. It could be during the TCL to Lua conversion but
the module fails due to interpreting ipart of the example as a command.
* Update r-seurat
New version of r-seurat with new dependencies.
* New package: r-dqrng
* New package: r-leiden
* New package: r-rcppannoy
* New package: r-rcppparallel
* New package: r-rspectra
* New package: r-sitmo
* New package: r-uwot
* Remove unneeded dependency from r-snow
* Remove unneeded dependency from r-sourcetools
* Added pandoc build dependency for r-stanheaders
* Remove unneeded dependencies from r-taxizedb
* Remove unneeded dependencies from r-tclust
* Add dependency constraints for r-threejs
The following are needed for version 0.2.2:
- r-matrix
- r-jsonlite
* Remove unneeded dependencies from r-vfs
* Remove unneeded dependencies from r-vgam
* Remove unneeded dependency from r-xlconnectjars
* Remove unneeded dependency from r-xlsxjars
* Remove unneeded dependency from r-xnomial
* Remove ~mpi from fftw dependency of swftools
* Apply suggestions from code review
Add latest round of suggestions from Adam Stewart.
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Fix rjsonio spec for r-rgooglemaps
The r-rjsonio spec is a when conditional.
* Rename 3 R.* packages
- r-utils --> r-r-utils (R.utils)
- r-oo --> r-r-oo (R.oo)
- r-methodss3 --> r-r-methodss3 (R.methodsS3)
Also, renamed dependencies in packages that depend on these three.
* Loosen version constraint on mariadb for r-rmysql
Make the mariadb constraint on mariadb-5.5 rather than the more
specific, and limiting, mariadb-5.5.56. This will allow an external
mariadb, such as mariadb-5.5.60 on CentOS-7.5 to be used. It also allows
for r-rmysql to be built against newer versions of the mariadb-5.5
series that might be added to spack.
* Convert to Autotools package
* dyninst and papi are now optional (off by default)
* limit dyninst version to < 10 (see
https://github.com/bsc-performance-tools/extrae/issues/30)
* Add numactl dependency
* Enable parallel installs for 3.7 and later
* Set EXTRAE_HOME in module files and for dependent package installs
* Generalize cxx11 support flag (previously it was using a specific
syntax and this updates it to use the cxx11 support flag for the
compiler in use).
* The install for kaldi was copying library symlinks but not the
actual library files, this makes sure to copy the libraries
* All libraries are installed to 'prefix.lib' (the original
library directory structure is no longer maintained)
* The install step for executables did not account for the different
dynamic library suffix on MacOS
e891cc4 updated the cairo package to make gobject support optional
and disabled it by default. gtkplus requires gobject support so this
explicitly enables +gobject on the cairo dependency of gtkplus.
When Spack installs a package it writes the package.py file and
patches to a separate repository (which reflects the state of the
package at the time it was installed). Previously, Spack only wrote
patches that were used at installation time. This updates the
archiving step to include all patch files that are relevant to the
package (in case that repository is used in another context).
Change the depends_on type from default (build + link) to just 'link'
for binutils and a few other packages. We don't use the binutils
utilities (only libs). On cori at NERSC (Cray), this was breaking the
build by covering up the system ld.
* Only apply issue-87.patch for versions before 1.2.3
* 1.2.3 builds fine with gcc@8:, but 1.2.2 and 1.2.2_p1 both fail
(with or without the patch) so the conflict is updated to exclude
only these two versions.
This commit removes redundant calls to `libtoolize` and `aclocal`.
Some configurations, such as a Spack user using macOS with a
Homebrew-installed `libtool` added to their `packages.yaml`, have
`autoreconf` and GNU libtoolize installed as `glibtoolize`, but not
`libtoolize`. While Spack installations of `libtool` built from source
would install `glibtoolize` and symlink `libtoolize` to `glibtoolize`,
an external installation of GNU libtoolize as `glibtoolize` will not
have such a symlink, and thus the call `m.libtoolize()` will throw an
error because `libtoolize` does not exist at the path referenced by
`m.libtoolize()` (i.e.,
`self.spec['libtool'].prefix.bin.join('libtoolize')).
However, on these same systems, `autoreconf` runs correctly, and calls
`glibtoolize` instead of `libtoolize`, when appropriate. Thus,
removing the call to `libtoolize` should resolve the error mentioned
above.
The redundant call to `aclocal` is also removed in this commit because
the maintainers of GNU Automake state that "`aclocal` is expected to
disappear" and suggest that downstream users never call `aclocal`
directly -- rather, they suggest calling `autoreconf` instead.
* Make mpi, scipy, petsc4py, and nlopt support optional
* Later versions depend on python@3.5:
* Versions before 0.4.1 must build with MPI: add a conflict for
@:0.4.1~mpi
Before this commit, CMake would still attempt to detect OpenMP, even
if RAJA were being installed with `spack install raja~openmp`, because
the option `ENABLE_OPENMP` is set to "On" by default. This commit
explicitly disables OpenMP when the Spack install spec contains
'~openmp`, ensuring that CMake does not attempt to detect and link
with OpenMP.
Uses code from CMake to detect implicit link paths from compilers
System paths are filtered out of implicit link paths
Implicit link paths added to compiler config and object under `implicit_rpaths`
Implicit link paths added as rpaths to compile line through env/cc wrapper
Authored by: "Ben Boeckel <ben.boeckel@kitware.com>"
Co-authored by: "Peter Scheibel <scheibel1@llnl.gov>"
Co-authored by: "Gregory Becker <becker33@llnl.gov>"
* esmf: add patch when building with intel for 7.0.x
* esmf: set Makefile variables required to propagate CXX/F90 flags
* ncl: add ymake patch for @6.4.0:
* ncl: add pixman, bzip2, freetype dependencies
* Add version 6.3.2 (which does not require patches like 6.1.5)
* Add +python variant to build Python bindings
* Option to build shared libraries does not exist for newer
versions including 6.3.2
* Update 'libs' property (library names are different for newer
versions)
* Add support to detect and build with MKL as blas provider
SEACAS is now using versions instead of just relying on always
installing master. There are now tagged versions.
The most recent version is the first that can be used with a
non-patched develop version of the CGNS package; previously, seacas
required that the CGNS library have some internally-developed patch
applied, but this is no longer needed.
Also, added support for adios2 package with the adios2 variant.
This currently defaults to off.
c9e214f updated template creation by passing **kwargs to package
template classes but the template classes were not updated to accept
them; this adds **kwargs to package template initializers where they
are needed.
Having a non-directory invisible file causes `spack find` to die. This
fixes the logic to ignore invalid module names but only warn if they're
visible.
```
NotADirectoryError: [Errno 20] Not a directory: '/spack/var/spack/repos/builtin/packages/.DS_Store/package.py'
```
This variant (off by default) adds support for the kdreg option in
the GNI provider. It is disabled by default in order to avoid
potential runtime conflicts with the cray-mpich library. Only one
library at a time can use this feature.
This patch allows the libfabric package to work correctly out of
the box on systems like Cori at NERSC (since it's CLE7 update).
Otherwise the spack build may autodetect kdreg headers on the system
and enable this problematic feature.
* nlohmann-json: 3.7.0
The version 3.6.0 fix compile issues with GCC 9.0.
* nlohmann-json: proper test handling
tests are controlled via `spack install --test root|all ...`
instead of a variant.
This adds a special package type to Spack which is used to aggregate
a set of packages that a user might commonly install together; it
does not include any source code itself and does not require a
download URL like other Spack packages. It may include an 'install'
method to generate scripts, and Spack will run post-install hooks
(including module generation).
* Add new BundlePackage type
* Update the Xsdk package to be a BundlePackage and remove the
'install' method (previously it had a noop install method)
* "spack create --template" now takes "bundle" as an option
* Rename cmd_create_repo fixture to "mock_test_repo" and relocate it
to shared pytest fixtures
* Add unit tests for BundlePackage behavior
* new package: libglvnd
* remove virtual provides from libglvnd
libglvnd does not provide them directly, but
through implementations that depend on it.
* fix flake8 errors
* libglvnd: fix style/remove unecessary variants
* remove older libglvnd version
* explicitly enable all libglvnd stubs
* libglvnd: conflict with non-linux platform
This allows "spack spec --yaml" to generate a spec YAML file that can
be used with "spack install -f". Before, this would fail in cases
where the spec had build dependencies.
* All fetch strategies now accept the Boolean version keyword option `no_cache` in order to allow per-version control of cache-ability.
* New git-specific version keyword option `get_full_repo` (Boolean). When true, disables the default `--depth 1` and `--single-branch` optimizations that are applied if supported by the git version and (in the former case) transport protocol.
* The try / catch blog attempting `--depth 1` and retrying on failure has been removed in favor of more accurately ascertaining when the `--depth` option should work based on git version and protocol choice. Any failure is now treated as a real problem, and the clone is only attempted once.
* Test improvements:
* `mock_git_repository.checks[type_of_test].args['git']` is now specified as the URL (with leading `file://`) in order to avoid complaints when using `--depth`.
* New type_of_test `tag-branch`.
* mock_git_repository now provides `git_exe`.
* Improved the action of the `git_version` fixture, which was previously hard-wired.
* New tests of `--single-branch` and `--depth 1` behavior.
* Add documentation of new options to the packaging guide.
* Choose a specific commit as a version (before, the only version was
the master branch)
* Add CMake patch which allows for building the version added here
(this replaces the existing patches for percept in Spack)
* Update trilinos dependency
Also update dependencies to build latest py-deeptools versions and
add a patch to run tests:
* Replace pypi URL with github URL to download tests
* Update dependency versions of py-pysam, py-matplotlib
* Add new py-deeptoolsintervals package as a dependency
* Add py-plotly and py-nose dependencies
* Patch setup.py to collect and run tests
- mkdirp now takes arguments to allow it to properly set permissions on created directories.
- Two arguments (group and mode) set permissions for the leaf directory.
- Intermediate directories can inherit permissions from either the topmost existing directory (the parent) or the leaf.
On machines where $TMP is owned by a gid with no name, this avoids the
following error when the default spack stage does not exist:
(spackbook):spack$ spack clean
==> Removing all temporary build stages
==> Error: 'getgrgid(): gid not found: 57095'
Spack needs to deal with gids directly unless users pass them in.
UnifyCR has been renamed to UnifyFS. Renaming the Spack package is
the last step in this process.
This renames the package and changes any UnifyCRs to UnifyFS within
the package.
Compiler caching was using the `id()` function to refer to configuration dictionary objects. If these objects are garbage-collected, this can produce incorrect results (false positive cache hits). This change replaces `id()` with an object that keeps a reference to the config dictionary so that it is not garbage-collected.
Fixes#11163
The goal of this work is to simplify stage directory structures by eliminating use of symbolic links. This means, among other things, that` $spack/var/spack/stage` will no longer be the core staging directory. Instead, the first accessible `config:build_stage` path will be used.
Spack will no longer automatically append `spack-stage` (or the like) to configured build stage directories so the onus of distinguishing the directory from other work -- so the other work is not automatically removed with a `spack clean` operation -- falls on the user.
* Overhaul PyTorch package
* Flake8
* Distributed requires MPI, NCCL not specified correctly
* Binary was being specified incorrectly
* Run tests at install time
* Disable GLOO in addition to GLOO_IBVERBS
* Add option to disable QTDesigner plugin for qwt
Qt designer shouldn't be necessary to build downstream GUI code.
Currently `qwt^qt~tools` fails to build:
(darwin clang@10.0.1)
```
compiling qwt_designer_plugin.cpp
compiling qwt_designer_plotdialog.cpp
moc qwt_designer_plugin.h
moc qwt_designer_plotdialog.h
rcc qwt_designer_plugin.qrc
qwt_designer_plugin.h:23: Error: Undefined interface
make[1]: *** [moc/moc_qwt_designer_plugin.cpp] Error 1
make[1]: *** Waiting for unfinished jobs....
qwt_designer_plugin.cpp:17:10: fatal error: 'QDesignerFormEditorInterface' file not found
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
make[1]: *** [obj/qwt_designer_plugin.o] Error 1
make: *** [sub-designer-make_default-ordered] Error 2
```
* Update VTK for newer VisIt and compiler versions
Several changes/enhancements to VTK package
---
Add version 8.1.0 (default version for VisIt 3.x)
---
Tweak VTK options for version 8 and VisIt:
- only add mpi4py version option when mpi4py is enabled
- Require object factory for downstream packages
- Remove OpenGL preference for VTK 8
---
Combine +python3 into +python
The spec for using python3 should just be `+python^python@3:`.
---
Remove unused VTK cmake argument on newer version
---
Patch for Python 3 fails on VTK 6.1 (needed for VisIt 2.x):
```
==> Patch /rnsdhpc/code/spack/var/spack/repos/builtin/packages/vtk/python3.7-const-char.patch failed.
==> Error: ProcessError: Command exited with status 1:
'/usr/bin/patch' '-s' '-p' '1' '-i' '/rnsdhpc/code/spack/var/spack/repos/builtin/packages/vtk/python3.7-const-char.patch' '-d' '.'
```
and as it happens, VisIt 2.13 is incompatible with Python 3 anyway.
---
Fix compiler error:
As spack's configuration warning says, double-quotes can cause trouble:
```
==> [2019-07-29-11:47:55.269653] Warning: Quotes in command arguments can confuse scripts like configure.
The following arguments may cause problems when executed:
-DVTK_REQUIRED_OBJCXX_FLAGS=""
Quotes aren't needed because spack doesn't use a shell.
Consider removing them
```
They were being added to the compile line, causing clang to think it was
asked to compile an empty file:
```
cd /private/var/folders/fy/x2xtwh1n7fn0_0q2kk29xkv9vvmbqb/T/s3j/spack-stage/spack-stage-3nk9bwe_/spack-build/Rendering/OpenGL && /rnsdhpc/code/spack/lib/spack/env/clang/clang++ -DVTK_IN_VTK -DvtkRenderingOpenGL_EXPORTS -F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks -DGLX_GLXEXT_LEGACY -O2 -g -DNDEBUG -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -fPIC -fvisibility=hidden -fvisibility-inlines-hidden "" -o CMakeFiles/vtkRenderingOpenGL.dir/vtkCocoaGLView.mm.o -c /rnsdhpc/code/spack/var/spack/stage/vtk-6.1.0-b2mj276iz77fadisv2me365qe27t3gxt/spack-src/Rendering/OpenGL/vtkCocoaGLView.mm
clang: error: no input files
make[2]: *** [Rendering/OpenGL/CMakeFiles/vtkRenderingOpenGL.dir/vtkCocoaGLView.mm.o] Error 1
```
* Modernize/PEP-8 visit package statements
* Add new VisIt version and patches for building on Mac
- VisIt's cmake assumes a 'vtk(tiff|jpeg|png)' *library* target exported by
VTK, but VTK 8.1.x on my configuration seems to have these as header-only
targets with library dependencies.
- Explicitly add QT path to visit configure: Without this, somehow
`${VISIT_QT_DIR}` was being set to empty, so that the build failed with
`missing /bin/moc`.
- VisIt assumes that if it isn't being built statically, QWT has been built as
a mac Framework. QWT actually is built as a framework based on whether QT
itself is.
Error message:
```
-- Looking for QWT
CMake Error at CMake/SetUpThirdParty.cmake:131 (MESSAGE):
Include Directory for QWT (/rnsdhpc/code/spack/opt/spack/darwin-mojave-x86_64/clang-10.0.1-apple/qwt-6.1.3-bmfxirweplzhjoiil4rw632evkyteuwk/lib/qwt.framework/Versions/Current/Headers) does not exist.
Call Stack (most recent call first):
CMake/FindQwt.cmake:57 (SET_UP_THIRD_PARTY)
CMakeLists.txt:1251 (INCLUDE)
```
* ADIOS 2.4.0: Add new Deps
Version 2.4.0 of ADIOS2 added new dependencies that are not
yet listed as `depends_on` and/or disabled otherwise. Add them
now to avoid picking them up from system paths, e.g. `libpng`.
* ADIOS2: Variant Defaults Change
* Python: False by default
* ADIOS1: only used prior to 2.3.0
* UnifyCR: update dependencies and build options
This adds some specifics about dependencies and conflicts and adds
additional build options and variants. UnifyCR now also has limited
fortran support.
* Remove debug statements condition on Spack debug
Change debug print statements to now be turned on when the -g cflag
is found in the flags the user sets.
* add new package: py-python-magic
* tidy up
* Update var/spack/repos/builtin/packages/py-python-magic/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* add master and dependencies
* remove gcc and make
* add variants, make doc and ch-grow dependencies optional
* capitalize description sentence
* move dependencies and variants below version block
* fix typos
* gromacs: fix simd detection for pre 2018 versions
* pre 2018 the cmake file was named differently
* fixed up post 2018 patch file which was non pretty
* Trim patch
Fixes#12062406c791 addressed "spack module load" for upstream modules but not
the "spack module loads" command. This applies the same fixes from
406c791 to "spack module loads".
* Create package.py
* applied reviewer suggestions
* Update package.py
* remove CamelCase from variant names
* add comment on why fetching package via git
* found typo in variant to cmake-argumentlist translation
* rename variants to ~nonuma ~nompi to be in sync with cmake-args, refine mpi@3-dependency definition
* Revert "rename variants to ~nonuma ~nompi to be in sync with cmake-args, refine mpi@3-dependency definition"
This reverts commit 58e8cf7d93.
* remove version-preference
* add checksum for singularity release 3.3.0
* update singularity doc URL
URL at the lbl.gov domain has message saying:
"This website is going away soon! Update your bookmarks!"
* add note about build log file for post-install step
* provide links to both 2.x and 3.x security docs
* remove whitespace. Passing flake8 confirmed locally this time :)
* add TODO comment for fakeroot support
The previous version does not properly install the required cmake
configuration files for blaze-lib, so find_package does not work
correctly.
This patch converts the blaze-lib package to use CMakePackage,
adds the required cmake dependency, and removes the install()
member function, which is not working correctly and is no longer
needed.
In a review of a previous pull request (
https://github.com/spack/spack/pull/10713 ) it was mentioned that the
proper way to figure out the target architecture is via
spec.architecture.target. This patch fixes this for the openblas
package.
Signed-off-by: Janne Blomqvist <janne.blomqvist@aalto.fi>
Not sure what happened between #5321 and now but the CC=CXX fix now
prevents py-matplotlib from building with the Intel compiler. I verified
with versions of py-matplotlib from 2.0.2 to 3.0.2 and intel-17.0.4 and
19.0.4 that py-matplotlib successfully builds with the Intel compiler
without that code.
* Add preCICE xSDK support
* Cleanup generation of cmake arguments
* Generalize numpy include
* Fix python spec
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Fix numpy spec
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* hunspell: write autoreconf method to triage error
This commit fixes the error described in GitHub issue
`AutotoolsPackage` class attempts to call `libtoolize`, which doesn't
exist on macOS systems that externally install `libtool` in Spack via
Homebrew -- Homebrew installzes GNU libtoolize as `glibtoolize`.
The fix is to call `autoreconf` only, and GitHub pull request #12344
makes this change in
AutotoolsPackage (https://github.com/spack/spack/pull/12344). However,
while waiting for that pull request to be merged, overriding the
`autoreconf` method achieves the same result for a self-contained
fix. This self-contained fix is necessary to fix a dependency bug in
the `hunspell` package.
* hunspell: add missing gettext dependency
* hunspell: add version 1.7.0
* add new package cromwell
* fix flake8 errors, add cromwell-womtool package
* change name of cromwell to cromwell-server
* renamed cromwell-server to just cromwell
* update description to what is in the project docs
* fixing format call for python2.6 compatibility
* Add comment that 1.0.1 versions are no longer supported
* Add comment that 1.0.2 versions are only supported up to
December 2019
* Add versions 1.0.2s, 1.0.2r, and 1.0.2p
* Add versions 1.1.0k, 1.1.0j, and 1.1.0i
* Add version 1.1.1c
* Add comment that 1.1.0 versions are only supported up to
September 2019
It's no longer possible to set compiler flags under as an entry under
"paths" in compilers.yaml; instead the user must list these under the
"flags" section. This updates the docs accordingly.
Spack stacks drop invalid dependencies applied to packages by a
spec_list matrix operation
Without this fix, Spack would raise an error if orthogonal dependency
constraints and non-dependency constraints were applied to the same
package by a matrix and the dependency constraint was invalid for
that package. This is an error, fixed by this PR.
An example failing configuration:
spack:
definitions:
- packages: [libelf, hdf5+mpi]
- compilers: ['%gcc']
- mpis: [^openmpi]
specs:
- matrix:
- $packages
- $compilers
- $mpis
5f74f22 enabled installing compilers for dependencies but not for the root package (and in particular not for DAGs which consist of one package)
this enables bootstrapping compilers for both types of DAGs
Resolves#11932.
Move the PIC flags from CFLAGS on the configure line to the spack
compiler wrapper for ncurses. The problem with the configure line for
autotools is that specifying CFLAGS sets the entire flags, thus
deleting the flags that configure would add itself.
By default, if CFLAGS is unspecified, then configure picks a sensible
default of `-g -O2`. But adding `-fPIC` erases these and it ends up
building unoptimized.
* Add patch to detect newer versions of MacOS and to fix a typo in
configure.ac (AM_LIBTOOLSFLAGS should be AM_LIBTOOLFLAGS)
* Remove variant declarations for unsupported languages
* Add support for quartz on MacOS
* Add optional X Window support
* Specifically build against qt@4 when building QT support
* Point to appropriate C++ standard libraries when building with
Clang on MacOS
* Disable parallel build (for all platforms)
* Increase verbosity of configure script by adding
--disable-silent-rules
* Add numpy 1.17.0
* Overhaul numpy package
* Flake8 fixes
* Undefined reference fix
* HeaderList and LibraryList need an arg
* veclibfort has no headers
* Add patch for older versions of py-numpy
* Remove py-meep hack from py-numpy package
* libflame: always add max arg hack flag
* Fix build with GCC 4.8
* Compiler flags come from self.compiler
* Only apply -std=c99 to cflags
* Try to fix libflame package
* Fix ATLAS build on macOS
* --force-clang flag added in 3.10.3
When building with GCC, c-blosc requires the -std=gnu99 flag.
Before this patch, the build would only add -std=gnu99 for GCC when
building on specific architectures; this adds -std=gnu99 in all cases
when using GCC.
When loading `openpmd-api` as a lib to build outside of
spack or to build depending spack packages, the "CMake-PUBLIC"
header-only library MPark.Variant must be available. Also,
the `*Config.cmake` package must be able to find dependent
libs if used.
* new package: py-backports-tempfile
* Update var/spack/repos/builtin/packages/py-backports-tempfile/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* remove rc version
* fix single quote
Use `spack pkg changed` and `spack maintainers` to figure out which
packages changed and who their maintainers are in a PR.
Add any maintainers to the PR as reviewers.
Using "compilers" with the "s" is an invalid config section and throws an error.
Traceback (most recent call last):
File "spack/bin/spack", line 48, in <module>
sys.exit(spack.main.main())
File "/home/omsai/src/libkmap/spack/lib/spack/spack/main.py", line 633, in main
env = ev.find_environment(args)
File "/home/omsai/src/libkmap/spack/lib/spack/spack/environment.py", line 263, in find_environment
return Environment(env)
File "/home/omsai/src/libkmap/spack/lib/spack/spack/environment.py", line 534, in __init__
self._read_manifest(f)
File "/home/omsai/src/libkmap/spack/lib/spack/spack/environment.py", line 561, in _read_manifest
self.yaml = _read_yaml(f)
File "/home/omsai/src/libkmap/spack/lib/spack/spack/environment.py", line 402, in _read_yaml
validate(data, filename)
File "/home/omsai/src/libkmap/spack/lib/spack/spack/environment.py", line 395, in validate
e, data, filename, e.instance.lc.line + 1)
spack.config.ConfigFormatError: /home/omsai/src/libkmap/spack.yaml:15: Additional properties are not allowed ('compilers' was unexpected)
* add new version, add sha256 sums
* Update var/spack/repos/builtin/packages/py-apipkg/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* add python dependencies
* new package: py-usgs
* Update var/spack/repos/builtin/packages/py-usgs/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-usgs/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* new package: py-requests-futures
* Update var/spack/repos/builtin/packages/py-requests-futures/package.py
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
Environment.concretize returns newly-concretized specs rather than
printing them; as a result, the _display argument is removed from
Environment.concretize (originally only used to avoid printing specs
during unit testing). Command logic which invokes
Environment.concretize prints these explicitly.
* minimap2: remove py-mappy dependency and build on ARM
py-mappy: Change URL and new version.
* merge py-mappy to minimap2.
* 1. add type in depends_on.
2. remove unneeded which.
* Incorporate as a patch upstream commit 0c20dbf059 (diff-acb9169b4ccbac494ced5140d285a015) resolving problems with `-Wno-...` options not being understood by GCC.
* Incorporate as a patch upstream PR https://github.com/ericniebler/range-v3/pull/1202 fixing upstream issue https://github.com/ericniebler/range-v3/issues/1196.
* Compile tests only if we actually want to run them.
* Optionally compile documentation with a `+doc` variant.
* Add `+examples` and `+perf` variants to avoid unnecessary compilation of components usually not required for install.
* Add conditional build-only dependency on Boost when appropriate.
* Install docs, examples and performance tests if built (not part of upstream build instructions).
* Add @chissg as a maintainer.
- Update c-blosc to 1.17.0
- Add patch to build test_forksafe for versions 1.15.0 through 1.17.0
when compiled with the Intel compiler.
- Remove code that turned off building the test with the Intel compiler
1. xmmintrrin.h is included x86 only.
2. Add makefiles for non-x86 hosts.
3. mpicc in Makefiles is replaced spacks mpi compile command.
4. variant check is rewite with satisfies.
* Geant4 data packages: Set the install path name explicitly.
* Use the correct directory name for g4photonevaporation,g4radioactivedecay,g4realsurface
* Add versions 8.0.16, 5.7.26, and 5.6.44
* Update boost dependency for versions 8.0.16, 8.0.15, and 8.0.14
* Update dtrace script when building for versions before 8 as is done
for the glib package
* Set perl as a build dependency for versions before 8
* cxxstd=17 conflicts with version 8 when server code is built
(~client_only)
* Add -Wno-deprecated-declarations for cxxstd > 11
* Add -Wno-error=register for cxxstd > 14
This updates the Spack QT package to enable building qt version 4 on
MacOS.
This includes the following changes to the qt package:
* add version 4.8.7
* add option to build with or without shared libs
* add options to disable tools, ssl, sql, and freetype support
* add qt4-tools patch when building qt@4+tools
* add option to build as a framework (only available on MacOS)
* replace qt4-el-capitan patch with qt4-mac patch (which includes the
edits from qt4-el-capitan)
* apply qt4-pcre-include-conflict.patch only for version 4.8.6
(rather than all 4.x versions)
* apply qt4-gcc-and-webkit.patch for 4.x versions before 4.8.7 and
create a separate qt4-gcc-and-webkit-487.patch for version 4.8.7
* update patch function for qt@4 on MacOS to update configure
variables relevant to Spack (e.g. PREFIX)
* add option to build freetype with Spack, as a vendored dependency
of QT, or not at all (default is to build with Spack)
This includes the following edits outside of the qt package:
* Update MacOS version utility function to return all parts of the
Mac version (rather than just the first two)
* gettext package: implement "libs"
* python package: add gettext as a dependency
* Raise an exception and exit with a meaningful message when binary path substitution fails.
* Skip binary text replacement with padding and issue a warning when the new install path is longer than the old install path.
Fixes#12007.
The Cray cc wrappers don't handle the -s flag (strip) cleanly, It's
not essential to strip the binary, so just remove the flag on Cray.
Note: the default build on Cray is for the back end and the unzip
binary won't run on the front end. To build for FE, use something
like arch=cray-fe-x86_64.
* Add +shared variant, which builds shared library in addition to the
static library.
* Install libraries even when specifying the header-only option
(header-only is just about installing an additional folder).
* An additional make call is not required to build generator
executables (they are built by default).
* Streamlined help-line of each variant.
* Fix Mac platform check for dependency in py-ipython package: 'when'
constraints in Spack directives must be Specs (either a Spec
object or a Spec in string format)
* Fix Mac version check in py-numpy: platform.mac_ver() returns a
3-part string as its first tuple item so the check as written would
never pass; use Spack Version object to simplify check.
* Fix Mac version check in qt package (the check was incorrectly
comparing ints and strings) and use Spack version object to
simplify check.
* Add versions 4.3.0, 4.3.1, and 4.3.2
* The URL format changed after 4.1.4, so this adds a url_for_version
function to choose the URL format based on the version
With this PR, a user can designate older versions of OpenGL as an
external Spack package, and dependents can use that installation
as long as they do not have version requirements.
MacOS currently comes with OpenGL 2.1; there is currently no
'provides' directive in the OpenGL Spack package which specifies a
gl version provided for versions earlier than OpenGL 3.3, so earlier
versions of OpenGL are not considered to provide any version of gl.
This PR records that any version of OpenGL provides 'gl' (which is
sufficient for any package that does not require a specific version
of gl).
* Version 1.3.0 requires python 3.5 or later (no Python 2 support)
* Remove test of scipy.weave import (not available since 1.0)
* Add more-sensitive py-numpy constraints based on py-scipy version
* Replace py-nose dependency with py-pytest
* Add adamjstewart as maintainer
* Rename py-pytorch to py-torch
* Add versions 1.1.0 and 1.0.1
* Define modules to test import of after installation (import_modules)
* py-typing dependency is only needed for older versions of Python
(3.4 or before)
* Newer versions of py-torch depend on newer versions of CUDA
* Add adamjstewart as maintainer
* Remove libuuid dependency for python on Darwin
Python 2.7 includes Carbon, which requires a proprietary typedef defined in
the system `/usr/include/uuid/uuid.h`:
```
In file included from /rnsdhpc/code/spack/var/spack/stage/python-2.7.16-chgwvgls4ezgujsknn27vlmkhwbzpqik/Python-2.7.16/Python/mactoolboxglue.c:27:
In file included from /rnsdhpc/code/spack/var/spack/stage/python-2.7.16-chgwvgls4ezgujsknn27vlmkhwbzpqik/Python-2.7.16/Include/pymactoolbox.h:10:
In file included from /System/Library/Frameworks/Carbon.framework/Headers/Carbon.h:20:
In file included from /System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h:23:
In file included from /System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AE.h:20:
In file included from /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h:208:
In file included from /System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/HFSVolumes.h:25:
/usr/include/hfs/hfs_format.h:794:2: error: unknown type name 'uuid_string_t'; did you mean 'io_string_t'?
```
Similarly, even with Python 3, having Spack's libuuid in the toolchain
causes matplotlib to fail to build downstream because its `osx` backend
links against Carbon:
```
building 'matplotlib.backends._macosx' extension
/rnsdhpc/code/spack/lib/spack/env/clang/clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/usr/local/include -I/usr/X11/include -I/opt/X11/include -I. -I/rnsdhpc/code/spack/opt/spack/darwin-mojave-x86_64/clang-10.0.1-apple/python-3.7.2-bipx24oyxqxowqc75o5vfih7dljiaohz/include/python3.7m -c src/_macosx.m -o build/temp.macosx-10.14.5-x86_64-3.7/src/_macosx.o
In file included from src/_macosx.m:1:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Cocoa.framework/Headers/Cocoa.h:12:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:87:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSURLError.h:15:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h:24:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AE.h:20:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h:208:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/HFSVolumes.h:25:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/hfs/hfs_format.h:794:2: error: unknown type name 'uuid_string_t'; did you mean 'io_string_t'?
uuid_string_t ext_jnl_uuid;
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/device/device_types.h:89:33: note: 'io_string_t' declared here
typedef char io_string_t[512];
```
MacOS version 10.14.5
Xcode 10.2.1
Apple LLVM version 10.0.1 (clang-1001.0.46.4)
* Mark libuuid as conflicting with Darwin due to framework
If Spack's libuuid is included by any other package that tests for or
requires the Cocoa or Carbon frameworks, the build will *fail* becuse it
appears that Apple's libraries require a special version of libuuid and
uuid.h.
```
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Cocoa.framework/Headers/Cocoa.h:12:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:87:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSURLError.h:15:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h:24:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AE.h:20:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h:208:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/HFSVolumes.h:25:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/hfs/hfs_format.h:794:2: error: unknown type name 'uuid_string_t'; did you mean 'io_string_t'?
uuid_string_t ext_jnl_uuid;
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/device/device_types.h:89:33: note: 'io_string_t' declared here
typedef char io_string_t[512];
```
* Revert "Mark libuuid as conflicting with Darwin due to framework"
This reverts commit 9a68b75202.
* Document libuuid exception in python package
* update to kim-api-2.1.1 and openkim-models-2019-07-25
* openkim-models provide needed dependency constraints and settings
* add maintainers and fixup flake8 errors
* font-util: Remove duplicated dependencies.
* font-util: Fix path handling for font resources.
The "join_path" call made no sense but still managed to work somehow most of the times.
If +pthreads is specified, googletest actually gets build without
pthreads support and vice versa.
If pthreads is not available, googletest should detect it itself which
is why "enabling" pthreads in case of ~pthreads does not seem to cause
any error.
Change-Id: I29de8c4a23dc3901124b27a1ead3354949b7e65b
* xsdk: phist has a conflict with gcc version <= gcc-4.9.1 - so add a variant to disable it on older compiler builds
This is triggered by #11677
* fix typo
* Added a new package for LAME and a variant in sox for it.
* Fixed download url for LAME
* libmad: Added new package libmad for mp3 decoding. Changed sox variant from lame to mp3.
* libmad: Added m4 as a requirement
* libmad: Added comment on patch origins
* libmad: Added a list_url for alternate download location
* libmad: Fixing libmad download url
- We don't currently make enough use of the maintainers field on
packages, though we could use it to assign reviews.
- add a command that allows maintainers to be queried
- can ask who is maintaining a package or packages
- can ask what packages users are maintaining
- can list all maintained or unmaintained packages
- add tests for the command
* Add QMCPACK v. 3.8.0
* Remove QE variant conflict for serial QMCPACK installations.
* Add support for QE 6.4.1 converter.
* FindLibxml2QMC patch function only needed prior to QMCPACK 3.8.0
* Added a unit test reproducing the failure in 12085
* Fixed name clash in the 'from_environment_diff' function
The bug reported in #12085 stemmed from a name clash among variables,
introduced during the refactor in #10753 and not caught by unit tests
and reviews.
* ioapi: add version 3.2
* ioapi: unwrap version checksum; it's exempt from line length QA
* ioapi: drop overridden build(); it's the same as the default
* cmake: Move cxx11 flags for fujitsu into the flag_handler method
* cmake: sanitization and error checking in flag_handler
* cmake: Fix fujitsu flag check from 'fc' to 'fj'
- Setting specs from lockfiles was not correctly stringifying concretized
user specs.
- Fix `_set_user_specs_from_lockfile`
- Add some validation code to `SpecList` constructor
Spack has evolved to have three types of hash functions, and it's
becoming hard to tell when each one is called. Whlie we aren't yet ready
to get rid of them, we can refactor them so that the code is clearer and
easier to track.
- Add a `hash_types` module with concise descriptors for hashes.
- Consolidate hashing logic in a private `Spec._spec_hash()` function.
- `dag_hash()`, `build_hash()`, and `full_hash()` all call `_spec_hash()`
- `to_node_dict()`, `to_dict()`, `to_yaml()` and `to_json()` now take a
`hash` parameter consistent with the one that `_spec_hash()` requires.
Co-authored-by: Todd Gamblin <tgamblin@llnl.gov>
- ensure that Spec._build_hash attr is defined
- add logic to compute _build_hash when it is not already computed (e.g. for specs prior to this PR)
- add test to ensure that different instance of a build dep are preserved
- test conversion of old env lockfile format to new format
- tests: avoid view creation, DAG display in tests using MockPackage
- add regression test for more-general bug also fixed by this PR
- update lockfile version since the way we are maintaining hashes has changed
- write out backup for version-1 lockfiles and test that
* openjdk
* Removing preferred from latest and adding a few lines for readability.
* Remove bad whitesapce
* removing formatting changes
* stable url for openjdk 1.8
* remove extra blank line
* actual binary
Add version for 'gpu' and variant for 'cuda'. These are currently available from the 'master-gpu' branch.
* hpctoolkit: add version gpu and variant cuda
* The gcc >= 4.8.x requirement only applies for dyninst >= 10.x.
* fix docker builds/remove extra builds/add ci builds
* preinstall vim in CI builder images
* simplify & streamline docker resources
* restore os-container-mapping.yaml file
The database and mutable_database fixtures were installing and uninstalling the same specs multiple times to ensure the database for tests has the correct state.
This commit optimizes the procedure by caching the state in an external directory, and copying it in instead of going through the installation or uninstallation again.
The database fixture is meant not to be modified by tests. This commit enforces this invariant by making the database read-only before starting the test.
* Added missing db markers to tests
* Added test for uninstall_by_spec
* `database` fixture now returns a read-only database
* Tests that modify the DB now use `mutable_database` fixture
ibm-java: fix the URL to only use a machine type that ibm-java
supports so that 'spack info' doesn't report a non-existent URL on
platforms that it doesn't support.
Summary:
- Allow multiple definitions of compiler in compilers.yaml (use first instance)
- Still print debug messages when there are duplicates, to assist users in finding this issue.
Merging configs from different scopes can result in multiple compiler being present in the same configuration list. Instead of raising when there are duplicates, take the one with highest precedence.
Print a debug message instead of raising, so that we can still diagnose this. We don't have a good way of warning the user about inconsistent configuration *in the same file* -- we'd need to dig into YAML file/line info for that.
- [x] Add shell tests to ensure that `spack env activate`, `spack env
deactivate`, and `despacktivate` continue to work.
- [x] Also ensure that activate and deactivate both work with `set -u`
* extends mkdirs with permissions for intermediate folders
Does not use os.makedirs mode parameter because its behavior is changed
with Python 3.7 (it ignores it for intermediate dirs), and moreover it
was not possible to set different modes for newly-created folders
and leaf folder.
reference:
- https://bugs.python.org/issue19930
- https://docs.python.org/3.7/library/os.html#os.makedirs
* comment mkdirp step easing code understanding
* revert mkdir to default for package metapath
since metapath is nested in package folder, there is no need
to specify permissions for intermediate folders because the prefix
already exists.
* comment create_install_directory package modes
Bug relates to the interplay between:
1. random dict orders in python 3.5
2. bugfix in initial implementation of stacks for `_concretize_dependencies`
when `self._dependencies` is empty
3. bug in coconcretization algorithm computation of split specs
Result was transient hang in coconcretization.
Fixed#3 (bug in coconcretization) to resolve.
- remove redundant code in Environment.__init__
- use socket.gethostname() instead of which('hostname')
- refactor updating SpecList references
- refactor 'specs' literals to a single variable for default list name
- use six.string_types for python 2/3 compatibility
* Fix scikit-learn build with Apple clang
* Update compiler unit tests
* Fix unit tests
* Fix OpenMP dep
* recursive=True no longer necessary
* Add myself as a maintainer
* Specify which versions require OpenMP
* Typo fixes
* LLVM-OpenMP is the correct dependency, no OMPT
* Flake8 fix
* Undo Apple Clang OpenMP flag change, split into a separate PR
Later versions of libjpeg-turbo build with CMake; to build with
user-specified cflags, the user must supply these to CMake as
-DCMAKE_C_FLAGS (Spack's typical approach of injecting these flags
into the compiler wrapper invocation is insufficient in this case).
Currently libjpeg-turbo cannot be implemented as a CMakePackage
(and thereby take advantage of the flag_handler implementation it
provides) because not all versions of libjpeg-turbo use CMake, so
this adds a custom implementation of flag_handler and
flags_to_build_system_args to libjpeg-turbo.
* cmake: change c++ spec when building with Fujitsu compiler.
* cmake: define cxxflags using a Fujitsu compiler's method.
* cmake: Add condition of whether to add cxx11 option.
* from_sourcing_file: fixed a bug + added a few ignored variables
closes#7536
Credits for this change goes to mgsternberg (original author of #7536)
The new variables being ignored are specific to Modules v4.
* Use Spack Executable in 'EnvironmentModifications.from_sourcing_file'
Using this class avoids duplicating lower level logic to decode
stdout and handle non-zero return codes
* Extracted a function that returns the environment after sourcing files
The logic in `EnvironmentModifications.from_sourcing_file` has been
simplified by extracting a function that returns a dictionary with the
environment one would have after sourcing the files passed as argument.
* Further refactoring of EnvironmentModifications.from_sourcing_file
Extracted a function that sanitizes a dictionary removing keys that are
blacklisted, but keeping those that are whitelisted. Blacklisting and
whitelisting can be done on literals or regex.
Extracted a new factory that creates an instance of
EnvironmentModifications from a diff of two environments.
* Added unit tests
* PS1 is blacklisted + more readable names for some variables
It seems that GitHub's output changed slightly for this patch (one more
letter for both short hashes on the index line), probably due to the
number of objects in the repository.
All documentation mentions that `build_jobs` is limited by the number of
cores available in the system. This is also enforced when setting it via
`--jobs`. However, when setting it via `config.yaml`, it can exceed the
number of cores available, making builds run out of memory.
This PR adds the ability to specify the auto-dispatch targets that can
be used by the Intel compilers. The `-ax` flag will be written to the
respective compiler configuration files. This ability is very handy when
wanting to build optimized builds for various architectures. This PR
does not set any optimization flags, however.
Fixes#3690Fixes#5637
Uninstalling dependents of a spec was relying on a traversal of the
parents done by inspecting spec._dependents. This is in turn a
DependencyMap that maps a package name to a single DependencySpec object
(an edge in the DAG) and cannot thus model the case where a spec has
multiple configurations of the same parent package installed (for
example if different versions of the same Python library depend on
the same Python installation).
This commit works around this issue by constructing the list of specs to
be uninstalled in an alternative way, and adds tests to verify the
behavior. The core issue with DependencyMap is not resolved here.
The default library search for a package checks the lib/ and lib64/
directories for libraries before the root prefix, in order to save
time when searching for libraries provided by externals (which e.g.
may have '/usr/' as their root).
This moves that logic into the "find_libraries" utility method so
packages implementing their own custom library search logic can
benefit from it.
This also updates packages which appear to be replicating this logic
exactly, replacing it with a single call to "find_libraries".
Fixes#11782
Spack was not properly resolving relative paths to absolute paths
when a relative path was passed to "spack compiler add [PATH]".
Now, if provided a relative path, the absolute path is written to
compilers.yaml rather than the relative path.
* Add template creation test
* Added --skip-editor option to "spack create": normally
"spack create" opens an editor for the user after generating a
package file; when the --skip-editor option is used, "spack create"
only generates the package file and does not open an editor
* Added --skip-editor option to bash completion
- `setup-env.sh` was not properly detecting a bash shell when bash was run
as /bin/sh.
- Detection routine now always reports bash when bash is run as sh, and
no longer parses the path to the executable indicated in `$BASH`.
- Namepsaces were shown without dots after the new format strings were
added.
- Add a test for `spack find` to ensure that find -N shows the right
output.
This PR has several modifications for the r package.
- The tk package is always depended on but this pulls in X11, making the
'X' variant non-functional. This PR sets a dependency of tk on '+X'.
- There is a missing dependency on libxmu when '+X' is set.
- The libraries for R wind up in a non-standard location and are thus
left out of the RPATH settings. This PR adds that directory to RPATH.
- The MKL integer interface for gfortran is not in the BLAS libs. This
PR replaces the intel interface with the gfortran interface if needed.
- Use the `LibraryList` `ld_flags` method for blas as that is more in
line with th R Installation and Administration manual.
Note that this PR depends on PR #11956. This PR closes#8642.
TK can be built with support for libXft and X Screensaver. Both of these
are turned on in the Tk configure script. That means the system
libraries will get picked up if they are on the system and nothing is
specified in the package. Since the default for both of them is 'True' I
set the default value for the variants to 'True'.
* bowtie2: Add version 2.5.3.1 and fix to build on ARM
1. Add version 2.5.3.1.
2. Add simde for ARM.
3. Disable -fopenmp-simd when gcc 4.8.X or before for ARM.
4. Add Makefile option POPCNT_CAPABILITY=0 for ARM.
* flake8.
Fixes#11781
* Rename build log to spack-build-log.txt
* Rename environment variables file to spack-build-env.txt
* The name of the log and env files is now the same during the build
and after the build completes
* Update packages which referred to the build log/env files
* For packages installed before this commit using older names for the
build and env files, search for the older names
* ferret: use libx11 from spack
* ferret: use mpi library with or without fortran support
* ferret: add version 7.2
* ferret: no need to specify ~mpi
* ferret: creating symlinks may fail for external packages; set include/lib paths instead
* use autoreconf to regenerate configure script and config.guess for
newer architectures
* Add perl build dependency for older versions. The required perl
version is constrained because the perl script uses syntax that
is deprecated in older versions
- Fix a bug introdcued by removing parse_anonymous_spec()
- Conflicts' when specs are now *actually* anonymous, and the name of the
package is implicit, so we need to remember to add it back to error
messages.
Declare a conflict for TAU versions older than 2.28.1, that they
can't depend on libelf or libdwarf. The user can still install it
by specifying tau@2.24~libelf~libdwarf.
- Add set -u to the setup-env.sh test script
- Refactor lines in setup-env.sh that tested potentially undefined
variables to use the `[ -z ${var+x} ]` construct
- tests use a shell-script harness and test all Spack commands that
require special shell support.
- tests work in bash, zsh, and dash
- run setup-env.sh tests on macos and linux builds.
- we run them on macos and linux
- replace use of [[ with [
- replace function foo { .. } with foo() { .. }
- wrap some long lines
- add lsof and /proc/fd magic so that we can find the sourced file even in dash
- only do the complicated shell checks in one place; test $_sp_shell
elsewhere.
* py-antlr4-python3-runtime: new package
* py-antlr4-python3-runtime: fix for flake8
* py-antlr4-python3-runtime: indent docstring
* py-antlr4-python3-runtime: clarify role of this package vs ANTLR in docstring
* py-antlr4-python3-runtime: remove whitespace at end of line
The py-reportlab package includes binaries for easy_install and pip.
That blocks activation if py-setuptools and/or py-pip are installed.
This PR block the binaries from py-reportlab as easy_install and pip
should be installed with their respective packages.
- There's too much information on our PRs, and the Travis test results
(which are arguably more important than coverage) get buried in
coverage information
- Remove coverage sub-categories, as you can browse codecov's file view
to see roughly the same thing
- show only project/patch on GitHub PRs.
* py-cf-units: new package
* py-cf-units: download from pypi.io
* py-cf-units: include py-pytest-runner as build dep
* py-cf-units: remove empty build_args function
* py-cf-units: fix for flake8
* py-cf-units: indent docstring
* py-cf-units: remove excess spaces
* py-cf-units: list master branch ahead of numeric versions
* py-cf-units: remove extension keyword from version
If R is provided by the system with a module (i.e. registered in
packages.yaml with a "module" entry) and has no discernible prefix,
this allows turbine to still make use of R.
This PR corrects a problem with the opa-psm2 package. It was
installing headers into <prefix>/usr/include and libraries into
<prefix>/usr/lib instead of <prefix>/include and <prefix>/lib.
The extra level of usr/ subdirectories causes dependent packages
like libfabric to fail to build.
The original packaging, with openfoam as a virtual and with
openfoam-com, openfoam-org and openfoam-extend as
providers, adds an obfuscation layer without any benefit.
- Rename `openfoam-com` to `openfoam`, and remove the
`openfoam` virtual package.
- `parse_anonymous_spec()` is a vestige of the days when Spack didn't
support nameless specs. We don't need it anymore because now we can
write Spec() for a spec that will match anything, and satisfies()
semantics work properly for anonymous specs.
- Delete `parse_anonymous_spec()` and replace its uses with simple calls
to the Spec() constructor.
- make then handling of when='...' specs in directives more consistent.
- clean up Spec.__contains__()
- refactor directives and tests slightly to accommodate the change.
- CNL OS previously used the *Cray PE* version to determine the OS
version. Cray does not synchronize PE and CLE releases; you can run
CLE7 with PrgEnv 6 (and NERSC currently does).
- Fix Spack's OS detection by using the cle-release file to detect the OS
version. This file is updated with every CLE OS release.
- Add some tests for our parsing logic
Added a wrapperrpath variant to mpich that defaults to `True`.
Users can set this to `False` (e.g., spack install mpich~wrapperrpath) to
disable the wrapper RPATHs. This makes it easier to replacing an MPICH
installation in a container with an MPICH for the host system,
e.g., Cray MPICH with Shifter on Cori, Intel MPI, MVAPICH2, etc.
Co-authored-by: Todd Gamblin <tgamblin@llnl.gov>
- Trying to reduce the number of top-level files in Spack.
- CODE_OF_CONDUCT.md can be referenced from the README.
- CONTRIBUTING.md is only used to display a message on pull requests, and
it still does that when in .github.
The version of LLVM used by flang is new enough that CppBackend doesn't exist. Unfortunately, `flang-xxxxxxxx` is seen as < `3.9.0` by the version check.
* add a special case for `flang` versions.
- We've seen this a few times now where users have set up `cd` to echo
the new directory, and it screws up `setup-env.sh`
- In the past we've said this is user error.
- Here, we just fix it by sending `cd` output to /dev/null where needed.
- this works in bash, zsh, and dash
Add an example of a 'modules:' entry for an external package in
packages.yaml. The 'External Packages' section of 'Build
Customization' mentions 'paths:' and 'modules:' and gives an
example of paths, but not modules.
* OpenFOAM: rationalize architecture options
- older versions of OpenFOAM had WM_ARCH_OPTION to choose a 32-bit
build on 64-bit architectures. This is not exactly relevant anymore
and has now been largely removed from OpenFOAM.
- simultaneously the newest version of OpenFOAM has rationalized the
handling of special settings for KNL by rolling these into the
compiler options. We now do the same thing here in spack.
1. Reuse the internal variable arch_option to convey processor-specific
optimizations and add these into the C++OPT=... statement.
2. Drop spack support for configuring a 32-bit build on 64-bit
hardware.
These changes can also be applied to older OpenFOAM versions, and to
various OpenFOAM forks without issue.
* update openfoam versions. New release 1906, patched 1812 version.
ncl does not build with newer versions of gdal (or rather proj). This
also needs a small change to gdal, otherwise we end up with both proj@5
and proj@6 in the spec.
* Remove individual font-* packages and add them as resources of the
font-util package
* Update font-util package to Autotools-based package, and call
autoreconf to regenerate the old configure script
* Add font-adobe-utopia-type1
* fmt: Add cxxstd variant, plus cmake/c++ patches
Spack supported versions of fmt default to C++11 for versions
less than 5, C++14 greater than 5, with fmt implementing
fallbacks to whatever compiler supports.
To give better ABI compatibility and use of newer standards, provide
a `cxxstd` variant defaulting to 11 with 98-17 options. Use cmake_args
to set CMAKE_CXX_STANDARD as appropriate, plus use of `FMT_USE_CPP11`
option for C++98 builds. Use `conflicts` to disable use of certain
standards in versions that don't support, or fail the build, with
those standards.
Add patches to unify use of `CMAKE_CXX_STANDARD` in 3.0 versions,
remove hard-coding of compiler flags in `fmt-config.cmake`, and
prevent use of C++11 features in 4.1.0 when in supported C++98
mode.
Default to not building documents as no dependency on Doxygen is
yet present, and they are not part of the "all" build.
* Use CMake to enforce C++ standard support
Fail configure step if fmt tries to build with a cxxstd variant
not supported by the compiler (or known to CMake).
* fmt: New version 5.3.0
* The py-pytables package depends on hdf5-blosc
* Further modifications to py-pytables package
The 3.2.2 version of py-pytables should still build with internal blosc.
The issue with locking in a multithreaded environment has been
fixed/worked around in version 3.3.
Also, add bzip2 and lzo variants.
* new package/py-blessed
* make flake8 happy
* fix docstring
* tab to spaces
* Update var/spack/repos/builtin/packages/py-blessed/package.py
specify dependency version.
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* Update var/spack/repos/builtin/packages/py-blessed/package.py
specify dependency version
Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
* add setuptools as depedency
Fixes#11816
Allow packages to refer to non-expanded downloads (e.g. a single
script) using Stage.archive_file. This addresses a regression from
#11688 and adds a unit test for it.
This change reverts to the previous behavior of only looking for pgcc
and friends, not pgcc-llvm and friends.
The llvm variant doesn't support all the same features as the
traditional variant of the pgi code generator; this change avoids
treating the llvm variant as a default pgi compiler.
This retains the changes in #10704 which accept the "LLVM" suffix of
the version string of the PGI compiler, which allows users to
explicitly add the llvm-pgi compiler if desired.
Starting with 1.69.0, boost added a bjam option for the default symbol
visibility. Up to 1.68.0, the value was always 'global'. 1.69.0
changed the default to 'hidden' but added an option.
Most packages will work with hidden and won't notice. But some
packages may discover that an interface that they rely on is now
hidden and inaccessible.
https://boostorg.github.io/build/manual/develop/index.html#bbv2.builtin.features.visibility
For resources, it is desirable to use the expanded archive name of
the resource as the name of the directory when adding it to the root
staging area.
#11528 established 'spack-src' as the universal directory where
source files are placed, which also affected the behavior of
resources managed with Stages.
This adds a new property ('srcdir') to Stage to remember the name of
the expanded source directory, and uses this as the default name when
placing a resource directory in the root staging area.
This also:
* Ensures that downloaded sources are archived using the expanded
archive name (otherwise Spack will not be able to determine the
original directory name when using a cached archive).
* Updates working_dir context manager to guarantee restoration of
original working directory when an exception occurs
* Adds a "temp_cwd" context manager which creates a temporary
directory and sets it as the working directory
Starting with 2.1.0, backports.functools_lru_cache replaces functools32
when using python 2.7.x until python2 support is dropped in 3.0.0.
Change-Id: I8db61eac975da0042f6f5babe0f5f0c92807200e
Fixes#11526
The xfd configure script tests for libintl but incorrectly concludes
that no additional library is needed because gettext is provided in
libc. So we add '-lintl' to ldlibs to point to the Spack-installed
gettext. Note that the xfd configure script does not have a
--with-gettext option to do this for us.
Also add version 1.1.3
The regression test for #11678 fails on at least some Mac OS systems
because they have a /usr/bin/gcc that is secretly clang.
This PR replaces the dependency on a system gcc executable with a
test-generated script that generates the expected output for the
compiler logic.
All macos tests are failing because brew cannot install ccache
without updating brew. This ensures that brew update is run
before using brew in test environment.
* xtensor-python: add version 0.23.1
* xtensor-python: update xtensor/xtl dependency version constraints
for 0.23.1
* xtensor-python: remove xtensor/xtl dependency version constraints
for the develop version to favor the latest (develop) version of
these dependencies
* xsimd: add version 7.2.3
* xtensor: add tbb variant to enable TBB parallelization
* xtensor: add version 0.20.7
* xtensor: update CMake args enable xsimd/tbb support based on
variant settings
* xtl: add version 0.6.4
* Added Cinch Spackage and updated Flecsi to Use It
Added spackage for Cinch build system and updated flecsi spackage to use
the external version of cinch
* Flake8 compliance for Cinch and Flecsi
* Fixed Cinch Issue and Requested PR Changes
Swapped cinch back to master branch rather than test branch and style
issues for PR
repeatmasker depended on HMMER but was never actually configured to
use it. The package also had many shebangs pointing to random perl
locations, now patched to use Spack's perl installation.
* Also add version 0.10.0
* Add leading '0' to 0.9.x versions (e.g. 0.09.1) and 0.8.x versions
* Don't mention acts-framework, that package isn't in Spack yet
* Updates to libMesh: added v1.3.1 checksum, added vtk variant, bugfix for enabling petsc when slepc variant is specified
* fixed indentation issues identified by Travis CI
* - updates version number
- added master as a version
- added new variant options for perflog, metaphysicl and blocked storage
-- bug-fix for metis
* fixes for spack indentation errors
* renaming develop to master following review comment of PR.
Some tests introduced in #11528 temporarily set the user's `config:build_stage`, which affected (or created) a config.yaml file in the user's `$HOME/.spack` directory that could leave entries behind if the tests fail.
This change ensures only temporary configuration files are used/affected by these tests.
- A program that generates ASCII pictures of a cow with a message.
- This is used by the ISC19 Singularity tutorial, so we should probably
have it in Spack.
* new package: mutationpp
* Update package.py
* flake8: correct package.py for flake8-python-style
* Update package.py
* modifications as requested by reviewer for #11705
The "spack location" command was previously untested. This also adds
a check to ensure that composite Stages can report whether they were
expanded (this property was previously only recorded in Stage but not
in CompositeStage).
DIYStage, used to treat a user-managed directory as a staging area,
should always be considered expanded (i.e. the source has been
decompressed if it was stored in an archive).
This also:
* Adds checks to ensure that the path used to instantiate a
DIYStage refers to an existing directory.
* Adds tests to check the behavior of DIYStage (including behavior
added here, but it was generally untested before).
Change 'destination' to 'placement' in the use of resource() for
intel-xed and hpcviewer. Recent commits (1842873f and eb584d89)
changed the directory path for a resource and thus broke the build
for these packages.
#11528 updated Stage to always store a Package's source in a fixed
directory accessible via `Stage.source_path` This left behind a
number of packages which were expecting to access the source code
via `Stage.path`. This Updates those packages to use
`Stage.source_path` instead.
This also updates the name of the fixed directory: The original name
of the fixed directory was "src", so if an expanded archive created a
"src" directory, then users inspecting the directory structure could
see paths like "src/src" (which wasn't wrong but could be confusing).
Therefore this also updates the name of the fixed directory to
"spack-src".
Fixes#11678
`spack compiler find` was not searching `PATH` when provided with no
arguments. ea7910a updated the API for the search function and the
command logic did not update how it called this function. This also
adds a test to ensure that `spack compiler find` will collect
compilers from `PATH`.
* warpx: only allow master branch, and fix build on darwin
* warpx: Added CXXFLAGS=-std=c++11 for clang
* warpx: further clean up of openmp and c++11 flags
* warpx: Get around the problem with resources
The update uses placement instead of destination
Fixed logic behind flecsi backends to not require legion for an mpi
build and to better support required combinations.
Also made graphviz support and tutorial building optional
* Paraview/VTK: Fix failure on intel builds
Paraview@5.6.0 fails to build with intel compilers on certain platforms.
Error messages have been traced to the optional MotionFX lib.
(see https://discourse.paraview.org/t/error-build-5-6-0-rc1/572)
Turning off motionfx allows for succesful builds on these platforms.
"spack module tcl find -r <spec>" (and equivalents for other module
systems) was failing when a dependency was installed in an upstream
Spack instance. This updates the module index to handle locating
module files for upstream Spack installations (encapsulating the
logic in a new class called UpstreamModuleIndex); the updated index
handles the case where a Spack installation has multiple upstream
instances.
Note that if a module is not available locally but we are using the
local package, then we shouldn't use a module (i.e. if the package is
also installed upstream, and there is a module file for it, Spack
should not use that module). Likewise, if we are instance X using
upstreams Y and Z like X->Y->Z, and if we are using a package from
instance Y, then we should only use a module from instance Y. This
commit includes tests to check that this is handled properly.
Spack currently tries to unify everything in the DAG, but this is too strict for build dependencies, where it is fine to build a dependency with a tool that conflicts with a version fo that tool for a dependent's build.
To enable a workaround for conflicts among build dependencies, so that users can install in multiple steps to avoid these conflicts, make the following changes:
* Dont apply package dependency constraints for build deps of installed packages
* Avoid applying constraints for installed packages vs. concrete packages
* Mark all dependencies of installed packages as visited in normalization method
* don't remove dependency links for concrete specs in flat_dependencies
Also add tests:
* Update test to ensure that link dependencies of installed packages have constraints applied
* Add test to check for proper handling of transitive dependencies (which is currently not the case)
ADIOS2 is the latest implementation of the ADaptable Input Output System,
ADIOS. This brand new architecture was designed to continue supporting the
performance legacy of ADIOS, and extend its current capabilities to address
current and future input/output (IO) challenges in the scientific data
lifecycle through effective research and development (R&D) activities.
ADIOS2 was recently added as a Third Party Library of Trilinos when it
was integrated to IOSS, a library inside the SEACAS package.
- spack.compilers.find_compilers now uses a multiprocess.pool.ThreadPool to execute
system commands for the detection of compiler versions.
- A few memoized functions have been introduced to avoid poking the filesystem multiple
times for the same results.
- Performance is much improved, and Spack no longer fork-bombs the system when doing a `compiler find`
- We use `spack list --foramt=html` now, as it is much faster and doesn't
make the docs build take forever.
- Remove `spack list --format=rst` as it is no longer used.
- `stage.source_path` was previously overloaded; it returned `None` if it
didn't exist and this was used by client code
- we want to be able to know the `source_path` before it's created
- make stage.source_path available before it exists.
- use a well-known stage source path name, `$stage_path/src` that is
available when `Stage` is instantiated but does not exist until it's
"expanded"
- client code can now use the variable before the stage is created.
- client code can test whether the tarball is expanded by using the new
`stage.expanded` property instead of testing whether `source_path` is
`None`
- add tests for the new source_path semantics
- make tty.msg, tty.info, etc. print the exception type and stringified
message if the message argument is an exception.
- simplify parts of the code that call tty.debug(str(e))
- add extra tty.debug statements in places where exceptions were
previously ignored
- `spack graph --static` (and `spack.graph.dot_graph`) now do the "right
thing" and print the possible dependency graph of provided packages.
- `spack graph --static` no longer concretizes specs, as it only relies
on class level metadata
- Previously the behavior was not consistent -- `spack graph --static`
would graph possible dependencies of concrete specs, but would only
include some of them. The new code properly pursues all possible
dependencies, and allows traversing by different dependency types.
- `spack dependencies` can now take a --deptype argument to only traverse
particular deptypes
- add a new "common" argument for deptype in spack.cmd.common.arguments
- Database.installed_relatives() can now also take a deptype argument
- this is used by `spack dependencies --installed`
- `PackageBase.possible_dependencies` now:
- accepts a deptype param that controls dependency types traversed
- returns a dict mapping possible depnames to their immediate possible
dependencies (this lets you build a graph easily)
- Add tests for PackageBaes
- The 'name' attribute for packages was being set in DirectiveMeta, which
wasn't consistent with other class properties (like fullname, etc.)
- Move it to be a class property of `PackageMeta`, and add the
corresponding property method wrapper on `PackageBase`
* add c99_flag, c11_flag to compiler class
* implement c99_flag, c11_flag for gcc
* implement c99_flag, c11_flag for arm
* implement c99_flag for cce
* implement c99_flag, c11_flag for clang
* implement c99_flag, c11_flag for intel
* implement c99_flag, c11_flag for xl
Previously, module files were not set with the same permissions as the package installation. For world-readable packages, this would not cause a problem. For group readable packages, it does:
```
packages:
mypackage:
permissions:
group: mygroup
read: group
write: group
```
In this case, the modulefile is unreadable by members of the group other than the one who installed it. Add logic to the modulefile writers to set the permissions based on the configuration in `packages.yaml`
Due to the large number of issues this migration has caused, this rolls back
to the older autotools build. However, it still keeps the updates wrt
variants and virtual packages.
* Apply patch to git to make it search for config files from its current location instead of the locations hard coded at install.
* Add provenance info for patch
* Pass needed flags to make
* Environment variables need because of relocation
* Build cache: relocate path to spack/bin/sbang in text files.
* Found in testing.
* update packaging test
* Make sbang replacement including #!/bin/bash. Add an additional spack prefix replacement to fix stage directory references.
* flake8
* Use buildinfo.get() so old buildcaches without buildinfo['spackprefix'] can be read.
* Updating the TAU package with 2.28 and public repo
* Cleaning up TAU package and fixing binutils to install extras
The extras variant will install the extra ELF headers needed
by the TAU package. The TAU package has been cleaned up and
extended.
* Adding some comments to the changes in binutils
* Adding correct python support, finding include and lib paths.
* Added PDT 3.25.1.
* Added TAU v2.28.1 with libdwarf and libelf.
* When +libdwarf is activated, +libelf is not automatically activated. It checks separately for libelf.
* Xrootd: set PYTHON_EXECUTABLE with +python variant
When building with python3 PYTHON_EXECUTABLE needs to be set for deprecated FindPythonInterp to work as expected.
* Add comment
* Flake8
* More flake8
* Update package.py
* typo
* Also add versions 0.9.9.104, 0.9.9.52, 0.9.9.0, and 'develop'
* Replace version 0.9.7 with 0.9.7.0
* Update Rose to be an Autotools package
* Update boost dependency to 1.60.0 or later (previously 1.47.0)
* Add EDG binary identifiers for ROSE versions installing from
archives (rather than git)
* Add variants for mvapich2 backend, c++11, debug symbols,
optimization, and ROSE-based projects (codethorn, autopar, and
polyopt)
* Remove patch add_spack_compiler_recognition
* Improve C++ standard computation in ACTS package
* Use a more clever strategy for aligning ACTS cxxstd with ROOT cxxstd
* Add new ACTS releases
* ACTS is not compatible with the new Boost CMake build system yet
* Explain why Boost 1.70 does not work currently
* Add LSF package, which cannot be installed by Spack and must be
system-installed. The package install will fail if no external
LSF is registered in packages.yaml (LSF may not be installed in a
well-known location and the external entry helps Spack locate it
for dependents).
* Add LSF dependency to OpenMPI when schedulers=lsf is chosen
Previously, the vtkm package was adding a "../" option to the
cmake command line. I suppose this was supposed to be pointing
to the source code, but did not. Rather, Spack correctly adds
the source directory as the first argument to cmake. However,
because ../ was added, it used that as the source directory
instead.
Simply remove this argument to make CMake work correctly.
* config:build_jobs now controls the number of parallel jobs to spawn during
builds, but cannot ever exceed the number of cores on the machine.
* The default is set to 16 or the number of available cores, whatever
is lowest.
* Updated docs to reflect the changes done to limit parallel builds
- `gettext_uuid=True` makes every commit update every .pot file in spack/localized-docs,
and speeds up the internationalized doc build slightly.
- Optimize for less repository churn, and use `python-levenshtein` to accelerate
the build instead.
- make all Spack paths relative to a `_spack_root` symlink, so that we
can easily relocate the docs build *outside* lib/spack/docs
- set some useful defaults for gettext translation variables in conf.py
- update `relativeinclude` and other references to the spack root in the
RST files to use _spack_root
- Add a `--update FILE` option to `spack list`
- Output is written to the file only if any package is newer than the file
- Simplify the code in docs/conf.py using this new option
The Spack documentation currently hard-codes some functionality in
`conf.py`, which makes the doc build less "pluggable" for things like
localized doc builds.
In particular, we unconditionally generate an index of commands and a
package list as part of the docs, but those should really only be done if
things are not up to date.
This commit does the following:
- Add `--header` option to `spack commands` so that it can do the work of
prepending text to its output.
- Add `--update FILE` option to `spack commands` that makes it generate a
new command index *only* if FILE is out of date w.r.t. commands in the
Spack source.
- Simplify code in `conf.py` to use these options and only update the
command index when needed.
Add variant 'pic' for including in shared libraries.
Add build dependency on perl. Compiling mbedtls runs several perl
scripts.
Add versions 2.7.10 and 2.16.1, the heads of the two main stable
branches.
This PR implements several refactors requested in #11373, specifically:
- Config scopes are used to handle builtin defaults, command line overrides
and package overrides (`parallel=False`)
- `Package.make_jobs` attribute has been removed; `make_jobs` remains
as a module-scope variable in the build environment.
- The use of the argument `-j` has been rationalized across commands
- move '-j'/'--jobs' argument into `spack.cmd.common.arguments`
- Add unit tests to check that setting parallel jobs works as expected
- add new test to ensure that build job setting is isolated to each build
- Fix packages that used `Package.make_jobs` (i.e. `bazel`)
* Add Fujitsu compiler to Spack.
* Fixes for flake8
* Chenges location of FCC to subdirectory called case-insensitive
* Add compiler tests for Fujitsu compiler
* Modify the logic of taking compiler version for new version of Fujitsu compiler
* When fabrics=auto or schedulers=auto, the intent is to defer to the
OpenMPI configure and let it determine and use what it finds
available on the system. The current behavior for 'with_or_without'
in the case of 'auto' explicitly disables all possible values.
This updates the logic to call 'with_or_without' only when the
value of fabrics/schedulers is not 'auto'.
* To allow explicitly disabling all fabrics/schedulers, each of these
variants has added support for 'none' (which is also the default
value).
* Add a conflict for the loadleveler scheduler for openmpi-3 and
above as it is no longer a valid configure option.
The regex used for finding the Cray OS version from the PrgEnv-cray
module was not exact and was at times pulling the version from other
PrgEnv modules. This updates the regular expression to be more exact.
* Update optional-lite and span-lite to use CMakePackage
These packages only have CMake installs on their most recent versions.
Therefore, we overload all of the CMake stages to fallback to the old
versions (no-op for most, copytree for install), and use CMakePackage on
the new versions.
* Add new string-view-lite version with CMake install support
* Only override phases for old versions of *-lite packages
* trilinos: add variant to disable chaco from seacas
keep it OFF by default due to the presence of the global symbol "divide"
that can lead to symbol clash with other libraries, for example see
https://github.com/dealii/dealii/issues/8170#issuecomment-492700787
* dealii: add conflict statement for adol-c and Trilinos SEACAS Chaco
* dyninst: rework the cmake args for version 10.1 and later
Add a separate when() case for the cmake args for Dyninst 10.1.0 and
later. The prereq args have changed enough that this makes things
easier going forward. (My previous commit 26b9369c was inaccurate and
temporary.)
Dyninst 10.1.0 accepts boost 1.70, but earlier dyninst are restricted
to <= 1.69 (not worth back porting every boost change).
Change all the dyninst versions to 3 digits for clarity and
consistency.
* Add version 10.1.0.
* added patch for intel-tbb@2019.1: with old compilers
* sparately specify when @:2018 and @2019
the reason we can't say @:2019 is that would include @2019.1 where the
patch doesn't work.
* should be possible to list when constraint as @:2019
According to my reading of ["Version ranges" in the Spack
docs](https://spack.readthedocs.io/en/latest/packaging_guide.html#version-ranges),
this should apply to up to `2019` but not `2019.1:`
* @:2019.0 appears to be necessary to specify 2019 but not 2019.1
* specifying 2019.1 2019.2 2019.3 2019.4 separately and explcitly
* flake8 fixes for long lines.
* add comments to explain why so many different patch directives
* remove blank like for flake8
* revert spec %gcc@4.8.0:4.99999 -> %gcc@4.8.0:
Adds executable=/bin/bash into Popen. We discovered this bug while
working in a csh/tsch environment. By executing with /bin/bash we ensure
that the module command works.
- CMake is built *very* frequently, and the number of dependencies it has
accumulated can take a very long time on some systems.
- Use +ownlibs by default to avoid the build overhead. This won't
interfere with other packages by introducing conflicting libraries, as
CMake is nearly always a build dependency.
This avoids using Boost 1.70.0, fixes library access in OpenSpeedShop
packages, adds new versions, and updates QT dependency constraints
in CBTF and OpenSpeedShop packages
- Constrain Boost dependency to 1.69.0 or earlier to avoid issues
with 1.70.0 for Open|SpeedShop and CBTF packages
- Update DYNINSTAPI_RT_LIB environment variable to use single library
from "find_libraries" (which returns a list) in OpenSpeedShop
packages
Fixes#11443
- Add version 1.9.3 for CBTF Argo Navis, CBTF Krell, CBTF LANL, and
CBTF packages
- Add version 2.4.1 for OpenSpeedShop Utils and OpenSpeedShop
packages
- Update QT dependency to 5.10.0 or greater for QtGraph and CBTF Argo
Navis packages
This makes several changes to make CDO work with gcc@9:
- Add version 1.9.7rc2
- Add a patch to make version 1.9.7rc2 build with gcc@9:
- Add a conflict with GCC 9 for earlier versions of CDO
It also adds a pkgconfig build dependency as configure checks for it.
#8612 added command extensions to Spack: a command implemented in a
separate directory. This improves the implementation by allowing
the command to import additional utility code stored within the
established directory structure for commands.
This also:
* Adds tests for command extensions
* Documents command extensions (including the expected directory
layout)
Rules N813 and N814 prevented import statements like this:
xml.etree.ElementTree as et
xml.etree.ElementTree as ET
But both of those seem pretty reasonable. We see no reason to require any camelcase import to be imported "as" a camelcase word.
* recon: new package at 1.08
* recon: add period
* recon: use proper decorators, better documentation
* recon: fix incorrect os import
* recon: add repeatmasker patch as variant
The source is managed as a set of files in an FTP URL. Since there
are no FetchStrategy's implemented for this setup, the files are
managed as a set of Resource's
Add dependencies to CMake and GnuTLS which would otherwise be
picked up from the system
* Add gnutls as explicit dependency of CMake
* Add new package libidn2 as explicit dependency for gnutls
- `svn info` prints different results depending on the system locale
- in particular, Japanese output doesn't contain "Revision:"
- Change Spack code to use XML output instead of using the human output
* LBANN: add python dependency and required python library dependencies
* LBANN: add version 0.99 as alias for develop branch
* LBANN: build Conduit library by default
* LBANN: CUB is included with Hydrogen for later versions
* New package: py-graphviz (dependency for LBANN)
* New package: py-texttable (dependency for LBANN)
* New package: py-onnx (dependency for LBANN)
* New package: py-typing-extensions (dependency for py-onnx)
* Conduit: add version 0.4.0
* NCCL: Add versions 2.4.6-1 and 2.4.2-1
* Protobuf: Add versions 3.7.1 and 3.7.0
* py-protobuf: add version 3.7.1
* py-typing: add version 3.6.4
* cuDNN: add versions. The source differs depending on the
architecture, so the versions include a suffix to encode this.
For example this adds 7.5.1-10.1-x86_64 as well as
7.5.1-10.1-ppc64le
* cuDNN: Newer versions require newer versions of CUDA
* Hydrogen: add configure options for CUB and Aluminum
The --enable-relax-coord-bound option was added in 1.8.0. NetCDF
4.6.3 enabled relax coords by default and required it from PNetCDF.
PNetCDF 1.10.0 enabled it by default but for versions between 1.8.0
and 1.10.0 it should be enabled explicitly.
* megadock: new package at 4.0.3
* megadock: remove CudaPackage redundancies
* megadock: move env vars to build targets, use cuda_arch variant
* megadock: flake8 fixes, more flexible mathlib
* Fix py-yt for Python 2 by requesting older py-ipython version.
* Add conflicts statement to py-ipython because version 7: is not
compatible with python@2.7
f242f5f removed spec.architecture.platform_os, which was used to test
an option in the 'm4' package. The attribute is now accessed as
'spec.architecture.os'.
* Add versions 3.27.{0,1,2} and 3.28.0
* Add url_for_version: the URL format includes the year so this
function maps version ranges to years
* Restore patches for versions removed in 84c547c: this commit
removed versions before 3.26.0 due to a security issue with FTS
support. Add a +fts variant (default true) that enables FTS
support along with a conflict for +fts with earlier versions.
- Codecov cannot handle as many coverage reports as we are generating
- as a result, our PR coverage pages have been broken for a while, and
it's hard to tell people where to enhance their testing in PR reviews.
- Scale back to only running coverage for 3.7 and 2.7 unit tests
- This is *probably* better. We run the build tests for good measure,
but we do not need to evaluate them for coverage. The coverage reports
are about unit tests.
Add fixes to support multiple installs and dependents using a subset
of IntelPackage functionality.
* Update IntelPackage to only return scalapack libraries if the root
spec depends on MPI: scalapack requires MPI to be mentioned as a
dependency in the DAG. Package builds using intel-mkl for its
blas/lapack implementations but not for scalapack were failing to
build.
Ideally it would be possible to ask if any of the packages in the
DAG are actually requesting the scalapack functionality provided by
the IntelPackage and only return scalapack libs in that case, but
that is not easily done at this time.
Fixes#11314Fixes#11289
* set HOME when the intel silent installer is run. This prevents the
installer from using the ~/intel directory (which can cause
conflicts for multiple installs of the same IntelPackage)
Fixes#9713
Use new `module` function instead of `get_module_cmd`
Previously, Spack relied on either examining the bash `module()` function or using the `which` command to find the underlying executable for modules. More complicated module systems do not allow for the sort of simple analysis we were doing (see #6451).
Spack now uses the `module` function directly and copies environment changes from the resulting subprocess back into Spack. This should provide a future-proof implementation for changes to the logic underlying the module system on various HPC systems.
* Starting with the upcoming 10.1 release, Dyninst changed the names of
some cmake args to camel case: LIBELF_* to LibElf_* and LIBDWARF_* to
LibDwarf_*. This change is needed now for @develop and will be used
for 10.1 when it is released.
* New versions of Dyninst now requires cmake version 3.4.0 or later.
* Restrict boost dependency version to < 1.70.0 to avoid build error
+ The additional patch enables a non-optimized random123 code path that will
work on ARM architectures. This solution is provided only for version 1.09 to
allow the most current version of Random123 to function on ARM architectures.
+ A more complete, long term solution will be the addition of a native ARM
intrinsics-based implementation of random123. This solution is being worked
on but it is several weeks or months away. Once the full implementation is
available it will be provided to the author/maintainer of Random123.
The default install for llvm should just be the common typical case, i.e.
support for local host and cpu architectures. Enablingsupport for the wide
array of auxiliary architectures should be explicit rather than implicit.
Add two functions to the EnvironmentModifications object to help
users sanitize environment variables in their package definitions:
* deprioritize_system_paths: this keeps system paths in the
environment variable but moves them to the end.
* prune_duplicate_paths: remove any duplicate paths from the
variable
This includes testing for the new functions as well as for
(previously-untested) old convenience functions for environment
variable manipulation.
This also adds special handling for bash functions so they
will be defined when the exported environment file is sourced.
* Mesa should depend_on('glproto')
The mesa package refers to `GL/glproto.h`. On systems that don't have
the OS packages installed, this leads to failures during the build
[e.g. this comment in
01482](https://github.com/spack/spack/pull/10482#issuecomment-488786745).
This fixes it. Tested on a minimally provisioned CentOS 7.
* Constrain glproto prereq to when +glx
* mesa: make glproto a build only dep
* The 'mkl' variant implementation was not complete and was
preventing the package from building, so remove it.
* The slate.hh file has moved in the 'develop' version (which is
currently the only version of SLATE listed)
* FAODEL: Add FAODEL package to spack
FAODEL (Flexible, Asynchronous, Object Data-Exchange Libraries) is a collection
of software libraries that are used to implement different data management
services on high-performance computing (HPC) platforms. This project is part of
the Advanced Technology Development and Mitigation (ATDM) effort for NNSA's ASC
program at Sandia National Laboratories.
(cherry picked from commit 6afe045d25)
* FAODEL: Update FAODEL package
Dependencies: set minimum versions for boost, cmake and libfabric
Dependencies: add conflict for boost v1.59.0
Patch: add a patch for v1.1803.1
Patch: add a when= for the v1.1811.1 specific patches
Compiler: check for C++11 support in gcc
(cherry picked from commit fb6ed2b3cf20d7e4fff647cba5a70887a78f627f)
* FAODEL: Update FAODEL package
* replace previous maintainers with @tkordenbrock and @craigulmer
* default to shared libs to meet Spack policy
* increase min boost version to 1.60.0 and remove boost 1.59.0 conflict
* replace complex version check with conflict for gcc <= 4.8.0 (C++11 support required)
* set type=build for cmake
* enable googletest for all versions with type=build
* enable tests for for all versions except when MPI is disabled
* FAODEL: Update FAODEL package
* add version v1.1811.2
* limit comment line length
Fixes#11335
Update the Spack compiler wrappers to add the headerpad_max_install_names
linker flag on MacOS. This allows the install_name_tool to rewrite
the RPATH entry of the binary to be longer if needed. This is
primarily useful for creating and distributing binary caches of
packages (i.e. using the "spack buildcache" command); binary caches
created on MacOS before this commit may not successfully relocate
(if the target root path is larger).
* Added a function that concretizes specs together
* Specs concretized together are copied instead of being referenced
This makes the specs different objects and removes any reference to the
fake root package that is needed currently for concretization.
* Factored creating a repository for concretization into its own function
* Added a test on overlapping dependencies
* arm-forge: add all available versions
* Add TODO for the version hell
* Fix linting
Looks like 'black' formatter isn't Spack friendly
* Fix versions ordering
* Remove obsolete package (allinea-forge → arm-forge)
* Set mpi compiler wrappers using CC/etc. variables as recommended
at https://spack.readthedocs.io/en/latest/packaging_guide.html#compiler-wrappers
rather than setting CMake variables like -DCMAKE_C_COMPILER
* Use convenience functionality provided by inherited CMakePackage to
export all compiler flags as CMake options
* Remove old Singularity versions, add version 3.1.1
* Recent versions of Singularity build with go rather than autotools:
update dependencies and build logic
* Move old Singularity versions to new singularity-legacy package
which uses the autotools build system
* Some binaries built by Singularity need to be run as root: include
a script that the user can run after the Spack Singularity install
to change these permissions.
* The Singularity go build expects to work with a custom stage
directory relative to GOPATH: override the stage phase to create
this expected path.
* Update Singularity install config to point to Spack-installed
makesquashfs dependency
Based on the LLVM documentation [1], Python is used to run the automated
test suite. Therefore is it always a dependency for LLVM. However, if
build without Python (~python), we limit it to a build time dependency.
Note that py-lit is not added as a spack dependency even though it is
available as a spack package. This is because it is already included
in llvm and llvm is difficult to configure using an external py-lit
(several CMake variables to set correctly). Additionally, having
py-lit as a spack dependency adds Python as a runtime dependency
for llvm even though it is not required at runtime.
[1] https://llvm.org/docs/GettingStarted.html#requirements
* extend Version class so that 2.0 > 1.develop > 1.1
* add concretization tests, with preferences and preferred version.
* add master, head, trunk as develop-like versions, develop > master > head > trunk
* update documentation on version comparison
* Version 1.0.0 was released and the master branch tracks the
latest release.
* Multiple issues with MacOS have been fixed. The static patch is
now unneeded.
* Add support for building Ginkgo with the full Block Jacobi
performance (compilation takes a long time).
* Do not build anything which is not useful for the installation.
Namely, documentation, benchmarks, examples and tests.
* mesa: re-writen to new meson build system
* xorg-server: Remove unneeded mesa dependency
* glx: provide the virtual GLX package
* Convert most "mesa" dependencies to use virtual gl and glx dependencies
* mesa: Switch to always building from the git repo instead of a tarball
* Use gl and glx version ranges instead of exact versions
* glx: provide a default package
* add auto to swr variant
* Revert "add auto to swr variant"
This reverts commit 2e7cd8a8ac.
* update mesa package to version 19.0
* set +glx by default only when running on linux
* fix style issues in geant4 package
* remove virtual package "egl"
margo package is a required dependency for unifycr but the package
was not available in spack. margo requires a recent version of argobots
that has the ABT_SCHED_BASIC_WAIT scheduler (rc1 does while previously
available versions of this package in spack did not have it).
Kahip does not build with clang (conflicts('%clang') in kahip package.
Because of this, openfoam-com %clang fails concretization. Therefore,
this changes the default openfoam-com variant for kahip to False.
* Remove -ffast-math optimization flag
* Add 'develop' version which points to git repo
* Depend on libint for all versions >= 3.0
* Build directory is different for versions >= 7 (including develop)
* Add "make test" as post install check
* Add versions 3.4.4 through 4.1.0 and 4.1.0-openvino
* Add conflict for gcc version >= 7 when building with +cuda
* Later version of protobuf is required for later versions of OpenCV
* Explicitly remove protobuf dependency with CMake option when not
building with +dnn
* root: new versions, variants and patches to bring in to line with FNAL's use.
* Support MySQL.
* Patches:
* Bigger stringbuf.
* Find MySQL even when it's called mariadb-c-client.
* Honor external provision of unuran.
* Properly handle the ROOT7 web GUI for 6.16/00.
* `memstat` variant is now default-OFF due to version-related constraints.
* Add missing dependencies.
* Propagate `python` to `libxml2`.
* Handle external FTGL dependency with X / OpenGL: depends on PR ####
* Force `SPACK_INCLUDE_DIRS` to avoid warning.
* New `gminimal` variant default ON per discussion with Javier Cervantes.
* Style fixes per flake8.
* Remove redundant `PATH_SUFFIX` per https://github.com/root-project/root/pull/1993#discussion_r276840329
* Comment patches per https://github.com/spack/spack/pull/11215#discussion_r276887199.
* Reflect the fact that MariaDB support patch is now upstream.
* Restore ncurses dependency for libtinfo.
Usage of double quotes was preventing word-splitting when parsing
module roots in setup-env.sh, which lead to an error when multiple
module roots are used (in particular when Spack is pointed to use
an upstream module root in addition to its own).
Add zlib dependency to squashfs
On my CentOS system it was getting linked in (from Spack, no less)
fortuitously.
On a minimal Ubuntu system it failed until it was added as an explicit
dependency.
* ftgl: update to 2.1.3-rc5.
This updates to the last release (from 2008) with patches required to work with Spack and Root.
* Working 2.1.2 with/without docs, 2.1.3-rc5 without.
- `spack edit` previously used `spack.util.executable` `Executable` objects,
and didn't `exec` the editor like you'd expect it to
- This meant that Spack was still running while your editor was, and
stdout/stdin were being set up in weird ways
- e.g. on macOS, if you call `spack edit` with `EDITOR` set to the
builtin `emacs` command, then type `Ctrl-g`, the whole thing dies with
a `==> Error: Keyboard interrupt`
- Fix all this by changing spack.util.editor to use `os.execv` instead of
Spack's `Executable` object
Allow specifying whether AVX2 or AVX512 should be enabled or disabled
on x86 targets.
As AVX2 hardware and toolchain support is quite ubiquitous by now,
AVX2 is enabled by default. Also AVX2 support is not disabled when
building the +virtual_machine variant.
AVX512 is not supported in older but still supported toolchains,
hardware is still expensive, and OpenBLAS AVX512 kernels still have
bugs. Thus AVX512 is disabled by default.
* Add Mercury version 1.0.1
* Remove cci and bmi dependency requirements: these are not currently
defined in Spack. If +bmi is enabled, the effect is that it may
use a system install of bmi
* Add a note that fabtests is deprecated and has been folded into the
libfabric package. Add the fabtests resource to the libfabric
package
* Add CMake option settings to Mercury based on variant settings
* Mercury: Set OFI testing protocol depending on how libfabric was
built
* Mercury: add version constraints to dependencies
Also add constructor to NoLibrariesError which can either take an
error message (like other SpackErrors) or a name and prefix (in
which case the error message is constructed).
PR #10758 made a slight change to find_versions_of_archive() which included
archive_url in the search process. While this fixed `spack create` and
`spack checksum` missing command-line arguments, it caused `spack
install` to prefer those URLs over those it found in the scrape process.
As a result, the package url was treated as a list_url causing all R
packages to stop fetching once the package was updated on CRAN.
This patch is more selective about including the archive_url in the
remote versions, explicitly overriding it with matching versions found
by the scraper.
Fixes#11226
MySQL 5.7.X and Boost 1.59.0 have a closer relationship than
MySQL >= 8.0 and their corresponding Boost versions: 5.7.X needs to
link against boost libraries which is indicated by marking boost as
a link dependency (removing the 'type' reverts to the default, which
includes link and build).
Starting with version 7.64.0, curl skips cookies specified with "-H"
(generic custom header specification) when following redirects, which
causes the "accept-license"-cookie for jdk to disappear. The result
is that jdk fails to download. This uses the "-b" option (which is
used specifically for configuring cookies) instead, which is more
permissive.
f242f5f8 changed the format strings but maintained backwards
compatibility in all cases except one: The list of valid tokens for
the module naming schemes was not updated properly to contain both
the new and old styles for compilers and package names.
This PR re-adds the old tokens into the list of valid tokens.
spec['dep'].libs.ld_flags can return system paths in some cases.
This is a targeted fix for the petsc package when retrieving
suite-sparse dependency libraries.
* added latest versions + malloc variant
* added a variant to activate different instrumentations
* added a variant to activate or not networking
* added a variant to activate or not cuda and tools
* enforce c++ standard and make it consistent with boost
#11152 added documentation for #8772 but some details were based on
an earlier implementation that had changed by the time #8772 was
merged. In particular, #11152 mentioned that upstream Spack instances
were configured in config.yaml, when in fact they should be placed in
a separate upstreams.yaml config file; this PR updates the
documentation accordingly.
fixes#11159
The 'namespace' argument to both Repo and RepoPath were used to set the
"super namespace". Currently it seems to be vestigial as the only
"super namespace" allowed for packages is 'spack.pkg' since 39c9bbf
* cflags and cxxflags from packages.yaml need to be passed into QMCPACK's CMake explictly for now.
* You need the ifcore library from the Intel compler to be manually linked in when you linked against a LAPACK provider that is not MKL.
* Make a separate CDash report for each package installed
Previously, we generated a single CDash report ("build") for the complete results
of running a `spack install` command. Now we create a separate CDash build for
each package that was installed.
This commit also changes some of the tests related to CDash reporting.
Now only one of the tests exercises the code path of uploading to a
(nonexistent) CDash server. The rest of the related tests write their reports
to disk without trying to upload them.
* Don't report errors to CDash for successful packages
Convert errors detected by our log scraper into warnings when the package
being installed reports that it was successful.
* Report a maximum of 50 errors/warnings to CDash
This is in line with what CTest does. The idea is that if you have more than
50 errors/warnings you probably aren't going to read through them all anyway.
This change reduces the amount of data that we need to transfer and store.
* Update spec format to simpler syntax, maintain backwards compatibility
* Switch to new spec.format method throughout internals
* update package files for new format strings
* documentation and minor code cleanup. removed nonsensical variant sigils
* Initial commit for v2.0 of the CEED software suite.
* Update Nek packages and gslib
* Help spack concretize the hypre version for ceed-2.0.
* Fix nekcem install error
* Add support for gfortran v8 in nek5000 and nekcem.
* Split Nek5000 into Nek5000 and Nektools
* Get Nektools to build fine in Theta
* Fix travis failure: remove unused 'import numbers' from nek5000.
* Check for gfortran if it is wrapped
* Tweak the detection of gfortran in nek5000.
* Fix Nek packages to add -std=legacy when FC=gcc
* spack install ceed~petsc works fine on Theta
* Fix flake8 errors
* Fix more flake8 tests
* Fix an import issue
* Tweak the suite-sparse package to avoid interaction with existing system
installations of suite-sparse.
* petsc: update superlu-dist dependency
* Updates in the packages: occa, libceed, and ceed.
* In the libceed package, explicitly tell nvcc which host compiler to use.
* Fix python formatting.
* Simplify the test for gfortran in nek* packages.
* ceed: 2.0 uses petsc@3.11.0
* hpgmg-0.4; use from ceed@2.0.0
* Update the hypre dependency for ceed 2.0.
* Disable the superlu-dist dependency (through hypre) when using a
+quickbuild of ceed 2.0.
* petsc-3.11.0: add xlf fix
* nekcem: has a build dependency on Python 2.7+
* hpgmg: better setting of compiler options and use python for configure
* libceed: use v0.4 tag
* libceed: fix 0.4 release oops (pkgconfig version)
* Add a patch for magma-2.5.0 that brings it up the current 'master'.
* In the mfem package, install the examples, miniapps, and data under
$prefix/share/mfem.
* In the magma package, apply a patch to v2.5.0 that disables
magma_sparse - for testing purposes.
* In the magma package, link the 'magma' library with the
'nvToolsExt' library.
* In the magma package, update the 'magma-2.5.0.patch' with the latest
commits from the magma source repository. Also, remove the library
'nvToolsExt' from the 'magma-2.5.0-cmake.patch' - now it is not
needed.
* In the magma package, disable OpenMP when using v2.5.0 with the
IBM XL compiler.
Please enter the commit message for your changes. Lines starting
* In the mfem package, add version for the 'laghos-v2.0' tag; also,
prefix the versions `laghos-v*` with their respective development
version numbers -- this way they are properly ordered within spack
relative to the official numbered versions.
* petsc: add version 3.11.1 (#11179)
(cherry picked from commit 1eab6e3c86)
* ceed-2.0: use petsc-3.11.1
* this-is-so-dumb.f -> empty.f
Fixes#11070#11010
Spack attempts to intercede on behalf of all compiler invocations for
a build. This involves adding its wrappers to PATH. Cray systems
include a "ftn" executable and Spack was only redirecting this call
when the Spec was built with cce. This updates the compiler wrappers
to add "ftn" in all cases.
The default (implied) behavior for all environments, as of ea1de6b,
is that an environment will maintain a view in a location of its
choosing. ea1de6b explicitly recorded all three possible states of
maintaining a view:
1. Maintain a view, and let the environment decide where to put it
(default)
2. Maintain a view, and let the user decide
3. Don't maintain a view
This commit updates the config writer so that for case [1], nothing
will be written to the config.yaml. This will not change any existing
behavior, it just serves to keep the config more compact.
* Add versions 1.4.0, 1.3.0, and 1.2.0
* Add dependencies and update constraints (e.g. version 1.4.0 of
precice requires a later version of boost)
* Add maintainers
Still look for BASH_SOURCE[0] first, but if it's not set,
_sp_source_file is initialized to an empty value addressing the
unset parameter error (line 217).
A Spack hack for MKL usage was needed in QMCPACK prior to version 3.5
when non-Intel compilers were used. This Spack hack could have
undesirable side-effects and led to ugly code that was extra work to
maintain. For older versions of QMCPACK, we throw a conflict if you
want to use Intel MKL with the other compilers commonly found on x86.
Note that there is no impact to version of QMCPACK since 3.5.
Compilers are treated separately from other dependencies in Spack.
#10761 added the option to automatically install compilers when a
package specifies using a compiler that is not available in Spack.
However, this did not work correctly for dependency packages (it
would only build a compiler for the root of an install DAG). This
commit enables the building of compilers for dependency packages.
Environments are nowm by default, created with views. When activated, if an environment includes a view, this view will be added to `PATH`, `CPATH`, and other shell variables to expose the Spack environment in the user's shell.
Example:
```
spack env create e1 #by default this will maintain a view in the directory Spack maintains for the env
spack env create e1 --with-view=/abs/path/to/anywhere
spack env create e1 --without-view
```
The `spack.yaml` manifest file now looks like this:
```
spack:
specs:
- python
view: true #or false, or a string
```
These commands can be used to control the view configuration for the active environment, without hand-editing the `spack.yaml` file:
```
spack env view enable
spack env view envable /abs/path/to/anywhere
spack env view disable
```
Views are automatically updated when specs are installed to an environment. A view only maintains one copy of any package. An environment may refer to a package multiple times, in particular if it appears as a dependency. This PR establishes a prioritization for which environment specs are added to views: a spec has higher priority if it was concretized first. This does not necessarily exactly match the order in which specs were added, for example, given `X->Z` and `Y->Z'`:
```
spack env activate e1
spack add X
spack install Y # immediately concretizes and installs Y and Z'
spack install # concretizes X and Z
```
In this case `Z'` will be favored over `Z`.
Specs in the environment must be concrete and installed to be added to the view, so there is another minor ordering effect: by default the view maintained for the environment ignores file conflicts between packages. If packages are not installed in order, and there are file conflicts, then the version chosen depends on the order.
Both ordering issues are avoided if `spack install`/`spack add` and `spack install <spec>` are not mixed.
* Fix bug when system perl is used.
If system perl is being used through packages.yaml there cannot be dependent modules.
The setup_dependent_packages function should not do anything in that case.
When providing a track, the cdash reporter will format the stamp
itself, as it has always done, and register the build during the
package installation process. When providing a stamp, it should
first be formatted as cdash expects, and then cdash will be sure
to report results to same build id which was registered manually
elsewhere.
* Update Spec.prefix to have special case for 'None' in database path; regression test
* Update in database reader rather than spec
* Change assertion to conditional + raise
* Added test for concrete check in Spec.prefix
The module_parsing test checks whether the module function is available
by looking for the string 'not found'. If the user has set a different
locale, the test can assume that the module function is available when
it actually is not.
* Add versions 5.2.0 and 5.1.0
* Avoid adding version 6.0.0: this version has a new API that is
not compatible with older versions (and dependents may break with
it)
* Added comment block explaining the problems with version 6.x
* Replace old datumgrid resource (1.7) with new (1.8)
* Add speculative sqlite dependency for when a 6.x version is added
* add version 7.0.1
* replace md5 with sha256 for various versions.
* v7.0.1 fixes some environment hacking to properly find MPI and
system architecture
This adds a stub script for mpirun and other standard executables
when installing OpenMPI with slurm. The purpose is to make the
removal less of a surprise to administrators/users: it explains why
they were removed and how to restore them.
* Split get_compiler_version into two functions:
get_compiler_version_output runs the compiler with the relevant
option to print the version; extract_version_from_output determines
the version by examining this output. This makes it easier to test
the customized version detection for each compiler. Users can
customize this by overriding the following:
* version_argument: this is the argument that tells the compiler to
print its version. It assumes that the compiler will report its
version if invoked with a single option (like "--version")
* version_regex: the regular expression used to extract the version
from the compiler argument. This assumes that a regular
expression is sufficient to extract the version, and that the
version can be extracted from a single capture group (Spack uses
the first capture group)
* default_version: allows you to completely override all version
detection logic
* get_compiler_version_output: if getting the compiler to report
its version is more complex than invoking it with a single arg
* extract_version_from_output: if it is difficult to define a regex
that can be used to extract the version from the output
* Added tests for version detection of most compilers
* Removed redundant code from xl_r compiler class (by inheriting
from xl compiler definition)
* adding package to install squashfs for singularity
* dont need os import
Signed-off-by: Vanessa Sochat <vsochat@stanford.edu>
* updating md5 to sha1 for squashfs package
Signed-off-by: Vanessa Sochat <vsochat@stanford.edu>
* two blank lines
Signed-off-by: Vanessa Sochat <vsochat@stanford.edu>
Replace the original implementation of the "memoized" decorator with
an implementation that exposes the docstring and arguments of the
wrapped function. This is achieved using functools.wraps.
This provides a mechanism to implement a new Spack command in a
separate directory, and with a small configuration change point Spack
to the new command.
To register the command, the directory must be added to the
"extensions" section of config.yaml. The command directory name must
have the prefix "spack-", and have the following layout:
spack-X/
pytest.ini #optional, for testing
X/
cmd/
name-of-command1.py
name-of-command2.py
...
tests/ #optional
conftest.py
test_name-of-command1.py
templates/ #optional jinja templates, if needed
And in config.yaml:
config:
extensions:
- /path/to/spack-X
If the extension includes tests, you can run them via spack by adding
the --extension option, like "spack test --extension=X"
* Newer versions of IBM XL no longer define `__xlC__`, but define `__ibmxl__`
instead. This one-line patch fixes this problem in Random123.
* This patch was also provided to the Random123 maintiners
(Random123@DEShawResearch.com). I don't expect a new release from them for a
while, so I believe that this patch is the correct path forward (for now).
* initial work to make use of an 'upstream' spack installation: this uses the DB of the upstream installation to check if a package is installed
* need to query upstream dbs when adding new record to local db
* prevent reindexing upstream DBs
* set prefix on specs read from DB based on path stored in install record
* check that Spack does not install packages that are recorded as installed in an upstream db
* externals do not add their path to install records - need to use 'external_path' to get path of upstream externals
* views need to check for upstream installations when linking metadata
* package and spec now calculate upstream installation properties on-demand themselves rather than depending on concretization to set these properties up-front. The added tests for upstream installations don't work with this new strategy so they need to be updated
* only refresh modules for local specs (not those in upstream packages); optionally generate local module files for packages installed upstream
* when a user tries to locate a module file for a package installed upstream, tell them to use the upstream spack instance to locate it
* support recursive upstream databases (allow upstream databases to use their own upstream databases)
* separate upstream config into separate file with its own schema; each entry now also includes a name
* metadata_dir is no longer customizable on a per-instance basis for YamlDirectoryLayout
* treat metadata_dir as an instance variable but dont set it from kwargs; this follows several other hardcoded variables which must be consistent between upstream and downstream DBs. Also update DirectoryLayout.metadata_path to work entirely with Spec.prefix, since Spec.prefix is set from the DB when available (so metadata_path was duplicating that logic)
* Add latest libyogrt versions
* Add url_for_version to handle differing url formats for different
versions
* Add 'scheduler' variant to configure scheduler. Currently only
slurm can be installed with Spack. A value of 'system' indicates
to use the scheduler installed on the system
Change the location of the CMake build area from the staged source
directory to the stage base directory.
This change allows CMake packages to refer to the build directory in
setup_environment (e.g. if tests need to have a directory in PATH):
Staging happens after the call to setup_environment(), and if the
stage area does not exist, then spec.stage.source_path returns None.
To accommodate this change, archived files (like config.log for
Autotools packages) are archived relative to the stage base directory
rather than the expanded source directory.
Other packages (those not using CMake) will still use the staged
source directory as the default working directory for builds (and
will still be unable to reference this directory in
setup_environment())
When multiple instances of environment-modules were installed with
different architectures, Spack was not retrieving the installation
appropriate for the current architecture when finding the module
prefix.
* py-prompt-toolkit: Add newer version for required for newer
py-ipython versions
* py-ipykernel:
* Add newer py-ipykernel version
* Depend on py-setuptools so a python egg isn't attempted to be
built
* Update dependency for newer py-ipykernel versions
* py-jupyter-console: Remove py-prompt-toolkit dependency since it is
picked up in py-ipython
* py-ipython:
* Add missing py-backcall dependency
* Adjust py-prompt-toolkit dependencies for newer versions of
ipython
* py-jupyter-notebook: Require newer version of py-ipykernel since
jupyter is broken with previous versions
* add cxxstd variant
* add CMake constraints based on platform/version
* add older versions
* update boost dependency version constraints (which are closely
tied to mysql version) and update boost cxxstd choice to be
the same as the cxxstd chosen for mysql
* add client-only support (including a patch for 5.5.x)
* record the mysql package as a provider of the mysql-client virtual
Improve management of the Fiber library and C++ standard support:
* Remove Fiber from list of libraries to build
* Improve variant management for Fiber; add variants for Context and
Coroutine libraries.
* Add known conflict with C++17 for boost < 1.63.0
* Remove C++ standard "default" option, which left the choice of
C++ standard to the compiler used to build boost
* Fixed some issues with CUDA-Intel compiler conflicts.
* Comment about expressing CUDA-compiler conflicts.
* More precise conflicts and also add support for Intel 19.0
* record conflicts with compiler versions which don't provide
required c++ standard support
* add doxygen (build) dependency
* add note that range-v3 is header-only as of 0.3.6 and update
package description
We add new variants to handle readline vs libedit, a client-only
build and install, and bindings to TCL, Python and Perl. We also add
new versions and the ability to detect remote versions not otherwise
dealt with.
This avoids using a system-installed CUDA package. In the future a
variant can be added to allow using Spack-installed CUDA, but for
now CUDA support is always disabled.
* abinit: Fix building with hdf5/netcdf.
* gromacs: Fix attempt to build with cuda support when 'cuda=False'
If for some reason there's a cuda toolkit installed by other means,
(i.e. not by spack) cmake will still try to build with cuda support,
even though 'cuda=False' is the default of the spec.
* Revert "abinit: Fix building with hdf5/netcdf."
This reverts commit e16f725e37.
This should not be here.
* Draco: add variants
+ This package has many optional build dependencies that were not registered in
older versions of this recipe. I've added (and tested) this more complete
list of optional dependencies: parmetis, superlu-dist, qt.
* fix style issues
* hpcviewer: new package
Add binary package for hpcviewer and hpctraceviewer for the Rice
hpctoolkit on Linux x86_64, ppc64 and ppc64le.
* ibm-java: add property 'home' so that spec['java'].home will work.
* Flake
* More flake.
* Test that the version, machine type pair exists before using it in the
sha dictionaries so that 'spack info' doesn't crash on unsupported
configurations.
* mariadb-c-client is a new package using the distinct, LGPL,
MySQL-compatible client library from mariadb.com. It provides the
virtual package mariadb-client
* mariadb is recorded as a provider of the mariadb-client virtual
* The mysql-client virtual package is also added, and mariadb-c-client
is recorded as a provider for it
If the user has set the environment variable VISUAL, it will be used
in preference to EDITOR for all Spack editing activities. If VISUAL
is not set or fails (perhaps due to a lack of graphical editing
capabilities),EDITOR will be used instead. We fall back to one of
several common editors if neither bears fruit.
This feature has been tailored to:
* Provide identical behavior to the previous implementation in the
case that VISUAL is not set.
* Not require any change to code utilizing the editor feature.
* Follow usual UNIX behavior concerning VISUAL and EDITOR.
* Throw InstallError if more than one GPU architecture is passed to cuda_arch. Previous cuda_arch test was not actually working because comparison with none string was on the cuda_arch list instead of the first entry of the list.
* Removing redundant cuda_arch statement.
* New package: py-mysql-connector
* Fixed docstring
* 1. Determined that py-setuptools was not needed at all, so removed.
2. Added py-protobuf. Docs seem to imply that only C protobuf library is required; however, the Python setup.py says differently, and some Python code seems to reference protobuf too. I don't know why this worked for me, but it looks like including py-protobuf is the right thing to do.
* Applied solution detailed in:
https://github.com/mysql/mysql-connector-python/pull/9
Uncommenting this patch will make `error: option --single-version-externally-managed not recognized` reappear.
* Clean up / reorder lines
* flake8
* Fix clearing EnvironmentModifications with python2
* Add EnvironmentModifications::clear unit test
Use re-assignment rather than del to clear array
* Fix flake issues
qt currently falls back to bundled versions of sqlite, harfbuzz, pcre,
double-conversion and xcb. This adds the appropriate dependencies and
configure arguments. A new variant adds multibyte support to pcre and
pcre2, which is required by qt.
Additionally, newer versions of gcc (starting with @8.3.0) cause build
failures. This adds a patch to fix the problem.
The changes have been tested with all versions of qt currently available
in Spack. 5.2 and 5.3 do not build for reasons that seem to be unrelated
to these changes, though.
* Add binary package of the IBM Java SDK for big and little-endian
powerpc (power7, 8 and 9). The jdk and openjdk packages only install
on x86_64.
* Add ibm-java as a java provider
* The jdk and openjdk packages only install on x86_64. Add conflicts
for ppc64 and ppc64le to jdk and openjdk.
shmemrun and oshrun do not exist in OpenMPI v4.0.0
(ref: https://www.open-mpi.org/doc/v4.0/)
The Spack OpenMPI package was failing the install by trying to
remove them. This guards the removal of several scripts when
using the Slurm scheduler to handle the case where they don't exist.
It seems that this is actually a glibc problem and while 2.6.4 builds
without the patch on newer versions of gcc (@8:), it still sometimes
segfaults (as observed during the doxygen build).
Fixes#10191
* Add more regular expressions to detect clang versions that were
not being picked up
* Add a test for parsing versions from the output of Clang (this
does not run Clang, but rather uses example outputs from Clang)
* Separate Clang version parsing into its own method (to make it
easier to test)
Currently, only C headers are considered, causing build failures for
packages depending on, e.g., netcdf-fortran and xerces-c. Additionally,
the regex used to look for the include path component did not consider
word boundaries, causing false matches.
* Create option to build missing compilers and add them to config before installing packages that use them
* Clean up kwarg passing for do_install, put compiler bootstrapping in separate method
* Add 'fiber' as a default library for boost
* Add autoconf/automake etc. dependencies to libseccomp package
* New package: brotli
* New package: editline
* Add brotli, editline, boost dependencies to Nix
Remove 2.6.3 as preferred version (but keep it available for
building). The latest version (currently 2.6.4) is now preferred
(according to Spack's defaults).
* Update dependencies for py-flake8 when building version 3.7.7
* Add FIXME comment for an example dependency constraint which causes
concretization to hang
* Add py-entrypoints version 0.3
* Add py-pycodestyle version 2.5.0
* Add libuv version 1.10.0
* CMake versions before 3.12.0 do not build with libuv version
1.25.0, so a constraint is added to build earlier versions of
CMake with libuv version 1.10.x
Update CPATH in setup_environment for Eigen, so that the
Spack-generated module for Eigen will help builds outside of Spack
use the appropriate include prefix for Eigen headers
(<install_prefix>/include/eigen3/ rather than <install_prefix>/include/)
Note that this only updates the run-time environment, rather than the
build-time environment, so Spack builds depending on Eigen that use
pkgconfig will not be confused by the presence of the Eigen include
directory in CPATH.
* Replace kim-api package with kim-api-v2, which has different
versions and removes the 'cmake_args' method
* Add openkim-models-v2 as an extension package
* libelf: move url to fossies.org
Libelf is no longer maintained and the original mr511.de web site no
longer exists. The final release, 0.8.13 from Nov 2009 is still
archived at fossies.org.
Fixes#10757.
* Change the homepage to the FSF entry.
New release of UnifyCR. Remove unsupported pre-1.0 versions
UnifyCR has had a few dependency changes to make the backend more
efficient. A new pre-release version has been released as well to
mark these changes. Prior versions are no longer supported.
Fixes#10769
This updates the .headers property to include header subdirectories
for Python and Eigen (as is recommended by these packages).
#10623 updated the default behavior of .headers.directories to
exclude subdirectories (since this can cause clashes with system
headers). This broke some packages which depended on the old behavior
of .headers.directories: for example if you had
<package-prefix>/include/subdir/ex1.h, .headers.directories would
include <package-prefix>/include/subdir.
* Rework of buildcache creation and install prefix checking using the functions introduced in
https://github.com/spack/spack/pull/9199
Instead of replacing rpaths with placeholder and then checking strings, make use of the functions
relocate.is_recocatable and relocate.is_file_relocatable to decide if a package needs the allow-root option.
This fixes a problem where the placeholder path was not in the first rpath entry. This was seen in c++ libraries and binaries because the compiler was outside the spack install base path and always appears first in the rpath.
Instead of checking the first rpath entry, all rpaths have the placeholder path and the old install path (if it exists) replaced with the new install path.
* flake8
* Added the `spack buildcache preview` sub-command
This is similar to `spack spec -I` but highlights which nodes in a DAG
are relocatable and which are not.
spec.tree has been generalized a little to accept a status function,
instead of always showing the install status
The current implementation works only for ELF, and needs to be
generalized to other platforms.
* Added a test to check if an executable is relocatable or not
This test requires a few commands to be present in the environment.
Currently it will run only under python 3.7 (which uses Xenial instead
of Trusty).
* Added tests for the 'buildcache preview' command.
* Fixed codebase after rebase
* Fixed the list of apt addons for Python 3.7 in travis.yaml
* Only check ELF executables and shared libraries. Skip checking virtual or external packages. (#229)
* Fixed flake8 issues
* Add handling for macOS mach binaries (#231)
The environment modules package has been updated to include
versions up to 4.0.0. The url of the package and the homepage
have been updated accordingly.
The `spack bootstrap` command now builds version 3.2.10 of
the environment-modules package, and will do until #10708
is fixed.
* Make use of new QE multi-valued HDF5 variant interface
* Remove explicit CUDA dependency (which is handled by inheriting
from CudaPackage)
* Update cuda_arch unset variant check
libbeagle compiles against CUDA by default but no there is no mention
of it in the package recipe. This PR adds explicit cuda paths and
variants, and fixes the target architecture as well (for those who
don't have compute_13)
Serial HDF5 in serial QE only works in develop version. This adds
a conflict to the QE package to prevent Spack from trying to build
specs which don't satisfy this constraint.
This restores the use of Package.headers when computing -I options
for building a package that was added in #8136 and reverted in
#10604. #8136 used utility logic that located all header files in
an installation prefix, and calculated the -I options as the
immediate roots containing those header files.
In some cases, for a package containing a directory structure like
prefix/
include/
ex1.h
subdir/
ex2.h
dependents may expect to include ex2.h relative to 'include', and
adding 'prefix/include/subdir' as a -I was causing errors,
in particular if ex2.h has the same name as a system header.
This updates header utility logic to by default return the base
"include" directory when it exists, rather than subdirectories.
It also makes it possible for package implementers to override
Package.headers to return the subdirectory when it is required
(for example with libxml2).
Update older md5 checksums to sha256. Require CMake >= 3.6.0 (updated
from 3.5.0). Remove some third-party depends_on statements (which
were commented out before).
Extract implicit xenv dependency into a new package and add it as an
explicit dependency. Update Gaudi to explicitly depend on older
versions of xenv rather than the latest develop because that
conflicts with Spack's compiler wrappers.
Spack warns users when a dependency package updates CPATH. This
warning message is generating bug reports and alarm in cases where
there is no problem. For now this downgrades the warning message to
the debug level, so it only shows up if something goes wrong for the
user and they ask for more information from Spack.
The nvptx installation support phase (added in 040b658) was always
running for gcc regardless of whether +nvptx was enabled. This
removes the "@when" syntax (which apparently is not working) and
adds a check inside of the "nvptx_install" function to bail out if
+nvptx is not enabled.
This spack command adds a new schema for a file which describes the
builder containers available, along with the compilers availabe on
each builder. The release-jobs command then generates the .gitlab-ci.yml
file by first expanding the release spec set, concretizing each spec
(in an appropriate docker container if --this-machine-only argument is
not provided on command line), and then combining and staging all the
concrete specs as jobs to be run by gitlab.
The built images are set up with fairly recent versions of gcc and
clang:
- centos_7: [ gcc@5.5.0 (built from src), clang@6.0.0 (spack-built from src) ]
- ubuntu_18.04: [ gcc@5.5.0 (system), clang@6.0.0-1ubuntu2 (system) ]
Adds four new sub-commands to the buildcache command:
1. save-yaml: Takes a root spec and a list of dependent spec names,
along with a directory in which to save yaml files, and writes out
the full spec.yaml for each of the dependent specs. This only needs
to concretize the root spec once, then indexes it with the names of
the dependent specs.
2. check: Checks a spec (via either an abstract spec or via a full
spec.yaml) against remote mirror to see if it needs to be rebuilt.
Comparies full_hash stored on remote mirror with full_hash computed
locally to determine whether spec needs to be rebuilt. Can also
generate list of specs to check against remote mirror by expanding
the set of release specs expressed in etc/spack/defaults/release.yaml.
3. get-buildcache-name: Makes it possible to attempt to read directly
the spec.yaml file on a remote or local mirror by providing the path
where the file should live based on concretizing the spec.
4. download: Downloads all buildcache files associated with a spec
on a remote mirror, including any .spack, .spec, and .cdashid files
that might exist. Puts the files into the local path provided on
the command line, and organizes them in the same hierarchy found on
the remote mirror
This commit also refactors lib/spack/spack/util/web.py to expose
functionality allowing other modules to read data from a url.
- add CombinatorialSpecSet in spack.util.spec_set module.
- class is iterable and encaspulated YAML parsing and validation.
- Adjust YAML format to be more generic
- YAML spec-set format now has a `matrix` section, which can contain
multiple lists of specs, generated different ways. Including:
- specs: a raw list of specs.
- packages: a list of package names and versions
- compilers: a list of compiler names and versions
- All of the elements of `matrix` are dimensions for the build matrix;
we take the cartesian product of these lists of specs to generate a
build matrix. This means we can add things like [^mpich, ^openmpi]
to get builds with different MPI versions. It also means we can
multiply the build matrix out with lots of different parameters.
- Add a schema format for spec-sets
On macOS, the build of libxxhash is performed by a bare `make`
launched by `MakePackage`s default `build` phase. As `prefix`
is not set at this point, the library gets compiled with a hard-coded
install name of `/usr/local/libxxhash.dylib`. Downstream clients,
in the tested case Root, will then fail to build as the install name
is incorrect.
Move setting of `prefix` from `install` to `edit` so that it
propagates to subsequent `build` and `install` phases.
* QE hdf5 is now a multi-valued variant. Update conflicts accordingly.
* Update dependencies for hdf5 multi-valued variant. Bug fix: high-level hdf5 library needs to be a hard dependecy.
* Support for HDF5 serial interface. Note that this is not supported in QE autoconf, but will be fixed in the next official release.
* Support in QMCPACK for CUDA_ARCH flag.
* No need to have explicit CUDA variant anymore.
* Internal QMCPACK CMake assumes a minimum GPU architecture if none is provided.
Fixes#10617Fixes#10624Closes: #10619#8136 dependended entirely on spec.libs to retrieve library directories
from dependencies. By default this function only retrieves libraries if
their name is something like lib<package> (e.g. "libfoo.so" for a
package called "Foo"). This unconditionally adds lib/lib64 directories
for each dependency as link/rpath directories.
This also filters system paths from link/rpaths/include directories and
removes duplicated paths that #8136 could add.
If the -f <specyamlfile> argument to install is used (rather than
providing package specs on the command line), CDash throws an exception
due to missing the installation command (the packages targeted for
install). This fixes that behavior so CDash reporting succeeds in
either case.
fixes#10601
Due to a bug this attribute is wrong for packages that use directories
as namespaces. For instance it will add "<boost-prefix>/include/boost"
instead of "<boost-prefix>/include" to the include path.
As a minor addition a few loops in the compiler wrappers have been
simplified.
* cp2k: archive the Makefile after a successful installation
* cp2k: all checksums are now sha256
* libint: all checksums are now sha256 + added versions 2.4.X
* libxc: all checksums are now sha256 + added version 4.3.2
* cp2k: os.path.join instead of join_path + simplified openmp flags
* cp2k: turned into a MakefilePackage
* cp2k: refactored edit method so that Makefile writing happens last
* icu4c: Add cxxstd variant
For versions supported in Spack, ICU4C defaults to the C++11.
Provide a variant to default to this, plus options for C++14
and 17 if dependees require for ABI compatibility.
* icu4c: cxxstd variant cannot be multi
* Updated Geant4 and dependencies clhep and vecgeom to use cxxstd= variant so that it is applied consistently.
* Make standalone geant4 data packages that are used when data is not installed with geant4. This allows installing the data files are externals that can be common to many compiler version.
* move geant4 data package dependencies to umbrella package geant4-data
Spack shell detection in setup-env.sh was originally based on
examining the executable name of $$ (from "ps"). In some cases this
does not actually give the name of the shell used, for example when
setup-env.sh was invoked from a script using "#!". To make shell
detection more robust, this adds a preliminary check for shell
variables which indicate that the shell is bash or zsh; the
executable name of $$ is retained as a fallback if those variables
are not defined.
Fixes#7855Closes#8070Closes#2645
When searching for library directories (e.g. to add "-L" arguments to
the compiler wrapper) Spack was only trying the "lib/" and "lib64/"
directories for each dependency install prefix; this missed cases
where packages would install libraries to subdirectories and also was
not customizable. This PR makes use of the ".headers" and ".libs"
properties for more-advanced location of header/library directories.
Since packages can override the default behavior of ".headers" and
".libs", it also allows package writers to customize.
The following environment variables which used to be set by Spack
for a package build have been removed:
* Remove SPACK_PREFIX and SPACK_DEPENDENCIES environment variables as
they are no-longer used
* Remove SPACK_INSTALL environment variable: it was not used before
this PR
* Added a package for the MDAnalysis toolkit.
* Updated LBANN, Hydrogen, and Aluminum to not require CUDA-aware MPI
even when using CUDA. Fixed small bugs within both LBANN and Hydrogen
packages. Added requirements for breathe and cereal to LBANN.
* Update use case for doc dependencies.
* Cleaning up some of the LBANN software stack dependencies.
* fix permission setter
Fix a typo in islink test when applied to files.
* os.walk explicitly set not to follow links
The algorithm strongly rely on not following links.
* Note that `none` is the default for lmod autoload
Save a bit of confusion by *explicitly* pointing out that `none` is
the default value for autoload in the lmod module file generator.
* Add a tip re building software externally
Add a tip about using `autoload: all` when building packages outside
of the tree that use artifacts (e.g. libraries, includes) within the
tree.
CMake supports the notion of secondary generators which provide extra
information to (e.g.) IDEs over and above that normally provided by
the primary generator. Spack only supports the 'Unix Makefiles' and
'Ninja' primary generators but was not parsing out the primary
generator when a secondary generator was also included (e.g. for
a generator attribute like 'Codeblocks - Ninja'). This adds a regex
for extracting the primary generator for validation.
Since the secondary generator is irrelevant to a Spack build, it is
passed on to CMake without further validation.
Add variant to support compiling against main C++ standards if needed
for ABI compatibility. Use 'default' value as Xerces-C autoconf system
does not enforce a minimum, or set a default, C++ standard.
* Extend current recipe for root package
* Add removed old version
* Add dependency type for Python and R packages
* Add compiler variants
* Adding new root version: 6.14.00
* Add back the minimum cmake version required
* LZ4 and xxhash support for old (using builtin options) and new versions (external packages)
* Set PYTHONPATH in setup_environment
* Address typos and issues pointed by HadrienG2
* Add newer ROOT versions
* Solve support for asimage
* Define incompatible variants
* Organize old dependencies
* Add support for minuit
* Add support for pythia6
* Remove unneeded list_url
* Update license header
* Remove block of commented old dependencies
* Contrain Qt version
* Comment pythia8 variant/dependency, not supported by spack
* Force not to build pythia8
* Adding a package for cardioid.
* Changing package to pass flake8
* Removing template leftovers per @ax3l 's advice
* Adding a homepage so tests pass.
* Removing whitespace for flake8
* Changing the name of master branch to match spack standards.
1137b18 removed the -s option from spack such that to see a stack
trace you must pass the --stacktrace option. The bug report templates
were not updated accordingly.
Add patch to fix Fortran mangling in CMake test
This is a fix for builds with GCC 6/7/8 and CMake 2/3. It includes
a link to the issue where this is reported. For now, the Spack
package applies the patch to all releases >= 2.0.2
This package depends on both python 3.5+ and node-js which depends on
python 2.7/2.8 to build. Currently it can only be installed if the
node-js package's python dependency is manually removed, so node-js
will build with python found on the system rather than provided by
spack. Upcoming commits may allow spack to reconcile this
automatically.
* xsdk@develop: switch trilinos from @master to @develop
* xsdk@develop: dtk - fix trilinos dependency on dtk.
- dkt-3.0 should be used with trilinos-12.4*
- dtk/master should be used with trilinos@develop
A version >= 0.9.4 required for py-black. Added latest, which is
0.10.0. Manually verified that the .tar.gz for v0.9.3 used to generate
the sha256 matched the previous md5.
* CUDA compiler conflicts for Linux.
* Add Volta and Turing GPUs.
* Add mandatory conflict for Volta and Turing GPUs.
* Revert "CUDA compiler conflicts for Linux."
This reverts commit 7d4ff654ac.
* Compiler conflicts introduced from previous commit into CUDA packaged moved and integrated into CUDA build system.
* More conversative with compiler conflicts for cuda 10.0.130, since I don't know what will happen with future cuda 10.x releases.
* Correct off-by-one errors in clang conflicts for x86_64 Linux.
* No restrictions on Apple Clang compiler until we are able to distinguish Xcode clang from github clang more easily. Note to fix this in the future.
* Change comment to clarify that github clang refers to LLVM clang.
* Fix and simplify index range.
* Fix overlapping conflicts for CUDA 10.0.130
* Removed extra ^cuda from conflict.
Add tribool.patch to add explicit casts from tribool to bool in two
places. Boost, starting with version 1.69, turned on explicit
conversions for tribool, which breaks the build for dyninst.
This is merged into the current dyninst develop and is expected to be
part of the next release, so the version range uses the current
release as an upper bound.
Closes#10168
* Add versions 4.1.0.0 and 4.0.12.0
* Replace md5 checksums with sha256
* Logic to generate a helper script for versions earlier than 4 was
not running. This corrects the branch which controls whether this
script is generated.
* Constrain Java dependency to version 8 (GATK does not work with
Java 11)
* Avoid adding scripts that have dependencies not handled by Spack
such as gcloud and google-chrome. These scripts are good candidates
for later extensions.
Closes#2622
This retrieves and installs the binary of Oracle's OpenJDK (an
open-source JDK implementation). The logic is largely based on the
Spack JDK package (Oracle's closed-source JDK implementation).
For now this is only supports Linux. If the download could be
customized based on OS (for the same version), binaries are also
available for MacOS and Windows.
Build system was changed to use a Makefile. Therefore older versions
(which don't support this) are removed. The new build system also
supports testing by default.
Fixes#7372
Added patch method which renames config.h in the fftw subdir of the
source tree. fftw 2.1.5 appears to ship with a copy of this file
with all defines commented out. This gets read by the #include
directives instead of the version in the build directory with the
correct defines. As a result, many C preprocessor macros left
undefined, including F77_FUNC_ which causes the bulk of fttwf77.c
to be skipped due to an #ifdef, so fftw_reverse_int_array et al
not included in library. Fixes#7372
Also fixed some inconsistencies with the handling of quad and
long_double in specs between the configure method and the build,
check, and install methods.
The Mercury package previously depended on libfabric@develop on
Cray platforms in order to pick up a fix for the GNI provider that
was only available in git. This is no longer needed now that the
libfabric package is at 1.7.0.
Add new versions for py-keras. Versions of py-keras at or after
2.2.0 require keras-processing and keras-applications packages.
Add these packages to Spack and add dependencies to the py-keras
package.
* Add version 11.2.68
* Add variant to disable AVX2 for older hardware
* Change the makefile so libraries and includes are not placed
under $PREFIX/usr
* Updated URL and homepage
Added versions 1.0.0-rc1, 0.6.1, 0.6.0, 0.5.1
hwloc dependency was removed after 0.5.1, so the related configure
option is not specified after 0.5.1
Require py-matplotlib dependency version 2.2.3 (version was not
specified before)
Fixes#8343#4154#7370Closes#4155
All but one of the backports packages were using "pkgutil-style"
namespacing, but configparser was using "pkg_resource-style".
A namespace needs to be one style or another. This adds a new
configparser version which switches to using the pkgutil-style
namespace approach.
With this update, one can now install flake8 with Spack and use
it by loading modules.
Debug output now includes the output of modulecmd executions. Only
output module content when a failure occurs; always report when a
module is loaded/unloaded.
The PREFIX variable in the makefiles is directly used to construct the
install name on the library metadata on darwin. If not passed, the
default /usr/local is used and the resulting librhash.dylib contains
usage informaiton of /usr/local/lib/librhash.0.dylib. This adds the
PREFIX= variable directly to the make command so the resulting usage
metadata contains the correct valid library path.
* flux-core: add v0.11.0 and updated dependencies
libuuid hasn't been a direct dependency of flux-core since 2015 (well
before any of the versions listed in the package).
The yaml-cpp dependency moved to flux-sched when we moved the jobpsec
library from core to sched.
Some python3 incompatibilities were found in 0.11.0, so bump the python3
support back a version.
* flux-sched: add v0.7.0 and make boost dependency more precise
* llvm: Bump version to 7.0.1
* llvm: Added perl-data-dumper build dependency for openmp
* llvm: Enable exception handling and RTTI
Useful to have turned on in general with RTTI but also necessary
to workaround some lldb stability issues with some versions of
libstdc++.
* Update the PMIx package
- Add latest releases to the list.
- Add dependency on hwloc for versions >= 3.0
- Flag preferred versions for libevent and hwloc
- Improve the description
- Point the project URL to the correct site
Signed-off-by: Ralph Castain <rhc@pmix.org>
* Only install the hwloc dependency for versions >= 3.0.0
Thanks to @ax3l for the suggestion
Signed-off-by: Ralph Castain <rhc@pmix.org>
* Add myself as a listed maintainer
Signed-off-by: Ralph Castain <rhc@pmix.org>
* Add warnings for existing conflicts. New versions of QMCPACK require a compiler with C++14 support.
* QMCPACK now requires a newer release of CMake.
* Switch QMCPACK to using FFTW-api provider.
* Relax dependencies on QMCPACK +da variant.
* Add QMCPACK 3.6.0 release.
* QMCPACK compiler-CUDA conflicts.
* QMCPACK fix typo in expressing conflict.
* Conditional needed since these variables are only used when FFTW is a dependency to QMCPACK.
* QMCPACK QE variant dependency was underspecified. Must include MPI as a hard dependency on QE.
* Update QMCPACK dependencies for HDF5, CMake and Boost.
* QMCPACK clean-up, more consistent use of spec vs. self.spec.
* Add support for collective I/O variant of QMCPACK.
* Update QMCPACK conflicts for QE and PHDF5 variants.
* Use built-in install method for QMCPACK starting with 3.6.0
* QMCPACK compiler C++14 conflicts were off by one version.
* QMCPACK package needs to setup_environment method.
* In support of PR#10252, get rid of slashes in string.
* Migrate these to the CUDA package and make a seperate PR.
* In support of PR#10252, get rid of join_path for nexus.
* In support of PR#10252, work around concretizer limitation.
* In support of PR#10252, convert to conditionals to if-else clauses for compactness.
* In support of PR#10252, get rid of extra space and new line in warning messages.
"spack install" will install all packages added to the current
environment. When this included external packages, the environment
update would fail because it would attempt to copy log files that
were only generated if Spack handled the install itself. This skips
that step for external packages.
* Allow overwrite nonexistent and multiple packages
initial implementation
give one prompt to users instead of a prompt per spec
testing
* flake
* bugfix: install overwrite check each spec against installed
* python3 compliance for filter/map
* Updated MPI and TAU versions in the TAU package
* Updated PDT versions
* Added support for Python (+python), default to `False`
* Cleaned up binutils, python, mpi usage.
* Updated binutils install to add additional header files to the include/extra directory.
* Resolving review problems with TAU and binutils packages.
The binutils package was updated to include support for installing
the ELF headers as a +headers variant. The TAU package was updated
to use all known Spack dependencies.
* r-gamlss-data: new package at 5.1-0
* r-gamlss-dist: new package at 5.1-1
* r-gamlss: new package at 5.1-2
* r-gamlss: add mass, survival, nlme imports
Fixes#10361Fixes#6634
When mkl isnt in the spec, still write an explicit mkl entry to
prevent numpy from looking in system dirs and using a system install
of mkl. Do the same for openblas and atlas (although mkl was the only
system install reported to interfere with Spack's choice).
* Updating nalu-wind, nalu, openfast, and tioga packages. Includes
improved handling of +shared variant.
* Add fftw and catalyst support to nalu-wind.
* Restrict ParaView to use matplotlib versions before 3 (which
require Python 3)
* py-modred: New package
Parallelized python module for finding modal decompositions and
reduced order models.
* fix license
I think?
* Add dependency on py-numpy
and remove commented out code
* vigra: new package
* Better constraints and types on some depends_on. Use site_packages_dir variable for Python install dir. Explicit switch-offs where available. Change some local variables to suit style checks.
* Take care of lines too long
* Explicit WITH_HDF5=ON
* docbook processing works correctly for gdk-pixbuf
1. The various bits of documentation in gdk-pixbuf include hardcoded
references to dtd's and stuff at their canonical, Internet,
locations. BUT, gdk-pixbuf runs xslt-proc with the `--nonet`
option, which forbids it from using the network. Sadness ensues.
Traditionally folks use XML Catalogs to map these to local copies.
Our docbook-xsl package wasn't setting the appropriate env var in
its dependents environments to use our catalog.
Now it does. Less sadness ensues.
2. If we're going to use these things, we should depend on them.
* Add gdk-pixbuf's bin to build environment
The "post-install.sh" script uses gdk-pixbuf-query-loaders, which was
installed earlier.
If py-psyclone can set its own bin on its PATH, so can we...
* Make gdk-pixbuf use recognizable docbook location
Our docbook-xsl package assumes that the canonical location is
`http://cdn.docbook.org/release/xsl/current/manpages/docbook.xsl`, but
the gdk-pixbuf's meson build script uses
`http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl`.
This means that our XML Catalog doesn't fix the reference and sadness
happens.
Just patch the build that we see what we want to see, then we can make
it all go away.
* Add commentary re docbook patch
* Make catalog helper a property
Thanks @adamjstewart!
* Run tests if/when run_tests is true
Thanks @adamjstewart!
* Tune up dependencies
Thanks @adamjstewart!
* Wordsmit commentary
This adds a lot of fixes and updates for alpine ascent and its dependencies:
* add support for static (via ~shared) and use vtk-m 1.2
* update vtkh package to output cmake configure file and pinning it to vtkm 1.2
* make conduit respect ~python
* fix ascent python logic
* consistant cmake usage
* conditionally add tbb in ascent if vtkh
* enable openmp
* more robust handling of variants
* update ascent and conduit for static builds
* add optional support for mfem in ascent
* enable mfem conduit support for ascent
* add optional adios dep to conduit
* remove ver req from conduit
* ascent: remove confusing comment
* tweaks to conduit and ascent pkg recipes
* fix typo in conduit package
* pref conduit master
* changing mfem to depend on conduit@master to get updated relay
* restore use of conduit 0.3.1 or greater for mfem
* set master as preferred conduit version
* allow mfem to use conduit master
* adding rover package and editing ascent
* updating vtkm cmake dep
* guard ascent python support on +shared
* removing rover to simply ascent package
* add fortran variant to conduit, to allow us to turn off conduit support even when a fortran compiler is specified
* fix fortran compiler check so it can work on cray systems
* working towards cuda fix for vtkm lagrange filter
* update ascent package with more variants, and patch to avoid nvcc issue
* hdf5 flags fix for BGQ
* add post install test
* add testing to ascent
* add testing of the using-with-make example
* add ctest output on error for run_tests
* Remove Cray CC compilers causing problems on case-insensitive filesystems
* cray -> cce
* Ensure that compiler-specific directory comes first in build-env
* Point to compiler-specific symlinks
Binary caches of packages with absolute symlinks had broken symlinks.
As a stopgap measure, #9747 addressed this by replacing symlinks with
copies of files when creating binary cached packages.
This reverts #9747 and instead, either relative-izes the symlink or
rewrites the target. If the binary cache is created using '--rel' (as
in "spack buildcache create --rel...") then absolute symlinks will be
replaced with relative symlinks (in addition to making RPATHs relative
as before); otherwise they are rewritten (when the binary cache is
unpacked and installed).
The current output of buildcache list is very verbose and I feel like
some details are getting lost. By making the output similar to find, I
think users will be able to get a better overview of what is stored in
the cache.
* dealii: fix concretization of xsdk package
* tests: add concretization tests for deal.II and xSDK, which are often broken due to limitations in the concretizer
* use pytest.mark.parametrize
Updated LBANN, Hydrogen, and Aluminum to not require CUDA-aware MPI
even when using CUDA. Fixed small bugs within both LBANN and Hydrogen
packages. Added requirements for breathe and cereal to LBANN.
Fixes issues #9613 and #3209.
Remove the spack wrapper directories from PATH for the bootstrap step.
This was breaking the build for Cray (and other cross-compile) because
bjam was built for the BE and died on SIGILL on the FE.
This only affects building bjam. The boost libraries are still built
the normal spack way with the spack wrappers.
Add variants 'cray' and 'bgq' to build for Cray and Blue Gene compute
nodes. These systems need separate options to find the MPI compiler
for hpcprof-mpi.
The 4.0.1 release is the culmination of the SUNDIALS 4.0.0 preview releases,
i.e. the 4.0.0-dev versions. As such, the 4.0.0-dev releases are now
being removed.
* Explicitly listing blas and lapack sections in site.cfg for numpy when using netlib-lapack so that scipy can find them as well.
* Reducing code to use a function call instead of copying and pasting.
* Fixing flake8 errors.
* Fixing python 3.6 error when site.cfg lists library_dirs multiple times.
* Formatting.
* Verifying blas and lapack are enabled before writing to site.cfg.
* Fixing flake8 errors.
* Fixing conflicts since this package file has been updated.
* Fixing flake8 stuff.
* Handling blas and lapack variants for netlib-lapack in site.cfg for py-numpy.
* Don't write netlib-lapack site.cfg file if no blas or lapack variants enabled in py-numpy.
* Removing redundant if statement.
* Fixing mistake in py-numpy site.cfg generation.
* Separating blas and lapack further in site.cfg for netlib-lapack in py-numpy.
Allow customizing views with Spec-formatted directory structure
Allow views to specify projections that are more complicated than
merging every package into a single shared prefix. This will allow
sites to configure a view for the way they want to present packages
to their users; for example this can be used to create a prefix for
each package but omit the DAG hash from the path.
This includes a new YAML format file for specifying the simplified
prefix for a spec in a view. This configuration allows the use of
different prefix formats for different specs (i.e. specs depending
on MPI can include the MPI implementation in the prefix).
Documentation on usage of the view projection configuration is
included.
Depending on the projection configuration, paths are not guaranteed
to be unique and it may not be possible to add multiple installs of
a package to a view.
* elfutils: option to install elf.h header file
Add variant 'elfh' (default False) to install the elf.h header file to
the include directory. This provides access to a newer version of
elf.h and allows an elf application to build with the same elf.h that
libelf.so was built with.
Add version 0.175.
* Drop the variant 'elfh' and always install elf.h instead.
* new package: git-fat
* backport of rsync -> older versions no longer available
Change-Id: I3a41f17df0f88ca11e08ea6fd2f2d381435e0f09
* fix legal stuff and use new git attribute
Change-Id: Ice156dfe8ad4137a861f7b2938ee92f4024142be
* use date as version number rather than hash
Change-Id: Ib537659e368f69124895306d6a6ac0c5e36061a7
* only use the date once
Change-Id: I2592fa28aaa53fed949ddc82959d712ff3f6f752
Fixes#10284#10152 replaced shutil.move with llnl's copy and copy_tree for
resources. This did not copy permissions so led to later failures
if an executable was copied (e.g. a configure script). This uses
install/install_tree instead, which preserve permissions.
* Initial compiler support
* added arm.py
* Changed licence to Arm suggested header
* Changed licence to the same as clang.py
Main author of file is Nick Forrington <Nick.Forrington@arm.com>
Minor changes by Srinath Vadlamani <srinath.vadlamani@arm.com>
* compilers: add arm compiler detection to Spack
- added arm.py with support for detecting `armclang` and `armflang`
Co-authored-by: Srinath Vadlamani <srinath.vadlamani@arm.com>
* Changed to using get get_compiler_version
* linking to general cc for arm compiler
* For arm compiler add CFLAGS to use compiler-rt rtlib.
* Escape for special characters in rexep
* Cleaned up for Flake8 to pass.
* libcompiler-rt should be part of the LDFLAGS not CFLAGS
* fixed m4 when using clang to used LDFLAGS. Fixed comments for arm.py to display compiler --version output with # NOAQ for flakes pass.
* added arm compilers
* proper linked names
* add the tfel package
* fix the tfel package
* fix the tfel package
* fix the tfel package
* Taking Adam J. Steward' remarks into account
* fixes trailing white spaces
* Update description
* Update dependencies following @adamjstewart adices
* Style fixes
* Style fixes
* Add java optional support
* add the maintainers attribute (following @alalazo advice), disable interface not selected (following @adamjstewart advice)
* flake8 fixes
* Fix Cast3M and python-bindings support. Python detection is made compatible with cmake'FindPythonLibs module (at least how it is used in TFEL)
* Style fixes
* Style fixes
* Fix test on python version
* Follow @adamjstewart advices: code is much cleaner and readable
* Small fix
* Small fix
* Add comment
* Small fix in cmake option
* try again (trying to overcome Travis CI unstable build process)
* Add support for the MFrontGenericInterfaceSupport project (MGIS)
* Style fixes
* Package documentation update
* Package documentation update
* Fix a typo thanks to Andreas Baumbach review
* Follow Adam J. Stewart advices
* Fix type
* bowtie: new versions and %gcc@8.0.0: fix
Bowtie development shifted from Sourceforge to GitHub.
This commit adds several versions from GitHub, using the archive
tarballs. Note that the URL for 1.2.2 tarball is actually an '_p1'
tag....
It leaves the old 1.2 release download info in place.
Versions 1.2.0 and newer come from GitHub (I'm unsure if the 1.2 and
1.2.0 are equivalent).
Include a fix that enables %gcc@8.0.0: from:
https://github.com/BenLangmead/bowtie/issues/87
But, v1.2.2 has trouble with "newer" gcc's, so it only adds v1.2.2 for
%gcc@6.0.0:.
Feel free to tighten this. I know that:
- 1.2 -> 1.2.2 work with %gcc@5.5.0;
- 1.2 -> 1.2.1.1 work with %gcc@8.2.0; and
- 1.2.2 fails with %gcc@8.2.0
* Tighten to `conflicts('%gcc@8:', when='@1.2.2')`
* Point 1.2.2 and 1.2.2_p1 at the 1.2.2_p1 tarball
* Update package.py
Doxygen has migrated from a private SVN to GitHub. This PR updates the URLs and adds versioned commit hashes from GitHub. It also includes version 1.8.15 as the latest option.
* Update package.py
This enforces conventions that allow for correct handling of
multi-valued variants where specifying no value is an option,
and adds convenience functionality for specifying multi-valued
variants with conflicting sets of values. This also adds a notion
of "feature values" for variants, which are those that are understood
by the build system (e.g. those that would appear as configure
options). In more detail:
* Add documentation on variants to the packaging guide
* Forbid usage of '' or None as a possible variant value, in
particular as a default. To indicate choosing no value, the user
must explicitly define an option like 'none'. Without this,
multi-valued variants with default set to None were not parsable
from the command line (Fixes#6314)
* Add "disjoint_sets" function to support the declaration of
multi-valued variants with conflicting sets of options. For example
a variant "foo" with possible values "a", "b", and "c" where "c"
is exclusive of the other values ("foo=a,b" and "foo=c" are
valid but "foo=a,c" is not).
* Add "any_combination_of" function to support the declaration of
multi-valued variants where it is valid to choose none of the
values. This automatically defines "none" as an option (exclusive
with all other choices); this value does not appear when iterating
over the variant's values, for example in "with_or_without" (which
constructs autotools option strings from variant values).
* The "disjoint_sets" and "any_combination_of" methods return an
object which tracks the possible values. It is also possible to
indicate that some of these values do not correspond to options
understood by the package's build system, such that methods like
"with_or_without" will not define options for those values (this
occurs automatically for "none")
* Add documentation for usage of new functions for specifying
multi-valued variants
Non-expanded resources were being deleted from the cache on account
of two behaviors:
* ResourceStage was moving files rather than copying them, and uses
"os.path.realpath" to resolve symlinks
* CacheFetchStrategy creates a symlink to a cached resource rather
than copying it
This alters the first behavior: ResourceStage now copies the file
rather than moving it.
"mirror create" was invoking a package's do_patch method in order to
retrieve and archive URL patches. If a package implements a "patch"
method, this is also called as part of do_patch; this failed when the
package-specific implementation referred to environment variables
that are only available at the time the package is built
(e.g. "spack_cc").
This change introduces fetch and clean methods for patches. They are
no-ops for FilePatch but perform the appropriate actions for
UrlPatch. This allows "mirror create" to invoke do_fetch, which does
not call the package's patch method.
* PARALLEL-NETCDF: Update new version and location
PnetCDF-1.11.0 is released.
Also, the canonical download area has been changed and they are now using git, so can also provide a develop and master checkout.
One issue is that they changed the name of the tar files, so 1.11.0 needs special handling (and future versions will also).
All checksums at new location match the checksums from the old location.
* Address concerns in review
Added a `url_for_version` function to handle the name change in the tar files at version 1.11.0 and later. Updated description to match current shown on website. Updated `homepage` setting since it has recently moved.
* Address issues in second review
- in many files, regular strings were used in places where raw strings
should've been used.
- convert these to raw strings and get rid of new flake8 errors
This PR improves the validation of `modules.yaml` by introducing a custom validator that checks if an attribute listed in `properties` or `patternProperties` is a valid spec. This new check applied to the test case in #9857 gives:
```console
$ spack install szip
==> Error: /home/mculpo/.spack/linux/modules.yaml:5: "^python@2.7@" is an invalid spec [Invalid version specifier]
```
Details:
* Moved the set-up of a custom validator class to spack.schema
* In Spack we use `jsonschema` to validate configuration files
against a schema. We also need custom validators to enforce
writing default values within "properties" or "patternProperties"
attributes.
* Currently, validators were customized at the place of use and with the
recent introduction of environments that meant we were setting-up and
using 2 different validator classes in two different modules.
* This commit moves the set-up of a custom validator class in the
`spack.schema` module and refactors the code in `spack.config` and
`spack.environments` to use it.
* Added a custom validator to check if an attribute is a valid spec
* Added a custom validator that can be used on objects, which yields an
error if the attribute is not a valid spec.
* Updated the schema for modules.yaml
* Updated modules.yaml to fix a few inconsistencies:
- a few attributes were not tested properly using 'anyOf'
- suffixes has been updated to also check that the attribute is a spec
- hierarchical_scheme has been updated to hierarchy
* Removed $ref from every schema
* $ref is not composable or particularly legible
* Use python dicts and regular old variables instead.
* express: new version, use tags and fix gcc@6.0.0:
Express fails to build with gcc@6.0.0:.
The debian project [has a
fix](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=811859) but
they don't seem to have pushed it upstream.
I've opened an issue and a PR in eXpress repo, but eXpress isn't
actively developed, so I'm fixing it here too.
Since the Spack package was created, the eXpress team tagged their
releases. I've updated the package to use the tags.
Version 1.5.1 used to be known as 2015-11-29 (same commit). 1.5.2 is
new(er).
* Make flake8 happ{y,ier}
Apply fix from aspell issue (519) for a pointer dereference bug that
newer versions of gcc won't let slip past.
There hasn't been a release that includes the fix, this applies the
change to the latest release.
There's a missing break in a switch statement that newer gcc's
dislike.
Our #4696 simply disallowed newer gcc's.
This fixes the problem instead.
It's been [PR'ed upstream](https://github.com/agordon/fastx_toolkit/pull/22).
Tested with gcc@5.5.0 and gcc@8.2.0 on CentOS.
The most recent release of bamutil that we support uses an embedded
copy of libStatGen that has several issues that keep it from building
with newer releases of gcc.
They've all been fixed upstream and the latest release of bamutil
would pick them up if/when we support it. The build process has
changed though, plus my team needs *this* version.
This commit backports those fixes.
- The nested directive implementation was broken for python 3
- directive results were not properly removed from the directive list
when it was processed in the DirectiveMeta metaclass.
- the issue was that remove_directives only descended into a list or
tuple, but in Python3, the initial value passed to the function is a
view of dictionary values.
- make it a list to fix things, and add a regression test.
- currently just looks at patches
- allows you to find out which package applied a patch to a spec
- intended to work with tarballs and resources in the future.
- add tab completion for `spack resource` and subcommands
- previously, if a concrete sub-DAG with patched specs was written out
and read back in, its patches would not be found because the dependent
that patched it was no longer in the DAG.
- Add a test to ensure that the PatchCache handles this case.
- Also add tests to ensure that patch objects are properly created from
Specs -- previously we only checked that the patches were on the Spec.
- this fixes a bug where if we save a concretized sug-DAG where a package
had been patched by a dependent, and the dependent was not in the DAG,
we would not read in all patches correctly.
- Rather than looking up patches in the DAG, we look them up globally
from an index created from the entire repository.
- The patch cache is a bit tricky for several reasons:
- we have to cache information from packages, specifically, the patch
level and working directory.
- FilePatches need to know which package owns them, so that they can
figure out where the patch lives. The repo can change locations from
run to run, so we have to store relative paths and restore them when
the cache is reloaded.
- Patch files can change underneath the cache, because repo indexes
only update on package changes. We currently punt on this -- there
are stub methods for needs_update() that will need to check patch
files when packages are loaded. There isn't an easy way to do this
at global indexing time without making the FastPackageChecker a lot
slower. This is TBD for a future commit.
- Currently, the same patch can only be used one way in a package. That
is, if it appears twice with different level/working_dir settings,
bad things will happen. There's no package that current uses the
same patch two different ways, so we've punted on this as well, but
we may need to fix this in the future by moving a lot of the metdata
(level, working dir) to the spec, and *only* caching sha256sums in
the PatchCache. That would require some much more complicated tweaks
to the Spec, so we're holding off on that til later.
- This required patches to be refactored somewhat -- the difference
between a UrlPatch and a FilePatch is still not particularly clean.
- indexes should use json, not YAML, to optimize for speed
- only use YAML in human-editable files
- this makes ProviderIndex consistent with other indexes
- virtual provider cache and tags were previously generated by nearly
identical but separate methods.
- factor out an Indexer interface for updating repository caches, and
provide implementations for each type of index (TagIndex,
ProviderIndex) so that more can be added if needed.
- Among other things, this allows all indexes to be updated at once.
This is an advantage because loading package files is the real
overhead, and building the indexes once the packages are loaded is
trivial. We avoid extra bulk read-ins by generating all package indexes
at once.
- This can be extended for dependents (reverse dependencies) and patches
later.
- cleanup patch.py:
- make patch.py constructors more understandable
- loosen coupling of patch.py with package
- in Package: make package_dir, module, and namespace class properties
- These were previously instance properties and couldn't be called from
directives, e.g. in patch.create()
- make them class properties so that they can be used in class definition
- also add some instance properties to delegate to class properties so
that prior usage on Package objects still works
* Always build glib with iconv
My early PR, #10165, which added a variant to configure glib to use
libiconv and defaulted to false, seems to be causing more trouble than
the knob is worth.
This changes the glib package to always depend on and use libiconv.
* libiconv depends_on is no longer conditional
* First draft for installing Stata 15
I've tested this works on my systems and gives a successful install of STATA 15.
* Flake8 cleanup
* Another Flake8
* Update license header
* Various improvements
A lot of improvements as suggested by @adamjstewart
* flake8 check
- When returning string output, use text_type and decode utf-8 in Python
2 instead of using `str`
- This properly handles unicode, whereas before we would pass bad strings
to colify in `spack blame` when reading git output
- add a test that round-trips some unicode through an Executable object
* paraview: adding variants to use external packages as internal do not compile
* paraview: add latest paraview version
* catalyst: fixed libvtkexpat undefined reference linking error in Catalyst 5.5
* catalyst: add latest catalyst version
* catalyst: added ParaView_DIR env variable to catalyst module
* add paraview, catalyst patches
- https://gitlab.kitware.com/vtk/vtk-m/merge_requests/1166
- https://gitlab.kitware.com/paraview/paraview/merge_requests/2433
- https://gitlab.kitware.com/paraview/paraview/merge_requests/2436
* - Handle updated library paths for catalyst.
Versions 5.4 and old places libraries under a paraview subdirectory.
Eg, "lib/paraview-5.4", they are now placed directly under "lib"
- Minor code style cleanup
* Handle update library and python paths for ParaView-5.5
* catalyst: added ParaView_DIR path to spack_env
* BUG: applied the patch to the extracted catalyst source files
* paraview: added missing self to a member variable
* paraview: added Paraview_DIR to env
* catalyst: added osmesa variant
* of-catalyst: added new package
* add (FOAM,WM)_PROJECT_DIR also to spack_env environment
* depends on first openfoam release supporting catalyst
* openfoam-com: added missing env variables to module generation
* openfoam: fixed flake8 errors
* of-catalyst: added full variant and openfoam version dependency
* paraview: adding variants to use external packages as internal do not compile
* catalyst: fixed libvtkexpat undefined reference linking error in Catalyst 5.5
* catalyst: added ParaView_DIR env variable to catalyst module
* add paraview, catalyst patches
- https://gitlab.kitware.com/vtk/vtk-m/merge_requests/1166
- https://gitlab.kitware.com/paraview/paraview/merge_requests/2433
- https://gitlab.kitware.com/paraview/paraview/merge_requests/2436
* - Handle updated library paths for catalyst.
Versions 5.4 and old places libraries under a paraview subdirectory.
Eg, "lib/paraview-5.4", they are now placed directly under "lib"
- Minor code style cleanup
* Handle update library and python paths for ParaView-5.5
* catalyst: added ParaView_DIR path to spack_env
* BUG: applied the patch to the extracted catalyst source files
* of-catalyst: added new package
* add (FOAM,WM)_PROJECT_DIR also to spack_env environment
* depends on first openfoam release supporting catalyst
* paraview: added missing self to a member variable
* openfoam-com: added missing env variables to module generation
* openfoam: fixed flake8 errors
* paraview: added Paraview_DIR to env
* catalyst: added osmesa variant
* of-catalyst: added full variant and openfoam version dependency
* paraview-catalyst: use always external expat and netcdf
* of-catalyst: reformatted package description
* paraview-catalyst: removed duplicated function
* catalyst: fixed flake8 error
* of-catalyst: fixed license header
* of-catalyst: minor changes
* of-catalyst: renamed gitrepo with git
* of-catalyst: removed useless gitrepo parameter
* Added a package for the MDAnalysis toolkit.
* Added python packages for breathe and m2r. Updated versions and URL
for the sphinx package.
* Fixed flake8 error
* Updated package requirements based on feedback.
* Updated with requirements from the setup.py
* Switched it back to pypi.
* py-pynio: new package
* Major re-working to add some of the optional dependencies, and make it conform to the approach described in the pynio setup.py comments. Much of it turned out to be too complicated, and I have added some notes in comments to explain this to future adventurers.
* Added variants for the hdf5 and gdal dependencies, which do seem to be genuinely optional. Also added absolute dependencies for jpeg and zlib, which setup.py says it wants, but were being found as the os-installed versions.
* Added descriptions for the new variants, and moved them to above the dependencies
Enable explicitly building glib with or without libiconv.
Heads up: if you build with ~iconv but there is something else in the
spec that includes libiconv then glib will *still* automagically
discover it and the build will fail.
* Remove /nfs/tmp2 from default configuration
* /nfs/tmp2 is going away from LC... and doesn’t exist for the rest of the world.
* update documentation to remove /nfs/tmp2 as well
* add the tfel package
* fix the tfel package
* fix the tfel package
* fix the tfel package
* Taking Adam J. Steward' remarks into account
* fixes trailing white spaces
* Update description
* Update dependencies following @adamjstewart adices
* Style fixes
* Style fixes
* Add java optional support
* add the maintainers attribute (following @alalazo advice), disable interface not selected (following @adamjstewart advice)
* flake8 fixes
* Fix Cast3M and python-bindings support. Python detection is made compatible with cmake'FindPythonLibs module (at least how it is used in TFEL)
* Style fixes
* Style fixes
* Fix test on python version
* Follow @adamjstewart advices: code is much cleaner and readable
* Small fix
* Small fix
* Add comment
* Small fix in cmake option
* try again (trying to overcome Travis CI unstable build process)
- fixed an issue where some undesirable parts of
the spack source tree were being copied into
the image context.
- added a workaround for a tty ioctl warning on
ubuntu
- adjusted how the main images are built so that
`RUN spack ...` works automatically for child
images that base themselves on them.
* Record build output as an array of lines rather than concatenating to a
single large string.
* Use string.find to avoid running re.search on every line of output.
* CGNS: Allow use of git branch versions
Add ability to use git `master` and `develop` branches of the CGNS library. The `seacas` package sometimes needs to use the `master` or `develop` branch due to some new changes to the parallel I/O implementation in CGNS which has not yet been released.
* CGNS: Reorder to put newest version on top
Based on review comments, place newest version (develop) first in list.
- some commands were missed in the rollout of spack environments
- this makes all commands that need to disambiguate specs restrict the
disambiguation to installed packages in the active environment, as
users would expect
* dyninst: patch to build dyninst with older gcc
Add 'v9.3.2-auto.patch'. This patch changes some 'auto t: type' usage
to the older but equivalent 'type.begin()'. This allows building
dyninst 9.3.2 with gcc 4.4 which doesn't support the newer syntax.
This patch is harmless with newer gcc.
* Fix typo in patch. (My bad for sloppy cut-and-paste.)
* Restrict the patch to gcc 4.7 and earlier. gcc 4.8 supports the newer
usage and thus doesn't need the patch.
* proper include & linking of libarchive
* due to linux headers, mfu can't build on mac
* hard code deps in configure line
rather than relying on pkg-config
* +xattr during config
* must also link the lib
* find mfu.h
* long lines
* Add thread count variant
Atlas automatically configures itself and optimizes to run with a fixed number of threads. This can be overridden during compile by setting a flag and atlas will tune itself to use the specified number, rather than all system CPUs.
Default value is the existing logic, autoconfigure.
* Fix Linting
* Another lint for longline
* Added rocksdb package
* Fixes based on @tristan0x and @pramodk comments
* Cleanup
* A couple minor fixes based on @adamjstewart 's advice
* Fixed flake8 errors
- previous removal of FOAM_EXT_LIBBIN (ThirdParty) from the environment
during the build could lead to the system scotch library being found
instead of the spack installation.
Avoid this largely cosmetic change to the setting in favour of
improved build robustness. These modifications will be largely
superfluous in the 1812 release anyhow.
- Split the patching algorithm into 'regular' and '@:1806' since the
next versions of openfoam will again need fewer patches.
- Add hook into foamCreateManpage to be used where available
* SEACAS: Add preliminary support for seacas package
* Eliminate leftover from package I copied from.
* And remove another stray line
Sorry, thought I had checked this better...
* SEACAS: Shorten long lines; fixup indentation
* SEACAS: Remove unused os import
* Add PLASMA version 18.11.0 and Lua variant (#9689)
* Add PLASMA 18.11.1 with optional Lua and test for headers
* New versions for a few python modules (#9969)
* py-jupyter-console: Add version 5.2.0
* py-jupyter-core: add version 4.4.0
* py-lxml: add version 4.2.5
* py-zmq: add version 17.1.2
* py-terminado: add version 0.8.1
* py-pexpect: add version 4.6.0
* py-pytables: add version 3.4.4
* SEACAS: Default to mpi on
* SEACAS: Modify to reduce variants
Instead of using an `allpkgs` or explicitly specifying each individual subset,
changed to minimize variants:
* By default, the exodus and IOSS libraries are built and a few
executables directly related to the IOSS library.
* variant `common` defaults to True and builds the "common" seacas
applications. This is based on my definition, so there may be
could be some discussion on what belongs here.
* variant `legacy` defaults to True and builds the remainder of the
seacas applications. These are still used, but mainly in more
esoteric areas. Might be better to default to False, but I wanted
default to just build everything which is what other SEACAS builds
always do...
Removed the `kokkos` variants for now as I need to do some more
thinking on how best to support this. Not often used currently,
so shouldn't be an issue.
Cleaned up other issues raised by Adam and found by me.
* SEACAS: Address flake8 issues
* SEACAS: Clean up variant package logic
Fixed package variant logic.
Consolidated some other variant handling logic
Other minor refactors for hopefully better readability
* SEACAS: Fix flake8 error
Missing whitespace around operator fixed.
* GDL: python integration fixes
* renamed python-related variants to follow the convention
* building the Python module requires patches currently targetting 0.9.8 othwerwise asking for the Python module *only* builds the Pyhton module
* building the python module also requires patching the vendored (with the GDL) antlr to be built as a shared library
* Typo
Co-Authored-By: rmsds <ricardo.d.silva@gmail.com>
* Rename embed-python variant to embed_python
* zoltan: only add gussed MPI libs if no MPI wrappers are used
- if MPI-wrappers are used for compilation, we can assume that
linking works without manually specifying MPI libs
(guessing may result in wrong libs, cf. #8979)
- thus, only guess the NPI libs and add them explicitly if no
MPI-wrappers are used
- use llnl.util.filesystem.find_libraries instead of a locally
defined routine to guess the MPI libs if needed
(cf. #8979)
* zoltan: rely on MPI-wrappers to know the required MPI libs
* This fixes a number of bugs:
* Patches were not properly downloaded and added to mirrors.
* Mirror create didn't respect `list_url` in packages
* Update the `spack mirror` command to add all packages in the
concretized DAG (where originally it only added the package specified
by the user). This is required in order to collect patches that are specified
by dependents. Example:
* if X->Y and X requires a patch on Y called Pxy, then Pxy will only
be discovered if you create a mirror with X.
* replace confusing --one-version-per-spec option for `spack mirror create`
with --versions-per-spec; support retrieving multiple versions for
concrete specs
* Implementation details:
* `spack mirror create` now uses regular staging logic to download files
into a mirror, instead of reimplementing it in `add_single_spec`.
* use a separate resource caching object to keep track of new
resources and already-existing resources; also accepts storing
resources retrieved from a cache (unlike the local cache)
* mirror cache object now stores resources that are considered
non-cachable, like (e.g. the tip of a branch);
* the 'create' function of the mirror module no longer traverses
dependencies since this was already handled by the 'mirror' command;
* Change handling of `--no-checksum`:
* now that 'mirror create' uses stages, the mirror tests disable
checksums when creating the mirror
* remove `no_checksum` argument from library functions - this is now
handled at the Spack-command-level (like for 'spack install')
* Store ccache directory explicitly in Travis.
Despite we started using ccache on `develop`, it seems the cache itself
is not stored from one CI build to the next. This might be du to the
fact that our language on Travis is Python and not C nor C++.
Hence here we store the ccache directory explicitly.
Lately many CI runs for PRs are failing due to the `mpich` build that
times out on Travis (10 mins. without output). As the timeout seems to
happen consistently during the build phase, increasing the verbosity of
that test can help working around the issue.
The sys_ustat.h.patch to file sanitizer_platform_limits_posix.cc from
PR #10046 does not apply cleanly to gcc 4.8 or 4.9 (or earlier).
GCC up to 4.8.x either don't have libsanitizer or else don't include
ustat.h in sanitizer_platform_limits_posix.cc.
GCC 4.9.x includes ustat.h, but needs a slightly different patch.
The patch applies to GCC 5.x up to 6.4, and 7.x up to 7.3 and also
8.1.0.
The patch is already included in the tar files for gcc 6.5.0, 7.4.0
and 8.2.0.
* flux-sched: fix compilation errors
configure was being run twice becuase the staging symlinks were
confusing autotools
mirror flux-core in building in a subdirectory to avoid other common
compilation problems, like the one in PR #3543
* flux-core: update dependencies
munge is no longer a dependency
provide hints for lua version so that `spack install flux-core` works
"out-of-the-box". Currently, when no explicity version is provided, the
concretizer attempts to use lua@5.3, which is invalid. Closes#10000
* Added a package for the MDAnalysis toolkit.
* Added Ninja as the generator for LBANN, Hydrogen, and Aluminum. Also
fixed a bug in how the Conduit variant is included in LBANN. Added
new versions for Hydrogen and LBANN.
* Updated lbann package so that the CMAKE parameters are set when the
variant is on and off.
Fix the install of the single header amalgate in catch2.
The public API for catch < 2.3.0 was "#include <catch.hpp>".
For 2.3.0+ it is "#include <catch2/catch.hpp>"
* Spades: Add version 3.13.0
In version 3.13.0 the CmakeLists.txt dir is at a different location than
in other versions. Versions up to 3.12.0 are located in "src" whereas
3.13.0 is a level deeper at "assemblers/src".
* Remove git and add new version hash
- all multimethod tests are now run for both `multimethod` and
`multimethod-inheritor`
- do this with a parameterized fixture (pkg_name) that runs the same
tests on both
- Since early Spack versions, the SpecParser has (weirdly) been
responsible for initializing Spec fields.
- This refactors initialization to take place in Spec.__init__, as it
probably should have originally.
- This makes the code easier to read, the parser easier to understand,
and removes the use of __new__ in the parser to initialize the Spec.
- This also makes it possible to make a completely empty Spec with
`Spec()` -- this is an abstract Spec that will match anything.
* Add mising QE releases.
* Update QE dependencies and conflicts.
* QE 6.3 install method requires a patch to work properly.
* include QE git develop branch
* QE HDF5 needs Fortran support. HDF5 versions prior to 1.8.16 leads to QE runtime errors.
* Number of MKL related conflicts for QE.
* Flake8 fixes for QE for hdf5 lines.
* Pass in all compilers properly to QE configure
* Fixed external BLAS/LAPACK linkage in QE.
* Library search was problematic in QE.
* Add section headings to QE package.
* External FFTW compatible libraries properly detected in QE.
* Flake8 fixes for QE
* QE configure defaults to False for ELPA, thus Spack package should as well.
* QE depends on FFTW3 provider instead of FFTW explictly.
* Primary QE repo is gitlab.com, not github.com. Github mirror lags behind gitlab site.
* Support both 6.3-backports branch and develop branch in QE.
* QE patch needed for proper MKL detection. MKL_ROOT is detected and preferred, still falls back to finding first MKL installation in /opt/intel.
* Use FFTW-API provider versioned interface for specify QE FFT dependency.
* QE FFTW conflicts no longer need thanks to FFTW-API provider versioned interface.
* Flake8 3.6.0 fix in support of https://github.com/spack/spack/pull/9853
* Fix QE conflict with ilp64 variant in support of https://github.com/spack/spack/pull/9853
* Remove custom url_for_version for QE package and use builtin url instead. In support of https://github.com/spack/spack/pull/9853
* Use FFTW builtin flags for QE instead of custom Python code. In support of https://github.com/spack/spack/pull/9853
* Fix typo in QE package comments. In support of https://github.com/spack/spack/pull/9853
* Future proof QE package patches in anticipation of QE >= 6.3.1. In support of https://github.com/spack/spack/pull/9853
* Adding version 2.0.12 of numactl.
* Adding new versions of hwloc.
* Adding NVML variant to hwloc.
* Adding gl variant to hwloc.
* Updating hwloc numactl dependency and gl dependency.
* Using gl virtual package in hwloc.
Clang 8.0 now supports openmp 4.5 and many commerical compilers also support
openmp >= 4.0. This commit removes the openmp version guard and rely on CMake
to throw errors out when openmp version requirement is not satisified.
It also add options for precision control.
* CGNS: Add option for 64-bit integers
Added the `int64` variant which will build the library using 64-bit integers for certain values. This gives the capability to have models with more than 2 billion cells and/or nodes.
Beginning with CGNS-3.1.0, two new typedef variables have been introduced to support 64-bit mode. The `cglong_t` typedef is always a 64-bit integer, and `cgsize_t` will be either a 32-bit or 64-bit integer depending on how the library was built. Many of the C functions in the MLL have been changed to to use `cgsize_t` instead of `int` in the arguments. These functions include any that may exceed the 2Gb limit of an` int`, e.g. zone dimensions, element data, boundary conditions, and connectivity. In Fortran, all integer data is taken to be `integer*4` for 32-bit and `integer*8` for 64-bit builds.
* EXODUS: Update version and dependencies
Allow pulling master version from git. Note that I hope to have better versioning "soon"
Add requirement to use Netcdf-4.6.1 or later as those versions no longer require changing the `maxdims` or `maxvars` defines in the netcdf.h include file. With these versions, Exodus can use an unmodified NetCDF. These versions of NetCDF are also better than previous versions (code quality, performance, robustness).
It is still possible to run exodusII with previous NetCDF versions, but I don't know how to specify that the dependency where maxdims/maxvars variants are only needed for versions prior to 4.6.0.
I also removed the explicit dependency on HDF5 as that dependency should be applied through the NetCDF dependency.
* Remove white-space on blank line
* Provide a new spackage for py-pint.
Pint is a Python package to define, operate and manipulate physical quantities:
the product of a numerical value and a unit of measurement. It allows arithmetic
operations between them and conversions from and to different
units. https://pint.readthedocs.io/en/latest/
* Switch hash from md5 to sha256.
Add several new versions so that current functionality can be accessed. Current version is now 1.5.13.
Update `url`, `list_url`, and `list_depth` so spack can find available versions
* PNETCDF: Update with current versions
Added latest versions. (1.10.0, 1.9.0, 1.8.1)
* PNETCDF: Revert version change in url
Reverted the change in the url variable version since not required.
* NETCDF: Add new versions and update url
Added the 4.6.2 version which was recently released.
Changed the url to point to the official Unidata site and added option to retrieve master version from git.
* NETCDF: checksum and version updates
Reverted back to use of previous URL. The `https://github.com/Unidata/netcdf-c/archive/v4.6.2.tar.gz` location is newer, but spack does not seem to be able to access all of the versions at that location -- only goes back to 4.5.0. Since several installations are still providing 4.4.0, thought it best to go back to previous url. However, it looks like the naming convention has changed since 4.6.2, so need to provide explicit url for 4.6.2. Probably best to go to a `url_for_version()` scheme if that naming convention stays in place?
This commit allows users to enable openmp, rendering, logging and mpi
in vtkm. Meanwhile, it adds support for cuda architecture selection.
[VTK-m 1.3 Release notes](https://gitlab.kitware.com/vtk/vtk-m/tags/v1.3.0)
Overhaul hpctoolkit to AutotoolsPackage and to build its dependencies
directly from spack instead of using hpctoolkit-externals.
Remove hpctoolkit-externals since it's no longer needed.
* py-jupyter-console: Add version 5.2.0
* py-jupyter-core: add version 4.4.0
* py-lxml: add version 4.2.5
* py-zmq: add version 17.1.2
* py-terminado: add version 0.8.1
* py-pexpect: add version 4.6.0
* py-pytables: add version 3.4.4
Fixes#994473c978d replaced a move with a copy, which cased rmdir to fail (as
it expects an empty directory). This switches to use `shutil.rmtree`
instead.
The latest OpenMPI release, v4.0.0, does not build with many GCC
variants. Since this is our default, a lot of users get hit.
Let's wait for some point releases.
* py-geopandas: New package, including packages for its dependencies
* Trailing whitespace removed, etc
* One more trailing whitespace
* Removed some extraneous dependencies. No idea why I thought I needed them, but it now builds fine without them.
* Added a variant +plotting, to include the dependencies required for plotting, as these are large-ish if not being used.
* Added explicit dependency on py-matplotlib
* r-geor: new package, and a couple of its dependencies
* Update to new copyright header
* Include the list_url for the R package archive dir
* Added explicit version ranges on dependencies, as per the relevant CRAN pages
* Correct dependency types in r-splancs.
* r-compositions: new package, including its dependencies
* Include the list_url for the R package archive dir
* Added explicit version ranges on dependencies, as per the relevant CRAN pages
Drop versions 8.1.x. These were > 5 years old, no other spack package
uses them, and they used autotools. Packages 'stat' and 'mitos' still
use 8.2.1, so we keep that.
Switch class Dyninst to CMakePackage.
Clean up how the versions depend on various packages. For example,
Dyninst used libelf up to 9.2, and then elfutils starting with 9.3.
This makes things easier going forward.
Add variant 'openmp' (default True) to enable openmp support for
ParseAPI. This was added in 10.0.0.
Add variant 'static' (default False) to also build static libraries.
This goes back to 9.1.0.
Disable cotire for the 9.3.x versions. Cotire has no real use in a
one-time build and can break parallel builds with both static and
shared libs.
* package: add asciidoctor gem
Faster, easier to use, less impossible to install correctly
implementation of asciidoc.
* ritual sacrifice of EOF whitespace to flake8
* openblas: enable parallel builds
* cp2k: enable parallel builds
* cp2k: fix building on multilib/Suse distros
use the actual directory path where files where installed to instead of
the default prefix+'/lib'
* cp2k: ensure we have a non-header-only libxsmm
* openblas: disable max num CPU detection on virtualized build
* cp2k: install data and set compiled-in DATA_DIR
* cp2k: make libxc an optional dependency (enabled by default)
* cp2k: link libint statically
* cp2k: declare statically linked library deps as type=build
* cp2k: add support for PGI compiler
* cp2k: rename smm=none to smm=blas for clarification
* cp2k: blacklist unsupported compilers
* cp2k: mark wannier90 a build-time dep since statically linked
* cp2k: make pexsi and elpa optional
* cp2k: add support for v6.1
* libxc: add version 4.2.3
* cp2k: use pkg-config to link properly to libxsmm
* cp2k: fix OpenMP support by making it explicit
Previously, CP2K accepted threaded ELPA or BLAS, leading to #(CPU) processes
being spawned even though no explicit OpenMP was requested. Now the
`popt` variant should truly be thread free while the `psmp` variant uses
threads also internally.
* cp2k: source tarballs moved to GitHub
* Add initial packages for citcoms and dependencies
* Ignore Pythia imports
* Add py-merlin package
* Add GMT package
* Fixes to get GMT working
* Get hc package building
* Get CitcomS 3.2.0 working
* Add fstrack package
* Fix hash
* added develop version in argobots package and added valgrind variant
* made autotools required only for develop version
* corrected style
* Added --disable-valgrind
Added --disable-valgrind to explicitly disable it when +valgrind isn't provided.
Pass cflags to configure so that configure gets the values from the
spack install line.
Disable -Werror so that we don't fail the build over a stray warning.
Libunwind releases are few and far between, so we need access to
recent snapshots from the git repository.
Pass cflags to configure so that make will respect the value from the
spack install line.
glib should not use the globally installed gtk-doc. Otherwise, gtk-doc
can fail with Python errors such as `ImportError: No module named site`.
This is due to the fact that Spack sets `PYTHONHOME`, which can confuse
the global Python installation that is used by gtk-doc.
- Add version 2.1.0
- Now that #9264 has been merged, gplates seems to build fine with newer
versions of gcc (tested with gcc@8)
- When using the ninja generator, gplates can be built in parallel
* "spack install" now uses cache by default, update examples accordingly
* Replace some example packages with others
* Packing tutorial reference to "spack env" replaced with "spack build-env"
* Command line prompts in examples are shortened
* Example output (including paths) are updated to be more relevant to training environment
Update all examples that need an MPI provider to build with MPICH; reorganize so that fixing MPICH (as part of environment section) comes first in the tutorial (most examples in the tutorial use an MPI provider).
- previously, uninstall would complain if a spec was needed by an
environment.
- Now, we analyze dependents and dependent environments and simply remove
(not uninstall) specs that are needed by environments
- with no arguments, these commands will now edit or dump the
environment's `spack.yaml` file.
- users may not know where named environments live
- this makes it convenient for users to get to the spack.yaml
configuration file for their named environment.
* Update Makefile to use property methods ("build_targets"/"install_targets")
to demonstrate their usage
* Fix highlighting
* Change cbench example to ESMF:
CBench package file was changed and no longer uses the example shown in
the old docs
Scopes added with -C are now referred to as "custom scopes"
rather than "command line scopes". "command line scope" now refers
to specific config options that are set on the command line (like
"--insecure")
- default is still to use the cache, but we've added back the
`--use-cache` argument so that scripts that used it are still correct.
- `--no-cache` is stil present and is mutually exclusive with `--use-cache`
* Update Dyninst package file for TBB dependency
Dyninst master and 10.0 release
versions require the tbb package. This mod
updates the tbb versions adding the one that
dyninst uses and adds the required spack package
changes to dyninst/package.py.
* Put new version of tbb in proper location, per reviewer comment.
* Only depend on tbb if building the development version.
* Changes for the release of Dyninst 10.0.0
* Introduce FFTW2 and FFT3 providers for Intel-MKL and FFTW Spack packages.
* make fftw default package for fftw-api virtual package
* virtual package test assertion now provides location of default virtual packages.
* Change name of virtual package to fftw-api and used versioned interface.
- all commands (except `spack find`, through `ConstraintAction`) now go
through get_env() to get the active environment
- ev.active was hard to read -- and the name wasn't descriptive.
- rename it to _active_environment to be more descriptive and to strongly
indicate that spack.environment manages it
- to aovid changing spec hashes drastically, only add this attribute to
differentiated abstract specs.
- othherwise assume that read-in specs are concrete
- spack.yaml files in the current directory were picked up inconsistently
-- make this a sure thing by moving that logic into find_environment()
and moving find_environment() to main()
- simplify arguments to Spack command:
- remove short args for infrequently used commands (--pdb/-D, -P, -s)
- `spack -D` now forces an env with a directory
- The `Spec` class maintains a special `_patches_in_order_of_appearance`
attribute on patch variants, but it is was preserved when specs are
copied.
- This caused issues for some builds
- Add special logic to `Spec` to preserve this variant on copy
- TODO: in the long term we should get rid of the special variant and
make it the responsibility of one of the variant classes.
- split 'environment' section into 'environments' and 'modules'
- move location to 'query packages' section
- move cd to developer section
- --env-dir no longer has a short optino (was -E)
- -E now means "run without an environment" (no longer same as --env-dir)
- -D now means "run with this directory environment"
- remove short options for may infrequently used top-level commands
- `spack env status` used to show install status; consolidate that into
`spack find`.
- `spack env status` will still print out whether there is an active
environment
- uninstall now:
- restricts its spec search to the current environment
- removes uninstalled specs from the current environment
- reports envs that still need specs you're trying to uninstall
- removed spack env uninstall command
- updated tests
- moved get_env from cmd/env.py to environment.py
- spack install will now install into the active environment when no
arguments are provided. It looks:
1. at the command line
2. for a local spack.yaml file
3. for any currently activated environment
- `spack env create <name>` works as before
- `spack env create <path>` now works as well -- environments can be
created in their own directories outside of Spack.
- `spack install` will look for a `spack.yaml` file in the current
directory, and will install the entire project from the environment
- The Environment class has been refactored so that it does not depend on
the internal Spack environment root; it just takes a path and operates
on an environment in that path (so internal and external envs are
handled the same)
- The named environment interface has been hoisted to the
spack.environment module level.
- env.yaml is now spack.yaml in all places. It was easier to go with one
name for these files than to try to handle logic for both env.yaml and
spack.yaml.
- `spack env activate foo`: sets SPACK_ENV to the current active env name
- `spack env deactivate`: unsets SPACK_ENV, deactivates the environment
- added support to setup_env.sh and setup_env.csh
- other env commands work properly with SPACK_ENV, as with an environment
arguments.
- command-line --env arguments take precedence over the active
environment, if given.
- env.yaml is now meaningful; it contains authoritative user specs
- concretize diffs user specs in env.yaml and env.json to allow user to
add/remove by simply updating env.yaml
- comments are preserved when env.yaml is updated by add/unadd
- env.yaml can contain configuration and include external configuration
either from merged files or from config scopes
- there is only one file format to remember (env.yaml, no separate init
format)
- env.json is now env.lock, and it stores the *last* user specs to be
concretized, along with full provenance.
- internal structure was modified slightly for readability
- env.lock contains a _meta section with metadata, in case needed
- added more tests for environments
- env commands follow Spack conventions; no more `spack env foo install`
- add `SingleFileScope` to configuration, which allows us to pull config
sections from a single file.
- update `env.yaml` and tests to ensure that the env.yaml schema works
when pulling configurtion from the env file.
- Each schema now has a top-level `properties` and `schema` attribute.
- The `properties` is a fragment that can be included in other
jsonschemas, via Python, not via '$ref'
- Th `schema` is a complete `jsonschema` with `title` and `$schema`
properties.
- add a common argument for `-e/--env`
- modify the database to support queries on subsets of hashes
- allow `spack find` to be filtered by hashes in an environment
- logic used in `spack find` was hiding duplicate installations if their
hashes were different
- short hash doesn't work in this scenario, since specs are structurally
identical
- ConstraintAction always works on a DB query, so use the DAG hash to
ensure uniqueness
- `spack.environment` is now the home for most of the infrastructure
around Spack environments
- refactor `cmd/env.py` to use everything from spack.environment
- refactor the cmd/env test to use pytest and fixtures
- `spack.util.environment` is the new home for routines that modify
environment variables.
- This is to make room for `spack.environment` to contain new routines
for dealing with spack environments
- Instead of one method with all parsers, each subcommand gets two
functions: `setup_<cmd>_parser()` and `environment_<cmd>()`
- the `setup_parser()` and `env()` functions now generate the parser
based on these and a list of subcommands.
- it is now easier to associate the arguments with the subcommand.
* modified tutorial packages
* update hint in hdf5 tutorial file (typo for suggested argument)
* add repo.yaml to tutorial repository
* update tutorial docs to refer user to tutorial package repository
* flake edits
* recommend site scope vs. defaults
* you don't specify the repo's name when adding a repo, just the path
* omit symlinks and create file copies when making a binary cache of a package
* unrelated flake edits involving regexes that recent flake is now angry about
* Record stdout for packages without errors
Previously our reporter only stored stdout if something went wrong
while installing a package. This prevented us from properly reporting
on steps where everything went as expected.
* More robustly report all phases to CDash
Previously if a phase generated no output it would not be reported to CDash.
For example, consider the following output:
==> Executing phase: 'configure'
==> Executing phase: 'build'
This would not generate a report for the configure phase. Now it does.
* Add test case for CDash reporting clean builds
* Fix default directory for CDash reports
The default 'cdash_report' directory name was getting overwritten
by 'junit-report'.
* Upload the build phase first to CDash
Older versions of CDash expect Build.xml to be the first file uploaded
for any given build.
* Define cdash_phase before referring to it
- Delete references to ruamel.yaml at Spack start-up, if they are present
- ruamel.yaml generates a .pth file when installed via pip that has the
effect of always preferring the version of this package installed at
site scope (effectively preventing us from vendoring it).
- This mechanism triggers when implicitly importing the 'site' module
when the python interpreter is started. In this PR we explicitly delete
references to 'ruamel.yaml' and 'ruamel' in sys.modules, if any, after
we set 'sys.path' to search from the directory where we store vendored
packages. This ensures that the imports after those statements will be
done from our vendored version.
- See #9206 for further details
fixes#9739
The non-daemonic pool relies heavily on implementation details of the
multiprocessing package. In this commit we provide an implementation
that fits recent python versions.
* henson: new package
* henson: change github path to henson-insitu
* henson: make mpi-wrappers=off by default
* henson: remove unsued variable and spaces to make linter happy
* henson: rename version master to develop
* xeus: new package
cppzmq: add version 4.3.0
zeromq: make libsodium optional, on by default
* xeus: add patch so it builds, add new version
nlohmann-json: add more versions
cryptopp: add more versions
* xeus: flake8
* xeus: fix license
This allows installing software on a namespace basis by including ${NAMESPACE} in `install_path_scheme`. e.g.,
```
cat ~/.spack/config.yaml
config:
install_path_scheme:
"${ARCHITECTURE}/${NAMESPACE}/${COMPILERNAME}-${COMPILERVER}/${PACKAGE}-${VERSION}-${HASH}"
```
The 'static_to_shared_library' function takes a compiler Executable,
which is intended to be invoked with a list of arguments; the
arguments must be separated from their values in the list, given
the way that 'Executable.__call__' invokes the underlying executable.
'static_to_shared_library' was not doing this, which this commit fixes.
* Provide a newer doxygen version.
+ Also provide a patch that allows collaboration diagrams to work properly with
C++ std::shared_ptr<T>. Ref:
6c380ba91a
Clang has support for using different fortran compilers with the Clang executable.
Spack includes logic to select a compiler wrapper symlink which refers to the fortran executable (since some build systems depend on the name of the compiler, e.g. 'gfortran' or 'flang').
This selection was previously based on the architecture, and chose incorrectly in some situations (e.g. for clang/gfortran on Linux). This replaces architecture-based wrapper selection with a selection that is based on the name of the Fortran compiler executable.
* Add the setting of CBTF_MPI_IMPLEMENTATION to the cbtf-krell
and openspeeedshop package files, so that the mpi implementation
can be found by the tool. This allows users to not have to
set this manually if only one mpi implementation is specified
in the build.
* Update version ranges for dependencies of cbtf packages
* GCC: constrain version 6, 7, and 8 to build with ISL version at
most 0.18
* GCC version 9 (not yet released) will be compatible with
ISL version 0.20 so future GCC releases are constrained to build
with ISL version at most 0.20
* ISL: Add v0.15, replace all md5 sums with sha256 sums for ISL
versions
* GCC versions before 6 were constrained to build with ISL 0.14
but have been confirmed to work with ISL 0.15
* GCC: Place an upper bound on GCC's mpfr dependency
* packages/phist: add variant 'fortran' to enable/disable building the Fortran bindings
* xsdk: add phist
* packages/xsdk: add a comment reg. updating phist dependency
* packages/phist: +fortran variant is only for versions 1.7:
* packages/phist: update comments
* xsdk: forgot to specify kernel library for phist (picked tpetra, assuming trilinos+tpetra will be installed)
* packages/phist: add variant 'openmp' to allow disabling OpenMP
* phist: fix compile error due to missing -lm
* flake8: fix warnings
* packages/phist: fix cmake flag: XSDK_ENABLE_Fortran (rather than XSDK_BUILD_Fortran)
* packages/phist: allow disabling building the scamac matrix generator (which causes trouble on some systems)
* packages/xsdk: disable scamac within phist because it caused problems for @balay and is not essential for now
* packages/phist: actually disable scamac via cmake if ~scamac
* phist: disable openmp from xsdk
This commit overhauls the libMesh package script in a number of ways:
* We now inherit from AutotoolsPackage.
* libMesh contains about a dozen third-party dependencies that can
only be provided by the copy bundled with libMesh. This patch
enumerates all such bundled dependencies and disables all of them
by default.
* libMesh supports compilation with external installations of boost,
eigen, hdf5, slepc, and tbb; this patch adds all of them to
package.py.
* libMesh will look for a few system executables (xz, bzip, gdb) by
default. This is now disabled.
* libMesh will now used a copy of perl installed by spack instead of
trying to find the system copy.
* Compilation with non-system MPI installations requires an additional
flag (--with-mpi=); this has been added.
setup-env includes a call to 'ps' to determine what shell is being
used. 'ps' can be instructed to use a different default output format
via the 'PS_FORMAT' env variable. Thus unset this variable before
calling 'ps'.
* Unite Dockerfiles - add build/run/push scripts
* update docker documentation
* update .travis.yml
* switch to using a preprocessor on Dockerfiles
* skip building docker images on pull requests
* update files with copyright info
* tweak when travis builds for docker files are done
The install() function in the miniconda2 & 3 package.py files referenced
self.url, which is hard-coded to 4.3.11. That's not necessary the
version that the user requested, though. Changed the install() function
to reference self.stage.archive_file. Also added a version string for
4.5.11.
Move suite-sparse gcc version constraint from dealii to suite-sparse
package and update it (gcc 4.9 is required as of version 5.2.0 rather
than 5.1.0). The constraint is now expressed as a conflict rather
than a dependency.
W503 and W504 are issued for line breaks before or after binary
operators (respectively). This allows either approach (explicitly
instructing flake8 to ignore both of these cases).
fixes#9624
merge_config_rules was using `strict=False` to check if a spec
satisfies a constraint, which loosely translates to "this spec has
no conflict with the constraint, so I can potentially add it to the
spec". We want instead `strict=True` which means "the spec satisfies
the constraint right now".
* updated visit package
* make hdf5 and silo conflict with ~gui variant
* Changed parallel => mpi and quotes in description
* Corrected +mpi variant in VisIt package
The previous commit introduced a bug (+parallel variant wasn't renamed +mpi), and the +mpi variant wasn't True by default. This is corrected.
- #8773 made the default mode 0o777, which is what's documented but
mkdirp actually takes the OS default or umask by default
- revert to the Python default by default, and only set the mode when
asked explicitly.
arrow: add missing dependency for python build
The Parquet library moved into the Arrow organisation, hence add a
parquet flavor and adapt dependencies.
* flux: ensure git tags are always available
previous `--unshallow` would only run when `--depth 0` was used. If
1--single-branch` was used, then the `.git/shallow` file would not exist
and `--unshallow` would not work.
add v0.6.0 and update dependencies accordingly
update dependencies to match latest flux versions
adds support for python 3
increases precision of czmq version required for older flux versions
adds new lz4 dependency
* Add stat version 4.0.1
* stat 4.0.1: requires py-xdot
* stat versions at or above 4.0.0 dont require python 2 (it still
requires python but can build with 2 or 3)
* stat versions at or above 4.0.0 dont require py-pygtk and py-enum34
* Replace py-xdot version 0.9.1 with 1.0
* py-xdot: use lib directory vs. lib64 for atk dependency
#9100 added a warning message when a path extracted from a module file
did not appear to be a valid filesystem path. This check was applied
to a variable which could be a list of paths, which would erroneously
trigger the warning. This commit updates the check to run at the
actual point where the path has been extracted.
* Add version 18.9.0 (w/CMake)
* Add version dependent install methods to handle transition from
Make-based package (17.1) to CMake-based package, using the NEST
package as an example
* Remove unnecessary build_targets method for older Make-based
version
* Don't retrieve just the C/Fortran interfaces for netlib-lapack -
blas/lapack libs are now handled the same for all implementations
* Remove netlib-lapack detection patch
* add new version 3.1.0
* add conflict for parmetis without mpi
* strumpack >= 3.1.0 uses -DTPL_ENABLE_<package> instead of
-DSTRUMPACK_USE_<package>
* require cmake at least 3.2
* Add a build_language config.yaml option which controls the language
of compiler messages
* build_language defaults to "C", in which case the compiler messages
will be in English. This allows Spack log parsing to detect and
highlight error messages (since the regular expressions to find
error messages are in English)
* The user can use the default language in their environment by setting
the build_language config variable to null or ''
* Added support for the Aluminum library to LBANN and Hydrogen. Also
fixed several bugs in the grouping of dependencies of both packages.
* Updated the conduit package to have the proper dependency on the
python variant.
* Added new versions for NCCL
* Fixed a bug in how Hydrogen set the path for OpenBLAS.
* Added support for conduit in LBANN.
* vtk: add variants for Xdmf IO support, ffmpeg support, and MPI
* vtk: depends on boost when Xdmf support is enabled
* vtk: add backported patch for python3.7
* vtk: New policy only for cmake >= 3.12
* mesa: add py-argparse dependency (for build)
* lz4: use MOREFLAGS instead of LIBS to add -lrt
scalasca actually requires cubew, not the full cube bundle. However,
cubew@4.4 causes the build of previous versions to fail because there is
no cube-config script anymore.
- `spack license list-files`: list all files that should have license headers
- `spack license list-lgpl`: list files still under LGPL-2.1
- `spack license verify`: check that license headers are correct
- Added `spack license verify` to style tests
- remove the old LGPL license headers from all files in Spack
- add SPDX headers to all files
- core and most packages are (Apache-2.0 OR MIT)
- a very small number of remaining packages are LGPL-2.1-only
- This is bundled into one commit to make it easy to revert if we do get
consent from peetsv's company to relicense these contributions.
- Revert "dialign-tx adding patch for gcc@5.4.0 (#6413)"
- This reverts commit 09eeb991a2.
- Remove the following LGPL-2.1 packages because we have not gotten
consent to relicense them:
- fast-gbs
- igv
- metasv
- perl-xml-libxml
- py-cnvkit
- py-crossmap
- py-pybedtools
- py-pyfaidx
- py-pyvcf
- py-vmd-python
- r-cghflasso
- r-dismo
- r-proc
- r-spatial
- r-utf8
* omega-h: fix dependencies
1. Remove Gmodel altogether. Omega_h doesn't
actually call Gmodel for anything, it was
more or less just doing additional unit
testing for Gmodel
2. Make Trilinos off by default. Most codes do
not need the ParameterList interface, and
Kokkos through Trilinos is not well explored
in Spack
3. Use modern CMake style to choose the zlib
dependency
compilers.yaml can track a module that is needed for a compiler, but
Spack does not fill this in automatically. This adds a note to the
documentation informing the user how to do this.
getopts.pl is not listed as a Spack dependency of sspace-standard,
so without this change, this package was only working on systems
where getopts.pl was already installed.
If we do not specify libdir explicitly, Meson chooses something like
lib/x86_64-linux-gnu, which causes problems when trying to find libraries
and pkg-config files.
* Added conflict in Trilinos for STK when building as shared on Darwin.
* Created shared variant for Nalu and Nalu-Wind to automatically build
Trilinos as static library on Darwin.
* Moved ECP tags from Nalu to Nalu-Wind (the latter is the official
ECP application).
* Remove py-setuptools dependency from py-spyder (fixes#9205)
* Add constraint on transitive qt dependency to build with webkit
extension (required for this package)
* Update pycodestyle dependency constraints
* reordered dependencies (py-zmq, py-chardet) to confirm to the
ordering in setup.py
Spack packages installed using spack buildcache were not running
post-install hooks, which create module files and manage licenses
(if necessary).
This was already occurring for Spack packages installed with
spack install --use-cache
Spack can now be configured to assign permissions to the files installed by a package.
In the `packages.yaml` file under `permissions`, the attributes `read`, `write`, and `group` control the package permissions. These attributes can be set per-package, or for all packages under `all`. If permissions are set under `all` and for a specific package, the package-specific settings take precedence. The `read` and `write` attributes take one of `user`, `group`, and `world`.
packages:
all:
permissions:
write: group
group: spack
my_app:
permissions:
read: group
group: my_team
* superlu-dist: Update package.py for superlu-dist v6.0.0 using CMake
* superlu_dist: Update the header of package.py
* Specify lapack_blas and DCMAKE_INSTALL_LIBDIR
disable support for superlu-dist before v5
current stable releases of PETSc and Trilinos have non-overlapping
requirements on Superlu-dist. For now turn it off by default in
Trilinos, which requires older versions.
* Better default CLI arguments for CDash reporting
--log-format=cdash is now implied if you specify the --cdash-upload-url
option to spack install.
We also now default to writing CTest XML files to cdash_report/ when using
the CDash reporter if no --log-file argument was specified.
* Improved documentation on how to use the CDash reporter
* bison: Add missing build dependencies
bison also depends on cmp, which is currently not available in Spack.
* help2man: Add missing build dependency
* m4: Fix build with newer versions of glibc
* openssl: Add missing build dependency
openssl's configure script is actually a Perl script.
* texinfo: Add missing perl dependency
* diffutils: New package
* findutils: Fix build with newer versions of glibc
* mvapich2, mpich: Add missing findutils dependency
* Add option to disable threads for Geant4
* Add option to enable DagMC in MOAB
* Explicitly add OFF flag when threading is disabled
* Fix unintentional enabling of C++14 in Geant4
The following always evaluated to True:
'c++14' or 'c++1y' in spec:
* Push default flag handlers into module scope
* Preserve backwards compatibility of builtin flag handler names
Ensure Spack continues to work for packages using the `Package.env_flags` idiom and equivalent.
* update docs and tests to match
* Update packages to match new syntax
* xerces-c: Add variant for choice of transcoder (gnuiconv, iconv, icu,
macos, windows). It's important to specify a --enable-transcoder
option on the configure line or else xerces may make a different
choice when multiple transcoders are available.
* Pass the compile flags to configure. For cflags and cxxflags, this is
necessary to respect the value from the spack install line.
Otherwise, xerces (and any autotools package) will choose a default
value that overrides the spack compiler wrapper.
* Add xerces version 3.2.2.
* icu4c needs the --enable-rpath configure option on Darwin
* New package: tldd
* https://gitlab.com/miscripts/tldd
* Improvements
* make it prefetchable by specifying a hash based version
* specify the constraints on pstreams versions (from INSTALL)
* Improvements
* Make it a Makefile Package and only overwrite the install_targets
* Remove the URL as there's really no downloadable 'tar ball' version
* Initial commit for new package STRUMPACK, a linear solver library.
* Update to STRUMPACK version 3.0.3.
This adds a check for OpenMP task priority support (since OpenMP 4.5)
* treesub: new package starting at 0.2
* treesub: fix ant build, add exec script
* treesub: use portable octal format
* treesub: add license header
not sure how it even went missing.
The build process of Catalyst requires Python at build time (see line 86) even when the +python variant is not selected.
When the +python variant is selected, Python becomes required at build, link, and run time. There doesn't seem to be any restriction on the version of Python required when +python is not selected.
* Fix: bug in VTK package
Fix for issue 9423 (https://github.com/spack/spack/issues/9423): compilers other than clang don't have the `is_apple` property.
* VTK package: removing trailing whitespace
So flake8 stops complaining.
* Release 2.0 of the ECP Proxy Apps suite
* update laghos version
* make install dir structure consistent across all ecp-proxy-apps
* minor
* update macsio version
* patching p4est to select the proper openmp lib
* For when compiler.openmp_flag isn't supported
* authored by @nrichart, I only tested it
* Adding openmp variant
Signed-off-by: Ricardo Silva <ricardo.silva@epfl.ch>
Fix two bugs with module file parsing:
* Detection of the CRAY_LD_LIBRARY_PATH variable was broken by #9100.
This fixes it and adds a test for it.
* For module names like "foo-bar/1.0", the associated PACKAGE_DIR
environment variable name would be "FOO_BAR_DIR", but Spack was not
parsing the components and not converting "-" to "_"
Building bazel yielded errors since commit cd9691d. The first commit
fixes the build for older bazel versions, the second commit adds new
versions and ports the patches to these versions.
Fixes#9166
This is intended to reduce errors related to lock timeouts by making
the following changes:
* Improves error reporting when acquiring a lock fails (addressing
#9166) - there is no longer an attempt to release the lock if an
acquire fails
* By default locks taken on individual packages no longer have a
timeout. This allows multiple spack instances to install overlapping
dependency DAGs. For debugging purposes, a timeout can be added by
setting 'package_lock_timeout' in config.yaml
* Reduces the polling frequency when trying to acquire a lock, to
reduce impact in the case where NFS is overtaxed. A simple
adaptive strategy is implemented, which starts with a polling
interval of .1 seconds and quickly increases to .5 seconds
(originally it would poll up to 10^5 times per second).
A test is added to check the polling interval generation logic.
* The timeout for Spack's whole-database lock (e.g. for managing
information about installed packages) is increased from 60s to
120s
* Users can configure the whole-database lock timeout using the
'db_lock_timout' setting in config.yaml
Generally, Spack locks (those created using spack.llnl.util.lock.Lock)
now have no timeout by default
This does not address implementations of NFS that do not support file
locking, or detect cases where services that may be required
(nfslock/statd) aren't running.
Users may want to be able to more-aggressively release locks when
they know they are the only one using their Spack instance, and they
encounter lock errors after a crash (e.g. a remote terminal disconnect
mentioned in #8915).
* petsc: add new versions 3.9.4 and 3.10.0
* petsc:update superlu_dist dependency for version 3.10 [might have to change this later for xsdk]
* slepc: add in new releases 3.9.2 and 3.10.0
- Many container builds are timing out frequently during Spack tests in
Travis CI.
- Travis recommends to try `sudo: required` to see whether this is an
infrastructure issue or something else.
- added `sudo: required` to all Linux builds.
- added --verbose to `spack test` invocation so that we can see more
easily what tests it's timing out on.
Signed-off-by: Todd Gamblin <tgamblin@llnl.gov>
* Catch2: 2.3.0+
Add the latest two releases of Catch2.
In 2.3.0+, the include changed to a future-proof
`<catch2/catch.hpp>` path which dependent projects will break upon.
* openPMD-api: Catch2 2.3.0+
openPMD-api just updated to use the new, future-proof Catch2
headers `<catch2/catch.hpp>`.
When a Spack Executable was configured to capture stderr and the
process failed, the error messages of the process were discarded.
This made it difficult to understand why the process failed. The
exception is now updated to include the stderr of the process when
the Executable captures stderr.
Adds 'code' to the list of suffixes that are excluded from version
parsing of URLs, such that if a URL contains the string
'cistem-1.0.0-beta-source-code', a version X will substitute in to
produce a URL with cistem-X-source-code ('source' was already excluded).
The 'cistem' package version is updated to make use of this (and fix
a fetching bug with the cistem package). A unit test is added to check
this parsing case.
Turns out that there was a configury problem in libhio
which caused issues building the package on non-cray
systems, aka when using mpicc and friends.
Signed-off-by: Howard Pritchard <hppritcha@gmail.com>
This commit adds a patch that prevents the package from hanging. The package would hang because CMakeLists would look for a system MPI. This patch changes the behavior.
* add version 1.3.0
* change build parameters, install process
* mxnet will not compile against spack's nnvm and dmlc so we must use
the distributions provided by the source package.
* also removed 'bin' installation as mxnet is just a shared library.
* improve BLAS linking
* remove unnecessary args
* added variant for python bindings
* r-nloptr: Explicit depends_on(nlopt). Previously there was a hidden dependency, masked by the package's configure script.
* r-nloptr: Change spelling of variables to satisfy pyflake8
* r-nloptr: Break a long line to satisfy pyflake8
* r-nloptr: larger indent on continuation, to satisfy pyflake8
* r-nloptr: another attempt at larger indent on continuation, to satisfy pyflake8
* r-nloptr: now a smaller indent on continuation, to satisfy pyflake8
* r-nloptr: Another attempt at right amount of indent.
* r-nloptr: Another attempt at right amount of indent.
* Use the correct attributes for finding the nlopt includes and libs.
* Lines too long, split into pieces
Improve Spack's parsing of module show to eliminate some false
positives (e.g. accepting MODULEPATH when it is in fact looking for
PATH). This makes the following changes:
* Updates the pattern searching for several paths to avoid the case
where they are prefixes of unwanted paths
* Adds a warning message when an extracted path doesn't exist (which
may help catch future module parsing bugs faster)
* Adds a test with the content mentioned in #9083
This patch does not apply cleanly anymore and breaks clang/Mac builds
balay@asterix /home/balay/git-repo/github/trilinos (develop=)
$ patch -Np1 < /home/balay/git-repo/github/spack/var/spack/repos/builtin/packages/trilinos/xlf_tpetra.patch
can't find file to patch at input line 3
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|--- a/packages/tpetra/core/src/Tpetra_Details_libGemm.cpp
|+++ b/packages/tpetra/core/src/Tpetra_Details_libGemm.cpp
--------------------------
File to patch:
* Added jdk version, added r-ks and r-multicool packages, made some r packages less conservative in their r version requirement
* flake8 fixes
* fix formatting in jdk version cmd
* Added type=('build', 'run') to some R package dependencies,
added some missing dependencies to r-ks. Thanks Adam.
* fix flake8 error
Due to an internal bug regarding the handling of scalars
(ndim must be 0) in numpy prior to 1.15.0, openPMD-api
will require the latest numpy 1.15+.
Since there is a small regression with datetime pickling in
1.15.0 from the required fix and spack only packages 1.15.1
currently, we depend on 1.15.1 in the recipe.
Spack originally handled environment modifications in the following
order:
1. clear environment variables
(unless Spack was invoked with --dirty)
2. apply spack-specific environment variable updates,
including variables set by Spack core like CC/PKG_CONFIG_PATH
and those set by installed dependencies (e.g. in
setup_dependent_environment)
3. load all external/compiler modules
1 and 2 were done together. This splits 1 into its own function and
imposes the following order for environment modifications:
1. clear environment variables
2. load all external/compiler modules
3. apply spack-specific environment variable updates
As a result, prepend-path actions taken by Spack (or installed Spack
dependencies) take precedence over prepend-path actions from compiler
and external modules. Additionally, when Spack (or a package
dependency) sets/unsets an environment variable, that will override
the actions of external/compiler modules.
* add 5 most recent versions and git master branch
* add trilinos, gmodel, throw, examples, optimize, symbols,
and warnings variants
* disable XSDK so that Trilinos dependencies are found.
* added py-pycogent
* flake8 edits
* added type=('build', 'run') to deps, changed py-matplotlib and mpi4py
* changed python min version to 2.6
* fixed cython to py-cython dep
* fixed mpi4py to py-mpi4py
* fixed py-sqlalchemy
* added 1.5.3 version
* fixed version 1.5.3 install
* changed deps names to reflect convention
* added variants
* changed download URL and added SHA256 hash
* fixed deps
* added github url for 1.5.3
* removed unneeded deps
* doesn't require py-setuptools
* fixed url and added py-setuptools specific to version 1.9
* fixed variant names and changed cython to normal dependency instead of variant
* removed cython dep, failed to build when it was present. Changed variant name 'mpi4py' to 'mpi' and changed sqlalchemy variant name to mpi
* fixed dependencies and added py-pymysql dep
* added setup-environment step
* changed download url for 1.5.3 to pypi
* fixed flake8 issue
* updated
* added changes
* Addition of latest maestrowf releases.
* Addition of filelock to dependencies.
* Addition of when clause to depends_on for filelock and tabulate.
* Correction of the tar url.
* Add 'extra_env' argument to Executable.__call__: this will be added
to the environment but does not affect whether the current
environment is reused. If 'env' is not set, then the current
environment is copied and the variables from 'extra_env' are added
to it.
* MakeExecutable can take a 'jobs_env' parameter that specifies the
name of an environment variable used to set the level of parallelism.
This is added to 'extra_env' (so does not affect whether the current
environment is reused).
* CMake-based Spack packages set 'jobs_env' when executing the 'test'
target for make and ninja (which does not use -j)
Update the version numbers and now depend on
the develop version of dyninst because of a
feature in openspeedshop depends on new code
in the dyninst develop tree. Without dyninst
develop, openspeedshop will not build.
* py-matplotlib: Add patch to fix FreeType library detection
Adds patch to add $CPATH to locations searched for FreeType header file
Patch has been upstreamed:
https://github.com/matplotlib/matplotlib/pull/11457
* py-matplotlib: Add patch to fix FreeType library detection
* Make patch only apply to versin 2.2.2 (as already upstreamed)
* Fix flake8 format issue
* py-matplotlib: add range to freetype patch
* py-matplotlib: whitespace
1. I presently get errors of the sort
==> Error: KeyError: 'No spec with name mpi in silo@4.10.2%gcc@8.1.0+fortran+mpi
[...]
$HOME/spack/var/spack/repos/builtin/packages/silo/package.py:84, in configure_args:
81 'FCFLAGS={0}'.format(self.compiler.pic_flag)]
82
83 if '+mpi' in self.spec:
>> 84 config_args.append('CC=%s' % self.spec['mpi'].mpicc)
85 config_args.append('CXX=%s' % self.spec['mpi'].mpicxx)
86 config_args.append('FC=%s' % self.spec['mpi'].mpifc)
without the extra explicit MPI dependency.
2. Silo uses zlib, so we should explicitly depend on it.
Added SUNDIALS 3.1.2 and 4.0.0-dev.1 versions and relevant dependencies
(3.1.2 requires CMake 2.8.12). Updated all versions to use sha256 hashes.
Addressed issue specific to clang compiler on macOS.
* Addition of py-filelock and first page of versions.
* Addition of setup.py patch for setuptools.
* flake8 failure fixes.
* Reduced url declaration to a single line.
* Correction to py-filelock to use distutils.
Consolidate prefix calculation logic for intel packages into the
IntelPackage class.
Add documentation on installing Intel packages with Spack an
(alternatively) adding them as external packages in Spack.
Add variant 'nls' for native language support with default True.
The default inside binutils was always on, but this gives a way of
turning it off, if desired.
Adjust the dependencies. Flex is never used for a one-time build.
Bison and m4 should not be needed, except that prior to rev 2.30, gold
did not include its generated files, so bison is needed when +gold.
Drop configure option --enable-interwork. This option does not exist.
This PR includes the following changes:
* Added JDK 10
* Changed the JDK version numbers according to the consensus reached
in #2284
* Added spec['java'].home and spec['java'].libs, similar to #3367
(JDK and IcedTea)
* Added a check to prevent people from installing JDK on macOS
* Set CLASSPATH for packages depending on Java (JDK and IcedTea)
* Add TODO for extending virtual packages (not currently possible)
* Add TODO for adding Java dependents to views
* Add TODO for packages which extend multiple packages (e.g. Java
and Python)
The functions returning the default scope to be modified or listed
have been moved from spack.cmd to spack.config.
Lmod now writes the guessed core compiler in the default modify scope
instead of the 'site' scope.
closes#8916
Currently Spack ends with an error if asked to write lmod modules files
and the 'core_compilers' entry is not found in `modules.yaml`. After
this PR an attempt will be made to guess that entry and the site
configuration file will be updated accordingly.
This is similar to what Spack already does to guess compilers on first
run.
The Trilinos/stk configuration is pretty Nalu specific right
now (and is acknowledged as such in a comment in package.py), and
this commit enables a module that Nalu will be needing.
* r-goseq: new package
* r-goseq: git not url
* r-goseq: adding packages needed at runtime
* r-goseq: package type
* r-goseq: dep types
* r-goseq: one more
- OpenFOAM-v1806/wmake/scripts/have_kahip must check
$KAHIP_ARCH_PATH instead of $METIS_ARCH_PATH to detect the KAHIB
library
- use a local patch file until the issue is hopefully fixed upstream
- Support for Python 3.3 isn't really needed, as nothing uses it as the
default system Python, and nearly everyone will have a newer Python 3
version installed.
* libquo: Packaging updates.
This commit accomplishes a few things:
* Changes distribution fetch source
* Removes a deprecated version (1.2.9)
* Changes dependencies based on version type
* Adds a custom autoreconf stage when using the 'develop' version,
omitting this step when building from a distribution
* Reintroduce v1.2.9.
leveldb headers are typically included via <leveldb/c.h>. The migration
to install_tree in 73c978ddd9 caused the
headers to end up in prefix.include, which breaks existing applications.
#8223 replaced regex-based makefile target parsing with an invocation of
"make -q". #8818 discovered that "make -q" can result in an error for some
packages.
Also, the "make -q" strategy relied on interpreting the error code, which only
worked for GNU Make and not BSD Make (which was deemed acceptable at
the time). As an added bonus, this implementation ignores the exit code and
instead parses STDERR for any indications that the target does not exist; this
works for both GNU Make and BSD Make.
#8223 also updated ninja target detection to use "ninja -t targets". This does
not change that behavior but makes it more-explicit with "ninja -t targets all"
This also adds tests for detection of "make" and "ninja" targets.
This replaces the single github issue-reporting template with templates for the
following types of issues:
* Build issues
* Spack command errors
* Feature request
Each template includes suggestions which are generally useful for the type of
issue encountered.
* QMCPACK now supports QE 6.3. Dropped QE 5.3 due to incompatibilities.
* QMCPACK general clean-up of depends_on.
* Add QMCPACK 3.5.0
* More robust support of MKL detection in QMCPACK.
Fixes#9001#8289 added support for install_tree and copy_tree to merge into an existing
directory structure. However, it did not properly handle relative symlinks and
also removed support for the 'ignore' keyword. Additionally, some of the tests
were overly-strict when checking the permissions on the copied files.
This updates the install_tree/copy_tree methods and their tests:
* copy_tree/install_tree now preserve relative link targets (if the symlink in the
source directory structure is relative, the symlink created in the destination
will be relative)
* Added support for 'ignore' argument back to copy_tree/install_tree (removed
in #8289). It is no longer the object output by shutil.ignore_patterns: you pass a
function that accepts a path relative to the source and returns whether that
path should be copied.
* The openfoam packages (currently the only ones making use of the 'ignore'
argument) are updated for the new API
* When a symlink target is absolute, copy_tree and install_tree now rewrite the
source prefix to be the destination prefix
* copy_tree tests no longer check permissions: copy_tree doesn't enforce
anything about permissions so its tests don't check for that
* install_tree tests no longer check for exact permission matching since it can add
file permissions
* libunwind: add version 1.3-rc1 and variant xz
Version 1.3-rc1 is the latest published snapshot from libunwind.
Variant xz adds spack-built support for reading compressed symbol
tables, or else disables this feature. Without the variant, libunwind
will look for liblzma in /usr/lib.
* Add preferred=True to version 1.2.1 as the last official stable
release.
* gperftools@2.7: new version
* gperftools: update homepage & url
The URL in the homepage field of the gperftools package redirects to
its GitHub repo, and the URL for version 2.3 returns a 404 error. This
commit updates both fields to the most recent sensible values.
* gperftools: update commit hashes to sha256
This commit deletes the url field for all listed versions because it
is no longer needed as a result of updating the package url field. In
addition, all commit hashes are updated to SHA256.
- `imp` is deprecated and seems to have started having some weird
issues on certain Linux versions.
- In particular, the file argument to `load_source` is ignored on
arch linux with Python 3.7.
- `imp` is the only way to do imports in 2.6, so we'll keep it around for
now and use it if importlib won't work.
- `importlib` is the new import system, and it allows us to get
lower-level access to the import implementation.
- This consolidates all import logic into `spack.util.imp`, and make it
use `importlib` if it's avialable.
Replace use of `shutil.copytree` with `copy_tree` and `install_tree` functions in `llnl.util.filesystem`.
- `copy_tree` copies without setting permissions. It should be used to copy files around in the build directory.
- `install_tree` copies files and sets permissions. It should be used to copy files into the installation directory.
- `install` and `copy` are analogous single-file functions.
- add more extensive tests for these functions
- update packages to use these functions.
* zoltan: fix building with Intel compilers
- building with the Intel compilers may require explicit linking
with the Intel Fortran library (libifcore)
* simplify code; get rid of format() for static strings
- dependency patching test didn't attempt to apply patches; just to see
whether they were on the spec.
- it applies the patch now and verifies that that patch was applied.
* r-genelendatabase: new package
* r-genelendatabase: git not url
* r-genelendatabase: add runtime deps and fix package type
* r-genelendatabase: dep type
* Add package for fasta
Add a package for the fasta sequence alignment tools.
The build system is novel (fasta is "venerable", so...). The source
tree includes nearly 50 variant Makefiles, the installer is expected
to pick one that's appropriate and then edit the "XDIR" variable to
specify the installation path. I can only test 64 bit darwin and
linux, so that's all I've included. I'm also assuming that every
64bit x86 system we'll see supports the SSE2 extensions. Other
situations can be dealt with when someone has a test case.
* Switch to MakefilePackage and clean up a bit
- Clean up the description
- Switch to MakefilePackage
- generalize the path to the chosen Makefile
- implement separate `edit`, `build`, and `install` phases.
* Fix call to format()
* Fix broken if logic
* packages/phist: new version 1.6.1
* packages/phist: depends on Python 3.x for generating Fortran and C++ bindings
* packages/phist: new version 1.7.2
* phist: depend on python@3 only for versions later than 1.7
* packages/phist: depend on python@3: rather than 3
* phist: python dependency is type='build', thans @adamjstewart
* Branch with the meson build-system
* Fix build_environment for dual loads and add create code
* Add documentation
* Fixed option list
* Update build_system_guess for meson
* Fixed documentation errors
* Added meson to build and configure and updated documentation
* fix typos
- cc cleanup caused a parsing regression in flag handling
- We added proper quoting to array expansions, but flag variables were
never actually converted to arrays. Old code relied on this.
This commit:
- Adds reads to convert flags to arrays.
- Makes the cc test check for improper space handling to prevent future
regressions.
* libiberty: new package
The libiberty.a library from GNU binutils. Libiberty provides
demangling and support functions for the GNU toolchain.
This package uses the binutils tarfile but only builds the libiberty
subdirectory. This is useful for other packages that want the
demangling functions without the rest of binutils.
Add variant 'fpic' to compile with -fPIC.
Addresses some issues raised in PR #8806.
* libiberty: change variant name to 'pic'.
Allow libiberty to install the library in lib64 and don't try to copy
it to lib.
* update of veloc & dep versions (replace old non-working versions)
* veloc doesn't work with gcc <= 4.9.3
* explicitly pass MPI to CMake for veloc build
- flags were prepended in reverse order to args, but this makes it hard
to see what order they'll be in on the final command line.
- add them in the order they'll appear to make cc easier to maintain.
- simplify code for assembling the command line
- fix separator used in SPACK_SYSTEM_DIRS test
- This corrects most of the issues found by shellcheck
- This also uses ':' as the delimiter for SPACK_SYSTEM_DIRS, for
consistency with other variables.
- filtering using sed causes most builds to slow down quite a bit, as the
compiler wrapper has to run sed many times, and *it* runs many times
- do the system directory parsing directly in bash
- Add tests to ensure that RPATHs are not added in cc mode, which can
cause some builds to fail.
- Change cc.py to use pytest style
- Instead of writing out all the flags, break the flags down into
variables so that it's easy to read what each test is supposed to
check. This should make cc.py more maintainable in the future.
- Adding -L and -Wl,-rpath to compile-only command lines ("cc mode" or
"-c") causes clang (if not also other compilers) to emit warnings that
confuse configure systems.
- Clang will print warnings about unused command-line arguments.
- This fix ensures that -L and -Wl,-rpath are not added if the compile
line is just building an object file with -c
- This also cleans up the cc script in several places.
Spack currently prepends include paths, library paths, and rpaths to the
compile line. This causes problems when a header or library in the package
has the same name as one exported by one of its dependencies. The
*dependency's* header will be preferred over the package's, which is not
what most builds expect. This also breaks some of our production codes.
This restores the original cc behavior (from *very* early Spack) of parsing
compiler arguments out by type (`-L`, `-I`, `-Wl,-rpath`) and reconstituting
the full command at the end.
`<includes> <other_args> <library dirs> <rpaths>`
This differs from the original behavior in one significant way, though: it
*appends* the library arguments so that dependency libraries do not shadow
those in the build.
This is safe because semantics aren't affected by *interleaving* `-I`, `-L`,
and `-Wl,-rpath` arguments with others, only with each other (so the order of
two `-L` args affects the search path, but we search for all libraries on the
command line using the same search path).
We preserve the following:
1. Any system directory in the paths will be listed last.
2. The root package's include/library/RPATH flags come before flags of the
same type for any dependency.
3. Order will be preserved within flags passed by the build (except system
paths, which are moved to be last)
4. Flags for dependencies will appear between the root flags and the system
flags, and the flags for any dependency will come before those for *its*
dependencies (this is for completeness -- we already guarantee this in
`build_environment.py`)
* elfutils: update version and add variants
Add latest version 0.173.
Add variants bzip2, xz and zlib to support reading compressed DWARF
sections, default True.
Move maintainer-mode to a variant with default False. This is only
useful for developers who want to modify the source for generated
files.
* Add dependency on zlib for reading compressed DWARF sections.
Add variants to use bzip2 and xz for compressed sections.
Remove maintainer mode and the dependencies on flex and bison.
These are not used for one-time builds.
Be sure to squash both the commits and the commit messages.
* Fix performance issue when compiling.
Spack was doing active wait when compiling, spoiling one core.
My fix consists in not setting any timeout for select, instead of
the previous 0 second.
* Fix comments about select.select timeout
This commit adds 'libunwind' as the default 'unwind' provider in
spack. This preference should be overridden by the
darwin/packages.yaml file on macOS. Continues the changes discussed in
This commit adds default unwind providers to the default packages.yaml
for darwin. Compiler versions are supplied with the apple-unwind
package so that apple-unwind is only used with Apple's clang fork, and
not with LLVM's clang.
This commit continues the changes discussed in #8823 by creating a new
"apple-libunwind" placeholder package that supplies instructions for
how to configure packages.yaml to register Apple's libunwind
implementation with spack. This package also provides the "unwind"
virtual package representing the libunwind base API. The clang-apple
compiler version should be specified in packages.yaml so that
apple-unwind is only used with Apple's clang compiler, not the stock
LLVM compiler.
This commit begins addressing the ideas discussed in #8823. The
libunwind library now provides the "unwind" virtual package, which
represents the "libunwind base API" common to LLVM libunwind, Apple's
LLVM libunwind, and non-GNU libunwind.
* Switch to perf_event backend to allow user installations but with limited features.
* Fix flake8 issues
* Fix flake8 issues remove filter for INSTALL_CHOWN
* Incorporate the comments
* Add unzip to lua-luaposix
I ended up on an [Ubuntu] system that hadn't had unzip employed
and discovered lua-luaposix requires it (while buildig Lmod).
Closes#8533
* Move unzip prereq to lua, type=run
Rather than touching up each of the lua rocks (packages)
that need unzip, make it available as a run dependency in
lua.
Tested by building lmod on a minimal Ubuntu system.
Flang now uses its own version of llvm and clang (called flang-driver). This is
handled by adding flang-specific versions of the LLVM package and updates flang
to depend on those versions.
* libmonitor: update to version 2018.07.18 and add variant to configure
for hpctoolkit.
* Specify the @2013.02.18 version in cbtf-argonavis and cbtf-krell,
since this is no longer the default version. These are the only
other packages that use libmonitor.
* amg2013: fix homepage and url
* kripke: fix homepage and url
* lcals: fix homepage and url
* lulesh: fix homepage and move to git
* urls on single line
- This was a nasty workaround due to the way our compiler wrappers used
to work. We don't want to have to modify our elfutils installation to
install libdwarf.
- Since cd9691de5, we no longer need this because the package will always
come before dependencies in our include order.
Renames the flux package to flux-core and updates its dependencies, versions,
and variants. Adds a flux-sched package.
This also updates two flux-core dependencies: lua and czmq.
The mumps package was unable to build using the llvm clang compiler
suite, as it defaulted to using mpif90 for linking and mpif90 cannot
be used for linking shared library code. This PR modifies the MUMPS
package.py to allow it to use IBM XL Fortran for linking. It also
eliminates the need for the existing MUMPS IBM XL patches by having
package.py specify the compiler-dependent "shared" flag to the
linker, and always using the compiler suite's Fortran compiler
for linking.
Several packages specified pkg-config as a dependency, which is
a specific implementation of the pkgconfig virtual. Most packages
do not request a specific implementation. The current concretizer
may choose a different implentation of pkgconfig for the nonspecific
dependents, which conflicts with the request for pkg-config. This
replaces all requests for a specific implementation of pkgconfig
with the virtual package as a temporary solution to the issue.
* Update and Bugfix for pexsi/package.py
1. pexsi@0.10.2 is not compatible with superlu-dist@5.4.0 due to [Change LargeDiag to LargeDiag_MC64; Add LargeDiag_AWPM](d7dce5a348).
2. In the 'edit' phase, '@MPICXX_LIB' must be substituted before '@MPICXX' is substituted.
* change dict to list of tuples
Use a list of tuples to remember the order of `substitutions`.
* Update package.py
* Update package.py
* netcdf-fortran: enforce autoreconf when building with NAG.
* netcdf-fortran: patch the configure script instead of running autoreconf to get rid of additional dependencies.
* netcdf-fortran: add comment for the patch.
Spack currently prepends include paths, library paths, and rpaths to the compile line. This causes problems when a header or library in the package has the same name as one exported by one of its dependencies. The *dependency's* header will be preferred over the package's, which is not what most builds expect. This also breaks some of our production codes.
This restores the original cc behavior (from *very* early Spack) of parsing compiler arguments out by type (`-L`, `-I`, `-Wl,-rpath`) and reconstituting the full command at the end.
`<includes> <other_args> <library dirs> <rpaths>`
This differs from the original behavior in one significant way, though: it *appends* the library arguments so that dependency libraries do not shadow those in the build.
This is safe because semantics aren't affected by *interleaving* `-I`, `-L`, and `-Wl,-rpath` arguments with others, only with each other (so the order fo two `-L` args affects the search path, but we search for all libraries on the command line using the same search path).
We preserve the following:
1. Any system directory in the paths will be listed last.
2. The root package's include/library/RPATH flags come before flags of the same type for any dependency.
3. Order will be preserved within flags passed by the build (except system paths, which are moved to be last)
4. Flags for dependencies will appear between the root flags and the system flags, and the flags for any dependency will come before those for *its* dependencies (this is for completeness -- we already guarantee this in `build_environment.py`)
If the OpenMPI build finds the infiniband drivers in /usr/lib64, it adds
-Wl,-rpath -Wl,/usr/lib64 to the OpenMPI wrappers. If the wrappers are using
a compiler outside of /usr, and the OpenMPI wrappers are used to build software
outside of Spack, they will rpath /usr/lib64 into the executable which then has
GLIBC, GLIBCXX runtime errors due to it picking up GCC libraries in /usr/lib64.
This adds the directories specified in "extra_rpaths" to the OpenMPI wrappers,
which allows them to use the correct compiler when invoked outside of Spack
builds.
- previously, output could be confusing when deptypes were only shown for
one dependent when a node had *multiple* dependents
- also fix default coverage of `Spec.tree()`: it previously defaulted to
cover only build and link dependencies, but this is a holdover from
when those were the only types.
* Updated llvm to version 6.0.1. The previous 6.0.0 had an incorrectly declared symbol, discussed at https://reviews.llvm.org/D44140, which, amongst other things, broke py-numba. This version works fine with py-numba.
* Flag the conflict between py-numba and llvm@6.0.0
* Removed a single trailing space to satisfy checks
* First draft of a templight recipe
* Let's be explicit for now, we can be clever later on
* The clang6 version does not work, drop it
* Reorder FIXMEs more logically
* Add patch for current templight develop branch
* Create an artificial stable release of templight
* Take some additional inspiration from llvm package
* Added the templight supporting tools
* Remove old notes from the no-url branch
* Avoid unnecessary join_path
* intel-tbb: Add variant `tm` to disable transactional memory.
Some AMD or very old Intel systems don't support transactional memory. This commit adds a variant `tm` that defaults to `True`, but can be switched off to allow running on those systems.
- Previously, Spack didn't check the arguments you put in version()
directives.
- So, you could do something like this, where there are arguments for a
URL fetcher AND for a git fetcher:
version('1.0', md5='abc123', git='https://foo.bar', commit='feda2343')
- Now, we check the arguments before constructing a fetcher, to ensure
that each package has *only* arguments for a single type of fetcher.
- Also added `test_package_version_consistency()` to the `package_sanity`
test, so that all builtin packages are required to have valid
`version()` directives.
- packagers can specify two top-level fetch URLs if one is `url`
- e.g., `url` and `git` or `url` and `svn`
- allow only one VCS fetcher so we can differentiate between URL and VCS.
- also clean up fetcher logic and class structure
- Packages can remove the top-level `url` attribute and still work
- These are now legal:
- Packages with *only* version-specific URLs (even with gaps)
- Packages with a top-level git/hg/svn attribute and `version`
directives for that.
- If a package has both a top-level hg/git/svn attribute AND a top-level
url attribute, the url attribute takes precedence.
Some packages do not have a `url` and are instead downloaded via `git`,
`hg`, or `svn`. Some packages like `spectrum-mpi` cannot be downloaded at
all, and are placeholder packages for system installations. Previously,
`__init__()` in `PackageBase` crashed if a package did not have a `url`
attribute defined.
I hacked this section of code out, but I have no idea what the
repercussions of that are.
- This hard-codes the hash lengths rather than computing them on import.
- Also cleans up the code in `spack.util.crypto` to make it easier to
understand.
Fix this output error:
```
$ spack -m module loads mpileaks
==> Error: `spack module loads -m t -m c -m l ...` has been moved. Try this instead:
$ spack module t loads mpileaks
$ spack module c loads mpileaks
$ spack module l loads mpileaks
```
In case a deprecated form of the module command is used, the program
will exit non-zero and print an informative error message suggesting
which command should be used instead.
As requested in the review all the commands meant to manage module
files have been grouped under the `spack module` command.
Unit tests have been refactored to match the new command structure.
fixes#2215fixes#2570fixes#6676fixes#7281closes#3827
This PR reverts the use of `spack module loads` in favor of
`spack module find` when loading module files via Spack. After this PR
`spack load` will accept a single spec at a time, and will be able
to interpret correctly the `--dependencies` option.
fixes#4400
The feature requested in #4400 was already part of the module file
configuration, but it was neither tested nor documented. This
commit takes care of adding a few lines in the documentation and a
regression test.
This just because the fixture has been moved one level above the one
it was originally defined. In this more general context there's more
than one configuration file that could be patched for tests.
'spack module' has been split into multiple commands, each one tied to a
specific module type. This permits the specialization of the new
commands with features that are module type specific (e.g. set the
default module file in lmod when multiple versions of the same package
are installed at the same time).
- repo membership test was broken by the refactor of spack/__init__.py
- refactor singleton so that 'spec in repo' works again for `spack.repo.path`
- fix spec command and add basic tests for `spack spec` and `spack spec --yaml`
* Test Spack on Python 3.7 as part of Travis CI
* Currently using xenial to pull-in python 3.7
* As xenial is not officially supported yet, Travis tolerates failures on it.
- There was a lot of documentation in `PackageBase` dating back to the
very first versions of Spack.
- It was repetitive and out of date, and the docs at spack.readthedocs.io
are better.
- Remove the outdated specifics, and leave the minimal useful set of
developer docs in `package.py`.
- This changes `get_checksums_for_versions` to generate code that uses an
explicit `sha256` argument instead if the bare `md5` hash we used to
generate.
- also use a generic digest parameter for the `version` directive, rather
than a specific `md5` parameter.
- Frequently, the documentation build will fail mysteriously in some
spack command.
- The cause is some new bug introduced by the PR, but this is not
apparent because the unit tests haven't run and the doc tests aren't
targeted at code bugs.
- Users end up puzzled by doc failures when they're really code failures.
- Move the doc tests parallel with the code tests, so that we can more
easily see bugs like this.
* fix to build libmatheval with guile@2.0:
* fixed formatting issues
* fixed formatting issues2
* fixed check for autoreconf and renaming of configure.in
* fixed force_autoreconf
* now patching configure, which is hopefully more robust
* minimal patches for guile 2.0 and 2.2 (disabeling unit testing for libmatheval)
* minimal patches for guile 2.0 and 2.2 (disabeling unit testing for libmatheval)
* add mofem-cephas package
* add mofem fracture module
* add user modules build and fracture modyle
* add minimal surface module
* add slepc variant
* bump mofem core lib version
* bump mofem core lib version
* bump version
* fix bug
* set upper bound to petsc version and other chanes
* fix indentation
* add minimal med file installation
* chcekc with flake8 and installation with spack packages
* add variants to med package
* upper bound to adol-c and remove obsolete internal package install
* fix basic module install
* module install from external source in extended prefix
* remove obsolte code and reverse to variant doxygen
* fix git adress
* improve packaging for mofem users modules
* fix flake8
* move dependencies after variants
* move root_cmakelists_dir right before cmake_args
* remove unused variants
* use append for single element
* replace root_cmakelists_dir
* use install_tree instead copy tree
* simplify code
* remove phase and mkdirp
* add run tests
* instal ext modules to ext_users_modules directory
* move version below url
* simplify directory name
* use underscore in variant name
* remove unused variable
* fix link to blas libs
* add missing boost dependence
* fix problem with copying module source code
* change variant name form doxygen to docs
* add expanded description
* make installation consistent with spack
* fix flake8
* make extensions installed
* code comments and minor corrections
* make slepc variant false by default
- Add command-line scope option to Spack
- Rework structure of main to allow configuration system to raise
errors more naturally
Co-authored-by: Todd Gamblin <tgamblin@llnl.gov>
- Fixes a bug in `llnl.util.lock`
- Locks in the current directory would fail because the parent directory
was the empty string.
- Fix this and return '.' for the parent of locks in the current
directory.
* New package: Verrou, a floating point error checker
* Clean up usage of patch
* Account for future patches in version ranges
* Manual call to autogen is not needed anymore, but extra dependencies are needed
* Use trick from automake to evade shebang length limit
* Use a glob instead of an explicit file list
* Turns out conflict() does not do what I want...
* Suggestions from @citibeth reviews
- Use 'develop' convention for the master branch
- Prefer tarballs over git repositories
- Increase robustness against default configuration
* Drop a couple of older releases with a different patching procedure
* Playing coding style golf
* Various bug squashing
- Missed master -> develop substitution
- Turns out manually calling autogen.sh is needed after all
- Missed + in spec
* More style golfing to fit in 80 columns
* Remove unnecessary mention of the develop branch
Enforce PEP8 naming conventions for things like variables, methods,
classes, etc.
See the table here:
https://pypi.org/project/pep8-naming/
...for error codes emitted, in case some should be added as
exceptions in the flake8 configuration files.
* py-pytest: Added dependency on py-setuptools-scm, as well as py-setuptools, to prevent the build from silently installing its own copy of setuptools-scm
* py-pytest: Dependency on setuptools-scm only needs to be 'build'
Replace regex-based target detection for Makefiles with a preliminary "make -q"
to check if a target exists. This does not work for NetBSD make; additional work
is required to detect if NetBSD make is present and to use a regex in that case.
The affected makefile target checks are only performed when the "--test" flag is
added to a "spack install" invocation.
* The xlf_seacas.patch fails on the latest trilinos develop branch so confine it up to version 12.12.1.
* Fixing likely mistak in seacas patch version range.
Fixes#8036
Before this PR Package.installed was returning True if the spec prefix
existed, without checking the DB. This is wrong for external packages,
whose prefix exists before being registered into the DB. Now the property
checks for both the prefix and a DB entry.
Spack provides a number of classes based on commonly-used build systems
that users can extend when writing packages; the classes provide functionality
to perform the actions relevant to the build system (e.g. running "configure" for
an Autotools-based package). This adds documentation for classes supporting the
following build systems:
* Makefile
* Autotools
* CMake
* QMake
* SCons
* Waf
This includes build systems for managing extensions of the following packages:
* Perl
* Python
* R
* Octave
This also adds documentation on implementing packages that use a custom build
system (e.g. Perl/CMake).
Spack also provides extendable classes which aggregate functionality for related
sets of packages, e.g. those using CUDA. Documentation is added for
CudaPackage.
- The setup-env.sh script currently makes two calls to spack, but it
should only need to make one.
- Add a fast-path shell setup routine in `main.py` to allow the shell
setup to happen in a single, fast call that doesn't load more than it
needs to.
- This simplifies setup code, as it has to eval what Spack prints
- TODO: consider eventually making the whole setup script the output of a
spack command
* update help of `clean --all` to include `-p`
* remove old orphaned `.pyc` removal
* restrict removal or orphaned pyc files to `lib/spack` and `var/spack`
- Clean up error messages for when a lock can't be created, or when an
exclusive (write) lock can't be taken on a file.
- Add a number of subclasses of LockError to distinguish timeouts from
permission issues.
- Add an explicit check to prevent the user from taking a write lock on a
read-only file.
- We had a check for this for when we try to *upgrade* a lock on an RO
file, but not for an initial write lock attempt.
- Add more tests for different lock permission scenarios.
- write locks previously wrote information about the lock holder (host
and pid), and read locks woudl read this in.
- This is really only for debugging, so only enable it then
- add some tests that target debug info, and improve multiproc lock test
output
* initial version of the package pyTorch (#171)
* adding version 0.4
* flake8 correction
* reordering version, removing run dependecies
* Changing depends_on type to default
When a user specifies a URL for a specific version of a package, Spack originally
would use that URL for all newer versions of the package. This behavior has
proven to be generally more harmful than useful, so this PR removes the feature
such that a version-specific URL override affects only that version.
* Update kaldi
always use the --fst-version otherwise it does the wrong thing with
selecting the fst version.
also enable speex by default
* Give version a more meaningful name
* Update older version with a date string instead
* gtkorvo-atl: Updated to version 2.2
* gtkorvo-dill: Updated to version 2.4
* gtkorvo-enet: Updated to version 1.3.14
* libevpath: Updated to version 4.4.0
* libffs: Updated to version 1.5
* gtkorvo-atl: Bugfix: Fixed cmake args
* gtkorvo-enet: Switched order of versions to have the latest version on the top
* gtkorvo-atl: Cleaned up cmake_args. Added conditional self.run_tests
* gtkorvo-dill: Cleaned up cmake_args. Added conditional self.run_tests
* libffs: Correction in dependency versions. Cleaned up cmake_args. Added conditional self.run_tests
* libevpath: Correction in dependency versions. Cleaned up cmake_args. Added conditional self.run_tests
* gtkorvo-atl: Removed unused option from cmake args
If the user sets "ccache: true" in spack's config.yaml, Spack will use an available
ccache executable when compiling c/c++ code. This feature is disabled by default
(i.e. "ccache: false") and the documentation is updated with how to enable
ccache support
* Added support for uncrustify 0.67.
Since the build system changed for uncrustify at version 0.64,
I had to change the package from an AutotoolsPackage to a plain
Package and use @when annotations to build the packages differently.
* Removed blank line at end of file
* Added support for python2.6 in uncrustify configuration.
- Versions before 2.5.2 suffer from a serious security problem
(https://nvd.nist.gov/vuln/detail/CVE-2018-12021). Deleted all
versions prior to v2.5.2.
- Update homepage (looks like singularity's going Freemium).
- Use release tarball instead of automagically generated archive
tarball (digest values are more stable).
- No longer need autotools for released versions, just @devel.
- Install needs to be single-threaded, otherwise when installed as
root the various 'chmod' operations race against the copies.
preCICE (Precise Code Interaction Coupling Environment) is a
coupling library for partitioned multi-physics simulations.
Partitioned means that preCICE couples existing programs (solvers)
capable of simulating a subpart of the complete physics involved in
a simulation.
of-precice: new package
preCICE adapter for OpenFOAM
* First draft of amrvis package file.
* More additions to amrvis.
* Formatting.
* Forcing compiler environment variables to point to spack mpi compilers when using mpi.
* Disabling intel compiler for amrvis.
* Comments.
* Refining amrvis package file.
* Moving library and include locations variables to be inserted at the first lines of the makefile.
* Globbing amrvis binary instead of constructing its name.
* Making env variable setting consistent and fixing globbing of executable.
* Using iglob instead of glob.
* Turning MPI on by default for Amrvis.
* ENH: Building OpenFOAM sub-packages (issue #8579)
* Some support for packages building with OpenFOAM
- Adjust the wrappers calling the OpenFOAM Allwmake script. Have them
look for a Allwmake-spack file first, which is assumed to contain
special adjustments for compiling with spack.
This file could be delivered as part of a tarball (which is unlikely)
or generated on the fly by the spack sub-package as part of its
patch or configure stage.
CONFIG: change the default paraview variant for openfoam to be False
- the different combinations of paraview backends, off-screen etc
make it difficult to suggest that building with paraview as
a standard dependency makes much sense.
Additionally, building paraview with qt can become quite an issue.
So it makes much more sense to only enable that upon request.
ENH: add a +vtk variant.
- for VTK with off-screen rendering to be used by the runTimePostProcessing
function object, which is a fairly simple framework for generating images of
some OpenFOAM derived objects (eg, sampling planes).
SPACK spec problem:
- reflect the flex restriction impose by the scotch dependency within
the openfoam spec as well, as partial workaround for buggy or annoying
spec resolution.
OTHER:
- updated the backstop foamEtcFile file to include args handling
as per the OpenFOAM-v1806 updates.
* new version: OpenFOAM-v1806
- https://www.openfoam.com/releases/openfoam-v1806/
Functional updates:
- `python` now creates a copy of the `python` binaries when it is added
to a view
- Python extensions (packages which subclass `PythonPackage`) rewrite
their shebang lines to refer to python in the view
- Python packages in the same namespace will not generate conflicts if
both have `...lib/site-packages/namespace-example/__init__.py`
- These `__init__` files will also remain when removing any package in
the namespace until the last package in the namespace is removed
Generally (Updated 2/16):
- Any package can define `add_files_to_view` to customize how it is added
to a view (and at the moment custom definitions are included for
`python` and `PythonPackage`)
- Likewise any package can define `remove_files_from_view` to customize
which files are removed (e.g. you don't always want to remove the
namespace `__init__`)
- Any package can define `view_file_conflicts` to customize what it
considers a merge conflict
- Global activations are handled like views (where the view root is the
spec prefix of the extendee)
- Benefit: filesystem-management aspects of activating extensions are
now placed in views (e.g. now one can hardlink a global activation)
- Benefit: overriding `Package.activate` is more straightforward (see
`Python.activate`)
- Complication: extension packages which have special-purpose logic
*only* when activated outside of the extendee prefix must check for
this in their `add_files_to_view` method (see `PythonPackage`)
- `LinkTree` is refactored to have separate methods for copying a
directory structure and for copying files (since it was found that
generally packages may want to alter how files are copied but still
wanted to copy directories in the same way)
TODOs (updated 2/20):
- [x] additional testing (there is some unit testing added at this point
but more would be useful)
- [x] refactor or reorganize `LinkTree` methods: currently there is a
separate set of methods for replicating just the directory structure
without the files, and a set for replicating everything
- [x] Right now external views (i.e. those not used for global
activations) call `view.add_extension`, but global activations do not
to avoid some extra work that goes into maintaining external views. I'm
not sure if addressing that needs to be done here but I'd like to
clarify it in the comments (UPDATE: for now I have added a TODO and in
my opinion this can be merged now and the refactor handled later)
- [x] Several method descriptions (e.g. for `Package.activate`) are out
of date and reference a distinction between global activations and
views, they need to be updated
- [x] Update aspell package activations
* Add specific version to package verilator
Change-Id: If7645410ec192f92a5eed83ee9b317b569576b4a
* fix dependency types
Change-Id: Ib36c72257c1fa6678c8553225ca21a010d7ae6d1
- Spack was assuming that a group with gid == current uid would always exist.
- This was breaking the travis build for macos.
- also fix issue with the DB tarball test finding coverage filesx
* A new package: perl-compress-raw-zlib.
* A new package: perl-compress-raw-bzip2.
* A new perl package: perl-io-compress.
* flake8.
* Add zlib and bzip2 dependency.
* petsc: remove dependency on boost - its required only as a dependency on trilinos
Also set COPTFLAGS='' etc - this way CFLAGS is the primary way optimization flags are set by spack
* petsc: update pkgs with petsc~boost dependency
* fix flake8
* boost is optional for trilinos - so adjust petsc dependency on boost [via trilinos] accordingly
* do not add boost dependency on petsc [due to trilinos requirement]. Trilinos adds this dependency anyway.
plasma@develop has another flag 'DHAVE_MKL' that needs to be disabled [for non-mkl build]
add dependency on gcc-6.0
add in new dependency on readline
plasma: requires both LIBS in make.inc and command line?
If cmd line is missing -some internal values from plasma makefile gets used - causing link errors [on Mac]
tools/lua-5.3.4/src/Makefile: $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -lreadline"
if make.inc is missing - I get:
/usr/bin/ld: cannot find -lmkl_intel_lp64
/usr/bin/ld: cannot find -lmkl_sequential
/usr/bin/ld: cannot find -lmkl_core
collect2: error: ld returned 1 exit status
Also add a new dependency -ldl
m4 exited immediately (causing the nettle build to fail).
```
(alice)[11:09:46]spack>>/Users/hartzell/tmp/spack-mac/spack/opt/spack/darwin-highsierra-x86_64/clang-9.1.0-apple/m4-1.4.18-caxsf7l5yd7qbq2bown6bzi5el3ltfwf/bin/m4
Abort trap: 6
(alice)[11:10:18]spack>>fg
```
Tracked down a fix via the Homebrew recipe. I'll send a note to the
`bug-m4@gnu.org` list to ensure that upstream knows about it.
* Fix gcc@5.5.0 on OS X 10.13.5
gcc@5.5.0 failed to build on my OS X 10.13.5 box.
I found/modified a patch in the MacPorts world that traced back to
Homebrewy, https://trac.macports.org/ticket/56502#no1
The issue has also been reported to gcc,
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83531
I eventually discovered a nearly identical version of the patch at
Homebrew.
https://github.com/Homebrew/formula-patches/blob/master/gcc%405/10.13_headers.patch
gcc builds with this and I can compile many things, but e.g. curl and
cmake both fail. As @davydden and others observed in #1847, it seems
to be an apple thing.
* Fix mistaken change to patch when clause (added :)
I mistakenly deleted a colon from the
'darwin/gcc-7.1.0-headerpad.patch'.
cd /tmp/balay/spack-stage/spack-stage-joxtpr/omega_h-9.13.4/spack-build/src && /home/balay/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/openmpi-3.1.0-7ws4tgx4z3o
ru5g5skjrxs5sobpeiyef/bin/mpic++ -Domega_h_EXPORTS -I/home/balay/spack/var/spack/stage/omega-h-9.13.4-th4b67fz5es6cbgcar742jxamjt3tqjb/omega_h-9.13.4/src -I/tmp/bala
y/spack-stage/spack-stage-joxtpr/omega_h-9.13.4/spack-build/src -I/home/balay/spack/var/spack/stage/omega-h-9.13.4-th4b67fz5es6cbgcar742jxamjt3tqjb/omega_h-9.13.4/tpl
-I/home/balay/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/zlib-1.2.11-5nus6knzumx4ik2yl44jxtgtsl7d54xb/include -O2 -g -DNDEBUG -fPIC -o CMakeFiles/omega_h.di
r/Omega_h_map.cpp.o -c /home/balay/spack/var/spack/stage/omega-h-9.13.4-th4b67fz5es6cbgcar742jxamjt3tqjb/omega_h-9.13.4/src/Omega_h_map.cpp
In file included from /usr/include/c++/5/chrono:35:0,
from /home/balay/spack/var/spack/stage/omega-h-9.13.4-th4b67fz5es6cbgcar742jxamjt3tqjb/omega_h-9.13.4/src/Omega_h_timer.hpp:4,
from /home/balay/spack/var/spack/stage/omega-h-9.13.4-th4b67fz5es6cbgcar742jxamjt3tqjb/omega_h-9.13.4/src/Omega_h_timer.cpp:1:
/usr/include/c++/5/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
#error This file requires compiler and library support \
^
* Added minuit package
* Removed default method and template
* Different URLs for old versions
* Patches for versions down to 1.5.0
* Reverted ROOT package changes
* Removed print statement
* Added checksums for older versions
* Consistent version names
- pytest was not reporing the correct version from pytest.__version__.
It reported 'unknown'
- this fixes issues on some systems where system-installed pytest plugins
would try to use the version and convert it to an int
* SAMRAI: remove dependency on boost for samrai 3.12.0 or later versions, but keep the older versions ccontinuing working with boost 1.64.0 or earlier. Also, the older versions cannot compile with boost 1.65.0 or above. (#8491)
* SAMRAI: fix typos of comments and remove obsolete code.
* Updating Nalu now that it can build with shared libraries and adding the new Nalu-Wind wind energy focused application.
* Explicitly turn off TPLs for Nalu when not enabled.
* Adding patch for OpenCV to fix a conflict between an OpenCV and a CUDA header file
* Added patch command to package.py file for OpenCV SPACK package.
* Adding version range for patch.
* shortening comment lines, since testsuite failed
* Add changes to the Krell packages with version updates and ranges for the latest release.
* Add reviewer requested changes. Remove preferred clauses and update the qt version for the cbtf-argonavis-gui@develop
* Trigger integration/test restart
* Add patching for xlf when %clang. Changes are effective only when Fortran compiler is 'XL'.
* Use the right version for trilinos when patching for seacas.
setting to use, instead of the spack compiler.
%clang can use multiple Fortran compilers with different options, so
we need to know what compiler is used in order to provide the correct
options.
* Add new version (3.4.0) with new variant (pumi).
* Fix an issue: skip the tests in examples/pumi as they require
files that are not included in the mfem distribution/repository.
* Use patches to fix the testing issues with PUMI and PETSc v3.9.
* Use the new bit.ly short link for v3.4.
* Add the ability to build the dyninst master branch under the develop version name. Fix elfutils and libdwarf to work with the various dyninst versions and vice-versa.
* Add reviewer suggested change to dyninst package file. Remove colon in spec.satisfies clause.
* Add reviewer suggested change to dyninst package file. Remove duplicate lines.
* Add reviewer suggested change to dyninst package file. Encompass all versions under 10.0 with respect to using libdwarf in the build.
Fixes the following problem:
==> Installing trilinos
==> Warning: Suspicious requests to set or unset 'LD_LIBRARY_PATH' found
==> Warning: env.unset('LD_LIBRARY_PATH') at /home/balay/spack.new/lib/spack/spack/build_environment.py:269
==> Warning: ---> env.set('%s' % key, value) at /home/balay/spack.new/lib/spack/spack/build_environment.py:292
==> Trying to clone git repository: https://github.com/trilinos/Trilinos.git at tag develop
Fetching tags only, you probably meant:
git fetch --tags
error: pathspec 'develop' did not match any file(s) known to git.
==> Fetching from [git] https://github.com/trilinos/Trilinos.git failed.
==> Error: FetchError: All fetchers failed for trilinos-develop-tgkpnctp6nn4imoizxlw4ymqyztcie4n
The patch to select ELPA API needs to be applied to
version 6.2.0 too.
The link line of hdf5 is computed incorrectly from
the configuration part of the build-system. To fix
this the relevant file (make.inc) is patched.
* py-pybind11: Additionally install python extensions e.g. run python setup
* py-projectq: Added new package for quantum computing
* py-projectq: corrected typos
* edited flake8 incompatibilities
* additional flake8 faults
* changes according to suggestions
* flake8 errors fixed
* typo and missing environment variable set
* py-pybind11:added setup_environemt
* py-projectq:changed version according to request
* flake8 correction
* py-pybind11:changed to setup_py and removed noop
* py-projectq:removed dependency and changed type of py-pytest dependency
* py-pybind11: flake8 error corrected
* py-projectq: Small error correction
* Git's gitk needs TK's wish to be found in PATH
* Add a _runtime_ dependency on `tk`
* Add an environment rule to add the path to TK's `wish` program to $PATH for
the generated `git` modulefile.
* Make TclTk run environment an optional variant for git.
* Cleanup based on PR recommendations.
The following improvements are made to cxx standard support
(e.g. compiler.cxxNN_flag functions) in compilers:
* Add cxx98_flag property
* Add support for throwing an exception when a flag is not supported (previously
if a flag was not supported the application was terminated with tty.die)
* The name of the flag associated with e.g. c++14 standard support changes for
different compiler versions (e.g. c++1y vs c++14). This makes a few corrections
on what flag to return for which version.
* Added tests to confirm that versions report expected flags for various c++
standards (or raise an exception for versions that don't provide a given cxx
standard)
Note that if a given cxx standard is the default, the associated flag property will
return ""; cxx98 is assumed to be the default standard so this is the behavior for
the associated property in the base compiler class.
Package changes:
* Improvements to the boost spec to take advantage of the improved standard
flag facility.
* Update the clingo spec to catch the new exception rather than look for an
empty flag to indicate non-support (which is not part of the compiler flag API)
The tcl package references the original sources upon install, and the tk build
requires the tcl sources. This updates the tcl package to install its sources following
the example of #4102, and also updates the tclConfig.sh file to properly reference
the installed sources (rather than the staging directory created by Spack).
* Update to 2018.3 and improve version URLs, dependencies and patching.
Improve to version -> URL translation to be algorithmic rather than manual.
Make binutils build dependency explicit where appropriate because we're sensitive to the assembler used.
Build's use of '-mrtm' is only patched away if it needs to be because the assembler is too old.
Incorporate @adamjstewart request to convert GCC version check to a conflict.
* Allow specification of C++ standard.
* Improve TBB patch per PR comments.
* Restrict RTM patch application to older OS only.
* New version 2018_U4.
* Delete support for old versions of Elemental in Hydrogen
* Fix cmake_args versions in lbann
* Remove unused import (again)
* Revert elemental to pre-llnl fork
* Strip tailing whitespace from libgfortran.so
* Fix flake8
* Remove debug print
* * Add back elemental@develop
* Prohibit installation of hydrogen previous to 0.99
* Fix flake8
* Change cmake_args error to a conflicts for old versions of Hydrogen
* Use ~ not -
* fermisciencetools: new package
* fermisciencetools: new package
* added comments about the error in building the source distribution; fixed flake8 errors
* add sqlitebrowser
Change-Id: I20cac709509e82d348cebc11b0d584b53b2ad3d4
* add message and clean up unnecessary code
Change-Id: Ib9d2229ee25d751274680d06824891ee78fa5970
* and make flake8 happy
Change-Id: I814eb89eefe1767af4d8043b08b61991750516df
* make gcc-independence great again
Change-Id: I75f7271757782a6735eb7f03c0551d190722974d
* remove explicit import of dso_suffix
Change-Id: I626c6391b22524895199db5508606c4cf22bf9b5
* add a shared variant for all supported versions
* address comment from @citibeth about MacOS lib installs
* address additional comments from @citibeth about MacOS lib installs
* set +shared variant to be default behavior
* add package py-cartopy
Change-Id: Ifbe541e852921c384a381594a2c1110814556311
* fix comments and flake8
Change-Id: I8d5e994580e8252e00654e68ad79d74e06089939
* remove pip dependency... not sure why added in the first place
Change-Id: Ie2a788887dac30778cc43931a0732980a347514d
* move build, link, run to default dependencies
Change-Id: I1ec0cb7dc4a697c4ca9e68a0cc0d8694cc21c100
Fixes#7885#7193 added the patches_to_apply function to collect patches which are then
applied in Package.do_patch. However this only collects patches that are
associated with the Package object and does not include Spec-related patches
(which are applied by dependents, added in #5476).
Spec.patches already collects patches from the package as well as those applied
by dependents, so the Package.patches_to_apply function isn't necessary. All
uses of Package.patches_to_apply are replaced with Package.spec.patches.
This also updates Package.content_hash to require the associated spec to be
concrete: Spec.patches is only set after concretization. Before this PR, it was
possible for Package.content_hash to be valid before concretizing the associated
Spec if all patches were associated with the Package (vs. being applied by
dependents). This behavior was unreliable though so the change is unlikely to
be disruptive.
Provides a patch for the fix in
https://github.com/ornladios/ADIOS/pull/182
Installed ADIOS MPI-enabled libraries are with that able to also
perform serial I/O without the need to start the whole app via
`mpiexec`.
* trilinos: add more package conflicts
This was done by putting in required lib dependencies from each
package's `cmake/Dependencies.cmake`.
* trilinos: added few more trilinos packages
* trilinos: hiccup fix
* add 1.4.13.4 for SZ
* undo spack link (change llnl/spack to spack/spack) and change .zip to .tar.gz
* revise package.py for SZ 1.4.13.4 based on Adam's comments.
Fixes#8345
Spack environment modifications are applied before modules are loaded; this
includes settings to CC, FC, F77, and CXX, which point to the Spack compiler
wrappers. If the loaded modules set CC, this overrides the Spack compiler
wrappers. This PR adds a context manager to preserve the values of CC etc. that
are set by Spack: any effects on the CC, FC, F77, and CXX variables from modules
are undone and their original values are restored.
* adding partially completed recipe for phast. will need clapack as dependency
* try to install phast
* seems to still need CLAPCK
* using CLAPACK instead
* phast: updated
* fixed flake8 error
* phast cannot build with clapack built with external blas?
* phast: depend on clapack built without external blas
* fixed flake8 errors
* phast: updated build_directory
* pybind11: test support
Add a test functionality to pybind11.
* CMake: test also on "make check"
Some projects use non-CTest manual targets for tests.
* Fix digest for abyss@1.5.2
The digest value for v1.5.2 appears to have changed. This value works
for me, today.
The existing value v2.0.2 works as is.
* Use "download" URL for ABYSS
Following the suggestion of the project team, switch to using the
release tarballs from the "download" URL instead of the automagically
generated ones at the "archive" URL.
Converstation here: https://github.com/bcgsc/abyss/issues/232
* extend Prefix class with join() member to support dynamic directories
* add more tests for Prefix.join()
* more tests for Prefix.join()
* add docstring
* add example to docstring of Prefix class
* cleanup Prefix.join() tests
* use Prefix.join() in Packaging Guide
The URL that we were using for pigz only provides the current
version. When the author released v2.4 the package became
uninstallable (unless you have the tarball cached).
It turns out that their are tarballs of the tagged source tree
available on GitHub and they're sufficient to build things (no
additional bits needed).
This commit switches the URL to the GitHub archive URL.
Sadly, this changes the v2.3.4 digest, but that version was no longer
available/install-able anyway, so "net-net we're still in positive
territory".
Installing the current version of Picard fails with:
```
==> Error: Unable to parse extension from https://github.com/broadinstitute/picard/releases/download/2.18.3/picard.jar.
If this URL is for a tarball but does not include the file extension
in the name, you can explicitly declare it with the following syntax:
version('1.2.3', 'hash', extension='tar.gz')
If this URL is for a download like a .jar or .whl that does not need
to be expanded, or an uncompressed installation script, you can tell
Spack not to expand it with the following syntax:
version('1.2.3', 'hash', expand=False)
```
Fix it, but adding `expand=False`, like the other versions.
Fixes#8217
Trying to relocate a distribution when the new and old paths are
equal leads to failure, because the test that ensures that no
unrelocated bits are left over always fails. As an example, this
occurs if a user installs a package, generates a binary with it
using 'spack buildcache', uninstalls it, and then attempts to
reinstall into the same spack installation using the generated
binary package.
This updates the relocation check to accept the presence of the
old prefix in binaries if the package is being reinstalled into
its original location.
* fix missing -lrt for Centos6, issue: #7552
* fix missing -lrt for Centos6, issue: #7552
* fix using make() as opposed to patching
* remove patch, as the fix is provided withing package.py instead
* make flake8 happy
* allow user to constrain dependencies that are added conditionally
* remove check for not-visited deps from normalize, move it to concretize. The check now runs after the concretization loop completes (so an error is only reported if the user-mentioned spec doesnt appear anywhere in the dag)
* remove separate full_spec_deps variable; rename spec_deps to all_spec_deps to clarify that it merges user-specified dependencies with derived dependencies
* add unit test to confirm new functionality
- `spack config blame` is similar to `spack config get`, but it prints
out the config file and line number that each line of the merged
configuration came from.
- This is a debugging tool for understanding where Spack config settings
come from.
- add tests for config blame
* Update package: add info for emacs@26.1
In addition to the digest, it needs gnutls (perhaps there's a way to
turn it off, but it seems like a Good Thing to encourage, so...).
* Clean up tls variant handling
- Don't to specify the dependency for @26.1:, just need to fix what's
already there.
- Don't assume that configure will DTRT w.r.t. gnutls when it's
discovered in the environmnet, use explicit configure switches.
- Clean up some unnecessary dependencies when +tls. Why would you
need libxpm when building +tls? Will ask the original author about
this.
* Use append when adding configure switches
* Add dependency on pcre
When one builds +X, Spack's pcre is pulled into the build via
the X dependencies. When one builds without it, the build discovers
and links against the system library.
We might as well just depend on it and have a consistent outcome.
The recipe previously did not include -DWITH_JASPER
Other edits:
* BUILD_IPP_IW is BUILD instead of WITH; it was in a different section of the CMakeLists.txt. Move it to the top
* Several options were missing :BOOL, add them
* -DWITH_ZLIB doesn't actually exist as an option, at least in the latest version.
* Added new package Camellia.
* Fixed an issue with a missing blank line.
Added a couple more Trilinos packages (things I expect to depend on eventually).
* Fixed a couple issues raised by @adamjstewart.
* Specified 4.9.2 as the supported MOAB version.
5.0.0 causes build issues on Macs during the link of Camellia's drivers. The issue is that we end up with -framework -lAccelerate in the link line, where it should read -framework Accelerate, I believe. I'm not sure where this comes from, but 4.9.2 does not have this issue.
* Trimmed slightly the Trilinos requirements.
Also deleted a blank line that had spaces in it because the Travis-CI thing didn't like that.
* Reduced length of MOAB description (Travis-CI complained).
* Reduced the MOAB line further; didn't quite get there last time!
This is to satisfy Travis-CI's requirement that the description be less than 80 characters long (E501).
* Put in my GitHub handle, in place of an allusion to my email address.
Also added a new argument for Camellia build, and made the MOAB description longer (thanks to @adamjstewart's note that long lines are allowed so long as they are not split).
* Added MPI dependency.
Added explicit OFF for MOAB enablement when ~moab.
Swapped order of variant and version.
* Add Tophat v2.1.2, fixes automake issues
The Tophat team merged the patch from
https://github.com/spack/spack/pull/8244 and release v2.1.2
This change requires the old automake if you're building the older
release and is relaxed about the automake it requires if you're
building the v2.1.2 release.
Building v2.1.1 and v2.1.2 works on a CentOS 7 system, I don't have
the necessary bit to actually test the resulting binaries.
Here's the commit note from the change that was ultimately merged
upstream.
Fixes#8025
> Tophat was failing to build with automake@1.16.1, it worked with the
> older automake@1.15.1. This commit adds a patch to Tophat's
> src/Makefile.am which cleans up a few things. The result builds
> successfully with both automake@1.15.1 and automake@1.16.1. I have no
> way to check that the resulting builds Do The Right Thing.
>
> It changes two things:
>
> the original Makefile.am had a rule for $(SAMPROG) with no
> actions, and since there was a directory there with a tempting name
> the newer automake was trying to do something with it, but lacked
> the appropriate clues. Since that target is actually made as a side
> effect of making the library (sigh...), it seems to work to just
> give that rule something harmless to do (the Peter Principle
> triumphs again...).
>
> a bunch of the targets need a libtophat.a and libgc.a; the older
> automake was probably able to guess what to do given the list of
> sources but the newer automake apparently won't make the necessary
> assumptions. This patch wires up a simple rule and cleans up the
> appropriate dependencies so that things work.
>
> While it may appear that I'm someone who understands automake, keep in
> mind that I only play such a person on a TV reality show. YMMV.
* Remove extraneous when constraint
Fixes: #8258#8090 altered import behavior so that import spack no longer
provides access to many other Spack modules. This addresses
a case which depended on the prior behavior and was not
updated as part of #8090. This particular import error only
came up when users were setting compiler flags on specs.
See also: #8194
* kokkos: update kokkos spackage to add current host/gpu architectures.
* kokkos: simplify host/gpu architecture selection and make intent of arg population logic more clear.
* kokkos: mollify flake8.
* Make strings and logic more pythonic. Add error for GPU arch without CUDA.
* kokkos: simplify conflicts behaviour. make args population more pythonic.
* kokkos: move gpu values to list for use in variant and conflicts checking.
* kokkos: How fortunate the man with None.
* kokkos: fix gpu_arch conflict loop error. add conflict to guard against +cuda and 2.5.00:develop versions, until kokkos issue #1296 is resolved.
* kokkos: mollify flake8.
* kokkos: add descriptive message to version conflict with +cuda.
* update globalarrays package to current releases
* rename class to Globalarrays to match package folder
* rename bytes to int64, minor cleanup of descriptions
* int64 False by default
* remove reference to external as we aren't supplying paths, and use args.append()
* correcting args.append syntax
* add conflicts
* Fix bug; don't know why this ever worked in the first place.
* Add fix to netcdf-fortran too; flake8
* Simplify configure_args()
* netcdf-fortran: simplify that too
- there were some leftover spack.* names being used after we removed
globals and moved everything in the top-level namespace to spack.pkgkit
- point those references to their new homes
- remove most `import spack` statements, except for files that need
`spack_version`
- import spack is no longer sufficient to use submodules
(e.g. spack.directives).
- these submodules must be imported directly. Update references
accordingly.
- Spack packages were originally expected to call `from spack import *`
themselves, but it has become difficult to manage imports in the
Spack core.
- the top-level namespace polluted by package symbols, and it's not
possible to avoid circular dependencies and unnecessary module loads in
the core, given all the stuff the packages need.
- This makes the top-level `spack` package essentially empty, save for a
version tuple and a version string, and `from spack import *` is now
essentially a no-op.
- The common routines and directives that packages need are now in
`spack.pkgkit`, and the import system forces packages to automatically
include this so that old packages that call `from spack import *`
will continue to work without modification.
- Since `from spack import *` is no longer required, we could consider
removing ``from spack import *`` from packages in the future and
shifting to ``from spack.pkgkit import *``, but we can wait a while to
do this.
* Use libs[0] and headers.directories[0] instead of hardcoded paths in opencv dependencies
* Fix library finding in libjpeg-turbo
* Use build_type=Debug instead of +debug to determine build_type
- spack.util.lock behaves the same as llnl.util.lock, but Lock._lock and
Lock._unlock do nothing.
- can be disabled with a control variable.
- configuration options can enable/disable locking:
- `locks` option in spack configuration controls whether Spack will use filesystem locks or not.
- `-l` and `-L` command-line options can force-disable or force-enable locking.
- Spack will check for group- and world-writability before disabling
locks, and it will not allow a group- or world-writable instance to
have locks disabled.
- update documentation
Spack doesn't have a CSharp package, so the only time ANTLR would
succeed is if a system-installed CSharp was available. This disables
CSharp support, which enables building on systems without
system-installed CSharp.
* PR #4945 did not make this work on SuSE 11. Adding the latest version of libexpat did. Also update for Expat's move to GitHub.
* Update package.py
* Update package.py
Move to url_for_version()
* Changed netlib-lapack to fix an error in their CMake setup. Changed
netlib-lapack spackage file to add Fortran flags correctly for XL
compiler.
* Fixed line length -- forgot abt flake8...
* Fix the package version where the ibm patch applies.
- Spack core has long used llnl.util.filesystem.join_path, but
os.path.join is pretty much the same thing, and is more efficient.
- Use os.path.join in the core Spack code from now on.
- simplify the singleton pattern across the codebase
- reduce lines of code needed for crufty initialization
- reduce functions that need to mess with a global
- Singletons whose semantics changed:
- spack.store.store() -> spack.store
- spack.repo.path() -> spack.repo.path
- spack.config.config() -> spack.config.config
- spack.caches.fetch_cache() -> spack.caches.fetch_cache
- spack.caches.misc_cache() -> spack.caches.misc_cache
- `spack.cmd.all_commands` does a directory listing on
`lib/spack/spack/cmd`, regardless of whether it is needed
- make this lazy so that the directory listing won't happen unless it's
necessary.
- It turns out that jsonschema is one of the more expensive imports.
- move imports of jsonschema into functions to avoid the performance hits
for calls that don't need config.
- spack.store was previously initialized at the spack.store module level,
but this means the store has to be initialized on every spack call.
- this moves the state in spack.store to a singleton so that the store is
only initialized when needed.
- spack.repository module is now spack.repo
- `spack.repo` is now `spack.repo.path()` and loaded lazily
- Added `spack.repo.get()` and `spack.repo.all_package_names()` as
convenience functions to simplify the new lazy interface.
- updated tests and code
- no longer require `spack_version` to be a Version (it isn't used that
way anyway)
- use a simple tuple `spack_version_info` with major, minor, patch
versions
- generate `spack_version` from the tuple
- replace `spack.config.get_configuration()` with `spack.config.config()`
- replace `get_config`/`update_config` with `get`, `set`
- add a path syntax that can be used to refer to specific config options
without firt getting the entire configuration dict
- update usages of `get_config` and `update_config` to use `get` and `set`
- Current configuration code forces the config system to be initialized
at module scope, so configs are parsed on every Spack run, essentially
before anything else.
- We need more control over configuration init order, so move the config
scopes into a class and reduce global state in config.py
Fixes#8152
Flex 2.6.4 doesn't build with gcc@7:. This sets Flex 2.6.3 as the
preferred version. The flex package had a conflict directive for
this but originally the recorded conflict was specific to ubuntu;
this appears to be an issue on multiple operating systems so this
also updates the conflict to be more general and adds a comment
which links to the relevant issues.
Fixes#7946
Creates an openspeedshop-utils package that does not depend on qt3
and can be used to resolve the needs of cbtf-argonavis-gui.
Changes for creating a release versus develop build are also
included. There are package versions which are no longer relevant
(e.g. 1.3.0 for cbtf-argonavis-gui has been replaced with 1.3.0.0)
but these versions need to be kept to allow uninstalling them;
issue #8173 has been created to investigate this.
- After spack install, these test cases are built in a seperate step, outside of spack, but they need to patched after staging so users don't have to do it in a seperate step.
- The test cases are installed under `<petsc install directory>/share/petsc/examples` and can be built and executed by invoking `gmake -f gmakefile.test` in that directory.
* Added Shim to Support hdf5+mpi in Spack Silo
Added compatibility for hdf5+mpi to silo spackage to support spackages
with dependency chains that include silo and hf5+mpi
* Fixed fixable flake8 issue with silo spackage
Fixed missing whitespace around operator
* Setting MPI Variant to Default to True
As per guidance changing variant to default to MPI builds
* Create custom PATH that texlive requires in its module.
* Updating texlive to 2018 distribution.
* Using platform instead of sys for easier portability across linux and osx.
* Add package for "bumpversion"
bumpversion is a tool that automagically increments version numbers
for projects. It can update files and do other magic along the way.
* Remove py- package prefix and use pypi.io URL
Renamed the package 'bumpversion'.
Fetch the package from pypi.io.
* Add version info for bumpverion@0.5.3
Fixes#8088#7012 added a @when condition for a @run_before check to constrain
that check to only run on Darwin. @when is intended to be used to
choose one of several different implementations of a given function
and cannot be used to conditionally deactivate a check altogether.
This replaces the external decorator with a check that executes at
the beginning of the function.
* dealii: disable tpetra when +cuda; check for '' in cuda_arch
* trilinos: fix Kokkos CUDA
* Revert "trilinos: fix Kokkos CUDA"
This reverts commit 6aae894bc7d49c9e736c06f65b81b8c219443920.
* update according to @aprokop comments
* minor
* fix flake8
For Spectrum MPI, if -np is omitted, the default behavior is to
assign one process per process slot, where the default process slot
allocation is one per core. On systems with many cores, the number
of processes can exceed the size of the grid specified when the
testcase is run and the test case fails. This specifies a small
number of processes when running the test case to prevent failure.
* llvm+lldb plaform=darwin: check for lldb_codesign
Building LLVM with LLDB requires that the "lldb_codesign" code
certificate be created (see
https://llvm.org/svn/llvm-project/lldb/trunk/docs/code-signing.txt for
details). This commit checks for this certificate on Darwin if LLDB is
to be built, and returns an informative error message if this
certificate is unavailable.
Add variants to control building of many 3rd-party modules in opencv.
They are enabled by default, which matches the defaults chosen by
opencv when these options are not set explicitly. This also updates
the lbann opencv dependency to disable most of these new variants by
default in order to build faster.
Fixes#2781
This PR introduces a new attribute for packages called
`archive_files`, which designates files that should be saved from
a package build (e.g. the config.log generated during autotools
builds).
The attribute contains a list of glob expressions; Any file that
matches will be archived in the `<prefix>/.spack/archived-files`
directory. Errors that occur when archiving files are collected and
reported in a file named `<prefix>/.spack/archived-files/errors.txt`.
`AutotoolsPackage` and `CMakePackage` provide a sensible default
override for this attribute.
- Adds v1.3.0 and v1.4.0
- List explicit CMake version dependency (from Benchmark CMake files)
- Disable the building of tests. Starting in v1.4.0 this introduced a dependency on GoogleTest
Tested by building all versions on macOS High Sierra
fixes#7941
Modified string representation of Specs to add a space before deps
Unit-tests have been modified accordingly
Added a test for regression on #7941
* New Package: svn2git
https://github.com/nirvdrum/svn2git
svn2git is a tiny utility for migrating projects from Subversion to Git while
keeping the trunk, branches and tags where they should be. It uses git-svn to
clone an svn repository and does some clean-up to make sure branches and tags
are imported in a meaningful way, and that the code checked into master ends up
being what's currently in your svn trunk rather than whichever svn branch your
last commit was in.
* Actually requires +perl variant of subversion.
* fix style issue.
* Added magma package
* Incorporated Serban's change
* Remove deleted files
* argparse.py
* Sync forked Spack repo in github
* Use reported version of IBM XL Fortran compiler for compiler versions
>= 16.0.
Starting with the April 2018 release, the IBM XL C and Fortran
compilers report the same version, 16.0. Consequently, there is
no need to downgrade the Fortran compiler version to match that
of the C compiler.
* Eliminate blank lines.
* Update the Spectrum MPI package.py file to specify the correct compilation
scripts for the PGI compilers.
Fixes#7924
Spack's yaml schema validator was initializing all instances of
unspecified properties with the same object, so that updating the
property for one entry was updating it for others (e.g. updating
versions for one package would update it for other packages).
This updates the schema validator to instantiate defaults with
separate object instances and adds a test to confirm this behavior
(and also confirms #7924 without this change).
* mvapich2: add registration cache and file systems variants, avoid empty --with-pm= if no process manager is specified, add missing leading dash in --disable-silent-rules
* mpifileutils: roll back to dtcmp v1.0.3 due to API change, add option to build master branch
* add comment to explain why certain dtcmp is required, rename version for git branch
* dtcmp v1.0.2 is missing github tarball
When building eospac with %clang, spack's Fortran compiler wrapper is called
'flang', which is rejected by the eospac build system..Allow compilation with
%clang by patching the eospac build system.
My testing only covers %clang where flang is actually gfortran. However, this
patch only registers 'flang' as a known Fortran compiler and does not set any
flags or options that are compiler specific.
.
Add configurable HTTP, Python and readline support.
Add previously missing dependencies.
Minor patch to improve Python support (see https://github.com/xrootd/xrootd/pull/695).
* Use reported version of IBM XL Fortran compiler for compiler versions >= 16.0.
Starting with the April 2018 release, the IBM XL C and Fortran compilers report the same version, 16.0. Consequently, there is no need to downgrade the Fortran compiler version to match that of the C compiler.
* Use GitLab's API endpoint for fetching a git snapshot.
* More GitLab packages use the API.
* find_list_url for GitLab's API URLs.
* Flake8
* Url for 'hacckernels'.
* Check GitLab API regexps before the non-API ones.
* Add Trinity package
New package to install Trinity - another odd installer (assumes installation to /usr/local/bin and doesn't copy dot files hence deleting them)
* Update package.py
added dependencies from https://github.com/trinityrnaseq/trinityrnaseq/wiki/Installing-Trinity
* Update package.py
Copy tree to prefix.bin so that PATH can correctly be set for the Trinity command - can't split it off as it seems everything needs to stay together.
* Update package.py
Fixed over-length lines and space before comma
This commit fixes#7900.
In short: in the absence of constraints to the contrary, spack will
download the preferred version of a package, which is usually the most
recent non-develop version. On a clean spack installation without
hypre installed, `spack install mfem` will download hypre 2.14.0,
which is API-incompatible with mfem 3.3.2 (and earlier versions of
mfem), so spack will throw compiler errors re: the API mismatch.
This commit fixes that error by restricting mfem release versions
3.3.2 and earlier to hypre version 2.10.b to 2.13.999 (only 2.13.0
currently exists, but if it has a non-2.14.x maintenance release,
these versions of hypre should also be permitted).
* automake: added version 1.16.1
* lmod: added version 7.7.29
* git: added version 2.17.0
* tmux: added version 2.7
* scala: added version 2.12.5, fixed typo in version 2.10.6
* Added spark@2.3.0, hadoop@3.1.0, jdk@8u172-b11
* picard: added version 2.18.3
* tar: added version 1.30
Added OpenMP variant for kokkos that can be disabled to build and test
on platforms where OpenMP is not available or desired. Also updated
version list
* Committer: sajid <sajid@xrmlite.phys.northwestern.edu>
modified: var/spack/repos/builtin/packages/py-numpy/package.py
* Corrected typo
* removing whitespace
* remove whitespace
* remove whitespace, if not will do this in vim
* fabtests: new package
* fabtests: fix hashes for github archive behavior & add libfabric dep
* fabtests: both versions confirmed working
* fabtests: use developer provided archive
* Fix build issue with PMIx on aarch64
Work around a bug in PMIx that causes build issues on aarch64. Bug was
fixed in PMIx 2.1.1, so the spack package checks both the architecture
and the PMIx version. Workaround is to just not build the PMIx test and
example code.
* Minor code cleanups
Minor corrections to make 'spack flake8' happy.
* Add support for version 2.1.1
* r-matr: Create new package.
* shocklibs: Create new package.
* r-biom-utils: Create new package.
* r-mgraster: Create new package
* py-poster: Create new package.
* py-requests-toolbelt: Create new package.
* perl-libwww-perl: Create new package.
* py-mg-rast-tools: Create new package.
* mg-rast-tools: Fix version constraints for dependencies.
* Change dependency type of py-setuptools.
* openPMD-api
Add a new package for openPMD-api.
openPMD is a meta-data standard (markup, schema) for hierarchical,
scientific particle and mesh based data.
openPMD-api is a library wrapping the underlying backends (HDF5,
ADIOS, ...) into a single, object-aware API.
* Repository: https://github.com/openPMD/openPMD-api
* Project: https://github.com/openPMDhttp://www.openPMD.org
* mpi variant forwarding: fix concretization
+ I am unable to build suite-sparse@5.2.0 with clang@6.0.0. The build fails
with the error:
```
2397 [ 99%] Linking C executable wildtype_demo
2398 make[4]: Leaving directory
`/tmp/kellyt/spack-stage/spack-stage-w0XYhK/SuiteSparse/GraphBLAS/build'
>> 2399 libgraphblas.so.2.0.1: undefined reference to `__fpclassify'
>> 2400 clang-6.0: error: linker command failed with exit code 1 (use -v to
see invocation)
>> 2401 make[4]: *** [wildtype_demo] Error 1
```
+ This error appears because libgraphblas.so requires `-lm`, but that link
dependency is not explicitly listed in GraphBLAS\CMakeLists.txt.
+ A patch file is provided to add this dependency. The patch is only applied
when the compiler is `%clang`.
* ADIOS 1.13.1
ADIOS 1.13.1 fixes several issues with zero-sized block
reading and writing when compression transports are used.
* SZ 1.4.12.3
Add the lastest SZ release used in ADIOS1.
* geopm: Added initial files for package geopm
and py-natsort dependency
* geopm: Updated variants for hwloc and mpi defaults
* geopm: Cleaned up unwanted hyphenation in description.
* geopm: updates according to change request.
* geopm: Updated minor change requests.
Clarification for ruby-ronn dependency included as a TODO.
This requires changes in the current configure and build process
which will be changed in a future version.
* geopm: changed to AutotoolsPackage and fixed hwloc
The changes for hwloc required to add a specific version bc of a
conflicting version of openmpi's hwloc dependency being below
1.99. This works but updates to this package should check if this
restriction is still required. (Thus TODO added)
* geopm: Added link dependencies (thanks for pointing this out).
Also removed empty line below class definition.
* geopm: Fixed depends_on according to package guide.
Removed wrong type 'run' and removed types for numactl, mpi and hwloc
to use default build & link type.
* geopm: Fixed and updated +doc dependencies
new pacakge ruby-ronn (package specified as in ruby-narray package)
Updated second +doc dependency doxygen.
* geopm: Changed args for Autotools specific feature.
Added enable_or_disable and with_or_without instead of if cascade.
Added overhead variant.
Also added missing dependency (default: build&link) for json-c).
* glvis@3.3: new package
* mesa-glu: now provides 'glu' (GL Utility library)
* openglu: add package, provides glu
* [GLVis] Use MakefilePackage as base. Add 'develop' version.
Small tweaks in the makefile arguments.
* [GLVis] Locate the X11, GL and GLU libraries within their respective
prefixes. Set the C compiler in the makefile arguments.
* [GLVis] Fix a bug: the same variable was used for two different things.
* [libx11] Add the libs property
* [OpenGL] Add the libs property
* [OpenGLU] Add the libs property
* [GLVis] Use the libs properties of libx11, opengl, and openglu
Activating a package that is already activated now sends a `tty.msg`
and returns.
```
-bash-4.2$ ~/spack/bin/spack activate aspell6-en
==> Package aspell6-en/lc4v24f is already activated.
```
* Better error message for spack providers
fixes#1355
`spack providers` now outputs a sensible error message if non-virtual
specs are provided as arguments:
```
$ spack providers mpi zlib petsc
==> Error: non-virtual specs cannot be part of the query [zlib, petsc]
```
Formatting of the output changed slightly.
* Calling 'spack providers' without arguments print the virtual pkg list
Also, the error message in case of a wrong parameter has been improved
to show the list of valid packages.
* Avoid printing headers if stdout is not a tty
* The provider list is formatted with colify if not in a tty
* Added a test to check the list of providers returned from the command
Popping the when spec from kwargs in the extends directive breaks
class inheritance. Inheriting classes do not find their when spec.
We now get the when spec from kwargs instead, leaving it to be found
by any downstream package classes.
* opengl: make error throw on install, not fetch
* opengl: add configuration advice for darwin
* opengl: add more versions of GL/OpenGL
* opengl: improve documentation in comments
* [OpenGL] Fix formatting
fixes#7593
Unit tests on OSX are trying to concretize mpileaks, and they fail due
to a conflict in the package:
"%gcc@7.2.0:" conflicts with "elfutils@0.163"
This solves the issue asking explicitly to concretize against
elfutils@1.170
fixes#7705
Package.provides now checks constraints to ensure that a spec provides
a given virtual package. Note that 'strict=True' is not passed to
satisfies as this function is also used during concretization.
* new package "DSRC" (bioinformatics)
* remove uncommented line
* get rid of unnecessary import
* convert to MakefilePackage class
* get rid of make() in install phase, remove spaces
* make flake8 happy!
Add a proper install variant for Catch(2).
This allows to use Catch2 downstram with `pkg-config` and
CMake's `find_package` commands via standard environment hints.
Fixes#7548
This updates the "spack view" command to use the same parsing logic
as "spack install" on the user-provided specs. For example you can
provide a DAG hash to refer to an exact installed spec instead of
specifying name, compiler, etc.
* fix boost and muparser for Clang 9.1.0 with C++17
* muparser: add C++11 flags
* dealii: temporary disable python by default
* dealii: make CMake find right python
* Current versions of kokkos conflict with hwloc 2.x
Current versions of kokkos cannot build with hwloc v2.x due to changes
in the associated structs. Requiring v1.11.9 for the time being
until it becomes clear what the kokkos model will be
* Explicitly commenting fix for posterity
Explicitly commented version number of hwloc dependency for kokkos for
posterity purposes and to pass code coverage for speedy merging
* Generalized Kokkos's Hwloc Dependency
Generalized dependency to v1.x of hwloc
* Fixed Flake8 issue
Fixed comment to conform to flake8
* Fixed ordering for Version Requirements
Fixed ordering to indicate <= 1.11.9, not >1
* Generalized kokkos dependency
* explicitly specify user-config.jam as it isn't found
via the environment variable on older boost versions
(cf. what debian/rules does)
=> fixes +mpi build
* fix "error: Ambiguous key" error on :1.58.999 boost
(cf. https://github.com/boostorg/boost/blob/boost-1.59.0/bootstrap.sh#L357)
* ceed bundle package including OCCA, MAGMA, Nek5000, mfem, and PETSc
Very preliminary, a lot of ad hoc decisions, fragile, missing functionality
All packages do build on my MacOS laptop with Cuda
Funded-by: ECP
Project: CEED
Time: 4 hours
Reported-by: Tzanio Kolev <kolev1@llnl.gov>
* Some adjustments in a few CEED-related packages.
This is still very preliminary, but with these changes I'm able to build from
scratch on a Mac laptop and a Linux desktop (RHEL7).
Note that there doesn't seem to be a good way to support CUDA in Spack, so
you'll have to install that manually yourself. You will also need a Fortran
compiler, in particular on a Mac where you also have to make sure that it
is being picked up in ~/.spack/darwin/compilers.yaml.
* ceed bundle package including OCCA, MAGMA, Nek5000, mfem, and PETSc
Very preliminary, a lot of ad hoc decisions, fragile, missing functionality
All packages do build on my MacOS laptop with Cuda
Funded-by: ECP
Project: CEED
Time: 4 hours
Reported-by: Tzanio Kolev <kolev1@llnl.gov>
* Reverting Mac-related CUDA checks in the OCCA and MAGMA packages.
A much better solution is to install CUDA manually and add it to
~/.spack/darwin/packages.yaml:
packages:
cuda:
paths:
cuda@8.0.54: /usr/local/cuda
* Fix flake8 warnings
Funded-by: CEED
Project: CEED/Spack
* remove unneeded commented out code
Funded-by: CEED
Project: CEED/Spack
* Don't have PETSc use MUMPS to speedup install time, try parallel installs for Magma
Funded-by: CEED
Project: CEED/Spack
* Added libceed package and made changes to get the ceed metapackage up and running.
* Get the ceed package up and running and added installing the .h file in the libceed package.
* All packages are now pointed at specific versions (either tagged or git hashed.
* Changed some of the specific versions in the CEED metapackage.
* Some version updates.
* Applied Cameron Smith's patch for the latest pumi.
* Merge
* Nek5000: Use tarball instead of git tag
* Major update of the mfem package - needs more testing. Add a testing
shell script for mfem, test_builds.sh, in the mfem directory. It builds
a number of mfem configurations to ensure they all work.
Add 'suite-sparse' variant to petsc.
Add 'develop' version of libceed.
Add 'metis' variant of laghos.
Update the dependencies of ceed.
* Changes in petsc's handling of zlib to make the latest build work on Mac.
* [MFEM] When using '+libunwind', mfem needs '-ldl'.
* [OCCA] Remove debug print statements.
* [PETSc] Replace the check ('zlib' in spec) with ('+zlib' in spec) - the
latter checks if 'zlib' variant of petsc is enabled which is incorrect;
the former checks if petsc is configured to depend on 'zlib'.
* [MFEM] Add conduit variant.
* [libCEED] Enable testing using 'make prove'.
* [MFEM] Tweak test_builds.sh - all builds pass on fedora 27.
* Add a post install test
* Add a post installation check for NekCEM
* pumi: bump git hash, remove unused patch
* Fixed testing of Laghos package
* Adding variants in CEED package
* Empty file for URL didn't work on LLNL/LC. Replacing with bundle-package.txt -> README.md.
* [MFEM] If the spec defines the 'cxxflags' compiler flags, use that value
to set the CXXFLAGS value in the mfem build system.
* Disabling HDF5 by default.
You can still build it with "spack install ceed+hdf5".
* libceed: fix use of prefix versus DESTDIR
* Added cuda variant for libCEED (off by default)
* [libCEED] When building v0.1, fix ceed.pc before installing it.
* [CEED] Add variants for OCCA and PUMI. Replace the hdf5 variant with
a variant called quickbuild that disables variants in packages to
speedup the build - currently hdf5, boost, and superlu-dist in PETSc.
* [libCEED] Remove unused 'import os'.
* [MAGMA] Add version 2.3.0.
* [OCCA] Major update of occa/package.py.
* [libCEED] Several improvements.
* [CEED] Use fixed versions for occa and libceed.
* [OCCA] Fix a bug in CUDA setup.
* NekCEM doesn't need depends_on('python')
* [OCCA,libCEED,MFEM,CEED] Update occa and libceed versions plus a few
tweaks in occa and mfem.
* Switching to gslib-1.0.2 to fix summitdev bug.
* [Nek5000] Use the Fortran 77 compiler instead of the 'fc' compiler.
Propagate any 'fflags' and 'cflags' specifications to the Nek tools.
* [MFEM] Tweak for 'ppc64le'.
* attempt to override fips compatibility error for md5
* Compiler option changes in libCEED to fix summitdev build.
* Disable the nekcem install test until it can be fixed.
* [NekCEM] Major update of the package to fix various issues.
* [NekCEM] Fix formatting
* zoltan: remove non-portable -g0 flag
the pgi compiler does not accept it
* pumi: specify dependency on cmake > 3
* [Nek5000] Add dependency on libx11 when needed. Various hacks to
support IBM XL compilers.
* [NekCEM] Link with the pthreads library - it is required.
* [MAGMA] Add a patch for magma v2.3.0 when building with gcc <= 4.8.
Add dependency on BLAS.
* [CEED] Update to magma 2.3.0. When building with gcc < 4.9 constrain
the used suite-sparse version to <= 5.1.0 - starting with v5.2.0,
suite-sparse requires gcc >= 4.9.
* Small updates
* [libceed, gslib] Fix style
* [Nek5000] Need 'libxt' as a dependency as well.
* [MUMPS] Temporary workaround for ray.
* Updating occa and libceed to laters pre-1.0.0 and pre-0.2 hashes
* petsc: add pkg-config patch for variable quoting
Variable definitions in pkg-config are processed more like make than a
shell, so don't need quoting. Older versions of pkg-config (<= 0.28)
did not remove the quotes when printing the value.
Freedesktop #67904 (https://bugs.freedesktop.org/show_bug.cgi?id=67904)
Reported-by: Tzanio Kolev <kolev1@llnl.gov>
* petsc: add 3.8.4 and myself as co-maintainer
* Updating libceed to latest pre-0.2 hash.
* [PETSc] Add the 'headers' and 'libs' properties.
* [MFEM] Explicitly add rpaths to link flags for external packages.
This is necessary when MFEM's exported options (in config.mk) are
used outside of Spack for linking against MFEM.
* Unset MFEM_DIR before building MFEM
* [PETSc] As observed by @jedbrown, there is no need to define the 'libs'
property explicitly - the default handler works fine too.
* Build MAGMA shared by default, install a few additional headers
* Forgot a self
* Switching to OCCA tag v1.0.0-alpha.4.
Adding urls for OCCA and libCEED ('spack uninstall' complains otherwise).
* Removed FIXMEs for OCCA tag
* [occa] Cleaned up tagged versions
* [libceed] Updated occa to v1.0.0-alpha.5
* [ceed] Updated occa to v1.0.0-alpha.5
* [libCEED] Always define the 'NDEBUG' makefile option based on the
'debug' variant setting - this should always work regardless of the
default setting inside the libceed makefile.
* [MUMPS] Revert a temporary workaround.
* [CEED, libCEED] Minor tweaks.
* libCEED v0.2 release
* [CEED] Use version 0.2 of libCEED.
* [HPGMG] Remove duplicate version.
* [CEED] Update the hpgmg version
* hpgmg: use tarball for 0.3
The Git repository contains somewhat heavy documentation so the tarballs
are much faster.
* hpgmg: +fe was default for the 0.3 release
* hpgmg: explicitly name build directory to avoid use of ambient PETSC_ARCH
* [HPGMG] Fix flake8 formatting
* libceed@0.2: work around occaFree issue
* Add ignore_conflicts to package activation
includes:
* with_dependency flag for do_activate
* ignore_conflicts flag for do_activate
* start of cleanup of activate cmd
* ensure that apr is picked up
* Update package.py
* add apr explicitly as dependency
* remove unnecessary newlines
* Update package.py
fixing dependencies
Fixes#7593
By default MacOS concretizes using the clang compiler. The unit tests
include a call to "spack spec mpileaks", which has elfutils as a
dependency; #7096 added a conflict in elfutils to avoid building
with clang, which lead to the MacOS unit tests to start failing.
This updates the concretization to force using gcc when concretizing
mpileaks.
Modifications:
* Added zlib dependency, starting from version 3.0.0
* Added memchecker support for debugging
* Remove mpirun and similar links if slurm is selected as a scheduler
This fixes a check that decides when to skip buildcache relocation.
Originally the check was flawed in two ways: it would skip if the
source prefix matched the destination prefix, which no longer
matters since the source prefix is replaced with a placeholder
(so it always needs to be updated); it also would skip relocation
if the rpaths were not relative, when in fact it should be the
opposite (binaries without relative rpaths *should* be relocated,
and those without don't need it).
- FastPackageChecker was being called at startup every time Spack runs,
which takes a long time on networked filesystems. Startup was taking
5-7 seconds due to this call.
- The checker was intended to avaoid importing all packages (which is
really expensive) when all it needs is to stat them. So it's only
"fast" for parts of the code that *need* it.
- This commit makes repositories instantiate the checker lazily, so it's
only constructed when needed.
- This was needed when we transitioned to all lowercase packages because
git didn't handle case changes well on case-insensitive filesystems.
- Now it just adds extra stat calls to startup, and we check for
all-lowercase package names in tests, so we'll remove it.
- people using really old versions of Spack can re-clone.
* Create unload_module method
Extract code from load_module into unload_module.
* Unload modules to create a clean env on Cray
removes cray-libsci, cray-mpich and darshan to prevent any silent
linking with those packages.
* Add format to separate target and os for path
spec format can now handle separations of target and os for setting
up the path.
* Added ${PLATFORM} et al to spec.format()
${PLATFORM}, ${OS}, ${TARGET}
* Update tests
Updated tests and got rid of unnecessary code.
* Also update documentation to reflect this new ability.
* Add default path scheme to config.yaml
Added default path scheme to config.yaml. Users can overwrite this
section if they want.
* Speedup the default 'libs' property search - important for external
packages.
* As advised by @alalazo, use tuples instead of lists inside
_libs_default_handler.
* [hypre] Add the 'headers' property plus a small tweak in the 'libs'
property.
* [hypre] Add fallbacks for searching for '.libs' in 'prefix.lib64' and
in all of 'prefix'.
* [hypre] Fix style.
* [hypre] Use find_headers instead of find + HeaderList.
* added a new package file for PHIST (Pipelined, Hybrid-parallel Iterative Solver Toolkit)
* packages/phist: fix some formatting errors (too long lines etc)
and set allowed values for option "outlev"
* packages/phist: fix some more flake8 errors
* add headers property to netlib-lapack and intel-mkl
* ghost: fix finding cblas header and libs (at least for mkl and netlib-lapack, which provide headers())
* added a new package file for PHIST (Pipelined, Hybrid-parallel Iterative Solver Toolkit)
* packages/phist: fix some formatting errors (too long lines etc)
and set allowed values for option "outlev"
* packages/phist: fix some more flake8 errors
* phist: use headers property to find lapacke include dir
* phist: fix flake8 error
* phist: be more specific about dependencies and update version
* phist: state trilinos minimum version when building with Tpetra kernels
* gmp: add oldish version 5.1.3 with checksum
* phist: get rid of the 'petsc+complex' variant, it can be installed by kernel_lib=petsc ^petsc+complex
* phist: new version
* phist: fix version checksum
* Revert "add headers property to netlib-lapack and intel-mkl"
This reverts commit d8cb62905e.
* Revert "ghost: fix finding cblas header and libs (at least for mkl and netlib-lapack, which provide headers())"
This reverts commit d406a77ed7.
* phist: remove unused function
* phist: reorder package file versions/variants/depends_on/rest
* phist: some minor changes requested by @adamjsteward
* Add latest version of MPFR and patches for older versions
* Fetch and checksum patches instead of storing them
* Fix bug, version attribute was being overridden
* Added installation date and time to the database
Information on the date and time of installation of a spec is recorded
into the database. The information is retained on reindexing.
* Expose the possibility to query for installation date
The DB can now be queried for specs that have been installed in a given
time window. This query possibility is exposed to command line via two
new options of the `find` command.
* Extended docstring for Database._add
* Use timestamps since the epoch instead of formatted date in the DB
* Allow 'pretty date' formats from command line
* Substituted kwargs with explicit arguments
* Simplified regex for pretty date strings. Added unit tests.
* meme: added perl-xml-parser dependency, resolved issue. still need to fix ghostscript or image-magick, conversion not working.
* meme: fixed issue with libxslt/libxml2 conflict, and added imagemagick support
* meme: removing libxslt/libxml2 dependency lines
* meme: configure args
* meme: separating configure args
* meme: removing a comment, and hoping for travis to rebuild. site seems back up.
* meme: make image-magick optional
* meme: add comment referencing PR
* meme: bah flake8
This updates architecture concretization to
* Search for the nearest parent in the DAG for architecture information
rather than defaulting to the root of the DAG
* Propagate architecture settings transitively, such that if for
example the target is set at the root of the dag it will set the
same target on indirect dependencies (assuming no intermediate
dependency specifies a separate target). Previously this occurred
in general but under some conditions did not, for example if an
intermediate dependency specified some subset of architecture
properties.
* Promote to Autotools for simplicity; broaden Intel CPU opt targeting from SSE4.2 to AVX2
* make Intel CPU opt targeting same as in ../libxc
* flake8 W291
* use canonical means to pass (ahem) the test phase, h/t @adamjstewart
* revert f25d598 (unrelated merge)
* re-merge
* Create mirror for system with different compilers
Spack concretizes the spec provided by the user in
"spack mirror create" to ensure downloading the right
dependencies. Under normal circumstances concretization
requires that the chosen compiler exists on the system,
but this is not required when creating download mirrors
for other systems, so this requirement is removed in that
case.
* Add test for disabling compiler existence check
* Update compiler existence checking logic
* improve test for disabling compiler existence check
* make py-setuptools a run-time-only dep for py-basemap and patch python package to only apply setuptools flag for build deps
* py-qtconsole does not require setuptools
* This allows Spack to work with MD5 hashes on machines with openssl in FIPS mode.
* We are still using MD5 for validation in many places, and a later PR will replace all uses of MD5 with SHA256.
* This is a quick fix until that happens.
* intel-xed: new package
The Intel X86 Encoder Decoder library for encoding and decoding
x86 machine instructions.
* intel-xed: style fixes for flake8.
* intel-xed: better style fix
* intel-xed: update to version 2018.02.14, add PYTHONPATH for
building with python 3, cleanup the opt flag.
The restrict compilation option with icc causes deadlock when multithreading is used. This issue has already been reported to the Scotch development team, but for current versions it is more reliable not to use the restrict compilation option.
* libtool: actually do symlinking correctly on darwin
Version 4 of the libtool/darwin debacle:
AutotoolsPackage hardcodes libtool & libtoolize into the autoreconf
stage, so the commands `libtool` and `libtoolize` MUST be present, and
shimming in glibtoolize into AutotoolsPackage when sys.platfrom ==
'darwin' does not work.
join_path(spec['libtool'].prefix.bin, 'libtool') still shadows system
BSD libtool (in apple-cctools, see PR #7177), but this shadowing could
be okay, depending on the combination of dependent specs.
* librom: new package
* Adding unzip package.
* Removing bzip2 dependency in unzip and raising an error when on Cray.
* Fixing error.
* Using conflicts statement for Cray detection in unzip package.
* add headers property to netlib-lapack and intel-mkl
* ghost: fix finding cblas header and libs (at least for mkl and netlib-lapack, which provide headers())
* fix flake8 errors
* ghost: remove unnecessary query parameter
* fix flake8 errors
* ghost: make it a CudaPackage (as suggested by @davydden, thanks!)
* ghost: missing whitespace
* Fix a bug when checking for 'xl' or 'xl_r' compiler.
* Add support for parallel build - the 's', 'c', 'd', and 'z' targets
are build separately allowing parallel builds.
* When build '+shared', inject all dependencies into the link lines of
the mumps libraries.
* Run the examples only when installing with the '--test' Spack option.
It seems there has been a change in concretization that resulted in
a request for a llvm latest (5.0.1) while not satisfying the later
more precise request for a version.
Remove the first line and only rely on the last.
A build of python@3.X had the following in the logs:
```
The necessary bits to build these optional modules were not found:
_dbm _gdbm _tkinter
```
As Tkinter is already a variant, we adopt the same strategy for dbm.
This includes:
* Added latest available versions (1.11.9, 2.0.0)
* Added variants to enable graphical output from lstopo
* Enabled build of the bundled netloc package if @2.0.0:
* Added dependency from numactl if @:1.11.9
* Added a constraint to avoid using hwloc@2.0.0 with openmpi
cube's configure only recognizes qt versions with single digit version
components and breaks with qt 5.10. Patch the configure files directly
to avoid having to regenerate them.
Mscgen is a small program that parses Message Sequence Chart descriptions and
produces PNG, SVG, EPS or server side image maps (ismaps) as the output.
See http://www.mcternan.me.uk/mscgen/
- transitive dependencies were not being handled correctly
- restructure code to do recursion and mark visited packages properly
- add `-V` option to *not* expand virtuals in spack dependencies
This re-adds the option to create and install unsigned tarballs, now
with the -u option (--unsigned) rather than the -y option.
This also changes the "keys" command, replacing the -y/--yes-to-all
option with the -t/--trust option (which has the same effect but is
more-clearly named).
Fixes#7130
shutil.move expects a source path like "/x/y/" to be a directory and
fails if "/x/y" is a symlink. This invokes realpath on the source
path to avoid the issue.
Fixes#7356
In some cases OperatingSystem (e.g. LinuxDistro) was getting
instantiated with a version that contains dashes. This breaks because
the concretizer later converts this value to a string and re-parses
it, and the '-' character is used to separate architecture components.
This adds a guard in the initializer to convert '-' to '_'.
This is needed when using system lua on RHEL and clones where lua
is installed in /usr/lib64. Note that the path entry for lua in
packages.yaml should specify the major/minor version of lua (since
this is used to calculate the lua lib directory)
updated hoomd-blue to latest tagged release in repo. This version also supports newer gcc6 compilers, so added constraint for older version to avoid breaking existing installs.
+ Newer versions of zoltan2 are doing test compiles that link to parmetis. If
these checks don't find `metis.h`, the check fails.
+ This small tweak ensures that the zoltan2 configure step can find `metis.h`
that is provided by spack.
Fixes#7237Fixes#6404Fixes#6418Fixes#6369
Identify when binary relocation fails to remove all instances of the
source prefix (and report an error to the user unless they specify
-a to allow the old root to appear). This check occurs at two stages:
during "bincache create" all instances of the root are replaced with
a special placeholder string ("@@@@..."), and a failure occurs if the
root is detected at this point; when the binary package is extracted
there is a second check. This addresses #7237 and #6418.
This is intended to be compatible with previously-created binary
packages.
This also adds:
* Better error messages for "spack install --use-cache" (#6404)
* Faster relocation on Mac OS (using a single call to
install_name_tool for all files rather than a call for each file)
* Clean up when "buildcache create" fails (addresses #6369)
* Explicit error message when the spack instance extracting the binary
package uses a different install layout than the spack instance that
created the binary package (since this is currently not supported)
* Remove the option to create unsigned binary packages with -y
For hdf5 `1.8.10` and some compilers, the hdf5 build system adds the
'-ansi' flag. hdf5 1.8.10 is not actually ansi compliant so this
adds a patch to modify the places where it violates ansi
compatibility (which ends up being a few comments).
Make neuron package more generic
* find the bin directory dynamically for use in run_env and spack_env
* replace filter_compilers after install with filter_compiler_wrappers
* update checksum for _current_ 7.5 version
* make +python conflict with ~shared
* prepend the architecture specific lib directory to the LD_LIBRARY_PATH
Signed-off-by: Ricardo Silva <ricardo.silva@epfl.ch>
Fix installs as "root" user for the last libSplash release.
Missing quoting of string compares resulted in a CMake error
when run as root (e.g. in a Docker build).
This updates Cray.setup_platform_environment to use cray-specific
pkgconfig paths so that all providers of 'pkgconfig' have access
to them (previously the 'pkg-config' provider had this but the
'pkgconf' provider did not).
* [OpenMPI] Add the 'headers' property. This removes some redundant
headers from sub-directories, returned by the default '.headers'
handler.
* [OpenMPI] In the .headers property, add a fallback to search all of
prefix for the mpi.h header. Recommended by @junghans to support some
external configurations, see #7268.
* [SPACK/spec.py] When a query through ForwardQueryToPackage returns
'None', treat that as query failure and raise RuntimeError with
suitable message. This overrides the current behavior to raise an
AttributeError which is now triggered only when no suitable query
property is found and there is no default handler.
* [spack/spec.py] Fix style.
* [SPACK/spec.py] In case of query failure, i.e. property returning
'None', raise AttributeError instead of RuntimeError in order to
pass the unit test. Also, small update in the logic distinguishing
query failure and lack of relevant property/attribute handling.
* add verilator package
* try to add environment variable and include folder
* manually install existing scripts and patch out spack's CXX wrapper
* added some comments
* make flake8 happy
Adds Google's new cpu_features library.
Install was added recently, so don't take the `0.1.0` release but
the current `master` until a new version is published.
* Combined llvm and llvm-lld: removed the separate llvm-lld package
and added llvm-lld as an optional add on to the llvm package (the
way several other llvm tools are maintained e.g. lldb)
* Added more lld hashes to llvm package
* The 'CppBackend' target doesn't exist for version 3.9.0 or later
so exclude it for later versions
* Was incorrectly specifying 'sparc' as a target for the 'sparc'
architecture - needed to specify 'Sparc'
* Fix issue #7248 building llvm: don't make the LLVMDemangle target
for llvm < 4.0.0
This updates the fix_darwin_install_name function to use the Spack
Executable object to run install_name_tool, which ensures that
process output is formatted as a 'str' for python2 and python3.
Originally fix_darwin_install_name was invoking subprocess.Popen
directly.
* No longer need to patch CMake. Using CMAKE_CXX_FLAGS to include BLAS/LAPACK/MKL header files properly.
* Backport two patches to QMCPACK versions prior to 3.3.0: https://github.com/QMCPACK/qmcpack/pull/621, https://github.com/QMCPACK/qmcpack/pull/623
* Insufficient to include lapack_dir in CMAKE_CXX_FLAGS, CMAKE_C_FLAGS is also needed.
* Make patched Espresso a default variant instead of a hard dependency. This is easier on computer architectures where Espresso is hard to build.
* Fix patching with QE variant. Now using correct form of patch command.
* Add QMCPACK v3.4.0
* Backport patch to QMCPACK versions prior to 3.3.0: https://github.com/QMCPACK/qmcpack/pull/643
Yaml-cpp hasn't tagged a release in over 2 years, yet they have fixed
many things and now have the ability to use find_package in CMake.
Since we use this feature in Nalu, we require the latest yaml-cpp
until they tag a new release. I have also deprecated the now
unnecessary ENABLE_INSTALL flag.
* Added a package for the MDAnalysis toolkit.
* Adding a package for the Python virtualenvwrapper pacakge. Included
dependent virtualenv-clone and stevedore packages. Updated py-pbr with
a new version to support this.
* Added extra necessary dependencies and fixed the file download paths.
* Added a package for the MDAnalysis toolkit.
* Added a new package for pygpu, which is the python front end of the
libgpuarray. Additionally changed the dependency for theano so that
it properly picks up the pygpu library.
* Added the libcheck package. Fixed flake8 errors in py-pygpu recipe
and removed spurious dependency on cudnn for libgpuarray.
The edit phase of cbench was used to set environment variables. Though
this works, the variables set this way are not dumped to build.env.
This commit fixes the issue by setting those variables in the
`setup_environment` function.
* [SUNDIALS] Add the 'headers' and 'libs' properties, plus a couple of
small tweaks.
* [SUNDIALS] Revert incorrectly changed conflicts() directive. Fix style.
Fixes#5189
When working with non-normalized paths containing ".." on some
file systems, Spack was found to encounter a permission error when
writing to the path. This normalizes a path written by the
intel-parallel-studio package and also normalizes all paths
written by the license install hook (for all packages) to avoid
this issue for intel-parallel-studio.
Adds the first stable API release of ADIOS2, v.2.1.0.
Also adds a missing `pybind11` CMake flag for proper Python
selection (needed in both the new and previous version).
To accommodate build systems on Darwin which look for glibtool/ize,
#7060 attempted to provide glibtool/ize symlinks for libtool/ize
but accidentally created the same symlink twice. #7073 reverted this
and replaced libtool/ize with glibtool/ize on Darwin. This led to
#7163 since AutotoolsPackages depend on the presence of the 'libtool'
binary, so this returns to the approach of #7160 but makes the
correct symlinks.
XBraid installs `libbraid.a`, but the default `libs` method
implementation will search for `libxbraid`, which does not exist. This
commit fixes the behavior of the `libs` method for the `xbraid`
package by overriding package's `libs` method.
Prior to this commit, running `spack module refresh` with `gdbm`
installed throws the warning:
```console
==> Warning: Could not write module file [/Users/oxberry1/spack/share/spack/lmod/darwin-sierra-x86_64/Core/gdbm/1.14.1.lua]
==> Warning: --> global name 'spack_cc' is not defined <--
```
This warning is repeated for every `gdbm` installation in Spack.
The cause of the issue seems to be the same as in spack/spack (#6089):
using `spack_cc`, `spack_cxx`, or similar inside `configure_args`
causes the warnings to throw when module files are generated.
Moving the use of `spack_cc` into `setup_environment` seems to fix the
problem, even though it's a bit of a kludge.
Running `spack module refresh -m lmod --delete-tree -y` throws the
following warning:
```console
==> Warning: Could not write module file [/Users/oxberry1/spack/share/spack/lmod/darwin-sierra-x86_64/openblas/0.2.20-ibhtl5q/clang/5.0.1/ipopt/3.12.9.lua]
==> Warning: --> global name 'prefix' is not defined <--
```
This warning arises because the variable expansions in
`spack.modules.BaseFileWriter` occur at module/package scope. Even
though `prefix` is an argument to `install` methods in e.g.,
`MakefilePackage`, so using this argument within package methods is
legal, doing so defeats the introspection logic in
`spack.modules.BaseFileWriter`. Replacing `prefix` with `self.prefix`
resolves the problem, because the introspection logic in
`spack.modules.BaseFileWriter` can use introspection to query IPOPT's
prefix.
Following the discussion with Todd and Adam, find has been modified to
accept glob expressions. This should not affect performance as every
glob implementation I inspected has 3 cases (no wildcard, wildcard but
no directories involved, wildcard and directories involved) and uses
fnmatch underneath.
Mixins have been changed to do by default a non-recursive search (but
a recursive search can still be triggered using the recursive keyword).
Following a comment from Todd, the search path for the files listed in
`filter_compiler_wrappers` can now be narrowed. Anyhow, the function
implementation still makes use of `find`, the rationale being that we
have already seen packages that install artifacts in e.g. architecture
dependent folders. The possibility to have a relative search path might
be a good compromise between the previous approach and the one suggested
in the review.
Also: 'ignore_absent' and 'backup' keyword arguments can be optionally
forwarded to `filter_file`.
Following comments from Todd:
- the call to tty.debug has been moved deeper, to log the filtering of each file
- the shadowing on the name "kwargs" is avoided
Implemented a declarative syntax for the additional behavior that can
get attached to classes. Implemented a function to filter compiler
wrappers that uses the mechanism above.
- command reference now includes usage for all Spack commands as output
by `spack help`. Each command usage links to any related section in
the docs.
- added `spack commands` command which can list command names,
subcommands, and generate RST docs for commands.
- added `llnl.util.argparsewriter`, which analyzes an argparse parser and
calls hooks for description, usage, options, and subcommands
- Shorten Spack command usage for short options. Short options are now
shown as [-abc] instead of as [-a] [-b] [-c]
- fix bug that mixed long and short options for top-level `spack help`
- Add proper help for `spack buildcache` subcommands
- Reorganize the help categories of Spack commands so that buildcache is
in packaging and diy and setup are now in build.
- previously commands with this argument showed a long list of choices
that were platform specific.
- use a better metavar: {defaults,system,site,user}[/PLATFORM]
* Remove variants disabling blas and lapack for py-numpy, issues
building these have been resolved
* For CMake greater than 3.10, FindMPI changed, so use
MPIEXE_EXECUTABLE instead of MPIEXE for 3.10 and newer
I think the main issue here is that we ship a custom version of a system
library (`argparse`), and this is prone to fail if `argparse` is
imported before we hack `sys.path` internally.
Probably a better solution would be not to customize argparse, but
instead have a wrapper on top of whatever the system provides.
fixes#7128
Before this PR packages that were indirectly dependent on python might
have failed due to inconsistency between the python found in the
environment and the standard libraries set in PYTHONHOME
This adds a static version of hpgmg (up to now only the latest commit
from the master branch was available). This also adds a debug variant
and sets optimization flags for ~debug when the compiler is gcc,
intel, or clang
Adds the latest release of libSplash (1.7.0) and newly learned
CMake flags for explicit dependency control.
Modifies HDF5 dependency: non-MPI splash does (and did) never run
with a parallel HDF5, due to it's internal cross-dependencies on
MPI.
Fixes#7159
When activating extensions in external views, the --ignore-conflicts
option was being ignored. In this particular issue the conflict was
for the duplicate __init__ file for multiple python packages in the
same namespace, but in general any conflict for extensions would
cause an error whether or not --ignore-conflicts was set.
This also renames the 'force' option of do_activate to
'with_dependencies' and updates views to call do_activate with this
set to False (since it traverses the dependency dag anyway). This
isn't strictly required, it just avoids redundant calls.
This reorganizes most sections and rewords a significant portion of
the content (including all introductions) but keeps all the examples.
* Remove section 'What happens at subscript time' from tutorial:
it is too detailed for a tutorial
* Move the 'Extra query parameters' and 'Attach attributes to other
packages' sections into a separate grouping 'Other packaging topics'
* move the 'Set variables at build time yourself' section after
'Set environment variables in dependents' section since the latter
is more motivating
* start the 'set environment variables at build-time for yourself'
section with qt as an example
* renamed section 'specs build interface' to 'retrieving library
information' and updated section introduction
* renamed section 'a motivating example' to 'accessing library
dependencies'; split out the material which deals with implementing
.libs for netlib-lapack into a separate section called 'providing
libraries to dependents'. consolidated in material from the section
'single package providing multiple virtual specs' since
netlib-lapack is an example of this (this removes the material
about intel-parallel studio)
* Allow dashes in command names and fix command name handling
- Command should allow dashes in their names like the reest of spack,
e.g. `spack log-parse`
- It might be too late for `spack build-cache` (since it is already
called `spack buildcache`), but we should try a bit to avoid
inconsistencies in naming conventions
- The code was inconsistent about where commands should be called by
their python module name (e.g. `log_parse`) and where the actual
command name should be used (e.g. `log-parse`).
- This made it hard to make a command with a dash in the name, and it
made `SpackCommand` fail to recognize commands with dashes.
- The code now uses the user-facing name with dashes for function
parameters, then converts that the module name when needed.
* Improve performance of log parsing
- A number of regular expressions from ctest_log_parser have really poor
performance, most due to untethered expressions with * or + (i.e., they
don't start with ^, so the repetition has to be checked for every
position in the string with Python's backtracking regex implementation)
- I can't verify that CTest's regexes work with an added ^, so I don't
really want to touch them. I tried adding this and found that it
caused some tests to break.
- Instead of using only "efficient" regular expressions, Added a
prefilter() class that allows the parser to quickly check a
precondition before evaluating any of the expensive regexes.
- Preconditions do things like check whether the string contains "error"
or "warning" (linear time things) before evaluating regexes that would
require them. It's sad that Python doesn't use Thompson string
matching (see https://swtch.com/~rsc/regexp/regexp1.html)
- Even with Python's slow implementation, this makes the parser ~200x
faster on the input we tried it on.
* Add `spack log-parse` command and improve the display of parsed logs
- Add better coloring and line wrapping to the log parse output. This
makes nasty build output look better with the line numbers.
- `spack log-parse` allows the log parsing logic used at the end of
builds to be executed on arbitrary files, which is handy even outside
of spack.
- Also provides a profile option -- we can profile arbitrary files and
show which regular expressions in the magic CTest parser take the most
time.
* Parallelize log parsing
- Log parsing now uses multiple threads for long logs
- Lines from logs are divided into chnks and farmed out to <ncpus>
- Add -j option to `spack log-parse`
* libdwarf: fix linker flags
* libdwarf: fix header install names
* libdwarf: add zlib dependency
Prior to this commit, libdwarf was linked to the system zlib. This
commit links it to spack-installed zlib.
* libdwarf: fix dynamic library suffix for Darwin
* Adding support for the Accelerate library on OS X
* Fixed guard on variable and added another depends_on statement to make sure that openblas gets selected even when openmp_blas variant is not turned on.
* Added a package for the MDAnalysis toolkit.
* Added some flags to fix the build RPATHs and OpenMP for LBANN on OS X.
* Fixed Hydrogen branch of Elemental to find OpenMP on OS X.
* Marking database tests as slow
* Marking url command tests as slow
* Marking every test that uses database as slow
* Marking tests that import files as slow
* Marking gpg tests as slow
* Marking all versions and one list tests as slow
* Added more markers to unit tests + cli option to skip slow tests
Following a discussion with Axel, the generic 'slowtest' marker has been
split into 'db', 'network' and 'maybeslow'. A brief description of the
meaning of each marker has been added to pytest.ini.
A command line option to run only fast tests has been added to
'spack test'
* Don't use classes to group tests together
Reverted grouping tests under a class, as required in the review
* Minor style changes
This attempts to address one of the complaints at #5996 (comment):
> Repo currently caches package instances by Spec, and those Package instances have a Spec.
> This is unnecessary and causes confusion. I think I thought that we'd need to cache instances
> after loading package classes, but really just caching the classes is fine.
With this update, Repo's package cache is removed and Specs cache the package reference themselves. One consequence is that Specs which compare as equal will store separate instances of a Package class (not doing this creates issues for #4595 (comment)).
There were several references to Spec.package that could be replaced with Spec.package_class without any additional modifications. There are still a couple remaining references to Spec.package in Spec that would require adding functionality before replacing (e.g. calling Package.provides and Package.installed).
Note this makes it difficult to mock fetchers for tests which invokes code that reconstructs specs. test_packaging was one example of this where the updates caused a failure (in that case the error was avoided by not making an unnecessary call).
Details:
* Replace instances of spec.package with spec.package_class where a class method is being called
* Remove instances of Repo.get where Spec.package_class can be used in its place
* remove Repo.get caching instances of Package class for specs
* remove redundant check (which is also incorrect now that each spec stores its own copy of its package)
* avoid creating mirror with specs because it copies specs and those copies dont refer to the mocked fetcher (and it is also not required for the test)
* remove checks that are no longer necessary since repo doesn't cache specs
* Cleaned up JUnit report generation on install
The generation of a JUnit report was previously part of the install
command. This commit factors the logic into its own module, and uses
a template for the generation of the report.
It also improves report generation, that now can deal with multiple
specs installed at once. Finally, extending the list of supported
formats is much easier than before, as it entails just writing a
new template.
* Polished report generation + added tests for failures and errors
The generation of a JUnit report has been polished, so that the
stacktrace is correctly displayed with Jenkins JUnit plugin. Standard
error is still not used.
Added unit tests to cover for installation failures and installation
errors.
* libtool: fix linking of libtool on darwin
* binutils, libtool: fix conflicts w/ BSD tools, v2
Fix namespace conflicts with BSD tools in a more elegant fashion,
using a program prefix, similar to Homebrew.
* Tell R's configure about tcltk config
Add configure arguments that specify the location of
the tcl and tk config scripts.
Fixes#7072
* Flake8 cleanup
Looking at build logs, it seems that prior to this commit bzip2 was
using 'cc', and relying on the PATH to be set correctly to find Spack
wrappers. This commit improves the robustness of the recipe, by using
the absolute path of the wrapper.
Avoid adding an "outside" (local home's) python user site directory
during python package installs.
Implements #6611
Fixes packages with auto-find side effects such as `py-setuptools`
that cause `py-matplotlib` to fail to build #6558
On Darwin and other BSD systems, the system 'libtool' and 'libtoolize'
are BSD libtool and libtoolize, respectively. Some build systems
require the GNU versions of these commands, so BSD package systems
tend to name the GNU versions 'glibtool' and 'glibtoolize',
respectively, to avoid namespace collisions.
A problem with the current libtool package is that it installs the GNU
libtool commands as 'libtool' and 'libtoolize', respectively, but
build systems on BSD platforms will attempt to run 'glibtool' and
'glibtoolize'. The expedient solution to this problem is to symlink
'libtool' to 'glibtool' and 'libtoolize' to 'glibtoolize', because
attempting to patch the detection logic one build system at a time
seems impractical.
* Added new link line flag
* Refactored some of the common components out of the different
version's build commands. Also corrected the when commands to
properly capture non-numeric names such as local.
* Added support to the Elemental package for the Hydrogen branch.
* Turning off default Qt support. Restricting Qt version to <= 4.9 else geant4 won't build
* Making vecgeom optional
* Differentiating between cxx11 and cxx14 support
* Making vecgeom optional. Part 2. forgot to move usolids option
* Adding explicit CXX11 and CXX14 support
* Adding more clhep version to support newer GEANT4 versions
* Adding GEANT4 versions 10.03.p03 and 10.04
* Checkpoint. Adding opengl and x11 variant. Lead up to more changes to enable X11 support
* Adding dependency on fixesproto for newer versions
* Making the X11 dependent pieces work without requiring X11 on the system
* Adding motif
This provides options for hardware and software rendering with the
gl API and updates the vtk package to make use of those options:
* Create new "gl" virtual package, provided by mesa
* Add external-only "opengl" package, which represents a system
install that provides gl
* For vtk: prefer system gl implementation by default to get speed
up from hardware rendering. When software rendering is specifically
requested (+osmesa), try to use the llvmpipe approach, as it is
much faster.
* Make qt dependency optional for vtk
* Add basic support for VTK on osx
* qt: Depend on virtual gl package, rather than mesa impl
* visit: add version 2.12.3
* visit: add version 2.13.0
* visit: enable building with hdf5+mpi
* visit: add qwt dependency
Building VisIt requires Qwt, which is not part of Qt. Prior to this
commit, this dependency was not included in the VisIt spack package,
resulting in a configure-time bug with an error message indicating a
missing Qwt dependency.
This commit fixes this bug by adding Qwt dependency information.
* Revert "Travis: use --concurrency=multiprocessing only on build tests (#6872)"
This reverts commit 596d463714.
* Removing 'coverage combine' in test script
According to what was discovered in #6887, one of the problems is
calling 'coverage combine' twice without the '-a' flag. This removes
the first call within our test scripts.
Update the qt4 CoreWLAN patch to apply to macOS/OS X 10.12 and 10.13,
which both still use the CoreWLAN framework in their SDKs (although
it's apparently deprecated?!). Without this patch update, `spack
install qt@4.8.6` fails on macOS/OS X 10.12 because the linker
cannot find headers from the CoreWLAN framework.
Apple removed support for Objective-C garbage collection in binaries
in XCode 5.1, but VTK 6.1.0 and earlier set flags for garbage
collection, resulting in a compile-time bug when compiling VTK using
any recent version of XCode (i.e., Apple Clang).
This commit fixes this bug by removing the garbage collection flags
via setting the variable `VTK_REQUIRED_OBJCXX_FLAGS` to the empty
string. This variable has the same value (i.e., the empty string) in
the root-level CMakeLists.txt file for VTK 6.2.0 and later.
VTK 6.1.0 and earlier do not use paths stored in `NETCDF_CXX_ROOT` to
detect the presence of NetCDF C++ headers and libraries. Consequently,
VTK 6.1.0 does not build.
This commit fixes this bug by setting the advanced variables
`NETCDF_CXX_INCLUDE_DIR` and `NETCDF_CXX_LIBRARY` at the command line
to specify the directory containing headers and the full library path
for the NetCDF C++ bindings.
The flag_handlers method was being set as a bound method, but when
reset in the package.py file it was being set as an unbound method
(all python2 issues). This gets the underlying function information,
which is the same in either case.
The bug was uncovered for parmetis in #6858. This is a partial fix.
Included are changes to the parmetis package.py file to make use of
flag_handlers.
This makes use of the new flag_handler logic from 28d8784a to set
compiler flags for ipopt by passing them as arguments to the build
system rather than injecting them into the compiler wrappers. This
avoids conflicts between flags that are chosen by the build system
and flags that are set by the user.
The feature added in #4611 is currently broken. This commit fixes the
behavior of the command and adds unit tests to ensure the basic semantic
is maintained.
It also changes slightly the behavior of Spec.concretized to avoid
copying caches before the concretization (as this may result in a
wrong hash computation for the DAG).
- Generating the HTML from for >2300 packages from RST in Sphinx seems to
take forever.
- Add an option to `spack list` to generate straight HTML instead.
- This reduces the doc build time to about a minute (from 5 minutes on a mac laptop).
* Vendor ordereddict for python2.6 only
This commit substitutes the custom module 'ordereddict_backport' with
the more known 'ordereddict' and vendors it only for python 2.6. Other
supported versions of python will use 'collections.OrderedDict'.
* Use absolute imports also for python 2.6
See PEP-328 for more information on the subject
* Added provenance of vendored ordereddict
* ruby: fix +openssl & +readline variants
Fix "unqualified variable spec['openssl']" error in the ruby package
that arises when trying to install the `+openssl` variant by
referencing the `spec` field in the `Ruby` class. A similar error
arises when trying to install the `+readline` variant; this error is
also fixed by this patch.
* ruby: make +openssl variant default to on
Ruby's gem command will fetch gems from HTTPS resources by default
(e.g., gem install bundler). Without openssl, request to fetch gems
bounce back with the error
```
ERROR: While executing gem ... (Gem::Exception)
Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources
```
Without the ability to install gems -- required for some spack
packages -- the ruby installation has limited utility for many users.
* ruby: update rubygems ssl cert to fix ssl errors
The SSL certificate bundled with Ruby 2.2.0 is outdated, so e.g., `gem
install erubis` will fail with an SSL certificate error. This commit
installs the updated SSL certificate to the proper directory so that
gems can be downloaded and installed from RubyGems.
The url in graphviz has been fixed and its version has been
updated to the latest available (2.40.1). Added variants for
expat, qt, gtk+ and ghostscript.
* py-fparser: parser for Fortran 77..2003 code
* py-fparser: guard against external pytest.ini
* py-fparser: define 'develop' version as latest master branch
* py-fparser: fetch tagged versions from git repo
* py-fparser: add latest release 0.0.6
* py-fparser: whitespace adjustments for flake8
* py-fparser: inherit python dependency from PythonPackage
* py-fparser: rely on spack to resolve sub-dependencies
* py-fparser: try type='test' for py-pytest
* py-fparser: fetch release tarballs instead of git commits
* py-fparser: test deptype is available, remove comment
* py-fparser: limit versions that use py-six
* py-fparser: version ranges do not need a lower bound
* qt: move licence acceptance from qt3krell.patch to qt3accept.patch
* qt: ensure that ptrdiff_t is defined for qt@3.3.8b
* qt: disable webglplugin for qt@5.10~opengl
* qt: depend on libxext (for qt@3 and @4)
* qt: avoid X dependencies on darwin platforms
* Revert "qt: avoid X dependencies on darwin platforms"
This reverts commit 05ce08de94.
* qt: limit range of versions depending on libxext
See #6794
This fixes cases where test-only dependencies were omitted from
consideration when modifying the environment at build time. This
includes an update to the python package definition to add
testing-related python extensions to its specialized environment
setup.
* coinhsl: add version 2014.01.10 (stable)
* coinhsl: make 2014.01.10 preferred version
Make Harwell Subroutines Library for IPOPT version 2014.01.10 the
preferred version because it is the latest stable version released.
* coinhsl: add option to link w/ BLAS libraries
This updates the conflict-checking logic to require that the conflict
spec matches exactly and that all fields mentioned in the conflict
spec are present in the concretized spec in order to report a
conflict. This will automatically skip all conflict checks for
dependencies of externals (since externals strip dependencies). This
will not affect non-external packages since all fields and
dependencies are fully specified for such packages.
According to Travis docs the exit code of after_success doesn't affect
the build result. Instead, uploading the coverage data as the last step
of the script will cause the job to fail if the command exits with
non-zero.
https://docs.travis-ci.com/user/customizing-the-build/#Breaking-the-Build
* Keep track of source and versions for external libraries
* Note source of more obscure libraries
* We aren't upgrading jsonschema after all
* Add note on modifications made to pytest
On a local workstation, it seems that tracking multiple processes during
coverage may result in malformed coverage reports for unit tests and not
for build tests.
Given that multiple processes make a difference in coverage mainly for
build tests, try to disable the tracking for unit tests to see if we get
more stable coverage results.
Building emacs on darwin throws an error when trying to build an Emacs
app in the nextstep/Emacs.app path of the build tree. For now, disable
building this app.
It's possible to enable building the app also; Homebrew offers options
to this effect, and also adds Mac-specific options for starting the
emacs daemon. However, for the sake of simplicity and getting a
workable up-to-date emacs installation on my machine as quickly as
possible, this commit focuses on a minimal viable modification.
* Add a new package: unblur.
* Add a new package: unblur.
* Add a new package: unblur.
* Add a new package: unblur.
Conflicts:
var/spack/repos/builtin/packages/unblur/package.py
* Add a new package: unblur.
* Fix git on ubuntu, first cut
Spack needs to pass information about where the linker
can find `libintl`. We're currently using `LDFLAGS` to do so.
The `LDFLAGS` info is pasted into the command line upstream
of the a file (`libgit.a`) that includes unresolved symbols that
need that library. This fails on Ubuntu, although it seems to
work on CentOS (see #6841).
This change allows git to build on a Ubuntu 16.04.3 droplet.
TODO: test on other platforms...
* Add a bit of useful commentary
* Upgrade recipe for parmetis to be a CMakePackage
+ Eliminate `install` method (use the one from CMakePackage).
+ Move configure options to new method `cmake_args`
+ Move special install instructions for DarwinOS to a `run_after` method.
* Fix run_after section; Remove variant +debug.
Control the find_package of the PNG variant explicitly.
This avoids picking up an "external" PNGwriter install in
case `~png` is picked by changing the default "AUTO" search
to explicit "ON" (required) of "OFF" (ignore if exists).
* py-psyclone: Code generation for the PSyKAl framework from the GungHo project
* py-psyclone: add installation tests based on py.test
* py-psyclone: define 'develop' version as latest master branch
* py-psyclone: extract tagged version 1.5.1 from git repo
* py-psyclone: whitespace adjustments for flake8
* py-psyclone: use compatible versions of py-fparser
* py-psyclone: use type='test' for selected dependencies
* Updating OpenFAST to use explicit lapack and blas libraries from Spack.
* Simplifying openfast blas lib logic and fixes flake8 errors.
* Changing order of blas and lapack libs in openfast package.
* py-pybedtools: Create new package
* py-pybedtools: add py-six requirement
* py-pybedtools: remove py-cython dependency for release version
* py-pybedtools: include minimum version of py-pysam
* Provide build_type variant for Metis.
+ Ideally, we would make Metis a CMakePackage, but `metis@:5` doesn't use CMake.
+ For now, provide a `build_type=` variant similar what is found in
CMakePackage.
+ There is a potential for duplicate specification of `CMAKE_BUILD_TYPE` if both
variants `+debug` and `build_type=` are specified. I am looking for advice on
how this can be resolved.
* Update metis recipe in response to flake8 and user comments.
+ Wrap comment lines that used more than 80 columns.
+ Change `+debug` variant to avoid potential for multiple `-DCMAKE_BUID_TYPE=`
arguments provided to cmake. Specifying this variant no longer appends this
configure option. However, if `+debug` is specified, require
`build_type=Debug` to maintain expected behavior.
* For metis, remove +debug variant; use build_type= instead.
+ Update recipe for metis@4 to extract `build_type=` values and set `OPTFLAGS`
accordingly.
+ For metis@5:, the behavior from the previously supported variant `+debug` can
be obtained with the options `+gdb build_type=Debug`
* Conflicts added for metis@4 when build_type != Release|Debug.
* Use spack function conflicts instead of 'raise InstallError'.
* Create a symbolic link for MotionCor2.
* Create a symbolic link for MotionCor2.
* Create a symbolic link for MotionCor2.
* Create a symbolic link for MotionCor2.
* Adding NEURON package widely used in computational neuroscience community
* flake8 fixes
* Add rx3d variant
* Addressed review comments from Adam
* Addressed 2nd review comments
* Added check for +mpi on bg-q
* Filter spack compiler wrappers in NEURON scripts
Add gcc march=native flag to make front-end build robust
* Make develop as preferred version due to bug in long filename handlings in <= v7.4
* Avoid use of gcc in cross compiling environment
Use arch specific options on cray and bg-q arch
* Simplify cross compiling build:
- v7.5 added and no longer need develop as preferred version
- legacy cray related options removed
- cross compiling args reduced
- python arguments reduced as neuron finds proper libraries
* Simplify bg-q configurations
* Cleanup and unify arch options
* Make sure to add commonly available packages as dependency
* Arch path added to dependent_environment as nrniv needed at runtime
* Support for Power 8 architecture
* Fix python3 on OS X
* flake8 fix
* remove unnecessary conflcist directives
* Added a package for the MDAnalysis toolkit.
* Added a patch file to get rid of compiler warnings with intel compiler
and inlining. Added checksum values for other versions of protobuf.
* Added dependency on Intel compiler for intel patch
* added variant examples to paraview package.py
* qt: added libxt dependency
* add variant to use external hdf5, this is needed when compiling with gcc@4.8.5
* paraview: added python dependecies to PYTHONPATH
* Start adding Nek5000 package
* Add tools to install: genmap, prenek, postnek
* Address comments by @davydden
* Use install_tree (thanks @junghans) and polish
* Update url
* Fix flake formatting errors
* Change F77 and CC compilers
Apparently spack compilers can't be called outside spack and we
have an underscore test in our Nek5000/core/makenek.inc file which
calls F77 compiler.
* Add support for visit and profiling options
* Fix a typo
* Fix a typo
* Remove the C check
* Add visit variant
* Update the install of int_tp tool
* Let MAXNEL to be set during installation
* Added magma package
* Incorporated Serban's change
* Remove deleted files
* argparse.py
* Sync forked Spack repo in github
* Add spectrum-mpi lib path to LD_LIBRAY_PATH in spack_env.
As a result of supporting alternate installation directories, spectrum-mpi does
not use rpath anymore, so we need to set LD_LIBRARY_PATH in spack_env to allow
MPI programs to run during dependent package configuration.
* Fix flake8 error (blank line at EOF)
* xios: XML-IO-SERVER library for IO management of climate models
* xios: install to prefix directory
* xios: add a test case
* xios: define versions to use cache and mirror directories
* xios: use proper svn URL for version 910
* xios: package url must be defined, otherwise uninstall fails
* xios: add trunk version to allow building latest revision
* xios: enable parallel build
* xios: allow installation with mpif90 compiler wrappers
* xios: use mpi variants of dependencies
* xios: allow user to specify MPI launcher via MPIRUN environment variable
* xios: prefer spack versions of blitz and boost (needed for gcc@7)
* xios: enable builds with clang+gfortran on OSX
* xios: use numeric versions for releases, @develop for trunk
* xios: different patches required for @1.0 and @develop
* xios: patch function for clang works across revisions
* xios: link blitz library
* xios: workaround bug 17782 in llvm
* xios: whitespace adjustments for flake8
* xios: avoid bare except clause
* xios: netcdf-fortran inherits ^netcdf+mpi from xios dependencies
* combine all patches for 1612 into a single file, with additional
comments to explain the rational.
* Add kahip decomposition variant.
* Add support for ARM64 architecture.
* filter instead of patching etc/config.*/settings. This eliminates
patch files for 1706, perhaps for the future as well.
* URLs at or before version 1612 have a different structure, so
provide a url_for_version implementation to handle this
* singularity - added master branch as this has latest fixes - 2.4 does not compile on centos 6 without use of this branch
* renamed to develop
* added master branch properly
* add OctavePackage
1. remove import CudaPackage which is not needed anymore
2. mention CudaPackage and OctavePackage in packaging guide
3. adjust OctavePackageTemplate
4. add clue file for Octave build
5. sanity check on self.prefix
* use setup_environment
* esmf: put .mod files in the spack compiler search path
* esmf: allow building with Cray mpi
* esmf: create run-path dependent libraries on osx
* esmf: link fortran interface libraries when building with mpich
* Fix detection of blas and lapack: provide libraries/includes as
arguments to CMake rather than using CMake's auto-detection.
This includes a patch to QMCPACK's CMake files to refer to
Spack-built blas/lapack implementations. This also includes
special-case logic for the intel-mkl implementation of blas/lapack
* Break up unit tests and short tests. Only hard failure if the unit
tests fail, if short tests fail issue a warning only.
* Add QMCPACK 3.3.0, get rid of 3.0.0
* Only specify a file as needing relocation if it contains the spack
root as a text string (this constraint also applies to binaries)
* Don't fail if there is an error retrieving RPATH information from a
binary (even if it is specified as requiring relocation)
This adds the ability for packages to apply compiler flags in one of
three ways: by injecting them into the compiler wrapper calls (the
default in this PR and previously the only automated choice);
exporting environment variable definitions for variables with
corresponding names (e.g. CPPFLAGS=...); providing them as arguments
to the build system (e.g. configure).
When applying compiler flags using build system arguments, a package
must implement the 'flags_to_build_system_args" function. This is
provided for CMake and autotools packages, so for packages which
subclass those build systems, they need only update their flag
handler method specify which compiler flags should be specified as
arguments to the build system.
Convenience methods are provided to specify that all flags be applied
in one of the 3 available ways, so a custom implementation is only
required if more than one method of applying compiler flags is
needed.
This also removes redundant build system definitions from tutorial
examples
- define MPICH_SKIP_MPICXX, link libmpich instead of libmpi
(as per disussion in PR #4990)
ENH: more flexible editing/patching of openfoam env files
CONFIG: comment out requirement for openmpi+thread_multiple
- was originally slated for the 1712 release and beyond, but there are
reportedly unstable version/network combinations.
Leave as comment for future reference, since it may be arise again.
STYLE: renamed openfoam-site.patch as 1706-site.patch (and reformatted)
- to preserve against impending changes in the layout of
config.{csh,sh}/settings
Fixes#5940
This PR changes the option '--restage' of 'spack install' to
'--dont-restage', inverting its meaning and the default behavior
of the command.
* fix post install method for py3 in mercurial
* Update package.py
* Update package.py
* use print_str instead of manual print detection
* Update package.py
* use only depends_on
* Update package.py
* Update package.py
State py3 compatibility for @4.3: according to setup.py from the 4.3.tar.gz from pypi
Fixes#6200
For compilers that successfully run a version detection script but
don't actually return a version, Spack was keeping track of the
empty version and then failing when attempting to construct a
compiler spec. This skips any attempt to add a compiler entry when
no version is reported (but logs when a compiler fails to report
a version).
* Support pruning of vars with Env from_sourcing_file (issue #6501)
- Blacklist string literals or regular expressions of environment
variables that are to be removed from consideration as being affect
by the sourcing of the file. Conversely, whitelist modifications
that should not ignored. Whitelisted variables have priority over
blacklisting.
Eg,
EnvironmentModifications.from_sourcing_file
(
bashrc
blacklist=['JUNK_ENV', 'OPTIONAL_.*'],
whitelist=['OPTIONAL_REQUIRED.*']
)
This modification can be used to eliminate environment variables that
are not generalized for modules (eg, user-specific variables).
* BUG: module prepend-path in wrong order (fixes#6501)
* STYLE: module variables in sorted order (issue #6501)
- looks nicer and also helps when comparing the contents of different
module files.
* ENH: remove duplicates from env paths when creating modules (issue #6501)
- this makes for a cleaner module environment and helps avoid some
unnecessary changes to the environment that are only provoked by
redundancies in the PATH.
eg,
before PATH=/usr/bin
after PATH=/usr/bin:/usr/bin:/my/application/bin
should only result in /my/application/bin being added to the PATH
and not /usr/bin:/my/application/bin
Activate via the 'clean' flag (default: False):
EnvironmentModifications.from_sourcing_file(bashrc, clean=True,..
Add preferred version 2.0.3. Added beta version. Added conflict with
gcc versions >= 5 when building with cuda@8 (which is currently the
only supported cuda version). Added cuda architecture variant. Added
comment about current lack of cuda@9 support.
Fixes#6522
Patch psxevars.sh and psxevars.csh only when year > 2016.
pxevars.csh does not exist for versions before 2017. psxevars.sh
does not appear to require this patch for versions before 2017.
Fixes#2440
The "Getting started" guide should be short and sweet. This commit
simplifies the "Environment-Modules" section pruning:
- outdated / wrong suggestions as noted in #2440
- uncommon setups that are better treated in a reference guide
Fixes#6521.
Bazel's build system filters environment variables, including those
set by Spack for use by its compiler wrapper. This updates the patch
to include the SPACK_DEBUG_LOG_ID variable added in #5837.
* optional path to use spacks py-site-pkgs, install host-cfg for provenance
* add more comments and address review requests
* only use st-pkgs-dir when +python
* ascent does not need doxygen
* capture mpiexec if it exists
* added missing import
* flake8 fix
* default adios variant to False
* ascent develop now reqs conduit master
* optional path to use spacks py-site-pkgs, install host-cfg for provenance
* add more comments and address review requests
* only use st-pkgs-dir when +python
* ascent does not need doxygen
* capture mpiexec if it exists
* added missing import
* flake8 fix
* default adios variant to False
* ascent develop now reqs conduit master
* conduit: use hdf5 1.8 for wider output compat
* Add: Py-Plotly
The requirements of py-plotlit are rather strict fixed to specific
versions, so I did not add an "upper versions" `:` to the constrains.
See
https://github.com/plotly/plotly.py/blob/master/requirements.txt
* Py-Requests, Py-Six, Py-Pytz: Older Versions
Add two older versions of requests, pytz and six for plotly.
- depends on GTK+ with X enabled
(btw, non-X backends are deprecated/removed in GTK+)
- patch for 3.0.1-3.0.2: missing include caused multiple
`error: call of overloaded ‘abs(XYPOSITION)’ is ambiguous`
(seen in GCC 6.3.0); fixed in 3.0.3+
According to the documentation here:
http://www.sphinx-doc.org/en/stable/ext/autodoc.html
"For module data members and class attributes, documentation can either
be put into a comment with special formatting (using a #: to start the
comment instead of just #), or in a docstring after the definition."
* Update CGNS to be able to be used in Trilinos.
* Updating Trilinos to be able to use CGNS.
* Fixing wrong cmake defines in trilinos for enabling cgns and cleaning up cgns package.
* Changing cgns parallel variant to mpi. Removing explicit dependence on parallel-netcdf in trilinos.
Add additional transform libraries to ADIOS.
Also modifies existing transforms to the versions they were
introduced (otherwise this was resulting in unknown configure flags).
* Updated function which checks if a binary file needs relocation.
Previously this was incorrectly identifying ELF binaries as symbolic
links (so they were being excluded from relocation). Added test to
check that ELF binaries are not considered symlinks.
* relocate_text was not replacing paths in text files. Added test to
check that text files are relocated properly (i.e. paths in the file
are converted to the new prefix).
* Exclude backup files created by filter_file when installing from
binary cache.
* Update write_buildinfo_file method signature to distinguish between
the spec prefix and the working directory for the binary cache
package.
"spack spec" was providing helpful error information about conflicts
that was missing from "spack install", this updates "spack install"
to provide the same information.
The original docstring had confusing wording re: what is going to
symlinked and where when using the `extend` directive, and how exactly
the symlinking is performed (not automatically on install, but using
`spack activate`). See #5559.
Showing "Normalize" on output doesn't give users additional information,
as this step is essentially an implementation detail of concretization.
This PR skips it and shows just the input spec and the concretized one.
Printing partial hashes for input spec has been disabled.
* xsdk: Added MFEM rc package.
* xsdk: add version entry for xsdk-0.3.0-rc1 - and set it as preferred version
* xsdk: remove 'xsdk' from version - recommended by Todd.
Now the usage is:
'spack install xsdk@0.3.0-rc1'
instead of the previous usage:
'spack install xsdk@xsdk-0.2.0'
* xsdk: add petsc@3.8.0 as a dependency for xsdk-0.3.0-rc1
* mfem: fix dependency to use the corrected xsdk version
* Updated the mfem version tags.
* mfem: fix merge
* fix flake8 warning
* Modified xSDK scripts
* fixing the default package.yaml
* fix bad revert
* revert changes to superlu-dist so that the 5.2.1 update can be merged
* update xsdk to use superlu-dist-5.2.1
* update alquimia for xsdk
* fix whitespace
* update hypre for xsdk
* update sundials for xsdk
* update sundials for xsdk
* Fix checking for MKL and extend range of GCC versions
* pflotran: update to release branch
* plasma: fix spec -> self.spec
* Changes to enable mfem hooks into hypre, superlu-dist, and petsc. Sundials hooks may come in the future.
* adding plasma with comment
* Bumped the version of mfem up to handle integration with sundials3.0.0. Also enabled hypre in sundials.
* Turn on the plasma package definition for testing
* Fix conflict declaration to obey ordering rules
* xsdk: udate superlu-dist dependency to v5.2.2
* plasma: change gcc dependency to workarround potential spack bug #5778
* trilinos: update hdf5 dependency to use 'hdf5+hl'
Without this change - I get the following error [triggered by 161dca6d5c9810f808 changes]
$ ./bin/spack install trilinos+hdf5
==> Error: An unsatisfiable variant constraint has been detected for spec:
hdf5@1.10.1%gcc@7~cxx~debug~fortran~hl+mpi+pic+shared~szip~threadsafe arch=linux-fedora27-x86_64
while trying to concretize the partial spec:
netcdf+mpi
^m4
^mpich@3.3a2%gcc@7 device=ch3 +hydra netmod=tcp +pmi+romio~verbs arch=linux-fedora27-x86_64
^zlib@1.2.11%gcc@7+optimize+pic+shared arch=linux-fedora27-x86_64
netcdf requires hdf5 variant +hl, but spec asked for ~hl
* plasma: add in -lm dependency per #6046
* update sundials version to 3.0.0
* Add fixes to support Netlib LAPACK
* mfem does not use cmake for builds [anymore] - so remove code corresponding to this dependency.
This enables mfem build on OSX [with xcode/clang compilers]
* mfem: update to v3.3.2-rc4
* add patch for building sundials on mac
* xsdk: enable plasma for gcc-4.9+ - same as what plasma/package.py does.
* magma: Fix for cuda-9.0 as it does not support sm20
nvcc fatal : Unsupported gpu architecture 'compute_20'
* add in code for 'spack install xsdk+cuda' - which installs magma
* fix flake8 warning
* fix flake8 warnings
* Updated to the latest MFEM RC.
* alquimia: fix to use petsc-3.8.0+ versions
* petsc: update to version 3.8.1
* petsc: add in conflict between petsc-3.8.0 & mkl
* xsdk: update petsc to 3.8.1 to get MKL build fix
* petsc: fix superlu_dist dependency
* petsc: when hdf5 depends on zlib - petsc+hdf5 should also be configured with zlib
* petsc: fix dependency [of zlib to be on hdf5 - and not on petsc]
* petsc: fix pkgconfig error - with incorrect library link order that can break mfem examples with static build
* petsc: use the fact that hdf5/package.py has a hard dependency on zlib [so no need to check for this dependency in code]
recommended-by: @davydden
* petsc: change hdf5 dependency to 'hdf5+hl' as petsc configure is looing for -lhdf5_hl
https://github.com/spack/spack/issues/5846
* plasma: also detect -lgfortran
* update sundials version to 3.1.0
* alquimia: xsdk-0.3.0-rc -> xsdk-0.3.0
* petsc: update to version 3.8.2
Includes pkgconfig fix [for mfem static build failure]
* Revert "petsc: fix pkgconfig error - with incorrect library link order that can break mfem examples with static build"
This reverts commit d1afa8c20d.
* xsdk: update to use petsc-3.8.2
* Fixed a problem with MFEM trying to use mpicxx instead of the spack defined compiler.
* Minor changes to the mfem build and pointing at mfem's release branch that is currently undergoing internal testing.
* Enabling shared build for Plasma
* plasma: do not look for libgfortran on cray - spack finds the wrong one from the frontend
'-L/usr/lib64/gcc/x86_64-suse-linux/4.3 -L/usr/lib64 -lgfortran'
* Some changes to the mfem package that are in the process of being pulled into spack/develop.
* xsdk: switch from 0.3.0-rc1 to 0.3.0
* fix flake8 warnings
* plasma: extract plasma changes from xsdk-0.3.0
* plasma: cleanup per review
- netlib-lapack: add support for spec['lapack:c'].libs, spec['blas:c'].libs
- add getblaslapacklibs() to eliminate duplicate code in edit() and build_targets()
- eliminate string manipulation of ld_flags
- remove gfortran check (will check later)
- remove build() (will check later)
* netlib-lapack: fix tuple per review
* netlib-lapack: use spec[lapack:c,fortran]
* Adding version 2.4.3 to ViennaRNA
* Replaced tab indent with spaces
Flake8 error correction
* no swig for viennarna v2.4.3 only
* correcting version/argument conditional syntax error
libtool is also needed for linking, otherwise downstream
dependencies such as clfft will fail linking against pocl's
libOpenCL.so with errors such as:
```
>> 182 /usr/bin/ld: warning: libltdl.so.7, needed by /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/pocl-0.14-rwo73qzkcxfupndxoz3pcl2s34o5pt6i/lib/libOpenCL.so, not found (try using -rpath or -rpath-link)
>> 183 /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/pocl-0.14-rwo73qzkcxfupndxoz3pcl2s34o5pt6i/lib/libOpenCL.so: undefined reference to `lt_dlinit'
>> 184 /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/pocl-0.14-rwo73qzkcxfupndxoz3pcl2s34o5pt6i/lib/libOpenCL.so: undefined reference to `lt_dlerror'
>> 185 /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/pocl-0.14-rwo73qzkcxfupndxoz3pcl2s34o5pt6i/lib/libOpenCL.so: undefined reference to `lt_dlopen'
>> 186 /usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/pocl-0.14-rwo73qzkcxfupndxoz3pcl2s34o5pt6i/lib/libOpenCL.so: undefined reference to `lt_dlsym'
>> 187 collect2: error: ld returned 1 exit status
```
* Reduce the calls to the python interpreter during initialization
This should reduce the delay the users experience when sourcing the
setup file to activate shell support. It works by generating at once
all the commands that needs to evaluated (they are stored in
a string and later `eval`ed by the shell).
* setup_env.sh: changed `read` with an equivalent magic
For some reason `read` breaks when sourced from a running script.
Change the incantation we use to construct the unique python command
that will be evaluated.
* setup_env.sh: python command now constructed with `printf` for portability
This recovers the support for `zsh` that was broken in previous commits.
* py-petsc4py: Update version to 3.8.0 and add dependencies
- Added explicit dependency on python and numpy
* Kept old version - and corrected minimal python version
* Update to 3.8.1
@@ -30,7 +30,7 @@ Project maintainers have the right and responsibility to remove, edit, or reject
## Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the Spack project or its community. Examples of representing the project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of the project may be further defined and clarified by Spack maintainers.
about: Report a bug in the core of Spack (command not working as expected, etc.)
labels: bug
---
*Explain, in a clear and concise way, the command you ran and the result you were trying to achieve.
Example: "I ran Spack find to list all the installed packages and..."*
### Steps to reproduce the issue
```console
$ spack <command1> <spec>
$ spack <command2> <spec>
...
```
### Error Message
If Spack reported an error, provide the error message. If it did not report an error
but the output appears incorrect, provide the incorrect output. If there was no error
message and no output but the result is incorrect, describe how it does not match
what you expect. To provide more information you might re-run the commands with
the additional -d/--stacktrace flags:
```console
$ spack -d --stacktrace <command1> <spec>
$ spack -d --stacktrace <command2> <spec>
...
```
that activate the full debug output.
### Information on your system
This includes:
1. which platform you are using
2. any relevant configuration detail (custom `packages.yaml` or `modules.yaml`, etc.)
-----
We encourage you to try, as much as possible, to reduce your problem to the minimal example that still reproduces the issue. That would help us a lot in fixing it quickly and effectively!
If you want to ask a question about the tool (how to use it, what it can currently do, etc.), try the `#general` channel on our Slack first. We have a welcoming community and chances are you'll get your reply faster and without opening an issue.
Other than that, thanks for taking the time to contribute to Spack!
about: Some package in Spack didn't build correctly
labels: "build-error"
---
*Thanks for taking the time to report this build failure. To proceed with the
report please:*
1. Title the issue "Installation issue: <name-of-the-package>".
2. Provide the information required below.
3. Remove the template instructions before posting the issue.
We encourage you to try, as much as possible, to reduce your problem to the minimal example that still reproduces the issue. That would help us a lot in fixing it quickly and effectively!
---
### Steps to reproduce the issue
```console
$ spack install <spec> # Fill in the exact spec you are using
... # and the relevant part of the error message
```
### Platform and user environment
Please report your OS here:
```commandline
$ uname -a
Linux nuvolari 4.15.0-29-generic #31-Ubuntu SMP Tue Jul 17 15:39:52 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
$ lsb_release -d
Description: Ubuntu 18.04.1 LTS
```
and, if relevant, post or attach:
- `packages.yaml`
- `compilers.yaml`
to the issue
### Additional information
Sometimes the issue benefits from additional details. In these cases there are
a few things we can suggest doing. First of all, you can post the full output of:
```console
$ spack spec --install-status <spec>
...
```
to show people whether Spack installed a faulty software or if it was not able to
build it at all.
If your build didn't make it past the configure stage, Spack as also commands to parse
about: Suggest adding a feature that is not yet in Spack
labels: feature
---
*Please add a concise summary of your suggestion here.*
### Rationale
*Is your feature request related to a problem? Please describe it!*
### Description
*Describe the solution you'd like and the alternatives you have considered.*
### Additional information
*Add any other context about the feature request here.*
-----
If you want to ask a question about the tool (how to use it, what it can currently do, etc.), try the `#general` channel on our Slack first. We have a welcoming community and chances are you'll get your reply faster and without opening an issue.
Other than that, thanks for taking the time to contribute to Spack!
- Simplified package syntax for specifying build/run environment modifications
- Numerous improvements to support for environments across Spack commands
- Concretization improvements
## Documentation
- Multi-lingual documentation (Started a Japanese translation)
- Tutorial now has its own site at spack-tutorial.readthedocs.io
- This enables us to keep multiple versions of the tutorial around
## Deprecations
- Spack no longer supports dotkit (LLNL's homegrown, now deprecated module tool)
-`spack build`, `spack configure`, `spack diy` deprecated in favor of
`spack dev-build` and `spack install`
## Important package changes
- 3,563 total packages (718 added since 0.12.1)
- Spack now defaults to Python 3 (previously preferred 2.7 by default)
- Much improved ARM support thanks to Fugaku (RIKEN) and SNL teams
- Support new special versions: master, trunk, and head (in addition to develop)
- Better finding logic for libraries and headers
# v0.12.1 (2018-11-13)
This is a minor bugfix release, with a minor fix in the tutorial and a `flake8` fix.
Bugfixes
* Add `r` back to regex strings in binary distribution
* Fix gcc install version in the tutorial
# v0.12.0 (2018-11-13)
## Major new features
- Spack environments
-`spack.yaml` and `spack.lock` files for tracking dependencies
- Custom configurations via command line
- Better support for linking Python packages into view directories
- Packages have more control over compiler flags via flag handlers
- Better support for module file generation
- Better support for Intel compilers, Intel MPI, etc.
- Many performance improvements, improved startup time
## License
- As of this release, all of Spack is permissively licensed under Apache-2.0 or MIT, at the user's option.
- Consents from over 300 contributors were obtained to make this relicense possible.
- Previous versions were distributed under the LGPL license, version 2.1.
## New packages
Over 2,900 packages (800 added since last year)
Spack would not be possible without our community. Thanks to all of our
[contributors](https://github.com/spack/spack/graphs/contributors) for the
new features and packages in this release!
# v0.11.2 (2018-02-07)
This release contains the following fixes:
* Fixes for `gfortran` 7 compiler detection (#7017)
* Fixes for exceptions thrown during module generation (#7173)
# v0.11.1 (2018-01-19)
This release contains bugfixes for compiler flag handling. There were issues in `v0.11.0` that caused some packages to be built without proper optimization.
Fixes:
* Issue #6999: FFTW installed with Spack 0.11.0 gets built without optimisations
Includes:
* PR #6415: Fixes for flag handling behavior
* PR #6960: Fix type issues with setting flag handlers
* 880e319: Upstream fixes to `list_url` in various R packages
# v0.11.0 (2018-01-17)
Spack v0.11.0 contains many improvements since v0.10.0.
Below is a summary of the major features, broken down by category.
## New packages
- Spack now has 2,178 packages (from 1,114 in v0.10.0)
- Many more Python packages (356) and R packages (471)
- 48 Exascale Proxy Apps (try `spack list -t proxy-app`)
to learn how to use spack, write packages, or deploy packages for users
at your site.
Tutorial
----------------
See also:
* [Technical paper](http://www.computer.org/csdl/proceedings/sc/2015/3723/00/2807623.pdf) and
[slides](https://tgamblin.github.io/files/Gamblin-Spack-SC15-Talk.pdf) on Spack's design and implementation.
* [Short presentation](https://tgamblin.github.io/files/Gamblin-Spack-Lightning-Talk-BOF-SC15.pdf) from the *Getting Scientific Software Installed* BOF session at Supercomputing 2015.
Written by Todd Gamblin (<ahref="mailto:tgamblin@llnl.gov">tgamblin@llnl.gov</a>) and
many <ahref="https://github.com/spack/spack/graphs/contributors">contributors.</a> LLNL-CODE-647188.
{%- if last_updated %}
<br/>
{% trans last_updated=last_updated|e %}Last updated on {{ last_updated }}.{% endtrans %}
{%- endif %}
</p>
</div>
{%- if show_sphinx %}
{% trans %}Built with <ahref="http://sphinx-doc.org/">Sphinx</a> using a <ahref="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <ahref="https://readthedocs.org">Read the Docs</a>{% endtrans %}.
{% trans %}Please activate JavaScript to enable the search
functionality.{% endtrans %}
</p>
</div>
</noscript>
{% if search_performed %}
<h2>{{ _('Search Results') }}</h2>
{% if not search_results %}
<p>{{ _('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.') }}</p>
{% endif %}
{% endif %}
<divid="search-results">
{% if search_results %}
<ul>
{% for href, caption, context in search_results %}
# The .gitlab-ci.yml for this project picks a Docker container which does
# not have any compilers pre-built and ready to use, so we need to fake the
# existence of those here.
- compiler:
operating_system:centos7
modules:[]
paths:
cc:/not/used
cxx:/not/used
f77:/not/used
fc:/not/used
spec:gcc@5.5.0
target:x86_64
- compiler:
operating_system:centos7
modules:[]
paths:
cc:/not/used
cxx:/not/used
f77:/not/used
fc:/not/used
spec:gcc@6.5.0
target:x86_64
- compiler:
operating_system:centos7
modules:[]
paths:
cc:/not/used
cxx:/not/used
f77:/not/used
fc:/not/used
spec:clang@6.0.0
target:x86_64
- compiler:
operating_system:centos7
modules:[]
paths:
cc:/not/used
cxx:/not/used
f77:/not/used
fc:/not/used
spec:clang@6.0.1
target:x86_64
- compiler:
operating_system:ubuntu18.04
modules:[]
paths:
cc:/not/used
cxx:/not/used
f77:/not/used
fc:/not/used
spec:clang@6.0.0
target:x86_64
- compiler:
operating_system:ubuntu18.04
modules:[]
paths:
cc:/not/used
cxx:/not/used
f77:/not/used
fc:/not/used
spec:clang@6.0.1
target:x86_64
- compiler:
operating_system:ubuntu18.04
modules:[]
paths:
cc:/not/used
cxx:/not/used
f77:/not/used
fc:/not/used
spec:gcc@6.5.0
target:x86_64
- compiler:
operating_system:ubuntu18.04
modules:[]
paths:
cc:/not/used
cxx:/not/used
f77:/not/used
fc:/not/used
spec:gcc@7.3.0
target:x86_64
gitlab-ci:
bootstrap:
- name:compiler-pkgs
compiler-agnostic:true
mappings:
- # spack-cloud-ubuntu
match:
# these are specs, if *any* match the spec under consideration, this
# 'mapping' will be used to generate the CI job
- os=ubuntu18.04
runner-attributes:
# 'tags' and 'image' go directly onto the job, 'variables' will
# be added to what we already necessarily create for the job as
# a part of the CI workflow
tags:
- spack-k8s
image:
name:scottwittenburg/spack_builder_ubuntu_18.04
entrypoint:[""]
- # spack-cloud-centos
match:
# these are specs, if *any* match the spec under consideration, this
# 'mapping' will be used to generate the CI job
- 'os=centos7'
runner-attributes:
tags:
- spack-k8s
image:
name:scottwittenburg/spack_builder_centos_7
entrypoint:[""]
cdash:
build-group:Release Testing
url:http://cdash
project:Spack Testing
site:Spack Docker-Compose Workflow
repos:[]
upstreams:{}
modules:
enable:[]
packages:{}
config:{}
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.