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
- 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
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`.
* 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.
Add additional transform libraries to ADIOS.
Also modifies existing transforms to the versions they were
introduced (otherwise this was resulting in unknown configure flags).
- hdf5's +hl variant is required because the build uses libhdf5_hl.
- sz is only compatible up to version 1.4.10 because the library has
been renamed to libSZ in 1.4.11.
Fixes#4112
This commit extends the support of the AutotoolsPackage methods
`with_or_without` and `enable_or_disable` to bool-valued variants. It
also defines for those functions a convenience short-cut if the
activation parameter is the prefix of a spec (like in
`--with-{pkg}={prefix}`).
This commit also includes:
* Updates to viennarna and adios accordingly: they have been modified to
use `enable_or_disable` and `with_or_without`
* Improved docstrings in `autotools.py`. Raise `KeyError` if name is
not a variant.
* adios: conform to pep8
* adios: added versions 1.11.0 and 1.12.0
* adios: added variant no_mpi to explicitly disable mpi support
* adios: add new variant mxml
adios v1.12.0 onwards contains an xml library built within.
To build with an external mxml, a new variant must be used
* adios: new variant for sz transform
* adios: flexpath and dataspaces staging variants
Two new variants for staging: flexpath and dataspaces.
New variant 'staging' that will enable both
* adios: dependency on libtool:2.4.2 since adios does not build with newer libtool 2.4.6
* adios: better description for variant no-mpi
* adios: new variant for netcdf
as requested by @mamelara from LBL
* adios: renamed variant 'no_mpi' to 'serial'
* adios: removed variant mxml
* adios: corrected implementation of the mpi dependency, along with its relation with the 'serial' variant
Added conflicts between 'serial' and other variants
* adios: added 'else' clause when variants are not added
* adios: replaced variant 'serial' with 'mpi'
* adios: Added configure option to explicitly disable variants that are not enabled.
* adios: setting default zfp to true
* adios: fixed flake8 errors
* adios: removed some old comments
* adios: setting default sz to False.
It is recommended to set default to False when dependency is on develop (sz@develop).
* adios: removing dependency on develop for sz and setting default sz to true
* adios: updated url to latest release.
Just keeping it clean
* Changed every 'fpic' variant to 'pic'. fixes#2463
Every variant that activates compilation of position independent code
has been changed to 'pic'. Hardcoded compiler flags in packages have
been substituted with `self.compiler.pic_flag`.
* Changed literal uses of '-fpic' to 'self.compiler.pic_flag'
* ADIOS: change the invocation of python script that generates test files
The python script ADIOS*/utils/gpp/gpp.py is invoked directly in the
ADIOS*/tests/genarray/Makefile and the name of the python interpreter
can be quite long if it is one built under spack, i.e. longer than the
80 characters allowed by the #! line in bash. The name of the shbang
line is truncated at 80 characters and bash cannot find the python
interpreter specified.
This fix changes how the script is executed, by invoking it under
python. This way, the shbang line is ignored.
* adios: fixed flake8 errors from previous commit.
* adio: Switch to AutotoolsPackage class from Package class
Switched in order to add support for the ppc64le platform.
This PR updates the ADIOS package.
**Changes:**
- add latest stable release `1.10.0`
- add previous versions (hashes)
- add default license header
- add build options (shamelessly taken from HDF5 package)
- add validation for excisting FC (as in HDF5) and make optional
- handle mxml dependency correctly (not required in 1.10.0+)
- add `CFLAGS=-fPIC` to build shared (python) libs in ADIOS' lib
- remove `-DMPICH_IGNORE_CXX_SEEK` since it is normally not required
- remove `MPICC/CXX?FC` since `--with-mpi` just performs well
- add transforms:
- `zlib`: useful (optional) default
- `szip`: optional (compile often broken)
- add transports that are not as performant as the `.bp` format:
- `hdf5`: non-default
- `netcdf`: non-default, close#1610