Opened 15 years ago

Closed 15 years ago

Last modified 15 years ago

#17044 closed defect (fixed)

evince wants old libopenjeg

Reported by: frstan@… Owned by: dbevans (David B. Evans)
Priority: Normal Milestone:
Component: ports Version: 1.6.0
Keywords: evince openjpeg lib Cc:
Port: evince

Description

evince 2.24.1 wants libopenjeg 2.1.2.0.dylib but current openjeg installs libopenjpeg 2.1.3

" ld: file not found: libopenjpeg-2.1.2.0.dylib collect2: ld returned 1 exit status make[3]: * [libpdfdocument.la] Error 1 make[2]: * [all-recursive] Error 1 make[1]: * [all-recursive] Error 1 make: * [all] Error 2"

Change History (9)

comment:1 Changed 15 years ago by dbevans (David B. Evans)

You can fix this by just rebuilding evince using something like

sudo port -fn upgrade evince

This will uninstall and then reinstall evince linked to the new library.

comment:2 Changed 15 years ago by dbevans (David B. Evans)

Owner: changed from macports-tickets@… to devans@…
Status: newassigned

Actually, I take that back as I don't see openjpeg as a direct dependency of evince, so it must be a dependency of a dependency of evince.

What does

port dependents openjpeg

say on your system?

I'll take this one and look into it further.

comment:3 in reply to:  2 Changed 15 years ago by frstan@…

Replying to devans@…:

Actually, I take that back as I don't see openjpeg as a direct dependency of evince, so it must be a dependency of a dependency of evince.

What does

port dependents openjpeg

say on your system?

I'll take this one and look into it further.

actually this is a build-time error not a run-time error. Sorry I wasnt clear.

macintosh:~ frstan$ port dependents openjpeg gimp-jp2 depends on openjpeg macintosh:~ frstan$ port dependents gimp-jp2 gimp depends on gimp-jp2 macintosh:~ frstan$ port dependents gimp gimp has no dependents

also:

macintosh:~ frstan$ port contents openjpeg Port openjpeg contains:

/opt/local/include/openjpeg.h /opt/local/lib/libopenjpeg-2.1.3.0.dylib /opt/local/lib/libopenjpeg.a /opt/local/lib/libopenjpeg.dylib

comment:4 in reply to:  2 ; Changed 15 years ago by blb@…

Replying to devans@…:

Actually, I take that back as I don't see openjpeg as a direct dependency of evince, so it must be a dependency of a dependency of evince.

evince does have a dep on jpeg, so perhaps configure, when it sees openjpeg available, uses that instead?

comment:5 in reply to:  4 Changed 15 years ago by dbevans (David B. Evans)

Replying to blb@…:

Replying to devans@…:

Actually, I take that back as I don't see openjpeg as a direct dependency of evince, so it must be a dependency of a dependency of evince.

evince does have a dep on jpeg, so perhaps configure, when it sees openjpeg available, uses that instead?

No, that doesn't make sense to me. jpeg is the traditional JPEG 6 library and openjpeg is an implementation of the newer JPEG 2000 file format which is a different thing altogether. As far as I can tell, the only thing that uses openjpeg right now is gimp-jp2 which is a plugin for GIMP (gimp2) which reads and writes images in the JPEG 2000 file format. The port gimp is a metaport. It doesn't do anything itself, only has dependencies on other ports that together make a nice GIMP installation.

The error looks like one that is seen when starting GIMP if the gimp-jp is not up to date, that is, was built against the older version of openjpeg. The cure is to update/rebuild gimp-jp2.

I can't understand how this can be a build time problem -- that is one that appears when building something.

Can you be more detailed in describing the problem?

For instance, exactly what command are you executing when you see the problem. Is it a port install or update command? If so, please run the command with the -d option and include the full debugging output that demonstrates the problem.

It's possible that your ports aren't up to date.

Please

sudo port -d selfupdate
port outdated

and then run

sudo port upgrade <portname>
{{{

for any outdated ports listed.  Then try again.

Sorry, I'm not being much help here -- more information is needed.
}}}

comment:6 Changed 15 years ago by dbevans (David B. Evans)

Ok, after poking around a bit here is what I found:

1) Evince depends on poppler

2) Although poppler and/or evince don't explictly name openjpeg as a dependency in their port files, if openjpeg is present, poppler will link it in. For instance poppler provides

/opt/local/lib/libpoppler-glib.4.0.0.dylib

and on my system libpoppler-glib.4.0.0.dylib is linked against it

otool -L /opt/local/lib/libpoppler-glib.4.0.0.dylib


/opt/local/lib/libpoppler-glib.4.0.0.dylib:
        /opt/local/lib/libpoppler-glib.4.dylib (compatibility version 5.0.0, current version 5.0.0)
        /opt/local/lib/libopenjpeg-2.1.2.0.dylib (compatibility version 2.0.0, current version 2.1.2)
        .....

/opt/local/lib/libopenjpeg-2.1.2.0.dylib was produced by openjpeg-1.3_1 but the current version openjpeg-1.3_2 produces

port contents openjpeg
Port openjpeg contains:
  /opt/local/include/openjpeg.h
  /opt/local/lib/libopenjpeg-2.1.3.0.dylib   <----
  /opt/local/lib/libopenjpeg.a
  /opt/local/lib/libopenjpeg.dylib

Hence evince loads /opt/local/lib/libpoppler-glib.4.0.0.dylib which wants to load /opt/local/lib/libopenjpeg-2.1.2.0.dylib but only /opt/local/lib/libopenjpeg-2.1.3.0.dylib is available and it fails.

There some things that can be done in these ports to straighten this out but for a quick fix since libopenjpeg-2.1.2.0.dylib and /opt/local/lib/libopenjpeg-2.1.3.0.dylib are ABI compatible you can probably fix your problem by doing this:

cd /opt/local/lib
ln -s libopenjpeg-2.1.3.0.dylib libopenjpeg-2.1.2.0.dylib

if you can do this and confirm that your problem is solved for now, I will pursue the underlying dependency problems that this has revealed in evince, poppler and openjpeg.

comment:7 Changed 15 years ago by frstan@…

the unacknowledged dep on poppler was it alright. I did: sudo port -dfun upgrade poppler

and then

sudo port -dfun upgrade evince

completed fine.

comment:8 Changed 15 years ago by dbevans (David B. Evans)

Resolution: fixed
Status: assignedclosed

Great, although I think rebuilding poppler would have been enough since the install name for the poppler library has not changed. Have added an explicit dependency on openjpeg in port poppler and incremented the revision number so that current installations of poppler will correctly reference the current openjpeg library. Committed in r41311.

comment:9 Changed 15 years ago by (none)

Milestone: Port Bugs

Milestone Port Bugs deleted

Note: See TracTickets for help on using tickets.