[MacPorts] #23594: dcraw configuration fails

MacPorts noreply at macports.org
Wed Feb 10 10:10:53 PST 2010


#23594: dcraw configuration fails
--------------------------------+-------------------------------------------
 Reporter:  dplepage@…          |       Owner:  ryandesign@…           
     Type:  defect              |      Status:  new                    
 Priority:  Normal              |   Milestone:                         
Component:  ports               |     Version:  1.8.2                  
 Keywords:                      |        Port:  dcraw                  
--------------------------------+-------------------------------------------

Comment(by dweber@…):

 Replying to [comment:4 ryandesign@…]:
 > I believe the dcraw port thinks you have the ufraw port installed, and
 is failing when trying to determine its version. If this is the problem,
 you can work around it by deactivating the ufraw port before trying to
 install the dcraw port. Do you have ufraw installed? If so, what happens
 when you run "`ufraw --version`"?


 On OSX 10.5.8, I get the following,
 {{{
 $ which ufraw
 /opt/local/bin/ufraw
 $ ufraw --version
 dyld: Library not loaded: /opt/local/lib/libjpeg.62.dylib
   Referenced from: /opt/local/bin/ufraw
   Reason: image not found
 Trace/BPT trap
 }}}
 No freakin idea how that came to be.  You would think this would be picked
 up by a build failure for ufraw or something?  What about the build
 dependency tree for libjpeg?

 Looks like we have some kind of "cyclic dependency" issue because dcraw is
 trying to test for a specific version of ufraw and it also has dependency
 on a specific version of libjpeg.  So an {{{port upgrade -uR libjpeg}}}
 might first upgrade libjpeg and then try to upgrade ufraw, which deps on
 dcraw and dcraw then checks for the version of ufraw installed by trying
 to run ufraw, but this crashes because the libjpeg is now upgraded.  Is
 that it?  Nasty little dep cycle.


 The current dcraw port file contains a pre-configure section as follows,
 {{{
 pre-configure {
     # ufraw 0.15 and earlier provided its own copy of dcraw, but 0.16 now
     # depends on the dcraw port instead. To prevent activation conflicts
     # when upgrading to ufraw 0.16, ensure an old dcraw-providing ufraw
     # is not active.
     if {[file exists ${prefix}/bin/ufraw]} {
         set ufraw_minimum_version 0.16
         set ufraw_installed_version [exec ufraw --version 2>&1 | awk
 "/^ufraw/ {print \$2}"]
         if {[rpm-vercomp ${ufraw_installed_version}
 ${ufraw_minimum_version}] < 0} {
             return -code error "Please deactivate your currently-installed
 ufraw port, then try again"
         }
     }
 }
 }}}


 So this looks interesting.  First it checks to see if ufraw is installed
 by checking if the file exists in ${prefix}/bin/ufraw - that's a good
 start.

 So it enters the {{{if}}} block, sets min version, then tries to get the
 current installed version with {{{[exec ufraw --version ...]}}}}.  This is
 the point of failure because the ufraw executable has a bad shared library
 link to libjpeg.62.dylib.

 On one of my systems, we have
 {{{
 $ ls -al /opt/local/lib/libjpeg.*
 -rwxr-xr-x 2 root admin 220K Dec 10 12:48 /opt/local/lib/libjpeg.7.dylib*
 -rw-r--r-- 2 root admin 247K Dec 10 12:48 /opt/local/lib/libjpeg.a
 lrwxr-xr-x 1 root admin   15 Dec 10 12:48 /opt/local/lib/libjpeg.dylib ->
 libjpeg.7.dylib*
 -rwxr-xr-x 2 root admin  912 Dec 10 12:48 /opt/local/lib/libjpeg.la*
 }}}

 So the failure to load libjpeg.62.dylib is obvious, it just doesn't exist
 on the system.

 Might need a try-catch in the pre-configure phase?

 It might be handy if ufraw were linked to the generic libjpeg.dylib (which
 is a symlink to the current version).  I dunno how to arrange that without
 a hack in the post-destroot (some such hacks are used in my ports for vtk-
 devel and InsightToolkit to redefine the location of the dylib links).

 Anyhow, that may not be the solution in this case.  Where does
 libjpeg.62.dylib come from?  Is this a hard dependency for dcraw or ufraw?

 Best,
 Darren

-- 
Ticket URL: <http://trac.macports.org/ticket/23594#comment:7>
MacPorts <http://www.macports.org/>
Ports system for Mac OS


More information about the macports-tickets mailing list