Opened 11 years ago
Closed 10 years ago
#43737 closed defect (fixed)
ld64 @236.3_1 build failure with g++-4.2 on OS X 10.6.8
Reported by: | mopihopi | Owned by: | jeremyhu (Jeremy Huddleston Sequoia) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.2.1 |
Keywords: | snowleopard | Cc: | mndavidoff (Monte Davidoff), schmittj@…, astrofitz (Michael Fitzgerald), aag6581@…, tommaso.vinci@…, cooljeanius (Eric Gallager), apaye026@…, ivl1705, jdasmith@…, gnw3, jumasoal@…, physadair@…, dliessi (Davide Liessi), spinach@…, wilson@…, null-macports.org@…, lance@…, mkae (Marko Käning), jenstroeger (Jens Troeger), StanSanderson, udbraumann, bitpup, jschwab@…, pattylin@…, eborisch (Eric A. Borisch), melissa.m.hoffman@…, frozencemetery (Robbie Harwood), otto.hasselblad@…, ctreleaven (Craig Treleaven) |
Port: | ld64 |
Description
Upgrading or installing ld64 on OS X 10.6.8 with g++ 4.2 produces a build failure.
---> Building ld64 Error: org.macports.build for port ld64 returned: command execution failed Please see the log file for port ld64 for details: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_ports_devel_ld64/ld64/main.log To report a bug, follow the instructions in the guide: http://guide.macports.org/#project.tickets Error: Processing of port ld64 failed
... :info:build /usr/bin/g++-4.2 -Os -Os -arch x86_64 -I/opt/local/libexec/llvm-3.4/include -DLTO_SUPPORT -Isrc/abstraction -Isrc/ld -Isrc/ld/parsers -I/opt/local/include -c -o src/other/dyldinfo.o src/other/dyldinfo.cpp :info:build src/ld/parsers/macho_relocatable_file.cpp: In member function ‘const char* mach_o::relocatable::CUSection<A>::personalityName(mach_o::relocatable::Parser<A>&, const macho_relocation_info<typename A::P>*) [with A = x86_64]’: :info:build src/ld/parsers/macho_relocatable_file.cpp:4484: error: ‘ld::Section’ is not a template ...
Attachments (4)
Change History (56)
Changed 11 years ago by mopihopi
Attachment: | ld64-236.3_1+llvm34.log added |
---|
comment:2 Changed 11 years ago by mf2k (Frank Schima)
Cc: | jeremyhu@… removed |
---|---|
Owner: | changed from macports-tickets@… to jeremyhu@… |
comment:4 Changed 11 years ago by raramayo (Rodolfo Aramayo)
Cc Me!
Observing same behavior bot updating and/or installing
Changed 11 years ago by raramayo (Rodolfo Aramayo)
Attachment: | ld64.error.log added |
---|
Changed 11 years ago by raramayo (Rodolfo Aramayo)
Attachment: | ld64.error.1.log added |
---|
comment:6 Changed 11 years ago by aag6581@…
Cc Me!
Got the same error. 10.6.8, gcc 4.2.1, macports 2.2.1
comment:12 Changed 11 years ago by jdasmith@…
Cc: | jdasmith@… added |
---|
Cc Me!
Same error. OSX 10.6.8, irrespective of port select gcc flavour - none, gcc42, mp-gcc47
comment:18 Changed 11 years ago by spinach@…
I have the same problem... gcc44 fails because of an ld64 error.
What I have tried:
sudo port clean ld64 sudo port install ld64
same error as below
After many gyrations, I even tried uninstalling macports and reinstalling it -- also that didn't work.
I also removed all files from /usr/local, as was suggested in a different forum and that didn't help.
I've also tried:
sudo port -v sync sudo port -v -f uninstall cctools cctools-headers dyld-headers ld64 sudo port -v install cctools
That also didn't work. I keep getting the same error:
---> Building ld64 Error: org.macports.build for port ld64 returned: command execution failed Please see the log file for port ld64 for details: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_ld64/ld64/main.log To report a bug, follow the instructions in the guide: http://guide.macports.org/#project.tickets Error: Processing of port ld64 failed
I'm running OS 10.6.8 (snow leopard) on a MacPro 1,1 with 16GB of ram.
comment:19 follow-ups: 20 25 Changed 11 years ago by mopihopi
I was able to work around the issue using:
sudo port clean ld64 sudo port upgrade ld64 configure.compiler=macports-clang-3.4
Of course, this requires clang-3.4
. It would probably work with another version of clang if you have a different one installed.
comment:20 Changed 11 years ago by tommaso.vinci@…
Replying to mopihopi@…:
Of course, this requires
clang-3.4
. It would probably work with another version of clang if you have a different one installed.
... and it doesn't work if you try first to install clang because it needs ld64 ...
comment:21 follow-up: 22 Changed 11 years ago by ryandesign (Ryan Carsten Schmidt)
Cc: | wilson@… added |
---|
Has duplicate #43790.
comment:22 Changed 11 years ago by spinach@…
Replying to ryandesign@…:
Has duplicate #43790
There is actually a lot of duplicate tickets citing this problem but none, that I could find, actually solved the problem. Any help is greatly appreciated.
comment:24 Changed 11 years ago by ryandesign (Ryan Carsten Schmidt)
Cc: | null-macports.org@… lance@… added |
---|
Has duplicate #43801.
comment:25 Changed 11 years ago by papadopoulos_dimitrios@…
Replying to mopihopi@…:
I was able to work around the issue using:
sudo port clean ld64 sudo port upgrade ld64 configure.compiler=macports-clang-3.4Of course, this requires
clang-3.4
. It would probably work with another version of clang if you have a different one installed.
This lead to error: infinite loop. But I tried with sudo port upgrade ld64 configure.compiler=macports-clang-3.2
and it worked for me. Thanks!
comment:26 Changed 11 years ago by jeremyhu (Jeremy Huddleston Sequoia)
And not to mention ld64 is a dependency of clang, so ...
comment:27 follow-up: 30 Changed 11 years ago by jeremyhu (Jeremy Huddleston Sequoia)
Does it work with llvm-gcc-4.2? If nobody can provide a patch for this, we may just have to keep Snow Leopard users at an older ld64 version
comment:28 Changed 11 years ago by jdasmith@…
Hmm, I thought I had responded here, but perhaps I ended up doing so on one of the many duplicates.
Given UsingTheRightCompiler to find the appropriate compilers:
I have tried
lassi:~ jonny$ sudo port clean ld64 Password: ---> Cleaning ld64 lassi:~ jonny$ sudo port select --list gcc Available versions for gcc: apple-gcc42 gcc40 gcc42 llvm-gcc42 (active) mp-gcc47 none lassi:~ jonny$ sudo port upgrade ld64 configure.compiler=llvm-gcc-4.2 ---> Computing dependencies for ld64 ---> Fetching archive for ld64 ---> Attempting to fetch ld64-236.3_1+llvm32.darwin_10.x86_64.tbz2 from http://mse.uk.packages.macports.org/sites/packages.macports.org/ld64 ---> Attempting to fetch ld64-236.3_1+llvm32.darwin_10.x86_64.tbz2 from http://lil.fr.packages.macports.org/ld64 ---> Attempting to fetch ld64-236.3_1+llvm32.darwin_10.x86_64.tbz2 from http://nue.de.packages.macports.org/macports/packages/ld64 ---> Fetching distfiles for ld64 ---> Verifying checksums for ld64 ---> Extracting ld64 ---> Applying patches to ld64 ---> Configuring ld64 ---> Building ld64 Error: org.macports.build for port ld64 returned: command execution failed Please see the log file for port ld64 for details: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports. org_release_tarballs_ports_devel_ld64/ld64/main.log Error: Unable to upgrade port: 1 To report a bug, follow the instructions in the guide: http://guide.macports.org/#project.tickets lassi:~ jonny$ cat /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_ld64/ld64/main.log | grep -i error :debug:archivefetch Fetching archive failed:: The requested URL returned error: 404 :debug:archivefetch Fetching archive failed:: The requested URL returned error: 404 :debug:archivefetch Fetching archive failed:: The requested URL returned error: 404 :info:build src/ld/parsers/macho_relocatable_file.cpp:4484: error: ‘ld::Section’ is not a template :info:build src/ld/parsers/macho_relocatable_file.cpp:4504: error: ‘ld::Section’ is not a template :info:build src/ld/parsers/macho_relocatable_file.cpp:4512: error: ‘class ld::Section’ has no member named ‘machoSection’ :info:build src/ld/parsers/macho_relocatable_file.cpp:4531: error: ‘ld::Section’ is not a template :info:build src/ld/parsers/macho_relocatable_file.cpp:6951: error: using ‘typename’ outside of template :info:build make: *** [src/ld/parsers/macho_relocatable_file.o] Error 1 :error:build org.macports.build for port ld64 returned: command execution failed :debug:build Error code: CHILDSTATUS 25082 2
I have additionally tried setting gcc to the other compilers listed here, cleaning, then setting macports to build ld64 with the configure.compiler set (except apple, which I tried to build, but only got half way because it needed ld64)
There is only the one ld64 showing in macports, so I think no macports user option to downgrade to get a snow leopard system working again. I'm happy to try any suggestions.
comment:30 Changed 11 years ago by mopihopi
Replying to jeremyhu@…:
Does it work with llvm-gcc-4.2? If nobody can provide a patch for this, we may just have to keep Snow Leopard users at an older ld64 version
It doesn't build with any g++ that I tried (gcc++-4.2
, llvm-g++-4.2
, or g++-mp-4.[4-8]
), but builds at least with configure.compiler=macports-clang-3.[1-4]
if that compiler is installed.
Is it possible to get current ld64
and clang-3.4
binary archives on packages.macports.org to avoid the circular dependency?
It appears that current clang-3.2
binary archives are available for Snow Leopard, so anyone that doesn't already have a clang-3.x
installed may be able to get it working by installing clang-3.2
(perhaps with -n
to avoid updating the ld64 dependency) and then upgrading or installing ld64
with configure.compiler=macports-clang-3.2
as in comment:25.
comment:31 follow-up: 33 Changed 11 years ago by pietvo (Pieter van Oostrum)
I could install ld64 with configure.compiler=macports-clang-3.3 which I happened to have installed.
comment:32 Changed 11 years ago by ryandesign (Ryan Carsten Schmidt)
Cc: | jens.troeger@… added |
---|
Has duplicate #43813.
comment:33 follow-up: 43 Changed 11 years ago by ivl1705
Replying to piet@…:
I could install ld64 with configure.compiler=macports-clang-3.3 which I happened to have installed.
worked for me
System Version: Mac OS X 10.6.8; MacPorts Version: 2.2.1
comment:38 Changed 10 years ago by ryandesign (Ryan Carsten Schmidt)
Cc: | pattylin@… added |
---|---|
Keywords: | snowleopard added |
Has duplicate #43833.
comment:43 Changed 10 years ago by frozencemetery (Robbie Harwood)
Replying to listmember@…:
Replying to piet@…:
I could install ld64 with configure.compiler=macports-clang-3.3 which I happened to have installed.
worked for me
System Version: Mac OS X 10.6.8; MacPorts Version: 2.2.1
Same process for me works with macports-clang-3.4 on OSX 10.6.8 with MacPorts 2.3.0
comment:45 follow-up: 46 Changed 10 years ago by mopihopi
I had resolved this on my system by building ld64 @236.3_1 with clang-3.4, however during an update today, MacPorts automatically "updated" it to the old version @136_2 :(.
ld64 @236.3_1 should build on Snow Leopard if all versions of gcc are blacklisted. It looks like there was an attempt to do that in r120447, however the Snow Leopard buildbot still tried (and failed) to build with g++-4.2. I'm guessing that is because there is another blacklist line after that one in the Portfile, which overrides it. If the blacklist conflict is corrected (which should be done anyway for the other OS X versions) that should make it possible to reinstate this fix for Snow Leopard.
There is also now a current Snow Leopard binary archive for all of the clang versions, allowing the circular dependency issue to be avoided to build ld64 from source when clang-3.x is not already installed.
comment:46 Changed 10 years ago by jeremyhu (Jeremy Huddleston Sequoia)
Replying to mopihopi@…:
I had resolved this on my system by building ld64 @236.3_1 with clang-3.4, however during an update today, MacPorts automatically "updated" it to the old version @136_2 :(.
Yes ... so as to not block everything dependent on ld64 ;)
ld64 @236.3_1 should build on Snow Leopard if all versions of gcc are blacklisted.
Yes, however that causes a dependency cycle. clang depends on ld64.
There is also now a current Snow Leopard binary archive for all of the clang versions, allowing the circular dependency issue to be avoided to build ld64 from source when clang-3.x is not already installed.
That's not really a valid argument. We need to ensure there is no cycle.
comment:47 follow-up: 49 Changed 10 years ago by alex.hanselmann@…
I question the scope of the bug? I just updated to MacPorts 2.3.0 on a OSX 10.7.5 computer. The compiling of ld64(ld64-236.3) fails too. The using of Clang-3-4 as a solution fails too.
Some details of the process that stopped at executing: make -j2 -w all CC="/usr/bin/llvm-gcc-4.2" CXX="/usr/bin/llvm-g++-4.2" OTHER_CPPFLAGS="-I/opt/local/include" OTHER_CFLAGS="-Os -arch x86_64" OTHER_CXXFLAGS="-Os -arch x86_64" OTHER_LDFLAGS="-L/opt/local/lib -Wl,-headerpad_max_install_names -arch x86_64" RC_SUPPORTED_ARCHS="armv6 armv7 i386 x86_64" LLVM_CONFIG=/opt/local/bin/llvm-config-mp-3.3.
This make run consisted of the problematic part that failed "-/usr/bin/llvm-g++-4.2 -Os -Os -arch x86_64 -I/opt/local/libexec/llvm-3.3/include -DLTO_SUPPORT -Isrc/abstraction -Isrc/ld -Isrc/ld/parsers -I/opt/local/include -c -o src/ld/passes/stubs/stubs.o src/ld/passes/stubs/stubs.cpp"
comment:48 Changed 10 years ago by jeremyhu (Jeremy Huddleston Sequoia)
Just update and install 136.
Changed 10 years ago by mopihopi
Attachment: | ld64-blacklist-fix.patch added |
---|
fix conflicting compiler blacklist
comment:49 follow-up: 50 Changed 10 years ago by mopihopi
Replying to alex.hanselmann@…:
I question the scope of the bug? I just updated to MacPorts 2.3.0 on a OSX 10.7.5 computer. The compiling of ld64(ld64-236.3) fails too. The using of Clang-3-4 as a solution fails too.
This bug affects users of later OS X versions if their default C++ compiler is not clang. I think that includes Lion users using a version of XCode earlier than about 4.3 or 4.2. If you don't want to update your XCode I would expect that compiling with macports-clang-3.4 would work.
make -j2 -w all CC="/usr/bin/llvm-gcc-4.2" CXX="/usr/bin/llvm-g++-4.2" OTHER_CPPFLAGS="-I/opt/local/include" OTHER_CFLAGS="-Os -arch x86_64" OTHER_CXXFLAGS="-Os -arch x86_64" OTHER_LDFLAGS="-L/opt/local/lib -Wl,-headerpad_max_install_names -arch x86_64" RC_SUPPORTED_ARCHS="armv6 armv7 i386 x86_64" LLVM_CONFIG=/opt/local/bin/llvm-config-mp-3.3.
That says that it is using llvm-gcc-4.2
(the default compiler in XCode 4.1). Unfortunately ld64 @236.3_1 does not compile with that compiler. If you haven't done so already, you might try this:
sudo port clean ld64 sudo port upgrade ld64 -llvm33 +llvm34 configure.compiler=macports-clang-3.4
I've also attached a simple patch for the conflicting blacklist in the Portfile, which should prevent it from trying that compiler by default.
comment:50 Changed 10 years ago by jeremyhu (Jeremy Huddleston Sequoia)
Replying to mopihopi@…:
Replying to alex.hanselmann@…:
I question the scope of the bug? I just updated to MacPorts 2.3.0 on a OSX 10.7.5 computer. The compiling of ld64(ld64-236.3) fails too. The using of Clang-3-4 as a solution fails too.
This bug affects users of later OS X versions if their default C++ compiler is not clang. I think that includes Lion users using a version of XCode earlier than about 4.3 or 4.2. If you don't want to update your XCode I would expect that compiling with macports-clang-3.4 would work.
Yes. People running unsupported configurations may need to jump through hoops. There's really no reason to be on such an old version of Xcode on Lion.
comment:51 Changed 10 years ago by jeremyhu (Jeremy Huddleston Sequoia)
r120606 has your blacklist update, thanks.
comment:52 Changed 10 years ago by jeremyhu (Jeremy Huddleston Sequoia)
Resolution: | → fixed |
---|---|
Status: | new → closed |
ld64 @236.3_1 +llvm34 build log with g++ 4.2 on OS X 10.6.8