#55884: mandoc @1.14.3: not using the right compiler
Jan Stary
hans at stare.cz
Wed Feb 28 07:52:06 UTC 2018
The ticket is closed, so I will continue here.
> Actually it's not specific to the universal variant. Rather, the problem
> is that the port is not UsingTheRightCompiler.
mandoc's ./configure sets CC to whatever make(1) thinks CC is:
CC=`printf "all:\\n\\t at echo \\\$(CC)\\n" | env -i make -sf -`
Why exactly is it "not the right compiler"?
Maybe I don't get the whole premise:
If not instructed otherwise, most software builds C code using "cc" or
"gcc". But "/usr/bin/cc" and "/usr/bin/gcc" are not specific
compilers; they're symlinks to some suitable default compiler, but it
varies based on Xcode version. Users might also have created
a "/opt/local/bin/gcc" symlink, pointing to any installed compiler, by
using "port select --set gcc". So we cannot rely on "cc" oc "gcc"
being any particular compiler.
Yes, we cannot, and that's OK because we should not, _by_default_.
This is a UNIX system compiling C code. Call 'cc'. Duh.
It's true that /usr/bin/cc is a symlink to some suitable default compiler.
So call that, thus calling a suitable default compiler, _by_default_.
Yes, there are ports that do need to call some particular compiler,
but it's those ports' job then to find and use that.
> I had my MacPorts configured to error out if `cc` is used
> using the method described at UsingTheRightCompiler#testing.
Why would you do that?
Mandoc is extremely portable. I have yet to see a UNIX system where
it does not build. Except here: of course it "breaks" if you explicitly
make it impossible to run 'cc', which is the right compiler.
BTW, this is how configure.cc is described in the guide:
configure.cc
Set CC compiler flags for selecting a C compiler.
Default: ???
Example:
"compiler flags for selecting a compiler"?
> Perhaps the portfile code that set `CC`
> that was removed in [14f7de9e9ad521cce6389678675706e8593b9834/macports-
> ports] was needed after all.
It is only "needed" if you make it artificially impossible
to call 'cc' (or whatever the port ./configures to be CC).
So: because ports must not call 'cc' on your system,
let's complicate the mandoc Portfile for everyone.
Jan
More information about the macports-dev
mailing list