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

HDF5 Not building on Mac after recent HDF5 update #3666

Closed
djdunning opened this issue Oct 12, 2023 · 2 comments · Fixed by #3671
Closed

HDF5 Not building on Mac after recent HDF5 update #3666

djdunning opened this issue Oct 12, 2023 · 2 comments · Fixed by #3671
Labels
Component - Build CMake, Autotools Priority - 2. Medium ⏹ It would be nice to have this in the next release Type - Bug / Bugfix Please report security issues to [email protected] instead of creating an issue on GitHub

Comments

@djdunning
Copy link

djdunning commented Oct 12, 2023

Describe the bug
A clean clone does not build with previously working build steps on a Mac. The bug seems to be isolated to adding the HDF5_CMAKE_Fortran_FLAGS in fortran/examples/CMakeLists.txt that was done in one of the recent commits. The error is shown here:
[ 98%] Linking Fortran executable ../../bin/f90_ex_ph5example Undefined symbols for architecture arm64: "_getenv_", referenced from: _MAIN__ in ph5example.f90.o ld: symbol(s) not found for architecture arm64 collect2: error: ld returned 1 exit status

Expected behavior
With an older commit, or by commenting out line 128 in fortran/examples/CMakeLists.txt, the code builds and can be installed as expected.

Platform (please complete the following information)

  • develop branch commit hash 85c1762
  • MacBook Pro with M2 chip running MacOS Ventura 13.5.2
  • LLVM Clang compiler version 16.0.6. However, issue is with Fortran which is GCC 13.2.0 (since llvm does not have one)
  • CMake version 3.27.6 was used for build generation (no issues with this step)
  • CMake options included CMake Options: -D CMAKE_INSTALL_PREFIX=/Users/ddunning/Documents/playground/Fierro/install/hdf5 -D CMAKE_BUILD_TYPE=Release -D HDF5_BUILD_FORTRAN=ON -D HDF5_ENABLE_PARALLEL=ON -D BUILD_TESTING=OFF
  • OpenMPI was used, version 4.1.5

Additional context
Admittedly I'm not sure what the fix is. I've had issues with Fortran compilers on Macs in the past that have been fixed by various other measures. I am specifically using Apple Command Line Tools 14.3 because there is a known bug with these Fortran compilers with Command Line Tools 15.0 installed. As previously stated, everything is "fixed" by commenting out line 128 in that CMakeLists.txt, so I guess there is a flag that gets added there that Mac doesn't like.

@byrnHDF
Copy link
Contributor

byrnHDF commented Oct 13, 2023

I think line 128 should not have the quotes? Or the two lines need to be separate? I think it is a CMake construct issue.

@mattjala mattjala added Priority - 2. Medium ⏹ It would be nice to have this in the next release Component - Build CMake, Autotools Type - Bug / Bugfix Please report security issues to [email protected] instead of creating an issue on GitHub labels Oct 13, 2023
hyoklee added a commit to hyoklee/hdf5 that referenced this issue Oct 13, 2023
@djdunning
Copy link
Author

Thanks for the update, the fix works great.

derobins added a commit that referenced this issue Oct 18, 2023
* Address nagfor exceptions stoppage. (#3658)

* added cmake ieee flag for nagfor

* generalized determining the nag compiler

* fixing some misc. NAG warnings

* Simplify. (#3659)


* Address @jhendersonHDF review

* Add expedited testing support to t_filters_parallel (#3665)

* Remove clang warnings (#3656)

* Fixes test failure for gfortran -O2 and -O3, -fdefault-real-16 (#3662)

* added cmake ieee flag for nagfor

* fixes gfortran -O2 and -O3, -fdefault-real-16

* fixed sync

* updated release notes

* Fix link error on clang17/gfortran13/macOS-13 (#3666) (#3671)

* Correct fortran CMake generator expressions (#3670)

* Add AOCC GitHub Action (#3504) (#3657)

* Fix uninitialized subfiling test variable (#3675)

Picked up by gcc 10 on skybridge. Probably spurious, but no harm in
initializing it to a "bad" value.

* Add support for AOCC & Flang w/ the Autotools (#3674)

* Adds a config/clang-fflags options file to support Flang
* Corrects missing "-Wl," from linker options in the libtool wrappers
  when using Flang, the MPI Fortran compiler wrappers, and building
  the shared library. This would often result in unrecognized options
  like -soname.
* Enable -nomp w/ Flang to avoid linking to the OpenMPI library.

CMake can build the parallel, shared library w/ Fortran using AOCC
and Flang, so no changes were needed for that build system.

Fixes GitHub issues #3439, #1588, #366, #280

* Fix a strncpy call to use dest size not src (#3677)

A strncpy call in a path construction call used the size of the src
buffer instead of the dest buffer as the limit n.

This was switched to use the dest size and properly terminate the
string if truncation occurs.

* Remove CANBE_UNUSED() from subfiling VFD (#3678)

This macro was an attempt to quiet warnings about release mode unused
variables that only appear in asserts. It resolves to a void cast, which
doesn't quiet warnings when an assignment has already taken place.

* Suppress MPI_Waitall warnings w/ MPICH (#3680)

MPICH defines MPI_STATUSES_IGNORE (a pointer) to 1, which raises warnings
w/ gcc. This is a known issue that the MPICH devs are not going to fix.

See here:
    pmodels/mpich#5687

This fix suppresses those issues w/ gcc

* Fix a possible NULL pointer dereference in tests (#3676)


The dtypes test could dereference a NULL pointer if a strdup call
failed.

* Fix printf warnings in t_mpi (#3679)

* Fix printf warnings in t_mpi

The type of MPI_Offset varies with implementation. In MPICH, it's long,
which raises warnings when we attempt to use long long format
specifiers. Casting to long long fixes the warnings.

* Fix invalid memory access in S3 comms (#3681)

In the ros3 VFD, passing an empty string parameter to an internal
API call could result in accessing the -1th element of a string.
This would cause failures on big-endian systems like s390x.

This parameter is now checked before writing to the string.

Fixes GitHub #1168

* Add Doxygen for H5Pset_fapl_sec2() (#3685)

*

* switch to using time function instead of date function (#3690)

* Initialize API context MPI types to MPI_BYTE (#3688)

* Add test info output to t_filters_parallel (#3696)

* Suppress format string warnings in subfiling test (#3699)

* Fix unused variable in tselect.c (#3701)

* Fix unused variable warning in H5F_sfile_assert_num (#3700)

* Restore floating-point suffixes in tests (#3698)

A prior commit removed too many F suffixes. This restores the suffixes
for float variables.

* Sync with changes from develop

---------

Co-authored-by: Scot Breitenfeld <[email protected]>
Co-authored-by: H. Joe Lee <[email protected]>
Co-authored-by: Allen Byrne <[email protected]>
Co-authored-by: Dana Robinson <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Component - Build CMake, Autotools Priority - 2. Medium ⏹ It would be nice to have this in the next release Type - Bug / Bugfix Please report security issues to [email protected] instead of creating an issue on GitHub
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants