[MacPorts] #60070: Ports opportunistically use libmacho and libunwind; fail when architectures don't match (was: port install wine -universal fails because of bison build failure)
MacPorts
noreply at macports.org
Tue Feb 11 01:49:12 UTC 2020
#60070: Ports opportunistically use libmacho and libunwind; fail when architectures
don't match
----------------------------------+--------------------
Reporter: TheLastLovemark | Owner: (none)
Type: defect | Status: new
Priority: Normal | Milestone:
Component: ports | Version: 2.6.2
Resolution: | Keywords:
Port: libmacho, libunwind |
----------------------------------+--------------------
Changes (by ryandesign):
* cc: ryandesign (removed)
* cc: jeremyhu (added)
* port: bison => libmacho, libunwind
Comment:
The wine port is not like other ports. In other ports, building non-
universal means building for the CPU's native architecture—e.g. on an
x86_64 processor it would build for x86_64. In wine, on the other hand,
building non-universal means building for i386, even on an x86_64
processor. See comment:ticket:58025:3 for why it is this way and some
solutions we might be able to use in the future.
So when you are asking MacPorts to install wine non-universal on an x86_64
system, the only thing you are accomplishing is that you are preventing
yourself from being able to run 64-bit Windows software with it. MacPorts
will still need to build wine's dependencies universal. That's why it's
building bison universal. And that's failing, with this message from
configure:
{{{
:info:configure checking whether the C compiler works... no
:info:configure configure: error: in
`/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_devel_bison/bison/work/bison-3.5.1':
:info:configure configure: error: C compiler cannot create executables
:info:configure See `config.log' for more details
}}}
And this message in config.log:
{{{
configure:5208: checking whether the C compiler works
configure:5230: /usr/bin/clang -pipe -Os -arch x86_64 -arch i386
-I/opt/local/include -L/opt/local/lib -Wl,-headerpad_max_install_names
-arch x86_64 -arch i386 conftest.c >&5
ld: warning: The i386 architecture is deprecated for macOS (remove from
the Xcode build setting: ARCHS)
ld: in '/opt/local/lib/libunwind.dylib', file was built for x86_64 which
is not the architecture being linked (i386):
/opt/local/lib/libunwind.dylib for architecture i386
}}}
libunwind is part of the operating system. But apparently we also have a
port for it. And you apparently have that port installed. So anything that
uses libunwind is going to find the MacPorts copy instead. And it's going
to need to have been built for the same architectures, which on your
system it's not, just as on your system libmacho, another part of the
operating system, had a corresponding port installed shadowing the system
version. I do not know why we have there ports or why you have them
installed. To solve this, either install the libunwind port with the
universal variant, or better yet, uninstall it, along with the libmacho
port mentioned previously.
I'm going to un-Cc myself since I am very busy this month and this is not
a problem with wine. In my opinion, the problem is that the libmacho and
libunwind ports exist, because the only consequence of that seems to be
that it enables users to shoot themselves in the foot by installing them.
--
Ticket URL: <https://trac.macports.org/ticket/60070#comment:4>
MacPorts <https://www.macports.org/>
Ports system for macOS
More information about the macports-tickets
mailing list