Commit graph

13931 commits

Author SHA1 Message Date
Massimiliano Culpo
9635ff3d20
spack containerize generates containers from envs (#14202)
This PR adds a new command to Spack:
```console
$ spack containerize -h
usage: spack containerize [-h] [--config CONFIG]

creates recipes to build images for different container runtimes

optional arguments:
  -h, --help       show this help message and exit
  --config CONFIG  configuration for the container recipe that will be generated
```
which takes an environment with an additional `container` section:
```yaml
spack:
  specs:
  - gromacs build_type=Release 
  - mpich
  - fftw precision=float
  packages:
    all:
      target: [broadwell]

  container:
    # Select the format of the recipe e.g. docker,
    # singularity or anything else that is currently supported
    format: docker
    
    # Select from a valid list of images
    base:
      image: "ubuntu:18.04"
      spack: prerelease

    # Additional system packages that are needed at runtime
    os_packages:
    - libgomp1
```
and turns it into a `Dockerfile` or a Singularity definition file, for instance:
```Dockerfile
# Build stage with Spack pre-installed and ready to be used
FROM spack/ubuntu-bionic:prerelease as builder

# What we want to install and how we want to install it
# is specified in a manifest file (spack.yaml)
RUN mkdir /opt/spack-environment \
&&  (echo "spack:" \
&&   echo "  specs:" \
&&   echo "  - gromacs build_type=Release" \
&&   echo "  - mpich" \
&&   echo "  - fftw precision=float" \
&&   echo "  packages:" \
&&   echo "    all:" \
&&   echo "      target:" \
&&   echo "      - broadwell" \
&&   echo "  config:" \
&&   echo "    install_tree: /opt/software" \
&&   echo "  concretization: together" \
&&   echo "  view: /opt/view") > /opt/spack-environment/spack.yaml

# Install the software, remove unecessary deps and strip executables
RUN cd /opt/spack-environment && spack install && spack autoremove -y
RUN find -L /opt/view/* -type f -exec readlink -f '{}' \; | \
    xargs file -i | \
    grep 'charset=binary' | \
    grep 'x-executable\|x-archive\|x-sharedlib' | \
    awk -F: '{print $1}' | xargs strip -s


# Modifications to the environment that are necessary to run
RUN cd /opt/spack-environment && \
    spack env activate --sh -d . >> /etc/profile.d/z10_spack_environment.sh

# Bare OS image to run the installed executables
FROM ubuntu:18.04

COPY --from=builder /opt/spack-environment /opt/spack-environment
COPY --from=builder /opt/software /opt/software
COPY --from=builder /opt/view /opt/view
COPY --from=builder /etc/profile.d/z10_spack_environment.sh /etc/profile.d/z10_spack_environment.sh

RUN apt-get -yqq update && apt-get -yqq upgrade                                   \
 && apt-get -yqq install libgomp1 \
 && rm -rf /var/lib/apt/lists/*

ENTRYPOINT ["/bin/bash", "--rcfile", "/etc/profile", "-l"]
```
2020-01-30 17:19:55 -08:00
Patrick Gartung
ed501eaab2
Bypass build_cache/index.html read when trying to download spec.yaml for concretized spec. (#14698)
* Add binary_distribution::get_spec which takes concretized spec
Add binary_distribution::try_download_specs for downloading of spec.yaml files to cache
get_spec is used by package::try_install_from_binary_cache to download only the spec.yaml
for the concretized spec if it exists.
2020-01-30 16:06:50 -06:00
Patrick Gartung
12a99f4a2d
Use non-mutable default for names in binary_distribution::get_specs call (#14696)
* Use non-mutable default for names

* Make suggested change
2020-01-30 15:17:55 -06:00
Andrew W Elble
b072caadec
fix: py-pillow build_ext vs. install (#14666)
Previously, the install stage would compile in things that were
disabled during the build_ext phase. This would also result in the
build pulling in locally installed versions of libraries that were
disabled. The install process doesn't honor the same command-line
flags that build_ext does, but does call build_ext again. Avoid the
whole issue by just writing the options to setup.cfg

Also, add the Imagemagick dependency for tests.
2020-01-30 14:42:48 -06:00
Peter Scheibel
7b2895109c
Document how to add conditional dependencies (#14694)
* add short docs section on conditional dependencies
* add reference to spec syntax
* add note that conditional dependencies can save time
2020-01-30 12:34:54 -08:00
Peter Scheibel
b2adcdb389
Bugfix: put environment lock in the right place (#14692)
Locate the environment lock in the hidden environment directory
rather than the root of the environment.
2020-01-30 11:13:36 -08:00
Massimiliano Culpo
1e0408d05a
Updated docstring and version of lmod to v8.3 (#14687) 2020-01-30 12:33:16 -06:00
Adam J. Stewart
ee35d949f9
Add GDAL 3.0.4 (#14688) 2020-01-30 12:08:47 -06:00
Patrick Gartung
23a7feb917
Limit the number of spec files downloaded to find matches for buildcaches (#14659)
* Limit the number of spec flies downloaded to find matches
2020-01-30 10:56:10 -06:00
Jennifer Herting
a5b2347cfe
[py-joblib] added version 0.11 (#14672) 2020-01-30 02:27:04 -08:00
Jennifer Herting
23a759cda0
[r-manipulatewidget] added versions (#14674) 2020-01-30 02:26:48 -08:00
Jennifer Herting
39035e4517
[r-rgl] added version 0.100.19 (#14675) 2020-01-30 02:26:24 -08:00
Todd Gamblin
3519a17624 specs: avoid traversing specs when parsing
The Spec parser currently calls `spec.traverse()` after every parse, in
order to set the platform if it's not set.  We don't need to do a full
traverse -- we can just check the platforrm as new specs are parsed.

This takes about a second off the time required to import all packages in
Spack (from 8s to 7s).

- [x] simplify platform-setting logic in `SpecParser`.
2020-01-29 21:15:58 -08:00
Todd Gamblin
a2f8a2321d repo: avoid unnecessary spec parsing in filename_for_package_name()
`filename_for_package_name()` and `dirname_for_package_name()`
automatically construct a Spec from their arguments, which adds a fair
amount of overhead to importing lots of packages.  Removing this removes
about 11% of the runtime of importing all packages in Spack (9s -> 8s).

- [x] `filename_for_package_name()` and `dirname_for_package_name()` now
  take a string `pkg_name` arguments instead of specs.
2020-01-29 21:15:58 -08:00
Peter Scheibel
85ef1be780
environments: synchronize read and uninstall (#14676)
* `Environment.__init__` is now synchronized with all writing operations
* `spack uninstall` now synchronizes its updates to any associated environment
  * A side effect of this is that the environment is no longer updated piecemeal as specs are uninstalled - all specs are removed from the environment before they are uninstalled
2020-01-29 17:22:44 -08:00
Cameron Smith
488e25ea34
pumi: sim version check, meshes via submodule, ctest (#14597)
* pumi: sim version check, meshes via submodule, ctest

* Apply suggestions from code review

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>

* pumi: update comment on master version string

* pumi: description of simmodsuite_version_check variant

* pumi: add white space to variant description

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-01-29 18:29:07 -06:00
Greg Becker
bd60e0f137
fix cycle dependency in libxml+python (#13847)
* fix cycle dependency in libxml+python
* comment why we need these dependencies
2020-01-29 12:39:55 -08:00
noguchi-k
da189b8d1d
Fastx-toolkit package: patch for Fujitsu compiler (#14218)
Specify the scope of pragma pack
2020-01-29 11:45:37 -08:00
Adam J. Stewart
ed4d544e8f
Fix py-pillow tests (#14670) 2020-01-29 13:24:44 -06:00
Robert Pavel
b142914b24
Added MiniAMR@1.4.4 (#14667) 2020-01-29 13:24:22 -06:00
Robert Pavel
30c8e1d8a0
Added xsbench@19 to Version List (#14668) 2020-01-29 13:24:03 -06:00
Jennifer Herting
549aae7f72
[py-griddataformats] added new versions (#14671) 2020-01-29 13:23:22 -06:00
Michael Kuhn
52a7f94d9e
pythia8: add new package (#14665) 2020-01-29 11:40:39 -06:00
Matthias Wolf
4e3617fe1d
py-pyperf: add 1.6.{0,1} (#14662) 2020-01-29 09:00:03 -06:00
Matthias Wolf
1af36f0cdc
flatbuffers: add 1.11.0 (#14663) 2020-01-29 08:58:41 -06:00
Matthias Wolf
53d891a501
py-black: update url, add 19.3b0 (#14664) 2020-01-29 08:56:54 -06:00
Tamara Dahlgren
60ed6d2012
bugfix: correct exception message matching in tests (#14655)
This commit makes two fundamental corrections to tests:
1) Changes 'matches' to the correct 'match' argument for 'pytest.raises' (for all affected tests except those checking for 'SystemExit');
2) Replaces the 'match' argument for tests expecting 'SystemExit' (since the exit code is retained instead) with 'capsys' error message capture.

Both changes are needed to ensure the associated exception message is actually checked.
2020-01-28 22:57:26 -08:00
t-karatsu
f7ec09d30b
Fujitsu compiler: Defining option that is always added. (#14657) 2020-01-28 21:02:40 -06:00
Andrew W Elble
9d7e482497
git: add version 2.25.0 and fixup pcre dependency (#14649)
* git: add version 2.25.0 and fixup pcre dependency

pcre2 became optional in 2.14 and the default in 2.18. I noticed this
as git was compiling against the system pcre2 (spack was
specifying pcre as the dependency).

* missed a chunk from my internal repo
2020-01-28 21:01:25 -06:00
Peter Scheibel
69feea280d
env: synchronize updates to environments (#14621)
Updates to environments were not multi-process safe, which prevented them from taking advantage of parallel builds as implemented in #13100.  This is a minimal set of changes to enable `spack install` in an environment to be parallelized:

- [x] add an internal lock, stored in the `.spack-env` directory, 
      to synchronize updates to `spack.yaml` and `spack.lock`
- [x] add `Environment.write_transaction` interface for this lock
- [x] makes use of `Environment.write_transaction` in `install`, 
      `add`, and `remove` commands

- `uninstall` is not synchronized yet; that is left for a future PR.
2020-01-28 17:26:26 -08:00
Glenn Johnson
e710656310 Set netcdf-fortran to build serially with Intel compiler (#14461)
* Set netcdf-fortran to build serially with Intel compiler

This PR turns off parallel builds when the Intel compiler is used.
Builds with the Intel compiler will fail otherwise.

* Change how parallel build is handled

Use patch from netcdf-fortran project to turn off parallel buildi for
version 4.5.2.
2020-01-28 15:13:51 -06:00
darmac
2b0b340aab racon: support aarch64 and fix install error (#14529)
* racon: support aarch64 and fix install error

* add aarch64 patch for racon
2020-01-28 15:12:40 -06:00
noguchi-k
ea0a549db3 pcma: set return value and change return type of function (#14579) 2020-01-28 15:08:35 -06:00
t-karatsu
492b600d29 diffutils: Changed the handling of undeclared functions from warning … (#14593)
* diffutils: Changed the handling of undeclared functions from warning to error.

* diffutils: Change the handling of warnings or error

* Delete '-Werror=implicit-function-declaration'

* Add '-Qunused-arguments'
2020-01-28 15:06:37 -06:00
Glenn Johnson
0605fc1557 Build graphite2 with Intel compiler (#14636)
This PR sets the definition of REGPARM when building with the Intel
compiler.
2020-01-28 15:03:13 -06:00
Matthias Diener
94def872ee Moreutils: add new package (#14653)
* moreutils: add new package

* fix flake8
2020-01-28 15:02:07 -06:00
Brian Van Essen
f17ce36da2 Fixed path for CEREAL and Protobuf (#14641) 2020-01-28 15:01:50 -06:00
Axel Huebl
2b6106524a openPMD-api: With ADIOS2 by Default (#14643)
Replace the deprecated ADIOS1 backend default with ADIOS2 default.
Disable sz since we do not need it and it conflicts with supported
version ranges between ADIOS2 and ADIOS1 if someone enables both.
2020-01-28 15:01:15 -06:00
noguchi-k
635fc62de0 powerapi: add a space between literal and identifier (#14645) 2020-01-28 14:59:59 -06:00
noguchi-k
da091c0cf5 med: add a space between literal and identifier (#14646) 2020-01-28 14:59:23 -06:00
Ben Morgan
16da648d03 intel-tbb: Fix install names on Darwin (#14650)
* intel-tbb: Fix install names on Darwin

Intel-TBB's libraries on Darwin are installed with "@rpath" prefixed
to their install names. This was found to cause issues building the root
package on Darwin due to libtbb not being found when running some of the
generated tools linking to it.

Follow example from other packages with the same issue and fixup up install
names for intel-tbb post install.

* intel-tbb: fix flake8 errors
2020-01-28 14:57:25 -06:00
Glenn Johnson
48a12c8773 Note about Intel compiler segfault with long paths (#14652)
This PR adds a note about segfaults with the Intel compiler when the
install paths are long and the dependencies many.
2020-01-28 14:57:06 -06:00
Greg Becker
52ab2421bb
Fix handling of filter_file exceptions (#14651) 2020-01-28 12:49:26 -08:00
iarspider
67c6d99219 Fix for #14148 (#14595)
* Dirty hack to fix #14148

* A better way of checking if a package is taken from system

* Update var/spack/repos/builtin/packages/qt/package.py

Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>

* Update qt/package.py

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2020-01-28 14:15:29 -06:00
Christoph Junghans
12b0340d2f ninja: add v1.10.0 (#14647) 2020-01-28 09:34:31 -08:00
Andrew W Elble
3f5bed2e36 make the new 'spack load' faster (#14628)
before, a 'time spack load singularity'
4.129u 0.346s 0:04.47 99.7%	0+0k 0+8io 0pf+0w

after, a 'time spack load singularity'
0.844u 0.319s 0:01.16 99.1%	0+0k 0+16io 0pf+0w
2020-01-27 20:53:52 -08:00
Owen Solberg
f58004e436 fix spack env loads example (#14558) 2020-01-27 20:49:53 -08:00
Adam Moody
6ab2c3caa3 mpifileutils: add v0.10 (#14644)
Signed-off-by: Adam Moody <moody20@llnl.gov>
2020-01-27 20:33:26 -08:00
Andrew W Elble
d86816bc1a Fix: hash-based references to upstream specs (#14629)
Spack commands referring to upstream-installed specs by hash have
been broken since 6b619da (merged September 2019), which added a new
Database function specifically for parsing hashes from command-line
specs; this function was inappropriately attempting to acquire locks
on upstream databases.

This PR updates the offending function to avoid locking upstream
databases and also updates associated tests to catch regression
errors: the upstream database created for these tests was not
explicitly set as an upstream (i.e. initialized with upstream=True)
so it was not guarding against inappropriate accesses.
2020-01-27 18:25:23 -08:00
Patrick Gartung
7badd69d1e
Package source ID cannot be determined when the url can't be extrapolated for older version. (#14237) 2020-01-27 20:10:01 -06:00