#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 16 years ago by dbevans (David B. Evans)
comment:2 follow-ups: 3 4 Changed 16 years ago by dbevans (David B. Evans)
Owner: | changed from macports-tickets@… to devans@… |
---|---|
Status: | new → assigned |
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 Changed 16 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 openjpegsay 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 follow-up: 5 Changed 16 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 Changed 16 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 16 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 16 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 16 years ago by dbevans (David B. Evans)
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
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.
You can fix this by just rebuilding evince using something like
This will uninstall and then reinstall evince linked to the new library.