[MacPorts] #58574: poppler @0.77.0: dyld: Symbol not found: _poppler_additional_action_type_get_type

MacPorts noreply at macports.org
Fri Jun 28 22:04:31 UTC 2019


#58574: poppler @0.77.0: dyld: Symbol not found:
_poppler_additional_action_type_get_type
----------------------+----------------------
  Reporter:  RobK88   |      Owner:  dbevans
      Type:  defect   |     Status:  reopened
  Priority:  Normal   |  Milestone:
 Component:  ports    |    Version:  2.5.4
Resolution:           |   Keywords:
      Port:  poppler  |
----------------------+----------------------

Comment (by ryandesign):

 Replying to [comment:13 michaelld]:
 > * The immediate build issue is caused somehow by the use of
 "${prefix}/bin/g-ir-scanner", which is provided by "port:gobject-
 introspection". It seems as though this binary when executed adds
 "-L${prefix}/lib" to link commands, which is what's causing the linking to
 the already-installed "poppler-glib" library. I'm trying to figure out how
 to coerce this binary into -not- adding that link command.

 That's not exactly the problem.

 g-ir-scanner compiles and then runs a program called, in this case,
 Poppler-0.18.

 The compiling finishes successfully. It specifies `-L.` and `-lpoppler-
 glib` which successfully finds the just-built libpoppler-glib.dylib in the
 current directory and links the program with it. It also specifies
 `-L/opt/local/lib` and `-lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl` to
 link the program with other MacPorts libraries.

 The just-built libpoppler-glib.dylib has an install name of /opt/local/lib
 /libpoppler-glib.8.dylib but has not been installed to that location yet,
 so running Poppler-0.18 will load any old copy of the library that's
 already installed there, which will crash if that old library isn't
 sufficiently compatible (e.g. if 0.69 is installed but we were expecting
 0.77).

 If no version of the library has been installed yet, you would think that
 g-ir-scanner would error saying the library was not found, but that
 doesn't happen because it sets `DYLD_FALLBACK_LIBRARY_PATH` to the path to
 the just-built library.

 It seems to me that the fix would be for g-ir-scanner to set
 `DYLD_LIBRARY_PATH` instead of `DYLD_FALLBACK_LIBRARY_PATH`, since we do
 want it to use the just-built library in all cases, even if one is already
 installed, not just as a fallback. In fact that's what g-ir-scanner used
 to do. It was switched to `DYLD_FALLBACK_LIBRARY_PATH` on
 [https://gitlab.gnome.org/GNOME/gobject-introspection/issues/205 your
 suggestion] because of [ticket:56301 a different problem].

 That different problem should only occur if /opt/local/lib were also in
 `DYLD_LIBRARY_PATH`. So maybe the bug is that g-ir-scanner adds all `-L`
 paths to `DYLD_LIBRARY_PATH`. It should only add those paths to
 `DYLD_LIBRARY_PATH` that contain the just-built library(ies).

-- 
Ticket URL: <https://trac.macports.org/ticket/58574#comment:15>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list