[MacPorts] #44800: dmd @2.066: file was built for archive which is not the architecture being linked

MacPorts noreply at macports.org
Wed Aug 27 20:11:18 PDT 2014


#44800: dmd @2.066: file was built for archive which is not the architecture being
linked
--------------------------+-----------------------
 Reporter:  ryandesign@…  |      Owner:  takeshi@…
     Type:  defect        |     Status:  new
 Priority:  Normal        |  Milestone:
Component:  ports         |    Version:  2.3.1
 Keywords:  haspatch      |       Port:  dmd
--------------------------+-----------------------
 dmd failed to build on the Lion buildslave:

 {{{
 /usr/bin/clang++ -o dmd -m32 frontend.a root.a glue.a backend.a
 -L/opt/local/lib -Wl,-headerpad_max_install_names -framework CoreServices
 ld: warning: ld: warning: ignoring file frontend.a, file was built for
 archive which is not the architecture being linked (i386):
 frontend.aignoring file glue.a, file was built for archive which is not
 the architecture being linked (i386): glue.a

 ld: warning: ignoring file backend.a, file was built for archive which is
 not the architecture being linked (i386): backend.a
 ld: warning: ignoring file root.a, file was built for archive which is not
 the architecture being linked (i386): root.a
 Undefined symbols for architecture i386:
   "_main", referenced from:
       __start in crt1.o
 ld: symbol(s) not found for architecture i386
 }}}

 The buildslaves are x86_64 machines. None of the rest of the build was
 done for i386, so there's no reason for the final link to be done that
 way. The "`-m32`" does not belong in this linker invocation. This appears
 to come from code in osmodel.mak that incorrectly assumes the userland
 build architecture can be divined from the `uname -m` command; it cannot;
 `uname -m` is the kernel architecture which is not the same thing. The
 port should instead obey the user's requested architecture. "`-arch"`
 flags should be added to all compiler and linker invocations. Adding a
 universal variant would be good too.

 You can set the MODEL_FLAG build argument to override the incorrect
 assumptions made by osmodel.mak, but that still only gets the `-arch`
 flags into the final link command; it still needs to be added to all the
 compile commands before that. The reason seems to be that posix.mak
 originally set CC to HOST_CC and MODEL_FLAG, but CC is overridden by the
 portfile; removing that override fixes that.

 The attached patch fixes these issues.

-- 
Ticket URL: <https://trac.macports.org/ticket/44800>
MacPorts <http://www.macports.org/>
Ports system for OS X


More information about the macports-tickets mailing list