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.
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.
* 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
See the discussion about installing jar files in #4386.
Also installs a wrapper script that has explicit references to the
prerequisite java exe and to the jar file in it's final resting place.