A flexible package manager that supports multiple versions, configurations, platforms, and compilers.
Go to file
Seth R. Johnson 4b400d5032 Update VisIt to version 3.0.1 and fix on mac (#12396)
* 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)
```
2019-08-15 10:13:45 -05:00
.github Revert "add maintainer review action to main.workflow" (#12316) 2019-08-07 17:23:47 -07:00
bin Fix typo in spack executable (#11512) 2019-05-18 21:00:46 -05:00
etc/spack/defaults Make OpenJDK the default (#12106) 2019-07-25 10:25:26 -07:00
lib/spack Fix "spack loads" when retrieving upstream modules (#12203) 2019-08-13 11:09:40 -07:00
share/spack new command: spack maintainers queries package maintainers 2019-07-24 14:10:08 -07:00
var/spack Update VisIt to version 3.0.1 and fix on mac (#12396) 2019-08-15 10:13:45 -05:00
.codecov.yml coverage: restore status updates on PRs (#12032) 2019-07-15 22:45:00 -07:00
.coveragerc coverage: use kcov to get coverage for our cc script 2018-12-29 23:47:29 -08:00
.dockerignore fix multiple issues with the docker images (#9718) 2018-12-20 11:11:55 -08:00
.flake8 flake8: add exceptions for overly pedantic camelcase rules from pep8-naming (#11477) 2019-05-16 09:47:02 +02:00
.flake8_packages flake8: add exceptions for overly pedantic camelcase rules from pep8-naming (#11477) 2019-05-16 09:47:02 +02:00
.gitignore env: add spack env command, along with env.yaml schema and tests 2018-11-09 00:31:24 -08:00
.mailmap Update for 'eccodes'. (#6604) 2017-12-08 09:34:37 +01:00
.readthedocs.yml Updated Sphinx configuration (#11165) 2019-04-11 14:38:52 -07:00
.travis.yml Avoid sending empty reports to codecov (#12293) 2019-08-06 10:35:23 -07:00
COPYRIGHT relicense: update COPYRIGHT, LICENSE-*, README, CONTRIBUTING, and NOTICE 2018-10-17 14:42:06 -07:00
LICENSE-APACHE relicense: update COPYRIGHT, LICENSE-*, README, CONTRIBUTING, and NOTICE 2018-10-17 14:42:06 -07:00
LICENSE-MIT copyright: update license headers for 2013-2019 copyright. 2019-01-01 00:44:28 -08:00
NOTICE relicense: update COPYRIGHT, LICENSE-*, README, CONTRIBUTING, and NOTICE 2018-10-17 14:42:06 -07:00
README.md readme: make list of links even tighter. 2019-06-30 23:15:37 -07:00

Spack Spack

Build Status codecov Read the Docs Slack

Spack is a multi-platform package manager that builds and installs multiple versions and configurations of software. It works on Linux, macOS, and many supercomputers. Spack is non-destructive: installing a new version of a package does not break existing installations, so many configurations of the same package can coexist.

Spack offers a simple "spec" syntax that allows users to specify versions and configuration options. Package files are written in pure Python, and specs allow package authors to write a single script for many different builds of the same package. With Spack, you can build your software all the ways you want to.

See the Feature Overview for examples and highlights.

To install spack and your first package, make sure you have Python. Then:

$ git clone https://github.com/spack/spack.git
$ cd spack/bin
$ ./spack install zlib

Documentation

Full documentation is available, or run spack help or spack help --all.

Tutorial

We maintain a hands-on tutorial. It covers basic to advanced usage, packaging, developer features, and large HPC deployments. You can do all of the exercises on your own laptop using a Docker container.

Feel free to use these materials to teach users at your organization about Spack.

Community

Spack is an open source project. Questions, discussion, and contributions are welcome. Contributions can be anything from new packages to bugfixes, documentation, or even new core features.

Resources:

Contributing

Contributing to Spack is relatively easy. Just send us a pull request. When you send your request, make develop the destination branch on the Spack repository.

Your PR must pass Spack's unit tests and documentation tests, and must be PEP 8 compliant. We enforce these guidelines with Travis CI. To run these tests locally, and for helpful tips on git, see our Contribution Guide.

Spack uses a rough approximation of the Git Flow branching model. The develop branch contains the latest contributions, and master is always tagged and points to the latest stable release.

Code of Conduct

Please note that Spack has a Code of Conduct. By participating in the Spack community, you agree to abide by its rules.

Authors

Many thanks go to Spack's contributors.

Spack was created by Todd Gamblin, tgamblin@llnl.gov.

Citing Spack

If you are referencing Spack in a publication, please cite the following paper:

License

Spack is distributed under the terms of both the MIT license and the Apache License (Version 2.0). Users may choose either license, at their option.

All new contributions must be made under both the MIT and Apache-2.0 licenses.

See LICENSE-MIT, LICENSE-APACHE, COPYRIGHT, and NOTICE for details.

SPDX-License-Identifier: (Apache-2.0 OR MIT)

LLNL-CODE-647188