[MacPorts] #53044: octave @4.2.0_1: error: 'cstdint' file not found with libstdc++
MacPorts
noreply at macports.org
Mon Dec 12 14:48:53 CET 2016
#53044: octave @4.2.0_1: error: 'cstdint' file not found with libstdc++
---------------------+---------------------------------
Reporter: mojca | Owner: MarcusCalhoun-Lopez
Type: defect | Status: new
Priority: Normal | Milestone:
Component: ports | Version:
Resolution: | Keywords: snowleopard lion
Port: octave |
---------------------+---------------------------------
Comment (by mojca):
Replying to [comment:6 MarcusCalhoun-Lopez]:
> Octave only silently defaults to macports-gcc-6 if
{{{${configure.cxx_stdlib} eq "libstdc++"}}}.
OK, but how exactly doe that help?
> On 10.12, 10.11, and 10.10, the system clang is used.[[BR]]
> On 10.9, macports-clang is used because the buildbot failure seems to
indicate the system clang doesn't work.
That's both fine.
> On 10.8, macports-gcc is used since C++11 is required.
That's generally bad.
Unless you make sure that all dependencies were built with macports-gcc as
well, but even then it's better to switch to `libc++` for all.
> If the user specifically requests a {{{gcc*}}} variant, then the
{{{graphicsmagick}}} variant is not the default and is marked in conflict.
This doesn't seem to be the case with your current code:
{{{
#!tcl
if { [variant_isset graphicsmagick] && ${configure.cxx_stdlib} eq
"libstdc++"} {
compiler.blacklist-append {macports-clang-*}
compiler.whitelist-append \
macports-gcc-6 \
macports-gcc-5 \
macports-gcc-4.9 \
macports-gcc-4.8 \
macports-gcc-4.7
}
}}}
You don't set any variant anywhere and you actually switch to macports-gcc
when you specifically '''know''' that graphicsmagic is being used.
If you set a whitelist, you don't need a blacklist.
I also noticed that you blacklist clang at various places in a redundant
way:
{{{
#!tcl
compiler.blacklist-append {*gcc-3*} {*gcc-4.[0-6]} {clang < 700} cc
compiler.blacklist-append { clang <= 318.0.61 }
}}}
> Won't this keep the C++ standard library consistent?
No. The macports-gcc compiler is specifically not compatible with the
default compiler. And in a very bad way.
Replying to [comment:9 MarcusCalhoun-Lopez]:
> As of version 4.2, C++11 is a requirement of Octave, so we must find a
way of using a C++11 compliant compiler.
My suggestion would be to switch to `libc++` and disable `graphicsmagic`
unless `libc++` is default already (in that case `graphicsmagic` can
stay). The only other alternative is to provide an alternative build of
graphicsmagic against `libc++` (I do that with a subport
`wxWidgets-3.0-libcxx` for example, but it might not always be always
possible or practical or reasonable to do so.)
What exactly does graphicsmagic bring?
--
Ticket URL: <https://trac.macports.org/ticket/53044#comment:10>
MacPorts <https://www.macports.org/>
Ports system for macOS
More information about the macports-tickets
mailing list