Opened 6 years ago
Closed 5 years ago
#57493 closed defect (worksforme)
esmf @7_1_0r +gcc8: build error: 'size_t' does not name a type
Reported by: | Dave-Allured (Dave Allured) | Owned by: | tenomoto (Takeshi Enomoto) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.5.4 |
Keywords: | Cc: | ||
Port: | esmf |
Description (last modified by Dave-Allured (Dave Allured))
port -v install esmf +gcc8 fails with multiple C++ errors like this. I shortened several long sequences for readability. See main.log for the full details:
:info:build /Users/dallured/macports/254/bin/g++-mp-8 -c [OPTIONS] [INCLUDES] [LONG_PATH]/ESMCI_CoordSys.C :info:build In file included from [LONG_PATH]/ESMC_Util.h:23, :info:build from [LONG_PATH]/ESMCI_Fraction.h:52, :info:build from [LONG_PATH]/ESMCI_Fraction.C:25: :info:build [LONG_PATH]/ESMC_Conf.h:34:9: error: 'size_t' does not name a type :info:build typedef size_t ESMCI_FortranStrLenArg; :info:build ^~~~~~ :info:build [LONG_PATH]/ESMC_Conf.h:34:9: note: 'size_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'? :info:build [LONG_PATH]/ESMC_Conf.h:1:1: :info:build +#include <cstddef> :info:build #ifdef ESMC_RCS_HEADER
Starting from an empty Macports directory, port -v install esmf +gcc8 installs 58 ports successfully, then ESMF fails as above. The default ESMF variant seems to install fine for me, and does not get these errors. Here is my configuration:
sw_vers: ProductName: Mac OS X ProductVersion: 10.13.6 BuildVersion: 17G65 Xcode 10.0 Build version 10A255
I am installing to a private user directory, not /opt/local. Root privileges are disabled. I ran port selfupdate in advance, of course.
Attachments (3)
Change History (14)
Changed 6 years ago by Dave-Allured (Dave Allured)
comment:1 Changed 6 years ago by Dave-Allured (Dave Allured)
Description: | modified (diff) |
---|
Changed 6 years ago by Dave-Allured (Dave Allured)
Attachment: | main.log.esmf-7_1_0r_1.1114a.txt added |
---|
The same build failure occurs with esmf @7_1_0r_1 and the upgrade to cctools @921_0+llvm70. New build log is attached.
comment:3 Changed 6 years ago by tenomoto (Takeshi Enomoto)
+gcc7 also fails. This must be related to removal of /usr/include in Mojave. clang probably points headers from SDK. Setting isysroot may help.
comment:4 Changed 6 years ago by Dave-Allured (Dave Allured)
Owner: | changed from tenomoto to Dave-Allured |
---|
comment:5 Changed 6 years ago by Dave-Allured (Dave Allured)
Owner: | changed from Dave-Allured to tenomoto |
---|
<comment deleted, erroneous and no longer relevant>
comment:7 Changed 6 years ago by Dave-Allured (Dave Allured)
The cause of this problem was found. It is simply a missing include
statement for cstddef
in ESMC_Conf.h
. However, because of the unusual use of many customized copies of this file, the missing include
should probably go into a few higher level files, not into ESMC_Conf.h
directly.
This bug is triggered by all GCC 8
and higher versions, due to a specific test for GCC
version number in ESMC_Conf.h
. This bug can be avoided by installing either the port esmf
default variant, which uses clang
, or else +gcc7
or earlier variants.
ESMF developers already fixed this in their own code base. I am waiting for a pubic release to update Macports. If someone needs a fix sooner, please request or submit a patch to the current version.
comment:8 Changed 6 years ago by Dave-Allured (Dave Allured)
I said: "or else +gcc7
or earlier variants" but this may be in error. This would contradict what Takeshi said. I did not test the +gcc7
variant. I said this on the basis of the test for specific GCC versions in the code in ESMC_Conf.h
.
Changed 6 years ago by Dave-Allured (Dave Allured)
Attachment: | ESMC_Conf.h added |
---|
Patched config file. There are many different versions with the same file name in ESMF source. For Macports using +gcc8, this must go to the specific location esmf/build_config/Darwin.gfortran.default/ESMC_Conf.h, replacing the original file.
comment:9 Changed 6 years ago by Dave-Allured (Dave Allured)
ESMF developers said they will not make a maintenance release for this problem. Port maintainer, can you please add a patch for the specific ESMC_Conf.h
file above? It is a one-line fix. Thank you.
Also see the other ESMF fix in #58306.
comment:10 Changed 5 years ago by Dave-Allured (Dave Allured)
This problem magically disappeared for me a few months ago. I do not know what changed. I suspect that it had something do with all the recent libc++ changes, but who knows.
I recently built this successfully at Mac OS 10.14.6, Xcode 11.3. ESMF in Macports is still at source version 7_1_0r as originally reported in this ticket.
Please close this ticket.
comment:11 Changed 5 years ago by mf2k (Frank Schima)
Resolution: | → worksforme |
---|---|
Status: | assigned → closed |
main.log from ESMF build failure