Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge wellspring back upstream #250

Merged
merged 33 commits into from
Jun 2, 2020
Merged

Merge wellspring back upstream #250

merged 33 commits into from
Jun 2, 2020

Conversation

WardF
Copy link
Member

@WardF WardF commented May 4, 2020

Branch incorporating changes for upcoming version that will also be merged back in to master when the new version is released.

@WardF WardF self-assigned this May 4, 2020
RELEASE_NOTES.md Outdated

* netCDF-C: 4.7.4+

## 4.5.3 - April 24, 2020
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where does this date come from?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was the original target date, but we have been overtaken by circumstances and will be updated when the 4.5.3 release is actually minted.

#
# See https://github.com/Unidata/netcdf-fortran/issues/212
##
check_Fortran_compiler_flag("-fallow-argument-mismatch" COMPILER_HAS_ALLOW_ARGUMENT_MISMATCH)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the NAG compiler, it is -mismatch_all, as written here: #218

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Excellent, I'll add a similar check!

@WardF
Copy link
Member Author

WardF commented May 29, 2020

Added a fix for NAG compilers, if somebody with access to NAG could check that and let me know for certain, I'd appreciate it :). Otherwise, I think we're ready to proceed with the release and then can merge all of this back in to master.

@WardF WardF merged commit 770c00d into master Jun 2, 2020
mpbelhorn added a commit to mpbelhorn/olcf-spack-environments that referenced this pull request Jul 16, 2020
GCC10 fails to build netcdf-fortran and parallel-netcdf due to a
issue common to both packages that is known to the upstream developers
(at least for netcdf-fortran):

Unidata/netcdf-fortran#212

NetCDF-fortran has fixed the issue in a new release as of early June 2020
(Unidata/netcdf-fortran#250) but the problem has
not yet been patched in parallel-netcdf.

The upgrade to netcdf-fortran v4.5.3 requires an associated update to
netcdf-c.
mpbelhorn added a commit to mpbelhorn/olcf-spack that referenced this pull request Jul 16, 2020
GCC10 fails to build netcdf-fortran and parallel-netcdf due to a
issue common to both packages that is known to the upstream developers
(at least for netcdf-fortran):

Unidata/netcdf-fortran#212

NetCDF-fortran has fixed the issue in a new release as of early June 2020
(Unidata/netcdf-fortran#250) but the problem has
not yet been patched in parallel-netcdf.

The latest version of netcdf-fortran (v4.5.3) requires netcdf-c >=
v4.7.4 so the base netcdf-c package is also updated to the latest
release.
sethrj pushed a commit to sethrj/spack that referenced this pull request Mar 16, 2022
- Requests hdf5+hl when using xl toolchains

Needed to resolve concretization conflict.

- Updates source hash for mpfr v4.0.2 and adds missing autoconf macros.

Additional autoconf macros are needed for v4.0.2 which are provided by the
autoconf-archive package. This commit adds a missing spack package for
autoconf-archive and fixes an outdated source hash for mpfr v4.0.2.

It might be better to simply include the autoconf-archive dependency at the
autoconf package level if other packages also need the extension macros.

- Adds missing hdf5 lib search paths to netcdf-fortran when using the XL toolchain.

When using the XL toolchain, libtool does automatically pass the necessary HDF5
library search paths needed at link time. This commit explicitly injects the
HDF5 library search paths to the LD_FLAGS when using the XL toolchain for
libtool.

- Excludes SIMD optimization arguments when using PGI toolchain.

The FFTW package attempts to apply SIMD optimization flags when building FFTW.
The flags selected are not controlled by variants to the fftw package spec.
However, when using PGI on ppc64le, unsupported flags are added to the
configuration.

This commit removes targetted optimization options when using a PGI toolchain.
However, it is likely this is only necessary on certain architectures (ppc64le?)
or OSes (RHEL7?) and the logic should be improved before pushing this change to
upstream spack.

- Fixes global allocation error in newer GCC.

Newer GCC (9.0+) does not quietly handle allocation for uninitialized
global variables. GDBM up to the current version requires the `-fcommon`
flag for these toolchains to overcome "multiple-definition" errors.
Unfortunately, this carries a speed and code size penalty. Perhaps GDBM
will release a newer version that corrects this problem for newer GCC
toolchains.

- Adds missing dependnency.

Imagemagick depends on libSM and, if left implicit, will generally find
libSM from the OS which is unlikely to contain libuuid symbols matching
those used when spack builds libuuid. This causes build-time missing
symbol errors. By having spack build both libuuid and libSM, the problem
is avoided and the builds are decoupled from the host OS.

- Patches broken pre-built docs out of build

The RDMA-Core releases ship with pre-built documentation in case pandoc
and rst2man are not available on the system. It is not possible to
disable documentation at configuration time and the build will fail if
documentation cannot be built or installed. However, the pre-build
documentation is not complete (at least for infiniband-diags) and
rdma-core's CMake install process will attempt to copy pre-built
documentation that does not exist at install time, causing a fatal
error.

Adding a dependency on pandoc makes the DAG for this package extremely
large (pulling in many X11 dependencies). This is bound to cause
problems for non-GCC toolchains. So rather than have the spack package
build the docs from source, we will rely on the pre-built documentation
but exclude the attempted installation of the missing infiniband-diags
man pages.

- Adds patch for intel and long directory paths.

Intel toolchains do not tolerate string array intial values larger than the declared size of the array.

The path set via `buildlib/config.h.in` for `#define ACM_CONF_DIR "@CMAKE_INSTALL_FULL_SYSCONFDIR@/rdma"` can be exceptionally long under spack. For example, in file `ibacm/prov/acmp/src/acmp.c`, the line (274) `static char route_data_file[128] = ACM_CONF_DIR "/ibacm_route.data";` sets a string 134+ characters long (ie `len("/sw/andes/spack-envs/base/opt/linux-rhel8-x86_64/clang-9.0.1/rdma-core-28.0-2ixcucck7eb4fzbd3t6imjrhz5qahxui/etc/rdma/ibacm_route.data")`).

This causes the intel compilers to choke when trying to shove that string into a 128-character array.

This commit adds a patch to the source code to allow for a path up to 192 characters in length.
It is unknown if this change breaks other things and this bug should be reported upstream.

- Adds OpenBLAS version 0.3.10

This latest version includes fixes for Zen2 targets and truncated symbol
names when using AOCC and Flang.

- Adds missing PIC flag for MPI builds with PGI.

PGI doesn't automatically propagate the PIC flag when building with MPI
support and autoconf does not detect the appropriate PIC flag when using
the mpif90 spack wrapper.

This commit forces FCFLAGS (respected by the mpif90 wrapper) to contain
the appropriate PIC flag when building with that option and MPI support
for all compilers.

- Updates NetCDF-Fortran version; adds GCC10 build error fix.

GCC10 fails to build netcdf-fortran and parallel-netcdf due to a
issue common to both packages that is known to the upstream developers
(at least for netcdf-fortran):

Unidata/netcdf-fortran#212

NetCDF-fortran has fixed the issue in a new release as of early June 2020
(Unidata/netcdf-fortran#250) but the problem has
not yet been patched in parallel-netcdf.

The latest version of netcdf-fortran (v4.5.3) requires netcdf-c >=
v4.7.4 so the base netcdf-c package is also updated to the latest
release.

- Updates Gromacs version; fixes package errors.

- Updates pkgconf dependency name.

The name of the package pkgconfig has been changed to pkgconf. This
package is updated to use the new name when declaring dependencies.

- Allow libs to be found in lib64 subdir.

When using external OpenSSL, the libs are not always in `$prefix/lib` in
the external build. Sometimes, the libraries exist in `$prefix/lib64`.
Packages which must declare the location of the SSL libraries outside of
using pkgconfig need the `openssl.libs` method to return valid paths.

- Pass OpenSSL libs via envvar without relying on pkgconfig.

When using external OS-provided OpenSSL, spack-built pkgconfig might not
be able to find the openssl libs if `/usr/lib64/pkgconfig` is not in
pkgconfig's search path. Passing the location of the OpenSSL libs
directly will work for both spack-built and external OpenSSL pacakges.

- Adds CUDA v11.0.2

The CUDA Toolkit v11.0.2, also referred to in documentation as CUDA Toolkit v11.0.194, was released on 8 July 2020 ([Release Notes](https://docs.nvidia.com/cuda/archive/11.0/)).
This commit adds this current latest version to the CUDA spack package.

- Adds fontconfig v2.13.92

This version fixes a bug that prevents fc cache updates when fonts are
missing their fc checksum files.

- Patches netlib-scalapack to solve confusion between PGI and Intel.

The netlib-scalapack CMakeLists have a faulty check to identify if the
Intel compiler suite is being used. It checks if the substring 'ifort'
matches the fortran compiler binary. Unfortunately, this also catches
the PGI fortran compiler 'pgifort'. This causes the build system to
inject Intel-specific compiler options into the build. Since
unrecognized arguments are generally fatal to PGI, this causes problems
when trying to build the package with PGI.

Instead, the developers probably want to check the
`CMAKE_Fortran_COMPILER_ID` for `Intel` which is unique for the Intel
toolchain. This commit adds a patch for this to spack builds. This patch
should probably be generalized better for future versions and applied as
a patch function. Or, better yet, contributed to the upstream Scalapack
codebase.

- Enable UCX dev headers by default.

No reason to not have the development headers available for applications
that need them.

- LSF systems must use own PMIx implementation.

IBM's PMIx libraries are not provided with LSF and instead are
incorporated in CSM or SMPI. OMPI cannot reliably find the necessary
external PMIx implementation when on certain systems using LSF.

Therefore, we force the use of internal PMIx when using LSF.

However, the LSF libdirs options are also not reliably found due to the
way IBM packages LSF headers and libraries in separate locations. The
second block of code in this commit is experimental and doesn't
necessarily work.

- Skip patching missing config files.

The libiberty subdirectory does not contain its own config files and
Spack should not attempt to patch them.

- Adds new Plumed version and library fix.

Adds latest release v2.6.2 of plumed to the spack package and ensures
that both c and fortan blas libraries are added to compiler linking
incantations.

- Fixes __ieee128 error building Gromacs on ppc64le
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants