This PR removes [end of life](https://endoflife.date/python) versions of Python from Spack. Specifically, this includes all versions of Python older than 3.7.
See https://github.com/spack/spack/discussions/31824 for rationale. Deprecated in #32615. And #28003.
For anyone using software that relies on Python 2, you have a few options:
* Upgrade the software to support Python 3. The `3to2` tool may get you most of the way there, although more complex libraries may need manual tweaking.
* Add Python 2 as an [external package](https://spack.readthedocs.io/en/latest/build_settings.html#external-packages). Many Python libraries do not support Python 2, but you may be able to add older versions that did once upon a time.
* Use Spack 0.19. Spack 0.19 is the last release to officially support Python 3.6 and older
* Create and maintain your own [custom repository](https://spack.readthedocs.io/en/latest/repositories.html). Basically, you would need a package for Python 2 and any other Python 2-specific libraries you need.
Explicitly import package utilities in all packages, and corresponding fallout.
This includes:
* rename `spack.package` to `spack.package_base`
* rename `spack.pkgkit` to `spack.package`
* update all packages in builtin, builtin_mock and tutorials to include `from spack.package import *`
* update spack style
* ensure packages include the import
* automatically add the new import and remove any/all imports of `spack` and `spack.pkgkit`
from packages when using `--fix`
* add support for type-checking packages with mypy when SPACK_MYPY_CHECK_PACKAGES
is set in the environment
* fix all type checking errors in packages in spack upstream
* update spack create to include the new imports
* update spack repo to inject the new import, injection persists to allow for a deprecation period
Original message below:
As requested @adamjstewart, update all packages to use pkgkit. I ended up using isort to do this,
so repro is easy:
```console
$ isort -a 'from spack.pkgkit import *' --rm 'spack' ./var/spack/repos/builtin/packages/*/package.py
$ spack style --fix
```
There were several line spacing fixups caused either by space manipulation in isort or by packages
that haven't been touched since we added requirements, but there are no functional changes in here.
* [x] add config to isort to make sure this is maintained going forward
Most of these are perl packages that need to point to the meta docs site,
and then a fair amount of http addresses that need to be https, and then
the rest are usually documentation sites that no longer exist or were
otherwise changes
Signed-off-by: vsoch <vsoch@users.noreply.github.com>
Co-authored-by: vsoch <vsoch@users.noreply.github.com>
* fix remaining flake8 errors
* imports: sort imports everywhere in Spack
We enabled import order checking in #23947, but fixing things manually drives
people crazy. This used `spack style --fix --all` from #24071 to automatically
sort everything in Spack so PR submitters won't have to deal with it.
This should go in after #24071, as it assumes we're using `isort`, not
`flake8-import-order` to order things. `isort` seems to be more flexible and
allows `llnl` mports to be in their own group before `spack` ones, so this
seems like a good switch.
* Fixed a bug in the DiHydrogen package where the variant legacy was
changed to distconv and wasn't fully propagated. Cleaned up the
openmp variants on the blas library packages in DiHydrogen and
Elemental. Extended support for Aluminum v1.0 in LBANN, Hydrogen, and
DiHydrogen. Fixed a when clause in the LBANN dependencies.
* Removed the upper range limit for the Aluminum library dependence
* Update var/spack/repos/builtin/packages/dihydrogen/package.py
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
- [x] add `concretize.lp`, `spack.yaml`, etc. to licensed files
- [x] update all licensed files to say 2013-2021 using
`spack license update-copyright-year`
- [x] appease mypy with some additions to package.py that needed
for oneapi.py
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
- 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
* 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 -
* 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.
* 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.
* Fixed the datatype flag in the LBANN package.
Fixed where the datatype flag should be set.
* Added variant to OpenCV to disable building DNN support
* Fixed a bug in how the elemental package tries to find its Fortran
library. The current method does not work with Intel compilers.
* Added necessary paths for cuDNN and CUB.
* Addressed flake8 issues in Elemental package.
* Fixed several flake8 errors. Added variant to build with or without
support for arbitrary-precision floating point arithmetic.
* Added the proper CMake flag when MPFR support is disabled.
* Fixed a bug in how the cudnn path was being set when there was no
cudnn requested. Also requested that OpenCV is built without eigen
support.
* Fixed another bug where a dependency may not be there and thus should
not be always checked.
* blas_lapack: add multithreading variant
* elemental: update
* intel-mkl: extend to macOS
* rename multithreading to threads
* intel-mkl: avoid long lines
* intel-mkl: make one install error a conflict
* openblas: fix a minor bug in the test
* Added a package for the MDAnalysis toolkit.
* Added additional packages that Elemental depends on.
* Changed LBANN to not ask for the scalapack variant in Elemental.
* Removed variant control on scalapack
* Added a package for the MDAnalysis toolkit.
* Added a patch that allows Elemental to use cuBLAS internally.
* Added support for LBANN to use the new cuBLAS extension in Elemental.
* Added a proper variant for when LBANN does not want to use cuBLAS in
elemental.
* Added a package for the cnpy project and used it in the lbann package.
* Removed unnecessary comment lines.
* Removed blank lines
* Removed debug variant
* Add support for libjpeg-turbo
* Added additional variants for OpenCV features. Fixed bug when linking
in TIFF support, where libtiff used the regular JPEG library and
OpenCV used libjpeg-turbo. Now libtiff can use libjpeg-turbo.
* Removed the variant for getting Elemental to use the cublas variant.
Updated the requirements for OpenCV to add new options.
* Fixed a flake8 error in OpenCV and added a path to find cnpy in lbann.
* Fixed line too long flake8 error.
* Added a flag to specify the datatype size in lbann and fixed a flake8 error.
* Added a debug build variant using hte new build_type
* Fixed flake8
* Fixed how the debug build is pushed to Elemental
* Fixed a bug in the Elemental package where the blas search flags were
being overridden by the blas link flags. Changed how the sequential
initialization variant is implemented in LBANN.
* Added support via a variant to explicitly use mkl or openblas. This
helps work around variant forwarding problems.
* Updated package files to address pull request comments.
* Add universal build_type variant to CMakePackage
* Override build_type in some packages with different possible values
* Remove reference to no longer existent debug variant
* Update CBTF packages with new build_type variant
* Keep note on build size of LLVM
* Added a package for the MDAnalysis toolkit.
* Added the dependency on setuptools.
* Added the rest of the dependencies to the py-mdanalysis package. Also
added the griddataformats and seaborn packages to satisfy requirements.
* Removed seaborn package since it has been recently added.
* Fixed flake8 error
* Removed inadvertent commits.
* Cleaned up reviewers feedback.
* Creating a spack package for LLNL's LBANN (Livermore Big
Artificial Neural Network) training toolkit.
* Recipe for building LBANN toolkit. Contains limited feature set and
is optimized for building with GNU gcc and OpenBLAS.
* Removed unnecessary dependencies based on reviewers feedback.
* Added support for the int64 data type in the Elemental library. This
is required for supporting indices for large matrices.
* Added a variant to force a sequential weight matrix initialization.
This is slow, but provides an initialization that is independent of
model parallelism.
* Added a guard to prevent building Elemental with the Intel compiler
for versions that have known bugs.