r-lib / tzdb

Time Zone Database Information
https://tzdb.r-lib.org
Other
6 stars 4 forks source link

tzdb fails to build on 10.7–10.11 x86_64 with clang: tzdb.so: Symbol not found: __ZSt19uncaught_exceptionsv #34

Open barracuda156 opened 1 year ago

barracuda156 commented 1 year ago
/opt/local/bin/clang++-mp-15 -std=gnu++17 -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/opt/local/Library/Frameworks/R.framework/Resources/lib -L/opt/local/lib -Wl,-headerpad_max_install_names -Wl,-rpath,/opt/local/lib/libgcc -arch x86_64 -o tzdb.so api.o cpp11.o names.o path.o tz.o version.o -F/opt/local/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
installing to /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_R_R-tzdb/R-tzdb/work/destroot/opt/local/Library/Frameworks/R.framework/Versions/4.3/Resources/library/00LOCK-tzdb/00new/tzdb/libs
** R
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded from temporary location
Error: package or namespace load failed for ‘tzdb’ in dyn.load(file, DLLpath = DLLpath, ...):
 unable to load shared object '/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_R_R-tzdb/R-tzdb/work/destroot/opt/local/Library/Frameworks/R.framework/Versions/4.3/Resources/library/00LOCK-tzdb/00new/tzdb/libs/tzdb.so':
  dlopen(/opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_R_R-tzdb/R-tzdb/work/destroot/opt/local/Library/Frameworks/R.framework/Versions/4.3/Resources/library/00LOCK-tzdb/00new/tzdb/libs/tzdb.so, 6): Symbol not found: __ZSt19uncaught_exceptionsv
  Referenced from: /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_R_R-tzdb/R-tzdb/work/destroot/opt/local/Library/Frameworks/R.framework/Versions/4.3/Resources/library/00LOCK-tzdb/00new/tzdb/libs/tzdb.so
  Expected in: flat namespace
 in /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_R_R-tzdb/R-tzdb/work/destroot/opt/local/Library/Frameworks/R.framework/Versions/4.3/Resources/library/00LOCK-tzdb/00new/tzdb/libs/tz
Error: loading failed

Complete log from 10.11: https://build.macports.org/builders/ports-10.11_x86_64-builder/builds/222427/steps/install-port/logs/stdio Also: https://trac.macports.org/ticket/67612

DavisVaughan commented 1 year ago

See https://github.com/HowardHinnant/date/issues/673

CRAN requested that I remove the Makevars file that fixed the compiler to C++11, so now can get compiled with C++17 which turns on HAS_UNCAUGHT_EXCEPTIONS here https://github.com/HowardHinnant/date/blob/cc4685a21e4a4fdae707ad1233c61bbaff241f93/include/date/date.h#L138C1-L144

Even though it seems older Mac versions don't have it

It seems used in one place that is mostly harmless so I can probably manually set it to 0 in tzdb https://github.com/HowardHinnant/date/blob/cc4685a21e4a4fdae707ad1233c61bbaff241f93/include/date/date.h#L1066-L1070

barracuda156 commented 1 year ago

@DavisVaughan Thank you for a clarification.

It is desirable to have it working, of course, if a fix does not affect anything else. Especially given that several systems are affected. (Alternatively, we can carry a patch locally in Macports.)

P. S. I think Macports currently uses clang-15 on x86_64 across the board (Apple clangs are blacklisted for R; GCC not used, unfortunately, by default), so in principle C++17 should be supported. I am not sure though if it uses its own libc++ or Apple one.