From d900ac2003a39d1789ee62107e3fc2c6e2d8a78f Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Fri, 13 May 2022 18:11:10 +0200 Subject: Reuse concretization by default (#30396) * Enable reuse by default in Spack * Update documentation to match new default * Configure pipelines not to reuse software --- etc/spack/defaults/concretizer.yaml | 4 +-- lib/spack/docs/basic_usage.rst | 38 +++++++++++----------- lib/spack/docs/build_settings.rst | 7 +--- .../stacks/build_systems/spack.yaml | 3 ++ .../cloud_pipelines/stacks/data-vis-sdk/spack.yaml | 3 ++ .../cloud_pipelines/stacks/e4s-mac/spack.yaml | 3 ++ .../cloud_pipelines/stacks/e4s-on-power/spack.yaml | 3 ++ .../gitlab/cloud_pipelines/stacks/e4s/spack.yaml | 3 ++ .../cloud_pipelines/stacks/radiuss/spack.yaml | 3 ++ .../cloud_pipelines/stacks/tutorial/spack.yaml | 3 ++ 10 files changed, 43 insertions(+), 27 deletions(-) diff --git a/etc/spack/defaults/concretizer.yaml b/etc/spack/defaults/concretizer.yaml index 2aadccd6cd..643107d3c0 100644 --- a/etc/spack/defaults/concretizer.yaml +++ b/etc/spack/defaults/concretizer.yaml @@ -14,7 +14,7 @@ concretizer: # concretizing specs. If `true`, we'll try to use as many installs/binaries # as possible, rather than building. If `false`, we'll always give you a fresh # concretization. - reuse: false + reuse: true # Options that tune which targets are considered for concretization. The # concretization process is very sensitive to the number targets, and the time # needed to reach a solution increases noticeably with the number of targets @@ -27,4 +27,4 @@ concretizer: # If "false" allow targets that are incompatible with the current host (for # instance concretize with target "icelake" while running on "haswell"). # If "true" only allow targets that are compatible with the host. - host_compatible: false + host_compatible: true diff --git a/lib/spack/docs/basic_usage.rst b/lib/spack/docs/basic_usage.rst index 96fee4a125..7a3c44a759 100644 --- a/lib/spack/docs/basic_usage.rst +++ b/lib/spack/docs/basic_usage.rst @@ -192,32 +192,32 @@ you can use them to customize an installation in :ref:`sec-specs`. Reusing installed dependencies ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.. warning:: - - The ``--reuse`` option described here will become the default installation - method in the next Spack version, and you will be able to get the current - behavior by using ``spack install --fresh``. +By default, when you run ``spack install``, Spack tries hard to reuse existing installations +as dependencies, either from a local store or from remote buildcaches if configured. +This minimizes unwanted rebuilds of common dependencies, in particular if +you update Spack frequently. -By default, when you run ``spack install``, Spack tries to build a new -version of the package you asked for, along with updated versions of -its dependencies. This gets you the latest versions and configurations, -but it can result in unwanted rebuilds if you update Spack frequently. - -If you want Spack to try hard to reuse existing installations as dependencies, -you can add the ``--reuse`` option: +In case you want the latest versions and configurations to be installed instead, +you can add the ``--fresh`` option: .. code-block:: console - $ spack install --reuse mpich + $ spack install --fresh mpich + +Reusing installations in this mode is "accidental", and happening only if +there's a match between existing installations and what Spack would have installed +anyhow. -This will not do anything if ``mpich`` is already installed. If ``mpich`` -is not installed, but dependencies like ``hwloc`` and ``libfabric`` are, -the ``mpich`` will be build with the installed versions, if possible. -You can use the :ref:`spack spec -I ` command to see what +You can use the ``spack spec -I mpich`` command to see what will be reused and what will be built before you install. -You can configure Spack to use the ``--reuse`` behavior by default in -``concretizer.yaml``. +You can configure Spack to use the ``--fresh`` behavior by default in +``concretizer.yaml``: + +.. code-block:: yaml + + concretizer: + reuse: false .. _cmd-spack-uninstall: diff --git a/lib/spack/docs/build_settings.rst b/lib/spack/docs/build_settings.rst index 3b49375b30..568b92aac3 100644 --- a/lib/spack/docs/build_settings.rst +++ b/lib/spack/docs/build_settings.rst @@ -242,12 +242,7 @@ to enable reuse for a single installation, and you can use: spack install --fresh to do a fresh install if ``reuse`` is enabled by default. - -.. note:: - - ``reuse: false`` is the current default, but ``reuse: true`` will be the default - in the next Spack release. You will still be able to use ``spack install --fresh`` - to get the old behavior. +``reuse: true`` is the default. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Selection of the target microarchitectures diff --git a/share/spack/gitlab/cloud_pipelines/stacks/build_systems/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/build_systems/spack.yaml index 9616a503fb..fb39028e03 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/build_systems/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/build_systems/spack.yaml @@ -2,6 +2,9 @@ spack: view: false concretization: separately + concretizer: + reuse: false + config: install_tree: root: /home/software/spack diff --git a/share/spack/gitlab/cloud_pipelines/stacks/data-vis-sdk/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/data-vis-sdk/spack.yaml index f6939853ed..85b9dc0f6c 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/data-vis-sdk/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/data-vis-sdk/spack.yaml @@ -2,6 +2,9 @@ spack: view: false concretization: separately + concretizer: + reuse: false + config: install_tree: root: /home/software/spack diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-mac/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-mac/spack.yaml index 191639ca41..ce669069a3 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-mac/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-mac/spack.yaml @@ -2,6 +2,9 @@ spack: view: false concretization: separately + concretizer: + reuse: false + config: concretizer: clingo install_tree: diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-on-power/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-on-power/spack.yaml index b283b837cb..0344c30a6a 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-on-power/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-on-power/spack.yaml @@ -2,6 +2,9 @@ spack: view: false concretization: separately + concretizer: + reuse: false + config: concretizer: clingo install_tree: diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml index 5d635d40d9..bdc00bddf3 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml @@ -2,6 +2,9 @@ spack: view: false concretization: separately + concretizer: + reuse: false + config: concretizer: clingo install_tree: diff --git a/share/spack/gitlab/cloud_pipelines/stacks/radiuss/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/radiuss/spack.yaml index f6f46c20a6..69b783aaea 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/radiuss/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/radiuss/spack.yaml @@ -2,6 +2,9 @@ spack: concretization: separately view: false + concretizer: + reuse: false + config: concretizer: clingo install_tree: diff --git a/share/spack/gitlab/cloud_pipelines/stacks/tutorial/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/tutorial/spack.yaml index aceb25a00d..9beda80a3e 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/tutorial/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/tutorial/spack.yaml @@ -2,6 +2,9 @@ spack: view: false concretization: separately + concretizer: + reuse: false + config: install_tree: root: /home/software/spack -- cgit v1.2.3-70-g09d2