Opened 2 years ago
Closed 2 years ago
#65346 closed defect (fixed)
rust PG: can't link librsvg 2.54 on Snow Leopard
Reported by: | evanmiller (Evan Miller) | Owned by: | MarcusCalhoun-Lopez (Marcus Calhoun-Lopez) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.7.2 |
Keywords: | snowleopard | Cc: | mascguy (Christopher Nielsen) |
Port: | rust librsvg |
Description
I just built Rust on 10.6 (!) and am trying to use it to build the librsvg(-devel) port. However I get an assertion error during linking:
:info:build libtool: link: /opt/local/bin/clang-mp-11 -dynamiclib -o .libs/librsvg-2.2.dylib -Wl,-force_load,./.libs/librsvg_c_api.a -framework Foundation -lobjc -L/opt/local/lib /opt/local/lib/libpng16.dylib /opt/local/lib/libcairo-gobject.dylib -lgdk_pixbuf-2.0 -lgio-2.0 /opt/local/lib/libxml2.dylib -lpangocairo-1.0 /opt/local/lib/libcairo.dylib -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 /opt/local/lib/libintl.dylib /opt/local/lib/libharfbuzz.dylib /opt/local/lib/libfontconfig.dylib /opt/local/lib/libfreetype.dylib -arch x86_64 -Wl,-syslibroot -Wl,/ -arch x86_64 -framework Foundation -pthread -framework ApplicationServices -install_name /opt/local/lib/librsvg-2.2.dylib -compatibility_version 51 -current_version 51.0 -Wl,-single_module -Wl,-exported_symbols_list,.libs/librsvg-2-symbols.expsym :info:build Assertion failed: (name != NULL), function Fixup, file src/ld/ld.hpp, line 394. :info:build 0 0x100001fa0 __assert_rtn + 79 :info:build 1 0x10007564e ld::Fixup::Fixup(unsigned int, ld::Fixup::Cluster, ld::Fixup::Kind, bool, char const*) + 70 :info:build 2 0x10009015c mach_o::relocatable::Parser<x86_64>::FixupInAtom::FixupInAtom(mach_o::relocatable::Parser<x86_64>::SourceLocation const&, ld::Fixup::Cluster, ld::Fixup::Kind, bool, char const*) + 30 :info:build 3 0x10009baff mach_o::relocatable::Parser<x86_64>::addFixup(mach_o::relocatable::Parser<x86_64>::SourceLocation const&, ld::Fixup::Cluster, ld::Fixup::Kind, bool, char const*) + 31 :info:build 4 0x10008882d mach_o::relocatable::Section<x86_64>::addRelocFixup(mach_o::relocatable::Parser<x86_64>&, macho_relocation_info<Pointer64<LittleEndian> > const*) + 1977 :info:build 5 0x1000a4b2d mach_o::relocatable::Section<x86_64>::makeFixups(mach_o::relocatable::Parser<x86_64>&, mach_o::relocatable::Parser<x86_64>::CFI_CU_InfoArrays const&) + 75 :info:build 6 0x1000b8a0f mach_o::relocatable::Parser<x86_64>::parse(mach_o::relocatable::ParserOptions const&) + 1251 :info:build 7 0x1000b8e5f mach_o::relocatable::Parser<x86_64>::parse(unsigned char const*, unsigned long long, char const*, long, unsigned int, mach_o::relocatable::ParserOptions const&) + 66 :info:build 8 0x100089643 mach_o::relocatable::parse(unsigned char const*, unsigned long long, char const*, long, unsigned int, mach_o::relocatable::ParserOptions const&) + 319 :info:build 9 0x10006ff07 archive::File<x86_64>::makeObjectFileForMember(archive::File<x86_64>::Entry const*) const + 407 :info:build 10 0x100070122 archive::File<x86_64>::forEachAtom(ld::File::AtomHandler&) const + 150 :info:build 11 0x10000db95 ld::tool::InputFiles::forEachInitialAtom(ld::File::AtomHandler&) const + 45 :info:build 12 0x100064e0a ld::tool::Resolver::buildAtomList() + 38 :info:build 13 0x100066561 ld::tool::Resolver::resolve() + 89 :info:build 14 0x10000b896 main + 220 :info:build clang: error: linker command failed with exit code 1 (use -v to see invocation) :info:build make[2]: *** [librsvg-2.la] Error 1 :info:build make[2]: Leaving directory `/opt/local/var/macports/build/_Users_emiller_macports.local_graphics_librsvg-devel/librsvg-devel/work/librsvg-2.54.3'
Any ideas? Full log attached.
Attachments (1)
Change History (9)
Changed 2 years ago by evanmiller (Evan Miller)
comment:1 Changed 2 years ago by kencu (Ken)
comment:2 Changed 2 years ago by evanmiller (Evan Miller)
In the log I see
extract compiler_wrapper: -> Comp Flags: Will embed ' -lobjc -fuse-ld=/opt/local/bin/ld-274' in ld wrapper script
Any tips on changing that?
comment:3 Changed 2 years ago by evanmiller (Evan Miller)
Looks like this flag is added by the Rust PG:
if { [string match "macports-clang*" [option configure.compiler]] && [option os.major] < 11 } { # by default, ld64 uses ld64-127 when 9 <= ${os.major} < 11 # Rust fails to build when architecture is x86_64 and ld64 uses ld64-127 depends_build-delete port:ld64-274 depends_build-append port:ld64-274 depends_skip_archcheck-delete ld64-274 depends_skip_archcheck-append ld64-274 configure.ldflags-delete -fuse-ld=${prefix}/bin/ld-274 configure.ldflags-append -fuse-ld=${prefix}/bin/ld-274 }
I think this block needs to be moved so that it only affects builds of Rust and not other ports.
comment:4 Changed 2 years ago by evanmiller (Evan Miller)
Summary: | rust @1.61: can't build librsvg 2.54 on Snow Leopard → rust PG: can't link librsvg 2.54 on Snow Leopard |
---|
comment:5 Changed 2 years ago by kencu (Ken)
Right.
Marcus did that to force 274 even if 127 was defaulted.
Maybe stick a -v in the ldflags there temporarily to see what the error actually is ?
comment:6 Changed 2 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)
librsvg uses libtool, which does not recognize -fuse-ld
(at least not yet).
It is relatively easy to get libtool to recognize -fuse-ld
.
A trickier problem is that the Objective-C runtime crate seems to require 10.7 or newer.
The Objective-C runtime crate can be deactivated (along with macos::system_locale, which uses it) since it is only one of several possibilities.
However, it is not pleasant to maintain.
As far as I know, the Rust macro system does not support OS versions.
There is an inelegant pull request that attempts to solve the problem.
However, as I said, it may not be fun to maintain.
comment:7 Changed 2 years ago by kencu (Ken)
you can get past the libtool/ld issue by installing ld64 +ld64_latest
I believe, which all users of 10.6 should do anyway, even if we can not yet seem to get the buildbot to install it from bare metal. (once we sort out gcc10-bootstrap -> clang11-bootstrap that is meant to be simpler, by the way).
comment:8 Changed 2 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
what linker are you using? 127?
you might need to manually select a newer one, like latest (I only ever use latest).