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? => wiki:howto/PatchLocal

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

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

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? => https://trac.macports.org/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 and away you go. This is how we fix broken Ports and generate the patches in the first place.

Version 2, edited 6 years ago by kencu (Ken) (previous) (next) (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.