Opened 6 years ago

Closed 6 years ago

Last modified 6 years ago

#55870 closed defect (fixed)

gtk3 @3.22.28_0+quartz "Symbol not found"

Reported by: jjstickel (Jonathan Stickel) Owned by: dbevans (David B. Evans)
Priority: Normal Milestone:
Component: ports Version: 2.4.2
Keywords: haspatch Cc: olupton (Olli Lupton), olmanolman, Bachsau (Bachsau), ryandesign (Ryan Carsten Schmidt)
Port: gtk3

Description

After upgrading gtk3 to 3.22.28 with +quartz, I get the following error:

$ port installed gtk3
The following ports are currently installed:
  gtk3 @3.22.28_0+quartz (active)

$ gtk3-demo
dyld: lazy symbol binding failed: Symbol not found: _gdk_quartz_atom_to_pasteboard_type_libgtk_only
  Referenced from: /opt/local/lib/libgtk-3.0.dylib
  Expected in: flat namespace

dyld: Symbol not found: _gdk_quartz_atom_to_pasteboard_type_libgtk_only
  Referenced from: /opt/local/lib/libgtk-3.0.dylib
  Expected in: flat namespace

Abort trap: 6

Attachments (2)

patch-gdk_quartz_namespace.diff (603 bytes) - added by jjstickel (Jonathan Stickel) 6 years ago.
gtk3_Portfile.diff (687 bytes) - added by jjstickel (Jonathan Stickel) 6 years ago.

Download all attachments as: .zip

Change History (13)

comment:1 Changed 6 years ago by mf2k (Frank Schima)

Cc: devans@… removed
Keywords: quartz removed
Owner: set to dbevans
Status: newassigned

comment:2 Changed 6 years ago by fredowski

Hi, I proposed a fix upstream. See:

https://bugzilla.gnome.org/show_bug.cgi?id=793811

The fix is already in the master branch, i.e. it could be backported to the 3.22 branch. This is blocking for all quartz builds.

Changed 6 years ago by jjstickel (Jonathan Stickel)

Changed 6 years ago by jjstickel (Jonathan Stickel)

Attachment: gtk3_Portfile.diff added

comment:3 Changed 6 years ago by jjstickel (Jonathan Stickel)

I used the upstream commit that fredowski pointed out in the attached patches. This fixed it for me.

comment:4 Changed 6 years ago by olupton (Olli Lupton)

Cc: olupton added

comment:5 Changed 6 years ago by olupton (Olli Lupton)

The patches attached to this ticket worked for me.

comment:6 Changed 6 years ago by Bachsau (Bachsau)

Port need fixing. Is this really the only way to get a patched port? => https://trac.macports.org/wiki/howto/PatchLocal

I fucking hate this over-complication in MacPorts. Don't have time for this.

Version 0, edited 6 years ago by Bachsau (Bachsau) (next)

comment:7 in reply to:  6 Changed 6 years ago by jjstickel (Jonathan Stickel)

Replying to Bachsau:

Port need fixing. Is this really the only way to get a patched port? => wiki:howto/PatchLocal

I fucking hate this over-complication in MacPorts. Don't have time for this.

Yes, that wiki tells you how to setup a local port tree (plus some extra steps that don't apply if you just need to apply patches from this ticket). While Macports is a well-designed packaging system that works most of the time, it suffers the usual bugs and delays due to insufficient volunteer developers. It doesn't help that Homebrew has stolen a lot of market share and potential developers, either. You can try sending a message to the macports-user mailing list politely pointing out your need for this ticket to be addressed. It is blocking all ports that depend on gtk3 +quartz.

Last edited 6 years ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)

comment:8 in reply to:  6 Changed 6 years ago by kencu (Ken)

Replying to Bachsau:

Port need fixing. Is this really the only way to get a patched port? => wiki:howto/PatchLocal

I fucking hate this over-complication in MacPorts. Don't have time for this.

There are much easier ways to do quick fixes.e.g.

cd `port dir gtk3`, then edit the Portfile in-place and add the patch to the ./files directory. This takes 10 seconds, but disappears with the next sync.

Make a local copy of a single port directory anywhere you want cp -R `port dir gtk3` ., then enter that directory cd gtk3 and make your modifications to the Portfile and add your patch to the ./files directory. To use the Portfile, be in the directory with the Portfile, and use sudo port -v install +variants (note no Portname specified).

You don't have to do any of this if you don't want to. If your port doesn't build, cd `port work gtk3`, and edit the errant sourcefile directly in place. No patches, no touching the Portfile. Then sudo port -v install gtk3 and away you go. If another error comes up, edit that sourcefile if you know how to fix it, and keep on building. This is how we fix broken Ports and generate the patches in the first place.

Last edited 6 years ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)

comment:9 Changed 6 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: olmanolman Bachsau added
Keywords: haspatch added

Has duplicate #55868.

I'm going to commit this fix, since David hasn't objected.

comment:10 Changed 6 years ago by ryandesign (Ryan Carsten Schmidt)

Resolution: fixed
Status: assignedclosed

In f7dd5462da7e11cecb2986eaf907a860e65f53ed/macports-ports:

gtk3: Fix lazy symbol binding failure with quartz variant

Closes: #55870

comment:11 Changed 6 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: ryandesign added
Note: See TracTickets for help on using tickets.