OPENDAP/bes

Build failure with hdf5 1.12.1

Closed this issue · 6 comments

Trying to build 3.20.11 for Fedora rawhide with hdf5-1.12-1:

/bin/sh ../../libtool  --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I. -I../..  -I gctp/include -I. -I../../dispatch -I../../dap -I/usr/include/libdap -I/usr/include/libxml2  -DMODULE_NAME=\"hdf5_handler\" -DMODULE_VERSION=\"1.16.6\" -I/usr/include/cfitsio -I/usr/include/tirpc -I/include  -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64  -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection --std=c++11 -c -o HDF5Array.lo HDF5Array.cc
libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I../.. -I gctp/include -I. -I../../dispatch -I../../dap -I/usr/include/libdap -I/usr/include/libxml2 -DMODULE_NAME=\"hdf5_handler\" -DMODULE_VERSION=\"1.16.6\" -I/usr/include/cfitsio -I/usr/include/tirpc -I/include -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection --std=c++11 -c HDF5Array.cc  -fPIC -DPIC -o .libs/HDF5Array.o
HDF5Array.cc: In member function 'bool HDF5Array::m_array_of_reference_new_h5_apis(hid_t, hid_t)':
HDF5Array.cc:840:84: error: request for member 'data' in 'rbuf', which is of pointer type 'H5R_ref_t*' (maybe you meant to use '->' ?)
  840 |         if(H5Dread(dset_id,H5T_STD_REF,mem_space_id,file_space_id,H5P_DEFAULT,rbuf.data())<0)
      |                                                                                    ^~~~
HDF5Array.cc:849:67: error: request for member 'data' in 'rbuf', which is of pointer type 'H5R_ref_t*' (maybe you meant to use '->' ?)
  849 |         H5R_type_t ref_type = H5Rget_type((const H5R_ref_t *)rbuf.data());
      |                                                                   ^~~~
make[5]: *** [Makefile:862: HDF5Array.lo] Error 1

I also verified Nathan's latest check-in to the master with HDF5 1.12.1. It compiled and passed all tests.

I did a build with current master - this error is fixed but I still have an error:

libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I../.. -I gctp/include -I. -I../../dispatch -I../../dap -I/usr/include/libdap -I/usr/include/libxml2 -DMODULE_NAME=\"hdf5_handler\" -DMODULE_VERSION=\"1.16.6\" -I/usr/include/cfitsio -I/usr/include/tirpc -I/include -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection --std=c++11 -c h5gmcfdap.cc  -fPIC -DPIC -o .libs/h5gmcfdap.o
h5gmcfdap.cc: In function 'void update_GPM_special_attrs_cfdmr(libdap::D4Group*, const std::vector<HDF5CF::GMCVar*>&)':
h5gmcfdap.cc:1321:46: error: 'class libdap::D4Attributes' has no member named 'erase'
 1321 |                         (*vi)->attributes()->erase("_FillValue");
      |                                              ^~~~~
h5gmcfdap.cc:1332:46: error: 'class libdap::D4Attributes' has no member named 'erase'
 1332 |                         (*vi)->attributes()->erase("_FillValue");
      |                                              ^~~~~
make[5]: *** [Makefile:862: h5gmcfdap.lo] Error 1

I think your libdap version is old. Could you try the latest 3.20.10 release?

Okay, updating libdap seems to have resolved that. Now I'm getting:

libtool: link: g++ -Wno-vla-extension -Wno-inconsistent-missing-override -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection --std=c++11 -o .libs/build_dmrpp build_dmrpp-DMRpp.o build_dmrpp-DmrppCommon.o build_dmrpp-Chunk.o build_dmrpp-CurlHandlePool.o build_dmrpp-DmrppByte.o build_dmrpp-DmrppArray.o build_dmrpp-DmrppFloat32.o build_dmrpp-DmrppFloat64.o build_dmrpp-DmrppInt16.o build_dmrpp-DmrppInt32.o build_dmrpp-DmrppInt64.o build_dmrpp-DmrppInt8.o build_dmrpp-DmrppUInt16.o build_dmrpp-DmrppUInt32.o build_dmrpp-DmrppUInt64.o build_dmrpp-DmrppStr.o build_dmrpp-DmrppStructure.o build_dmrpp-DmrppUrl.o build_dmrpp-DmrppD4Enum.o build_dmrpp-DmrppD4Group.o build_dmrpp-DmrppD4Opaque.o build_dmrpp-DmrppD4Sequence.o build_dmrpp-DmrppTypeFactory.o build_dmrpp-DmrppParserSax2.o build_dmrpp-DmrppMetadataStore.o build_dmrpp-CredentialsManager.o build_dmrpp-AccessCredentials.o build_dmrpp-NgapS3Credentials.o build_dmrpp-SuperChunk.o build_dmrpp-awsv4.o build_dmrpp-DMZ.o build_dmrpp-DmrppRequestHandler.o build_dmrpp-build_dmrpp.o build_dmrpp-build_dmrpp_util.o build_dmrpp-h5common.o  ../../dap/.libs/libdap_module.a -L/usr/lib64/libdap -L../../dispatch -L../../http /home/orion/fedora/bes/bes-20781c060611626c4fbf9788510fd8a5794a2dcc/http/.libs/libbes_http.a -L../dispatch /home/orion/fedora/bes/bes-20781c060611626c4fbf9788510fd8a5794a2dcc/dispatch/.libs/libbes_dispatch.so -lbz2 -lpthread -L/usr/local/opt/openssl/lib -L. -lhdf5 -ldl -ldapserver -ldapclient -ldap -lcrypto -lxml2 -lz -lcurl -luuid -ltirpc
/usr/bin/ld: cannot find ../../dap/.libs/libdap_module.a: No such file or directory
collect2: error: ld returned 1 exit status
make[4]: *** [Makefile:873: build_dmrpp] Error 1
make[4]: Leaving directory '/home/orion/fedora/bes/bes-20781c060611626c4fbf9788510fd8a5794a2dcc/modules/dmrpp_module'

I believe this is a parallel build issue and that dmrpp_module isn't getting a proper dependency on dap_module. Not quite sure how this is supposed to expressed in autotools.

Okay finally found the dropping --disable-static workaround for libdap_module.