Opened 12 years ago

Closed 12 years ago

#36500 closed defect (fixed)

graphviz missing libtool depends_lib dependency for acyclic

Reported by: blair (Blair Zajac) Owned by: ryandesign (Ryan Carsten Schmidt)
Priority: Normal Milestone:
Component: ports Version: 2.1.2
Keywords: Cc:
Port: graphviz

Description

I emailed Ryan directly, but entering this ticket in case he's on vacation so I can fix it in 3 days for maintainer timeout ;)

I'm building a custom archive of MacPorts with a different prefix ports and ran into this issue. Installing graphviz on a system that can only download archives fails because graphviz doesn't declare a dependency on libtool:

$ port provides /opt/local-10.7-2012-08/bin/acyclic
/opt/local-10.7-2012-08/bin/acyclic is provided by: graphviz
$ otool -L /opt/local-10.7-2012-08/bin/acyclic /opt/local-10.7-2012-08/bin/acyclic:
    /opt/local-10.7-2012-08/lib/libcgraph.6.dylib (compatibility version 7.0.0, current version 7.0.0)
    /opt/local-10.7-2012-08/lib/libcdt.5.dylib (compatibility version 6.0.0, current version 6.0.0)
    /opt/local-10.7-2012-08/lib/libltdl.7.dylib (compatibility version 11.0.0, current version 11.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
$ port provides /opt/local-10.7-2012-08/lib/libltdl.7.dylib
/opt/local-10.7-2012-08/lib/libltdl.7.dylib is provided by: libtool

I can add the dependency and bump the rev.

Here's the error

x ./opt/local-10.7-2012-08/
x ./opt/local-10.7-2012-08/bin/
x ./opt/local-10.7-2012-08/share/
x ./opt/local-10.7-2012-08/share/man/
x ./opt/local-10.7-2012-08/share/man/man1/
x ./opt/local-10.7-2012-08/share/man/man1/doxygen.1.gz
x ./opt/local-10.7-2012-08/bin/doxygen
--->  Updating database of binaries: 100.0%
--->  Scanning binaries for linking errors: 94.9%
Could not open /opt/local-10.7-2012-08/lib/libltdl.7.dylib: Error opening or reading file (referenced from /opt/local-10.7-2012-08/bin/acyclic)
--->  Scanning binaries for linking errors: 100.0%
--->  Found 40 broken file(s), matching files to ports
--->  Found 1 broken port(s), determining rebuild order
--->  Rebuilding in orderacyclic
     graphviz @2.28.0 +java
--->  Computing dependencies for graphviz.
--->  Scanning binaries for linking errors: 94.9%
Could not open /opt/local-10.7-2012-08/lib/libltdl.7.dylib: Error opening or reading file (referenced from /opt/local-10.7-2012-08/bin/acyclic)
--->  Scanning binaries for linking errors: 100.0%
--->  Found 40 broken file(s), matching files to ports
Port graphviz still broken after reinstalling -- can't rebuild due to binary-only mode
    while executing
"error "Port $portname still broken after reinstalling -- can't rebuild due to binary-only mode""
    (procedure "revupgrade_scanandrebuild" line 258)
    invoked from within
"revupgrade_scanandrebuild broken_port_counts $opts"
    (procedure "macports::revupgrade" line 5)
    invoked from within
"macports::revupgrade $opts"
    (procedure "action_revupgrade" line 2)
    invoked from within
"action_revupgrade $action $portlist $opts"
    (procedure "action_target" line 94)
    invoked from within
"$action_proc $action $portlist [array get global_options]"
    (procedure "process_cmd" line 95)
    invoked from within
"process_cmd $remaining_args"
    invoked from within
"if { [llength $remaining_args] > 0 } {

    # If there are remaining arguments, process those as a command
    set exit_status [process_cmd $remaining..."
    (file "/opt/local-10.7-2012-08/bin/port" line 4784)

Change History (1)

comment:1 Changed 12 years ago by ryandesign (Ryan Carsten Schmidt)

Resolution: fixed
Status: newclosed

Thanks for reporting this. I used to produce standalone binary packages of Graphviz for OS X, made with a custom build system, before I was very involved with MacPorts. I stopped doing that five years ago, but during the lifetime of that project, I remember discovering that Graphviz needed libtool's libltdl and adding that dependency to my build. And in MacPorts there's even a patch in the graphviz port relating to libltdl. So I'm quite surprised this dependency was missing from the ports. I guess we missed it before because libtool is in the dependency chain as a build dependency, and libtool is also a very common port to already have installed. Fixed in r98535.

Note: See TracTickets for help on using tickets.