Skip to content
Snippets Groups Projects
  1. Oct 09, 2024
  2. Jul 29, 2024
    • Eleni Mathioulaki's avatar
      update DAG hash calculation to include test dependencies · b68ba622
      Eleni Mathioulaki authored
      Spack's spec hashing mechanism considers only build, link, and run dependencies, overlooking test dependencies. As a result, although Spack correctly concretizes environments when `--test root` is specified (including test dependencies), the resulting lockfile dict only includes the deps whose types affect the hash (build/link/run) and when the env is loaded, test dependencies are not, and tests fail. The workaround suggested in the Spack issue [here](https://github.com/spack/spack/issues/29447) is deleting the lockfile every time and allowing `spack install --test root` to recreate it. By extending Spack's default hash type to include test dependencies, the need for this workaround is eliminated and concretization and installation can be split into separate steps.
  3. Jul 04, 2024
  4. Jul 01, 2024
    • Harmen Stoppels's avatar
      netlib-lapack: provide blas and lapack together (#44981) · a3cef0f0
      Harmen Stoppels authored
      If netlib-lapack is built with ~external-blas, it internally links
      liblapack.so with libblas.so, meaning that whenever netlib-lapack is
      used as a lapack provider, the package must also be a blas provider.
      
      Conversely using netli-lapack as a blas provider does not imply that it
      also must provide lapack, but nothing is lost disallowing that...
      a3cef0f0
    • Harmen Stoppels's avatar
      45fca040
    • Harmen Stoppels's avatar
      Remove DIYStage (#44949) · eb2b5739
      Harmen Stoppels authored
      eb2b5739
    • Massimiliano Culpo's avatar
      neoverse-v1: restore py-cinemasci (#44976) · d299e17d
      Massimiliano Culpo authored
      Use a different tactic for determining conflicts.
      
      Give more priority to setting False very old versions.
      d299e17d
    • Massimiliano Culpo's avatar
      Ensure parent runtime version >= child (#44834) · d883883b
      Massimiliano Culpo authored
      Fixes a bug where old gcc-runtime libraries would be loaded at runtime, but newer are required by dependencies, breaking the binaries.
      d883883b
    • Massimiliano Culpo's avatar
      ASP-based solver: add a generic rule for propagation (#44870) · 249dcb49
      Massimiliano Culpo authored
      This adds a generic propagate/2 rule to propagate any
      fact to children in the DAG.
      249dcb49
    • Massimiliano Culpo's avatar
      Simplify and improve solver heuristic (#44893) · 8628add6
      Massimiliano Culpo authored
      When we changed how to deal with errors in November,
      we didn't realize that for an unconstrained choice
      rule it is more important in the heuristic to guess
      what is NOT in the answer set, since it will be the
      majority of options.
      
      Previously this was following automatically from what
      was in the answer set, via `1 { ... } 1` cardinality
      constraints.
      
      Here we improve the heuristic and the solve time for specs.
      8628add6
    • Harmen Stoppels's avatar
      aeccba8b
    • Todd Gamblin's avatar
      python: make every view a `venv` (#44382) · d94e8ab3
      Todd Gamblin authored
      
      #40773 introduced python-venv, which improved build isolation and avoids issues with,
      e.g., `ubuntu`'s system python modifying `sysconfig` to include a (very unwanted)
      `local` directory within the default install layout.
      
      This addresses a few cases where #40773 removed functionality, without harming the
      default cases where we use `python-venv`.
      
      Traditionally, *every* view with `python` in it was essentially a virtual environment,
      because we would copy the `python` interpreter and `os.py` into every view when linking.
      We now rely on `python-venv` to do that, but only when it's used (i.e. new builds) and
      only for packages that have an `extends("python")` directive.
      
      This again makes every view with `python` in it a virtual environment, but only
      if we're not already using a package like `python-venv`. This uses a different
      mechanism from before -- instead of using the `virtualenv` trick of copying `python`
      into the prefix, we instead create a `pyvenv.cfg` like `venv` (the more modern way
      to do it).
      
      This fixes two things:
      1. If you already had an environment before Spack `v0.22` that worked, it would
         stop working without a reconcretize and rebuild in `v0.22`, because we no longer
         copy the python interpreter on link. Adding `pyvenv.cfg` fixes this in a more
         modern way, so old views will keep working.
      
      2. If you have an env that only includes python packages that use `depends_on("python")`
         instead of `extends("python")`, those packages will now be importable as before,
         though they won't have the same level of build isolation you'd get with `extends`
         and `python-venv`.
      
      * views: avoid making client code deal with link functions
      
      Users of views and ViewDescriptors shouldn't have to deal with link functions -- they
      should just say what type of linking they want.
      
      - [x] views take a link_type, not a link function
      - [x] views work out the link function from the link type
      - [x] view descriptors and commands now just tell the view what they want.
      
      * python: simplify logic for avoiding pyvenv.cfg in copy views
      
      Signed-off-by: default avatarTodd Gamblin <tgamblin@llnl.gov>
      d94e8ab3
    • Massimiliano Culpo's avatar
    • kwryankrattiger's avatar
    • Tom Bradford's avatar
      c248932a
    • dmagdavector's avatar
      protobuf: update hash for patch needed when="@3.4:3.21" (#44210) · f15d302f
      dmagdavector authored
      
      * protobuf: update hash for patch needed when="@3.4:3.21"
      
      * Update var/spack/repos/builtin/packages/protobuf/package.py
      
      Co-authored-by: default avatarWouter Deconinck <wdconinc@gmail.com>
      
      * Update var/spack/repos/builtin/packages/protobuf/package.py
      
      Co-authored-by: default avatarWouter Deconinck <wdconinc@gmail.com>
      
      ---------
      
      Co-authored-by: default avatarWouter Deconinck <wdconinc@gmail.com>
      f15d302f
    • John W. Parent's avatar
      Windows: Non config changes to support Gitlab CI (#43965) · 74ef6302
      John W. Parent authored
      
      * Quote python for shlex
      
      * Remove python path quoting patch
      
      * spack env: Allow `C` "protocol" for config_path
      
      When running spack on windows, a path beginning with `C://...` is a valid path.
      
      * Remove makefile from ci rebuild
      
      * GPG use llnl.util.filesystem.getuid
      
      * Cleanup process_command
      
      * Remove unused lines
      
      * Fix tyop in encode_path
      
      * Double quote arguments
      
      * Cleanup process_command
      
      * Pass cdash args with =
      
      * Escape parens in CMD script
      
      * escape parens doesn't only apply to paths
      
      * Install deps
      
      * sfn prefix
      
      * use sfn with libxml2
      
      * Add hash to dep install
      
      * WIP
      
      * REview
      
      * Changes missed in prior review commit
      
      * Style
      
      * Ensure we handle Windows paths with config scopes
      
      * clarify docstring
      
      * No more MAKE_COMMAND
      
      * syntax cleanup
      
      * Actually correct is_path_url
      
      * Correct call
      
      * raise on other errors
      
      * url2path behaves differently on unix
      
      * Ensure proper quoting
      
      * actually prepend slash in slash_hash
      
      ---------
      
      Co-authored-by: default avatarRyan Krattiger <ryan.krattiger@kitware.com>
      Co-authored-by: default avatarMike VanDenburgh <michael.vandenburgh@kitware.com>
      74ef6302
    • John W. Parent's avatar
      Gitlab CI: Windows Configs (#43967) · a70ea11e
      John W. Parent authored
      
      Add support for Gitlab CI on Windows
      
      This PR adds the config changes required to configure and execute
      Gitlab pipelines running Windows builds on Windows runners using
      the existing Gitlab CI infrastructure (and newly added Windows 
      infrastructure).
      
      * Adds support for generating child pipelines dispatched to Windows runners
      * Refactors the relevant pre-scripts, scripts, and post scripts to be compatible with Windows
      * Adds Windows config section describing Windows jobs
      * Adds VTK as Windows build stack (to be expanded later)
      * Modifies proj to build on Windows
      * Refactors Windows rpath symlinking to avoid system libs and externals
      
      ---------
      
      Co-authored-by: default avatarRyan Krattiger <ryan.krattiger@kitware.com>
      Co-authored-by: default avatarMike VanDenburgh <michael.vandenburgh@kitware.com>
      Co-authored-by: default avatarTodd Gamblin <tgamblin@llnl.gov>
      Co-authored-by: default avatarScott Wittenburg <scott.wittenburg@kitware.com>
      a70ea11e
    • John W. Parent's avatar
      Buildcache/ensure symlinks proper prefix (#43851) · a79b1bd9
      John W. Parent authored
      * archive: relative links only
      
      Ensure all links written into tarfiles generated from Spack prefixes do not contain symlinks pointing outside the prefix
      
      * binary_distribution: limit extraction to prefix
      
      Ensure files extracted from spackballs are not links pointing outside of the prefix
      
      * Ensure rpaths are properly set on Windows
      
      * hard error on extraction of absolute links
      
      * refactor for non link-modifying approach
      
      * Restore tarball extraction to original impl
      
      * use custom readlink
      
      * cleanup symlink module
      
      * make lstrip
      a79b1bd9
    • John W. Parent's avatar
      Cdash reporting timeout (#44213) · ac5d5485
      John W. Parent authored
      * Add timeout to cdash reporter PUT request
      
      Add cdash timeout everywhere
      Correct mock responder api
      
      * Style
      
      * brief doc
      ac5d5485
    • John W. Parent's avatar
      Prefer llnl.util.symlink.readlink to os.readlink (#44126) · 04258f9c
      John W. Parent authored
      Symlinks on Windows can use longpath prefixes (\\?\); these are fine
      in the context of win32 API interactions but break numerous facets of
      Spack behavior that rely on string parsing/matching (archiving,
      binary distributions, tarball extraction, view regen, etc).
      
      Spack's internal readlink method (llnl.util.symlink.readlink)
      gracefully handles this by removing the prefix and otherwise behaving
      exactly as os.readlink does, so we should prefer that in all cases.
      04258f9c
    • Scott Wittenburg's avatar
      gitlab ci: fix untouched spec pruning on windows (#44279) · 1b14170b
      Scott Wittenburg authored
      Use correct path separator in get_all_package_diffs for all platforms.
      Ensures correct package change computation on Windows when pruning unchanged specs in Gitlab CI
      1b14170b
    • Massimiliano Culpo's avatar
      Make strong preferences even stronger (#44373) · a3bc9dbf
      Massimiliano Culpo authored
      Before this PR, if Spack could see a possibility to reuse a spec that
      doesn't match a strong preference, it would do so. After the PR, a
      strong preference would take precedence.
      a3bc9dbf
    • Greg Becker's avatar
      bugfix: external detection for compilers with os but not target (#44156) · e7c86259
      Greg Becker authored
      
      avoid calling `spec.target` when None.
      
      When an external compiler package has an `os` set but no `target` set, Spack
      currently falls into a codepath that calls `spec.target` (which itself calls
      `spec.architecture.target.Microarchitecture`) when `spec.architecture.target`
      is None, throwing an error.
      
      e.g.
      
      ```
      packages:
        gcc:
          externals:
          - spec: gcc@12.3.1 os=rhel7
            prefix: /usr
      ```
      
      ---------
      
      Co-authored-by: default avatarTodd Gamblin <tgamblin@llnl.gov>
      e7c86259
    • Massimiliano Culpo's avatar
      ASP-based solver: fix reusing externals on linux (#44316) · 2605aeb0
      Massimiliano Culpo authored
      We need to tell clingo the libc compatibility of external nodes
      in buildcaches or stores, to allow reuse.
      2605aeb0
    • Massimiliano Culpo's avatar
      Enforce consistency of `gl` providers (#44307) · 94536d2b
      Massimiliano Culpo authored
      * glew: rework dependency on gl
      
      This simplifies the package and ensures a single gl implementation is
      pulled in. Before we were adding direct dependencies, and those are
      not unified through the virtual.
      
      * mesa-demos: rework dependency on gl
      
      This simplifies the package and ensures a single gl implementation is
      pulled in. Before we were adding direct dependencies, and those are
      not unified through the virtual.
      
      * mesa-glu: rework dependency on gl
      
      This simplifies the package and ensures a single gl implementation is
      pulled in. Before we were adding direct dependencies, and those are
      not unified through the virtual.
      
      * paraview: fix dependency on glew
      
      * mesa: group dependency on when("+glx")
      
      * Add missing dependency on libxml2
      
      * paraview: remove the "osmesa" and "egl" variant
      
      Instead, enforce consistency using the "gl" virtual that allows
      only one provider.
      
      * visit: remove osmesa variant
      
      * Disable paraview in the aws-isc stacks
      
      * data-vis-sdk: rework constrains to enforce front-ends
      
      * e4s-power: remove redundant paraview
      
      * Pipelines: update osmesa variants
      
      * trilinos-catalyst-ioss-adapter: make gl a run dependency
      94536d2b
    • Massimiliano Culpo's avatar
      Remove mesa18 and libosmesa (#44264) · 5e580fc8
      Massimiliano Culpo authored
      * Remove mesa18 and libosmesa
      
      mesa18 was introduced in #19528 as a way to maintain the old
      autotools build of mesa separate from the new meson build.
      
      We could add a second build system to mesa, but since mesa18 has
      been deprecated for a long time, we'll just remove it.
      
      libosmesa was used to multiplex the gl provider between mesa18
      and mesa, and is thus unecessary. Remove it to reduce complexity
      in the graphical stack.
      
      * Remove references to mesa18 and libosmesa
      
      * vtk: rework dependency on gl and osmesa
      
      * memsurfer: rework dependency on vtk
      
      * visit: minimal fix to avoid having both osmesa and glx
      5e580fc8
    • Harmen Stoppels's avatar
      Prefer libiconv for iconv (#44335) · 195bad86
      Harmen Stoppels authored
      `glibc` and `musl` provide a basic implementation of `iconv` (`iconv`,
      `iconv_open`, `iconv_close`), but in practice the installation may be
      missing the character encoding methods to make them usable. On Fedora
      for example, users need to
      
      ```yum install glibc-gconv-extra```
      
      to get the character encodings that `gettext` requires during configure,
      namely EUC-JP. Users may not have permissions to install the missing
      parts of glibc.
      
      Since Spack can install `libiconv`, it is simpler to use that by
      default.
      195bad86
    • Harmen Stoppels's avatar
      gcc: use -rpath {rpath_dir} not -rpath={rpath dir} (#44315) · bd9f3f10
      Harmen Stoppels authored
      to make macOS's linker happy.
      bd9f3f10
    • Mosè Giordano's avatar
      suite-sparse: improve setting of the `libs` property (#44214) · b5962613
      Mosè Giordano authored
      on some distros it is in lib64/
      b5962613
    • Massimiliano Culpo's avatar
    • Massimiliano Culpo's avatar
      ASP-based solver: fix version optimization for roots (#44272) · 579fadac
      Massimiliano Culpo authored
      This fixes a bug occurring when two root specs need to select
      old versions, and these versions have the same penalty in the
      optimization. This sometimes caused an older version to be
      preferred to a more recent one.
      
      The issue was the omission of `PackageNode` in the optimization
      tuple.
      579fadac
    • Chris Green's avatar
    • Scott Wittenburg's avatar
      oci buildcache: handle pagination of tags (#43136) · 02d62cf4
      Scott Wittenburg authored
      
      This fixes an issue where ghcr, gitlab and possibly other container registries paginate tags by default, which violates the OCI spec v1.0, but is common practice (the spec was broken itself). After this commit, you can create build cache indices of > 100 specs on ghcr.
      
      Co-authored-by: default avatarHarmen Stoppels <me@harmenstoppels.nl>
      02d62cf4
    • Harmen Stoppels's avatar
      build_environment.py: deal with rpathing identical packages (#44219) · 97369776
      Harmen Stoppels authored
      When multiple gcc-runtime packages exist in the same link sub-dag, only rpath
      the latest.
      97369776
    • Howard Pritchard's avatar
      py-matplotlib: qualify when to do a post install (#44191) · 47af0159
      Howard Pritchard authored
      
      * py-matplotlib: qualify when to do a post install
      
      Older versions of py-matplotlib don't seem to have some of the
      files that the post install step is trying to install.
      Looks like the files first appeared in 3.6.0 and later.
      
      Signed-off-by: default avatarHoward Pritchard <hppritcha@gmail.com>
      
      * Change install paths for older matplotlib
      
      ---------
      
      Signed-off-by: default avatarHoward Pritchard <hppritcha@gmail.com>
      Co-authored-by: default avatarAdam J. Stewart <ajstewart426@gmail.com>
      47af0159