Opened 12 months ago

Last modified 8 weeks ago

#58869 assigned defect

ispc @1.11.0: fatal error: 'type_traits' file not found

Reported by: ryandesign (Ryan Schmidt) Owned by: tenomoto (Takeshi Enomoto)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc:
Port: ispc

Description

ispc does not build on OS X 10.7 or 10.8. The first error is:

/opt/local/libexec/llvm-8.0/include/llvm/Support/type_traits.h:18:10: fatal error: 'type_traits' file not found
#include <type_traits>
         ^~~~~~~~~~~~~

This probably means this software (or the version of llvm it is now using) requires C++11. To indicate that requirement, include the cxx11 1.1 portgroup.

Change History (9)

comment:1 Changed 12 months ago by jmroot (Joshua Root)

Using the cxx11 portgroup will do nothing since this port is already setting configure.compiler to clang-8.0.

comment:2 Changed 12 months ago by kencu (Ken)

it's trying to build against libstdc++, which does not support c++11. The cxx11 PG would force a newer stdlib.

Another vote for defaulting us to libc++ on all systems :)

comment:3 Changed 12 months ago by kencu (Ken)

one thing to know is that macports-clang-7.0 and later default to c++17 if none is specified. This can break builds on software that doesn't set a standard.

Last edited 12 months ago by ryandesign (Ryan Schmidt) (previous) (diff)

comment:4 Changed 12 months ago by kencu (Ken)

I was going to look into this, but this port doesn't yet build on any MacOS systems at all, so no point trying for the legacy systems.

comment:5 in reply to:  3 Changed 12 months ago by ryandesign (Ryan Schmidt)

Replying to kencu:

one thing to know is that macports-clang-7.0 and later default to c++17 if none is specified. This can break builds on software that doesn't set a standard.

Does the new compiler selection code slated to be released in MacPorts 2.6.0 address this? Are we now setting a language standard by default? If not, those changes should at least make it easier to specify a language standard. I believe we'll now have a portfile option for that.

comment:6 in reply to:  2 Changed 12 months ago by ryandesign (Ryan Schmidt)

Replying to kencu:

Another vote for defaulting us to libc++ on all systems :)

It's not about voting. It's about deciding how to do it, including how to provide a smooth upgrade path for our existing libstdc++ users, and then writing the code to do it. In any case, let's keep that debate out of this ticket. There are other more appropriate places where that discussion can be had.

comment:7 Changed 12 months ago by tenomoto (Takeshi Enomoto)

I need to setup the old versions.

It is strange that clang-8.0 behaves differently across OS versions.

The build failure on a newer (10.13, 14) was due to a failure to force require_active_variants. Fixed in 5eb768a54de36485a3c04d0502247e04ba734bc4/macports-ports

See: #58868

comment:8 Changed 12 months ago by kencu (Ken)

yes, it is exactly the fact that (all) clang versions behave differently across os versions that is leading us to default to libc++ on older systems. Then clang will behave the same across os versions, and we will see fewer tickets like this one!

comment:9 Changed 8 weeks ago by ryandesign (Ryan Schmidt)

The new compiler selection logic in MacPorts base has been released, but also a new ispc-clang subport exists which apparently the ispc port is now supposed to be using (but doesn't actually appear to be using). We will need to see what happens on the 10.7 or 10.8 buildbot worker after ispc-clang is fixed so that it can build and so that it is used.

Note: See TracTickets for help on using tickets.