Commit Graph

67 Commits

Author SHA1 Message Date
Alex Hedges
ec058556ad Remove trailing spaces in default YAML files (#47328)
caught by `prettier`
2024-10-30 22:32:54 +01:00
Massimiliano Culpo
1c1970e727 Put some more constraint on a few mpi providers (#46132)
This should help not selecting, by default, some niche implementation that are supposed to be externals.

Signed-off-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2024-08-30 11:16:35 +02:00
AcriusWinter
63e680e4f9 c: new test API (#45469)
* c: new test API
* gcc:  provides('c')
* c: bugfix and simplification of the new stand-alone test method

---------

Co-authored-by: Tamara Dahlgren <dahlgren1@llnl.gov>
2024-08-12 15:58:09 -06:00
AcriusWinter
7ce5ac1e6e fortran: new test API (#45470)
* fortran: new test API
* fortran: add provides to gcc package
* fortran: simplify stand-alone test processing

---------

Co-authored-by: Tamara Dahlgren <dahlgren1@llnl.gov>
2024-08-11 14:32:39 -06:00
AcriusWinter
899ac78887 cxx: new test API (#45462)
* cxx: new test API
* gcc: provide cxx
* default providers:  cxx provided by gcc
* cxx: cleanup stand-alone test
  - test_c -> test_cxx
  - simplify compilation and execution
  - corrected output checks

---------

Co-authored-by: Tamara Dahlgren <dahlgren1@llnl.gov>
2024-08-08 23:23:05 -06:00
Todd Gamblin
4a35dec206 wasi-sdk: add default provider
This was missed in #45394 because we don't run unit tests for package PRs, and
`test_all_virtual_packages_have_default_providers`, which would've caught it, is a unit
test, not an audit.

- [x] add a default provider for `wasi-sdk` in `etc/spack/defaults/packages.yaml` (which
      we require for all virtuals)
- [x] rework `test_all_virtual_packages_have_default_providers` as an audit called
      `_ensure_all_virtual_packages_have_default_providers`

Signed-off-by: Todd Gamblin <tgamblin@llnl.gov>
2024-07-29 01:30:14 -07:00
Massimiliano Culpo
9c88a48a73 Remove mesa18 and libosmesa (#44264)
* 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
2024-05-21 10:18:14 -05:00
Massimiliano Culpo
47051c3690 Add a default provider for armci (#43997) 2024-05-03 23:48:58 +02:00
Massimiliano Culpo
0dbe4d54b6 Tune default compiler preferences (#43805)
Add `%oneapi`, remove compilers that have been discontinued upstream
2024-04-24 18:00:40 +02:00
Harmen Stoppels
209a3bf302 Compiler.default_libc
Some logic to detect what libc the c / cxx compilers use by default,
based on `-dynamic-linker`.

The function `compiler.default_libc()` returns a `Spec` of the form
`glibc@x.y` or `musl@x.y` with the `external_path` property set.

The idea is this can be injected as a dependency.

If we can't run the dynamic linker directly, fall back to `ldd` relative
to the prefix computed from `ld.so.`
2024-04-22 15:18:06 +02:00
Massimiliano Culpo
0c9a53ba3a Add intel-oneapi-runtime, allow injecting virtual dependencies (#42062)
This PR adds:
- A new runtime for `%oneapi` compilers, called `intel-oneapi-runtime`
- Information to both `gcc-runtime`  and `intel-oneapi-runtime`, to ensure
  that we don't mix compilers using different soname for either `libgfortran`
  or `libifcore`

To do so, the following internal mechanisms have been implemented:
- Possibility to inject virtual dependencies from the `runtime_constraints`
  callback on packages

Information has been added to `gcc-runtime` to provide the correct soname
under different conditions on its `%gcc`.

Rules injected into the solver looks like:

```prolog
% Add a dependency on 'gfortran@5' for nodes compiled with gcc@=13.2.0 and using the 'fortran' language
attr("dependency_holds", node(ID, Package), "gfortran", "link") :-
  attr("node", node(ID, Package)),
  attr("node_compiler", node(ID, Package), "gcc"),
  attr("node_compiler_version", node(ID, Package), "gcc", "13.2.0"),
  not external(node(ID, Package)),
  not runtime(Package),
  attr("language", node(ID, Package), "fortran").

attr("virtual_node", node(RuntimeID, "gfortran")) :-
  attr("depends_on", node(ID, Package), ProviderNode, "link"),
  provider(ProviderNode, node(RuntimeID, "gfortran")),
  attr("node", node(ID, Package)),
  attr("node_compiler", node(ID, Package), "gcc"),
  attr("node_compiler_version", node(ID, Package), "gcc", "13.2.0"),
  not external(node(ID, Package)),
  not runtime(Package),
  attr("language", node(ID, Package), "fortran").

attr("node_version_satisfies", node(RuntimeID, "gfortran"), "5") :-
  attr("depends_on", node(ID, Package), ProviderNode, "link"),
  provider(ProviderNode, node(RuntimeID, "gfortran")),
  attr("node", node(ID, Package)),
  attr("node_compiler", node(ID, Package), "gcc"),
  attr("node_compiler_version", node(ID, Package), "gcc", "13.2.0"),
  not external(node(ID, Package)),
  not runtime(Package),
  attr("language", node(ID, Package), "fortran").
```
2024-03-24 22:59:21 -07:00
Harmen Stoppels
ec500adb50 zlib-api: use zlib-ng +compat by default (#39358)
In the HPC package manager, we want the fastest `zlib`  implementation by default.  `zlib-ng` is up to 4x faster than stock `zlib`, and it can do things like take advantage of AVX-512 instructions.  This PR makes `zlib-ng` the default `zlib-api` provider (`zlib-api` was introduced earlier, in #37372).

As far as I can see, the only issues you can encounter are:

1. Build issues with packages that heavily rely on `zlib` internals. In Gitlab CI only one out of hundreds of packages had that issue (it extended zlib with deflate stuff, and used its own copy of zlib sources).
2. Packages that like to detect `zlib-ng` separately and rely on `zlib-ng` internals. The only issue I've found with this among the hundreds of packages built in CI is `perl` trying to report more specific zlib-ng version details, and relied on some internals that got refactored. But yeah... that warrants a patch / conflict and is nothing special.

At runtime, you cannot really have any issues, given that zlib and zlib-ng export the exact same symbols (and zlib-ng tests this in their CI).

You can't really have issues with externals when using zlib-ng either. The only type of issue is when system zlib is rather new, and not marked as external; if another external uses new symbols, and Spack builds an older zlib/zlib-ng, then the external might not find the new symbols. But this is a configuration issue, and it's not an issue caused by zlib-ng, as the same would happen with older Spack zlib.

* zlib-api: use zlib-ng +compat by default
* make a trivial change to zlib-ng to trigger a rebuild
* add `haampie` as maintainer
2023-08-17 14:03:14 -07:00
Harmen Stoppels
e51748ee8f zlib-api: new virtual with zlib/zlib-ng as providers (#37372)
Introduces a new virtual zlib-api, which replaces zlib in most packages.

This allows users to switch to zlib-ng by default for better performance.
2023-08-09 09:22:58 -04:00
Adam J. Stewart
edbf12cfa8 Add qmake virtual provider (#38848) 2023-08-02 13:50:37 -05:00
Nisarg Patel
f090b05346 Update providers of virtual packages related to Intel OneAPI (#37412)
* add a virtual dependency name instead of complete package name

* add OneAPI components as providers of virtual packages

* Revert the default of tbb

---------

Co-authored-by: Nisarg Patel <nisarg.patel@lrz.de>
2023-05-11 05:58:24 -04:00
Alec Scott
f5228cf59c go: refactor bootstrapping process (#35823)
* Refactor go bootstrapping to include binary or gcc bootstrap
2023-03-10 16:27:49 -08:00
Bernhard Kaindl
1ae32ff62c go,gcc: Support external go compilers for Go bootstrap (#27769)
For ARM64, fallback to gccgo. (go-bootstrap@1.4 can't support ARM64)
2022-10-18 10:18:49 -07:00
Chuck Atkins
57af891cb1 OpenGL restructure (#31748)
* OpenGL: Restructures the OpenGL packages

This provides concrete glx and osmesa packages which delegate to
virtual libglx and libosmesa packages provided by mesa. This was
necessary because GLX and OSMesa both provide gl implementations but
with mesa providing the girtual gl package there was no way to properly
distinguish which of the two opengl implementations was beiing requested
when querying the spec['gl'] dependency.  This additional level of
indirection allows for that.

* OpenGL: Adjust downstream dependents of OpenGL for the restructure

This implements the necessary fixes in the packages that depend on
OpenGL to work with the restructuring.  This also attempts to create a
consistent variant for specifying glx or osmesa.
2022-07-29 12:04:42 -06:00
Tom Scogland
7f1659786b Add a Lua build-system (#28854)
Reworking lua to allow easier substitution of the base lua implementation.

Also adding in a maintained version of luajit and re-factoring the entire stack 
to use a custom build-system to centralize functionality like environment 
variable management and luarocks installation.

The `lua-lang` virtual is now versioned so that a package that requires 
Lua 5.1 semantics can get any lua, but one that requires 5.2 will only 
get upstream lua.

The luaposix package requires lua-bit32, but only when built with a 
lua conforming to version 5.1.  This adds the package, and the 
dependencies, but exposed a problem with luarocks dependency 
detection.  Since we're  installing each package in its own "tree" and 
there's no environment  variable to list extra trees, spack now 
generates a luarocks config  file that lists all the trees of all the 
dependencies, and references  it by setting `LUAROCKS_CONFIG` 
in the build environment of every LuaPackage.  This allows luarocks 
to find the spack installed  dependencies correctly rather than 
trying (and failing) to download them.

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Tom Scogland <tscogland@llnl.gov>
Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2022-05-10 06:54:38 +02:00
kwryankrattiger
363a565ce3 Packaging: Virtual package for libllvm (#27200)
Add an abstraction around libllvm to allow libllvm
providers to be specified for all packages.

This is targeting allowing mesa to build against
llvm-amdgpu or intel-llvm or llvm or any other
custom llvm variant that arises for specific GPU
toolchains
2022-01-11 13:28:13 -08:00
Seth R. Johnson
0a41d4ebb8 pbs: new virtual package (#24568)
* pbs: new virtual package

Some of our clusters have an older installation of
libtorque and tm.h that are *not* from OpenPBS. Using the current
openpbs dependency for openmpi causes concretization errors due to
restrictions on older python and hwloc requirements that don't apply,
even with an external non-buildable installation.
The new 'torque' bundle package allows users to point to that external
installation without problems.

Detailed description of torque by Sergey Kosukhin <skosukhin@gmail.com>
2021-07-27 16:37:00 +00:00
Larry Knox
cc20dbf645 Hdf5 cmake (#18937)
* Switch hdf5 package from autotools to cmake.

* Add variant for building with zlib, default to ON.

* Update for format requirements.

* Format change.

* Fix breakage from last merge from develop.
Switch szip to use libaec (unrestricted encryption).
Remove 'static' variant:  static libs will only be installed when
~shared.

* Improve args based on suggestions from pull request.

* Update code URL to github.com
Add/modify 4 depends_on lines to fix running "spack graph --deptype=link hdf5".

* Remove trailing whitespace.

* Remove dependencies added solely to make "spack greph --type=link" work.

* Add new version HDF5 1.8.22.

* Remove unnecessary java_check.

* Fix whitespace for style checks.

* Reverted zlib version dependency to 1.1.2:.
zlib variant removed.
api version default renamed "default".

* Remove blank line.

* Whitespace corrections.

* iRemoved unnecessary 'debug' variant.

* Fix typo in version number in conflict for '+szip'.

* Set default for tools variant to True.
Remove patch functions dependent on 'libtool' file that cmake doesn't
produce.

* Remove line to set ONLY_SHARED_LIBS to true.
Add post_install code to install only one version of tools with shared
linkage and original tool names.

* Remove trailing white space and import of glob package not used.

* Leave BUILD_TESTING set to default which is ON.

* Remove  post_install code to install only one version of tools because
some dependent packages running tests in e4s testing are using
h5diff-shared.  Keep both tools versions for now.

* No longer need to import os.
2021-06-28 13:42:54 -06:00
Richarda Butler
1c44912f9b add irep and lua-lang virtual dependency (#22492)
This adds a package for `irep`, a tool for reading `lua` input decks from 
Fortran, C, and C++.

`irep` can be built with either `lua` or `luajit`.  To address this, we also add
a virtual package for lua called `lua-lang`.  `luajit` isn't, by default, a drop-in
replacement for `lua`, but we add a `+lualinks` variant to it that adds symlinks
that make it behave like `lua@5.1`.  With this variant enabled, it provides the
`lua-lang` virtual.  `lua` always provides `lua-lang`.

- [x] add `irep` package
- [x] add `+lualinks` variant to `lua-luajit`
- [x] create `lua-lang` virtual, provided by `lua` and `luajit+lualinks`

Co-authored-by: Kayla Richarda Butler <butler59@quartz1148.llnl.gov>
Co-authored-by: Todd Gamblin <tgamblin@llnl.gov>
2021-06-15 17:50:04 -07:00
Nikolay Petrov
ec2d8a1571 Fixing provides directive for intel-oneapi-onedal package (#24108) 2021-06-11 09:47:27 +02:00
Adam J. Stewart
ef56462867 Add fuse virtual dependency, new macfuse package (#23904) 2021-05-27 23:21:11 +02:00
Harmen Stoppels
f2ce57bf77 Add xxd for hsa-rocr-dev build script (#23855) 2021-05-25 20:58:30 +00:00
Massimiliano Culpo
796588b2fd zig: add new package at v0.7.1 (#22046) 2021-03-03 13:30:41 +01:00
Michael Kuhn
c22141f444 Introduce virtual provider uuid (#18322)
libuuid is currently contained in util-linux, libuuid and uuid. This
change introduces a new virtual provider `uuid` and renames the existing
`uuid` package to `ossp-uuid`.

util-linux's libuuid is provided in the form of a separate package
util-linux-uuid to make sure that packages depending on uuid and
util-linux can use a separate uuid implementation, which the concretizer
does not allow if libuuid is contained in util-linux.
2020-12-29 10:12:26 -06:00
Chuck Atkins
7d79db2de7 Fix Mesa GLES conflicts (#20184) 2020-11-30 23:54:24 +01:00
vijay kallesh
51a9473bf8 [NEW] Added amdfftw, amdlibflame and amdscalapack recipes (#19457)
* [NEW] Added amdfftw, amdlibflame and amdscalapack recipes

Updated base fftw, libflame and netlib-scalapack recipes
to accommodate the above listed AMD Optimizing CPU Libraries
which are a set of numerical routines optimized for AMD platforms.

Updated amdblis spack recipe

amdblis:
	1. updated with amdblis 2.2 release
amdfftw:
	1. "--enable-single" now work as synonym for "--enable-float"
amdlibflame:
	1. Added enable_or_disable_threads() to set value for "--enable-multithreading" flag
Libflame:
	1. Added enable_or_disable_threads() to set value for "--enable-multithreading" flag
	2. Corrected invocation of "enable_or_disable('threads')"

Change-Id: I9da0a2c2c4e2075b7fa2776e7cfe6548a2e0b32f

* Added amd-toolchain-support as maintainers

Added team github account amd-toolchain-support
as maintainers for all the recipes owned by
AMD Optimizing CPU Libraries (AOCL) team

Change-Id: I9a7969bd48fc42cfbb88dd7bd93e0802c6138582

* Incorporated review comments

Updated packages.yaml with aocl components
Handled Flake8 test failures

Change-Id: I0a03f02d8c9f326b2434ec907958c3de3a8e18eb

* Readded accidental removal of stream recipe

amdfftw:
	1. Updated the aocc clang selection as per spack standards
fftw:
	1. Currently apple-clang section is redundant,
	already it is handled in the conflict checks.

Change-Id: Idef4a3f61717eb81f321e0cd16e7ba9619eac846

* Fix for style and docs/validate (pull_request) test

unnumbered format placeholders from {} to {0}

Change-Id: If67a3374177ec067573e5504462d257712fafc05

* changed compiler references to Spack's compiler wrapper:spack_cc, spack_cxx, spack_fc

Change-Id: I7ae29c978fff16e37773913f14c84df232499763

* Removed 'single' variant from amdfftw recipe

Instead of conflict for apple-clang + openmp, handled this senario
via below available feature:
depends_on('llvm-openmp', when='%apple-clang +openmp')

Change-Id: I701b23d83e822a500ca3aaf2b60cc9ace09e13dc

* Added relevant info for users who prefers to use single precision

Change-Id: I3506e21da428ddef5fb7895b5aaed32c2a061ef6

* Minor changes on fftw, amdfftw and libflame

amdfftw:
	1. Removed escape symbol to the single quotes
	2. Rewording the conflict line from Recommended
	to Required

fftw:
	1. Reorded to following recommended sections:
	versions, variants, dependencies, providers,
	patches

libflame:
	1. Added provides entry for 5.1.0 version

Change-Id: I21ebff99b6dfde031763154693ecb3f1fa47b476

* Removed single quote from amdfftw docstring to fix style failures

Change-Id: Ife939a5a2f5ccbc8879b730c7bebfe2fcfef9332
2020-10-31 11:57:17 -05:00
Chuck Atkins
aaa1afe9ec mesa: Retire older autotools mesa as mesa18 and create current meson mesa (#19528) 2020-10-30 11:16:17 -04:00
GaneshPrasadMA
0253f0af29 Adding AOCC compiler to SPACK community (#19345)
* Adding AOCC compiler to SPACK community

The AOCC compiler system offers a high level of advanced optimizations, multi-threading and processor support that includes global optimization, vectorization, inter-procedural analyses, loop transformations, and code generation. AMD also provides highly optimized libraries, which extract the optimal performance from each x86 processor core when utilized. The AOCC Compiler Suite simplifies and accelerates development and tuning for x86 applications.

* Added unit tests for detection and flags for AOCC

* Addressed reviewers comments w.r.t version checks and url,checksum related line lengths

Co-authored-by: Test User <spack@example.com>
2020-10-20 10:50:09 -05:00
Andrew Gaspar
ac7c3a1305 make py-pillow the default for pil (#19251)
py-pillow-simd is not portable to other architectures.
2020-10-10 12:55:07 -05:00
Andrew Gaspar
6aa9866b79 Add yacc provider and add dependency to swig (#19087)
* Add byacc dependency to swig when building an autoconf version

* Add yacc provider

Removed extra sycl provider default
2020-10-01 16:09:24 -04:00
Adam J. Stewart
098beee295 Pillow-SIMD: use as default PIL provider (#18097)
* Pillow-SIMD: use as default PIL provider

* Fix concretization of pil

* Fix build of older versions of pillow
2020-09-03 10:39:35 -07:00
Chuck Atkins
547c71ad78 Revert "Add libglvnd packages/Add EGL support (#14572)" (#17682)
This reverts commit 573489db71.
2020-07-23 17:41:48 -04:00
Omar Padron
573489db71 Add libglvnd packages/Add EGL support (#14572)
* add new package: "libglvnd-frontend"

* add +glvnd variant to opengl package

* add +glvnd variant to mesa package

* add +egl variant to paraview package

* add libglvnd-frontend entries to default packages config

* fix style

* add default providers for glvnd virtuals

add default providers for glvnd-gl, glvnd-glx, and glvnd-egl

* WIP: rough start to external OpenGL documentation

* rename libglvnd-frontend package and backend virtual dependencies

* update documentation

* fix ligvnd-be-* typos

* fix libglvnd-fe package class name

* fix doc parse error
2020-07-13 11:32:36 -04:00
Sergey Kosukhin
ff44a6d03f hdf: new version, variants and refactoring (#16469)
* hdf: new version, variants and refactoring.

* libc provides rpc

* Fix szip-related configure argument.

* Update dependent packages.
2020-05-25 19:20:04 -05:00
iarspider
27e4a4750d Hack to select iconv implementation - libiconv vs. libc iconv (#15437)
(re-do of #15213 due to changes in gnupg recipe)
2020-03-28 09:10:31 -05:00
Greg Becker
75fafcece9 multiprocessing: allow Spack to run uninterrupted in background (#14682)
Spack currently cannot run as a background process uninterrupted because some of the logging functions used in the install method (especially to create the dynamic verbosity toggle with the v key) cause the OS to issue a SIGTTOU to Spack when it's backgrounded.

This PR puts the necessary gatekeeping in place so that Spack doesn't do anything that will cause a signal to stop the process when operating as a background process.
2020-03-20 12:22:32 -07:00
Federico Ficarelli
de84bd3f24 hipsycl: new package and new 'sycl' virtual package (#14051) 2020-02-13 07:32:39 +01:00
Elizabeth Fischer
fff99a8a3a Make OpenJDK the default (#12106) 2019-07-25 10:25:26 -07:00
Mark Olesen
5fd3b5acda openfoam: rename openfoam-com to openfoam (#11876)
The original packaging, with openfoam as a virtual and with
openfoam-com, openfoam-org and openfoam-extend as
providers, adds an obfuscation layer without any benefit.

- Rename `openfoam-com` to `openfoam`, and remove the 
  `openfoam` virtual package.
2019-07-01 22:54:36 -07:00
Geoffrey Oxberry
a52ed34fa4 ninja{-fortran}: make pkgs nonvirtual (fix #11628) (#11629) 2019-06-10 12:53:30 -04:00
t-karatsu
1e9bb8c512 Add Fujitsu compiler to Spack. (#11287)
* Add Fujitsu compiler to Spack.

* Fixes for flake8

* Chenges location of FCC to subdirectory called case-insensitive

* Add compiler tests for Fujitsu compiler

* Modify the logic of taking compiler version for new version of Fujitsu compiler
2019-05-21 20:31:14 -05:00
Chuck Atkins
251f3f5058 ninja: drop python as a run dep (#11347)
* ninja: Make python a build-only dependency

* ninja, ninja-fortran: allow the packages to provide eachother
2019-05-07 13:07:24 -04:00
Chuck Atkins
9f848205e4 mesa: re-written to new meson build system (#10482)
* mesa: re-writen to new meson build system

* xorg-server: Remove unneeded mesa dependency

* glx: provide the virtual GLX package

* Convert most "mesa" dependencies to use virtual gl and glx dependencies

* mesa: Switch to always building from the git repo instead of a tarball

* Use gl and glx version ranges instead of exact versions

* glx: provide a default package

* add auto to swr variant

* Revert "add auto to swr variant"

This reverts commit 2e7cd8a8ac.

* update mesa package to version 19.0

* set +glx by default only when running on linux

* fix style issues in geant4 package

* remove virtual package "egl"
2019-05-01 17:57:33 -05:00
Chris Green
763549fe7c mysql: Support client-only, cxxstd and more versions (#10911)
* add cxxstd variant
* add CMake constraints based on platform/version
* add older versions
* update boost dependency version constraints (which are closely
  tied to mysql version) and update boost cxxstd choice to be
  the same as the cxxstd chosen for mysql
* add client-only support (including a patch for 5.5.x)
* record the mysql package as a provider of the mysql-client virtual
2019-03-26 13:19:06 -05:00
Chris Green
6de6d5396c New package: mariadb-c-client (#7729)
* mariadb-c-client is a new package using the distinct, LGPL,
  MySQL-compatible client library from mariadb.com. It provides the
  virtual package mariadb-client
* mariadb is recorded as a provider of the mariadb-client virtual
* The mysql-client virtual package is also added, and mariadb-c-client
  is recorded as a provider for it
2019-03-15 14:12:30 -05:00
Mark W. Krentel
3ed6e78338 New package: ibm-java (#10777)
* Add binary package of the IBM Java SDK for big and little-endian
  powerpc (power7, 8 and 9).  The jdk and openjdk packages only install
  on x86_64.
* Add ibm-java as a java provider
* The jdk and openjdk packages only install on x86_64. Add conflicts
  for ppc64 and ppc64le to jdk and openjdk.
2019-03-12 18:05:47 -05:00