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
* 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
* 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
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.
* 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
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.
* 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
* 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
* 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.